mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-24 18:00:40 +00:00
3 lines
4.3 MiB
Plaintext
Vendored
3 lines
4.3 MiB
Plaintext
Vendored
/*! For license information please see main.js.LICENSE.txt */
|
||
!function(e){function t(t){for(var n,i,a=t[0],o=t[1],s=0,c=[];s<a.length;s++)i=a[s],Object.prototype.hasOwnProperty.call(r,i)&&r[i]&&c.push(r[i][0]),r[i]=0;for(n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n]);for(l&&l(t);c.length;)c.shift()()}var n={},r={10:0};function i(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.e=function(e){var t=[],n=r[e];if(0!==n)if(n)t.push(n[2]);else{var a=new Promise((function(t,i){n=r[e]=[t,i]}));t.push(n[2]=a);var o,s=document.createElement("script");s.charset="utf-8",s.timeout=120,i.nc&&s.setAttribute("nonce",i.nc),s.src=function(e){return i.p+""+({0:"vendors~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-i~8394cf85",1:"chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~cc6e748e",2:"chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f",3:"chunks/dashboard~chunks/invoices~chunks/pages~chunks/plans~chunks/user-invoices",4:"chunks/files~chunks/platform~chunks/shared~chunks/shared-files~chunks/shared/file-browser",5:"chunks/files~chunks/shared-files~chunks/shared/file-browser~chunks/shared/single-file",6:"chunks/files~chunks/shared-files~chunks/shared/file-browser",7:"chunks/platform~chunks/shared",8:"chunks/profile~chunks/settings-password",9:"vendors~chunks/platform~chunks/shared",11:"chunks/admin",12:"chunks/admin-account",13:"chunks/app-appearance",14:"chunks/app-billings",15:"chunks/app-email",16:"chunks/app-index",17:"chunks/app-others",18:"chunks/app-payments",19:"chunks/app-settings",20:"chunks/app-setup",21:"chunks/billings-detail",22:"chunks/contact-us",23:"chunks/create-new-password",24:"chunks/dashboard",25:"chunks/database",26:"chunks/dynamic-page",27:"chunks/environment-setup",28:"chunks/files",29:"chunks/forgotten-password",30:"chunks/homepage",31:"chunks/installation-disclaimer",32:"chunks/invoices",33:"chunks/not-found-shared",34:"chunks/oasis/platba",35:"chunks/page-edit",36:"chunks/pages",37:"chunks/plan",38:"chunks/plan-create",39:"chunks/plan-delete",40:"chunks/plan-settings",41:"chunks/plan-subscribers",42:"chunks/plans",43:"chunks/platform",44:"chunks/profile",45:"chunks/purchase-code",46:"chunks/settings",47:"chunks/settings-create-payment-methods",48:"chunks/settings-invoices",49:"chunks/settings-password",50:"chunks/settings-payment-methods",51:"chunks/settings-storage",52:"chunks/settings-subscription",53:"chunks/setup-wizard",54:"chunks/shared",55:"chunks/shared-files",56:"chunks/shared/authenticate",57:"chunks/shared/file-browser",58:"chunks/shared/single-file",59:"chunks/sign-in",60:"chunks/sign-up",61:"chunks/stripe-credentials",62:"chunks/subscription-plans",63:"chunks/subscription-service",64:"chunks/upgrade-billing",65:"chunks/upgrade-plan",66:"chunks/user",67:"chunks/user-create",68:"chunks/user-delete",69:"chunks/user-detail",70:"chunks/user-invoices",71:"chunks/user-password",72:"chunks/user-storage",73:"chunks/user-subscription",74:"chunks/users"}[e]||e)+".js?id="+{0:"f4af99f82827ad831051",1:"48da9d5aa76054d67611",2:"cabfb1298a9439343319",3:"35d3e39bc7ebc9719f21",4:"093ca528c3a6e7994690",5:"306fb030af3b78024c14",6:"3bb277edfa2d822f9c3d",7:"5037e0dc40516d97425b",8:"31a9aea005cdf437e4f6",9:"c4251daa93aabea12960",11:"e7bff165a20443ac8850",12:"af13fbfb66aef7ab7136",13:"c2839f69522965f2f8b5",14:"89a28a9b1c00a6cd0881",15:"fc276ec9e517056b8545",16:"4c46dca044bfd7dd535d",17:"c69ba1bac68935e37ca7",18:"f97596b21bfa7e64990f",19:"b84e73be95b12534b04f",20:"a5ac79a31a0318cdb824",21:"c2a37c4024b307748c4a",22:"75655863fd1e8461d67a",23:"ddb94ee3d60ce09ca94a",24:"12d3ead24c68061575cb",25:"38de0972761edf589088",26:"7f5ec5341ee294e96adb",27:"fd0651f27b47d4bd8ced",28:"5672cfa608efb2f39454",29:"ad0a0e3b3b5c535a1924",30:"36302a61521ea385d9e3",31:"edcee00ade47ba4d5628",32:"ea7fa06e77c0920c5c58",33:"11fa14956302f348c350",34:"e6e343888653106c8ae4",35:"c83dacc5fed2a1bfdb38",36:"a68594c56b63e66b497e",37:"956c7c67b74859f560e3",38:"dc474e8473ae4393013c",39:"3772ce1a2f0e6b1c897a",40:"7956b6ed80f77d507fc8",41:"c3d55c0ce8740ab83104",42:"5748bdd9de713174565b",43:"7120962c675eac010a58",44:"262134ee245c6c14f55b",45:"a099220a103e56a54ec5",46:"057797581f311956c873",47:"3e26dc37c1d6c60424e8",48:"182c7944b63bb27b9afc",49:"ce749b9df61a5d24bc57",50:"277dac090ea0af7c3071",51:"df758c415feb6edd43d7",52:"9f41a3afcd2c8fa3a601",53:"2f8f2ba1147c4063fd99",54:"43c2e8032324b807fda0",55:"78be3026f9999755fa48",56:"f15cfafd548f39b9fc89",57:"d6136651f09c0ed38c86",58:"703b6693cee01c3bdb03",59:"cdb090577b839e9fe683",60:"624d223130ef90b44801",61:"7b20ed594d3e7979a9ca",62:"c5f1304ce75885f4ba42",63:"4594b4ec8a6317f7ef8e",64:"b78add656813304d4792",65:"06e04b6d9c55c6fcfc10",66:"d2c3c6e587ae719d9723",67:"aa83ff106341e1ae90d0",68:"e95f87574f273f95ab09",69:"7e30e9cf47594b08e3f6",70:"8e3c3ade07acd8437927",71:"6fbdc3cd2b15fb4b78a1",72:"638f379ac5bbd72a83f3",73:"c31e73f82cc367b2cc0b",74:"aea18691d2f093cb4a97"}[e]}(e);var l=new Error;o=function(t){s.onerror=s.onload=null,clearTimeout(c);var n=r[e];if(0!==n){if(n){var i=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;l.message="Loading chunk "+e+" failed.\n("+i+": "+a+")",l.name="ChunkLoadError",l.type=i,l.request=a,n[1](l)}r[e]=void 0}};var c=setTimeout((function(){o({type:"timeout",target:s})}),12e4);s.onerror=s.onload=o,document.head.appendChild(s)}return Promise.all(t)},i.m=e,i.c=n,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/",i.oe=function(e){throw console.error(e),e};var a=window.webpackJsonp=window.webpackJsonp||[],o=a.push.bind(a);a.push=t,a=a.slice();for(var s=0;s<a.length;s++)t(a[s]);var l=o;i(i.s=0)}({"+Cd2":function(e,t,n){var r=n("BLW1");"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n("aET+")(r,i);r.locals&&(e.exports=r.locals)},"+ZAI":function(e,t,n){"use strict";var r=n("eK1A");n.n(r).a},0:function(e,t,n){n("8yrV"),e.exports=n("pyCd")},"0Z4L":function(e,t,n){(e.exports=n("I1BE")(!1)).push([e.i,".toastr-list[data-v-1d540beb] {\n transition: all 5s ease;\n display: inline-block;\n}\n.toastr-list-enter[data-v-1d540beb],\n.toastr-list-leave-to[data-v-1d540beb] {\n opacity: 0;\n transform: translateY(-100%);\n}\n.toastr-list-leave-active[data-v-1d540beb] {\n position: absolute;\n}\n#toastr-wrapper[data-v-1d540beb] {\n position: absolute;\n right: 30px;\n top: 30px;\n z-index: 10;\n}\n@media only screen and (max-width: 690px) {\n#toastr-wrapper[data-v-1d540beb] {\n top: initial;\n right: 15px;\n left: 15px;\n bottom: 15px;\n}\n}\n",""])},"1SDo":function(e,t,n){"use strict";var r=n("CjXH"),i={name:"MenuBar",components:{BoxIcon:r.b,MonitorIcon:r.K,ChevronRightIcon:r.h,UploadCloudIcon:r.cb,CreditCardIcon:r.n,HardDriveIcon:r.A,DatabaseIcon:r.o,FileTextIcon:r.w,SettingsIcon:r.V,Trash2Icon:r.Z,CloudIcon:r.j,PowerIcon:r.Q,UsersIcon:r.fb,ShareIcon:r.W,LockIcon:r.H,UserIcon:r.db},props:["navigation"]},a=(n("oXPQ"),n("KHd+")),o=Object(a.a)(i,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ul",{staticClass:"link-group"},e._l(e.navigation,(function(t,r){return t.isVisible?n("router-link",{key:r,staticClass:"link-item",class:t.icon,attrs:{to:{name:t.routeName}},nativeOn:{click:function(n){return e.$emit("menu",t.icon)}}},[n("div",{staticClass:"menu-icon"},["hard-drive"===t.icon?n("hard-drive-icon",{attrs:{size:"17"}}):e._e(),e._v(" "),"share"===t.icon?n("share-icon",{attrs:{size:"17"}}):e._e(),e._v(" "),"trash"===t.icon?n("trash2-icon",{attrs:{size:"17"}}):e._e(),e._v(" "),"power"===t.icon?n("power-icon",{attrs:{size:"17"}}):e._e(),e._v(" "),"settings"===t.icon?n("settings-icon",{attrs:{size:"17"}}):e._e(),e._v(" "),"latest"===t.icon?n("upload-cloud-icon",{attrs:{size:"17"}}):e._e(),e._v(" "),"user"===t.icon?n("user-icon",{attrs:{size:"17"}}):e._e(),e._v(" "),"users"===t.icon?n("users-icon",{attrs:{size:"17"}}):e._e(),e._v(" "),"lock"===t.icon?n("lock-icon",{attrs:{size:"17"}}):e._e(),e._v(" "),"file-text"===t.icon?n("file-text-icon",{attrs:{size:"17"}}):e._e(),e._v(" "),"database"===t.icon?n("database-icon",{attrs:{size:"17"}}):e._e(),e._v(" "),"credit-card"===t.icon?n("credit-card-icon",{attrs:{size:"17"}}):e._e(),e._v(" "),"cloud"===t.icon?n("cloud-icon",{attrs:{size:"17"}}):e._e(),e._v(" "),"monitor"===t.icon?n("monitor-icon",{attrs:{size:"17"}}):e._e(),e._v(" "),"box"===t.icon?n("box-icon",{attrs:{size:"17"}}):e._e()],1),e._v(" "),n("b",{staticClass:"menu-link"},[n("span",[e._v(e._s(t.title))]),e._v(" "),n("chevron-right-icon",{staticClass:"arrow-right",attrs:{size:"15"}})],1)]):e._e()})),1)}),[],!1,null,"5ca97ffe",null);t.a=o.exports},"2SVd":function(e,t,n){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},"2suW":function(e,t,n){"use strict";var r=n("LBfB");n.n(r).a},"5ErR":function(e,t,n){var r=n("WA68");"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n("aET+")(r,i);r.locals&&(e.exports=r.locals)},"5W3I":function(e,t,n){var r=n("TF8W");"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n("aET+")(r,i);r.locals&&(e.exports=r.locals)},"5oMp":function(e,t,n){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},"7O5W":function(e,t,n){"use strict";(function(e,r){function i(e){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function a(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),r.forEach((function(t){o(e,t,n[t])}))}return e}function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,i=!1,a=void 0;try{for(var o,s=e[Symbol.iterator]();!(r=(o=s.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){i=!0,a=e}finally{try{r||null==s.return||s.return()}finally{if(i)throw a}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function c(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t<e.length;t++)n[t]=e[t];return n}}(e)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}n.d(t,"b",(function(){return Oe})),n.d(t,"a",(function(){return C})),n.d(t,"e",(function(){return Te})),n.d(t,"c",(function(){return Ae})),n.d(t,"d",(function(){return Ee}));var u=function(){},f={},p={},d={mark:u,measure:u};try{"undefined"!=typeof window&&(f=window),"undefined"!=typeof document&&(p=document),"undefined"!=typeof MutationObserver&&MutationObserver,"undefined"!=typeof performance&&(d=performance)}catch(e){}var h=(f.navigator||{}).userAgent,v=void 0===h?"":h,m=f,g=p,y=d,b=(m.document,!!g.documentElement&&!!g.head&&"function"==typeof g.addEventListener&&"function"==typeof g.createElement),_=~v.indexOf("MSIE")||~v.indexOf("Trident/"),w=(function(){try{}catch(e){return!1}}(),[1,2,3,4,5,6,7,8,9,10]),x=w.concat([11,12,13,14,15,16,17,18,19,20]),k={GROUP:"group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},S=(["xs","sm","lg","fw","ul","li","border","pull-left","pull-right","spin","pulse","rotate-90","rotate-180","rotate-270","flip-horizontal","flip-vertical","flip-both","stack","stack-1x","stack-2x","inverse","layers","layers-text","layers-counter",k.GROUP,k.SWAP_OPACITY,k.PRIMARY,k.SECONDARY].concat(w.map((function(e){return"".concat(e,"x")}))).concat(x.map((function(e){return"w-".concat(e)}))),m.FontAwesomeConfig||{});if(g&&"function"==typeof g.querySelector){[["data-family-prefix","familyPrefix"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]].forEach((function(e){var t=l(e,2),n=t[0],r=t[1],i=function(e){return""===e||"false"!==e&&("true"===e||e)}(function(e){var t=g.querySelector("script["+e+"]");if(t)return t.getAttribute(e)}(n));null!=i&&(S[r]=i)}))}var A=s({},{familyPrefix:"fa",replacementClass:"svg-inline--fa",autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0},S);A.autoReplaceSvg||(A.observeMutations=!1);var C=s({},A);m.FontAwesomeConfig=C;var E=m||{};E.___FONT_AWESOME___||(E.___FONT_AWESOME___={}),E.___FONT_AWESOME___.styles||(E.___FONT_AWESOME___.styles={}),E.___FONT_AWESOME___.hooks||(E.___FONT_AWESOME___.hooks={}),E.___FONT_AWESOME___.shims||(E.___FONT_AWESOME___.shims=[]);var O=E.___FONT_AWESOME___,T=[];b&&((g.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(g.readyState)||g.addEventListener("DOMContentLoaded",(function e(){g.removeEventListener("DOMContentLoaded",e),1,T.map((function(e){return e()}))})));var I,N=function(){},P=void 0!==e&&void 0!==e.process&&"function"==typeof e.process.emit,z=void 0===r?setTimeout:r,M=[];function L(){for(var e=0;e<M.length;e++)M[e][0](M[e][1]);M=[],I=!1}function R(e,t){M.push([e,t]),I||(I=!0,z(L,0))}function j(e){var t=e.owner,n=t._state,r=t._data,i=e[n],a=e.then;if("function"==typeof i){n="fulfilled";try{r=i(r)}catch(e){B(a,e)}}$(a,r)||("fulfilled"===n&&D(a,r),"rejected"===n&&B(a,r))}function $(e,t){var n;try{if(e===t)throw new TypeError("A promises callback cannot return that same promise.");if(t&&("function"==typeof t||"object"===i(t))){var r=t.then;if("function"==typeof r)return r.call(t,(function(r){n||(n=!0,t===r?F(e,r):D(e,r))}),(function(t){n||(n=!0,B(e,t))})),!0}}catch(t){return n||B(e,t),!0}return!1}function D(e,t){e!==t&&$(e,t)||F(e,t)}function F(e,t){"pending"===e._state&&(e._state="settled",e._data=t,R(H,e))}function B(e,t){"pending"===e._state&&(e._state="settled",e._data=t,R(V,e))}function U(e){e._then=e._then.forEach(j)}function H(e){e._state="fulfilled",U(e)}function V(t){t._state="rejected",U(t),!t._handled&&P&&e.process.emit("unhandledRejection",t._data,t)}function G(t){e.process.emit("rejectionHandled",t)}function W(e){if("function"!=typeof e)throw new TypeError("Promise resolver "+e+" is not a function");if(this instanceof W==!1)throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");this._then=[],function(e,t){function n(e){B(t,e)}try{e((function(e){D(t,e)}),n)}catch(e){n(e)}}(e,this)}W.prototype={constructor:W,_state:"pending",_then:null,_data:void 0,_handled:!1,then:function(e,t){var n={owner:this,then:new this.constructor(N),fulfilled:e,rejected:t};return!t&&!e||this._handled||(this._handled=!0,"rejected"===this._state&&P&&R(G,this)),"fulfilled"===this._state||"rejected"===this._state?R(j,n):this._then.push(n),n.then},catch:function(e){return this.then(null,e)}},W.all=function(e){if(!Array.isArray(e))throw new TypeError("You must pass an array to Promise.all().");return new W((function(t,n){var r=[],i=0;function a(e){return i++,function(n){r[e]=n,--i||t(r)}}for(var o,s=0;s<e.length;s++)(o=e[s])&&"function"==typeof o.then?o.then(a(s),n):r[s]=o;i||t(r)}))},W.race=function(e){if(!Array.isArray(e))throw new TypeError("You must pass an array to Promise.race().");return new W((function(t,n){for(var r,i=0;i<e.length;i++)(r=e[i])&&"function"==typeof r.then?r.then(t,n):t(r)}))},W.resolve=function(e){return e&&"object"===i(e)&&e.constructor===W?e:new W((function(t){t(e)}))},W.reject=function(e){return new W((function(t,n){n(e)}))};var q=16,K={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function Y(e){if(e&&b){var t=g.createElement("style");t.setAttribute("type","text/css"),t.innerHTML=e;for(var n=g.head.childNodes,r=null,i=n.length-1;i>-1;i--){var a=n[i],o=(a.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(o)>-1&&(r=a)}return g.head.insertBefore(t,r),e}}function J(){for(var e=12,t="";e-- >0;)t+="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[62*Math.random()|0];return t}function Z(e){return"".concat(e).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">")}function X(e){return Object.keys(e||{}).reduce((function(t,n){return t+"".concat(n,": ").concat(e[n],";")}),"")}function Q(e){return e.size!==K.size||e.x!==K.x||e.y!==K.y||e.rotate!==K.rotate||e.flipX||e.flipY}function ee(e){var t=e.transform,n=e.containerWidth,r=e.iconWidth,i={transform:"translate(".concat(n/2," 256)")},a="translate(".concat(32*t.x,", ").concat(32*t.y,") "),o="scale(".concat(t.size/16*(t.flipX?-1:1),", ").concat(t.size/16*(t.flipY?-1:1),") "),s="rotate(".concat(t.rotate," 0 0)");return{outer:i,inner:{transform:"".concat(a," ").concat(o," ").concat(s)},path:{transform:"translate(".concat(r/2*-1," -256)")}}}var te={x:0,y:0,width:"100%",height:"100%"};function ne(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return e.attributes&&(e.attributes.fill||t)&&(e.attributes.fill="black"),e}function re(e){var t=e.icons,n=t.main,r=t.mask,i=e.prefix,a=e.iconName,o=e.transform,l=e.symbol,c=e.title,u=e.maskId,f=e.titleId,p=e.extra,d=e.watchable,h=void 0!==d&&d,v=r.found?r:n,m=v.width,g=v.height,y="fa-w-".concat(Math.ceil(m/g*16)),b=[C.replacementClass,a?"".concat(C.familyPrefix,"-").concat(a):"",y].filter((function(e){return-1===p.classes.indexOf(e)})).concat(p.classes).join(" "),_={children:[],attributes:s({},p.attributes,{"data-prefix":i,"data-icon":a,class:b,role:p.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(m," ").concat(g)})};h&&(_.attributes["data-fa-i2svg"]=""),c&&_.children.push({tag:"title",attributes:{id:_.attributes["aria-labelledby"]||"title-".concat(f||J())},children:[c]});var w=s({},_,{prefix:i,iconName:a,main:n,mask:r,maskId:u,transform:o,symbol:l,styles:p.styles}),x=r.found&&n.found?function(e){var t,n=e.children,r=e.attributes,i=e.main,a=e.mask,o=e.maskId,l=e.transform,c=i.width,u=i.icon,f=a.width,p=a.icon,d=ee({transform:l,containerWidth:f,iconWidth:c}),h={tag:"rect",attributes:s({},te,{fill:"white"})},v=u.children?{children:u.children.map(ne)}:{},m={tag:"g",attributes:s({},d.inner),children:[ne(s({tag:u.tag,attributes:s({},u.attributes,d.path)},v))]},g={tag:"g",attributes:s({},d.outer),children:[m]},y="mask-".concat(o||J()),b="clip-".concat(o||J()),_={tag:"mask",attributes:s({},te,{id:y,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[h,g]},w={tag:"defs",children:[{tag:"clipPath",attributes:{id:b},children:(t=p,"g"===t.tag?t.children:[t])},_]};return n.push(w,{tag:"rect",attributes:s({fill:"currentColor","clip-path":"url(#".concat(b,")"),mask:"url(#".concat(y,")")},te)}),{children:n,attributes:r}}(w):function(e){var t=e.children,n=e.attributes,r=e.main,i=e.transform,a=X(e.styles);if(a.length>0&&(n.style=a),Q(i)){var o=ee({transform:i,containerWidth:r.width,iconWidth:r.width});t.push({tag:"g",attributes:s({},o.outer),children:[{tag:"g",attributes:s({},o.inner),children:[{tag:r.icon.tag,children:r.icon.children,attributes:s({},r.icon.attributes,o.path)}]}]})}else t.push(r.icon);return{children:t,attributes:n}}(w),k=x.children,S=x.attributes;return w.children=k,w.attributes=S,l?function(e){var t=e.prefix,n=e.iconName,r=e.children,i=e.attributes,a=e.symbol;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:s({},i,{id:!0===a?"".concat(t,"-").concat(C.familyPrefix,"-").concat(n):a}),children:r}]}]}(w):function(e){var t=e.children,n=e.main,r=e.mask,i=e.attributes,a=e.styles,o=e.transform;if(Q(o)&&n.found&&!r.found){var l={x:n.width/n.height/2,y:.5};i.style=X(s({},a,{"transform-origin":"".concat(l.x+o.x/16,"em ").concat(l.y+o.y/16,"em")}))}return[{tag:"svg",attributes:i,children:t}]}(w)}function ie(e){var t=e.content,n=e.width,r=e.height,i=e.transform,a=e.title,o=e.extra,l=e.watchable,c=void 0!==l&&l,u=s({},o.attributes,a?{title:a}:{},{class:o.classes.join(" ")});c&&(u["data-fa-i2svg"]="");var f=s({},o.styles);Q(i)&&(f.transform=function(e){var t=e.transform,n=e.width,r=void 0===n?16:n,i=e.height,a=void 0===i?16:i,o=e.startCentered,s=void 0!==o&&o,l="";return l+=s&&_?"translate(".concat(t.x/q-r/2,"em, ").concat(t.y/q-a/2,"em) "):s?"translate(calc(-50% + ".concat(t.x/q,"em), calc(-50% + ").concat(t.y/q,"em)) "):"translate(".concat(t.x/q,"em, ").concat(t.y/q,"em) "),l+="scale(".concat(t.size/q*(t.flipX?-1:1),", ").concat(t.size/q*(t.flipY?-1:1),") "),l+="rotate(".concat(t.rotate,"deg) ")}({transform:i,startCentered:!0,width:n,height:r}),f["-webkit-transform"]=f.transform);var p=X(f);p.length>0&&(u.style=p);var d=[];return d.push({tag:"span",attributes:u,children:[t]}),a&&d.push({tag:"span",attributes:{class:"sr-only"},children:[a]}),d}var ae=function(){},oe=(C.measurePerformance&&y&&y.mark&&y.measure,function(e,t,n,r){var i,a,o,s=Object.keys(e),l=s.length,c=void 0!==r?function(e,t){return function(n,r,i,a){return e.call(t,n,r,i,a)}}(t,r):t;for(void 0===n?(i=1,o=e[s[0]]):(i=0,o=n);i<l;i++)o=c(o,e[a=s[i]],a,e);return o});function se(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.skipHooks,i=void 0!==r&&r,a=Object.keys(t).reduce((function(e,n){var r=t[n];return!!r.icon?e[r.iconName]=r.icon:e[n]=r,e}),{});"function"!=typeof O.hooks.addPack||i?O.styles[e]=s({},O.styles[e]||{},a):O.hooks.addPack(e,a),"fas"===e&&se("fa",t)}var le=O.styles,ce=O.shims,ue=function(){var e=function(e){return oe(le,(function(t,n,r){return t[r]=oe(n,e,{}),t}),{})};e((function(e,t,n){return t[3]&&(e[t[3]]=n),e})),e((function(e,t,n){var r=t[2];return e[n]=n,r.forEach((function(t){e[t]=n})),e}));var t="far"in le;oe(ce,(function(e,n){var r=n[0],i=n[1],a=n[2];return"far"!==i||t||(i="fas"),e[r]={prefix:i,iconName:a},e}),{})};ue();O.styles;function fe(e,t,n){if(e&&e[t]&&e[t][n])return{prefix:t,iconName:n,icon:e[t][n]}}function pe(e){var t=e.tag,n=e.attributes,r=void 0===n?{}:n,i=e.children,a=void 0===i?[]:i;return"string"==typeof e?Z(e):"<".concat(t," ").concat(function(e){return Object.keys(e||{}).reduce((function(t,n){return t+"".concat(n,'="').concat(Z(e[n]),'" ')}),"").trim()}(r),">").concat(a.map(pe).join(""),"</").concat(t,">")}var de=function(e){var t={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return e?e.toLowerCase().split(" ").reduce((function(e,t){var n=t.toLowerCase().split("-"),r=n[0],i=n.slice(1).join("-");if(r&&"h"===i)return e.flipX=!0,e;if(r&&"v"===i)return e.flipY=!0,e;if(i=parseFloat(i),isNaN(i))return e;switch(r){case"grow":e.size=e.size+i;break;case"shrink":e.size=e.size-i;break;case"left":e.x=e.x-i;break;case"right":e.x=e.x+i;break;case"up":e.y=e.y-i;break;case"down":e.y=e.y+i;break;case"rotate":e.rotate=e.rotate+i}return e}),t):t};function he(e){this.name="MissingIcon",this.message=e||"Icon unavailable",this.stack=(new Error).stack}he.prototype=Object.create(Error.prototype),he.prototype.constructor=he;var ve={fill:"currentColor"},me={attributeType:"XML",repeatCount:"indefinite",dur:"2s"},ge={tag:"path",attributes:s({},ve,{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})},ye=s({},me,{attributeName:"opacity"});s({},ve,{cx:"256",cy:"364",r:"28"}),s({},me,{attributeName:"r",values:"28;14;28;28;14;28;"}),s({},ye,{values:"1;0;1;1;0;1;"}),s({},ve,{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),s({},ye,{values:"1;0;0;0;0;1;"}),s({},ve,{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),s({},ye,{values:"0;0;1;1;0;0;"}),O.styles;function be(e){var t=e[0],n=e[1],r=l(e.slice(4),1)[0];return{found:!0,width:t,height:n,icon:Array.isArray(r)?{tag:"g",attributes:{class:"".concat(C.familyPrefix,"-").concat(k.GROUP)},children:[{tag:"path",attributes:{class:"".concat(C.familyPrefix,"-").concat(k.SECONDARY),fill:"currentColor",d:r[0]}},{tag:"path",attributes:{class:"".concat(C.familyPrefix,"-").concat(k.PRIMARY),fill:"currentColor",d:r[1]}}]}:{tag:"path",attributes:{fill:"currentColor",d:r}}}}O.styles;function _e(){var e="svg-inline--fa",t=C.familyPrefix,n=C.replacementClass,r='svg:not(:root).svg-inline--fa {\n overflow: visible;\n}\n\n.svg-inline--fa {\n display: inline-block;\n font-size: inherit;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.225em;\n}\n.svg-inline--fa.fa-w-1 {\n width: 0.0625em;\n}\n.svg-inline--fa.fa-w-2 {\n width: 0.125em;\n}\n.svg-inline--fa.fa-w-3 {\n width: 0.1875em;\n}\n.svg-inline--fa.fa-w-4 {\n width: 0.25em;\n}\n.svg-inline--fa.fa-w-5 {\n width: 0.3125em;\n}\n.svg-inline--fa.fa-w-6 {\n width: 0.375em;\n}\n.svg-inline--fa.fa-w-7 {\n width: 0.4375em;\n}\n.svg-inline--fa.fa-w-8 {\n width: 0.5em;\n}\n.svg-inline--fa.fa-w-9 {\n width: 0.5625em;\n}\n.svg-inline--fa.fa-w-10 {\n width: 0.625em;\n}\n.svg-inline--fa.fa-w-11 {\n width: 0.6875em;\n}\n.svg-inline--fa.fa-w-12 {\n width: 0.75em;\n}\n.svg-inline--fa.fa-w-13 {\n width: 0.8125em;\n}\n.svg-inline--fa.fa-w-14 {\n width: 0.875em;\n}\n.svg-inline--fa.fa-w-15 {\n width: 0.9375em;\n}\n.svg-inline--fa.fa-w-16 {\n width: 1em;\n}\n.svg-inline--fa.fa-w-17 {\n width: 1.0625em;\n}\n.svg-inline--fa.fa-w-18 {\n width: 1.125em;\n}\n.svg-inline--fa.fa-w-19 {\n width: 1.1875em;\n}\n.svg-inline--fa.fa-w-20 {\n width: 1.25em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-border {\n height: 1.5em;\n}\n.svg-inline--fa.fa-li {\n width: 2em;\n}\n.svg-inline--fa.fa-fw {\n width: 1.25em;\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: #ff253a;\n border-radius: 1em;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n color: #fff;\n height: 1.5em;\n line-height: 1;\n max-width: 5em;\n min-width: 1.5em;\n overflow: hidden;\n padding: 0.25em;\n right: 0;\n text-overflow: ellipsis;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: 0;\n right: 0;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: 0;\n left: 0;\n right: auto;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n right: 0;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: 0;\n right: auto;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n}\n\n.fa-lg {\n font-size: 1.3333333333em;\n line-height: 0.75em;\n vertical-align: -0.0667em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inherit;\n}\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: 0.1em;\n padding: 0.2em 0.25em 0.15em;\n}\n\n.fa-pull-left {\n float: left;\n}\n\n.fa-pull-right {\n float: right;\n}\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: 0.3em;\n}\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: 0.3em;\n}\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear;\n}\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8);\n}\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1);\n}\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical,\n:root .fa-flip-both {\n -webkit-filter: none;\n filter: none;\n}\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: #fff;\n}\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}\n\n.fad.fa-inverse {\n color: #fff;\n}';if("fa"!==t||n!==e){var i=new RegExp("\\.".concat("fa","\\-"),"g"),a=new RegExp("\\--".concat("fa","\\-"),"g"),o=new RegExp("\\.".concat(e),"g");r=r.replace(i,".".concat(t,"-")).replace(a,"--".concat(t,"-")).replace(o,".".concat(n))}return r}function we(){C.autoAddCss&&!Ce&&(Y(_e()),Ce=!0)}function xe(e,t){return Object.defineProperty(e,"abstract",{get:t}),Object.defineProperty(e,"html",{get:function(){return e.abstract.map((function(e){return pe(e)}))}}),Object.defineProperty(e,"node",{get:function(){if(b){var t=g.createElement("div");return t.innerHTML=e.html,t.children}}}),e}function ke(e){var t=e.prefix,n=void 0===t?"fa":t,r=e.iconName;if(r)return fe(Ae.definitions,n,r)||fe(O.styles,n,r)}var Se,Ae=new(function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.definitions={}}var t,n,r;return t=e,(n=[{key:"add",value:function(){for(var e=this,t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];var i=n.reduce(this._pullDefinitions,{});Object.keys(i).forEach((function(t){e.definitions[t]=s({},e.definitions[t]||{},i[t]),se(t,i[t]),ue()}))}},{key:"reset",value:function(){this.definitions={}}},{key:"_pullDefinitions",value:function(e,t){var n=t.prefix&&t.iconName&&t.icon?{0:t}:t;return Object.keys(n).map((function(t){var r=n[t],i=r.prefix,a=r.iconName,o=r.icon;e[i]||(e[i]={}),e[i][a]=o})),e}}])&&a(t.prototype,n),r&&a(t,r),e}()),Ce=!1,Ee={transform:function(e){return de(e)}},Oe=(Se=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.transform,r=void 0===n?K:n,i=t.symbol,a=void 0!==i&&i,o=t.mask,l=void 0===o?null:o,c=t.maskId,u=void 0===c?null:c,f=t.title,p=void 0===f?null:f,d=t.titleId,h=void 0===d?null:d,v=t.classes,m=void 0===v?[]:v,g=t.attributes,y=void 0===g?{}:g,b=t.styles,_=void 0===b?{}:b;if(e){var w=e.prefix,x=e.iconName,k=e.icon;return xe(s({type:"icon"},e),(function(){return we(),C.autoA11y&&(p?y["aria-labelledby"]="".concat(C.replacementClass,"-title-").concat(h||J()):(y["aria-hidden"]="true",y.focusable="false")),re({icons:{main:be(k),mask:l?be(l.icon):{found:!1,width:null,height:null,icon:{}}},prefix:w,iconName:x,transform:s({},K,r),symbol:a,title:p,maskId:u,titleId:h,extra:{attributes:y,styles:_,classes:m}})}))}},function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=(e||{}).icon?e:ke(e||{}),r=t.mask;return r&&(r=(r||{}).icon?r:ke(r||{})),Se(n,s({},t,{mask:r}))}),Te=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.transform,r=void 0===n?K:n,i=t.title,a=void 0===i?null:i,o=t.classes,l=void 0===o?[]:o,u=t.attributes,f=void 0===u?{}:u,p=t.styles,d=void 0===p?{}:p;return xe({type:"text",content:e},(function(){return we(),ie({content:e,transform:s({},K,r),title:a,extra:{attributes:f,styles:d,classes:["".concat(C.familyPrefix,"-layers-text")].concat(c(l))}})}))}}).call(this,n("yLpj"),n("URgk").setImmediate)},"8oxB":function(e,t){var n,r,i=e.exports={};function a(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===a||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:a}catch(e){n=a}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(e){r=o}}();var l,c=[],u=!1,f=-1;function p(){u&&l&&(u=!1,l.length?c=l.concat(c):f=-1,c.length&&d())}function d(){if(!u){var e=s(p);u=!0;for(var t=c.length;t;){for(l=c,c=[];++f<t;)l&&l[f].run();f=-1,t=c.length}l=null,u=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===o||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function h(e,t){this.fun=e,this.array=t}function v(){}i.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];c.push(new h(e,t)),1!==c.length||u||s(d)},h.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=v,i.addListener=v,i.once=v,i.off=v,i.removeListener=v,i.removeAllListeners=v,i.emit=v,i.prependListener=v,i.prependOnceListener=v,i.listeners=function(e){return[]},i.binding=function(e){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(e){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},"8yrV":function(e,t,n){"use strict";n.r(t);var r=n("XuX8"),i=n.n(r);function a(e,t){for(var n in t)e[n]=t[n];return e}var o={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(e,t){var n=t.props,r=t.children,i=t.parent,o=t.data;o.routerView=!0;for(var l=i.$createElement,c=n.name,u=i.$route,f=i._routerViewCache||(i._routerViewCache={}),p=0,d=!1;i&&i._routerRoot!==i;){var h=i.$vnode?i.$vnode.data:{};h.routerView&&p++,h.keepAlive&&i._directInactive&&i._inactive&&(d=!0),i=i.$parent}if(o.routerViewDepth=p,d){var v=f[c],m=v&&v.component;return m?(v.configProps&&s(m,o,v.route,v.configProps),l(m,o,r)):l()}var g=u.matched[p],y=g&&g.components[c];if(!g||!y)return f[c]=null,l();f[c]={component:y},o.registerRouteInstance=function(e,t){var n=g.instances[c];(t&&n!==e||!t&&n===e)&&(g.instances[c]=t)},(o.hook||(o.hook={})).prepatch=function(e,t){g.instances[c]=t.componentInstance},o.hook.init=function(e){e.data.keepAlive&&e.componentInstance&&e.componentInstance!==g.instances[c]&&(g.instances[c]=e.componentInstance)};var b=g.props&&g.props[c];return b&&(a(f[c],{route:u,configProps:b}),s(y,o,u,b)),l(y,o,r)}};function s(e,t,n,r){var i=t.props=function(e,t){switch(typeof t){case"undefined":return;case"object":return t;case"function":return t(e);case"boolean":return t?e.params:void 0;default:0}}(n,r);if(i){i=t.props=a({},i);var o=t.attrs=t.attrs||{};for(var s in i)e.props&&s in e.props||(o[s]=i[s],delete i[s])}}var l=/[!'()*]/g,c=function(e){return"%"+e.charCodeAt(0).toString(16)},u=/%2C/g,f=function(e){return encodeURIComponent(e).replace(l,c).replace(u,",")},p=decodeURIComponent;var d=function(e){return null==e||"object"==typeof e?e:String(e)};function h(e){var t={};return(e=e.trim().replace(/^(\?|#|&)/,""))?(e.split("&").forEach((function(e){var n=e.replace(/\+/g," ").split("="),r=p(n.shift()),i=n.length>0?p(n.join("=")):null;void 0===t[r]?t[r]=i:Array.isArray(t[r])?t[r].push(i):t[r]=[t[r],i]})),t):t}function v(e){var t=e?Object.keys(e).map((function(t){var n=e[t];if(void 0===n)return"";if(null===n)return f(t);if(Array.isArray(n)){var r=[];return n.forEach((function(e){void 0!==e&&(null===e?r.push(f(t)):r.push(f(t)+"="+f(e)))})),r.join("&")}return f(t)+"="+f(n)})).filter((function(e){return e.length>0})).join("&"):null;return t?"?"+t:""}var m=/\/?$/;function g(e,t,n,r){var i=r&&r.options.stringifyQuery,a=t.query||{};try{a=y(a)}catch(e){}var o={name:t.name||e&&e.name,meta:e&&e.meta||{},path:t.path||"/",hash:t.hash||"",query:a,params:t.params||{},fullPath:x(t,i),matched:e?w(e):[]};return n&&(o.redirectedFrom=x(n,i)),Object.freeze(o)}function y(e){if(Array.isArray(e))return e.map(y);if(e&&"object"==typeof e){var t={};for(var n in e)t[n]=y(e[n]);return t}return e}var b=g(null,{path:"/"});function w(e){for(var t=[];e;)t.unshift(e),e=e.parent;return t}function x(e,t){var n=e.path,r=e.query;void 0===r&&(r={});var i=e.hash;return void 0===i&&(i=""),(n||"/")+(t||v)(r)+i}function k(e,t){return t===b?e===t:!!t&&(e.path&&t.path?e.path.replace(m,"")===t.path.replace(m,"")&&e.hash===t.hash&&S(e.query,t.query):!(!e.name||!t.name)&&(e.name===t.name&&e.hash===t.hash&&S(e.query,t.query)&&S(e.params,t.params)))}function S(e,t){if(void 0===e&&(e={}),void 0===t&&(t={}),!e||!t)return e===t;var n=Object.keys(e),r=Object.keys(t);return n.length===r.length&&n.every((function(n){var r=e[n],i=t[n];return null==r||null==i?r===i:"object"==typeof r&&"object"==typeof i?S(r,i):String(r)===String(i)}))}function A(e,t,n){var r=e.charAt(0);if("/"===r)return e;if("?"===r||"#"===r)return t+e;var i=t.split("/");n&&i[i.length-1]||i.pop();for(var a=e.replace(/^\//,"").split("/"),o=0;o<a.length;o++){var s=a[o];".."===s?i.pop():"."!==s&&i.push(s)}return""!==i[0]&&i.unshift(""),i.join("/")}function C(e){return e.replace(/\/\//g,"/")}var E=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)},O=U,T=M,I=function(e,t){return R(M(e,t),t)},N=R,P=B,z=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function M(e,t){for(var n,r=[],i=0,a=0,o="",s=t&&t.delimiter||"/";null!=(n=z.exec(e));){var l=n[0],c=n[1],u=n.index;if(o+=e.slice(a,u),a=u+l.length,c)o+=c[1];else{var f=e[a],p=n[2],d=n[3],h=n[4],v=n[5],m=n[6],g=n[7];o&&(r.push(o),o="");var y=null!=p&&null!=f&&f!==p,b="+"===m||"*"===m,_="?"===m||"*"===m,w=n[2]||s,x=h||v;r.push({name:d||i++,prefix:p||"",delimiter:w,optional:_,repeat:b,partial:y,asterisk:!!g,pattern:x?$(x):g?".*":"[^"+j(w)+"]+?"})}}return a<e.length&&(o+=e.substr(a)),o&&r.push(o),r}function L(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function R(e,t){for(var n=new Array(e.length),r=0;r<e.length;r++)"object"==typeof e[r]&&(n[r]=new RegExp("^(?:"+e[r].pattern+")$",F(t)));return function(t,r){for(var i="",a=t||{},o=(r||{}).pretty?L:encodeURIComponent,s=0;s<e.length;s++){var l=e[s];if("string"!=typeof l){var c,u=a[l.name];if(null==u){if(l.optional){l.partial&&(i+=l.prefix);continue}throw new TypeError('Expected "'+l.name+'" to be defined')}if(E(u)){if(!l.repeat)throw new TypeError('Expected "'+l.name+'" to not repeat, but received `'+JSON.stringify(u)+"`");if(0===u.length){if(l.optional)continue;throw new TypeError('Expected "'+l.name+'" to not be empty')}for(var f=0;f<u.length;f++){if(c=o(u[f]),!n[s].test(c))throw new TypeError('Expected all "'+l.name+'" to match "'+l.pattern+'", but received `'+JSON.stringify(c)+"`");i+=(0===f?l.prefix:l.delimiter)+c}}else{if(c=l.asterisk?encodeURI(u).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):o(u),!n[s].test(c))throw new TypeError('Expected "'+l.name+'" to match "'+l.pattern+'", but received "'+c+'"');i+=l.prefix+c}}else i+=l}return i}}function j(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function $(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function D(e,t){return e.keys=t,e}function F(e){return e&&e.sensitive?"":"i"}function B(e,t,n){E(t)||(n=t||n,t=[]);for(var r=(n=n||{}).strict,i=!1!==n.end,a="",o=0;o<e.length;o++){var s=e[o];if("string"==typeof s)a+=j(s);else{var l=j(s.prefix),c="(?:"+s.pattern+")";t.push(s),s.repeat&&(c+="(?:"+l+c+")*"),a+=c=s.optional?s.partial?l+"("+c+")?":"(?:"+l+"("+c+"))?":l+"("+c+")"}}var u=j(n.delimiter||"/"),f=a.slice(-u.length)===u;return r||(a=(f?a.slice(0,-u.length):a)+"(?:"+u+"(?=$))?"),a+=i?"$":r&&f?"":"(?="+u+"|$)",D(new RegExp("^"+a,F(n)),t)}function U(e,t,n){return E(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return D(e,t)}(e,t):E(e)?function(e,t,n){for(var r=[],i=0;i<e.length;i++)r.push(U(e[i],t,n).source);return D(new RegExp("(?:"+r.join("|")+")",F(n)),t)}(e,t,n):function(e,t,n){return B(M(e,n),t,n)}(e,t,n)}O.parse=T,O.compile=I,O.tokensToFunction=N,O.tokensToRegExp=P;var H=Object.create(null);function V(e,t,n){t=t||{};try{var r=H[e]||(H[e]=O.compile(e));return"string"==typeof t.pathMatch&&(t[0]=t.pathMatch),r(t,{pretty:!0})}catch(e){return""}finally{delete t[0]}}function G(e,t,n,r){var i="string"==typeof e?{path:e}:e;if(i._normalized)return i;if(i.name){var o=(i=a({},e)).params;return o&&"object"==typeof o&&(i.params=a({},o)),i}if(!i.path&&i.params&&t){(i=a({},i))._normalized=!0;var s=a(a({},t.params),i.params);if(t.name)i.name=t.name,i.params=s;else if(t.matched.length){var l=t.matched[t.matched.length-1].path;i.path=V(l,s,t.path)}else 0;return i}var c=function(e){var t="",n="",r=e.indexOf("#");r>=0&&(t=e.slice(r),e=e.slice(0,r));var i=e.indexOf("?");return i>=0&&(n=e.slice(i+1),e=e.slice(0,i)),{path:e,query:n,hash:t}}(i.path||""),u=t&&t.path||"/",f=c.path?A(c.path,u,n||i.append):u,p=function(e,t,n){void 0===t&&(t={});var r,i=n||h;try{r=i(e||"")}catch(e){r={}}for(var a in t){var o=t[a];r[a]=Array.isArray(o)?o.map(d):d(o)}return r}(c.query,i.query,r&&r.options.parseQuery),v=i.hash||c.hash;return v&&"#"!==v.charAt(0)&&(v="#"+v),{_normalized:!0,path:f,query:p,hash:v}}var W,q=function(){},K={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},exact:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(e){var t=this,n=this.$router,r=this.$route,i=n.resolve(this.to,r,this.append),o=i.location,s=i.route,l=i.href,c={},u=n.options.linkActiveClass,f=n.options.linkExactActiveClass,p=null==u?"router-link-active":u,d=null==f?"router-link-exact-active":f,h=null==this.activeClass?p:this.activeClass,v=null==this.exactActiveClass?d:this.exactActiveClass,y=s.redirectedFrom?g(null,G(s.redirectedFrom),null,n):s;c[v]=k(r,y),c[h]=this.exact?c[v]:function(e,t){return 0===e.path.replace(m,"/").indexOf(t.path.replace(m,"/"))&&(!t.hash||e.hash===t.hash)&&function(e,t){for(var n in t)if(!(n in e))return!1;return!0}(e.query,t.query)}(r,y);var b=c[v]?this.ariaCurrentValue:null,_=function(e){Y(e)&&(t.replace?n.replace(o,q):n.push(o,q))},w={click:Y};Array.isArray(this.event)?this.event.forEach((function(e){w[e]=_})):w[this.event]=_;var x={class:c},S=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:l,route:s,navigate:_,isActive:c[h],isExactActive:c[v]});if(S){if(1===S.length)return S[0];if(S.length>1||!S.length)return 0===S.length?e():e("span",{},S)}if("a"===this.tag)x.on=w,x.attrs={href:l,"aria-current":b};else{var A=function e(t){var n;if(t)for(var r=0;r<t.length;r++){if("a"===(n=t[r]).tag)return n;if(n.children&&(n=e(n.children)))return n}}(this.$slots.default);if(A){A.isStatic=!1;var C=A.data=a({},A.data);for(var E in C.on=C.on||{},C.on){var O=C.on[E];E in w&&(C.on[E]=Array.isArray(O)?O:[O])}for(var T in w)T in C.on?C.on[T].push(w[T]):C.on[T]=_;var I=A.data.attrs=a({},A.data.attrs);I.href=l,I["aria-current"]=b}else x.on=w}return e(this.tag,x,this.$slots.default)}};function Y(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey||e.defaultPrevented||void 0!==e.button&&0!==e.button)){if(e.currentTarget&&e.currentTarget.getAttribute){var t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}var J="undefined"!=typeof window;function Z(e,t,n,r){var i=t||[],a=n||Object.create(null),o=r||Object.create(null);e.forEach((function(e){!function e(t,n,r,i,a,o){var s=i.path,l=i.name;0;var c=i.pathToRegexpOptions||{},u=function(e,t,n){n||(e=e.replace(/\/$/,""));if("/"===e[0])return e;if(null==t)return e;return C(t.path+"/"+e)}(s,a,c.strict);"boolean"==typeof i.caseSensitive&&(c.sensitive=i.caseSensitive);var f={path:u,regex:X(u,c),components:i.components||{default:i.component},instances:{},name:l,parent:a,matchAs:o,redirect:i.redirect,beforeEnter:i.beforeEnter,meta:i.meta||{},props:null==i.props?{}:i.components?i.props:{default:i.props}};i.children&&i.children.forEach((function(i){var a=o?C(o+"/"+i.path):void 0;e(t,n,r,i,f,a)}));n[f.path]||(t.push(f.path),n[f.path]=f);if(void 0!==i.alias)for(var p=Array.isArray(i.alias)?i.alias:[i.alias],d=0;d<p.length;++d){0;var h={path:p[d],children:i.children};e(t,n,r,h,a,f.path||"/")}l&&(r[l]||(r[l]=f))}(i,a,o,e)}));for(var s=0,l=i.length;s<l;s++)"*"===i[s]&&(i.push(i.splice(s,1)[0]),l--,s--);return{pathList:i,pathMap:a,nameMap:o}}function X(e,t){return O(e,[],t)}function Q(e,t){var n=Z(e),r=n.pathList,i=n.pathMap,a=n.nameMap;function o(e,n,o){var s=G(e,n,!1,t),c=s.name;if(c){var u=a[c];if(!u)return l(null,s);var f=u.regex.keys.filter((function(e){return!e.optional})).map((function(e){return e.name}));if("object"!=typeof s.params&&(s.params={}),n&&"object"==typeof n.params)for(var p in n.params)!(p in s.params)&&f.indexOf(p)>-1&&(s.params[p]=n.params[p]);return s.path=V(u.path,s.params),l(u,s,o)}if(s.path){s.params={};for(var d=0;d<r.length;d++){var h=r[d],v=i[h];if(ee(v.regex,s.path,s.params))return l(v,s,o)}}return l(null,s)}function s(e,n){var r=e.redirect,i="function"==typeof r?r(g(e,n,null,t)):r;if("string"==typeof i&&(i={path:i}),!i||"object"!=typeof i)return l(null,n);var s=i,c=s.name,u=s.path,f=n.query,p=n.hash,d=n.params;if(f=s.hasOwnProperty("query")?s.query:f,p=s.hasOwnProperty("hash")?s.hash:p,d=s.hasOwnProperty("params")?s.params:d,c){a[c];return o({_normalized:!0,name:c,query:f,hash:p,params:d},void 0,n)}if(u){var h=function(e,t){return A(e,t.parent?t.parent.path:"/",!0)}(u,e);return o({_normalized:!0,path:V(h,d),query:f,hash:p},void 0,n)}return l(null,n)}function l(e,n,r){return e&&e.redirect?s(e,r||n):e&&e.matchAs?function(e,t,n){var r=o({_normalized:!0,path:V(n,t.params)});if(r){var i=r.matched,a=i[i.length-1];return t.params=r.params,l(a,t)}return l(null,t)}(0,n,e.matchAs):g(e,n,r,t)}return{match:o,addRoutes:function(e){Z(e,r,i,a)}}}function ee(e,t,n){var r=t.match(e);if(!r)return!1;if(!n)return!0;for(var i=1,a=r.length;i<a;++i){var o=e.keys[i-1],s="string"==typeof r[i]?decodeURIComponent(r[i]):r[i];o&&(n[o.name||"pathMatch"]=s)}return!0}var te=J&&window.performance&&window.performance.now?window.performance:Date;function ne(){return te.now().toFixed(3)}var re=ne();function ie(){return re}function ae(e){return re=e}var oe=Object.create(null);function se(){"scrollRestoration"in window.history&&(window.history.scrollRestoration="manual");var e=window.location.protocol+"//"+window.location.host,t=window.location.href.replace(e,""),n=a({},window.history.state);return n.key=ie(),window.history.replaceState(n,"",t),window.addEventListener("popstate",ue),function(){window.removeEventListener("popstate",ue)}}function le(e,t,n,r){if(e.app){var i=e.options.scrollBehavior;i&&e.app.$nextTick((function(){var a=function(){var e=ie();if(e)return oe[e]}(),o=i.call(e,t,n,r?a:null);o&&("function"==typeof o.then?o.then((function(e){ve(e,a)})).catch((function(e){0})):ve(o,a))}))}}function ce(){var e=ie();e&&(oe[e]={x:window.pageXOffset,y:window.pageYOffset})}function ue(e){ce(),e.state&&e.state.key&&ae(e.state.key)}function fe(e){return de(e.x)||de(e.y)}function pe(e){return{x:de(e.x)?e.x:window.pageXOffset,y:de(e.y)?e.y:window.pageYOffset}}function de(e){return"number"==typeof e}var he=/^#\d/;function ve(e,t){var n,r="object"==typeof e;if(r&&"string"==typeof e.selector){var i=he.test(e.selector)?document.getElementById(e.selector.slice(1)):document.querySelector(e.selector);if(i){var a=e.offset&&"object"==typeof e.offset?e.offset:{};t=function(e,t){var n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{x:r.left-n.left-t.x,y:r.top-n.top-t.y}}(i,a={x:de((n=a).x)?n.x:0,y:de(n.y)?n.y:0})}else fe(e)&&(t=pe(e))}else r&&fe(e)&&(t=pe(e));t&&window.scrollTo(t.x,t.y)}var me,ge=J&&((-1===(me=window.navigator.userAgent).indexOf("Android 2.")&&-1===me.indexOf("Android 4.0")||-1===me.indexOf("Mobile Safari")||-1!==me.indexOf("Chrome")||-1!==me.indexOf("Windows Phone"))&&window.history&&"function"==typeof window.history.pushState);function ye(e,t){ce();var n=window.history;try{if(t){var r=a({},n.state);r.key=ie(),n.replaceState(r,"",e)}else n.pushState({key:ae(ne())},"",e)}catch(n){window.location[t?"replace":"assign"](e)}}function be(e){ye(e,!0)}function _e(e,t,n){var r=function(i){i>=e.length?n():e[i]?t(e[i],(function(){r(i+1)})):r(i+1)};r(0)}var we={redirected:2,aborted:4,cancelled:8,duplicated:16};function xe(e,t){return Se(e,t,we.redirected,'Redirected when going from "'+e.fullPath+'" to "'+function(e){if("string"==typeof e)return e;if("path"in e)return e.path;var t={};return Ae.forEach((function(n){n in e&&(t[n]=e[n])})),JSON.stringify(t,null,2)}(t)+'" via a navigation guard.')}function ke(e,t){return Se(e,t,we.cancelled,'Navigation cancelled from "'+e.fullPath+'" to "'+t.fullPath+'" with a new navigation.')}function Se(e,t,n,r){var i=new Error(r);return i._isRouter=!0,i.from=e,i.to=t,i.type=n,i}var Ae=["params","query","hash"];function Ce(e){return Object.prototype.toString.call(e).indexOf("Error")>-1}function Ee(e,t){return Ce(e)&&e._isRouter&&(null==t||e.type===t)}function Oe(e){return function(t,n,r){var i=!1,a=0,o=null;Te(e,(function(e,t,n,s){if("function"==typeof e&&void 0===e.cid){i=!0,a++;var l,c=Pe((function(t){var i;((i=t).__esModule||Ne&&"Module"===i[Symbol.toStringTag])&&(t=t.default),e.resolved="function"==typeof t?t:W.extend(t),n.components[s]=t,--a<=0&&r()})),u=Pe((function(e){var t="Failed to resolve async component "+s+": "+e;o||(o=Ce(e)?e:new Error(t),r(o))}));try{l=e(c,u)}catch(e){u(e)}if(l)if("function"==typeof l.then)l.then(c,u);else{var f=l.component;f&&"function"==typeof f.then&&f.then(c,u)}}})),i||r()}}function Te(e,t){return Ie(e.map((function(e){return Object.keys(e.components).map((function(n){return t(e.components[n],e.instances[n],e,n)}))})))}function Ie(e){return Array.prototype.concat.apply([],e)}var Ne="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function Pe(e){var t=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!t)return t=!0,e.apply(this,n)}}var ze=function(e,t){this.router=e,this.base=function(e){if(!e)if(J){var t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else e="/";"/"!==e.charAt(0)&&(e="/"+e);return e.replace(/\/$/,"")}(t),this.current=b,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function Me(e,t,n,r){var i=Te(e,(function(e,r,i,a){var o=function(e,t){"function"!=typeof e&&(e=W.extend(e));return e.options[t]}(e,t);if(o)return Array.isArray(o)?o.map((function(e){return n(e,r,i,a)})):n(o,r,i,a)}));return Ie(r?i.reverse():i)}function Le(e,t){if(t)return function(){return e.apply(t,arguments)}}ze.prototype.listen=function(e){this.cb=e},ze.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},ze.prototype.onError=function(e){this.errorCbs.push(e)},ze.prototype.transitionTo=function(e,t,n){var r,i=this;try{r=this.router.match(e,this.current)}catch(e){throw this.errorCbs.forEach((function(t){t(e)})),e}this.confirmTransition(r,(function(){var e=i.current;i.updateRoute(r),t&&t(r),i.ensureURL(),i.router.afterHooks.forEach((function(t){t&&t(r,e)})),i.ready||(i.ready=!0,i.readyCbs.forEach((function(e){e(r)})))}),(function(e){n&&n(e),e&&!i.ready&&(i.ready=!0,Ee(e,we.redirected)?i.readyCbs.forEach((function(e){e(r)})):i.readyErrorCbs.forEach((function(t){t(e)})))}))},ze.prototype.confirmTransition=function(e,t,n){var r,i,a=this,o=this.current,s=function(e){!Ee(e)&&Ce(e)&&(a.errorCbs.length?a.errorCbs.forEach((function(t){t(e)})):console.error(e)),n&&n(e)},l=e.matched.length-1,c=o.matched.length-1;if(k(e,o)&&l===c&&e.matched[l]===o.matched[c])return this.ensureURL(),s(((i=Se(r=o,e,we.duplicated,'Avoided redundant navigation to current location: "'+r.fullPath+'".')).name="NavigationDuplicated",i));var u=function(e,t){var n,r=Math.max(e.length,t.length);for(n=0;n<r&&e[n]===t[n];n++);return{updated:t.slice(0,n),activated:t.slice(n),deactivated:e.slice(n)}}(this.current.matched,e.matched),f=u.updated,p=u.deactivated,d=u.activated,h=[].concat(function(e){return Me(e,"beforeRouteLeave",Le,!0)}(p),this.router.beforeHooks,function(e){return Me(e,"beforeRouteUpdate",Le)}(f),d.map((function(e){return e.beforeEnter})),Oe(d));this.pending=e;var v=function(t,n){if(a.pending!==e)return s(ke(o,e));try{t(e,o,(function(t){!1===t?(a.ensureURL(!0),s(function(e,t){return Se(e,t,we.aborted,'Navigation aborted from "'+e.fullPath+'" to "'+t.fullPath+'" via a navigation guard.')}(o,e))):Ce(t)?(a.ensureURL(!0),s(t)):"string"==typeof t||"object"==typeof t&&("string"==typeof t.path||"string"==typeof t.name)?(s(xe(o,e)),"object"==typeof t&&t.replace?a.replace(t):a.push(t)):n(t)}))}catch(e){s(e)}};_e(h,v,(function(){var n=[];_e(function(e,t,n){return Me(e,"beforeRouteEnter",(function(e,r,i,a){return function(e,t,n,r,i){return function(a,o,s){return e(a,o,(function(e){"function"==typeof e&&r.push((function(){!function e(t,n,r,i){n[r]&&!n[r]._isBeingDestroyed?t(n[r]):i()&&setTimeout((function(){e(t,n,r,i)}),16)}(e,t.instances,n,i)})),s(e)}))}}(e,i,a,t,n)}))}(d,n,(function(){return a.current===e})).concat(a.router.resolveHooks),v,(function(){if(a.pending!==e)return s(ke(o,e));a.pending=null,t(e),a.router.app&&a.router.app.$nextTick((function(){n.forEach((function(e){e()}))}))}))}))},ze.prototype.updateRoute=function(e){this.current=e,this.cb&&this.cb(e)},ze.prototype.setupListeners=function(){},ze.prototype.teardownListeners=function(){this.listeners.forEach((function(e){e()})),this.listeners=[]};var Re=function(e){function t(t,n){e.call(this,t,n),this._startLocation=je(this.base)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router,n=t.options.scrollBehavior,r=ge&&n;r&&this.listeners.push(se());var i=function(){var n=e.current,i=je(e.base);e.current===b&&i===e._startLocation||e.transitionTo(i,(function(e){r&&le(t,e,n,!0)}))};window.addEventListener("popstate",i),this.listeners.push((function(){window.removeEventListener("popstate",i)}))}},t.prototype.go=function(e){window.history.go(e)},t.prototype.push=function(e,t,n){var r=this,i=this.current;this.transitionTo(e,(function(e){ye(C(r.base+e.fullPath)),le(r.router,e,i,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,i=this.current;this.transitionTo(e,(function(e){be(C(r.base+e.fullPath)),le(r.router,e,i,!1),t&&t(e)}),n)},t.prototype.ensureURL=function(e){if(je(this.base)!==this.current.fullPath){var t=C(this.base+this.current.fullPath);e?ye(t):be(t)}},t.prototype.getCurrentLocation=function(){return je(this.base)},t}(ze);function je(e){var t=decodeURI(window.location.pathname);return e&&0===t.toLowerCase().indexOf(e.toLowerCase())&&(t=t.slice(e.length)),(t||"/")+window.location.search+window.location.hash}var $e=function(e){function t(t,n,r){e.call(this,t,n),r&&function(e){var t=je(e);if(!/^\/#/.test(t))return window.location.replace(C(e+"/#"+t)),!0}(this.base)||De()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router.options.scrollBehavior,n=ge&&t;n&&this.listeners.push(se());var r=function(){var t=e.current;De()&&e.transitionTo(Fe(),(function(r){n&&le(e.router,r,t,!0),ge||He(r.fullPath)}))},i=ge?"popstate":"hashchange";window.addEventListener(i,r),this.listeners.push((function(){window.removeEventListener(i,r)}))}},t.prototype.push=function(e,t,n){var r=this,i=this.current;this.transitionTo(e,(function(e){Ue(e.fullPath),le(r.router,e,i,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,i=this.current;this.transitionTo(e,(function(e){He(e.fullPath),le(r.router,e,i,!1),t&&t(e)}),n)},t.prototype.go=function(e){window.history.go(e)},t.prototype.ensureURL=function(e){var t=this.current.fullPath;Fe()!==t&&(e?Ue(t):He(t))},t.prototype.getCurrentLocation=function(){return Fe()},t}(ze);function De(){var e=Fe();return"/"===e.charAt(0)||(He("/"+e),!1)}function Fe(){var e=window.location.href,t=e.indexOf("#");if(t<0)return"";var n=(e=e.slice(t+1)).indexOf("?");if(n<0){var r=e.indexOf("#");e=r>-1?decodeURI(e.slice(0,r))+e.slice(r):decodeURI(e)}else e=decodeURI(e.slice(0,n))+e.slice(n);return e}function Be(e){var t=window.location.href,n=t.indexOf("#");return(n>=0?t.slice(0,n):t)+"#"+e}function Ue(e){ge?ye(Be(e)):window.location.hash=e}function He(e){ge?be(Be(e)):window.location.replace(Be(e))}var Ve=function(e){function t(t,n){e.call(this,t,n),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index+1).concat(e),r.index++,t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index).concat(e),t&&t(e)}),n)},t.prototype.go=function(e){var t=this,n=this.index+e;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){t.index=n,t.updateRoute(r)}),(function(e){Ee(e,we.duplicated)&&(t.index=n)}))}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(ze),Ge=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Q(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!ge&&!1!==e.fallback,this.fallback&&(t="hash"),J||(t="abstract"),this.mode=t,t){case"history":this.history=new Re(this,e.base);break;case"hash":this.history=new $e(this,e.base,this.fallback);break;case"abstract":this.history=new Ve(this,e.base);break;default:0}},We={currentRoute:{configurable:!0}};function qe(e,t){return e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}Ge.prototype.match=function(e,t,n){return this.matcher.match(e,t,n)},We.currentRoute.get=function(){return this.history&&this.history.current},Ge.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",(function(){var n=t.apps.indexOf(e);n>-1&&t.apps.splice(n,1),t.app===e&&(t.app=t.apps[0]||null),t.app||t.history.teardownListeners()})),!this.app){this.app=e;var n=this.history;if(n instanceof Re||n instanceof $e){var r=function(e){n.setupListeners(),function(e){var r=n.current,i=t.options.scrollBehavior;ge&&i&&"fullPath"in e&&le(t,e,r,!1)}(e)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(e){t.apps.forEach((function(t){t._route=e}))}))}},Ge.prototype.beforeEach=function(e){return qe(this.beforeHooks,e)},Ge.prototype.beforeResolve=function(e){return qe(this.resolveHooks,e)},Ge.prototype.afterEach=function(e){return qe(this.afterHooks,e)},Ge.prototype.onReady=function(e,t){this.history.onReady(e,t)},Ge.prototype.onError=function(e){this.history.onError(e)},Ge.prototype.push=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.push(e,t,n)}));this.history.push(e,t,n)},Ge.prototype.replace=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.replace(e,t,n)}));this.history.replace(e,t,n)},Ge.prototype.go=function(e){this.history.go(e)},Ge.prototype.back=function(){this.go(-1)},Ge.prototype.forward=function(){this.go(1)},Ge.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map((function(e){return Object.keys(e.components).map((function(t){return e.components[t]}))}))):[]},Ge.prototype.resolve=function(e,t,n){var r=G(e,t=t||this.history.current,n,this),i=this.match(r,t),a=i.redirectedFrom||i.fullPath;return{location:r,route:i,href:function(e,t,n){var r="hash"===n?"#"+t:t;return e?C(e+"/"+r):r}(this.history.base,a,this.mode),normalizedTo:r,resolved:i}},Ge.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==b&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Ge.prototype,We),Ge.install=function e(t){if(!e.installed||W!==t){e.installed=!0,W=t;var n=function(e){return void 0!==e},r=function(e,t){var r=e.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(e,t)};t.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),t.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(t.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(t.prototype,"$route",{get:function(){return this._routerRoot._route}}),t.component("RouterView",o),t.component("RouterLink",K);var i=t.config.optionMergeStrategies;i.beforeRouteEnter=i.beforeRouteLeave=i.beforeRouteUpdate=i.created}},Ge.version="3.4.3",Ge.isNavigationFailure=Ee,Ge.NavigationFailureType=we,J&&window.Vue&&window.Vue.use(Ge);var Ke=Ge,Ye=["style","currency","currencyDisplay","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits","localeMatcher","formatMatcher","unit"];function Je(e,t){"undefined"!=typeof console&&(console.warn("[vue-i18n] "+e),t&&console.warn(t.stack))}var Ze=Array.isArray;function Xe(e){return null!==e&&"object"==typeof e}function Qe(e){return"string"==typeof e}var et=Object.prototype.toString;function tt(e){return"[object Object]"===et.call(e)}function nt(e){return null==e}function rt(e){return"function"==typeof e}function it(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var n=null,r=null;return 1===e.length?Xe(e[0])||Ze(e[0])?r=e[0]:"string"==typeof e[0]&&(n=e[0]):2===e.length&&("string"==typeof e[0]&&(n=e[0]),(Xe(e[1])||Ze(e[1]))&&(r=e[1])),{locale:n,params:r}}function at(e){return JSON.parse(JSON.stringify(e))}function ot(e,t){return!!~e.indexOf(t)}var st=Object.prototype.hasOwnProperty;function lt(e,t){return st.call(e,t)}function ct(e){for(var t=arguments,n=Object(e),r=1;r<arguments.length;r++){var i=t[r];if(null!=i){var a=void 0;for(a in i)lt(i,a)&&(Xe(i[a])?n[a]=ct(n[a],i[a]):n[a]=i[a])}}return n}function ut(e,t){if(e===t)return!0;var n=Xe(e),r=Xe(t);if(!n||!r)return!n&&!r&&String(e)===String(t);try{var i=Ze(e),a=Ze(t);if(i&&a)return e.length===t.length&&e.every((function(e,n){return ut(e,t[n])}));if(i||a)return!1;var o=Object.keys(e),s=Object.keys(t);return o.length===s.length&&o.every((function(n){return ut(e[n],t[n])}))}catch(e){return!1}}var ft={beforeCreate:function(){var e=this.$options;if(e.i18n=e.i18n||(e.__i18n?{}:null),e.i18n)if(e.i18n instanceof Ft){if(e.__i18n)try{var t={};e.__i18n.forEach((function(e){t=ct(t,JSON.parse(e))})),Object.keys(t).forEach((function(n){e.i18n.mergeLocaleMessage(n,t[n])}))}catch(e){0}this._i18n=e.i18n,this._i18nWatcher=this._i18n.watchI18nData()}else if(tt(e.i18n)){var n=this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof Ft?this.$root.$i18n:null;if(n&&(e.i18n.root=this.$root,e.i18n.formatter=n.formatter,e.i18n.fallbackLocale=n.fallbackLocale,e.i18n.formatFallbackMessages=n.formatFallbackMessages,e.i18n.silentTranslationWarn=n.silentTranslationWarn,e.i18n.silentFallbackWarn=n.silentFallbackWarn,e.i18n.pluralizationRules=n.pluralizationRules,e.i18n.preserveDirectiveContent=n.preserveDirectiveContent),e.__i18n)try{var r={};e.__i18n.forEach((function(e){r=ct(r,JSON.parse(e))})),e.i18n.messages=r}catch(e){0}var i=e.i18n.sharedMessages;i&&tt(i)&&(e.i18n.messages=ct(e.i18n.messages,i)),this._i18n=new Ft(e.i18n),this._i18nWatcher=this._i18n.watchI18nData(),(void 0===e.i18n.sync||e.i18n.sync)&&(this._localeWatcher=this.$i18n.watchLocale()),n&&n.onComponentInstanceCreated(this._i18n)}else 0;else this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof Ft?this._i18n=this.$root.$i18n:e.parent&&e.parent.$i18n&&e.parent.$i18n instanceof Ft&&(this._i18n=e.parent.$i18n)},beforeMount:function(){var e=this.$options;e.i18n=e.i18n||(e.__i18n?{}:null),e.i18n?(e.i18n instanceof Ft||tt(e.i18n))&&(this._i18n.subscribeDataChanging(this),this._subscribing=!0):(this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof Ft||e.parent&&e.parent.$i18n&&e.parent.$i18n instanceof Ft)&&(this._i18n.subscribeDataChanging(this),this._subscribing=!0)},beforeDestroy:function(){if(this._i18n){var e=this;this.$nextTick((function(){e._subscribing&&(e._i18n.unsubscribeDataChanging(e),delete e._subscribing),e._i18nWatcher&&(e._i18nWatcher(),e._i18n.destroyVM(),delete e._i18nWatcher),e._localeWatcher&&(e._localeWatcher(),delete e._localeWatcher)}))}}},pt={name:"i18n",functional:!0,props:{tag:{type:[String,Boolean,Object],default:"span"},path:{type:String,required:!0},locale:{type:String},places:{type:[Array,Object]}},render:function(e,t){var n=t.data,r=t.parent,i=t.props,a=t.slots,o=r.$i18n;if(o){var s=i.path,l=i.locale,c=i.places,u=a(),f=o.i(s,l,function(e){var t;for(t in e)if("default"!==t)return!1;return Boolean(t)}(u)||c?function(e,t){var n=t?function(e){0;return Array.isArray(e)?e.reduce(ht,{}):Object.assign({},e)}(t):{};if(!e)return n;var r=(e=e.filter((function(e){return e.tag||""!==e.text.trim()}))).every(vt);0;return e.reduce(r?dt:ht,n)}(u.default,c):u),p=i.tag&&!0!==i.tag||!1===i.tag?i.tag:"span";return p?e(p,n,f):f}}};function dt(e,t){return t.data&&t.data.attrs&&t.data.attrs.place&&(e[t.data.attrs.place]=t),e}function ht(e,t,n){return e[n]=t,e}function vt(e){return Boolean(e.data&&e.data.attrs&&e.data.attrs.place)}var mt,gt={name:"i18n-n",functional:!0,props:{tag:{type:[String,Boolean,Object],default:"span"},value:{type:Number,required:!0},format:{type:[String,Object]},locale:{type:String}},render:function(e,t){var n=t.props,r=t.parent,i=t.data,a=r.$i18n;if(!a)return null;var o=null,s=null;Qe(n.format)?o=n.format:Xe(n.format)&&(n.format.key&&(o=n.format.key),s=Object.keys(n.format).reduce((function(e,t){var r;return ot(Ye,t)?Object.assign({},e,((r={})[t]=n.format[t],r)):e}),null));var l=n.locale||a.locale,c=a._ntp(n.value,l,o,s),u=c.map((function(e,t){var n,r=i.scopedSlots&&i.scopedSlots[e.type];return r?r(((n={})[e.type]=e.value,n.index=t,n.parts=c,n)):e.value})),f=n.tag&&!0!==n.tag||!1===n.tag?n.tag:"span";return f?e(f,{attrs:i.attrs,class:i.class,staticClass:i.staticClass},u):u}};function yt(e,t,n){wt(e,n)&&xt(e,t,n)}function bt(e,t,n,r){if(wt(e,n)){var i=n.context.$i18n;(function(e,t){var n=t.context;return e._locale===n.$i18n.locale})(e,n)&&ut(t.value,t.oldValue)&&ut(e._localeMessage,i.getLocaleMessage(i.locale))||xt(e,t,n)}}function _t(e,t,n,r){if(n.context){var i=n.context.$i18n||{};t.modifiers.preserve||i.preserveDirectiveContent||(e.textContent=""),e._vt=void 0,delete e._vt,e._locale=void 0,delete e._locale,e._localeMessage=void 0,delete e._localeMessage}else Je("Vue instance does not exists in VNode context")}function wt(e,t){var n=t.context;return n?!!n.$i18n||(Je("VueI18n instance does not exists in Vue instance"),!1):(Je("Vue instance does not exists in VNode context"),!1)}function xt(e,t,n){var r,i,a=function(e){var t,n,r,i;Qe(e)?t=e:tt(e)&&(t=e.path,n=e.locale,r=e.args,i=e.choice);return{path:t,locale:n,args:r,choice:i}}(t.value),o=a.path,s=a.locale,l=a.args,c=a.choice;if(o||s||l)if(o){var u=n.context;e._vt=e.textContent=null!=c?(r=u.$i18n).tc.apply(r,[o,c].concat(kt(s,l))):(i=u.$i18n).t.apply(i,[o].concat(kt(s,l))),e._locale=u.$i18n.locale,e._localeMessage=u.$i18n.getLocaleMessage(u.$i18n.locale)}else Je("`path` is required in v-t directive");else Je("value type not supported")}function kt(e,t){var n=[];return e&&n.push(e),t&&(Array.isArray(t)||tt(t))&&n.push(t),n}function St(e){St.installed=!0;var t;(mt=e).version&&Number(mt.version.split(".")[0]);(t=mt).prototype.hasOwnProperty("$i18n")||Object.defineProperty(t.prototype,"$i18n",{get:function(){return this._i18n}}),t.prototype.$t=function(e){for(var t=[],n=arguments.length-1;n-- >0;)t[n]=arguments[n+1];var r=this.$i18n;return r._t.apply(r,[e,r.locale,r._getMessages(),this].concat(t))},t.prototype.$tc=function(e,t){for(var n=[],r=arguments.length-2;r-- >0;)n[r]=arguments[r+2];var i=this.$i18n;return i._tc.apply(i,[e,i.locale,i._getMessages(),this,t].concat(n))},t.prototype.$te=function(e,t){var n=this.$i18n;return n._te(e,n.locale,n._getMessages(),t)},t.prototype.$d=function(e){for(var t,n=[],r=arguments.length-1;r-- >0;)n[r]=arguments[r+1];return(t=this.$i18n).d.apply(t,[e].concat(n))},t.prototype.$n=function(e){for(var t,n=[],r=arguments.length-1;r-- >0;)n[r]=arguments[r+1];return(t=this.$i18n).n.apply(t,[e].concat(n))},mt.mixin(ft),mt.directive("t",{bind:yt,update:bt,unbind:_t}),mt.component(pt.name,pt),mt.component(gt.name,gt),mt.config.optionMergeStrategies.i18n=function(e,t){return void 0===t?e:t}}var At=function(){this._caches=Object.create(null)};At.prototype.interpolate=function(e,t){if(!t)return[e];var n=this._caches[e];return n||(n=function(e){var t=[],n=0,r="";for(;n<e.length;){var i=e[n++];if("{"===i){r&&t.push({type:"text",value:r}),r="";var a="";for(i=e[n++];void 0!==i&&"}"!==i;)a+=i,i=e[n++];var o="}"===i,s=Ct.test(a)?"list":o&&Et.test(a)?"named":"unknown";t.push({value:a,type:s})}else"%"===i?"{"!==e[n]&&(r+=i):r+=i}return r&&t.push({type:"text",value:r}),t}(e),this._caches[e]=n),function(e,t){var n=[],r=0,i=Array.isArray(t)?"list":Xe(t)?"named":"unknown";if("unknown"===i)return n;for(;r<e.length;){var a=e[r];switch(a.type){case"text":n.push(a.value);break;case"list":n.push(t[parseInt(a.value,10)]);break;case"named":"named"===i&&n.push(t[a.value]);break;case"unknown":0}r++}return n}(n,t)};var Ct=/^(?:\d)+/,Et=/^(?:\w)+/;var Ot=[];Ot[0]={ws:[0],ident:[3,0],"[":[4],eof:[7]},Ot[1]={ws:[1],".":[2],"[":[4],eof:[7]},Ot[2]={ws:[2],ident:[3,0],0:[3,0],number:[3,0]},Ot[3]={ident:[3,0],0:[3,0],number:[3,0],ws:[1,1],".":[2,1],"[":[4,1],eof:[7,1]},Ot[4]={"'":[5,0],'"':[6,0],"[":[4,2],"]":[1,3],eof:8,else:[4,0]},Ot[5]={"'":[4,0],eof:8,else:[5,0]},Ot[6]={'"':[4,0],eof:8,else:[6,0]};var Tt=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;function It(e){if(null==e)return"eof";switch(e.charCodeAt(0)){case 91:case 93:case 46:case 34:case 39:return e;case 95:case 36:case 45:return"ident";case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return"ws"}return"ident"}function Nt(e){var t,n,r,i=e.trim();return("0"!==e.charAt(0)||!isNaN(e))&&(r=i,Tt.test(r)?(n=(t=i).charCodeAt(0))!==t.charCodeAt(t.length-1)||34!==n&&39!==n?t:t.slice(1,-1):"*"+i)}var Pt=function(){this._cache=Object.create(null)};Pt.prototype.parsePath=function(e){var t=this._cache[e];return t||(t=function(e){var t,n,r,i,a,o,s,l=[],c=-1,u=0,f=0,p=[];function d(){var t=e[c+1];if(5===u&&"'"===t||6===u&&'"'===t)return c++,r="\\"+t,p[0](),!0}for(p[1]=function(){void 0!==n&&(l.push(n),n=void 0)},p[0]=function(){void 0===n?n=r:n+=r},p[2]=function(){p[0](),f++},p[3]=function(){if(f>0)f--,u=4,p[0]();else{if(f=0,void 0===n)return!1;if(!1===(n=Nt(n)))return!1;p[1]()}};null!==u;)if(c++,"\\"!==(t=e[c])||!d()){if(i=It(t),8===(a=(s=Ot[u])[i]||s.else||8))return;if(u=a[0],(o=p[a[1]])&&(r=void 0===(r=a[2])?t:r,!1===o()))return;if(7===u)return l}}(e))&&(this._cache[e]=t),t||[]},Pt.prototype.getPathValue=function(e,t){if(!Xe(e))return null;var n=this.parsePath(t);if(0===n.length)return null;for(var r=n.length,i=e,a=0;a<r;){var o=i[n[a]];if(void 0===o)return null;i=o,a++}return i};var zt,Mt=/<\/?[\w\s="/.':;#-\/]+>/,Lt=/(?:@(?:\.[a-z]+)?:(?:[\w\-_|.]+|\([\w\-_|.]+\)))/g,Rt=/^@(?:\.([a-z]+))?:/,jt=/[()]/g,$t={upper:function(e){return e.toLocaleUpperCase()},lower:function(e){return e.toLocaleLowerCase()},capitalize:function(e){return""+e.charAt(0).toLocaleUpperCase()+e.substr(1)}},Dt=new At,Ft=function(e){var t=this;void 0===e&&(e={}),!mt&&"undefined"!=typeof window&&window.Vue&&St(window.Vue);var n=e.locale||"en-US",r=!1!==e.fallbackLocale&&(e.fallbackLocale||"en-US"),i=e.messages||{},a=e.dateTimeFormats||{},o=e.numberFormats||{};this._vm=null,this._formatter=e.formatter||Dt,this._modifiers=e.modifiers||{},this._missing=e.missing||null,this._root=e.root||null,this._sync=void 0===e.sync||!!e.sync,this._fallbackRoot=void 0===e.fallbackRoot||!!e.fallbackRoot,this._formatFallbackMessages=void 0!==e.formatFallbackMessages&&!!e.formatFallbackMessages,this._silentTranslationWarn=void 0!==e.silentTranslationWarn&&e.silentTranslationWarn,this._silentFallbackWarn=void 0!==e.silentFallbackWarn&&!!e.silentFallbackWarn,this._dateTimeFormatters={},this._numberFormatters={},this._path=new Pt,this._dataListeners=[],this._componentInstanceCreatedListener=e.componentInstanceCreatedListener||null,this._preserveDirectiveContent=void 0!==e.preserveDirectiveContent&&!!e.preserveDirectiveContent,this.pluralizationRules=e.pluralizationRules||{},this._warnHtmlInMessage=e.warnHtmlInMessage||"off",this._postTranslation=e.postTranslation||null,this.getChoiceIndex=function(e,n){var r=Object.getPrototypeOf(t);if(r&&r.getChoiceIndex)return r.getChoiceIndex.call(t,e,n);var i,a;return t.locale in t.pluralizationRules?t.pluralizationRules[t.locale].apply(t,[e,n]):(i=e,a=n,i=Math.abs(i),2===a?i?i>1?1:0:1:i?Math.min(i,2):0)},this._exist=function(e,n){return!(!e||!n)&&(!nt(t._path.getPathValue(e,n))||!!e[n])},"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||Object.keys(i).forEach((function(e){t._checkLocaleMessage(e,t._warnHtmlInMessage,i[e])})),this._initVM({locale:n,fallbackLocale:r,messages:i,dateTimeFormats:a,numberFormats:o})},Bt={vm:{configurable:!0},messages:{configurable:!0},dateTimeFormats:{configurable:!0},numberFormats:{configurable:!0},availableLocales:{configurable:!0},locale:{configurable:!0},fallbackLocale:{configurable:!0},formatFallbackMessages:{configurable:!0},missing:{configurable:!0},formatter:{configurable:!0},silentTranslationWarn:{configurable:!0},silentFallbackWarn:{configurable:!0},preserveDirectiveContent:{configurable:!0},warnHtmlInMessage:{configurable:!0},postTranslation:{configurable:!0}};Ft.prototype._checkLocaleMessage=function(e,t,n){var r=function(e,t,n,i){if(tt(n))Object.keys(n).forEach((function(a){var o=n[a];tt(o)?(i.push(a),i.push("."),r(e,t,o,i),i.pop(),i.pop()):(i.push(a),r(e,t,o,i),i.pop())}));else if(Ze(n))n.forEach((function(n,a){tt(n)?(i.push("["+a+"]"),i.push("."),r(e,t,n,i),i.pop(),i.pop()):(i.push("["+a+"]"),r(e,t,n,i),i.pop())}));else if(Qe(n)){if(Mt.test(n)){var a="Detected HTML in message '"+n+"' of keypath '"+i.join("")+"' at '"+t+"'. Consider component interpolation with '<i18n>' to avoid XSS. See https://bit.ly/2ZqJzkp";"warn"===e?Je(a):"error"===e&&function(e,t){"undefined"!=typeof console&&(console.error("[vue-i18n] "+e),t&&console.error(t.stack))}(a)}}};r(t,e,n,[])},Ft.prototype._initVM=function(e){var t=mt.config.silent;mt.config.silent=!0,this._vm=new mt({data:e}),mt.config.silent=t},Ft.prototype.destroyVM=function(){this._vm.$destroy()},Ft.prototype.subscribeDataChanging=function(e){this._dataListeners.push(e)},Ft.prototype.unsubscribeDataChanging=function(e){!function(e,t){if(e.length){var n=e.indexOf(t);if(n>-1)e.splice(n,1)}}(this._dataListeners,e)},Ft.prototype.watchI18nData=function(){var e=this;return this._vm.$watch("$data",(function(){for(var t=e._dataListeners.length;t--;)mt.nextTick((function(){e._dataListeners[t]&&e._dataListeners[t].$forceUpdate()}))}),{deep:!0})},Ft.prototype.watchLocale=function(){if(!this._sync||!this._root)return null;var e=this._vm;return this._root.$i18n.vm.$watch("locale",(function(t){e.$set(e,"locale",t),e.$forceUpdate()}),{immediate:!0})},Ft.prototype.onComponentInstanceCreated=function(e){this._componentInstanceCreatedListener&&this._componentInstanceCreatedListener(e,this)},Bt.vm.get=function(){return this._vm},Bt.messages.get=function(){return at(this._getMessages())},Bt.dateTimeFormats.get=function(){return at(this._getDateTimeFormats())},Bt.numberFormats.get=function(){return at(this._getNumberFormats())},Bt.availableLocales.get=function(){return Object.keys(this.messages).sort()},Bt.locale.get=function(){return this._vm.locale},Bt.locale.set=function(e){this._vm.$set(this._vm,"locale",e)},Bt.fallbackLocale.get=function(){return this._vm.fallbackLocale},Bt.fallbackLocale.set=function(e){this._localeChainCache={},this._vm.$set(this._vm,"fallbackLocale",e)},Bt.formatFallbackMessages.get=function(){return this._formatFallbackMessages},Bt.formatFallbackMessages.set=function(e){this._formatFallbackMessages=e},Bt.missing.get=function(){return this._missing},Bt.missing.set=function(e){this._missing=e},Bt.formatter.get=function(){return this._formatter},Bt.formatter.set=function(e){this._formatter=e},Bt.silentTranslationWarn.get=function(){return this._silentTranslationWarn},Bt.silentTranslationWarn.set=function(e){this._silentTranslationWarn=e},Bt.silentFallbackWarn.get=function(){return this._silentFallbackWarn},Bt.silentFallbackWarn.set=function(e){this._silentFallbackWarn=e},Bt.preserveDirectiveContent.get=function(){return this._preserveDirectiveContent},Bt.preserveDirectiveContent.set=function(e){this._preserveDirectiveContent=e},Bt.warnHtmlInMessage.get=function(){return this._warnHtmlInMessage},Bt.warnHtmlInMessage.set=function(e){var t=this,n=this._warnHtmlInMessage;if(this._warnHtmlInMessage=e,n!==e&&("warn"===e||"error"===e)){var r=this._getMessages();Object.keys(r).forEach((function(e){t._checkLocaleMessage(e,t._warnHtmlInMessage,r[e])}))}},Bt.postTranslation.get=function(){return this._postTranslation},Bt.postTranslation.set=function(e){this._postTranslation=e},Ft.prototype._getMessages=function(){return this._vm.messages},Ft.prototype._getDateTimeFormats=function(){return this._vm.dateTimeFormats},Ft.prototype._getNumberFormats=function(){return this._vm.numberFormats},Ft.prototype._warnDefault=function(e,t,n,r,i,a){if(!nt(n))return n;if(this._missing){var o=this._missing.apply(null,[e,t,r,i]);if(Qe(o))return o}else 0;if(this._formatFallbackMessages){var s=it.apply(void 0,i);return this._render(t,a,s.params,t)}return t},Ft.prototype._isFallbackRoot=function(e){return!e&&!nt(this._root)&&this._fallbackRoot},Ft.prototype._isSilentFallbackWarn=function(e){return this._silentFallbackWarn instanceof RegExp?this._silentFallbackWarn.test(e):this._silentFallbackWarn},Ft.prototype._isSilentFallback=function(e,t){return this._isSilentFallbackWarn(t)&&(this._isFallbackRoot()||e!==this.fallbackLocale)},Ft.prototype._isSilentTranslationWarn=function(e){return this._silentTranslationWarn instanceof RegExp?this._silentTranslationWarn.test(e):this._silentTranslationWarn},Ft.prototype._interpolate=function(e,t,n,r,i,a,o){if(!t)return null;var s,l=this._path.getPathValue(t,n);if(Ze(l)||tt(l))return l;if(nt(l)){if(!tt(t))return null;if(!Qe(s=t[n])&&!rt(s))return null}else{if(!Qe(l)&&!rt(l))return null;s=l}return Qe(s)&&(s.indexOf("@:")>=0||s.indexOf("@.")>=0)&&(s=this._link(e,t,s,r,"raw",a,o)),this._render(s,i,a,n)},Ft.prototype._link=function(e,t,n,r,i,a,o){var s=n,l=s.match(Lt);for(var c in l)if(l.hasOwnProperty(c)){var u=l[c],f=u.match(Rt),p=f[0],d=f[1],h=u.replace(p,"").replace(jt,"");if(ot(o,h))return s;o.push(h);var v=this._interpolate(e,t,h,r,"raw"===i?"string":i,"raw"===i?void 0:a,o);if(this._isFallbackRoot(v)){if(!this._root)throw Error("unexpected error");var m=this._root.$i18n;v=m._translate(m._getMessages(),m.locale,m.fallbackLocale,h,r,i,a)}v=this._warnDefault(e,h,v,r,Ze(a)?a:[a],i),this._modifiers.hasOwnProperty(d)?v=this._modifiers[d](v):$t.hasOwnProperty(d)&&(v=$t[d](v)),o.pop(),s=v?s.replace(u,v):s}return s},Ft.prototype._createMessageContext=function(e){var t=Ze(e)?e:[],n=Xe(e)?e:{};return{list:function(e){return t[e]},named:function(e){return n[e]}}},Ft.prototype._render=function(e,t,n,r){if(rt(e))return e(this._createMessageContext(n));var i=this._formatter.interpolate(e,n,r);return i||(i=Dt.interpolate(e,n,r)),"string"!==t||Qe(i)?i:i.join("")},Ft.prototype._appendItemToChain=function(e,t,n){var r=!1;return ot(e,t)||(r=!0,t&&(r="!"!==t[t.length-1],t=t.replace(/!/g,""),e.push(t),n&&n[t]&&(r=n[t]))),r},Ft.prototype._appendLocaleToChain=function(e,t,n){var r,i=t.split("-");do{var a=i.join("-");r=this._appendItemToChain(e,a,n),i.splice(-1,1)}while(i.length&&!0===r);return r},Ft.prototype._appendBlockToChain=function(e,t,n){for(var r=!0,i=0;i<t.length&&"boolean"==typeof r;i++){var a=t[i];Qe(a)&&(r=this._appendLocaleToChain(e,a,n))}return r},Ft.prototype._getLocaleChain=function(e,t){if(""===e)return[];this._localeChainCache||(this._localeChainCache={});var n=this._localeChainCache[e];if(!n){t||(t=this.fallbackLocale),n=[];for(var r,i=[e];Ze(i);)i=this._appendBlockToChain(n,i,t);(i=Qe(r=Ze(t)?t:Xe(t)?t.default?t.default:null:t)?[r]:r)&&this._appendBlockToChain(n,i,null),this._localeChainCache[e]=n}return n},Ft.prototype._translate=function(e,t,n,r,i,a,o){for(var s,l=this._getLocaleChain(t,n),c=0;c<l.length;c++){var u=l[c];if(!nt(s=this._interpolate(u,e[u],r,i,a,o,[r])))return s}return null},Ft.prototype._t=function(e,t,n,r){for(var i,a=[],o=arguments.length-4;o-- >0;)a[o]=arguments[o+4];if(!e)return"";var s=it.apply(void 0,a),l=s.locale||t,c=this._translate(n,l,this.fallbackLocale,e,r,"string",s.params);if(this._isFallbackRoot(c)){if(!this._root)throw Error("unexpected error");return(i=this._root).$t.apply(i,[e].concat(a))}return c=this._warnDefault(l,e,c,r,a,"string"),this._postTranslation&&null!=c&&(c=this._postTranslation(c,e)),c},Ft.prototype.t=function(e){for(var t,n=[],r=arguments.length-1;r-- >0;)n[r]=arguments[r+1];return(t=this)._t.apply(t,[e,this.locale,this._getMessages(),null].concat(n))},Ft.prototype._i=function(e,t,n,r,i){var a=this._translate(n,t,this.fallbackLocale,e,r,"raw",i);if(this._isFallbackRoot(a)){if(!this._root)throw Error("unexpected error");return this._root.$i18n.i(e,t,i)}return this._warnDefault(t,e,a,r,[i],"raw")},Ft.prototype.i=function(e,t,n){return e?(Qe(t)||(t=this.locale),this._i(e,t,this._getMessages(),null,n)):""},Ft.prototype._tc=function(e,t,n,r,i){for(var a,o=[],s=arguments.length-5;s-- >0;)o[s]=arguments[s+5];if(!e)return"";void 0===i&&(i=1);var l={count:i,n:i},c=it.apply(void 0,o);return c.params=Object.assign(l,c.params),o=null===c.locale?[c.params]:[c.locale,c.params],this.fetchChoice((a=this)._t.apply(a,[e,t,n,r].concat(o)),i)},Ft.prototype.fetchChoice=function(e,t){if(!e&&!Qe(e))return null;var n=e.split("|");return n[t=this.getChoiceIndex(t,n.length)]?n[t].trim():e},Ft.prototype.tc=function(e,t){for(var n,r=[],i=arguments.length-2;i-- >0;)r[i]=arguments[i+2];return(n=this)._tc.apply(n,[e,this.locale,this._getMessages(),null,t].concat(r))},Ft.prototype._te=function(e,t,n){for(var r=[],i=arguments.length-3;i-- >0;)r[i]=arguments[i+3];var a=it.apply(void 0,r).locale||t;return this._exist(n[a],e)},Ft.prototype.te=function(e,t){return this._te(e,this.locale,this._getMessages(),t)},Ft.prototype.getLocaleMessage=function(e){return at(this._vm.messages[e]||{})},Ft.prototype.setLocaleMessage=function(e,t){"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||this._checkLocaleMessage(e,this._warnHtmlInMessage,t),this._vm.$set(this._vm.messages,e,t)},Ft.prototype.mergeLocaleMessage=function(e,t){"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||this._checkLocaleMessage(e,this._warnHtmlInMessage,t),this._vm.$set(this._vm.messages,e,ct({},this._vm.messages[e]||{},t))},Ft.prototype.getDateTimeFormat=function(e){return at(this._vm.dateTimeFormats[e]||{})},Ft.prototype.setDateTimeFormat=function(e,t){this._vm.$set(this._vm.dateTimeFormats,e,t),this._clearDateTimeFormat(e,t)},Ft.prototype.mergeDateTimeFormat=function(e,t){this._vm.$set(this._vm.dateTimeFormats,e,ct(this._vm.dateTimeFormats[e]||{},t)),this._clearDateTimeFormat(e,t)},Ft.prototype._clearDateTimeFormat=function(e,t){for(var n in t){var r=e+"__"+n;this._dateTimeFormatters.hasOwnProperty(r)&&delete this._dateTimeFormatters[r]}},Ft.prototype._localizeDateTime=function(e,t,n,r,i){for(var a=t,o=r[a],s=this._getLocaleChain(t,n),l=0;l<s.length;l++){var c=s[l];if(a=c,!nt(o=r[c])&&!nt(o[i]))break}if(nt(o)||nt(o[i]))return null;var u=o[i],f=a+"__"+i,p=this._dateTimeFormatters[f];return p||(p=this._dateTimeFormatters[f]=new Intl.DateTimeFormat(a,u)),p.format(e)},Ft.prototype._d=function(e,t,n){if(!n)return new Intl.DateTimeFormat(t).format(e);var r=this._localizeDateTime(e,t,this.fallbackLocale,this._getDateTimeFormats(),n);if(this._isFallbackRoot(r)){if(!this._root)throw Error("unexpected error");return this._root.$i18n.d(e,n,t)}return r||""},Ft.prototype.d=function(e){for(var t=[],n=arguments.length-1;n-- >0;)t[n]=arguments[n+1];var r=this.locale,i=null;return 1===t.length?Qe(t[0])?i=t[0]:Xe(t[0])&&(t[0].locale&&(r=t[0].locale),t[0].key&&(i=t[0].key)):2===t.length&&(Qe(t[0])&&(i=t[0]),Qe(t[1])&&(r=t[1])),this._d(e,r,i)},Ft.prototype.getNumberFormat=function(e){return at(this._vm.numberFormats[e]||{})},Ft.prototype.setNumberFormat=function(e,t){this._vm.$set(this._vm.numberFormats,e,t),this._clearNumberFormat(e,t)},Ft.prototype.mergeNumberFormat=function(e,t){this._vm.$set(this._vm.numberFormats,e,ct(this._vm.numberFormats[e]||{},t)),this._clearNumberFormat(e,t)},Ft.prototype._clearNumberFormat=function(e,t){for(var n in t){var r=e+"__"+n;this._numberFormatters.hasOwnProperty(r)&&delete this._numberFormatters[r]}},Ft.prototype._getNumberFormatter=function(e,t,n,r,i,a){for(var o=t,s=r[o],l=this._getLocaleChain(t,n),c=0;c<l.length;c++){var u=l[c];if(o=u,!nt(s=r[u])&&!nt(s[i]))break}if(nt(s)||nt(s[i]))return null;var f,p=s[i];if(a)f=new Intl.NumberFormat(o,Object.assign({},p,a));else{var d=o+"__"+i;(f=this._numberFormatters[d])||(f=this._numberFormatters[d]=new Intl.NumberFormat(o,p))}return f},Ft.prototype._n=function(e,t,n,r){if(!Ft.availabilities.numberFormat)return"";if(!n)return(r?new Intl.NumberFormat(t,r):new Intl.NumberFormat(t)).format(e);var i=this._getNumberFormatter(e,t,this.fallbackLocale,this._getNumberFormats(),n,r),a=i&&i.format(e);if(this._isFallbackRoot(a)){if(!this._root)throw Error("unexpected error");return this._root.$i18n.n(e,Object.assign({},{key:n,locale:t},r))}return a||""},Ft.prototype.n=function(e){for(var t=[],n=arguments.length-1;n-- >0;)t[n]=arguments[n+1];var r=this.locale,i=null,a=null;return 1===t.length?Qe(t[0])?i=t[0]:Xe(t[0])&&(t[0].locale&&(r=t[0].locale),t[0].key&&(i=t[0].key),a=Object.keys(t[0]).reduce((function(e,n){var r;return ot(Ye,n)?Object.assign({},e,((r={})[n]=t[0][n],r)):e}),null)):2===t.length&&(Qe(t[0])&&(i=t[0]),Qe(t[1])&&(r=t[1])),this._n(e,r,i,a)},Ft.prototype._ntp=function(e,t,n,r){if(!Ft.availabilities.numberFormat)return[];if(!n)return(r?new Intl.NumberFormat(t,r):new Intl.NumberFormat(t)).formatToParts(e);var i=this._getNumberFormatter(e,t,this.fallbackLocale,this._getNumberFormats(),n,r),a=i&&i.formatToParts(e);if(this._isFallbackRoot(a)){if(!this._root)throw Error("unexpected error");return this._root.$i18n._ntp(e,t,n,r)}return a||[]},Object.defineProperties(Ft.prototype,Bt),Object.defineProperty(Ft,"availabilities",{get:function(){if(!zt){var e="undefined"!=typeof Intl;zt={dateTimeFormat:e&&void 0!==Intl.DateTimeFormat,numberFormat:e&&void 0!==Intl.NumberFormat}}return zt}}),Ft.install=St,Ft.version="8.21.0";var Ut=Ft,Ht=n("P5l/");n("y1Jd"),n("Y78d");i.a.use(Ut);var Vt=new Ut({locale:config.locale,messages:Object.assign({en:Ht})}),Gt=n("L2JU"),Wt=n("xCqy"),qt=n("LvDl"),Kt=n("vDqi"),Yt=n.n(Kt);function Jt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Zt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Xt={state:{processingPopup:void 0,fileQueue:[],filesInQueueTotal:0,filesInQueueUploaded:0,isProcessingFile:!1,uploadingProgress:0},mutations:{PROCESSING_POPUP:function(e,t){e.processingPopup=t},ADD_FILES_TO_QUEUE:function(e,t){e.fileQueue.push(t)},SHIFT_FROM_FILE_QUEUE:function(e){e.fileQueue.shift()},PROCESSING_FILE:function(e,t){e.isProcessingFile=t},UPLOADING_FILE_PROGRESS:function(e,t){e.uploadingProgress=t},INCREASE_FILES_IN_QUEUES_TOTAL:function(e,t){e.filesInQueueTotal+=t},INCREASE_FILES_IN_QUEUE_UPLOADED:function(e){e.filesInQueueUploaded++},CLEAR_UPLOAD_PROGRESS:function(e){e.filesInQueueUploaded=0,e.filesInQueueTotal=0,e.fileQueue=[]}},actions:{downloadFolder:function(e,t){var n=e.commit,r=e.getters;n("PROCESSING_POPUP",{title:Vt.t("popup_zipping.title"),message:Vt.t("popup_zipping.message")});var a=r.sharedDetail?"/api/zip/folder/".concat(t.id,"/").concat(Sn.currentRoute.params.token):"/api/zip/folder/".concat(t.id);Yt.a.get(a).then((function(e){i.a.prototype.$downloadFile(e.data.url,e.data.name)})).catch((function(){i.a.prototype.$isSomethingWrong()})).finally((function(){n("PROCESSING_POPUP",void 0)}))},downloadFiles:function(e){var t=e.commit,n=e.getters,r=[];n.fileInfoDetail.forEach((function(e){return r.push(e.id)}));var a=n.sharedDetail?"/api/zip/files/".concat(Sn.currentRoute.params.token):"/api/zip/files";t("PROCESSING_POPUP",{title:Vt.t("popup_zipping.title"),message:Vt.t("popup_zipping.message")}),Yt.a.post(a,{items:r}).then((function(e){i.a.prototype.$downloadFile(e.data.url,e.data.name)})).catch((function(){i.a.prototype.$isSomethingWrong()})).finally((function(){t("PROCESSING_POPUP",void 0)}))},moveItem:function(e,t){var n=e.commit,r=e.getters,a=e.dispatch,o=t.to_item,s=t.noSelectedItem,l=[],c=[s];s||(c=r.fileInfoDetail),c.forEach((function(e){return l.push({id:e.id,type:e.type})})),s||n("CLEAR_FILEINFO_DETAIL");var u=r.sharedDetail?"/api/editor/move/".concat(Sn.currentRoute.params.token):"/api/move";console.log(o),Yt.a.post(u,{to_id:o.id?o.id:null,items:l}).then((function(){l.forEach((function(e){n("REMOVE_ITEM",e.id),n("INCREASE_FOLDER_ITEM",o.id),"folder"===e.type&&a("getAppData"),"public"===r.currentFolder.location&&a("getFolderTree")}))})).catch((function(){return i.a.prototype.$isSomethingWrong()}))},createFolder:function(e,t){var n=e.commit,r=e.getters,a=e.dispatch,o=r.sharedDetail?"/api/editor/create-folder/".concat(Sn.currentRoute.params.token):"/api/create-folder";Yt.a.post(o,{parent_id:r.currentFolder.id,name:t.name,icon:t.icon}).then((function(e){n("ADD_NEW_FOLDER",e.data),Wt.a.$emit("scrollTop"),setTimeout((function(){Wt.a.$emit("newFolder:focus",e.data.id)}),10),"public"!==r.currentFolder.location&&a("getAppData"),"public"===r.currentFolder.location&&a("getFolderTree")})).catch((function(){return i.a.prototype.$isSomethingWrong()}))},renameItem:function(e,t){var n=e.commit,r=e.getters,a=e.dispatch;"master"===r.permission&&"folder"===t.type&&n("UPDATE_NAME_IN_FAVOURITES",t);var o=r.sharedDetail?"/api/editor/rename/".concat(t.id,"/").concat(Sn.currentRoute.params.token):"/api/rename/".concat(t.id);Yt.a.post(o,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Jt(Object(n),!0).forEach((function(t){Zt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Jt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},t,{_method:"patch"})).then((function(e){n("CHANGE_ITEM_NAME",e.data),"folder"===t.type&&"public"!==r.currentFolder.location&&a("getAppData"),"folder"===t.type&&"public"===r.currentFolder.location&&a("getFolderTree")})).catch((function(){return i.a.prototype.$isSomethingWrong()}))},uploadFiles:function(e,t){var n=e.commit,r=e.getters,a=t.form,o=t.fileSize,s=t.totalUploadedSize;return new Promise((function(e,t){var l=r.sharedDetail?"/api/editor/upload/".concat(Sn.currentRoute.params.token):"/api/upload",c=Yt.a.CancelToken.source();Yt.a.post(l,a,{cancelToken:c.token,headers:{"Content-Type":"application/octet-stream"},onUploadProgress:function(e){var t=Math.floor((s+e.loaded)/o*100);n("UPLOADING_FILE_PROGRESS",t>=100?100:t),t>=100&&n("PROCESSING_FILE",!0)}}).then((function(t){e(t),n("PROCESSING_FILE",!1),n("SHIFT_FROM_FILE_QUEUE"),t.data.folder_id==r.currentFolder.id&&(n("ADD_NEW_ITEMS",t.data),n("UPLOADING_FILE_PROGRESS",0),n("INCREASE_FILES_IN_QUEUE_UPLOADED")),r.fileQueue.length&&i.a.prototype.$handleUploading(r.fileQueue[0]),r.fileQueue.length||n("CLEAR_UPLOAD_PROGRESS")})).catch((function(e){t(e);var r={423:{title:Vt.t("popup_exceed_limit.title"),message:Vt.t("popup_exceed_limit.message")},415:{title:Vt.t("popup_mimetypes_blacklist.title"),message:Vt.t("popup_mimetypes_blacklist.message")},413:{title:Vt.t("popup_paylod_error.title"),message:Vt.t("popup_paylod_error.message")}};Wt.a.$emit("alert:open",{emoji:"😬😬😬",title:r[e.response.status].title,message:r[e.response.status].message}),n("PROCESSING_FILE",!1),n("CLEAR_UPLOAD_PROGRESS")})),Wt.a.$on("cancel-upload",(function(){c.cancel(),n("PROCESSING_FILE",!1),n("CLEAR_UPLOAD_PROGRESS")}))}))},restoreItem:function(e,t){var n=e.commit,r=e.getters,a=[],o=[t],s=!1;t||(o=r.fileInfoDetail),"trash"===r.currentFolder.location&&(s=!0),o.forEach((function(e){return a.push({type:e.type,id:e.id})})),n("CLEAR_FILEINFO_DETAIL"),Yt.a.post(r.api+"/trash/restore",{to_home:s,items:a}).then(o.forEach((function(e){return n("REMOVE_ITEM",e.id)}))).catch((function(){return i.a.prototype.$isSomethingWrong()}))},deleteItem:function(e,t){var n=e.commit,r=e.getters,a=e.dispatch,o=[],s=[t];t||(s=r.fileInfoDetail),s.forEach((function(e){o.push({force_delete:!!e.deleted_at,type:e.type,id:e.id}),n("REMOVE_ITEM",e.id),"master"===r.permission&&"folder"===e.type&&n("REMOVE_ITEM_FROM_FAVOURITES",e),n("REMOVE_ITEM",e.id),"master"===r.permission&&"folder"===e.type&&n("REMOVE_ITEM_FROM_FAVOURITES",e)})),t||n("CLEAR_FILEINFO_DETAIL");var l=r.sharedDetail?"/api/editor/remove/".concat(Sn.currentRoute.params.token):"/api/remove";Yt.a.post(l,{items:o}).then((function(){o.forEach((function(e){"folder"===e.type&&e.id===r.currentFolder.id&&("public"===r.currentFolder.location?a("browseShared",[{folder:Object(qt.last)(r.browseHistory),back:!0,init:!1}]):a("getFolder",[{folder:Object(qt.last)(r.browseHistory),back:!0,init:!1}]))})),"public"!==r.currentFolder.location&&a("getAppData"),"public"===r.currentFolder.location&&a("getFolderTree")})).catch((function(){return i.a.prototype.$isSomethingWrong()}))},emptyTrash:function(e){var t=e.commit,n=e.getters;t("LOADING_STATE",{loading:!0,data:[]}),Yt.a.post(n.api+"/trash/dump",{_method:"delete"}).then((function(){t("LOADING_STATE",{loading:!1,data:[]}),Wt.a.$emit("scrollTop"),t("CLEAR_FILEINFO_DETAIL")})).catch((function(){return i.a.prototype.$isSomethingWrong()}))}},getters:{filesInQueueUploaded:function(e){return e.filesInQueueUploaded},filesInQueueTotal:function(e){return e.filesInQueueTotal},uploadingProgress:function(e){return e.uploadingProgress},isProcessingFile:function(e){return e.isProcessingFile},processingPopup:function(e){return e.processingPopup},fileQueue:function(e){return e.fileQueue}}};function Qt(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var n=[],r=!0,i=!1,a=void 0;try{for(var o,s=e[Symbol.iterator]();!(r=(o=s.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){i=!0,a=e}finally{try{r||null==s.return||s.return()}finally{if(i)throw a}}return n}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return en(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return en(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function en(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var tn={state:{fileInfoDetail:[],currentFolder:void 0,navigation:void 0,isSearching:!1,browseHistory:[],isLoading:!0,data:[]},getters:{fileInfoDetail:function(e){return e.fileInfoDetail},currentFolder:function(e){return e.currentFolder},browseHistory:function(e){return e.browseHistory},isSearching:function(e){return e.isSearching},navigation:function(e){return e.navigation},isLoading:function(e){return e.isLoading},data:function(e){return e.data}},actions:{getFolder:function(e,t){var n=e.commit,r=e.getters,i=Qt(t,1)[0];n("LOADING_STATE",{loading:!0,data:[]}),i.init&&n("FLUSH_FOLDER_HISTORY"),r.isSearching&&(n("CHANGE_SEARCHING_STATE",!1),Wt.a.$emit("clear-query")),i.folder.location=i.folder.deleted_at||"trash"===i.folder.location?"trash":"base",i.back||i.sorting||n("STORE_PREVIOUS_FOLDER",r.currentFolder);var a="trash"===i.folder.location?"/browse/folders/"+i.folder.id+r.sorting.URI+"&trash=true":"/browse/folders/"+i.folder.id+r.sorting.URI;Yt.a.get(r.api+a).then((function(e){n("LOADING_STATE",{loading:!1,data:e.data}),n("STORE_CURRENT_FOLDER",i.folder),i.back&&!i.sorting&&n("REMOVE_BROWSER_HISTORY"),Wt.a.$emit("scrollTop")})).catch((function(e){[401,403].includes(e.response.status)?(n("SET_AUTHORIZED",!1),Sn.push({name:"SignIn"})):Wt.a.$emit("alert:open",{title:Vt.t("popup_error.title"),message:Vt.t("popup_error.message")})}))},getLatest:function(e){var t=e.commit,n=e.getters;t("LOADING_STATE",{loading:!0,data:[]}),t("STORE_PREVIOUS_FOLDER",n.currentFolder),t("STORE_CURRENT_FOLDER",{name:Vt.t("sidebar.latest"),id:void 0,location:"latest"}),Yt.a.get(n.api+"/browse/latest").then((function(e){t("LOADING_STATE",{loading:!1,data:e.data}),Wt.a.$emit("scrollTop")})).catch((function(){return i.a.prototype.$isSomethingWrong()}))},getShared:function(e){var t=e.commit,n=e.getters;t("LOADING_STATE",{loading:!0,data:[]}),t("FLUSH_FOLDER_HISTORY");var r={name:Vt.t("sidebar.my_shared"),location:"shared",id:void 0};t("STORE_CURRENT_FOLDER",r),Yt.a.get(n.api+"/browse/share"+n.sorting.URI).then((function(e){t("LOADING_STATE",{loading:!1,data:e.data}),t("STORE_PREVIOUS_FOLDER",r),Wt.a.$emit("scrollTop")})).catch((function(){return i.a.prototype.$isSomethingWrong()}))},getParticipantUploads:function(e){var t=e.commit,n=e.getters;t("LOADING_STATE",{loading:!0,data:[]}),t("STORE_PREVIOUS_FOLDER",n.currentFolder),t("STORE_CURRENT_FOLDER",{name:Vt.t("sidebar.participant_uploads"),id:void 0,location:"participant_uploads"}),Yt.a.get(n.api+"/browse/participants"+n.sorting.URI).then((function(e){t("LOADING_STATE",{loading:!1,data:e.data}),Wt.a.$emit("scrollTop")})).catch((function(){return i.a.prototype.$isSomethingWrong()}))},getTrash:function(e){var t=e.commit,n=e.getters;t("LOADING_STATE",{loading:!0,data:[]}),t("FLUSH_FOLDER_HISTORY");var r={name:Vt.t("locations.trash"),id:void 0,location:"trash-root"};t("STORE_CURRENT_FOLDER",r),Yt.a.get(n.api+"/browse/trash"+n.sorting.URI).then((function(e){t("LOADING_STATE",{loading:!1,data:e.data}),t("STORE_PREVIOUS_FOLDER",r),Wt.a.$emit("scrollTop")})).catch((function(){return i.a.prototype.$isSomethingWrong()}))},getSearchResult:function(e,t){var n=e.commit,r=e.getters;n("LOADING_STATE",{loading:!0,data:[]}),n("CHANGE_SEARCHING_STATE",!0);var a=void 0;if(r.sharedDetail){var o=r.sharedDetail.is_protected?"private":"public";a="/api/browse/search/".concat(o,"/").concat(Sn.currentRoute.params.token)}else a="/api/browse/search";Yt.a.get(a,{params:{query:t}}).then((function(e){n("LOADING_STATE",{loading:!1,data:e.data})})).catch((function(){return i.a.prototype.$isSomethingWrong()}))},getFolderTree:function(e){var t=e.commit,n=e.getters;return new Promise((function(e,r){var a=void 0;a=n.sharedDetail?"/api/browse/navigation/".concat(Sn.currentRoute.params.token):"/api/browse/navigation",Yt.a.get(a+n.sorting.URI).then((function(n){e(n),t("UPDATE_FOLDER_TREE",n.data)})).catch((function(e){r(e),i.a.prototype.$isSomethingWrong()}))}))}},mutations:{UPDATE_FOLDER_TREE:function(e,t){e.navigation=t},LOADING_STATE:function(e,t){e.fileInfoDetail=[],e.data=t.data,e.isLoading=t.loading},FLUSH_FOLDER_HISTORY:function(e){e.browseHistory=[]},FLUSH_SHARED:function(e,t){e.data.find((function(e){e.id===t&&(e.shared=void 0)}))},STORE_PREVIOUS_FOLDER:function(e,t){e.browseHistory.push(t)},REMOVE_BROWSER_HISTORY:function(e){e.browseHistory.pop()},CHANGE_ITEM_NAME:function(e,t){e.fileInfoDetail&&e.fileInfoDetail.id===t.id&&(e.fileInfoDetail=t),e.data.find((function(e){e.id===t.id&&(e.name=t.name,e.color=t.color?t.color:null,e.emoji=t.emoji?t.emoji:null)}))},REMOVE_ITEM_FILEINFO_DETAIL:function(e,t){e.fileInfoDetail=e.fileInfoDetail.filter((function(e){return e.id!==t.id}))},CLEAR_FILEINFO_DETAIL:function(e){e.fileInfoDetail=[]},LOAD_FILEINFO_DETAIL:function(e,t){e.fileInfoDetail=[],e.fileInfoDetail.push(t)},GET_FILEINFO_DETAIL:function(e,t){var n=e.data.find((function(e){return e.id===t.id}));e.fileInfoDetail.includes(n)||e.fileInfoDetail.push(n||e.currentFolder)},SELECT_ALL_FILES:function(e){e.fileInfoDetail=e.data},CHANGE_SEARCHING_STATE:function(e,t){e.isSearching=t},UPDATE_SHARED_ITEM:function(e,t){e.data.find((function(e){e.id===t.item_id&&(e.shared=t)}))},ADD_NEW_FOLDER:function(e,t){e.data.unshift(t)},ADD_NEW_ITEMS:function(e,t){e.data=e.data.concat(t)},REMOVE_ITEM:function(e,t){e.data=e.data.filter((function(e){return e.id!==t}))},INCREASE_FOLDER_ITEM:function(e,t){e.data.map((function(e){e.id&&e.id===t&&e.items++}))},STORE_CURRENT_FOLDER:function(e,t){e.currentFolder=t}}},nn={state:{permission:"master",user:void 0},getters:{permission:function(e){return e.permission},user:function(e){return e.user}},actions:{getAppData:function(e){var t=e.commit,n=e.getters;return new Promise((function(e,r){Yt.a.get(n.api+"/user"+n.sorting.URI).then((function(n){e(n),"user"!==n.data.data.attributes.role||n.data.data.relationships.settings.data.attributes.payment_activation||Sn.push({name:"SetUpPlan"}),t("RETRIEVE_USER",n.data)})).catch((function(e){r(e),[401,403].includes(e.response.status)&&t("SET_AUTHORIZED",!1)}))}))},logOut:function(e){var t=e.commit,n=setTimeout((function(){t("PROCESSING_POPUP",{title:"Logging Out",message:"Wait a second..."})}),300);Yt.a.post("/logout").then((function(){clearTimeout(n),t("DESTROY_DATA"),Sn.push({name:"SignIn"})}))},addToFavourites:function(e,t){var n=[],r=[t];t||(r=e.getters.fileInfoDetail),r.forEach((function(t){if("folder"===t.type){if(e.getters.user.data.relationships.favourites.data.attributes.folders.find((function(e){return e.id===t.id})))return;n.push({id:t.id})}})),t||e.commit("CLEAR_FILEINFO_DETAIL");var a=[];r.map((function(t){e.getters.user.data.relationships.favourites.data.attributes.folders.find((function(e){return e.id===t.id}))||a.push(t)})),e.commit("ADD_TO_FAVOURITES",a),Yt.a.post(e.getters.api+"/folders/favourites",{folders:n}).catch((function(){i.a.prototype.$isSomethingWrong()}))},removeFromFavourites:function(e,t){var n=e.commit,r=e.getters;e.dispatch;n("REMOVE_ITEM_FROM_FAVOURITES",t),Yt.a.post(r.api+"/folders/favourites/"+t.id,{_method:"delete"}).catch((function(){i.a.prototype.$isSomethingWrong()}))}},mutations:{RETRIEVE_USER:function(e,t){e.user=t},SET_PERMISSION:function(e,t){e.permission=t},DESTROY_DATA:function(e){e.app=void 0},ADD_TO_FAVOURITES:function(e,t){t.forEach((function(t){e.user.data.relationships.favourites.data.attributes.folders.push({id:t.id,name:t.name,type:t.type})}))},UPDATE_NAME:function(e,t){e.user.data.relationships.settings.data.attributes.name=t},UPDATE_AVATAR:function(e,t){e.user.data.relationships.settings.data.attributes.avatar=t},REMOVE_ITEM_FROM_FAVOURITES:function(e,t){e.user.data.relationships.favourites.data.attributes.folders=e.user.data.relationships.favourites.data.attributes.folders.filter((function(e){return e.id!==t.id}))},UPDATE_NAME_IN_FAVOURITES:function(e,t){e.user.data.relationships.favourites.data.attributes.folders.find((function(e){e.id===t.id&&(e.name=t.name)}))}}};function rn(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var n=[],r=!0,i=!1,a=void 0;try{for(var o,s=e[Symbol.iterator]();!(r=(o=s.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){i=!0,a=e}finally{try{r||null==s.return||s.return()}finally{if(i)throw a}}return n}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return an(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return an(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function an(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var on={state:{permissionOptions:[{label:Vt.t("shared.editor"),value:"editor",icon:"user-edit"},{label:Vt.t("shared.visitor"),value:"visitor",icon:"user"}],sharedDetail:void 0,sharedFile:void 0},getters:{permissionOptions:function(e){return e.permissionOptions},sharedDetail:function(e){return e.sharedDetail},sharedFile:function(e){return e.sharedFile}},actions:{browseShared:function(e,t){var n=e.commit,r=e.getters,i=rn(t,1)[0];return n("LOADING_STATE",{loading:!0,data:[]}),i.init&&n("FLUSH_FOLDER_HISTORY"),r.isSearching&&(n("CHANGE_SEARCHING_STATE",!1),Wt.a.$emit("clear-query")),i.back||i.sorting||n("STORE_PREVIOUS_FOLDER",r.currentFolder),i.folder.location="public",new Promise((function(e,t){Yt.a.get("/api/browse/folders/".concat(i.folder.id,"/").concat(Sn.currentRoute.params.token).concat(r.sorting.URI)).then((function(t){n("LOADING_STATE",{loading:!1,data:t.data}),n("STORE_CURRENT_FOLDER",i.folder),Wt.a.$emit("scrollTop"),i.back&&!i.sorting&&n("REMOVE_BROWSER_HISTORY"),e(t)})).catch((function(e){Wt.a.$emit("alert:open",{title:Vt.t("popup_error.title"),message:Vt.t("popup_error.message")}),t(e)}))}))},getSingleFile:function(e){var t=e.commit;Yt.a.get("/api/browse/file/".concat(Sn.currentRoute.params.token)).then((function(e){t("STORE_SHARED_FILE",e.data)}))},getShareDetail:function(e,t){var n=e.commit;e.state;return new Promise((function(e,r){Yt.a.get("/api/browse/share/".concat(t)).then((function(t){e(t),n("SET_SHARED_DETAIL",t.data.data.attributes),n("SET_PERMISSION",t.data.data.attributes.permission)})).catch((function(e){r(e),404==e.response.status&&Sn.push({name:"NotFound"})}))}))},shareCancel:function(e,t){var n=e.commit,r=e.getters;return new Promise((function(e,a){var o=[],s=[t];t||(s=r.fileInfoDetail),s.forEach((function(e){o.push(e.shared.token)})),Yt.a.post("/api/share/revoke",{_method:"delete",tokens:o}).then((function(){s.forEach((function(e){r.currentFolder&&"shared"===r.currentFolder.location&&n("REMOVE_ITEM",e.id),n("FLUSH_SHARED",e.id),n("CLEAR_FILEINFO_DETAIL")})),e(!0)})).catch((function(e){i.a.prototype.$isSomethingWrong(),a(e)}))}))}},mutations:{SET_SHARED_DETAIL:function(e,t){e.sharedDetail=t},STORE_SHARED_FILE:function(e,t){e.sharedFile=t}}},sn={state:{fileInfoPanelVisible:"true"===localStorage.getItem("file_info_visibility")||!1,FilePreviewType:localStorage.getItem("preview_type")||"list",config:void 0,index:void 0,homeDirectory:void 0,requestedPlan:void 0,emojis:void 0,sorting:{sort:localStorage.getItem("sorting")?JSON.parse(localStorage.getItem("sorting")).sort:"DESC",field:localStorage.getItem("sorting")?JSON.parse(localStorage.getItem("sorting")).field:"created_at"},roles:[{label:Vt.t("roles.admin"),value:"admin"},{label:Vt.t("roles.user"),value:"user"}],countries:[{label:"Czech Republic",value:"CZ"},{label:"Slovakia",value:"SK"},{label:"Afghanistan",value:"AF"},{label:"Åland Islands",value:"AX"},{label:"Albania",value:"AL"},{label:"Algeria",value:"DZ"},{label:"American Samoa",value:"AS"},{label:"AndorrA",value:"AD"},{label:"Angola",value:"AO"},{label:"Anguilla",value:"AI"},{label:"Antarctica",value:"AQ"},{label:"Antigua and Barbuda",value:"AG"},{label:"Argentina",value:"AR"},{label:"Armenia",value:"AM"},{label:"Aruba",value:"AW"},{label:"Australia",value:"AU"},{label:"Austria",value:"AT"},{label:"Azerbaijan",value:"AZ"},{label:"Bahamas",value:"BS"},{label:"Bahrain",value:"BH"},{label:"Bangladesh",value:"BD"},{label:"Barbados",value:"BB"},{label:"Belarus",value:"BY"},{label:"Belgium",value:"BE"},{label:"Belize",value:"BZ"},{label:"Benin",value:"BJ"},{label:"Bermuda",value:"BM"},{label:"Bhutan",value:"BT"},{label:"Bolivia",value:"BO"},{label:"Bosnia and Herzegovina",value:"BA"},{label:"Botswana",value:"BW"},{label:"Bouvet Island",value:"BV"},{label:"Brazil",value:"BR"},{label:"British Indian Ocean Territory",value:"IO"},{label:"Brunei Darussalam",value:"BN"},{label:"Bulgaria",value:"BG"},{label:"Burkina Faso",value:"BF"},{label:"Burundi",value:"BI"},{label:"Cambodia",value:"KH"},{label:"Cameroon",value:"CM"},{label:"Canada",value:"CA"},{label:"Cape Verde",value:"CV"},{label:"Cayman Islands",value:"KY"},{label:"Central African Republic",value:"CF"},{label:"Chad",value:"TD"},{label:"Chile",value:"CL"},{label:"China",value:"CN"},{label:"Christmas Island",value:"CX"},{label:"Cocos (Keeling) Islands",value:"CC"},{label:"Colombia",value:"CO"},{label:"Comoros",value:"KM"},{label:"Congo",value:"CG"},{label:"Congo, The Democratic Republic of the",value:"CD"},{label:"Cook Islands",value:"CK"},{label:"Costa Rica",value:"CR"},{label:"Cote D'Ivoire",value:"CI"},{label:"Croatia",value:"HR"},{label:"Cuba",value:"CU"},{label:"Cyprus",value:"CY"},{label:"Denmark",value:"DK"},{label:"Djibouti",value:"DJ"},{label:"Dominica",value:"DM"},{label:"Dominican Republic",value:"DO"},{label:"Ecuador",value:"EC"},{label:"Egypt",value:"EG"},{label:"El Salvador",value:"SV"},{label:"Equatorial Guinea",value:"GQ"},{label:"Eritrea",value:"ER"},{label:"Estonia",value:"EE"},{label:"Ethiopia",value:"ET"},{label:"Falkland Islands (Malvinas)",value:"FK"},{label:"Faroe Islands",value:"FO"},{label:"Fiji",value:"FJ"},{label:"Finland",value:"FI"},{label:"France",value:"FR"},{label:"French Guiana",value:"GF"},{label:"French Polynesia",value:"PF"},{label:"French Southern Territories",value:"TF"},{label:"Gabon",value:"GA"},{label:"Gambia",value:"GM"},{label:"Georgia",value:"GE"},{label:"Germany",value:"DE"},{label:"Ghana",value:"GH"},{label:"Gibraltar",value:"GI"},{label:"Greece",value:"GR"},{label:"Greenland",value:"GL"},{label:"Grenada",value:"GD"},{label:"Guadeloupe",value:"GP"},{label:"Guam",value:"GU"},{label:"Guatemala",value:"GT"},{label:"Guernsey",value:"GG"},{label:"Guinea",value:"GN"},{label:"Guinea-Bissau",value:"GW"},{label:"Guyana",value:"GY"},{label:"Haiti",value:"HT"},{label:"Heard Island and Mcdonald Islands",value:"HM"},{label:"Holy See (Vatican City State)",value:"VA"},{label:"Honduras",value:"HN"},{label:"Hong Kong",value:"HK"},{label:"Hungary",value:"HU"},{label:"Iceland",value:"IS"},{label:"India",value:"IN"},{label:"Indonesia",value:"ID"},{label:"Iran, Islamic Republic Of",value:"IR"},{label:"Iraq",value:"IQ"},{label:"Ireland",value:"IE"},{label:"Isle of Man",value:"IM"},{label:"Israel",value:"IL"},{label:"Italy",value:"IT"},{label:"Jamaica",value:"JM"},{label:"Japan",value:"JP"},{label:"Jersey",value:"JE"},{label:"Jordan",value:"JO"},{label:"Kazakhstan",value:"KZ"},{label:"Kenya",value:"KE"},{label:"Kiribati",value:"KI"},{label:"Korea, Democratic People'S Republic of",value:"KP"},{label:"Korea, Republic of",value:"KR"},{label:"Kuwait",value:"KW"},{label:"Kyrgyzstan",value:"KG"},{label:"Lao People'S Democratic Republic",value:"LA"},{label:"Latvia",value:"LV"},{label:"Lebanon",value:"LB"},{label:"Lesotho",value:"LS"},{label:"Liberia",value:"LR"},{label:"Libyan Arab Jamahiriya",value:"LY"},{label:"Liechtenstein",value:"LI"},{label:"Lithuania",value:"LT"},{label:"Luxembourg",value:"LU"},{label:"Macao",value:"MO"},{label:"Macedonia, The Former Yugoslav Republic of",value:"MK"},{label:"Madagascar",value:"MG"},{label:"Malawi",value:"MW"},{label:"Malaysia",value:"MY"},{label:"Maldives",value:"MV"},{label:"Mali",value:"ML"},{label:"Malta",value:"MT"},{label:"Marshall Islands",value:"MH"},{label:"Martinique",value:"MQ"},{label:"Mauritania",value:"MR"},{label:"Mauritius",value:"MU"},{label:"Mayotte",value:"YT"},{label:"Mexico",value:"MX"},{label:"Micronesia, Federated States of",value:"FM"},{label:"Moldova, Republic of",value:"MD"},{label:"Monaco",value:"MC"},{label:"Mongolia",value:"MN"},{label:"Montserrat",value:"MS"},{label:"Morocco",value:"MA"},{label:"Mozambique",value:"MZ"},{label:"Myanmar",value:"MM"},{label:"Namibia",value:"NA"},{label:"Nauru",value:"NR"},{label:"Nepal",value:"NP"},{label:"Netherlands",value:"NL"},{label:"Netherlands Antilles",value:"AN"},{label:"New Caledonia",value:"NC"},{label:"New Zealand",value:"NZ"},{label:"Nicaragua",value:"NI"},{label:"Niger",value:"NE"},{label:"Nigeria",value:"NG"},{label:"Niue",value:"NU"},{label:"Norfolk Island",value:"NF"},{label:"Northern Mariana Islands",value:"MP"},{label:"Norway",value:"NO"},{label:"Oman",value:"OM"},{label:"Pakistan",value:"PK"},{label:"Palau",value:"PW"},{label:"Palestinian Territory, Occupied",value:"PS"},{label:"Panama",value:"PA"},{label:"Papua New Guinea",value:"PG"},{label:"Paraguay",value:"PY"},{label:"Peru",value:"PE"},{label:"Philippines",value:"PH"},{label:"Pitcairn",value:"PN"},{label:"Poland",value:"PL"},{label:"Portugal",value:"PT"},{label:"Puerto Rico",value:"PR"},{label:"Qatar",value:"QA"},{label:"Reunion",value:"RE"},{label:"Romania",value:"RO"},{label:"Russian Federation",value:"RU"},{label:"RWANDA",value:"RW"},{label:"Saint Helena",value:"SH"},{label:"Saint Kitts and Nevis",value:"KN"},{label:"Saint Lucia",value:"LC"},{label:"Saint Pierre and Miquelon",value:"PM"},{label:"Saint Vincent and the Grenadines",value:"VC"},{label:"Samoa",value:"WS"},{label:"San Marino",value:"SM"},{label:"Sao Tome and Principe",value:"ST"},{label:"Saudi Arabia",value:"SA"},{label:"Senegal",value:"SN"},{label:"Serbia and Montenegro",value:"CS"},{label:"Seychelles",value:"SC"},{label:"Sierra Leone",value:"SL"},{label:"Singapore",value:"SG"},{label:"Slovenia",value:"SI"},{label:"Solomon Islands",value:"SB"},{label:"Somalia",value:"SO"},{label:"South Africa",value:"ZA"},{label:"South Georgia and the South Sandwich Islands",value:"GS"},{label:"Spain",value:"ES"},{label:"Sri Lanka",value:"LK"},{label:"Sudan",value:"SD"},{label:"Suriname",value:"SR"},{label:"Svalbard and Jan Mayen",value:"SJ"},{label:"Swaziland",value:"SZ"},{label:"Sweden",value:"SE"},{label:"Switzerland",value:"CH"},{label:"Syrian Arab Republic",value:"SY"},{label:"Taiwan, Province of China",value:"TW"},{label:"Tajikistan",value:"TJ"},{label:"Tanzania, United Republic of",value:"TZ"},{label:"Thailand",value:"TH"},{label:"Timor-Leste",value:"TL"},{label:"Togo",value:"TG"},{label:"Tokelau",value:"TK"},{label:"Tonga",value:"TO"},{label:"Trinidad and Tobago",value:"TT"},{label:"Tunisia",value:"TN"},{label:"Turkey",value:"TR"},{label:"Turkmenistan",value:"TM"},{label:"Turks and Caicos Islands",value:"TC"},{label:"Tuvalu",value:"TV"},{label:"Uganda",value:"UG"},{label:"Ukraine",value:"UA"},{label:"United Arab Emirates",value:"AE"},{label:"United Kingdom",value:"GB"},{label:"United States",value:"US"},{label:"United States Minor Outlying Islands",value:"UM"},{label:"Uruguay",value:"UY"},{label:"Uzbekistan",value:"UZ"},{label:"Vanuatu",value:"VU"},{label:"Venezuela",value:"VE"},{label:"Viet Nam",value:"VN"},{label:"Virgin Islands, British",value:"VG"},{label:"Virgin Islands, U.S.",value:"VI"},{label:"Wallis and Futuna",value:"WF"},{label:"Western Sahara",value:"EH"},{label:"Yemen",value:"YE"},{label:"Zambia",value:"ZM"},{label:"Zimbabwe",value:"ZW"}],expirationList:[{label:Vt.t("shared_form.expiration_hour",{value:1}),value:1},{label:Vt.t("shared_form.expiration_hour",{value:2}),value:2},{label:Vt.t("shared_form.expiration_hour",{value:6}),value:6},{label:Vt.t("shared_form.expiration_hour",{value:12}),value:12},{label:Vt.t("shared_form.expiration_day",{value:1}),value:24},{label:Vt.t("shared_form.expiration_day",{value:2}),value:48},{label:Vt.t("shared_form.expiration_day",{value:7}),value:168}],currencyList:[{label:"USD - United States Dollar",value:"USD"},{label:"EUR - Euro",value:"EUR"},{label:"GBP - British Pound",value:"GBP"},{label:"AFN - Afghan Afghani",value:"AFN"},{label:"ALL - Albanian Lek",value:"ALL"},{label:"DZD - Algerian Dinar",value:"DZD"},{label:"AOA - Angolan Kwanza",value:"AOA"},{label:"ARS - Argentine Peso",value:"ARS"},{label:"AMD - Armenian Dram",value:"AMD"},{label:"AWG - Aruban Florin",value:"AWG"},{label:"AUD - Australian Dollar",value:"AUD"},{label:"AZN - Azerbaijani Manat",value:"AZN"},{label:"BDT - Bangladeshi Taka",value:"BDT"},{label:"BBD - Barbadian Dollar",value:"BBD"},{label:"BZD - Belize Dollar",value:"BZD"},{label:"BMD - Bermudian Dollar",value:"BMD"},{label:"BOB - Bolivian Boliviano",value:"BOB"},{label:"BAM - Bosnia & Herzegovina Convertible Mark",value:"BAM"},{label:"BWP - Botswana Pula",value:"BWP"},{label:"BRL - Brazilian Real",value:"BRL"},{label:"BND - Brunei Dollar",value:"BND"},{label:"BGN - Bulgarian Lev",value:"BGN"},{label:"BIF - Burundian Franc",value:"BIF"},{label:"KHR - Cambodian Riel",value:"KHR"},{label:"CAD - Canadian Dollar",value:"CAD"},{label:"CVE - Cape Verdean Escudo",value:"CVE"},{label:"KYD - Cayman Islands Dollar",value:"KYD"},{label:"XAF - Central African Cfa Franc",value:"XAF"},{label:"XPF - Cfp Franc",value:"XPF"},{label:"CLP - Chilean Peso",value:"CLP"},{label:"CNY - Chinese Renminbi Yuan",value:"CNY"},{label:"COP - Colombian Peso",value:"COP"},{label:"KMF - Comorian Franc",value:"KMF"},{label:"CDF - Congolese Franc",value:"CDF"},{label:"CRC - Costa Rican Colón",value:"CRC"},{label:"HRK - Croatian Kuna",value:"HRK"},{label:"CZK - Czech Koruna",value:"CZK"},{label:"DKK - Danish Krone",value:"DKK"},{label:"DJF - Djiboutian Franc",value:"DJF"},{label:"DOP - Dominican Peso",value:"DOP"},{label:"XCD - East Caribbean Dollar",value:"XCD"},{label:"EGP - Egyptian Pound",value:"EGP"},{label:"ETB - Ethiopian Birr",value:"ETB"},{label:"FKP - Falkland Islands Pound",value:"FKP"},{label:"FJD - Fijian Dollar",value:"FJD"},{label:"GMD - Gambian Dalasi",value:"GMD"},{label:"GEL - Georgian Lari",value:"GEL"},{label:"GIP - Gibraltar Pound",value:"GIP"},{label:"GTQ - Guatemalan Quetzal",value:"GTQ"},{label:"GNF - Guinean Franc",value:"GNF"},{label:"GYD - Guyanese Dollar",value:"GYD"},{label:"HTG - Haitian Gourde",value:"HTG"},{label:"HNL - Honduran Lempira",value:"HNL"},{label:"HKD - Hong Kong Dollar",value:"HKD"},{label:"HUF - Hungarian Forint",value:"HUF"},{label:"ISK - Icelandic Króna",value:"ISK"},{label:"INR - Indian Rupee",value:"INR"},{label:"IDR - Indonesian Rupiah",value:"IDR"},{label:"ILS - Israeli New Sheqel",value:"ILS"},{label:"JMD - Jamaican Dollar",value:"JMD"},{label:"JPY - Japanese Yen",value:"JPY"},{label:"KZT - Kazakhstani Tenge",value:"KZT"},{label:"KES - Kenyan Shilling",value:"KES"},{label:"KGS - Kyrgyzstani Som",value:"KGS"},{label:"LAK - Lao Kip",value:"LAK"},{label:"LBP - Lebanese Pound",value:"LBP"},{label:"LSL - Lesotho Loti",value:"LSL"},{label:"LRD - Liberian Dollar",value:"LRD"},{label:"MOP - Macanese Pataca",value:"MOP"},{label:"MKD - Macedonian Denar",value:"MKD"},{label:"MGA - Malagasy Ariary",value:"MGA"},{label:"MWK - Malawian Kwacha",value:"MWK"},{label:"MYR - Malaysian Ringgit",value:"MYR"},{label:"MVR - Maldivian Rufiyaa",value:"MVR"},{label:"MRO - Mauritanian Ouguiya",value:"MRO"},{label:"MUR - Mauritian Rupee",value:"MUR"},{label:"MXN - Mexican Peso",value:"MXN"},{label:"MDL - Moldovan Leu",value:"MDL"},{label:"MNT - Mongolian Tögrög",value:"MNT"},{label:"MAD - Moroccan Dirham",value:"MAD"},{label:"MZN - Mozambican Metical",value:"MZN"},{label:"MMK - Myanmar Kyat",value:"MMK"},{label:"NAD - Namibian Dollar",value:"NAD"},{label:"NPR - Nepalese Rupee",value:"NPR"},{label:"ANG - Netherlands Antillean Gulden",value:"ANG"},{label:"TWD - New Taiwan Dollar",value:"TWD"},{label:"NZD - New Zealand Dollar",value:"NZD"},{label:"NIO - Nicaraguan Córdoba",value:"NIO"},{label:"NGN - Nigerian Naira",value:"NGN"},{label:"NOK - Norwegian Krone",value:"NOK"},{label:"PKR - Pakistani Rupee",value:"PKR"},{label:"PAB - Panamanian Balboa",value:"PAB"},{label:"PGK - Papua New Guinean Kina",value:"PGK"},{label:"PYG - Paraguayan Guaraní",value:"PYG"},{label:"PEN - Peruvian Nuevo Sol",value:"PEN"},{label:"PHP - Philippine Peso",value:"PHP"},{label:"PLN - Polish Złoty",value:"PLN"},{label:"QAR - Qatari Riyal",value:"QAR"},{label:"RON - Romanian Leu",value:"RON"},{label:"RUB - Russian Ruble",value:"RUB"},{label:"RWF - Rwandan Franc",value:"RWF"},{label:"STD - São Tomé and Príncipe Dobra",value:"STD"},{label:"SHP - Saint Helenian Pound",value:"SHP"},{label:"SVC - Salvadoran Colón",value:"SVC"},{label:"WST - Samoan Tala",value:"WST"},{label:"SAR - Saudi Riyal",value:"SAR"},{label:"RSD - Serbian Dinar",value:"RSD"},{label:"SCR - Seychellois Rupee",value:"SCR"},{label:"SLL - Sierra Leonean Leone",value:"SLL"},{label:"SGD - Singapore Dollar",value:"SGD"},{label:"SBD - Solomon Islands Dollar",value:"SBD"},{label:"SOS - Somali Shilling",value:"SOS"},{label:"ZAR - South African Rand",value:"ZAR"},{label:"KRW - South Korean Won",value:"KRW"},{label:"LKR - Sri Lankan Rupee",value:"LKR"},{label:"SRD - Surinamese Dollar",value:"SRD"},{label:"SZL - Swazi Lilangeni",value:"SZL"},{label:"SEK - Swedish Krona",value:"SEK"},{label:"CHF - Swiss Franc",value:"CHF"},{label:"TJS - Tajikistani Somoni",value:"TJS"},{label:"TZS - Tanzanian Shilling",value:"TZS"},{label:"THB - Thai Baht",value:"THB"},{label:"TOP - Tongan Paʻanga",value:"TOP"},{label:"TTD - Trinidad and Tobago Dollar",value:"TTD"},{label:"TRY - Turkish Lira",value:"TRY"},{label:"UGX - Ugandan Shilling",value:"UGX"},{label:"UAH - Ukrainian Hryvnia",value:"UAH"},{label:"AED - United Arab Emirates Dirham",value:"AED"},{label:"UYU - Uruguayan Peso",value:"UYU"},{label:"UZS - Uzbekistani Som",value:"UZS"},{label:"VUV - Vanuatu Vatu",value:"VUV"},{label:"VND - Vietnamese Đồng",value:"VND"},{label:"XOF - West African Cfa Franc",value:"XOF"},{label:"YER - Yemeni Rial",value:"YER"},{label:"ZMW - Zambian Kwacha",value:"ZMW"}],timezones:[{value:"-12.0",label:"(GMT -12:00) Eniwetok, Kwajalein"},{value:"-11.0",label:"(GMT -11:00) Midway Island, Samoa"},{value:"-10.0",label:"(GMT -10:00) Hawaii"},{value:"-9.0",label:"(GMT -9:00) Alaska"},{value:"-8.0",label:"(GMT -8:00) Pacific Time (US & Canada)"},{value:"-7.0",label:"(GMT -7:00) Mountain Time (US & Canada)"},{value:"-6.0",label:"(GMT -6:00) Central Time (US & Canada), Mexico City"},{value:"-5.0",label:"(GMT -5:00) Eastern Time (US & Canada), Bogota, Lima"},{value:"-4.0",label:"(GMT -4:00) Atlantic Time (Canada), Caracas, La Paz"},{value:"-3.5",label:"(GMT -3:30) Newfoundland"},{value:"-3.0",label:"(GMT -3:00) Brazil, Buenos Aires, Georgetown"},{value:"-2.0",label:"(GMT -2:00) Mid-Atlantic"},{value:"-1.0",label:"(GMT -1:00) Azores, Cape Verde Islands"},{value:"0.0",label:"(GMT) Western Europe Time, London, Lisbon, Casablanca"},{value:"1.0",label:"(GMT +1:00) Brussels, Copenhagen, Madrid, Paris"},{value:"2.0",label:"(GMT +2:00) Kaliningrad, South Africa"},{value:"3.0",label:"(GMT +3:00) Baghdad, Riyadh, Moscow, St. Petersburg"},{value:"3.5",label:"(GMT +3:30) Tehran"},{value:"4.0",label:"(GMT +4:00) Abu Dhabi, Muscat, Baku, Tbilisi"},{value:"4.5",label:"(GMT +4:30) Kabul"},{value:"5.0",label:"(GMT +5:00) Ekaterinburg, Islamabad, Karachi, Tashkent"},{value:"5.5",label:"(GMT +5:30) Bombay, Calcutta, Madras, New Delhi"},{value:"5.75",label:"(GMT +5:45) Kathmandu"},{value:"6.0",label:"(GMT +6:00) Almaty, Dhaka, Colombo"},{value:"7.0",label:"(GMT +7:00) Bangkok, Hanoi, Jakarta"},{value:"8.0",label:"(GMT +8:00) Beijing, Perth, Singapore, Hong Kong"},{value:"9.0",label:"(GMT +9:00) Tokyo, Seoul, Osaka, Sapporo, Yakutsk"},{value:"9.5",label:"(GMT +9:30) Adelaide, Darwin"},{value:"10.0",label:"(GMT +10:00) Eastern Australia, Guam, Vladivostok"},{value:"11.0",label:"(GMT +11:00) Magadan, Solomon Islands, New Caledonia"},{value:"12.0",label:"(GMT +12:00) Auckland, Wellington, Fiji, Kamchatka"}]},getters:{fileInfoVisible:function(e){return e.fileInfoPanelVisible},FilePreviewType:function(e){return e.FilePreviewType},expirationList:function(e){return e.expirationList},homeDirectory:function(e){return e.homeDirectory},requestedPlan:function(e){return e.requestedPlan},currencyList:function(e){return e.currencyList},countries:function(e){return e.countries},timezones:function(e){return e.timezones},api:function(e){return e.config.api},config:function(e){return e.config},emojis:function(e){return e.emojis},index:function(e){return e.index},roles:function(e){return e.roles},sorting:function(e){return{sorting:e.sorting,URI:"?sort="+e.sorting.field+"&direction="+e.sorting.sort}}},actions:{changePreviewType:function(e,t){var n=e.commit,r=(e.state,t);localStorage.setItem("preview_type",r),n("CHANGE_PREVIEW",r)},fileInfoToggle:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;t?e.commit("FILE_INFO_TOGGLE",t):e.state.fileInfoPanelVisible?e.commit("FILE_INFO_TOGGLE",!1):e.commit("FILE_INFO_TOGGLE",!0)}},mutations:{LOAD_EMOJIS_LIST:function(e,t){e.emojis=t},UPDATE_SORTING:function(e){e.sorting.field=JSON.parse(localStorage.getItem("sorting")).field,e.sorting.sort=JSON.parse(localStorage.getItem("sorting")).sort},INIT:function(e,t){e.config=t.config,e.homeDirectory=t.rootDirectory},SET_SAAS:function(e,t){e.config.isSaaS=t},SET_STRIPE_PUBLIC_KEY:function(e,t){e.config.stripe_public_key=t},FILE_INFO_TOGGLE:function(e,t){e.fileInfoPanelVisible=t,localStorage.setItem("file_info_visibility",t)},SET_AUTHORIZED:function(e,t){e.config.isAuthenticated=t},SET_INDEX_CONTENT:function(e,t){e.index=t},CHANGE_PREVIEW:function(e,t){e.FilePreviewType=t},STORE_REQUESTED_PLAN:function(e,t){e.requestedPlan=t}}};i.a.use(Gt.a);var ln=new Gt.a.Store({modules:{fileFunctions:Xt,fileBrowser:tn,userAuth:nn,sharing:on,app:sn}}),cn=n("1SDo"),un=n("D62o");function fn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function pn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var dn={name:"AdminMobileMenu",components:{MenuItemList:cn.a,MobileHeader:un.a},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?fn(Object(n),!0).forEach((function(t){pn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):fn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Object(Gt.b)(["config"])),data:function(){return{AdminNavigation:[{icon:"box",title:this.$t("admin_menu.dashboard"),routeName:"Dashboard",isVisible:!0},{icon:"users",title:this.$t("admin_menu.users"),routeName:"Users",isVisible:!0},{icon:"settings",title:this.$t("admin_menu.settings"),routeName:"AppOthers",isVisible:!0},{icon:"monitor",title:this.$t("admin_menu.pages"),routeName:"Pages",isVisible:!0}],SassNavigation:[{icon:"database",title:this.$t("admin_menu.plans"),routeName:"Plans",isVisible:!0},{icon:"file-text",title:this.$t("admin_menu.invoices"),routeName:"Invoices",isVisible:!0}]}}},hn=(n("CsPh"),n("KHd+")),vn=Object(hn.a)(dn,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"single-page"}},[n("div",{attrs:{id:"page-content"}},[n("MobileHeader",{attrs:{title:e.$router.currentRoute.meta.title}}),e._v(" "),n("div",{staticClass:"content-page"},[n("nav",{staticClass:"mobile-navigation"},[n("b",{staticClass:"mobile-menu-label"},[e._v(e._s(e.$t("global.admin")))]),e._v(" "),n("MenuItemList",{attrs:{navigation:e.AdminNavigation}}),e._v(" "),e.config.isSaaS?n("b",{staticClass:"mobile-menu-label"},[e._v(e._s(e.$t("global.saas")))]):e._e(),e._v(" "),e.config.isSaaS?n("MenuItemList",{attrs:{navigation:e.SassNavigation}}):e._e()],1)])],1)])}),[],!1,null,"22699b25",null).exports,mn={name:"UserProfileMobileMenu",components:{MenuItemList:cn.a,MobileHeader:un.a},data:function(){return{ProfileNavigation:[{icon:"user",title:this.$t("menu.profile"),routeName:"Profile",isVisible:!0},{icon:"hard-drive",title:this.$t("menu.storage"),routeName:"Storage",isVisible:!0},{icon:"lock",title:this.$t("menu.password"),routeName:"Password",isVisible:!0}],SubscriptionNavigation:[{icon:"cloud",title:this.$t("menu.subscription"),routeName:"Subscription",isVisible:!0},{icon:"credit-card",title:this.$t("menu.payment_cards"),routeName:"PaymentMethods",isVisible:!0},{icon:"file-text",title:this.$t("menu.invoices"),routeName:"Invoice",isVisible:!0}]}}},gn=(n("RKqW"),Object(hn.a)(mn,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"single-page"}},[n("div",{attrs:{id:"page-content"}},[n("MobileHeader",{attrs:{title:e.$router.currentRoute.meta.title}}),e._v(" "),n("div",{staticClass:"content-page"},[n("nav",{staticClass:"mobile-navigation"},[n("b",{staticClass:"mobile-menu-label"},[e._v(e._s(e.$t("global.menu")))]),e._v(" "),n("MenuItemList",{attrs:{navigation:e.ProfileNavigation}}),e._v(" "),n("b",{staticClass:"mobile-menu-label"},[e._v(e._s(e.$t("global.subscription")))]),e._v(" "),n("MenuItemList",{attrs:{navigation:e.SubscriptionNavigation}})],1)])],1)])}),[],!1,null,"44c6fc05",null).exports);i.a.use(Ke);var yn=[{name:"SignUp",path:"/sign-up",component:function(){return Promise.all([n.e(0),n.e(1),n.e(60)]).then(n.bind(null,"vRHN"))},meta:{requiresAuth:!1}},{name:"SetUpPlan",path:"/nastavte-plan",component:function(){return n.e(65).then(n.bind(null,"gGGj"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.upgrade_plan")}},{name:"FinishPayment",path:"/dokoncete-objednavku",component:function(){return Promise.all([n.e(0),n.e(64)]).then(n.bind(null,"ePVn"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.upgrade_billing")}},{name:"SubscriptionRequestPayment",path:"/platba/:id",component:function(){return Promise.all([n.e(0),n.e(34)]).then(n.bind(null,"sUGC"))},meta:{requiresAuth:!1,title:"Platba"}},{name:"CreatePasswordAfterPayment",path:"/vytvorit-heslo/:id",component:function(){return Promise.all([n.e(0),n.e(34)]).then(n.bind(null,"hJFQ"))},meta:{requiresAuth:!1,title:"Vytvorit Heslo"}},{name:"Admin",path:"/admin",component:function(){return n.e(11).then(n.bind(null,"BNKf"))},meta:{requiresAuth:!0,title:"Admin"},children:[{name:"Users",path:"/admin/users",component:function(){return n.e(74).then(n.bind(null,"m2hc"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.users_list")}},{name:"CreateSubscriptionRequest",path:"/admin/user/order",component:function(){return Promise.all([n.e(0),n.e(67)]).then(n.bind(null,"uSTF"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.user_create")}},{name:"UserCreate",path:"/admin/user/create",component:function(){return Promise.all([n.e(0),n.e(67)]).then(n.bind(null,"sh7X"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.user_create")}}]}],bn=[{name:"Admin",path:"/admin",component:function(){return n.e(11).then(n.bind(null,"BNKf"))},meta:{requiresAuth:!0,title:"Admin"},children:[{name:"Dashboard",path:"/admin/dashboard",component:function(){return Promise.all([n.e(3),n.e(24)]).then(n.bind(null,"jhMt"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.dashboard")}},{name:"Invoices",path:"/admin/invoices",component:function(){return Promise.all([n.e(3),n.e(32)]).then(n.bind(null,"DEv9"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.invoices")}},{name:"Pages",path:"/admin/pages",component:function(){return Promise.all([n.e(3),n.e(36)]).then(n.bind(null,"d6jx"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.pages")}},{name:"PageEdit",path:"/admin/pages/:slug",component:function(){return Promise.all([n.e(0),n.e(35)]).then(n.bind(null,"btva"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.page_edit")}},{name:"Plans",path:"/admin/plans",component:function(){return Promise.all([n.e(3),n.e(42)]).then(n.bind(null,"GAT/"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.pricing_plans")}},{name:"Users",path:"/admin/users",component:function(){return n.e(74).then(n.bind(null,"ZIRg"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.users_list")}},{name:"UserCreate",path:"/admin/user/create",component:function(){return Promise.all([n.e(0),n.e(67)]).then(n.bind(null,"T3V+"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.user_create")}},{name:"PlanCreate",path:"/admin/plan/create",component:function(){return Promise.all([n.e(0),n.e(38)]).then(n.bind(null,"DkdH"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.plan_create")}},{name:"User",path:"/admin/user/:id",component:function(){return n.e(66).then(n.bind(null,"3OWm"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.users_user")},children:[{name:"UserDetail",path:"/admin/user/:id/details",component:function(){return Promise.all([n.e(0),n.e(2),n.e(69)]).then(n.bind(null,"23b/"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.users_detail")}},{name:"UserStorage",path:"/admin/user/:id/storage",component:function(){return Promise.all([n.e(0),n.e(2),n.e(72)]).then(n.bind(null,"qOAa"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.users_storage_usage")}},{name:"UserSubscription",path:"/admin/user/:id/subscription",component:function(){return n.e(73).then(n.bind(null,"CtGM"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.subscription")}},{name:"UserInvoices",path:"/admin/user/:id/invoices",component:function(){return Promise.all([n.e(3),n.e(70)]).then(n.bind(null,"i04Q"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.invoices")}},{name:"UserPassword",path:"/admin/user/:id/password",component:function(){return Promise.all([n.e(0),n.e(2),n.e(71)]).then(n.bind(null,"nY6N"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.users_password")}},{name:"UserDelete",path:"/admin/user/:id/delete",component:function(){return Promise.all([n.e(0),n.e(2),n.e(68)]).then(n.bind(null,"iPPg"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.users_delete")}}]},{name:"Plan",path:"/admin/plan/:id",component:function(){return n.e(37).then(n.bind(null,"+NaO"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.plan")},children:[{name:"PlanSubscribers",path:"/admin/plan/:id/subscribers",component:function(){return n.e(41).then(n.bind(null,"tvo/"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.subscribers")}},{name:"PlanSettings",path:"/admin/plan/:id/settings",component:function(){return Promise.all([n.e(0),n.e(2),n.e(40)]).then(n.bind(null,"GJ4H"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.plan_settings")}},{name:"PlanDelete",path:"/admin/plan/:id/delete",component:function(){return Promise.all([n.e(0),n.e(2),n.e(39)]).then(n.bind(null,"b1wH"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.plan_delete")}}]},{name:"AppSettings",path:"/admin/settings",component:function(){return n.e(19).then(n.bind(null,"OLOt"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.settings")},children:[{name:"AppAppearance",path:"/admin/settings/appearance",component:function(){return Promise.all([n.e(0),n.e(2),n.e(13)]).then(n.bind(null,"1XC+"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.appearance")}},{name:"AppIndex",path:"/admin/settings/index",component:function(){return Promise.all([n.e(0),n.e(2),n.e(16)]).then(n.bind(null,"eIvV"))},meta:{requiresAuth:!0,title:"Index"}},{name:"AppBillings",path:"/admin/settings/billings",component:function(){return Promise.all([n.e(0),n.e(2),n.e(14)]).then(n.bind(null,"mYUh"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.billings")}},{name:"AppEmail",path:"/admin/settings/email",component:function(){return Promise.all([n.e(0),n.e(2),n.e(15)]).then(n.bind(null,"GEeg"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.email")}},{name:"AppPayments",path:"/admin/settings/payments",component:function(){return Promise.all([n.e(0),n.e(2),n.e(18)]).then(n.bind(null,"RNzz"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.payments")}},{name:"AppOthers",path:"/admin/settings/others",component:function(){return Promise.all([n.e(0),n.e(2),n.e(17)]).then(n.bind(null,"ijzm"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.others")}}]}]},{name:"AdminMobileMenu",path:"/admin-menu",component:vn,meta:{requiresAuth:!0,title:Vt.t("routes_title.settings_mobile")}},{name:"UserProfileMobileMenu",path:"/user-menu",component:gn,meta:{requiresAuth:!0,title:Vt.t("routes_title.profile_settings")}}],_n=[{name:"Shared",path:"/share/:token",component:function(){return Promise.all([n.e(0),n.e(9),n.e(4),n.e(7),n.e(54)]).then(n.bind(null,"2qpb"))},meta:{requiresAuth:!1},children:[{name:"SharedFileBrowser",path:"/share/:token/files",component:function(){return Promise.all([n.e(4),n.e(5),n.e(6),n.e(57)]).then(n.bind(null,"77bE"))},meta:{requiresAuth:!1}},{name:"SharedSingleFile",path:"/share/:token/file",component:function(){return Promise.all([n.e(5),n.e(58)]).then(n.bind(null,"oIrH"))},meta:{requiresAuth:!1}},{name:"SharedAuthentication",path:"/share/:token/authenticate",component:function(){return Promise.all([n.e(0),n.e(56)]).then(n.bind(null,"dD68"))},meta:{requiresAuth:!1}}]}],wn=[{name:"SignIn",path:"/sign-in",component:function(){return Promise.all([n.e(0),n.e(1),n.e(59)]).then(n.bind(null,"l9/H"))},meta:{requiresAuth:!1}},{name:"SignUp",path:"/sign-up",component:function(){return Promise.all([n.e(0),n.e(1),n.e(60)]).then(n.bind(null,"UevJ"))},meta:{requiresAuth:!1}},{name:"ForgottenPassword",path:"/forgotten-password",component:function(){return Promise.all([n.e(0),n.e(1),n.e(29)]).then(n.bind(null,"/qpS"))},meta:{requiresAuth:!1}},{name:"CreateNewPassword",path:"/create-new-password",component:function(){return Promise.all([n.e(0),n.e(1),n.e(23)]).then(n.bind(null,"x5Cv"))},meta:{requiresAuth:!1}}],xn=[{path:"/platform",name:"Platform",component:function(){return Promise.all([n.e(0),n.e(9),n.e(4),n.e(7),n.e(43)]).then(n.bind(null,"fT6y"))},children:[{name:"Files",path:"/platform/files",component:function(){return Promise.all([n.e(4),n.e(5),n.e(6),n.e(28)]).then(n.bind(null,"8KKK"))},meta:{requiresAuth:!0}},{name:"SharedFiles",path:"/platform/shared-files",component:function(){return Promise.all([n.e(4),n.e(5),n.e(6),n.e(55)]).then(n.bind(null,"CoTS"))},meta:{requiresAuth:!0}},{name:"Settings",path:"/platform/settings",component:function(){return n.e(46).then(n.bind(null,"GgfX"))},meta:{requiresAuth:!0},children:[{name:"Profile",path:"/platform/profile",component:function(){return Promise.all([n.e(0),n.e(8),n.e(44)]).then(n.bind(null,"5Xka"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.profile")}},{name:"Password",path:"/platform/settings/password",component:function(){return Promise.all([n.e(0),n.e(8),n.e(49)]).then(n.bind(null,"aoJh"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.settings_password")}},{name:"Storage",path:"/platform/settings/storage",component:function(){return n.e(51).then(n.bind(null,"RW8C"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.settings_storage")}},{name:"Invoice",path:"/platform/settings/invoices",component:function(){return n.e(48).then(n.bind(null,"WPod"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.invoices")}},{name:"Subscription",path:"/platform/settings/subscription",component:function(){return n.e(52).then(n.bind(null,"GN0Y"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.subscription")}},{name:"PaymentMethods",path:"/platform/settings/payment-methods",component:function(){return n.e(50).then(n.bind(null,"up7b"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.payment_methods")}},{name:"CreatePaymentMethod",path:"/platform/settings/create-payment-method",component:function(){return n.e(47).then(n.bind(null,"V8xj"))},meta:{requiresAuth:!0,title:"Create Payment Method"}}]},{name:"UpgradePlan",path:"/platform/upgrade/plan",component:function(){return n.e(65).then(n.bind(null,"4zU4"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.upgrade_plan")}},{name:"UpgradeBilling",path:"/platform/upgrade/billing",component:function(){return Promise.all([n.e(0),n.e(64)]).then(n.bind(null,"GxOr"))},meta:{requiresAuth:!0,title:Vt.t("routes_title.upgrade_billing")}}]}],kn=new Ke({mode:"history",routes:[].concat(yn,[{name:"SetupWizard",path:"/install",component:function(){return n.e(53).then(n.bind(null,"oBQg"))},meta:{requiresAuth:!1},children:[{name:"PurchaseCode",path:"/setup-wizard/purchase-code",component:function(){return Promise.all([n.e(0),n.e(1),n.e(45)]).then(n.bind(null,"RjSB"))},meta:{requiresAuth:!1}},{name:"Database",path:"/setup-wizard/database",component:function(){return Promise.all([n.e(0),n.e(1),n.e(25)]).then(n.bind(null,"9xkz"))},meta:{requiresAuth:!1}},{name:"InstallationDisclaimer",path:"/setup-wizard/installation-disclaimer",component:function(){return Promise.all([n.e(0),n.e(1),n.e(31)]).then(n.bind(null,"aEI+"))},meta:{requiresAuth:!1}},{name:"SubscriptionService",path:"/setup-wizard/subscription-service",component:function(){return Promise.all([n.e(0),n.e(1),n.e(63)]).then(n.bind(null,"v9ZB"))},meta:{requiresAuth:!1}},{name:"StripeCredentials",path:"/setup-wizard/stripe-credentials",component:function(){return Promise.all([n.e(0),n.e(1),n.e(61)]).then(n.bind(null,"cOON"))},meta:{requiresAuth:!1}},{name:"BillingsDetail",path:"/setup-wizard/stripe-billings",component:function(){return Promise.all([n.e(0),n.e(1),n.e(21)]).then(n.bind(null,"G6zf"))},meta:{requiresAuth:!1}},{name:"SubscriptionPlans",path:"/setup-wizard/stripe-plans",component:function(){return Promise.all([n.e(0),n.e(1),n.e(62)]).then(n.bind(null,"26E0"))},meta:{requiresAuth:!1}},{name:"EnvironmentSetup",path:"/setup-wizard/environment-setup",component:function(){return Promise.all([n.e(0),n.e(1),n.e(27)]).then(n.bind(null,"Dcbv"))},meta:{requiresAuth:!1}},{name:"AppSetup",path:"/setup-wizard/app-setup",component:function(){return Promise.all([n.e(0),n.e(1),n.e(20)]).then(n.bind(null,"mveV"))},meta:{requiresAuth:!1}},{name:"AdminAccount",path:"/setup-wizard/admin-setup",component:function(){return Promise.all([n.e(0),n.e(1),n.e(12)]).then(n.bind(null,"+SgC"))},meta:{requiresAuth:!1}}]}],_n,bn,[{name:"Homepage",path:"/",component:function(){return n.e(30).then(n.bind(null,"s2Id"))},meta:{requiresAuth:!1}},{name:"DynamicPage",path:"/page/:slug",component:function(){return n.e(26).then(n.bind(null,"x6wg"))},meta:{requiresAuth:!1}},{name:"ContactUs",path:"/contact-us",component:function(){return Promise.all([n.e(0),n.e(22)]).then(n.bind(null,"ZXUr"))},meta:{requiresAuth:!1}},{name:"NotFound",path:"/not-found",component:function(){return Promise.all([n.e(0),n.e(1),n.e(33)]).then(n.bind(null,"pAWr"))},meta:{requiresAuth:!1}}],wn,xn),scrollBehavior:function(e,t,n){return n||{x:0,y:0}}});kn.beforeEach((function(e,t,n){e.matched.some((function(e){return e.meta.requiresAuth}))?(ln.getters.config?ln.getters.config.isAuthenticated:config.isAuthenticated)?n():n({name:"SignIn",query:{redirect:e.fullPath}}):n()}));var Sn=kn,An=n("CjXH"),Cn={components:{XIcon:An.hb,CheckIcon:An.d},props:["item"],data:function(){return{isActive:0}},created:function(){var e=this;this.isActive=1,setTimeout((function(){return e.isActive=0}),5e3)}},En=(n("zfgF"),{components:{ToastrItem:Object(hn.a)(Cn,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("transition",{attrs:{appear:"",name:"fade"}},[n("li",{directives:[{name:"show",rawName:"v-show",value:e.isActive,expression:"isActive"}],staticClass:"toastr-item",class:e.item.type},[n("div",{staticClass:"toastr-content-wrapper"},[n("span",{staticClass:"toastr-icon"},["success"==e.item.type?n("check-icon",{attrs:{size:"22"}}):e._e(),e._v(" "),"danger"==e.item.type?n("x-icon",{attrs:{size:"22"}}):e._e()],1),e._v(" "),n("div",{staticClass:"toastr-content"},[n("p",{staticClass:"toastr-description"},[e._v(e._s(e.item.message))])])]),e._v(" "),n("div",{staticClass:"progressbar"},[n("span")])])])}),[],!1,null,"36c367fe",null).exports},data:function(){return{notifications:[]}},created:function(){var e=this;Wt.a.$on("toaster",(function(t){return e.notifications.push(t)}))}}),On=(n("2suW"),Object(hn.a)(En,(function(){var e=this.$createElement,t=this._self._c||e;return t("div",{attrs:{id:"toastr-wrapper"}},this._l(this.notifications,(function(e,n){return t("ToastrItem",{key:n,attrs:{item:e}})})),1)}),[],!1,null,"1d540beb",null).exports);function Tn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function In(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Nn={name:"CookieDisclaimer",components:{XIcon:An.hb},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Tn(Object(n),!0).forEach((function(t){In(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Tn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Object(Gt.b)(["config"])),data:function(){return{isVisibleDisclaimer:!1}},methods:{closeDisclaimer:function(){localStorage.setItem("isHiddenDisclaimer","true"),this.isVisibleDisclaimer=!1}},created:function(){this.isVisibleDisclaimer=!localStorage.getItem("isHiddenDisclaimer")}},Pn=(n("CGC8"),Object(hn.a)(Nn,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.isVisibleDisclaimer&&e.config.isSaaS?n("div",{staticClass:"cookie-wrapper"},[n("span",{staticClass:"close-icon",on:{click:e.closeDisclaimer}},[n("x-icon",{attrs:{size:"12"}})],1),e._v(" "),n("i18n",{attrs:{path:"cookie_disclaimer.description",tag:"p"}},[n("router-link",{attrs:{to:{name:"DynamicPage",params:{slug:"cookie-policy"}}}},[e._v(e._s(e.$t("cookie_disclaimer.button")))])],1)],1):e._e()}),[],!1,null,"87cdc1f8",null).exports),zn=n("BOt2"),Mn=n("c+VV"),Ln={name:"app",components:{CookieDisclaimer:Pn,ToastrWrapper:On,Vignette:zn.a,Alert:Mn.a},methods:{unClick:function(){Wt.a.$emit("unClick")}},beforeMount:function(){this.$store.commit("INIT",{config:this.$root.$data.config,rootDirectory:{name:this.$t("locations.home"),location:"base",id:void 0}});var e=this.$root.$data.config.installation;"setup-database"===e&&this.$router.push({name:"PurchaseCode"}),"setup-disclaimer"===e&&this.$router.push({name:"InstallationDisclaimer"})},mounted:function(){this.$checkOS()}},Rn=(n("DWEW"),Object(hn.a)(Ln,(function(){var e=this.$createElement,t=this._self._c||e;return t("div",{attrs:{id:"vuefilemanager"},on:{click:this.unClick}},[t("Alert"),this._v(" "),t("ToastrWrapper"),this._v(" "),t("router-view"),this._v(" "),t("CookieDisclaimer"),this._v(" "),t("Vignette")],1)}),[],!1,null,null,null).exports),jn=n("o0o1"),$n=n.n(jn);function Dn(e){return function(e){if(Array.isArray(e))return Fn(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Fn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Fn(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Fn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Bn(e,t,n,r,i,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,i)}function Un(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function o(e){Bn(a,r,i,o,s,"next",e)}function s(e){Bn(a,r,i,o,s,"throw",e)}o(void 0)}))}}var Hn={install:function(e){e.prototype.$updateText=Object(qt.debounce)((function(e,t,n){var r=this;(""!==n||["mimetypes_blacklist","google_analytics","upload_limit"].includes(t))&&Yt.a.post(this.$store.getters.api+e,{name:t,value:n,_method:"patch"}).catch((function(e){Wt.a.$emit("alert:open",{title:r.$t("popup_error.title"),message:r.$t("popup_error.message")})}))}),150),e.prototype.$updateImage=function(e,t,n){var r=this,i=new FormData;i.append("name",t),i.append(t,n),i.append("_method","PATCH"),Yt.a.post(this.$store.getters.api+e,i,{headers:{"Content-Type":"multipart/form-data"}}).catch((function(e){Wt.a.$emit("alert:open",{title:r.$t("popup_error.title"),message:r.$t("popup_error.message")})}))},e.prototype.$scrollTop=function(){var e=document.getElementById("vuefilemanager");e&&(e.scrollTop=0)},e.prototype.$getImage=function(e){return e?this.$store.getters.config.host+"/"+e:""},e.prototype.$getCreditCardBrand=function(e){return"/assets/icons/".concat(e,".svg")},e.prototype.$getInvoiceLink=function(e,t){return"/invoice/"+e+"/"+t},e.prototype.$openImageOnNewTab=function(e){window.open(e,"_blank").focus()},e.prototype.$createFolder=function(e){this.$store.dispatch("createFolder",e)},e.prototype.$uploadFiles=function(){var e=Un($n.a.mark((function e(t){var n=this;return $n.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(0!=t.length){e.next=2;break}return e.abrupt("return");case 2:if(this.$checkFileMimetype(t)&&this.$checkUploadLimit(t)){e.next=4;break}return e.abrupt("return");case 4:Dn(t).map((function(e){n.$store.commit("ADD_FILES_TO_QUEUE",{folder_id:ln.getters.currentFolder.id?ln.getters.currentFolder.id:"",file:e})})),0==this.$store.getters.filesInQueueTotal&&this.$handleUploading(ln.getters.fileQueue[0]),this.$store.commit("INCREASE_FILES_IN_QUEUES_TOTAL",t.length);case 7:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),e.prototype.$uploadExternalFiles=function(){var e=Un($n.a.mark((function e(t,n){var r=this;return $n.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(0!==t.dataTransfer.items.length){e.next=2;break}return e.abrupt("return");case 2:Dn(t.dataTransfer.items).map((function(e){r.$store.commit("ADD_FILES_TO_QUEUE",{folder_id:n||"",file:e.getAsFile()})})),0==this.$store.getters.filesInQueueTotal&&this.$handleUploading(this.$store.getters.fileQueue[0]),this.$store.commit("INCREASE_FILES_IN_QUEUES_TOTAL",Dn(t.dataTransfer.items).length);case 5:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),e.prototype.$handleUploading=function(){var e=Un($n.a.mark((function e(t){var n,r,i,a,o,s,l,c,u,f,p=this;return $n.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(n=ln.getters.config.chunkSize,r=Math.ceil(t.file.size/n),i=[],a=0;a<r;a++)i.push(t.file.slice(a*n,Math.min(a*n+n,t.file.size),t.file.type));o=new FormData,s=0,l=!0,c=t.file.name.replace(/[^A-Za-z 0-9 \.,\?""!@#\$%\^&\*\(\)-_=\+;:<>\/\\\|\}\{\[\]`~]*/g,""),u=Array(16).fill(0).map((function(e){return Math.random().toString(36).charAt(2)})).join("")+"-"+c+".part",f=$n.a.mark((function e(){var n,r,a;return $n.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=1===i.length,r=i.shift(),a=0,o.set("file",r,u),o.set("folder_id",t.folder_id),o.set("is_last",n);case 4:return e.next=6,ln.dispatch("uploadFiles",{form:o,fileSize:t.file.size,totalUploadedSize:s}).then((function(){s+=r.size})).catch((function(e){3===++a&&p.$isSomethingWrong(),[500,415].includes(e.response.status)&&(l=!1)}));case 6:if(l&&0!==a&&3!==a){e.next=4;break}case 7:case"end":return e.stop()}}),e)}));case 4:return e.delegateYield(f(),"t0",5);case 5:if(l&&0!==i.length){e.next=4;break}case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),e.prototype.$downloadFile=function(e,t){var n=document.createElement("a");n.href=e,n.download=t,document.body.appendChild(n),n.click()},e.prototype.$closePopup=function(){Wt.a.$emit("popup:close")},e.prototype.$isThisRoute=function(e,t){return Object(qt.includes)(t,e.name)},e.prototype.$isThisLocation=function(e){var t=ln.getters.currentFolder&&ln.getters.currentFolder.location?ln.getters.currentFolder.location:void 0;return"Object"==typeof e||e instanceof Object?Object(qt.includes)(e,t):t===e},e.prototype.$checkPermission=function(e){var t=ln.getters.permission;return"Object"==typeof e||e instanceof Object?Object(qt.includes)(e,t):t===e},e.prototype.$isMobile=function(){return[/Android/i,/webOS/i,/iPhone/i,/iPad/i,/iPod/i,/BlackBerry/i,/Windows Phone/i].some((function(e){return navigator.userAgent.match(e)}))},e.prototype.$isMinimalScale=function(){return"minimal-scale"===ln.getters.filesViewWidth},e.prototype.$isCompactScale=function(){return"compact-scale"===ln.getters.filesViewWidth},e.prototype.$isFullScale=function(){return"full-scale"===ln.getters.filesViewWidth},e.prototype.$isSomethingWrong=function(){Wt.a.$emit("alert:open",{title:Vt.t("popup_error.title"),message:Vt.t("popup_error.message")})},e.prototype.$checkFileMimetype=function(e){for(var t=!0,n=ln.getters.config.mimetypesBlacklist,r=0;r<e.length;r++){var i=e[r].type.split("/");i[0]||(i[1]=_.last(e[r].name.split("."))),n.includes(i[1])&&(t=!1,Wt.a.$emit("alert:open",{emoji:"😬😬😬",title:Vt.t("popup_mimetypes_blacklist.title"),message:Vt.t("popup_mimetypes_blacklist.message",{mimetype:i[1]})}))}return t},e.prototype.$checkUploadLimit=function(e){for(var t=ln.getters.config.uploadLimit,n=!0,r=0;r<e.length;r++)if(0!=t&&e[r].size>t){n=!1,Wt.a.$emit("alert:open",{emoji:"😟😟😟",title:Vt.t("popup_upload_limit.title"),message:Vt.t("popup_upload_limit.message",{uploadLimit:ln.getters.config.uploadLimitFormatted})});break}return n},e.prototype.$getDataByLocation=function(){var e,t=ln.getters.currentFolder,n={base:["getFolder",[{folder:t,back:!0,init:!1,sorting:!0}]],public:["browseShared",[{folder:t,back:!0,init:!1,sorting:!0}]],trash:["getFolder",[{folder:t,back:!0,init:!1,sorting:!0}]],participant_uploads:["getParticipantUploads"],"trash-root":["getTrash"],latest:["getLatest"],shared:["getShared"]};(e=this.$store).dispatch.apply(e,Dn(n[t.location])),this.$store.dispatch("getAppData"),this.$store.dispatch("getFolderTree")},e.prototype.$checkOS=function(){-1!=navigator.userAgent.indexOf("Windows")&&document.body.classList.add("windows")},e.prototype.$isApple=function(){return[/iPhone/i,/iPad/i,/iPod/i,/iOS/i,/macOS/i,/Macintosh/i].some((function(e){return navigator.userAgent.match(e)}))}}},Vn=Hn,Gn=n("7O5W"),Wn=n("rT2p"),qn={prefix:"fas",iconName:"bars",icon:[448,512,[],"f0c9","M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"]},Kn={prefix:"fas",iconName:"check",icon:[512,512,[],"f00c","M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"]},Yn={prefix:"fas",iconName:"chevron-down",icon:[448,512,[],"f078","M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"]},Jn={prefix:"fas",iconName:"chevron-left",icon:[320,512,[],"f053","M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z"]},Zn={prefix:"fas",iconName:"chevron-right",icon:[320,512,[],"f054","M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"]},Xn={prefix:"fas",iconName:"download",icon:[512,512,[],"f019","M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"]},Qn={prefix:"fas",iconName:"ellipsis-h",icon:[512,512,[],"f141","M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"]},er={prefix:"fas",iconName:"ellipsis-v",icon:[192,512,[],"f142","M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z"]},tr={prefix:"fas",iconName:"eye-slash",icon:[640,512,[],"f070","M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z"]},nr={prefix:"fas",iconName:"file",icon:[384,512,[],"f15b","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]},rr={prefix:"fas",iconName:"file-audio",icon:[384,512,[],"f1c7","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-64 268c0 10.7-12.9 16-20.5 8.5L104 376H76c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h28l35.5-36.5c7.6-7.6 20.5-2.2 20.5 8.5v136zm33.2-47.6c9.1-9.3 9.1-24.1 0-33.4-22.1-22.8 12.2-56.2 34.4-33.5 27.2 27.9 27.2 72.4 0 100.4-21.8 22.3-56.9-10.4-34.4-33.5zm86-117.1c54.4 55.9 54.4 144.8 0 200.8-21.8 22.4-57-10.3-34.4-33.5 36.2-37.2 36.3-96.5 0-133.8-22.1-22.8 12.3-56.3 34.4-33.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]},ir={prefix:"fas",iconName:"file-image",icon:[384,512,[],"f1c5","M384 121.941V128H256V0h6.059a24 24 0 0 1 16.97 7.029l97.941 97.941a24.002 24.002 0 0 1 7.03 16.971zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zm-135.455 16c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.491-48 48-48zm208 240h-256l.485-48.485L104.545 328c4.686-4.686 11.799-4.201 16.485.485L160.545 368 264.06 264.485c4.686-4.686 12.284-4.686 16.971 0L320.545 304v112z"]},ar={prefix:"fas",iconName:"file-video",icon:[384,512,[],"f1c8","M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM224 136V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248c-13.2 0-24-10.8-24-24zm96 144.016v111.963c0 21.445-25.943 31.998-40.971 16.971L224 353.941V392c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V280c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v38.059l55.029-55.013c15.011-15.01 40.971-4.491 40.971 16.97z"]},or={prefix:"fas",iconName:"folder",icon:[512,512,[],"f07b","M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z"]},sr={prefix:"fas",iconName:"folder-plus",icon:[512,512,[],"f65e","M464,128H272L208,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128ZM359.5,296a16,16,0,0,1-16,16h-64v64a16,16,0,0,1-16,16h-16a16,16,0,0,1-16-16V312h-64a16,16,0,0,1-16-16V280a16,16,0,0,1,16-16h64V200a16,16,0,0,1,16-16h16a16,16,0,0,1,16,16v64h64a16,16,0,0,1,16,16Z"]},lr={prefix:"fas",iconName:"hdd",icon:[576,512,[],"f0a0","M576 304v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48zm-48-80a79.557 79.557 0 0 1 30.777 6.165L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L17.223 230.165A79.557 79.557 0 0 1 48 224h480zm-48 96c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm-96 0c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z"]},cr={prefix:"fas",iconName:"home",icon:[576,512,[],"f015","M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"]},ur={prefix:"fas",iconName:"info",icon:[192,512,[],"f129","M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z"]},fr={prefix:"fas",iconName:"link",icon:[512,512,[],"f0c1","M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"]},pr={prefix:"fas",iconName:"lock",icon:[448,512,[],"f023","M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z"]},dr={prefix:"fas",iconName:"lock-open",icon:[576,512,[],"f3c1","M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z"]},hr={prefix:"fas",iconName:"pencil-alt",icon:[512,512,[],"f303","M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z"]},vr={prefix:"fas",iconName:"search",icon:[512,512,[],"f002","M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"]},mr={prefix:"fas",iconName:"share",icon:[512,512,[],"f064","M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z"]},gr={prefix:"fas",iconName:"sort",icon:[320,512,[],"f0dc","M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41zm255-105L177 64c-9.4-9.4-24.6-9.4-33.9 0L24 183c-15.1 15.1-4.4 41 17 41h238c21.4 0 32.1-25.9 17-41z"]},yr={prefix:"fas",iconName:"sync-alt",icon:[512,512,[],"f2f1","M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z"]},br={prefix:"fas",iconName:"th",icon:[512,512,[],"f00a","M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z"]},_r={prefix:"fas",iconName:"th-list",icon:[512,512,[],"f00b","M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z"]},wr={prefix:"fas",iconName:"times",icon:[352,512,[],"f00d","M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"]},xr={prefix:"fas",iconName:"trash-alt",icon:[448,512,[],"f2ed","M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},kr={prefix:"fas",iconName:"upload",icon:[512,512,[],"f093","M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"]},Sr={prefix:"fas",iconName:"user",icon:[448,512,[],"f007","M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"]},Ar={prefix:"fas",iconName:"user-edit",icon:[640,512,[],"f4ff","M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z"]},Cr={prefix:"fas",iconName:"user-friends",icon:[640,512,[],"f500","M192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C51.6 288 0 339.6 0 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zM480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm48 32h-3.8c-13.9 4.8-28.6 8-44.2 8s-30.3-3.2-44.2-8H432c-20.4 0-39.2 5.9-55.7 15.4 24.4 26.3 39.7 61.2 39.7 99.8v38.4c0 2.2-.5 4.3-.6 6.4H592c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112z"]};n("9Wh1"),Gn.c.add(pr,dr,Xn,Cr,Kn,fr,Ar,Sr,rr,ar,lr,yr,mr,cr,tr,qn,vr,er,Jn,Zn,Yn,kr,xr,sr,br,_r,ur,or,nr,ir,wr,gr,Qn,hr),i.a.component("FontAwesomeIcon",Wn.a),i.a.use(Ke),i.a.use(Vn),i.a.config.productionTip=!1,document.addEventListener("drag",(function(e){var t=document.getElementById("multi-select-ui");t.style.top=e.clientY+20+"px",t.style.left=e.clientX+"px"}),!1),document.addEventListener("dragend",(function(){Wt.a.$emit("drop")}),!1);new i.a({i18n:Vt,store:ln,router:Sn,data:{config:config},render:function(e){return e(Rn)}}).$mount("#app")},"9Wh1":function(e,t,n){window._=n("LvDl"),window.axios=n("vDqi"),window.axios.defaults.headers.common["X-Requested-With"]="XMLHttpRequest"},"9a33":function(e,t,n){"use strict";var r=n("MqSN");n.n(r).a},"9rSQ":function(e,t,n){"use strict";var r=n("xTJ+");function i(){this.handlers=[]}i.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},i.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},i.prototype.forEach=function(e){r.forEach(this.handlers,(function(t){null!==t&&e(t)}))},e.exports=i},"9tPo":function(e,t){e.exports=function(e){var t="undefined"!=typeof window&&window.location;if(!t)throw new Error("fixUrls requires window.location");if(!e||"string"!=typeof e)return e;var n=t.protocol+"//"+t.host,r=n+t.pathname.replace(/\/[^\/]*$/,"/");return e.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi,(function(e,t){var i,a=t.trim().replace(/^"(.*)"$/,(function(e,t){return t})).replace(/^'(.*)'$/,(function(e,t){return t}));return/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(a)?e:(i=0===a.indexOf("//")?a:0===a.indexOf("/")?n+a:r+a.replace(/^\.\//,""),"url("+JSON.stringify(i)+")")}))}},AXyT:function(e,t,n){var r=n("kXuv");"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n("aET+")(r,i);r.locals&&(e.exports=r.locals)},BLW1:function(e,t,n){(e.exports=n("I1BE")(!1)).push([e.i,".link-item[data-v-5ca97ffe] {\n display: flex;\n text-decoration: none;\n padding: 17px 0;\n width: 100%;\n}\n.link-item.power .menu-icon path[data-v-5ca97ffe], .link-item.power .menu-icon line[data-v-5ca97ffe], .link-item.power .menu-icon polyline[data-v-5ca97ffe], .link-item.power .menu-icon rect[data-v-5ca97ffe], .link-item.power .menu-icon circle[data-v-5ca97ffe], .link-item.power .menu-icon ellipse[data-v-5ca97ffe] {\n stroke: #FE6057;\n}\n.link-item.power .menu-link[data-v-5ca97ffe] {\n color: #FE6057;\n}\n.link-item .menu-icon[data-v-5ca97ffe] {\n display: block;\n margin-right: 20px;\n}\n.link-item .menu-icon svg[data-v-5ca97ffe] {\n margin-top: -1px;\n vertical-align: middle;\n}\n.link-item .menu-icon path[data-v-5ca97ffe], .link-item .menu-icon line[data-v-5ca97ffe], .link-item .menu-icon polyline[data-v-5ca97ffe], .link-item .menu-icon rect[data-v-5ca97ffe], .link-item .menu-icon circle[data-v-5ca97ffe], .link-item .menu-icon ellipse[data-v-5ca97ffe] {\n stroke: #1B2539;\n}\n.link-item .menu-link[data-v-5ca97ffe] {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n color: #1B2539;\n}\n.link-item .menu-link span[data-v-5ca97ffe] {\n font-size: 0.875em;\n}\n@media (prefers-color-scheme: dark) {\n.link-item .menu-icon path[data-v-5ca97ffe], .link-item .menu-icon line[data-v-5ca97ffe], .link-item .menu-icon polyline[data-v-5ca97ffe], .link-item .menu-icon rect[data-v-5ca97ffe], .link-item .menu-icon circle[data-v-5ca97ffe], .link-item .menu-icon ellipse[data-v-5ca97ffe] {\n stroke: #bec6cf;\n}\n.link-item .menu-link[data-v-5ca97ffe] {\n color: #bec6cf;\n}\n}\n",""])},BOt2:function(e,t,n){"use strict";var r=n("xCqy"),i=n("L2JU");function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var s={name:"Vignette",computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Object(i.b)(["processingPopup"]),{isVisible:function(){return this.processingPopup||this.isVisibleVignette}}),data:function(){return{isVisibleVignette:!1}},methods:{closePopup:function(){r.a.$emit("popup:close"),r.a.$emit("mobileMenu:hide"),r.a.$emit("mobileSortingAndPreview",!1)}},created:function(){var e=this;r.a.$on("popup:close",(function(){return e.isVisibleVignette=!1})),r.a.$on("popup:open",(function(){return e.isVisibleVignette=!0})),r.a.$on("alert:open",(function(){return e.isVisibleVignette=!0})),r.a.$on("success:open",(function(){return e.isVisibleVignette=!0})),r.a.$on("confirm:open",(function(){return e.isVisibleVignette=!0})),r.a.$on("mobileSortingAndPreviewVignette",(function(t){return e.isVisibleVignette=t}))}},l=(n("+ZAI"),n("KHd+")),c=Object(l.a)(s,(function(){var e=this.$createElement,t=this._self._c||e;return t("transition",{attrs:{name:"vignette"}},[this.isVisible?t("div",{staticClass:"vignette",on:{click:this.closePopup}}):this._e()])}),[],!1,null,"602e55a4",null);t.a=c.exports},CGC8:function(e,t,n){"use strict";var r=n("Z0Lu");n.n(r).a},CgaS:function(e,t,n){"use strict";var r=n("xTJ+"),i=n("MLWZ"),a=n("9rSQ"),o=n("UnBK"),s=n("SntB");function l(e){this.defaults=e,this.interceptors={request:new a,response:new a}}l.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=s(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=[o,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach((function(e){t.unshift(e.fulfilled,e.rejected)})),this.interceptors.response.forEach((function(e){t.push(e.fulfilled,e.rejected)}));t.length;)n=n.then(t.shift(),t.shift());return n},l.prototype.getUri=function(e){return e=s(this.defaults,e),i(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},r.forEach(["delete","get","head","options"],(function(e){l.prototype[e]=function(t,n){return this.request(r.merge(n||{},{method:e,url:t}))}})),r.forEach(["post","put","patch"],(function(e){l.prototype[e]=function(t,n,i){return this.request(r.merge(i||{},{method:e,url:t,data:n}))}})),e.exports=l},CjXH:function(e,t,n){"use strict";n.d(t,"a",(function(){return a})),n.d(t,"b",(function(){return o})),n.d(t,"c",(function(){return s})),n.d(t,"e",(function(){return l})),n.d(t,"d",(function(){return c})),n.d(t,"f",(function(){return u})),n.d(t,"g",(function(){return f})),n.d(t,"h",(function(){return p})),n.d(t,"i",(function(){return d})),n.d(t,"k",(function(){return h})),n.d(t,"j",(function(){return v})),n.d(t,"l",(function(){return m})),n.d(t,"m",(function(){return g})),n.d(t,"n",(function(){return y})),n.d(t,"o",(function(){return b})),n.d(t,"p",(function(){return _})),n.d(t,"q",(function(){return w})),n.d(t,"r",(function(){return x})),n.d(t,"s",(function(){return k})),n.d(t,"u",(function(){return S})),n.d(t,"t",(function(){return A})),n.d(t,"w",(function(){return C})),n.d(t,"v",(function(){return E})),n.d(t,"y",(function(){return O})),n.d(t,"x",(function(){return T})),n.d(t,"z",(function(){return I})),n.d(t,"A",(function(){return N})),n.d(t,"B",(function(){return P})),n.d(t,"C",(function(){return z})),n.d(t,"D",(function(){return M})),n.d(t,"E",(function(){return L})),n.d(t,"F",(function(){return R})),n.d(t,"G",(function(){return j})),n.d(t,"H",(function(){return $})),n.d(t,"I",(function(){return D})),n.d(t,"J",(function(){return F})),n.d(t,"K",(function(){return B})),n.d(t,"L",(function(){return U})),n.d(t,"M",(function(){return H})),n.d(t,"N",(function(){return V})),n.d(t,"O",(function(){return G})),n.d(t,"P",(function(){return W})),n.d(t,"Q",(function(){return q})),n.d(t,"R",(function(){return K})),n.d(t,"S",(function(){return Y})),n.d(t,"T",(function(){return J})),n.d(t,"U",(function(){return Z})),n.d(t,"V",(function(){return X})),n.d(t,"W",(function(){return Q})),n.d(t,"X",(function(){return ee})),n.d(t,"Y",(function(){return te})),n.d(t,"Z",(function(){return ne})),n.d(t,"ab",(function(){return re})),n.d(t,"bb",(function(){return ie})),n.d(t,"cb",(function(){return ae})),n.d(t,"eb",(function(){return oe})),n.d(t,"db",(function(){return se})),n.d(t,"fb",(function(){return le})),n.d(t,"gb",(function(){return ce})),n.d(t,"ib",(function(){return ue})),n.d(t,"hb",(function(){return fe}));var r=n("kvrn"),i=n.n(r),a={name:"ArrowUpIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-arrow-up"},t.data]),[e("line",{attrs:{x1:"12",y1:"19",x2:"12",y2:"5"}}),e("polyline",{attrs:{points:"5 12 12 5 19 12"}})])}},o={name:"BoxIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-box"},t.data]),[e("path",{attrs:{d:"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"}}),e("polyline",{attrs:{points:"3.27 6.96 12 12.01 20.73 6.96"}}),e("line",{attrs:{x1:"12",y1:"22.08",x2:"12",y2:"12"}})])}},s={name:"CalendarIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-calendar"},t.data]),[e("rect",{attrs:{x:"3",y:"4",width:"18",height:"18",rx:"2",ry:"2"}}),e("line",{attrs:{x1:"16",y1:"2",x2:"16",y2:"6"}}),e("line",{attrs:{x1:"8",y1:"2",x2:"8",y2:"6"}}),e("line",{attrs:{x1:"3",y1:"10",x2:"21",y2:"10"}})])}},l={name:"CheckSquareIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-check-square"},t.data]),[e("polyline",{attrs:{points:"9 11 12 14 22 4"}}),e("path",{attrs:{d:"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"}})])}},c={name:"CheckIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-check"},t.data]),[e("polyline",{attrs:{points:"20 6 9 17 4 12"}})])}},u={name:"ChevronDownIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-chevron-down"},t.data]),[e("polyline",{attrs:{points:"6 9 12 15 18 9"}})])}},f={name:"ChevronLeftIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-chevron-left"},t.data]),[e("polyline",{attrs:{points:"15 18 9 12 15 6"}})])}},p={name:"ChevronRightIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-chevron-right"},t.data]),[e("polyline",{attrs:{points:"9 18 15 12 9 6"}})])}},d={name:"ChevronUpIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-chevron-up"},t.data]),[e("polyline",{attrs:{points:"18 15 12 9 6 15"}})])}},h={name:"CloudOffIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-cloud-off"},t.data]),[e("path",{attrs:{d:"M22.61 16.95A5 5 0 0 0 18 10h-1.26a8 8 0 0 0-7.05-6M5 5a8 8 0 0 0 4 15h9a5 5 0 0 0 1.7-.3"}}),e("line",{attrs:{x1:"1",y1:"1",x2:"23",y2:"23"}})])}},v={name:"CloudIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-cloud"},t.data]),[e("path",{attrs:{d:"M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z"}})])}},m={name:"CodeIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-code"},t.data]),[e("polyline",{attrs:{points:"16 18 22 12 16 6"}}),e("polyline",{attrs:{points:"8 6 2 12 8 18"}})])}},g={name:"CornerDownRightIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-corner-down-right"},t.data]),[e("polyline",{attrs:{points:"15 10 20 15 15 20"}}),e("path",{attrs:{d:"M4 4v7a4 4 0 0 0 4 4h12"}})])}},y={name:"CreditCardIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-credit-card"},t.data]),[e("rect",{attrs:{x:"1",y:"4",width:"22",height:"16",rx:"2",ry:"2"}}),e("line",{attrs:{x1:"1",y1:"10",x2:"23",y2:"10"}})])}},b={name:"DatabaseIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-database"},t.data]),[e("ellipse",{attrs:{cx:"12",cy:"5",rx:"9",ry:"3"}}),e("path",{attrs:{d:"M21 12c0 1.66-4 3-9 3s-9-1.34-9-3"}}),e("path",{attrs:{d:"M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5"}})])}},_={name:"DollarSignIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-dollar-sign"},t.data]),[e("line",{attrs:{x1:"12",y1:"1",x2:"12",y2:"23"}}),e("path",{attrs:{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"}})])}},w={name:"DownloadCloudIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-download-cloud"},t.data]),[e("polyline",{attrs:{points:"8 17 12 21 16 17"}}),e("line",{attrs:{x1:"12",y1:"12",x2:"12",y2:"21"}}),e("path",{attrs:{d:"M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29"}})])}},x={name:"Edit2Icon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-edit-2"},t.data]),[e("path",{attrs:{d:"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"}})])}},k={name:"ExternalLinkIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-external-link"},t.data]),[e("path",{attrs:{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}}),e("polyline",{attrs:{points:"15 3 21 3 21 9"}}),e("line",{attrs:{x1:"10",y1:"14",x2:"21",y2:"3"}})])}},S={name:"EyeOffIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-eye-off"},t.data]),[e("path",{attrs:{d:"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"}}),e("line",{attrs:{x1:"1",y1:"1",x2:"23",y2:"23"}})])}},A={name:"EyeIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-eye"},t.data]),[e("path",{attrs:{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}}),e("circle",{attrs:{cx:"12",cy:"12",r:"3"}})])}},C={name:"FileTextIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-file-text"},t.data]),[e("path",{attrs:{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}}),e("polyline",{attrs:{points:"14 2 14 8 20 8"}}),e("line",{attrs:{x1:"16",y1:"13",x2:"8",y2:"13"}}),e("line",{attrs:{x1:"16",y1:"17",x2:"8",y2:"17"}}),e("polyline",{attrs:{points:"10 9 9 9 8 9"}})])}},E={name:"FileIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-file"},t.data]),[e("path",{attrs:{d:"M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"}}),e("polyline",{attrs:{points:"13 2 13 9 20 9"}})])}},O={name:"FolderPlusIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-folder-plus"},t.data]),[e("path",{attrs:{d:"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"}}),e("line",{attrs:{x1:"12",y1:"11",x2:"12",y2:"17"}}),e("line",{attrs:{x1:"9",y1:"14",x2:"15",y2:"14"}})])}},T={name:"FolderIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-folder"},t.data]),[e("path",{attrs:{d:"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"}})])}},I={name:"GridIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-grid"},t.data]),[e("rect",{attrs:{x:"3",y:"3",width:"7",height:"7"}}),e("rect",{attrs:{x:"14",y:"3",width:"7",height:"7"}}),e("rect",{attrs:{x:"14",y:"14",width:"7",height:"7"}}),e("rect",{attrs:{x:"3",y:"14",width:"7",height:"7"}})])}},N={name:"HardDriveIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-hard-drive"},t.data]),[e("line",{attrs:{x1:"22",y1:"12",x2:"2",y2:"12"}}),e("path",{attrs:{d:"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"}}),e("line",{attrs:{x1:"6",y1:"16",x2:"6.01",y2:"16"}}),e("line",{attrs:{x1:"10",y1:"16",x2:"10.01",y2:"16"}})])}},P={name:"HomeIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-home"},t.data]),[e("path",{attrs:{d:"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"}}),e("polyline",{attrs:{points:"9 22 9 12 15 12 15 22"}})])}},z={name:"ImageIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-image"},t.data]),[e("rect",{attrs:{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"}}),e("circle",{attrs:{cx:"8.5",cy:"8.5",r:"1.5"}}),e("polyline",{attrs:{points:"21 15 16 10 5 21"}})])}},M={name:"InfoIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-info"},t.data]),[e("circle",{attrs:{cx:"12",cy:"12",r:"10"}}),e("line",{attrs:{x1:"12",y1:"16",x2:"12",y2:"12"}}),e("line",{attrs:{x1:"12",y1:"8",x2:"12.01",y2:"8"}})])}},L={name:"LifeBuoyIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-life-buoy"},t.data]),[e("circle",{attrs:{cx:"12",cy:"12",r:"10"}}),e("circle",{attrs:{cx:"12",cy:"12",r:"4"}}),e("line",{attrs:{x1:"4.93",y1:"4.93",x2:"9.17",y2:"9.17"}}),e("line",{attrs:{x1:"14.83",y1:"14.83",x2:"19.07",y2:"19.07"}}),e("line",{attrs:{x1:"14.83",y1:"9.17",x2:"19.07",y2:"4.93"}}),e("line",{attrs:{x1:"14.83",y1:"9.17",x2:"18.36",y2:"5.64"}}),e("line",{attrs:{x1:"4.93",y1:"19.07",x2:"9.17",y2:"14.83"}})])}},R={name:"LinkIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-link"},t.data]),[e("path",{attrs:{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}}),e("path",{attrs:{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}})])}},j={name:"ListIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-list"},t.data]),[e("line",{attrs:{x1:"8",y1:"6",x2:"21",y2:"6"}}),e("line",{attrs:{x1:"8",y1:"12",x2:"21",y2:"12"}}),e("line",{attrs:{x1:"8",y1:"18",x2:"21",y2:"18"}}),e("line",{attrs:{x1:"3",y1:"6",x2:"3.01",y2:"6"}}),e("line",{attrs:{x1:"3",y1:"12",x2:"3.01",y2:"12"}}),e("line",{attrs:{x1:"3",y1:"18",x2:"3.01",y2:"18"}})])}},$={name:"LockIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-lock"},t.data]),[e("rect",{attrs:{x:"3",y:"11",width:"18",height:"11",rx:"2",ry:"2"}}),e("path",{attrs:{d:"M7 11V7a5 5 0 0 1 10 0v4"}})])}},D={name:"MailIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-mail"},t.data]),[e("path",{attrs:{d:"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"}}),e("polyline",{attrs:{points:"22,6 12,13 2,6"}})])}},F={name:"MenuIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-menu"},t.data]),[e("line",{attrs:{x1:"3",y1:"12",x2:"21",y2:"12"}}),e("line",{attrs:{x1:"3",y1:"6",x2:"21",y2:"6"}}),e("line",{attrs:{x1:"3",y1:"18",x2:"21",y2:"18"}})])}},B={name:"MonitorIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-monitor"},t.data]),[e("rect",{attrs:{x:"2",y:"3",width:"20",height:"14",rx:"2",ry:"2"}}),e("line",{attrs:{x1:"8",y1:"21",x2:"16",y2:"21"}}),e("line",{attrs:{x1:"12",y1:"17",x2:"12",y2:"21"}})])}},U={name:"MoreHorizontalIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-more-horizontal"},t.data]),[e("circle",{attrs:{cx:"12",cy:"12",r:"1"}}),e("circle",{attrs:{cx:"19",cy:"12",r:"1"}}),e("circle",{attrs:{cx:"5",cy:"12",r:"1"}})])}},H={name:"MoreVerticalIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-more-vertical"},t.data]),[e("circle",{attrs:{cx:"12",cy:"12",r:"1"}}),e("circle",{attrs:{cx:"12",cy:"5",r:"1"}}),e("circle",{attrs:{cx:"12",cy:"19",r:"1"}})])}},V={name:"MusicIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-music"},t.data]),[e("path",{attrs:{d:"M9 18V5l12-2v13"}}),e("circle",{attrs:{cx:"6",cy:"18",r:"3"}}),e("circle",{attrs:{cx:"18",cy:"16",r:"3"}})])}},G={name:"PaperclipIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-paperclip"},t.data]),[e("path",{attrs:{d:"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"}})])}},W={name:"PlusIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-plus"},t.data]),[e("line",{attrs:{x1:"12",y1:"5",x2:"12",y2:"19"}}),e("line",{attrs:{x1:"5",y1:"12",x2:"19",y2:"12"}})])}},q={name:"PowerIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-power"},t.data]),[e("path",{attrs:{d:"M18.36 6.64a9 9 0 1 1-12.73 0"}}),e("line",{attrs:{x1:"12",y1:"2",x2:"12",y2:"12"}})])}},K={name:"PrinterIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-printer"},t.data]),[e("polyline",{attrs:{points:"6 9 6 2 18 2 18 9"}}),e("path",{attrs:{d:"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2"}}),e("rect",{attrs:{x:"6",y:"14",width:"12",height:"8"}})])}},Y={name:"RefreshCwIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-refresh-cw"},t.data]),[e("polyline",{attrs:{points:"23 4 23 10 17 10"}}),e("polyline",{attrs:{points:"1 20 1 14 7 14"}}),e("path",{attrs:{d:"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"}})])}},J={name:"SearchIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-search"},t.data]),[e("circle",{attrs:{cx:"11",cy:"11",r:"8"}}),e("line",{attrs:{x1:"21",y1:"21",x2:"16.65",y2:"16.65"}})])}},Z={name:"SendIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-send"},t.data]),[e("line",{attrs:{x1:"22",y1:"2",x2:"11",y2:"13"}}),e("polygon",{attrs:{points:"22 2 15 22 11 13 2 9 22 2"}})])}},X={name:"SettingsIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-settings"},t.data]),[e("circle",{attrs:{cx:"12",cy:"12",r:"3"}}),e("path",{attrs:{d:"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"}})])}},Q={name:"ShareIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-share"},t.data]),[e("path",{attrs:{d:"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8"}}),e("polyline",{attrs:{points:"16 6 12 2 8 6"}}),e("line",{attrs:{x1:"12",y1:"2",x2:"12",y2:"15"}})])}},ee={name:"SmileIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-smile"},t.data]),[e("circle",{attrs:{cx:"12",cy:"12",r:"10"}}),e("path",{attrs:{d:"M8 14s1.5 2 4 2 4-2 4-2"}}),e("line",{attrs:{x1:"9",y1:"9",x2:"9.01",y2:"9"}}),e("line",{attrs:{x1:"15",y1:"9",x2:"15.01",y2:"9"}})])}},te={name:"StarIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-star"},t.data]),[e("polygon",{attrs:{points:"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"}})])}},ne={name:"Trash2Icon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-trash-2"},t.data]),[e("polyline",{attrs:{points:"3 6 5 6 21 6"}}),e("path",{attrs:{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"}}),e("line",{attrs:{x1:"10",y1:"11",x2:"10",y2:"17"}}),e("line",{attrs:{x1:"14",y1:"11",x2:"14",y2:"17"}})])}},re={name:"TrashIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-trash"},t.data]),[e("polyline",{attrs:{points:"3 6 5 6 21 6"}}),e("path",{attrs:{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"}})])}},ie={name:"UnlockIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-unlock"},t.data]),[e("rect",{attrs:{x:"3",y:"11",width:"18",height:"11",rx:"2",ry:"2"}}),e("path",{attrs:{d:"M7 11V7a5 5 0 0 1 9.9-1"}})])}},ae={name:"UploadCloudIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-upload-cloud"},t.data]),[e("polyline",{attrs:{points:"16 16 12 12 8 16"}}),e("line",{attrs:{x1:"12",y1:"12",x2:"12",y2:"21"}}),e("path",{attrs:{d:"M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3"}}),e("polyline",{attrs:{points:"16 16 12 12 8 16"}})])}},oe={name:"UserPlusIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-user-plus"},t.data]),[e("path",{attrs:{d:"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"}}),e("circle",{attrs:{cx:"8.5",cy:"7",r:"4"}}),e("line",{attrs:{x1:"20",y1:"8",x2:"20",y2:"14"}}),e("line",{attrs:{x1:"23",y1:"11",x2:"17",y2:"11"}})])}},se={name:"UserIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-user"},t.data]),[e("path",{attrs:{d:"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}}),e("circle",{attrs:{cx:"12",cy:"7",r:"4"}})])}},le={name:"UsersIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-users"},t.data]),[e("path",{attrs:{d:"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"}}),e("circle",{attrs:{cx:"9",cy:"7",r:"4"}}),e("path",{attrs:{d:"M23 21v-2a4 4 0 0 0-3-3.87"}}),e("path",{attrs:{d:"M16 3.13a4 4 0 0 1 0 7.75"}})])}},ce={name:"VideoIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-video"},t.data]),[e("polygon",{attrs:{points:"23 7 16 12 23 17 23 7"}}),e("rect",{attrs:{x:"1",y:"5",width:"15",height:"14",rx:"2",ry:"2"}})])}},ue={name:"XSquareIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-x-square"},t.data]),[e("rect",{attrs:{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"}}),e("line",{attrs:{x1:"9",y1:"9",x2:"15",y2:"15"}}),e("line",{attrs:{x1:"15",y1:"9",x2:"9",y2:"15"}})])}},fe={name:"XIcon",props:{size:{type:String,default:"24",validator:function(e){return!isNaN(e)||e.length>=2&&!isNaN(e.slice(0,e.length-1))&&"x"===e.slice(-1)}}},functional:!0,render:function(e,t){var n="x"===t.props.size.slice(-1)?t.props.size.slice(0,t.props.size.length-1)+"em":parseInt(t.props.size)+"px",r=t.data.attrs||{};return r.width=r.width||n,r.height=r.height||n,t.data.attrs=r,e("svg",i()([{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},class:"feather feather-x"},t.data]),[e("line",{attrs:{x1:"18",y1:"6",x2:"6",y2:"18"}}),e("line",{attrs:{x1:"6",y1:"6",x2:"18",y2:"18"}})])}}},CsPh:function(e,t,n){"use strict";var r=n("ga/a");n.n(r).a},D62o:function(e,t,n){"use strict";var r=n("xCqy"),i=n("CjXH"),a={name:"MenuBar",props:["title"],components:{ChevronLeftIcon:i.g,MenuIcon:i.J},methods:{showMobileNavigation:function(){r.a.$emit("show:mobile-navigation")},goBack:function(){this.$router.back()}}},o=(n("qls5"),n("KHd+")),s=Object(o.a)(a,(function(){var e=this.$createElement,t=this._self._c||e;return t("header",{staticClass:"mobile-header"},[t("div",{staticClass:"go-back",on:{click:this.goBack}},[t("chevron-left-icon",{staticClass:"icon",attrs:{size:"17"}})],1),this._v(" "),t("div",{staticClass:"location-name"},[this._v(this._s(this.title))]),this._v(" "),t("div",{staticClass:"mobile-menu",on:{click:this.showMobileNavigation}},[t("menu-icon",{staticClass:"icon",attrs:{size:"17"}})],1)])}),[],!1,null,"43ce1cd0",null);t.a=s.exports},DWEW:function(e,t,n){"use strict";var r=n("QSDE");n.n(r).a},DfZB:function(e,t,n){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},ER3f:function(e,t,n){(e.exports=n("I1BE")(!1)).push([e.i,".mobile-navigation[data-v-44c6fc05] {\n width: 100%;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 99;\n}\n.mobile-navigation .mobile-menu-label[data-v-44c6fc05] {\n margin-top: 30px;\n margin-bottom: 5px;\n font-size: 0.6875em;\n color: rgba(27, 37, 57, 0.7);\n display: block;\n}\n.mobile-navigation .mobile-menu-label[data-v-44c6fc05]:first-child {\n margin-top: 0;\n}\n@media (prefers-color-scheme: dark) {\n.mobile-navigation .mobile-menu-label[data-v-44c6fc05] {\n color: #7d858c;\n}\n}\n",""])},HSsa:function(e,t,n){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return e.apply(t,n)}}},I1BE:function(e,t){e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=function(e,t){var n=e[1]||"",r=e[3];if(!r)return n;if(t&&"function"==typeof btoa){var i=(o=r,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */"),a=r.sources.map((function(e){return"/*# sourceURL="+r.sourceRoot+e+" */"}));return[n].concat(a).concat([i]).join("\n")}var o;return[n].join("\n")}(t,e);return t[2]?"@media "+t[2]+"{"+n+"}":n})).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},i=0;i<this.length;i++){var a=this[i][0];"number"==typeof a&&(r[a]=!0)}for(i=0;i<e.length;i++){var o=e[i];"number"==typeof o[0]&&r[o[0]]||(n&&!o[2]?o[2]=n:n&&(o[2]="("+o[2]+") and ("+n+")"),t.push(o))}},t}},INkZ:function(e,t,n){"use strict";(function(t,n){var r=Object.freeze({});function i(e){return null==e}function a(e){return null!=e}function o(e){return!0===e}function s(e){return"string"==typeof e||"number"==typeof e||"symbol"==typeof e||"boolean"==typeof e}function l(e){return null!==e&&"object"==typeof e}var c=Object.prototype.toString;function u(e){return"[object Object]"===c.call(e)}function f(e){var t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)}function p(e){return a(e)&&"function"==typeof e.then&&"function"==typeof e.catch}function d(e){return null==e?"":Array.isArray(e)||u(e)&&e.toString===c?JSON.stringify(e,null,2):String(e)}function h(e){var t=parseFloat(e);return isNaN(t)?e:t}function v(e,t){for(var n=Object.create(null),r=e.split(","),i=0;i<r.length;i++)n[r[i]]=!0;return t?function(e){return n[e.toLowerCase()]}:function(e){return n[e]}}var m=v("slot,component",!0),g=v("key,ref,slot,slot-scope,is");function y(e,t){if(e.length){var n=e.indexOf(t);if(n>-1)return e.splice(n,1)}}var b=Object.prototype.hasOwnProperty;function _(e,t){return b.call(e,t)}function w(e){var t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}var x=/-(\w)/g,k=w((function(e){return e.replace(x,(function(e,t){return t?t.toUpperCase():""}))})),S=w((function(e){return e.charAt(0).toUpperCase()+e.slice(1)})),A=/\B([A-Z])/g,C=w((function(e){return e.replace(A,"-$1").toLowerCase()})),E=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function O(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function T(e,t){for(var n in t)e[n]=t[n];return e}function I(e){for(var t={},n=0;n<e.length;n++)e[n]&&T(t,e[n]);return t}function N(e,t,n){}var P=function(e,t,n){return!1},z=function(e){return e};function M(e,t){if(e===t)return!0;var n=l(e),r=l(t);if(!n||!r)return!n&&!r&&String(e)===String(t);try{var i=Array.isArray(e),a=Array.isArray(t);if(i&&a)return e.length===t.length&&e.every((function(e,n){return M(e,t[n])}));if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(i||a)return!1;var o=Object.keys(e),s=Object.keys(t);return o.length===s.length&&o.every((function(n){return M(e[n],t[n])}))}catch(e){return!1}}function L(e,t){for(var n=0;n<e.length;n++)if(M(e[n],t))return n;return-1}function R(e){var t=!1;return function(){t||(t=!0,e.apply(this,arguments))}}var j="data-server-rendered",$=["component","directive","filter"],D=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated","errorCaptured","serverPrefetch"],F={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:P,isReservedAttr:P,isUnknownElement:P,getTagNamespace:N,parsePlatformTagName:z,mustUseProp:P,async:!0,_lifecycleHooks:D},B=/a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/;function U(e,t,n,r){Object.defineProperty(e,t,{value:n,enumerable:!!r,writable:!0,configurable:!0})}var H,V=new RegExp("[^"+B.source+".$_\\d]"),G="__proto__"in{},W="undefined"!=typeof window,q="undefined"!=typeof WXEnvironment&&!!WXEnvironment.platform,K=q&&WXEnvironment.platform.toLowerCase(),Y=W&&window.navigator.userAgent.toLowerCase(),J=Y&&/msie|trident/.test(Y),Z=Y&&Y.indexOf("msie 9.0")>0,X=Y&&Y.indexOf("edge/")>0,Q=(Y&&Y.indexOf("android"),Y&&/iphone|ipad|ipod|ios/.test(Y)||"ios"===K),ee=(Y&&/chrome\/\d+/.test(Y),Y&&/phantomjs/.test(Y),Y&&Y.match(/firefox\/(\d+)/)),te={}.watch,ne=!1;if(W)try{var re={};Object.defineProperty(re,"passive",{get:function(){ne=!0}}),window.addEventListener("test-passive",null,re)}catch(r){}var ie=function(){return void 0===H&&(H=!W&&!q&&void 0!==t&&t.process&&"server"===t.process.env.VUE_ENV),H},ae=W&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function oe(e){return"function"==typeof e&&/native code/.test(e.toString())}var se,le="undefined"!=typeof Symbol&&oe(Symbol)&&"undefined"!=typeof Reflect&&oe(Reflect.ownKeys);se="undefined"!=typeof Set&&oe(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var ce=N,ue=0,fe=function(){this.id=ue++,this.subs=[]};fe.prototype.addSub=function(e){this.subs.push(e)},fe.prototype.removeSub=function(e){y(this.subs,e)},fe.prototype.depend=function(){fe.target&&fe.target.addDep(this)},fe.prototype.notify=function(){for(var e=this.subs.slice(),t=0,n=e.length;t<n;t++)e[t].update()},fe.target=null;var pe=[];function de(e){pe.push(e),fe.target=e}function he(){pe.pop(),fe.target=pe[pe.length-1]}var ve=function(e,t,n,r,i,a,o,s){this.tag=e,this.data=t,this.children=n,this.text=r,this.elm=i,this.ns=void 0,this.context=a,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=t&&t.key,this.componentOptions=o,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1},me={child:{configurable:!0}};me.child.get=function(){return this.componentInstance},Object.defineProperties(ve.prototype,me);var ge=function(e){void 0===e&&(e="");var t=new ve;return t.text=e,t.isComment=!0,t};function ye(e){return new ve(void 0,void 0,void 0,String(e))}function be(e){var t=new ve(e.tag,e.data,e.children&&e.children.slice(),e.text,e.elm,e.context,e.componentOptions,e.asyncFactory);return t.ns=e.ns,t.isStatic=e.isStatic,t.key=e.key,t.isComment=e.isComment,t.fnContext=e.fnContext,t.fnOptions=e.fnOptions,t.fnScopeId=e.fnScopeId,t.asyncMeta=e.asyncMeta,t.isCloned=!0,t}var _e=Array.prototype,we=Object.create(_e);["push","pop","shift","unshift","splice","sort","reverse"].forEach((function(e){var t=_e[e];U(we,e,(function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];var i,a=t.apply(this,n),o=this.__ob__;switch(e){case"push":case"unshift":i=n;break;case"splice":i=n.slice(2)}return i&&o.observeArray(i),o.dep.notify(),a}))}));var xe=Object.getOwnPropertyNames(we),ke=!0;function Se(e){ke=e}var Ae=function(e){var t;this.value=e,this.dep=new fe,this.vmCount=0,U(e,"__ob__",this),Array.isArray(e)?(G?(t=we,e.__proto__=t):function(e,t,n){for(var r=0,i=n.length;r<i;r++){var a=n[r];U(e,a,t[a])}}(e,we,xe),this.observeArray(e)):this.walk(e)};function Ce(e,t){var n;if(l(e)&&!(e instanceof ve))return _(e,"__ob__")&&e.__ob__ instanceof Ae?n=e.__ob__:ke&&!ie()&&(Array.isArray(e)||u(e))&&Object.isExtensible(e)&&!e._isVue&&(n=new Ae(e)),t&&n&&n.vmCount++,n}function Ee(e,t,n,r,i){var a=new fe,o=Object.getOwnPropertyDescriptor(e,t);if(!o||!1!==o.configurable){var s=o&&o.get,l=o&&o.set;s&&!l||2!==arguments.length||(n=e[t]);var c=!i&&Ce(n);Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:function(){var t=s?s.call(e):n;return fe.target&&(a.depend(),c&&(c.dep.depend(),Array.isArray(t)&&function e(t){for(var n=void 0,r=0,i=t.length;r<i;r++)(n=t[r])&&n.__ob__&&n.__ob__.dep.depend(),Array.isArray(n)&&e(n)}(t))),t},set:function(t){var r=s?s.call(e):n;t===r||t!=t&&r!=r||s&&!l||(l?l.call(e,t):n=t,c=!i&&Ce(t),a.notify())}})}}function Oe(e,t,n){if(Array.isArray(e)&&f(t))return e.length=Math.max(e.length,t),e.splice(t,1,n),n;if(t in e&&!(t in Object.prototype))return e[t]=n,n;var r=e.__ob__;return e._isVue||r&&r.vmCount?n:r?(Ee(r.value,t,n),r.dep.notify(),n):(e[t]=n,n)}function Te(e,t){if(Array.isArray(e)&&f(t))e.splice(t,1);else{var n=e.__ob__;e._isVue||n&&n.vmCount||_(e,t)&&(delete e[t],n&&n.dep.notify())}}Ae.prototype.walk=function(e){for(var t=Object.keys(e),n=0;n<t.length;n++)Ee(e,t[n])},Ae.prototype.observeArray=function(e){for(var t=0,n=e.length;t<n;t++)Ce(e[t])};var Ie=F.optionMergeStrategies;function Ne(e,t){if(!t)return e;for(var n,r,i,a=le?Reflect.ownKeys(t):Object.keys(t),o=0;o<a.length;o++)"__ob__"!==(n=a[o])&&(r=e[n],i=t[n],_(e,n)?r!==i&&u(r)&&u(i)&&Ne(r,i):Oe(e,n,i));return e}function Pe(e,t,n){return n?function(){var r="function"==typeof t?t.call(n,n):t,i="function"==typeof e?e.call(n,n):e;return r?Ne(r,i):i}:t?e?function(){return Ne("function"==typeof t?t.call(this,this):t,"function"==typeof e?e.call(this,this):e)}:t:e}function ze(e,t){var n=t?e?e.concat(t):Array.isArray(t)?t:[t]:e;return n?function(e){for(var t=[],n=0;n<e.length;n++)-1===t.indexOf(e[n])&&t.push(e[n]);return t}(n):n}function Me(e,t,n,r){var i=Object.create(e||null);return t?T(i,t):i}Ie.data=function(e,t,n){return n?Pe(e,t,n):t&&"function"!=typeof t?e:Pe(e,t)},D.forEach((function(e){Ie[e]=ze})),$.forEach((function(e){Ie[e+"s"]=Me})),Ie.watch=function(e,t,n,r){if(e===te&&(e=void 0),t===te&&(t=void 0),!t)return Object.create(e||null);if(!e)return t;var i={};for(var a in T(i,e),t){var o=i[a],s=t[a];o&&!Array.isArray(o)&&(o=[o]),i[a]=o?o.concat(s):Array.isArray(s)?s:[s]}return i},Ie.props=Ie.methods=Ie.inject=Ie.computed=function(e,t,n,r){if(!e)return t;var i=Object.create(null);return T(i,e),t&&T(i,t),i},Ie.provide=Pe;var Le=function(e,t){return void 0===t?e:t};function Re(e,t,n){if("function"==typeof t&&(t=t.options),function(e,t){var n=e.props;if(n){var r,i,a={};if(Array.isArray(n))for(r=n.length;r--;)"string"==typeof(i=n[r])&&(a[k(i)]={type:null});else if(u(n))for(var o in n)i=n[o],a[k(o)]=u(i)?i:{type:i};e.props=a}}(t),function(e,t){var n=e.inject;if(n){var r=e.inject={};if(Array.isArray(n))for(var i=0;i<n.length;i++)r[n[i]]={from:n[i]};else if(u(n))for(var a in n){var o=n[a];r[a]=u(o)?T({from:a},o):{from:o}}}}(t),function(e){var t=e.directives;if(t)for(var n in t){var r=t[n];"function"==typeof r&&(t[n]={bind:r,update:r})}}(t),!t._base&&(t.extends&&(e=Re(e,t.extends,n)),t.mixins))for(var r=0,i=t.mixins.length;r<i;r++)e=Re(e,t.mixins[r],n);var a,o={};for(a in e)s(a);for(a in t)_(e,a)||s(a);function s(r){var i=Ie[r]||Le;o[r]=i(e[r],t[r],n,r)}return o}function je(e,t,n,r){if("string"==typeof n){var i=e[t];if(_(i,n))return i[n];var a=k(n);if(_(i,a))return i[a];var o=S(a);return _(i,o)?i[o]:i[n]||i[a]||i[o]}}function $e(e,t,n,r){var i=t[e],a=!_(n,e),o=n[e],s=Be(Boolean,i.type);if(s>-1)if(a&&!_(i,"default"))o=!1;else if(""===o||o===C(e)){var l=Be(String,i.type);(l<0||s<l)&&(o=!0)}if(void 0===o){o=function(e,t,n){if(_(t,"default")){var r=t.default;return e&&e.$options.propsData&&void 0===e.$options.propsData[n]&&void 0!==e._props[n]?e._props[n]:"function"==typeof r&&"Function"!==De(t.type)?r.call(e):r}}(r,i,e);var c=ke;Se(!0),Ce(o),Se(c)}return o}function De(e){var t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:""}function Fe(e,t){return De(e)===De(t)}function Be(e,t){if(!Array.isArray(t))return Fe(t,e)?0:-1;for(var n=0,r=t.length;n<r;n++)if(Fe(t[n],e))return n;return-1}function Ue(e,t,n){de();try{if(t)for(var r=t;r=r.$parent;){var i=r.$options.errorCaptured;if(i)for(var a=0;a<i.length;a++)try{if(!1===i[a].call(r,e,t,n))return}catch(e){Ve(e,r,"errorCaptured hook")}}Ve(e,t,n)}finally{he()}}function He(e,t,n,r,i){var a;try{(a=n?e.apply(t,n):e.call(t))&&!a._isVue&&p(a)&&!a._handled&&(a.catch((function(e){return Ue(e,r,i+" (Promise/async)")})),a._handled=!0)}catch(e){Ue(e,r,i)}return a}function Ve(e,t,n){if(F.errorHandler)try{return F.errorHandler.call(null,e,t,n)}catch(t){t!==e&&Ge(t,null,"config.errorHandler")}Ge(e,t,n)}function Ge(e,t,n){if(!W&&!q||"undefined"==typeof console)throw e;console.error(e)}var We,qe=!1,Ke=[],Ye=!1;function Je(){Ye=!1;var e=Ke.slice(0);Ke.length=0;for(var t=0;t<e.length;t++)e[t]()}if("undefined"!=typeof Promise&&oe(Promise)){var Ze=Promise.resolve();We=function(){Ze.then(Je),Q&&setTimeout(N)},qe=!0}else if(J||"undefined"==typeof MutationObserver||!oe(MutationObserver)&&"[object MutationObserverConstructor]"!==MutationObserver.toString())We=void 0!==n&&oe(n)?function(){n(Je)}:function(){setTimeout(Je,0)};else{var Xe=1,Qe=new MutationObserver(Je),et=document.createTextNode(String(Xe));Qe.observe(et,{characterData:!0}),We=function(){Xe=(Xe+1)%2,et.data=String(Xe)},qe=!0}function tt(e,t){var n;if(Ke.push((function(){if(e)try{e.call(t)}catch(e){Ue(e,t,"nextTick")}else n&&n(t)})),Ye||(Ye=!0,We()),!e&&"undefined"!=typeof Promise)return new Promise((function(e){n=e}))}var nt=new se;function rt(e){!function e(t,n){var r,i,a=Array.isArray(t);if(!(!a&&!l(t)||Object.isFrozen(t)||t instanceof ve)){if(t.__ob__){var o=t.__ob__.dep.id;if(n.has(o))return;n.add(o)}if(a)for(r=t.length;r--;)e(t[r],n);else for(r=(i=Object.keys(t)).length;r--;)e(t[i[r]],n)}}(e,nt),nt.clear()}var it=w((function(e){var t="&"===e.charAt(0),n="~"===(e=t?e.slice(1):e).charAt(0),r="!"===(e=n?e.slice(1):e).charAt(0);return{name:e=r?e.slice(1):e,once:n,capture:r,passive:t}}));function at(e,t){function n(){var e=arguments,r=n.fns;if(!Array.isArray(r))return He(r,null,arguments,t,"v-on handler");for(var i=r.slice(),a=0;a<i.length;a++)He(i[a],null,e,t,"v-on handler")}return n.fns=e,n}function ot(e,t,n,r,a,s){var l,c,u,f;for(l in e)c=e[l],u=t[l],f=it(l),i(c)||(i(u)?(i(c.fns)&&(c=e[l]=at(c,s)),o(f.once)&&(c=e[l]=a(f.name,c,f.capture)),n(f.name,c,f.capture,f.passive,f.params)):c!==u&&(u.fns=c,e[l]=u));for(l in t)i(e[l])&&r((f=it(l)).name,t[l],f.capture)}function st(e,t,n){var r;e instanceof ve&&(e=e.data.hook||(e.data.hook={}));var s=e[t];function l(){n.apply(this,arguments),y(r.fns,l)}i(s)?r=at([l]):a(s.fns)&&o(s.merged)?(r=s).fns.push(l):r=at([s,l]),r.merged=!0,e[t]=r}function lt(e,t,n,r,i){if(a(t)){if(_(t,n))return e[n]=t[n],i||delete t[n],!0;if(_(t,r))return e[n]=t[r],i||delete t[r],!0}return!1}function ct(e){return s(e)?[ye(e)]:Array.isArray(e)?function e(t,n){var r,l,c,u,f=[];for(r=0;r<t.length;r++)i(l=t[r])||"boolean"==typeof l||(u=f[c=f.length-1],Array.isArray(l)?l.length>0&&(ut((l=e(l,(n||"")+"_"+r))[0])&&ut(u)&&(f[c]=ye(u.text+l[0].text),l.shift()),f.push.apply(f,l)):s(l)?ut(u)?f[c]=ye(u.text+l):""!==l&&f.push(ye(l)):ut(l)&&ut(u)?f[c]=ye(u.text+l.text):(o(t._isVList)&&a(l.tag)&&i(l.key)&&a(n)&&(l.key="__vlist"+n+"_"+r+"__"),f.push(l)));return f}(e):void 0}function ut(e){return a(e)&&a(e.text)&&!1===e.isComment}function ft(e,t){if(e){for(var n=Object.create(null),r=le?Reflect.ownKeys(e):Object.keys(e),i=0;i<r.length;i++){var a=r[i];if("__ob__"!==a){for(var o=e[a].from,s=t;s;){if(s._provided&&_(s._provided,o)){n[a]=s._provided[o];break}s=s.$parent}if(!s&&"default"in e[a]){var l=e[a].default;n[a]="function"==typeof l?l.call(t):l}}}return n}}function pt(e,t){if(!e||!e.length)return{};for(var n={},r=0,i=e.length;r<i;r++){var a=e[r],o=a.data;if(o&&o.attrs&&o.attrs.slot&&delete o.attrs.slot,a.context!==t&&a.fnContext!==t||!o||null==o.slot)(n.default||(n.default=[])).push(a);else{var s=o.slot,l=n[s]||(n[s]=[]);"template"===a.tag?l.push.apply(l,a.children||[]):l.push(a)}}for(var c in n)n[c].every(dt)&&delete n[c];return n}function dt(e){return e.isComment&&!e.asyncFactory||" "===e.text}function ht(e,t,n){var i,a=Object.keys(t).length>0,o=e?!!e.$stable:!a,s=e&&e.$key;if(e){if(e._normalized)return e._normalized;if(o&&n&&n!==r&&s===n.$key&&!a&&!n.$hasNormal)return n;for(var l in i={},e)e[l]&&"$"!==l[0]&&(i[l]=vt(t,l,e[l]))}else i={};for(var c in t)c in i||(i[c]=mt(t,c));return e&&Object.isExtensible(e)&&(e._normalized=i),U(i,"$stable",o),U(i,"$key",s),U(i,"$hasNormal",a),i}function vt(e,t,n){var r=function(){var e=arguments.length?n.apply(null,arguments):n({});return(e=e&&"object"==typeof e&&!Array.isArray(e)?[e]:ct(e))&&(0===e.length||1===e.length&&e[0].isComment)?void 0:e};return n.proxy&&Object.defineProperty(e,t,{get:r,enumerable:!0,configurable:!0}),r}function mt(e,t){return function(){return e[t]}}function gt(e,t){var n,r,i,o,s;if(Array.isArray(e)||"string"==typeof e)for(n=new Array(e.length),r=0,i=e.length;r<i;r++)n[r]=t(e[r],r);else if("number"==typeof e)for(n=new Array(e),r=0;r<e;r++)n[r]=t(r+1,r);else if(l(e))if(le&&e[Symbol.iterator]){n=[];for(var c=e[Symbol.iterator](),u=c.next();!u.done;)n.push(t(u.value,n.length)),u=c.next()}else for(o=Object.keys(e),n=new Array(o.length),r=0,i=o.length;r<i;r++)s=o[r],n[r]=t(e[s],s,r);return a(n)||(n=[]),n._isVList=!0,n}function yt(e,t,n,r){var i,a=this.$scopedSlots[e];a?(n=n||{},r&&(n=T(T({},r),n)),i=a(n)||t):i=this.$slots[e]||t;var o=n&&n.slot;return o?this.$createElement("template",{slot:o},i):i}function bt(e){return je(this.$options,"filters",e)||z}function _t(e,t){return Array.isArray(e)?-1===e.indexOf(t):e!==t}function wt(e,t,n,r,i){var a=F.keyCodes[t]||n;return i&&r&&!F.keyCodes[t]?_t(i,r):a?_t(a,e):r?C(r)!==t:void 0}function xt(e,t,n,r,i){if(n&&l(n)){var a;Array.isArray(n)&&(n=I(n));var o=function(o){if("class"===o||"style"===o||g(o))a=e;else{var s=e.attrs&&e.attrs.type;a=r||F.mustUseProp(t,s,o)?e.domProps||(e.domProps={}):e.attrs||(e.attrs={})}var l=k(o),c=C(o);l in a||c in a||(a[o]=n[o],i&&((e.on||(e.on={}))["update:"+o]=function(e){n[o]=e}))};for(var s in n)o(s)}return e}function kt(e,t){var n=this._staticTrees||(this._staticTrees=[]),r=n[e];return r&&!t||At(r=n[e]=this.$options.staticRenderFns[e].call(this._renderProxy,null,this),"__static__"+e,!1),r}function St(e,t,n){return At(e,"__once__"+t+(n?"_"+n:""),!0),e}function At(e,t,n){if(Array.isArray(e))for(var r=0;r<e.length;r++)e[r]&&"string"!=typeof e[r]&&Ct(e[r],t+"_"+r,n);else Ct(e,t,n)}function Ct(e,t,n){e.isStatic=!0,e.key=t,e.isOnce=n}function Et(e,t){if(t&&u(t)){var n=e.on=e.on?T({},e.on):{};for(var r in t){var i=n[r],a=t[r];n[r]=i?[].concat(i,a):a}}return e}function Ot(e,t,n,r){t=t||{$stable:!n};for(var i=0;i<e.length;i++){var a=e[i];Array.isArray(a)?Ot(a,t,n):a&&(a.proxy&&(a.fn.proxy=!0),t[a.key]=a.fn)}return r&&(t.$key=r),t}function Tt(e,t){for(var n=0;n<t.length;n+=2){var r=t[n];"string"==typeof r&&r&&(e[t[n]]=t[n+1])}return e}function It(e,t){return"string"==typeof e?t+e:e}function Nt(e){e._o=St,e._n=h,e._s=d,e._l=gt,e._t=yt,e._q=M,e._i=L,e._m=kt,e._f=bt,e._k=wt,e._b=xt,e._v=ye,e._e=ge,e._u=Ot,e._g=Et,e._d=Tt,e._p=It}function Pt(e,t,n,i,a){var s,l=this,c=a.options;_(i,"_uid")?(s=Object.create(i))._original=i:(s=i,i=i._original);var u=o(c._compiled),f=!u;this.data=e,this.props=t,this.children=n,this.parent=i,this.listeners=e.on||r,this.injections=ft(c.inject,i),this.slots=function(){return l.$slots||ht(e.scopedSlots,l.$slots=pt(n,i)),l.$slots},Object.defineProperty(this,"scopedSlots",{enumerable:!0,get:function(){return ht(e.scopedSlots,this.slots())}}),u&&(this.$options=c,this.$slots=this.slots(),this.$scopedSlots=ht(e.scopedSlots,this.$slots)),c._scopeId?this._c=function(e,t,n,r){var a=Dt(s,e,t,n,r,f);return a&&!Array.isArray(a)&&(a.fnScopeId=c._scopeId,a.fnContext=i),a}:this._c=function(e,t,n,r){return Dt(s,e,t,n,r,f)}}function zt(e,t,n,r,i){var a=be(e);return a.fnContext=n,a.fnOptions=r,t.slot&&((a.data||(a.data={})).slot=t.slot),a}function Mt(e,t){for(var n in t)e[k(n)]=t[n]}Nt(Pt.prototype);var Lt={init:function(e,t){if(e.componentInstance&&!e.componentInstance._isDestroyed&&e.data.keepAlive){var n=e;Lt.prepatch(n,n)}else(e.componentInstance=function(e,t){var n={_isComponent:!0,_parentVnode:e,parent:t},r=e.data.inlineTemplate;return a(r)&&(n.render=r.render,n.staticRenderFns=r.staticRenderFns),new e.componentOptions.Ctor(n)}(e,Yt)).$mount(t?e.elm:void 0,t)},prepatch:function(e,t){var n=t.componentOptions;!function(e,t,n,i,a){var o=i.data.scopedSlots,s=e.$scopedSlots,l=!!(o&&!o.$stable||s!==r&&!s.$stable||o&&e.$scopedSlots.$key!==o.$key),c=!!(a||e.$options._renderChildren||l);if(e.$options._parentVnode=i,e.$vnode=i,e._vnode&&(e._vnode.parent=i),e.$options._renderChildren=a,e.$attrs=i.data.attrs||r,e.$listeners=n||r,t&&e.$options.props){Se(!1);for(var u=e._props,f=e.$options._propKeys||[],p=0;p<f.length;p++){var d=f[p],h=e.$options.props;u[d]=$e(d,h,t,e)}Se(!0),e.$options.propsData=t}n=n||r;var v=e.$options._parentListeners;e.$options._parentListeners=n,Kt(e,n,v),c&&(e.$slots=pt(a,i.context),e.$forceUpdate())}(t.componentInstance=e.componentInstance,n.propsData,n.listeners,t,n.children)},insert:function(e){var t,n=e.context,r=e.componentInstance;r._isMounted||(r._isMounted=!0,Qt(r,"mounted")),e.data.keepAlive&&(n._isMounted?((t=r)._inactive=!1,tn.push(t)):Xt(r,!0))},destroy:function(e){var t=e.componentInstance;t._isDestroyed||(e.data.keepAlive?function e(t,n){if(!(n&&(t._directInactive=!0,Zt(t))||t._inactive)){t._inactive=!0;for(var r=0;r<t.$children.length;r++)e(t.$children[r]);Qt(t,"deactivated")}}(t,!0):t.$destroy())}},Rt=Object.keys(Lt);function jt(e,t,n,s,c){if(!i(e)){var u=n.$options._base;if(l(e)&&(e=u.extend(e)),"function"==typeof e){var f;if(i(e.cid)&&void 0===(e=function(e,t){if(o(e.error)&&a(e.errorComp))return e.errorComp;if(a(e.resolved))return e.resolved;var n=Bt;if(n&&a(e.owners)&&-1===e.owners.indexOf(n)&&e.owners.push(n),o(e.loading)&&a(e.loadingComp))return e.loadingComp;if(n&&!a(e.owners)){var r=e.owners=[n],s=!0,c=null,u=null;n.$on("hook:destroyed",(function(){return y(r,n)}));var f=function(e){for(var t=0,n=r.length;t<n;t++)r[t].$forceUpdate();e&&(r.length=0,null!==c&&(clearTimeout(c),c=null),null!==u&&(clearTimeout(u),u=null))},d=R((function(n){e.resolved=Ut(n,t),s?r.length=0:f(!0)})),h=R((function(t){a(e.errorComp)&&(e.error=!0,f(!0))})),v=e(d,h);return l(v)&&(p(v)?i(e.resolved)&&v.then(d,h):p(v.component)&&(v.component.then(d,h),a(v.error)&&(e.errorComp=Ut(v.error,t)),a(v.loading)&&(e.loadingComp=Ut(v.loading,t),0===v.delay?e.loading=!0:c=setTimeout((function(){c=null,i(e.resolved)&&i(e.error)&&(e.loading=!0,f(!1))}),v.delay||200)),a(v.timeout)&&(u=setTimeout((function(){u=null,i(e.resolved)&&h(null)}),v.timeout)))),s=!1,e.loading?e.loadingComp:e.resolved}}(f=e,u)))return function(e,t,n,r,i){var a=ge();return a.asyncFactory=e,a.asyncMeta={data:t,context:n,children:r,tag:i},a}(f,t,n,s,c);t=t||{},wn(e),a(t.model)&&function(e,t){var n=e.model&&e.model.prop||"value",r=e.model&&e.model.event||"input";(t.attrs||(t.attrs={}))[n]=t.model.value;var i=t.on||(t.on={}),o=i[r],s=t.model.callback;a(o)?(Array.isArray(o)?-1===o.indexOf(s):o!==s)&&(i[r]=[s].concat(o)):i[r]=s}(e.options,t);var d=function(e,t,n){var r=t.options.props;if(!i(r)){var o={},s=e.attrs,l=e.props;if(a(s)||a(l))for(var c in r){var u=C(c);lt(o,l,c,u,!0)||lt(o,s,c,u,!1)}return o}}(t,e);if(o(e.options.functional))return function(e,t,n,i,o){var s=e.options,l={},c=s.props;if(a(c))for(var u in c)l[u]=$e(u,c,t||r);else a(n.attrs)&&Mt(l,n.attrs),a(n.props)&&Mt(l,n.props);var f=new Pt(n,l,o,i,e),p=s.render.call(null,f._c,f);if(p instanceof ve)return zt(p,n,f.parent,s);if(Array.isArray(p)){for(var d=ct(p)||[],h=new Array(d.length),v=0;v<d.length;v++)h[v]=zt(d[v],n,f.parent,s);return h}}(e,d,t,n,s);var h=t.on;if(t.on=t.nativeOn,o(e.options.abstract)){var v=t.slot;t={},v&&(t.slot=v)}!function(e){for(var t=e.hook||(e.hook={}),n=0;n<Rt.length;n++){var r=Rt[n],i=t[r],a=Lt[r];i===a||i&&i._merged||(t[r]=i?$t(a,i):a)}}(t);var m=e.options.name||c;return new ve("vue-component-"+e.cid+(m?"-"+m:""),t,void 0,void 0,void 0,n,{Ctor:e,propsData:d,listeners:h,tag:c,children:s},f)}}}function $t(e,t){var n=function(n,r){e(n,r),t(n,r)};return n._merged=!0,n}function Dt(e,t,n,r,c,u){return(Array.isArray(n)||s(n))&&(c=r,r=n,n=void 0),o(u)&&(c=2),function(e,t,n,r,s){if(a(n)&&a(n.__ob__))return ge();if(a(n)&&a(n.is)&&(t=n.is),!t)return ge();var c,u,f;(Array.isArray(r)&&"function"==typeof r[0]&&((n=n||{}).scopedSlots={default:r[0]},r.length=0),2===s?r=ct(r):1===s&&(r=function(e){for(var t=0;t<e.length;t++)if(Array.isArray(e[t]))return Array.prototype.concat.apply([],e);return e}(r)),"string"==typeof t)?(u=e.$vnode&&e.$vnode.ns||F.getTagNamespace(t),c=F.isReservedTag(t)?new ve(F.parsePlatformTagName(t),n,r,void 0,void 0,e):n&&n.pre||!a(f=je(e.$options,"components",t))?new ve(t,n,r,void 0,void 0,e):jt(f,n,e,r,t)):c=jt(t,n,e,r);return Array.isArray(c)?c:a(c)?(a(u)&&function e(t,n,r){if(t.ns=n,"foreignObject"===t.tag&&(n=void 0,r=!0),a(t.children))for(var s=0,l=t.children.length;s<l;s++){var c=t.children[s];a(c.tag)&&(i(c.ns)||o(r)&&"svg"!==c.tag)&&e(c,n,r)}}(c,u),a(n)&&function(e){l(e.style)&&rt(e.style),l(e.class)&&rt(e.class)}(n),c):ge()}(e,t,n,r,c)}var Ft,Bt=null;function Ut(e,t){return(e.__esModule||le&&"Module"===e[Symbol.toStringTag])&&(e=e.default),l(e)?t.extend(e):e}function Ht(e){return e.isComment&&e.asyncFactory}function Vt(e){if(Array.isArray(e))for(var t=0;t<e.length;t++){var n=e[t];if(a(n)&&(a(n.componentOptions)||Ht(n)))return n}}function Gt(e,t){Ft.$on(e,t)}function Wt(e,t){Ft.$off(e,t)}function qt(e,t){var n=Ft;return function r(){null!==t.apply(null,arguments)&&n.$off(e,r)}}function Kt(e,t,n){Ft=e,ot(t,n||{},Gt,Wt,qt,e),Ft=void 0}var Yt=null;function Jt(e){var t=Yt;return Yt=e,function(){Yt=t}}function Zt(e){for(;e&&(e=e.$parent);)if(e._inactive)return!0;return!1}function Xt(e,t){if(t){if(e._directInactive=!1,Zt(e))return}else if(e._directInactive)return;if(e._inactive||null===e._inactive){e._inactive=!1;for(var n=0;n<e.$children.length;n++)Xt(e.$children[n]);Qt(e,"activated")}}function Qt(e,t){de();var n=e.$options[t],r=t+" hook";if(n)for(var i=0,a=n.length;i<a;i++)He(n[i],e,null,e,r);e._hasHookEvent&&e.$emit("hook:"+t),he()}var en=[],tn=[],nn={},rn=!1,an=!1,on=0,sn=0,ln=Date.now;if(W&&!J){var cn=window.performance;cn&&"function"==typeof cn.now&&ln()>document.createEvent("Event").timeStamp&&(ln=function(){return cn.now()})}function un(){var e,t;for(sn=ln(),an=!0,en.sort((function(e,t){return e.id-t.id})),on=0;on<en.length;on++)(e=en[on]).before&&e.before(),t=e.id,nn[t]=null,e.run();var n=tn.slice(),r=en.slice();on=en.length=tn.length=0,nn={},rn=an=!1,function(e){for(var t=0;t<e.length;t++)e[t]._inactive=!0,Xt(e[t],!0)}(n),function(e){for(var t=e.length;t--;){var n=e[t],r=n.vm;r._watcher===n&&r._isMounted&&!r._isDestroyed&&Qt(r,"updated")}}(r),ae&&F.devtools&&ae.emit("flush")}var fn=0,pn=function(e,t,n,r,i){this.vm=e,i&&(e._watcher=this),e._watchers.push(this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync,this.before=r.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++fn,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new se,this.newDepIds=new se,this.expression="","function"==typeof t?this.getter=t:(this.getter=function(e){if(!V.test(e)){var t=e.split(".");return function(e){for(var n=0;n<t.length;n++){if(!e)return;e=e[t[n]]}return e}}}(t),this.getter||(this.getter=N)),this.value=this.lazy?void 0:this.get()};pn.prototype.get=function(){var e;de(this);var t=this.vm;try{e=this.getter.call(t,t)}catch(e){if(!this.user)throw e;Ue(e,t,'getter for watcher "'+this.expression+'"')}finally{this.deep&&rt(e),he(),this.cleanupDeps()}return e},pn.prototype.addDep=function(e){var t=e.id;this.newDepIds.has(t)||(this.newDepIds.add(t),this.newDeps.push(e),this.depIds.has(t)||e.addSub(this))},pn.prototype.cleanupDeps=function(){for(var e=this.deps.length;e--;){var t=this.deps[e];this.newDepIds.has(t.id)||t.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},pn.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():function(e){var t=e.id;if(null==nn[t]){if(nn[t]=!0,an){for(var n=en.length-1;n>on&&en[n].id>e.id;)n--;en.splice(n+1,0,e)}else en.push(e);rn||(rn=!0,tt(un))}}(this)},pn.prototype.run=function(){if(this.active){var e=this.get();if(e!==this.value||l(e)||this.deep){var t=this.value;if(this.value=e,this.user)try{this.cb.call(this.vm,e,t)}catch(e){Ue(e,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,e,t)}}},pn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},pn.prototype.depend=function(){for(var e=this.deps.length;e--;)this.deps[e].depend()},pn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||y(this.vm._watchers,this);for(var e=this.deps.length;e--;)this.deps[e].removeSub(this);this.active=!1}};var dn={enumerable:!0,configurable:!0,get:N,set:N};function hn(e,t,n){dn.get=function(){return this[t][n]},dn.set=function(e){this[t][n]=e},Object.defineProperty(e,n,dn)}var vn={lazy:!0};function mn(e,t,n){var r=!ie();"function"==typeof n?(dn.get=r?gn(t):yn(n),dn.set=N):(dn.get=n.get?r&&!1!==n.cache?gn(t):yn(n.get):N,dn.set=n.set||N),Object.defineProperty(e,t,dn)}function gn(e){return function(){var t=this._computedWatchers&&this._computedWatchers[e];if(t)return t.dirty&&t.evaluate(),fe.target&&t.depend(),t.value}}function yn(e){return function(){return e.call(this,this)}}function bn(e,t,n,r){return u(n)&&(r=n,n=n.handler),"string"==typeof n&&(n=e[n]),e.$watch(t,n,r)}var _n=0;function wn(e){var t=e.options;if(e.super){var n=wn(e.super);if(n!==e.superOptions){e.superOptions=n;var r=function(e){var t,n=e.options,r=e.sealedOptions;for(var i in n)n[i]!==r[i]&&(t||(t={}),t[i]=n[i]);return t}(e);r&&T(e.extendOptions,r),(t=e.options=Re(n,e.extendOptions)).name&&(t.components[t.name]=e)}}return t}function xn(e){this._init(e)}function kn(e){return e&&(e.Ctor.options.name||e.tag)}function Sn(e,t){return Array.isArray(e)?e.indexOf(t)>-1:"string"==typeof e?e.split(",").indexOf(t)>-1:(n=e,"[object RegExp]"===c.call(n)&&e.test(t));var n}function An(e,t){var n=e.cache,r=e.keys,i=e._vnode;for(var a in n){var o=n[a];if(o){var s=kn(o.componentOptions);s&&!t(s)&&Cn(n,a,r,i)}}}function Cn(e,t,n,r){var i=e[t];!i||r&&i.tag===r.tag||i.componentInstance.$destroy(),e[t]=null,y(n,t)}!function(e){e.prototype._init=function(e){var t=this;t._uid=_n++,t._isVue=!0,e&&e._isComponent?function(e,t){var n=e.$options=Object.create(e.constructor.options),r=t._parentVnode;n.parent=t.parent,n._parentVnode=r;var i=r.componentOptions;n.propsData=i.propsData,n._parentListeners=i.listeners,n._renderChildren=i.children,n._componentTag=i.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(t,e):t.$options=Re(wn(t.constructor),e||{},t),t._renderProxy=t,t._self=t,function(e){var t=e.$options,n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(t),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&Kt(e,t)}(t),function(e){e._vnode=null,e._staticTrees=null;var t=e.$options,n=e.$vnode=t._parentVnode,i=n&&n.context;e.$slots=pt(t._renderChildren,i),e.$scopedSlots=r,e._c=function(t,n,r,i){return Dt(e,t,n,r,i,!1)},e.$createElement=function(t,n,r,i){return Dt(e,t,n,r,i,!0)};var a=n&&n.data;Ee(e,"$attrs",a&&a.attrs||r,null,!0),Ee(e,"$listeners",t._parentListeners||r,null,!0)}(t),Qt(t,"beforeCreate"),function(e){var t=ft(e.$options.inject,e);t&&(Se(!1),Object.keys(t).forEach((function(n){Ee(e,n,t[n])})),Se(!0))}(t),function(e){e._watchers=[];var t=e.$options;t.props&&function(e,t){var n=e.$options.propsData||{},r=e._props={},i=e.$options._propKeys=[];e.$parent&&Se(!1);var a=function(a){i.push(a);var o=$e(a,t,n,e);Ee(r,a,o),a in e||hn(e,"_props",a)};for(var o in t)a(o);Se(!0)}(e,t.props),t.methods&&function(e,t){for(var n in e.$options.props,t)e[n]="function"!=typeof t[n]?N:E(t[n],e)}(e,t.methods),t.data?function(e){var t=e.$options.data;u(t=e._data="function"==typeof t?function(e,t){de();try{return e.call(t,t)}catch(e){return Ue(e,t,"data()"),{}}finally{he()}}(t,e):t||{})||(t={});for(var n,r=Object.keys(t),i=e.$options.props,a=(e.$options.methods,r.length);a--;){var o=r[a];i&&_(i,o)||(void 0,36!==(n=(o+"").charCodeAt(0))&&95!==n&&hn(e,"_data",o))}Ce(t,!0)}(e):Ce(e._data={},!0),t.computed&&function(e,t){var n=e._computedWatchers=Object.create(null),r=ie();for(var i in t){var a=t[i],o="function"==typeof a?a:a.get;r||(n[i]=new pn(e,o||N,N,vn)),i in e||mn(e,i,a)}}(e,t.computed),t.watch&&t.watch!==te&&function(e,t){for(var n in t){var r=t[n];if(Array.isArray(r))for(var i=0;i<r.length;i++)bn(e,n,r[i]);else bn(e,n,r)}}(e,t.watch)}(t),function(e){var t=e.$options.provide;t&&(e._provided="function"==typeof t?t.call(e):t)}(t),Qt(t,"created"),t.$options.el&&t.$mount(t.$options.el)}}(xn),function(e){Object.defineProperty(e.prototype,"$data",{get:function(){return this._data}}),Object.defineProperty(e.prototype,"$props",{get:function(){return this._props}}),e.prototype.$set=Oe,e.prototype.$delete=Te,e.prototype.$watch=function(e,t,n){if(u(t))return bn(this,e,t,n);(n=n||{}).user=!0;var r=new pn(this,e,t,n);if(n.immediate)try{t.call(this,r.value)}catch(e){Ue(e,this,'callback for immediate watcher "'+r.expression+'"')}return function(){r.teardown()}}}(xn),function(e){var t=/^hook:/;e.prototype.$on=function(e,n){var r=this;if(Array.isArray(e))for(var i=0,a=e.length;i<a;i++)r.$on(e[i],n);else(r._events[e]||(r._events[e]=[])).push(n),t.test(e)&&(r._hasHookEvent=!0);return r},e.prototype.$once=function(e,t){var n=this;function r(){n.$off(e,r),t.apply(n,arguments)}return r.fn=t,n.$on(e,r),n},e.prototype.$off=function(e,t){var n=this;if(!arguments.length)return n._events=Object.create(null),n;if(Array.isArray(e)){for(var r=0,i=e.length;r<i;r++)n.$off(e[r],t);return n}var a,o=n._events[e];if(!o)return n;if(!t)return n._events[e]=null,n;for(var s=o.length;s--;)if((a=o[s])===t||a.fn===t){o.splice(s,1);break}return n},e.prototype.$emit=function(e){var t=this._events[e];if(t){t=t.length>1?O(t):t;for(var n=O(arguments,1),r='event handler for "'+e+'"',i=0,a=t.length;i<a;i++)He(t[i],this,n,this,r)}return this}}(xn),function(e){e.prototype._update=function(e,t){var n=this,r=n.$el,i=n._vnode,a=Jt(n);n._vnode=e,n.$el=i?n.__patch__(i,e):n.__patch__(n.$el,e,t,!1),a(),r&&(r.__vue__=null),n.$el&&(n.$el.__vue__=n),n.$vnode&&n.$parent&&n.$vnode===n.$parent._vnode&&(n.$parent.$el=n.$el)},e.prototype.$forceUpdate=function(){this._watcher&&this._watcher.update()},e.prototype.$destroy=function(){var e=this;if(!e._isBeingDestroyed){Qt(e,"beforeDestroy"),e._isBeingDestroyed=!0;var t=e.$parent;!t||t._isBeingDestroyed||e.$options.abstract||y(t.$children,e),e._watcher&&e._watcher.teardown();for(var n=e._watchers.length;n--;)e._watchers[n].teardown();e._data.__ob__&&e._data.__ob__.vmCount--,e._isDestroyed=!0,e.__patch__(e._vnode,null),Qt(e,"destroyed"),e.$off(),e.$el&&(e.$el.__vue__=null),e.$vnode&&(e.$vnode.parent=null)}}}(xn),function(e){Nt(e.prototype),e.prototype.$nextTick=function(e){return tt(e,this)},e.prototype._render=function(){var e,t=this,n=t.$options,r=n.render,i=n._parentVnode;i&&(t.$scopedSlots=ht(i.data.scopedSlots,t.$slots,t.$scopedSlots)),t.$vnode=i;try{Bt=t,e=r.call(t._renderProxy,t.$createElement)}catch(n){Ue(n,t,"render"),e=t._vnode}finally{Bt=null}return Array.isArray(e)&&1===e.length&&(e=e[0]),e instanceof ve||(e=ge()),e.parent=i,e}}(xn);var En=[String,RegExp,Array],On={KeepAlive:{name:"keep-alive",abstract:!0,props:{include:En,exclude:En,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var e in this.cache)Cn(this.cache,e,this.keys)},mounted:function(){var e=this;this.$watch("include",(function(t){An(e,(function(e){return Sn(t,e)}))})),this.$watch("exclude",(function(t){An(e,(function(e){return!Sn(t,e)}))}))},render:function(){var e=this.$slots.default,t=Vt(e),n=t&&t.componentOptions;if(n){var r=kn(n),i=this.include,a=this.exclude;if(i&&(!r||!Sn(i,r))||a&&r&&Sn(a,r))return t;var o=this.cache,s=this.keys,l=null==t.key?n.Ctor.cid+(n.tag?"::"+n.tag:""):t.key;o[l]?(t.componentInstance=o[l].componentInstance,y(s,l),s.push(l)):(o[l]=t,s.push(l),this.max&&s.length>parseInt(this.max)&&Cn(o,s[0],s,this._vnode)),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){var t={get:function(){return F}};Object.defineProperty(e,"config",t),e.util={warn:ce,extend:T,mergeOptions:Re,defineReactive:Ee},e.set=Oe,e.delete=Te,e.nextTick=tt,e.observable=function(e){return Ce(e),e},e.options=Object.create(null),$.forEach((function(t){e.options[t+"s"]=Object.create(null)})),e.options._base=e,T(e.options.components,On),function(e){e.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;var n=O(arguments,1);return n.unshift(this),"function"==typeof e.install?e.install.apply(e,n):"function"==typeof e&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=Re(this.options,e),this}}(e),function(e){e.cid=0;var t=1;e.extend=function(e){e=e||{};var n=this,r=n.cid,i=e._Ctor||(e._Ctor={});if(i[r])return i[r];var a=e.name||n.options.name,o=function(e){this._init(e)};return(o.prototype=Object.create(n.prototype)).constructor=o,o.cid=t++,o.options=Re(n.options,e),o.super=n,o.options.props&&function(e){var t=e.options.props;for(var n in t)hn(e.prototype,"_props",n)}(o),o.options.computed&&function(e){var t=e.options.computed;for(var n in t)mn(e.prototype,n,t[n])}(o),o.extend=n.extend,o.mixin=n.mixin,o.use=n.use,$.forEach((function(e){o[e]=n[e]})),a&&(o.options.components[a]=o),o.superOptions=n.options,o.extendOptions=e,o.sealedOptions=T({},o.options),i[r]=o,o}}(e),function(e){$.forEach((function(t){e[t]=function(e,n){return n?("component"===t&&u(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&"function"==typeof n&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}}))}(e)}(xn),Object.defineProperty(xn.prototype,"$isServer",{get:ie}),Object.defineProperty(xn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(xn,"FunctionalRenderContext",{value:Pt}),xn.version="2.6.11";var Tn=v("style,class"),In=v("input,textarea,option,select,progress"),Nn=function(e,t,n){return"value"===n&&In(e)&&"button"!==t||"selected"===n&&"option"===e||"checked"===n&&"input"===e||"muted"===n&&"video"===e},Pn=v("contenteditable,draggable,spellcheck"),zn=v("events,caret,typing,plaintext-only"),Mn=v("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Ln="http://www.w3.org/1999/xlink",Rn=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},jn=function(e){return Rn(e)?e.slice(6,e.length):""},$n=function(e){return null==e||!1===e};function Dn(e,t){return{staticClass:Fn(e.staticClass,t.staticClass),class:a(e.class)?[e.class,t.class]:t.class}}function Fn(e,t){return e?t?e+" "+t:e:t||""}function Bn(e){return Array.isArray(e)?function(e){for(var t,n="",r=0,i=e.length;r<i;r++)a(t=Bn(e[r]))&&""!==t&&(n&&(n+=" "),n+=t);return n}(e):l(e)?function(e){var t="";for(var n in e)e[n]&&(t&&(t+=" "),t+=n);return t}(e):"string"==typeof e?e:""}var Un={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"},Hn=v("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot"),Vn=v("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view",!0),Gn=function(e){return Hn(e)||Vn(e)};function Wn(e){return Vn(e)?"svg":"math"===e?"math":void 0}var qn=Object.create(null),Kn=v("text,number,password,search,email,tel,url");function Yn(e){return"string"==typeof e?document.querySelector(e)||document.createElement("div"):e}var Jn=Object.freeze({createElement:function(e,t){var n=document.createElement(e);return"select"!==e||t.data&&t.data.attrs&&void 0!==t.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n},createElementNS:function(e,t){return document.createElementNS(Un[e],t)},createTextNode:function(e){return document.createTextNode(e)},createComment:function(e){return document.createComment(e)},insertBefore:function(e,t,n){e.insertBefore(t,n)},removeChild:function(e,t){e.removeChild(t)},appendChild:function(e,t){e.appendChild(t)},parentNode:function(e){return e.parentNode},nextSibling:function(e){return e.nextSibling},tagName:function(e){return e.tagName},setTextContent:function(e,t){e.textContent=t},setStyleScope:function(e,t){e.setAttribute(t,"")}}),Zn={create:function(e,t){Xn(t)},update:function(e,t){e.data.ref!==t.data.ref&&(Xn(e,!0),Xn(t))},destroy:function(e){Xn(e,!0)}};function Xn(e,t){var n=e.data.ref;if(a(n)){var r=e.context,i=e.componentInstance||e.elm,o=r.$refs;t?Array.isArray(o[n])?y(o[n],i):o[n]===i&&(o[n]=void 0):e.data.refInFor?Array.isArray(o[n])?o[n].indexOf(i)<0&&o[n].push(i):o[n]=[i]:o[n]=i}}var Qn=new ve("",{},[]),er=["create","activate","update","remove","destroy"];function tr(e,t){return e.key===t.key&&(e.tag===t.tag&&e.isComment===t.isComment&&a(e.data)===a(t.data)&&function(e,t){if("input"!==e.tag)return!0;var n,r=a(n=e.data)&&a(n=n.attrs)&&n.type,i=a(n=t.data)&&a(n=n.attrs)&&n.type;return r===i||Kn(r)&&Kn(i)}(e,t)||o(e.isAsyncPlaceholder)&&e.asyncFactory===t.asyncFactory&&i(t.asyncFactory.error))}function nr(e,t,n){var r,i,o={};for(r=t;r<=n;++r)a(i=e[r].key)&&(o[i]=r);return o}var rr={create:ir,update:ir,destroy:function(e){ir(e,Qn)}};function ir(e,t){(e.data.directives||t.data.directives)&&function(e,t){var n,r,i,a=e===Qn,o=t===Qn,s=or(e.data.directives,e.context),l=or(t.data.directives,t.context),c=[],u=[];for(n in l)r=s[n],i=l[n],r?(i.oldValue=r.value,i.oldArg=r.arg,lr(i,"update",t,e),i.def&&i.def.componentUpdated&&u.push(i)):(lr(i,"bind",t,e),i.def&&i.def.inserted&&c.push(i));if(c.length){var f=function(){for(var n=0;n<c.length;n++)lr(c[n],"inserted",t,e)};a?st(t,"insert",f):f()}if(u.length&&st(t,"postpatch",(function(){for(var n=0;n<u.length;n++)lr(u[n],"componentUpdated",t,e)})),!a)for(n in s)l[n]||lr(s[n],"unbind",e,e,o)}(e,t)}var ar=Object.create(null);function or(e,t){var n,r,i=Object.create(null);if(!e)return i;for(n=0;n<e.length;n++)(r=e[n]).modifiers||(r.modifiers=ar),i[sr(r)]=r,r.def=je(t.$options,"directives",r.name);return i}function sr(e){return e.rawName||e.name+"."+Object.keys(e.modifiers||{}).join(".")}function lr(e,t,n,r,i){var a=e.def&&e.def[t];if(a)try{a(n.elm,e,n,r,i)}catch(r){Ue(r,n.context,"directive "+e.name+" "+t+" hook")}}var cr=[Zn,rr];function ur(e,t){var n=t.componentOptions;if(!(a(n)&&!1===n.Ctor.options.inheritAttrs||i(e.data.attrs)&&i(t.data.attrs))){var r,o,s=t.elm,l=e.data.attrs||{},c=t.data.attrs||{};for(r in a(c.__ob__)&&(c=t.data.attrs=T({},c)),c)o=c[r],l[r]!==o&&fr(s,r,o);for(r in(J||X)&&c.value!==l.value&&fr(s,"value",c.value),l)i(c[r])&&(Rn(r)?s.removeAttributeNS(Ln,jn(r)):Pn(r)||s.removeAttribute(r))}}function fr(e,t,n){e.tagName.indexOf("-")>-1?pr(e,t,n):Mn(t)?$n(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):Pn(t)?e.setAttribute(t,function(e,t){return $n(t)||"false"===t?"false":"contenteditable"===e&&zn(t)?t:"true"}(t,n)):Rn(t)?$n(n)?e.removeAttributeNS(Ln,jn(t)):e.setAttributeNS(Ln,t,n):pr(e,t,n)}function pr(e,t,n){if($n(n))e.removeAttribute(t);else{if(J&&!Z&&"TEXTAREA"===e.tagName&&"placeholder"===t&&""!==n&&!e.__ieph){var r=function(t){t.stopImmediatePropagation(),e.removeEventListener("input",r)};e.addEventListener("input",r),e.__ieph=!0}e.setAttribute(t,n)}}var dr={create:ur,update:ur};function hr(e,t){var n=t.elm,r=t.data,o=e.data;if(!(i(r.staticClass)&&i(r.class)&&(i(o)||i(o.staticClass)&&i(o.class)))){var s=function(e){for(var t=e.data,n=e,r=e;a(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(t=Dn(r.data,t));for(;a(n=n.parent);)n&&n.data&&(t=Dn(t,n.data));return function(e,t){return a(e)||a(t)?Fn(e,Bn(t)):""}(t.staticClass,t.class)}(t),l=n._transitionClasses;a(l)&&(s=Fn(s,Bn(l))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var vr,mr,gr,yr,br,_r,wr={create:hr,update:hr},xr=/[\w).+\-_$\]]/;function kr(e){var t,n,r,i,a,o=!1,s=!1,l=!1,c=!1,u=0,f=0,p=0,d=0;for(r=0;r<e.length;r++)if(n=t,t=e.charCodeAt(r),o)39===t&&92!==n&&(o=!1);else if(s)34===t&&92!==n&&(s=!1);else if(l)96===t&&92!==n&&(l=!1);else if(c)47===t&&92!==n&&(c=!1);else if(124!==t||124===e.charCodeAt(r+1)||124===e.charCodeAt(r-1)||u||f||p){switch(t){case 34:s=!0;break;case 39:o=!0;break;case 96:l=!0;break;case 40:p++;break;case 41:p--;break;case 91:f++;break;case 93:f--;break;case 123:u++;break;case 125:u--}if(47===t){for(var h=r-1,v=void 0;h>=0&&" "===(v=e.charAt(h));h--);v&&xr.test(v)||(c=!0)}}else void 0===i?(d=r+1,i=e.slice(0,r).trim()):m();function m(){(a||(a=[])).push(e.slice(d,r).trim()),d=r+1}if(void 0===i?i=e.slice(0,r).trim():0!==d&&m(),a)for(r=0;r<a.length;r++)i=Sr(i,a[r]);return i}function Sr(e,t){var n=t.indexOf("(");if(n<0)return'_f("'+t+'")('+e+")";var r=t.slice(0,n),i=t.slice(n+1);return'_f("'+r+'")('+e+(")"!==i?","+i:i)}function Ar(e,t){console.error("[Vue compiler]: "+e)}function Cr(e,t){return e?e.map((function(e){return e[t]})).filter((function(e){return e})):[]}function Er(e,t,n,r,i){(e.props||(e.props=[])).push(Rr({name:t,value:n,dynamic:i},r)),e.plain=!1}function Or(e,t,n,r,i){(i?e.dynamicAttrs||(e.dynamicAttrs=[]):e.attrs||(e.attrs=[])).push(Rr({name:t,value:n,dynamic:i},r)),e.plain=!1}function Tr(e,t,n,r){e.attrsMap[t]=n,e.attrsList.push(Rr({name:t,value:n},r))}function Ir(e,t,n,r,i,a,o,s){(e.directives||(e.directives=[])).push(Rr({name:t,rawName:n,value:r,arg:i,isDynamicArg:a,modifiers:o},s)),e.plain=!1}function Nr(e,t,n){return n?"_p("+t+',"'+e+'")':e+t}function Pr(e,t,n,i,a,o,s,l){var c;(i=i||r).right?l?t="("+t+")==='click'?'contextmenu':("+t+")":"click"===t&&(t="contextmenu",delete i.right):i.middle&&(l?t="("+t+")==='click'?'mouseup':("+t+")":"click"===t&&(t="mouseup")),i.capture&&(delete i.capture,t=Nr("!",t,l)),i.once&&(delete i.once,t=Nr("~",t,l)),i.passive&&(delete i.passive,t=Nr("&",t,l)),i.native?(delete i.native,c=e.nativeEvents||(e.nativeEvents={})):c=e.events||(e.events={});var u=Rr({value:n.trim(),dynamic:l},s);i!==r&&(u.modifiers=i);var f=c[t];Array.isArray(f)?a?f.unshift(u):f.push(u):c[t]=f?a?[u,f]:[f,u]:u,e.plain=!1}function zr(e,t,n){var r=Mr(e,":"+t)||Mr(e,"v-bind:"+t);if(null!=r)return kr(r);if(!1!==n){var i=Mr(e,t);if(null!=i)return JSON.stringify(i)}}function Mr(e,t,n){var r;if(null!=(r=e.attrsMap[t]))for(var i=e.attrsList,a=0,o=i.length;a<o;a++)if(i[a].name===t){i.splice(a,1);break}return n&&delete e.attrsMap[t],r}function Lr(e,t){for(var n=e.attrsList,r=0,i=n.length;r<i;r++){var a=n[r];if(t.test(a.name))return n.splice(r,1),a}}function Rr(e,t){return t&&(null!=t.start&&(e.start=t.start),null!=t.end&&(e.end=t.end)),e}function jr(e,t,n){var r=n||{},i=r.number,a="$$v";r.trim&&(a="(typeof $$v === 'string'? $$v.trim(): $$v)"),i&&(a="_n("+a+")");var o=$r(t,a);e.model={value:"("+t+")",expression:JSON.stringify(t),callback:"function ($$v) {"+o+"}"}}function $r(e,t){var n=function(e){if(e=e.trim(),vr=e.length,e.indexOf("[")<0||e.lastIndexOf("]")<vr-1)return(yr=e.lastIndexOf("."))>-1?{exp:e.slice(0,yr),key:'"'+e.slice(yr+1)+'"'}:{exp:e,key:null};for(mr=e,yr=br=_r=0;!Fr();)Br(gr=Dr())?Hr(gr):91===gr&&Ur(gr);return{exp:e.slice(0,br),key:e.slice(br+1,_r)}}(e);return null===n.key?e+"="+t:"$set("+n.exp+", "+n.key+", "+t+")"}function Dr(){return mr.charCodeAt(++yr)}function Fr(){return yr>=vr}function Br(e){return 34===e||39===e}function Ur(e){var t=1;for(br=yr;!Fr();)if(Br(e=Dr()))Hr(e);else if(91===e&&t++,93===e&&t--,0===t){_r=yr;break}}function Hr(e){for(var t=e;!Fr()&&(e=Dr())!==t;);}var Vr,Gr="__r";function Wr(e,t,n){var r=Vr;return function i(){null!==t.apply(null,arguments)&&Yr(e,i,n,r)}}var qr=qe&&!(ee&&Number(ee[1])<=53);function Kr(e,t,n,r){if(qr){var i=sn,a=t;t=a._wrapper=function(e){if(e.target===e.currentTarget||e.timeStamp>=i||e.timeStamp<=0||e.target.ownerDocument!==document)return a.apply(this,arguments)}}Vr.addEventListener(e,t,ne?{capture:n,passive:r}:n)}function Yr(e,t,n,r){(r||Vr).removeEventListener(e,t._wrapper||t,n)}function Jr(e,t){if(!i(e.data.on)||!i(t.data.on)){var n=t.data.on||{},r=e.data.on||{};Vr=t.elm,function(e){if(a(e.__r)){var t=J?"change":"input";e[t]=[].concat(e.__r,e[t]||[]),delete e.__r}a(e.__c)&&(e.change=[].concat(e.__c,e.change||[]),delete e.__c)}(n),ot(n,r,Kr,Yr,Wr,t.context),Vr=void 0}}var Zr,Xr={create:Jr,update:Jr};function Qr(e,t){if(!i(e.data.domProps)||!i(t.data.domProps)){var n,r,o=t.elm,s=e.data.domProps||{},l=t.data.domProps||{};for(n in a(l.__ob__)&&(l=t.data.domProps=T({},l)),s)n in l||(o[n]="");for(n in l){if(r=l[n],"textContent"===n||"innerHTML"===n){if(t.children&&(t.children.length=0),r===s[n])continue;1===o.childNodes.length&&o.removeChild(o.childNodes[0])}if("value"===n&&"PROGRESS"!==o.tagName){o._value=r;var c=i(r)?"":String(r);ei(o,c)&&(o.value=c)}else if("innerHTML"===n&&Vn(o.tagName)&&i(o.innerHTML)){(Zr=Zr||document.createElement("div")).innerHTML="<svg>"+r+"</svg>";for(var u=Zr.firstChild;o.firstChild;)o.removeChild(o.firstChild);for(;u.firstChild;)o.appendChild(u.firstChild)}else if(r!==s[n])try{o[n]=r}catch(e){}}}}function ei(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t){var n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(e,t)||function(e,t){var n=e.value,r=e._vModifiers;if(a(r)){if(r.number)return h(n)!==h(t);if(r.trim)return n.trim()!==t.trim()}return n!==t}(e,t))}var ti={create:Qr,update:Qr},ni=w((function(e){var t={},n=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach((function(e){if(e){var r=e.split(n);r.length>1&&(t[r[0].trim()]=r[1].trim())}})),t}));function ri(e){var t=ii(e.style);return e.staticStyle?T(e.staticStyle,t):t}function ii(e){return Array.isArray(e)?I(e):"string"==typeof e?ni(e):e}var ai,oi=/^--/,si=/\s*!important$/,li=function(e,t,n){if(oi.test(t))e.style.setProperty(t,n);else if(si.test(n))e.style.setProperty(C(t),n.replace(si,""),"important");else{var r=ui(t);if(Array.isArray(n))for(var i=0,a=n.length;i<a;i++)e.style[r]=n[i];else e.style[r]=n}},ci=["Webkit","Moz","ms"],ui=w((function(e){if(ai=ai||document.createElement("div").style,"filter"!==(e=k(e))&&e in ai)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=0;n<ci.length;n++){var r=ci[n]+t;if(r in ai)return r}}));function fi(e,t){var n=t.data,r=e.data;if(!(i(n.staticStyle)&&i(n.style)&&i(r.staticStyle)&&i(r.style))){var o,s,l=t.elm,c=r.staticStyle,u=r.normalizedStyle||r.style||{},f=c||u,p=ii(t.data.style)||{};t.data.normalizedStyle=a(p.__ob__)?T({},p):p;var d=function(e,t){for(var n,r={},i=e;i.componentInstance;)(i=i.componentInstance._vnode)&&i.data&&(n=ri(i.data))&&T(r,n);(n=ri(e.data))&&T(r,n);for(var a=e;a=a.parent;)a.data&&(n=ri(a.data))&&T(r,n);return r}(t);for(s in f)i(d[s])&&li(l,s,"");for(s in d)(o=d[s])!==f[s]&&li(l,s,null==o?"":o)}}var pi={create:fi,update:fi},di=/\s+/;function hi(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(di).forEach((function(t){return e.classList.add(t)})):e.classList.add(t);else{var n=" "+(e.getAttribute("class")||"")+" ";n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function vi(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(di).forEach((function(t){return e.classList.remove(t)})):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{for(var n=" "+(e.getAttribute("class")||"")+" ",r=" "+t+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?e.setAttribute("class",n):e.removeAttribute("class")}}function mi(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&T(t,gi(e.name||"v")),T(t,e),t}return"string"==typeof e?gi(e):void 0}}var gi=w((function(e){return{enterClass:e+"-enter",enterToClass:e+"-enter-to",enterActiveClass:e+"-enter-active",leaveClass:e+"-leave",leaveToClass:e+"-leave-to",leaveActiveClass:e+"-leave-active"}})),yi=W&&!Z,bi="transition",_i="animation",wi="transition",xi="transitionend",ki="animation",Si="animationend";yi&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(wi="WebkitTransition",xi="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(ki="WebkitAnimation",Si="webkitAnimationEnd"));var Ai=W?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function Ci(e){Ai((function(){Ai(e)}))}function Ei(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),hi(e,t))}function Oi(e,t){e._transitionClasses&&y(e._transitionClasses,t),vi(e,t)}function Ti(e,t,n){var r=Ni(e,t),i=r.type,a=r.timeout,o=r.propCount;if(!i)return n();var s=i===bi?xi:Si,l=0,c=function(){e.removeEventListener(s,u),n()},u=function(t){t.target===e&&++l>=o&&c()};setTimeout((function(){l<o&&c()}),a+1),e.addEventListener(s,u)}var Ii=/\b(transform|all)(,|$)/;function Ni(e,t){var n,r=window.getComputedStyle(e),i=(r[wi+"Delay"]||"").split(", "),a=(r[wi+"Duration"]||"").split(", "),o=Pi(i,a),s=(r[ki+"Delay"]||"").split(", "),l=(r[ki+"Duration"]||"").split(", "),c=Pi(s,l),u=0,f=0;return t===bi?o>0&&(n=bi,u=o,f=a.length):t===_i?c>0&&(n=_i,u=c,f=l.length):f=(n=(u=Math.max(o,c))>0?o>c?bi:_i:null)?n===bi?a.length:l.length:0,{type:n,timeout:u,propCount:f,hasTransform:n===bi&&Ii.test(r[wi+"Property"])}}function Pi(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max.apply(null,t.map((function(t,n){return zi(t)+zi(e[n])})))}function zi(e){return 1e3*Number(e.slice(0,-1).replace(",","."))}function Mi(e,t){var n=e.elm;a(n._leaveCb)&&(n._leaveCb.cancelled=!0,n._leaveCb());var r=mi(e.data.transition);if(!i(r)&&!a(n._enterCb)&&1===n.nodeType){for(var o=r.css,s=r.type,c=r.enterClass,u=r.enterToClass,f=r.enterActiveClass,p=r.appearClass,d=r.appearToClass,v=r.appearActiveClass,m=r.beforeEnter,g=r.enter,y=r.afterEnter,b=r.enterCancelled,_=r.beforeAppear,w=r.appear,x=r.afterAppear,k=r.appearCancelled,S=r.duration,A=Yt,C=Yt.$vnode;C&&C.parent;)A=C.context,C=C.parent;var E=!A._isMounted||!e.isRootInsert;if(!E||w||""===w){var O=E&&p?p:c,T=E&&v?v:f,I=E&&d?d:u,N=E&&_||m,P=E&&"function"==typeof w?w:g,z=E&&x||y,M=E&&k||b,L=h(l(S)?S.enter:S),j=!1!==o&&!Z,$=ji(P),D=n._enterCb=R((function(){j&&(Oi(n,I),Oi(n,T)),D.cancelled?(j&&Oi(n,O),M&&M(n)):z&&z(n),n._enterCb=null}));e.data.show||st(e,"insert",(function(){var t=n.parentNode,r=t&&t._pending&&t._pending[e.key];r&&r.tag===e.tag&&r.elm._leaveCb&&r.elm._leaveCb(),P&&P(n,D)})),N&&N(n),j&&(Ei(n,O),Ei(n,T),Ci((function(){Oi(n,O),D.cancelled||(Ei(n,I),$||(Ri(L)?setTimeout(D,L):Ti(n,s,D)))}))),e.data.show&&(t&&t(),P&&P(n,D)),j||$||D()}}}function Li(e,t){var n=e.elm;a(n._enterCb)&&(n._enterCb.cancelled=!0,n._enterCb());var r=mi(e.data.transition);if(i(r)||1!==n.nodeType)return t();if(!a(n._leaveCb)){var o=r.css,s=r.type,c=r.leaveClass,u=r.leaveToClass,f=r.leaveActiveClass,p=r.beforeLeave,d=r.leave,v=r.afterLeave,m=r.leaveCancelled,g=r.delayLeave,y=r.duration,b=!1!==o&&!Z,_=ji(d),w=h(l(y)?y.leave:y),x=n._leaveCb=R((function(){n.parentNode&&n.parentNode._pending&&(n.parentNode._pending[e.key]=null),b&&(Oi(n,u),Oi(n,f)),x.cancelled?(b&&Oi(n,c),m&&m(n)):(t(),v&&v(n)),n._leaveCb=null}));g?g(k):k()}function k(){x.cancelled||(!e.data.show&&n.parentNode&&((n.parentNode._pending||(n.parentNode._pending={}))[e.key]=e),p&&p(n),b&&(Ei(n,c),Ei(n,f),Ci((function(){Oi(n,c),x.cancelled||(Ei(n,u),_||(Ri(w)?setTimeout(x,w):Ti(n,s,x)))}))),d&&d(n,x),b||_||x())}}function Ri(e){return"number"==typeof e&&!isNaN(e)}function ji(e){if(i(e))return!1;var t=e.fns;return a(t)?ji(Array.isArray(t)?t[0]:t):(e._length||e.length)>1}function $i(e,t){!0!==t.data.show&&Mi(t)}var Di=function(e){var t,n,r={},l=e.modules,c=e.nodeOps;for(t=0;t<er.length;++t)for(r[er[t]]=[],n=0;n<l.length;++n)a(l[n][er[t]])&&r[er[t]].push(l[n][er[t]]);function u(e){var t=c.parentNode(e);a(t)&&c.removeChild(t,e)}function f(e,t,n,i,s,l,u){if(a(e.elm)&&a(l)&&(e=l[u]=be(e)),e.isRootInsert=!s,!function(e,t,n,i){var s=e.data;if(a(s)){var l=a(e.componentInstance)&&s.keepAlive;if(a(s=s.hook)&&a(s=s.init)&&s(e,!1),a(e.componentInstance))return p(e,t),d(n,e.elm,i),o(l)&&function(e,t,n,i){for(var o,s=e;s.componentInstance;)if(a(o=(s=s.componentInstance._vnode).data)&&a(o=o.transition)){for(o=0;o<r.activate.length;++o)r.activate[o](Qn,s);t.push(s);break}d(n,e.elm,i)}(e,t,n,i),!0}}(e,t,n,i)){var f=e.data,v=e.children,m=e.tag;a(m)?(e.elm=e.ns?c.createElementNS(e.ns,m):c.createElement(m,e),y(e),h(e,v,t),a(f)&&g(e,t),d(n,e.elm,i)):o(e.isComment)?(e.elm=c.createComment(e.text),d(n,e.elm,i)):(e.elm=c.createTextNode(e.text),d(n,e.elm,i))}}function p(e,t){a(e.data.pendingInsert)&&(t.push.apply(t,e.data.pendingInsert),e.data.pendingInsert=null),e.elm=e.componentInstance.$el,m(e)?(g(e,t),y(e)):(Xn(e),t.push(e))}function d(e,t,n){a(e)&&(a(n)?c.parentNode(n)===e&&c.insertBefore(e,t,n):c.appendChild(e,t))}function h(e,t,n){if(Array.isArray(t))for(var r=0;r<t.length;++r)f(t[r],n,e.elm,null,!0,t,r);else s(e.text)&&c.appendChild(e.elm,c.createTextNode(String(e.text)))}function m(e){for(;e.componentInstance;)e=e.componentInstance._vnode;return a(e.tag)}function g(e,n){for(var i=0;i<r.create.length;++i)r.create[i](Qn,e);a(t=e.data.hook)&&(a(t.create)&&t.create(Qn,e),a(t.insert)&&n.push(e))}function y(e){var t;if(a(t=e.fnScopeId))c.setStyleScope(e.elm,t);else for(var n=e;n;)a(t=n.context)&&a(t=t.$options._scopeId)&&c.setStyleScope(e.elm,t),n=n.parent;a(t=Yt)&&t!==e.context&&t!==e.fnContext&&a(t=t.$options._scopeId)&&c.setStyleScope(e.elm,t)}function b(e,t,n,r,i,a){for(;r<=i;++r)f(n[r],a,e,t,!1,n,r)}function _(e){var t,n,i=e.data;if(a(i))for(a(t=i.hook)&&a(t=t.destroy)&&t(e),t=0;t<r.destroy.length;++t)r.destroy[t](e);if(a(t=e.children))for(n=0;n<e.children.length;++n)_(e.children[n])}function w(e,t,n){for(;t<=n;++t){var r=e[t];a(r)&&(a(r.tag)?(x(r),_(r)):u(r.elm))}}function x(e,t){if(a(t)||a(e.data)){var n,i=r.remove.length+1;for(a(t)?t.listeners+=i:t=function(e,t){function n(){0==--n.listeners&&u(e)}return n.listeners=t,n}(e.elm,i),a(n=e.componentInstance)&&a(n=n._vnode)&&a(n.data)&&x(n,t),n=0;n<r.remove.length;++n)r.remove[n](e,t);a(n=e.data.hook)&&a(n=n.remove)?n(e,t):t()}else u(e.elm)}function k(e,t,n,r){for(var i=n;i<r;i++){var o=t[i];if(a(o)&&tr(e,o))return i}}function S(e,t,n,s,l,u){if(e!==t){a(t.elm)&&a(s)&&(t=s[l]=be(t));var p=t.elm=e.elm;if(o(e.isAsyncPlaceholder))a(t.asyncFactory.resolved)?E(e.elm,t,n):t.isAsyncPlaceholder=!0;else if(o(t.isStatic)&&o(e.isStatic)&&t.key===e.key&&(o(t.isCloned)||o(t.isOnce)))t.componentInstance=e.componentInstance;else{var d,h=t.data;a(h)&&a(d=h.hook)&&a(d=d.prepatch)&&d(e,t);var v=e.children,g=t.children;if(a(h)&&m(t)){for(d=0;d<r.update.length;++d)r.update[d](e,t);a(d=h.hook)&&a(d=d.update)&&d(e,t)}i(t.text)?a(v)&&a(g)?v!==g&&function(e,t,n,r,o){for(var s,l,u,p=0,d=0,h=t.length-1,v=t[0],m=t[h],g=n.length-1,y=n[0],_=n[g],x=!o;p<=h&&d<=g;)i(v)?v=t[++p]:i(m)?m=t[--h]:tr(v,y)?(S(v,y,r,n,d),v=t[++p],y=n[++d]):tr(m,_)?(S(m,_,r,n,g),m=t[--h],_=n[--g]):tr(v,_)?(S(v,_,r,n,g),x&&c.insertBefore(e,v.elm,c.nextSibling(m.elm)),v=t[++p],_=n[--g]):tr(m,y)?(S(m,y,r,n,d),x&&c.insertBefore(e,m.elm,v.elm),m=t[--h],y=n[++d]):(i(s)&&(s=nr(t,p,h)),i(l=a(y.key)?s[y.key]:k(y,t,p,h))?f(y,r,e,v.elm,!1,n,d):tr(u=t[l],y)?(S(u,y,r,n,d),t[l]=void 0,x&&c.insertBefore(e,u.elm,v.elm)):f(y,r,e,v.elm,!1,n,d),y=n[++d]);p>h?b(e,i(n[g+1])?null:n[g+1].elm,n,d,g,r):d>g&&w(t,p,h)}(p,v,g,n,u):a(g)?(a(e.text)&&c.setTextContent(p,""),b(p,null,g,0,g.length-1,n)):a(v)?w(v,0,v.length-1):a(e.text)&&c.setTextContent(p,""):e.text!==t.text&&c.setTextContent(p,t.text),a(h)&&a(d=h.hook)&&a(d=d.postpatch)&&d(e,t)}}}function A(e,t,n){if(o(n)&&a(e.parent))e.parent.data.pendingInsert=t;else for(var r=0;r<t.length;++r)t[r].data.hook.insert(t[r])}var C=v("attrs,class,staticClass,staticStyle,key");function E(e,t,n,r){var i,s=t.tag,l=t.data,c=t.children;if(r=r||l&&l.pre,t.elm=e,o(t.isComment)&&a(t.asyncFactory))return t.isAsyncPlaceholder=!0,!0;if(a(l)&&(a(i=l.hook)&&a(i=i.init)&&i(t,!0),a(i=t.componentInstance)))return p(t,n),!0;if(a(s)){if(a(c))if(e.hasChildNodes())if(a(i=l)&&a(i=i.domProps)&&a(i=i.innerHTML)){if(i!==e.innerHTML)return!1}else{for(var u=!0,f=e.firstChild,d=0;d<c.length;d++){if(!f||!E(f,c[d],n,r)){u=!1;break}f=f.nextSibling}if(!u||f)return!1}else h(t,c,n);if(a(l)){var v=!1;for(var m in l)if(!C(m)){v=!0,g(t,n);break}!v&&l.class&&rt(l.class)}}else e.data!==t.text&&(e.data=t.text);return!0}return function(e,t,n,s){if(!i(t)){var l,u=!1,p=[];if(i(e))u=!0,f(t,p);else{var d=a(e.nodeType);if(!d&&tr(e,t))S(e,t,p,null,null,s);else{if(d){if(1===e.nodeType&&e.hasAttribute(j)&&(e.removeAttribute(j),n=!0),o(n)&&E(e,t,p))return A(t,p,!0),e;l=e,e=new ve(c.tagName(l).toLowerCase(),{},[],void 0,l)}var h=e.elm,v=c.parentNode(h);if(f(t,p,h._leaveCb?null:v,c.nextSibling(h)),a(t.parent))for(var g=t.parent,y=m(t);g;){for(var b=0;b<r.destroy.length;++b)r.destroy[b](g);if(g.elm=t.elm,y){for(var x=0;x<r.create.length;++x)r.create[x](Qn,g);var k=g.data.hook.insert;if(k.merged)for(var C=1;C<k.fns.length;C++)k.fns[C]()}else Xn(g);g=g.parent}a(v)?w([e],0,0):a(e.tag)&&_(e)}}return A(t,p,u),t.elm}a(e)&&_(e)}}({nodeOps:Jn,modules:[dr,wr,Xr,ti,pi,W?{create:$i,activate:$i,remove:function(e,t){!0!==e.data.show?Li(e,t):t()}}:{}].concat(cr)});Z&&document.addEventListener("selectionchange",(function(){var e=document.activeElement;e&&e.vmodel&&qi(e,"input")}));var Fi={inserted:function(e,t,n,r){"select"===n.tag?(r.elm&&!r.elm._vOptions?st(n,"postpatch",(function(){Fi.componentUpdated(e,t,n)})):Bi(e,t,n.context),e._vOptions=[].map.call(e.options,Vi)):("textarea"===n.tag||Kn(e.type))&&(e._vModifiers=t.modifiers,t.modifiers.lazy||(e.addEventListener("compositionstart",Gi),e.addEventListener("compositionend",Wi),e.addEventListener("change",Wi),Z&&(e.vmodel=!0)))},componentUpdated:function(e,t,n){if("select"===n.tag){Bi(e,t,n.context);var r=e._vOptions,i=e._vOptions=[].map.call(e.options,Vi);i.some((function(e,t){return!M(e,r[t])}))&&(e.multiple?t.value.some((function(e){return Hi(e,i)})):t.value!==t.oldValue&&Hi(t.value,i))&&qi(e,"change")}}};function Bi(e,t,n){Ui(e,t,n),(J||X)&&setTimeout((function(){Ui(e,t,n)}),0)}function Ui(e,t,n){var r=t.value,i=e.multiple;if(!i||Array.isArray(r)){for(var a,o,s=0,l=e.options.length;s<l;s++)if(o=e.options[s],i)a=L(r,Vi(o))>-1,o.selected!==a&&(o.selected=a);else if(M(Vi(o),r))return void(e.selectedIndex!==s&&(e.selectedIndex=s));i||(e.selectedIndex=-1)}}function Hi(e,t){return t.every((function(t){return!M(t,e)}))}function Vi(e){return"_value"in e?e._value:e.value}function Gi(e){e.target.composing=!0}function Wi(e){e.target.composing&&(e.target.composing=!1,qi(e.target,"input"))}function qi(e,t){var n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function Ki(e){return!e.componentInstance||e.data&&e.data.transition?e:Ki(e.componentInstance._vnode)}var Yi={model:Fi,show:{bind:function(e,t,n){var r=t.value,i=(n=Ki(n)).data&&n.data.transition,a=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;r&&i?(n.data.show=!0,Mi(n,(function(){e.style.display=a}))):e.style.display=r?a:"none"},update:function(e,t,n){var r=t.value;!r!=!t.oldValue&&((n=Ki(n)).data&&n.data.transition?(n.data.show=!0,r?Mi(n,(function(){e.style.display=e.__vOriginalDisplay})):Li(n,(function(){e.style.display="none"}))):e.style.display=r?e.__vOriginalDisplay:"none")},unbind:function(e,t,n,r,i){i||(e.style.display=e.__vOriginalDisplay)}}},Ji={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Zi(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?Zi(Vt(t.children)):e}function Xi(e){var t={},n=e.$options;for(var r in n.propsData)t[r]=e[r];var i=n._parentListeners;for(var a in i)t[k(a)]=i[a];return t}function Qi(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}var ea=function(e){return e.tag||Ht(e)},ta=function(e){return"show"===e.name},na={name:"transition",props:Ji,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(ea)).length){var r=this.mode,i=n[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return i;var a=Zi(i);if(!a)return i;if(this._leaving)return Qi(e,i);var o="__transition-"+this._uid+"-";a.key=null==a.key?a.isComment?o+"comment":o+a.tag:s(a.key)?0===String(a.key).indexOf(o)?a.key:o+a.key:a.key;var l=(a.data||(a.data={})).transition=Xi(this),c=this._vnode,u=Zi(c);if(a.data.directives&&a.data.directives.some(ta)&&(a.data.show=!0),u&&u.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(a,u)&&!Ht(u)&&(!u.componentInstance||!u.componentInstance._vnode.isComment)){var f=u.data.transition=T({},l);if("out-in"===r)return this._leaving=!0,st(f,"afterLeave",(function(){t._leaving=!1,t.$forceUpdate()})),Qi(e,i);if("in-out"===r){if(Ht(a))return c;var p,d=function(){p()};st(l,"afterEnter",d),st(l,"enterCancelled",d),st(f,"delayLeave",(function(e){p=e}))}}return i}}},ra=T({tag:String,moveClass:String},Ji);function ia(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function aa(e){e.data.newPos=e.elm.getBoundingClientRect()}function oa(e){var t=e.data.pos,n=e.data.newPos,r=t.left-n.left,i=t.top-n.top;if(r||i){e.data.moved=!0;var a=e.elm.style;a.transform=a.WebkitTransform="translate("+r+"px,"+i+"px)",a.transitionDuration="0s"}}delete ra.mode;var sa={Transition:na,TransitionGroup:{props:ra,beforeMount:function(){var e=this,t=this._update;this._update=function(n,r){var i=Jt(e);e.__patch__(e._vnode,e.kept,!1,!0),e._vnode=e.kept,i(),t.call(e,n,r)}},render:function(e){for(var t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,i=this.$slots.default||[],a=this.children=[],o=Xi(this),s=0;s<i.length;s++){var l=i[s];l.tag&&null!=l.key&&0!==String(l.key).indexOf("__vlist")&&(a.push(l),n[l.key]=l,(l.data||(l.data={})).transition=o)}if(r){for(var c=[],u=[],f=0;f<r.length;f++){var p=r[f];p.data.transition=o,p.data.pos=p.elm.getBoundingClientRect(),n[p.key]?c.push(p):u.push(p)}this.kept=e(t,null,c),this.removed=u}return e(t,null,a)},updated:function(){var e=this.prevChildren,t=this.moveClass||(this.name||"v")+"-move";e.length&&this.hasMove(e[0].elm,t)&&(e.forEach(ia),e.forEach(aa),e.forEach(oa),this._reflow=document.body.offsetHeight,e.forEach((function(e){if(e.data.moved){var n=e.elm,r=n.style;Ei(n,t),r.transform=r.WebkitTransform=r.transitionDuration="",n.addEventListener(xi,n._moveCb=function e(r){r&&r.target!==n||r&&!/transform$/.test(r.propertyName)||(n.removeEventListener(xi,e),n._moveCb=null,Oi(n,t))})}})))},methods:{hasMove:function(e,t){if(!yi)return!1;if(this._hasMove)return this._hasMove;var n=e.cloneNode();e._transitionClasses&&e._transitionClasses.forEach((function(e){vi(n,e)})),hi(n,t),n.style.display="none",this.$el.appendChild(n);var r=Ni(n);return this.$el.removeChild(n),this._hasMove=r.hasTransform}}}};xn.config.mustUseProp=Nn,xn.config.isReservedTag=Gn,xn.config.isReservedAttr=Tn,xn.config.getTagNamespace=Wn,xn.config.isUnknownElement=function(e){if(!W)return!0;if(Gn(e))return!1;if(e=e.toLowerCase(),null!=qn[e])return qn[e];var t=document.createElement(e);return e.indexOf("-")>-1?qn[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:qn[e]=/HTMLUnknownElement/.test(t.toString())},T(xn.options.directives,Yi),T(xn.options.components,sa),xn.prototype.__patch__=W?Di:N,xn.prototype.$mount=function(e,t){return function(e,t,n){var r;return e.$el=t,e.$options.render||(e.$options.render=ge),Qt(e,"beforeMount"),r=function(){e._update(e._render(),n)},new pn(e,r,N,{before:function(){e._isMounted&&!e._isDestroyed&&Qt(e,"beforeUpdate")}},!0),n=!1,null==e.$vnode&&(e._isMounted=!0,Qt(e,"mounted")),e}(this,e=e&&W?Yn(e):void 0,t)},W&&setTimeout((function(){F.devtools&&ae&&ae.emit("init",xn)}),0);var la,ca=/\{\{((?:.|\r?\n)+?)\}\}/g,ua=/[-.*+?^${}()|[\]\/\\]/g,fa=w((function(e){var t=e[0].replace(ua,"\\$&"),n=e[1].replace(ua,"\\$&");return new RegExp(t+"((?:.|\\n)+?)"+n,"g")})),pa={staticKeys:["staticClass"],transformNode:function(e,t){t.warn;var n=Mr(e,"class");n&&(e.staticClass=JSON.stringify(n));var r=zr(e,"class",!1);r&&(e.classBinding=r)},genData:function(e){var t="";return e.staticClass&&(t+="staticClass:"+e.staticClass+","),e.classBinding&&(t+="class:"+e.classBinding+","),t}},da={staticKeys:["staticStyle"],transformNode:function(e,t){t.warn;var n=Mr(e,"style");n&&(e.staticStyle=JSON.stringify(ni(n)));var r=zr(e,"style",!1);r&&(e.styleBinding=r)},genData:function(e){var t="";return e.staticStyle&&(t+="staticStyle:"+e.staticStyle+","),e.styleBinding&&(t+="style:("+e.styleBinding+"),"),t}},ha=v("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),va=v("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),ma=v("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),ga=/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,ya=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,ba="[a-zA-Z_][\\-\\.0-9_a-zA-Z"+B.source+"]*",_a="((?:"+ba+"\\:)?"+ba+")",wa=new RegExp("^<"+_a),xa=/^\s*(\/?)>/,ka=new RegExp("^<\\/"+_a+"[^>]*>"),Sa=/^<!DOCTYPE [^>]+>/i,Aa=/^<!\--/,Ca=/^<!\[/,Ea=v("script,style,textarea",!0),Oa={},Ta={"<":"<",">":">",""":'"',"&":"&"," ":"\n","	":"\t","'":"'"},Ia=/&(?:lt|gt|quot|amp|#39);/g,Na=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,Pa=v("pre,textarea",!0),za=function(e,t){return e&&Pa(e)&&"\n"===t[0]};function Ma(e,t){var n=t?Na:Ia;return e.replace(n,(function(e){return Ta[e]}))}var La,Ra,ja,$a,Da,Fa,Ba,Ua,Ha=/^@|^v-on:/,Va=/^v-|^@|^:|^#/,Ga=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,Wa=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,qa=/^\(|\)$/g,Ka=/^\[.*\]$/,Ya=/:(.*)$/,Ja=/^:|^\.|^v-bind:/,Za=/\.[^.\]]+(?=[^\]]*$)/g,Xa=/^v-slot(:|$)|^#/,Qa=/[\r\n]/,eo=/\s+/g,to=w((function(e){return(la=la||document.createElement("div")).innerHTML=e,la.textContent})),no="_empty_";function ro(e,t,n){return{type:1,tag:e,attrsList:t,attrsMap:co(t),rawAttrsMap:{},parent:n,children:[]}}function io(e,t){var n,r;(r=zr(n=e,"key"))&&(n.key=r),e.plain=!e.key&&!e.scopedSlots&&!e.attrsList.length,function(e){var t=zr(e,"ref");t&&(e.ref=t,e.refInFor=function(e){for(var t=e;t;){if(void 0!==t.for)return!0;t=t.parent}return!1}(e))}(e),function(e){var t;"template"===e.tag?(t=Mr(e,"scope"),e.slotScope=t||Mr(e,"slot-scope")):(t=Mr(e,"slot-scope"))&&(e.slotScope=t);var n=zr(e,"slot");if(n&&(e.slotTarget='""'===n?'"default"':n,e.slotTargetDynamic=!(!e.attrsMap[":slot"]&&!e.attrsMap["v-bind:slot"]),"template"===e.tag||e.slotScope||Or(e,"slot",n,function(e,t){return e.rawAttrsMap[":"+t]||e.rawAttrsMap["v-bind:"+t]||e.rawAttrsMap[t]}(e,"slot"))),"template"===e.tag){var r=Lr(e,Xa);if(r){var i=so(r),a=i.name,o=i.dynamic;e.slotTarget=a,e.slotTargetDynamic=o,e.slotScope=r.value||no}}else{var s=Lr(e,Xa);if(s){var l=e.scopedSlots||(e.scopedSlots={}),c=so(s),u=c.name,f=c.dynamic,p=l[u]=ro("template",[],e);p.slotTarget=u,p.slotTargetDynamic=f,p.children=e.children.filter((function(e){if(!e.slotScope)return e.parent=p,!0})),p.slotScope=s.value||no,e.children=[],e.plain=!1}}}(e),function(e){"slot"===e.tag&&(e.slotName=zr(e,"name"))}(e),function(e){var t;(t=zr(e,"is"))&&(e.component=t),null!=Mr(e,"inline-template")&&(e.inlineTemplate=!0)}(e);for(var i=0;i<ja.length;i++)e=ja[i](e,t)||e;return function(e){var t,n,r,i,a,o,s,l,c=e.attrsList;for(t=0,n=c.length;t<n;t++)if(r=i=c[t].name,a=c[t].value,Va.test(r))if(e.hasBindings=!0,(o=lo(r.replace(Va,"")))&&(r=r.replace(Za,"")),Ja.test(r))r=r.replace(Ja,""),a=kr(a),(l=Ka.test(r))&&(r=r.slice(1,-1)),o&&(o.prop&&!l&&"innerHtml"===(r=k(r))&&(r="innerHTML"),o.camel&&!l&&(r=k(r)),o.sync&&(s=$r(a,"$event"),l?Pr(e,'"update:"+('+r+")",s,null,!1,0,c[t],!0):(Pr(e,"update:"+k(r),s,null,!1,0,c[t]),C(r)!==k(r)&&Pr(e,"update:"+C(r),s,null,!1,0,c[t])))),o&&o.prop||!e.component&&Ba(e.tag,e.attrsMap.type,r)?Er(e,r,a,c[t],l):Or(e,r,a,c[t],l);else if(Ha.test(r))r=r.replace(Ha,""),(l=Ka.test(r))&&(r=r.slice(1,-1)),Pr(e,r,a,o,!1,0,c[t],l);else{var u=(r=r.replace(Va,"")).match(Ya),f=u&&u[1];l=!1,f&&(r=r.slice(0,-(f.length+1)),Ka.test(f)&&(f=f.slice(1,-1),l=!0)),Ir(e,r,i,a,f,l,o,c[t])}else Or(e,r,JSON.stringify(a),c[t]),!e.component&&"muted"===r&&Ba(e.tag,e.attrsMap.type,r)&&Er(e,r,"true",c[t])}(e),e}function ao(e){var t;if(t=Mr(e,"v-for")){var n=function(e){var t=e.match(Ga);if(t){var n={};n.for=t[2].trim();var r=t[1].trim().replace(qa,""),i=r.match(Wa);return i?(n.alias=r.replace(Wa,"").trim(),n.iterator1=i[1].trim(),i[2]&&(n.iterator2=i[2].trim())):n.alias=r,n}}(t);n&&T(e,n)}}function oo(e,t){e.ifConditions||(e.ifConditions=[]),e.ifConditions.push(t)}function so(e){var t=e.name.replace(Xa,"");return t||"#"!==e.name[0]&&(t="default"),Ka.test(t)?{name:t.slice(1,-1),dynamic:!0}:{name:'"'+t+'"',dynamic:!1}}function lo(e){var t=e.match(Za);if(t){var n={};return t.forEach((function(e){n[e.slice(1)]=!0})),n}}function co(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n].name]=e[n].value;return t}var uo=/^xmlns:NS\d+/,fo=/^NS\d+:/;function po(e){return ro(e.tag,e.attrsList.slice(),e.parent)}var ho,vo,mo=[pa,da,{preTransformNode:function(e,t){if("input"===e.tag){var n,r=e.attrsMap;if(!r["v-model"])return;if((r[":type"]||r["v-bind:type"])&&(n=zr(e,"type")),r.type||n||!r["v-bind"]||(n="("+r["v-bind"]+").type"),n){var i=Mr(e,"v-if",!0),a=i?"&&("+i+")":"",o=null!=Mr(e,"v-else",!0),s=Mr(e,"v-else-if",!0),l=po(e);ao(l),Tr(l,"type","checkbox"),io(l,t),l.processed=!0,l.if="("+n+")==='checkbox'"+a,oo(l,{exp:l.if,block:l});var c=po(e);Mr(c,"v-for",!0),Tr(c,"type","radio"),io(c,t),oo(l,{exp:"("+n+")==='radio'"+a,block:c});var u=po(e);return Mr(u,"v-for",!0),Tr(u,":type",n),io(u,t),oo(l,{exp:i,block:u}),o?l.else=!0:s&&(l.elseif=s),l}}}}],go={expectHTML:!0,modules:mo,directives:{model:function(e,t,n){var r=t.value,i=t.modifiers,a=e.tag,o=e.attrsMap.type;if(e.component)return jr(e,r,i),!1;if("select"===a)!function(e,t,n){var r='var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return '+(n&&n.number?"_n(val)":"val")+"});";Pr(e,"change",r=r+" "+$r(t,"$event.target.multiple ? $$selectedVal : $$selectedVal[0]"),null,!0)}(e,r,i);else if("input"===a&&"checkbox"===o)!function(e,t,n){var r=n&&n.number,i=zr(e,"value")||"null",a=zr(e,"true-value")||"true",o=zr(e,"false-value")||"false";Er(e,"checked","Array.isArray("+t+")?_i("+t+","+i+")>-1"+("true"===a?":("+t+")":":_q("+t+","+a+")")),Pr(e,"change","var $$a="+t+",$$el=$event.target,$$c=$$el.checked?("+a+"):("+o+");if(Array.isArray($$a)){var $$v="+(r?"_n("+i+")":i)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+$r(t,"$$a.concat([$$v])")+")}else{$$i>-1&&("+$r(t,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+$r(t,"$$c")+"}",null,!0)}(e,r,i);else if("input"===a&&"radio"===o)!function(e,t,n){var r=n&&n.number,i=zr(e,"value")||"null";Er(e,"checked","_q("+t+","+(i=r?"_n("+i+")":i)+")"),Pr(e,"change",$r(t,i),null,!0)}(e,r,i);else if("input"===a||"textarea"===a)!function(e,t,n){var r=e.attrsMap.type,i=n||{},a=i.lazy,o=i.number,s=i.trim,l=!a&&"range"!==r,c=a?"change":"range"===r?Gr:"input",u="$event.target.value";s&&(u="$event.target.value.trim()"),o&&(u="_n("+u+")");var f=$r(t,u);l&&(f="if($event.target.composing)return;"+f),Er(e,"value","("+t+")"),Pr(e,c,f,null,!0),(s||o)&&Pr(e,"blur","$forceUpdate()")}(e,r,i);else if(!F.isReservedTag(a))return jr(e,r,i),!1;return!0},text:function(e,t){t.value&&Er(e,"textContent","_s("+t.value+")",t)},html:function(e,t){t.value&&Er(e,"innerHTML","_s("+t.value+")",t)}},isPreTag:function(e){return"pre"===e},isUnaryTag:ha,mustUseProp:Nn,canBeLeftOpenTag:va,isReservedTag:Gn,getTagNamespace:Wn,staticKeys:function(e){return e.reduce((function(e,t){return e.concat(t.staticKeys||[])}),[]).join(",")}(mo)},yo=w((function(e){return v("type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap"+(e?","+e:""))}));var bo=/^([\w$_]+|\([^)]*?\))\s*=>|^function(?:\s+[\w$]+)?\s*\(/,_o=/\([^)]*?\);*$/,wo=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,xo={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},ko={esc:["Esc","Escape"],tab:"Tab",enter:"Enter",space:[" ","Spacebar"],up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete","Del"]},So=function(e){return"if("+e+")return null;"},Ao={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:So("$event.target !== $event.currentTarget"),ctrl:So("!$event.ctrlKey"),shift:So("!$event.shiftKey"),alt:So("!$event.altKey"),meta:So("!$event.metaKey"),left:So("'button' in $event && $event.button !== 0"),middle:So("'button' in $event && $event.button !== 1"),right:So("'button' in $event && $event.button !== 2")};function Co(e,t){var n=t?"nativeOn:":"on:",r="",i="";for(var a in e){var o=Eo(e[a]);e[a]&&e[a].dynamic?i+=a+","+o+",":r+='"'+a+'":'+o+","}return r="{"+r.slice(0,-1)+"}",i?n+"_d("+r+",["+i.slice(0,-1)+"])":n+r}function Eo(e){if(!e)return"function(){}";if(Array.isArray(e))return"["+e.map((function(e){return Eo(e)})).join(",")+"]";var t=wo.test(e.value),n=bo.test(e.value),r=wo.test(e.value.replace(_o,""));if(e.modifiers){var i="",a="",o=[];for(var s in e.modifiers)if(Ao[s])a+=Ao[s],xo[s]&&o.push(s);else if("exact"===s){var l=e.modifiers;a+=So(["ctrl","shift","alt","meta"].filter((function(e){return!l[e]})).map((function(e){return"$event."+e+"Key"})).join("||"))}else o.push(s);return o.length&&(i+=function(e){return"if(!$event.type.indexOf('key')&&"+e.map(Oo).join("&&")+")return null;"}(o)),a&&(i+=a),"function($event){"+i+(t?"return "+e.value+"($event)":n?"return ("+e.value+")($event)":r?"return "+e.value:e.value)+"}"}return t||n?e.value:"function($event){"+(r?"return "+e.value:e.value)+"}"}function Oo(e){var t=parseInt(e,10);if(t)return"$event.keyCode!=="+t;var n=xo[e],r=ko[e];return"_k($event.keyCode,"+JSON.stringify(e)+","+JSON.stringify(n)+",$event.key,"+JSON.stringify(r)+")"}var To={on:function(e,t){e.wrapListeners=function(e){return"_g("+e+","+t.value+")"}},bind:function(e,t){e.wrapData=function(n){return"_b("+n+",'"+e.tag+"',"+t.value+","+(t.modifiers&&t.modifiers.prop?"true":"false")+(t.modifiers&&t.modifiers.sync?",true":"")+")"}},cloak:N},Io=function(e){this.options=e,this.warn=e.warn||Ar,this.transforms=Cr(e.modules,"transformCode"),this.dataGenFns=Cr(e.modules,"genData"),this.directives=T(T({},To),e.directives);var t=e.isReservedTag||P;this.maybeComponent=function(e){return!!e.component||!t(e.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function No(e,t){var n=new Io(t);return{render:"with(this){return "+(e?Po(e,n):'_c("div")')+"}",staticRenderFns:n.staticRenderFns}}function Po(e,t){if(e.parent&&(e.pre=e.pre||e.parent.pre),e.staticRoot&&!e.staticProcessed)return zo(e,t);if(e.once&&!e.onceProcessed)return Mo(e,t);if(e.for&&!e.forProcessed)return Ro(e,t);if(e.if&&!e.ifProcessed)return Lo(e,t);if("template"!==e.tag||e.slotTarget||t.pre){if("slot"===e.tag)return function(e,t){var n=e.slotName||'"default"',r=Fo(e,t),i="_t("+n+(r?","+r:""),a=e.attrs||e.dynamicAttrs?Ho((e.attrs||[]).concat(e.dynamicAttrs||[]).map((function(e){return{name:k(e.name),value:e.value,dynamic:e.dynamic}}))):null,o=e.attrsMap["v-bind"];return!a&&!o||r||(i+=",null"),a&&(i+=","+a),o&&(i+=(a?"":",null")+","+o),i+")"}(e,t);var n;if(e.component)n=function(e,t,n){var r=t.inlineTemplate?null:Fo(t,n,!0);return"_c("+e+","+jo(t,n)+(r?","+r:"")+")"}(e.component,e,t);else{var r;(!e.plain||e.pre&&t.maybeComponent(e))&&(r=jo(e,t));var i=e.inlineTemplate?null:Fo(e,t,!0);n="_c('"+e.tag+"'"+(r?","+r:"")+(i?","+i:"")+")"}for(var a=0;a<t.transforms.length;a++)n=t.transforms[a](e,n);return n}return Fo(e,t)||"void 0"}function zo(e,t){e.staticProcessed=!0;var n=t.pre;return e.pre&&(t.pre=e.pre),t.staticRenderFns.push("with(this){return "+Po(e,t)+"}"),t.pre=n,"_m("+(t.staticRenderFns.length-1)+(e.staticInFor?",true":"")+")"}function Mo(e,t){if(e.onceProcessed=!0,e.if&&!e.ifProcessed)return Lo(e,t);if(e.staticInFor){for(var n="",r=e.parent;r;){if(r.for){n=r.key;break}r=r.parent}return n?"_o("+Po(e,t)+","+t.onceId+++","+n+")":Po(e,t)}return zo(e,t)}function Lo(e,t,n,r){return e.ifProcessed=!0,function e(t,n,r,i){if(!t.length)return i||"_e()";var a=t.shift();return a.exp?"("+a.exp+")?"+o(a.block)+":"+e(t,n,r,i):""+o(a.block);function o(e){return r?r(e,n):e.once?Mo(e,n):Po(e,n)}}(e.ifConditions.slice(),t,n,r)}function Ro(e,t,n,r){var i=e.for,a=e.alias,o=e.iterator1?","+e.iterator1:"",s=e.iterator2?","+e.iterator2:"";return e.forProcessed=!0,(r||"_l")+"(("+i+"),function("+a+o+s+"){return "+(n||Po)(e,t)+"})"}function jo(e,t){var n="{",r=function(e,t){var n=e.directives;if(n){var r,i,a,o,s="directives:[",l=!1;for(r=0,i=n.length;r<i;r++){a=n[r],o=!0;var c=t.directives[a.name];c&&(o=!!c(e,a,t.warn)),o&&(l=!0,s+='{name:"'+a.name+'",rawName:"'+a.rawName+'"'+(a.value?",value:("+a.value+"),expression:"+JSON.stringify(a.value):"")+(a.arg?",arg:"+(a.isDynamicArg?a.arg:'"'+a.arg+'"'):"")+(a.modifiers?",modifiers:"+JSON.stringify(a.modifiers):"")+"},")}return l?s.slice(0,-1)+"]":void 0}}(e,t);r&&(n+=r+","),e.key&&(n+="key:"+e.key+","),e.ref&&(n+="ref:"+e.ref+","),e.refInFor&&(n+="refInFor:true,"),e.pre&&(n+="pre:true,"),e.component&&(n+='tag:"'+e.tag+'",');for(var i=0;i<t.dataGenFns.length;i++)n+=t.dataGenFns[i](e);if(e.attrs&&(n+="attrs:"+Ho(e.attrs)+","),e.props&&(n+="domProps:"+Ho(e.props)+","),e.events&&(n+=Co(e.events,!1)+","),e.nativeEvents&&(n+=Co(e.nativeEvents,!0)+","),e.slotTarget&&!e.slotScope&&(n+="slot:"+e.slotTarget+","),e.scopedSlots&&(n+=function(e,t,n){var r=e.for||Object.keys(t).some((function(e){var n=t[e];return n.slotTargetDynamic||n.if||n.for||$o(n)})),i=!!e.if;if(!r)for(var a=e.parent;a;){if(a.slotScope&&a.slotScope!==no||a.for){r=!0;break}a.if&&(i=!0),a=a.parent}var o=Object.keys(t).map((function(e){return Do(t[e],n)})).join(",");return"scopedSlots:_u(["+o+"]"+(r?",null,true":"")+(!r&&i?",null,false,"+function(e){for(var t=5381,n=e.length;n;)t=33*t^e.charCodeAt(--n);return t>>>0}(o):"")+")"}(e,e.scopedSlots,t)+","),e.model&&(n+="model:{value:"+e.model.value+",callback:"+e.model.callback+",expression:"+e.model.expression+"},"),e.inlineTemplate){var a=function(e,t){var n=e.children[0];if(n&&1===n.type){var r=No(n,t.options);return"inlineTemplate:{render:function(){"+r.render+"},staticRenderFns:["+r.staticRenderFns.map((function(e){return"function(){"+e+"}"})).join(",")+"]}"}}(e,t);a&&(n+=a+",")}return n=n.replace(/,$/,"")+"}",e.dynamicAttrs&&(n="_b("+n+',"'+e.tag+'",'+Ho(e.dynamicAttrs)+")"),e.wrapData&&(n=e.wrapData(n)),e.wrapListeners&&(n=e.wrapListeners(n)),n}function $o(e){return 1===e.type&&("slot"===e.tag||e.children.some($o))}function Do(e,t){var n=e.attrsMap["slot-scope"];if(e.if&&!e.ifProcessed&&!n)return Lo(e,t,Do,"null");if(e.for&&!e.forProcessed)return Ro(e,t,Do);var r=e.slotScope===no?"":String(e.slotScope),i="function("+r+"){return "+("template"===e.tag?e.if&&n?"("+e.if+")?"+(Fo(e,t)||"undefined")+":undefined":Fo(e,t)||"undefined":Po(e,t))+"}",a=r?"":",proxy:true";return"{key:"+(e.slotTarget||'"default"')+",fn:"+i+a+"}"}function Fo(e,t,n,r,i){var a=e.children;if(a.length){var o=a[0];if(1===a.length&&o.for&&"template"!==o.tag&&"slot"!==o.tag){var s=n?t.maybeComponent(o)?",1":",0":"";return""+(r||Po)(o,t)+s}var l=n?function(e,t){for(var n=0,r=0;r<e.length;r++){var i=e[r];if(1===i.type){if(Bo(i)||i.ifConditions&&i.ifConditions.some((function(e){return Bo(e.block)}))){n=2;break}(t(i)||i.ifConditions&&i.ifConditions.some((function(e){return t(e.block)})))&&(n=1)}}return n}(a,t.maybeComponent):0,c=i||Uo;return"["+a.map((function(e){return c(e,t)})).join(",")+"]"+(l?","+l:"")}}function Bo(e){return void 0!==e.for||"template"===e.tag||"slot"===e.tag}function Uo(e,t){return 1===e.type?Po(e,t):3===e.type&&e.isComment?(r=e,"_e("+JSON.stringify(r.text)+")"):"_v("+(2===(n=e).type?n.expression:Vo(JSON.stringify(n.text)))+")";var n,r}function Ho(e){for(var t="",n="",r=0;r<e.length;r++){var i=e[r],a=Vo(i.value);i.dynamic?n+=i.name+","+a+",":t+='"'+i.name+'":'+a+","}return t="{"+t.slice(0,-1)+"}",n?"_d("+t+",["+n.slice(0,-1)+"])":t}function Vo(e){return e.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}function Go(e,t){try{return new Function(e)}catch(n){return t.push({err:n,code:e}),N}}function Wo(e){var t=Object.create(null);return function(n,r,i){(r=T({},r)).warn,delete r.warn;var a=r.delimiters?String(r.delimiters)+n:n;if(t[a])return t[a];var o=e(n,r),s={},l=[];return s.render=Go(o.render,l),s.staticRenderFns=o.staticRenderFns.map((function(e){return Go(e,l)})),t[a]=s}}new RegExp("\\b"+"do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,super,throw,while,yield,delete,export,import,return,switch,default,extends,finally,continue,debugger,function,arguments".split(",").join("\\b|\\b")+"\\b");var qo,Ko,Yo=(qo=function(e,t){var n=function(e,t){La=t.warn||Ar,Fa=t.isPreTag||P,Ba=t.mustUseProp||P,Ua=t.getTagNamespace||P,t.isReservedTag,ja=Cr(t.modules,"transformNode"),$a=Cr(t.modules,"preTransformNode"),Da=Cr(t.modules,"postTransformNode"),Ra=t.delimiters;var n,r,i=[],a=!1!==t.preserveWhitespace,o=t.whitespace,s=!1,l=!1;function c(e){if(u(e),s||e.processed||(e=io(e,t)),i.length||e===n||n.if&&(e.elseif||e.else)&&oo(n,{exp:e.elseif,block:e}),r&&!e.forbidden)if(e.elseif||e.else)o=e,(c=function(e){for(var t=e.length;t--;){if(1===e[t].type)return e[t];e.pop()}}(r.children))&&c.if&&oo(c,{exp:o.elseif,block:o});else{if(e.slotScope){var a=e.slotTarget||'"default"';(r.scopedSlots||(r.scopedSlots={}))[a]=e}r.children.push(e),e.parent=r}var o,c;e.children=e.children.filter((function(e){return!e.slotScope})),u(e),e.pre&&(s=!1),Fa(e.tag)&&(l=!1);for(var f=0;f<Da.length;f++)Da[f](e,t)}function u(e){if(!l)for(var t;(t=e.children[e.children.length-1])&&3===t.type&&" "===t.text;)e.children.pop()}return function(e,t){for(var n,r,i=[],a=t.expectHTML,o=t.isUnaryTag||P,s=t.canBeLeftOpenTag||P,l=0;e;){if(n=e,r&&Ea(r)){var c=0,u=r.toLowerCase(),f=Oa[u]||(Oa[u]=new RegExp("([\\s\\S]*?)(</"+u+"[^>]*>)","i")),p=e.replace(f,(function(e,n,r){return c=r.length,Ea(u)||"noscript"===u||(n=n.replace(/<!\--([\s\S]*?)-->/g,"$1").replace(/<!\[CDATA\[([\s\S]*?)]]>/g,"$1")),za(u,n)&&(n=n.slice(1)),t.chars&&t.chars(n),""}));l+=e.length-p.length,e=p,C(u,l-c,l)}else{var d=e.indexOf("<");if(0===d){if(Aa.test(e)){var h=e.indexOf("--\x3e");if(h>=0){t.shouldKeepComment&&t.comment(e.substring(4,h),l,l+h+3),k(h+3);continue}}if(Ca.test(e)){var v=e.indexOf("]>");if(v>=0){k(v+2);continue}}var m=e.match(Sa);if(m){k(m[0].length);continue}var g=e.match(ka);if(g){var y=l;k(g[0].length),C(g[1],y,l);continue}var b=S();if(b){A(b),za(b.tagName,e)&&k(1);continue}}var _=void 0,w=void 0,x=void 0;if(d>=0){for(w=e.slice(d);!(ka.test(w)||wa.test(w)||Aa.test(w)||Ca.test(w)||(x=w.indexOf("<",1))<0);)d+=x,w=e.slice(d);_=e.substring(0,d)}d<0&&(_=e),_&&k(_.length),t.chars&&_&&t.chars(_,l-_.length,l)}if(e===n){t.chars&&t.chars(e);break}}function k(t){l+=t,e=e.substring(t)}function S(){var t=e.match(wa);if(t){var n,r,i={tagName:t[1],attrs:[],start:l};for(k(t[0].length);!(n=e.match(xa))&&(r=e.match(ya)||e.match(ga));)r.start=l,k(r[0].length),r.end=l,i.attrs.push(r);if(n)return i.unarySlash=n[1],k(n[0].length),i.end=l,i}}function A(e){var n=e.tagName,l=e.unarySlash;a&&("p"===r&&ma(n)&&C(r),s(n)&&r===n&&C(n));for(var c=o(n)||!!l,u=e.attrs.length,f=new Array(u),p=0;p<u;p++){var d=e.attrs[p],h=d[3]||d[4]||d[5]||"",v="a"===n&&"href"===d[1]?t.shouldDecodeNewlinesForHref:t.shouldDecodeNewlines;f[p]={name:d[1],value:Ma(h,v)}}c||(i.push({tag:n,lowerCasedTag:n.toLowerCase(),attrs:f,start:e.start,end:e.end}),r=n),t.start&&t.start(n,f,c,e.start,e.end)}function C(e,n,a){var o,s;if(null==n&&(n=l),null==a&&(a=l),e)for(s=e.toLowerCase(),o=i.length-1;o>=0&&i[o].lowerCasedTag!==s;o--);else o=0;if(o>=0){for(var c=i.length-1;c>=o;c--)t.end&&t.end(i[c].tag,n,a);i.length=o,r=o&&i[o-1].tag}else"br"===s?t.start&&t.start(e,[],!0,n,a):"p"===s&&(t.start&&t.start(e,[],!1,n,a),t.end&&t.end(e,n,a))}C()}(e,{warn:La,expectHTML:t.expectHTML,isUnaryTag:t.isUnaryTag,canBeLeftOpenTag:t.canBeLeftOpenTag,shouldDecodeNewlines:t.shouldDecodeNewlines,shouldDecodeNewlinesForHref:t.shouldDecodeNewlinesForHref,shouldKeepComment:t.comments,outputSourceRange:t.outputSourceRange,start:function(e,a,o,u,f){var p=r&&r.ns||Ua(e);J&&"svg"===p&&(a=function(e){for(var t=[],n=0;n<e.length;n++){var r=e[n];uo.test(r.name)||(r.name=r.name.replace(fo,""),t.push(r))}return t}(a));var d,h=ro(e,a,r);p&&(h.ns=p),"style"!==(d=h).tag&&("script"!==d.tag||d.attrsMap.type&&"text/javascript"!==d.attrsMap.type)||ie()||(h.forbidden=!0);for(var v=0;v<$a.length;v++)h=$a[v](h,t)||h;s||(function(e){null!=Mr(e,"v-pre")&&(e.pre=!0)}(h),h.pre&&(s=!0)),Fa(h.tag)&&(l=!0),s?function(e){var t=e.attrsList,n=t.length;if(n)for(var r=e.attrs=new Array(n),i=0;i<n;i++)r[i]={name:t[i].name,value:JSON.stringify(t[i].value)},null!=t[i].start&&(r[i].start=t[i].start,r[i].end=t[i].end);else e.pre||(e.plain=!0)}(h):h.processed||(ao(h),function(e){var t=Mr(e,"v-if");if(t)e.if=t,oo(e,{exp:t,block:e});else{null!=Mr(e,"v-else")&&(e.else=!0);var n=Mr(e,"v-else-if");n&&(e.elseif=n)}}(h),function(e){null!=Mr(e,"v-once")&&(e.once=!0)}(h)),n||(n=h),o?c(h):(r=h,i.push(h))},end:function(e,t,n){var a=i[i.length-1];i.length-=1,r=i[i.length-1],c(a)},chars:function(e,t,n){if(r&&(!J||"textarea"!==r.tag||r.attrsMap.placeholder!==e)){var i,c,u,f=r.children;(e=l||e.trim()?"script"===(i=r).tag||"style"===i.tag?e:to(e):f.length?o?"condense"===o&&Qa.test(e)?"":" ":a?" ":"":"")&&(l||"condense"!==o||(e=e.replace(eo," ")),!s&&" "!==e&&(c=function(e,t){var n=t?fa(t):ca;if(n.test(e)){for(var r,i,a,o=[],s=[],l=n.lastIndex=0;r=n.exec(e);){(i=r.index)>l&&(s.push(a=e.slice(l,i)),o.push(JSON.stringify(a)));var c=kr(r[1].trim());o.push("_s("+c+")"),s.push({"@binding":c}),l=i+r[0].length}return l<e.length&&(s.push(a=e.slice(l)),o.push(JSON.stringify(a))),{expression:o.join("+"),tokens:s}}}(e,Ra))?u={type:2,expression:c.expression,tokens:c.tokens,text:e}:" "===e&&f.length&&" "===f[f.length-1].text||(u={type:3,text:e}),u&&f.push(u))}},comment:function(e,t,n){if(r){var i={type:3,text:e,isComment:!0};r.children.push(i)}}}),n}(e.trim(),t);!1!==t.optimize&&function(e,t){e&&(ho=yo(t.staticKeys||""),vo=t.isReservedTag||P,function e(t){if(t.static=function(e){return 2!==e.type&&(3===e.type||!(!e.pre&&(e.hasBindings||e.if||e.for||m(e.tag)||!vo(e.tag)||function(e){for(;e.parent;){if("template"!==(e=e.parent).tag)return!1;if(e.for)return!0}return!1}(e)||!Object.keys(e).every(ho))))}(t),1===t.type){if(!vo(t.tag)&&"slot"!==t.tag&&null==t.attrsMap["inline-template"])return;for(var n=0,r=t.children.length;n<r;n++){var i=t.children[n];e(i),i.static||(t.static=!1)}if(t.ifConditions)for(var a=1,o=t.ifConditions.length;a<o;a++){var s=t.ifConditions[a].block;e(s),s.static||(t.static=!1)}}}(e),function e(t,n){if(1===t.type){if((t.static||t.once)&&(t.staticInFor=n),t.static&&t.children.length&&(1!==t.children.length||3!==t.children[0].type))return void(t.staticRoot=!0);if(t.staticRoot=!1,t.children)for(var r=0,i=t.children.length;r<i;r++)e(t.children[r],n||!!t.for);if(t.ifConditions)for(var a=1,o=t.ifConditions.length;a<o;a++)e(t.ifConditions[a].block,n)}}(e,!1))}(n,t);var r=No(n,t);return{ast:n,render:r.render,staticRenderFns:r.staticRenderFns}},function(e){function t(t,n){var r=Object.create(e),i=[],a=[];if(n)for(var o in n.modules&&(r.modules=(e.modules||[]).concat(n.modules)),n.directives&&(r.directives=T(Object.create(e.directives||null),n.directives)),n)"modules"!==o&&"directives"!==o&&(r[o]=n[o]);r.warn=function(e,t,n){(n?a:i).push(e)};var s=qo(t.trim(),r);return s.errors=i,s.tips=a,s}return{compile:t,compileToFunctions:Wo(t)}})(go),Jo=(Yo.compile,Yo.compileToFunctions);function Zo(e){return(Ko=Ko||document.createElement("div")).innerHTML=e?'<a href="\n"/>':'<div a="\n"/>',Ko.innerHTML.indexOf(" ")>0}var Xo=!!W&&Zo(!1),Qo=!!W&&Zo(!0),es=w((function(e){var t=Yn(e);return t&&t.innerHTML})),ts=xn.prototype.$mount;xn.prototype.$mount=function(e,t){if((e=e&&Yn(e))===document.body||e===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"==typeof r)"#"===r.charAt(0)&&(r=es(r));else{if(!r.nodeType)return this;r=r.innerHTML}else e&&(r=function(e){if(e.outerHTML)return e.outerHTML;var t=document.createElement("div");return t.appendChild(e.cloneNode(!0)),t.innerHTML}(e));if(r){var i=Jo(r,{outputSourceRange:!1,shouldDecodeNewlines:Xo,shouldDecodeNewlinesForHref:Qo,delimiters:n.delimiters,comments:n.comments},this),a=i.render,o=i.staticRenderFns;n.render=a,n.staticRenderFns=o}}return ts.call(this,e,t)},xn.compile=Jo,e.exports=xn}).call(this,n("yLpj"),n("URgk").setImmediate)},JEQr:function(e,t,n){"use strict";(function(t){var r=n("xTJ+"),i=n("yK9s"),a={"Content-Type":"application/x-www-form-urlencoded"};function o(e,t){!r.isUndefined(e)&&r.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var s,l={adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==t&&"[object process]"===Object.prototype.toString.call(t))&&(s=n("tQ2B")),s),transformRequest:[function(e,t){return i(t,"Accept"),i(t,"Content-Type"),r.isFormData(e)||r.isArrayBuffer(e)||r.isBuffer(e)||r.isStream(e)||r.isFile(e)||r.isBlob(e)?e:r.isArrayBufferView(e)?e.buffer:r.isURLSearchParams(e)?(o(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):r.isObject(e)?(o(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return e>=200&&e<300}};l.headers={common:{Accept:"application/json, text/plain, */*"}},r.forEach(["delete","get","head"],(function(e){l.headers[e]={}})),r.forEach(["post","put","patch"],(function(e){l.headers[e]=r.merge(a)})),e.exports=l}).call(this,n("8oxB"))},"KHd+":function(e,t,n){"use strict";function r(e,t,n,r,i,a,o,s){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=n,c._compiled=!0),r&&(c.functional=!0),a&&(c._scopeId="data-v-"+a),o?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},c._ssrRegister=l):i&&(l=s?function(){i.call(this,this.$root.$options.shadowRoot)}:i),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var f=c.beforeCreate;c.beforeCreate=f?[].concat(f,l):[l]}return{exports:e,options:c}}n.d(t,"a",(function(){return r}))},L2JU:function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return x}));var r=("undefined"!=typeof window?window:void 0!==e?e:{}).__VUE_DEVTOOLS_GLOBAL_HOOK__;function i(e,t){if(void 0===t&&(t=[]),null===e||"object"!=typeof e)return e;var n,r=(n=function(t){return t.original===e},t.filter(n)[0]);if(r)return r.copy;var a=Array.isArray(e)?[]:{};return t.push({original:e,copy:a}),Object.keys(e).forEach((function(n){a[n]=i(e[n],t)})),a}function a(e,t){Object.keys(e).forEach((function(n){return t(e[n],n)}))}function o(e){return null!==e&&"object"==typeof e}var s=function(e,t){this.runtime=t,this._children=Object.create(null),this._rawModule=e;var n=e.state;this.state=("function"==typeof n?n():n)||{}},l={namespaced:{configurable:!0}};l.namespaced.get=function(){return!!this._rawModule.namespaced},s.prototype.addChild=function(e,t){this._children[e]=t},s.prototype.removeChild=function(e){delete this._children[e]},s.prototype.getChild=function(e){return this._children[e]},s.prototype.hasChild=function(e){return e in this._children},s.prototype.update=function(e){this._rawModule.namespaced=e.namespaced,e.actions&&(this._rawModule.actions=e.actions),e.mutations&&(this._rawModule.mutations=e.mutations),e.getters&&(this._rawModule.getters=e.getters)},s.prototype.forEachChild=function(e){a(this._children,e)},s.prototype.forEachGetter=function(e){this._rawModule.getters&&a(this._rawModule.getters,e)},s.prototype.forEachAction=function(e){this._rawModule.actions&&a(this._rawModule.actions,e)},s.prototype.forEachMutation=function(e){this._rawModule.mutations&&a(this._rawModule.mutations,e)},Object.defineProperties(s.prototype,l);var c=function(e){this.register([],e,!1)};c.prototype.get=function(e){return e.reduce((function(e,t){return e.getChild(t)}),this.root)},c.prototype.getNamespace=function(e){var t=this.root;return e.reduce((function(e,n){return e+((t=t.getChild(n)).namespaced?n+"/":"")}),"")},c.prototype.update=function(e){!function e(t,n,r){0;if(n.update(r),r.modules)for(var i in r.modules){if(!n.getChild(i))return void 0;e(t.concat(i),n.getChild(i),r.modules[i])}}([],this.root,e)},c.prototype.register=function(e,t,n){var r=this;void 0===n&&(n=!0);var i=new s(t,n);0===e.length?this.root=i:this.get(e.slice(0,-1)).addChild(e[e.length-1],i);t.modules&&a(t.modules,(function(t,i){r.register(e.concat(i),t,n)}))},c.prototype.unregister=function(e){var t=this.get(e.slice(0,-1)),n=e[e.length-1],r=t.getChild(n);r&&r.runtime&&t.removeChild(n)},c.prototype.isRegistered=function(e){var t=this.get(e.slice(0,-1)),n=e[e.length-1];return t.hasChild(n)};var u;var f=function(e){var t=this;void 0===e&&(e={}),!u&&"undefined"!=typeof window&&window.Vue&&b(window.Vue);var n=e.plugins;void 0===n&&(n=[]);var i=e.strict;void 0===i&&(i=!1),this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new c(e),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._watcherVM=new u,this._makeLocalGettersCache=Object.create(null);var a=this,o=this.dispatch,s=this.commit;this.dispatch=function(e,t){return o.call(a,e,t)},this.commit=function(e,t,n){return s.call(a,e,t,n)},this.strict=i;var l=this._modules.root.state;m(this,l,[],this._modules.root),v(this,l),n.forEach((function(e){return e(t)})),(void 0!==e.devtools?e.devtools:u.config.devtools)&&function(e){r&&(e._devtoolHook=r,r.emit("vuex:init",e),r.on("vuex:travel-to-state",(function(t){e.replaceState(t)})),e.subscribe((function(e,t){r.emit("vuex:mutation",e,t)}),{prepend:!0}),e.subscribeAction((function(e,t){r.emit("vuex:action",e,t)}),{prepend:!0}))}(this)},p={state:{configurable:!0}};function d(e,t,n){return t.indexOf(e)<0&&(n&&n.prepend?t.unshift(e):t.push(e)),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}function h(e,t){e._actions=Object.create(null),e._mutations=Object.create(null),e._wrappedGetters=Object.create(null),e._modulesNamespaceMap=Object.create(null);var n=e.state;m(e,n,[],e._modules.root,!0),v(e,n,t)}function v(e,t,n){var r=e._vm;e.getters={},e._makeLocalGettersCache=Object.create(null);var i=e._wrappedGetters,o={};a(i,(function(t,n){o[n]=function(e,t){return function(){return e(t)}}(t,e),Object.defineProperty(e.getters,n,{get:function(){return e._vm[n]},enumerable:!0})}));var s=u.config.silent;u.config.silent=!0,e._vm=new u({data:{$$state:t},computed:o}),u.config.silent=s,e.strict&&function(e){e._vm.$watch((function(){return this._data.$$state}),(function(){0}),{deep:!0,sync:!0})}(e),r&&(n&&e._withCommit((function(){r._data.$$state=null})),u.nextTick((function(){return r.$destroy()})))}function m(e,t,n,r,i){var a=!n.length,o=e._modules.getNamespace(n);if(r.namespaced&&(e._modulesNamespaceMap[o],e._modulesNamespaceMap[o]=r),!a&&!i){var s=g(t,n.slice(0,-1)),l=n[n.length-1];e._withCommit((function(){u.set(s,l,r.state)}))}var c=r.context=function(e,t,n){var r=""===t,i={dispatch:r?e.dispatch:function(n,r,i){var a=y(n,r,i),o=a.payload,s=a.options,l=a.type;return s&&s.root||(l=t+l),e.dispatch(l,o)},commit:r?e.commit:function(n,r,i){var a=y(n,r,i),o=a.payload,s=a.options,l=a.type;s&&s.root||(l=t+l),e.commit(l,o,s)}};return Object.defineProperties(i,{getters:{get:r?function(){return e.getters}:function(){return function(e,t){if(!e._makeLocalGettersCache[t]){var n={},r=t.length;Object.keys(e.getters).forEach((function(i){if(i.slice(0,r)===t){var a=i.slice(r);Object.defineProperty(n,a,{get:function(){return e.getters[i]},enumerable:!0})}})),e._makeLocalGettersCache[t]=n}return e._makeLocalGettersCache[t]}(e,t)}},state:{get:function(){return g(e.state,n)}}}),i}(e,o,n);r.forEachMutation((function(t,n){!function(e,t,n,r){(e._mutations[t]||(e._mutations[t]=[])).push((function(t){n.call(e,r.state,t)}))}(e,o+n,t,c)})),r.forEachAction((function(t,n){var r=t.root?n:o+n,i=t.handler||t;!function(e,t,n,r){(e._actions[t]||(e._actions[t]=[])).push((function(t){var i,a=n.call(e,{dispatch:r.dispatch,commit:r.commit,getters:r.getters,state:r.state,rootGetters:e.getters,rootState:e.state},t);return(i=a)&&"function"==typeof i.then||(a=Promise.resolve(a)),e._devtoolHook?a.catch((function(t){throw e._devtoolHook.emit("vuex:error",t),t})):a}))}(e,r,i,c)})),r.forEachGetter((function(t,n){!function(e,t,n,r){if(e._wrappedGetters[t])return void 0;e._wrappedGetters[t]=function(e){return n(r.state,r.getters,e.state,e.getters)}}(e,o+n,t,c)})),r.forEachChild((function(r,a){m(e,t,n.concat(a),r,i)}))}function g(e,t){return t.reduce((function(e,t){return e[t]}),e)}function y(e,t,n){return o(e)&&e.type&&(n=t,t=e,e=e.type),{type:e,payload:t,options:n}}function b(e){u&&e===u||function(e){if(Number(e.version.split(".")[0])>=2)e.mixin({beforeCreate:n});else{var t=e.prototype._init;e.prototype._init=function(e){void 0===e&&(e={}),e.init=e.init?[n].concat(e.init):n,t.call(this,e)}}function n(){var e=this.$options;e.store?this.$store="function"==typeof e.store?e.store():e.store:e.parent&&e.parent.$store&&(this.$store=e.parent.$store)}}(u=e)}p.state.get=function(){return this._vm._data.$$state},p.state.set=function(e){0},f.prototype.commit=function(e,t,n){var r=this,i=y(e,t,n),a=i.type,o=i.payload,s=(i.options,{type:a,payload:o}),l=this._mutations[a];l&&(this._withCommit((function(){l.forEach((function(e){e(o)}))})),this._subscribers.slice().forEach((function(e){return e(s,r.state)})))},f.prototype.dispatch=function(e,t){var n=this,r=y(e,t),i=r.type,a=r.payload,o={type:i,payload:a},s=this._actions[i];if(s){try{this._actionSubscribers.slice().filter((function(e){return e.before})).forEach((function(e){return e.before(o,n.state)}))}catch(e){0}var l=s.length>1?Promise.all(s.map((function(e){return e(a)}))):s[0](a);return new Promise((function(e,t){l.then((function(t){try{n._actionSubscribers.filter((function(e){return e.after})).forEach((function(e){return e.after(o,n.state)}))}catch(e){0}e(t)}),(function(e){try{n._actionSubscribers.filter((function(e){return e.error})).forEach((function(t){return t.error(o,n.state,e)}))}catch(e){0}t(e)}))}))}},f.prototype.subscribe=function(e,t){return d(e,this._subscribers,t)},f.prototype.subscribeAction=function(e,t){return d("function"==typeof e?{before:e}:e,this._actionSubscribers,t)},f.prototype.watch=function(e,t,n){var r=this;return this._watcherVM.$watch((function(){return e(r.state,r.getters)}),t,n)},f.prototype.replaceState=function(e){var t=this;this._withCommit((function(){t._vm._data.$$state=e}))},f.prototype.registerModule=function(e,t,n){void 0===n&&(n={}),"string"==typeof e&&(e=[e]),this._modules.register(e,t),m(this,this.state,e,this._modules.get(e),n.preserveState),v(this,this.state)},f.prototype.unregisterModule=function(e){var t=this;"string"==typeof e&&(e=[e]),this._modules.unregister(e),this._withCommit((function(){var n=g(t.state,e.slice(0,-1));u.delete(n,e[e.length-1])})),h(this)},f.prototype.hasModule=function(e){return"string"==typeof e&&(e=[e]),this._modules.isRegistered(e)},f.prototype.hotUpdate=function(e){this._modules.update(e),h(this,!0)},f.prototype._withCommit=function(e){var t=this._committing;this._committing=!0,e(),this._committing=t},Object.defineProperties(f.prototype,p);var _=A((function(e,t){var n={};return S(t).forEach((function(t){var r=t.key,i=t.val;n[r]=function(){var t=this.$store.state,n=this.$store.getters;if(e){var r=C(this.$store,"mapState",e);if(!r)return;t=r.context.state,n=r.context.getters}return"function"==typeof i?i.call(this,t,n):t[i]},n[r].vuex=!0})),n})),w=A((function(e,t){var n={};return S(t).forEach((function(t){var r=t.key,i=t.val;n[r]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var r=this.$store.commit;if(e){var a=C(this.$store,"mapMutations",e);if(!a)return;r=a.context.commit}return"function"==typeof i?i.apply(this,[r].concat(t)):r.apply(this.$store,[i].concat(t))}})),n})),x=A((function(e,t){var n={};return S(t).forEach((function(t){var r=t.key,i=t.val;i=e+i,n[r]=function(){if(!e||C(this.$store,"mapGetters",e))return this.$store.getters[i]},n[r].vuex=!0})),n})),k=A((function(e,t){var n={};return S(t).forEach((function(t){var r=t.key,i=t.val;n[r]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var r=this.$store.dispatch;if(e){var a=C(this.$store,"mapActions",e);if(!a)return;r=a.context.dispatch}return"function"==typeof i?i.apply(this,[r].concat(t)):r.apply(this.$store,[i].concat(t))}})),n}));function S(e){return function(e){return Array.isArray(e)||o(e)}(e)?Array.isArray(e)?e.map((function(e){return{key:e,val:e}})):Object.keys(e).map((function(t){return{key:t,val:e[t]}})):[]}function A(e){return function(t,n){return"string"!=typeof t?(n=t,t=""):"/"!==t.charAt(t.length-1)&&(t+="/"),e(t,n)}}function C(e,t,n){return e._modulesNamespaceMap[n]}function E(e,t,n){var r=n?e.groupCollapsed:e.group;try{r.call(e,t)}catch(n){e.log(t)}}function O(e){try{e.groupEnd()}catch(t){e.log("—— log end ——")}}function T(){var e=new Date;return" @ "+I(e.getHours(),2)+":"+I(e.getMinutes(),2)+":"+I(e.getSeconds(),2)+"."+I(e.getMilliseconds(),3)}function I(e,t){return n="0",r=t-e.toString().length,new Array(r+1).join(n)+e;var n,r}var N={Store:f,install:b,version:"3.5.1",mapState:_,mapMutations:w,mapGetters:x,mapActions:k,createNamespacedHelpers:function(e){return{mapState:_.bind(null,e),mapGetters:x.bind(null,e),mapMutations:w.bind(null,e),mapActions:k.bind(null,e)}},createLogger:function(e){void 0===e&&(e={});var t=e.collapsed;void 0===t&&(t=!0);var n=e.filter;void 0===n&&(n=function(e,t,n){return!0});var r=e.transformer;void 0===r&&(r=function(e){return e});var a=e.mutationTransformer;void 0===a&&(a=function(e){return e});var o=e.actionFilter;void 0===o&&(o=function(e,t){return!0});var s=e.actionTransformer;void 0===s&&(s=function(e){return e});var l=e.logMutations;void 0===l&&(l=!0);var c=e.logActions;void 0===c&&(c=!0);var u=e.logger;return void 0===u&&(u=console),function(e){var f=i(e.state);void 0!==u&&(l&&e.subscribe((function(e,o){var s=i(o);if(n(e,f,s)){var l=T(),c=a(e),p="mutation "+e.type+l;E(u,p,t),u.log("%c prev state","color: #9E9E9E; font-weight: bold",r(f)),u.log("%c mutation","color: #03A9F4; font-weight: bold",c),u.log("%c next state","color: #4CAF50; font-weight: bold",r(s)),O(u)}f=s})),c&&e.subscribeAction((function(e,n){if(o(e,n)){var r=T(),i=s(e),a="action "+e.type+r;E(u,a,t),u.log("%c action","color: #03A9F4; font-weight: bold",i),O(u)}})))}}};t.a=N}).call(this,n("yLpj"))},LBfB:function(e,t,n){var r=n("0Z4L");"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n("aET+")(r,i);r.locals&&(e.exports=r.locals)},LYNF:function(e,t,n){"use strict";var r=n("OH9c");e.exports=function(e,t,n,i,a){var o=new Error(e);return r(o,t,n,i,a)}},Lmem:function(e,t,n){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},LvDl:function(e,t,n){(function(e,r){var i;(function(){var a="Expected a function",o="__lodash_placeholder__",s=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],l="[object Arguments]",c="[object Array]",u="[object Boolean]",f="[object Date]",p="[object Error]",d="[object Function]",h="[object GeneratorFunction]",v="[object Map]",m="[object Number]",g="[object Object]",y="[object RegExp]",b="[object Set]",_="[object String]",w="[object Symbol]",x="[object WeakMap]",k="[object ArrayBuffer]",S="[object DataView]",A="[object Float32Array]",C="[object Float64Array]",E="[object Int8Array]",O="[object Int16Array]",T="[object Int32Array]",I="[object Uint8Array]",N="[object Uint16Array]",P="[object Uint32Array]",z=/\b__p \+= '';/g,M=/\b(__p \+=) '' \+/g,L=/(__e\(.*?\)|\b__t\)) \+\n'';/g,R=/&(?:amp|lt|gt|quot|#39);/g,j=/[&<>"']/g,$=RegExp(R.source),D=RegExp(j.source),F=/<%-([\s\S]+?)%>/g,B=/<%([\s\S]+?)%>/g,U=/<%=([\s\S]+?)%>/g,H=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,V=/^\w*$/,G=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,W=/[\\^$.*+?()[\]{}|]/g,q=RegExp(W.source),K=/^\s+|\s+$/g,Y=/^\s+/,J=/\s+$/,Z=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,X=/\{\n\/\* \[wrapped with (.+)\] \*/,Q=/,? & /,ee=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,te=/\\(\\)?/g,ne=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,re=/\w*$/,ie=/^[-+]0x[0-9a-f]+$/i,ae=/^0b[01]+$/i,oe=/^\[object .+?Constructor\]$/,se=/^0o[0-7]+$/i,le=/^(?:0|[1-9]\d*)$/,ce=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,ue=/($^)/,fe=/['\n\r\u2028\u2029\\]/g,pe="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",de="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",he="[\\ud800-\\udfff]",ve="["+de+"]",me="["+pe+"]",ge="\\d+",ye="[\\u2700-\\u27bf]",be="[a-z\\xdf-\\xf6\\xf8-\\xff]",_e="[^\\ud800-\\udfff"+de+ge+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",we="\\ud83c[\\udffb-\\udfff]",xe="[^\\ud800-\\udfff]",ke="(?:\\ud83c[\\udde6-\\uddff]){2}",Se="[\\ud800-\\udbff][\\udc00-\\udfff]",Ae="[A-Z\\xc0-\\xd6\\xd8-\\xde]",Ce="(?:"+be+"|"+_e+")",Ee="(?:"+Ae+"|"+_e+")",Oe="(?:"+me+"|"+we+")"+"?",Te="[\\ufe0e\\ufe0f]?"+Oe+("(?:\\u200d(?:"+[xe,ke,Se].join("|")+")[\\ufe0e\\ufe0f]?"+Oe+")*"),Ie="(?:"+[ye,ke,Se].join("|")+")"+Te,Ne="(?:"+[xe+me+"?",me,ke,Se,he].join("|")+")",Pe=RegExp("['’]","g"),ze=RegExp(me,"g"),Me=RegExp(we+"(?="+we+")|"+Ne+Te,"g"),Le=RegExp([Ae+"?"+be+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[ve,Ae,"$"].join("|")+")",Ee+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[ve,Ae+Ce,"$"].join("|")+")",Ae+"?"+Ce+"+(?:['’](?:d|ll|m|re|s|t|ve))?",Ae+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",ge,Ie].join("|"),"g"),Re=RegExp("[\\u200d\\ud800-\\udfff"+pe+"\\ufe0e\\ufe0f]"),je=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,$e=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],De=-1,Fe={};Fe[A]=Fe[C]=Fe[E]=Fe[O]=Fe[T]=Fe[I]=Fe["[object Uint8ClampedArray]"]=Fe[N]=Fe[P]=!0,Fe[l]=Fe[c]=Fe[k]=Fe[u]=Fe[S]=Fe[f]=Fe[p]=Fe[d]=Fe[v]=Fe[m]=Fe[g]=Fe[y]=Fe[b]=Fe[_]=Fe[x]=!1;var Be={};Be[l]=Be[c]=Be[k]=Be[S]=Be[u]=Be[f]=Be[A]=Be[C]=Be[E]=Be[O]=Be[T]=Be[v]=Be[m]=Be[g]=Be[y]=Be[b]=Be[_]=Be[w]=Be[I]=Be["[object Uint8ClampedArray]"]=Be[N]=Be[P]=!0,Be[p]=Be[d]=Be[x]=!1;var Ue={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},He=parseFloat,Ve=parseInt,Ge="object"==typeof e&&e&&e.Object===Object&&e,We="object"==typeof self&&self&&self.Object===Object&&self,qe=Ge||We||Function("return this")(),Ke=t&&!t.nodeType&&t,Ye=Ke&&"object"==typeof r&&r&&!r.nodeType&&r,Je=Ye&&Ye.exports===Ke,Ze=Je&&Ge.process,Xe=function(){try{var e=Ye&&Ye.require&&Ye.require("util").types;return e||Ze&&Ze.binding&&Ze.binding("util")}catch(e){}}(),Qe=Xe&&Xe.isArrayBuffer,et=Xe&&Xe.isDate,tt=Xe&&Xe.isMap,nt=Xe&&Xe.isRegExp,rt=Xe&&Xe.isSet,it=Xe&&Xe.isTypedArray;function at(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function ot(e,t,n,r){for(var i=-1,a=null==e?0:e.length;++i<a;){var o=e[i];t(r,o,n(o),e)}return r}function st(e,t){for(var n=-1,r=null==e?0:e.length;++n<r&&!1!==t(e[n],n,e););return e}function lt(e,t){for(var n=null==e?0:e.length;n--&&!1!==t(e[n],n,e););return e}function ct(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(!t(e[n],n,e))return!1;return!0}function ut(e,t){for(var n=-1,r=null==e?0:e.length,i=0,a=[];++n<r;){var o=e[n];t(o,n,e)&&(a[i++]=o)}return a}function ft(e,t){return!!(null==e?0:e.length)&&wt(e,t,0)>-1}function pt(e,t,n){for(var r=-1,i=null==e?0:e.length;++r<i;)if(n(t,e[r]))return!0;return!1}function dt(e,t){for(var n=-1,r=null==e?0:e.length,i=Array(r);++n<r;)i[n]=t(e[n],n,e);return i}function ht(e,t){for(var n=-1,r=t.length,i=e.length;++n<r;)e[i+n]=t[n];return e}function vt(e,t,n,r){var i=-1,a=null==e?0:e.length;for(r&&a&&(n=e[++i]);++i<a;)n=t(n,e[i],i,e);return n}function mt(e,t,n,r){var i=null==e?0:e.length;for(r&&i&&(n=e[--i]);i--;)n=t(n,e[i],i,e);return n}function gt(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}var yt=At("length");function bt(e,t,n){var r;return n(e,(function(e,n,i){if(t(e,n,i))return r=n,!1})),r}function _t(e,t,n,r){for(var i=e.length,a=n+(r?1:-1);r?a--:++a<i;)if(t(e[a],a,e))return a;return-1}function wt(e,t,n){return t==t?function(e,t,n){var r=n-1,i=e.length;for(;++r<i;)if(e[r]===t)return r;return-1}(e,t,n):_t(e,kt,n)}function xt(e,t,n,r){for(var i=n-1,a=e.length;++i<a;)if(r(e[i],t))return i;return-1}function kt(e){return e!=e}function St(e,t){var n=null==e?0:e.length;return n?Ot(e,t)/n:NaN}function At(e){return function(t){return null==t?void 0:t[e]}}function Ct(e){return function(t){return null==e?void 0:e[t]}}function Et(e,t,n,r,i){return i(e,(function(e,i,a){n=r?(r=!1,e):t(n,e,i,a)})),n}function Ot(e,t){for(var n,r=-1,i=e.length;++r<i;){var a=t(e[r]);void 0!==a&&(n=void 0===n?a:n+a)}return n}function Tt(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}function It(e){return function(t){return e(t)}}function Nt(e,t){return dt(t,(function(t){return e[t]}))}function Pt(e,t){return e.has(t)}function zt(e,t){for(var n=-1,r=e.length;++n<r&&wt(t,e[n],0)>-1;);return n}function Mt(e,t){for(var n=e.length;n--&&wt(t,e[n],0)>-1;);return n}function Lt(e,t){for(var n=e.length,r=0;n--;)e[n]===t&&++r;return r}var Rt=Ct({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),jt=Ct({"&":"&","<":"<",">":">",'"':""","'":"'"});function $t(e){return"\\"+Ue[e]}function Dt(e){return Re.test(e)}function Ft(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}function Bt(e,t){return function(n){return e(t(n))}}function Ut(e,t){for(var n=-1,r=e.length,i=0,a=[];++n<r;){var s=e[n];s!==t&&s!==o||(e[n]=o,a[i++]=n)}return a}function Ht(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}function Vt(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=[e,e]})),n}function Gt(e){return Dt(e)?function(e){var t=Me.lastIndex=0;for(;Me.test(e);)++t;return t}(e):yt(e)}function Wt(e){return Dt(e)?function(e){return e.match(Me)||[]}(e):function(e){return e.split("")}(e)}var qt=Ct({"&":"&","<":"<",">":">",""":'"',"'":"'"});var Kt=function e(t){var n,r=(t=null==t?qe:Kt.defaults(qe.Object(),t,Kt.pick(qe,$e))).Array,i=t.Date,pe=t.Error,de=t.Function,he=t.Math,ve=t.Object,me=t.RegExp,ge=t.String,ye=t.TypeError,be=r.prototype,_e=de.prototype,we=ve.prototype,xe=t["__core-js_shared__"],ke=_e.toString,Se=we.hasOwnProperty,Ae=0,Ce=(n=/[^.]+$/.exec(xe&&xe.keys&&xe.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",Ee=we.toString,Oe=ke.call(ve),Te=qe._,Ie=me("^"+ke.call(Se).replace(W,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Ne=Je?t.Buffer:void 0,Me=t.Symbol,Re=t.Uint8Array,Ue=Ne?Ne.allocUnsafe:void 0,Ge=Bt(ve.getPrototypeOf,ve),We=ve.create,Ke=we.propertyIsEnumerable,Ye=be.splice,Ze=Me?Me.isConcatSpreadable:void 0,Xe=Me?Me.iterator:void 0,yt=Me?Me.toStringTag:void 0,Ct=function(){try{var e=Qi(ve,"defineProperty");return e({},"",{}),e}catch(e){}}(),Yt=t.clearTimeout!==qe.clearTimeout&&t.clearTimeout,Jt=i&&i.now!==qe.Date.now&&i.now,Zt=t.setTimeout!==qe.setTimeout&&t.setTimeout,Xt=he.ceil,Qt=he.floor,en=ve.getOwnPropertySymbols,tn=Ne?Ne.isBuffer:void 0,nn=t.isFinite,rn=be.join,an=Bt(ve.keys,ve),on=he.max,sn=he.min,ln=i.now,cn=t.parseInt,un=he.random,fn=be.reverse,pn=Qi(t,"DataView"),dn=Qi(t,"Map"),hn=Qi(t,"Promise"),vn=Qi(t,"Set"),mn=Qi(t,"WeakMap"),gn=Qi(ve,"create"),yn=mn&&new mn,bn={},_n=Ca(pn),wn=Ca(dn),xn=Ca(hn),kn=Ca(vn),Sn=Ca(mn),An=Me?Me.prototype:void 0,Cn=An?An.valueOf:void 0,En=An?An.toString:void 0;function On(e){if(Vo(e)&&!zo(e)&&!(e instanceof Pn)){if(e instanceof Nn)return e;if(Se.call(e,"__wrapped__"))return Ea(e)}return new Nn(e)}var Tn=function(){function e(){}return function(t){if(!Ho(t))return{};if(We)return We(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function In(){}function Nn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}function Pn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function zn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Mn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Ln(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Rn(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new Ln;++t<n;)this.add(e[t])}function jn(e){var t=this.__data__=new Mn(e);this.size=t.size}function $n(e,t){var n=zo(e),r=!n&&Po(e),i=!n&&!r&&jo(e),a=!n&&!r&&!i&&Xo(e),o=n||r||i||a,s=o?Tt(e.length,ge):[],l=s.length;for(var c in e)!t&&!Se.call(e,c)||o&&("length"==c||i&&("offset"==c||"parent"==c)||a&&("buffer"==c||"byteLength"==c||"byteOffset"==c)||oa(c,l))||s.push(c);return s}function Dn(e){var t=e.length;return t?e[Rr(0,t-1)]:void 0}function Fn(e,t){return ka(gi(e),Yn(t,0,e.length))}function Bn(e){return ka(gi(e))}function Un(e,t,n){(void 0!==n&&!To(e[t],n)||void 0===n&&!(t in e))&&qn(e,t,n)}function Hn(e,t,n){var r=e[t];Se.call(e,t)&&To(r,n)&&(void 0!==n||t in e)||qn(e,t,n)}function Vn(e,t){for(var n=e.length;n--;)if(To(e[n][0],t))return n;return-1}function Gn(e,t,n,r){return er(e,(function(e,i,a){t(r,e,n(e),a)})),r}function Wn(e,t){return e&&yi(t,_s(t),e)}function qn(e,t,n){"__proto__"==t&&Ct?Ct(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}function Kn(e,t){for(var n=-1,i=t.length,a=r(i),o=null==e;++n<i;)a[n]=o?void 0:vs(e,t[n]);return a}function Yn(e,t,n){return e==e&&(void 0!==n&&(e=e<=n?e:n),void 0!==t&&(e=e>=t?e:t)),e}function Jn(e,t,n,r,i,a){var o,s=1&t,c=2&t,p=4&t;if(n&&(o=i?n(e,r,i,a):n(e)),void 0!==o)return o;if(!Ho(e))return e;var x=zo(e);if(x){if(o=function(e){var t=e.length,n=new e.constructor(t);t&&"string"==typeof e[0]&&Se.call(e,"index")&&(n.index=e.index,n.input=e.input);return n}(e),!s)return gi(e,o)}else{var z=na(e),M=z==d||z==h;if(jo(e))return fi(e,s);if(z==g||z==l||M&&!i){if(o=c||M?{}:ia(e),!s)return c?function(e,t){return yi(e,ta(e),t)}(e,function(e,t){return e&&yi(t,ws(t),e)}(o,e)):function(e,t){return yi(e,ea(e),t)}(e,Wn(o,e))}else{if(!Be[z])return i?e:{};o=function(e,t,n){var r=e.constructor;switch(t){case k:return pi(e);case u:case f:return new r(+e);case S:return function(e,t){var n=t?pi(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case A:case C:case E:case O:case T:case I:case"[object Uint8ClampedArray]":case N:case P:return di(e,n);case v:return new r;case m:case _:return new r(e);case y:return function(e){var t=new e.constructor(e.source,re.exec(e));return t.lastIndex=e.lastIndex,t}(e);case b:return new r;case w:return i=e,Cn?ve(Cn.call(i)):{}}var i}(e,z,s)}}a||(a=new jn);var L=a.get(e);if(L)return L;a.set(e,o),Yo(e)?e.forEach((function(r){o.add(Jn(r,t,n,r,e,a))})):Go(e)&&e.forEach((function(r,i){o.set(i,Jn(r,t,n,i,e,a))}));var R=x?void 0:(p?c?Wi:Gi:c?ws:_s)(e);return st(R||e,(function(r,i){R&&(r=e[i=r]),Hn(o,i,Jn(r,t,n,i,e,a))})),o}function Zn(e,t,n){var r=n.length;if(null==e)return!r;for(e=ve(e);r--;){var i=n[r],a=t[i],o=e[i];if(void 0===o&&!(i in e)||!a(o))return!1}return!0}function Xn(e,t,n){if("function"!=typeof e)throw new ye(a);return ba((function(){e.apply(void 0,n)}),t)}function Qn(e,t,n,r){var i=-1,a=ft,o=!0,s=e.length,l=[],c=t.length;if(!s)return l;n&&(t=dt(t,It(n))),r?(a=pt,o=!1):t.length>=200&&(a=Pt,o=!1,t=new Rn(t));e:for(;++i<s;){var u=e[i],f=null==n?u:n(u);if(u=r||0!==u?u:0,o&&f==f){for(var p=c;p--;)if(t[p]===f)continue e;l.push(u)}else a(t,f,r)||l.push(u)}return l}On.templateSettings={escape:F,evaluate:B,interpolate:U,variable:"",imports:{_:On}},On.prototype=In.prototype,On.prototype.constructor=On,Nn.prototype=Tn(In.prototype),Nn.prototype.constructor=Nn,Pn.prototype=Tn(In.prototype),Pn.prototype.constructor=Pn,zn.prototype.clear=function(){this.__data__=gn?gn(null):{},this.size=0},zn.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},zn.prototype.get=function(e){var t=this.__data__;if(gn){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return Se.call(t,e)?t[e]:void 0},zn.prototype.has=function(e){var t=this.__data__;return gn?void 0!==t[e]:Se.call(t,e)},zn.prototype.set=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=gn&&void 0===t?"__lodash_hash_undefined__":t,this},Mn.prototype.clear=function(){this.__data__=[],this.size=0},Mn.prototype.delete=function(e){var t=this.__data__,n=Vn(t,e);return!(n<0)&&(n==t.length-1?t.pop():Ye.call(t,n,1),--this.size,!0)},Mn.prototype.get=function(e){var t=this.__data__,n=Vn(t,e);return n<0?void 0:t[n][1]},Mn.prototype.has=function(e){return Vn(this.__data__,e)>-1},Mn.prototype.set=function(e,t){var n=this.__data__,r=Vn(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},Ln.prototype.clear=function(){this.size=0,this.__data__={hash:new zn,map:new(dn||Mn),string:new zn}},Ln.prototype.delete=function(e){var t=Zi(this,e).delete(e);return this.size-=t?1:0,t},Ln.prototype.get=function(e){return Zi(this,e).get(e)},Ln.prototype.has=function(e){return Zi(this,e).has(e)},Ln.prototype.set=function(e,t){var n=Zi(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},Rn.prototype.add=Rn.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},Rn.prototype.has=function(e){return this.__data__.has(e)},jn.prototype.clear=function(){this.__data__=new Mn,this.size=0},jn.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},jn.prototype.get=function(e){return this.__data__.get(e)},jn.prototype.has=function(e){return this.__data__.has(e)},jn.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Mn){var r=n.__data__;if(!dn||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Ln(r)}return n.set(e,t),this.size=n.size,this};var er=wi(lr),tr=wi(cr,!0);function nr(e,t){var n=!0;return er(e,(function(e,r,i){return n=!!t(e,r,i)})),n}function rr(e,t,n){for(var r=-1,i=e.length;++r<i;){var a=e[r],o=t(a);if(null!=o&&(void 0===s?o==o&&!Zo(o):n(o,s)))var s=o,l=a}return l}function ir(e,t){var n=[];return er(e,(function(e,r,i){t(e,r,i)&&n.push(e)})),n}function ar(e,t,n,r,i){var a=-1,o=e.length;for(n||(n=aa),i||(i=[]);++a<o;){var s=e[a];t>0&&n(s)?t>1?ar(s,t-1,n,r,i):ht(i,s):r||(i[i.length]=s)}return i}var or=xi(),sr=xi(!0);function lr(e,t){return e&&or(e,t,_s)}function cr(e,t){return e&&sr(e,t,_s)}function ur(e,t){return ut(t,(function(t){return Fo(e[t])}))}function fr(e,t){for(var n=0,r=(t=si(t,e)).length;null!=e&&n<r;)e=e[Aa(t[n++])];return n&&n==r?e:void 0}function pr(e,t,n){var r=t(e);return zo(e)?r:ht(r,n(e))}function dr(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":yt&&yt in ve(e)?function(e){var t=Se.call(e,yt),n=e[yt];try{e[yt]=void 0;var r=!0}catch(e){}var i=Ee.call(e);r&&(t?e[yt]=n:delete e[yt]);return i}(e):function(e){return Ee.call(e)}(e)}function hr(e,t){return e>t}function vr(e,t){return null!=e&&Se.call(e,t)}function mr(e,t){return null!=e&&t in ve(e)}function gr(e,t,n){for(var i=n?pt:ft,a=e[0].length,o=e.length,s=o,l=r(o),c=1/0,u=[];s--;){var f=e[s];s&&t&&(f=dt(f,It(t))),c=sn(f.length,c),l[s]=!n&&(t||a>=120&&f.length>=120)?new Rn(s&&f):void 0}f=e[0];var p=-1,d=l[0];e:for(;++p<a&&u.length<c;){var h=f[p],v=t?t(h):h;if(h=n||0!==h?h:0,!(d?Pt(d,v):i(u,v,n))){for(s=o;--s;){var m=l[s];if(!(m?Pt(m,v):i(e[s],v,n)))continue e}d&&d.push(v),u.push(h)}}return u}function yr(e,t,n){var r=null==(e=va(e,t=si(t,e)))?e:e[Aa($a(t))];return null==r?void 0:at(r,e,n)}function br(e){return Vo(e)&&dr(e)==l}function _r(e,t,n,r,i){return e===t||(null==e||null==t||!Vo(e)&&!Vo(t)?e!=e&&t!=t:function(e,t,n,r,i,a){var o=zo(e),s=zo(t),d=o?c:na(e),h=s?c:na(t),x=(d=d==l?g:d)==g,A=(h=h==l?g:h)==g,C=d==h;if(C&&jo(e)){if(!jo(t))return!1;o=!0,x=!1}if(C&&!x)return a||(a=new jn),o||Xo(e)?Hi(e,t,n,r,i,a):function(e,t,n,r,i,a,o){switch(n){case S:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case k:return!(e.byteLength!=t.byteLength||!a(new Re(e),new Re(t)));case u:case f:case m:return To(+e,+t);case p:return e.name==t.name&&e.message==t.message;case y:case _:return e==t+"";case v:var s=Ft;case b:var l=1&r;if(s||(s=Ht),e.size!=t.size&&!l)return!1;var c=o.get(e);if(c)return c==t;r|=2,o.set(e,t);var d=Hi(s(e),s(t),r,i,a,o);return o.delete(e),d;case w:if(Cn)return Cn.call(e)==Cn.call(t)}return!1}(e,t,d,n,r,i,a);if(!(1&n)){var E=x&&Se.call(e,"__wrapped__"),O=A&&Se.call(t,"__wrapped__");if(E||O){var T=E?e.value():e,I=O?t.value():t;return a||(a=new jn),i(T,I,n,r,a)}}if(!C)return!1;return a||(a=new jn),function(e,t,n,r,i,a){var o=1&n,s=Gi(e),l=s.length,c=Gi(t).length;if(l!=c&&!o)return!1;var u=l;for(;u--;){var f=s[u];if(!(o?f in t:Se.call(t,f)))return!1}var p=a.get(e),d=a.get(t);if(p&&d)return p==t&&d==e;var h=!0;a.set(e,t),a.set(t,e);var v=o;for(;++u<l;){f=s[u];var m=e[f],g=t[f];if(r)var y=o?r(g,m,f,t,e,a):r(m,g,f,e,t,a);if(!(void 0===y?m===g||i(m,g,n,r,a):y)){h=!1;break}v||(v="constructor"==f)}if(h&&!v){var b=e.constructor,_=t.constructor;b==_||!("constructor"in e)||!("constructor"in t)||"function"==typeof b&&b instanceof b&&"function"==typeof _&&_ instanceof _||(h=!1)}return a.delete(e),a.delete(t),h}(e,t,n,r,i,a)}(e,t,n,r,_r,i))}function wr(e,t,n,r){var i=n.length,a=i,o=!r;if(null==e)return!a;for(e=ve(e);i--;){var s=n[i];if(o&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++i<a;){var l=(s=n[i])[0],c=e[l],u=s[1];if(o&&s[2]){if(void 0===c&&!(l in e))return!1}else{var f=new jn;if(r)var p=r(c,u,l,e,t,f);if(!(void 0===p?_r(u,c,3,r,f):p))return!1}}return!0}function xr(e){return!(!Ho(e)||(t=e,Ce&&Ce in t))&&(Fo(e)?Ie:oe).test(Ca(e));var t}function kr(e){return"function"==typeof e?e:null==e?Ws:"object"==typeof e?zo(e)?Tr(e[0],e[1]):Or(e):tl(e)}function Sr(e){if(!fa(e))return an(e);var t=[];for(var n in ve(e))Se.call(e,n)&&"constructor"!=n&&t.push(n);return t}function Ar(e){if(!Ho(e))return function(e){var t=[];if(null!=e)for(var n in ve(e))t.push(n);return t}(e);var t=fa(e),n=[];for(var r in e)("constructor"!=r||!t&&Se.call(e,r))&&n.push(r);return n}function Cr(e,t){return e<t}function Er(e,t){var n=-1,i=Lo(e)?r(e.length):[];return er(e,(function(e,r,a){i[++n]=t(e,r,a)})),i}function Or(e){var t=Xi(e);return 1==t.length&&t[0][2]?da(t[0][0],t[0][1]):function(n){return n===e||wr(n,e,t)}}function Tr(e,t){return la(e)&&pa(t)?da(Aa(e),t):function(n){var r=vs(n,e);return void 0===r&&r===t?ms(n,e):_r(t,r,3)}}function Ir(e,t,n,r,i){e!==t&&or(t,(function(a,o){if(i||(i=new jn),Ho(a))!function(e,t,n,r,i,a,o){var s=ga(e,n),l=ga(t,n),c=o.get(l);if(c)return void Un(e,n,c);var u=a?a(s,l,n+"",e,t,o):void 0,f=void 0===u;if(f){var p=zo(l),d=!p&&jo(l),h=!p&&!d&&Xo(l);u=l,p||d||h?zo(s)?u=s:Ro(s)?u=gi(s):d?(f=!1,u=fi(l,!0)):h?(f=!1,u=di(l,!0)):u=[]:qo(l)||Po(l)?(u=s,Po(s)?u=os(s):Ho(s)&&!Fo(s)||(u=ia(l))):f=!1}f&&(o.set(l,u),i(u,l,r,a,o),o.delete(l));Un(e,n,u)}(e,t,o,n,Ir,r,i);else{var s=r?r(ga(e,o),a,o+"",e,t,i):void 0;void 0===s&&(s=a),Un(e,o,s)}}),ws)}function Nr(e,t){var n=e.length;if(n)return oa(t+=t<0?n:0,n)?e[t]:void 0}function Pr(e,t,n){t=t.length?dt(t,(function(e){return zo(e)?function(t){return fr(t,1===e.length?e[0]:e)}:e})):[Ws];var r=-1;return t=dt(t,It(Ji())),function(e,t){var n=e.length;for(e.sort(t);n--;)e[n]=e[n].value;return e}(Er(e,(function(e,n,i){return{criteria:dt(t,(function(t){return t(e)})),index:++r,value:e}})),(function(e,t){return function(e,t,n){var r=-1,i=e.criteria,a=t.criteria,o=i.length,s=n.length;for(;++r<o;){var l=hi(i[r],a[r]);if(l){if(r>=s)return l;var c=n[r];return l*("desc"==c?-1:1)}}return e.index-t.index}(e,t,n)}))}function zr(e,t,n){for(var r=-1,i=t.length,a={};++r<i;){var o=t[r],s=fr(e,o);n(s,o)&&Br(a,si(o,e),s)}return a}function Mr(e,t,n,r){var i=r?xt:wt,a=-1,o=t.length,s=e;for(e===t&&(t=gi(t)),n&&(s=dt(e,It(n)));++a<o;)for(var l=0,c=t[a],u=n?n(c):c;(l=i(s,u,l,r))>-1;)s!==e&&Ye.call(s,l,1),Ye.call(e,l,1);return e}function Lr(e,t){for(var n=e?t.length:0,r=n-1;n--;){var i=t[n];if(n==r||i!==a){var a=i;oa(i)?Ye.call(e,i,1):Qr(e,i)}}return e}function Rr(e,t){return e+Qt(un()*(t-e+1))}function jr(e,t){var n="";if(!e||t<1||t>9007199254740991)return n;do{t%2&&(n+=e),(t=Qt(t/2))&&(e+=e)}while(t);return n}function $r(e,t){return _a(ha(e,t,Ws),e+"")}function Dr(e){return Dn(Ts(e))}function Fr(e,t){var n=Ts(e);return ka(n,Yn(t,0,n.length))}function Br(e,t,n,r){if(!Ho(e))return e;for(var i=-1,a=(t=si(t,e)).length,o=a-1,s=e;null!=s&&++i<a;){var l=Aa(t[i]),c=n;if("__proto__"===l||"constructor"===l||"prototype"===l)return e;if(i!=o){var u=s[l];void 0===(c=r?r(u,l,s):void 0)&&(c=Ho(u)?u:oa(t[i+1])?[]:{})}Hn(s,l,c),s=s[l]}return e}var Ur=yn?function(e,t){return yn.set(e,t),e}:Ws,Hr=Ct?function(e,t){return Ct(e,"toString",{configurable:!0,enumerable:!1,value:Hs(t),writable:!0})}:Ws;function Vr(e){return ka(Ts(e))}function Gr(e,t,n){var i=-1,a=e.length;t<0&&(t=-t>a?0:a+t),(n=n>a?a:n)<0&&(n+=a),a=t>n?0:n-t>>>0,t>>>=0;for(var o=r(a);++i<a;)o[i]=e[i+t];return o}function Wr(e,t){var n;return er(e,(function(e,r,i){return!(n=t(e,r,i))})),!!n}function qr(e,t,n){var r=0,i=null==e?r:e.length;if("number"==typeof t&&t==t&&i<=2147483647){for(;r<i;){var a=r+i>>>1,o=e[a];null!==o&&!Zo(o)&&(n?o<=t:o<t)?r=a+1:i=a}return i}return Kr(e,t,Ws,n)}function Kr(e,t,n,r){var i=0,a=null==e?0:e.length;if(0===a)return 0;for(var o=(t=n(t))!=t,s=null===t,l=Zo(t),c=void 0===t;i<a;){var u=Qt((i+a)/2),f=n(e[u]),p=void 0!==f,d=null===f,h=f==f,v=Zo(f);if(o)var m=r||h;else m=c?h&&(r||p):s?h&&p&&(r||!d):l?h&&p&&!d&&(r||!v):!d&&!v&&(r?f<=t:f<t);m?i=u+1:a=u}return sn(a,4294967294)}function Yr(e,t){for(var n=-1,r=e.length,i=0,a=[];++n<r;){var o=e[n],s=t?t(o):o;if(!n||!To(s,l)){var l=s;a[i++]=0===o?0:o}}return a}function Jr(e){return"number"==typeof e?e:Zo(e)?NaN:+e}function Zr(e){if("string"==typeof e)return e;if(zo(e))return dt(e,Zr)+"";if(Zo(e))return En?En.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function Xr(e,t,n){var r=-1,i=ft,a=e.length,o=!0,s=[],l=s;if(n)o=!1,i=pt;else if(a>=200){var c=t?null:ji(e);if(c)return Ht(c);o=!1,i=Pt,l=new Rn}else l=t?[]:s;e:for(;++r<a;){var u=e[r],f=t?t(u):u;if(u=n||0!==u?u:0,o&&f==f){for(var p=l.length;p--;)if(l[p]===f)continue e;t&&l.push(f),s.push(u)}else i(l,f,n)||(l!==s&&l.push(f),s.push(u))}return s}function Qr(e,t){return null==(e=va(e,t=si(t,e)))||delete e[Aa($a(t))]}function ei(e,t,n,r){return Br(e,t,n(fr(e,t)),r)}function ti(e,t,n,r){for(var i=e.length,a=r?i:-1;(r?a--:++a<i)&&t(e[a],a,e););return n?Gr(e,r?0:a,r?a+1:i):Gr(e,r?a+1:0,r?i:a)}function ni(e,t){var n=e;return n instanceof Pn&&(n=n.value()),vt(t,(function(e,t){return t.func.apply(t.thisArg,ht([e],t.args))}),n)}function ri(e,t,n){var i=e.length;if(i<2)return i?Xr(e[0]):[];for(var a=-1,o=r(i);++a<i;)for(var s=e[a],l=-1;++l<i;)l!=a&&(o[a]=Qn(o[a]||s,e[l],t,n));return Xr(ar(o,1),t,n)}function ii(e,t,n){for(var r=-1,i=e.length,a=t.length,o={};++r<i;){var s=r<a?t[r]:void 0;n(o,e[r],s)}return o}function ai(e){return Ro(e)?e:[]}function oi(e){return"function"==typeof e?e:Ws}function si(e,t){return zo(e)?e:la(e,t)?[e]:Sa(ss(e))}var li=$r;function ci(e,t,n){var r=e.length;return n=void 0===n?r:n,!t&&n>=r?e:Gr(e,t,n)}var ui=Yt||function(e){return qe.clearTimeout(e)};function fi(e,t){if(t)return e.slice();var n=e.length,r=Ue?Ue(n):new e.constructor(n);return e.copy(r),r}function pi(e){var t=new e.constructor(e.byteLength);return new Re(t).set(new Re(e)),t}function di(e,t){var n=t?pi(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function hi(e,t){if(e!==t){var n=void 0!==e,r=null===e,i=e==e,a=Zo(e),o=void 0!==t,s=null===t,l=t==t,c=Zo(t);if(!s&&!c&&!a&&e>t||a&&o&&l&&!s&&!c||r&&o&&l||!n&&l||!i)return 1;if(!r&&!a&&!c&&e<t||c&&n&&i&&!r&&!a||s&&n&&i||!o&&i||!l)return-1}return 0}function vi(e,t,n,i){for(var a=-1,o=e.length,s=n.length,l=-1,c=t.length,u=on(o-s,0),f=r(c+u),p=!i;++l<c;)f[l]=t[l];for(;++a<s;)(p||a<o)&&(f[n[a]]=e[a]);for(;u--;)f[l++]=e[a++];return f}function mi(e,t,n,i){for(var a=-1,o=e.length,s=-1,l=n.length,c=-1,u=t.length,f=on(o-l,0),p=r(f+u),d=!i;++a<f;)p[a]=e[a];for(var h=a;++c<u;)p[h+c]=t[c];for(;++s<l;)(d||a<o)&&(p[h+n[s]]=e[a++]);return p}function gi(e,t){var n=-1,i=e.length;for(t||(t=r(i));++n<i;)t[n]=e[n];return t}function yi(e,t,n,r){var i=!n;n||(n={});for(var a=-1,o=t.length;++a<o;){var s=t[a],l=r?r(n[s],e[s],s,n,e):void 0;void 0===l&&(l=e[s]),i?qn(n,s,l):Hn(n,s,l)}return n}function bi(e,t){return function(n,r){var i=zo(n)?ot:Gn,a=t?t():{};return i(n,e,Ji(r,2),a)}}function _i(e){return $r((function(t,n){var r=-1,i=n.length,a=i>1?n[i-1]:void 0,o=i>2?n[2]:void 0;for(a=e.length>3&&"function"==typeof a?(i--,a):void 0,o&&sa(n[0],n[1],o)&&(a=i<3?void 0:a,i=1),t=ve(t);++r<i;){var s=n[r];s&&e(t,s,r,a)}return t}))}function wi(e,t){return function(n,r){if(null==n)return n;if(!Lo(n))return e(n,r);for(var i=n.length,a=t?i:-1,o=ve(n);(t?a--:++a<i)&&!1!==r(o[a],a,o););return n}}function xi(e){return function(t,n,r){for(var i=-1,a=ve(t),o=r(t),s=o.length;s--;){var l=o[e?s:++i];if(!1===n(a[l],l,a))break}return t}}function ki(e){return function(t){var n=Dt(t=ss(t))?Wt(t):void 0,r=n?n[0]:t.charAt(0),i=n?ci(n,1).join(""):t.slice(1);return r[e]()+i}}function Si(e){return function(t){return vt(Fs(Ps(t).replace(Pe,"")),e,"")}}function Ai(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var n=Tn(e.prototype),r=e.apply(n,t);return Ho(r)?r:n}}function Ci(e){return function(t,n,r){var i=ve(t);if(!Lo(t)){var a=Ji(n,3);t=_s(t),n=function(e){return a(i[e],e,i)}}var o=e(t,n,r);return o>-1?i[a?t[o]:o]:void 0}}function Ei(e){return Vi((function(t){var n=t.length,r=n,i=Nn.prototype.thru;for(e&&t.reverse();r--;){var o=t[r];if("function"!=typeof o)throw new ye(a);if(i&&!s&&"wrapper"==Ki(o))var s=new Nn([],!0)}for(r=s?r:n;++r<n;){var l=Ki(o=t[r]),c="wrapper"==l?qi(o):void 0;s=c&&ca(c[0])&&424==c[1]&&!c[4].length&&1==c[9]?s[Ki(c[0])].apply(s,c[3]):1==o.length&&ca(o)?s[l]():s.thru(o)}return function(){var e=arguments,r=e[0];if(s&&1==e.length&&zo(r))return s.plant(r).value();for(var i=0,a=n?t[i].apply(this,e):r;++i<n;)a=t[i].call(this,a);return a}}))}function Oi(e,t,n,i,a,o,s,l,c,u){var f=128&t,p=1&t,d=2&t,h=24&t,v=512&t,m=d?void 0:Ai(e);return function g(){for(var y=arguments.length,b=r(y),_=y;_--;)b[_]=arguments[_];if(h)var w=Yi(g),x=Lt(b,w);if(i&&(b=vi(b,i,a,h)),o&&(b=mi(b,o,s,h)),y-=x,h&&y<u){var k=Ut(b,w);return Li(e,t,Oi,g.placeholder,n,b,k,l,c,u-y)}var S=p?n:this,A=d?S[e]:e;return y=b.length,l?b=ma(b,l):v&&y>1&&b.reverse(),f&&c<y&&(b.length=c),this&&this!==qe&&this instanceof g&&(A=m||Ai(A)),A.apply(S,b)}}function Ti(e,t){return function(n,r){return function(e,t,n,r){return lr(e,(function(e,i,a){t(r,n(e),i,a)})),r}(n,e,t(r),{})}}function Ii(e,t){return function(n,r){var i;if(void 0===n&&void 0===r)return t;if(void 0!==n&&(i=n),void 0!==r){if(void 0===i)return r;"string"==typeof n||"string"==typeof r?(n=Zr(n),r=Zr(r)):(n=Jr(n),r=Jr(r)),i=e(n,r)}return i}}function Ni(e){return Vi((function(t){return t=dt(t,It(Ji())),$r((function(n){var r=this;return e(t,(function(e){return at(e,r,n)}))}))}))}function Pi(e,t){var n=(t=void 0===t?" ":Zr(t)).length;if(n<2)return n?jr(t,e):t;var r=jr(t,Xt(e/Gt(t)));return Dt(t)?ci(Wt(r),0,e).join(""):r.slice(0,e)}function zi(e){return function(t,n,i){return i&&"number"!=typeof i&&sa(t,n,i)&&(n=i=void 0),t=ns(t),void 0===n?(n=t,t=0):n=ns(n),function(e,t,n,i){for(var a=-1,o=on(Xt((t-e)/(n||1)),0),s=r(o);o--;)s[i?o:++a]=e,e+=n;return s}(t,n,i=void 0===i?t<n?1:-1:ns(i),e)}}function Mi(e){return function(t,n){return"string"==typeof t&&"string"==typeof n||(t=as(t),n=as(n)),e(t,n)}}function Li(e,t,n,r,i,a,o,s,l,c){var u=8&t;t|=u?32:64,4&(t&=~(u?64:32))||(t&=-4);var f=[e,t,i,u?a:void 0,u?o:void 0,u?void 0:a,u?void 0:o,s,l,c],p=n.apply(void 0,f);return ca(e)&&ya(p,f),p.placeholder=r,wa(p,e,t)}function Ri(e){var t=he[e];return function(e,n){if(e=as(e),(n=null==n?0:sn(rs(n),292))&&nn(e)){var r=(ss(e)+"e").split("e");return+((r=(ss(t(r[0]+"e"+(+r[1]+n)))+"e").split("e"))[0]+"e"+(+r[1]-n))}return t(e)}}var ji=vn&&1/Ht(new vn([,-0]))[1]==1/0?function(e){return new vn(e)}:Zs;function $i(e){return function(t){var n=na(t);return n==v?Ft(t):n==b?Vt(t):function(e,t){return dt(t,(function(t){return[t,e[t]]}))}(t,e(t))}}function Di(e,t,n,i,s,l,c,u){var f=2&t;if(!f&&"function"!=typeof e)throw new ye(a);var p=i?i.length:0;if(p||(t&=-97,i=s=void 0),c=void 0===c?c:on(rs(c),0),u=void 0===u?u:rs(u),p-=s?s.length:0,64&t){var d=i,h=s;i=s=void 0}var v=f?void 0:qi(e),m=[e,t,n,i,s,d,h,l,c,u];if(v&&function(e,t){var n=e[1],r=t[1],i=n|r,a=i<131,s=128==r&&8==n||128==r&&256==n&&e[7].length<=t[8]||384==r&&t[7].length<=t[8]&&8==n;if(!a&&!s)return e;1&r&&(e[2]=t[2],i|=1&n?0:4);var l=t[3];if(l){var c=e[3];e[3]=c?vi(c,l,t[4]):l,e[4]=c?Ut(e[3],o):t[4]}(l=t[5])&&(c=e[5],e[5]=c?mi(c,l,t[6]):l,e[6]=c?Ut(e[5],o):t[6]);(l=t[7])&&(e[7]=l);128&r&&(e[8]=null==e[8]?t[8]:sn(e[8],t[8]));null==e[9]&&(e[9]=t[9]);e[0]=t[0],e[1]=i}(m,v),e=m[0],t=m[1],n=m[2],i=m[3],s=m[4],!(u=m[9]=void 0===m[9]?f?0:e.length:on(m[9]-p,0))&&24&t&&(t&=-25),t&&1!=t)g=8==t||16==t?function(e,t,n){var i=Ai(e);return function a(){for(var o=arguments.length,s=r(o),l=o,c=Yi(a);l--;)s[l]=arguments[l];var u=o<3&&s[0]!==c&&s[o-1]!==c?[]:Ut(s,c);if((o-=u.length)<n)return Li(e,t,Oi,a.placeholder,void 0,s,u,void 0,void 0,n-o);var f=this&&this!==qe&&this instanceof a?i:e;return at(f,this,s)}}(e,t,u):32!=t&&33!=t||s.length?Oi.apply(void 0,m):function(e,t,n,i){var a=1&t,o=Ai(e);return function t(){for(var s=-1,l=arguments.length,c=-1,u=i.length,f=r(u+l),p=this&&this!==qe&&this instanceof t?o:e;++c<u;)f[c]=i[c];for(;l--;)f[c++]=arguments[++s];return at(p,a?n:this,f)}}(e,t,n,i);else var g=function(e,t,n){var r=1&t,i=Ai(e);return function t(){var a=this&&this!==qe&&this instanceof t?i:e;return a.apply(r?n:this,arguments)}}(e,t,n);return wa((v?Ur:ya)(g,m),e,t)}function Fi(e,t,n,r){return void 0===e||To(e,we[n])&&!Se.call(r,n)?t:e}function Bi(e,t,n,r,i,a){return Ho(e)&&Ho(t)&&(a.set(t,e),Ir(e,t,void 0,Bi,a),a.delete(t)),e}function Ui(e){return qo(e)?void 0:e}function Hi(e,t,n,r,i,a){var o=1&n,s=e.length,l=t.length;if(s!=l&&!(o&&l>s))return!1;var c=a.get(e),u=a.get(t);if(c&&u)return c==t&&u==e;var f=-1,p=!0,d=2&n?new Rn:void 0;for(a.set(e,t),a.set(t,e);++f<s;){var h=e[f],v=t[f];if(r)var m=o?r(v,h,f,t,e,a):r(h,v,f,e,t,a);if(void 0!==m){if(m)continue;p=!1;break}if(d){if(!gt(t,(function(e,t){if(!Pt(d,t)&&(h===e||i(h,e,n,r,a)))return d.push(t)}))){p=!1;break}}else if(h!==v&&!i(h,v,n,r,a)){p=!1;break}}return a.delete(e),a.delete(t),p}function Vi(e){return _a(ha(e,void 0,za),e+"")}function Gi(e){return pr(e,_s,ea)}function Wi(e){return pr(e,ws,ta)}var qi=yn?function(e){return yn.get(e)}:Zs;function Ki(e){for(var t=e.name+"",n=bn[t],r=Se.call(bn,t)?n.length:0;r--;){var i=n[r],a=i.func;if(null==a||a==e)return i.name}return t}function Yi(e){return(Se.call(On,"placeholder")?On:e).placeholder}function Ji(){var e=On.iteratee||qs;return e=e===qs?kr:e,arguments.length?e(arguments[0],arguments[1]):e}function Zi(e,t){var n,r,i=e.__data__;return("string"==(r=typeof(n=t))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==n:null===n)?i["string"==typeof t?"string":"hash"]:i.map}function Xi(e){for(var t=_s(e),n=t.length;n--;){var r=t[n],i=e[r];t[n]=[r,i,pa(i)]}return t}function Qi(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return xr(n)?n:void 0}var ea=en?function(e){return null==e?[]:(e=ve(e),ut(en(e),(function(t){return Ke.call(e,t)})))}:il,ta=en?function(e){for(var t=[];e;)ht(t,ea(e)),e=Ge(e);return t}:il,na=dr;function ra(e,t,n){for(var r=-1,i=(t=si(t,e)).length,a=!1;++r<i;){var o=Aa(t[r]);if(!(a=null!=e&&n(e,o)))break;e=e[o]}return a||++r!=i?a:!!(i=null==e?0:e.length)&&Uo(i)&&oa(o,i)&&(zo(e)||Po(e))}function ia(e){return"function"!=typeof e.constructor||fa(e)?{}:Tn(Ge(e))}function aa(e){return zo(e)||Po(e)||!!(Ze&&e&&e[Ze])}function oa(e,t){var n=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==n||"symbol"!=n&&le.test(e))&&e>-1&&e%1==0&&e<t}function sa(e,t,n){if(!Ho(n))return!1;var r=typeof t;return!!("number"==r?Lo(n)&&oa(t,n.length):"string"==r&&t in n)&&To(n[t],e)}function la(e,t){if(zo(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!Zo(e))||(V.test(e)||!H.test(e)||null!=t&&e in ve(t))}function ca(e){var t=Ki(e),n=On[t];if("function"!=typeof n||!(t in Pn.prototype))return!1;if(e===n)return!0;var r=qi(n);return!!r&&e===r[0]}(pn&&na(new pn(new ArrayBuffer(1)))!=S||dn&&na(new dn)!=v||hn&&"[object Promise]"!=na(hn.resolve())||vn&&na(new vn)!=b||mn&&na(new mn)!=x)&&(na=function(e){var t=dr(e),n=t==g?e.constructor:void 0,r=n?Ca(n):"";if(r)switch(r){case _n:return S;case wn:return v;case xn:return"[object Promise]";case kn:return b;case Sn:return x}return t});var ua=xe?Fo:al;function fa(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||we)}function pa(e){return e==e&&!Ho(e)}function da(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in ve(n)))}}function ha(e,t,n){return t=on(void 0===t?e.length-1:t,0),function(){for(var i=arguments,a=-1,o=on(i.length-t,0),s=r(o);++a<o;)s[a]=i[t+a];a=-1;for(var l=r(t+1);++a<t;)l[a]=i[a];return l[t]=n(s),at(e,this,l)}}function va(e,t){return t.length<2?e:fr(e,Gr(t,0,-1))}function ma(e,t){for(var n=e.length,r=sn(t.length,n),i=gi(e);r--;){var a=t[r];e[r]=oa(a,n)?i[a]:void 0}return e}function ga(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}var ya=xa(Ur),ba=Zt||function(e,t){return qe.setTimeout(e,t)},_a=xa(Hr);function wa(e,t,n){var r=t+"";return _a(e,function(e,t){var n=t.length;if(!n)return e;var r=n-1;return t[r]=(n>1?"& ":"")+t[r],t=t.join(n>2?", ":" "),e.replace(Z,"{\n/* [wrapped with "+t+"] */\n")}(r,function(e,t){return st(s,(function(n){var r="_."+n[0];t&n[1]&&!ft(e,r)&&e.push(r)})),e.sort()}(function(e){var t=e.match(X);return t?t[1].split(Q):[]}(r),n)))}function xa(e){var t=0,n=0;return function(){var r=ln(),i=16-(r-n);if(n=r,i>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function ka(e,t){var n=-1,r=e.length,i=r-1;for(t=void 0===t?r:t;++n<t;){var a=Rr(n,i),o=e[a];e[a]=e[n],e[n]=o}return e.length=t,e}var Sa=function(e){var t=ko(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(G,(function(e,n,r,i){t.push(r?i.replace(te,"$1"):n||e)})),t}));function Aa(e){if("string"==typeof e||Zo(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function Ca(e){if(null!=e){try{return ke.call(e)}catch(e){}try{return e+""}catch(e){}}return""}function Ea(e){if(e instanceof Pn)return e.clone();var t=new Nn(e.__wrapped__,e.__chain__);return t.__actions__=gi(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}var Oa=$r((function(e,t){return Ro(e)?Qn(e,ar(t,1,Ro,!0)):[]})),Ta=$r((function(e,t){var n=$a(t);return Ro(n)&&(n=void 0),Ro(e)?Qn(e,ar(t,1,Ro,!0),Ji(n,2)):[]})),Ia=$r((function(e,t){var n=$a(t);return Ro(n)&&(n=void 0),Ro(e)?Qn(e,ar(t,1,Ro,!0),void 0,n):[]}));function Na(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:rs(n);return i<0&&(i=on(r+i,0)),_t(e,Ji(t,3),i)}function Pa(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r-1;return void 0!==n&&(i=rs(n),i=n<0?on(r+i,0):sn(i,r-1)),_t(e,Ji(t,3),i,!0)}function za(e){return(null==e?0:e.length)?ar(e,1):[]}function Ma(e){return e&&e.length?e[0]:void 0}var La=$r((function(e){var t=dt(e,ai);return t.length&&t[0]===e[0]?gr(t):[]})),Ra=$r((function(e){var t=$a(e),n=dt(e,ai);return t===$a(n)?t=void 0:n.pop(),n.length&&n[0]===e[0]?gr(n,Ji(t,2)):[]})),ja=$r((function(e){var t=$a(e),n=dt(e,ai);return(t="function"==typeof t?t:void 0)&&n.pop(),n.length&&n[0]===e[0]?gr(n,void 0,t):[]}));function $a(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}var Da=$r(Fa);function Fa(e,t){return e&&e.length&&t&&t.length?Mr(e,t):e}var Ba=Vi((function(e,t){var n=null==e?0:e.length,r=Kn(e,t);return Lr(e,dt(t,(function(e){return oa(e,n)?+e:e})).sort(hi)),r}));function Ua(e){return null==e?e:fn.call(e)}var Ha=$r((function(e){return Xr(ar(e,1,Ro,!0))})),Va=$r((function(e){var t=$a(e);return Ro(t)&&(t=void 0),Xr(ar(e,1,Ro,!0),Ji(t,2))})),Ga=$r((function(e){var t=$a(e);return t="function"==typeof t?t:void 0,Xr(ar(e,1,Ro,!0),void 0,t)}));function Wa(e){if(!e||!e.length)return[];var t=0;return e=ut(e,(function(e){if(Ro(e))return t=on(e.length,t),!0})),Tt(t,(function(t){return dt(e,At(t))}))}function qa(e,t){if(!e||!e.length)return[];var n=Wa(e);return null==t?n:dt(n,(function(e){return at(t,void 0,e)}))}var Ka=$r((function(e,t){return Ro(e)?Qn(e,t):[]})),Ya=$r((function(e){return ri(ut(e,Ro))})),Ja=$r((function(e){var t=$a(e);return Ro(t)&&(t=void 0),ri(ut(e,Ro),Ji(t,2))})),Za=$r((function(e){var t=$a(e);return t="function"==typeof t?t:void 0,ri(ut(e,Ro),void 0,t)})),Xa=$r(Wa);var Qa=$r((function(e){var t=e.length,n=t>1?e[t-1]:void 0;return n="function"==typeof n?(e.pop(),n):void 0,qa(e,n)}));function eo(e){var t=On(e);return t.__chain__=!0,t}function to(e,t){return t(e)}var no=Vi((function(e){var t=e.length,n=t?e[0]:0,r=this.__wrapped__,i=function(t){return Kn(t,e)};return!(t>1||this.__actions__.length)&&r instanceof Pn&&oa(n)?((r=r.slice(n,+n+(t?1:0))).__actions__.push({func:to,args:[i],thisArg:void 0}),new Nn(r,this.__chain__).thru((function(e){return t&&!e.length&&e.push(void 0),e}))):this.thru(i)}));var ro=bi((function(e,t,n){Se.call(e,n)?++e[n]:qn(e,n,1)}));var io=Ci(Na),ao=Ci(Pa);function oo(e,t){return(zo(e)?st:er)(e,Ji(t,3))}function so(e,t){return(zo(e)?lt:tr)(e,Ji(t,3))}var lo=bi((function(e,t,n){Se.call(e,n)?e[n].push(t):qn(e,n,[t])}));var co=$r((function(e,t,n){var i=-1,a="function"==typeof t,o=Lo(e)?r(e.length):[];return er(e,(function(e){o[++i]=a?at(t,e,n):yr(e,t,n)})),o})),uo=bi((function(e,t,n){qn(e,n,t)}));function fo(e,t){return(zo(e)?dt:Er)(e,Ji(t,3))}var po=bi((function(e,t,n){e[n?0:1].push(t)}),(function(){return[[],[]]}));var ho=$r((function(e,t){if(null==e)return[];var n=t.length;return n>1&&sa(e,t[0],t[1])?t=[]:n>2&&sa(t[0],t[1],t[2])&&(t=[t[0]]),Pr(e,ar(t,1),[])})),vo=Jt||function(){return qe.Date.now()};function mo(e,t,n){return t=n?void 0:t,Di(e,128,void 0,void 0,void 0,void 0,t=e&&null==t?e.length:t)}function go(e,t){var n;if("function"!=typeof t)throw new ye(a);return e=rs(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=void 0),n}}var yo=$r((function(e,t,n){var r=1;if(n.length){var i=Ut(n,Yi(yo));r|=32}return Di(e,r,t,n,i)})),bo=$r((function(e,t,n){var r=3;if(n.length){var i=Ut(n,Yi(bo));r|=32}return Di(t,r,e,n,i)}));function _o(e,t,n){var r,i,o,s,l,c,u=0,f=!1,p=!1,d=!0;if("function"!=typeof e)throw new ye(a);function h(t){var n=r,a=i;return r=i=void 0,u=t,s=e.apply(a,n)}function v(e){return u=e,l=ba(g,t),f?h(e):s}function m(e){var n=e-c;return void 0===c||n>=t||n<0||p&&e-u>=o}function g(){var e=vo();if(m(e))return y(e);l=ba(g,function(e){var n=t-(e-c);return p?sn(n,o-(e-u)):n}(e))}function y(e){return l=void 0,d&&r?h(e):(r=i=void 0,s)}function b(){var e=vo(),n=m(e);if(r=arguments,i=this,c=e,n){if(void 0===l)return v(c);if(p)return ui(l),l=ba(g,t),h(c)}return void 0===l&&(l=ba(g,t)),s}return t=as(t)||0,Ho(n)&&(f=!!n.leading,o=(p="maxWait"in n)?on(as(n.maxWait)||0,t):o,d="trailing"in n?!!n.trailing:d),b.cancel=function(){void 0!==l&&ui(l),u=0,r=c=i=l=void 0},b.flush=function(){return void 0===l?s:y(vo())},b}var wo=$r((function(e,t){return Xn(e,1,t)})),xo=$r((function(e,t,n){return Xn(e,as(t)||0,n)}));function ko(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new ye(a);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],a=n.cache;if(a.has(i))return a.get(i);var o=e.apply(this,r);return n.cache=a.set(i,o)||a,o};return n.cache=new(ko.Cache||Ln),n}function So(e){if("function"!=typeof e)throw new ye(a);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}ko.Cache=Ln;var Ao=li((function(e,t){var n=(t=1==t.length&&zo(t[0])?dt(t[0],It(Ji())):dt(ar(t,1),It(Ji()))).length;return $r((function(r){for(var i=-1,a=sn(r.length,n);++i<a;)r[i]=t[i].call(this,r[i]);return at(e,this,r)}))})),Co=$r((function(e,t){return Di(e,32,void 0,t,Ut(t,Yi(Co)))})),Eo=$r((function(e,t){return Di(e,64,void 0,t,Ut(t,Yi(Eo)))})),Oo=Vi((function(e,t){return Di(e,256,void 0,void 0,void 0,t)}));function To(e,t){return e===t||e!=e&&t!=t}var Io=Mi(hr),No=Mi((function(e,t){return e>=t})),Po=br(function(){return arguments}())?br:function(e){return Vo(e)&&Se.call(e,"callee")&&!Ke.call(e,"callee")},zo=r.isArray,Mo=Qe?It(Qe):function(e){return Vo(e)&&dr(e)==k};function Lo(e){return null!=e&&Uo(e.length)&&!Fo(e)}function Ro(e){return Vo(e)&&Lo(e)}var jo=tn||al,$o=et?It(et):function(e){return Vo(e)&&dr(e)==f};function Do(e){if(!Vo(e))return!1;var t=dr(e);return t==p||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!qo(e)}function Fo(e){if(!Ho(e))return!1;var t=dr(e);return t==d||t==h||"[object AsyncFunction]"==t||"[object Proxy]"==t}function Bo(e){return"number"==typeof e&&e==rs(e)}function Uo(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}function Ho(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Vo(e){return null!=e&&"object"==typeof e}var Go=tt?It(tt):function(e){return Vo(e)&&na(e)==v};function Wo(e){return"number"==typeof e||Vo(e)&&dr(e)==m}function qo(e){if(!Vo(e)||dr(e)!=g)return!1;var t=Ge(e);if(null===t)return!0;var n=Se.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&ke.call(n)==Oe}var Ko=nt?It(nt):function(e){return Vo(e)&&dr(e)==y};var Yo=rt?It(rt):function(e){return Vo(e)&&na(e)==b};function Jo(e){return"string"==typeof e||!zo(e)&&Vo(e)&&dr(e)==_}function Zo(e){return"symbol"==typeof e||Vo(e)&&dr(e)==w}var Xo=it?It(it):function(e){return Vo(e)&&Uo(e.length)&&!!Fe[dr(e)]};var Qo=Mi(Cr),es=Mi((function(e,t){return e<=t}));function ts(e){if(!e)return[];if(Lo(e))return Jo(e)?Wt(e):gi(e);if(Xe&&e[Xe])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[Xe]());var t=na(e);return(t==v?Ft:t==b?Ht:Ts)(e)}function ns(e){return e?(e=as(e))===1/0||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function rs(e){var t=ns(e),n=t%1;return t==t?n?t-n:t:0}function is(e){return e?Yn(rs(e),0,4294967295):0}function as(e){if("number"==typeof e)return e;if(Zo(e))return NaN;if(Ho(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Ho(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(K,"");var n=ae.test(e);return n||se.test(e)?Ve(e.slice(2),n?2:8):ie.test(e)?NaN:+e}function os(e){return yi(e,ws(e))}function ss(e){return null==e?"":Zr(e)}var ls=_i((function(e,t){if(fa(t)||Lo(t))yi(t,_s(t),e);else for(var n in t)Se.call(t,n)&&Hn(e,n,t[n])})),cs=_i((function(e,t){yi(t,ws(t),e)})),us=_i((function(e,t,n,r){yi(t,ws(t),e,r)})),fs=_i((function(e,t,n,r){yi(t,_s(t),e,r)})),ps=Vi(Kn);var ds=$r((function(e,t){e=ve(e);var n=-1,r=t.length,i=r>2?t[2]:void 0;for(i&&sa(t[0],t[1],i)&&(r=1);++n<r;)for(var a=t[n],o=ws(a),s=-1,l=o.length;++s<l;){var c=o[s],u=e[c];(void 0===u||To(u,we[c])&&!Se.call(e,c))&&(e[c]=a[c])}return e})),hs=$r((function(e){return e.push(void 0,Bi),at(ks,void 0,e)}));function vs(e,t,n){var r=null==e?void 0:fr(e,t);return void 0===r?n:r}function ms(e,t){return null!=e&&ra(e,t,mr)}var gs=Ti((function(e,t,n){null!=t&&"function"!=typeof t.toString&&(t=Ee.call(t)),e[t]=n}),Hs(Ws)),ys=Ti((function(e,t,n){null!=t&&"function"!=typeof t.toString&&(t=Ee.call(t)),Se.call(e,t)?e[t].push(n):e[t]=[n]}),Ji),bs=$r(yr);function _s(e){return Lo(e)?$n(e):Sr(e)}function ws(e){return Lo(e)?$n(e,!0):Ar(e)}var xs=_i((function(e,t,n){Ir(e,t,n)})),ks=_i((function(e,t,n,r){Ir(e,t,n,r)})),Ss=Vi((function(e,t){var n={};if(null==e)return n;var r=!1;t=dt(t,(function(t){return t=si(t,e),r||(r=t.length>1),t})),yi(e,Wi(e),n),r&&(n=Jn(n,7,Ui));for(var i=t.length;i--;)Qr(n,t[i]);return n}));var As=Vi((function(e,t){return null==e?{}:function(e,t){return zr(e,t,(function(t,n){return ms(e,n)}))}(e,t)}));function Cs(e,t){if(null==e)return{};var n=dt(Wi(e),(function(e){return[e]}));return t=Ji(t),zr(e,n,(function(e,n){return t(e,n[0])}))}var Es=$i(_s),Os=$i(ws);function Ts(e){return null==e?[]:Nt(e,_s(e))}var Is=Si((function(e,t,n){return t=t.toLowerCase(),e+(n?Ns(t):t)}));function Ns(e){return Ds(ss(e).toLowerCase())}function Ps(e){return(e=ss(e))&&e.replace(ce,Rt).replace(ze,"")}var zs=Si((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()})),Ms=Si((function(e,t,n){return e+(n?" ":"")+t.toLowerCase()})),Ls=ki("toLowerCase");var Rs=Si((function(e,t,n){return e+(n?"_":"")+t.toLowerCase()}));var js=Si((function(e,t,n){return e+(n?" ":"")+Ds(t)}));var $s=Si((function(e,t,n){return e+(n?" ":"")+t.toUpperCase()})),Ds=ki("toUpperCase");function Fs(e,t,n){return e=ss(e),void 0===(t=n?void 0:t)?function(e){return je.test(e)}(e)?function(e){return e.match(Le)||[]}(e):function(e){return e.match(ee)||[]}(e):e.match(t)||[]}var Bs=$r((function(e,t){try{return at(e,void 0,t)}catch(e){return Do(e)?e:new pe(e)}})),Us=Vi((function(e,t){return st(t,(function(t){t=Aa(t),qn(e,t,yo(e[t],e))})),e}));function Hs(e){return function(){return e}}var Vs=Ei(),Gs=Ei(!0);function Ws(e){return e}function qs(e){return kr("function"==typeof e?e:Jn(e,1))}var Ks=$r((function(e,t){return function(n){return yr(n,e,t)}})),Ys=$r((function(e,t){return function(n){return yr(e,n,t)}}));function Js(e,t,n){var r=_s(t),i=ur(t,r);null!=n||Ho(t)&&(i.length||!r.length)||(n=t,t=e,e=this,i=ur(t,_s(t)));var a=!(Ho(n)&&"chain"in n&&!n.chain),o=Fo(e);return st(i,(function(n){var r=t[n];e[n]=r,o&&(e.prototype[n]=function(){var t=this.__chain__;if(a||t){var n=e(this.__wrapped__),i=n.__actions__=gi(this.__actions__);return i.push({func:r,args:arguments,thisArg:e}),n.__chain__=t,n}return r.apply(e,ht([this.value()],arguments))})})),e}function Zs(){}var Xs=Ni(dt),Qs=Ni(ct),el=Ni(gt);function tl(e){return la(e)?At(Aa(e)):function(e){return function(t){return fr(t,e)}}(e)}var nl=zi(),rl=zi(!0);function il(){return[]}function al(){return!1}var ol=Ii((function(e,t){return e+t}),0),sl=Ri("ceil"),ll=Ii((function(e,t){return e/t}),1),cl=Ri("floor");var ul,fl=Ii((function(e,t){return e*t}),1),pl=Ri("round"),dl=Ii((function(e,t){return e-t}),0);return On.after=function(e,t){if("function"!=typeof t)throw new ye(a);return e=rs(e),function(){if(--e<1)return t.apply(this,arguments)}},On.ary=mo,On.assign=ls,On.assignIn=cs,On.assignInWith=us,On.assignWith=fs,On.at=ps,On.before=go,On.bind=yo,On.bindAll=Us,On.bindKey=bo,On.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return zo(e)?e:[e]},On.chain=eo,On.chunk=function(e,t,n){t=(n?sa(e,t,n):void 0===t)?1:on(rs(t),0);var i=null==e?0:e.length;if(!i||t<1)return[];for(var a=0,o=0,s=r(Xt(i/t));a<i;)s[o++]=Gr(e,a,a+=t);return s},On.compact=function(e){for(var t=-1,n=null==e?0:e.length,r=0,i=[];++t<n;){var a=e[t];a&&(i[r++]=a)}return i},On.concat=function(){var e=arguments.length;if(!e)return[];for(var t=r(e-1),n=arguments[0],i=e;i--;)t[i-1]=arguments[i];return ht(zo(n)?gi(n):[n],ar(t,1))},On.cond=function(e){var t=null==e?0:e.length,n=Ji();return e=t?dt(e,(function(e){if("function"!=typeof e[1])throw new ye(a);return[n(e[0]),e[1]]})):[],$r((function(n){for(var r=-1;++r<t;){var i=e[r];if(at(i[0],this,n))return at(i[1],this,n)}}))},On.conforms=function(e){return function(e){var t=_s(e);return function(n){return Zn(n,e,t)}}(Jn(e,1))},On.constant=Hs,On.countBy=ro,On.create=function(e,t){var n=Tn(e);return null==t?n:Wn(n,t)},On.curry=function e(t,n,r){var i=Di(t,8,void 0,void 0,void 0,void 0,void 0,n=r?void 0:n);return i.placeholder=e.placeholder,i},On.curryRight=function e(t,n,r){var i=Di(t,16,void 0,void 0,void 0,void 0,void 0,n=r?void 0:n);return i.placeholder=e.placeholder,i},On.debounce=_o,On.defaults=ds,On.defaultsDeep=hs,On.defer=wo,On.delay=xo,On.difference=Oa,On.differenceBy=Ta,On.differenceWith=Ia,On.drop=function(e,t,n){var r=null==e?0:e.length;return r?Gr(e,(t=n||void 0===t?1:rs(t))<0?0:t,r):[]},On.dropRight=function(e,t,n){var r=null==e?0:e.length;return r?Gr(e,0,(t=r-(t=n||void 0===t?1:rs(t)))<0?0:t):[]},On.dropRightWhile=function(e,t){return e&&e.length?ti(e,Ji(t,3),!0,!0):[]},On.dropWhile=function(e,t){return e&&e.length?ti(e,Ji(t,3),!0):[]},On.fill=function(e,t,n,r){var i=null==e?0:e.length;return i?(n&&"number"!=typeof n&&sa(e,t,n)&&(n=0,r=i),function(e,t,n,r){var i=e.length;for((n=rs(n))<0&&(n=-n>i?0:i+n),(r=void 0===r||r>i?i:rs(r))<0&&(r+=i),r=n>r?0:is(r);n<r;)e[n++]=t;return e}(e,t,n,r)):[]},On.filter=function(e,t){return(zo(e)?ut:ir)(e,Ji(t,3))},On.flatMap=function(e,t){return ar(fo(e,t),1)},On.flatMapDeep=function(e,t){return ar(fo(e,t),1/0)},On.flatMapDepth=function(e,t,n){return n=void 0===n?1:rs(n),ar(fo(e,t),n)},On.flatten=za,On.flattenDeep=function(e){return(null==e?0:e.length)?ar(e,1/0):[]},On.flattenDepth=function(e,t){return(null==e?0:e.length)?ar(e,t=void 0===t?1:rs(t)):[]},On.flip=function(e){return Di(e,512)},On.flow=Vs,On.flowRight=Gs,On.fromPairs=function(e){for(var t=-1,n=null==e?0:e.length,r={};++t<n;){var i=e[t];r[i[0]]=i[1]}return r},On.functions=function(e){return null==e?[]:ur(e,_s(e))},On.functionsIn=function(e){return null==e?[]:ur(e,ws(e))},On.groupBy=lo,On.initial=function(e){return(null==e?0:e.length)?Gr(e,0,-1):[]},On.intersection=La,On.intersectionBy=Ra,On.intersectionWith=ja,On.invert=gs,On.invertBy=ys,On.invokeMap=co,On.iteratee=qs,On.keyBy=uo,On.keys=_s,On.keysIn=ws,On.map=fo,On.mapKeys=function(e,t){var n={};return t=Ji(t,3),lr(e,(function(e,r,i){qn(n,t(e,r,i),e)})),n},On.mapValues=function(e,t){var n={};return t=Ji(t,3),lr(e,(function(e,r,i){qn(n,r,t(e,r,i))})),n},On.matches=function(e){return Or(Jn(e,1))},On.matchesProperty=function(e,t){return Tr(e,Jn(t,1))},On.memoize=ko,On.merge=xs,On.mergeWith=ks,On.method=Ks,On.methodOf=Ys,On.mixin=Js,On.negate=So,On.nthArg=function(e){return e=rs(e),$r((function(t){return Nr(t,e)}))},On.omit=Ss,On.omitBy=function(e,t){return Cs(e,So(Ji(t)))},On.once=function(e){return go(2,e)},On.orderBy=function(e,t,n,r){return null==e?[]:(zo(t)||(t=null==t?[]:[t]),zo(n=r?void 0:n)||(n=null==n?[]:[n]),Pr(e,t,n))},On.over=Xs,On.overArgs=Ao,On.overEvery=Qs,On.overSome=el,On.partial=Co,On.partialRight=Eo,On.partition=po,On.pick=As,On.pickBy=Cs,On.property=tl,On.propertyOf=function(e){return function(t){return null==e?void 0:fr(e,t)}},On.pull=Da,On.pullAll=Fa,On.pullAllBy=function(e,t,n){return e&&e.length&&t&&t.length?Mr(e,t,Ji(n,2)):e},On.pullAllWith=function(e,t,n){return e&&e.length&&t&&t.length?Mr(e,t,void 0,n):e},On.pullAt=Ba,On.range=nl,On.rangeRight=rl,On.rearg=Oo,On.reject=function(e,t){return(zo(e)?ut:ir)(e,So(Ji(t,3)))},On.remove=function(e,t){var n=[];if(!e||!e.length)return n;var r=-1,i=[],a=e.length;for(t=Ji(t,3);++r<a;){var o=e[r];t(o,r,e)&&(n.push(o),i.push(r))}return Lr(e,i),n},On.rest=function(e,t){if("function"!=typeof e)throw new ye(a);return $r(e,t=void 0===t?t:rs(t))},On.reverse=Ua,On.sampleSize=function(e,t,n){return t=(n?sa(e,t,n):void 0===t)?1:rs(t),(zo(e)?Fn:Fr)(e,t)},On.set=function(e,t,n){return null==e?e:Br(e,t,n)},On.setWith=function(e,t,n,r){return r="function"==typeof r?r:void 0,null==e?e:Br(e,t,n,r)},On.shuffle=function(e){return(zo(e)?Bn:Vr)(e)},On.slice=function(e,t,n){var r=null==e?0:e.length;return r?(n&&"number"!=typeof n&&sa(e,t,n)?(t=0,n=r):(t=null==t?0:rs(t),n=void 0===n?r:rs(n)),Gr(e,t,n)):[]},On.sortBy=ho,On.sortedUniq=function(e){return e&&e.length?Yr(e):[]},On.sortedUniqBy=function(e,t){return e&&e.length?Yr(e,Ji(t,2)):[]},On.split=function(e,t,n){return n&&"number"!=typeof n&&sa(e,t,n)&&(t=n=void 0),(n=void 0===n?4294967295:n>>>0)?(e=ss(e))&&("string"==typeof t||null!=t&&!Ko(t))&&!(t=Zr(t))&&Dt(e)?ci(Wt(e),0,n):e.split(t,n):[]},On.spread=function(e,t){if("function"!=typeof e)throw new ye(a);return t=null==t?0:on(rs(t),0),$r((function(n){var r=n[t],i=ci(n,0,t);return r&&ht(i,r),at(e,this,i)}))},On.tail=function(e){var t=null==e?0:e.length;return t?Gr(e,1,t):[]},On.take=function(e,t,n){return e&&e.length?Gr(e,0,(t=n||void 0===t?1:rs(t))<0?0:t):[]},On.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?Gr(e,(t=r-(t=n||void 0===t?1:rs(t)))<0?0:t,r):[]},On.takeRightWhile=function(e,t){return e&&e.length?ti(e,Ji(t,3),!1,!0):[]},On.takeWhile=function(e,t){return e&&e.length?ti(e,Ji(t,3)):[]},On.tap=function(e,t){return t(e),e},On.throttle=function(e,t,n){var r=!0,i=!0;if("function"!=typeof e)throw new ye(a);return Ho(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),_o(e,t,{leading:r,maxWait:t,trailing:i})},On.thru=to,On.toArray=ts,On.toPairs=Es,On.toPairsIn=Os,On.toPath=function(e){return zo(e)?dt(e,Aa):Zo(e)?[e]:gi(Sa(ss(e)))},On.toPlainObject=os,On.transform=function(e,t,n){var r=zo(e),i=r||jo(e)||Xo(e);if(t=Ji(t,4),null==n){var a=e&&e.constructor;n=i?r?new a:[]:Ho(e)&&Fo(a)?Tn(Ge(e)):{}}return(i?st:lr)(e,(function(e,r,i){return t(n,e,r,i)})),n},On.unary=function(e){return mo(e,1)},On.union=Ha,On.unionBy=Va,On.unionWith=Ga,On.uniq=function(e){return e&&e.length?Xr(e):[]},On.uniqBy=function(e,t){return e&&e.length?Xr(e,Ji(t,2)):[]},On.uniqWith=function(e,t){return t="function"==typeof t?t:void 0,e&&e.length?Xr(e,void 0,t):[]},On.unset=function(e,t){return null==e||Qr(e,t)},On.unzip=Wa,On.unzipWith=qa,On.update=function(e,t,n){return null==e?e:ei(e,t,oi(n))},On.updateWith=function(e,t,n,r){return r="function"==typeof r?r:void 0,null==e?e:ei(e,t,oi(n),r)},On.values=Ts,On.valuesIn=function(e){return null==e?[]:Nt(e,ws(e))},On.without=Ka,On.words=Fs,On.wrap=function(e,t){return Co(oi(t),e)},On.xor=Ya,On.xorBy=Ja,On.xorWith=Za,On.zip=Xa,On.zipObject=function(e,t){return ii(e||[],t||[],Hn)},On.zipObjectDeep=function(e,t){return ii(e||[],t||[],Br)},On.zipWith=Qa,On.entries=Es,On.entriesIn=Os,On.extend=cs,On.extendWith=us,Js(On,On),On.add=ol,On.attempt=Bs,On.camelCase=Is,On.capitalize=Ns,On.ceil=sl,On.clamp=function(e,t,n){return void 0===n&&(n=t,t=void 0),void 0!==n&&(n=(n=as(n))==n?n:0),void 0!==t&&(t=(t=as(t))==t?t:0),Yn(as(e),t,n)},On.clone=function(e){return Jn(e,4)},On.cloneDeep=function(e){return Jn(e,5)},On.cloneDeepWith=function(e,t){return Jn(e,5,t="function"==typeof t?t:void 0)},On.cloneWith=function(e,t){return Jn(e,4,t="function"==typeof t?t:void 0)},On.conformsTo=function(e,t){return null==t||Zn(e,t,_s(t))},On.deburr=Ps,On.defaultTo=function(e,t){return null==e||e!=e?t:e},On.divide=ll,On.endsWith=function(e,t,n){e=ss(e),t=Zr(t);var r=e.length,i=n=void 0===n?r:Yn(rs(n),0,r);return(n-=t.length)>=0&&e.slice(n,i)==t},On.eq=To,On.escape=function(e){return(e=ss(e))&&D.test(e)?e.replace(j,jt):e},On.escapeRegExp=function(e){return(e=ss(e))&&q.test(e)?e.replace(W,"\\$&"):e},On.every=function(e,t,n){var r=zo(e)?ct:nr;return n&&sa(e,t,n)&&(t=void 0),r(e,Ji(t,3))},On.find=io,On.findIndex=Na,On.findKey=function(e,t){return bt(e,Ji(t,3),lr)},On.findLast=ao,On.findLastIndex=Pa,On.findLastKey=function(e,t){return bt(e,Ji(t,3),cr)},On.floor=cl,On.forEach=oo,On.forEachRight=so,On.forIn=function(e,t){return null==e?e:or(e,Ji(t,3),ws)},On.forInRight=function(e,t){return null==e?e:sr(e,Ji(t,3),ws)},On.forOwn=function(e,t){return e&&lr(e,Ji(t,3))},On.forOwnRight=function(e,t){return e&&cr(e,Ji(t,3))},On.get=vs,On.gt=Io,On.gte=No,On.has=function(e,t){return null!=e&&ra(e,t,vr)},On.hasIn=ms,On.head=Ma,On.identity=Ws,On.includes=function(e,t,n,r){e=Lo(e)?e:Ts(e),n=n&&!r?rs(n):0;var i=e.length;return n<0&&(n=on(i+n,0)),Jo(e)?n<=i&&e.indexOf(t,n)>-1:!!i&&wt(e,t,n)>-1},On.indexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:rs(n);return i<0&&(i=on(r+i,0)),wt(e,t,i)},On.inRange=function(e,t,n){return t=ns(t),void 0===n?(n=t,t=0):n=ns(n),function(e,t,n){return e>=sn(t,n)&&e<on(t,n)}(e=as(e),t,n)},On.invoke=bs,On.isArguments=Po,On.isArray=zo,On.isArrayBuffer=Mo,On.isArrayLike=Lo,On.isArrayLikeObject=Ro,On.isBoolean=function(e){return!0===e||!1===e||Vo(e)&&dr(e)==u},On.isBuffer=jo,On.isDate=$o,On.isElement=function(e){return Vo(e)&&1===e.nodeType&&!qo(e)},On.isEmpty=function(e){if(null==e)return!0;if(Lo(e)&&(zo(e)||"string"==typeof e||"function"==typeof e.splice||jo(e)||Xo(e)||Po(e)))return!e.length;var t=na(e);if(t==v||t==b)return!e.size;if(fa(e))return!Sr(e).length;for(var n in e)if(Se.call(e,n))return!1;return!0},On.isEqual=function(e,t){return _r(e,t)},On.isEqualWith=function(e,t,n){var r=(n="function"==typeof n?n:void 0)?n(e,t):void 0;return void 0===r?_r(e,t,void 0,n):!!r},On.isError=Do,On.isFinite=function(e){return"number"==typeof e&&nn(e)},On.isFunction=Fo,On.isInteger=Bo,On.isLength=Uo,On.isMap=Go,On.isMatch=function(e,t){return e===t||wr(e,t,Xi(t))},On.isMatchWith=function(e,t,n){return n="function"==typeof n?n:void 0,wr(e,t,Xi(t),n)},On.isNaN=function(e){return Wo(e)&&e!=+e},On.isNative=function(e){if(ua(e))throw new pe("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return xr(e)},On.isNil=function(e){return null==e},On.isNull=function(e){return null===e},On.isNumber=Wo,On.isObject=Ho,On.isObjectLike=Vo,On.isPlainObject=qo,On.isRegExp=Ko,On.isSafeInteger=function(e){return Bo(e)&&e>=-9007199254740991&&e<=9007199254740991},On.isSet=Yo,On.isString=Jo,On.isSymbol=Zo,On.isTypedArray=Xo,On.isUndefined=function(e){return void 0===e},On.isWeakMap=function(e){return Vo(e)&&na(e)==x},On.isWeakSet=function(e){return Vo(e)&&"[object WeakSet]"==dr(e)},On.join=function(e,t){return null==e?"":rn.call(e,t)},On.kebabCase=zs,On.last=$a,On.lastIndexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r;return void 0!==n&&(i=(i=rs(n))<0?on(r+i,0):sn(i,r-1)),t==t?function(e,t,n){for(var r=n+1;r--;)if(e[r]===t)return r;return r}(e,t,i):_t(e,kt,i,!0)},On.lowerCase=Ms,On.lowerFirst=Ls,On.lt=Qo,On.lte=es,On.max=function(e){return e&&e.length?rr(e,Ws,hr):void 0},On.maxBy=function(e,t){return e&&e.length?rr(e,Ji(t,2),hr):void 0},On.mean=function(e){return St(e,Ws)},On.meanBy=function(e,t){return St(e,Ji(t,2))},On.min=function(e){return e&&e.length?rr(e,Ws,Cr):void 0},On.minBy=function(e,t){return e&&e.length?rr(e,Ji(t,2),Cr):void 0},On.stubArray=il,On.stubFalse=al,On.stubObject=function(){return{}},On.stubString=function(){return""},On.stubTrue=function(){return!0},On.multiply=fl,On.nth=function(e,t){return e&&e.length?Nr(e,rs(t)):void 0},On.noConflict=function(){return qe._===this&&(qe._=Te),this},On.noop=Zs,On.now=vo,On.pad=function(e,t,n){e=ss(e);var r=(t=rs(t))?Gt(e):0;if(!t||r>=t)return e;var i=(t-r)/2;return Pi(Qt(i),n)+e+Pi(Xt(i),n)},On.padEnd=function(e,t,n){e=ss(e);var r=(t=rs(t))?Gt(e):0;return t&&r<t?e+Pi(t-r,n):e},On.padStart=function(e,t,n){e=ss(e);var r=(t=rs(t))?Gt(e):0;return t&&r<t?Pi(t-r,n)+e:e},On.parseInt=function(e,t,n){return n||null==t?t=0:t&&(t=+t),cn(ss(e).replace(Y,""),t||0)},On.random=function(e,t,n){if(n&&"boolean"!=typeof n&&sa(e,t,n)&&(t=n=void 0),void 0===n&&("boolean"==typeof t?(n=t,t=void 0):"boolean"==typeof e&&(n=e,e=void 0)),void 0===e&&void 0===t?(e=0,t=1):(e=ns(e),void 0===t?(t=e,e=0):t=ns(t)),e>t){var r=e;e=t,t=r}if(n||e%1||t%1){var i=un();return sn(e+i*(t-e+He("1e-"+((i+"").length-1))),t)}return Rr(e,t)},On.reduce=function(e,t,n){var r=zo(e)?vt:Et,i=arguments.length<3;return r(e,Ji(t,4),n,i,er)},On.reduceRight=function(e,t,n){var r=zo(e)?mt:Et,i=arguments.length<3;return r(e,Ji(t,4),n,i,tr)},On.repeat=function(e,t,n){return t=(n?sa(e,t,n):void 0===t)?1:rs(t),jr(ss(e),t)},On.replace=function(){var e=arguments,t=ss(e[0]);return e.length<3?t:t.replace(e[1],e[2])},On.result=function(e,t,n){var r=-1,i=(t=si(t,e)).length;for(i||(i=1,e=void 0);++r<i;){var a=null==e?void 0:e[Aa(t[r])];void 0===a&&(r=i,a=n),e=Fo(a)?a.call(e):a}return e},On.round=pl,On.runInContext=e,On.sample=function(e){return(zo(e)?Dn:Dr)(e)},On.size=function(e){if(null==e)return 0;if(Lo(e))return Jo(e)?Gt(e):e.length;var t=na(e);return t==v||t==b?e.size:Sr(e).length},On.snakeCase=Rs,On.some=function(e,t,n){var r=zo(e)?gt:Wr;return n&&sa(e,t,n)&&(t=void 0),r(e,Ji(t,3))},On.sortedIndex=function(e,t){return qr(e,t)},On.sortedIndexBy=function(e,t,n){return Kr(e,t,Ji(n,2))},On.sortedIndexOf=function(e,t){var n=null==e?0:e.length;if(n){var r=qr(e,t);if(r<n&&To(e[r],t))return r}return-1},On.sortedLastIndex=function(e,t){return qr(e,t,!0)},On.sortedLastIndexBy=function(e,t,n){return Kr(e,t,Ji(n,2),!0)},On.sortedLastIndexOf=function(e,t){if(null==e?0:e.length){var n=qr(e,t,!0)-1;if(To(e[n],t))return n}return-1},On.startCase=js,On.startsWith=function(e,t,n){return e=ss(e),n=null==n?0:Yn(rs(n),0,e.length),t=Zr(t),e.slice(n,n+t.length)==t},On.subtract=dl,On.sum=function(e){return e&&e.length?Ot(e,Ws):0},On.sumBy=function(e,t){return e&&e.length?Ot(e,Ji(t,2)):0},On.template=function(e,t,n){var r=On.templateSettings;n&&sa(e,t,n)&&(t=void 0),e=ss(e),t=us({},t,r,Fi);var i,a,o=us({},t.imports,r.imports,Fi),s=_s(o),l=Nt(o,s),c=0,u=t.interpolate||ue,f="__p += '",p=me((t.escape||ue).source+"|"+u.source+"|"+(u===U?ne:ue).source+"|"+(t.evaluate||ue).source+"|$","g"),d="//# sourceURL="+(Se.call(t,"sourceURL")?(t.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++De+"]")+"\n";e.replace(p,(function(t,n,r,o,s,l){return r||(r=o),f+=e.slice(c,l).replace(fe,$t),n&&(i=!0,f+="' +\n__e("+n+") +\n'"),s&&(a=!0,f+="';\n"+s+";\n__p += '"),r&&(f+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),c=l+t.length,t})),f+="';\n";var h=Se.call(t,"variable")&&t.variable;h||(f="with (obj) {\n"+f+"\n}\n"),f=(a?f.replace(z,""):f).replace(M,"$1").replace(L,"$1;"),f="function("+(h||"obj")+") {\n"+(h?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(i?", __e = _.escape":"")+(a?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+f+"return __p\n}";var v=Bs((function(){return de(s,d+"return "+f).apply(void 0,l)}));if(v.source=f,Do(v))throw v;return v},On.times=function(e,t){if((e=rs(e))<1||e>9007199254740991)return[];var n=4294967295,r=sn(e,4294967295);e-=4294967295;for(var i=Tt(r,t=Ji(t));++n<e;)t(n);return i},On.toFinite=ns,On.toInteger=rs,On.toLength=is,On.toLower=function(e){return ss(e).toLowerCase()},On.toNumber=as,On.toSafeInteger=function(e){return e?Yn(rs(e),-9007199254740991,9007199254740991):0===e?e:0},On.toString=ss,On.toUpper=function(e){return ss(e).toUpperCase()},On.trim=function(e,t,n){if((e=ss(e))&&(n||void 0===t))return e.replace(K,"");if(!e||!(t=Zr(t)))return e;var r=Wt(e),i=Wt(t);return ci(r,zt(r,i),Mt(r,i)+1).join("")},On.trimEnd=function(e,t,n){if((e=ss(e))&&(n||void 0===t))return e.replace(J,"");if(!e||!(t=Zr(t)))return e;var r=Wt(e);return ci(r,0,Mt(r,Wt(t))+1).join("")},On.trimStart=function(e,t,n){if((e=ss(e))&&(n||void 0===t))return e.replace(Y,"");if(!e||!(t=Zr(t)))return e;var r=Wt(e);return ci(r,zt(r,Wt(t))).join("")},On.truncate=function(e,t){var n=30,r="...";if(Ho(t)){var i="separator"in t?t.separator:i;n="length"in t?rs(t.length):n,r="omission"in t?Zr(t.omission):r}var a=(e=ss(e)).length;if(Dt(e)){var o=Wt(e);a=o.length}if(n>=a)return e;var s=n-Gt(r);if(s<1)return r;var l=o?ci(o,0,s).join(""):e.slice(0,s);if(void 0===i)return l+r;if(o&&(s+=l.length-s),Ko(i)){if(e.slice(s).search(i)){var c,u=l;for(i.global||(i=me(i.source,ss(re.exec(i))+"g")),i.lastIndex=0;c=i.exec(u);)var f=c.index;l=l.slice(0,void 0===f?s:f)}}else if(e.indexOf(Zr(i),s)!=s){var p=l.lastIndexOf(i);p>-1&&(l=l.slice(0,p))}return l+r},On.unescape=function(e){return(e=ss(e))&&$.test(e)?e.replace(R,qt):e},On.uniqueId=function(e){var t=++Ae;return ss(e)+t},On.upperCase=$s,On.upperFirst=Ds,On.each=oo,On.eachRight=so,On.first=Ma,Js(On,(ul={},lr(On,(function(e,t){Se.call(On.prototype,t)||(ul[t]=e)})),ul),{chain:!1}),On.VERSION="4.17.20",st(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(e){On[e].placeholder=On})),st(["drop","take"],(function(e,t){Pn.prototype[e]=function(n){n=void 0===n?1:on(rs(n),0);var r=this.__filtered__&&!t?new Pn(this):this.clone();return r.__filtered__?r.__takeCount__=sn(n,r.__takeCount__):r.__views__.push({size:sn(n,4294967295),type:e+(r.__dir__<0?"Right":"")}),r},Pn.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),st(["filter","map","takeWhile"],(function(e,t){var n=t+1,r=1==n||3==n;Pn.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Ji(e,3),type:n}),t.__filtered__=t.__filtered__||r,t}})),st(["head","last"],(function(e,t){var n="take"+(t?"Right":"");Pn.prototype[e]=function(){return this[n](1).value()[0]}})),st(["initial","tail"],(function(e,t){var n="drop"+(t?"":"Right");Pn.prototype[e]=function(){return this.__filtered__?new Pn(this):this[n](1)}})),Pn.prototype.compact=function(){return this.filter(Ws)},Pn.prototype.find=function(e){return this.filter(e).head()},Pn.prototype.findLast=function(e){return this.reverse().find(e)},Pn.prototype.invokeMap=$r((function(e,t){return"function"==typeof e?new Pn(this):this.map((function(n){return yr(n,e,t)}))})),Pn.prototype.reject=function(e){return this.filter(So(Ji(e)))},Pn.prototype.slice=function(e,t){e=rs(e);var n=this;return n.__filtered__&&(e>0||t<0)?new Pn(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),void 0!==t&&(n=(t=rs(t))<0?n.dropRight(-t):n.take(t-e)),n)},Pn.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},Pn.prototype.toArray=function(){return this.take(4294967295)},lr(Pn.prototype,(function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),i=On[r?"take"+("last"==t?"Right":""):t],a=r||/^find/.test(t);i&&(On.prototype[t]=function(){var t=this.__wrapped__,o=r?[1]:arguments,s=t instanceof Pn,l=o[0],c=s||zo(t),u=function(e){var t=i.apply(On,ht([e],o));return r&&f?t[0]:t};c&&n&&"function"==typeof l&&1!=l.length&&(s=c=!1);var f=this.__chain__,p=!!this.__actions__.length,d=a&&!f,h=s&&!p;if(!a&&c){t=h?t:new Pn(this);var v=e.apply(t,o);return v.__actions__.push({func:to,args:[u],thisArg:void 0}),new Nn(v,f)}return d&&h?e.apply(this,o):(v=this.thru(u),d?r?v.value()[0]:v.value():v)})})),st(["pop","push","shift","sort","splice","unshift"],(function(e){var t=be[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);On.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var i=this.value();return t.apply(zo(i)?i:[],e)}return this[n]((function(n){return t.apply(zo(n)?n:[],e)}))}})),lr(Pn.prototype,(function(e,t){var n=On[t];if(n){var r=n.name+"";Se.call(bn,r)||(bn[r]=[]),bn[r].push({name:t,func:n})}})),bn[Oi(void 0,2).name]=[{name:"wrapper",func:void 0}],Pn.prototype.clone=function(){var e=new Pn(this.__wrapped__);return e.__actions__=gi(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=gi(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=gi(this.__views__),e},Pn.prototype.reverse=function(){if(this.__filtered__){var e=new Pn(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},Pn.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=zo(e),r=t<0,i=n?e.length:0,a=function(e,t,n){var r=-1,i=n.length;for(;++r<i;){var a=n[r],o=a.size;switch(a.type){case"drop":e+=o;break;case"dropRight":t-=o;break;case"take":t=sn(t,e+o);break;case"takeRight":e=on(e,t-o)}}return{start:e,end:t}}(0,i,this.__views__),o=a.start,s=a.end,l=s-o,c=r?s:o-1,u=this.__iteratees__,f=u.length,p=0,d=sn(l,this.__takeCount__);if(!n||!r&&i==l&&d==l)return ni(e,this.__actions__);var h=[];e:for(;l--&&p<d;){for(var v=-1,m=e[c+=t];++v<f;){var g=u[v],y=g.iteratee,b=g.type,_=y(m);if(2==b)m=_;else if(!_){if(1==b)continue e;break e}}h[p++]=m}return h},On.prototype.at=no,On.prototype.chain=function(){return eo(this)},On.prototype.commit=function(){return new Nn(this.value(),this.__chain__)},On.prototype.next=function(){void 0===this.__values__&&(this.__values__=ts(this.value()));var e=this.__index__>=this.__values__.length;return{done:e,value:e?void 0:this.__values__[this.__index__++]}},On.prototype.plant=function(e){for(var t,n=this;n instanceof In;){var r=Ea(n);r.__index__=0,r.__values__=void 0,t?i.__wrapped__=r:t=r;var i=r;n=n.__wrapped__}return i.__wrapped__=e,t},On.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof Pn){var t=e;return this.__actions__.length&&(t=new Pn(this)),(t=t.reverse()).__actions__.push({func:to,args:[Ua],thisArg:void 0}),new Nn(t,this.__chain__)}return this.thru(Ua)},On.prototype.toJSON=On.prototype.valueOf=On.prototype.value=function(){return ni(this.__wrapped__,this.__actions__)},On.prototype.first=On.prototype.head,Xe&&(On.prototype[Xe]=function(){return this}),On}();qe._=Kt,void 0===(i=function(){return Kt}.call(t,n,t,r))||(r.exports=i)}).call(this)}).call(this,n("yLpj"),n("YuTi")(e))},MLWZ:function(e,t,n){"use strict";var r=n("xTJ+");function i(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,t,n){if(!t)return e;var a;if(n)a=n(t);else if(r.isURLSearchParams(t))a=t.toString();else{var o=[];r.forEach(t,(function(e,t){null!=e&&(r.isArray(e)?t+="[]":e=[e],r.forEach(e,(function(e){r.isDate(e)?e=e.toISOString():r.isObject(e)&&(e=JSON.stringify(e)),o.push(i(t)+"="+i(e))})))})),a=o.join("&")}if(a){var s=e.indexOf("#");-1!==s&&(e=e.slice(0,s)),e+=(-1===e.indexOf("?")?"?":"&")+a}return e}},MqSN:function(e,t,n){var r=n("mPSV");"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n("aET+")(r,i);r.locals&&(e.exports=r.locals)},Nv84:function(e,t,n){"use strict";var r={name:"ButtonBase",props:["buttonStyle","loading"],components:{RefreshCwIcon:n("CjXH").S}},i=(n("ZoqK"),n("KHd+")),a=Object(i.a)(r,(function(){var e=this.$createElement,t=this._self._c||e;return t("button",{staticClass:"button-base",class:this.buttonStyle,attrs:{type:"button"}},[this.loading?t("div",{staticClass:"icon"},[t("refresh-cw-icon",{staticClass:"sync-alt",attrs:{size:"16"}})],1):this._e(),this._v(" "),t("div",{staticClass:"content"},[this.loading?this._e():this._t("default")],2)])}),[],!1,null,"401c7942",null);t.a=a.exports},OH9c:function(e,t,n){"use strict";e.exports=function(e,t,n,r,i){return e.config=t,n&&(e.code=n),e.request=r,e.response=i,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},OTTw:function(e,t,n){"use strict";var r=n("xTJ+");e.exports=r.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function i(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=i(window.location.href),function(t){var n=r.isString(t)?i(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0}},"P5l/":function(e){e.exports=JSON.parse('{"actions":{"create_folder":"Create folder","delete":"Delete item","move":"Move item","preview":"Change preview","share":"Share item","upload":"Upload file","download":"Download item","print":"Print item","close":"Close","sorting_view":"Sorting and View","info_panel":"Info panel"},"activation":{"stripe":{"button":"Set up your Stripe account","description":"To charge your users, please set up your Stripe account credentials.","title":"Your Stripe account is not set"}},"admin_menu":{"dashboard":"Dashboard","invoices":"Invoices","pages":"Pages","plans":"Plans","settings":"Settings","users":"Users"},"admin_page_dashboard":{"backer_button":"Help Us Improve","license":"License","version":"Version","w_latest_users":{"title":"Latest Registrations"},"w_total_premium":{"link":"Show All Plans","title":"Total Premium Users"},"w_total_space":{"link":"Show All Users","title":"Total Space Used"},"w_total_users":{"link":"Show All Users","title":"Total Users"}},"admin_page_invoices":{"empty":{"description":"All customers invoices will be showed here.","title":"You don’t have any invoices yet"},"table":{"number":"Invoice Number","payed":"Payed","plan":"Plan","total":"Total","user":"User"}},"admin_page_plans":{"create_plan_button":"Create Plan","delete_plan_button":"Delete Plan","disclaimer_delete_plan":"You can delete this plan, but, pay attention! Your plan will be deleted, but users who are subscribed with this plan, will be still charged unless they cancel subscription.","disclaimer_edit_price":"Price change for your plan is not available due to Stripe service design. If you wish change your price plan, please, create new plan.","empty":{"button":"Create New Plan","description":"For create new plan, click on button below.","title":"You don’t have any plan yet"},"form":{"description":"Description (optional)","description_plac":"Plan description","name":"Name","name_delete_plac":"Type plan name","name_plac":"Plan name","price":"Price","price_plac":"Plan price","status":"Status","status_help":"Status of your plan availability on website.","storage":"Storage Capacity in GB","storage_helper":"You have to type only number e.g. value \'5\' means, user will have 5GB of storage capacity.","storage_plac":"Storage capacity","title_delete":"Delete Plan","title_details":"Plan Details","title_pricing":"Plan Pricing"},"subscribers":{"empty":"There is no any subscriber yet."},"table":{"name":"Plan Name","price":"Price","status":"Status","storage_capacity":"Storage Capacity","subscribers":"Subscribers"},"tabs":{"delete":"Delete Plan","settings":"Settings","subscribers":"Subscribers"}},"admin_page_user":{"change_capacity":"Change Capacity","create_user":{"avatar":"Avatar","group_details":"Account Details","group_settings":"Account Settings","label_conf_pass":"Confirm password","label_email":"Type E-mail","label_name":"Type full name","submit":"Create User"},"delete_user":"Delete User","invoices":{"empty":"User don\'t have any invoices yet."},"label_change_capacity":"Type storage capacity in GB","label_delete_user":"Type with Case Sensitive user name ‘{user}‘","label_person_info":"Personal Information","placeholder_delete_user":"Type here","save_role":"Save Role","select_role":"Select user role","send_password_link":"Send Password Reset Link","subscription":{"empty":"User don\'t have any subscription yet.","interval_mo":"Monthly"},"table":{"action":"Action","created_at":"Registered","name":"User","plan":"Subscription Plan","role":"Role","storage_capacity":"Storage Capacity","storage_used":"Storage Used"},"tabs":{"delete":"Delete User","detail":"Detail","invoices":"Invoices","password":"Password","storage":"Storage Usage","subscription":"Subscription"}},"admin_pages":{"form":{"content":"Content","content_plac":"Type your content here...","slug":"Slug","title":"Title","title_plac":"Title name","visibility":"Visibility","visibility_help":"Status of your page visibility on website."},"table":{"page":"Page","slug":"Slug","status":"Status"}},"admin_settings":{"appearance":{"description":"App Description","description_plac":"Type your app description","favicon":"App Favicon (optional)","logo":"App Logo (optional)","logo_horizontal":"App Logo Horizontal (optional)","section_appearance":"Appearance","section_general":"General Settings","title":"App Title","title_plac":"Type your app title"},"billings":{"address":"Billing Address","address_plac":"Type your billing address","city":"Billing City","city_plac":"Type your billing city","company_name":"Company Name","company_name_plac":"Type your company name","country":"Billing Country","country_plac":"Select your billing country","phone_number":"Billing Phone Number (optional)","phone_number_plac":"Type your billing phone number","postal_code":"Billing Postal Code","postal_code_plac":"Type your billing postal code","section_billing":"Billing Information","section_company":"Company Information","state":"Billing State","state_plac":"Type your billing state","vat":"VAT Number","vat_plac":"Type your VAT number"},"email":{"driver":"Mail Driver","driver_plac":"Type your mail driver","email_disclaimer":"This form is not fully pre-filled for security reasons. Your email settings is available in your <b>.env</b> file. For apply new Email settings, please confirm your options by button at the end of formular.","encryption":"Mail Encryption","encryption_plac":"Select your mail encryption","host":"Mail Host","host_plac":"Type your mail host","password":"Mail Password","password_plac":"Type your mail password","port":"Mail Port","port_plac":"Type your mail port","save_button":"Save Email Settings","section_email":"Email Setup","username":"Mail Username","username_plac":"Type your mail username"},"others":{"upload_limit":"Upload Limit","upload_limit_plac":"Type your upload limit in MB","upload_limit_help":"If you want to set max file size limit on single upload, add size of your limit in MB. E.g. 100 means 100 MB and 2 000 means 2 000 MB limit.","mimetypes_blacklist":"Mimetypes Blacklist","mimetypes_blacklist_plac":"Add mimetypes to Blacklist","mimetypes_blacklist_help":"If you want to prevent upload some type of files, just add them to blacklist like this: x-php,mp3,jpeg <br/> Use a comma between each mimetype. Don\'t use a dot before mimetypes.","section_cache":"Application Cache","cache_disclaimer":"Did you change anything in your .env file or change your Stripe credentials? Then clear your cache.","cache_clear":"Clear Cache","allow_registration":"Allow User Registration","allow_registration_help":"You can disable public registration for new users. You will still able to <br/>create new users in administration panel.","contact_email":"Contact Email","contact_email_plac":"Type your contact email","default_storage":"Default Storage Space for User Accounts","default_storage_plac":"Set default storage space in GB","google_analytics":"Google Analytics Code (optional)","google_analytics_plac":"Paste your Google Analytics Code","section_others":"Others Settings","section_user":"Users and Storage","storage_limit":"Storage Limitation","storage_limit_help":"If this value is off, all users will have infinity storage capacity and you won\'t be <br/>able to charge your users for storage plan."},"payments":{"allow_payments":"Allow Subscription Payments","button_submit":"Test and Save Stripe","button_testing":"Testing Stripe Connection","credentials_disclaimer":"Your Stripe credentials is not showed because these values are secret and must not be revealed by stranger. You can change your Stripe credentials in your <b>.env</b> file.","section_payments":"Stripe Payments","stripe_create_acc":"If you don’t have stripe account, please <a href=\\"https://dashboard.stripe.com/register\\" target=\\"_blank\\">register here</a> and get your Publishable Key, Secret Key and create your webhook.","stripe_create_webhook":"You have to create webhook endpoint in your Stripe Dashboard. You can find it in <b>Dashboard -> Developers -> Webhooks -> Add Endpoint</b>. In Endpoint URL please copy and paste url bellow. Make sure, this url is your public domain, not localhost. In events section, please click on <b>receive all events</b>. That\'s all.","stripe_currency":"Stripe Currency","stripe_currency_plac":"Select your Stripe currency","stripe_pub_key":"Publishable Key","stripe_pub_key_plac":"Paste your publishable key","stripe_sec_key":"Secret Key","stripe_sec_key_plac":"Paste your secret key","stripe_setup":"Stripe Setup","stripe_webhook_key_plac":"Paste your stripe webhook secret","webhook_url":"Stripe webhook URL"},"tabs":{"appearance":"Appearance","billings":"Billings","email":"Email","others":"Application","payments":"Payments"}},"alerts":{"error_confirm":"That’s horrible!","leave_to_sign_in":"Do you really want to leave?","success_confirm":"Awesome!"},"context_menu":{"add_folder":"Add Folder","add_to_favourites":"Add to Favourites","create_folder":"Create Folder","delete":"Delete","detail":"Detail","download":"Download","empty_trash":"Empty Trash","log_out":"Log Out","move":"Move","profile_settings":"Profile Settings","remove_from_favourites":"Remove Favourite","rename":"Rename","restore":"Restore","share":"Share","share_cancel":"Cancel Sharing","share_edit":"Edit Sharing","upload":"Upload","select":"Select","no_options":"No Options Available","zip_folder":"Zip and Download"},"mobile_selecting":{"select_all":"Select All","deselect_all":"Deselect All","done":"Done"},"preview_sorting":{"grid_view":"Grid View","list_view":"List View","sort_date":"Sort By Date","sort_alphabet":"Sort By Aplhabet","preview_sorting_button":"View"},"cookie_disclaimer":{"button":"cookies policy","description":"By browsing this website you are agreeing to our {0}."},"datatable":{"paginate_info":"Showing 1 - {visible} from {total} records"},"empty_page":{"call_to_action":"Upload Files","description":"Upload some files here easily via upload button.","title":"Upload Your First File"},"errors":{"capacity_digit":"The storage capacity must be lower than 10 digit number."},"file_detail":{"author":"Author","author_participant":"Public Participant","created_at":"Created at","shared":"Shared","size":"Size","where":"Where","selected_multiple":"Selected Multiple Items","items":"Items"},"file_detail_meta":{"dimension":"Dimensions","resolution":"Resolution","color_space":"Color Space","aperture_value":"Aperture Value","meta_data":"Metadata","author":"Author","time_data":"Content Created","make":"Camera","model":"Model","camera_lens":"Camera Lens","aperature":"F Number","iso":"ISO","focal":"Focal Length","exposure":"Exposure Time","longitude":"Longitude","latitude":"Latitude"},"folder":{"empty":"Empty","item_counts":"{count} Item | {count} Items"},"global":{"incomplete":"Incomplete","active":"Active","admin":"Admin","cancel":"Cancel","canceled":"Canceled","confirm_action":"Yes, I\'m sure","default":"Default","free":"Free","get_it":"Get It","menu":"Menu","monthly_ac":"Mo.","or":"or","premium":"Premium","saas":"Services","subscription":"Subscription","total":"Total","upgrade_plan":"Upgrade Plan"},"input_image":{"supported":"Supported formats are .png, .jpg, .jpeg.","title":"Upload Image"},"inputs":{"placeholder_search_files":"Search files or folders..."},"item_thumbnail":{"deleted_at":"Deleted {time}","original_location":"Original Location"},"locations":{"home":"Files","shared":"Shared","trash":"Trash","profile":"Profile","settings":"Settings","logout":"Log Out"},"menu":{"admin":"Administration","files":"Files","invoices":"Invoices","latest":"Recent Uploads","logout":"Log Out","password":"Password","payment_cards":"Payment Cards","profile":"Profile Settings","settings":"Settings","shared":"Shared Files","storage":"Storage","subscription":"Subscription","trash":"Trash"},"messages":{"nothing_from_participants":"You don\'t have any uploads from other users.","nothing_to_preview":"There is nothing to preview.","nothing_was_found":"Nothing was found."},"notice":{"stripe_activation":"Your Stripe account is not set. To charging your users please {0}.","stripe_activation_button":"set up your Stripe account"},"page_contact_us":{"description":"Do you have any questions? Get in touch with us.","error_message":"Something went wrong, please try it again.","form":{"email":"Email","email_plac":"Type your email","message":"Message","message_plac":"Type your message here...","submit_button":"Send Message"},"success_message":"Your message was send successfully.","title":"Contact Us"},"page_create_password":{"button_update":"Update Password","label_confirm_pass":"Confirm password","label_email":"Email:","label_new_pass":"New password","subtitle":"Create your new password here:","title":"Only One Step to Log In"},"page_forgotten_password":{"button_get_link":"Get Link","pass_reseted_signin":"Sign In","pass_reseted_subtitle":"Your password was reset successfully.","pass_reseted_title":"Awesome!","pass_sennded_subtitle":"We have e-mailed your password reset link!","pass_sennded_title":"Thank you!","password_remember_button":"Log In.","password_remember_text":"Remember your password?","subtitle":"Get reset link with your email:","title":"Forgotten Password?"},"page_index":{"get_started_button":"Sign Up Now","menu":{"contact_us":"Contact Us","log_in":"Log In","pricing":"Pricing","sign_in":"Sign Up"},"sign_feature_1":"No credit card required","sign_feature_2":"{defaultSpace} Free storage space","sign_up_button":"Sign Up Now"},"page_login":{"button_next":"Next Step","placeholder_email":"Type your E-mail","registration_button":"Register account.","registration_text":"Don’t have an account?","subtitle":"Please type your email to log in:","title":"Welcome Back!"},"page_pricing_tables":{"description":"Choose plan witch perfect fit your needs. All plans is billed monthly automatically via your credit card.","storage_capacity":"Of Storage Capacity","vat_excluded":"Price displayed excludes VAT.","title":"Choose Your Plan"},"page_registration":{"agreement":"By clicking on \'Create Account\' button I agree to the {0} and {1}.","button_create_account":"Create Account","have_an_account":"Do you have an account?","label_confirm_pass":"Confirm password:","label_email":"Email:","label_name":"Full Name:","label_pass":"Create password:","placeholder_confirm_pass":"Confirm your new password","placeholder_email":"Type your E-mail","placeholder_name":"Type your full name","placeholder_pass":"New password","subtitle":"Please fill registration to create account:","title":"Create New Account"},"page_shared":{"download_file":"Download File","placeholder_pass":"Type password","submit":"Submit","subtitle":"Please type the password to get shared content:","title":"Your Share Link is Protected"},"page_shared_404":{"subtitle":"The content you are finding was probably deleted.","title":"Not Found :("},"page_sign_in":{"button_log_in":"Log In","password_reset_button":"Reset Password.","password_reset_text":"Forgotten your password?","placeholder_password":"Type your password","subtitle":"Confirm you by your password:","title":"Are You {name}?"},"page_upgrade_account":{"change_payment":{"change_payment":"change your default payment method","pay_by_new_card":"pay by new credit card","you_can":"Also you can"},"desription":"Choose plan witch perfect fit your needs. All plans is billed monthly automatically via your credit card.","errors":{"pay_by_another_card":"Please pay by another payment card"},"section_billing":"Billing Information","section_card":"Payment Card","section_summary":"Order Summary","summary":{"total_with_vat":"Total with VAT","vat":"VAT","period":"Billed monthly","submit_button":"Pay with credit card","submit_disclaimer":"By submit form, you agree to save the payment method and billing information in your {app} account."},"title":"Choose Payment Method"},"popup_upload_limit":{"title":"You exceed upload limit on single file","message":"Size of your uploaded file exceed the upload limit ({uploadLimit})."},"popup_mimetypes_blacklist":{"title":"You are trying to upload unsupported file type","message":"File of this type ({mimetype}) is not allowed to upload."},"popup_delete_card":{"message":"This event is irreversible and your payment card will be delete forever","title":"Are you sure?"},"popup_deleted_plan":{"message":"Your plan was successfully deleted.","title":"Plan was deleted"},"popup_deleted_user":{"message":"Your user was deleted with all user data content.","title":"User was deleted"},"popup_deleted_user_aborted":{"message":"You can\'t delete this account while user have active subscription.","title":"User wasn\'t deleted"},"popup_error":{"message":"Something went wrong and we can\'t continue. Please contact us.","title":"Whooops, something went wrong!"},"popup_exceed_limit":{"message":"Please contact your administrator to change your limit.","title":"Whooops, you exceed storage limit :("},"popup_move_item":{"cancel":"Cancel","submit":"Move Item","title":"Move Item"},"popup_pass_changed":{"message":"So now, you have awesome new password.","title":"Your password was changed!"},"popup_passport_error":{"message":"Probably you didn\'t generated Passport Grant client or you didn\'t set up passport credentials in your .env file. Please follow install instructions.","title":"Invalid Passport Grand Client"},"popup_paylod_error":{"message":"Sorry, your file is too large and can\'t be uploaded","title":"File is too large"},"popup_zipping":{"title":"Zipping Your Files...","message":"Please wait until your files start downloading."},"popup_rename":{"title":"Rename Your {item}","label":"Edit Name","placeholder":"Type your title","tab_emoji_title":"Emoji as an Icon","tab_color_title":"Folder Color","select_emoji_label":"Pick Your Emoji Icon","color_pick_label":"Pick Your Color","set_emoji_input_placeholder":"Emojis List...","search_emoji_input_placeholder":"Search your emoji...","emoji_list_not_found":"Not Found"},"popup_create_folder":{"folder_default_name":"New Folder","title":"Create Folder","label":"Type Name","placeholder":"Type your name"},"popup_set_card":{"message":"Your card will be set as default and will be always charged for the next billings.","title":"Set as default card?"},"popup_share_create":{"title":"Share Your {item}"},"popup_share_edit":{"change_pass":"Change Password","confirm":"Confirm","save":"Save Changes","stop":"Cancel Sharing","title":"Update sharing options","go_back":"Go Back","send_to_recipients":"Send to Recipients"},"popup_signup_error":{"message":"Please check your database connection if everything works correctly.","title":"Server Error"},"popup_subscription_cancel":{"button":"I\'m done","message":"You\'ll continue to have access to the features you\'ve paid for until the end of your billing cycle.","title":"Subscription Was Canceled"},"popup_subscription_resumed":{"button":"That\'s awesome!","message":"Your subscription was re-activated, and they will be billed on the original billing cycle.","title":"Subscription Was Resumed"},"profile":{"change_pass":"Change Password","profile_info":"Profile Information","store_pass":"Store New Password"},"pronouns":{"of":"of"},"roles":{"admin":"Admin","user":"User"},"routes":{"create_new_password":"create-new-password"},"routes_title":{"appearance":"Appearance","billings":"Billings","dashboard":"Dashboard","email":"Email","invoices":"Invoices","others":"Others","page_edit":"Edit Page","pages":"Pages","payment_methods":"Payment Methods","payments":"Payments","plan":"Plan","plan_create":"Create Plan","plan_delete":"Plan Delete","plan_settings":"Plan Settings","pricing_plans":"Pricing Plans","profile":"My Profile","profile_settings":"Profile Settings","settings":"Settings","settings_mobile":"Settings","settings_password":"Change Password","settings_storage":"Storage","subscribers":"Subscribers","subscription":"Subscription","upgrade_billing":"Billing","upgrade_plan":"Upgrade Plan","user_create":"Create User","users_delete":"Delete User","users_detail":"Detail","users_list":"User Management","users_password":"Password","users_storage_usage":"Storage Usage","users_user":"User"},"rows":{"card":{"expiration":"Expiration Date","number":"Card Number","status":"Status"},"invoice":{"number":"Invoice Number","payed":"Payed","plan":"Plan","total":"Total"}},"shared":{"can_download":"Can download file","editor":"Can edit and upload files","empty_shared":"You haven\'t shared anything yet.","visitor":"Can only view and download"},"shared_form":{"button_more_options":"Set Expiration","button_close_options":"Close Options","button_folder_icon_open":"Customize Folder Icon","button_done":"Awesome, I’m done!","button_generate":"Generate Link","label_password_protection":"Password Protected","label_permission":"Permission","label_shared_url":"Share url","label_share_vie_email":"Get your link","label_send_to_recipients":"Send to Recipients","label_expiration":"Link Expiration","expiration_hour":"{value}h.","expiration_day":"{value}d.","placeholder_permission":"Select your permission","email_successfully_send_message":"Your item was <b>successfully sended</b> to recipients emails.","share_by_link":"Share by Link","share_by_email":"Share by Email","recipients_label":"Recipients","email_placeholder":"Type your emails"},"sidebar":{"favourites":"Favourites","favourites_empty":"Drag here your favourite folder.","folders_empty":"Create some new folder.","home":"Files","latest":"Recent Uploads","locations_title":"Base","my_shared":"My Shared Items","navigator_title":"Navigator","participant_uploads":"Participant Uploads","tools_title":"Tools"},"storage":{"audios":"Audios","documents":"Documents","images":"Images","others":"Others","sec_capacity":"Your disk Usage","sec_details":"Capacity Usage Details","total_capacity":"Your storage capacity is {capacity}","total_used":"Total used {used}","videos":"Videos"},"toaster":{"account_upgraded":"Your account was successfully upgraded.","card_deleted":"Your card was successfully deleted.","card_new_add":"Your card was successfully added","card_set":"Your card was successfully set as default.","changed_capacity":"You successfully changed user\'s storage size!","changed_user":"You successfully changed user\'s role!","created_user":"User was created successfully!","email_set":"Your email settings was updated successfully","plan_created":"Your plan was successfully created!","sended_password":"You successfully send user email for reset password!","stripe_set":"Your Stripe account was successfully set!"},"types":{"file":"File","folder":"Folder"},"upgrade_banner":{"button":"Upgrade","description":"You nearly reach your storage capacity.","title":"You reach your storage capacity. Please upgrade."},"incomplete_payment":{"description":"Your latest payment is incomplete. {0}","href":"Please confirm your payment."},"uploading":{"cancel":"Cancel Uploading","processing_file":"Processing File...","progress_single_upload":"Uploading File {progress}%","progress":"Uploading File {progress}% - {current}/{total}"},"user_add_card":{"default_description":"Your card will be charged for billing plans as first.","default_title":"Set as Default Payment Method"},"user_box_delete":{"description":"You can delete your user, but, pay attention! This event is irreversible and all user data include user files will be deleted.","title":"Delete User"},"user_box_password":{"description":"You can send password reset email via button bellow. User will be redirected to page where he can update password for his account.","title":"Change User Password"},"user_box_role":{"description":"You can change role for current user. Admin role can edit or create new users, change storage capacity and any other application settings.","title":"Change User Role"},"user_box_storage":{"description":"Change user storage capacity by input bellow. You have to type only number e.g. value \'5\' means, user will have 5GB of storage capacity.","title":"Change User Storage Capacity"},"user_invoices":{"empty":"You don\'t have any invoices yet.","title":"Invoices"},"user_password":{"title":"Change Your Password"},"user_payments":{"add_card":"Add Payment Card","card_field_title":"Credit Card","delete_card":"Delete card","empty":"You don\'t have any payment cards yet.","field_loading":"Loading card field...","set_as_default":"Set as default card","store_card":"Store Payment Card","title":"Payment Methods"},"user_settings":{"address":"Address","address_plac":"Type your billing address","city":"City","city_plac":"Type your billing city","country":"Country","country_plac":"Select your billing country","name":"Name","name_plac":"Type your billing name","phone_number":"Phone Number","phone_number_plac":"Type your billing phone number","postal_code":"Postal Code","postal_code_plac":"Type your billing postal code","state":"State","state_plac":"Type your billing state","title_account":"Account Information","title_billing":"Billing Information","timezone":"Timezone","timezone_plac":"Select your timezone"},"user_subscription":{"billed":"Billed","cancel_plan":"Cancel Plan","canceled_at":"Canceled At","created_at":"Created At","empty":"You don\'t have any subscription yet.","ends_at":"Ends At","plan":"Plan","renews_at":"Renews At","resume_plan":"Resume Plan","status":"Status","title":"Subscription Plan"},"validation_errors":{"incorrect_password":"Sorry, you passed incorrect password :(","wrong_image":"You may have uploaded the wrong file, try again!"}}')},QSDE:function(e,t,n){var r=n("Tnpf");"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n("aET+")(r,i);r.locals&&(e.exports=r.locals)},RKqW:function(e,t,n){"use strict";var r=n("lx7M");n.n(r).a},"Rn+g":function(e,t,n){"use strict";var r=n("LYNF");e.exports=function(e,t,n){var i=n.config.validateStatus;!i||i(n.status)?e(n):t(r("Request failed with status code "+n.status,n.config,null,n.request,n))}},SntB:function(e,t,n){"use strict";var r=n("xTJ+");e.exports=function(e,t){t=t||{};var n={},i=["url","method","params","data"],a=["headers","auth","proxy"],o=["baseURL","url","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"];r.forEach(i,(function(e){void 0!==t[e]&&(n[e]=t[e])})),r.forEach(a,(function(i){r.isObject(t[i])?n[i]=r.deepMerge(e[i],t[i]):void 0!==t[i]?n[i]=t[i]:r.isObject(e[i])?n[i]=r.deepMerge(e[i]):void 0!==e[i]&&(n[i]=e[i])})),r.forEach(o,(function(r){void 0!==t[r]?n[r]=t[r]:void 0!==e[r]&&(n[r]=e[r])}));var s=i.concat(a).concat(o),l=Object.keys(t).filter((function(e){return-1===s.indexOf(e)}));return r.forEach(l,(function(r){void 0!==t[r]?n[r]=t[r]:void 0!==e[r]&&(n[r]=e[r])})),n}},TF8W:function(e,t,n){(e.exports=n("I1BE")(!1)).push([e.i,".mobile-header[data-v-43ce1cd0] {\n padding: 10px 0;\n text-align: center;\n background: white;\n position: -webkit-sticky;\n position: sticky;\n display: none;\n z-index: 6;\n top: 0;\n}\n.mobile-header > div[data-v-43ce1cd0] {\n flex-grow: 1;\n align-self: center;\n white-space: nowrap;\n}\n.mobile-header .go-back[data-v-43ce1cd0] {\n text-align: left;\n}\n.mobile-header .location-name[data-v-43ce1cd0] {\n line-height: 1;\n text-align: center;\n width: 100%;\n vertical-align: middle;\n font-size: 0.9375em;\n color: #1B2539;\n font-weight: 700;\n max-width: 220px;\n overflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n}\n.mobile-header .mobile-menu[data-v-43ce1cd0] {\n text-align: right;\n}\n.mobile-header .icon[data-v-43ce1cd0] {\n vertical-align: middle;\n margin-top: -4px;\n}\n@media only screen and (max-width: 690px) {\n.mobile-header[data-v-43ce1cd0] {\n display: flex;\n margin-bottom: 15px;\n}\n}\n@media (prefers-color-scheme: dark) {\n.mobile-header[data-v-43ce1cd0] {\n background: #131414;\n}\n.mobile-header .location-name[data-v-43ce1cd0] {\n color: #bec6cf;\n}\n}\n",""])},TQwO:function(e,t,n){(e.exports=n("I1BE")(!1)).push([e.i,".mobile-navigation[data-v-22699b25] {\n width: 100%;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 99;\n}\n.mobile-navigation .mobile-menu-label[data-v-22699b25] {\n margin-top: 30px;\n margin-bottom: 5px;\n font-size: 0.6875em;\n color: rgba(27, 37, 57, 0.7);\n display: block;\n}\n.mobile-navigation .mobile-menu-label[data-v-22699b25]:first-child {\n margin-top: 0;\n}\n@media (prefers-color-scheme: dark) {\n.mobile-navigation .mobile-menu-label[data-v-22699b25] {\n color: #7d858c;\n}\n}\n",""])},Tnpf:function(e,t,n){(t=e.exports=n("I1BE")(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;800;900&display=swap);",""]),t.push([e.i,"[v-cloak],\n[v-cloak] > * {\n display: none;\n}\n* {\n outline: 0;\n margin: 0;\n padding: 0;\n font-family: 'Nunito', sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n box-sizing: border-box;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n font-size: 16px;\n text-decoration: none;\n color: #1B2539;\n}\n#auth {\n width: 100%;\n height: 100%;\n}\n#vuefilemanager {\n position: absolute;\n width: 100%;\n height: 100%;\n overflow-y: auto;\n scroll-behavior: smooth;\n}\n@media only screen and (max-width: 690px) {\n.is-scaled-down {\n transform: scale(0.95);\n}\n}\n@media (prefers-color-scheme: dark) {\n* {\n color: #bec6cf;\n}\nbody, html {\n background: #131414;\n color: #bec6cf;\n}\nbody img, html img {\n opacity: .95;\n}\n}\n",""])},URgk:function(e,t,n){(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,i=Function.prototype.apply;function a(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new a(i.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new a(i.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},a.prototype.unref=a.prototype.ref=function(){},a.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},n("YBdB"),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n("yLpj"))},UnBK:function(e,t,n){"use strict";var r=n("xTJ+"),i=n("xAGQ"),a=n("Lmem"),o=n("JEQr");function s(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return s(e),e.headers=e.headers||{},e.data=i(e.data,e.headers,e.transformRequest),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),r.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||o.adapter)(e).then((function(t){return s(e),t.data=i(t.data,t.headers,e.transformResponse),t}),(function(t){return a(t)||(s(e),t&&t.response&&(t.response.data=i(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))}},WA68:function(e,t,n){(e.exports=n("I1BE")(!1)).push([e.i,".fade-enter-active[data-v-36c367fe],\n.fade-leave-active[data-v-36c367fe] {\n transition: 0.3s ease;\n}\n.fade-enter[data-v-36c367fe],\n.fade-leave-to[data-v-36c367fe] {\n opacity: 0;\n transform: translateX(100%);\n}\n.toastr-content-wrapper[data-v-36c367fe] {\n display: flex;\n align-items: center;\n padding: 15px;\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.7);\n}\n.progressbar[data-v-36c367fe] {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n opacity: 0.35;\n}\n.progressbar span[data-v-36c367fe] {\n width: 0;\n height: 3px;\n display: block;\n background: #00BC7E;\n -webkit-animation: progressbar-data-v-36c367fe 5s linear;\n animation: progressbar-data-v-36c367fe 5s linear;\n}\n@-webkit-keyframes progressbar-data-v-36c367fe {\n0% {\n width: 0;\n}\n100% {\n width: 100%;\n}\n}\n@keyframes progressbar-data-v-36c367fe {\n0% {\n width: 0;\n}\n100% {\n width: 100%;\n}\n}\n.toastr-item[data-v-36c367fe] {\n max-width: 320px;\n margin-bottom: 20px;\n position: relative;\n overflow: hidden;\n display: block;\n border-radius: 8px;\n}\n.toastr-item .toastr-description[data-v-36c367fe] {\n font-size: 0.9375em;\n font-weight: bold;\n}\n.toastr-item .toastr-icon[data-v-36c367fe] {\n height: 42px;\n width: 42px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n font-size: 20px;\n margin-right: 10px;\n}\n.toastr-item.success[data-v-36c367fe] {\n background: #ECF7F2;\n}\n.toastr-item.success polyline[data-v-36c367fe] {\n stroke: #00BC7E;\n}\n.toastr-item.success .toastr-description[data-v-36c367fe] {\n color: #00BC7E;\n}\n.toastr-item.danger[data-v-36c367fe] {\n background: rgba(253, 57, 122, 0.1);\n}\n.toastr-item.danger polyline[data-v-36c367fe] {\n stroke: #fd397a;\n}\n.toastr-item.danger .toastr-description[data-v-36c367fe] {\n color: #fd397a;\n}\n@media only screen and (max-width: 690px) {\n.toastr-item[data-v-36c367fe] {\n margin-bottom: 0;\n margin-top: 20px;\n max-width: 100%;\n}\n.fade-enter[data-v-36c367fe],\n .fade-leave-to[data-v-36c367fe] {\n opacity: 0;\n transform: translateY(100%);\n}\n}\n@media (prefers-color-scheme: dark) {\n.toastr-item.success[data-v-36c367fe], .toastr-item.danger[data-v-36c367fe] {\n background: #1e2024;\n}\n}\n",""])},XuX8:function(e,t,n){e.exports=n("INkZ")},Y78d:function(e){e.exports=JSON.parse("{}")},YBdB:function(e,t,n){(function(e,t){!function(e,n){"use strict";if(!e.setImmediate){var r,i,a,o,s,l=1,c={},u=!1,f=e.document,p=Object.getPrototypeOf&&Object.getPrototypeOf(e);p=p&&p.setTimeout?p:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick((function(){h(e)}))}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?e.MessageChannel?((a=new MessageChannel).port1.onmessage=function(e){h(e.data)},r=function(e){a.port2.postMessage(e)}):f&&"onreadystatechange"in f.createElement("script")?(i=f.documentElement,r=function(e){var t=f.createElement("script");t.onreadystatechange=function(){h(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):r=function(e){setTimeout(h,0,e)}:(o="setImmediate$"+Math.random()+"$",s=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(o)&&h(+t.data.slice(o.length))},e.addEventListener?e.addEventListener("message",s,!1):e.attachEvent("onmessage",s),r=function(t){e.postMessage(o+t,"*")}),p.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;n<t.length;n++)t[n]=arguments[n+1];var i={callback:e,args:t};return c[l]=i,r(l),l++},p.clearImmediate=d}function d(e){delete c[e]}function h(e){if(u)setTimeout(h,0,e);else{var t=c[e];if(t){u=!0;try{!function(e){var t=e.callback,n=e.args;switch(n.length){case 0:t();break;case 1:t(n[0]);break;case 2:t(n[0],n[1]);break;case 3:t(n[0],n[1],n[2]);break;default:t.apply(void 0,n)}}(t)}finally{d(e),u=!1}}}}}("undefined"==typeof self?void 0===e?this:e:self)}).call(this,n("yLpj"),n("8oxB"))},YuTi:function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},Z0Lu:function(e,t,n){var r=n("cazY");"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n("aET+")(r,i);r.locals&&(e.exports=r.locals)},ZoqK:function(e,t,n){"use strict";var r=n("AXyT");n.n(r).a},"aET+":function(e,t,n){var r,i,a={},o=(r=function(){return window&&document&&document.all&&!window.atob},function(){return void 0===i&&(i=r.apply(this,arguments)),i}),s=function(e,t){return t?t.querySelector(e):document.querySelector(e)},l=function(e){var t={};return function(e,n){if("function"==typeof e)return e();if(void 0===t[e]){var r=s.call(this,e,n);if(window.HTMLIFrameElement&&r instanceof window.HTMLIFrameElement)try{r=r.contentDocument.head}catch(e){r=null}t[e]=r}return t[e]}}(),c=null,u=0,f=[],p=n("9tPo");function d(e,t){for(var n=0;n<e.length;n++){var r=e[n],i=a[r.id];if(i){i.refs++;for(var o=0;o<i.parts.length;o++)i.parts[o](r.parts[o]);for(;o<r.parts.length;o++)i.parts.push(b(r.parts[o],t))}else{var s=[];for(o=0;o<r.parts.length;o++)s.push(b(r.parts[o],t));a[r.id]={id:r.id,refs:1,parts:s}}}}function h(e,t){for(var n=[],r={},i=0;i<e.length;i++){var a=e[i],o=t.base?a[0]+t.base:a[0],s={css:a[1],media:a[2],sourceMap:a[3]};r[o]?r[o].parts.push(s):n.push(r[o]={id:o,parts:[s]})}return n}function v(e,t){var n=l(e.insertInto);if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.");var r=f[f.length-1];if("top"===e.insertAt)r?r.nextSibling?n.insertBefore(t,r.nextSibling):n.appendChild(t):n.insertBefore(t,n.firstChild),f.push(t);else if("bottom"===e.insertAt)n.appendChild(t);else{if("object"!=typeof e.insertAt||!e.insertAt.before)throw new Error("[Style Loader]\n\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\n Must be 'top', 'bottom', or Object.\n (https://github.com/webpack-contrib/style-loader#insertat)\n");var i=l(e.insertAt.before,n);n.insertBefore(t,i)}}function m(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e);var t=f.indexOf(e);t>=0&&f.splice(t,1)}function g(e){var t=document.createElement("style");if(void 0===e.attrs.type&&(e.attrs.type="text/css"),void 0===e.attrs.nonce){var r=function(){0;return n.nc}();r&&(e.attrs.nonce=r)}return y(t,e.attrs),v(e,t),t}function y(e,t){Object.keys(t).forEach((function(n){e.setAttribute(n,t[n])}))}function b(e,t){var n,r,i,a;if(t.transform&&e.css){if(!(a="function"==typeof t.transform?t.transform(e.css):t.transform.default(e.css)))return function(){};e.css=a}if(t.singleton){var o=u++;n=c||(c=g(t)),r=x.bind(null,n,o,!1),i=x.bind(null,n,o,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=function(e){var t=document.createElement("link");return void 0===e.attrs.type&&(e.attrs.type="text/css"),e.attrs.rel="stylesheet",y(t,e.attrs),v(e,t),t}(t),r=S.bind(null,n,t),i=function(){m(n),n.href&&URL.revokeObjectURL(n.href)}):(n=g(t),r=k.bind(null,n),i=function(){m(n)});return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else i()}}e.exports=function(e,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(t=t||{}).attrs="object"==typeof t.attrs?t.attrs:{},t.singleton||"boolean"==typeof t.singleton||(t.singleton=o()),t.insertInto||(t.insertInto="head"),t.insertAt||(t.insertAt="bottom");var n=h(e,t);return d(n,t),function(e){for(var r=[],i=0;i<n.length;i++){var o=n[i];(s=a[o.id]).refs--,r.push(s)}e&&d(h(e,t),t);for(i=0;i<r.length;i++){var s;if(0===(s=r[i]).refs){for(var l=0;l<s.parts.length;l++)s.parts[l]();delete a[s.id]}}}};var _,w=(_=[],function(e,t){return _[e]=t,_.filter(Boolean).join("\n")});function x(e,t,n,r){var i=n?"":r.css;if(e.styleSheet)e.styleSheet.cssText=w(t,i);else{var a=document.createTextNode(i),o=e.childNodes;o[t]&&e.removeChild(o[t]),o.length?e.insertBefore(a,o[t]):e.appendChild(a)}}function k(e,t){var n=t.css,r=t.media;if(r&&e.setAttribute("media",r),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}function S(e,t,n){var r=n.css,i=n.sourceMap,a=void 0===t.convertToAbsoluteUrls&&i;(t.convertToAbsoluteUrls||a)&&(r=p(r)),i&&(r+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+" */");var o=new Blob([r],{type:"text/css"}),s=e.href;e.href=URL.createObjectURL(o),s&&URL.revokeObjectURL(s)}},"c+VV":function(e,t,n){"use strict";var r=n("Nv84"),i=n("xCqy"),a={name:"AlertPopup",components:{ButtonBase:r.a},data:function(){return{isVisibleWrapper:!1,buttonStyle:void 0,message:void 0,title:void 0,button:void 0,emoji:void 0}},methods:{closePopup:function(){i.a.$emit("popup:close")}},mounted:function(){var e=this;i.a.$on("alert:open",(function(t){e.isVisibleWrapper=!0,e.title=t.title,e.message=t.message,e.button=e.$t("alerts.error_confirm"),e.emoji="😢😢😢",e.buttonStyle="danger-solid",t.emoji&&(e.emoji=t.emoji),t.buttonStyle&&(e.buttonStyle=t.buttonStyle),t.button&&(e.button=t.button)})),i.a.$on("success:open",(function(t){e.isVisibleWrapper=!0,e.title=t.title,e.message=t.message,e.button=e.$t("alerts.success_confirm"),e.emoji="🥳🥳🥳",e.buttonStyle="theme",t.emoji&&(e.emoji=t.emoji)})),i.a.$on("popup:close",(function(){e.isVisibleWrapper=!1}))}},o=(n("9a33"),n("KHd+")),s=Object(o.a)(a,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("transition",{attrs:{name:"popup"}},[e.isVisibleWrapper?n("div",{staticClass:"popup",on:{click:function(t){return t.target!==t.currentTarget?null:e.closePopup(t)}}},[n("div",{staticClass:"popup-wrapper"},[n("div",{staticClass:"popup-image"},[n("span",{staticClass:"emoji"},[e._v(e._s(e.emoji))])]),e._v(" "),n("div",{staticClass:"popup-content"},[e.title?n("h1",{staticClass:"title"},[e._v(e._s(e.title))]):e._e(),e._v(" "),e.message?n("p",{staticClass:"message"},[e._v(e._s(e.message))]):e._e()]),e._v(" "),n("div",{staticClass:"popup-actions"},[n("ButtonBase",{staticClass:"action-confirm",attrs:{"button-style":e.buttonStyle},nativeOn:{click:function(t){return e.closePopup(t)}}},[e._v(e._s(e.button)+"\n ")])],1)])]):e._e()])}),[],!1,null,"f0aa8eb0",null);t.a=s.exports},cazY:function(e,t,n){(e.exports=n("I1BE")(!1)).push([e.i,".cookie-wrapper[data-v-87cdc1f8] {\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 10px 20px -10px rgba(25, 54, 60, 0.1);\n background: white;\n position: fixed;\n bottom: 0;\n left: 115px;\n max-width: 225px;\n z-index: 3;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n.cookie-wrapper .close-icon[data-v-87cdc1f8] {\n position: absolute;\n right: -4px;\n top: -4px;\n cursor: pointer;\n padding: 12px;\n}\n.cookie-wrapper .close-icon line[data-v-87cdc1f8] {\n stroke: rgba(27, 37, 57, 0.7);\n}\n.cookie-wrapper p[data-v-87cdc1f8] {\n font-size: 12px;\n line-height: 1.6;\n}\n.cookie-wrapper p a[data-v-87cdc1f8] {\n font-size: 12px;\n color: #00BC7E;\n}\n@media only screen and (max-width: 690px) {\n.cookie-wrapper[data-v-87cdc1f8] {\n padding: 10px 15px;\n left: 0;\n right: 0;\n max-width: 100%;\n}\n.cookie-wrapper p[data-v-87cdc1f8] {\n max-width: 300px;\n}\n}\n@media (prefers-color-scheme: dark) {\n.cookie-wrapper[data-v-87cdc1f8] {\n background: #1e2024;\n}\n.cookie-wrapper p[data-v-87cdc1f8] {\n color: #bec6cf;\n}\n.cookie-wrapper .close-icon line[data-v-87cdc1f8] {\n stroke: #bec6cf;\n}\n}\n",""])},eK1A:function(e,t,n){var r=n("olvS");"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n("aET+")(r,i);r.locals&&(e.exports=r.locals)},endd:function(e,t,n){"use strict";function r(e){this.message=e}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,e.exports=r},eqyj:function(e,t,n){"use strict";var r=n("xTJ+");e.exports=r.isStandardBrowserEnv()?{write:function(e,t,n,i,a,o){var s=[];s.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),r.isString(i)&&s.push("path="+i),r.isString(a)&&s.push("domain="+a),!0===o&&s.push("secure"),document.cookie=s.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},g7np:function(e,t,n){"use strict";var r=n("2SVd"),i=n("5oMp");e.exports=function(e,t){return e&&!r(t)?i(e,t):t}},"ga/a":function(e,t,n){var r=n("TQwO");"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n("aET+")(r,i);r.locals&&(e.exports=r.locals)},"jfS+":function(e,t,n){"use strict";var r=n("endd");function i(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var n=this;e((function(e){n.reason||(n.reason=new r(e),t(n.reason))}))}i.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},i.source=function(){var e;return{token:new i((function(t){e=t})),cancel:e}},e.exports=i},kXuv:function(e,t,n){(e.exports=n("I1BE")(!1)).push([e.i,".button-base[data-v-401c7942] {\n font-size: 0.9375em;\n font-weight: 700;\n cursor: pointer;\n transition: 0.15s all ease;\n border-radius: 8px;\n border: 0;\n padding: 10px 28px;\n white-space: nowrap;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.button-base .icon[data-v-401c7942] {\n line-height: 1;\n margin-right: 10px;\n}\n.button-base[data-v-401c7942]:active {\n transform: scale(0.95);\n}\n.button-base.theme-solid .content[data-v-401c7942] {\n color: white;\n}\n.button-base.danger[data-v-401c7942] {\n background: rgba(253, 57, 122, 0.1);\n}\n.button-base.danger .content[data-v-401c7942] {\n color: #fd397a;\n}\n.button-base.danger polyline[data-v-401c7942], .button-base.danger path[data-v-401c7942] {\n stroke: #fd397a;\n}\n.button-base.danger-solid[data-v-401c7942] {\n background: #fd397a;\n}\n.button-base.danger-solid .content[data-v-401c7942] {\n color: white;\n}\n.button-base.danger-solid polyline[data-v-401c7942], .button-base.danger-solid path[data-v-401c7942] {\n stroke: white;\n}\n.button-base.secondary[data-v-401c7942] {\n background: #f4f5f6;\n}\n.button-base.secondary .content[data-v-401c7942] {\n color: #1B2539;\n}\n.button-base.secondary polyline[data-v-401c7942], .button-base.secondary path[data-v-401c7942] {\n stroke: #1B2539;\n}\n.sync-alt[data-v-401c7942] {\n -webkit-animation: spin-data-v-401c7942 1s linear infinite;\n animation: spin-data-v-401c7942 1s linear infinite;\n}\n@-webkit-keyframes spin-data-v-401c7942 {\n0% {\n transform: rotate(0);\n}\n100% {\n transform: rotate(360deg);\n}\n}\n@keyframes spin-data-v-401c7942 {\n0% {\n transform: rotate(0);\n}\n100% {\n transform: rotate(360deg);\n}\n}\n@media (prefers-color-scheme: dark) {\n.button-base.secondary[data-v-401c7942] {\n background: #1e2024;\n}\n.button-base.secondary .content[data-v-401c7942] {\n color: #bec6cf;\n}\n.button-base.secondary polyline[data-v-401c7942], .button-base.secondary path[data-v-401c7942] {\n color: inherit;\n}\n.popup-wrapper .button-base.secondary[data-v-401c7942] {\n background: #25272c;\n}\n}\n",""])},kvrn:function(e,t){var n=/^(attrs|props|on|nativeOn|class|style|hook)$/;function r(e,t){return function(){e&&e.apply(this,arguments),t&&t.apply(this,arguments)}}e.exports=function(e){return e.reduce((function(e,t){var i,a,o,s,l;for(o in t)if(i=e[o],a=t[o],i&&n.test(o))if("class"===o&&("string"==typeof i&&(l=i,e[o]=i={},i[l]=!0),"string"==typeof a&&(l=a,t[o]=a={},a[l]=!0)),"on"===o||"nativeOn"===o||"hook"===o)for(s in a)i[s]=r(i[s],a[s]);else if(Array.isArray(i))e[o]=i.concat(a);else if(Array.isArray(a))e[o]=[i].concat(a);else for(s in a)i[s]=a[s];else e[o]=t[o];return e}),{})}},ls82:function(e,t,n){var r=function(e){"use strict";var t=Object.prototype,n=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},i=r.iterator||"@@iterator",a=r.asyncIterator||"@@asyncIterator",o=r.toStringTag||"@@toStringTag";function s(e,t,n,r){var i=t&&t.prototype instanceof u?t:u,a=Object.create(i.prototype),o=new x(r||[]);return a._invoke=function(e,t,n){var r="suspendedStart";return function(i,a){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===i)throw a;return S()}for(n.method=i,n.arg=a;;){var o=n.delegate;if(o){var s=b(o,n);if(s){if(s===c)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var u=l(e,t,n);if("normal"===u.type){if(r=n.done?"completed":"suspendedYield",u.arg===c)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(r="completed",n.method="throw",n.arg=u.arg)}}}(e,n,o),a}function l(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=s;var c={};function u(){}function f(){}function p(){}var d={};d[i]=function(){return this};var h=Object.getPrototypeOf,v=h&&h(h(k([])));v&&v!==t&&n.call(v,i)&&(d=v);var m=p.prototype=u.prototype=Object.create(d);function g(e){["next","throw","return"].forEach((function(t){e[t]=function(e){return this._invoke(t,e)}}))}function y(e,t){var r;this._invoke=function(i,a){function o(){return new t((function(r,o){!function r(i,a,o,s){var c=l(e[i],e,a);if("throw"!==c.type){var u=c.arg,f=u.value;return f&&"object"==typeof f&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){r("next",e,o,s)}),(function(e){r("throw",e,o,s)})):t.resolve(f).then((function(e){u.value=e,o(u)}),(function(e){return r("throw",e,o,s)}))}s(c.arg)}(i,a,r,o)}))}return r=r?r.then(o,o):o()}}function b(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,b(e,t),"throw"===t.method))return c;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return c}var r=l(n,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,c;var i=r.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,c):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,c)}function _(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function w(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function x(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(_,this),this.reset(!0)}function k(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return a.next=a}}return{next:S}}function S(){return{value:void 0,done:!0}}return f.prototype=m.constructor=p,p.constructor=f,p[o]=f.displayName="GeneratorFunction",e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===f||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,o in e||(e[o]="GeneratorFunction")),e.prototype=Object.create(m),e},e.awrap=function(e){return{__await:e}},g(y.prototype),y.prototype[a]=function(){return this},e.AsyncIterator=y,e.async=function(t,n,r,i,a){void 0===a&&(a=Promise);var o=new y(s(t,n,r,i),a);return e.isGeneratorFunction(n)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},g(m),m[o]="Generator",m[i]=function(){return this},m.toString=function(){return"[object Generator]"},e.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){for(;t.length;){var r=t.pop();if(r in e)return n.value=r,n.done=!1,n}return n.done=!0,n}},e.values=k,x.prototype={constructor:x,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(w),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return o.type="throw",o.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],o=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var s=n.call(a,"catchLoc"),l=n.call(a,"finallyLoc");if(s&&l){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(s){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var a=i;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var o=a?a.completion:{};return o.type=e,o.arg=t,a?(this.method="next",this.next=a.finallyLoc,c):this.complete(o)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),c},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),w(n),c}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;w(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:k(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),c}},e}(e.exports);try{regeneratorRuntime=r}catch(e){Function("r","regeneratorRuntime = r")(r)}},lx7M:function(e,t,n){var r=n("ER3f");"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n("aET+")(r,i);r.locals&&(e.exports=r.locals)},mPSV:function(e,t,n){(e.exports=n("I1BE")(!1)).push([e.i,".popup[data-v-f0aa8eb0] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 20;\n overflow: auto;\n height: 100%;\n}\n.popup-wrapper[data-v-f0aa8eb0] {\n z-index: 12;\n position: absolute;\n left: 0;\n right: 0;\n max-width: 480px;\n top: 50%;\n transform: translateY(-50%) scale(1);\n margin: 0 auto;\n padding: 20px;\n box-shadow: 0 2px 40px rgba(26, 38, 74, 0.12);\n border-radius: 8px;\n text-align: center;\n background: white;\n}\n.popup-image[data-v-f0aa8eb0] {\n margin-bottom: 30px;\n}\n.popup-image .emoji[data-v-f0aa8eb0] {\n font-size: 3.5em;\n line-height: 1;\n}\n.popup-content .title[data-v-f0aa8eb0] {\n font-size: 1.375em;\n text-transform: uppercase;\n font-weight: 800;\n color: #1B2539;\n}\n.popup-content .message[data-v-f0aa8eb0] {\n font-size: 1em;\n color: #333;\n margin-top: 5px;\n}\n.popup-actions[data-v-f0aa8eb0] {\n margin-top: 30px;\n}\n.popup-actions .action-confirm[data-v-f0aa8eb0] {\n width: 100%;\n}\n@media only screen and (max-width: 690px) {\n.popup-wrapper[data-v-f0aa8eb0] {\n padding: 40px 20px 20px;\n left: 15px;\n right: 15px;\n}\n}\n@media (prefers-color-scheme: dark) {\n.popup-wrapper[data-v-f0aa8eb0] {\n background: #1e2024;\n}\n.popup-content .title[data-v-f0aa8eb0] {\n color: #bec6cf;\n}\n.popup-content .message[data-v-f0aa8eb0] {\n color: #7d858c;\n}\n}\n.popup-enter-active[data-v-f0aa8eb0] {\n -webkit-animation: popup-in-data-v-f0aa8eb0 0.35s 0.15s ease both;\n animation: popup-in-data-v-f0aa8eb0 0.35s 0.15s ease both;\n}\n.popup-leave-active[data-v-f0aa8eb0] {\n animation: popup-in-data-v-f0aa8eb0 0.15s ease reverse;\n}\n@-webkit-keyframes popup-in-data-v-f0aa8eb0 {\n0% {\n opacity: 0;\n transform: scale(0.7);\n}\n100% {\n opacity: 1;\n transform: scale(1);\n}\n}\n@keyframes popup-in-data-v-f0aa8eb0 {\n0% {\n opacity: 0;\n transform: scale(0.7);\n}\n100% {\n opacity: 1;\n transform: scale(1);\n}\n}\n",""])},o0o1:function(e,t,n){e.exports=n("ls82")},oXPQ:function(e,t,n){"use strict";var r=n("+Cd2");n.n(r).a},olvS:function(e,t,n){(e.exports=n("I1BE")(!1)).push([e.i,".vignette[data-v-602e55a4] {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n z-index: 18;\n background: rgba(9, 8, 12, 0.35);\n}\n@media (prefers-color-scheme: dark) {\n.vignette[data-v-602e55a4] {\n background: rgba(22, 23, 27, 0.7);\n}\n}\n.vignette-enter-active[data-v-602e55a4] {\n -webkit-animation: vignette-in-data-v-602e55a4 0.35s ease;\n animation: vignette-in-data-v-602e55a4 0.35s ease;\n}\n.vignette-leave-active[data-v-602e55a4] {\n animation: vignette-in-data-v-602e55a4 0.15s ease reverse;\n}\n@-webkit-keyframes vignette-in-data-v-602e55a4 {\n0% {\n opacity: 0;\n}\n100% {\n opacity: 1;\n}\n}\n@keyframes vignette-in-data-v-602e55a4 {\n0% {\n opacity: 0;\n}\n100% {\n opacity: 1;\n}\n}\n",""])},pyCd:function(e,t){},qls5:function(e,t,n){"use strict";var r=n("5W3I");n.n(r).a},rT2p:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return g}));var r=n("7O5W"),i="undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{};var a=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(e){!function(t){var n=function(e,t,r){if(!l(t)||u(t)||f(t)||p(t)||s(t))return t;var i,a=0,o=0;if(c(t))for(i=[],o=t.length;a<o;a++)i.push(n(e,t[a],r));else for(var d in i={},t)Object.prototype.hasOwnProperty.call(t,d)&&(i[e(d,r)]=n(e,t[d],r));return i},r=function(e){return d(e)?e:(e=e.replace(/[\-_\s]+(.)?/g,(function(e,t){return t?t.toUpperCase():""}))).substr(0,1).toLowerCase()+e.substr(1)},i=function(e){var t=r(e);return t.substr(0,1).toUpperCase()+t.substr(1)},a=function(e,t){return function(e,t){var n=(t=t||{}).separator||"_",r=t.split||/(?=[A-Z])/;return e.split(r).join(n)}(e,t).toLowerCase()},o=Object.prototype.toString,s=function(e){return"function"==typeof e},l=function(e){return e===Object(e)},c=function(e){return"[object Array]"==o.call(e)},u=function(e){return"[object Date]"==o.call(e)},f=function(e){return"[object RegExp]"==o.call(e)},p=function(e){return"[object Boolean]"==o.call(e)},d=function(e){return(e-=0)==e},h=function(e,t){var n=t&&"process"in t?t.process:t;return"function"!=typeof n?e:function(t,r){return n(t,e,r)}},v={camelize:r,decamelize:a,pascalize:i,depascalize:a,camelizeKeys:function(e,t){return n(h(r,t),e)},decamelizeKeys:function(e,t){return n(h(a,t),e,t)},pascalizeKeys:function(e,t){return n(h(i,t),e)},depascalizeKeys:function(){return this.decamelizeKeys.apply(this,arguments)}};e.exports?e.exports=v:t.humps=v}(i)})),o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},l=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},c=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n};function u(e){return e.split(";").map((function(e){return e.trim()})).filter((function(e){return e})).reduce((function(e,t){var n=t.indexOf(":"),r=a.camelize(t.slice(0,n)),i=t.slice(n+1).trim();return e[r]=i,e}),{})}function f(e){return e.split(/\s+/).reduce((function(e,t){return e[t]=!0,e}),{})}function p(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.reduce((function(e,t){return Array.isArray(t)?e=e.concat(t):e.push(t),e}),[])}function d(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=(t.children||[]).map(d.bind(null,e)),a=Object.keys(t.attributes||{}).reduce((function(e,n){var r=t.attributes[n];switch(n){case"class":e.class=f(r);break;case"style":e.style=u(r);break;default:e.attrs[n]=r}return e}),{class:{},style:{},attrs:{}}),o=r.class,s=void 0===o?{}:o,h=r.style,v=void 0===h?{}:h,m=r.attrs,g=void 0===m?{}:m,y=c(r,["class","style","attrs"]);return"string"==typeof t?t:e(t.tag,l({class:p(a.class,s),style:l({},a.style,v),attrs:l({},a.attrs,g)},y,{props:n}),i)}var h=!1;try{h=!0}catch(e){}function v(e,t){return Array.isArray(t)&&t.length>0||!Array.isArray(t)&&t?s({},e,t):{}}function m(e){return null===e?null:"object"===(void 0===e?"undefined":o(e))&&e.prefix&&e.iconName?e:Array.isArray(e)&&2===e.length?{prefix:e[0],iconName:e[1]}:"string"==typeof e?{prefix:"fas",iconName:e}:void 0}var g={name:"FontAwesomeIcon",functional:!0,props:{border:{type:Boolean,default:!1},fixedWidth:{type:Boolean,default:!1},flip:{type:String,default:null,validator:function(e){return["horizontal","vertical","both"].indexOf(e)>-1}},icon:{type:[Object,Array,String],required:!0},mask:{type:[Object,Array,String],default:null},listItem:{type:Boolean,default:!1},pull:{type:String,default:null,validator:function(e){return["right","left"].indexOf(e)>-1}},pulse:{type:Boolean,default:!1},rotation:{type:[String,Number],default:null,validator:function(e){return[90,180,270].indexOf(parseInt(e,10))>-1}},swapOpacity:{type:Boolean,default:!1},size:{type:String,default:null,validator:function(e){return["lg","xs","sm","1x","2x","3x","4x","5x","6x","7x","8x","9x","10x"].indexOf(e)>-1}},spin:{type:Boolean,default:!1},transform:{type:[String,Object],default:null},symbol:{type:[Boolean,String],default:!1},title:{type:String,default:null},inverse:{type:Boolean,default:!1}},render:function(e,t){var n=t.props,i=n.icon,a=n.mask,o=n.symbol,c=n.title,u=m(i),f=v("classes",function(e){var t,n=(t={"fa-spin":e.spin,"fa-pulse":e.pulse,"fa-fw":e.fixedWidth,"fa-border":e.border,"fa-li":e.listItem,"fa-inverse":e.inverse,"fa-flip-horizontal":"horizontal"===e.flip||"both"===e.flip,"fa-flip-vertical":"vertical"===e.flip||"both"===e.flip},s(t,"fa-"+e.size,null!==e.size),s(t,"fa-rotate-"+e.rotation,null!==e.rotation),s(t,"fa-pull-"+e.pull,null!==e.pull),s(t,"fa-swap-opacity",e.swapOpacity),t);return Object.keys(n).map((function(e){return n[e]?e:null})).filter((function(e){return e}))}(n)),p=v("transform","string"==typeof n.transform?r.d.transform(n.transform):n.transform),g=v("mask",m(a)),y=Object(r.b)(u,l({},f,p,g,{symbol:o,title:c}));if(!y)return function(){var e;!h&&console&&"function"==typeof console.error&&(e=console).error.apply(e,arguments)}("Could not find one or more icon(s)",u,g);var b=y.abstract;return d.bind(null,e)(b[0],{},t.data)}};Boolean,Boolean}).call(this,n("yLpj"))},tQ2B:function(e,t,n){"use strict";var r=n("xTJ+"),i=n("Rn+g"),a=n("MLWZ"),o=n("g7np"),s=n("w0Vi"),l=n("OTTw"),c=n("LYNF");e.exports=function(e){return new Promise((function(t,u){var f=e.data,p=e.headers;r.isFormData(f)&&delete p["Content-Type"];var d=new XMLHttpRequest;if(e.auth){var h=e.auth.username||"",v=e.auth.password||"";p.Authorization="Basic "+btoa(h+":"+v)}var m=o(e.baseURL,e.url);if(d.open(e.method.toUpperCase(),a(m,e.params,e.paramsSerializer),!0),d.timeout=e.timeout,d.onreadystatechange=function(){if(d&&4===d.readyState&&(0!==d.status||d.responseURL&&0===d.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in d?s(d.getAllResponseHeaders()):null,r={data:e.responseType&&"text"!==e.responseType?d.response:d.responseText,status:d.status,statusText:d.statusText,headers:n,config:e,request:d};i(t,u,r),d=null}},d.onabort=function(){d&&(u(c("Request aborted",e,"ECONNABORTED",d)),d=null)},d.onerror=function(){u(c("Network Error",e,null,d)),d=null},d.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),u(c(t,e,"ECONNABORTED",d)),d=null},r.isStandardBrowserEnv()){var g=n("eqyj"),y=(e.withCredentials||l(m))&&e.xsrfCookieName?g.read(e.xsrfCookieName):void 0;y&&(p[e.xsrfHeaderName]=y)}if("setRequestHeader"in d&&r.forEach(p,(function(e,t){void 0===f&&"content-type"===t.toLowerCase()?delete p[t]:d.setRequestHeader(t,e)})),r.isUndefined(e.withCredentials)||(d.withCredentials=!!e.withCredentials),e.responseType)try{d.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&d.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&d.upload&&d.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){d&&(d.abort(),u(e),d=null)})),void 0===f&&(f=null),d.send(f)}))}},vDqi:function(e,t,n){e.exports=n("zuR4")},w0Vi:function(e,t,n){"use strict";var r=n("xTJ+"),i=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,a,o={};return e?(r.forEach(e.split("\n"),(function(e){if(a=e.indexOf(":"),t=r.trim(e.substr(0,a)).toLowerCase(),n=r.trim(e.substr(a+1)),t){if(o[t]&&i.indexOf(t)>=0)return;o[t]="set-cookie"===t?(o[t]?o[t]:[]).concat([n]):o[t]?o[t]+", "+n:n}})),o):o}},xAGQ:function(e,t,n){"use strict";var r=n("xTJ+");e.exports=function(e,t,n){return r.forEach(n,(function(n){e=n(e,t)})),e}},xCqy:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n("XuX8"),i=new(n.n(r).a)},"xTJ+":function(e,t,n){"use strict";var r=n("HSsa"),i=Object.prototype.toString;function a(e){return"[object Array]"===i.call(e)}function o(e){return void 0===e}function s(e){return null!==e&&"object"==typeof e}function l(e){return"[object Function]"===i.call(e)}function c(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),a(e))for(var n=0,r=e.length;n<r;n++)t.call(null,e[n],n,e);else for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.call(null,e[i],i,e)}e.exports={isArray:a,isArrayBuffer:function(e){return"[object ArrayBuffer]"===i.call(e)},isBuffer:function(e){return null!==e&&!o(e)&&null!==e.constructor&&!o(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"undefined"!=typeof FormData&&e instanceof FormData},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:s,isUndefined:o,isDate:function(e){return"[object Date]"===i.call(e)},isFile:function(e){return"[object File]"===i.call(e)},isBlob:function(e){return"[object Blob]"===i.call(e)},isFunction:l,isStream:function(e){return s(e)&&l(e.pipe)},isURLSearchParams:function(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:c,merge:function e(){var t={};function n(n,r){"object"==typeof t[r]&&"object"==typeof n?t[r]=e(t[r],n):t[r]=n}for(var r=0,i=arguments.length;r<i;r++)c(arguments[r],n);return t},deepMerge:function e(){var t={};function n(n,r){"object"==typeof t[r]&&"object"==typeof n?t[r]=e(t[r],n):t[r]="object"==typeof n?e({},n):n}for(var r=0,i=arguments.length;r<i;r++)c(arguments[r],n);return t},extend:function(e,t,n){return c(t,(function(t,i){e[i]=n&&"function"==typeof t?r(t,n):t})),e},trim:function(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}}},y1Jd:function(e){e.exports=JSON.parse("{}")},yK9s:function(e,t,n){"use strict";var r=n("xTJ+");e.exports=function(e,t){r.forEach(e,(function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])}))}},yLpj:function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},zfgF:function(e,t,n){"use strict";var r=n("5ErR");n.n(r).a},zuR4:function(e,t,n){"use strict";var r=n("xTJ+"),i=n("HSsa"),a=n("CgaS"),o=n("SntB");function s(e){var t=new a(e),n=i(a.prototype.request,t);return r.extend(n,a.prototype,t),r.extend(n,t),n}var l=s(n("JEQr"));l.Axios=a,l.create=function(e){return s(o(l.defaults,e))},l.Cancel=n("endd"),l.CancelToken=n("jfS+"),l.isCancel=n("Lmem"),l.all=function(e){return Promise.all(e)},l.spread=n("DfZB"),e.exports=l,e.exports.default=l}});
|
||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvTW9iaWxlL01lbnVJdGVtTGlzdC52dWU/NWZjNyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9PdGhlcnMvVmlnbmV0dGUudnVlP2Q4YjkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvT3RoZXJzL05vdGlmaWNhdGlvbnMvVG9hc3RyV3JhcHBlci52dWU/ZWQwYiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9Nb2JpbGUvTWVudUl0ZW1MaXN0LnZ1ZT8zMzU2Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL01vYmlsZS9NZW51SXRlbUxpc3QudnVlPzJiYWYiLCJ3ZWJwYWNrOi8vL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL01vYmlsZS9NZW51SXRlbUxpc3QudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL01vYmlsZS9NZW51SXRlbUxpc3QudnVlIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc0Fic29sdXRlVVJMLmpzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL090aGVycy9Ob3RpZmljYXRpb25zL1RvYXN0cldyYXBwZXIudnVlPzg2MDMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvT3RoZXJzL05vdGlmaWNhdGlvbnMvVG9hc3RySXRlbS52dWU/NDYzZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9Nb2JpbGUvTW9iaWxlSGVhZGVyLnZ1ZT83MmI4Iiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb21iaW5lVVJMcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZvcnRhd2Vzb21lL2ZvbnRhd2Vzb21lLXN2Zy1jb3JlL2luZGV4LmVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9wcm9jZXNzL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZS1yb3V0ZXIvZGlzdC92dWUtcm91dGVyLmVzbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLWkxOG4vZGlzdC92dWUtaTE4bi5lc20uanMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2kxOG4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL3N0b3JlL21vZHVsZXMvZmlsZUZ1bmN0aW9ucy5qcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvc3RvcmUvbW9kdWxlcy9maWxlQnJvd3Nlci5qcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvc3RvcmUvbW9kdWxlcy91c2VyQXV0aC5qcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvc3RvcmUvbW9kdWxlcy9zaGFyaW5nLmpzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9zdG9yZS9tb2R1bGVzL2FwcC5qcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvc3RvcmUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vL3Jlc291cmNlcy9qcy92aWV3cy9Nb2JpbGUvQWRtaW5Nb2JpbGVNZW51LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvdmlld3MvTW9iaWxlL0FkbWluTW9iaWxlTWVudS52dWU/ODU3YiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvdmlld3MvTW9iaWxlL0FkbWluTW9iaWxlTWVudS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL3ZpZXdzL01vYmlsZS9BZG1pbk1vYmlsZU1lbnUudnVlP2RiZjMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL3ZpZXdzL01vYmlsZS9Vc2VyUHJvZmlsZU1vYmlsZU1lbnUudnVlPzJkNWUiLCJ3ZWJwYWNrOi8vL3Jlc291cmNlcy9qcy92aWV3cy9Nb2JpbGUvVXNlclByb2ZpbGVNb2JpbGVNZW51LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvdmlld3MvTW9iaWxlL1VzZXJQcm9maWxlTW9iaWxlTWVudS52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL3ZpZXdzL01vYmlsZS9Vc2VyUHJvZmlsZU1vYmlsZU1lbnUudnVlP2RhMTciLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL3JvdXRlci5qcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9PdGhlcnMvTm90aWZpY2F0aW9ucy9Ub2FzdHJJdGVtLnZ1ZT83NDIxIiwid2VicGFjazovLy9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9PdGhlcnMvTm90aWZpY2F0aW9ucy9Ub2FzdHJJdGVtLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9PdGhlcnMvTm90aWZpY2F0aW9ucy9Ub2FzdHJXcmFwcGVyLnZ1ZT9kM2NjIiwid2VicGFjazovLy9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9PdGhlcnMvTm90aWZpY2F0aW9ucy9Ub2FzdHJXcmFwcGVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9PdGhlcnMvTm90aWZpY2F0aW9ucy9Ub2FzdHJJdGVtLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9PdGhlcnMvTm90aWZpY2F0aW9ucy9Ub2FzdHJJdGVtLnZ1ZT8xNjA3Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL090aGVycy9Ob3RpZmljYXRpb25zL1RvYXN0cldyYXBwZXIudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL090aGVycy9Ob3RpZmljYXRpb25zL1RvYXN0cldyYXBwZXIudnVlPzBkZTUiLCJ3ZWJwYWNrOi8vL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL090aGVycy9Db29raWVEaXNjbGFpbWVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9PdGhlcnMvQ29va2llRGlzY2xhaW1lci52dWU/M2U5YyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9PdGhlcnMvQ29va2llRGlzY2xhaW1lci52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvT3RoZXJzL0Nvb2tpZURpc2NsYWltZXIudnVlP2JmMzUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL0FwcC52dWU/ZWM1ZCIsIndlYnBhY2s6Ly8vcmVzb3VyY2VzL2pzL0FwcC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL0FwcC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL0FwcC52dWU/MmI4OSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvaGVscGVycy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zL2luZGV4LmVzLmpzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9tYWluLmpzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9ib290c3RyYXAuanMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvRmlsZXNWaWV3L0FsZXJ0LnZ1ZT82ZmIxIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9JbnRlcmNlcHRvck1hbmFnZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9saWIvdXJscy5qcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9GaWxlc1ZpZXcvQnV0dG9uQmFzZS52dWU/YTE2YiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9Nb2JpbGUvTWVudUl0ZW1MaXN0LnZ1ZT82N2JkIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL090aGVycy9WaWduZXR0ZS52dWU/MGVjYiIsIndlYnBhY2s6Ly8vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvT3RoZXJzL1ZpZ25ldHRlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9PdGhlcnMvVmlnbmV0dGUudnVlP2MwMDUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvT3RoZXJzL1ZpZ25ldHRlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9PdGhlcnMvQ29va2llRGlzY2xhaW1lci52dWU/ZWFjNyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Z1ZS1mZWF0aGVyLWljb25zL2Rpc3QvdnVlLWZlYXRoZXItaWNvbnMuZXMuanMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL3ZpZXdzL01vYmlsZS9BZG1pbk1vYmlsZU1lbnUudnVlPzNhZmYiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvTW9iaWxlL01vYmlsZUhlYWRlci52dWU/M2VjZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9Nb2JpbGUvTW9iaWxlSGVhZGVyLnZ1ZT9kYjdjIiwid2VicGFjazovLy9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9Nb2JpbGUvTW9iaWxlSGVhZGVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9Nb2JpbGUvTW9iaWxlSGVhZGVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvQXBwLnZ1ZT82YzUwIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9zcHJlYWQuanMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL3ZpZXdzL01vYmlsZS9Vc2VyUHJvZmlsZU1vYmlsZU1lbnUudnVlPzQwNmYiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2JpbmQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUvZGlzdC92dWUuY29tbW9uLnByb2QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9kZWZhdWx0cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWV4L2Rpc3QvdnVleC5lc20uanMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvT3RoZXJzL05vdGlmaWNhdGlvbnMvVG9hc3RyV3JhcHBlci52dWU/ZjhjMyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvY3JlYXRlRXJyb3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jYW5jZWwvaXNDYW5jZWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9sb2Rhc2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2J1aWxkVVJMLmpzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL0ZpbGVzVmlldy9BbGVydC52dWU/ODFmMiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9GaWxlc1ZpZXcvQnV0dG9uQmFzZS52dWU/MWI1ZiIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9GaWxlc1ZpZXcvQnV0dG9uQmFzZS52dWU/NmQ3YyIsIndlYnBhY2s6Ly8vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvRmlsZXNWaWV3L0J1dHRvbkJhc2UudnVlIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL0ZpbGVzVmlldy9CdXR0b25CYXNlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvZW5oYW5jZUVycm9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc1VSTFNhbWVPcmlnaW4uanMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL0FwcC52dWU/MjAyZCIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvdmlld3MvTW9iaWxlL1VzZXJQcm9maWxlTW9iaWxlTWVudS52dWU/ZTIzMiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvc2V0dGxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9tZXJnZUNvbmZpZy5qcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9Nb2JpbGUvTW9iaWxlSGVhZGVyLnZ1ZT9kMWRmIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy92aWV3cy9Nb2JpbGUvQWRtaW5Nb2JpbGVNZW51LnZ1ZT8wNWEwIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9BcHAudnVlPzE0NGYiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3RpbWVycy1icm93c2VyaWZ5L21haW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL2Rpc3BhdGNoUmVxdWVzdC5qcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9PdGhlcnMvTm90aWZpY2F0aW9ucy9Ub2FzdHJJdGVtLnZ1ZT81ZGY5Iiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92dWUvZGlzdC92dWUuY29tbW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zZXRpbW1lZGlhdGUvc2V0SW1tZWRpYXRlLmpzIiwid2VicGFjazovLy8od2VicGFjaykvYnVpbGRpbi9tb2R1bGUuanMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvT3RoZXJzL0Nvb2tpZURpc2NsYWltZXIudnVlPzVlNjkiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvRmlsZXNWaWV3L0J1dHRvbkJhc2UudnVlP2E5MjkiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzLmpzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL0ZpbGVzVmlldy9BbGVydC52dWU/ODZmMSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9GaWxlc1ZpZXcvQWxlcnQudnVlPzI1ZmQiLCJ3ZWJwYWNrOi8vL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL0ZpbGVzVmlldy9BbGVydC52dWUiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvRmlsZXNWaWV3L0FsZXJ0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9PdGhlcnMvQ29va2llRGlzY2xhaW1lci52dWU/MWVhYyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9PdGhlcnMvVmlnbmV0dGUudnVlP2Y0ZTUiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jYW5jZWwvQ2FuY2VsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb29raWVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9idWlsZEZ1bGxQYXRoLmpzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy92aWV3cy9Nb2JpbGUvQWRtaW5Nb2JpbGVNZW51LnZ1ZT9jMjc2Iiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL0NhbmNlbFRva2VuLmpzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL0ZpbGVzVmlldy9CdXR0b25CYXNlLnZ1ZT83MzQ4Iiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1oZWxwZXItdnVlLWpzeC1tZXJnZS1wcm9wcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lLmpzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy92aWV3cy9Nb2JpbGUvVXNlclByb2ZpbGVNb2JpbGVNZW51LnZ1ZT8yYzU1Iiwid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9jb21wb25lbnRzL0ZpbGVzVmlldy9BbGVydC52dWU/ZjdkNyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3IvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvTW9iaWxlL01lbnVJdGVtTGlzdC52dWU/MGI4NSIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9PdGhlcnMvVmlnbmV0dGUudnVlP2Q2YWEiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2NvbXBvbmVudHMvTW9iaWxlL01vYmlsZUhlYWRlci52dWU/OTdhNCIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGZvcnRhd2Vzb21lL3Z1ZS1mb250YXdlc29tZS9pbmRleC5lcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2FkYXB0ZXJzL3hoci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3BhcnNlSGVhZGVycy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvdHJhbnNmb3JtRGF0YS5qcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvYnVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL25vcm1hbGl6ZUhlYWRlck5hbWUuanMiLCJ3ZWJwYWNrOi8vLyh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tcG9uZW50cy9PdGhlcnMvTm90aWZpY2F0aW9ucy9Ub2FzdHJJdGVtLnZ1ZT81N2Q0Iiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYXhpb3MuanMiXSwibmFtZXMiOlsid2VicGFja0pzb25wQ2FsbGJhY2siLCJkYXRhIiwibW9kdWxlSWQiLCJjaHVua0lkIiwiY2h1bmtJZHMiLCJtb3JlTW9kdWxlcyIsImkiLCJyZXNvbHZlcyIsImxlbmd0aCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluc3RhbGxlZENodW5rcyIsInB1c2giLCJtb2R1bGVzIiwicGFyZW50SnNvbnBGdW5jdGlvbiIsInNoaWZ0IiwiaW5zdGFsbGVkTW9kdWxlcyIsIjEwIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsImV4cG9ydHMiLCJtb2R1bGUiLCJsIiwiZSIsInByb21pc2VzIiwiaW5zdGFsbGVkQ2h1bmtEYXRhIiwicHJvbWlzZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwib25TY3JpcHRDb21wbGV0ZSIsInNjcmlwdCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImNoYXJzZXQiLCJ0aW1lb3V0IiwibmMiLCJzZXRBdHRyaWJ1dGUiLCJzcmMiLCJwIiwianNvbnBTY3JpcHRTcmMiLCJlcnJvciIsIkVycm9yIiwiZXZlbnQiLCJvbmVycm9yIiwib25sb2FkIiwiY2xlYXJUaW1lb3V0IiwiY2h1bmsiLCJlcnJvclR5cGUiLCJ0eXBlIiwicmVhbFNyYyIsInRhcmdldCIsIm1lc3NhZ2UiLCJuYW1lIiwicmVxdWVzdCIsInVuZGVmaW5lZCIsInNldFRpbWVvdXQiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJhbGwiLCJtIiwiYyIsImQiLCJnZXR0ZXIiLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiciIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJ0IiwibW9kZSIsIl9fZXNNb2R1bGUiLCJucyIsImNyZWF0ZSIsImtleSIsImJpbmQiLCJuIiwib2JqZWN0IiwicHJvcGVydHkiLCJvZSIsImVyciIsImNvbnNvbGUiLCJqc29ucEFycmF5Iiwid2luZG93Iiwib2xkSnNvbnBGdW5jdGlvbiIsInNsaWNlIiwicyIsImNvbnRlbnQiLCJvcHRpb25zIiwidHJhbnNmb3JtIiwibG9jYWxzIiwiY29tcG9uZW50IiwiX3ZtIiwidGhpcyIsIl9oIiwiJGNyZWF0ZUVsZW1lbnQiLCJfYyIsIl9zZWxmIiwic3RhdGljQ2xhc3MiLCJfbCIsImxpbmsiLCJjbGFzcyIsImljb24iLCJhdHRycyIsInJvdXRlTmFtZSIsIm5hdGl2ZU9uIiwiJGV2ZW50IiwiJGVtaXQiLCJfZSIsIl92IiwiX3MiLCJ0aXRsZSIsInVybCIsInRlc3QiLCJiYXNlVVJMIiwicmVsYXRpdmVVUkwiLCJyZXBsYWNlIiwiX3R5cGVvZiIsIm9iaiIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJfZGVmaW5lUHJvcGVydGllcyIsInByb3BzIiwiZGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX2RlZmluZVByb3BlcnR5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsInNvdXJjZSIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiY29uY2F0IiwiZmlsdGVyIiwic3ltIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZm9yRWFjaCIsIl9zbGljZWRUb0FycmF5IiwiYXJyIiwiQXJyYXkiLCJpc0FycmF5IiwiX2FycmF5V2l0aEhvbGVzIiwiX2FyciIsIl9uIiwiX2QiLCJfaSIsIm5leHQiLCJkb25lIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiVHlwZUVycm9yIiwiX25vbkl0ZXJhYmxlUmVzdCIsIl90b0NvbnN1bWFibGVBcnJheSIsImFycjIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJpdGVyIiwidG9TdHJpbmciLCJmcm9tIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIm5vb3AiLCJfV0lORE9XIiwiX0RPQ1VNRU5UIiwiX1BFUkZPUk1BTkNFIiwibWFyayIsIm1lYXN1cmUiLCJNdXRhdGlvbk9ic2VydmVyIiwicGVyZm9ybWFuY2UiLCJfcmVmJHVzZXJBZ2VudCIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsIldJTkRPVyIsIkRPQ1VNRU5UIiwiUEVSRk9STUFOQ0UiLCJJU19ET00iLCJkb2N1bWVudEVsZW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwiSVNfSUUiLCJpbmRleE9mIiwib25lVG9UZW4iLCJvbmVUb1R3ZW50eSIsIkRVT1RPTkVfQ0xBU1NFUyIsIkdST1VQIiwiU1dBUF9PUEFDSVRZIiwiUFJJTUFSWSIsIlNFQ09OREFSWSIsImluaXRpYWwiLCJtYXAiLCJGb250QXdlc29tZUNvbmZpZyIsInF1ZXJ5U2VsZWN0b3IiLCJfcmVmIiwiX3JlZjIiLCJhdHRyIiwidmFsIiwiY29lcmNlIiwiZWxlbWVudCIsImdldEF0dHJpYnV0ZSIsImdldEF0dHJDb25maWciLCJfY29uZmlnIiwiZmFtaWx5UHJlZml4IiwicmVwbGFjZW1lbnRDbGFzcyIsImF1dG9SZXBsYWNlU3ZnIiwiYXV0b0FkZENzcyIsImF1dG9BMTF5Iiwic2VhcmNoUHNldWRvRWxlbWVudHMiLCJvYnNlcnZlTXV0YXRpb25zIiwibXV0YXRlQXBwcm9hY2giLCJrZWVwT3JpZ2luYWxTb3VyY2UiLCJtZWFzdXJlUGVyZm9ybWFuY2UiLCJzaG93TWlzc2luZ0ljb25zIiwiY29uZmlnIiwidyIsInN0eWxlcyIsImhvb2tzIiwic2hpbXMiLCJuYW1lc3BhY2UiLCJmdW5jdGlvbnMiLCJkb1Njcm9sbCIsInJlYWR5U3RhdGUiLCJsaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJmbiIsImFzeW5jVGltZXIiLCJOT09QIiwiaXNOb2RlIiwiZ2xvYmFsIiwicHJvY2VzcyIsImVtaXQiLCJhc3luY1NldFRpbWVyIiwic2V0SW1tZWRpYXRlIiwiYXN5bmNRdWV1ZSIsImFzeW5jRmx1c2giLCJhc3luY0NhbGwiLCJjYWxsYmFjayIsImFyZyIsImludm9rZUNhbGxiYWNrIiwic3Vic2NyaWJlciIsIm93bmVyIiwic2V0dGxlZCIsIl9zdGF0ZSIsIl9kYXRhIiwidGhlbiIsImhhbmRsZVRoZW5hYmxlIiwicmVzb2x2ZWQiLCJmdWxmaWxsIiwicmVhc29uIiwicHVibGlzaEZ1bGZpbGxtZW50IiwicHVibGlzaFJlamVjdGlvbiIsInB1Ymxpc2giLCJfdGhlbiIsIl9oYW5kbGVkIiwibm90aWZ5UmVqZWN0aW9uSGFuZGxlZCIsIlAiLCJyZXNvbHZlciIsInJlamVjdFByb21pc2UiLCJpbnZva2VSZXNvbHZlciIsIm9uRnVsZmlsbG1lbnQiLCJvblJlamVjdGlvbiIsImZ1bGZpbGxlZCIsInJlamVjdGVkIiwiY2F0Y2giLCJyZXN1bHRzIiwicmVtYWluaW5nIiwiaW5kZXgiLCJyYWNlIiwibWVhbmluZ2xlc3NUcmFuc2Zvcm0iLCJzaXplIiwieCIsInkiLCJyb3RhdGUiLCJmbGlwWCIsImZsaXBZIiwiaW5zZXJ0Q3NzIiwiY3NzIiwic3R5bGUiLCJpbm5lckhUTUwiLCJoZWFkQ2hpbGRyZW4iLCJjaGlsZE5vZGVzIiwiYmVmb3JlQ2hpbGQiLCJjaGlsZCIsInRhZ05hbWUiLCJ0b1VwcGVyQ2FzZSIsImluc2VydEJlZm9yZSIsIm5leHRVbmlxdWVJZCIsImlkIiwiTWF0aCIsInJhbmRvbSIsImh0bWxFc2NhcGUiLCJzdHIiLCJqb2luU3R5bGVzIiwicmVkdWNlIiwiYWNjIiwic3R5bGVOYW1lIiwidHJhbnNmb3JtSXNNZWFuaW5nZnVsIiwidHJhbnNmb3JtRm9yU3ZnIiwiY29udGFpbmVyV2lkdGgiLCJpY29uV2lkdGgiLCJvdXRlciIsImlubmVyVHJhbnNsYXRlIiwiaW5uZXJTY2FsZSIsImlubmVyUm90YXRlIiwiaW5uZXIiLCJwYXRoIiwiQUxMX1NQQUNFIiwid2lkdGgiLCJoZWlnaHQiLCJmaWxsQmxhY2siLCJhYnN0cmFjdCIsImZvcmNlIiwiYXR0cmlidXRlcyIsImZpbGwiLCJtYWtlSW5saW5lU3ZnQWJzdHJhY3QiLCJwYXJhbXMiLCJfcGFyYW1zJGljb25zIiwiaWNvbnMiLCJtYWluIiwibWFzayIsInByZWZpeCIsImljb25OYW1lIiwic3ltYm9sIiwibWFza0lkIiwidGl0bGVJZCIsImV4dHJhIiwiX3BhcmFtcyR3YXRjaGFibGUiLCJ3YXRjaGFibGUiLCJmb3VuZCIsIndpZHRoQ2xhc3MiLCJjZWlsIiwiYXR0ckNsYXNzIiwiY2xhc3NlcyIsImpvaW4iLCJjaGlsZHJlbiIsInJvbGUiLCJ0YWciLCJhcmdzIiwiZXhwbGljaXRNYXNrSWQiLCJtYWluV2lkdGgiLCJtYWluUGF0aCIsIm1hc2tXaWR0aCIsIm1hc2tQYXRoIiwidHJhbnMiLCJtYXNrUmVjdCIsIm1hc2tJbm5lckdyb3VwQ2hpbGRyZW5NaXhpbiIsIm1hc2tJbm5lckdyb3VwIiwibWFza091dGVyR3JvdXAiLCJjbGlwSWQiLCJtYXNrVGFnIiwibWFza1VuaXRzIiwibWFza0NvbnRlbnRVbml0cyIsImRlZnMiLCJtYWtlSWNvbk1hc2tpbmciLCJzdHlsZVN0cmluZyIsIm1ha2VJY29uU3RhbmRhcmQiLCJhc1N5bWJvbCIsIm9mZnNldCIsImFzSWNvbiIsIm1ha2VMYXllcnNUZXh0QWJzdHJhY3QiLCJfcGFyYW1zJHdhdGNoYWJsZTIiLCJfcmVmMiR3aWR0aCIsIl9yZWYyJGhlaWdodCIsIl9yZWYyJHN0YXJ0Q2VudGVyZWQiLCJzdGFydENlbnRlcmVkIiwidHJhbnNmb3JtRm9yQ3NzIiwibm9vcCQxIiwic3ViamVjdCIsImluaXRpYWxWYWx1ZSIsInRoaXNDb250ZXh0IiwicmVzdWx0IiwiZnVuYyIsImEiLCJiIiwiYmluZEludGVybmFsNCIsImRlZmluZUljb25zIiwiX3BhcmFtcyRza2lwSG9va3MiLCJza2lwSG9va3MiLCJub3JtYWxpemVkIiwiYWRkUGFjayIsImJ1aWxkIiwibG9va3VwIiwicmVkdWNlciIsImxpZ2F0dXJlcyIsImxpZ2F0dXJlIiwiaGFzUmVndWxhciIsInNoaW0iLCJvbGROYW1lIiwiaWNvbkZyb21NYXBwaW5nIiwibWFwcGluZyIsInRvSHRtbCIsImFic3RyYWN0Tm9kZXMiLCJfYWJzdHJhY3ROb2RlcyRhdHRyaWIiLCJfYWJzdHJhY3ROb2RlcyRjaGlsZHIiLCJhdHRyaWJ1dGVOYW1lIiwidHJpbSIsImpvaW5BdHRyaWJ1dGVzIiwicGFyc2VUcmFuc2Zvcm1TdHJpbmciLCJ0cmFuc2Zvcm1TdHJpbmciLCJ0b0xvd2VyQ2FzZSIsInNwbGl0IiwicGFydHMiLCJmaXJzdCIsInJlc3QiLCJwYXJzZUZsb2F0IiwiaXNOYU4iLCJNaXNzaW5nSWNvbiIsInN0YWNrIiwiRklMTCIsIkFOSU1BVElPTl9CQVNFIiwiYXR0cmlidXRlVHlwZSIsInJlcGVhdENvdW50IiwiZHVyIiwiUklORyIsIk9QQUNJVFlfQU5JTUFURSIsImN4IiwiY3kiLCJ2YWx1ZXMiLCJvcGFjaXR5IiwiYXNGb3VuZEljb24iLCJ2ZWN0b3JEYXRhIiwiZHJjIiwiZnAiLCJyYyIsImRQYXR0IiwiUmVnRXhwIiwiY3VzdG9tUHJvcFBhdHQiLCJyUGF0dCIsImVuc3VyZUNzcyIsIl9jc3NJbnNlcnRlZCIsImFwaU9iamVjdCIsImFic3RyYWN0Q3JlYXRvciIsImNvbnRhaW5lciIsImh0bWwiLCJmaW5kSWNvbkRlZmluaXRpb24iLCJpY29uTG9va3VwIiwiX2ljb25Mb29rdXAkcHJlZml4IiwibGlicmFyeSIsImRlZmluaXRpb25zIiwiTGlicmFyeSIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJfY2xhc3NDYWxsQ2hlY2siLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJfdGhpcyIsIl9sZW4iLCJfa2V5IiwiYWRkaXRpb25zIiwiX3B1bGxEZWZpbml0aW9ucyIsImRlZmluaXRpb24iLCIwIiwiX25vcm1hbGl6ZWQka2V5IiwicGFyc2UiLCJpY29uRGVmaW5pdGlvbiIsIl9wYXJhbXMkdHJhbnNmb3JtIiwiX3BhcmFtcyRzeW1ib2wiLCJfcGFyYW1zJG1hc2siLCJfcGFyYW1zJG1hc2tJZCIsIl9wYXJhbXMkdGl0bGUiLCJfcGFyYW1zJHRpdGxlSWQiLCJfcGFyYW1zJGNsYXNzZXMiLCJfcGFyYW1zJGF0dHJpYnV0ZXMiLCJfcGFyYW1zJHN0eWxlcyIsIm1heWJlSWNvbkRlZmluaXRpb24iLCJ0ZXh0IiwiX3BhcmFtcyR0cmFuc2Zvcm0yIiwiX3BhcmFtcyR0aXRsZTIiLCJfcGFyYW1zJGNsYXNzZXMyIiwiX3BhcmFtcyRhdHRyaWJ1dGVzMiIsIl9wYXJhbXMkc3R5bGVzMiIsImNhY2hlZFNldFRpbWVvdXQiLCJjYWNoZWRDbGVhclRpbWVvdXQiLCJkZWZhdWx0U2V0VGltb3V0IiwiZGVmYXVsdENsZWFyVGltZW91dCIsInJ1blRpbWVvdXQiLCJmdW4iLCJjdXJyZW50UXVldWUiLCJxdWV1ZSIsImRyYWluaW5nIiwicXVldWVJbmRleCIsImNsZWFuVXBOZXh0VGljayIsImRyYWluUXVldWUiLCJsZW4iLCJydW4iLCJtYXJrZXIiLCJydW5DbGVhclRpbWVvdXQiLCJJdGVtIiwiYXJyYXkiLCJuZXh0VGljayIsImFwcGx5IiwiYnJvd3NlciIsImVudiIsImFyZ3YiLCJ2ZXJzaW9uIiwidmVyc2lvbnMiLCJvbiIsImFkZExpc3RlbmVyIiwib25jZSIsIm9mZiIsInJlbW92ZUxpc3RlbmVyIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwicHJlcGVuZExpc3RlbmVyIiwicHJlcGVuZE9uY2VMaXN0ZW5lciIsImxpc3RlbmVycyIsImJpbmRpbmciLCJjd2QiLCJjaGRpciIsImRpciIsInVtYXNrIiwiZXh0ZW5kIiwiVmlldyIsImZ1bmN0aW9uYWwiLCJTdHJpbmciLCJkZWZhdWx0IiwicmVuZGVyIiwiXyIsInJlZiIsInBhcmVudCIsInJvdXRlclZpZXciLCJoIiwicm91dGUiLCIkcm91dGUiLCJjYWNoZSIsIl9yb3V0ZXJWaWV3Q2FjaGUiLCJkZXB0aCIsImluYWN0aXZlIiwiX3JvdXRlclJvb3QiLCJ2bm9kZURhdGEiLCIkdm5vZGUiLCJrZWVwQWxpdmUiLCJfZGlyZWN0SW5hY3RpdmUiLCJfaW5hY3RpdmUiLCIkcGFyZW50Iiwicm91dGVyVmlld0RlcHRoIiwiY2FjaGVkRGF0YSIsImNhY2hlZENvbXBvbmVudCIsImNvbmZpZ1Byb3BzIiwiZmlsbFByb3BzaW5EYXRhIiwibWF0Y2hlZCIsImNvbXBvbmVudHMiLCJyZWdpc3RlclJvdXRlSW5zdGFuY2UiLCJ2bSIsImN1cnJlbnQiLCJpbnN0YW5jZXMiLCJob29rIiwicHJlcGF0Y2giLCJ2bm9kZSIsImNvbXBvbmVudEluc3RhbmNlIiwiaW5pdCIsInByb3BzVG9QYXNzIiwicmVzb2x2ZVByb3BzIiwiZW5jb2RlUmVzZXJ2ZVJFIiwiZW5jb2RlUmVzZXJ2ZVJlcGxhY2VyIiwiY2hhckNvZGVBdCIsImNvbW1hUkUiLCJlbmNvZGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJkZWNvZGUiLCJkZWNvZGVVUklDb21wb25lbnQiLCJjYXN0UXVlcnlQYXJhbVZhbHVlIiwicGFyc2VRdWVyeSIsInF1ZXJ5IiwicmVzIiwicGFyYW0iLCJzdHJpbmdpZnlRdWVyeSIsInZhbDIiLCJ0cmFpbGluZ1NsYXNoUkUiLCJjcmVhdGVSb3V0ZSIsInJlY29yZCIsImxvY2F0aW9uIiwicmVkaXJlY3RlZEZyb20iLCJyb3V0ZXIiLCJjbG9uZSIsIm1ldGEiLCJoYXNoIiwiZnVsbFBhdGgiLCJnZXRGdWxsUGF0aCIsImZvcm1hdE1hdGNoIiwiZnJlZXplIiwiU1RBUlQiLCJ1bnNoaWZ0IiwiX3N0cmluZ2lmeVF1ZXJ5IiwiaXNTYW1lUm91dGUiLCJpc09iamVjdEVxdWFsIiwiYUtleXMiLCJiS2V5cyIsImV2ZXJ5IiwiYVZhbCIsImJWYWwiLCJyZXNvbHZlUGF0aCIsInJlbGF0aXZlIiwiYmFzZSIsImFwcGVuZCIsImZpcnN0Q2hhciIsImNoYXJBdCIsInBvcCIsInNlZ21lbnRzIiwic2VnbWVudCIsImNsZWFuUGF0aCIsImlzYXJyYXkiLCJwYXRoVG9SZWdleHBfMSIsInBhdGhUb1JlZ2V4cCIsInBhcnNlXzEiLCJjb21waWxlXzEiLCJ0b2tlbnNUb0Z1bmN0aW9uIiwidG9rZW5zVG9GdW5jdGlvbl8xIiwidG9rZW5zVG9SZWdFeHBfMSIsInRva2Vuc1RvUmVnRXhwIiwiUEFUSF9SRUdFWFAiLCJ0b2tlbnMiLCJkZWZhdWx0RGVsaW1pdGVyIiwiZGVsaW1pdGVyIiwiZXhlYyIsImVzY2FwZWQiLCJjYXB0dXJlIiwiZ3JvdXAiLCJtb2RpZmllciIsImFzdGVyaXNrIiwicGFydGlhbCIsInJlcGVhdCIsIm9wdGlvbmFsIiwicGF0dGVybiIsImVzY2FwZUdyb3VwIiwiZXNjYXBlU3RyaW5nIiwic3Vic3RyIiwiZW5jb2RlVVJJQ29tcG9uZW50UHJldHR5IiwiZW5jb2RlVVJJIiwibWF0Y2hlcyIsImZsYWdzIiwib3B0cyIsInByZXR0eSIsInRva2VuIiwiSlNPTiIsInN0cmluZ2lmeSIsImoiLCJhdHRhY2hLZXlzIiwicmUiLCJzZW5zaXRpdmUiLCJzdHJpY3QiLCJlbmQiLCJlbmRzV2l0aERlbGltaXRlciIsImdyb3VwcyIsIm1hdGNoIiwicmVnZXhwVG9SZWdleHAiLCJhcnJheVRvUmVnZXhwIiwic3RyaW5nVG9SZWdleHAiLCJjb21waWxlIiwicmVnZXhwQ29tcGlsZUNhY2hlIiwiZmlsbFBhcmFtcyIsInJvdXRlTXNnIiwiZmlsbGVyIiwicGF0aE1hdGNoIiwibm9ybWFsaXplTG9jYXRpb24iLCJyYXciLCJfbm9ybWFsaXplZCIsInBhcmFtcyQxIiwicmF3UGF0aCIsInBhcnNlZFBhdGgiLCJoYXNoSW5kZXgiLCJxdWVyeUluZGV4IiwicGFyc2VQYXRoIiwiYmFzZVBhdGgiLCJleHRyYVF1ZXJ5IiwiX3BhcnNlUXVlcnkiLCJwYXJzZWRRdWVyeSIsInJlc29sdmVRdWVyeSIsIl9WdWUiLCJMaW5rIiwidG8iLCJyZXF1aXJlZCIsImV4YWN0IiwiQm9vbGVhbiIsImFjdGl2ZUNsYXNzIiwiZXhhY3RBY3RpdmVDbGFzcyIsImFyaWFDdXJyZW50VmFsdWUiLCJ0aGlzJDEiLCIkcm91dGVyIiwiaHJlZiIsImdsb2JhbEFjdGl2ZUNsYXNzIiwibGlua0FjdGl2ZUNsYXNzIiwiZ2xvYmFsRXhhY3RBY3RpdmVDbGFzcyIsImxpbmtFeGFjdEFjdGl2ZUNsYXNzIiwiYWN0aXZlQ2xhc3NGYWxsYmFjayIsImV4YWN0QWN0aXZlQ2xhc3NGYWxsYmFjayIsImNvbXBhcmVUYXJnZXQiLCJxdWVyeUluY2x1ZGVzIiwiaXNJbmNsdWRlZFJvdXRlIiwiaGFuZGxlciIsImd1YXJkRXZlbnQiLCJjbGljayIsInNjb3BlZFNsb3QiLCIkc2NvcGVkU2xvdHMiLCIkaGFzTm9ybWFsIiwibmF2aWdhdGUiLCJpc0FjdGl2ZSIsImlzRXhhY3RBY3RpdmUiLCJmaW5kQW5jaG9yIiwiJHNsb3RzIiwiaXNTdGF0aWMiLCJhRGF0YSIsImhhbmRsZXIkMSIsImV2ZW50JDEiLCJhQXR0cnMiLCJtZXRhS2V5IiwiYWx0S2V5IiwiY3RybEtleSIsInNoaWZ0S2V5IiwiZGVmYXVsdFByZXZlbnRlZCIsImJ1dHRvbiIsImN1cnJlbnRUYXJnZXQiLCJwcmV2ZW50RGVmYXVsdCIsImluQnJvd3NlciIsImNyZWF0ZVJvdXRlTWFwIiwicm91dGVzIiwib2xkUGF0aExpc3QiLCJvbGRQYXRoTWFwIiwib2xkTmFtZU1hcCIsInBhdGhMaXN0IiwicGF0aE1hcCIsIm5hbWVNYXAiLCJhZGRSb3V0ZVJlY29yZCIsIm1hdGNoQXMiLCJwYXRoVG9SZWdleHBPcHRpb25zIiwibm9ybWFsaXplZFBhdGgiLCJub3JtYWxpemVQYXRoIiwiY2FzZVNlbnNpdGl2ZSIsInJlZ2V4IiwiY29tcGlsZVJvdXRlUmVnZXgiLCJyZWRpcmVjdCIsImJlZm9yZUVudGVyIiwiY2hpbGRNYXRjaEFzIiwiYWxpYXMiLCJhbGlhc2VzIiwiYWxpYXNSb3V0ZSIsInNwbGljZSIsImNyZWF0ZU1hdGNoZXIiLCJjdXJyZW50Um91dGUiLCJfY3JlYXRlUm91dGUiLCJwYXJhbU5hbWVzIiwicmVjb3JkJDEiLCJtYXRjaFJvdXRlIiwib3JpZ2luYWxSZWRpcmVjdCIsInJlc29sdmVSZWNvcmRQYXRoIiwiYWxpYXNlZE1hdGNoIiwiYWxpYXNlZFJlY29yZCIsImFkZFJvdXRlcyIsIlRpbWUiLCJub3ciLCJEYXRlIiwiZ2VuU3RhdGVLZXkiLCJ0b0ZpeGVkIiwiZ2V0U3RhdGVLZXkiLCJzZXRTdGF0ZUtleSIsInBvc2l0aW9uU3RvcmUiLCJzZXR1cFNjcm9sbCIsImhpc3RvcnkiLCJzY3JvbGxSZXN0b3JhdGlvbiIsInByb3RvY29sQW5kUGF0aCIsInByb3RvY29sIiwiaG9zdCIsImFic29sdXRlUGF0aCIsInN0YXRlQ29weSIsInN0YXRlIiwicmVwbGFjZVN0YXRlIiwiaGFuZGxlUG9wU3RhdGUiLCJoYW5kbGVTY3JvbGwiLCJpc1BvcCIsImFwcCIsImJlaGF2aW9yIiwic2Nyb2xsQmVoYXZpb3IiLCIkbmV4dFRpY2siLCJwb3NpdGlvbiIsImdldFNjcm9sbFBvc2l0aW9uIiwic2hvdWxkU2Nyb2xsIiwic2Nyb2xsVG9Qb3NpdGlvbiIsInNhdmVTY3JvbGxQb3NpdGlvbiIsInBhZ2VYT2Zmc2V0IiwicGFnZVlPZmZzZXQiLCJpc1ZhbGlkUG9zaXRpb24iLCJpc051bWJlciIsIm5vcm1hbGl6ZVBvc2l0aW9uIiwidiIsImhhc2hTdGFydHNXaXRoTnVtYmVyUkUiLCJpc09iamVjdCIsInNlbGVjdG9yIiwiZWwiLCJnZXRFbGVtZW50QnlJZCIsImRvY1JlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJlbFJlY3QiLCJsZWZ0IiwidG9wIiwiZ2V0RWxlbWVudFBvc2l0aW9uIiwic2Nyb2xsVG8iLCJ1YSIsInN1cHBvcnRzUHVzaFN0YXRlIiwicHVzaFN0YXRlIiwicnVuUXVldWUiLCJjYiIsInN0ZXAiLCJOYXZpZ2F0aW9uRmFpbHVyZVR5cGUiLCJyZWRpcmVjdGVkIiwiYWJvcnRlZCIsImNhbmNlbGxlZCIsImR1cGxpY2F0ZWQiLCJjcmVhdGVOYXZpZ2F0aW9uUmVkaXJlY3RlZEVycm9yIiwiY3JlYXRlUm91dGVyRXJyb3IiLCJwcm9wZXJ0aWVzVG9Mb2ciLCJjcmVhdGVOYXZpZ2F0aW9uQ2FuY2VsbGVkRXJyb3IiLCJfaXNSb3V0ZXIiLCJpc0Vycm9yIiwiaXNOYXZpZ2F0aW9uRmFpbHVyZSIsInJlc29sdmVBc3luY0NvbXBvbmVudHMiLCJoYXNBc3luYyIsInBlbmRpbmciLCJmbGF0TWFwQ29tcG9uZW50cyIsImRlZiIsImNpZCIsInJlc29sdmVkRGVmIiwiaGFzU3ltYm9sIiwibXNnIiwiY29tcCIsImZsYXR0ZW4iLCJjYWxsZWQiLCJIaXN0b3J5IiwiYmFzZUVsIiwibm9ybWFsaXplQmFzZSIsInJlYWR5IiwicmVhZHlDYnMiLCJyZWFkeUVycm9yQ2JzIiwiZXJyb3JDYnMiLCJleHRyYWN0R3VhcmRzIiwicmVjb3JkcyIsInJldmVyc2UiLCJndWFyZHMiLCJndWFyZCIsImV4dHJhY3RHdWFyZCIsImJpbmRHdWFyZCIsImxpc3RlbiIsIm9uUmVhZHkiLCJlcnJvckNiIiwib25FcnJvciIsInRyYW5zaXRpb25UbyIsIm9uQ29tcGxldGUiLCJvbkFib3J0IiwiY29uZmlybVRyYW5zaXRpb24iLCJwcmV2IiwidXBkYXRlUm91dGUiLCJlbnN1cmVVUkwiLCJhZnRlckhvb2tzIiwiYWJvcnQiLCJsYXN0Um91dGVJbmRleCIsImxhc3RDdXJyZW50SW5kZXgiLCJtYXgiLCJ1cGRhdGVkIiwiYWN0aXZhdGVkIiwiZGVhY3RpdmF0ZWQiLCJyZXNvbHZlUXVldWUiLCJleHRyYWN0TGVhdmVHdWFyZHMiLCJiZWZvcmVIb29rcyIsImV4dHJhY3RVcGRhdGVIb29rcyIsImNyZWF0ZU5hdmlnYXRpb25BYm9ydGVkRXJyb3IiLCJwb3N0RW50ZXJDYnMiLCJjYnMiLCJpc1ZhbGlkIiwicG9sbCIsIl9pc0JlaW5nRGVzdHJveWVkIiwiYmluZEVudGVyR3VhcmQiLCJleHRyYWN0RW50ZXJHdWFyZHMiLCJyZXNvbHZlSG9va3MiLCJzZXR1cExpc3RlbmVycyIsInRlYXJkb3duTGlzdGVuZXJzIiwiY2xlYW51cExpc3RlbmVyIiwiSFRNTDVIaXN0b3J5IiwiX3N0YXJ0TG9jYXRpb24iLCJnZXRMb2NhdGlvbiIsIl9fcHJvdG9fXyIsImV4cGVjdFNjcm9sbCIsInN1cHBvcnRzU2Nyb2xsIiwiaGFuZGxlUm91dGluZ0V2ZW50IiwiZ28iLCJmcm9tUm91dGUiLCJnZXRDdXJyZW50TG9jYXRpb24iLCJkZWNvZGVVUkkiLCJwYXRobmFtZSIsInNlYXJjaCIsIkhhc2hIaXN0b3J5IiwiZmFsbGJhY2siLCJjaGVja0ZhbGxiYWNrIiwiZW5zdXJlU2xhc2giLCJnZXRIYXNoIiwicmVwbGFjZUhhc2giLCJldmVudFR5cGUiLCJwdXNoSGFzaCIsInNlYXJjaEluZGV4IiwiZ2V0VXJsIiwiQWJzdHJhY3RIaXN0b3J5IiwidGFyZ2V0SW5kZXgiLCJWdWVSb3V0ZXIiLCJhcHBzIiwibWF0Y2hlciIsInByb3RvdHlwZUFjY2Vzc29ycyIsInJlZ2lzdGVySG9vayIsImxpc3QiLCIkb25jZSIsInJvdXRlT3JFcnJvciIsImhhbmRsZUluaXRpYWxTY3JvbGwiLCJfcm91dGUiLCJiZWZvcmVFYWNoIiwiYmVmb3JlUmVzb2x2ZSIsImFmdGVyRWFjaCIsImJhY2siLCJmb3J3YXJkIiwiZ2V0TWF0Y2hlZENvbXBvbmVudHMiLCJjcmVhdGVIcmVmIiwibm9ybWFsaXplZFRvIiwiZGVmaW5lUHJvcGVydGllcyIsImluc3RhbGwiLCJWdWUiLCJpbnN0YWxsZWQiLCJpc0RlZiIsInJlZ2lzdGVySW5zdGFuY2UiLCJjYWxsVmFsIiwiJG9wdGlvbnMiLCJfcGFyZW50Vm5vZGUiLCJtaXhpbiIsImJlZm9yZUNyZWF0ZSIsIl9yb3V0ZXIiLCJ1dGlsIiwiZGVmaW5lUmVhY3RpdmUiLCJkZXN0cm95ZWQiLCJzdHJhdHMiLCJvcHRpb25NZXJnZVN0cmF0ZWdpZXMiLCJiZWZvcmVSb3V0ZUVudGVyIiwiYmVmb3JlUm91dGVMZWF2ZSIsImJlZm9yZVJvdXRlVXBkYXRlIiwiY3JlYXRlZCIsInVzZSIsIm51bWJlckZvcm1hdEtleXMiLCJ3YXJuIiwiaXNTdHJpbmciLCJpc1BsYWluT2JqZWN0IiwiaXNOdWxsIiwiaXNGdW5jdGlvbiIsInBhcnNlQXJncyIsImxvY2FsZSIsImxvb3NlQ2xvbmUiLCJpbmNsdWRlcyIsIml0ZW0iLCJoYXNPd24iLCJtZXJnZSIsImFyZ3VtZW50cyQxIiwib3V0cHV0IiwibG9vc2VFcXVhbCIsImlzT2JqZWN0QSIsImlzT2JqZWN0QiIsImlzQXJyYXlBIiwiaXNBcnJheUIiLCJrZXlzQSIsImtleXNCIiwiaTE4biIsIl9faTE4biIsIlZ1ZUkxOG4iLCJsb2NhbGVNZXNzYWdlcyIsInJlc291cmNlIiwibWVyZ2VMb2NhbGVNZXNzYWdlIiwiX2kxOG4iLCJfaTE4bldhdGNoZXIiLCJ3YXRjaEkxOG5EYXRhIiwicm9vdEkxOG4iLCIkcm9vdCIsIiRpMThuIiwicm9vdCIsImZvcm1hdHRlciIsImZhbGxiYWNrTG9jYWxlIiwiZm9ybWF0RmFsbGJhY2tNZXNzYWdlcyIsInNpbGVudFRyYW5zbGF0aW9uV2FybiIsInNpbGVudEZhbGxiYWNrV2FybiIsInBsdXJhbGl6YXRpb25SdWxlcyIsInByZXNlcnZlRGlyZWN0aXZlQ29udGVudCIsImxvY2FsZU1lc3NhZ2VzJDEiLCJtZXNzYWdlcyIsInNoYXJlZE1lc3NhZ2VzIiwic3luYyIsIl9sb2NhbGVXYXRjaGVyIiwid2F0Y2hMb2NhbGUiLCJvbkNvbXBvbmVudEluc3RhbmNlQ3JlYXRlZCIsImJlZm9yZU1vdW50Iiwic3Vic2NyaWJlRGF0YUNoYW5naW5nIiwiX3N1YnNjcmliaW5nIiwiYmVmb3JlRGVzdHJveSIsInNlbGYiLCJ1bnN1YnNjcmliZURhdGFDaGFuZ2luZyIsImRlc3Ryb3lWTSIsImludGVycG9sYXRpb25Db21wb25lbnQiLCJwbGFjZXMiLCJzbG90cyIsInByb3AiLCJvbmx5SGFzRGVmYXVsdFBsYWNlIiwiYXNzaWduQ2hpbGRJbmRleCIsImFzc2lnbiIsImNyZWF0ZVBhcmFtc0Zyb21QbGFjZXMiLCJldmVyeVBsYWNlIiwidm5vZGVIYXNQbGFjZUF0dHJpYnV0ZSIsImFzc2lnbkNoaWxkUGxhY2UiLCJ1c2VMZWdhY3lQbGFjZXMiLCJwbGFjZSIsIm51bWJlckNvbXBvbmVudCIsIk51bWJlciIsImZvcm1hdCIsIl9udHAiLCJwYXJ0Iiwic2xvdCIsInNjb3BlZFNsb3RzIiwidXBkYXRlIiwib2xkVk5vZGUiLCJjb250ZXh0IiwiX2xvY2FsZSIsImxvY2FsZUVxdWFsIiwib2xkVmFsdWUiLCJfbG9jYWxlTWVzc2FnZSIsImdldExvY2FsZU1lc3NhZ2UiLCJ1bmJpbmQiLCJtb2RpZmllcnMiLCJwcmVzZXJ2ZSIsInRleHRDb250ZW50IiwiX3Z0IiwicmVmJDEiLCJyZWYkMiIsImNob2ljZSIsInBhcnNlVmFsdWUiLCJ0YyIsIm1ha2VQYXJhbXMiLCIkdCIsIl90IiwiX2dldE1lc3NhZ2VzIiwiJHRjIiwiX3RjIiwiJHRlIiwiX3RlIiwiJGQiLCIkbiIsImRpcmVjdGl2ZSIsInBhcmVudFZhbCIsImNoaWxkVmFsIiwiQmFzZUZvcm1hdHRlciIsIl9jYWNoZXMiLCJpbnRlcnBvbGF0ZSIsImNoYXIiLCJzdWIiLCJpc0Nsb3NlZCIsIlJFX1RPS0VOX0xJU1RfVkFMVUUiLCJSRV9UT0tFTl9OQU1FRF9WQUxVRSIsImNvbXBpbGVkIiwicGFyc2VJbnQiLCJwYXRoU3RhdGVNYWNoaW5lIiwibGl0ZXJhbFZhbHVlUkUiLCJnZXRQYXRoQ2hhclR5cGUiLCJjaCIsImZvcm1hdFN1YlBhdGgiLCJleHAiLCJ0cmltbWVkIiwiSTE4blBhdGgiLCJfY2FjaGUiLCJoaXQiLCJuZXdDaGFyIiwidHJhbnNpdGlvbiIsImFjdGlvbiIsInR5cGVNYXAiLCJzdWJQYXRoRGVwdGgiLCJhY3Rpb25zIiwibWF5YmVVbmVzY2FwZVF1b3RlIiwibmV4dENoYXIiLCJwYXJzZSQxIiwiZ2V0UGF0aFZhbHVlIiwicGF0aHMiLCJsYXN0IiwiYXZhaWxhYmlsaXRpZXMiLCJodG1sVGFnTWF0Y2hlciIsImxpbmtLZXlNYXRjaGVyIiwibGlua0tleVByZWZpeE1hdGNoZXIiLCJicmFja2V0c01hdGNoZXIiLCJkZWZhdWx0TW9kaWZpZXJzIiwidG9Mb2NhbGVVcHBlckNhc2UiLCJ0b0xvY2FsZUxvd2VyQ2FzZSIsImRlZmF1bHRGb3JtYXR0ZXIiLCJkYXRlVGltZUZvcm1hdHMiLCJudW1iZXJGb3JtYXRzIiwiX2Zvcm1hdHRlciIsIl9tb2RpZmllcnMiLCJfbWlzc2luZyIsIm1pc3NpbmciLCJfcm9vdCIsIl9zeW5jIiwiX2ZhbGxiYWNrUm9vdCIsImZhbGxiYWNrUm9vdCIsIl9mb3JtYXRGYWxsYmFja01lc3NhZ2VzIiwiX3NpbGVudFRyYW5zbGF0aW9uV2FybiIsIl9zaWxlbnRGYWxsYmFja1dhcm4iLCJfZGF0ZVRpbWVGb3JtYXR0ZXJzIiwiX251bWJlckZvcm1hdHRlcnMiLCJfcGF0aCIsIl9kYXRhTGlzdGVuZXJzIiwiX2NvbXBvbmVudEluc3RhbmNlQ3JlYXRlZExpc3RlbmVyIiwiY29tcG9uZW50SW5zdGFuY2VDcmVhdGVkTGlzdGVuZXIiLCJfcHJlc2VydmVEaXJlY3RpdmVDb250ZW50IiwiX3dhcm5IdG1sSW5NZXNzYWdlIiwid2Fybkh0bWxJbk1lc3NhZ2UiLCJfcG9zdFRyYW5zbGF0aW9uIiwicG9zdFRyYW5zbGF0aW9uIiwiZ2V0Q2hvaWNlSW5kZXgiLCJjaG9pY2VzTGVuZ3RoIiwidGhpc1Byb3RvdHlwZSIsImdldFByb3RvdHlwZU9mIiwiX2Nob2ljZSIsIl9jaG9pY2VzTGVuZ3RoIiwiYWJzIiwibWluIiwiX2V4aXN0IiwiX2NoZWNrTG9jYWxlTWVzc2FnZSIsIl9pbml0Vk0iLCJhdmFpbGFibGVMb2NhbGVzIiwibGV2ZWwiLCJzaWxlbnQiLCIkZGVzdHJveSIsInJlbW92ZSIsIiR3YXRjaCIsIiRmb3JjZVVwZGF0ZSIsImRlZXAiLCIkc2V0IiwiaW1tZWRpYXRlIiwibmV3STE4biIsIl9nZXREYXRlVGltZUZvcm1hdHMiLCJfZ2V0TnVtYmVyRm9ybWF0cyIsInNvcnQiLCJzZXQiLCJfbG9jYWxlQ2hhaW5DYWNoZSIsIm9yZ0xldmVsIiwiX3dhcm5EZWZhdWx0IiwiaW50ZXJwb2xhdGVNb2RlIiwibWlzc2luZ1JldCIsInBhcnNlZEFyZ3MiLCJfcmVuZGVyIiwiX2lzRmFsbGJhY2tSb290IiwiX2lzU2lsZW50RmFsbGJhY2tXYXJuIiwiX2lzU2lsZW50RmFsbGJhY2siLCJfaXNTaWxlbnRUcmFuc2xhdGlvbldhcm4iLCJfaW50ZXJwb2xhdGUiLCJ2aXNpdGVkTGlua1N0YWNrIiwicmV0IiwicGF0aFJldCIsIl9saW5rIiwiaWR4IiwibGlua0tleVByZWZpeE1hdGNoZXMiLCJsaW5rUHJlZml4IiwiZm9ybWF0dGVyTmFtZSIsImxpbmtQbGFjZWhvbGRlciIsInRyYW5zbGF0ZWQiLCJfdHJhbnNsYXRlIiwiX2NyZWF0ZU1lc3NhZ2VDb250ZXh0IiwiX2xpc3QiLCJfbmFtZWQiLCJuYW1lZCIsIl9hcHBlbmRJdGVtVG9DaGFpbiIsImNoYWluIiwiYmxvY2tzIiwiZm9sbG93IiwiX2FwcGVuZExvY2FsZVRvQ2hhaW4iLCJfYXBwZW5kQmxvY2tUb0NoYWluIiwiYmxvY2siLCJfZ2V0TG9jYWxlQ2hhaW4iLCJzdGFydCIsImRlZmF1bHRzIiwicHJlZGVmaW5lZCIsImZldGNoQ2hvaWNlIiwiY2hvaWNlcyIsInRlIiwic2V0TG9jYWxlTWVzc2FnZSIsImdldERhdGVUaW1lRm9ybWF0Iiwic2V0RGF0ZVRpbWVGb3JtYXQiLCJfY2xlYXJEYXRlVGltZUZvcm1hdCIsIm1lcmdlRGF0ZVRpbWVGb3JtYXQiLCJfbG9jYWxpemVEYXRlVGltZSIsImZvcm1hdHMiLCJJbnRsIiwiRGF0ZVRpbWVGb3JtYXQiLCJnZXROdW1iZXJGb3JtYXQiLCJzZXROdW1iZXJGb3JtYXQiLCJfY2xlYXJOdW1iZXJGb3JtYXQiLCJtZXJnZU51bWJlckZvcm1hdCIsIl9nZXROdW1iZXJGb3JtYXR0ZXIiLCJOdW1iZXJGb3JtYXQiLCJudW1iZXJGb3JtYXQiLCJmb3JtYXRUb1BhcnRzIiwiaW50bERlZmluZWQiLCJkYXRlVGltZUZvcm1hdCIsImVuIiwicHJvY2Vzc2luZ1BvcHVwIiwiZmlsZVF1ZXVlIiwiZmlsZXNJblF1ZXVlVG90YWwiLCJmaWxlc0luUXVldWVVcGxvYWRlZCIsImlzUHJvY2Vzc2luZ0ZpbGUiLCJ1cGxvYWRpbmdQcm9ncmVzcyIsIm11dGF0aW9ucyIsIlBST0NFU1NJTkdfUE9QVVAiLCJzdGF0dXMiLCJBRERfRklMRVNfVE9fUVVFVUUiLCJmaWxlIiwiU0hJRlRfRlJPTV9GSUxFX1FVRVVFIiwiUFJPQ0VTU0lOR19GSUxFIiwiVVBMT0FESU5HX0ZJTEVfUFJPR1JFU1MiLCJwZXJjZW50YWdlIiwiSU5DUkVBU0VfRklMRVNfSU5fUVVFVUVTX1RPVEFMIiwiY291bnQiLCJJTkNSRUFTRV9GSUxFU19JTl9RVUVVRV9VUExPQURFRCIsIkNMRUFSX1VQTE9BRF9QUk9HUkVTUyIsImRvd25sb2FkRm9sZGVyIiwiZm9sZGVyIiwiY29tbWl0IiwiZ2V0dGVycyIsInNoYXJlZERldGFpbCIsImF4aW9zIiwicmVzcG9uc2UiLCIkZG93bmxvYWRGaWxlIiwiJGlzU29tZXRoaW5nV3JvbmciLCJkb3dubG9hZEZpbGVzIiwiZmlsZXMiLCJmaWxlSW5mb0RldGFpbCIsInBvc3QiLCJpdGVtcyIsIm1vdmVJdGVtIiwiZGlzcGF0Y2giLCJ0b19pdGVtIiwibm9TZWxlY3RlZEl0ZW0iLCJpdGVtc1RvTW92ZSIsImxvZyIsInRvX2lkIiwiY3VycmVudEZvbGRlciIsImNyZWF0ZUZvbGRlciIsInBhcmVudF9pZCIsImV2ZW50cyIsInJlbmFtZUl0ZW0iLCJwZXJtaXNzaW9uIiwiX21ldGhvZCIsInVwbG9hZEZpbGVzIiwiZm9ybSIsImZpbGVTaXplIiwidG90YWxVcGxvYWRlZFNpemUiLCJDYW5jZWxUb2tlbiIsImNhbmNlbFRva2VuIiwiaGVhZGVycyIsIm9uVXBsb2FkUHJvZ3Jlc3MiLCJwZXJjZW50Q29tcGxldGVkIiwiZmxvb3IiLCJsb2FkZWQiLCJmb2xkZXJfaWQiLCIkaGFuZGxlVXBsb2FkaW5nIiwiZW1vamkiLCIkb24iLCJjYW5jZWwiLCJyZXN0b3JlSXRlbSIsIml0ZW1Ub1Jlc3RvcmUiLCJyZXN0b3JlVG9Ib21lIiwiYXBpIiwidG9faG9tZSIsImRlbGV0ZUl0ZW0iLCJpdGVtc1RvRGVsZXRlIiwiZm9yY2VfZGVsZXRlIiwiZGVsZXRlZF9hdCIsImJyb3dzZUhpc3RvcnkiLCJlbXB0eVRyYXNoIiwibG9hZGluZyIsIm5hdmlnYXRpb24iLCJpc1NlYXJjaGluZyIsImlzTG9hZGluZyIsImdldEZvbGRlciIsInBheWxvYWQiLCJzb3J0aW5nIiwiVVJJIiwiZ2V0TGF0ZXN0IiwiZ2V0U2hhcmVkIiwiZ2V0UGFydGljaXBhbnRVcGxvYWRzIiwiZ2V0VHJhc2giLCJ0cmFzaCIsImdldFNlYXJjaFJlc3VsdCIsImlzX3Byb3RlY3RlZCIsImdldEZvbGRlclRyZWUiLCJVUERBVEVfRk9MREVSX1RSRUUiLCJ0cmVlIiwiTE9BRElOR19TVEFURSIsIkZMVVNIX0ZPTERFUl9ISVNUT1JZIiwiRkxVU0hfU0hBUkVEIiwiZmluZCIsInNoYXJlZCIsIlNUT1JFX1BSRVZJT1VTX0ZPTERFUiIsIlJFTU9WRV9CUk9XU0VSX0hJU1RPUlkiLCJDSEFOR0VfSVRFTV9OQU1FIiwidXBkYXRlZEZpbGUiLCJjb2xvciIsIlJFTU9WRV9JVEVNX0ZJTEVJTkZPX0RFVEFJTCIsIkNMRUFSX0ZJTEVJTkZPX0RFVEFJTCIsIkxPQURfRklMRUlORk9fREVUQUlMIiwiR0VUX0ZJTEVJTkZPX0RFVEFJTCIsImNoZWNrRGF0YSIsIlNFTEVDVF9BTExfRklMRVMiLCJDSEFOR0VfU0VBUkNISU5HX1NUQVRFIiwic2VhcmNoU3RhdGUiLCJVUERBVEVfU0hBUkVEX0lURU0iLCJpdGVtX2lkIiwiQUREX05FV19GT0xERVIiLCJBRERfTkVXX0lURU1TIiwiUkVNT1ZFX0lURU0iLCJJTkNSRUFTRV9GT0xERVJfSVRFTSIsIlNUT1JFX0NVUlJFTlRfRk9MREVSIiwidXNlciIsImdldEFwcERhdGEiLCJyZWxhdGlvbnNoaXBzIiwic2V0dGluZ3MiLCJwYXltZW50X2FjdGl2YXRpb24iLCJsb2dPdXQiLCJwb3B1cCIsImFkZFRvRmF2b3VyaXRlcyIsImFkZEZhdm91cml0ZXMiLCJmYXZvdXJpdGVzIiwiZm9sZGVycyIsInB1c2hUb0Zhdm9yaXRlcyIsInJlbW92ZUZyb21GYXZvdXJpdGVzIiwiUkVUUklFVkVfVVNFUiIsIlNFVF9QRVJNSVNTSU9OIiwiREVTVFJPWV9EQVRBIiwiQUREX1RPX0ZBVk9VUklURVMiLCJVUERBVEVfTkFNRSIsIlVQREFURV9BVkFUQVIiLCJhdmF0YXIiLCJSRU1PVkVfSVRFTV9GUk9NX0ZBVk9VUklURVMiLCJVUERBVEVfTkFNRV9JTl9GQVZPVVJJVEVTIiwicGVybWlzc2lvbk9wdGlvbnMiLCJsYWJlbCIsInNoYXJlZEZpbGUiLCJicm93c2VTaGFyZWQiLCJnZXRTaW5nbGVGaWxlIiwiZ2V0U2hhcmVEZXRhaWwiLCJzaGFyZUNhbmNlbCIsInNpbmdsZUl0ZW0iLCJTRVRfU0hBUkVEX0RFVEFJTCIsIlNUT1JFX1NIQVJFRF9GSUxFIiwiZmlsZUluZm9QYW5lbFZpc2libGUiLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwiRmlsZVByZXZpZXdUeXBlIiwiaG9tZURpcmVjdG9yeSIsInJlcXVlc3RlZFBsYW4iLCJlbW9qaXMiLCJmaWVsZCIsInJvbGVzIiwiY291bnRyaWVzIiwiZXhwaXJhdGlvbkxpc3QiLCJjdXJyZW5jeUxpc3QiLCJ0aW1lem9uZXMiLCJmaWxlSW5mb1Zpc2libGUiLCJjaGFuZ2VQcmV2aWV3VHlwZSIsInByZXZpZXciLCJwcmV2aWV3VHlwZSIsInNldEl0ZW0iLCJmaWxlSW5mb1RvZ2dsZSIsInZpc2liaWxpdHkiLCJMT0FEX0VNT0pJU19MSVNUIiwiVVBEQVRFX1NPUlRJTkciLCJJTklUIiwicm9vdERpcmVjdG9yeSIsIlNFVF9TQUFTIiwiaXNTYWFTIiwiU0VUX1NUUklQRV9QVUJMSUNfS0VZIiwic3RyaXBlX3B1YmxpY19rZXkiLCJGSUxFX0lORk9fVE9HR0xFIiwiaXNWaXNpYmxlIiwiU0VUX0FVVEhPUklaRUQiLCJpc0F1dGhlbnRpY2F0ZWQiLCJTRVRfSU5ERVhfQ09OVEVOVCIsIkNIQU5HRV9QUkVWSUVXIiwiU1RPUkVfUkVRVUVTVEVEX1BMQU4iLCJwbGFuIiwiVnVleCIsIlN0b3JlIiwiZmlsZUZ1bmN0aW9ucyIsImZpbGVCcm93c2VyIiwidXNlckF1dGgiLCJzaGFyaW5nIiwiQWRtaW5OYXZpZ2F0aW9uIiwiU2Fzc05hdmlnYXRpb24iLCJQcm9maWxlTmF2aWdhdGlvbiIsIlN1YnNjcmlwdGlvbk5hdmlnYXRpb24iLCJSb3V0ZXIiLCJyb3V0ZXNPYXNpcyIsInJlcXVpcmVzQXV0aCIsInJvdXRlc0FkbWluIiwiQWRtaW5Nb2JpbGVNZW51IiwiVXNlclByb2ZpbGVNb2JpbGVNZW51Iiwicm91dGVzU2hhcmVkIiwicm91dGVzQXV0aCIsInJvdXRlc1VzZXIiLCJzYXZlZFBvc2l0aW9uIiwic29tZSIsInN0b3JlIiwiZGlyZWN0aXZlcyIsInJhd05hbWUiLCJleHByZXNzaW9uIiwiaXNWaXNpYmxlRGlzY2xhaW1lciIsImNsb3NlRGlzY2xhaW1lciIsInNsdWciLCJ1bkNsaWNrIiwiSGVscGVycyIsIiR1cGRhdGVUZXh0IiwiZGVib3VuY2UiLCIkc3RvcmUiLCIkdXBkYXRlSW1hZ2UiLCJpbWFnZSIsImZvcm1EYXRhIiwiRm9ybURhdGEiLCIkc2Nyb2xsVG9wIiwic2Nyb2xsVG9wIiwiJGdldEltYWdlIiwiJGdldENyZWRpdENhcmRCcmFuZCIsImJyYW5kIiwiJGdldEludm9pY2VMaW5rIiwiY3VzdG9tZXIiLCIkb3BlbkltYWdlT25OZXdUYWIiLCJvcGVuIiwiZm9jdXMiLCIkY3JlYXRlRm9sZGVyIiwiZm9sZGVyTmFtZSIsIiR1cGxvYWRGaWxlcyIsIiRjaGVja0ZpbGVNaW1ldHlwZSIsIiRjaGVja1VwbG9hZExpbWl0IiwiJHVwbG9hZEV4dGVybmFsRmlsZXMiLCJkYXRhVHJhbnNmZXIiLCJnZXRBc0ZpbGUiLCJjaHVua1NpemUiLCJjaHVua3NDZWlsIiwiY2h1bmtzIiwidXBsb2FkZWRTaXplIiwiaXNOb3RHZW5lcmFsRXJyb3IiLCJzdHJpcGVkX25hbWUiLCJmaWxlbmFtZSIsImlzTGFzdCIsImF0dGVtcHRzIiwiYW5jaG9yIiwiZG93bmxvYWQiLCJib2R5IiwiJGNsb3NlUG9wdXAiLCIkaXNUaGlzUm91dGUiLCJsb2NhdGlvbnMiLCIkaXNUaGlzTG9jYXRpb24iLCJjdXJyZW50TG9jYXRpb24iLCIkY2hlY2tQZXJtaXNzaW9uIiwiY3VycmVudFBlcm1pc3Npb24iLCIkaXNNb2JpbGUiLCJ0b01hdGNoSXRlbSIsIiRpc01pbmltYWxTY2FsZSIsImZpbGVzVmlld1dpZHRoIiwiJGlzQ29tcGFjdFNjYWxlIiwiJGlzRnVsbFNjYWxlIiwidmFsaWRhdGVkIiwibWltZXR5cGVzQmxhY2tsaXN0IiwiZmlsZVR5cGUiLCJtaW1ldHlwZSIsInVwbG9hZExpbWl0IiwidmFsaWRhdGUiLCJ1cGxvYWRMaW1pdEZvcm1hdHRlZCIsIiRnZXREYXRhQnlMb2NhdGlvbiIsIiRjaGVja09TIiwiY2xhc3NMaXN0IiwiYWRkIiwiJGlzQXBwbGUiLCJmYUJhcnMiLCJmYUNoZWNrIiwiZmFDaGV2cm9uRG93biIsImZhQ2hldnJvbkxlZnQiLCJmYUNoZXZyb25SaWdodCIsImZhRG93bmxvYWQiLCJmYUVsbGlwc2lzSCIsImZhRWxsaXBzaXNWIiwiZmFFeWVTbGFzaCIsImZhRmlsZSIsImZhRmlsZUF1ZGlvIiwiZmFGaWxlSW1hZ2UiLCJmYUZpbGVWaWRlbyIsImZhRm9sZGVyIiwiZmFGb2xkZXJQbHVzIiwiZmFIZGQiLCJmYUhvbWUiLCJmYUluZm8iLCJmYUxpbmsiLCJmYUxvY2siLCJmYUxvY2tPcGVuIiwiZmFQZW5jaWxBbHQiLCJmYVNlYXJjaCIsImZhU2hhcmUiLCJmYVNvcnQiLCJmYVN5bmNBbHQiLCJmYVRoIiwiZmFUaExpc3QiLCJmYVRpbWVzIiwiZmFUcmFzaEFsdCIsImZhVXBsb2FkIiwiZmFVc2VyIiwiZmFVc2VyRWRpdCIsImZhVXNlckZyaWVuZHMiLCJyZXF1aXJlIiwiRm9udEF3ZXNvbWVJY29uIiwicHJvZHVjdGlvblRpcCIsIm11bHRpU2VsZWN0IiwiY2xpZW50WSIsImNsaWVudFgiLCJBcHAiLCIkbW91bnQiLCJjb21tb24iLCJ1dGlscyIsIkludGVyY2VwdG9yTWFuYWdlciIsImhhbmRsZXJzIiwiZWplY3QiLCJiYXNlVXJsIiwiY3VycmVudERpciIsImZ1bGxNYXRjaCIsIm9yaWdVcmwiLCJuZXdVcmwiLCJ1bnF1b3RlZE9yaWdVcmwiLCIkMSIsImNsb3NlUG9wdXAiLCJidWlsZFVSTCIsImRpc3BhdGNoUmVxdWVzdCIsIm1lcmdlQ29uZmlnIiwiQXhpb3MiLCJpbnN0YW5jZUNvbmZpZyIsImludGVyY2VwdG9ycyIsIm1ldGhvZCIsImludGVyY2VwdG9yIiwiZ2V0VXJpIiwicGFyYW1zU2VyaWFsaXplciIsIkFycm93VXBJY29uIiwidmFsaWRhdG9yIiwiY3R4IiwieG1sbnMiLCJ2aWV3Qm94Iiwic3Ryb2tlIiwieDEiLCJ5MSIsIngyIiwieTIiLCJwb2ludHMiLCJCb3hJY29uIiwiQ2FsZW5kYXJJY29uIiwicngiLCJyeSIsIkNoZWNrU3F1YXJlSWNvbiIsIkNoZWNrSWNvbiIsIkNoZXZyb25Eb3duSWNvbiIsIkNoZXZyb25MZWZ0SWNvbiIsIkNoZXZyb25SaWdodEljb24iLCJDaGV2cm9uVXBJY29uIiwiQ2xvdWRPZmZJY29uIiwiQ2xvdWRJY29uIiwiQ29kZUljb24iLCJDb3JuZXJEb3duUmlnaHRJY29uIiwiQ3JlZGl0Q2FyZEljb24iLCJEYXRhYmFzZUljb24iLCJEb2xsYXJTaWduSWNvbiIsIkRvd25sb2FkQ2xvdWRJY29uIiwiRWRpdDJJY29uIiwiRXh0ZXJuYWxMaW5rSWNvbiIsIkV5ZU9mZkljb24iLCJFeWVJY29uIiwiRmlsZVRleHRJY29uIiwiRmlsZUljb24iLCJGb2xkZXJQbHVzSWNvbiIsIkZvbGRlckljb24iLCJHcmlkSWNvbiIsIkhhcmREcml2ZUljb24iLCJIb21lSWNvbiIsIkltYWdlSWNvbiIsIkluZm9JY29uIiwiTGlmZUJ1b3lJY29uIiwiTGlua0ljb24iLCJMaXN0SWNvbiIsIkxvY2tJY29uIiwiTWFpbEljb24iLCJNZW51SWNvbiIsIk1vbml0b3JJY29uIiwiTW9yZUhvcml6b250YWxJY29uIiwiTW9yZVZlcnRpY2FsSWNvbiIsIk11c2ljSWNvbiIsIlBhcGVyY2xpcEljb24iLCJQbHVzSWNvbiIsIlBvd2VySWNvbiIsIlByaW50ZXJJY29uIiwiUmVmcmVzaEN3SWNvbiIsIlNlYXJjaEljb24iLCJTZW5kSWNvbiIsIlNldHRpbmdzSWNvbiIsIlNoYXJlSWNvbiIsIlNtaWxlSWNvbiIsIlN0YXJJY29uIiwiVHJhc2gySWNvbiIsIlRyYXNoSWNvbiIsIlVubG9ja0ljb24iLCJVcGxvYWRDbG91ZEljb24iLCJVc2VyUGx1c0ljb24iLCJVc2VySWNvbiIsIlVzZXJzSWNvbiIsIlZpZGVvSWNvbiIsIlhTcXVhcmVJY29uIiwiWEljb24iLCJnb0JhY2siLCJzaG93TW9iaWxlTmF2aWdhdGlvbiIsInRoaXNBcmciLCJ1c2VTb3VyY2VNYXAiLCJjc3NNYXBwaW5nIiwiYnRvYSIsInNvdXJjZU1hcHBpbmciLCJzb3VyY2VNYXAiLCJ1bmVzY2FwZSIsInNvdXJjZVVSTHMiLCJzb3VyY2VzIiwic291cmNlUm9vdCIsImNzc1dpdGhNYXBwaW5nVG9TdHJpbmciLCJtZWRpYVF1ZXJ5IiwiYWxyZWFkeUltcG9ydGVkTW9kdWxlcyIsImlzRmluaXRlIiwidSIsImYiLCJnIiwiJCIsIkMiLCJGdW5jdGlvbiIsIl9sZW5ndGgiLCJrIiwiQSIsIk8iLCJTIiwiVCIsIkUiLCJOIiwiZ2V0VGltZSIsIkQiLCJMIiwiTSIsIkkiLCJGIiwiZGV2dG9vbHMiLCJlcnJvckhhbmRsZXIiLCJ3YXJuSGFuZGxlciIsImlnbm9yZWRFbGVtZW50cyIsImtleUNvZGVzIiwiaXNSZXNlcnZlZFRhZyIsImlzUmVzZXJ2ZWRBdHRyIiwiaXNVbmtub3duRWxlbWVudCIsImdldFRhZ05hbWVzcGFjZSIsInBhcnNlUGxhdGZvcm1UYWdOYW1lIiwibXVzdFVzZVByb3AiLCJhc3luYyIsIl9saWZlY3ljbGVIb29rcyIsIlIiLCJCIiwiSCIsIlUiLCJ6IiwiViIsIldYRW52aXJvbm1lbnQiLCJwbGF0Zm9ybSIsIksiLCJKIiwicSIsIlciLCJaIiwiRyIsIlgiLCJZIiwid2F0Y2giLCJRIiwiZWUiLCJWVUVfRU5WIiwibmUiLCJfX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fIiwiaWUiLCJSZWZsZWN0IiwiU2V0IiwiaGFzIiwiY2xlYXIiLCJhZSIsInNlIiwiY2UiLCJzdWJzIiwiYWRkU3ViIiwicmVtb3ZlU3ViIiwiZGVwZW5kIiwiYWRkRGVwIiwibm90aWZ5IiwidWUiLCJsZSIsImZlIiwicGUiLCJlbG0iLCJmbkNvbnRleHQiLCJmbk9wdGlvbnMiLCJmblNjb3BlSWQiLCJjb21wb25lbnRPcHRpb25zIiwiaXNSb290SW5zZXJ0IiwiaXNDb21tZW50IiwiaXNDbG9uZWQiLCJpc09uY2UiLCJhc3luY0ZhY3RvcnkiLCJhc3luY01ldGEiLCJpc0FzeW5jUGxhY2Vob2xkZXIiLCJkZSIsInZlIiwiaGUiLCJtZSIsInllIiwiZ2UiLCJfX29iX18iLCJvYnNlcnZlQXJyYXkiLCJkZXAiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiYmUiLCIkZSIsIndlIiwidm1Db3VudCIsIndhbGsiLCJDZSIsImlzRXh0ZW5zaWJsZSIsIl9pc1Z1ZSIsInhlIiwia2UiLCJBZSIsIk9lIiwiU2UiLCJUZSIsIkVlIiwiTmUiLCJtZXRob2RzIiwiaW5qZWN0IiwiY29tcHV0ZWQiLCJwcm92aWRlIiwiamUiLCJEZSIsIl9iYXNlIiwiZXh0ZW5kcyIsIm1peGlucyIsIkxlIiwiTWUiLCJQZSIsInByb3BzRGF0YSIsIl9wcm9wcyIsIkllIiwiRmUiLCJSZSIsImVycm9yQ2FwdHVyZWQiLCJCZSIsIkhlIiwiVWUiLCJ6ZSIsIlZlIiwiS2UiLCJKZSIsInFlIiwiV2UiLCJaZSIsIkdlIiwiWGUiLCJjcmVhdGVUZXh0Tm9kZSIsIm9ic2VydmUiLCJjaGFyYWN0ZXJEYXRhIiwiWWUiLCJRZSIsImV0IiwiaXNGcm96ZW4iLCJ0dCIsInBhc3NpdmUiLCJudCIsImZucyIsInJ0IiwiaXQiLCJtZXJnZWQiLCJvdCIsImF0Iiwic3QiLCJfaXNWTGlzdCIsImN0IiwiX3Byb3ZpZGVkIiwidXQiLCJsdCIsImZ0IiwiJHN0YWJsZSIsIiRrZXkiLCJwdCIsImR0IiwicHJveHkiLCJ2dCIsImh0IiwibXQiLCJ5dCIsImd0IiwiZG9tUHJvcHMiLCJidCIsIl9zdGF0aWNUcmVlcyIsInd0Iiwic3RhdGljUmVuZGVyRm5zIiwiX3JlbmRlclByb3h5IiwiQ3QiLCJ4dCIsImt0IiwiQXQiLCJPdCIsIlN0IiwiX28iLCJfcSIsIl9tIiwiX2YiLCJfayIsIl9iIiwiX3UiLCJfZyIsIl9wIiwiVHQiLCJfb3JpZ2luYWwiLCJfY29tcGlsZWQiLCJpbmplY3Rpb25zIiwiX3Njb3BlSWQiLCJQdCIsIkV0IiwiTnQiLCJqdCIsIl9pc0Rlc3Ryb3llZCIsIl9pc0NvbXBvbmVudCIsImlubGluZVRlbXBsYXRlIiwiQ3RvciIsIld0IiwiX3JlbmRlckNoaWxkcmVuIiwiX3Zub2RlIiwiJGF0dHJzIiwiJGxpc3RlbmVycyIsIl9wcm9wS2V5cyIsIl9wYXJlbnRMaXN0ZW5lcnMiLCJxdCIsImluc2VydCIsIl9pc01vdW50ZWQiLCJZdCIsIlh0IiwiZGVzdHJveSIsIkd0IiwiJGNoaWxkcmVuIiwiRHQiLCJMdCIsImVycm9yQ29tcCIsIkh0Iiwib3duZXJzIiwibG9hZGluZ0NvbXAiLCJCdCIsImRlbGF5IiwibW9kZWwiLCJfbWVyZ2VkIiwiTXQiLCJpcyIsInByZSIsIlJ0IiwiVXQiLCJ6dCIsIlZ0IiwiS3QiLCIkb2ZmIiwiSnQiLCJadCIsIl9oYXNIb29rRXZlbnQiLCJRdCIsInRuIiwibm4iLCJybiIsImFuIiwic24iLCJjbiIsImNyZWF0ZUV2ZW50IiwidGltZVN0YW1wIiwidW4iLCJiZWZvcmUiLCJfd2F0Y2hlciIsImxuIiwiX3dhdGNoZXJzIiwibGF6eSIsImFjdGl2ZSIsImRpcnR5IiwiZGVwcyIsIm5ld0RlcHMiLCJkZXBJZHMiLCJuZXdEZXBJZHMiLCJjbGVhbnVwRGVwcyIsImV2YWx1YXRlIiwidGVhcmRvd24iLCJwbiIsImRuIiwiaG4iLCJtbiIsInluIiwiZ24iLCJfY29tcHV0ZWRXYXRjaGVycyIsImJuIiwic3VwZXIiLCJzdXBlck9wdGlvbnMiLCJzZWFsZWRPcHRpb25zIiwiZXh0ZW5kT3B0aW9ucyIsInduIiwiX2luaXQiLCJ4biIsImtuIiwiQW4iLCJPbiIsIl91aWQiLCJfY29tcG9uZW50VGFnIiwiJHJlZnMiLCJfZXZlbnRzIiwidm4iLCIkZGVsZXRlIiwiX3VwZGF0ZSIsIiRlbCIsIl9fcGF0Y2hfXyIsIl9fdnVlX18iLCJTbiIsIlRuIiwiS2VlcEFsaXZlIiwiaW5jbHVkZSIsImV4Y2x1ZGUiLCJtb3VudGVkIiwibWVyZ2VPcHRpb25zIiwiZGVsZXRlIiwib2JzZXJ2YWJsZSIsIl9pbnN0YWxsZWRQbHVnaW5zIiwiX0N0b3IiLCJDbiIsInNzckNvbnRleHQiLCJFbiIsIk5uIiwiam4iLCJEbiIsIkxuIiwiSW4iLCJGbiIsIlBuIiwiUm4iLCJIbiIsIlVuIiwiem4iLCJWbiIsIktuIiwic3ZnIiwibWF0aCIsIkpuIiwicW4iLCJXbiIsIlpuIiwiR24iLCJYbiIsIlluIiwiUW4iLCJtdWx0aXBsZSIsImNyZWF0ZUVsZW1lbnROUyIsImNyZWF0ZUNvbW1lbnQiLCJyZW1vdmVDaGlsZCIsInBhcmVudE5vZGUiLCJuZXh0U2libGluZyIsInNldFRleHRDb250ZW50Iiwic2V0U3R5bGVTY29wZSIsImVyIiwidHIiLCJyZWZJbkZvciIsIm5yIiwicnIiLCJpciIsIm9yIiwiYXIiLCJzciIsInVyIiwib2xkQXJnIiwiZnIiLCJjb21wb25lbnRVcGRhdGVkIiwiaW5zZXJ0ZWQiLCJjciIsImxyIiwicHIiLCJkciIsImluaGVyaXRBdHRycyIsInZyIiwicmVtb3ZlQXR0cmlidXRlTlMiLCJyZW1vdmVBdHRyaWJ1dGUiLCJociIsIk1uIiwic2V0QXR0cmlidXRlTlMiLCJfX2llcGgiLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJtciIsInlyIiwiQm4iLCJfdHJhbnNpdGlvbkNsYXNzZXMiLCJfcHJldkNsYXNzIiwiZ3IiLCJfciIsImJyIiwiJHIiLCJ3ciIsIkNyIiwieHIiLCJrciIsIkFyIiwiT3IiLCJTciIsIlRyIiwiRXIiLCJSciIsImR5bmFtaWMiLCJwbGFpbiIsIk5yIiwiZHluYW1pY0F0dHJzIiwianIiLCJhdHRyc01hcCIsImF0dHJzTGlzdCIsIkRyIiwiaXNEeW5hbWljQXJnIiwiTHIiLCJNciIsInJpZ2h0IiwibWlkZGxlIiwibmF0aXZlIiwibmF0aXZlRXZlbnRzIiwiSXIiLCJGciIsIlByIiwiSHIiLCJudW1iZXIiLCJCciIsImxhc3RJbmRleE9mIiwienIiLCJWciIsIlVyIiwiSnIiLCJLciIsInFyIiwiV3IiLCJHciIsIlFyIiwiWHIiLCJZciIsIl93cmFwcGVyIiwib3duZXJEb2N1bWVudCIsImVpIiwiY2hhbmdlIiwidGkiLCJuaSIsInJpIiwiX3ZhbHVlIiwiaWkiLCJmaXJzdENoaWxkIiwiY29tcG9zaW5nIiwiYWN0aXZlRWxlbWVudCIsIl92TW9kaWZpZXJzIiwib2kiLCJhaSIsInNpIiwiY2kiLCJzdGF0aWNTdHlsZSIsInVpIiwibGkiLCJmaSIsInBpIiwic2V0UHJvcGVydHkiLCJ2aSIsImRpIiwiaGkiLCJub3JtYWxpemVkU3R5bGUiLCJtaSIsInlpIiwiZ2kiLCJiaSIsIiRpIiwiZW50ZXJDbGFzcyIsImVudGVyVG9DbGFzcyIsImVudGVyQWN0aXZlQ2xhc3MiLCJsZWF2ZUNsYXNzIiwibGVhdmVUb0NsYXNzIiwibGVhdmVBY3RpdmVDbGFzcyIsIndpIiwiQ2kiLCJ4aSIsImtpIiwiQWkiLCJPaSIsIlNpIiwib250cmFuc2l0aW9uZW5kIiwib253ZWJraXR0cmFuc2l0aW9uZW5kIiwib25hbmltYXRpb25lbmQiLCJvbndlYmtpdGFuaW1hdGlvbmVuZCIsIlRpIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiRWkiLCJOaSIsImppIiwiRGkiLCJNaSIsInByb3BDb3VudCIsIkxpIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsIklpIiwiaGFzVHJhbnNmb3JtIiwiRmkiLCJQaSIsIl9sZWF2ZUNiIiwiX2VudGVyQ2IiLCJub2RlVHlwZSIsImFwcGVhckNsYXNzIiwiYXBwZWFyVG9DbGFzcyIsImFwcGVhckFjdGl2ZUNsYXNzIiwiZW50ZXIiLCJhZnRlckVudGVyIiwiZW50ZXJDYW5jZWxsZWQiLCJiZWZvcmVBcHBlYXIiLCJhcHBlYXIiLCJhZnRlckFwcGVhciIsImFwcGVhckNhbmNlbGxlZCIsImR1cmF0aW9uIiwiQmkiLCJzaG93IiwiX3BlbmRpbmciLCJIaSIsIlJpIiwiYmVmb3JlTGVhdmUiLCJsZWF2ZSIsImFmdGVyTGVhdmUiLCJsZWF2ZUNhbmNlbGxlZCIsImRlbGF5TGVhdmUiLCJVaSIsInppIiwibm9kZU9wcyIsImFjdGl2YXRlIiwicGVuZGluZ0luc2VydCIsInBvc3RwYXRjaCIsImhhc0NoaWxkTm9kZXMiLCJoYXNBdHRyaWJ1dGUiLCJ2bW9kZWwiLCJYaSIsIlZpIiwiX3ZPcHRpb25zIiwiS2kiLCJXaSIsIlppIiwiR2kiLCJxaSIsIkppIiwic2VsZWN0ZWQiLCJzZWxlY3RlZEluZGV4IiwiaW5pdEV2ZW50IiwiZGlzcGF0Y2hFdmVudCIsIllpIiwiUWkiLCJfX3ZPcmlnaW5hbERpc3BsYXkiLCJkaXNwbGF5IiwiZW8iLCJubyIsInJvIiwiaW8iLCJvbyIsImFvIiwiX2xlYXZpbmciLCJzbyIsIm1vdmVDbGFzcyIsImNvIiwiX21vdmVDYiIsInVvIiwibmV3UG9zIiwibG8iLCJwb3MiLCJtb3ZlZCIsIldlYmtpdFRyYW5zZm9ybSIsInRyYW5zaXRpb25EdXJhdGlvbiIsImZvIiwiVHJhbnNpdGlvbiIsIlRyYW5zaXRpb25Hcm91cCIsImtlcHQiLCJwcmV2Q2hpbGRyZW4iLCJyZW1vdmVkIiwiaGFzTW92ZSIsIl9yZWZsb3ciLCJvZmZzZXRIZWlnaHQiLCJwcm9wZXJ0eU5hbWUiLCJfaGFzTW92ZSIsImNsb25lTm9kZSIsIkhUTUxVbmtub3duRWxlbWVudCIsIkhUTUxFbGVtZW50IiwieW8iLCJwbyIsInZvIiwiaG8iLCJtbyIsInN0YXRpY0tleXMiLCJ0cmFuc2Zvcm1Ob2RlIiwiY2xhc3NCaW5kaW5nIiwiZ2VuRGF0YSIsInN0eWxlQmluZGluZyIsImJvIiwiJG8iLCJ3byIsIkNvIiwieG8iLCJrbyIsIkFvIiwiT28iLCJTbyIsIlRvIiwiRW8iLCJObyIsImpvIiwiRG8iLCJMbyIsIk1vIiwiSW8iLCJGbyIsIlBvIiwiUm8iLCJIbyIsIkJvIiwiVW8iLCJ6byIsIlZvIiwiS28iLCJKbyIsInFvIiwiV28iLCJabyIsIkdvIiwiWG8iLCJZbyIsIlFvIiwiZWEiLCJ0YSIsIm5hIiwicmEiLCJpYSIsIm9hIiwiYWEiLCJzYSIsImNhIiwibWEiLCJyYXdBdHRyc01hcCIsImZhIiwiZm9yIiwic2xvdFNjb3BlIiwic2xvdFRhcmdldCIsInNsb3RUYXJnZXREeW5hbWljIiwidmEiLCJzbG90TmFtZSIsImhhc0JpbmRpbmdzIiwiaGEiLCJjYW1lbCIsInBhIiwiaXRlcmF0b3IxIiwiaXRlcmF0b3IyIiwiZGEiLCJpZkNvbmRpdGlvbnMiLCJ5YSIsImdhIiwiX2EiLCIkYSIsIndhIiwiYmEiLCJwcmVUcmFuc2Zvcm1Ob2RlIiwicHJvY2Vzc2VkIiwiaWYiLCJlbHNlIiwiZWxzZWlmIiwiQ2EiLCJleHBlY3RIVE1MIiwiaXNQcmVUYWciLCJpc1VuYXJ5VGFnIiwiY2FuQmVMZWZ0T3BlblRhZyIsInhhIiwiQWEiLCJPYSIsIlNhIiwiVGEiLCJlc2MiLCJ0YWIiLCJzcGFjZSIsInVwIiwiZG93biIsIkVhIiwiTmEiLCJqYSIsInN0b3AiLCJwcmV2ZW50IiwiY3RybCIsImFsdCIsIkRhIiwiTGEiLCJNYSIsIklhIiwid3JhcExpc3RlbmVycyIsIndyYXBEYXRhIiwiY2xvYWsiLCJGYSIsInRyYW5zZm9ybXMiLCJkYXRhR2VuRm5zIiwibWF5YmVDb21wb25lbnQiLCJvbmNlSWQiLCJQYSIsIlJhIiwic3RhdGljUm9vdCIsInN0YXRpY1Byb2Nlc3NlZCIsIkhhIiwib25jZVByb2Nlc3NlZCIsIkJhIiwiZm9yUHJvY2Vzc2VkIiwiemEiLCJpZlByb2Nlc3NlZCIsIlVhIiwicWEiLCJHYSIsIlZhIiwic3RhdGljSW5Gb3IiLCJLYSIsIkphIiwiV2EiLCJaYSIsIlhhIiwiWWEiLCJjb2RlIiwiUWEiLCJkZWxpbWl0ZXJzIiwiZXMiLCJ0cyIsInByZXNlcnZlV2hpdGVzcGFjZSIsIndoaXRlc3BhY2UiLCJmb3JiaWRkZW4iLCJjaGFycyIsInNob3VsZEtlZXBDb21tZW50IiwiY29tbWVudCIsInN1YnN0cmluZyIsInVuYXJ5U2xhc2giLCJzaG91bGREZWNvZGVOZXdsaW5lc0ZvckhyZWYiLCJzaG91bGREZWNvZGVOZXdsaW5lcyIsImxvd2VyQ2FzZWRUYWciLCJjb21tZW50cyIsIm91dHB1dFNvdXJjZVJhbmdlIiwicGxhY2Vob2xkZXIiLCJsYXN0SW5kZXgiLCJsYSIsIm9wdGltaXplIiwic3RhdGljIiwia2EiLCJhc3QiLCJlcnJvcnMiLCJ0aXBzIiwiY29tcGlsZVRvRnVuY3Rpb25zIiwicnMiLCJvcyIsImFzIiwic3MiLCJjcyIsInRlbXBsYXRlIiwib3V0ZXJIVE1MIiwibm9ybWFsaXplSGVhZGVyTmFtZSIsIkRFRkFVTFRfQ09OVEVOVF9UWVBFIiwic2V0Q29udGVudFR5cGVJZlVuc2V0IiwiaXNVbmRlZmluZWQiLCJhZGFwdGVyIiwiWE1MSHR0cFJlcXVlc3QiLCJ0cmFuc2Zvcm1SZXF1ZXN0IiwiaXNGb3JtRGF0YSIsImlzQXJyYXlCdWZmZXIiLCJpc0J1ZmZlciIsImlzU3RyZWFtIiwiaXNGaWxlIiwiaXNCbG9iIiwiaXNBcnJheUJ1ZmZlclZpZXciLCJidWZmZXIiLCJpc1VSTFNlYXJjaFBhcmFtcyIsInRyYW5zZm9ybVJlc3BvbnNlIiwieHNyZkNvb2tpZU5hbWUiLCJ4c3JmSGVhZGVyTmFtZSIsIm1heENvbnRlbnRMZW5ndGgiLCJ2YWxpZGF0ZVN0YXR1cyIsIm5vcm1hbGl6ZUNvbXBvbmVudCIsInNjcmlwdEV4cG9ydHMiLCJmdW5jdGlvbmFsVGVtcGxhdGUiLCJpbmplY3RTdHlsZXMiLCJzY29wZUlkIiwibW9kdWxlSWRlbnRpZmllciIsInNoYWRvd01vZGUiLCJfX1ZVRV9TU1JfQ09OVEVYVF9fIiwiX3JlZ2lzdGVyZWRDb21wb25lbnRzIiwiX3NzclJlZ2lzdGVyIiwic2hhZG93Um9vdCIsIl9pbmplY3RTdHlsZXMiLCJvcmlnaW5hbFJlbmRlciIsImV4aXN0aW5nIiwiZGV2dG9vbEhvb2siLCJkZWVwQ29weSIsIm9yaWdpbmFsIiwiY29weSIsImZvckVhY2hWYWx1ZSIsIk1vZHVsZSIsInJhd01vZHVsZSIsInJ1bnRpbWUiLCJfY2hpbGRyZW4iLCJfcmF3TW9kdWxlIiwicmF3U3RhdGUiLCJuYW1lc3BhY2VkIiwiYWRkQ2hpbGQiLCJnZXRDaGlsZCIsImhhc0NoaWxkIiwiZm9yRWFjaENoaWxkIiwiZm9yRWFjaEdldHRlciIsImZvckVhY2hBY3Rpb24iLCJmb3JFYWNoTXV0YXRpb24iLCJNb2R1bGVDb2xsZWN0aW9uIiwicmF3Um9vdE1vZHVsZSIsInJlZ2lzdGVyIiwiZ2V0TmFtZXNwYWNlIiwidGFyZ2V0TW9kdWxlIiwibmV3TW9kdWxlIiwicmF3Q2hpbGRNb2R1bGUiLCJ1bnJlZ2lzdGVyIiwiaXNSZWdpc3RlcmVkIiwicGx1Z2lucyIsIl9jb21taXR0aW5nIiwiX2FjdGlvbnMiLCJfYWN0aW9uU3Vic2NyaWJlcnMiLCJfbXV0YXRpb25zIiwiX3dyYXBwZWRHZXR0ZXJzIiwiX21vZHVsZXMiLCJfbW9kdWxlc05hbWVzcGFjZU1hcCIsIl9zdWJzY3JpYmVycyIsIl93YXRjaGVyVk0iLCJfbWFrZUxvY2FsR2V0dGVyc0NhY2hlIiwiaW5zdGFsbE1vZHVsZSIsInJlc2V0U3RvcmVWTSIsInBsdWdpbiIsIl9kZXZ0b29sSG9vayIsInRhcmdldFN0YXRlIiwic3Vic2NyaWJlIiwibXV0YXRpb24iLCJwcmVwZW5kIiwic3Vic2NyaWJlQWN0aW9uIiwiZGV2dG9vbFBsdWdpbiIsInByb3RvdHlwZUFjY2Vzc29ycyQxIiwiZ2VuZXJpY1N1YnNjcmliZSIsInJlc2V0U3RvcmUiLCJob3QiLCJvbGRWbSIsIndyYXBwZWRHZXR0ZXJzIiwiJCRzdGF0ZSIsImVuYWJsZVN0cmljdE1vZGUiLCJfd2l0aENvbW1pdCIsInJvb3RTdGF0ZSIsImlzUm9vdCIsInBhcmVudFN0YXRlIiwiZ2V0TmVzdGVkU3RhdGUiLCJtb2R1bGVOYW1lIiwibG9jYWwiLCJub05hbWVzcGFjZSIsIl90eXBlIiwiX3BheWxvYWQiLCJfb3B0aW9ucyIsInVuaWZ5T2JqZWN0U3R5bGUiLCJnZXR0ZXJzUHJveHkiLCJzcGxpdFBvcyIsImxvY2FsVHlwZSIsIm1ha2VMb2NhbEdldHRlcnMiLCJtYWtlTG9jYWxDb250ZXh0IiwicmVnaXN0ZXJNdXRhdGlvbiIsInJvb3RHZXR0ZXJzIiwicmVnaXN0ZXJBY3Rpb24iLCJyYXdHZXR0ZXIiLCJyZWdpc3RlckdldHRlciIsInZ1ZXhJbml0IiwiYXBwbHlNaXhpbiIsImVudHJ5IiwiYWZ0ZXIiLCJyZWdpc3Rlck1vZHVsZSIsInByZXNlcnZlU3RhdGUiLCJ1bnJlZ2lzdGVyTW9kdWxlIiwiaGFzTW9kdWxlIiwiaG90VXBkYXRlIiwibmV3T3B0aW9ucyIsImNvbW1pdHRpbmciLCJtYXBTdGF0ZSIsIm5vcm1hbGl6ZU5hbWVzcGFjZSIsInN0YXRlcyIsIm5vcm1hbGl6ZU1hcCIsImdldE1vZHVsZUJ5TmFtZXNwYWNlIiwidnVleCIsIm1hcE11dGF0aW9ucyIsIm1hcEdldHRlcnMiLCJtYXBBY3Rpb25zIiwiaXNWYWxpZE1hcCIsImhlbHBlciIsInN0YXJ0TWVzc2FnZSIsImxvZ2dlciIsImNvbGxhcHNlZCIsImdyb3VwQ29sbGFwc2VkIiwiZW5kTWVzc2FnZSIsImdyb3VwRW5kIiwiZ2V0Rm9ybWF0dGVkVGltZSIsInRpbWUiLCJwYWQiLCJnZXRIb3VycyIsImdldE1pbnV0ZXMiLCJnZXRTZWNvbmRzIiwiZ2V0TWlsbGlzZWNvbmRzIiwibnVtIiwibWF4TGVuZ3RoIiwidGltZXMiLCJjcmVhdGVOYW1lc3BhY2VkSGVscGVycyIsImNyZWF0ZUxvZ2dlciIsInN0YXRlQmVmb3JlIiwic3RhdGVBZnRlciIsInRyYW5zZm9ybWVyIiwibXV0YXRpb25UcmFuc2Zvcm1lciIsIm11dCIsImFjdGlvbkZpbHRlciIsImFjdGlvblRyYW5zZm9ybWVyIiwiYWN0IiwibG9nTXV0YXRpb25zIiwibG9nQWN0aW9ucyIsInByZXZTdGF0ZSIsIm5leHRTdGF0ZSIsImZvcm1hdHRlZFRpbWUiLCJmb3JtYXR0ZWRNdXRhdGlvbiIsImZvcm1hdHRlZEFjdGlvbiIsImVuaGFuY2VFcnJvciIsIl9fQ0FOQ0VMX18iLCJGVU5DX0VSUk9SX1RFWFQiLCJQTEFDRUhPTERFUiIsIndyYXBGbGFncyIsImFyZ3NUYWciLCJhcnJheVRhZyIsImJvb2xUYWciLCJkYXRlVGFnIiwiZXJyb3JUYWciLCJmdW5jVGFnIiwiZ2VuVGFnIiwibWFwVGFnIiwibnVtYmVyVGFnIiwib2JqZWN0VGFnIiwicmVnZXhwVGFnIiwic2V0VGFnIiwic3RyaW5nVGFnIiwic3ltYm9sVGFnIiwid2Vha01hcFRhZyIsImFycmF5QnVmZmVyVGFnIiwiZGF0YVZpZXdUYWciLCJmbG9hdDMyVGFnIiwiZmxvYXQ2NFRhZyIsImludDhUYWciLCJpbnQxNlRhZyIsImludDMyVGFnIiwidWludDhUYWciLCJ1aW50MTZUYWciLCJ1aW50MzJUYWciLCJyZUVtcHR5U3RyaW5nTGVhZGluZyIsInJlRW1wdHlTdHJpbmdNaWRkbGUiLCJyZUVtcHR5U3RyaW5nVHJhaWxpbmciLCJyZUVzY2FwZWRIdG1sIiwicmVVbmVzY2FwZWRIdG1sIiwicmVIYXNFc2NhcGVkSHRtbCIsInJlSGFzVW5lc2NhcGVkSHRtbCIsInJlRXNjYXBlIiwicmVFdmFsdWF0ZSIsInJlSW50ZXJwb2xhdGUiLCJyZUlzRGVlcFByb3AiLCJyZUlzUGxhaW5Qcm9wIiwicmVQcm9wTmFtZSIsInJlUmVnRXhwQ2hhciIsInJlSGFzUmVnRXhwQ2hhciIsInJlVHJpbSIsInJlVHJpbVN0YXJ0IiwicmVUcmltRW5kIiwicmVXcmFwQ29tbWVudCIsInJlV3JhcERldGFpbHMiLCJyZVNwbGl0RGV0YWlscyIsInJlQXNjaWlXb3JkIiwicmVFc2NhcGVDaGFyIiwicmVFc1RlbXBsYXRlIiwicmVGbGFncyIsInJlSXNCYWRIZXgiLCJyZUlzQmluYXJ5IiwicmVJc0hvc3RDdG9yIiwicmVJc09jdGFsIiwicmVJc1VpbnQiLCJyZUxhdGluIiwicmVOb01hdGNoIiwicmVVbmVzY2FwZWRTdHJpbmciLCJyc0NvbWJvUmFuZ2UiLCJyc0NvbWJvTWFya3NSYW5nZSIsInJzQnJlYWtSYW5nZSIsInJzTWF0aE9wUmFuZ2UiLCJyc0FzdHJhbCIsInJzQnJlYWsiLCJyc0NvbWJvIiwicnNEaWdpdHMiLCJyc0RpbmdiYXQiLCJyc0xvd2VyIiwicnNNaXNjIiwicnNGaXR6IiwicnNOb25Bc3RyYWwiLCJyc1JlZ2lvbmFsIiwicnNTdXJyUGFpciIsInJzVXBwZXIiLCJyc01pc2NMb3dlciIsInJzTWlzY1VwcGVyIiwicmVPcHRNb2QiLCJyc1NlcSIsInJzRW1vamkiLCJyc1N5bWJvbCIsInJlQXBvcyIsInJlQ29tYm9NYXJrIiwicmVVbmljb2RlIiwicmVVbmljb2RlV29yZCIsInJlSGFzVW5pY29kZSIsInJlSGFzVW5pY29kZVdvcmQiLCJjb250ZXh0UHJvcHMiLCJ0ZW1wbGF0ZUNvdW50ZXIiLCJ0eXBlZEFycmF5VGFncyIsImNsb25lYWJsZVRhZ3MiLCJzdHJpbmdFc2NhcGVzIiwiZnJlZVBhcnNlRmxvYXQiLCJmcmVlUGFyc2VJbnQiLCJmcmVlR2xvYmFsIiwiZnJlZVNlbGYiLCJmcmVlRXhwb3J0cyIsImZyZWVNb2R1bGUiLCJtb2R1bGVFeHBvcnRzIiwiZnJlZVByb2Nlc3MiLCJub2RlVXRpbCIsInR5cGVzIiwibm9kZUlzQXJyYXlCdWZmZXIiLCJub2RlSXNEYXRlIiwiaXNEYXRlIiwibm9kZUlzTWFwIiwiaXNNYXAiLCJub2RlSXNSZWdFeHAiLCJpc1JlZ0V4cCIsIm5vZGVJc1NldCIsImlzU2V0Iiwibm9kZUlzVHlwZWRBcnJheSIsImlzVHlwZWRBcnJheSIsImFycmF5QWdncmVnYXRvciIsInNldHRlciIsIml0ZXJhdGVlIiwiYWNjdW11bGF0b3IiLCJhcnJheUVhY2giLCJhcnJheUVhY2hSaWdodCIsImFycmF5RXZlcnkiLCJwcmVkaWNhdGUiLCJhcnJheUZpbHRlciIsInJlc0luZGV4IiwiYXJyYXlJbmNsdWRlcyIsImJhc2VJbmRleE9mIiwiYXJyYXlJbmNsdWRlc1dpdGgiLCJjb21wYXJhdG9yIiwiYXJyYXlNYXAiLCJhcnJheVB1c2giLCJhcnJheVJlZHVjZSIsImluaXRBY2N1bSIsImFycmF5UmVkdWNlUmlnaHQiLCJhcnJheVNvbWUiLCJhc2NpaVNpemUiLCJiYXNlUHJvcGVydHkiLCJiYXNlRmluZEtleSIsImNvbGxlY3Rpb24iLCJlYWNoRnVuYyIsImJhc2VGaW5kSW5kZXgiLCJmcm9tSW5kZXgiLCJmcm9tUmlnaHQiLCJzdHJpY3RJbmRleE9mIiwiYmFzZUlzTmFOIiwiYmFzZUluZGV4T2ZXaXRoIiwiYmFzZU1lYW4iLCJiYXNlU3VtIiwiYmFzZVByb3BlcnR5T2YiLCJiYXNlUmVkdWNlIiwiYmFzZVRpbWVzIiwiYmFzZVVuYXJ5IiwiYmFzZVZhbHVlcyIsImNhY2hlSGFzIiwiY2hhcnNTdGFydEluZGV4Iiwic3RyU3ltYm9scyIsImNoclN5bWJvbHMiLCJjaGFyc0VuZEluZGV4IiwiY291bnRIb2xkZXJzIiwiZGVidXJyTGV0dGVyIiwiZXNjYXBlSHRtbENoYXIiLCJlc2NhcGVTdHJpbmdDaGFyIiwiY2hyIiwiaGFzVW5pY29kZSIsInN0cmluZyIsIm1hcFRvQXJyYXkiLCJvdmVyQXJnIiwicmVwbGFjZUhvbGRlcnMiLCJzZXRUb0FycmF5Iiwic2V0VG9QYWlycyIsInN0cmluZ1NpemUiLCJ1bmljb2RlU2l6ZSIsInN0cmluZ1RvQXJyYXkiLCJ1bmljb2RlVG9BcnJheSIsImFzY2lpVG9BcnJheSIsInVuZXNjYXBlSHRtbENoYXIiLCJydW5JbkNvbnRleHQiLCJ1aWQiLCJwaWNrIiwiYXJyYXlQcm90byIsImZ1bmNQcm90byIsIm9iamVjdFByb3RvIiwiY29yZUpzRGF0YSIsImZ1bmNUb1N0cmluZyIsImlkQ291bnRlciIsIm1hc2tTcmNLZXkiLCJJRV9QUk9UTyIsIm5hdGl2ZU9iamVjdFRvU3RyaW5nIiwib2JqZWN0Q3RvclN0cmluZyIsIm9sZERhc2giLCJyZUlzTmF0aXZlIiwiQnVmZmVyIiwiVWludDhBcnJheSIsImFsbG9jVW5zYWZlIiwiZ2V0UHJvdG90eXBlIiwib2JqZWN0Q3JlYXRlIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJzcHJlYWRhYmxlU3ltYm9sIiwiaXNDb25jYXRTcHJlYWRhYmxlIiwic3ltSXRlcmF0b3IiLCJzeW1Ub1N0cmluZ1RhZyIsImdldE5hdGl2ZSIsImN0eENsZWFyVGltZW91dCIsImN0eE5vdyIsImN0eFNldFRpbWVvdXQiLCJuYXRpdmVDZWlsIiwibmF0aXZlRmxvb3IiLCJuYXRpdmVHZXRTeW1ib2xzIiwibmF0aXZlSXNCdWZmZXIiLCJuYXRpdmVJc0Zpbml0ZSIsIm5hdGl2ZUpvaW4iLCJuYXRpdmVLZXlzIiwibmF0aXZlTWF4IiwibmF0aXZlTWluIiwibmF0aXZlTm93IiwibmF0aXZlUGFyc2VJbnQiLCJuYXRpdmVSYW5kb20iLCJuYXRpdmVSZXZlcnNlIiwiRGF0YVZpZXciLCJNYXAiLCJXZWFrTWFwIiwibmF0aXZlQ3JlYXRlIiwibWV0YU1hcCIsInJlYWxOYW1lcyIsImRhdGFWaWV3Q3RvclN0cmluZyIsInRvU291cmNlIiwibWFwQ3RvclN0cmluZyIsInByb21pc2VDdG9yU3RyaW5nIiwic2V0Q3RvclN0cmluZyIsIndlYWtNYXBDdG9yU3RyaW5nIiwic3ltYm9sUHJvdG8iLCJzeW1ib2xWYWx1ZU9mIiwidmFsdWVPZiIsInN5bWJvbFRvU3RyaW5nIiwibG9kYXNoIiwiaXNPYmplY3RMaWtlIiwiTGF6eVdyYXBwZXIiLCJMb2Rhc2hXcmFwcGVyIiwid3JhcHBlckNsb25lIiwiYmFzZUNyZWF0ZSIsInByb3RvIiwiYmFzZUxvZGFzaCIsImNoYWluQWxsIiwiX193cmFwcGVkX18iLCJfX2FjdGlvbnNfXyIsIl9fY2hhaW5fXyIsIl9faW5kZXhfXyIsIl9fdmFsdWVzX18iLCJfX2Rpcl9fIiwiX19maWx0ZXJlZF9fIiwiX19pdGVyYXRlZXNfXyIsIl9fdGFrZUNvdW50X18iLCJfX3ZpZXdzX18iLCJIYXNoIiwiZW50cmllcyIsIkxpc3RDYWNoZSIsIk1hcENhY2hlIiwiU2V0Q2FjaGUiLCJfX2RhdGFfXyIsIlN0YWNrIiwiYXJyYXlMaWtlS2V5cyIsImluaGVyaXRlZCIsImlzQXJyIiwiaXNBcmciLCJpc0FyZ3VtZW50cyIsImlzQnVmZiIsImlzVHlwZSIsInNraXBJbmRleGVzIiwiaXNJbmRleCIsImFycmF5U2FtcGxlIiwiYmFzZVJhbmRvbSIsImFycmF5U2FtcGxlU2l6ZSIsInNodWZmbGVTZWxmIiwiY29weUFycmF5IiwiYmFzZUNsYW1wIiwiYXJyYXlTaHVmZmxlIiwiYXNzaWduTWVyZ2VWYWx1ZSIsImVxIiwiYmFzZUFzc2lnblZhbHVlIiwiYXNzaWduVmFsdWUiLCJvYmpWYWx1ZSIsImFzc29jSW5kZXhPZiIsImJhc2VBZ2dyZWdhdG9yIiwiYmFzZUVhY2giLCJiYXNlQXNzaWduIiwiY29weU9iamVjdCIsImJhc2VBdCIsInNraXAiLCJsb3dlciIsInVwcGVyIiwiYmFzZUNsb25lIiwiYml0bWFzayIsImN1c3RvbWl6ZXIiLCJpc0RlZXAiLCJpc0ZsYXQiLCJpc0Z1bGwiLCJpbnB1dCIsImluaXRDbG9uZUFycmF5IiwiZ2V0VGFnIiwiaXNGdW5jIiwiY2xvbmVCdWZmZXIiLCJpbml0Q2xvbmVPYmplY3QiLCJnZXRTeW1ib2xzSW4iLCJjb3B5U3ltYm9sc0luIiwia2V5c0luIiwiYmFzZUFzc2lnbkluIiwiZ2V0U3ltYm9scyIsImNvcHlTeW1ib2xzIiwiY2xvbmVBcnJheUJ1ZmZlciIsImRhdGFWaWV3IiwiYnl0ZU9mZnNldCIsImJ5dGVMZW5ndGgiLCJjbG9uZURhdGFWaWV3IiwiY2xvbmVUeXBlZEFycmF5IiwicmVnZXhwIiwiY2xvbmVSZWdFeHAiLCJpbml0Q2xvbmVCeVRhZyIsInN0YWNrZWQiLCJzdWJWYWx1ZSIsImdldEFsbEtleXNJbiIsImdldEFsbEtleXMiLCJiYXNlQ29uZm9ybXNUbyIsImJhc2VEZWxheSIsIndhaXQiLCJiYXNlRGlmZmVyZW5jZSIsImlzQ29tbW9uIiwidmFsdWVzTGVuZ3RoIiwidmFsdWVzSW5kZXgiLCJ0ZW1wbGF0ZVNldHRpbmdzIiwiZ2V0TWFwRGF0YSIsInBhaXJzIiwiTEFSR0VfQVJSQVlfU0laRSIsImNyZWF0ZUJhc2VFYWNoIiwiYmFzZUZvck93biIsImJhc2VFYWNoUmlnaHQiLCJiYXNlRm9yT3duUmlnaHQiLCJiYXNlRXZlcnkiLCJiYXNlRXh0cmVtdW0iLCJpc1N5bWJvbCIsImJhc2VGaWx0ZXIiLCJiYXNlRmxhdHRlbiIsImlzU3RyaWN0IiwiaXNGbGF0dGVuYWJsZSIsImJhc2VGb3IiLCJjcmVhdGVCYXNlRm9yIiwiYmFzZUZvclJpZ2h0IiwiYmFzZUZ1bmN0aW9ucyIsImJhc2VHZXQiLCJjYXN0UGF0aCIsInRvS2V5IiwiYmFzZUdldEFsbEtleXMiLCJrZXlzRnVuYyIsInN5bWJvbHNGdW5jIiwiYmFzZUdldFRhZyIsImlzT3duIiwidW5tYXNrZWQiLCJnZXRSYXdUYWciLCJvYmplY3RUb1N0cmluZyIsImJhc2VHdCIsIm90aGVyIiwiYmFzZUhhcyIsImJhc2VIYXNJbiIsImJhc2VJbnRlcnNlY3Rpb24iLCJhcnJheXMiLCJvdGhMZW5ndGgiLCJvdGhJbmRleCIsImNhY2hlcyIsIkluZmluaXR5Iiwic2VlbiIsImJhc2VJbnZva2UiLCJiYXNlSXNBcmd1bWVudHMiLCJiYXNlSXNFcXVhbCIsImVxdWFsRnVuYyIsIm9iaklzQXJyIiwib3RoSXNBcnIiLCJvYmpUYWciLCJvdGhUYWciLCJvYmpJc09iaiIsIm90aElzT2JqIiwiaXNTYW1lVGFnIiwiZXF1YWxBcnJheXMiLCJjb252ZXJ0IiwiaXNQYXJ0aWFsIiwiZXF1YWxCeVRhZyIsIm9iaklzV3JhcHBlZCIsIm90aElzV3JhcHBlZCIsIm9ialVud3JhcHBlZCIsIm90aFVud3JhcHBlZCIsIm9ialByb3BzIiwib2JqTGVuZ3RoIiwib2JqU3RhY2tlZCIsIm90aFN0YWNrZWQiLCJza2lwQ3RvciIsIm90aFZhbHVlIiwiY29tcGFyZWQiLCJvYmpDdG9yIiwib3RoQ3RvciIsImVxdWFsT2JqZWN0cyIsImJhc2VJc0VxdWFsRGVlcCIsImJhc2VJc01hdGNoIiwibWF0Y2hEYXRhIiwibm9DdXN0b21pemVyIiwic3JjVmFsdWUiLCJDT01QQVJFX1BBUlRJQUxfRkxBRyIsImJhc2VJc05hdGl2ZSIsImJhc2VJdGVyYXRlZSIsImlkZW50aXR5IiwiYmFzZU1hdGNoZXNQcm9wZXJ0eSIsImJhc2VNYXRjaGVzIiwiYmFzZUtleXMiLCJpc1Byb3RvdHlwZSIsImJhc2VLZXlzSW4iLCJuYXRpdmVLZXlzSW4iLCJpc1Byb3RvIiwiYmFzZUx0IiwiYmFzZU1hcCIsImlzQXJyYXlMaWtlIiwiZ2V0TWF0Y2hEYXRhIiwibWF0Y2hlc1N0cmljdENvbXBhcmFibGUiLCJpc0tleSIsImlzU3RyaWN0Q29tcGFyYWJsZSIsImhhc0luIiwiYmFzZU1lcmdlIiwic3JjSW5kZXgiLCJtZXJnZUZ1bmMiLCJzYWZlR2V0IiwibmV3VmFsdWUiLCJpc1R5cGVkIiwiaXNBcnJheUxpa2VPYmplY3QiLCJ0b1BsYWluT2JqZWN0IiwiYmFzZU1lcmdlRGVlcCIsImJhc2VOdGgiLCJiYXNlT3JkZXJCeSIsIml0ZXJhdGVlcyIsIm9yZGVycyIsImdldEl0ZXJhdGVlIiwiY29tcGFyZXIiLCJiYXNlU29ydEJ5Iiwib2JqQ3JpdGVyaWEiLCJjcml0ZXJpYSIsIm90aENyaXRlcmlhIiwib3JkZXJzTGVuZ3RoIiwiY29tcGFyZUFzY2VuZGluZyIsIm9yZGVyIiwiY29tcGFyZU11bHRpcGxlIiwiYmFzZVBpY2tCeSIsImJhc2VTZXQiLCJiYXNlUHVsbEFsbCIsImJhc2VQdWxsQXQiLCJpbmRleGVzIiwicHJldmlvdXMiLCJiYXNlVW5zZXQiLCJiYXNlUmVwZWF0IiwiYmFzZVJlc3QiLCJzZXRUb1N0cmluZyIsIm92ZXJSZXN0IiwiYmFzZVNhbXBsZSIsImJhc2VTYW1wbGVTaXplIiwibmVzdGVkIiwiYmFzZVNldERhdGEiLCJiYXNlU2V0VG9TdHJpbmciLCJjb25zdGFudCIsImJhc2VTaHVmZmxlIiwiYmFzZVNsaWNlIiwiYmFzZVNvbWUiLCJiYXNlU29ydGVkSW5kZXgiLCJyZXRIaWdoZXN0IiwibG93IiwiaGlnaCIsIk1BWF9BUlJBWV9MRU5HVEgiLCJtaWQiLCJiYXNlU29ydGVkSW5kZXhCeSIsInZhbElzTmFOIiwidmFsSXNOdWxsIiwidmFsSXNTeW1ib2wiLCJ2YWxJc1VuZGVmaW5lZCIsIm90aElzRGVmaW5lZCIsIm90aElzTnVsbCIsIm90aElzUmVmbGV4aXZlIiwib3RoSXNTeW1ib2wiLCJzZXRMb3ciLCJiYXNlU29ydGVkVW5pcSIsImJhc2VUb051bWJlciIsImJhc2VUb1N0cmluZyIsImJhc2VVbmlxIiwiY3JlYXRlU2V0Iiwic2VlbkluZGV4IiwiYmFzZVVwZGF0ZSIsInVwZGF0ZXIiLCJiYXNlV2hpbGUiLCJpc0Ryb3AiLCJiYXNlV3JhcHBlclZhbHVlIiwiYmFzZVhvciIsImJhc2VaaXBPYmplY3QiLCJhc3NpZ25GdW5jIiwidmFsc0xlbmd0aCIsImNhc3RBcnJheUxpa2VPYmplY3QiLCJjYXN0RnVuY3Rpb24iLCJzdHJpbmdUb1BhdGgiLCJjYXN0UmVzdCIsImNhc3RTbGljZSIsImFycmF5QnVmZmVyIiwidHlwZWRBcnJheSIsInZhbElzRGVmaW5lZCIsInZhbElzUmVmbGV4aXZlIiwiY29tcG9zZUFyZ3MiLCJwYXJ0aWFscyIsImhvbGRlcnMiLCJpc0N1cnJpZWQiLCJhcmdzSW5kZXgiLCJhcmdzTGVuZ3RoIiwiaG9sZGVyc0xlbmd0aCIsImxlZnRJbmRleCIsImxlZnRMZW5ndGgiLCJyYW5nZUxlbmd0aCIsImlzVW5jdXJyaWVkIiwiY29tcG9zZUFyZ3NSaWdodCIsImhvbGRlcnNJbmRleCIsInJpZ2h0SW5kZXgiLCJyaWdodExlbmd0aCIsImlzTmV3IiwiY3JlYXRlQWdncmVnYXRvciIsImluaXRpYWxpemVyIiwiY3JlYXRlQXNzaWduZXIiLCJhc3NpZ25lciIsImlzSXRlcmF0ZWVDYWxsIiwiaXRlcmFibGUiLCJjcmVhdGVDYXNlRmlyc3QiLCJtZXRob2ROYW1lIiwidHJhaWxpbmciLCJjcmVhdGVDb21wb3VuZGVyIiwid29yZHMiLCJkZWJ1cnIiLCJjcmVhdGVDdG9yIiwidGhpc0JpbmRpbmciLCJjcmVhdGVGaW5kIiwiZmluZEluZGV4RnVuYyIsImNyZWF0ZUZsb3ciLCJmbGF0UmVzdCIsImZ1bmNzIiwicHJlcmVxIiwidGhydSIsIndyYXBwZXIiLCJnZXRGdW5jTmFtZSIsImZ1bmNOYW1lIiwiZ2V0RGF0YSIsImlzTGF6aWFibGUiLCJwbGFudCIsImNyZWF0ZUh5YnJpZCIsInBhcnRpYWxzUmlnaHQiLCJob2xkZXJzUmlnaHQiLCJhcmdQb3MiLCJhcnkiLCJhcml0eSIsImlzQXJ5IiwiaXNCaW5kIiwiaXNCaW5kS2V5IiwiaXNGbGlwIiwiZ2V0SG9sZGVyIiwiaG9sZGVyc0NvdW50IiwibmV3SG9sZGVycyIsImNyZWF0ZVJlY3VycnkiLCJyZW9yZGVyIiwiY3JlYXRlSW52ZXJ0ZXIiLCJ0b0l0ZXJhdGVlIiwiYmFzZUludmVydGVyIiwiY3JlYXRlTWF0aE9wZXJhdGlvbiIsIm9wZXJhdG9yIiwiZGVmYXVsdFZhbHVlIiwiY3JlYXRlT3ZlciIsImFycmF5RnVuYyIsImNyZWF0ZVBhZGRpbmciLCJjaGFyc0xlbmd0aCIsImNyZWF0ZVJhbmdlIiwidG9GaW5pdGUiLCJiYXNlUmFuZ2UiLCJjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uIiwidG9OdW1iZXIiLCJ3cmFwRnVuYyIsImlzQ3VycnkiLCJuZXdEYXRhIiwic2V0RGF0YSIsInNldFdyYXBUb1N0cmluZyIsImNyZWF0ZVJvdW5kIiwicHJlY2lzaW9uIiwidG9JbnRlZ2VyIiwicGFpciIsImNyZWF0ZVRvUGFpcnMiLCJiYXNlVG9QYWlycyIsImNyZWF0ZVdyYXAiLCJzcmNCaXRtYXNrIiwibmV3Qml0bWFzayIsImlzQ29tYm8iLCJtZXJnZURhdGEiLCJjcmVhdGVDdXJyeSIsImNyZWF0ZVBhcnRpYWwiLCJjcmVhdGVCaW5kIiwiY3VzdG9tRGVmYXVsdHNBc3NpZ25JbiIsImN1c3RvbURlZmF1bHRzTWVyZ2UiLCJjdXN0b21PbWl0Q2xvbmUiLCJhcnJMZW5ndGgiLCJhcnJTdGFja2VkIiwiYXJyVmFsdWUiLCJvdGhlckZ1bmMiLCJnZXRWYWx1ZSIsInN0dWJBcnJheSIsImhhc1BhdGgiLCJoYXNGdW5jIiwiaXNMZW5ndGgiLCJBcnJheUJ1ZmZlciIsImN0b3JTdHJpbmciLCJpc01hc2thYmxlIiwic3R1YkZhbHNlIiwib3RoZXJBcmdzIiwib2xkQXJyYXkiLCJzaG9ydE91dCIsInJlZmVyZW5jZSIsImRldGFpbHMiLCJpbnNlcnRXcmFwRGV0YWlscyIsInVwZGF0ZVdyYXBEZXRhaWxzIiwiZ2V0V3JhcERldGFpbHMiLCJsYXN0Q2FsbGVkIiwic3RhbXAiLCJyYW5kIiwibWVtb2l6ZSIsIm1lbW9pemVDYXBwZWQiLCJxdW90ZSIsInN1YlN0cmluZyIsImRpZmZlcmVuY2UiLCJkaWZmZXJlbmNlQnkiLCJkaWZmZXJlbmNlV2l0aCIsImZpbmRJbmRleCIsImZpbmRMYXN0SW5kZXgiLCJpbnRlcnNlY3Rpb24iLCJtYXBwZWQiLCJpbnRlcnNlY3Rpb25CeSIsImludGVyc2VjdGlvbldpdGgiLCJwdWxsIiwicHVsbEFsbCIsInB1bGxBdCIsInVuaW9uIiwidW5pb25CeSIsInVuaW9uV2l0aCIsInVuemlwIiwidW56aXBXaXRoIiwid2l0aG91dCIsInhvciIsInhvckJ5IiwieG9yV2l0aCIsInppcCIsInppcFdpdGgiLCJ3cmFwcGVyQXQiLCJjb3VudEJ5IiwiZmluZExhc3QiLCJmb3JFYWNoUmlnaHQiLCJncm91cEJ5IiwiaW52b2tlTWFwIiwia2V5QnkiLCJwYXJ0aXRpb24iLCJzb3J0QnkiLCJiaW5kS2V5IiwiV1JBUF9CSU5EX0ZMQUciLCJsYXN0QXJncyIsImxhc3RUaGlzIiwibWF4V2FpdCIsInRpbWVySWQiLCJsYXN0Q2FsbFRpbWUiLCJsYXN0SW52b2tlVGltZSIsImxlYWRpbmciLCJtYXhpbmciLCJpbnZva2VGdW5jIiwibGVhZGluZ0VkZ2UiLCJ0aW1lckV4cGlyZWQiLCJzaG91bGRJbnZva2UiLCJ0aW1lU2luY2VMYXN0Q2FsbCIsInRyYWlsaW5nRWRnZSIsInRpbWVXYWl0aW5nIiwicmVtYWluaW5nV2FpdCIsImRlYm91bmNlZCIsImlzSW52b2tpbmciLCJmbHVzaCIsImRlZmVyIiwibWVtb2l6ZWQiLCJDYWNoZSIsIm5lZ2F0ZSIsIm92ZXJBcmdzIiwiZnVuY3NMZW5ndGgiLCJwYXJ0aWFsUmlnaHQiLCJyZWFyZyIsImd0ZSIsImlzSW50ZWdlciIsImx0ZSIsInRvQXJyYXkiLCJpdGVyYXRvclRvQXJyYXkiLCJyZW1haW5kZXIiLCJ0b0xlbmd0aCIsImlzQmluYXJ5IiwiYXNzaWduSW4iLCJhc3NpZ25JbldpdGgiLCJhc3NpZ25XaXRoIiwicHJvcHNJbmRleCIsInByb3BzTGVuZ3RoIiwiZGVmYXVsdHNEZWVwIiwibWVyZ2VXaXRoIiwiaW52ZXJ0IiwiaW52ZXJ0QnkiLCJpbnZva2UiLCJvbWl0IiwiQ0xPTkVfREVFUF9GTEFHIiwiYmFzZVBpY2siLCJwaWNrQnkiLCJ0b1BhaXJzIiwidG9QYWlyc0luIiwiY2FtZWxDYXNlIiwid29yZCIsImNhcGl0YWxpemUiLCJ1cHBlckZpcnN0Iiwia2ViYWJDYXNlIiwibG93ZXJDYXNlIiwibG93ZXJGaXJzdCIsInNuYWtlQ2FzZSIsInN0YXJ0Q2FzZSIsInVwcGVyQ2FzZSIsImhhc1VuaWNvZGVXb3JkIiwidW5pY29kZVdvcmRzIiwiYXNjaWlXb3JkcyIsImF0dGVtcHQiLCJiaW5kQWxsIiwibWV0aG9kTmFtZXMiLCJmbG93IiwiZmxvd1JpZ2h0IiwibWV0aG9kT2YiLCJvdmVyIiwib3ZlckV2ZXJ5Iiwib3ZlclNvbWUiLCJiYXNlUHJvcGVydHlEZWVwIiwicmFuZ2UiLCJyYW5nZVJpZ2h0IiwiYXVnZW5kIiwiYWRkZW5kIiwiZGl2aWRlIiwiZGl2aWRlbmQiLCJkaXZpc29yIiwibXVsdGlwbHkiLCJtdWx0aXBsaWVyIiwibXVsdGlwbGljYW5kIiwicm91bmQiLCJzdWJ0cmFjdCIsIm1pbnVlbmQiLCJzdWJ0cmFoZW5kIiwiY2FzdEFycmF5IiwiY29tcGFjdCIsImNvbmQiLCJjb25mb3JtcyIsImJhc2VDb25mb3JtcyIsInByb3BlcnRpZXMiLCJjdXJyeSIsImN1cnJ5UmlnaHQiLCJkcm9wIiwiZHJvcFJpZ2h0IiwiZHJvcFJpZ2h0V2hpbGUiLCJkcm9wV2hpbGUiLCJiYXNlRmlsbCIsImZsYXRNYXAiLCJmbGF0TWFwRGVlcCIsImZsYXRNYXBEZXB0aCIsImZsYXR0ZW5EZWVwIiwiZmxhdHRlbkRlcHRoIiwiZmxpcCIsImZyb21QYWlycyIsImZ1bmN0aW9uc0luIiwibWFwS2V5cyIsIm1hcFZhbHVlcyIsIm1hdGNoZXNQcm9wZXJ0eSIsIm50aEFyZyIsIm9taXRCeSIsIm9yZGVyQnkiLCJwcm9wZXJ0eU9mIiwicHVsbEFsbEJ5IiwicHVsbEFsbFdpdGgiLCJzYW1wbGVTaXplIiwic2V0V2l0aCIsInNodWZmbGUiLCJzb3J0ZWRVbmlxIiwic29ydGVkVW5pcUJ5Iiwic2VwYXJhdG9yIiwibGltaXQiLCJzcHJlYWQiLCJ0YWlsIiwidGFrZSIsInRha2VSaWdodCIsInRha2VSaWdodFdoaWxlIiwidGFrZVdoaWxlIiwidGFwIiwidGhyb3R0bGUiLCJ0b1BhdGgiLCJpc0Fyckxpa2UiLCJ1bmFyeSIsInVuaXEiLCJ1bmlxQnkiLCJ1bmlxV2l0aCIsInVuc2V0IiwidXBkYXRlV2l0aCIsInZhbHVlc0luIiwid3JhcCIsInppcE9iamVjdCIsInppcE9iamVjdERlZXAiLCJlbnRyaWVzSW4iLCJleHRlbmRXaXRoIiwiY2xhbXAiLCJjbG9uZURlZXAiLCJjbG9uZURlZXBXaXRoIiwiY2xvbmVXaXRoIiwiY29uZm9ybXNUbyIsImRlZmF1bHRUbyIsImVuZHNXaXRoIiwiZXNjYXBlIiwiZXNjYXBlUmVnRXhwIiwiZmluZEtleSIsImZpbmRMYXN0S2V5IiwiZm9ySW4iLCJmb3JJblJpZ2h0IiwiZm9yT3duIiwiZm9yT3duUmlnaHQiLCJpblJhbmdlIiwiYmFzZUluUmFuZ2UiLCJpc0Jvb2xlYW4iLCJpc0VsZW1lbnQiLCJpc0VtcHR5IiwiaXNFcXVhbCIsImlzRXF1YWxXaXRoIiwiaXNNYXRjaCIsImlzTWF0Y2hXaXRoIiwiaXNOYXRpdmUiLCJpc05pbCIsImlzU2FmZUludGVnZXIiLCJpc1dlYWtNYXAiLCJpc1dlYWtTZXQiLCJzdHJpY3RMYXN0SW5kZXhPZiIsIm1heEJ5IiwibWVhbiIsIm1lYW5CeSIsIm1pbkJ5Iiwic3R1Yk9iamVjdCIsInN0dWJTdHJpbmciLCJzdHViVHJ1ZSIsIm50aCIsIm5vQ29uZmxpY3QiLCJzdHJMZW5ndGgiLCJwYWRFbmQiLCJwYWRTdGFydCIsInJhZGl4IiwiZmxvYXRpbmciLCJ0ZW1wIiwicmVkdWNlUmlnaHQiLCJzYW1wbGUiLCJzb3J0ZWRJbmRleCIsInNvcnRlZEluZGV4QnkiLCJzb3J0ZWRJbmRleE9mIiwic29ydGVkTGFzdEluZGV4Iiwic29ydGVkTGFzdEluZGV4QnkiLCJzb3J0ZWRMYXN0SW5kZXhPZiIsInN0YXJ0c1dpdGgiLCJzdW0iLCJzdW1CeSIsImlzRXNjYXBpbmciLCJpc0V2YWx1YXRpbmciLCJpbXBvcnRzIiwiaW1wb3J0c0tleXMiLCJpbXBvcnRzVmFsdWVzIiwicmVEZWxpbWl0ZXJzIiwic291cmNlVVJMIiwiZXNjYXBlVmFsdWUiLCJpbnRlcnBvbGF0ZVZhbHVlIiwiZXNUZW1wbGF0ZVZhbHVlIiwiZXZhbHVhdGVWYWx1ZSIsInZhcmlhYmxlIiwidG9Mb3dlciIsInRvU2FmZUludGVnZXIiLCJ0b1VwcGVyIiwidHJpbUVuZCIsInRyaW1TdGFydCIsInRydW5jYXRlIiwib21pc3Npb24iLCJuZXdFbmQiLCJ1bmlxdWVJZCIsImVhY2giLCJlYWNoUmlnaHQiLCJWRVJTSU9OIiwiaXNGaWx0ZXIiLCJ0YWtlTmFtZSIsImRyb3BOYW1lIiwiY2hlY2tJdGVyYXRlZSIsImlzVGFrZXIiLCJsb2Rhc2hGdW5jIiwicmV0VW53cmFwcGVkIiwiaXNMYXp5IiwidXNlTGF6eSIsImlzSHlicmlkIiwiaXNVbndyYXBwZWQiLCJvbmx5TGF6eSIsImNoYWluTmFtZSIsImlzUmlnaHQiLCJ2aWV3IiwiZ2V0VmlldyIsIml0ZXJMZW5ndGgiLCJ0YWtlQ291bnQiLCJpdGVySW5kZXgiLCJ3cmFwcGVkIiwidG9KU09OIiwic2VyaWFsaXplZFBhcmFtcyIsInRvSVNPU3RyaW5nIiwiaGFzaG1hcmtJbmRleCIsImJ1dHRvblN0eWxlIiwiaXNBeGlvc0Vycm9yIiwiZGVzY3JpcHRpb24iLCJmaWxlTmFtZSIsImxpbmVOdW1iZXIiLCJjb2x1bW5OdW1iZXIiLCJpc1N0YW5kYXJkQnJvd3NlckVudiIsIm9yaWdpblVSTCIsIm1zaWUiLCJ1cmxQYXJzaW5nTm9kZSIsInJlc29sdmVVUkwiLCJob3N0bmFtZSIsInBvcnQiLCJyZXF1ZXN0VVJMIiwicGFyc2VkIiwiY3JlYXRlRXJyb3IiLCJjb25maWcxIiwiY29uZmlnMiIsInZhbHVlRnJvbUNvbmZpZzJLZXlzIiwibWVyZ2VEZWVwUHJvcGVydGllc0tleXMiLCJkZWZhdWx0VG9Db25maWcyS2V5cyIsImRlZXBNZXJnZSIsImF4aW9zS2V5cyIsIm90aGVyS2V5cyIsIlRpbWVvdXQiLCJjbGVhckZuIiwiX2lkIiwiX2NsZWFyRm4iLCJzY29wZSIsInNldEludGVydmFsIiwiY2xlYXJJbnRlcnZhbCIsImNsb3NlIiwidW5yZWYiLCJlbnJvbGwiLCJtc2VjcyIsIl9pZGxlVGltZW91dElkIiwiX2lkbGVUaW1lb3V0IiwidW5lbnJvbGwiLCJfdW5yZWZBY3RpdmUiLCJfb25UaW1lb3V0IiwiY2xlYXJJbW1lZGlhdGUiLCJ0cmFuc2Zvcm1EYXRhIiwiaXNDYW5jZWwiLCJ0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkIiwidGhyb3dJZlJlcXVlc3RlZCIsInJlZ2lzdGVySW1tZWRpYXRlIiwiY2hhbm5lbCIsIm1lc3NhZ2VQcmVmaXgiLCJvbkdsb2JhbE1lc3NhZ2UiLCJuZXh0SGFuZGxlIiwidGFza3NCeUhhbmRsZSIsImN1cnJlbnRseVJ1bm5pbmdBVGFzayIsImRvYyIsImF0dGFjaFRvIiwiaGFuZGxlIiwicnVuSWZQcmVzZW50IiwicG9zdE1lc3NhZ2UiLCJpbXBvcnRTY3JpcHRzIiwicG9zdE1lc3NhZ2VJc0FzeW5jaHJvbm91cyIsIm9sZE9uTWVzc2FnZSIsIm9ubWVzc2FnZSIsImNhblVzZVBvc3RNZXNzYWdlIiwiTWVzc2FnZUNoYW5uZWwiLCJwb3J0MSIsInBvcnQyIiwib25yZWFkeXN0YXRlY2hhbmdlIiwiYXR0YWNoRXZlbnQiLCJ0YXNrIiwid2VicGFja1BvbHlmaWxsIiwiZGVwcmVjYXRlIiwibWVtbyIsInN0eWxlc0luRG9tIiwiaXNPbGRJRSIsImF0b2IiLCJnZXRUYXJnZXQiLCJnZXRFbGVtZW50Iiwic3R5bGVUYXJnZXQiLCJIVE1MSUZyYW1lRWxlbWVudCIsImNvbnRlbnREb2N1bWVudCIsInNpbmdsZXRvbiIsInNpbmdsZXRvbkNvdW50ZXIiLCJzdHlsZXNJbnNlcnRlZEF0VG9wIiwiZml4VXJscyIsImFkZFN0eWxlc1RvRG9tIiwiZG9tU3R5bGUiLCJyZWZzIiwiYWRkU3R5bGUiLCJsaXN0VG9TdHlsZXMiLCJuZXdTdHlsZXMiLCJtZWRpYSIsImluc2VydFN0eWxlRWxlbWVudCIsImluc2VydEludG8iLCJsYXN0U3R5bGVFbGVtZW50SW5zZXJ0ZWRBdFRvcCIsImluc2VydEF0IiwicmVtb3ZlU3R5bGVFbGVtZW50IiwiY3JlYXRlU3R5bGVFbGVtZW50Iiwibm9uY2UiLCJnZXROb25jZSIsImFkZEF0dHJzIiwic3R5bGVJbmRleCIsImFwcGx5VG9TaW5nbGV0b25UYWciLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJyZXZva2VPYmplY3RVUkwiLCJCbG9iIiwicmVsIiwiY3JlYXRlTGlua0VsZW1lbnQiLCJ1cGRhdGVMaW5rIiwiYXBwbHlUb1RhZyIsIm5ld09iaiIsIkRFQlVHIiwibmV3TGlzdCIsIm1heVJlbW92ZSIsInRleHRTdG9yZSIsInJlcGxhY2VUZXh0IiwicmVwbGFjZW1lbnQiLCJzdHlsZVNoZWV0IiwiY3NzVGV4dCIsImNzc05vZGUiLCJhdXRvRml4VXJscyIsImNvbnZlcnRUb0Fic29sdXRlVXJscyIsImJsb2IiLCJvbGRTcmMiLCJDYW5jZWwiLCJ3cml0ZSIsImV4cGlyZXMiLCJkb21haW4iLCJzZWN1cmUiLCJjb29raWUiLCJ0b0dNVFN0cmluZyIsInJlYWQiLCJpc0Fic29sdXRlVVJMIiwiY29tYmluZVVSTHMiLCJyZXF1ZXN0ZWRVUkwiLCJleGVjdXRvciIsInJlc29sdmVQcm9taXNlIiwibmVzdFJFIiwibWVyZ2VGbiIsIm9ianMiLCJiYiIsIm5lc3RlZEtleSIsIk9wIiwiJFN5bWJvbCIsIml0ZXJhdG9yU3ltYm9sIiwiYXN5bmNJdGVyYXRvclN5bWJvbCIsImFzeW5jSXRlcmF0b3IiLCJ0b1N0cmluZ1RhZ1N5bWJvbCIsImlubmVyRm4iLCJvdXRlckZuIiwidHJ5TG9jc0xpc3QiLCJwcm90b0dlbmVyYXRvciIsIkdlbmVyYXRvciIsImdlbmVyYXRvciIsIkNvbnRleHQiLCJfaW52b2tlIiwiZG9uZVJlc3VsdCIsImRlbGVnYXRlIiwiZGVsZWdhdGVSZXN1bHQiLCJtYXliZUludm9rZURlbGVnYXRlIiwiQ29udGludWVTZW50aW5lbCIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwidHJ5Q2F0Y2giLCJtYWtlSW52b2tlTWV0aG9kIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsIkl0ZXJhdG9yUHJvdG90eXBlIiwiZ2V0UHJvdG8iLCJOYXRpdmVJdGVyYXRvclByb3RvdHlwZSIsIkdwIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiQXN5bmNJdGVyYXRvciIsIlByb21pc2VJbXBsIiwicHJldmlvdXNQcm9taXNlIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJfX2F3YWl0IiwidW53cmFwcGVkIiwiaW5mbyIsInJlc3VsdE5hbWUiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwibG9jcyIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpdGVyYXRvck1ldGhvZCIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImdlbkZ1biIsImN0b3IiLCJzZXRQcm90b3R5cGVPZiIsImF3cmFwIiwic2tpcFRlbXBSZXNldCIsInJvb3RSZWNvcmQiLCJydmFsIiwiZXhjZXB0aW9uIiwibG9jIiwiY2F1Z2h0IiwiaGFzQ2F0Y2giLCJoYXNGaW5hbGx5IiwiZmluYWxseUVudHJ5IiwiY29tcGxldGUiLCJmaW5pc2giLCJ0aHJvd24iLCJkZWxlZ2F0ZVlpZWxkIiwicmVnZW5lcmF0b3JSdW50aW1lIiwiYWNjaWRlbnRhbFN0cmljdE1vZGUiLCJjb21tb25qc0dsb2JhbCIsImh1bXBzIiwiY3JlYXRlQ29tbW9uanNNb2R1bGUiLCJfcHJvY2Vzc0tleXMiLCJfaXNPYmplY3QiLCJfaXNEYXRlIiwiX2lzUmVnRXhwIiwiX2lzQm9vbGVhbiIsIl9pc0Z1bmN0aW9uIiwiX2lzQXJyYXkiLCJjYW1lbGl6ZSIsIl9pc051bWVyaWNhbCIsInBhc2NhbGl6ZSIsImNhbWVsaXplZCIsImRlY2FtZWxpemUiLCJzZXBhcmF0ZVdvcmRzIiwiX3Byb2Nlc3NvciIsImRlcGFzY2FsaXplIiwiY2FtZWxpemVLZXlzIiwiZGVjYW1lbGl6ZUtleXMiLCJwYXNjYWxpemVLZXlzIiwiZGVwYXNjYWxpemVLZXlzIiwiX2V4dGVuZHMiLCJvYmplY3RXaXRob3V0UHJvcGVydGllcyIsInN0eWxlVG9PYmplY3QiLCJjbGFzc1RvT2JqZWN0IiwiY2xzIiwiY29tYmluZUNsYXNzT2JqZWN0cyIsIl9kYXRhJGNsYXNzIiwiZENsYXNzIiwiX2RhdGEkc3R5bGUiLCJkU3R5bGUiLCJfZGF0YSRhdHRycyIsImRBdHRycyIsInJlbWFpbmluZ0RhdGEiLCJQUk9EVUNUSU9OIiwib2JqZWN0V2l0aEtleSIsIm5vcm1hbGl6ZUljb25BcmdzIiwiaWNvbiQkMSIsImJvcmRlciIsImZpeGVkV2lkdGgiLCJsaXN0SXRlbSIsInB1bHNlIiwicm90YXRpb24iLCJzd2FwT3BhY2l0eSIsInNwaW4iLCJpbnZlcnNlIiwiaWNvbkFyZ3MiLCJtYXNrQXJncyIsIl9jbGFzc2VzIiwicmVuZGVyZWRJY29uIiwiX2NvbnNvbGUiLCJjb252ZXJ0Q3VycnkiLCJzZXR0bGUiLCJidWlsZEZ1bGxQYXRoIiwicGFyc2VIZWFkZXJzIiwiaXNVUkxTYW1lT3JpZ2luIiwicmVxdWVzdERhdGEiLCJyZXF1ZXN0SGVhZGVycyIsImF1dGgiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiQXV0aG9yaXphdGlvbiIsInJlc3BvbnNlVVJMIiwicmVzcG9uc2VIZWFkZXJzIiwiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIiwicmVzcG9uc2VUeXBlIiwicmVzcG9uc2VUZXh0Iiwic3RhdHVzVGV4dCIsIm9uYWJvcnQiLCJvbnRpbWVvdXQiLCJ0aW1lb3V0RXJyb3JNZXNzYWdlIiwiY29va2llcyIsInhzcmZWYWx1ZSIsIndpdGhDcmVkZW50aWFscyIsInNldFJlcXVlc3RIZWFkZXIiLCJvbkRvd25sb2FkUHJvZ3Jlc3MiLCJ1cGxvYWQiLCJzZW5kIiwiaWdub3JlRHVwbGljYXRlT2YiLCJsaW5lIiwiaXNWaWV3IiwicGlwZSIsIlVSTFNlYXJjaFBhcmFtcyIsInByb2R1Y3QiLCJub3JtYWxpemVkTmFtZSIsImNyZWF0ZUluc3RhbmNlIiwiZGVmYXVsdENvbmZpZyJdLCJtYXBwaW5ncyI6IjthQUNFLFNBQVNBLEVBQXFCQyxHQVE3QixJQVBBLElBTUlDLEVBQVVDLEVBTlZDLEVBQVdILEVBQUssR0FDaEJJLEVBQWNKLEVBQUssR0FLQUssRUFBSSxFQUFHQyxFQUFXLEdBQ3BDRCxFQUFJRixFQUFTSSxPQUFRRixJQUN6QkgsRUFBVUMsRUFBU0UsR0FDaEJHLE9BQU9DLFVBQVVDLGVBQWVDLEtBQUtDLEVBQWlCVixJQUFZVSxFQUFnQlYsSUFDcEZJLEVBQVNPLEtBQUtELEVBQWdCVixHQUFTLElB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QkFBdUIsRUFBSSx1QkFBdUIsRUFBSSx1QkFBdUIsRUFBSSx1QkFBdUIsRUFBSSx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx1QkFBdUIsR0FBSyx3QkFBd0JBLEdBeUR4bEpzQyxDQUFldEMsR0FHNUIsSUFBSXVDLEVBQVEsSUFBSUMsTUFDaEJaLEVBQW1CLFNBQVVhLEdBRTVCWixFQUFPYSxRQUFVYixFQUFPYyxPQUFTLEtBQ2pDQyxhQUFhWCxHQUNiLElBQUlZLEVBQVFuQyxFQUFnQlYsR0FDNUIsR0FBYSxJQUFWNkMsRUFBYSxDQUNmLEdBQUdBLEVBQU8sQ0FDVCxJQUFJQyxFQUFZTCxJQUF5QixTQUFmQSxFQUFNTSxLQUFrQixVQUFZTixFQUFNTSxNQUNoRUMsRUFBVVAsR0FBU0EsRUFBTVEsUUFBVVIsRUFBTVEsT0FBT2IsSUFDcERHLEVBQU1XLFFBQVUsaUJBQW1CbEQsRUFBVSxjQUFnQjhDLEVBQVksS0FBT0UsRUFBVSxJQUMxRlQsRUFBTVksS0FBTyxpQkFDYlosRUFBTVEsS0FBT0QsRUFDYlAsRUFBTWEsUUFBVUosRUFDaEJILEVBQU0sR0FBR04sR0FFVjdCLEVBQWdCVixRQUFXcUQsSUFHN0IsSUFBSXBCLEVBQVVxQixZQUFXLFdBQ3hCMUIsRUFBaUIsQ0FBRW1CLEtBQU0sVUFBV0UsT0FBUXBCLE1BQzFDLE1BQ0hBLEVBQU9hLFFBQVViLEVBQU9jLE9BQVNmLEVBQ2pDRSxTQUFTeUIsS0FBS0MsWUFBWTNCLEdBRzVCLE9BQU9KLFFBQVFnQyxJQUFJbkMsSUFJcEJMLEVBQW9CeUMsRUFBSTlDLEVBR3hCSyxFQUFvQjBDLEVBQUk1QyxFQUd4QkUsRUFBb0IyQyxFQUFJLFNBQVMxQyxFQUFTaUMsRUFBTVUsR0FDM0M1QyxFQUFvQjZDLEVBQUU1QyxFQUFTaUMsSUFDbEM3QyxPQUFPeUQsZUFBZTdDLEVBQVNpQyxFQUFNLENBQUVhLFlBQVksRUFBTUMsSUFBS0osS0FLaEU1QyxFQUFvQmlELEVBQUksU0FBU2hELEdBQ1gsb0JBQVhpRCxRQUEwQkEsT0FBT0MsYUFDMUM5RCxPQUFPeUQsZUFBZTdDLEVBQVNpRCxPQUFPQyxZQUFhLENBQUVDLE1BQU8sV0FFN0QvRCxPQUFPeUQsZUFBZTdDLEVBQVMsYUFBYyxDQUFFbUQsT0FBTyxLQVF2RHBELEVBQW9CcUQsRUFBSSxTQUFTRCxFQUFPRSxHQUV2QyxHQURVLEVBQVBBLElBQVVGLEVBQVFwRCxFQUFvQm9ELElBQy9CLEVBQVBFLEVBQVUsT0FBT0YsRUFDcEIsR0FBVyxFQUFQRSxHQUE4QixpQkFBVkYsR0FBc0JBLEdBQVNBLEVBQU1HLFdBQVksT0FBT0gsRUFDaEYsSUFBSUksRUFBS25FLE9BQU9vRSxPQUFPLE1BR3ZCLEdBRkF6RCxFQUFvQmlELEVBQUVPLEdBQ3RCbkUsT0FBT3lELGVBQWVVLEVBQUksVUFBVyxDQUFFVCxZQUFZLEVBQU1LLE1BQU9BLElBQ3RELEVBQVBFLEdBQTRCLGlCQUFURixFQUFtQixJQUFJLElBQUlNLEtBQU9OLEVBQU9wRCxFQUFvQjJDLEVBQUVhLEVBQUlFLEVBQUssU0FBU0EsR0FBTyxPQUFPTixFQUFNTSxJQUFRQyxLQUFLLEtBQU1ELElBQzlJLE9BQU9GLEdBSVJ4RCxFQUFvQjRELEVBQUksU0FBUzFELEdBQ2hDLElBQUkwQyxFQUFTMUMsR0FBVUEsRUFBT3FELFdBQzdCLFdBQXdCLE9BQU9yRCxFQUFnQixTQUMvQyxXQUE4QixPQUFPQSxHQUV0QyxPQURBRixFQUFvQjJDLEVBQUVDLEVBQVEsSUFBS0EsR0FDNUJBLEdBSVI1QyxFQUFvQjZDLEVBQUksU0FBU2dCLEVBQVFDLEdBQVksT0FBT3pFLE9BQU9DLFVBQVVDLGVBQWVDLEtBQUtxRSxFQUFRQyxJQUd6RzlELEVBQW9Cb0IsRUFBSSxJQUd4QnBCLEVBQW9CK0QsR0FBSyxTQUFTQyxHQUEyQixNQUFwQkMsUUFBUTNDLE1BQU0wQyxHQUFZQSxHQUVuRSxJQUFJRSxFQUFhQyxPQUFxQixhQUFJQSxPQUFxQixjQUFLLEdBQ2hFQyxFQUFtQkYsRUFBV3hFLEtBQUtpRSxLQUFLTyxHQUM1Q0EsRUFBV3hFLEtBQU9kLEVBQ2xCc0YsRUFBYUEsRUFBV0csUUFDeEIsSUFBSSxJQUFJbkYsRUFBSSxFQUFHQSxFQUFJZ0YsRUFBVzlFLE9BQVFGLElBQUtOLEVBQXFCc0YsRUFBV2hGLElBQzNFLElBQUlVLEVBQXNCd0UsRUFJbkJwRSxFQUFvQkEsRUFBb0JzRSxFQUFJLEcseUJDcE1yRCxJQUFJQyxFQUFVLEVBQVEsUUFFQSxpQkFBWkEsSUFBc0JBLEVBQVUsQ0FBQyxDQUFDckUsRUFBT2hCLEVBQUlxRixFQUFTLE1BT2hFLElBQUlDLEVBQVUsQ0FBQyxLQUFNLEVBRXJCLGVBUElDLEVBUUosZ0JBQXFCckMsR0FFUixFQUFRLE9BQVIsQ0FBbUVtQyxFQUFTQyxHQUV0RkQsRUFBUUcsU0FBUXhFLEVBQU9ELFFBQVVzRSxFQUFRRyxTLG9DQ2pCNUMsdUJBQThjLEcseUVDQXBjeEUsRUFBT0QsUUFBVSxFQUFRLE9BQVIsRUFBa0UsSUFLckZQLEtBQUssQ0FBQ1EsRUFBT2hCLEVBQUksb2pCQUFxakIsTSxvQ0NMOWtCLEksWUNBa04sRUNnRGxOLENBQ0UsS0FBRixVQUNFLFdBQUYsQ0FDSSxRQUFKLElBQ0ksWUFBSixJQUNJLGlCQUFKLElBQ0ksZ0JBQUosS0FDSSxlQUFKLElBQ0ksY0FBSixJQUNJLGFBQUosSUFDSSxhQUFKLElBQ0ksYUFBSixJQUNJLFdBQUosSUFDSSxVQUFKLElBQ0ksVUFBSixJQUNJLFVBQUosS0FDSSxVQUFKLElBQ0ksU0FBSixJQUNJLFNBQUosTUFFRSxNQUFGLENBQ0EsZSx3QkM3REl5RixFQUFZLFlBQ2QsR0hUVyxXQUFhLElBQUlDLEVBQUlDLEtBQVNDLEVBQUdGLEVBQUlHLGVBQW1CQyxFQUFHSixFQUFJSyxNQUFNRCxJQUFJRixFQUFHLE9BQU9FLEVBQUcsS0FBSyxDQUFDRSxZQUFZLGNBQWNOLEVBQUlPLEdBQUlQLEVBQWMsWUFBRSxTQUFTUSxFQUFLbEcsR0FBRyxPQUFRa0csRUFBYyxVQUFFSixFQUFHLGNBQWMsQ0FBQ3RCLElBQUl4RSxFQUFFZ0csWUFBWSxZQUFZRyxNQUFNRCxFQUFLRSxLQUFLQyxNQUFNLENBQUMsR0FBSyxDQUFDckQsS0FBTWtELEVBQUtJLFlBQVlDLFNBQVMsQ0FBQyxNQUFRLFNBQVNDLEdBQVEsT0FBT2QsRUFBSWUsTUFBTSxPQUFRUCxFQUFLRSxTQUFTLENBQUNOLEVBQUcsTUFBTSxDQUFDRSxZQUFZLGFBQWEsQ0FBZ0IsZUFBZEUsRUFBS0UsS0FBdUJOLEVBQUcsa0JBQWtCLENBQUNPLE1BQU0sQ0FBQyxLQUFPLFFBQVFYLEVBQUlnQixLQUFLaEIsRUFBSWlCLEdBQUcsS0FBb0IsVUFBZFQsRUFBS0UsS0FBa0JOLEVBQUcsYUFBYSxDQUFDTyxNQUFNLENBQUMsS0FBTyxRQUFRWCxFQUFJZ0IsS0FBS2hCLEVBQUlpQixHQUFHLEtBQW9CLFVBQWRULEVBQUtFLEtBQWtCTixFQUFHLGNBQWMsQ0FBQ08sTUFBTSxDQUFDLEtBQU8sUUFBUVgsRUFBSWdCLEtBQUtoQixFQUFJaUIsR0FBRyxLQUFvQixVQUFkVCxFQUFLRSxLQUFrQk4sRUFBRyxhQUFhLENBQUNPLE1BQU0sQ0FBQyxLQUFPLFFBQVFYLEVBQUlnQixLQUFLaEIsRUFBSWlCLEdBQUcsS0FBb0IsYUFBZFQsRUFBS0UsS0FBcUJOLEVBQUcsZ0JBQWdCLENBQUNPLE1BQU0sQ0FBQyxLQUFPLFFBQVFYLEVBQUlnQixLQUFLaEIsRUFBSWlCLEdBQUcsS0FBb0IsV0FBZFQsRUFBS0UsS0FBbUJOLEVBQUcsb0JBQW9CLENBQUNPLE1BQU0sQ0FBQyxLQUFPLFFBQVFYLEVBQUlnQixLQUFLaEIsRUFBSWlCLEdBQUcsS0FBb0IsU0FBZFQsRUFBS0UsS0FBaUJOLEVBQUcsWUFBWSxDQUFDTyxNQUFNLENBQUMsS0FBTyxRQUFRWCxFQUFJZ0IsS0FBS2hCLEVBQUlpQixHQUFHLEtBQW9CLFVBQWRULEVBQUtFLEtBQWtCTixFQUFHLGFBQWEsQ0FBQ08sTUFBTSxDQUFDLEtBQU8sUUFBUVgsRUFBSWdCLEtBQUtoQixFQUFJaUIsR0FBRyxLQUFvQixTQUFkVCxFQUFLRSxLQUFpQk4sRUFBRyxZQUFZLENBQUNPLE1BQU0sQ0FBQyxLQUFPLFFBQVFYLEVBQUlnQixLQUFLaEIsRUFBSWlCLEdBQUcsS0FBb0IsY0FBZFQsRUFBS0UsS0FBc0JOLEVBQUcsaUJBQWlCLENBQUNPLE1BQU0sQ0FBQyxLQUFPLFFBQVFYLEVBQUlnQixLQUFLaEIsRUFBSWlCLEdBQUcsS0FBb0IsYUFBZFQsRUFBS0UsS0FBcUJOLEVBQUcsZ0JBQWdCLENBQUNPLE1BQU0sQ0FBQyxLQUFPLFFBQVFYLEVBQUlnQixLQUFLaEIsRUFBSWlCLEdBQUcsS0FBb0IsZ0JBQWRULEVBQUtFLEtBQXdCTixFQUFHLG1CQUFtQixDQUFDTyxNQUFNLENBQUMsS0FBTyxRQUFRWCxFQUFJZ0IsS0FBS2hCLEVBQUlpQixHQUFHLEtBQW9CLFVBQWRULEVBQUtFLEtBQWtCTixFQUFHLGFBQWEsQ0FBQ08sTUFBTSxDQUFDLEtBQU8sUUFBUVgsRUFBSWdCLEtBQUtoQixFQUFJaUIsR0FBRyxLQUFvQixZQUFkVCxFQUFLRSxLQUFvQk4sRUFBRyxlQUFlLENBQUNPLE1BQU0sQ0FBQyxLQUFPLFFBQVFYLEVBQUlnQixLQUFLaEIsRUFBSWlCLEdBQUcsS0FBb0IsUUFBZFQsRUFBS0UsS0FBZ0JOLEVBQUcsV0FBVyxDQUFDTyxNQUFNLENBQUMsS0FBTyxRQUFRWCxFQUFJZ0IsTUFBTSxHQUFHaEIsRUFBSWlCLEdBQUcsS0FBS2IsRUFBRyxJQUFJLENBQUNFLFlBQVksYUFBYSxDQUFDRixFQUFHLE9BQU8sQ0FBQ0osRUFBSWlCLEdBQUdqQixFQUFJa0IsR0FBR1YsRUFBS1csVUFBVW5CLEVBQUlpQixHQUFHLEtBQUtiLEVBQUcscUJBQXFCLENBQUNFLFlBQVksY0FBY0ssTUFBTSxDQUFDLEtBQU8sU0FBUyxLQUFLWCxFQUFJZ0IsUUFBTyxLQUNoMUQsSUdXcEIsRUFDQSxLQUNBLFdBQ0EsTUFJYSxJQUFBakIsRSw2Q0NYZnpFLEVBQU9ELFFBQVUsU0FBdUIrRixHQUl0QyxNQUFPLGdDQUFnQ0MsS0FBS0QsSyxvQ0NaOUMsdUJBQXFlLEcsdUJDQ3JlLElBQUl6QixFQUFVLEVBQVEsUUFFQSxpQkFBWkEsSUFBc0JBLEVBQVUsQ0FBQyxDQUFDckUsRUFBT2hCLEVBQUlxRixFQUFTLE1BT2hFLElBQUlDLEVBQVUsQ0FBQyxLQUFNLEVBRXJCLGVBUElDLEVBUUosZ0JBQXFCckMsR0FFUixFQUFRLE9BQVIsQ0FBc0VtQyxFQUFTQyxHQUV6RkQsRUFBUUcsU0FBUXhFLEVBQU9ELFFBQVVzRSxFQUFRRyxTLHVCQ2hCNUMsSUFBSUgsRUFBVSxFQUFRLFFBRUEsaUJBQVpBLElBQXNCQSxFQUFVLENBQUMsQ0FBQ3JFLEVBQU9oQixFQUFJcUYsRUFBUyxNQU9oRSxJQUFJQyxFQUFVLENBQUMsS0FBTSxFQUVyQixlQVBJQyxFQVFKLGdCQUFxQnJDLEdBRVIsRUFBUSxPQUFSLENBQW1FbUMsRUFBU0MsR0FFdEZELEVBQVFHLFNBQVF4RSxFQUFPRCxRQUFVc0UsRUFBUUcsUyxvQ0NSNUN4RSxFQUFPRCxRQUFVLFNBQXFCaUcsRUFBU0MsR0FDN0MsT0FBT0EsRUFDSEQsRUFBUUUsUUFBUSxPQUFRLElBQU0sSUFBTUQsRUFBWUMsUUFBUSxPQUFRLElBQ2hFRixJLHFDQ1pOLHVCQUFTRyxFQUFRQyxHQVdmLE9BVEVELEVBRG9CLG1CQUFYbkQsUUFBb0QsaUJBQXBCQSxPQUFPcUQsU0FDdEMsU0FBVUQsR0FDbEIsY0FBY0EsR0FHTixTQUFVQSxHQUNsQixPQUFPQSxHQUF5QixtQkFBWHBELFFBQXlCb0QsRUFBSUUsY0FBZ0J0RCxRQUFVb0QsSUFBUXBELE9BQU81RCxVQUFZLGdCQUFrQmdILElBSTlHQSxHQVNqQixTQUFTRyxFQUFrQnpFLEVBQVEwRSxHQUNqQyxJQUFLLElBQUl4SCxFQUFJLEVBQUdBLEVBQUl3SCxFQUFNdEgsT0FBUUYsSUFBSyxDQUNyQyxJQUFJeUgsRUFBYUQsRUFBTXhILEdBQ3ZCeUgsRUFBVzVELFdBQWE0RCxFQUFXNUQsYUFBYyxFQUNqRDRELEVBQVdDLGNBQWUsRUFDdEIsVUFBV0QsSUFBWUEsRUFBV0UsVUFBVyxHQUNqRHhILE9BQU95RCxlQUFlZCxFQUFRMkUsRUFBV2pELElBQUtpRCxJQVVsRCxTQUFTRyxFQUFnQlIsRUFBSzVDLEVBQUtOLEdBWWpDLE9BWElNLEtBQU80QyxFQUNUakgsT0FBT3lELGVBQWV3RCxFQUFLNUMsRUFBSyxDQUM5Qk4sTUFBT0EsRUFDUEwsWUFBWSxFQUNaNkQsY0FBYyxFQUNkQyxVQUFVLElBR1pQLEVBQUk1QyxHQUFPTixFQUdOa0QsRUFHVCxTQUFTUyxFQUFjL0UsR0FDckIsSUFBSyxJQUFJOUMsRUFBSSxFQUFHQSxFQUFJOEgsVUFBVTVILE9BQVFGLElBQUssQ0FDekMsSUFBSStILEVBQXlCLE1BQWhCRCxVQUFVOUgsR0FBYThILFVBQVU5SCxHQUFLLEdBQy9DZ0ksRUFBVTdILE9BQU84SCxLQUFLRixHQUVrQixtQkFBakM1SCxPQUFPK0gsd0JBQ2hCRixFQUFVQSxFQUFRRyxPQUFPaEksT0FBTytILHNCQUFzQkgsR0FBUUssUUFBTyxTQUFVQyxHQUM3RSxPQUFPbEksT0FBT21JLHlCQUF5QlAsRUFBUU0sR0FBS3hFLGdCQUl4RG1FLEVBQVFPLFNBQVEsU0FBVS9ELEdBQ3hCb0QsRUFBZ0I5RSxFQUFRMEIsRUFBS3VELEVBQU92RCxPQUl4QyxPQUFPMUIsRUFHVCxTQUFTMEYsRUFBZUMsRUFBS3pJLEdBQzNCLE9BZUYsU0FBeUJ5SSxHQUN2QixHQUFJQyxNQUFNQyxRQUFRRixHQUFNLE9BQU9BLEVBaEJ4QkcsQ0FBZ0JILElBdUJ6QixTQUErQkEsRUFBS3pJLEdBQ2xDLElBQUk2SSxFQUFPLEdBQ1BDLEdBQUssRUFDTEMsR0FBSyxFQUNMckMsT0FBS3hELEVBRVQsSUFDRSxJQUFLLElBQWlDMEQsRUFBN0JvQyxFQUFLUCxFQUFJekUsT0FBT3FELGNBQW1CeUIsR0FBTWxDLEVBQUtvQyxFQUFHQyxRQUFRQyxRQUNoRUwsRUFBS3JJLEtBQUtvRyxFQUFHMUMsUUFFVGxFLEdBQUs2SSxFQUFLM0ksU0FBV0YsR0FIOEM4SSxHQUFLLElBSzlFLE1BQU9oRSxHQUNQaUUsR0FBSyxFQUNMckMsRUFBSzVCLEVBQ0wsUUFDQSxJQUNPZ0UsR0FBc0IsTUFBaEJFLEVBQVcsUUFBV0EsRUFBVyxTQUM1QyxRQUNBLEdBQUlELEVBQUksTUFBTXJDLEdBSWxCLE9BQU9tQyxFQTlDd0JNLENBQXNCVixFQUFLekksSUFxRDVELFdBQ0UsTUFBTSxJQUFJb0osVUFBVSx3REF0RDRDQyxHQUdsRSxTQUFTQyxFQUFtQmIsR0FDMUIsT0FHRixTQUE0QkEsR0FDMUIsR0FBSUMsTUFBTUMsUUFBUUYsR0FBTSxDQUN0QixJQUFLLElBQUl6SSxFQUFJLEVBQUd1SixFQUFPLElBQUliLE1BQU1ELEVBQUl2SSxRQUFTRixFQUFJeUksRUFBSXZJLE9BQVFGLElBQUt1SixFQUFLdkosR0FBS3lJLEVBQUl6SSxHQUVqRixPQUFPdUosR0FQRkMsQ0FBbUJmLElBZTVCLFNBQTBCZ0IsR0FDeEIsR0FBSXpGLE9BQU9xRCxZQUFZbEgsT0FBT3NKLElBQWtELHVCQUF6Q3RKLE9BQU9DLFVBQVVzSixTQUFTcEosS0FBS21KLEdBQWdDLE9BQU9mLE1BQU1pQixLQUFLRixHQWhCdEZHLENBQWlCbkIsSUE2Q3JELFdBQ0UsTUFBTSxJQUFJVyxVQUFVLG1EQTlDdUNTLEdBM0U3RCw4S0FnSUEsSUFBSUMsRUFBTyxhQUVQQyxFQUFVLEdBQ1ZDLEVBQVksR0FFWkMsRUFBZSxDQUNqQkMsS0FBTUosRUFDTkssUUFBU0wsR0FHWCxJQUN3QixvQkFBWDdFLFNBQXdCOEUsRUFBVTlFLFFBQ3JCLG9CQUFidEQsV0FBMEJxSSxFQUFZckksVUFDakIsb0JBQXJCeUksa0JBQXVEQSxpQkFDdkMsb0JBQWhCQyxjQUE2QkosRUFBZUksYUFDdkQsTUFBT25KLElBRVQsSUFDSW9KLEdBRE9QLEVBQVFRLFdBQWEsSUFDTkMsVUFDdEJBLE9BQStCLElBQW5CRixFQUE0QixHQUFLQSxFQUU3Q0csRUFBU1YsRUFDVFcsRUFBV1YsRUFFWFcsRUFBY1YsRUFFZFcsR0FEZUgsRUFBTzlJLFdBQ1grSSxFQUFTRyxtQkFBcUJILEVBQVN0SCxNQUE2QyxtQkFBOUJzSCxFQUFTSSxrQkFBcUUsbUJBQTNCSixFQUFTOUksZUFDN0htSixHQUFTUCxFQUFVUSxRQUFRLFVBQVlSLEVBQVVRLFFBQVEsWUE0Q3pEQyxHQTlCYSxXQUNmLEtBRUUsTUFBTy9KLEdBQ1AsT0FBTyxHQUpNLEdBOEJGLENBQUMsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsS0FDdkNnSyxFQUFjRCxFQUFTOUMsT0FBTyxDQUFDLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEtBRW5FZ0QsRUFBa0IsQ0FDcEJDLE1BQU8sUUFDUEMsYUFBYyxlQUNkQyxRQUFTLFVBQ1RDLFVBQVcsYUFRVEMsR0FObUIsQ0FBQyxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxTQUFVLFlBQWEsYUFBYyxPQUFRLFFBQVMsWUFBYSxhQUFjLGFBQWMsa0JBQW1CLGdCQUFpQixZQUFhLFFBQVMsV0FBWSxXQUFZLFVBQVcsU0FBVSxjQUFlLGlCQUFrQkwsRUFBZ0JDLE1BQU9ELEVBQWdCRSxhQUFjRixFQUFnQkcsUUFBU0gsRUFBZ0JJLFdBQVdwRCxPQUFPOEMsRUFBU1EsS0FBSSxTQUFVL0csR0FDeGEsTUFBTyxHQUFHeUQsT0FBT3pELEVBQUcsU0FDbEJ5RCxPQUFPK0MsRUFBWU8sS0FBSSxTQUFVL0csR0FDbkMsTUFBTyxLQUFLeUQsT0FBT3pELE9BR1ArRixFQUFPaUIsbUJBQXFCLElBb0IxQyxHQUFJaEIsR0FBOEMsbUJBQTNCQSxFQUFTaUIsY0FBOEIsQ0FDaEQsQ0FBQyxDQUFDLHFCQUFzQixnQkFBaUIsQ0FBQyx5QkFBMEIsb0JBQXFCLENBQUMsd0JBQXlCLGtCQUFtQixDQUFDLG9CQUFxQixjQUFlLENBQUMsaUJBQWtCLFlBQWEsQ0FBQyw4QkFBK0Isd0JBQXlCLENBQUMseUJBQTBCLG9CQUFxQixDQUFDLHVCQUF3QixrQkFBbUIsQ0FBQyw0QkFBNkIsc0JBQXVCLENBQUMsMkJBQTRCLHNCQUF1QixDQUFDLDBCQUEyQixxQkFDM2VwRCxTQUFRLFNBQVVxRCxHQUN0QixJQUFJQyxFQUFRckQsRUFBZW9ELEVBQU0sR0FDN0JFLEVBQU9ELEVBQU0sR0FDYnJILEVBQU1xSCxFQUFNLEdBRVpFLEVBakJSLFNBQWdCQSxHQUlkLE1BQVksS0FBUkEsR0FDUSxVQUFSQSxJQUNRLFNBQVJBLEdBQ0dBLEdBVUtDLENBekJkLFNBQXVCRixHQUNyQixJQUFJRyxFQUFVdkIsRUFBU2lCLGNBQWMsVUFBWUcsRUFBTyxLQUV4RCxHQUFJRyxFQUNGLE9BQU9BLEVBQVFDLGFBQWFKLEdBcUJYSyxDQUFjTCxJQUUzQkMsVUFDRlAsRUFBUWhILEdBQU91SCxNQUtyQixJQWNJSyxFQUFVdkUsRUFBYyxHQWRiLENBQ2J3RSxhQTNGMEIsS0E0RjFCQyxpQkEzRjhCLGlCQTRGOUJDLGdCQUFnQixFQUNoQkMsWUFBWSxFQUNaQyxVQUFVLEVBQ1ZDLHNCQUFzQixFQUN0QkMsa0JBQWtCLEVBQ2xCQyxlQUFnQixRQUNoQkMsb0JBQW9CLEVBQ3BCQyxvQkFBb0IsRUFDcEJDLGtCQUFrQixHQUdzQnZCLEdBRXJDWSxFQUFRRyxpQkFBZ0JILEVBQVFPLGtCQUFtQixHQUV4RCxJQUFJSyxFQUFTbkYsRUFBYyxHQUFJdUUsR0FFL0IzQixFQUFPaUIsa0JBQW9Cc0IsRUFFM0IsSUFBSUMsRUFBSXhDLEdBQVUsR0FDYndDLEVBQXNCLHFCQUFHQSxFQUFzQixtQkFBSSxJQUNuREEsRUFBc0IsbUJBQUVDLFNBQVFELEVBQXNCLG1CQUFFQyxPQUFTLElBQ2pFRCxFQUFzQixtQkFBRUUsUUFBT0YsRUFBc0IsbUJBQUVFLE1BQVEsSUFDL0RGLEVBQXNCLG1CQUFFRyxRQUFPSCxFQUFzQixtQkFBRUcsTUFBUSxJQUNwRSxJQUFJQyxFQUFZSixFQUFzQixtQkFFbENLLEVBQVksR0FZWjFDLEtBQ1FGLEVBQVNHLGdCQUFnQjBDLFNBQVcsYUFBZSxpQkFBaUJ4RyxLQUFLMkQsRUFBUzhDLGFBQy9FOUMsRUFBU0ksaUJBQWlCLG9CQVoxQixTQUFTMkMsSUFDdEIvQyxFQUFTZ0Qsb0JBQW9CLG1CQUFvQkQsR0FDeEMsRUFDVEgsRUFBVTdCLEtBQUksU0FBVWtDLEdBQ3RCLE9BQU9BLFdBZ0JYLElBVUlDLEVBTEFDLEVBQU8sYUFFUEMsT0FBMkIsSUFBWEMsUUFBb0QsSUFBbkJBLEVBQU9DLFNBQTBELG1CQUF4QkQsRUFBT0MsUUFBUUMsS0FDekdDLE9BQXdDLElBQWpCQyxFQUErQmhMLFdBQWFnTCxFQUNuRUMsRUFBYSxHQUdqQixTQUFTQyxJQUVQLElBQUssSUFBSXJPLEVBQUksRUFBR0EsRUFBSW9PLEVBQVdsTyxPQUFRRixJQUNyQ29PLEVBQVdwTyxHQUFHLEdBQUdvTyxFQUFXcE8sR0FBRyxJQUlqQ29PLEVBQWEsR0FDYlIsR0FBYSxFQUdmLFNBQVNVLEVBQVVDLEVBQVVDLEdBQzNCSixFQUFXNU4sS0FBSyxDQUFDK04sRUFBVUMsSUFFdEJaLElBQ0hBLEdBQWEsRUFDYk0sRUFBY0csRUFBWSxJQW9COUIsU0FBU0ksRUFBZUMsR0FDdEIsSUFBSUMsRUFBUUQsRUFBV0MsTUFDbkJDLEVBQVVELEVBQU1FLE9BQ2hCM0ssRUFBUXlLLEVBQU1HLE1BQ2RQLEVBQVdHLEVBQVdFLEdBQ3RCdk4sRUFBVXFOLEVBQVdLLEtBRXpCLEdBQXdCLG1CQUFiUixFQUF5QixDQUNsQ0ssRUF0RFksWUF3RFosSUFDRTFLLEVBQVFxSyxFQUFTckssR0FDakIsTUFBT2hELEdBQ1BNLEVBQU9ILEVBQVNILElBSWY4TixFQUFlM04sRUFBUzZDLEtBL0RmLGNBZ0VSMEssR0FDRnJOLEVBQVFGLEVBQVM2QyxHQWhFUixhQW1FUDBLLEdBQ0ZwTixFQUFPSCxFQUFTNkMsSUFLdEIsU0FBUzhLLEVBQWUzTixFQUFTNkMsR0FDL0IsSUFBSStLLEVBRUosSUFDRSxHQUFJNU4sSUFBWTZDLEVBQ2QsTUFBTSxJQUFJa0YsVUFBVSx3REFHdEIsR0FBSWxGLElBQTJCLG1CQUFWQSxHQUEyQyxXQUFuQmlELEVBQVFqRCxJQUFzQixDQUV6RSxJQUFJNkssRUFBTzdLLEVBQU02SyxLQUVqQixHQUFvQixtQkFBVEEsRUFpQlQsT0FoQkFBLEVBQUt6TyxLQUFLNEQsR0FBTyxTQUFVNkgsR0FDcEJrRCxJQUNIQSxHQUFXLEVBRVAvSyxJQUFVNkgsRUFDWm1ELEVBQVE3TixFQUFTMEssR0FFakJ4SyxFQUFRRixFQUFTMEssT0FHcEIsU0FBVW9ELEdBQ05GLElBQ0hBLEdBQVcsRUFDWHpOLEVBQU9ILEVBQVM4TixRQUdiLEdBR1gsTUFBT2pPLEdBS1AsT0FKSytOLEdBQ0h6TixFQUFPSCxFQUFTSCxJQUdYLEVBR1QsT0FBTyxFQUdULFNBQVNLLEVBQVFGLEVBQVM2QyxHQUNwQjdDLElBQVk2QyxHQUFVOEssRUFBZTNOLEVBQVM2QyxJQUNoRGdMLEVBQVE3TixFQUFTNkMsR0FJckIsU0FBU2dMLEVBQVE3TixFQUFTNkMsR0E3SFosWUE4SFI3QyxFQUFRd04sU0FDVnhOLEVBQVF3TixPQTlIRSxVQStIVnhOLEVBQVF5TixNQUFRNUssRUFDaEJvSyxFQUFVYyxFQUFvQi9OLElBSWxDLFNBQVNHLEVBQU9ILEVBQVM4TixHQXJJWCxZQXNJUjlOLEVBQVF3TixTQUNWeE4sRUFBUXdOLE9BdElFLFVBdUlWeE4sRUFBUXlOLE1BQVFLLEVBQ2hCYixFQUFVZSxFQUFrQmhPLElBSWhDLFNBQVNpTyxFQUFRak8sR0FDZkEsRUFBUWtPLE1BQVFsTyxFQUFRa08sTUFBTWhILFFBQVFrRyxHQUd4QyxTQUFTVyxFQUFtQi9OLEdBQzFCQSxFQUFRd04sT0FoSk0sWUFpSmRTLEVBQVFqTyxHQUdWLFNBQVNnTyxFQUFpQmhPLEdBQ3hCQSxFQUFRd04sT0FwSkssV0FxSmJTLEVBQVFqTyxJQUVIQSxFQUFRbU8sVUFBWTFCLEdBQ3ZCQyxFQUFPQyxRQUFRQyxLQUFLLHFCQUFzQjVNLEVBQVF5TixNQUFPek4sR0FJN0QsU0FBU29PLEVBQXVCcE8sR0FDOUIwTSxFQUFPQyxRQUFRQyxLQUFLLG1CQUFvQjVNLEdBTzFDLFNBQVNxTyxFQUFFQyxHQUNULEdBQXdCLG1CQUFiQSxFQUNULE1BQU0sSUFBSXZHLFVBQVUsb0JBQXNCdUcsRUFBVyxzQkFHdkQsR0FBSWhLLGdCQUFnQitKLElBQU0sRUFDeEIsTUFBTSxJQUFJdEcsVUFBVSx5SEFHdEJ6RCxLQUFLNEosTUFBUSxHQWhKZixTQUF3QkksRUFBVXRPLEdBS2hDLFNBQVN1TyxFQUFjVCxHQUNyQjNOLEVBQU9ILEVBQVM4TixHQUdsQixJQUNFUSxHQVRGLFNBQXdCekwsR0FDdEIzQyxFQUFRRixFQUFTNkMsS0FRUTBMLEdBQ3pCLE1BQU8xTyxHQUNQME8sRUFBYzFPLElBcUloQjJPLENBQWVGLEVBQVVoSyxNQUczQitKLEVBQUV0UCxVQUFZLENBQ1prSCxZQUFhb0ksRUFDYmIsT0F0TFksVUF1TFpVLE1BQU8sS0FDUFQsV0FBTzVMLEVBQ1BzTSxVQUFVLEVBQ1ZULEtBQU0sU0FBY2UsRUFBZUMsR0FDakMsSUFBSXJCLEVBQWEsQ0FDZkMsTUFBT2hKLEtBQ1BvSixLQUFNLElBQUlwSixLQUFLMkIsWUFBWXVHLEdBQzNCbUMsVUFBV0YsRUFDWEcsU0FBVUYsR0FtQlosT0FoQktBLElBQWVELEdBQW1CbkssS0FBSzZKLFdBQzFDN0osS0FBSzZKLFVBQVcsRUFoTVAsYUFrTUw3SixLQUFLa0osUUFBdUJmLEdBQzlCUSxFQUFVbUIsRUFBd0I5SixPQXBNMUIsY0F3TVJBLEtBQUtrSixRQXZNRSxhQXVNc0JsSixLQUFLa0osT0FFcENQLEVBQVVHLEVBQWdCQyxHQUcxQi9JLEtBQUs0SixNQUFNL08sS0FBS2tPLEdBR1hBLEVBQVdLLE1BRXBCbUIsTUFBTyxTQUFnQkgsR0FDckIsT0FBT3BLLEtBQUtvSixLQUFLLEtBQU1nQixLQUkzQkwsRUFBRXBNLElBQU0sU0FBVW5DLEdBQ2hCLElBQUt1SCxNQUFNQyxRQUFReEgsR0FDakIsTUFBTSxJQUFJaUksVUFBVSw0Q0FHdEIsT0FBTyxJQUFJc0csR0FBRSxTQUFVbk8sRUFBU0MsR0FDOUIsSUFBSTJPLEVBQVUsR0FDVkMsRUFBWSxFQUVoQixTQUFTVCxFQUFTVSxHQUVoQixPQURBRCxJQUNPLFNBQVVsTSxHQUNmaU0sRUFBUUUsR0FBU25NLElBRVRrTSxHQUNON08sRUFBUTRPLElBS2QsSUFBSyxJQUFXOU8sRUFBUHJCLEVBQUksRUFBWUEsRUFBSW1CLEVBQVNqQixPQUFRRixLQUM1Q3FCLEVBQVVGLEVBQVNuQixLQUVvQixtQkFBakJxQixFQUFRME4sS0FDNUIxTixFQUFRME4sS0FBS1ksRUFBUzNQLEdBQUl3QixHQUUxQjJPLEVBQVFuUSxHQUFLcUIsRUFJWitPLEdBQ0g3TyxFQUFRNE8sT0FLZFQsRUFBRVksS0FBTyxTQUFVblAsR0FDakIsSUFBS3VILE1BQU1DLFFBQVF4SCxHQUNqQixNQUFNLElBQUlpSSxVQUFVLDZDQUd0QixPQUFPLElBQUlzRyxHQUFFLFNBQVVuTyxFQUFTQyxHQUM5QixJQUFLLElBQVdILEVBQVByQixFQUFJLEVBQVlBLEVBQUltQixFQUFTakIsT0FBUUYsS0FDNUNxQixFQUFVRixFQUFTbkIsS0FFb0IsbUJBQWpCcUIsRUFBUTBOLEtBQzVCMU4sRUFBUTBOLEtBQUt4TixFQUFTQyxHQUV0QkQsRUFBUUYsT0FNaEJxTyxFQUFFbk8sUUFBVSxTQUFVMkMsR0FDcEIsT0FBSUEsR0FBNEIsV0FBbkJpRCxFQUFRakQsSUFBdUJBLEVBQU1vRCxjQUFnQm9JLEVBQ3pEeEwsRUFHRixJQUFJd0wsR0FBRSxTQUFVbk8sR0FDckJBLEVBQVEyQyxPQUlad0wsRUFBRWxPLE9BQVMsU0FBVTJOLEdBQ25CLE9BQU8sSUFBSU8sR0FBRSxTQUFVbk8sRUFBU0MsR0FDOUJBLEVBQU8yTixPQUlYLElBRUkxTCxFQS9hZ0IsR0FnYmhCOE0sRUFBdUIsQ0FDekJDLEtBQU0sR0FDTkMsRUFBRyxFQUNIQyxFQUFHLEVBQ0hDLE9BQVEsRUFDUkMsT0FBTyxFQUNQQyxPQUFPLEdBTVQsU0FBU0MsRUFBVUMsR0FDakIsR0FBS0EsR0FBUW5HLEVBQWIsQ0FJQSxJQUFJb0csRUFBUXRHLEVBQVM5SSxjQUFjLFNBQ25Db1AsRUFBTWhQLGFBQWEsT0FBUSxZQUMzQmdQLEVBQU1DLFVBQVlGLEVBSWxCLElBSEEsSUFBSUcsRUFBZXhHLEVBQVN0SCxLQUFLK04sV0FDN0JDLEVBQWMsS0FFVHBSLEVBQUlrUixFQUFhaFIsT0FBUyxFQUFHRixHQUFLLEVBQUdBLElBQUssQ0FDakQsSUFBSXFSLEVBQVFILEVBQWFsUixHQUNyQnNSLEdBQVdELEVBQU1DLFNBQVcsSUFBSUMsY0FFaEMsQ0FBQyxRQUFTLFFBQVF2RyxRQUFRc0csSUFBWSxJQUN4Q0YsRUFBY0MsR0FLbEIsT0FEQTNHLEVBQVN0SCxLQUFLb08sYUFBYVIsRUFBT0ksR0FDM0JMLEdBR1QsU0FBU1UsSUFJUCxJQUhBLElBQUlqQixFQUFPLEdBQ1BrQixFQUFLLEdBRUZsQixLQUFTLEdBQ2RrQixHQU5TLGlFQU1vQixHQUFoQkMsS0FBS0MsU0FBZ0IsR0FHcEMsT0FBT0YsRUErQlQsU0FBU0csRUFBV0MsR0FDbEIsTUFBTyxHQUFHM0osT0FBTzJKLEdBQUs1SyxRQUFRLEtBQU0sU0FBU0EsUUFBUSxLQUFNLFVBQVVBLFFBQVEsS0FBTSxTQUFTQSxRQUFRLEtBQU0sUUFBUUEsUUFBUSxLQUFNLFFBT2xJLFNBQVM2SyxFQUFXN0UsR0FDbEIsT0FBTy9NLE9BQU84SCxLQUFLaUYsR0FBVSxJQUFJOEUsUUFBTyxTQUFVQyxFQUFLQyxHQUNyRCxPQUFPRCxFQUFNLEdBQUc5SixPQUFPK0osRUFBVyxNQUFNL0osT0FBTytFLEVBQU9nRixHQUFZLE9BQ2pFLElBRUwsU0FBU0MsRUFBc0I1TSxHQUM3QixPQUFPQSxFQUFVaUwsT0FBU0QsRUFBcUJDLE1BQVFqTCxFQUFVa0wsSUFBTUYsRUFBcUJFLEdBQUtsTCxFQUFVbUwsSUFBTUgsRUFBcUJHLEdBQUtuTCxFQUFVb0wsU0FBV0osRUFBcUJJLFFBQVVwTCxFQUFVcUwsT0FBU3JMLEVBQVVzTCxNQUU5TixTQUFTdUIsR0FBZ0J4RyxHQUN2QixJQUFJckcsRUFBWXFHLEVBQUtyRyxVQUNqQjhNLEVBQWlCekcsRUFBS3lHLGVBQ3RCQyxFQUFZMUcsRUFBSzBHLFVBQ2pCQyxFQUFRLENBQ1ZoTixVQUFXLGFBQWE0QyxPQUFPa0ssRUFBaUIsRUFBRyxVQUVqREcsRUFBaUIsYUFBYXJLLE9BQXFCLEdBQWQ1QyxFQUFVa0wsRUFBUSxNQUFNdEksT0FBcUIsR0FBZDVDLEVBQVVtTCxFQUFRLE1BQ3RGK0IsRUFBYSxTQUFTdEssT0FBTzVDLEVBQVVpTCxLQUFPLElBQU1qTCxFQUFVcUwsT0FBUyxFQUFJLEdBQUksTUFBTXpJLE9BQU81QyxFQUFVaUwsS0FBTyxJQUFNakwsRUFBVXNMLE9BQVMsRUFBSSxHQUFJLE1BQzlJNkIsRUFBYyxVQUFVdkssT0FBTzVDLEVBQVVvTCxPQUFRLFNBT3JELE1BQU8sQ0FDTDRCLE1BQU9BLEVBQ1BJLE1BUlUsQ0FDVnBOLFVBQVcsR0FBRzRDLE9BQU9xSyxFQUFnQixLQUFLckssT0FBT3NLLEVBQVksS0FBS3RLLE9BQU91SyxJQVF6RUUsS0FOUyxDQUNUck4sVUFBVyxhQUFhNEMsT0FBT21LLEVBQVksR0FBSyxFQUFHLFlBK0J2RCxJQUFJTyxHQUFZLENBQ2RwQyxFQUFHLEVBQ0hDLEVBQUcsRUFDSG9DLE1BQU8sT0FDUEMsT0FBUSxRQUdWLFNBQVNDLEdBQVVDLEdBQ2pCLElBQUlDLElBQVFwTCxVQUFVNUgsT0FBUyxRQUFzQmdELElBQWpCNEUsVUFBVSxLQUFtQkEsVUFBVSxHQU0zRSxPQUpJbUwsRUFBU0UsYUFBZUYsRUFBU0UsV0FBV0MsTUFBUUYsS0FDdERELEVBQVNFLFdBQVdDLEtBQU8sU0FHdEJILEVBOEtULFNBQVNJLEdBQXNCQyxHQUM3QixJQUFJQyxFQUFnQkQsRUFBT0UsTUFDdkJDLEVBQU9GLEVBQWNFLEtBQ3JCQyxFQUFPSCxFQUFjRyxLQUNyQkMsRUFBU0wsRUFBT0ssT0FDaEJDLEVBQVdOLEVBQU9NLFNBQ2xCck8sRUFBWStOLEVBQU8vTixVQUNuQnNPLEVBQVNQLEVBQU9PLE9BQ2hCaE4sRUFBUXlNLEVBQU96TSxNQUNmaU4sRUFBU1IsRUFBT1EsT0FDaEJDLEVBQVVULEVBQU9TLFFBQ2pCQyxFQUFRVixFQUFPVSxNQUNmQyxFQUFvQlgsRUFBT1ksVUFDM0JBLE9BQWtDLElBQXRCRCxHQUF1Q0EsRUFFbkRySSxFQUFPOEgsRUFBS1MsTUFBUVQsRUFBT0QsRUFDM0JYLEVBQVFsSCxFQUFLa0gsTUFDYkMsRUFBU25ILEVBQUttSCxPQUVkcUIsRUFBYSxRQUFRak0sT0FBT3dKLEtBQUswQyxLQUFLdkIsRUFBUUMsRUFBUyxLQUN2RHVCLEVBQVksQ0FBQ3RILEVBQU9WLGlCQUFrQnNILEVBQVcsR0FBR3pMLE9BQU82RSxFQUFPWCxhQUFjLEtBQUtsRSxPQUFPeUwsR0FBWSxHQUFJUSxHQUFZaE0sUUFBTyxTQUFVNUUsR0FDM0ksT0FBcUMsSUFBOUJ3USxFQUFNTyxRQUFRdkosUUFBUXhILE1BQzVCMkUsT0FBTzZMLEVBQU1PLFNBQVNDLEtBQUssS0FDMUJuUCxFQUFVLENBQ1pvUCxTQUFVLEdBQ1Z0QixXQUFZdEwsRUFBYyxHQUFJbU0sRUFBTWIsV0FBWSxDQUM5QyxjQUFlUSxFQUNmLFlBQWFDLEVBQ2IsTUFBU1UsRUFDVCxLQUFRTixFQUFNYixXQUFXdUIsTUFBUSxNQUNqQyxNQUFTLDZCQUNULFFBQVcsT0FBT3ZNLE9BQU8ySyxFQUFPLEtBQUszSyxPQUFPNEssTUFJNUNtQixJQUNGN08sRUFBUThOLFdBcnhCUSxpQkFxeEJvQixJQUdsQ3RNLEdBQU94QixFQUFRb1AsU0FBU2pVLEtBQUssQ0FDL0JtVSxJQUFLLFFBQ0x4QixXQUFZLENBQ1Z6QixHQUFJck0sRUFBUThOLFdBQVcsb0JBQXNCLFNBQVNoTCxPQUFPNEwsR0FBV3RDLE1BRTFFZ0QsU0FBVSxDQUFDNU4sS0FHYixJQUFJK04sRUFBTy9NLEVBQWMsR0FBSXhDLEVBQVMsQ0FDcENzTyxPQUFRQSxFQUNSQyxTQUFVQSxFQUNWSCxLQUFNQSxFQUNOQyxLQUFNQSxFQUNOSSxPQUFRQSxFQUNSdk8sVUFBV0EsRUFDWHNPLE9BQVFBLEVBQ1IzRyxPQUFROEcsRUFBTTlHLFNBR1pyQixFQUFRNkgsRUFBS1MsT0FBU1YsRUFBS1UsTUE3TmpDLFNBQTBCdkksR0FDeEIsSUFUZXFILEVBU1h3QixFQUFXN0ksRUFBSzZJLFNBQ2hCdEIsRUFBYXZILEVBQUt1SCxXQUNsQk0sRUFBTzdILEVBQUs2SCxLQUNaQyxFQUFPOUgsRUFBSzhILEtBQ1ptQixFQUFpQmpKLEVBQUtrSSxPQUN0QnZPLEVBQVlxRyxFQUFLckcsVUFDakJ1UCxFQUFZckIsRUFBS1gsTUFDakJpQyxFQUFXdEIsRUFBS3JOLEtBQ2hCNE8sRUFBWXRCLEVBQUtaLE1BQ2pCbUMsRUFBV3ZCLEVBQUt0TixLQUNoQjhPLEVBQVE5QyxHQUFnQixDQUMxQjdNLFVBQVdBLEVBQ1g4TSxlQUFnQjJDLEVBQ2hCMUMsVUFBV3dDLElBRVRLLEVBQVcsQ0FDYlIsSUFBSyxPQUNMeEIsV0FBWXRMLEVBQWMsR0FBSWdMLEdBQVcsQ0FDdkNPLEtBQU0sV0FHTmdDLEVBQThCTCxFQUFTTixTQUFXLENBQ3BEQSxTQUFVTSxFQUFTTixTQUFTaEosSUFBSXVILEtBQzlCLEdBQ0FxQyxFQUFpQixDQUNuQlYsSUFBSyxJQUNMeEIsV0FBWXRMLEVBQWMsR0FBSXFOLEVBQU12QyxPQUNwQzhCLFNBQVUsQ0FBQ3pCLEdBQVVuTCxFQUFjLENBQ2pDOE0sSUFBS0ksRUFBU0osSUFDZHhCLFdBQVl0TCxFQUFjLEdBQUlrTixFQUFTNUIsV0FBWStCLEVBQU10QyxPQUN4RHdDLE1BRURFLEVBQWlCLENBQ25CWCxJQUFLLElBQ0x4QixXQUFZdEwsRUFBYyxHQUFJcU4sRUFBTTNDLE9BQ3BDa0MsU0FBVSxDQUFDWSxJQUVUdkIsRUFBUyxRQUFRM0wsT0FBTzBNLEdBQWtCcEQsS0FDMUM4RCxFQUFTLFFBQVFwTixPQUFPME0sR0FBa0JwRCxLQUMxQytELEVBQVUsQ0FDWmIsSUFBSyxPQUNMeEIsV0FBWXRMLEVBQWMsR0FBSWdMLEdBQVcsQ0FDdkNuQixHQUFJb0MsRUFDSjJCLFVBQVcsaUJBQ1hDLGlCQUFrQixtQkFFcEJqQixTQUFVLENBQUNVLEVBQVVHLElBRW5CSyxFQUFPLENBQ1RoQixJQUFLLE9BQ0xGLFNBQVUsQ0FBQyxDQUNURSxJQUFLLFdBQ0x4QixXQUFZLENBQ1Z6QixHQUFJNkQsR0FFTmQsVUFoRVd4QixFQWdFT2dDLEVBL0RELE1BQWpCaEMsRUFBUzBCLElBQ0oxQixFQUFTd0IsU0FFVCxDQUFDeEIsS0E2REx1QyxJQVVMLE9BUkFmLEVBQVNqVSxLQUFLbVYsRUFBTSxDQUNsQmhCLElBQUssT0FDTHhCLFdBQVl0TCxFQUFjLENBQ3hCdUwsS0FBTSxlQUNOLFlBQWEsUUFBUWpMLE9BQU9vTixFQUFRLEtBQ3BDN0IsS0FBTSxRQUFRdkwsT0FBTzJMLEVBQVEsTUFDNUJqQixNQUVFLENBQ0w0QixTQUFVQSxFQUNWdEIsV0FBWUEsR0F3SnlCeUMsQ0FBZ0JoQixHQXBKekQsU0FBMkJoSixHQUN6QixJQUFJNkksRUFBVzdJLEVBQUs2SSxTQUNoQnRCLEVBQWF2SCxFQUFLdUgsV0FDbEJNLEVBQU83SCxFQUFLNkgsS0FDWmxPLEVBQVlxRyxFQUFLckcsVUFFakJzUSxFQUFjOUQsRUFETG5HLEVBQUtzQixRQU9sQixHQUpJMkksRUFBWTNWLE9BQVMsSUFDdkJpVCxFQUFrQixNQUFJMEMsR0FHcEIxRCxFQUFzQjVNLEdBQVksQ0FDcEMsSUFBSTJQLEVBQVE5QyxHQUFnQixDQUMxQjdNLFVBQVdBLEVBQ1g4TSxlQUFnQm9CLEVBQUtYLE1BQ3JCUixVQUFXbUIsRUFBS1gsUUFFbEIyQixFQUFTalUsS0FBSyxDQUNabVUsSUFBSyxJQUNMeEIsV0FBWXRMLEVBQWMsR0FBSXFOLEVBQU0zQyxPQUNwQ2tDLFNBQVUsQ0FBQyxDQUNURSxJQUFLLElBQ0x4QixXQUFZdEwsRUFBYyxHQUFJcU4sRUFBTXZDLE9BQ3BDOEIsU0FBVSxDQUFDLENBQ1RFLElBQUtsQixFQUFLck4sS0FBS3VPLElBQ2ZGLFNBQVVoQixFQUFLck4sS0FBS3FPLFNBQ3BCdEIsV0FBWXRMLEVBQWMsR0FBSTRMLEVBQUtyTixLQUFLK00sV0FBWStCLEVBQU10QyxpQkFLaEU2QixFQUFTalUsS0FBS2lULEVBQUtyTixNQUdyQixNQUFPLENBQ0xxTyxTQUFVQSxFQUNWdEIsV0FBWUEsR0ErR2lEMkMsQ0FBaUJsQixHQUM1RUgsRUFBVzVJLEVBQU00SSxTQUNqQnRCLEVBQWF0SCxFQUFNc0gsV0FLdkIsT0FIQXlCLEVBQUtILFNBQVdBLEVBQ2hCRyxFQUFLekIsV0FBYUEsRUFFZFUsRUF2Rk4sU0FBbUJqSSxHQUNqQixJQUFJK0gsRUFBUy9ILEVBQUsrSCxPQUNkQyxFQUFXaEksRUFBS2dJLFNBQ2hCYSxFQUFXN0ksRUFBSzZJLFNBQ2hCdEIsRUFBYXZILEVBQUt1SCxXQUNsQlUsRUFBU2pJLEVBQUtpSSxPQUVsQixNQUFPLENBQUMsQ0FDTmMsSUFBSyxNQUNMeEIsV0FBWSxDQUNWbkMsTUFBTyxrQkFFVHlELFNBQVUsQ0FBQyxDQUNURSxJQUFLLFNBQ0x4QixXQUFZdEwsRUFBYyxHQUFJc0wsRUFBWSxDQUN4Q3pCLElBVGMsSUFBWG1DLEVBQWtCLEdBQUcxTCxPQUFPd0wsRUFBUSxLQUFLeEwsT0FBTzZFLEVBQU9YLGFBQWMsS0FBS2xFLE9BQU95TCxHQUFZQyxJQVdsR1ksU0FBVUEsTUF1RUxzQixDQUFTbkIsR0FuSHBCLFNBQWlCaEosR0FDZixJQUFJNkksRUFBVzdJLEVBQUs2SSxTQUNoQmhCLEVBQU83SCxFQUFLNkgsS0FDWkMsRUFBTzlILEVBQUs4SCxLQUNaUCxFQUFhdkgsRUFBS3VILFdBQ2xCakcsRUFBU3RCLEVBQUtzQixPQUNkM0gsRUFBWXFHLEVBQUtyRyxVQUVyQixHQUFJNE0sRUFBc0I1TSxJQUFja08sRUFBS1UsUUFBVVQsRUFBS1MsTUFBTyxDQUNqRSxJQUVJNkIsRUFBUyxDQUNYdkYsRUFIVWdELEVBQUtYLE1BQ0pXLEVBQUtWLE9BRUksRUFDcEJyQyxFQUFHLElBRUx5QyxFQUFrQixNQUFJcEIsRUFBV2xLLEVBQWMsR0FBSXFGLEVBQVEsQ0FDekQsbUJBQW9CLEdBQUcvRSxPQUFPNk4sRUFBT3ZGLEVBQUlsTCxFQUFVa0wsRUFBSSxHQUFJLE9BQU90SSxPQUFPNk4sRUFBT3RGLEVBQUluTCxFQUFVbUwsRUFBSSxHQUFJLFNBSTFHLE1BQU8sQ0FBQyxDQUNOaUUsSUFBSyxNQUNMeEIsV0FBWUEsRUFDWnNCLFNBQVVBLElBOEZId0IsQ0FBT3JCLEdBR2xCLFNBQVNzQixHQUF1QjVDLEdBQzlCLElBQUlqTyxFQUFVaU8sRUFBT2pPLFFBQ2pCeU4sRUFBUVEsRUFBT1IsTUFDZkMsRUFBU08sRUFBT1AsT0FDaEJ4TixFQUFZK04sRUFBTy9OLFVBQ25Cc0IsRUFBUXlNLEVBQU96TSxNQUNmbU4sRUFBUVYsRUFBT1UsTUFDZm1DLEVBQXFCN0MsRUFBT1ksVUFDNUJBLE9BQW1DLElBQXZCaUMsR0FBd0NBLEVBRXBEaEQsRUFBYXRMLEVBQWMsR0FBSW1NLEVBQU1iLFdBQVl0TSxFQUFRLENBQzNELE1BQVNBLEdBQ1AsR0FBSSxDQUNOLE1BQVNtTixFQUFNTyxRQUFRQyxLQUFLLE9BRzFCTixJQUNGZixFQXowQmdCLGlCQXkwQlksSUFHOUIsSUFBSWpHLEVBQVNyRixFQUFjLEdBQUltTSxFQUFNOUcsUUFFakNpRixFQUFzQjVNLEtBQ3hCMkgsRUFBa0IsVUFqVHRCLFNBQXlCckIsR0FDdkIsSUFBSXRHLEVBQVlzRyxFQUFNdEcsVUFDbEI2USxFQUFjdkssRUFBTWlILE1BQ3BCQSxPQUF3QixJQUFoQnNELEVBcGlCTSxHQW9pQm1DQSxFQUNqREMsRUFBZXhLLEVBQU1rSCxPQUNyQkEsT0FBMEIsSUFBakJzRCxFQXRpQkssR0FzaUJxQ0EsRUFDbkRDLEVBQXNCekssRUFBTTBLLGNBQzVCQSxPQUF3QyxJQUF4QkQsR0FBeUNBLEVBQ3pEdkssRUFBTSxHQVlWLE9BVEVBLEdBREV3SyxHQUFpQnhMLEVBQ1osYUFBYTVDLE9BQU81QyxFQUFVa0wsRUFBSWhOLEVBQUlxUCxFQUFRLEVBQUcsUUFBUTNLLE9BQU81QyxFQUFVbUwsRUFBSWpOLEVBQUlzUCxFQUFTLEVBQUcsUUFDNUZ3RCxFQUNGLHlCQUF5QnBPLE9BQU81QyxFQUFVa0wsRUFBSWhOLEVBQUcscUJBQXFCMEUsT0FBTzVDLEVBQVVtTCxFQUFJak4sRUFBRyxTQUU5RixhQUFhMEUsT0FBTzVDLEVBQVVrTCxFQUFJaE4sRUFBRyxRQUFRMEUsT0FBTzVDLEVBQVVtTCxFQUFJak4sRUFBRyxRQUc5RXNJLEdBQU8sU0FBUzVELE9BQU81QyxFQUFVaUwsS0FBTy9NLEdBQUs4QixFQUFVcUwsT0FBUyxFQUFJLEdBQUksTUFBTXpJLE9BQU81QyxFQUFVaUwsS0FBTy9NLEdBQUs4QixFQUFVc0wsT0FBUyxFQUFJLEdBQUksTUFDdEk5RSxHQUFPLFVBQVU1RCxPQUFPNUMsRUFBVW9MLE9BQVEsU0E4UmxCNkYsQ0FBZ0IsQ0FDcENqUixVQUFXQSxFQUNYZ1IsZUFBZSxFQUNmekQsTUFBT0EsRUFDUEMsT0FBUUEsSUFFVjdGLEVBQU8scUJBQXVCQSxFQUFrQixXQUdsRCxJQUFJMkksRUFBYzlELEVBQVc3RSxHQUV6QjJJLEVBQVkzVixPQUFTLElBQ3ZCaVQsRUFBa0IsTUFBSTBDLEdBR3hCLElBQUk5SixFQUFNLEdBaUJWLE9BaEJBQSxFQUFJdkwsS0FBSyxDQUNQbVUsSUFBSyxPQUNMeEIsV0FBWUEsRUFDWnNCLFNBQVUsQ0FBQ3BQLEtBR1R3QixHQUNGa0YsRUFBSXZMLEtBQUssQ0FDUG1VLElBQUssT0FDTHhCLFdBQVksQ0FDVmhOLE1BQU8sV0FFVHNPLFNBQVUsQ0FBQzVOLEtBSVJrRixFQXVDVCxJQUFJMEssR0FBUyxhQWlEVHpFLElBL0NJaEYsRUFBT0Ysb0JBQXNCbkMsR0FBZUEsRUFBWVQsTUFBUVMsRUFBWVIsUUErQ3ZFLFNBQTBCdU0sRUFBUy9JLEVBQUlnSixFQUFjQyxHQUNoRSxJQUdJNVcsRUFDQXdFLEVBQ0FxUyxFQUxBNU8sRUFBTzlILE9BQU84SCxLQUFLeU8sR0FDbkJ4VyxFQUFTK0gsRUFBSy9ILE9BQ2RtSCxPQUEyQm5FLElBQWhCMFQsRUF0QkcsU0FBdUJFLEVBQU1GLEdBQy9DLE9BQU8sU0FBVUcsRUFBR0MsRUFBR3hULEVBQUdDLEdBQ3hCLE9BQU9xVCxFQUFLeFcsS0FBS3NXLEVBQWFHLEVBQUdDLEVBQUd4VCxFQUFHQyxJQW9CRXdULENBQWN0SixFQUFJaUosR0FBZWpKLEVBYTVFLFNBUnFCekssSUFBakJ5VCxHQUNGM1csRUFBSSxFQUNKNlcsRUFBU0gsRUFBUXpPLEVBQUssTUFFdEJqSSxFQUFJLEVBQ0o2VyxFQUFTRixHQUdKM1csRUFBSUUsRUFBUUYsSUFFakI2VyxFQUFTeFAsRUFBU3dQLEVBQVFILEVBRDFCbFMsRUFBTXlELEVBQUtqSSxJQUM2QndFLEVBQUtrUyxHQUcvQyxPQUFPRyxJQWNULFNBQVNLLEdBQVl2RCxFQUFRSCxHQUMzQixJQUFJRixFQUFTeEwsVUFBVTVILE9BQVMsUUFBc0JnRCxJQUFqQjRFLFVBQVUsR0FBbUJBLFVBQVUsR0FBSyxHQUM3RXFQLEVBQW9CN0QsRUFBTzhELFVBQzNCQSxPQUFrQyxJQUF0QkQsR0FBdUNBLEVBQ25ERSxFQUFhbFgsT0FBTzhILEtBQUt1TCxHQUFPeEIsUUFBTyxTQUFVQyxFQUFLMkIsR0FDeEQsSUFBSXhOLEVBQU9vTixFQUFNSSxHQVNqQixRQVJpQnhOLEVBQUtBLEtBR3BCNkwsRUFBSTdMLEVBQUt3TixVQUFZeE4sRUFBS0EsS0FFMUI2TCxFQUFJMkIsR0FBWXhOLEVBR1g2TCxJQUNOLElBRW9DLG1CQUE1QjVFLEVBQVVGLE1BQU1tSyxTQUEyQkYsRUFHcEQvSixFQUFVSCxPQUFPeUcsR0FBVTlMLEVBQWMsR0FBSXdGLEVBQVVILE9BQU95RyxJQUFXLEdBQUkwRCxHQUY3RWhLLEVBQVVGLE1BQU1tSyxRQUFRM0QsRUFBUTBELEdBWW5CLFFBQVgxRCxHQUNGdUQsR0FBWSxLQUFNMUQsR0FJdEIsSUFBSXRHLEdBQVNHLEVBQVVILE9BQ25CRSxHQUFRQyxFQUFVRCxNQUlsQm1LLEdBQVEsV0FDVixJQUFJQyxFQUFTLFNBQWdCQyxHQUMzQixPQUFPekYsR0FBTzlFLElBQVEsU0FBVXZKLEVBQUdxTixFQUFPMkMsR0FFeEMsT0FEQWhRLEVBQUVnUSxHQUFVM0IsR0FBT2hCLEVBQU95RyxFQUFTLElBQzVCOVQsSUFDTixLQUdRNlQsR0FBTyxTQUFVdkYsRUFBSzdMLEVBQU13TixHQUt2QyxPQUpJeE4sRUFBSyxLQUNQNkwsRUFBSTdMLEVBQUssSUFBTXdOLEdBR1YzQixLQUVLdUYsR0FBTyxTQUFVdkYsRUFBSzdMLEVBQU13TixHQUN4QyxJQUFJOEQsRUFBWXRSLEVBQUssR0FLckIsT0FKQTZMLEVBQUkyQixHQUFZQSxFQUNoQjhELEVBQVVuUCxTQUFRLFNBQVVvUCxHQUMxQjFGLEVBQUkwRixHQUFZL0QsS0FFWDNCLEtBRVQsSUFBSTJGLEVBQWEsUUFBUzFLLEdBQ2I4RSxHQUFPNUUsSUFBTyxTQUFVNkUsRUFBSzRGLEdBQ3hDLElBQUlDLEVBQVVELEVBQUssR0FDZmxFLEVBQVNrRSxFQUFLLEdBQ2RqRSxFQUFXaUUsRUFBSyxHQVVwQixNQVJlLFFBQVhsRSxHQUFxQmlFLElBQ3ZCakUsRUFBUyxPQUdYMUIsRUFBSTZGLEdBQVcsQ0FDYm5FLE9BQVFBLEVBQ1JDLFNBQVVBLEdBRUwzQixJQUNOLEtBRUxzRixLQWNlbEssRUFBVUgsT0EyQnpCLFNBQVM2SyxHQUFnQkMsRUFBU3JFLEVBQVFDLEdBQ3hDLEdBQUlvRSxHQUFXQSxFQUFRckUsSUFBV3FFLEVBQVFyRSxHQUFRQyxHQUNoRCxNQUFPLENBQ0xELE9BQVFBLEVBQ1JDLFNBQVVBLEVBQ1Z4TixLQUFNNFIsRUFBUXJFLEdBQVFDLElBSzVCLFNBQVNxRSxHQUFPQyxHQUNkLElBQUl2RCxFQUFNdUQsRUFBY3ZELElBQ3BCd0QsRUFBd0JELEVBQWMvRSxXQUN0Q0EsT0FBdUMsSUFBMUJnRixFQUFtQyxHQUFLQSxFQUNyREMsRUFBd0JGLEVBQWN6RCxTQUN0Q0EsT0FBcUMsSUFBMUIyRCxFQUFtQyxHQUFLQSxFQUV2RCxNQUE2QixpQkFBbEJGLEVBQ0ZyRyxFQUFXcUcsR0FFWCxJQUFJL1AsT0FBT3dNLEVBQUssS0FBS3hNLE9BNW5CaEMsU0FBd0JnTCxHQUN0QixPQUFPaFQsT0FBTzhILEtBQUtrTCxHQUFjLElBQUluQixRQUFPLFNBQVVDLEVBQUtvRyxHQUN6RCxPQUFPcEcsRUFBTSxHQUFHOUosT0FBT2tRLEVBQWUsTUFBT2xRLE9BQU8wSixFQUFXc0IsRUFBV2tGLElBQWlCLFFBQzFGLElBQUlDLE9BeW5COEJDLENBQWVwRixHQUFhLEtBQUtoTCxPQUFPc00sRUFBU2hKLElBQUl3TSxJQUFRekQsS0FBSyxJQUFLLE1BQU1yTSxPQUFPd00sRUFBSyxLQXdNaEksSUFBSTZELEdBQXVCLFNBQThCQyxHQUN2RCxJQUFJbFQsRUFBWSxDQUNkaUwsS0FBTSxHQUNOQyxFQUFHLEVBQ0hDLEVBQUcsRUFDSEUsT0FBTyxFQUNQQyxPQUFPLEVBQ1BGLE9BQVEsR0FHVixPQUFLOEgsRUFHSUEsRUFBZ0JDLGNBQWNDLE1BQU0sS0FBSzNHLFFBQU8sU0FBVUMsRUFBS3ZOLEdBQ3BFLElBQUlrVSxFQUFRbFUsRUFBRWdVLGNBQWNDLE1BQU0sS0FDOUJFLEVBQVFELEVBQU0sR0FDZEUsRUFBT0YsRUFBTXpULE1BQU0sR0FBR3FQLEtBQUssS0FFL0IsR0FBSXFFLEdBQWtCLE1BQVRDLEVBRVgsT0FEQTdHLEVBQUlyQixPQUFRLEVBQ0xxQixFQUdULEdBQUk0RyxHQUFrQixNQUFUQyxFQUVYLE9BREE3RyxFQUFJcEIsT0FBUSxFQUNMb0IsRUFLVCxHQUZBNkcsRUFBT0MsV0FBV0QsR0FFZEUsTUFBTUYsR0FDUixPQUFPN0csRUFHVCxPQUFRNEcsR0FDTixJQUFLLE9BQ0g1RyxFQUFJekIsS0FBT3lCLEVBQUl6QixLQUFPc0ksRUFDdEIsTUFFRixJQUFLLFNBQ0g3RyxFQUFJekIsS0FBT3lCLEVBQUl6QixLQUFPc0ksRUFDdEIsTUFFRixJQUFLLE9BQ0g3RyxFQUFJeEIsRUFBSXdCLEVBQUl4QixFQUFJcUksRUFDaEIsTUFFRixJQUFLLFFBQ0g3RyxFQUFJeEIsRUFBSXdCLEVBQUl4QixFQUFJcUksRUFDaEIsTUFFRixJQUFLLEtBQ0g3RyxFQUFJdkIsRUFBSXVCLEVBQUl2QixFQUFJb0ksRUFDaEIsTUFFRixJQUFLLE9BQ0g3RyxFQUFJdkIsRUFBSXVCLEVBQUl2QixFQUFJb0ksRUFDaEIsTUFFRixJQUFLLFNBQ0g3RyxFQUFJdEIsT0FBU3NCLEVBQUl0QixPQUFTbUksRUFJOUIsT0FBTzdHLElBQ04xTSxHQXRESUEsR0FrSlgsU0FBUzBULEdBQVk3VyxHQUNuQnVELEtBQUszQyxLQUFPLGNBQ1oyQyxLQUFLNUMsUUFBVVgsR0FBUyxtQkFDeEJ1RCxLQUFLdVQsT0FBUSxJQUFJN1csT0FBUTZXLE1BRTNCRCxHQUFZN1ksVUFBWUQsT0FBT29FLE9BQU9sQyxNQUFNakMsV0FDNUM2WSxHQUFZN1ksVUFBVWtILFlBQWMyUixHQUVwQyxJQUFJRSxHQUFPLENBQ1QvRixLQUFNLGdCQUVKZ0csR0FBaUIsQ0FDbkJDLGNBQWUsTUFDZkMsWUFBYSxhQUNiQyxJQUFLLE1BRUhDLEdBQU8sQ0FDVDdFLElBQUssT0FDTHhCLFdBQVl0TCxFQUFjLEdBQUlzUixHQUFNLENBQ2xDMVYsRUFBRyxzNENBSUhnVyxHQUFrQjVSLEVBQWMsR0FBSXVSLEdBQWdCLENBQ3REZixjQUFlLFlBS0h4USxFQUFjLEdBQUlzUixHQUFNLENBQ2xDTyxHQUFJLE1BQ0pDLEdBQUksTUFDSjVWLEVBQUcsT0FJUzhELEVBQWMsR0FBSXVSLEdBQWdCLENBQzVDZixjQUFlLElBQ2Z1QixPQUFRLHVCQUlFL1IsRUFBYyxHQUFJNFIsR0FBaUIsQ0FDN0NHLE9BQVEsaUJBTUEvUixFQUFjLEdBQUlzUixHQUFNLENBQ2xDVSxRQUFTLElBQ1RwVyxFQUFHLHlTQUlTb0UsRUFBYyxHQUFJNFIsR0FBaUIsQ0FDN0NHLE9BQVEsaUJBTUEvUixFQUFjLEdBQUlzUixHQUFNLENBQ2xDVSxRQUFTLElBQ1RwVyxFQUFHLGdKQUlTb0UsRUFBYyxHQUFJNFIsR0FBaUIsQ0FDN0NHLE9BQVEsaUJBU0N2TSxFQUFVSCxPQUN6QixTQUFTNE0sR0FBWTFULEdBQ25CLElBQUkwTSxFQUFRMU0sRUFBSyxHQUNiMk0sRUFBUzNNLEVBQUssR0FJZDJULEVBRGV2UixFQUREcEMsRUFBS2pCLE1BQU0sR0FDa0IsR0FDakIsR0FvQzlCLE1BQU8sQ0FDTGdQLE9BQU8sRUFDUHJCLE1BQU9BLEVBQ1BDLE9BQVFBLEVBQ1IzTSxLQXBDRXNDLE1BQU1DLFFBQVFvUixHQUNOLENBQ1JwRixJQUFLLElBQ0x4QixXQUFZLENBQ1ZoTixNQUFPLEdBQUdnQyxPQUFPNkUsRUFBT1gsYUFBYyxLQUFLbEUsT0FBT2dELEVBQWdCQyxRQUVwRXFKLFNBQVUsQ0FBQyxDQUNURSxJQUFLLE9BQ0x4QixXQUFZLENBQ1ZoTixNQUFPLEdBQUdnQyxPQUFPNkUsRUFBT1gsYUFBYyxLQUFLbEUsT0FBT2dELEVBQWdCSSxXQUNsRTZILEtBQU0sZUFDTjNQLEVBQUdzVyxFQUFXLEtBRWYsQ0FDRHBGLElBQUssT0FDTHhCLFdBQVksQ0FDVmhOLE1BQU8sR0FBR2dDLE9BQU82RSxFQUFPWCxhQUFjLEtBQUtsRSxPQUFPZ0QsRUFBZ0JHLFNBQ2xFOEgsS0FBTSxlQUNOM1AsRUFBR3NXLEVBQVcsT0FLVixDQUNScEYsSUFBSyxPQUNMeEIsV0FBWSxDQUNWQyxLQUFNLGVBQ04zUCxFQUFHc1csS0F3Q0kxTSxFQUFVSCxPQW1RekIsU0FBUzZELEtBQ1AsSUFDSWlKLEVBOTNEMEIsaUJBKzNEMUJDLEVBQUtqTixFQUFPWCxhQUNaNk4sRUFBS2xOLEVBQU9WLGlCQUNabEgsRUFQVywyalFBU2YsR0FwNEQwQixPQW80RHRCNlUsR0FBY0MsSUFBT0YsRUFBSyxDQUM1QixJQUFJRyxFQUFRLElBQUlDLE9BQU8sTUFBTWpTLE9BcjRETCxLQXE0RGlCLE9BQVEsS0FDN0NrUyxFQUFpQixJQUFJRCxPQUFPLE9BQU9qUyxPQXQ0RGYsS0FzNEQyQixPQUFRLEtBQ3ZEbVMsRUFBUSxJQUFJRixPQUFPLE1BQU1qUyxPQUFPNlIsR0FBTSxLQUMxQzVVLEVBQUlBLEVBQUU4QixRQUFRaVQsRUFBTyxJQUFJaFMsT0FBTzhSLEVBQUksTUFBTS9TLFFBQVFtVCxFQUFnQixLQUFLbFMsT0FBTzhSLEVBQUksTUFBTS9TLFFBQVFvVCxFQUFPLElBQUluUyxPQUFPK1IsSUFHcEgsT0FBTzlVLEVBc0RULFNBQVNtVixLQUNIdk4sRUFBT1IsYUFBZWdPLEtBQ3hCMUosRUFBVUMsTUFFVnlKLElBQWUsR0FJbkIsU0FBU0MsR0FBVTFPLEVBQUsyTyxHQW1CdEIsT0FsQkF2YSxPQUFPeUQsZUFBZW1JLEVBQUssV0FBWSxDQUNyQ2pJLElBQUs0VyxJQUVQdmEsT0FBT3lELGVBQWVtSSxFQUFLLE9BQVEsQ0FDakNqSSxJQUFLLFdBQ0gsT0FBT2lJLEVBQUlrSCxTQUFTeEgsS0FBSSxTQUFVc0wsR0FDaEMsT0FBT2tCLEdBQU9sQixTQUlwQjVXLE9BQU95RCxlQUFlbUksRUFBSyxPQUFRLENBQ2pDakksSUFBSyxXQUNILEdBQUs4RyxFQUFMLENBQ0EsSUFBSStQLEVBQVlqUSxFQUFTOUksY0FBYyxPQUV2QyxPQURBK1ksRUFBVTFKLFVBQVlsRixFQUFJNk8sS0FDbkJELEVBQVVsRyxhQUdkMUksRUFHVCxTQUFTOE8sR0FBbUJDLEdBQzFCLElBQUlDLEVBQXFCRCxFQUFXbkgsT0FDaENBLE9BQWdDLElBQXZCb0gsRUFBZ0MsS0FBT0EsRUFDaERuSCxFQUFXa0gsRUFBV2xILFNBQzFCLEdBQUtBLEVBQ0wsT0FBT21FLEdBQWdCaUQsR0FBUUMsWUFBYXRILEVBQVFDLElBQWFtRSxHQUFnQjFLLEVBQVVILE9BQVF5RyxFQUFRQyxHQW1CN0csSUFoQnNCM0ssR0FnQmxCK1IsR0FBVSxJQXZHZCxXQUNFLFNBQVNFLEtBbGlFWCxTQUF5QkMsRUFBVUMsR0FDakMsS0FBTUQsYUFBb0JDLEdBQ3hCLE1BQU0sSUFBSWhTLFVBQVUscUNBaWlFcEJpUyxDQUFnQjFWLEtBQU11VixHQUV0QnZWLEtBQUtzVixZQUFjLEdBcmhFdkIsSUFBc0JHLEVBQWFFLEVBQVlDLEVBK2pFN0MsT0EvakVvQkgsRUF3aEVQRixHQXhoRW9CSSxFQXdoRVgsQ0FBQyxDQUNyQjlXLElBQUssTUFDTE4sTUFBTyxXQUdMLElBRkEsSUFBSXNYLEVBQVE3VixLQUVIOFYsRUFBTzNULFVBQVU1SCxPQUFRK2EsRUFBYyxJQUFJdlMsTUFBTStTLEdBQU9DLEVBQU8sRUFBR0EsRUFBT0QsRUFBTUMsSUFDdEZULEVBQVlTLEdBQVE1VCxVQUFVNFQsR0FHaEMsSUFBSUMsRUFBWVYsRUFBWWpKLE9BQU9yTSxLQUFLaVcsaUJBQWtCLElBQzFEemIsT0FBTzhILEtBQUswVCxHQUFXcFQsU0FBUSxTQUFVL0QsR0FDdkNnWCxFQUFNUCxZQUFZelcsR0FBT3FELEVBQWMsR0FBSTJULEVBQU1QLFlBQVl6VyxJQUFRLEdBQUltWCxFQUFVblgsSUFDbkYwUyxHQUFZMVMsRUFBS21YLEVBQVVuWCxJQUMzQitTLFVBR0gsQ0FDRC9TLElBQUssUUFDTE4sTUFBTyxXQUNMeUIsS0FBS3NWLFlBQWMsS0FFcEIsQ0FDRHpXLElBQUssbUJBQ0xOLE1BQU8sU0FBMEJ5WCxFQUFXRSxHQUMxQyxJQUFJeEUsRUFBYXdFLEVBQVdsSSxRQUFVa0ksRUFBV2pJLFVBQVlpSSxFQUFXelYsS0FBTyxDQUM3RTBWLEVBQUdELEdBQ0RBLEVBU0osT0FSQTFiLE9BQU84SCxLQUFLb1AsR0FBWTVMLEtBQUksU0FBVWpILEdBQ3BDLElBQUl1WCxFQUFrQjFFLEVBQVc3UyxHQUM3Qm1QLEVBQVNvSSxFQUFnQnBJLE9BQ3pCQyxFQUFXbUksRUFBZ0JuSSxTQUMzQnhOLEVBQU8yVixFQUFnQjNWLEtBQ3RCdVYsRUFBVWhJLEtBQVNnSSxFQUFVaEksR0FBVSxJQUM1Q2dJLEVBQVVoSSxHQUFRQyxHQUFZeE4sS0FFekJ1VixPQTFqRUtwVSxFQUFrQjZULEVBQVloYixVQUFXa2IsR0FDckRDLEdBQWFoVSxFQUFrQjZULEVBQWFHLEdBNmpFekNMLEVBOUNULElBNkdJVixJQUFlLEVBb0Rmd0IsR0FBUSxDQUNWelcsVUFBVyxTQUFtQmtULEdBQzVCLE9BQU9ELEdBQXFCQyxLQUc1QnJTLElBL0VrQjZDLEdBK0VFLFNBQVVnVCxHQUNoQyxJQUFJM0ksRUFBU3hMLFVBQVU1SCxPQUFTLFFBQXNCZ0QsSUFBakI0RSxVQUFVLEdBQW1CQSxVQUFVLEdBQUssR0FDN0VvVSxFQUFvQjVJLEVBQU8vTixVQUMzQkEsT0FBa0MsSUFBdEIyVyxFQUErQjNMLEVBQXVCMkwsRUFDbEVDLEVBQWlCN0ksRUFBT08sT0FDeEJBLE9BQTRCLElBQW5Cc0ksR0FBb0NBLEVBQzdDQyxFQUFlOUksRUFBT0ksS0FDdEJBLE9BQXdCLElBQWpCMEksRUFBMEIsS0FBT0EsRUFDeENDLEVBQWlCL0ksRUFBT1EsT0FDeEJBLE9BQTRCLElBQW5CdUksRUFBNEIsS0FBT0EsRUFDNUNDLEVBQWdCaEosRUFBT3pNLE1BQ3ZCQSxPQUEwQixJQUFsQnlWLEVBQTJCLEtBQU9BLEVBQzFDQyxFQUFrQmpKLEVBQU9TLFFBQ3pCQSxPQUE4QixJQUFwQndJLEVBQTZCLEtBQU9BLEVBQzlDQyxFQUFrQmxKLEVBQU9pQixRQUN6QkEsT0FBOEIsSUFBcEJpSSxFQUE2QixHQUFLQSxFQUM1Q0MsRUFBcUJuSixFQUFPSCxXQUM1QkEsT0FBb0MsSUFBdkJzSixFQUFnQyxHQUFLQSxFQUNsREMsRUFBaUJwSixFQUFPcEcsT0FDeEJBLE9BQTRCLElBQW5Cd1AsRUFBNEIsR0FBS0EsRUFDOUMsR0FBS1QsRUFBTCxDQUNBLElBQUl0SSxFQUFTc0ksRUFBZXRJLE9BQ3hCQyxFQUFXcUksRUFBZXJJLFNBQzFCeE4sRUFBTzZWLEVBQWU3VixLQUMxQixPQUFPcVUsR0FBVTVTLEVBQWMsQ0FDN0JqRixLQUFNLFFBQ0xxWixJQUFpQixXQVlsQixPQVhBMUIsS0FFSXZOLEVBQU9QLFdBQ0w1RixFQUNGc00sRUFBVyxtQkFBcUIsR0FBR2hMLE9BQU82RSxFQUFPVixpQkFBa0IsV0FBV25FLE9BQU80TCxHQUFXdEMsTUFFaEcwQixFQUFXLGVBQWlCLE9BQzVCQSxFQUFzQixVQUFJLFVBSXZCRSxHQUFzQixDQUMzQkcsTUFBTyxDQUNMQyxLQUFNcUcsR0FBWTFULEdBQ2xCc04sS0FBTUEsRUFBT29HLEdBQVlwRyxFQUFLdE4sTUFBUSxDQUNwQytOLE9BQU8sRUFDUHJCLE1BQU8sS0FDUEMsT0FBUSxLQUNSM00sS0FBTSxLQUdWdU4sT0FBUUEsRUFDUkMsU0FBVUEsRUFDVnJPLFVBQVdzQyxFQUFjLEdBQUkwSSxFQUFzQmhMLEdBQ25Ec08sT0FBUUEsRUFDUmhOLE1BQU9BLEVBQ1BpTixPQUFRQSxFQUNSQyxRQUFTQSxFQUNUQyxNQUFPLENBQ0xiLFdBQVlBLEVBQ1pqRyxPQUFRQSxFQUNScUgsUUFBU0EsVUF4SVIsU0FBVW9JLEdBQ2YsSUFBSXJKLEVBQVN4TCxVQUFVNUgsT0FBUyxRQUFzQmdELElBQWpCNEUsVUFBVSxHQUFtQkEsVUFBVSxHQUFLLEdBQzdFbVUsR0FBa0JVLEdBQXVCLElBQUl2VyxLQUFPdVcsRUFBc0I5QixHQUFtQjhCLEdBQXVCLElBQ3BIakosRUFBT0osRUFBT0ksS0FNbEIsT0FKSUEsSUFDRkEsR0FBUUEsR0FBUSxJQUFJdE4sS0FBT3NOLEVBQU9tSCxHQUFtQm5ILEdBQVEsS0FHeER6SyxHQUFLZ1QsRUFBZ0JwVSxFQUFjLEdBQUl5TCxFQUFRLENBQ3BESSxLQUFNQSxPQW1JUmtKLEdBQU8sU0FBY3ZYLEdBQ3ZCLElBQUlpTyxFQUFTeEwsVUFBVTVILE9BQVMsUUFBc0JnRCxJQUFqQjRFLFVBQVUsR0FBbUJBLFVBQVUsR0FBSyxHQUM3RStVLEVBQXFCdkosRUFBTy9OLFVBQzVCQSxPQUFtQyxJQUF2QnNYLEVBQWdDdE0sRUFBdUJzTSxFQUNuRUMsRUFBaUJ4SixFQUFPek0sTUFDeEJBLE9BQTJCLElBQW5CaVcsRUFBNEIsS0FBT0EsRUFDM0NDLEVBQW1CekosRUFBT2lCLFFBQzFCQSxPQUErQixJQUFyQndJLEVBQThCLEdBQUtBLEVBQzdDQyxFQUFzQjFKLEVBQU9ILFdBQzdCQSxPQUFxQyxJQUF4QjZKLEVBQWlDLEdBQUtBLEVBQ25EQyxFQUFrQjNKLEVBQU9wRyxPQUN6QkEsT0FBNkIsSUFBcEIrUCxFQUE2QixHQUFLQSxFQUMvQyxPQUFPeEMsR0FBVSxDQUNmN1gsS0FBTSxPQUNOeUMsUUFBU0EsSUFDUixXQUVELE9BREFrVixLQUNPckUsR0FBdUIsQ0FDNUI3USxRQUFTQSxFQUNURSxVQUFXc0MsRUFBYyxHQUFJMEksRUFBc0JoTCxHQUNuRHNCLE1BQU9BLEVBQ1BtTixNQUFPLENBQ0xiLFdBQVlBLEVBQ1pqRyxPQUFRQSxFQUNScUgsUUFBUyxDQUFDLEdBQUdwTSxPQUFPNkUsRUFBT1gsYUFBYyxpQkFBaUJsRSxPQUFPbUIsRUFBbUJpTCxhLGtFQzN5RTVGLElBT0kySSxFQUNBQyxFQVJBblAsRUFBVWhOLEVBQU9ELFFBQVUsR0FVL0IsU0FBU3FjLElBQ0wsTUFBTSxJQUFJL2EsTUFBTSxtQ0FFcEIsU0FBU2diLElBQ0wsTUFBTSxJQUFJaGIsTUFBTSxxQ0FzQnBCLFNBQVNpYixFQUFXQyxHQUNoQixHQUFJTCxJQUFxQi9aLFdBRXJCLE9BQU9BLFdBQVdvYSxFQUFLLEdBRzNCLElBQUtMLElBQXFCRSxJQUFxQkYsSUFBcUIvWixXQUVoRSxPQURBK1osRUFBbUIvWixXQUNaQSxXQUFXb2EsRUFBSyxHQUUzQixJQUVJLE9BQU9MLEVBQWlCSyxFQUFLLEdBQy9CLE1BQU1yYyxHQUNKLElBRUksT0FBT2djLEVBQWlCNWMsS0FBSyxLQUFNaWQsRUFBSyxHQUMxQyxNQUFNcmMsR0FFSixPQUFPZ2MsRUFBaUI1YyxLQUFLcUYsS0FBTTRYLEVBQUssTUF2Q25ELFdBQ0csSUFFUUwsRUFEc0IsbUJBQWYvWixXQUNZQSxXQUVBaWEsRUFFekIsTUFBT2xjLEdBQ0xnYyxFQUFtQkUsRUFFdkIsSUFFUUQsRUFEd0IsbUJBQWpCMWEsYUFDY0EsYUFFQTRhLEVBRTNCLE1BQU9uYyxHQUNMaWMsRUFBcUJFLEdBakI3QixHQXdFQSxJQUVJRyxFQUZBQyxFQUFRLEdBQ1JDLEdBQVcsRUFFWEMsR0FBYyxFQUVsQixTQUFTQyxJQUNBRixHQUFhRixJQUdsQkUsR0FBVyxFQUNQRixFQUFhdGQsT0FDYnVkLEVBQVFELEVBQWFyVixPQUFPc1YsR0FFNUJFLEdBQWMsRUFFZEYsRUFBTXZkLFFBQ04yZCxLQUlSLFNBQVNBLElBQ0wsSUFBSUgsRUFBSixDQUdBLElBQUk1YixFQUFVd2IsRUFBV00sR0FDekJGLEdBQVcsRUFHWCxJQURBLElBQUlJLEVBQU1MLEVBQU12ZCxPQUNWNGQsR0FBSyxDQUdQLElBRkFOLEVBQWVDLEVBQ2ZBLEVBQVEsS0FDQ0UsRUFBYUcsR0FDZE4sR0FDQUEsRUFBYUcsR0FBWUksTUFHakNKLEdBQWMsRUFDZEcsRUFBTUwsRUFBTXZkLE9BRWhCc2QsRUFBZSxLQUNmRSxHQUFXLEVBbkVmLFNBQXlCTSxHQUNyQixHQUFJYixJQUF1QjFhLGFBRXZCLE9BQU9BLGFBQWF1YixHQUd4QixJQUFLYixJQUF1QkUsSUFBd0JGLElBQXVCMWEsYUFFdkUsT0FEQTBhLEVBQXFCMWEsYUFDZEEsYUFBYXViLEdBRXhCLElBRVdiLEVBQW1CYSxHQUM1QixNQUFPOWMsR0FDTCxJQUVJLE9BQU9pYyxFQUFtQjdjLEtBQUssS0FBTTBkLEdBQ3ZDLE1BQU85YyxHQUdMLE9BQU9pYyxFQUFtQjdjLEtBQUtxRixLQUFNcVksS0FnRDdDQyxDQUFnQm5jLElBaUJwQixTQUFTb2MsRUFBS1gsRUFBS1ksR0FDZnhZLEtBQUs0WCxJQUFNQSxFQUNYNVgsS0FBS3dZLE1BQVFBLEVBWWpCLFNBQVNyVSxLQTVCVGtFLEVBQVFvUSxTQUFXLFNBQVViLEdBQ3pCLElBQUkzSSxFQUFPLElBQUlsTSxNQUFNWixVQUFVNUgsT0FBUyxHQUN4QyxHQUFJNEgsVUFBVTVILE9BQVMsRUFDbkIsSUFBSyxJQUFJRixFQUFJLEVBQUdBLEVBQUk4SCxVQUFVNUgsT0FBUUYsSUFDbEM0VSxFQUFLNVUsRUFBSSxHQUFLOEgsVUFBVTlILEdBR2hDeWQsRUFBTWpkLEtBQUssSUFBSTBkLEVBQUtYLEVBQUszSSxJQUNKLElBQWpCNkksRUFBTXZkLFFBQWlCd2QsR0FDdkJKLEVBQVdPLElBU25CSyxFQUFLOWQsVUFBVTJkLElBQU0sV0FDakJwWSxLQUFLNFgsSUFBSWMsTUFBTSxLQUFNMVksS0FBS3dZLFFBRTlCblEsRUFBUW5ILE1BQVEsVUFDaEJtSCxFQUFRc1EsU0FBVSxFQUNsQnRRLEVBQVF1USxJQUFNLEdBQ2R2USxFQUFRd1EsS0FBTyxHQUNmeFEsRUFBUXlRLFFBQVUsR0FDbEJ6USxFQUFRMFEsU0FBVyxHQUluQjFRLEVBQVEyUSxHQUFLN1UsRUFDYmtFLEVBQVE0USxZQUFjOVUsRUFDdEJrRSxFQUFRNlEsS0FBTy9VLEVBQ2ZrRSxFQUFROFEsSUFBTWhWLEVBQ2RrRSxFQUFRK1EsZUFBaUJqVixFQUN6QmtFLEVBQVFnUixtQkFBcUJsVixFQUM3QmtFLEVBQVFDLEtBQU9uRSxFQUNma0UsRUFBUWlSLGdCQUFrQm5WLEVBQzFCa0UsRUFBUWtSLG9CQUFzQnBWLEVBRTlCa0UsRUFBUW1SLFVBQVksU0FBVW5jLEdBQVEsTUFBTyxJQUU3Q2dMLEVBQVFvUixRQUFVLFNBQVVwYyxHQUN4QixNQUFNLElBQUlYLE1BQU0scUNBR3BCMkwsRUFBUXFSLElBQU0sV0FBYyxNQUFPLEtBQ25DclIsRUFBUXNSLE1BQVEsU0FBVUMsR0FDdEIsTUFBTSxJQUFJbGQsTUFBTSxtQ0FFcEIyTCxFQUFRd1IsTUFBUSxXQUFhLE9BQU8sSSxvRUNwS3BDLFNBQVNDLEVBQVExSSxFQUFHQyxHQUNsQixJQUFLLElBQUl4UyxLQUFPd1MsRUFDZEQsRUFBRXZTLEdBQU93UyxFQUFFeFMsR0FFYixPQUFPdVMsRUFHVCxJQUFJMkksRUFBTyxDQUNUMWMsS0FBTSxhQUNOMmMsWUFBWSxFQUNablksTUFBTyxDQUNMeEUsS0FBTSxDQUNKSixLQUFNZ2QsT0FDTkMsUUFBUyxZQUdiQyxPQUFRLFNBQWlCQyxFQUFHQyxHQUMxQixJQUFJeFksRUFBUXdZLEVBQUl4WSxNQUNaaU4sRUFBV3VMLEVBQUl2TCxTQUNmd0wsRUFBU0QsRUFBSUMsT0FDYnRnQixFQUFPcWdCLEVBQUlyZ0IsS0FHZkEsRUFBS3VnQixZQUFhLEVBYWxCLElBVEEsSUFBSUMsRUFBSUYsRUFBT3BhLGVBQ1g3QyxFQUFPd0UsRUFBTXhFLEtBQ2JvZCxFQUFRSCxFQUFPSSxPQUNmQyxFQUFRTCxFQUFPTSxtQkFBcUJOLEVBQU9NLGlCQUFtQixJQUk5REMsRUFBUSxFQUNSQyxHQUFXLEVBQ1JSLEdBQVVBLEVBQU9TLGNBQWdCVCxHQUFRLENBQzlDLElBQUlVLEVBQVlWLEVBQU9XLE9BQVNYLEVBQU9XLE9BQU9qaEIsS0FBTyxHQUNqRGdoQixFQUFVVCxZQUNaTSxJQUVFRyxFQUFVRSxXQUFhWixFQUFPYSxpQkFBbUJiLEVBQU9jLFlBQzFETixHQUFXLEdBRWJSLEVBQVNBLEVBQU9lLFFBS2xCLEdBSEFyaEIsRUFBS3NoQixnQkFBa0JULEVBR25CQyxFQUFVLENBQ1osSUFBSVMsRUFBYVosRUFBTXRkLEdBQ25CbWUsRUFBa0JELEdBQWNBLEVBQVd6YixVQUMvQyxPQUFJMGIsR0FHRUQsRUFBV0UsYUFDYkMsRUFBZ0JGLEVBQWlCeGhCLEVBQU11aEIsRUFBV2QsTUFBT2MsRUFBV0UsYUFFL0RqQixFQUFFZ0IsRUFBaUJ4aEIsRUFBTThVLElBR3pCMEwsSUFJWCxJQUFJbUIsRUFBVWxCLEVBQU1rQixRQUFRZCxHQUN4Qi9hLEVBQVk2YixHQUFXQSxFQUFRQyxXQUFXdmUsR0FHOUMsSUFBS3NlLElBQVk3YixFQUVmLE9BREE2YSxFQUFNdGQsR0FBUSxLQUNQbWQsSUFJVEcsRUFBTXRkLEdBQVEsQ0FBRXlDLFVBQVdBLEdBSTNCOUYsRUFBSzZoQixzQkFBd0IsU0FBVUMsRUFBSTFWLEdBRXpDLElBQUkyVixFQUFVSixFQUFRSyxVQUFVM2UsSUFFN0IrSSxHQUFPMlYsSUFBWUQsSUFDbEIxVixHQUFPMlYsSUFBWUQsS0FFckJILEVBQVFLLFVBQVUzZSxHQUFRK0ksS0FNNUJwTSxFQUFLaWlCLE9BQVNqaUIsRUFBS2lpQixLQUFPLEtBQUtDLFNBQVcsU0FBVTlCLEVBQUcrQixHQUN2RFIsRUFBUUssVUFBVTNlLEdBQVE4ZSxFQUFNQyxtQkFLbENwaUIsRUFBS2lpQixLQUFLSSxLQUFPLFNBQVVGLEdBQ3JCQSxFQUFNbmlCLEtBQUtraEIsV0FDYmlCLEVBQU1DLG1CQUNORCxFQUFNQyxvQkFBc0JULEVBQVFLLFVBQVUzZSxLQUU5Q3NlLEVBQVFLLFVBQVUzZSxHQUFROGUsRUFBTUMsb0JBSXBDLElBQUlYLEVBQWNFLEVBQVE5WixPQUFTOFosRUFBUTlaLE1BQU14RSxHQVVqRCxPQVJJb2UsSUFDRjNCLEVBQU9hLEVBQU10ZCxHQUFPLENBQ2xCb2QsTUFBT0EsRUFDUGdCLFlBQWFBLElBRWZDLEVBQWdCNWIsRUFBVzlGLEVBQU15Z0IsRUFBT2dCLElBR25DakIsRUFBRTFhLEVBQVc5RixFQUFNOFUsS0FJOUIsU0FBUzRNLEVBQWlCNWIsRUFBVzlGLEVBQU15Z0IsRUFBT2dCLEdBRWhELElBQUlhLEVBQWN0aUIsRUFBSzZILE1BZXpCLFNBQXVCNFksRUFBT3BULEdBQzVCLGNBQWVBLEdBQ2IsSUFBSyxZQUNILE9BQ0YsSUFBSyxTQUNILE9BQU9BLEVBQ1QsSUFBSyxXQUNILE9BQU9BLEVBQU9vVCxHQUNoQixJQUFLLFVBQ0gsT0FBT3BULEVBQVNvVCxFQUFNOU0sWUFBU3BRLEVBQ2pDLFFBQ00sR0ExQnVCZ2YsQ0FBYTlCLEVBQU9nQixHQUNuRCxHQUFJYSxFQUFhLENBRWZBLEVBQWN0aUIsRUFBSzZILE1BQVFpWSxFQUFPLEdBQUl3QyxHQUV0QyxJQUFJNWIsRUFBUTFHLEVBQUswRyxNQUFRMUcsRUFBSzBHLE9BQVMsR0FDdkMsSUFBSyxJQUFJN0IsS0FBT3lkLEVBQ1R4YyxFQUFVK0IsT0FBV2hELEtBQU9pQixFQUFVK0IsUUFDekNuQixFQUFNN0IsR0FBT3lkLEVBQVl6ZCxVQUNsQnlkLEVBQVl6ZCxLQTZCM0IsSUFBSTJkLEVBQWtCLFdBQ2xCQyxFQUF3QixTQUFVNWUsR0FBSyxNQUFPLElBQU1BLEVBQUU2ZSxXQUFXLEdBQUczWSxTQUFTLEtBQzdFNFksRUFBVSxPQUtWQyxFQUFTLFNBQVV6USxHQUFPLE9BQU8wUSxtQkFBbUIxUSxHQUNuRDVLLFFBQVFpYixFQUFpQkMsR0FDekJsYixRQUFRb2IsRUFBUyxNQUVsQkcsRUFBU0MsbUJBMEJiLElBQUlDLEVBQXNCLFNBQVV6ZSxHQUFTLE9BQWlCLE1BQVRBLEdBQWtDLGlCQUFWQSxFQUFxQkEsRUFBUTBiLE9BQU8xYixJQUVqSCxTQUFTMGUsRUFBWUMsR0FDbkIsSUFBSUMsRUFBTSxHQUlWLE9BRkFELEVBQVFBLEVBQU12SyxPQUFPcFIsUUFBUSxZQUFhLE1BTTFDMmIsRUFBTWxLLE1BQU0sS0FBS3BRLFNBQVEsU0FBVXdhLEdBQ2pDLElBQUluSyxFQUFRbUssRUFBTTdiLFFBQVEsTUFBTyxLQUFLeVIsTUFBTSxLQUN4Q25VLEVBQU1pZSxFQUFPN0osRUFBTWpZLFNBQ25Cb0wsRUFBTTZNLEVBQU0xWSxPQUFTLEVBQUl1aUIsRUFBTzdKLEVBQU1wRSxLQUFLLE1BQVEsVUFFdEN0UixJQUFiNGYsRUFBSXRlLEdBQ05zZSxFQUFJdGUsR0FBT3VILEVBQ0ZyRCxNQUFNQyxRQUFRbWEsRUFBSXRlLElBQzNCc2UsRUFBSXRlLEdBQUtoRSxLQUFLdUwsR0FFZCtXLEVBQUl0ZSxHQUFPLENBQUNzZSxFQUFJdGUsR0FBTXVILE1BSW5CK1csR0FqQkVBLEVBb0JYLFNBQVNFLEVBQWdCNWIsR0FDdkIsSUFBSTBiLEVBQU0xYixFQUNOakgsT0FBTzhILEtBQUtiLEdBQ1hxRSxLQUFJLFNBQVVqSCxHQUNiLElBQUl1SCxFQUFNM0UsRUFBSTVDLEdBRWQsUUFBWXRCLElBQVI2SSxFQUNGLE1BQU8sR0FHVCxHQUFZLE9BQVJBLEVBQ0YsT0FBT3dXLEVBQU8vZCxHQUdoQixHQUFJa0UsTUFBTUMsUUFBUW9ELEdBQU0sQ0FDdEIsSUFBSThLLEVBQVMsR0FXYixPQVZBOUssRUFBSXhELFNBQVEsU0FBVTBhLFFBQ1AvZixJQUFUK2YsSUFHUyxPQUFUQSxFQUNGcE0sRUFBT3JXLEtBQUsraEIsRUFBTy9kLElBRW5CcVMsRUFBT3JXLEtBQUsraEIsRUFBTy9kLEdBQU8sSUFBTStkLEVBQU9VLFFBR3BDcE0sRUFBT3JDLEtBQUssS0FHckIsT0FBTytOLEVBQU8vZCxHQUFPLElBQU0rZCxFQUFPeFcsTUFFbkMzRCxRQUFPLFNBQVVxSSxHQUFLLE9BQU9BLEVBQUV2USxPQUFTLEtBQ3hDc1UsS0FBSyxLQUNOLEtBQ0osT0FBT3NPLEVBQU8sSUFBTUEsRUFBTyxHQUs3QixJQUFJSSxFQUFrQixPQUV0QixTQUFTQyxFQUNQQyxFQUNBQyxFQUNBQyxFQUNBQyxHQUVBLElBQUlQLEVBQWlCTyxHQUFVQSxFQUFPamUsUUFBUTBkLGVBRTFDSCxFQUFRUSxFQUFTUixPQUFTLEdBQzlCLElBQ0VBLEVBQVFXLEVBQU1YLEdBQ2QsTUFBTzNoQixJQUVULElBQUlrZixFQUFRLENBQ1ZwZCxLQUFNcWdCLEVBQVNyZ0IsTUFBU29nQixHQUFVQSxFQUFPcGdCLEtBQ3pDeWdCLEtBQU9MLEdBQVVBLEVBQU9LLE1BQVMsR0FDakM3USxLQUFNeVEsRUFBU3pRLE1BQVEsSUFDdkI4USxLQUFNTCxFQUFTSyxNQUFRLEdBQ3ZCYixNQUFPQSxFQUNQdlAsT0FBUStQLEVBQVMvUCxRQUFVLEdBQzNCcVEsU0FBVUMsRUFBWVAsRUFBVUwsR0FDaEMxQixRQUFTOEIsRUFBU1MsRUFBWVQsR0FBVSxJQUsxQyxPQUhJRSxJQUNGbEQsRUFBTWtELGVBQWlCTSxFQUFZTixFQUFnQk4sSUFFOUM3aUIsT0FBTzJqQixPQUFPMUQsR0FHdkIsU0FBU29ELEVBQU90ZixHQUNkLEdBQUl3RSxNQUFNQyxRQUFRekUsR0FDaEIsT0FBT0EsRUFBTXVILElBQUkrWCxHQUNaLEdBQUl0ZixHQUEwQixpQkFBVkEsRUFBb0IsQ0FDN0MsSUFBSTRlLEVBQU0sR0FDVixJQUFLLElBQUl0ZSxLQUFPTixFQUNkNGUsRUFBSXRlLEdBQU9nZixFQUFNdGYsRUFBTU0sSUFFekIsT0FBT3NlLEVBRVAsT0FBTzVlLEVBS1gsSUFBSTZmLEVBQVFaLEVBQVksS0FBTSxDQUM1QnZRLEtBQU0sTUFHUixTQUFTaVIsRUFBYVQsR0FFcEIsSUFEQSxJQUFJTixFQUFNLEdBQ0hNLEdBQ0xOLEVBQUlrQixRQUFRWixHQUNaQSxFQUFTQSxFQUFPbkQsT0FFbEIsT0FBTzZDLEVBR1QsU0FBU2MsRUFDUDVELEVBQ0FpRSxHQUVBLElBQUlyUixFQUFPb04sRUFBSXBOLEtBQ1hpUSxFQUFRN0MsRUFBSTZDLFdBQXNCLElBQVZBLElBQW1CQSxFQUFRLElBQ3ZELElBQUlhLEVBQU8xRCxFQUFJMEQsS0FHZixZQUhtQyxJQUFUQSxJQUFrQkEsRUFBTyxLQUczQzlRLEdBQVEsTUFEQXFSLEdBQW1CakIsR0FDRkgsR0FBU2EsRUFHNUMsU0FBU1EsRUFBYW5OLEVBQUdDLEdBQ3ZCLE9BQUlBLElBQU0rTSxFQUNEaE4sSUFBTUMsSUFDSEEsSUFFREQsRUFBRW5FLE1BQVFvRSxFQUFFcEUsS0FFbkJtRSxFQUFFbkUsS0FBSzFMLFFBQVFnYyxFQUFpQixNQUFRbE0sRUFBRXBFLEtBQUsxTCxRQUFRZ2MsRUFBaUIsS0FDeEVuTSxFQUFFMk0sT0FBUzFNLEVBQUUwTSxNQUNiUyxFQUFjcE4sRUFBRThMLE1BQU83TCxFQUFFNkwsVUFFbEI5TCxFQUFFL1QsT0FBUWdVLEVBQUVoVSxRQUVuQitULEVBQUUvVCxPQUFTZ1UsRUFBRWhVLE1BQ2IrVCxFQUFFMk0sT0FBUzFNLEVBQUUwTSxNQUNiUyxFQUFjcE4sRUFBRThMLE1BQU83TCxFQUFFNkwsUUFDekJzQixFQUFjcE4sRUFBRXpELE9BQVEwRCxFQUFFMUQsVUFPaEMsU0FBUzZRLEVBQWVwTixFQUFHQyxHQUt6QixRQUpXLElBQU5ELElBQWVBLEVBQUksU0FDYixJQUFOQyxJQUFlQSxFQUFJLEtBR25CRCxJQUFNQyxFQUFLLE9BQU9ELElBQU1DLEVBQzdCLElBQUlvTixFQUFRamtCLE9BQU84SCxLQUFLOE8sR0FDcEJzTixFQUFRbGtCLE9BQU84SCxLQUFLK08sR0FDeEIsT0FBSW9OLEVBQU1sa0IsU0FBV21rQixFQUFNbmtCLFFBR3BCa2tCLEVBQU1FLE9BQU0sU0FBVTlmLEdBQzNCLElBQUkrZixFQUFPeE4sRUFBRXZTLEdBQ1RnZ0IsRUFBT3hOLEVBQUV4UyxHQUViLE9BQVksTUFBUitmLEdBQXdCLE1BQVJDLEVBQXVCRCxJQUFTQyxFQUVoQyxpQkFBVEQsR0FBcUMsaUJBQVRDLEVBQzlCTCxFQUFjSSxFQUFNQyxHQUV0QjVFLE9BQU8yRSxLQUFVM0UsT0FBTzRFLE1BeUJuQyxTQUFTQyxFQUNQQyxFQUNBQyxFQUNBQyxHQUVBLElBQUlDLEVBQVlILEVBQVNJLE9BQU8sR0FDaEMsR0FBa0IsTUFBZEQsRUFDRixPQUFPSCxFQUdULEdBQWtCLE1BQWRHLEdBQW1DLE1BQWRBLEVBQ3ZCLE9BQU9GLEVBQU9ELEVBR2hCLElBQUl4TCxFQUFReUwsRUFBS2hNLE1BQU0sS0FLbEJpTSxHQUFXMUwsRUFBTUEsRUFBTWhaLE9BQVMsSUFDbkNnWixFQUFNNkwsTUFLUixJQURBLElBQUlDLEVBQVdOLEVBQVN4ZCxRQUFRLE1BQU8sSUFBSXlSLE1BQU0sS0FDeEMzWSxFQUFJLEVBQUdBLEVBQUlnbEIsRUFBUzlrQixPQUFRRixJQUFLLENBQ3hDLElBQUlpbEIsRUFBVUQsRUFBU2hsQixHQUNQLE9BQVppbEIsRUFDRi9MLEVBQU02TCxNQUNlLE1BQVpFLEdBQ1QvTCxFQUFNMVksS0FBS3lrQixHQVNmLE1BSmlCLEtBQWIvTCxFQUFNLElBQ1JBLEVBQU04SyxRQUFRLElBR1Q5SyxFQUFNMUUsS0FBSyxLQTBCcEIsU0FBUzBRLEVBQVd0UyxHQUNsQixPQUFPQSxFQUFLMUwsUUFBUSxRQUFTLEtBRy9CLElBQUlpZSxFQUFVemMsTUFBTUMsU0FBVyxTQUFVRixHQUN2QyxNQUE4QyxrQkFBdkN0SSxPQUFPQyxVQUFVc0osU0FBU3BKLEtBQUttSSxJQU1wQzJjLEVBQWlCQyxFQUNqQkMsRUFBVXRKLEVBQ1Z1SixFQXNHSixTQUFrQnpULEVBQUt4TSxHQUNyQixPQUFPa2dCLEVBQWlCeEosRUFBTWxLLEVBQUt4TSxHQUFVQSxJQXRHM0NtZ0IsRUFBcUJELEVBQ3JCRSxFQUFtQkMsRUFPbkJDLEVBQWMsSUFBSXhMLE9BQU8sQ0FHM0IsVUFPQSwwR0FDQTVGLEtBQUssS0FBTSxLQVNiLFNBQVN3SCxFQUFPbEssRUFBS3hNLEdBUW5CLElBUEEsSUFLSXdkLEVBTEErQyxFQUFTLEdBQ1RyaEIsRUFBTSxFQUNONkwsRUFBUSxFQUNSdUMsRUFBTyxHQUNQa1QsRUFBbUJ4Z0IsR0FBV0EsRUFBUXlnQixXQUFhLElBR2YsT0FBaENqRCxFQUFNOEMsRUFBWUksS0FBS2xVLEtBQWUsQ0FDNUMsSUFBSXZPLEVBQUl1ZixFQUFJLEdBQ1JtRCxFQUFVbkQsRUFBSSxHQUNkOU0sRUFBUzhNLEVBQUl6UyxNQUtqQixHQUpBdUMsR0FBUWQsRUFBSTNNLE1BQU1rTCxFQUFPMkYsR0FDekIzRixFQUFRMkYsRUFBU3pTLEVBQUVyRCxPQUdmK2xCLEVBQ0ZyVCxHQUFRcVQsRUFBUSxPQURsQixDQUtBLElBQUloZCxFQUFPNkksRUFBSXpCLEdBQ1hzRCxFQUFTbVAsRUFBSSxHQUNiOWYsRUFBTzhmLEVBQUksR0FDWG9ELEVBQVVwRCxFQUFJLEdBQ2RxRCxFQUFRckQsRUFBSSxHQUNac0QsRUFBV3RELEVBQUksR0FDZnVELEVBQVd2RCxFQUFJLEdBR2ZsUSxJQUNGaVQsRUFBT3JsQixLQUFLb1MsR0FDWkEsRUFBTyxJQUdULElBQUkwVCxFQUFvQixNQUFWM1MsR0FBMEIsTUFBUjFLLEdBQWdCQSxJQUFTMEssRUFDckQ0UyxFQUFzQixNQUFiSCxHQUFpQyxNQUFiQSxFQUM3QkksRUFBd0IsTUFBYkosR0FBaUMsTUFBYkEsRUFDL0JMLEVBQVlqRCxFQUFJLElBQU1nRCxFQUN0QlcsRUFBVVAsR0FBV0MsRUFFekJOLEVBQU9ybEIsS0FBSyxDQUNWd0MsS0FBTUEsR0FBUXdCLElBQ2RtUCxPQUFRQSxHQUFVLEdBQ2xCb1MsVUFBV0EsRUFDWFMsU0FBVUEsRUFDVkQsT0FBUUEsRUFDUkQsUUFBU0EsRUFDVEQsV0FBWUEsRUFDWkksUUFBU0EsRUFBVUMsRUFBWUQsR0FBWUosRUFBVyxLQUFPLEtBQU9NLEVBQWFaLEdBQWEsU0FjbEcsT0FUSTFWLEVBQVF5QixFQUFJNVIsU0FDZDBTLEdBQVFkLEVBQUk4VSxPQUFPdlcsSUFJakJ1QyxHQUNGaVQsRUFBT3JsQixLQUFLb1MsR0FHUGlULEVBb0JULFNBQVNnQixFQUEwQi9VLEdBQ2pDLE9BQU9nVixVQUFVaFYsR0FBSzVLLFFBQVEsV0FBVyxTQUFVMUQsR0FDakQsTUFBTyxJQUFNQSxFQUFFNmUsV0FBVyxHQUFHM1ksU0FBUyxJQUFJNkgsaUJBbUI5QyxTQUFTaVUsRUFBa0JLLEVBQVF2Z0IsR0FLakMsSUFIQSxJQUFJeWhCLEVBQVUsSUFBSXJlLE1BQU1tZCxFQUFPM2xCLFFBR3RCRixFQUFJLEVBQUdBLEVBQUk2bEIsRUFBTzNsQixPQUFRRixJQUNSLGlCQUFkNmxCLEVBQU83bEIsS0FDaEIrbUIsRUFBUS9tQixHQUFLLElBQUlvYSxPQUFPLE9BQVN5TCxFQUFPN2xCLEdBQUd5bUIsUUFBVSxLQUFNTyxFQUFNMWhCLEtBSXJFLE9BQU8sU0FBVThCLEVBQUs2ZixHQU1wQixJQUxBLElBQUlyVSxFQUFPLEdBQ1BqVCxFQUFPeUgsR0FBTyxHQUVkbWIsR0FEVTBFLEdBQVEsSUFDREMsT0FBU0wsRUFBMkJyRSxtQkFFaER4aUIsRUFBSSxFQUFHQSxFQUFJNmxCLEVBQU8zbEIsT0FBUUYsSUFBSyxDQUN0QyxJQUFJbW5CLEVBQVF0QixFQUFPN2xCLEdBRW5CLEdBQXFCLGlCQUFWbW5CLEVBQVgsQ0FNQSxJQUNJbEMsRUFEQS9nQixFQUFRdkUsRUFBS3duQixFQUFNbmtCLE1BR3ZCLEdBQWEsTUFBVGtCLEVBQWUsQ0FDakIsR0FBSWlqQixFQUFNWCxTQUFVLENBRWRXLEVBQU1iLFVBQ1IxVCxHQUFRdVUsRUFBTXhULFFBR2hCLFNBRUEsTUFBTSxJQUFJdkssVUFBVSxhQUFlK2QsRUFBTW5rQixLQUFPLG1CQUlwRCxHQUFJbWlCLEVBQVFqaEIsR0FBWixDQUNFLElBQUtpakIsRUFBTVosT0FDVCxNQUFNLElBQUluZCxVQUFVLGFBQWUrZCxFQUFNbmtCLEtBQU8sa0NBQW9Db2tCLEtBQUtDLFVBQVVuakIsR0FBUyxLQUc5RyxHQUFxQixJQUFqQkEsRUFBTWhFLE9BQWMsQ0FDdEIsR0FBSWluQixFQUFNWCxTQUNSLFNBRUEsTUFBTSxJQUFJcGQsVUFBVSxhQUFlK2QsRUFBTW5rQixLQUFPLHFCQUlwRCxJQUFLLElBQUlza0IsRUFBSSxFQUFHQSxFQUFJcGpCLEVBQU1oRSxPQUFRb25CLElBQUssQ0FHckMsR0FGQXJDLEVBQVUxQyxFQUFPcmUsRUFBTW9qQixLQUVsQlAsRUFBUS9tQixHQUFHK0csS0FBS2tlLEdBQ25CLE1BQU0sSUFBSTdiLFVBQVUsaUJBQW1CK2QsRUFBTW5rQixLQUFPLGVBQWlCbWtCLEVBQU1WLFFBQVUsb0JBQXNCVyxLQUFLQyxVQUFVcEMsR0FBVyxLQUd2SXJTLElBQWUsSUFBTjBVLEVBQVVILEVBQU14VCxPQUFTd1QsRUFBTXBCLFdBQWFkLE9BcEJ6RCxDQTRCQSxHQUZBQSxFQUFVa0MsRUFBTWQsU0E1RWJTLFVBNEV1QzVpQixHQTVFeEJnRCxRQUFRLFNBQVMsU0FBVTFELEdBQy9DLE1BQU8sSUFBTUEsRUFBRTZlLFdBQVcsR0FBRzNZLFNBQVMsSUFBSTZILGlCQTJFV2dSLEVBQU9yZSxJQUVyRDZpQixFQUFRL21CLEdBQUcrRyxLQUFLa2UsR0FDbkIsTUFBTSxJQUFJN2IsVUFBVSxhQUFlK2QsRUFBTW5rQixLQUFPLGVBQWlCbWtCLEVBQU1WLFFBQVUsb0JBQXNCeEIsRUFBVSxLQUduSHJTLEdBQVF1VSxFQUFNeFQsT0FBU3NSLFFBckRyQnJTLEdBQVF1VSxFQXdEWixPQUFPdlUsR0FVWCxTQUFTK1QsRUFBYzdVLEdBQ3JCLE9BQU9BLEVBQUk1SyxRQUFRLDZCQUE4QixRQVNuRCxTQUFTd2YsRUFBYVAsR0FDcEIsT0FBT0EsRUFBTWpmLFFBQVEsZ0JBQWlCLFFBVXhDLFNBQVNxZ0IsRUFBWUMsRUFBSXZmLEdBRXZCLE9BREF1ZixFQUFHdmYsS0FBT0EsRUFDSHVmLEVBU1QsU0FBU1IsRUFBTzFoQixHQUNkLE9BQU9BLEdBQVdBLEVBQVFtaUIsVUFBWSxHQUFLLElBd0U3QyxTQUFTOUIsRUFBZ0JFLEVBQVE1ZCxFQUFNM0MsR0FDaEM2ZixFQUFRbGQsS0FDWDNDLEVBQWtDMkMsR0FBUTNDLEVBQzFDMkMsRUFBTyxJQVVULElBTEEsSUFBSXlmLEdBRkpwaUIsRUFBVUEsR0FBVyxJQUVBb2lCLE9BQ2pCQyxHQUFzQixJQUFoQnJpQixFQUFRcWlCLElBQ2R2SCxFQUFRLEdBR0hwZ0IsRUFBSSxFQUFHQSxFQUFJNmxCLEVBQU8zbEIsT0FBUUYsSUFBSyxDQUN0QyxJQUFJbW5CLEVBQVF0QixFQUFPN2xCLEdBRW5CLEdBQXFCLGlCQUFWbW5CLEVBQ1QvRyxHQUFTdUcsRUFBYVEsT0FDakIsQ0FDTCxJQUFJeFQsRUFBU2dULEVBQWFRLEVBQU14VCxRQUM1QnVTLEVBQVUsTUFBUWlCLEVBQU1WLFFBQVUsSUFFdEN4ZSxFQUFLekgsS0FBSzJtQixHQUVOQSxFQUFNWixTQUNSTCxHQUFXLE1BQVF2UyxFQUFTdVMsRUFBVSxNQWF4QzlGLEdBTkk4RixFQUpBaUIsRUFBTVgsU0FDSFcsRUFBTWIsUUFHQzNTLEVBQVMsSUFBTXVTLEVBQVUsS0FGekIsTUFBUXZTLEVBQVMsSUFBTXVTLEVBQVUsTUFLbkN2UyxFQUFTLElBQU11UyxFQUFVLEtBT3pDLElBQUlILEVBQVlZLEVBQWFyaEIsRUFBUXlnQixXQUFhLEtBQzlDNkIsRUFBb0J4SCxFQUFNamIsT0FBTzRnQixFQUFVN2xCLFVBQVk2bEIsRUFrQjNELE9BWksyQixJQUNIdEgsR0FBU3dILEVBQW9CeEgsRUFBTWpiLE1BQU0sR0FBSTRnQixFQUFVN2xCLFFBQVVrZ0IsR0FBUyxNQUFRMkYsRUFBWSxXQUk5RjNGLEdBREV1SCxFQUNPLElBSUFELEdBQVVFLEVBQW9CLEdBQUssTUFBUTdCLEVBQVksTUFHM0R3QixFQUFXLElBQUluTixPQUFPLElBQU1nRyxFQUFPNEcsRUFBTTFoQixJQUFXMkMsR0FlN0QsU0FBU29kLEVBQWN6UyxFQUFNM0ssRUFBTTNDLEdBUWpDLE9BUEs2ZixFQUFRbGQsS0FDWDNDLEVBQWtDMkMsR0FBUTNDLEVBQzFDMkMsRUFBTyxJQUdUM0MsRUFBVUEsR0FBVyxHQUVqQnNOLGFBQWdCd0gsT0FsSnRCLFNBQXlCeEgsRUFBTTNLLEdBRTdCLElBQUk0ZixFQUFTalYsRUFBSzdLLE9BQU8rZixNQUFNLGFBRS9CLEdBQUlELEVBQ0YsSUFBSyxJQUFJN25CLEVBQUksRUFBR0EsRUFBSTZuQixFQUFPM25CLE9BQVFGLElBQ2pDaUksRUFBS3pILEtBQUssQ0FDUndDLEtBQU1oRCxFQUNOMlQsT0FBUSxLQUNSb1MsVUFBVyxLQUNYUyxVQUFVLEVBQ1ZELFFBQVEsRUFDUkQsU0FBUyxFQUNURCxVQUFVLEVBQ1ZJLFFBQVMsT0FLZixPQUFPYyxFQUFXM1UsRUFBTTNLLEdBZ0lmOGYsQ0FBZW5WLEVBQTRCLEdBR2hEdVMsRUFBUXZTLEdBeEhkLFNBQXdCQSxFQUFNM0ssRUFBTTNDLEdBR2xDLElBRkEsSUFBSXNULEVBQVEsR0FFSDVZLEVBQUksRUFBR0EsRUFBSTRTLEVBQUsxUyxPQUFRRixJQUMvQjRZLEVBQU1wWSxLQUFLNmtCLEVBQWF6UyxFQUFLNVMsR0FBSWlJLEVBQU0zQyxHQUFTeUMsUUFLbEQsT0FBT3dmLEVBRk0sSUFBSW5OLE9BQU8sTUFBUXhCLEVBQU1wRSxLQUFLLEtBQU8sSUFBS3dTLEVBQU0xaEIsSUFFbkMyQyxHQWdIakIrZixDQUFvQyxFQUE4QixFQUFRMWlCLEdBckdyRixTQUF5QnNOLEVBQU0zSyxFQUFNM0MsR0FDbkMsT0FBT3FnQixFQUFlM0osRUFBTXBKLEVBQU10TixHQUFVMkMsRUFBTTNDLEdBdUczQzJpQixDQUFxQyxFQUE4QixFQUFRM2lCLEdBRXBGOGYsRUFBZXBKLE1BQVFzSixFQUN2QkYsRUFBZThDLFFBQVUzQyxFQUN6QkgsRUFBZUksaUJBQW1CQyxFQUNsQ0wsRUFBZU8sZUFBaUJELEVBS2hDLElBQUl5QyxFQUFxQmhvQixPQUFPb0UsT0FBTyxNQUV2QyxTQUFTNmpCLEVBQ1B4VixFQUNBVSxFQUNBK1UsR0FFQS9VLEVBQVNBLEdBQVUsR0FDbkIsSUFDRSxJQUFJZ1YsRUFDRkgsRUFBbUJ2VixLQUNsQnVWLEVBQW1CdlYsR0FBUXdTLEVBQWU4QyxRQUFRdFYsSUFNckQsTUFGZ0MsaUJBQXJCVSxFQUFPaVYsWUFBMEJqVixFQUFPLEdBQUtBLEVBQU9pVixXQUV4REQsRUFBT2hWLEVBQVEsQ0FBRTRULFFBQVEsSUFDaEMsTUFBT2htQixHQUtQLE1BQU8sR0FDUCxlQUVPb1MsRUFBTyxJQU1sQixTQUFTa1YsRUFDUEMsRUFDQS9HLEVBQ0FrRCxFQUNBckIsR0FFQSxJQUFJdGEsRUFBc0IsaUJBQVJ3ZixFQUFtQixDQUFFN1YsS0FBTTZWLEdBQVFBLEVBRXJELEdBQUl4ZixFQUFLeWYsWUFDUCxPQUFPemYsRUFDRixHQUFJQSxFQUFLakcsS0FBTSxDQUVwQixJQUFJc1EsR0FESnJLLEVBQU93VyxFQUFPLEdBQUlnSixJQUNBblYsT0FJbEIsT0FISUEsR0FBNEIsaUJBQVhBLElBQ25CckssRUFBS3FLLE9BQVNtTSxFQUFPLEdBQUluTSxJQUVwQnJLLEVBSVQsSUFBS0EsRUFBSzJKLE1BQVEzSixFQUFLcUssUUFBVW9PLEVBQVMsRUFDeEN6WSxFQUFPd1csRUFBTyxHQUFJeFcsSUFDYnlmLGFBQWMsRUFDbkIsSUFBSUMsRUFBV2xKLEVBQU9BLEVBQU8sR0FBSWlDLEVBQVFwTyxRQUFTckssRUFBS3FLLFFBQ3ZELEdBQUlvTyxFQUFRMWUsS0FDVmlHLEVBQUtqRyxLQUFPMGUsRUFBUTFlLEtBQ3BCaUcsRUFBS3FLLE9BQVNxVixPQUNULEdBQUlqSCxFQUFRSixRQUFRcGhCLE9BQVEsQ0FDakMsSUFBSTBvQixFQUFVbEgsRUFBUUosUUFBUUksRUFBUUosUUFBUXBoQixPQUFTLEdBQUcwUyxLQUMxRDNKLEVBQUsySixLQUFPd1YsRUFBV1EsRUFBU0QsRUFBc0JqSCxFQUFZLFdBQ3pELEVBR1gsT0FBT3pZLEVBR1QsSUFBSTRmLEVBbmhCTixTQUFvQmpXLEdBQ2xCLElBQUk4USxFQUFPLEdBQ1BiLEVBQVEsR0FFUmlHLEVBQVlsVyxFQUFLNUgsUUFBUSxLQUN6QjhkLEdBQWEsSUFDZnBGLEVBQU85USxFQUFLek4sTUFBTTJqQixHQUNsQmxXLEVBQU9BLEVBQUt6TixNQUFNLEVBQUcyakIsSUFHdkIsSUFBSUMsRUFBYW5XLEVBQUs1SCxRQUFRLEtBTTlCLE9BTEkrZCxHQUFjLElBQ2hCbEcsRUFBUWpRLEVBQUt6TixNQUFNNGpCLEVBQWEsR0FDaENuVyxFQUFPQSxFQUFLek4sTUFBTSxFQUFHNGpCLElBR2hCLENBQ0xuVyxLQUFNQSxFQUNOaVEsTUFBT0EsRUFDUGEsS0FBTUEsR0FnZ0JTc0YsQ0FBVS9mLEVBQUsySixNQUFRLElBQ3BDcVcsRUFBWXZILEdBQVdBLEVBQVE5TyxNQUFTLElBQ3hDQSxFQUFPaVcsRUFBV2pXLEtBQ2xCNlIsRUFBWW9FLEVBQVdqVyxLQUFNcVcsRUFBVXJFLEdBQVUzYixFQUFLMmIsUUFDdERxRSxFQUVBcEcsRUF6eUJOLFNBQ0VBLEVBQ0FxRyxFQUNBQyxRQUVvQixJQUFmRCxJQUF3QkEsRUFBYSxJQUUxQyxJQUNJRSxFQURBcE4sRUFBUW1OLEdBQWV2RyxFQUUzQixJQUNFd0csRUFBY3BOLEVBQU02RyxHQUFTLElBQzdCLE1BQU8zaEIsR0FFUGtvQixFQUFjLEdBRWhCLElBQUssSUFBSTVrQixLQUFPMGtCLEVBQVksQ0FDMUIsSUFBSWhsQixFQUFRZ2xCLEVBQVcxa0IsR0FDdkI0a0IsRUFBWTVrQixHQUFPa0UsTUFBTUMsUUFBUXpFLEdBQzdCQSxFQUFNdUgsSUFBSWtYLEdBQ1ZBLEVBQW9CemUsR0FFMUIsT0FBT2tsQixFQW94QktDLENBQ1ZSLEVBQVdoRyxNQUNYNVosRUFBSzRaLE1BQ0xVLEdBQVVBLEVBQU9qZSxRQUFRc2QsWUFHdkJjLEVBQU96YSxFQUFLeWEsTUFBUW1GLEVBQVduRixLQUtuQyxPQUpJQSxHQUEyQixNQUFuQkEsRUFBS29CLE9BQU8sS0FDdEJwQixFQUFPLElBQU1BLEdBR1IsQ0FDTGdGLGFBQWEsRUFDYjlWLEtBQU1BLEVBQ05pUSxNQUFPQSxFQUNQYSxLQUFNQSxHQU9WLElBaU1JNEYsRUE5TEF4ZixFQUFPLGFBRVB5ZixFQUFPLENBQ1R2bUIsS0FBTSxhQUNOd0UsTUFBTyxDQUNMZ2lCLEdBQUksQ0FDRjVtQixLQVRRLENBQUNnZCxPQUFRemYsUUFVakJzcEIsVUFBVSxHQUVaOVUsSUFBSyxDQUNIL1IsS0FBTWdkLE9BQ05DLFFBQVMsS0FFWDZKLE1BQU9DLFFBQ1AvRSxPQUFRK0UsUUFDUnppQixRQUFTeWlCLFFBQ1RDLFlBQWFoSyxPQUNiaUssaUJBQWtCakssT0FDbEJrSyxpQkFBa0IsQ0FDaEJsbkIsS0FBTWdkLE9BQ05DLFFBQVMsUUFFWHZkLE1BQU8sQ0FDTE0sS0F6QlcsQ0FBQ2dkLE9BQVFsWCxPQTBCcEJtWCxRQUFTLFVBR2JDLE9BQVEsU0FBaUJLLEdBQ3ZCLElBQUk0SixFQUFTcGtCLEtBRVQ0ZCxFQUFTNWQsS0FBS3FrQixRQUNkdEksRUFBVS9iLEtBQUswYSxPQUNmTCxFQUFNdUQsRUFBT2hpQixRQUNmb0UsS0FBSzZqQixHQUNMOUgsRUFDQS9iLEtBQUtpZixRQUVIdkIsRUFBV3JELEVBQUlxRCxTQUNmakQsRUFBUUosRUFBSUksTUFDWjZKLEVBQU9qSyxFQUFJaUssS0FFWDFWLEVBQVUsR0FDVjJWLEVBQW9CM0csRUFBT2plLFFBQVE2a0IsZ0JBQ25DQyxFQUF5QjdHLEVBQU9qZSxRQUFRK2tCLHFCQUV4Q0MsRUFDbUIsTUFBckJKLEVBQTRCLHFCQUF1QkEsRUFDakRLLEVBQ3dCLE1BQTFCSCxFQUNJLDJCQUNBQSxFQUNGUixFQUNrQixNQUFwQmprQixLQUFLaWtCLFlBQXNCVSxFQUFzQjNrQixLQUFLaWtCLFlBQ3BEQyxFQUN1QixNQUF6QmxrQixLQUFLa2tCLGlCQUNEVSxFQUNBNWtCLEtBQUtra0IsaUJBRVBXLEVBQWdCcEssRUFBTWtELGVBQ3RCSCxFQUFZLEtBQU1xRixFQUFrQnBJLEVBQU1rRCxnQkFBaUIsS0FBTUMsR0FDakVuRCxFQUVKN0wsRUFBUXNWLEdBQW9CM0YsRUFBWXhDLEVBQVM4SSxHQUNqRGpXLEVBQVFxVixHQUFlamtCLEtBQUsrakIsTUFDeEJuVixFQUFRc1YsR0FqckJoQixTQUEwQm5JLEVBQVM1ZSxHQUNqQyxPQUdRLElBRk40ZSxFQUFROU8sS0FBSzFMLFFBQVFnYyxFQUFpQixLQUFLbFksUUFDekNsSSxFQUFPOFAsS0FBSzFMLFFBQVFnYyxFQUFpQixTQUVyQ3BnQixFQUFPNGdCLE1BQVFoQyxFQUFRZ0MsT0FBUzVnQixFQUFPNGdCLE9BSzdDLFNBQXdCaEMsRUFBUzVlLEdBQy9CLElBQUssSUFBSTBCLEtBQU8xQixFQUNkLEtBQU0wQixLQUFPa2QsR0FDWCxPQUFPLEVBR1gsT0FBTyxFQVZMK0ksQ0FBYy9JLEVBQVFtQixNQUFPL2YsRUFBTytmLE9BNHFCaEM2SCxDQUFnQmhKLEVBQVM4SSxHQUU3QixJQUFJVixFQUFtQnZWLEVBQVFzVixHQUFvQmxrQixLQUFLbWtCLGlCQUFtQixLQUV2RWEsRUFBVSxTQUFVenBCLEdBQ2xCMHBCLEVBQVcxcEIsS0FDVDZvQixFQUFPN2lCLFFBQ1RxYyxFQUFPcmMsUUFBUW1jLEVBQVV2WixHQUV6QnlaLEVBQU8vaUIsS0FBSzZpQixFQUFVdlosS0FLeEI2VSxFQUFLLENBQUVrTSxNQUFPRCxHQUNkbGlCLE1BQU1DLFFBQVFoRCxLQUFLckQsT0FDckJxRCxLQUFLckQsTUFBTWlHLFNBQVEsU0FBVXJILEdBQzNCeWQsRUFBR3pkLEdBQUt5cEIsS0FHVmhNLEVBQUdoWixLQUFLckQsT0FBU3FvQixFQUduQixJQUFJaHJCLEVBQU8sQ0FBRXdHLE1BQU9vTyxHQUVoQnVXLEdBQ0RubEIsS0FBS29sQixhQUFhQyxZQUNuQnJsQixLQUFLb2xCLGFBQWFsTCxTQUNsQmxhLEtBQUtvbEIsYUFBYWxMLFFBQVEsQ0FDeEJvSyxLQUFNQSxFQUNON0osTUFBT0EsRUFDUDZLLFNBQVVOLEVBQ1ZPLFNBQVUzVyxFQUFRcVYsR0FDbEJ1QixjQUFlNVcsRUFBUXNWLEtBRzNCLEdBQUlpQixFQUFZLENBQ2QsR0FBMEIsSUFBdEJBLEVBQVc1cUIsT0FDYixPQUFPNHFCLEVBQVcsR0FDYixHQUFJQSxFQUFXNXFCLE9BQVMsSUFBTTRxQixFQUFXNXFCLE9BTzlDLE9BQTZCLElBQXRCNHFCLEVBQVc1cUIsT0FBZWlnQixJQUFNQSxFQUFFLE9BQVEsR0FBSTJLLEdBSXpELEdBQWlCLE1BQWJubEIsS0FBS2dQLElBQ1BoVixFQUFLZ2YsR0FBS0EsRUFDVmhmLEVBQUswRyxNQUFRLENBQUU0akIsS0FBTUEsRUFBTSxlQUFnQkgsT0FDdEMsQ0FFTCxJQUFJL1MsRUF1RFYsU0FBU3FVLEVBQVkzVyxHQUVqQixJQUFJcEQsRUFETixHQUFJb0QsRUFFRixJQUFLLElBQUl6VSxFQUFJLEVBQUdBLEVBQUl5VSxFQUFTdlUsT0FBUUYsSUFBSyxDQUV4QyxHQUFrQixPQURsQnFSLEVBQVFvRCxFQUFTelUsSUFDUDJVLElBQ1IsT0FBT3RELEVBRVQsR0FBSUEsRUFBTW9ELFdBQWFwRCxFQUFRK1osRUFBVy9aLEVBQU1vRCxXQUM5QyxPQUFPcEQsR0FoRUQrWixDQUFXemxCLEtBQUswbEIsT0FBT3hMLFNBQy9CLEdBQUk5SSxFQUFHLENBRUxBLEVBQUV1VSxVQUFXLEVBQ2IsSUFBSUMsRUFBU3hVLEVBQUVwWCxLQUFPOGYsRUFBTyxHQUFJMUksRUFBRXBYLE1BR25DLElBQUssSUFBSTJDLEtBRlRpcEIsRUFBTTVNLEdBQUs0TSxFQUFNNU0sSUFBTSxHQUVMNE0sRUFBTTVNLEdBQUksQ0FDMUIsSUFBSTZNLEVBQVlELEVBQU01TSxHQUFHcmMsR0FDckJBLEtBQVNxYyxJQUNYNE0sRUFBTTVNLEdBQUdyYyxHQUFTb0csTUFBTUMsUUFBUTZpQixHQUFhQSxFQUFZLENBQUNBLElBSTlELElBQUssSUFBSUMsS0FBVzlNLEVBQ2Q4TSxLQUFXRixFQUFNNU0sR0FFbkI0TSxFQUFNNU0sR0FBRzhNLEdBQVNqckIsS0FBS21lLEVBQUc4TSxJQUUxQkYsRUFBTTVNLEdBQUc4TSxHQUFXZCxFQUl4QixJQUFJZSxFQUFVM1UsRUFBRXBYLEtBQUswRyxNQUFRb1osRUFBTyxHQUFJMUksRUFBRXBYLEtBQUswRyxPQUMvQ3FsQixFQUFPekIsS0FBT0EsRUFDZHlCLEVBQU8sZ0JBQWtCNUIsT0FHekJucUIsRUFBS2dmLEdBQUtBLEVBSWQsT0FBT3dCLEVBQUV4YSxLQUFLZ1AsSUFBS2hWLEVBQU1nRyxLQUFLMGxCLE9BQU94TCxXQUl6QyxTQUFTK0ssRUFBWTFwQixHQUVuQixLQUFJQSxFQUFFeXFCLFNBQVd6cUIsRUFBRTBxQixRQUFVMXFCLEVBQUUycUIsU0FBVzNxQixFQUFFNHFCLFVBRXhDNXFCLEVBQUU2cUIsdUJBRVc3b0IsSUFBYmhDLEVBQUU4cUIsUUFBcUMsSUFBYjlxQixFQUFFOHFCLFFBQWhDLENBRUEsR0FBSTlxQixFQUFFK3FCLGVBQWlCL3FCLEVBQUUrcUIsY0FBYy9mLGFBQWMsQ0FDbkQsSUFBSXBKLEVBQVM1QixFQUFFK3FCLGNBQWMvZixhQUFhLFVBQzFDLEdBQUksY0FBY25GLEtBQUtqRSxHQUFXLE9BTXBDLE9BSEk1QixFQUFFZ3JCLGdCQUNKaHJCLEVBQUVnckIsa0JBRUcsR0FzRVQsSUFBSUMsRUFBOEIsb0JBQVhsbkIsT0FJdkIsU0FBU21uQixFQUNQQyxFQUNBQyxFQUNBQyxFQUNBQyxHQUdBLElBQUlDLEVBQVdILEdBQWUsR0FFMUJJLEVBQVVILEdBQWNwc0IsT0FBT29FLE9BQU8sTUFFdENvb0IsRUFBVUgsR0FBY3JzQixPQUFPb0UsT0FBTyxNQUUxQzhuQixFQUFPOWpCLFNBQVEsU0FBVTZYLElBZ0MzQixTQUFTd00sRUFDUEgsRUFDQUMsRUFDQUMsRUFDQXZNLEVBQ0FILEVBQ0E0TSxHQUVBLElBQUlqYSxFQUFPd04sRUFBTXhOLEtBQ2I1UCxFQUFPb2QsRUFBTXBkLEtBQ2IsRUFVSixJQUFJOHBCLEVBQ0YxTSxFQUFNME0scUJBQXVCLEdBQzNCQyxFQXFITixTQUNFbmEsRUFDQXFOLEVBQ0F5SCxHQUVLQSxJQUFVOVUsRUFBT0EsRUFBSzFMLFFBQVEsTUFBTyxLQUMxQyxHQUFnQixNQUFaMEwsRUFBSyxHQUFjLE9BQU9BLEVBQzlCLEdBQWMsTUFBVnFOLEVBQWtCLE9BQU9yTixFQUM3QixPQUFPc1MsRUFBWWpGLEVBQVcsS0FBSSxJQUFNck4sR0E3SG5Cb2EsQ0FBY3BhLEVBQU1xTixFQUFRNk0sRUFBb0JwRixRQUVsQyxrQkFBeEJ0SCxFQUFNNk0sZ0JBQ2ZILEVBQW9CckYsVUFBWXJILEVBQU02TSxlQUd4QyxJQUFJN0osRUFBUyxDQUNYeFEsS0FBTW1hLEVBQ05HLE1BQU9DLEVBQWtCSixFQUFnQkQsR0FDekN2TCxXQUFZbkIsRUFBTW1CLFlBQWMsQ0FBRTFCLFFBQVNPLEVBQU0zYSxXQUNqRGtjLFVBQVcsR0FDWDNlLEtBQU1BLEVBQ05pZCxPQUFRQSxFQUNSNE0sUUFBU0EsRUFDVE8sU0FBVWhOLEVBQU1nTixTQUNoQkMsWUFBYWpOLEVBQU1pTixZQUNuQjVKLEtBQU1yRCxFQUFNcUQsTUFBUSxHQUNwQmpjLE1BQ2lCLE1BQWY0WSxFQUFNNVksTUFDRixHQUNBNFksRUFBTW1CLFdBQ0puQixFQUFNNVksTUFDTixDQUFFcVksUUFBU08sRUFBTTVZLFFBR3ZCNFksRUFBTTNMLFVBb0JSMkwsRUFBTTNMLFNBQVNsTSxTQUFRLFNBQVU4SSxHQUMvQixJQUFJaWMsRUFBZVQsRUFDZjNILEVBQVcySCxFQUFVLElBQU94YixFQUFVLFdBQ3RDbk8sRUFDSjBwQixFQUFlSCxFQUFVQyxFQUFTQyxFQUFTdGIsRUFBTytSLEVBQVFrSyxNQUl6RFosRUFBUXRKLEVBQU94USxRQUNsQjZaLEVBQVNqc0IsS0FBSzRpQixFQUFPeFEsTUFDckI4WixFQUFRdEosRUFBT3hRLE1BQVF3USxHQUd6QixRQUFvQmxnQixJQUFoQmtkLEVBQU1tTixNQUVSLElBREEsSUFBSUMsRUFBVTlrQixNQUFNQyxRQUFReVgsRUFBTW1OLE9BQVNuTixFQUFNbU4sTUFBUSxDQUFDbk4sRUFBTW1OLE9BQ3ZEdnRCLEVBQUksRUFBR0EsRUFBSXd0QixFQUFRdHRCLFNBQVVGLEVBQUcsQ0FFbkMsRUFTSixJQUFJeXRCLEVBQWEsQ0FDZjdhLEtBWFU0YSxFQUFReHRCLEdBWWxCeVUsU0FBVTJMLEVBQU0zTCxVQUVsQm1ZLEVBQ0VILEVBQ0FDLEVBQ0FDLEVBQ0FjLEVBQ0F4TixFQUNBbUQsRUFBT3hRLE1BQVEsS0FLakI1UCxJQUNHMnBCLEVBQVEzcEIsS0FDWDJwQixFQUFRM3BCLEdBQVFvZ0IsSUE3SWxCd0osQ0FBZUgsRUFBVUMsRUFBU0MsRUFBU3ZNLE1BSTdDLElBQUssSUFBSXBnQixFQUFJLEVBQUdpQixFQUFJd3JCLEVBQVN2c0IsT0FBUUYsRUFBSWlCLEVBQUdqQixJQUN0QixNQUFoQnlzQixFQUFTenNCLEtBQ1h5c0IsRUFBU2pzQixLQUFLaXNCLEVBQVNpQixPQUFPMXRCLEVBQUcsR0FBRyxJQUNwQ2lCLElBQ0FqQixLQWdCSixNQUFPLENBQ0x5c0IsU0FBVUEsRUFDVkMsUUFBU0EsRUFDVEMsUUFBU0EsR0E2SGIsU0FBU1EsRUFDUHZhLEVBQ0FrYSxHQWFBLE9BWFkxSCxFQUFleFMsRUFBTSxHQUFJa2EsR0E2QnZDLFNBQVNhLEVBQ1B0QixFQUNBOUksR0FFQSxJQUFJdkQsRUFBTW9NLEVBQWVDLEdBQ3JCSSxFQUFXek0sRUFBSXlNLFNBQ2ZDLEVBQVUxTSxFQUFJME0sUUFDZEMsRUFBVTNNLEVBQUkyTSxRQU1sQixTQUFTN0UsRUFDUFcsRUFDQW1GLEVBQ0F0SyxHQUVBLElBQUlELEVBQVdtRixFQUFrQkMsRUFBS21GLEdBQWMsRUFBT3JLLEdBQ3ZEdmdCLEVBQU9xZ0IsRUFBU3JnQixLQUVwQixHQUFJQSxFQUFNLENBQ1IsSUFBSW9nQixFQUFTdUosRUFBUTNwQixHQUlyQixJQUFLb2dCLEVBQVUsT0FBT3lLLEVBQWEsS0FBTXhLLEdBQ3pDLElBQUl5SyxFQUFhMUssRUFBTzhKLE1BQU1qbEIsS0FDM0JHLFFBQU8sU0FBVTVELEdBQU8sT0FBUUEsRUFBSWdpQixZQUNwQy9hLEtBQUksU0FBVWpILEdBQU8sT0FBT0EsRUFBSXhCLFFBTW5DLEdBSitCLGlCQUFwQnFnQixFQUFTL1AsU0FDbEIrUCxFQUFTL1AsT0FBUyxJQUdoQnNhLEdBQStDLGlCQUF4QkEsRUFBYXRhLE9BQ3RDLElBQUssSUFBSTlPLEtBQU9vcEIsRUFBYXRhLFNBQ3JCOU8sS0FBTzZlLEVBQVMvUCxTQUFXd2EsRUFBVzlpQixRQUFReEcsSUFBUSxJQUMxRDZlLEVBQVMvUCxPQUFPOU8sR0FBT29wQixFQUFhdGEsT0FBTzlPLElBTWpELE9BREE2ZSxFQUFTelEsS0FBT3dWLEVBQVdoRixFQUFPeFEsS0FBTXlRLEVBQVMvUCxRQUMxQ3VhLEVBQWF6SyxFQUFRQyxFQUFVQyxHQUNqQyxHQUFJRCxFQUFTelEsS0FBTSxDQUN4QnlRLEVBQVMvUCxPQUFTLEdBQ2xCLElBQUssSUFBSXRULEVBQUksRUFBR0EsRUFBSXlzQixFQUFTdnNCLE9BQVFGLElBQUssQ0FDeEMsSUFBSTRTLEVBQU82WixFQUFTenNCLEdBQ2hCK3RCLEVBQVdyQixFQUFROVosR0FDdkIsR0FBSW9iLEdBQVdELEVBQVNiLE1BQU83SixFQUFTelEsS0FBTXlRLEVBQVMvUCxRQUNyRCxPQUFPdWEsRUFBYUUsRUFBVTFLLEVBQVVDLElBSzlDLE9BQU91SyxFQUFhLEtBQU14SyxHQUc1QixTQUFTK0osRUFDUGhLLEVBQ0FDLEdBRUEsSUFBSTRLLEVBQW1CN0ssRUFBT2dLLFNBQzFCQSxFQUF1QyxtQkFBckJhLEVBQ2xCQSxFQUFpQjlLLEVBQVlDLEVBQVFDLEVBQVUsS0FBTUUsSUFDckQwSyxFQU1KLEdBSndCLGlCQUFiYixJQUNUQSxFQUFXLENBQUV4YSxLQUFNd2EsS0FHaEJBLEdBQWdDLGlCQUFiQSxFQU10QixPQUFPUyxFQUFhLEtBQU14SyxHQUc1QixJQUFJbUUsRUFBSzRGLEVBQ0xwcUIsRUFBT3drQixFQUFHeGtCLEtBQ1Y0UCxFQUFPNFUsRUFBRzVVLEtBQ1ZpUSxFQUFRUSxFQUFTUixNQUNqQmEsRUFBT0wsRUFBU0ssS0FDaEJwUSxFQUFTK1AsRUFBUy9QLE9BS3RCLEdBSkF1UCxFQUFRMkUsRUFBR25uQixlQUFlLFNBQVdtbkIsRUFBRzNFLE1BQVFBLEVBQ2hEYSxFQUFPOEQsRUFBR25uQixlQUFlLFFBQVVtbkIsRUFBRzlELEtBQU9BLEVBQzdDcFEsRUFBU2tVLEVBQUdubkIsZUFBZSxVQUFZbW5CLEVBQUdsVSxPQUFTQSxFQUUvQ3RRLEVBQU0sQ0FFVzJwQixFQUFRM3BCLEdBSTNCLE9BQU84a0IsRUFBTSxDQUNYWSxhQUFhLEVBQ2IxbEIsS0FBTUEsRUFDTjZmLE1BQU9BLEVBQ1BhLEtBQU1BLEVBQ05wUSxPQUFRQSxRQUNQcFEsRUFBV21nQixHQUNULEdBQUl6USxFQUFNLENBRWYsSUFBSWdXLEVBa0ZWLFNBQTRCaFcsRUFBTXdRLEdBQ2hDLE9BQU9xQixFQUFZN1IsRUFBTXdRLEVBQU9uRCxPQUFTbUQsRUFBT25ELE9BQU9yTixLQUFPLEtBQUssR0FuRmpEc2IsQ0FBa0J0YixFQUFNd1EsR0FJdEMsT0FBTzBFLEVBQU0sQ0FDWFksYUFBYSxFQUNiOVYsS0FKaUJ3VixFQUFXUSxFQUFTdFYsR0FLckN1UCxNQUFPQSxFQUNQYSxLQUFNQSxRQUNMeGdCLEVBQVdtZ0IsR0FLZCxPQUFPd0ssRUFBYSxLQUFNeEssR0F1QjlCLFNBQVN3SyxFQUNQekssRUFDQUMsRUFDQUMsR0FFQSxPQUFJRixHQUFVQSxFQUFPZ0ssU0FDWkEsRUFBU2hLLEVBQVFFLEdBQWtCRCxHQUV4Q0QsR0FBVUEsRUFBT3lKLFFBM0J2QixTQUNFekosRUFDQUMsRUFDQXdKLEdBRUEsSUFDSXNCLEVBQWVyRyxFQUFNLENBQ3ZCWSxhQUFhLEVBQ2I5VixLQUhnQndWLEVBQVd5RSxFQUFTeEosRUFBUy9QLFVBSy9DLEdBQUk2YSxFQUFjLENBQ2hCLElBQUk3TSxFQUFVNk0sRUFBYTdNLFFBQ3ZCOE0sRUFBZ0I5TSxFQUFRQSxFQUFRcGhCLE9BQVMsR0FFN0MsT0FEQW1qQixFQUFTL1AsT0FBUzZhLEVBQWE3YSxPQUN4QnVhLEVBQWFPLEVBQWUvSyxHQUVyQyxPQUFPd0ssRUFBYSxLQUFNeEssR0FZakJrSyxDQUFNbkssRUFBUUMsRUFBVUQsRUFBT3lKLFNBRWpDMUosRUFBWUMsRUFBUUMsRUFBVUMsRUFBZ0JDLEdBR3ZELE1BQU8sQ0FDTHVFLE1BQU9BLEVBQ1B1RyxVQXRKRixTQUFvQmhDLEdBQ2xCRCxFQUFlQyxFQUFRSSxFQUFVQyxFQUFTQyxLQXlKOUMsU0FBU3FCLEdBQ1BkLEVBQ0F0YSxFQUNBVSxHQUVBLElBQUkvUCxFQUFJcVAsRUFBS2tWLE1BQU1vRixHQUVuQixJQUFLM3BCLEVBQ0gsT0FBTyxFQUNGLElBQUsrUCxFQUNWLE9BQU8sRUFHVCxJQUFLLElBQUl0VCxFQUFJLEVBQUc4ZCxFQUFNdmEsRUFBRXJELE9BQVFGLEVBQUk4ZCxJQUFPOWQsRUFBRyxDQUM1QyxJQUFJd0UsRUFBTTBvQixFQUFNamxCLEtBQUtqSSxFQUFJLEdBQ3JCK0wsRUFBc0IsaUJBQVR4SSxFQUFFdkQsR0FBa0IwaUIsbUJBQW1CbmYsRUFBRXZELElBQU11RCxFQUFFdkQsR0FDOUR3RSxJQUVGOE8sRUFBTzlPLEVBQUl4QixNQUFRLGFBQWUrSSxHQUl0QyxPQUFPLEVBVVQsSUFBSXVpQixHQUNGbkMsR0FBYWxuQixPQUFPb0YsYUFBZXBGLE9BQU9vRixZQUFZa2tCLElBQ2xEdHBCLE9BQU9vRixZQUNQbWtCLEtBRU4sU0FBU0MsS0FDUCxPQUFPSCxHQUFLQyxNQUFNRyxRQUFRLEdBRzVCLElBQUloVCxHQUFPK1MsS0FFWCxTQUFTRSxLQUNQLE9BQU9qVCxHQUdULFNBQVNrVCxHQUFhcHFCLEdBQ3BCLE9BQVFrWCxHQUFPbFgsRUFLakIsSUFBSXFxQixHQUFnQjF1QixPQUFPb0UsT0FBTyxNQUVsQyxTQUFTdXFCLEtBRUgsc0JBQXVCN3BCLE9BQU84cEIsVUFDaEM5cEIsT0FBTzhwQixRQUFRQyxrQkFBb0IsVUFPckMsSUFBSUMsRUFBa0JocUIsT0FBT29lLFNBQVM2TCxTQUFXLEtBQU9qcUIsT0FBT29lLFNBQVM4TCxLQUNwRUMsRUFBZW5xQixPQUFPb2UsU0FBUzRHLEtBQUsvaUIsUUFBUStuQixFQUFpQixJQUU3REksRUFBWTVQLEVBQU8sR0FBSXhhLE9BQU84cEIsUUFBUU8sT0FJMUMsT0FIQUQsRUFBVTdxQixJQUFNbXFCLEtBQ2hCMXBCLE9BQU84cEIsUUFBUVEsYUFBYUYsRUFBVyxHQUFJRCxHQUMzQ25xQixPQUFPNkYsaUJBQWlCLFdBQVkwa0IsSUFDN0IsV0FDTHZxQixPQUFPeUksb0JBQW9CLFdBQVk4aEIsS0FJM0MsU0FBU0MsR0FDUGxNLEVBQ0FpRyxFQUNBN2YsRUFDQStsQixHQUVBLEdBQUtuTSxFQUFPb00sSUFBWixDQUlBLElBQUlDLEVBQVdyTSxFQUFPamUsUUFBUXVxQixlQUN6QkQsR0FTTHJNLEVBQU9vTSxJQUFJRyxXQUFVLFdBQ25CLElBQUlDLEVBNkNSLFdBQ0UsSUFBSXZyQixFQUFNbXFCLEtBQ1YsR0FBSW5xQixFQUNGLE9BQU9xcUIsR0FBY3JxQixHQWhETndyQixHQUNYQyxFQUFlTCxFQUFTdHZCLEtBQzFCaWpCLEVBQ0FpRyxFQUNBN2YsRUFDQStsQixFQUFRSyxFQUFXLE1BR2hCRSxJQUk0QixtQkFBdEJBLEVBQWFsaEIsS0FDdEJraEIsRUFDR2xoQixNQUFLLFNBQVVraEIsR0FDZEMsR0FBaUIsRUFBZ0JILE1BRWxDN2YsT0FBTSxTQUFVcEwsR0FDWCxLQUtSb3JCLEdBQWlCRCxFQUFjRixRQUtyQyxTQUFTSSxLQUNQLElBQUkzckIsRUFBTW1xQixLQUNObnFCLElBQ0ZxcUIsR0FBY3JxQixHQUFPLENBQ25CaU0sRUFBR3hMLE9BQU9tckIsWUFDVjFmLEVBQUd6TCxPQUFPb3JCLGNBS2hCLFNBQVNiLEdBQWdCdHVCLEdBQ3ZCaXZCLEtBQ0lqdkIsRUFBRW91QixPQUFTcHVCLEVBQUVvdUIsTUFBTTlxQixLQUNyQm9xQixHQUFZMXRCLEVBQUVvdUIsTUFBTTlxQixLQXFCeEIsU0FBUzhyQixHQUFpQmxwQixHQUN4QixPQUFPbXBCLEdBQVNucEIsRUFBSXFKLElBQU04ZixHQUFTbnBCLEVBQUlzSixHQUd6QyxTQUFTOGYsR0FBbUJwcEIsR0FDMUIsTUFBTyxDQUNMcUosRUFBRzhmLEdBQVNucEIsRUFBSXFKLEdBQUtySixFQUFJcUosRUFBSXhMLE9BQU9tckIsWUFDcEMxZixFQUFHNmYsR0FBU25wQixFQUFJc0osR0FBS3RKLEVBQUlzSixFQUFJekwsT0FBT29yQixhQVd4QyxTQUFTRSxHQUFVRSxHQUNqQixNQUFvQixpQkFBTkEsRUFHaEIsSUFBSUMsR0FBeUIsT0FFN0IsU0FBU1IsR0FBa0JELEVBQWNGLEdBQ3ZDLElBZHdCM29CLEVBY3BCdXBCLEVBQW1DLGlCQUFqQlYsRUFDdEIsR0FBSVUsR0FBNkMsaUJBQTFCVixFQUFhVyxTQUF1QixDQUd6RCxJQUFJQyxFQUFLSCxHQUF1QjNwQixLQUFLa3BCLEVBQWFXLFVBQzlDanZCLFNBQVNtdkIsZUFBZWIsRUFBYVcsU0FBU3pyQixNQUFNLElBQ3BEeEQsU0FBU2dLLGNBQWNza0IsRUFBYVcsVUFFeEMsR0FBSUMsRUFBSSxDQUNOLElBQUk3YSxFQUNGaWEsRUFBYWphLFFBQXlDLGlCQUF4QmlhLEVBQWFqYSxPQUN2Q2lhLEVBQWFqYSxPQUNiLEdBRU4rWixFQWpETixTQUE2QmMsRUFBSTdhLEdBQy9CLElBQ0krYSxFQURRcHZCLFNBQVNrSixnQkFDRG1tQix3QkFDaEJDLEVBQVNKLEVBQUdHLHdCQUNoQixNQUFPLENBQ0x2Z0IsRUFBR3dnQixFQUFPQyxLQUFPSCxFQUFRRyxLQUFPbGIsRUFBT3ZGLEVBQ3ZDQyxFQUFHdWdCLEVBQU9FLElBQU1KLEVBQVFJLElBQU1uYixFQUFPdEYsR0EyQ3hCMGdCLENBQW1CUCxFQUQ5QjdhLEVBMUJHLENBQ0x2RixFQUFHOGYsSUFGbUJucEIsRUEyQks0TyxHQXpCWHZGLEdBQUtySixFQUFJcUosRUFBSSxFQUM3QkMsRUFBRzZmLEdBQVNucEIsRUFBSXNKLEdBQUt0SixFQUFJc0osRUFBSSxTQTBCbEI0ZixHQUFnQkwsS0FDekJGLEVBQVdTLEdBQWtCUCxTQUV0QlUsR0FBWUwsR0FBZ0JMLEtBQ3JDRixFQUFXUyxHQUFrQlAsSUFHM0JGLEdBQ0Y5cUIsT0FBT29zQixTQUFTdEIsRUFBU3RmLEVBQUdzZixFQUFTcmYsR0FNekMsSUFHUTRnQixHQUhKQyxHQUNGcEYsTUFLbUMsS0FIN0JtRixHQUFLcnNCLE9BQU9zRixVQUFVQyxXQUdwQlEsUUFBUSxnQkFBdUQsSUFBL0JzbUIsR0FBR3RtQixRQUFRLGlCQUNkLElBQWpDc21CLEdBQUd0bUIsUUFBUSxtQkFDZSxJQUExQnNtQixHQUFHdG1CLFFBQVEsWUFDc0IsSUFBakNzbUIsR0FBR3RtQixRQUFRLG1CQUtOL0YsT0FBTzhwQixTQUErQyxtQkFBN0I5cEIsT0FBTzhwQixRQUFReUMsV0FHbkQsU0FBU0EsR0FBVzFxQixFQUFLSSxHQUN2QmlwQixLQUdBLElBQUlwQixFQUFVOXBCLE9BQU84cEIsUUFDckIsSUFDRSxHQUFJN25CLEVBQVMsQ0FFWCxJQUFJbW9CLEVBQVk1UCxFQUFPLEdBQUlzUCxFQUFRTyxPQUNuQ0QsRUFBVTdxQixJQUFNbXFCLEtBQ2hCSSxFQUFRUSxhQUFhRixFQUFXLEdBQUl2b0IsUUFFcENpb0IsRUFBUXlDLFVBQVUsQ0FBRWh0QixJQUFLb3FCLEdBQVlILE9BQWtCLEdBQUkzbkIsR0FFN0QsTUFBTzVGLEdBQ1ArRCxPQUFPb2UsU0FBU25jLEVBQVUsVUFBWSxVQUFVSixJQUlwRCxTQUFTeW9CLEdBQWN6b0IsR0FDckIwcUIsR0FBVTFxQixHQUFLLEdBS2pCLFNBQVMycUIsR0FBVWhVLEVBQU85UCxFQUFJK2pCLEdBQzVCLElBQUlDLEVBQU8sU0FBVXRoQixHQUNmQSxHQUFTb04sRUFBTXZkLE9BQ2pCd3hCLElBRUlqVSxFQUFNcE4sR0FDUjFDLEVBQUc4UCxFQUFNcE4sSUFBUSxXQUNmc2hCLEVBQUt0aEIsRUFBUSxNQUdmc2hCLEVBQUt0aEIsRUFBUSxJQUluQnNoQixFQUFLLEdBR1AsSUFBSUMsR0FBd0IsQ0FDMUJDLFdBQVksRUFDWkMsUUFBUyxFQUNUQyxVQUFXLEVBQ1hDLFdBQVksSUFHZCxTQUFTQyxHQUFpQ3RvQixFQUFNNmYsR0FDOUMsT0FBTzBJLEdBQ0x2b0IsRUFDQTZmLEVBQ0FvSSxHQUFzQkMsV0FDckIsK0JBQW1DbG9CLEVBQWEsU0FBSSxTQWdEekQsU0FBeUI2ZixHQUN2QixHQUFrQixpQkFBUEEsRUFBbUIsT0FBT0EsRUFDckMsR0FBSSxTQUFVQSxFQUFNLE9BQU9BLEVBQUc1VyxLQUM5QixJQUFJeVEsRUFBVyxHQUlmLE9BSEE4TyxHQUFnQjVwQixTQUFRLFNBQVUvRCxHQUM1QkEsS0FBT2dsQixJQUFNbkcsRUFBUzdlLEdBQU9nbEIsRUFBR2hsQixPQUUvQjRpQixLQUFLQyxVQUFVaEUsRUFBVSxLQUFNLEdBdkQ4QixDQUNoRW1HLEdBQ0csNkJBZ0JULFNBQVM0SSxHQUFnQ3pvQixFQUFNNmYsR0FDN0MsT0FBTzBJLEdBQ0x2b0IsRUFDQTZmLEVBQ0FvSSxHQUFzQkcsVUFDckIsOEJBQWtDcG9CLEVBQWEsU0FBSSxTQUFjNmYsRUFBVyxTQUFJLDRCQWFyRixTQUFTMEksR0FBbUJ2b0IsRUFBTTZmLEVBQUk1bUIsRUFBTUcsR0FDMUMsSUFBSVgsRUFBUSxJQUFJQyxNQUFNVSxHQU10QixPQUxBWCxFQUFNaXdCLFdBQVksRUFDbEJqd0IsRUFBTXVILEtBQU9BLEVBQ2J2SCxFQUFNb25CLEdBQUtBLEVBQ1hwbkIsRUFBTVEsS0FBT0EsRUFFTlIsRUFHVCxJQUFJK3ZCLEdBQWtCLENBQUMsU0FBVSxRQUFTLFFBWTFDLFNBQVNHLEdBQVN4dEIsR0FDaEIsT0FBTzNFLE9BQU9DLFVBQVVzSixTQUFTcEosS0FBS3dFLEdBQUtrRyxRQUFRLFVBQVksRUFHakUsU0FBU3VuQixHQUFxQnp0QixFQUFLbkMsR0FDakMsT0FDRTJ2QixHQUFReHRCLElBQ1JBLEVBQUl1dEIsWUFDVSxNQUFiMXZCLEdBQXFCbUMsRUFBSWxDLE9BQVNELEdBTXZDLFNBQVM2dkIsR0FBd0JsUixHQUMvQixPQUFPLFNBQVVrSSxFQUFJN2YsRUFBTVYsR0FDekIsSUFBSXdwQixHQUFXLEVBQ1hDLEVBQVUsRUFDVnR3QixFQUFRLEtBRVp1d0IsR0FBa0JyUixHQUFTLFNBQVVzUixFQUFLN1MsRUFBRytILEVBQU90akIsR0FNbEQsR0FBbUIsbUJBQVJvdUIsUUFBa0MxdkIsSUFBWjB2QixFQUFJQyxJQUFtQixDQUN0REosR0FBVyxFQUNYQyxJQUVBLElBMEJJNVAsRUExQkF2aEIsRUFBVXNkLElBQUssU0FBVWlVLEdBdUVyQyxJQUFxQjFyQixNQXRFSTByQixHQXVFWnp1QixZQUFlMHVCLElBQXlDLFdBQTVCM3JCLEVBQUlwRCxPQUFPQyxnQkF0RXhDNnVCLEVBQWNBLEVBQVlqVCxTQUc1QitTLEVBQUkzakIsU0FBa0MsbUJBQWhCNmpCLEVBQ2xCQSxFQUNBeEosRUFBSzdKLE9BQU9xVCxHQUNoQmhMLEVBQU12RyxXQUFXL2MsR0FBT3N1QixJQUN4QkosR0FDZSxHQUNienBCLE9BSUF6SCxFQUFTcWQsSUFBSyxTQUFVMVAsR0FDMUIsSUFBSTZqQixFQUFNLHFDQUF1Q3h1QixFQUFNLEtBQU8ySyxFQUV6RC9NLElBQ0hBLEVBQVFrd0IsR0FBUW5qQixHQUNaQSxFQUNBLElBQUk5TSxNQUFNMndCLEdBQ2QvcEIsRUFBSzdHLE9BS1QsSUFDRTBnQixFQUFNOFAsRUFBSXJ4QixFQUFTQyxHQUNuQixNQUFPTixHQUNQTSxFQUFPTixHQUVULEdBQUk0aEIsRUFDRixHQUF3QixtQkFBYkEsRUFBSS9ULEtBQ2IrVCxFQUFJL1QsS0FBS3hOLEVBQVNDLE9BQ2IsQ0FFTCxJQUFJeXhCLEVBQU9uUSxFQUFJcmQsVUFDWHd0QixHQUE2QixtQkFBZEEsRUFBS2xrQixNQUN0QmtrQixFQUFLbGtCLEtBQUt4TixFQUFTQyxRQU94Qml4QixHQUFZeHBCLEtBSXJCLFNBQVMwcEIsR0FDUHJSLEVBQ0EzVCxHQUVBLE9BQU91bEIsR0FBUTVSLEVBQVE3VixLQUFJLFNBQVVsSSxHQUNuQyxPQUFPcEQsT0FBTzhILEtBQUsxRSxFQUFFZ2UsWUFBWTlWLEtBQUksU0FBVWpILEdBQU8sT0FBT21KLEVBQzNEcEssRUFBRWdlLFdBQVcvYyxHQUNiakIsRUFBRW9lLFVBQVVuZCxHQUNaakIsRUFBR2lCLFVBS1QsU0FBUzB1QixHQUFTenFCLEdBQ2hCLE9BQU9DLE1BQU10SSxVQUFVK0gsT0FBT2tXLE1BQU0sR0FBSTVWLEdBRzFDLElBQUlzcUIsR0FDZ0IsbUJBQVgvdUIsUUFDdUIsaUJBQXZCQSxPQUFPQyxZQVVoQixTQUFTNGEsR0FBTWxSLEdBQ2IsSUFBSXdsQixHQUFTLEVBQ2IsT0FBTyxXQUVMLElBREEsSUFBSXZlLEVBQU8sR0FBSWtKLEVBQU1oVyxVQUFVNUgsT0FDdkI0ZCxLQUFRbEosRUFBTWtKLEdBQVFoVyxVQUFXZ1csR0FFekMsSUFBSXFWLEVBRUosT0FEQUEsR0FBUyxFQUNGeGxCLEVBQUcwUSxNQUFNMVksS0FBTWlQLElBTTFCLElBQUl3ZSxHQUFVLFNBQWtCN1AsRUFBUW9CLEdBQ3RDaGYsS0FBSzRkLE9BQVNBLEVBQ2Q1ZCxLQUFLZ2YsS0EwTlAsU0FBd0JBLEdBQ3RCLElBQUtBLEVBQ0gsR0FBSXdILEVBQVcsQ0FFYixJQUFJa0gsRUFBUzF4QixTQUFTZ0ssY0FBYyxRQUdwQ2daLEdBRkFBLEVBQVEwTyxHQUFVQSxFQUFPbm5CLGFBQWEsU0FBWSxLQUV0Q2hGLFFBQVEscUJBQXNCLFNBRTFDeWQsRUFBTyxJQUlZLE1BQW5CQSxFQUFLRyxPQUFPLEtBQ2RILEVBQU8sSUFBTUEsR0FHZixPQUFPQSxFQUFLemQsUUFBUSxNQUFPLElBM09mb3NCLENBQWMzTyxHQUUxQmhmLEtBQUsrYixRQUFVcUMsRUFDZnBlLEtBQUsrc0IsUUFBVSxLQUNmL3NCLEtBQUs0dEIsT0FBUSxFQUNiNXRCLEtBQUs2dEIsU0FBVyxHQUNoQjd0QixLQUFLOHRCLGNBQWdCLEdBQ3JCOXRCLEtBQUsrdEIsU0FBVyxHQUNoQi90QixLQUFLd1osVUFBWSxJQXdQbkIsU0FBU3dVLEdBQ1BDLEVBQ0E1d0IsRUFDQXlCLEVBQ0FvdkIsR0FFQSxJQUFJQyxFQUFTbkIsR0FBa0JpQixHQUFTLFNBQVVoQixFQUFLelgsRUFBVTJNLEVBQU90akIsR0FDdEUsSUFBSXV2QixFQVVSLFNBQ0VuQixFQUNBcHVCLEdBRW1CLG1CQUFSb3VCLElBRVRBLEVBQU10SixFQUFLN0osT0FBT21ULElBRXBCLE9BQU9BLEVBQUl0dEIsUUFBUWQsR0FsQkx3dkIsQ0FBYXBCLEVBQUs1dkIsR0FDOUIsR0FBSSt3QixFQUNGLE9BQU9yckIsTUFBTUMsUUFBUW9yQixHQUNqQkEsRUFBTXRvQixLQUFJLFNBQVVzb0IsR0FBUyxPQUFPdHZCLEVBQUtzdkIsRUFBTzVZLEVBQVUyTSxFQUFPdGpCLE1BQ2pFQyxFQUFLc3ZCLEVBQU81WSxFQUFVMk0sRUFBT3RqQixNQUdyQyxPQUFPMHVCLEdBQVFXLEVBQVVDLEVBQU9ELFVBQVlDLEdBc0I5QyxTQUFTRyxHQUFXRixFQUFPNVksR0FDekIsR0FBSUEsRUFDRixPQUFPLFdBQ0wsT0FBTzRZLEVBQU0xVixNQUFNbEQsRUFBVXJULFlBNVJuQ3NyQixHQUFRaHpCLFVBQVU4ekIsT0FBUyxTQUFpQnhDLEdBQzFDL3JCLEtBQUsrckIsR0FBS0EsR0FHWjBCLEdBQVFoekIsVUFBVSt6QixRQUFVLFNBQWtCekMsRUFBSTBDLEdBQzVDenVCLEtBQUs0dEIsTUFDUDdCLEtBRUEvckIsS0FBSzZ0QixTQUFTaHpCLEtBQUtreEIsR0FDZjBDLEdBQ0Z6dUIsS0FBSzh0QixjQUFjanpCLEtBQUs0ekIsS0FLOUJoQixHQUFRaHpCLFVBQVVpMEIsUUFBVSxTQUFrQkQsR0FDNUN6dUIsS0FBSyt0QixTQUFTbHpCLEtBQUs0ekIsSUFHckJoQixHQUFRaHpCLFVBQVVrMEIsYUFBZSxTQUMvQmpSLEVBQ0FrUixFQUNBQyxHQUVFLElBRUVwVSxFQUZFMkosRUFBU3BrQixLQUlmLElBQ0V5YSxFQUFRemEsS0FBSzRkLE9BQU91RSxNQUFNekUsRUFBVTFkLEtBQUsrYixTQUN6QyxNQUFPeGdCLEdBS1AsTUFKQXlFLEtBQUsrdEIsU0FBU25yQixTQUFRLFNBQVVtcEIsR0FDOUJBLEVBQUd4d0IsTUFHQ0EsRUFFUnlFLEtBQUs4dUIsa0JBQ0hyVSxHQUNBLFdBQ0UsSUFBSXNVLEVBQU8zSyxFQUFPckksUUFDbEJxSSxFQUFPNEssWUFBWXZVLEdBQ25CbVUsR0FBY0EsRUFBV25VLEdBQ3pCMkosRUFBTzZLLFlBQ1A3SyxFQUFPeEcsT0FBT3NSLFdBQVd0c0IsU0FBUSxTQUFVcVosR0FDekNBLEdBQVFBLEVBQUt4QixFQUFPc1UsTUFJakIzSyxFQUFPd0osUUFDVnhKLEVBQU93SixPQUFRLEVBQ2Z4SixFQUFPeUosU0FBU2pyQixTQUFRLFNBQVVtcEIsR0FDaENBLEVBQUd0UixVQUlULFNBQVV0YixHQUNKMHZCLEdBQ0ZBLEVBQVExdkIsR0FFTkEsSUFBUWlsQixFQUFPd0osUUFDakJ4SixFQUFPd0osT0FBUSxFQUdWaEIsR0FBb0J6dEIsRUFBSzhzQixHQUFzQkMsWUFLbEQ5SCxFQUFPeUosU0FBU2pyQixTQUFRLFNBQVVtcEIsR0FDaENBLEVBQUd0UixNQUxMMkosRUFBTzBKLGNBQWNsckIsU0FBUSxTQUFVbXBCLEdBQ3JDQSxFQUFHNXNCLFdBWWZzdUIsR0FBUWh6QixVQUFVcTBCLGtCQUFvQixTQUE0QnJVLEVBQU9tVSxFQUFZQyxHQUNqRixJQTNRc0M3cUIsRUFDcEN2SCxFQTBRRTJuQixFQUFTcGtCLEtBRVgrYixFQUFVL2IsS0FBSytiLFFBQ2ZvVCxFQUFRLFNBQVVod0IsSUFJZnl0QixHQUFvQnp0QixJQUFRd3RCLEdBQVF4dEIsS0FDbkNpbEIsRUFBTzJKLFNBQVN4ekIsT0FDbEI2cEIsRUFBTzJKLFNBQVNuckIsU0FBUSxTQUFVbXBCLEdBQ2hDQSxFQUFHNXNCLE1BSUxDLFFBQVEzQyxNQUFNMEMsSUFHbEIwdkIsR0FBV0EsRUFBUTF2QixJQUVqQml3QixFQUFpQjNVLEVBQU1rQixRQUFRcGhCLE9BQVMsRUFDeEM4MEIsRUFBbUJ0VCxFQUFRSixRQUFRcGhCLE9BQVMsRUFDaEQsR0FDRWdrQixFQUFZOUQsRUFBT3NCLElBRW5CcVQsSUFBbUJDLEdBQ25CNVUsRUFBTWtCLFFBQVF5VCxLQUFvQnJULEVBQVFKLFFBQVEwVCxHQUdsRCxPQURBcnZCLEtBQUtpdkIsWUFDRUUsSUF0U0wxeUIsRUFBUTh2QixHQUQ0QnZvQixFQXVTTytYLEVBQVN0QixFQW5TdER3UixHQUFzQkksV0FDckIsc0RBQTBEcm9CLEVBQWEsU0FBSSxPQUd4RTNHLEtBQU8sdUJBQ05aLElBaVNQLElBQUk0ZCxFQXFITixTQUNFMEIsRUFDQXpZLEdBRUEsSUFBSWpKLEVBQ0FpMUIsRUFBTXRqQixLQUFLc2pCLElBQUl2VCxFQUFReGhCLE9BQVErSSxFQUFLL0ksUUFDeEMsSUFBS0YsRUFBSSxFQUFHQSxFQUFJaTFCLEdBQ1Z2VCxFQUFRMWhCLEtBQU9pSixFQUFLakosR0FETEEsS0FLckIsTUFBTyxDQUNMazFCLFFBQVNqc0IsRUFBSzlELE1BQU0sRUFBR25GLEdBQ3ZCbTFCLFVBQVdsc0IsRUFBSzlELE1BQU1uRixHQUN0Qm8xQixZQUFhMVQsRUFBUXZjLE1BQU1uRixJQW5JbkJxMUIsQ0FDUjF2QixLQUFLK2IsUUFBUUosUUFDYmxCLEVBQU1rQixTQUVGNFQsRUFBVWxWLEVBQUlrVixRQUNkRSxFQUFjcFYsRUFBSW9WLFlBQ2xCRCxFQUFZblYsRUFBSW1WLFVBRWxCMVgsRUFBUSxHQUFHdFYsT0EySmpCLFNBQTZCaXRCLEdBQzNCLE9BQU96QixHQUFjeUIsRUFBYSxtQkFBb0JuQixJQUFXLEdBMUovRHFCLENBQW1CRixHQUVuQnp2QixLQUFLNGQsT0FBT2dTLFlBMkpoQixTQUE2QkwsR0FDM0IsT0FBT3ZCLEdBQWN1QixFQUFTLG9CQUFxQmpCLElBMUpqRHVCLENBQW1CTixHQUVuQkMsRUFBVTFwQixLQUFJLFNBQVVsSSxHQUFLLE9BQU9BLEVBQUU4cEIsZUFFdENtRixHQUF1QjJDLElBR3pCeHZCLEtBQUsrc0IsUUFBVXRTLEVBQ2YsSUFBSS9ZLEVBQVcsU0FBVXVhLEVBQU0zWSxHQUM3QixHQUFJOGdCLEVBQU8ySSxVQUFZdFMsRUFDckIsT0FBTzBVLEVBQU0xQyxHQUErQjFRLEVBQVN0QixJQUV2RCxJQUNFd0IsRUFBS3hCLEVBQU9zQixHQUFTLFNBQVU4SCxJQUNsQixJQUFQQSxHQUVGTyxFQUFPNkssV0FBVSxHQUNqQkUsRUFwVFYsU0FBdUNuckIsRUFBTTZmLEdBQzNDLE9BQU8wSSxHQUNMdm9CLEVBQ0E2ZixFQUNBb0ksR0FBc0JFLFFBQ3JCLDRCQUFnQ25vQixFQUFhLFNBQUksU0FBYzZmLEVBQVcsU0FBSSw2QkErU25FaU0sQ0FBNkIvVCxFQUFTdEIsS0FDbkNrUyxHQUFROUksSUFDakJPLEVBQU82SyxXQUFVLEdBQ2pCRSxFQUFNdEwsSUFFUSxpQkFBUEEsR0FDUSxpQkFBUEEsSUFDYyxpQkFBWkEsRUFBRzVXLE1BQXdDLGlCQUFaNFcsRUFBR3htQixPQUc1Qzh4QixFQUFNN0MsR0FBZ0N2USxFQUFTdEIsSUFDN0IsaUJBQVBvSixHQUFtQkEsRUFBR3RpQixRQUMvQjZpQixFQUFPN2lCLFFBQVFzaUIsR0FFZk8sRUFBT3ZwQixLQUFLZ3BCLElBSWR2Z0IsRUFBS3VnQixNQUdULE1BQU90b0IsR0FDUDR6QixFQUFNNXpCLEtBSVZ1d0IsR0FBU2hVLEVBQU9wVyxHQUFVLFdBQ3hCLElBQUlxdUIsRUFBZSxHQU1uQmpFLEdBbUhKLFNBQ0UwRCxFQUNBUSxFQUNBQyxHQUVBLE9BQU9qQyxHQUNMd0IsRUFDQSxvQkFDQSxTQUFVcEIsRUFBT2hVLEVBQUcrSCxFQUFPdGpCLEdBQ3pCLE9BS04sU0FDRXV2QixFQUNBak0sRUFDQXRqQixFQUNBbXhCLEVBQ0FDLEdBRUEsT0FBTyxTQUEwQnBNLEVBQUk3ZixFQUFNVixHQUN6QyxPQUFPOHFCLEVBQU12SyxFQUFJN2YsR0FBTSxTQUFVK25CLEdBQ2IsbUJBQVBBLEdBQ1RpRSxFQUFJbjFCLE1BQUssWUFjakIsU0FBU3ExQixFQUNQbkUsRUFDQS9QLEVBQ0FuZCxFQUNBb3hCLEdBR0VqVSxFQUFVbmQsS0FDVG1kLEVBQVVuZCxHQUFLc3hCLGtCQUVoQnBFLEVBQUcvUCxFQUFVbmQsSUFDSm94QixLQUNUenlCLFlBQVcsV0FDVDB5QixFQUFLbkUsRUFBSS9QLEVBQVduZCxFQUFLb3hCLEtBQ3hCLElBdEJHQyxDQUFLbkUsRUFBSTVKLEVBQU1uRyxVQUFXbmQsRUFBS294QixNQUduQzNzQixFQUFLeW9CLE9BeEJFcUUsQ0FBZWhDLEVBQU9qTSxFQUFPdGpCLEVBQUtteEIsRUFBS0MsTUE5SDlCSSxDQUFtQmIsRUFBV08sR0FIbEMsV0FBYyxPQUFPM0wsRUFBT3JJLFVBQVl0QixLQUk5QmpZLE9BQU80aEIsRUFBT3hHLE9BQU8wUyxjQUM3QjV1QixHQUFVLFdBQ3hCLEdBQUkwaUIsRUFBTzJJLFVBQVl0UyxFQUNyQixPQUFPMFUsRUFBTTFDLEdBQStCMVEsRUFBU3RCLElBRXZEMkosRUFBTzJJLFFBQVUsS0FDakI2QixFQUFXblUsR0FDUDJKLEVBQU94RyxPQUFPb00sS0FDaEI1RixFQUFPeEcsT0FBT29NLElBQUlHLFdBQVUsV0FDMUI0RixFQUFhbnRCLFNBQVEsU0FBVW1wQixHQUM3QkEsaUJBUVowQixHQUFRaHpCLFVBQVV1MEIsWUFBYyxTQUFzQnZVLEdBQ3BEemEsS0FBSytiLFFBQVV0QixFQUNmemEsS0FBSytyQixJQUFNL3JCLEtBQUsrckIsR0FBR3RSLElBR3JCZ1QsR0FBUWh6QixVQUFVODFCLGVBQWlCLGFBSW5DOUMsR0FBUWh6QixVQUFVKzFCLGtCQUFvQixXQUNwQ3h3QixLQUFLd1osVUFBVTVXLFNBQVEsU0FBVTZ0QixHQUMvQkEsT0FFRnp3QixLQUFLd1osVUFBWSxJQStJbkIsSUFBSWtYLEdBQTZCLFNBQVVqRCxHQUN6QyxTQUFTaUQsRUFBYzlTLEVBQVFvQixHQUM3QnlPLEVBQVE5eUIsS0FBS3FGLEtBQU00ZCxFQUFRb0IsR0FFM0JoZixLQUFLMndCLGVBQWlCQyxHQUFZNXdCLEtBQUtnZixNQW1GekMsT0FoRkt5TyxJQUFVaUQsRUFBYUcsVUFBWXBELEdBQ3hDaUQsRUFBYWoyQixVQUFZRCxPQUFPb0UsT0FBUTZ1QixHQUFXQSxFQUFRaHpCLFdBQzNEaTJCLEVBQWFqMkIsVUFBVWtILFlBQWMrdUIsRUFFckNBLEVBQWFqMkIsVUFBVTgxQixlQUFpQixXQUN0QyxJQUFJbk0sRUFBU3BrQixLQUViLEtBQUlBLEtBQUt3WixVQUFVamYsT0FBUyxHQUE1QixDQUlBLElBQUlxakIsRUFBUzVkLEtBQUs0ZCxPQUNka1QsRUFBZWxULEVBQU9qZSxRQUFRdXFCLGVBQzlCNkcsRUFBaUJuRixJQUFxQmtGLEVBRXRDQyxHQUNGL3dCLEtBQUt3WixVQUFVM2UsS0FBS3N1QixNQUd0QixJQUFJNkgsRUFBcUIsV0FDdkIsSUFBSWpWLEVBQVVxSSxFQUFPckksUUFJakIyQixFQUFXa1QsR0FBWXhNLEVBQU9wRixNQUM5Qm9GLEVBQU9ySSxVQUFZcUMsR0FBU1YsSUFBYTBHLEVBQU91TSxnQkFJcER2TSxFQUFPdUssYUFBYWpSLEdBQVUsU0FBVWpELEdBQ2xDc1csR0FDRmpILEdBQWFsTSxFQUFRbkQsRUFBT3NCLEdBQVMsT0FJM0N6YyxPQUFPNkYsaUJBQWlCLFdBQVk2ckIsR0FDcENoeEIsS0FBS3daLFVBQVUzZSxNQUFLLFdBQ2xCeUUsT0FBT3lJLG9CQUFvQixXQUFZaXBCLFFBSTNDTixFQUFhajJCLFVBQVV3MkIsR0FBSyxTQUFhbHlCLEdBQ3ZDTyxPQUFPOHBCLFFBQVE2SCxHQUFHbHlCLElBR3BCMnhCLEVBQWFqMkIsVUFBVUksS0FBTyxTQUFlNmlCLEVBQVVrUixFQUFZQyxHQUNqRSxJQUFJekssRUFBU3BrQixLQUdUa3hCLEVBRE1seEIsS0FDVStiLFFBQ3BCL2IsS0FBSzJ1QixhQUFhalIsR0FBVSxTQUFVakQsR0FDcENvUixHQUFVdE0sRUFBVTZFLEVBQU9wRixLQUFPdkUsRUFBTXVELFdBQ3hDOEwsR0FBYTFGLEVBQU94RyxPQUFRbkQsRUFBT3lXLEdBQVcsR0FDOUN0QyxHQUFjQSxFQUFXblUsS0FDeEJvVSxJQUdMNkIsRUFBYWoyQixVQUFVOEcsUUFBVSxTQUFrQm1jLEVBQVVrUixFQUFZQyxHQUN2RSxJQUFJekssRUFBU3BrQixLQUdUa3hCLEVBRE1seEIsS0FDVStiLFFBQ3BCL2IsS0FBSzJ1QixhQUFhalIsR0FBVSxTQUFVakQsR0FDcENtUCxHQUFhckssRUFBVTZFLEVBQU9wRixLQUFPdkUsRUFBTXVELFdBQzNDOEwsR0FBYTFGLEVBQU94RyxPQUFRbkQsRUFBT3lXLEdBQVcsR0FDOUN0QyxHQUFjQSxFQUFXblUsS0FDeEJvVSxJQUdMNkIsRUFBYWoyQixVQUFVdzBCLFVBQVksU0FBb0JwMEIsR0FDckQsR0FBSSsxQixHQUFZNXdCLEtBQUtnZixRQUFVaGYsS0FBSytiLFFBQVFpQyxTQUFVLENBQ3BELElBQUlqQyxFQUFVd0QsRUFBVXZmLEtBQUtnZixLQUFPaGYsS0FBSytiLFFBQVFpQyxVQUNqRG5qQixFQUFPZ3hCLEdBQVU5UCxHQUFXNk4sR0FBYTdOLEtBSTdDMlUsRUFBYWoyQixVQUFVMDJCLG1CQUFxQixXQUMxQyxPQUFPUCxHQUFZNXdCLEtBQUtnZixPQUduQjBSLEVBdkZ1QixDQXdGOUJqRCxJQUVGLFNBQVNtRCxHQUFhNVIsR0FDcEIsSUFBSS9SLEVBQU9ta0IsVUFBVTl4QixPQUFPb2UsU0FBUzJULFVBSXJDLE9BSElyUyxHQUEyRCxJQUFuRC9SLEVBQUs4RixjQUFjMU4sUUFBUTJaLEVBQUtqTSxpQkFDMUM5RixFQUFPQSxFQUFLek4sTUFBTXdmLEVBQUt6a0IsVUFFakIwUyxHQUFRLEtBQU8zTixPQUFPb2UsU0FBUzRULE9BQVNoeUIsT0FBT29lLFNBQVNLLEtBS2xFLElBQUl3VCxHQUE0QixTQUFVOUQsR0FDeEMsU0FBUzhELEVBQWEzVCxFQUFRb0IsRUFBTXdTLEdBQ2xDL0QsRUFBUTl5QixLQUFLcUYsS0FBTTRkLEVBQVFvQixHQUV2QndTLEdBcUdSLFNBQXdCeFMsR0FDdEIsSUFBSXRCLEVBQVdrVCxHQUFZNVIsR0FDM0IsSUFBSyxPQUFPNWQsS0FBS3NjLEdBRWYsT0FEQXBlLE9BQU9vZSxTQUFTbmMsUUFBUWdlLEVBQVVQLEVBQU8sS0FBT3RCLEtBQ3pDLEVBekdTK1QsQ0FBY3p4QixLQUFLZ2YsT0FHbkMwUyxLQStGRixPQTVGS2pFLElBQVU4RCxFQUFZVixVQUFZcEQsR0FDdkM4RCxFQUFZOTJCLFVBQVlELE9BQU9vRSxPQUFRNnVCLEdBQVdBLEVBQVFoekIsV0FDMUQ4MkIsRUFBWTkyQixVQUFVa0gsWUFBYzR2QixFQUlwQ0EsRUFBWTkyQixVQUFVODFCLGVBQWlCLFdBQ3JDLElBQUluTSxFQUFTcGtCLEtBRWIsS0FBSUEsS0FBS3daLFVBQVVqZixPQUFTLEdBQTVCLENBSUEsSUFDSXUyQixFQURTOXdCLEtBQUs0ZCxPQUNRamUsUUFBUXVxQixlQUM5QjZHLEVBQWlCbkYsSUFBcUJrRixFQUV0Q0MsR0FDRi93QixLQUFLd1osVUFBVTNlLEtBQUtzdUIsTUFHdEIsSUFBSTZILEVBQXFCLFdBQ3ZCLElBQUlqVixFQUFVcUksRUFBT3JJLFFBQ2hCMlYsTUFHTHROLEVBQU91SyxhQUFhZ0QsTUFBVyxTQUFVbFgsR0FDbkNzVyxHQUNGakgsR0FBYTFGLEVBQU94RyxPQUFRbkQsRUFBT3NCLEdBQVMsR0FFekM2UCxJQUNIZ0csR0FBWW5YLEVBQU11RCxjQUlwQjZULEVBQVlqRyxHQUFvQixXQUFhLGFBQ2pEdHNCLE9BQU82RixpQkFDTDBzQixFQUNBYixHQUVGaHhCLEtBQUt3WixVQUFVM2UsTUFBSyxXQUNsQnlFLE9BQU95SSxvQkFBb0I4cEIsRUFBV2IsUUFJMUNPLEVBQVk5MkIsVUFBVUksS0FBTyxTQUFlNmlCLEVBQVVrUixFQUFZQyxHQUNoRSxJQUFJekssRUFBU3BrQixLQUdUa3hCLEVBRE1seEIsS0FDVStiLFFBQ3BCL2IsS0FBSzJ1QixhQUNIalIsR0FDQSxTQUFVakQsR0FDUnFYLEdBQVNyWCxFQUFNdUQsVUFDZjhMLEdBQWExRixFQUFPeEcsT0FBUW5ELEVBQU95VyxHQUFXLEdBQzlDdEMsR0FBY0EsRUFBV25VLEtBRTNCb1UsSUFJSjBDLEVBQVk5MkIsVUFBVThHLFFBQVUsU0FBa0JtYyxFQUFVa1IsRUFBWUMsR0FDdEUsSUFBSXpLLEVBQVNwa0IsS0FHVGt4QixFQURNbHhCLEtBQ1UrYixRQUNwQi9iLEtBQUsydUIsYUFDSGpSLEdBQ0EsU0FBVWpELEdBQ1JtWCxHQUFZblgsRUFBTXVELFVBQ2xCOEwsR0FBYTFGLEVBQU94RyxPQUFRbkQsRUFBT3lXLEdBQVcsR0FDOUN0QyxHQUFjQSxFQUFXblUsS0FFM0JvVSxJQUlKMEMsRUFBWTkyQixVQUFVdzJCLEdBQUssU0FBYWx5QixHQUN0Q08sT0FBTzhwQixRQUFRNkgsR0FBR2x5QixJQUdwQnd5QixFQUFZOTJCLFVBQVV3MEIsVUFBWSxTQUFvQnAwQixHQUNwRCxJQUFJa2hCLEVBQVUvYixLQUFLK2IsUUFBUWlDLFNBQ3ZCMlQsT0FBYzVWLElBQ2hCbGhCLEVBQU9pM0IsR0FBUy9WLEdBQVc2VixHQUFZN1YsS0FJM0N3VixFQUFZOTJCLFVBQVUwMkIsbUJBQXFCLFdBQ3pDLE9BQU9RLE1BR0ZKLEVBdEdzQixDQXVHN0I5RCxJQVVGLFNBQVNpRSxLQUNQLElBQUl6a0IsRUFBTzBrQixLQUNYLE1BQXVCLE1BQW5CMWtCLEVBQUtrUyxPQUFPLEtBR2hCeVMsR0FBWSxJQUFNM2tCLElBQ1gsR0FHVCxTQUFTMGtCLEtBR1AsSUFBSXJOLEVBQU9obEIsT0FBT29lLFNBQVM0RyxLQUN2QjVaLEVBQVE0WixFQUFLamYsUUFBUSxLQUV6QixHQUFJcUYsRUFBUSxFQUFLLE1BQU8sR0FNeEIsSUFBSXFuQixHQUpKek4sRUFBT0EsRUFBSzlrQixNQUFNa0wsRUFBUSxJQUlIckYsUUFBUSxLQUMvQixHQUFJMHNCLEVBQWMsRUFBRyxDQUNuQixJQUFJNU8sRUFBWW1CLEVBQUtqZixRQUFRLEtBRTNCaWYsRUFERW5CLEdBQWEsRUFDUmlPLFVBQVU5TSxFQUFLOWtCLE1BQU0sRUFBRzJqQixJQUFjbUIsRUFBSzlrQixNQUFNMmpCLEdBQzFDaU8sVUFBVTlNLFFBRTFCQSxFQUFPOE0sVUFBVTlNLEVBQUs5a0IsTUFBTSxFQUFHdXlCLElBQWdCek4sRUFBSzlrQixNQUFNdXlCLEdBRzVELE9BQU96TixFQUdULFNBQVMwTixHQUFRL2tCLEdBQ2YsSUFBSXFYLEVBQU9obEIsT0FBT29lLFNBQVM0RyxLQUN2QmpxQixFQUFJaXFCLEVBQUtqZixRQUFRLEtBRXJCLE9BRFdoTCxHQUFLLEVBQUlpcUIsRUFBSzlrQixNQUFNLEVBQUduRixHQUFLaXFCLEdBQ3hCLElBQU1yWCxFQUd2QixTQUFTNmtCLEdBQVU3a0IsR0FDYjJlLEdBQ0ZDLEdBQVVtRyxHQUFPL2tCLElBRWpCM04sT0FBT29lLFNBQVNLLEtBQU85USxFQUkzQixTQUFTMmtCLEdBQWEza0IsR0FDaEIyZSxHQUNGaEMsR0FBYW9JLEdBQU8va0IsSUFFcEIzTixPQUFPb2UsU0FBU25jLFFBQVF5d0IsR0FBTy9rQixJQU1uQyxJQUFJZ2xCLEdBQWdDLFNBQVV4RSxHQUM1QyxTQUFTd0UsRUFBaUJyVSxFQUFRb0IsR0FDaEN5TyxFQUFROXlCLEtBQUtxRixLQUFNNGQsRUFBUW9CLEdBQzNCaGYsS0FBS3VULE1BQVEsR0FDYnZULEtBQUswSyxPQUFTLEVBaUVoQixPQTlESytpQixJQUFVd0UsRUFBZ0JwQixVQUFZcEQsR0FDM0N3RSxFQUFnQngzQixVQUFZRCxPQUFPb0UsT0FBUTZ1QixHQUFXQSxFQUFRaHpCLFdBQzlEdzNCLEVBQWdCeDNCLFVBQVVrSCxZQUFjc3dCLEVBRXhDQSxFQUFnQngzQixVQUFVSSxLQUFPLFNBQWU2aUIsRUFBVWtSLEVBQVlDLEdBQ3BFLElBQUl6SyxFQUFTcGtCLEtBRWJBLEtBQUsydUIsYUFDSGpSLEdBQ0EsU0FBVWpELEdBQ1IySixFQUFPN1EsTUFBUTZRLEVBQU83USxNQUFNL1QsTUFBTSxFQUFHNGtCLEVBQU8xWixNQUFRLEdBQUdsSSxPQUFPaVksR0FDOUQySixFQUFPMVosUUFDUGtrQixHQUFjQSxFQUFXblUsS0FFM0JvVSxJQUlKb0QsRUFBZ0J4M0IsVUFBVThHLFFBQVUsU0FBa0JtYyxFQUFVa1IsRUFBWUMsR0FDMUUsSUFBSXpLLEVBQVNwa0IsS0FFYkEsS0FBSzJ1QixhQUNIalIsR0FDQSxTQUFVakQsR0FDUjJKLEVBQU83USxNQUFRNlEsRUFBTzdRLE1BQU0vVCxNQUFNLEVBQUc0a0IsRUFBTzFaLE9BQU9sSSxPQUFPaVksR0FDMURtVSxHQUFjQSxFQUFXblUsS0FFM0JvVSxJQUlKb0QsRUFBZ0J4M0IsVUFBVXcyQixHQUFLLFNBQWFseUIsR0FDMUMsSUFBSXFsQixFQUFTcGtCLEtBRVRreUIsRUFBY2x5QixLQUFLMEssTUFBUTNMLEVBQy9CLEtBQUltekIsRUFBYyxHQUFLQSxHQUFlbHlCLEtBQUt1VCxNQUFNaFosUUFBakQsQ0FHQSxJQUFJa2dCLEVBQVF6YSxLQUFLdVQsTUFBTTJlLEdBQ3ZCbHlCLEtBQUs4dUIsa0JBQ0hyVSxHQUNBLFdBQ0UySixFQUFPMVosTUFBUXduQixFQUNmOU4sRUFBTzRLLFlBQVl2VSxNQUVyQixTQUFVdGIsR0FDSnl0QixHQUFvQnp0QixFQUFLOHNCLEdBQXNCSSxjQUNqRGpJLEVBQU8xWixNQUFRd25CLFFBTXZCRCxFQUFnQngzQixVQUFVMDJCLG1CQUFxQixXQUM3QyxJQUFJcFYsRUFBVS9iLEtBQUt1VCxNQUFNdlQsS0FBS3VULE1BQU1oWixPQUFTLEdBQzdDLE9BQU93aEIsRUFBVUEsRUFBUWlDLFNBQVcsS0FHdENpVSxFQUFnQngzQixVQUFVdzBCLFVBQVksYUFJL0JnRCxFQXJFMEIsQ0FzRWpDeEUsSUFJRTBFLEdBQVksU0FBb0J4eUIsUUFDakIsSUFBWkEsSUFBcUJBLEVBQVUsSUFFcENLLEtBQUtncUIsSUFBTSxLQUNYaHFCLEtBQUtveUIsS0FBTyxHQUNacHlCLEtBQUtMLFFBQVVBLEVBQ2ZLLEtBQUs0dkIsWUFBYyxHQUNuQjV2QixLQUFLc3dCLGFBQWUsR0FDcEJ0d0IsS0FBS2t2QixXQUFhLEdBQ2xCbHZCLEtBQUtxeUIsUUFBVXJLLEVBQWNyb0IsRUFBUSttQixRQUFVLEdBQUkxbUIsTUFFbkQsSUFBSXZCLEVBQU9rQixFQUFRbEIsTUFBUSxPQVczQixPQVZBdUIsS0FBS3d4QixTQUNNLFlBQVQveUIsSUFBdUJtdEIsS0FBMEMsSUFBckJqc0IsRUFBUTZ4QixTQUNsRHh4QixLQUFLd3hCLFdBQ1AveUIsRUFBTyxRQUVKK25CLElBQ0gvbkIsRUFBTyxZQUVUdUIsS0FBS3ZCLEtBQU9BLEVBRUpBLEdBQ04sSUFBSyxVQUNIdUIsS0FBS29wQixRQUFVLElBQUlzSCxHQUFhMXdCLEtBQU1MLEVBQVFxZixNQUM5QyxNQUNGLElBQUssT0FDSGhmLEtBQUtvcEIsUUFBVSxJQUFJbUksR0FBWXZ4QixLQUFNTCxFQUFRcWYsS0FBTWhmLEtBQUt3eEIsVUFDeEQsTUFDRixJQUFLLFdBQ0h4eEIsS0FBS29wQixRQUFVLElBQUk2SSxHQUFnQmp5QixLQUFNTCxFQUFRcWYsTUFDakQsTUFDRixRQUNNLElBTU5zVCxHQUFxQixDQUFFckssYUFBYyxDQUFFbG1CLGNBQWMsSUF3THpELFNBQVN3d0IsR0FBY0MsRUFBTXhxQixHQUUzQixPQURBd3FCLEVBQUszM0IsS0FBS21OLEdBQ0gsV0FDTCxJQUFJM04sRUFBSW00QixFQUFLbnRCLFFBQVEyQyxHQUNqQjNOLEdBQUssR0FBS200QixFQUFLekssT0FBTzF0QixFQUFHLElBMUxqQzgzQixHQUFVMTNCLFVBQVUwbkIsTUFBUSxTQUFnQlcsRUFBSy9HLEVBQVM0QixHQUN4RCxPQUFPM2QsS0FBS3F5QixRQUFRbFEsTUFBTVcsRUFBSy9HLEVBQVM0QixJQUcxQzJVLEdBQW1CckssYUFBYTlwQixJQUFNLFdBQ3BDLE9BQU82QixLQUFLb3BCLFNBQVdwcEIsS0FBS29wQixRQUFRck4sU0FHdENvVyxHQUFVMTNCLFVBQVU0aEIsS0FBTyxTQUFlMk4sR0FDdEMsSUFBSTVGLEVBQVNwa0IsS0E4QmYsR0FyQkFBLEtBQUtveUIsS0FBS3YzQixLQUFLbXZCLEdBSWZBLEVBQUl5SSxNQUFNLGtCQUFrQixXQUUxQixJQUFJL25CLEVBQVEwWixFQUFPZ08sS0FBSy9zQixRQUFRMmtCLEdBQzVCdGYsR0FBUyxHQUFLMFosRUFBT2dPLEtBQUtySyxPQUFPcmQsRUFBTyxHQUd4QzBaLEVBQU80RixNQUFRQSxJQUFPNUYsRUFBTzRGLElBQU01RixFQUFPZ08sS0FBSyxJQUFNLE1BRXBEaE8sRUFBTzRGLEtBR1Y1RixFQUFPZ0YsUUFBUW9ILHdCQU1meHdCLEtBQUtncUIsSUFBVCxDQUlBaHFCLEtBQUtncUIsSUFBTUEsRUFFWCxJQUFJWixFQUFVcHBCLEtBQUtvcEIsUUFFbkIsR0FBSUEsYUFBbUJzSCxJQUFnQnRILGFBQW1CbUksR0FBYSxDQUNyRSxJQVNJaEIsRUFBaUIsU0FBVW1DLEdBQzdCdEosRUFBUW1ILGlCQVZnQixTQUFVbUMsR0FDbEMsSUFBSTF1QixFQUFPb2xCLEVBQVFyTixRQUNmK1UsRUFBZTFNLEVBQU96a0IsUUFBUXVxQixlQUNiMEIsSUFBcUJrRixHQUVwQixhQUFjNEIsR0FDbEM1SSxHQUFhMUYsRUFBUXNPLEVBQWMxdUIsR0FBTSxHQUszQzJ1QixDQUFvQkQsSUFFdEJ0SixFQUFRdUYsYUFDTnZGLEVBQVErSCxxQkFDUlosRUFDQUEsR0FJSm5ILEVBQVFtRixRQUFPLFNBQVU5VCxHQUN2QjJKLEVBQU9nTyxLQUFLeHZCLFNBQVEsU0FBVW9uQixHQUM1QkEsRUFBSTRJLE9BQVNuWSxVQUtuQjBYLEdBQVUxM0IsVUFBVW80QixXQUFhLFNBQXFCN3FCLEdBQ3BELE9BQU91cUIsR0FBYXZ5QixLQUFLNHZCLFlBQWE1bkIsSUFHeENtcUIsR0FBVTEzQixVQUFVcTRCLGNBQWdCLFNBQXdCOXFCLEdBQzFELE9BQU91cUIsR0FBYXZ5QixLQUFLc3dCLGFBQWN0b0IsSUFHekNtcUIsR0FBVTEzQixVQUFVczRCLFVBQVksU0FBb0IvcUIsR0FDbEQsT0FBT3VxQixHQUFhdnlCLEtBQUtrdkIsV0FBWWxuQixJQUd2Q21xQixHQUFVMTNCLFVBQVUrekIsUUFBVSxTQUFrQnpDLEVBQUkwQyxHQUNsRHp1QixLQUFLb3BCLFFBQVFvRixRQUFRekMsRUFBSTBDLElBRzNCMEQsR0FBVTEzQixVQUFVaTBCLFFBQVUsU0FBa0JELEdBQzlDenVCLEtBQUtvcEIsUUFBUXNGLFFBQVFELElBR3ZCMEQsR0FBVTEzQixVQUFVSSxLQUFPLFNBQWU2aUIsRUFBVWtSLEVBQVlDLEdBQzVELElBQUl6SyxFQUFTcGtCLEtBR2YsSUFBSzR1QixJQUFlQyxHQUE4QixvQkFBWmx6QixRQUNwQyxPQUFPLElBQUlBLFNBQVEsU0FBVUMsRUFBU0MsR0FDcEN1b0IsRUFBT2dGLFFBQVF2dUIsS0FBSzZpQixFQUFVOWhCLEVBQVNDLE1BR3pDbUUsS0FBS29wQixRQUFRdnVCLEtBQUs2aUIsRUFBVWtSLEVBQVlDLElBSTVDc0QsR0FBVTEzQixVQUFVOEcsUUFBVSxTQUFrQm1jLEVBQVVrUixFQUFZQyxHQUNsRSxJQUFJekssRUFBU3BrQixLQUdmLElBQUs0dUIsSUFBZUMsR0FBOEIsb0JBQVpsekIsUUFDcEMsT0FBTyxJQUFJQSxTQUFRLFNBQVVDLEVBQVNDLEdBQ3BDdW9CLEVBQU9nRixRQUFRN25CLFFBQVFtYyxFQUFVOWhCLEVBQVNDLE1BRzVDbUUsS0FBS29wQixRQUFRN25CLFFBQVFtYyxFQUFVa1IsRUFBWUMsSUFJL0NzRCxHQUFVMTNCLFVBQVV3MkIsR0FBSyxTQUFhbHlCLEdBQ3BDaUIsS0FBS29wQixRQUFRNkgsR0FBR2x5QixJQUdsQm96QixHQUFVMTNCLFVBQVV1NEIsS0FBTyxXQUN6Qmh6QixLQUFLaXhCLElBQUksSUFHWGtCLEdBQVUxM0IsVUFBVXc0QixRQUFVLFdBQzVCanpCLEtBQUtpeEIsR0FBRyxJQUdWa0IsR0FBVTEzQixVQUFVeTRCLHFCQUF1QixTQUErQnJQLEdBQ3hFLElBQUlwSixFQUFRb0osRUFDUkEsRUFBR2xJLFFBQ0RrSSxFQUNBN2pCLEtBQUtwRSxRQUFRaW9CLEdBQUlwSixNQUNuQnphLEtBQUtpb0IsYUFDVCxPQUFLeE4sRUFHRSxHQUFHalksT0FBT2tXLE1BQ2YsR0FDQStCLEVBQU1rQixRQUFRN1YsS0FBSSxTQUFVbEksR0FDMUIsT0FBT3BELE9BQU84SCxLQUFLMUUsRUFBRWdlLFlBQVk5VixLQUFJLFNBQVVqSCxHQUM3QyxPQUFPakIsRUFBRWdlLFdBQVcvYyxVQU5qQixJQVlYc3pCLEdBQVUxM0IsVUFBVW1CLFFBQVUsU0FDNUJpb0IsRUFDQTlILEVBQ0FrRCxHQUdBLElBQUl2QixFQUFXbUYsRUFBa0JnQixFQURqQzlILEVBQVVBLEdBQVcvYixLQUFLb3BCLFFBQVFyTixRQUNZa0QsRUFBUWpmLE1BQ2xEeWEsRUFBUXphLEtBQUttaUIsTUFBTXpFLEVBQVUzQixHQUM3QmlDLEVBQVd2RCxFQUFNa0QsZ0JBQWtCbEQsRUFBTXVELFNBRzdDLE1BQU8sQ0FDTE4sU0FBVUEsRUFDVmpELE1BQU9BLEVBQ1A2SixLQXdCSixTQUFxQnRGLEVBQU1oQixFQUFVdmYsR0FDbkMsSUFBSXdPLEVBQWdCLFNBQVR4TyxFQUFrQixJQUFNdWYsRUFBV0EsRUFDOUMsT0FBT2dCLEVBQU9PLEVBQVVQLEVBQU8sSUFBTS9SLEdBQVFBLEVBOUJsQ2ttQixDQURBbnpCLEtBQUtvcEIsUUFBUXBLLEtBQ0loQixFQUFVaGUsS0FBS3ZCLE1BTXpDMjBCLGFBQWMxVixFQUNkcFUsU0FBVW1SLElBSWQwWCxHQUFVMTNCLFVBQVVpdUIsVUFBWSxTQUFvQmhDLEdBQ2xEMW1CLEtBQUtxeUIsUUFBUTNKLFVBQVVoQyxHQUNuQjFtQixLQUFLb3BCLFFBQVFyTixVQUFZcUMsR0FDM0JwZSxLQUFLb3BCLFFBQVF1RixhQUFhM3VCLEtBQUtvcEIsUUFBUStILHVCQUkzQzMyQixPQUFPNjRCLGlCQUFrQmxCLEdBQVUxM0IsVUFBVzYzQixJQWU5Q0gsR0FBVW1CLFFBaHlEVixTQUFTLEVBQVNDLEdBQ2hCLElBQUksRUFBUUMsV0FBYTdQLElBQVM0UCxFQUFsQyxDQUNBLEVBQVFDLFdBQVksRUFFcEI3UCxFQUFPNFAsRUFFUCxJQUFJRSxFQUFRLFNBQVUzSSxHQUFLLFlBQWF2dEIsSUFBTnV0QixHQUU5QjRJLEVBQW1CLFNBQVU1WCxFQUFJNlgsR0FDbkMsSUFBSXQ1QixFQUFJeWhCLEVBQUc4WCxTQUFTQyxhQUNoQkosRUFBTXA1QixJQUFNbzVCLEVBQU1wNUIsRUFBSUEsRUFBRUwsT0FBU3k1QixFQUFNcDVCLEVBQUlBLEVBQUV3aEIsd0JBQy9DeGhCLEVBQUV5aEIsRUFBSTZYLElBSVZKLEVBQUlPLE1BQU0sQ0FDUkMsYUFBYyxXQUNSTixFQUFNenpCLEtBQUs0ekIsU0FBU2hXLFNBQ3RCNWQsS0FBSythLFlBQWMvYSxLQUNuQkEsS0FBS2cwQixRQUFVaDBCLEtBQUs0ekIsU0FBU2hXLE9BQzdCNWQsS0FBS2cwQixRQUFRM1gsS0FBS3JjLE1BQ2xCdXpCLEVBQUlVLEtBQUtDLGVBQWVsMEIsS0FBTSxTQUFVQSxLQUFLZzBCLFFBQVE1SyxRQUFRck4sVUFFN0QvYixLQUFLK2EsWUFBZS9hLEtBQUtxYixTQUFXcmIsS0FBS3FiLFFBQVFOLGFBQWdCL2EsS0FFbkUwekIsRUFBaUIxekIsS0FBTUEsT0FFekJtMEIsVUFBVyxXQUNUVCxFQUFpQjF6QixTQUlyQnhGLE9BQU95RCxlQUFlczFCLEVBQUk5NEIsVUFBVyxVQUFXLENBQzlDMEQsSUFBSyxXQUFrQixPQUFPNkIsS0FBSythLFlBQVlpWixXQUdqRHg1QixPQUFPeUQsZUFBZXMxQixFQUFJOTRCLFVBQVcsU0FBVSxDQUM3QzBELElBQUssV0FBa0IsT0FBTzZCLEtBQUsrYSxZQUFZNlgsVUFHakRXLEVBQUl6ekIsVUFBVSxhQUFjaWEsR0FDNUJ3WixFQUFJenpCLFVBQVUsYUFBYzhqQixHQUU1QixJQUFJd1EsRUFBU2IsRUFBSWxzQixPQUFPZ3RCLHNCQUV4QkQsRUFBT0UsaUJBQW1CRixFQUFPRyxpQkFBbUJILEVBQU9JLGtCQUFvQkosRUFBT0ssVUFvdkR4RnRDLEdBQVVyWixRQUFVLFFBQ3BCcVosR0FBVXZGLG9CQUFzQkEsR0FDaEN1RixHQUFVbEcsc0JBQXdCQSxHQUU5QnpGLEdBQWFsbkIsT0FBT2kwQixLQUN0QmowQixPQUFPaTBCLElBQUltQixJQUFJdkMsSUFHRixVQ2orRlh3QyxHQUFtQixDQUNyQixRQUNBLFdBQ0Esa0JBQ0EsY0FDQSx1QkFDQSx3QkFDQSx3QkFDQSwyQkFDQSwyQkFDQSxnQkFDQSxnQkFDQSxRQU9GLFNBQVMsR0FBTXRILEVBQUtsdUIsR0FDSyxvQkFBWkMsVUFDVEEsUUFBUXcxQixLQUFLLGNBQWdCdkgsR0FFekJsdUIsR0FDRkMsUUFBUXcxQixLQUFLejFCLEVBQUlvVSxRQWV2QixJQUFJdlEsR0FBVUQsTUFBTUMsUUFFcEIsU0FBU2dvQixHQUFVdnBCLEdBQ2pCLE9BQWUsT0FBUkEsR0FBK0IsaUJBQVJBLEVBT2hDLFNBQVNvekIsR0FBVXp1QixHQUNqQixNQUFzQixpQkFBUkEsRUFHaEIsSUFBSSxHQUFXNUwsT0FBT0MsVUFBVXNKLFNBRWhDLFNBQVMrd0IsR0FBZXJ6QixHQUN0QixNQUZrQixvQkFFWCxHQUFTOUcsS0FBSzhHLEdBR3ZCLFNBQVNzekIsR0FBUTN1QixHQUNmLE9BQU9BLFFBR1QsU0FBUzR1QixHQUFZNXVCLEdBQ25CLE1BQXNCLG1CQUFSQSxFQUdoQixTQUFTNnVCLEtBRVAsSUFEQSxJQUFJaG1CLEVBQU8sR0FBSWtKLEVBQU1oVyxVQUFVNUgsT0FDdkI0ZCxLQUFRbEosRUFBTWtKLEdBQVFoVyxVQUFXZ1csR0FFekMsSUFBSStjLEVBQVMsS0FDVHZuQixFQUFTLEtBaUJiLE9BaEJvQixJQUFoQnNCLEVBQUsxVSxPQUNIeXdCLEdBQVMvYixFQUFLLEtBQU9qTSxHQUFRaU0sRUFBSyxJQUNwQ3RCLEVBQVNzQixFQUFLLEdBQ2MsaUJBQVpBLEVBQUssS0FDckJpbUIsRUFBU2ptQixFQUFLLElBRVMsSUFBaEJBLEVBQUsxVSxTQUNTLGlCQUFaMFUsRUFBSyxLQUNkaW1CLEVBQVNqbUIsRUFBSyxLQUdaK2IsR0FBUy9iLEVBQUssS0FBT2pNLEdBQVFpTSxFQUFLLE9BQ3BDdEIsRUFBU3NCLEVBQUssS0FJWCxDQUFFaW1CLE9BQVFBLEVBQVF2bkIsT0FBUUEsR0FHbkMsU0FBU3duQixHQUFZMXpCLEdBQ25CLE9BQU9nZ0IsS0FBS3BMLE1BQU1vTCxLQUFLQyxVQUFVamdCLElBWW5DLFNBQVMyekIsR0FBVXR5QixFQUFLdXlCLEdBQ3RCLFNBQVV2eUIsRUFBSXVDLFFBQVFnd0IsR0FHeEIsSUFBSSxHQUFpQjc2QixPQUFPQyxVQUFVQyxlQUN0QyxTQUFTNDZCLEdBQVE3ekIsRUFBSzVDLEdBQ3BCLE9BQU8sR0FBZWxFLEtBQUs4RyxFQUFLNUMsR0FHbEMsU0FBUzAyQixHQUFPcDRCLEdBSWQsSUFIQSxJQUFJcTRCLEVBQWNyekIsVUFFZHN6QixFQUFTajdCLE9BQU8yQyxHQUNYOUMsRUFBSSxFQUFHQSxFQUFJOEgsVUFBVTVILE9BQVFGLElBQUssQ0FDekMsSUFBSStILEVBQVNvekIsRUFBWW43QixHQUN6QixHQUFJK0gsUUFBeUMsQ0FDM0MsSUFBSXZELE9BQU0sRUFDVixJQUFLQSxLQUFPdUQsRUFDTmt6QixHQUFPbHpCLEVBQVF2RCxLQUNibXNCLEdBQVM1b0IsRUFBT3ZELElBQ2xCNDJCLEVBQU81MkIsR0FBTzAyQixHQUFNRSxFQUFPNTJCLEdBQU11RCxFQUFPdkQsSUFFeEM0MkIsRUFBTzUyQixHQUFPdUQsRUFBT3ZELEtBTS9CLE9BQU80MkIsRUFHVCxTQUFTQyxHQUFZdGtCLEVBQUdDLEdBQ3RCLEdBQUlELElBQU1DLEVBQUssT0FBTyxFQUN0QixJQUFJc2tCLEVBQVkzSyxHQUFTNVosR0FDckJ3a0IsRUFBWTVLLEdBQVMzWixHQUN6QixJQUFJc2tCLElBQWFDLEVBc0JWLE9BQUtELElBQWNDLEdBQ2pCM2IsT0FBTzdJLEtBQU82SSxPQUFPNUksR0F0QjVCLElBQ0UsSUFBSXdrQixFQUFXN3lCLEdBQVFvTyxHQUNuQjBrQixFQUFXOXlCLEdBQVFxTyxHQUN2QixHQUFJd2tCLEdBQVlDLEVBQ2QsT0FBTzFrQixFQUFFN1csU0FBVzhXLEVBQUU5VyxRQUFVNlcsRUFBRXVOLE9BQU0sU0FBVXBqQixFQUFHbEIsR0FDbkQsT0FBT3E3QixHQUFXbjZCLEVBQUc4VixFQUFFaFgsT0FFcEIsR0FBS3c3QixHQUFhQyxFQVF2QixPQUFPLEVBUFAsSUFBSUMsRUFBUXY3QixPQUFPOEgsS0FBSzhPLEdBQ3BCNGtCLEVBQVF4N0IsT0FBTzhILEtBQUsrTyxHQUN4QixPQUFPMGtCLEVBQU14N0IsU0FBV3k3QixFQUFNejdCLFFBQVV3N0IsRUFBTXBYLE9BQU0sU0FBVTlmLEdBQzVELE9BQU82MkIsR0FBV3RrQixFQUFFdlMsR0FBTXdTLEVBQUV4UyxPQU1oQyxNQUFPdEQsR0FFUCxPQUFPLEdBMkRiLElBQUl1NEIsR0FBUSxDQUNWQyxhQUFjLFdBQ1osSUFBSXAwQixFQUFVSyxLQUFLNHpCLFNBR25CLEdBRkFqMEIsRUFBUXMyQixLQUFPdDJCLEVBQVFzMkIsT0FBU3QyQixFQUFRdTJCLE9BQVMsR0FBSyxNQUVsRHYyQixFQUFRczJCLEtBQ1YsR0FBSXQyQixFQUFRczJCLGdCQUFnQkUsR0FBUyxDQUVuQyxHQUFJeDJCLEVBQVF1MkIsT0FDVixJQUNFLElBQUlFLEVBQWlCLEdBQ3JCejJCLEVBQVF1MkIsT0FBT3R6QixTQUFRLFNBQVV5ekIsR0FDL0JELEVBQWlCYixHQUFNYSxFQUFnQjNVLEtBQUtwTCxNQUFNZ2dCLE9BRXBENzdCLE9BQU84SCxLQUFLOHpCLEdBQWdCeHpCLFNBQVEsU0FBVXN5QixHQUM1Q3YxQixFQUFRczJCLEtBQUtLLG1CQUFtQnBCLEVBQVFrQixFQUFlbEIsT0FFekQsTUFBTzM1QixHQUNILEVBS1J5RSxLQUFLdTJCLE1BQVE1MkIsRUFBUXMyQixLQUNyQmoyQixLQUFLdzJCLGFBQWV4MkIsS0FBS3UyQixNQUFNRSxxQkFDMUIsR0FBSTNCLEdBQWNuMUIsRUFBUXMyQixNQUFPLENBQ3RDLElBQUlTLEVBQVcxMkIsS0FBSzIyQixPQUFTMzJCLEtBQUsyMkIsTUFBTUMsT0FBUzUyQixLQUFLMjJCLE1BQU1DLGlCQUFpQlQsR0FDekVuMkIsS0FBSzIyQixNQUFNQyxNQUNYLEtBY0osR0FaSUYsSUFDRi8yQixFQUFRczJCLEtBQUtZLEtBQU83MkIsS0FBSzIyQixNQUN6QmgzQixFQUFRczJCLEtBQUthLFVBQVlKLEVBQVNJLFVBQ2xDbjNCLEVBQVFzMkIsS0FBS2MsZUFBaUJMLEVBQVNLLGVBQ3ZDcDNCLEVBQVFzMkIsS0FBS2UsdUJBQXlCTixFQUFTTSx1QkFDL0NyM0IsRUFBUXMyQixLQUFLZ0Isc0JBQXdCUCxFQUFTTyxzQkFDOUN0M0IsRUFBUXMyQixLQUFLaUIsbUJBQXFCUixFQUFTUSxtQkFDM0N2M0IsRUFBUXMyQixLQUFLa0IsbUJBQXFCVCxFQUFTUyxtQkFDM0N4M0IsRUFBUXMyQixLQUFLbUIseUJBQTJCVixFQUFTVSwwQkFJL0N6M0IsRUFBUXUyQixPQUNWLElBQ0UsSUFBSW1CLEVBQW1CLEdBQ3ZCMTNCLEVBQVF1MkIsT0FBT3R6QixTQUFRLFNBQVV5ekIsR0FDL0JnQixFQUFtQjlCLEdBQU04QixFQUFrQjVWLEtBQUtwTCxNQUFNZ2dCLE9BRXhEMTJCLEVBQVFzMkIsS0FBS3FCLFNBQVdELEVBQ3hCLE1BQU85N0IsR0FDSCxFQU1SLElBQ0lnOEIsRUFETTUzQixFQUFRczJCLEtBQ09zQixlQUNyQkEsR0FBa0J6QyxHQUFjeUMsS0FDbEM1M0IsRUFBUXMyQixLQUFLcUIsU0FBVy9CLEdBQU01MUIsRUFBUXMyQixLQUFLcUIsU0FBVUMsSUFHdkR2M0IsS0FBS3UyQixNQUFRLElBQUlKLEdBQVF4MkIsRUFBUXMyQixNQUNqQ2oyQixLQUFLdzJCLGFBQWV4MkIsS0FBS3UyQixNQUFNRSxzQkFFTGw1QixJQUF0Qm9DLEVBQVFzMkIsS0FBS3VCLE1BQXdCNzNCLEVBQVFzMkIsS0FBS3VCLFFBQ3BEeDNCLEtBQUt5M0IsZUFBaUJ6M0IsS0FBSzQyQixNQUFNYyxlQUcvQmhCLEdBQ0ZBLEVBQVNpQiwyQkFBMkIzM0IsS0FBS3UyQixZQUd2QyxPQUlHdjJCLEtBQUsyMkIsT0FBUzMyQixLQUFLMjJCLE1BQU1DLE9BQVM1MkIsS0FBSzIyQixNQUFNQyxpQkFBaUJULEdBRXZFbjJCLEtBQUt1MkIsTUFBUXYyQixLQUFLMjJCLE1BQU1DLE1BQ2ZqM0IsRUFBUTJhLFFBQVUzYSxFQUFRMmEsT0FBT3NjLE9BQVNqM0IsRUFBUTJhLE9BQU9zYyxpQkFBaUJULEtBRW5GbjJCLEtBQUt1MkIsTUFBUTUyQixFQUFRMmEsT0FBT3NjLFFBSWhDZ0IsWUFBYSxXQUNYLElBQUlqNEIsRUFBVUssS0FBSzR6QixTQUNuQmowQixFQUFRczJCLEtBQU90MkIsRUFBUXMyQixPQUFTdDJCLEVBQVF1MkIsT0FBUyxHQUFLLE1BRWxEdjJCLEVBQVFzMkIsTUFDTnQyQixFQUFRczJCLGdCQUFnQkUsSUFJakJyQixHQUFjbjFCLEVBQVFzMkIsU0FGL0JqMkIsS0FBS3UyQixNQUFNc0Isc0JBQXNCNzNCLE1BQ2pDQSxLQUFLODNCLGNBQWUsSUFTYjkzQixLQUFLMjJCLE9BQVMzMkIsS0FBSzIyQixNQUFNQyxPQUFTNTJCLEtBQUsyMkIsTUFBTUMsaUJBQWlCVCxJQUc5RHgyQixFQUFRMmEsUUFBVTNhLEVBQVEyYSxPQUFPc2MsT0FBU2ozQixFQUFRMmEsT0FBT3NjLGlCQUFpQlQsTUFGbkZuMkIsS0FBS3UyQixNQUFNc0Isc0JBQXNCNzNCLE1BQ2pDQSxLQUFLODNCLGNBQWUsSUFPeEJDLGNBQWUsV0FDYixHQUFLLzNCLEtBQUt1MkIsTUFBVixDQUVBLElBQUl5QixFQUFPaDRCLEtBQ1hBLEtBQUttcUIsV0FBVSxXQUNUNk4sRUFBS0YsZUFDUEUsRUFBS3pCLE1BQU0wQix3QkFBd0JELFVBQzVCQSxFQUFLRixjQUdWRSxFQUFLeEIsZUFDUHdCLEVBQUt4QixlQUNMd0IsRUFBS3pCLE1BQU0yQixtQkFDSkYsRUFBS3hCLGNBR1Z3QixFQUFLUCxpQkFDUE8sRUFBS1Asd0JBQ0VPLEVBQUtQLHNCQVFoQlUsR0FBeUIsQ0FDM0I5NkIsS0FBTSxPQUNOMmMsWUFBWSxFQUNablksTUFBTyxDQUNMbU4sSUFBSyxDQUNIL1IsS0FBTSxDQUFDZ2QsT0FBUStKLFFBQVN4cEIsUUFDeEIwZixRQUFTLFFBRVhqTixLQUFNLENBQ0poUSxLQUFNZ2QsT0FDTjZKLFVBQVUsR0FFWm9SLE9BQVEsQ0FDTmo0QixLQUFNZ2QsUUFFUm1lLE9BQVEsQ0FDTm43QixLQUFNLENBQUM4RixNQUFPdkksVUFHbEIyZixPQUFRLFNBQWlCSyxFQUFHSCxHQUMxQixJQUFJcmdCLEVBQU9xZ0IsRUFBSXJnQixLQUNYc2dCLEVBQVNELEVBQUlDLE9BQ2J6WSxFQUFRd1ksRUFBSXhZLE1BQ1p3MkIsRUFBUWhlLEVBQUlnZSxNQUVaekIsRUFBUXRjLEVBQU9zYyxNQUNuQixHQUFLQSxFQUFMLENBT0EsSUFBSTNwQixFQUFPcEwsRUFBTW9MLEtBQ2Jpb0IsRUFBU3J6QixFQUFNcXpCLE9BQ2ZrRCxFQUFTdjJCLEVBQU11MkIsT0FDZnpxQixFQUFTMHFCLElBQ1R2cEIsRUFBVzhuQixFQUFNdjhCLEVBQ25CNFMsRUFDQWlvQixFQVdOLFNBQThCdm5CLEdBQzVCLElBQUkycUIsRUFDSixJQUFLQSxLQUFRM3FCLEVBQ1gsR0FBYSxZQUFUMnFCLEVBQXNCLE9BQU8sRUFFbkMsT0FBT3RVLFFBQVFzVSxHQWZYQyxDQUFvQjVxQixJQUFXeXFCLEVBa0JyQyxTQUEwQnRwQixFQUFVc3BCLEdBQ2xDLElBQUl6cUIsRUFBU3lxQixFQW9CZixTQUFpQ0EsR0FDM0IsRUFJSixPQUFPcjFCLE1BQU1DLFFBQVFvMUIsR0FDakJBLEVBQU8vckIsT0FBT21zQixHQUFrQixJQUNoQ2grQixPQUFPaStCLE9BQU8sR0FBSUwsR0EzQkFNLENBQXVCTixHQUFVLEdBRXZELElBQUt0cEIsRUFBWSxPQUFPbkIsRUFPeEIsSUFBSWdyQixHQUpKN3BCLEVBQVdBLEVBQVNyTSxRQUFPLFNBQVVpSixHQUNuQyxPQUFPQSxFQUFNc0QsS0FBNkIsS0FBdEJ0RCxFQUFNdUwsS0FBS3RFLFdBR1BnTSxNQUFNaWEsSUFDNUIsRUFJSixPQUFPOXBCLEVBQVN6QyxPQUNkc3NCLEVBQWFFLEdBQW1CTCxHQUNoQzdxQixHQWxDTW1yQixDQUFnQm5yQixFQUFPdU0sUUFBU2tlLEdBQ2hDenFCLEdBR0ZxQixFQUFTbk4sRUFBTW1OLE1BQXFCLElBQWRuTixFQUFNbU4sTUFBK0IsSUFBZG5OLEVBQU1tTixJQUFnQm5OLEVBQU1tTixJQUFNLE9BQ25GLE9BQU9BLEVBQU13TCxFQUFFeEwsRUFBS2hWLEVBQU04VSxHQUFZQSxLQTJDMUMsU0FBUytwQixHQUFrQmxyQixFQUFRakMsR0FJakMsT0FISUEsRUFBTTFSLE1BQVEwUixFQUFNMVIsS0FBSzBHLE9BQVNnTCxFQUFNMVIsS0FBSzBHLE1BQU1xNEIsUUFDckRwckIsRUFBT2pDLEVBQU0xUixLQUFLMEcsTUFBTXE0QixPQUFTcnRCLEdBRTVCaUMsRUFHVCxTQUFTNnFCLEdBQWtCN3FCLEVBQVFqQyxFQUFPaEIsR0FFeEMsT0FEQWlELEVBQU9qRCxHQUFTZ0IsRUFDVGlDLEVBR1QsU0FBU2lyQixHQUF3QnpjLEdBQy9CLE9BQU82SCxRQUFRN0gsRUFBTW5pQixNQUFRbWlCLEVBQU1uaUIsS0FBSzBHLE9BQVN5YixFQUFNbmlCLEtBQUswRyxNQUFNcTRCLE9BS3BFLElBZ01JLEdBaE1BQyxHQUFrQixDQUNwQjM3QixLQUFNLFNBQ04yYyxZQUFZLEVBQ1puWSxNQUFPLENBQ0xtTixJQUFLLENBQ0gvUixLQUFNLENBQUNnZCxPQUFRK0osUUFBU3hwQixRQUN4QjBmLFFBQVMsUUFFWDNiLE1BQU8sQ0FDTHRCLEtBQU1nOEIsT0FDTm5WLFVBQVUsR0FFWm9WLE9BQVEsQ0FDTmo4QixLQUFNLENBQUNnZCxPQUFRemYsU0FFakIwNkIsT0FBUSxDQUNOajRCLEtBQU1nZCxTQUdWRSxPQUFRLFNBQWlCSyxFQUFHSCxHQUMxQixJQUFJeFksRUFBUXdZLEVBQUl4WSxNQUNaeVksRUFBU0QsRUFBSUMsT0FDYnRnQixFQUFPcWdCLEVBQUlyZ0IsS0FFWGk4QixFQUFPM2IsRUFBT3NjLE1BRWxCLElBQUtYLEVBSUgsT0FBTyxLQUdULElBQUlwM0IsRUFBTSxLQUNOYyxFQUFVLEtBRVZrMUIsR0FBU2h6QixFQUFNcTNCLFFBQ2pCcjZCLEVBQU1nRCxFQUFNcTNCLE9BQ0hsTyxHQUFTbnBCLEVBQU1xM0IsVUFDcEJyM0IsRUFBTXEzQixPQUFPcjZCLE1BQ2ZBLEVBQU1nRCxFQUFNcTNCLE9BQU9yNkIsS0FJckJjLEVBQVVuRixPQUFPOEgsS0FBS1QsRUFBTXEzQixRQUFRN3NCLFFBQU8sU0FBVUMsRUFBS2dzQixHQUN4RCxJQUFJNzJCLEVBRUosT0FBSTJ6QixHQUFTVCxHQUFrQjJELEdBQ3RCOTlCLE9BQU9pK0IsT0FBTyxHQUFJbnNCLElBQU83SyxFQUFNLElBQVE2MkIsR0FBUXoyQixFQUFNcTNCLE9BQU9aLEdBQU83MkIsSUFFckU2SyxJQUNOLE9BR0wsSUFBSTRvQixFQUFTcnpCLEVBQU1xekIsUUFBVWUsRUFBS2YsT0FDOUJqaUIsRUFBUWdqQixFQUFLa0QsS0FBS3QzQixFQUFNdEQsTUFBTzIyQixFQUFRcjJCLEVBQUtjLEdBRTVDc1UsRUFBU2hCLEVBQU1uTixLQUFJLFNBQVVzekIsRUFBTTF1QixHQUNyQyxJQUFJakosRUFFQTQzQixFQUFPci9CLEVBQUtzL0IsYUFBZXQvQixFQUFLcy9CLFlBQVlGLEVBQUtuOEIsTUFDckQsT0FBT284QixFQUFPQSxJQUFPNTNCLEVBQU0sSUFBUTIzQixFQUFLbjhCLE1BQVFtOEIsRUFBSzc2QixNQUFPa0QsRUFBSWlKLE1BQVFBLEVBQU9qSixFQUFJd1IsTUFBUUEsRUFBT3hSLElBQVMyM0IsRUFBSzc2QixTQUc5R3lRLEVBQVNuTixFQUFNbU4sTUFBcUIsSUFBZG5OLEVBQU1tTixNQUErQixJQUFkbk4sRUFBTW1OLElBQWdCbk4sRUFBTW1OLElBQU0sT0FDbkYsT0FBT0EsRUFDSHdMLEVBQUV4TCxFQUFLLENBQ1B0TyxNQUFPMUcsRUFBSzBHLE1BQ1osTUFBUzFHLEVBQVksTUFDckJxRyxZQUFhckcsRUFBS3FHLGFBQ2pCNFQsR0FDREEsSUFNUixTQUFTblYsR0FBTW9zQixFQUFJelIsRUFBUzBDLEdBQ3JCLEdBQU8rTyxFQUFJL08sSUFFaEIzZCxHQUFFMHNCLEVBQUl6UixFQUFTMEMsR0FHakIsU0FBU29kLEdBQVFyTyxFQUFJelIsRUFBUzBDLEVBQU9xZCxHQUNuQyxHQUFLLEdBQU90TyxFQUFJL08sR0FBaEIsQ0FFQSxJQUFJOFosRUFBTzlaLEVBQU1zZCxRQUFRN0MsT0EwQzNCLFNBQXNCMUwsRUFBSS9PLEdBQ3hCLElBQUlMLEVBQUtLLEVBQU1zZCxRQUNmLE9BQU92TyxFQUFHd08sVUFBWTVkLEVBQUc4YSxNQUFNMUIsUUEzQzNCeUUsQ0FBWXpPLEVBQUkvTyxJQUNqQnVaLEdBQVdqYyxFQUFRbGIsTUFBT2tiLEVBQVFtZ0IsV0FDbENsRSxHQUFXeEssRUFBRzJPLGVBQWdCNUQsRUFBSzZELGlCQUFpQjdELEVBQUtmLFVBRTVEMTJCLEdBQUUwc0IsRUFBSXpSLEVBQVMwQyxJQUdqQixTQUFTNGQsR0FBUTdPLEVBQUl6UixFQUFTMEMsRUFBT3FkLEdBRW5DLEdBRFNyZCxFQUFNc2QsUUFDZixDQUtBLElBQUl4RCxFQUFPOVosRUFBTXNkLFFBQVE3QyxPQUFTLEdBQzdCbmQsRUFBUXVnQixVQUFVQyxVQUFhaEUsRUFBS21CLDJCQUN2Q2xNLEVBQUdnUCxZQUFjLElBRW5CaFAsRUFBR2lQLFNBQU01OEIsU0FDRjJ0QixFQUFRLElBQ2ZBLEVBQUd3TyxhQUFVbjhCLFNBQ04ydEIsRUFBWSxRQUNuQkEsRUFBRzJPLG9CQUFpQnQ4QixTQUNiMnRCLEVBQW1CLG9CQWJ4QixHQUFLLGlEQWdCVCxTQUFTLEdBQVFBLEVBQUkvTyxHQUNuQixJQUFJTCxFQUFLSyxFQUFNc2QsUUFDZixPQUFLM2QsSUFLQUEsRUFBRzhhLFFBQ04sR0FBSyxxREFDRSxJQU5QLEdBQUssa0RBQ0UsR0FnQlgsU0FBU3A0QixHQUFHMHNCLEVBQUl6UixFQUFTMEMsR0FDdkIsSUFBSWllLEVBQU9DLEVBSVBoZ0IsRUF5Qk4sU0FBcUI5YixHQUNuQixJQUFJME8sRUFDQWlvQixFQUNBam1CLEVBQ0FxckIsRUFFQXpGLEdBQVN0MkIsR0FDWDBPLEVBQU8xTyxFQUNFdTJCLEdBQWN2MkIsS0FDdkIwTyxFQUFPMU8sRUFBTTBPLEtBQ2Jpb0IsRUFBUzMyQixFQUFNMjJCLE9BQ2ZqbUIsRUFBTzFRLEVBQU0wUSxLQUNicXJCLEVBQVMvN0IsRUFBTSs3QixRQUdqQixNQUFPLENBQUVydEIsS0FBTUEsRUFBTWlvQixPQUFRQSxFQUFRam1CLEtBQU1BLEVBQU1xckIsT0FBUUEsR0F4Qy9DQyxDQUZFOWdCLEVBQVFsYixPQUdoQjBPLEVBQU9vTixFQUFJcE4sS0FDWGlvQixFQUFTN2EsRUFBSTZhLE9BQ2JqbUIsRUFBT29MLEVBQUlwTCxLQUNYcXJCLEVBQVNqZ0IsRUFBSWlnQixPQUNqQixHQUFLcnRCLEdBQVNpb0IsR0FBV2ptQixFQUt6QixHQUFLaEMsRUFBTCxDQUtBLElBQUk2TyxFQUFLSyxFQUFNc2QsUUFFYnZPLEVBQUdpUCxJQUFNalAsRUFBR2dQLFlBREEsTUFBVkksR0FDeUJGLEVBQVF0ZSxFQUFHOGEsT0FBTzRELEdBQUc5aEIsTUFBTTBoQixFQUFPLENBQUVudEIsRUFBTXF0QixHQUFTOTNCLE9BQVFpNEIsR0FBV3ZGLEVBQVFqbUIsTUFFOUVvckIsRUFBUXZlLEVBQUc4YSxPQUFPcDRCLEVBQUVrYSxNQUFNMmhCLEVBQU8sQ0FBRXB0QixHQUFPekssT0FBUWk0QixHQUFXdkYsRUFBUWptQixLQUVsR2ljLEVBQUd3TyxRQUFVNWQsRUFBRzhhLE1BQU0xQixPQUN0QmhLLEVBQUcyTyxlQUFpQi9kLEVBQUc4YSxNQUFNa0QsaUJBQWlCaGUsRUFBRzhhLE1BQU0xQixhQVhyRCxHQUFLLDRDQUxMLEdBQUssNEJBcUNULFNBQVN1RixHQUFZdkYsRUFBUWptQixHQUMzQixJQUFJdEIsRUFBUyxHQU9iLE9BTEF1bkIsR0FBVXZuQixFQUFPOVMsS0FBS3E2QixHQUNsQmptQixJQUFTbE0sTUFBTUMsUUFBUWlNLElBQVM2bEIsR0FBYzdsQixLQUNoRHRCLEVBQU85UyxLQUFLb1UsR0FHUHRCLEVBS1QsU0FBUyxHQUFTZ1csR0FNaEIsR0FBUTZQLFdBQVksRUFJcEIsSUFqZmVELEdBK2VmLEdBQU01UCxHQUVhN0ssU0FBV21nQixPQUFPLEdBQUluZ0IsUUFBUTlGLE1BQU0sS0FBSyxLQWpmN0N1Z0IsRUF3ZlIsSUF2ZkU5NEIsVUFBVUMsZUFBZSxVQUVoQ0YsT0FBT3lELGVBQWVzMUIsRUFBSTk0QixVQUFXLFFBQVMsQ0FDNUMwRCxJQUFLLFdBQWtCLE9BQU82QixLQUFLdTJCLFNBSXZDaEQsRUFBSTk0QixVQUFVaWdDLEdBQUssU0FBVTc3QixHQUUzQixJQURBLElBQUlvVixFQUFTLEdBQUlrRSxFQUFNaFcsVUFBVTVILE9BQVMsRUFDbEM0ZCxLQUFRLEdBQUlsRSxFQUFRa0UsR0FBUWhXLFVBQVdnVyxFQUFNLEdBRXJELElBQUk4ZCxFQUFPajJCLEtBQUs0MkIsTUFDaEIsT0FBT1gsRUFBSzBFLEdBQUdqaUIsTUFBTXVkLEVBQU0sQ0FBRXAzQixFQUFLbzNCLEVBQUtmLE9BQVFlLEVBQUsyRSxlQUFnQjU2QixNQUFPd0MsT0FBUXlSLEtBR3JGc2YsRUFBSTk0QixVQUFVb2dDLElBQU0sU0FBVWg4QixFQUFLeTdCLEdBRWpDLElBREEsSUFBSXJtQixFQUFTLEdBQUlrRSxFQUFNaFcsVUFBVTVILE9BQVMsRUFDbEM0ZCxLQUFRLEdBQUlsRSxFQUFRa0UsR0FBUWhXLFVBQVdnVyxFQUFNLEdBRXJELElBQUk4ZCxFQUFPajJCLEtBQUs0MkIsTUFDaEIsT0FBT1gsRUFBSzZFLElBQUlwaUIsTUFBTXVkLEVBQU0sQ0FBRXAzQixFQUFLbzNCLEVBQUtmLE9BQVFlLEVBQUsyRSxlQUFnQjU2QixLQUFNczZCLEdBQVM5M0IsT0FBUXlSLEtBRzlGc2YsRUFBSTk0QixVQUFVc2dDLElBQU0sU0FBVWw4QixFQUFLcTJCLEdBQ2pDLElBQUllLEVBQU9qMkIsS0FBSzQyQixNQUNoQixPQUFPWCxFQUFLK0UsSUFBSW44QixFQUFLbzNCLEVBQUtmLE9BQVFlLEVBQUsyRSxlQUFnQjFGLElBR3pEM0IsRUFBSTk0QixVQUFVd2dDLEdBQUssU0FBVTE4QixHQUkzQixJQUhBLElBQUk4YixFQUVBcEwsRUFBTyxHQUFJa0osRUFBTWhXLFVBQVU1SCxPQUFTLEVBQ2hDNGQsS0FBUSxHQUFJbEosRUFBTWtKLEdBQVFoVyxVQUFXZ1csRUFBTSxHQUNuRCxPQUFRa0MsRUFBTXJhLEtBQUs0MkIsT0FBTzk0QixFQUFFNGEsTUFBTTJCLEVBQUssQ0FBRTliLEdBQVFpRSxPQUFReU0sS0FHM0Rza0IsRUFBSTk0QixVQUFVeWdDLEdBQUssU0FBVTM4QixHQUkzQixJQUhBLElBQUk4YixFQUVBcEwsRUFBTyxHQUFJa0osRUFBTWhXLFVBQVU1SCxPQUFTLEVBQ2hDNGQsS0FBUSxHQUFJbEosRUFBTWtKLEdBQVFoVyxVQUFXZ1csRUFBTSxHQUNuRCxPQUFRa0MsRUFBTXJhLEtBQUs0MkIsT0FBTzczQixFQUFFMlosTUFBTTJCLEVBQUssQ0FBRTliLEdBQVFpRSxPQUFReU0sS0ErYzNELEdBQUk2a0IsTUFBTUEsSUFDVixHQUFJcUgsVUFBVSxJQUFLLENBQUVyOEIsS0FBTUEsR0FBTXk2QixPQUFRQSxHQUFRUSxPQUFRQSxLQUN6RCxHQUFJajZCLFVBQVVxNEIsR0FBdUI5NkIsS0FBTTg2QixJQUMzQyxHQUFJcjRCLFVBQVVrNUIsR0FBZ0IzN0IsS0FBTTI3QixJQUd2QixHQUFJM3hCLE9BQU9ndEIsc0JBQ2pCNEIsS0FBTyxTQUFVbUYsRUFBV0MsR0FDakMsWUFBb0I5OUIsSUFBYjg5QixFQUNIRCxFQUNBQyxHQU1SLElBQUlDLEdBQWdCLFdBQ2xCdDdCLEtBQUt1N0IsUUFBVS9nQyxPQUFPb0UsT0FBTyxPQUcvQjA4QixHQUFjN2dDLFVBQVUrZ0MsWUFBYyxTQUFzQnArQixFQUFTNlcsR0FDbkUsSUFBS0EsRUFDSCxNQUFPLENBQUM3VyxHQUVWLElBQUk4aUIsRUFBU2xnQixLQUFLdTdCLFFBQVFuK0IsR0FLMUIsT0FKSzhpQixJQUNIQSxFQVdKLFNBQWdCZ1osR0FDZCxJQUFJaFosRUFBUyxHQUNUa0ssRUFBVyxFQUVYblQsRUFBTyxHQUNYLEtBQU9tVCxFQUFXOE8sRUFBTzMrQixRQUFRLENBQy9CLElBQUlraEMsRUFBT3ZDLEVBQU85TyxLQUNsQixHQUFhLE1BQVRxUixFQUFjLENBQ1p4a0IsR0FDRmlKLEVBQU9ybEIsS0FBSyxDQUFFb0MsS0FBTSxPQUFRc0IsTUFBTzBZLElBR3JDQSxFQUFPLEdBQ1AsSUFBSXlrQixFQUFNLEdBRVYsSUFEQUQsRUFBT3ZDLEVBQU85TyxVQUNFN3NCLElBQVRrK0IsR0FBK0IsTUFBVEEsR0FDM0JDLEdBQU9ELEVBQ1BBLEVBQU92QyxFQUFPOU8sS0FFaEIsSUFBSXVSLEVBQW9CLE1BQVRGLEVBRVh4K0IsRUFBTzIrQixHQUFvQng2QixLQUFLczZCLEdBQ2hDLE9BQ0FDLEdBQVlFLEdBQXFCejZCLEtBQUtzNkIsR0FDcEMsUUFDQSxVQUNOeGIsRUFBT3JsQixLQUFLLENBQUUwRCxNQUFPbTlCLEVBQUt6K0IsS0FBTUEsUUFDZCxNQUFUdytCLEVBRWtCLE1BQXZCdkMsRUFBTyxLQUNUamlCLEdBQVF3a0IsR0FHVnhrQixHQUFRd2tCLEVBTVosT0FGQXhrQixHQUFRaUosRUFBT3JsQixLQUFLLENBQUVvQyxLQUFNLE9BQVFzQixNQUFPMFksSUFFcENpSixFQWxESSxDQUFNOWlCLEdBQ2Y0QyxLQUFLdTdCLFFBQVFuK0IsR0FBVzhpQixHQW9ENUIsU0FBa0JBLEVBQVFqTSxHQUN4QixJQUFJNm5CLEVBQVcsR0FDWHB4QixFQUFRLEVBRVJqTSxFQUFPc0UsTUFBTUMsUUFBUWlSLEdBQ3JCLE9BQ0ErVyxHQUFTL1csR0FDUCxRQUNBLFVBQ04sR0FBYSxZQUFUeFYsRUFBc0IsT0FBT3E5QixFQUVqQyxLQUFPcHhCLEVBQVF3VixFQUFPM2xCLFFBQVEsQ0FDNUIsSUFBSWluQixFQUFRdEIsRUFBT3hWLEdBQ25CLE9BQVE4VyxFQUFNdmtCLE1BQ1osSUFBSyxPQUNINitCLEVBQVNqaEMsS0FBSzJtQixFQUFNampCLE9BQ3BCLE1BQ0YsSUFBSyxPQUNIdTlCLEVBQVNqaEMsS0FBS29aLEVBQU84bkIsU0FBU3ZhLEVBQU1qakIsTUFBTyxNQUMzQyxNQUNGLElBQUssUUFDVSxVQUFURSxHQUNGcTlCLEVBQVNqaEMsS0FBSyxFQUFTMm1CLEVBQU1qakIsUUFNL0IsTUFDRixJQUFLLFVBQ0MsRUFLUm1NLElBR0YsT0FBT294QixFQXhGQSxDQUFRNWIsRUFBUWpNLElBS3pCLElBQUkybkIsR0FBc0IsV0FDdEJDLEdBQXVCLFdBOEYzQixJQWdCSUcsR0FBbUIsR0FFdkJBLEdBWmtCLEdBWWMsQ0FDOUIsR0FBTSxDQWJVLEdBY2hCLE1BQVMsQ0FYSSxFQVRGLEdBcUJYLElBQUssQ0FYVyxHQVloQixJQUFPLENBVFEsSUFZakJBLEdBbEJjLEdBa0JjLENBQzFCLEdBQU0sQ0FuQk0sR0FvQlosSUFBSyxDQW5CWSxHQW9CakIsSUFBSyxDQWxCVyxHQW1CaEIsSUFBTyxDQWhCUSxJQW1CakJBLEdBeEJtQixHQXdCYyxDQUMvQixHQUFNLENBekJXLEdBMEJqQixNQUFTLENBekJJLEVBVEYsR0FtQ1gsRUFBSyxDQTFCUSxFQVRGLEdBb0NYLE9BQVUsQ0EzQkcsRUFURixJQXVDYkEsR0E5QmUsR0E4QmMsQ0FDM0IsTUFBUyxDQS9CSSxFQVRGLEdBeUNYLEVBQUssQ0FoQ1EsRUFURixHQTBDWCxPQUFVLENBakNHLEVBVEYsR0EyQ1gsR0FBTSxDQXBDTSxFQU5ILEdBMkNULElBQUssQ0FwQ1ksRUFQUixHQTRDVCxJQUFLLENBbkNXLEVBVFAsR0E2Q1QsSUFBTyxDQWpDUSxFQVpOLElBZ0RYQSxHQXZDa0IsR0F1Q2MsQ0FDOUIsSUFBSyxDQXZDZSxFQVhULEdBbURYLElBQUssQ0F2Q2UsRUFaVCxHQW9EWCxJQUFLLENBMUNXLEVBUk8sR0FtRHZCLElBQUssQ0E5Q08sRUFKTSxHQW1EbEIsSUF4Q1UsRUF5Q1YsS0FBUSxDQTdDUSxFQVZMLElBMERiQSxHQS9Dc0IsR0ErQ2MsQ0FDbEMsSUFBSyxDQWpEVyxFQVZMLEdBNERYLElBOUNVLEVBK0NWLEtBQVEsQ0FsRFksRUFYVCxJQWdFYkEsR0FwRHNCLEdBb0RjLENBQ2xDLElBQUssQ0F2RFcsRUFWTCxHQWtFWCxJQXBEVSxFQXFEVixLQUFRLENBdkRZLEVBWlQsSUEwRWIsSUFBSUMsR0FBaUIsa0RBcUJyQixTQUFTQyxHQUFpQkMsR0FDeEIsR0FBSUEsUUFBbUMsTUFBTyxNQUk5QyxPQUZXQSxFQUFHemYsV0FBVyxJQUd2QixLQUFLLEdBQ0wsS0FBSyxHQUNMLEtBQUssR0FDTCxLQUFLLEdBQ0wsS0FBSyxHQUNILE9BQU95ZixFQUVULEtBQUssR0FDTCxLQUFLLEdBQ0wsS0FBSyxHQUNILE1BQU8sUUFFVCxLQUFLLEVBQ0wsS0FBSyxHQUNMLEtBQUssR0FDTCxLQUFLLElBQ0wsS0FBSyxNQUNMLEtBQUssS0FDTCxLQUFLLEtBQ0gsTUFBTyxLQUdYLE1BQU8sUUFTVCxTQUFTQyxHQUFlbnZCLEdBQ3RCLElBbERvQmQsRUFDaEJpRixFQVRjaXJCLEVBMERkQyxFQUFVcnZCLEVBQUswRixPQUVuQixPQUF1QixNQUFuQjFGLEVBQUtrUyxPQUFPLEtBQWM5TCxNQUFNcEcsTUE1RGxCb3ZCLEVBOEREQyxFQTdEVkwsR0FBZTc2QixLQUFLaTdCLElBUXZCanJCLEdBRGdCakYsRUFzRG9CbXdCLEdBckQ1QjVmLFdBQVcsTUFDZnZRLEVBQUl1USxXQUFXdlEsRUFBSTVSLE9BQVMsSUFDWCxLQUFONlcsR0FBb0IsS0FBTkEsRUFFN0JqRixFQURBQSxFQUFJM00sTUFBTSxHQUFJLEdBa0RpQyxJQUFNODhCLEdBMkczRCxJQUFJQyxHQUFXLFdBQ2J2OEIsS0FBS3c4QixPQUFTaGlDLE9BQU9vRSxPQUFPLE9BTTlCMjlCLEdBQVM5aEMsVUFBVTRvQixVQUFZLFNBQW9CcFcsR0FDakQsSUFBSXd2QixFQUFNejhCLEtBQUt3OEIsT0FBT3Z2QixHQU90QixPQU5Ld3ZCLElBQ0hBLEVBOUdKLFNBQWtCeHZCLEdBQ2hCLElBSUlwUCxFQUNBZ0IsRUFDQTY5QixFQUNBei9CLEVBQ0EwL0IsRUFDQUMsRUFDQUMsRUFWQXY2QixFQUFPLEdBQ1BvSSxHQUFTLEVBQ1RqTSxFQTdJWSxFQThJWnErQixFQUFlLEVBUWZDLEVBQVUsR0F1Q2QsU0FBU0MsSUFDUCxJQUFJQyxFQUFXaHdCLEVBQUt2QyxFQUFRLEdBQzVCLEdBMUxrQixJQTBMYmpNLEdBQXlDLE1BQWJ3K0IsR0F6TGYsSUEwTGZ4K0IsR0FBeUMsTUFBYncrQixFQUk3QixPQUhBdnlCLElBQ0FneUIsRUFBVSxLQUFPTyxFQUNqQkYsRUF6TU8sTUEwTUEsRUFJWCxJQWhEQUEsRUE3SlMsR0E2Sk8sZ0JBQ0Z4L0IsSUFBUnNCLElBQ0Z5RCxFQUFLekgsS0FBS2dFLEdBQ1ZBLE9BQU10QixJQUlWdy9CLEVBcktXLEdBcUtPLGdCQUNKeC9CLElBQVJzQixFQUNGQSxFQUFNNjlCLEVBRU43OUIsR0FBTzY5QixHQUlYSyxFQTNLdUIsR0EyS08sV0FDNUJBLEVBOUtTLEtBK0tURCxLQUdGQyxFQS9La0IsR0ErS08sV0FDdkIsR0FBSUQsRUFBZSxFQUNqQkEsSUFDQXIrQixFQTNLWSxFQTRLWnMrQixFQXRMTyxTQXVMRixDQUVMLEdBREFELEVBQWUsT0FDSHYvQixJQUFSc0IsRUFBcUIsT0FBTyxFQUVoQyxJQUFZLEtBRFpBLEVBQU11OUIsR0FBY3Y5QixJQUVsQixPQUFPLEVBRVBrK0IsRUE3TEcsT0E2TU8sT0FBVHQrQixHQUlMLEdBSEFpTSxJQUdVLFFBRlY3TSxFQUFJb1AsRUFBS3ZDLE1BRVNzeUIsSUFBbEIsQ0FRQSxHQUpBLy9CLEVBQU9pL0IsR0FBZ0JyK0IsR0F4TWYsS0EwTVI4K0IsR0FEQUUsRUFBVWIsR0FBaUJ2OUIsSUFDTnhCLElBQVM0L0IsRUFBYyxNQTFNcEMsR0E2TU4sT0FLRixHQUZBcCtCLEVBQU9rK0IsRUFBVyxJQUNsQkMsRUFBU0csRUFBUUosRUFBVyxPQUcxQkQsT0FBc0JuL0IsS0FEdEJtL0IsRUFBVUMsRUFBVyxJQUVqQjkrQixFQUNBNitCLEdBQ2EsSUFBYkUsS0FDRixPQUlKLEdBN05hLElBNk5UbitCLEVBQ0YsT0FBTzZELEdBbUJINDZCLENBQVFqd0IsTUFFWmpOLEtBQUt3OEIsT0FBT3Z2QixHQUFRd3ZCLEdBR2pCQSxHQUFPLElBTWhCRixHQUFTOWhDLFVBQVUwaUMsYUFBZSxTQUF1QjE3QixFQUFLd0wsR0FDNUQsSUFBSytkLEdBQVN2cEIsR0FBUSxPQUFPLEtBRTdCLElBQUkyN0IsRUFBUXA5QixLQUFLcWpCLFVBQVVwVyxHQUMzQixHQUFxQixJQUFqQm13QixFQUFNN2lDLE9BQ1IsT0FBTyxLQUtQLElBSEEsSUFBSUEsRUFBUzZpQyxFQUFNN2lDLE9BQ2Y4aUMsRUFBTzU3QixFQUNQcEgsRUFBSSxFQUNEQSxFQUFJRSxHQUFRLENBQ2pCLElBQUlnRSxFQUFROCtCLEVBQUtELEVBQU0vaUMsSUFDdkIsUUFBY2tELElBQVZnQixFQUNGLE9BQU8sS0FFVDgrQixFQUFPOStCLEVBQ1BsRSxJQUdGLE9BQU9nakMsR0FRWCxJQTYvQklDLEdBNy9CQUMsR0FBaUIsMEJBQ2pCQyxHQUFpQixvREFDakJDLEdBQXVCLHFCQUN2QkMsR0FBa0IsUUFDbEJDLEdBQW1CLENBQ3JCLE1BQVMsU0FBVXh4QixHQUFPLE9BQU9BLEVBQUl5eEIscUJBQ3JDLE1BQVMsU0FBVXp4QixHQUFPLE9BQU9BLEVBQUkweEIscUJBQ3JDLFdBQWMsU0FBVTF4QixHQUFPLE1BQVEsR0FBTUEsRUFBSWdULE9BQU8sR0FBR3llLG9CQUF3Qnp4QixFQUFJOFUsT0FBTyxLQUc1RjZjLEdBQW1CLElBQUl4QyxHQUV2Qm5GLEdBQVUsU0FBa0J4MkIsR0FDOUIsSUFBSXlrQixFQUFTcGtCLFVBQ0ksSUFBWkwsSUFBcUJBLEVBQVUsS0FNL0IsSUFBeUIsb0JBQVhMLFFBQTBCQSxPQUFPaTBCLEtBQ2xELEdBQVFqMEIsT0FBT2kwQixLQUdqQixJQUFJMkIsRUFBU3YxQixFQUFRdTFCLFFBQVUsUUFDM0I2QixHQUE0QyxJQUEzQnAzQixFQUFRbzNCLGlCQUV6QnAzQixFQUFRbzNCLGdCQUFrQixTQUMxQk8sRUFBVzMzQixFQUFRMjNCLFVBQVksR0FDL0J5RyxFQUFrQnArQixFQUFRbytCLGlCQUFtQixHQUM3Q0MsRUFBZ0JyK0IsRUFBUXErQixlQUFpQixHQUU3Q2grQixLQUFLRCxJQUFNLEtBQ1hDLEtBQUtpK0IsV0FBYXQrQixFQUFRbTNCLFdBQWFnSCxHQUN2Qzk5QixLQUFLaytCLFdBQWF2K0IsRUFBUXE2QixXQUFhLEdBQ3ZDaDZCLEtBQUttK0IsU0FBV3grQixFQUFReStCLFNBQVcsS0FDbkNwK0IsS0FBS3ErQixNQUFRMStCLEVBQVFrM0IsTUFBUSxLQUM3QjcyQixLQUFLcytCLFdBQXlCL2dDLElBQWpCb0MsRUFBUTYzQixRQUE4QjczQixFQUFRNjNCLEtBQzNEeDNCLEtBQUt1K0IsbUJBQXlDaGhDLElBQXpCb0MsRUFBUTYrQixnQkFFdkI3K0IsRUFBUTYrQixhQUNkeCtCLEtBQUt5K0IsNkJBQTZEbGhDLElBQW5Db0MsRUFBUXEzQiwwQkFFakNyM0IsRUFBUXEzQix1QkFDZGgzQixLQUFLMCtCLDRCQUEyRG5oQyxJQUFsQ29DLEVBQVFzM0IsdUJBRWxDdDNCLEVBQVFzM0Isc0JBQ1pqM0IsS0FBSzIrQix5QkFBcURwaEMsSUFBL0JvQyxFQUFRdTNCLHNCQUU3QnYzQixFQUFRdTNCLG1CQUNkbDNCLEtBQUs0K0Isb0JBQXNCLEdBQzNCNStCLEtBQUs2K0Isa0JBQW9CLEdBQ3pCNytCLEtBQUs4K0IsTUFBUSxJQUFJdkMsR0FDakJ2OEIsS0FBSysrQixlQUFpQixHQUN0Qi8rQixLQUFLZy9CLGtDQUFvQ3IvQixFQUFRcy9CLGtDQUFvQyxLQUNyRmovQixLQUFLay9CLCtCQUFpRTNoQyxJQUFyQ29DLEVBQVF5M0IsNEJBRW5DejNCLEVBQVF5M0IseUJBQ2RwM0IsS0FBS20zQixtQkFBcUJ4M0IsRUFBUXczQixvQkFBc0IsR0FDeERuM0IsS0FBS20vQixtQkFBcUJ4L0IsRUFBUXkvQixtQkFBcUIsTUFDdkRwL0IsS0FBS3EvQixpQkFBbUIxL0IsRUFBUTIvQixpQkFBbUIsS0FPbkR0L0IsS0FBS3UvQixlQUFpQixTQUFVakYsRUFBUWtGLEdBQ3RDLElBQUlDLEVBQWdCamxDLE9BQU9rbEMsZUFBZXRiLEdBQzFDLEdBQUlxYixHQUFpQkEsRUFBY0YsZUFFakMsT0FEK0JFLEVBQTRCLGVBQzFCOWtDLEtBQUt5cEIsRUFBUWtXLEVBQVFrRixHQUl4RCxJQUE0QkcsRUFBU0MsRUFjckMsT0FBSXhiLEVBQU84USxVQUFVOVEsRUFBTytTLG1CQUNuQi9TLEVBQU8rUyxtQkFBbUIvUyxFQUFPOFEsUUFBUXhjLE1BQU0wTCxFQUFRLENBQUNrVyxFQUFRa0YsS0FmN0NHLEVBaUJQckYsRUFqQmdCc0YsRUFpQlJKLEVBaEIzQkcsRUFBVTN6QixLQUFLNnpCLElBQUlGLEdBRUksSUFBbkJDLEVBQ0tELEVBQ0hBLEVBQVUsRUFDUixFQUNBLEVBQ0YsRUFHQ0EsRUFBVTN6QixLQUFLOHpCLElBQUlILEVBQVMsR0FBSyxJQVc1QzMvQixLQUFLKy9CLE9BQVMsU0FBVTNpQyxFQUFTeUIsR0FDL0IsU0FBS3pCLElBQVl5QixNQUNaazJCLEdBQU8zUSxFQUFPMGEsTUFBTTNCLGFBQWEvL0IsRUFBU3lCLE9BRTNDekIsRUFBUXlCLEtBSWtCLFNBQTVCbUIsS0FBS20vQixvQkFBNkQsVUFBNUJuL0IsS0FBS20vQixvQkFDN0Mza0MsT0FBTzhILEtBQUtnMUIsR0FBVTEwQixTQUFRLFNBQVVzeUIsR0FDdEM5USxFQUFPNGIsb0JBQW9COUssRUFBUTlRLEVBQU8rYSxtQkFBb0I3SCxFQUFTcEMsT0FJM0VsMUIsS0FBS2lnQyxRQUFRLENBQ1gvSyxPQUFRQSxFQUNSNkIsZUFBZ0JBLEVBQ2hCTyxTQUFVQSxFQUNWeUcsZ0JBQWlCQSxFQUNqQkMsY0FBZUEsS0FJZixHQUFxQixDQUFFbGlCLEdBQUksQ0FBRS9aLGNBQWMsR0FBT3UxQixTQUFVLENBQUV2MUIsY0FBYyxHQUFPZzhCLGdCQUFpQixDQUFFaDhCLGNBQWMsR0FBT2k4QixjQUFlLENBQUVqOEIsY0FBYyxHQUFPbStCLGlCQUFrQixDQUFFbitCLGNBQWMsR0FBT216QixPQUFRLENBQUVuekIsY0FBYyxHQUFPZzFCLGVBQWdCLENBQUVoMUIsY0FBYyxHQUFPaTFCLHVCQUF3QixDQUFFajFCLGNBQWMsR0FBT3E4QixRQUFTLENBQUVyOEIsY0FBYyxHQUFPKzBCLFVBQVcsQ0FBRS8wQixjQUFjLEdBQU9rMUIsc0JBQXVCLENBQUVsMUIsY0FBYyxHQUFPbTFCLG1CQUFvQixDQUFFbjFCLGNBQWMsR0FBT3ExQix5QkFBMEIsQ0FBRXIxQixjQUFjLEdBQU9xOUIsa0JBQW1CLENBQUVyOUIsY0FBYyxHQUFPdTlCLGdCQUFpQixDQUFFdjlCLGNBQWMsSUFFMWxCbzBCLEdBQVExN0IsVUFBVXVsQyxvQkFBc0IsU0FBOEI5SyxFQUFRaUwsRUFBTy9pQyxHQUNuRixJQUVJNEssRUFBSyxTQUFVbTRCLEVBQU9qTCxFQUFROTNCLEVBQVNnZ0MsR0FDekMsR0FBSXRJLEdBQWMxM0IsR0FDaEI1QyxPQUFPOEgsS0FBS2xGLEdBQVN3RixTQUFRLFNBQVUvRCxHQUNyQyxJQUFJdUgsRUFBTWhKLEVBQVF5QixHQUNkaTJCLEdBQWMxdUIsSUFDaEJnM0IsRUFBTXZpQyxLQUFLZ0UsR0FDWHUrQixFQUFNdmlDLEtBQUssS0FDWG1OLEVBQUdtNEIsRUFBT2pMLEVBQVE5dUIsRUFBS2czQixHQUN2QkEsRUFBTWhlLE1BQ05nZSxFQUFNaGUsUUFFTmdlLEVBQU12aUMsS0FBS2dFLEdBQ1htSixFQUFHbTRCLEVBQU9qTCxFQUFROXVCLEVBQUtnM0IsR0FDdkJBLEVBQU1oZSxlQUdMLEdBQUlwYyxHQUFRNUYsR0FDakJBLEVBQVF3RixTQUFRLFNBQVV5eUIsRUFBTTNxQixHQUMxQm9xQixHQUFjTyxJQUNoQitILEVBQU12aUMsS0FBTSxJQUFNNlAsRUFBUSxLQUMxQjB5QixFQUFNdmlDLEtBQUssS0FDWG1OLEVBQUdtNEIsRUFBT2pMLEVBQVFHLEVBQU0rSCxHQUN4QkEsRUFBTWhlLE1BQ05nZSxFQUFNaGUsUUFFTmdlLEVBQU12aUMsS0FBTSxJQUFNNlAsRUFBUSxLQUMxQjFDLEVBQUdtNEIsRUFBT2pMLEVBQVFHLEVBQU0rSCxHQUN4QkEsRUFBTWhlLGVBR0wsR0FBSXlWLEdBQVN6M0IsR0FBVSxDQUU1QixHQURVbWdDLEdBQWVuOEIsS0FBS2hFLEdBQ3JCLENBQ1AsSUFBSWl3QixFQUFNLDZCQUErQmp3QixFQUFVLGlCQUFvQmdnQyxFQUFNdnVCLEtBQUssSUFBTyxTQUFXcW1CLEVBQVMsNkZBQy9GLFNBQVZpTCxFQUNGLEdBQUs5UyxHQUNjLFVBQVY4UyxHQTdzQ25CLFNBQWdCOVMsRUFBS2x1QixHQUNJLG9CQUFaQyxVQUNUQSxRQUFRM0MsTUFBTSxjQUFnQjR3QixHQUUxQmx1QixHQUNGQyxRQUFRM0MsTUFBTTBDLEVBQUlvVSxRQXlzQ2QsQ0FBTThaLE1BTWRybEIsRUFBR200QixFQUFPakwsRUFBUTkzQixFQTdDTixLQWdEZCs0QixHQUFRMTdCLFVBQVV3bEMsUUFBVSxTQUFrQmptQyxHQUM1QyxJQUFJb21DLEVBQVMsR0FBSS80QixPQUFPKzRCLE9BQ3hCLEdBQUkvNEIsT0FBTys0QixRQUFTLEVBQ3BCcGdDLEtBQUtELElBQU0sSUFBSSxHQUFJLENBQUUvRixLQUFNQSxJQUMzQixHQUFJcU4sT0FBTys0QixPQUFTQSxHQUd0QmpLLEdBQVExN0IsVUFBVXk5QixVQUFZLFdBQzVCbDRCLEtBQUtELElBQUlzZ0MsWUFHWGxLLEdBQVExN0IsVUFBVW85QixzQkFBd0IsU0FBZ0MvYixHQUN4RTliLEtBQUsrK0IsZUFBZWxrQyxLQUFLaWhCLElBRzNCcWEsR0FBUTE3QixVQUFVdzlCLHdCQUEwQixTQUFrQ25jLElBbnFDOUUsU0FBaUJoWixFQUFLdXlCLEdBQ3BCLEdBQUl2eUIsRUFBSXZJLE9BQVEsQ0FDZCxJQUFJbVEsRUFBUTVILEVBQUl1QyxRQUFRZ3dCLEdBQ3hCLEdBQUkzcUIsR0FBUyxFQUNKNUgsRUFBSWlsQixPQUFPcmQsRUFBTyxJQWdxQzdCNDFCLENBQU90Z0MsS0FBSysrQixlQUFnQmpqQixJQUc5QnFhLEdBQVExN0IsVUFBVWc4QixjQUFnQixXQUNoQyxJQUFJdUIsRUFBT2g0QixLQUNYLE9BQU9BLEtBQUtELElBQUl3Z0MsT0FBTyxTQUFTLFdBRTlCLElBREEsSUFBSWxtQyxFQUFJMjlCLEVBQUsrRyxlQUFleGtDLE9BQ3JCRixLQUNMLEdBQUlvZSxVQUFTLFdBQ1h1ZixFQUFLK0csZUFBZTFrQyxJQUFNMjlCLEVBQUsrRyxlQUFlMWtDLEdBQUdtbUMsb0JBR3BELENBQUVDLE1BQU0sS0FHYnRLLEdBQVExN0IsVUFBVWk5QixZQUFjLFdBRTlCLElBQUsxM0IsS0FBS3MrQixRQUFVdCtCLEtBQUtxK0IsTUFBUyxPQUFPLEtBQ3pDLElBQUlsaEMsRUFBUzZDLEtBQUtELElBQ2xCLE9BQU9DLEtBQUtxK0IsTUFBTXpILE1BQU05YSxHQUFHeWtCLE9BQU8sVUFBVSxTQUFVbjZCLEdBQ3BEakosRUFBT3VqQyxLQUFLdmpDLEVBQVEsU0FBVWlKLEdBQzlCakosRUFBT3FqQyxpQkFDTixDQUFFRyxXQUFXLEtBR2xCeEssR0FBUTE3QixVQUFVazlCLDJCQUE2QixTQUFxQ2lKLEdBQzlFNWdDLEtBQUtnL0IsbUNBQ1BoL0IsS0FBS2cvQixrQ0FBa0M0QixFQUFTNWdDLE9BSXBELEdBQW1COGIsR0FBRzNkLElBQU0sV0FBYyxPQUFPNkIsS0FBS0QsS0FFdEQsR0FBbUJ1M0IsU0FBU241QixJQUFNLFdBQWMsT0FBT2czQixHQUFXbjFCLEtBQUs0NkIsaUJBQ3ZFLEdBQW1CbUQsZ0JBQWdCNS9CLElBQU0sV0FBYyxPQUFPZzNCLEdBQVduMUIsS0FBSzZnQyx3QkFDOUUsR0FBbUI3QyxjQUFjNy9CLElBQU0sV0FBYyxPQUFPZzNCLEdBQVduMUIsS0FBSzhnQyxzQkFDNUUsR0FBbUJaLGlCQUFpQi9oQyxJQUFNLFdBQWMsT0FBTzNELE9BQU84SCxLQUFLdEMsS0FBS3MzQixVQUFVeUosUUFFMUYsR0FBbUI3TCxPQUFPLzJCLElBQU0sV0FBYyxPQUFPNkIsS0FBS0QsSUFBSW0xQixRQUM5RCxHQUFtQkEsT0FBTzhMLElBQU0sU0FBVTlMLEdBQ3hDbDFCLEtBQUtELElBQUkyZ0MsS0FBSzFnQyxLQUFLRCxJQUFLLFNBQVVtMUIsSUFHcEMsR0FBbUI2QixlQUFlNTRCLElBQU0sV0FBYyxPQUFPNkIsS0FBS0QsSUFBSWczQixnQkFDdEUsR0FBbUJBLGVBQWVpSyxJQUFNLFNBQVU5TCxHQUNoRGwxQixLQUFLaWhDLGtCQUFvQixHQUN6QmpoQyxLQUFLRCxJQUFJMmdDLEtBQUsxZ0MsS0FBS0QsSUFBSyxpQkFBa0JtMUIsSUFHNUMsR0FBbUI4Qix1QkFBdUI3NEIsSUFBTSxXQUFjLE9BQU82QixLQUFLeStCLHlCQUMxRSxHQUFtQnpILHVCQUF1QmdLLElBQU0sU0FBVXhQLEdBQVl4eEIsS0FBS3krQix3QkFBMEJqTixHQUVyRyxHQUFtQjRNLFFBQVFqZ0MsSUFBTSxXQUFjLE9BQU82QixLQUFLbStCLFVBQzNELEdBQW1CQyxRQUFRNEMsSUFBTSxTQUFVaGMsR0FBV2hsQixLQUFLbStCLFNBQVduWixHQUV0RSxHQUFtQjhSLFVBQVUzNEIsSUFBTSxXQUFjLE9BQU82QixLQUFLaStCLFlBQzdELEdBQW1CbkgsVUFBVWtLLElBQU0sU0FBVWxLLEdBQWE5MkIsS0FBS2krQixXQUFhbkgsR0FFNUUsR0FBbUJHLHNCQUFzQjk0QixJQUFNLFdBQWMsT0FBTzZCLEtBQUswK0Isd0JBQ3pFLEdBQW1Cekgsc0JBQXNCK0osSUFBTSxTQUFVWixHQUFVcGdDLEtBQUswK0IsdUJBQXlCMEIsR0FFakcsR0FBbUJsSixtQkFBbUIvNEIsSUFBTSxXQUFjLE9BQU82QixLQUFLMitCLHFCQUN0RSxHQUFtQnpILG1CQUFtQjhKLElBQU0sU0FBVVosR0FBVXBnQyxLQUFLMitCLG9CQUFzQnlCLEdBRTNGLEdBQW1CaEoseUJBQXlCajVCLElBQU0sV0FBYyxPQUFPNkIsS0FBS2svQiwyQkFDNUUsR0FBbUI5SCx5QkFBeUI0SixJQUFNLFNBQVUvRyxHQUFZajZCLEtBQUtrL0IsMEJBQTRCakYsR0FFekcsR0FBbUJtRixrQkFBa0JqaEMsSUFBTSxXQUFjLE9BQU82QixLQUFLbS9CLG9CQUNyRSxHQUFtQkMsa0JBQWtCNEIsSUFBTSxTQUFVYixHQUNqRCxJQUFJL2IsRUFBU3BrQixLQUVYa2hDLEVBQVdsaEMsS0FBS20vQixtQkFFcEIsR0FEQW4vQixLQUFLbS9CLG1CQUFxQmdCLEVBQ3RCZSxJQUFhZixJQUFvQixTQUFWQSxHQUE4QixVQUFWQSxHQUFvQixDQUNqRSxJQUFJN0ksRUFBV3QzQixLQUFLNDZCLGVBQ3BCcGdDLE9BQU84SCxLQUFLZzFCLEdBQVUxMEIsU0FBUSxTQUFVc3lCLEdBQ3RDOVEsRUFBTzRiLG9CQUFvQjlLLEVBQVE5USxFQUFPK2EsbUJBQW9CN0gsRUFBU3BDLFNBSzdFLEdBQW1Cb0ssZ0JBQWdCbmhDLElBQU0sV0FBYyxPQUFPNkIsS0FBS3EvQixrQkFDbkUsR0FBbUJDLGdCQUFnQjBCLElBQU0sU0FBVWhjLEdBQVdobEIsS0FBS3EvQixpQkFBbUJyYSxHQUV0Rm1SLEdBQVExN0IsVUFBVW1nQyxhQUFlLFdBQTJCLE9BQU81NkIsS0FBS0QsSUFBSXUzQixVQUM1RW5CLEdBQVExN0IsVUFBVW9tQyxvQkFBc0IsV0FBa0MsT0FBTzdnQyxLQUFLRCxJQUFJZytCLGlCQUMxRjVILEdBQVExN0IsVUFBVXFtQyxrQkFBb0IsV0FBZ0MsT0FBTzlnQyxLQUFLRCxJQUFJaStCLGVBRXRGN0gsR0FBUTE3QixVQUFVMG1DLGFBQWUsU0FBdUJqTSxFQUFRcjJCLEVBQUtxUyxFQUFRNEssRUFBSTdILEVBQVFtdEIsR0FDdkYsSUFBS3JNLEdBQU83akIsR0FBVyxPQUFPQSxFQUM5QixHQUFJbFIsS0FBS20rQixTQUFVLENBQ2pCLElBQUlrRCxFQUFhcmhDLEtBQUttK0IsU0FBU3psQixNQUFNLEtBQU0sQ0FBQ3djLEVBQVFyMkIsRUFBS2lkLEVBQUk3SCxJQUM3RCxHQUFJNGdCLEdBQVN3TSxHQUNYLE9BQU9BLE9BR0wsRUFRTixHQUFJcmhDLEtBQUt5K0Isd0JBQXlCLENBQ2hDLElBQUk2QyxFQUFhck0sR0FBVXZjLFdBQU0sRUFBUXpFLEdBQ3pDLE9BQU9qVSxLQUFLdWhDLFFBQVExaUMsRUFBS3VpQyxFQUFpQkUsRUFBVzN6QixPQUFROU8sR0FFN0QsT0FBT0EsR0FJWHMzQixHQUFRMTdCLFVBQVUrbUMsZ0JBQWtCLFNBQTBCcDdCLEdBQzVELE9BQVFBLElBQVEydUIsR0FBTy8wQixLQUFLcStCLFFBQVVyK0IsS0FBS3UrQixlQUc3Q3BJLEdBQVExN0IsVUFBVWduQyxzQkFBd0IsU0FBZ0M1aUMsR0FDeEUsT0FBT21CLEtBQUsyK0IsK0JBQStCbHFCLE9BQ3ZDelUsS0FBSzIrQixvQkFBb0J2OUIsS0FBS3ZDLEdBQzlCbUIsS0FBSzIrQixxQkFHWHhJLEdBQVExN0IsVUFBVWluQyxrQkFBb0IsU0FBNEJ4TSxFQUFRcjJCLEdBQ3hFLE9BQU9tQixLQUFLeWhDLHNCQUFzQjVpQyxLQUFTbUIsS0FBS3doQyxtQkFBcUJ0TSxJQUFXbDFCLEtBQUsrMkIsaUJBR3ZGWixHQUFRMTdCLFVBQVVrbkMseUJBQTJCLFNBQW1DOWlDLEdBQzlFLE9BQU9tQixLQUFLMCtCLGtDQUFrQ2pxQixPQUMxQ3pVLEtBQUswK0IsdUJBQXVCdDlCLEtBQUt2QyxHQUNqQ21CLEtBQUswK0Isd0JBR1h2SSxHQUFRMTdCLFVBQVVtbkMsYUFBZSxTQUMvQjFNLEVBQ0E5M0IsRUFDQXlCLEVBQ0EycUIsRUFDQTRYLEVBQ0FudEIsRUFDQTR0QixHQUVBLElBQUt6a0MsRUFBVyxPQUFPLEtBRXZCLElBR0kwa0MsRUFIQUMsRUFBVS9oQyxLQUFLOCtCLE1BQU0zQixhQUFhLy9CLEVBQVN5QixHQUMvQyxHQUFJbUUsR0FBUSsrQixJQUFZak4sR0FBY2lOLEdBQVksT0FBT0EsRUFHekQsR0FBSWhOLEdBQU9nTixHQUFVLENBRW5CLElBQUlqTixHQUFjMTNCLEdBU2hCLE9BQU8sS0FQUCxJQUFNeTNCLEdBRE5pTixFQUFNMWtDLEVBQVF5QixNQUNTbTJCLEdBQVc4TSxHQUloQyxPQUFPLFNBS04sQ0FFTCxJQUFJak4sR0FBU2tOLEtBQVkvTSxHQUFXK00sR0FNbEMsT0FBTyxLQUxQRCxFQUFNQyxFQWNWLE9BSklsTixHQUFTaU4sS0FBU0EsRUFBSXo4QixRQUFRLE9BQVMsR0FBS3k4QixFQUFJejhCLFFBQVEsT0FBUyxLQUNuRXk4QixFQUFNOWhDLEtBQUtnaUMsTUFBTTlNLEVBQVE5M0IsRUFBUzBrQyxFQUFLdFksRUFBTSxNQUFPdlYsRUFBUTR0QixJQUd2RDdoQyxLQUFLdWhDLFFBQVFPLEVBQUtWLEVBQWlCbnRCLEVBQVFwVixJQUdwRHMzQixHQUFRMTdCLFVBQVV1bkMsTUFBUSxTQUN4QjlNLEVBQ0E5M0IsRUFDQStPLEVBQ0FxZCxFQUNBNFgsRUFDQW50QixFQUNBNHRCLEdBRUEsSUFBSUMsRUFBTTMxQixFQUtOaVYsRUFBVTBnQixFQUFJM2YsTUFBTXFiLElBQ3hCLElBQUssSUFBSXlFLEtBQU83Z0IsRUFHZCxHQUFLQSxFQUFRMW1CLGVBQWV1bkMsR0FBNUIsQ0FHQSxJQUFJMWhDLEVBQU82Z0IsRUFBUTZnQixHQUNmQyxFQUF1QjNoQyxFQUFLNGhCLE1BQU1zYixJQUNsQzBFLEVBQWFELEVBQXFCLEdBQ2hDRSxFQUFnQkYsRUFBcUIsR0FHdkNHLEVBQWtCOWhDLEVBQUtnQixRQUFRNGdDLEVBQVksSUFBSTVnQyxRQUFRbThCLEdBQWlCLElBRTVFLEdBQUl0SSxHQUFTeU0sRUFBa0JRLEdBSTdCLE9BQU9QLEVBRVRELEVBQWlCaG5DLEtBQUt3bkMsR0FHdEIsSUFBSUMsRUFBYXRpQyxLQUFLNGhDLGFBQ3BCMU0sRUFBUTkzQixFQUFTaWxDLEVBQWlCN1ksRUFDZCxRQUFwQjRYLEVBQTRCLFNBQVdBLEVBQ25CLFFBQXBCQSxPQUE0QjdqQyxFQUFZMFcsRUFDeEM0dEIsR0FHRixHQUFJN2hDLEtBQUt3aEMsZ0JBQWdCYyxHQUFhLENBS3BDLElBQUt0aUMsS0FBS3ErQixNQUFTLE1BQU0zaEMsTUFBTSxvQkFDL0IsSUFBSW02QixFQUFPNzJCLEtBQUtxK0IsTUFBTXpILE1BQ3RCMEwsRUFBYXpMLEVBQUswTCxXQUNoQjFMLEVBQUsrRCxlQUFnQi9ELEVBQUszQixPQUFRMkIsRUFBS0UsZUFDdkNzTCxFQUFpQjdZLEVBQU00WCxFQUFpQm50QixHQUc1Q3F1QixFQUFhdGlDLEtBQUttaEMsYUFDaEJqTSxFQUFRbU4sRUFBaUJDLEVBQVk5WSxFQUNyQ3htQixHQUFRaVIsR0FBVUEsRUFBUyxDQUFDQSxHQUM1Qm10QixHQUdFcGhDLEtBQUtrK0IsV0FBV3hqQyxlQUFlMG5DLEdBQ2pDRSxFQUFhdGlDLEtBQUtrK0IsV0FBV2tFLEdBQWVFLEdBQ25DM0UsR0FBaUJqakMsZUFBZTBuQyxLQUN6Q0UsRUFBYTNFLEdBQWlCeUUsR0FBZUUsSUFHL0NULEVBQWlCemlCLE1BR2pCMGlCLEVBQU9RLEVBQW1CUixFQUFJdmdDLFFBQVFoQixFQUFNK2hDLEdBQXhCUixFQUd0QixPQUFPQSxHQUdUM0wsR0FBUTE3QixVQUFVK25DLHNCQUF3QixTQUFnQ3Z1QixHQUN4RSxJQUFJd3VCLEVBQVF6L0IsR0FBUWlSLEdBQVVBLEVBQVMsR0FDbkN5dUIsRUFBUzFYLEdBQVMvVyxHQUFVQSxFQUFTLEdBR3pDLE1BQU8sQ0FDTHVlLEtBSFMsU0FBVTluQixHQUFTLE9BQU8rM0IsRUFBTS8zQixJQUl6Q2k0QixNQUhVLFNBQVU5akMsR0FBTyxPQUFPNmpDLEVBQU83akMsTUFPN0NzM0IsR0FBUTE3QixVQUFVOG1DLFFBQVUsU0FBa0Jua0MsRUFBU2drQyxFQUFpQm50QixFQUFRaEgsR0FDOUUsR0FBSStuQixHQUFXNTNCLEdBQ2IsT0FBT0EsRUFBUTRDLEtBQUt3aUMsc0JBQXNCdnVCLElBRzVDLElBQUk2dEIsRUFBTTloQyxLQUFLaStCLFdBQVd6QyxZQUFZcCtCLEVBQVM2VyxFQUFRaEgsR0FTdkQsT0FOSzYwQixJQUNIQSxFQUFNaEUsR0FBaUJ0QyxZQUFZcCtCLEVBQVM2VyxFQUFRaEgsSUFLM0IsV0FBcEJtMEIsR0FBaUN2TSxHQUFTaU4sR0FBc0JBLEVBQWZBLEVBQUlqekIsS0FBSyxLQUduRXNuQixHQUFRMTdCLFVBQVVtb0MsbUJBQXFCLFNBQTZCQyxFQUFPeE4sRUFBTXlOLEdBQy9FLElBQUlDLEdBQVMsRUFZYixPQVhLM04sR0FBU3lOLEVBQU94TixLQUNuQjBOLEdBQVMsRUFDTDFOLElBQ0YwTixFQUFtQyxNQUExQjFOLEVBQUtBLEVBQUs5NkIsT0FBUyxHQUM1Qjg2QixFQUFPQSxFQUFLOXpCLFFBQVEsS0FBTSxJQUMxQnNoQyxFQUFNaG9DLEtBQUt3NkIsR0FDUHlOLEdBQVVBLEVBQU96TixLQUNuQjBOLEVBQVNELEVBQU96TixNQUlmME4sR0FHVDVNLEdBQVExN0IsVUFBVXVvQyxxQkFBdUIsU0FBK0JILEVBQU8zTixFQUFRNE4sR0FDckYsSUFBSUMsRUFDQTdpQixFQUFTZ1YsRUFBT2xpQixNQUFNLEtBQzFCLEVBQUcsQ0FDRCxJQUFJcWlCLEVBQU9uVixFQUFPclIsS0FBSyxLQUN2QmswQixFQUFTL2lDLEtBQUs0aUMsbUJBQW1CQyxFQUFPeE4sRUFBTXlOLEdBQzlDNWlCLEVBQU82SCxRQUFRLEVBQUcsU0FDWDdILEVBQU8zbEIsU0FBc0IsSUFBWHdvQyxHQUMzQixPQUFPQSxHQUdUNU0sR0FBUTE3QixVQUFVd29DLG9CQUFzQixTQUE4QkosRUFBT0ssRUFBT0osR0FFbEYsSUFEQSxJQUFJQyxHQUFTLEVBQ0oxb0MsRUFBSSxFQUFJQSxFQUFJNm9DLEVBQU0zb0MsUUFqaERMLGtCQWloRDJCd29DLEVBQVUxb0MsSUFBSyxDQUM5RCxJQUFJNjZCLEVBQVNnTyxFQUFNN29DLEdBQ2Z3NkIsR0FBU0ssS0FDWDZOLEVBQVMvaUMsS0FBS2dqQyxxQkFBcUJILEVBQU8zTixFQUFRNE4sSUFHdEQsT0FBT0MsR0FHVDVNLEdBQVExN0IsVUFBVTBvQyxnQkFBa0IsU0FBMEJDLEVBQU9yTSxHQUNuRSxHQUFjLEtBQVZxTSxFQUFnQixNQUFPLEdBRXRCcGpDLEtBQUtpaEMsb0JBQ1JqaEMsS0FBS2loQyxrQkFBb0IsSUFHM0IsSUFBSTRCLEVBQVE3aUMsS0FBS2loQyxrQkFBa0JtQyxHQUNuQyxJQUFLUCxFQUFPLENBQ0w5TCxJQUNIQSxFQUFpQi8yQixLQUFLKzJCLGdCQUV4QjhMLEVBQVEsR0FNUixJQUhBLElBWUlRLEVBWkFILEVBQVEsQ0FBQ0UsR0FHTnBnQyxHQUFRa2dDLElBQ2JBLEVBQVFsakMsS0FBS2lqQyxvQkFDWEosRUFDQUssRUFDQW5NLElBcUJGbU0sRUFERXJPLEdBYkZ3TyxFQURFcmdDLEdBQVErekIsR0FDQ0EsRUFDRi9MLEdBQVMrTCxHQUVkQSxFQUF3QixRQUNmQSxFQUF3QixRQUV4QixLQUdGQSxHQUtILENBQUNzTSxHQUVEQSxJQUdScmpDLEtBQUtpakMsb0JBQ0hKLEVBQ0FLLEVBQ0EsTUFHSmxqQyxLQUFLaWhDLGtCQUFrQm1DLEdBQVNQLEVBRWxDLE9BQU9BLEdBR1QxTSxHQUFRMTdCLFVBQVU4bkMsV0FBYSxTQUM3QmpMLEVBQ0FwQyxFQUNBMUQsRUFDQTN5QixFQUNBMnFCLEVBQ0E0WCxFQUNBbnlCLEdBSUEsSUFGQSxJQUNJa08sRUFEQTBsQixFQUFRN2lDLEtBQUttakMsZ0JBQWdCak8sRUFBUTFELEdBRWhDbjNCLEVBQUksRUFBR0EsRUFBSXdvQyxFQUFNdG9DLE9BQVFGLElBQUssQ0FDckMsSUFBSTJ4QixFQUFPNlcsRUFBTXhvQyxHQUdqQixJQUFLMDZCLEdBRkw1WCxFQUNFbmQsS0FBSzRoQyxhQUFhNVYsRUFBTXNMLEVBQVN0TCxHQUFPbnRCLEVBQUsycUIsRUFBTTRYLEVBQWlCbnlCLEVBQU0sQ0FBQ3BRLEtBSzNFLE9BQU9zZSxFQUdYLE9BQU8sTUFHVGdaLEdBQVExN0IsVUFBVWtnQyxHQUFLLFNBQWE5N0IsRUFBSzY2QixFQUFTcEMsRUFBVTlOLEdBSXhELElBSEEsSUFBSW5QLEVBRUFwRyxFQUFTLEdBQUlrRSxFQUFNaFcsVUFBVTVILE9BQVMsRUFDbEM0ZCxLQUFRLEdBQUlsRSxFQUFRa0UsR0FBUWhXLFVBQVdnVyxFQUFNLEdBQ3ZELElBQUt0WixFQUFPLE1BQU8sR0FFbkIsSUFBSXlpQyxFQUFhck0sR0FBVXZjLFdBQU0sRUFBUXpFLEdBQ3JDaWhCLEVBQVNvTSxFQUFXcE0sUUFBVXdFLEVBRTlCb0ksRUFBTTloQyxLQUFLdWlDLFdBQ2JqTCxFQUFVcEMsRUFBUWwxQixLQUFLKzJCLGVBQWdCbDRCLEVBQ3ZDMnFCLEVBQU0sU0FBVThYLEVBQVczekIsUUFFN0IsR0FBSTNOLEtBQUt3aEMsZ0JBQWdCTSxHQUFNLENBSzdCLElBQUs5aEMsS0FBS3ErQixNQUFTLE1BQU0zaEMsTUFBTSxvQkFDL0IsT0FBUTJkLEVBQU1yYSxLQUFLcStCLE9BQU8zRCxHQUFHaGlCLE1BQU0yQixFQUFLLENBQUV4YixHQUFNMkQsT0FBUXlSLElBTXhELE9BSkE2dEIsRUFBTTloQyxLQUFLbWhDLGFBQWFqTSxFQUFRcjJCLEVBQUtpakMsRUFBS3RZLEVBQU12VixFQUFRLFVBQ3BEalUsS0FBS3EvQixrQkFBTHIvQixNQUF5QjhoQyxJQUMzQkEsRUFBTTloQyxLQUFLcS9CLGlCQUFpQnlDLEVBQUtqakMsSUFFNUJpakMsR0FJWDNMLEdBQVExN0IsVUFBVStELEVBQUksU0FBWUssR0FJOUIsSUFIQSxJQUFJd2IsRUFFQXBHLEVBQVMsR0FBSWtFLEVBQU1oVyxVQUFVNUgsT0FBUyxFQUNsQzRkLEtBQVEsR0FBSWxFLEVBQVFrRSxHQUFRaFcsVUFBV2dXLEVBQU0sR0FDdkQsT0FBUWtDLEVBQU1yYSxNQUFNMjZCLEdBQUdqaUIsTUFBTTJCLEVBQUssQ0FBRXhiLEVBQUttQixLQUFLazFCLE9BQVFsMUIsS0FBSzQ2QixlQUFnQixNQUFPcDRCLE9BQVF5UixLQUc1RmtpQixHQUFRMTdCLFVBQVU0SSxHQUFLLFNBQWF4RSxFQUFLcTJCLEVBQVFvQyxFQUFVOU4sRUFBTXZWLEdBQy9ELElBQUk2dEIsRUFDRjloQyxLQUFLdWlDLFdBQVdqTCxFQUFVcEMsRUFBUWwxQixLQUFLKzJCLGVBQWdCbDRCLEVBQUsycUIsRUFBTSxNQUFPdlYsR0FDM0UsR0FBSWpVLEtBQUt3aEMsZ0JBQWdCTSxHQUFNLENBSTdCLElBQUs5aEMsS0FBS3ErQixNQUFTLE1BQU0zaEMsTUFBTSxvQkFDL0IsT0FBT3NELEtBQUtxK0IsTUFBTXpILE1BQU12OEIsRUFBRXdFLEVBQUtxMkIsRUFBUWpoQixHQUV2QyxPQUFPalUsS0FBS21oQyxhQUFhak0sRUFBUXIyQixFQUFLaWpDLEVBQUt0WSxFQUFNLENBQUN2VixHQUFTLFFBSS9Ea2lCLEdBQVExN0IsVUFBVUosRUFBSSxTQUFZd0UsRUFBS3EyQixFQUFRamhCLEdBRTdDLE9BQUtwVixHQUVBZzJCLEdBQVNLLEtBQ1pBLEVBQVNsMUIsS0FBS2sxQixRQUdUbDFCLEtBQUtxRCxHQUFHeEUsRUFBS3EyQixFQUFRbDFCLEtBQUs0NkIsZUFBZ0IsS0FBTTNtQixJQU5wQyxJQVNyQmtpQixHQUFRMTdCLFVBQVVxZ0MsSUFBTSxTQUN0Qmo4QixFQUNBNjZCLEVBQ0FwQyxFQUNBOU4sRUFDQThRLEdBS0UsSUFIQSxJQUFJamdCLEVBRUFwRyxFQUFTLEdBQUlrRSxFQUFNaFcsVUFBVTVILE9BQVMsRUFDbEM0ZCxLQUFRLEdBQUlsRSxFQUFRa0UsR0FBUWhXLFVBQVdnVyxFQUFNLEdBQ3ZELElBQUt0WixFQUFPLE1BQU8sUUFDSnRCLElBQVgrOEIsSUFDRkEsRUFBUyxHQUdYLElBQUlnSixFQUFhLENBQUUsTUFBU2hKLEVBQVEsRUFBS0EsR0FDckNnSCxFQUFhck0sR0FBVXZjLFdBQU0sRUFBUXpFLEdBR3pDLE9BRkFxdEIsRUFBVzN6QixPQUFTblQsT0FBT2krQixPQUFPNkssRUFBWWhDLEVBQVczekIsUUFDekRzRyxFQUErQixPQUF0QnF0QixFQUFXcE0sT0FBa0IsQ0FBQ29NLEVBQVczekIsUUFBVSxDQUFDMnpCLEVBQVdwTSxPQUFRb00sRUFBVzN6QixRQUNwRjNOLEtBQUt1akMsYUFBYWxwQixFQUFNcmEsTUFBTTI2QixHQUFHamlCLE1BQU0yQixFQUFLLENBQUV4YixFQUFLNjZCLEVBQVNwQyxFQUFVOU4sR0FBT2huQixPQUFReVIsSUFBV3FtQixJQUd6R25FLEdBQVExN0IsVUFBVThvQyxZQUFjLFNBQXNCbm1DLEVBQVNrOUIsR0FFN0QsSUFBS2w5QixJQUFZeTNCLEdBQVN6M0IsR0FBWSxPQUFPLEtBQzdDLElBQUlvbUMsRUFBVXBtQyxFQUFRNFYsTUFBTSxLQUc1QixPQUFLd3dCLEVBRExsSixFQUFTdDZCLEtBQUt1L0IsZUFBZWpGLEVBQVFrSixFQUFRanBDLFNBRXRDaXBDLEVBQVFsSixHQUFRM25CLE9BRFF2VixHQUlqQys0QixHQUFRMTdCLFVBQVUrL0IsR0FBSyxTQUFhMzdCLEVBQUt5N0IsR0FJckMsSUFIQSxJQUFJamdCLEVBRUFwRyxFQUFTLEdBQUlrRSxFQUFNaFcsVUFBVTVILE9BQVMsRUFDbEM0ZCxLQUFRLEdBQUlsRSxFQUFRa0UsR0FBUWhXLFVBQVdnVyxFQUFNLEdBQ3ZELE9BQVFrQyxFQUFNcmEsTUFBTTg2QixJQUFJcGlCLE1BQU0yQixFQUFLLENBQUV4YixFQUFLbUIsS0FBS2sxQixPQUFRbDFCLEtBQUs0NkIsZUFBZ0IsS0FBTU4sR0FBUzkzQixPQUFReVIsS0FHckdraUIsR0FBUTE3QixVQUFVdWdDLElBQU0sU0FBY244QixFQUFLcTJCLEVBQVFvQyxHQUUvQyxJQURBLElBQUlyb0IsRUFBTyxHQUFJa0osRUFBTWhXLFVBQVU1SCxPQUFTLEVBQ2hDNGQsS0FBUSxHQUFJbEosRUFBTWtKLEdBQVFoVyxVQUFXZ1csRUFBTSxHQUVyRCxJQUFJdWhCLEVBQVV6RSxHQUFVdmMsV0FBTSxFQUFRekosR0FBTWltQixRQUFVQSxFQUN0RCxPQUFPbDFCLEtBQUsrL0IsT0FBT3pJLEVBQVNvQyxHQUFVNzZCLElBR3hDczNCLEdBQVExN0IsVUFBVWdwQyxHQUFLLFNBQWE1a0MsRUFBS3EyQixHQUN2QyxPQUFPbDFCLEtBQUtnN0IsSUFBSW44QixFQUFLbUIsS0FBS2sxQixPQUFRbDFCLEtBQUs0NkIsZUFBZ0IxRixJQUd6RGlCLEdBQVExN0IsVUFBVXEvQixpQkFBbUIsU0FBMkI1RSxHQUM5RCxPQUFPQyxHQUFXbjFCLEtBQUtELElBQUl1M0IsU0FBU3BDLElBQVcsS0FHakRpQixHQUFRMTdCLFVBQVVpcEMsaUJBQW1CLFNBQTJCeE8sRUFBUTkzQixHQUN0QyxTQUE1QjRDLEtBQUttL0Isb0JBQTZELFVBQTVCbi9CLEtBQUttL0Isb0JBQzdDbi9CLEtBQUtnZ0Msb0JBQW9COUssRUFBUWwxQixLQUFLbS9CLG1CQUFvQi9oQyxHQUU1RDRDLEtBQUtELElBQUkyZ0MsS0FBSzFnQyxLQUFLRCxJQUFJdTNCLFNBQVVwQyxFQUFROTNCLElBRzNDKzRCLEdBQVExN0IsVUFBVTY3QixtQkFBcUIsU0FBNkJwQixFQUFROTNCLEdBQzFDLFNBQTVCNEMsS0FBS20vQixvQkFBNkQsVUFBNUJuL0IsS0FBS20vQixvQkFDN0NuL0IsS0FBS2dnQyxvQkFBb0I5SyxFQUFRbDFCLEtBQUttL0IsbUJBQW9CL2hDLEdBRTVENEMsS0FBS0QsSUFBSTJnQyxLQUFLMWdDLEtBQUtELElBQUl1M0IsU0FBVXBDLEVBQVFLLEdBQU0sR0FBSXYxQixLQUFLRCxJQUFJdTNCLFNBQVNwQyxJQUFXLEdBQUk5M0IsS0FHdEYrNEIsR0FBUTE3QixVQUFVa3BDLGtCQUFvQixTQUE0QnpPLEdBQ2hFLE9BQU9DLEdBQVduMUIsS0FBS0QsSUFBSWcrQixnQkFBZ0I3SSxJQUFXLEtBR3hEaUIsR0FBUTE3QixVQUFVbXBDLGtCQUFvQixTQUE0QjFPLEVBQVFnRSxHQUN4RWw1QixLQUFLRCxJQUFJMmdDLEtBQUsxZ0MsS0FBS0QsSUFBSWcrQixnQkFBaUI3SSxFQUFRZ0UsR0FDaERsNUIsS0FBSzZqQyxxQkFBcUIzTyxFQUFRZ0UsSUFHcEMvQyxHQUFRMTdCLFVBQVVxcEMsb0JBQXNCLFNBQThCNU8sRUFBUWdFLEdBQzVFbDVCLEtBQUtELElBQUkyZ0MsS0FBSzFnQyxLQUFLRCxJQUFJZytCLGdCQUFpQjdJLEVBQVFLLEdBQU12MUIsS0FBS0QsSUFBSWcrQixnQkFBZ0I3SSxJQUFXLEdBQUlnRSxJQUM5Rmw1QixLQUFLNmpDLHFCQUFxQjNPLEVBQVFnRSxJQUdwQy9DLEdBQVExN0IsVUFBVW9wQyxxQkFBdUIsU0FBK0IzTyxFQUFRZ0UsR0FDOUUsSUFBSyxJQUFJcjZCLEtBQU9xNkIsRUFBUSxDQUN0QixJQUFJbnRCLEVBQUttcEIsRUFBUyxLQUFPcjJCLEVBRXBCbUIsS0FBSzQrQixvQkFBb0Jsa0MsZUFBZXFSLFdBSXRDL0wsS0FBSzQrQixvQkFBb0I3eUIsS0FJcENvcUIsR0FBUTE3QixVQUFVc3BDLGtCQUFvQixTQUNwQ3hsQyxFQUNBMjJCLEVBQ0ExRCxFQUNBdU0sRUFDQWwvQixHQU1BLElBSkEsSUFBSTY2QixFQUFVeEUsRUFDVjhPLEVBQVVqRyxFQUFnQnJFLEdBRTFCbUosRUFBUTdpQyxLQUFLbWpDLGdCQUFnQmpPLEVBQVExRCxHQUNoQ24zQixFQUFJLEVBQUdBLEVBQUl3b0MsRUFBTXRvQyxPQUFRRixJQUFLLENBQ3JDLElBQ0kyeEIsRUFBTzZXLEVBQU14b0MsR0FJakIsR0FGQXEvQixFQUFVMU4sR0FFTitJLEdBSEppUCxFQUFVakcsRUFBZ0IvUixNQUdIK0ksR0FBT2lQLEVBQVFubEMsSUFLcEMsTUFJSixHQUFJazJCLEdBQU9pUCxJQUFZalAsR0FBT2lQLEVBQVFubEMsSUFDcEMsT0FBTyxLQUVQLElBQUlxNkIsRUFBUzhLLEVBQVFubEMsR0FDakJrTixFQUFLMnRCLEVBQVUsS0FBTzc2QixFQUN0Qmk0QixFQUFZOTJCLEtBQUs0K0Isb0JBQW9CN3lCLEdBSXpDLE9BSEsrcUIsSUFDSEEsRUFBWTkyQixLQUFLNCtCLG9CQUFvQjd5QixHQUFNLElBQUlrNEIsS0FBS0MsZUFBZXhLLEVBQVNSLElBRXZFcEMsRUFBVW9DLE9BQU8zNkIsSUFJNUI0M0IsR0FBUTE3QixVQUFVMkksR0FBSyxTQUFhN0UsRUFBTzIyQixFQUFRcjJCLEdBT2pELElBQUtBLEVBQ0gsT0FBTyxJQUFJb2xDLEtBQUtDLGVBQWVoUCxHQUFRZ0UsT0FBTzM2QixHQUdoRCxJQUFJdWpDLEVBQ0Y5aEMsS0FBSytqQyxrQkFBa0J4bEMsRUFBTzIyQixFQUFRbDFCLEtBQUsrMkIsZUFBZ0IvMkIsS0FBSzZnQyxzQkFBdUJoaUMsR0FDekYsR0FBSW1CLEtBQUt3aEMsZ0JBQWdCTSxHQUFNLENBSzdCLElBQUs5aEMsS0FBS3ErQixNQUFTLE1BQU0zaEMsTUFBTSxvQkFDL0IsT0FBT3NELEtBQUtxK0IsTUFBTXpILE1BQU05NEIsRUFBRVMsRUFBT00sRUFBS3EyQixHQUV0QyxPQUFPNE0sR0FBTyxJQUlsQjNMLEdBQVExN0IsVUFBVXFELEVBQUksU0FBWVMsR0FFOUIsSUFEQSxJQUFJMFEsRUFBTyxHQUFJa0osRUFBTWhXLFVBQVU1SCxPQUFTLEVBQ2hDNGQsS0FBUSxHQUFJbEosRUFBTWtKLEdBQVFoVyxVQUFXZ1csRUFBTSxHQUVyRCxJQUFJK2MsRUFBU2wxQixLQUFLazFCLE9BQ2RyMkIsRUFBTSxLQXNCVixPQXBCb0IsSUFBaEJvUSxFQUFLMVUsT0FDSHM2QixHQUFTNWxCLEVBQUssSUFDaEJwUSxFQUFNb1EsRUFBSyxHQUNGK2IsR0FBUy9iLEVBQUssTUFDbkJBLEVBQUssR0FBR2ltQixTQUNWQSxFQUFTam1CLEVBQUssR0FBR2ltQixRQUVmam1CLEVBQUssR0FBR3BRLE1BQ1ZBLEVBQU1vUSxFQUFLLEdBQUdwUSxNQUdPLElBQWhCb1EsRUFBSzFVLFNBQ1ZzNkIsR0FBUzVsQixFQUFLLE1BQ2hCcFEsRUFBTW9RLEVBQUssSUFFVDRsQixHQUFTNWxCLEVBQUssTUFDaEJpbUIsRUFBU2ptQixFQUFLLEtBSVhqUCxLQUFLb0QsR0FBRzdFLEVBQU8yMkIsRUFBUXIyQixJQUdoQ3MzQixHQUFRMTdCLFVBQVUwcEMsZ0JBQWtCLFNBQTBCalAsR0FDNUQsT0FBT0MsR0FBV24xQixLQUFLRCxJQUFJaStCLGNBQWM5SSxJQUFXLEtBR3REaUIsR0FBUTE3QixVQUFVMnBDLGdCQUFrQixTQUEwQmxQLEVBQVFnRSxHQUNwRWw1QixLQUFLRCxJQUFJMmdDLEtBQUsxZ0MsS0FBS0QsSUFBSWkrQixjQUFlOUksRUFBUWdFLEdBQzlDbDVCLEtBQUtxa0MsbUJBQW1CblAsRUFBUWdFLElBR2xDL0MsR0FBUTE3QixVQUFVNnBDLGtCQUFvQixTQUE0QnBQLEVBQVFnRSxHQUN4RWw1QixLQUFLRCxJQUFJMmdDLEtBQUsxZ0MsS0FBS0QsSUFBSWkrQixjQUFlOUksRUFBUUssR0FBTXYxQixLQUFLRCxJQUFJaStCLGNBQWM5SSxJQUFXLEdBQUlnRSxJQUMxRmw1QixLQUFLcWtDLG1CQUFtQm5QLEVBQVFnRSxJQUdsQy9DLEdBQVExN0IsVUFBVTRwQyxtQkFBcUIsU0FBNkJuUCxFQUFRZ0UsR0FDMUUsSUFBSyxJQUFJcjZCLEtBQU9xNkIsRUFBUSxDQUN0QixJQUFJbnRCLEVBQUttcEIsRUFBUyxLQUFPcjJCLEVBRXBCbUIsS0FBSzYrQixrQkFBa0Jua0MsZUFBZXFSLFdBSXBDL0wsS0FBSzYrQixrQkFBa0I5eUIsS0FJbENvcUIsR0FBUTE3QixVQUFVOHBDLG9CQUFzQixTQUN0Q2htQyxFQUNBMjJCLEVBQ0ExRCxFQUNBd00sRUFDQW4vQixFQUNBYyxHQU1BLElBSkEsSUFBSSs1QixFQUFVeEUsRUFDVjhPLEVBQVVoRyxFQUFjdEUsR0FFeEJtSixFQUFRN2lDLEtBQUttakMsZ0JBQWdCak8sRUFBUTFELEdBQ2hDbjNCLEVBQUksRUFBR0EsRUFBSXdvQyxFQUFNdG9DLE9BQVFGLElBQUssQ0FDckMsSUFDSTJ4QixFQUFPNlcsRUFBTXhvQyxHQUlqQixHQUZBcS9CLEVBQVUxTixHQUVOK0ksR0FISmlQLEVBQVVoRyxFQUFjaFMsTUFHRCtJLEdBQU9pUCxFQUFRbmxDLElBS3BDLE1BSUosR0FBSWsyQixHQUFPaVAsSUFBWWpQLEdBQU9pUCxFQUFRbmxDLElBQ3BDLE9BQU8sS0FFUCxJQUVJaTRCLEVBRkFvQyxFQUFTOEssRUFBUW5sQyxHQUdyQixHQUFJYyxFQUVGbTNCLEVBQVksSUFBSW1OLEtBQUtPLGFBQWE5SyxFQUFTbC9CLE9BQU9pK0IsT0FBTyxHQUFJUyxFQUFRdjVCLFFBQ2hFLENBQ0wsSUFBSW9NLEVBQUsydEIsRUFBVSxLQUFPNzZCLEdBQzFCaTRCLEVBQVk5MkIsS0FBSzYrQixrQkFBa0I5eUIsTUFFakMrcUIsRUFBWTkyQixLQUFLNitCLGtCQUFrQjl5QixHQUFNLElBQUlrNEIsS0FBS08sYUFBYTlLLEVBQVNSLElBRzVFLE9BQU9wQyxHQUlYWCxHQUFRMTdCLFVBQVUwSSxHQUFLLFNBQWE1RSxFQUFPMjJCLEVBQVFyMkIsRUFBS2MsR0FFdEQsSUFBS3cyQixHQUFRbUgsZUFBZW1ILGFBSTFCLE1BQU8sR0FHVCxJQUFLNWxDLEVBRUgsT0FEVWMsRUFBMEMsSUFBSXNrQyxLQUFLTyxhQUFhdFAsRUFBUXYxQixHQUE5RCxJQUFJc2tDLEtBQUtPLGFBQWF0UCxJQUNoQ2dFLE9BQU8zNkIsR0FHbkIsSUFBSXU0QixFQUFZOTJCLEtBQUt1a0Msb0JBQW9CaG1DLEVBQU8yMkIsRUFBUWwxQixLQUFLKzJCLGVBQWdCLzJCLEtBQUs4Z0Msb0JBQXFCamlDLEVBQUtjLEdBQ3hHbWlDLEVBQU1oTCxHQUFhQSxFQUFVb0MsT0FBTzM2QixHQUN4QyxHQUFJeUIsS0FBS3doQyxnQkFBZ0JNLEdBQU0sQ0FLN0IsSUFBSzloQyxLQUFLcStCLE1BQVMsTUFBTTNoQyxNQUFNLG9CQUMvQixPQUFPc0QsS0FBS3ErQixNQUFNekgsTUFBTTczQixFQUFFUixFQUFPL0QsT0FBT2krQixPQUFPLEdBQUksQ0FBRTU1QixJQUFLQSxFQUFLcTJCLE9BQVFBLEdBQVV2MUIsSUFFakYsT0FBT21pQyxHQUFPLElBSWxCM0wsR0FBUTE3QixVQUFVc0UsRUFBSSxTQUFZUixHQUU5QixJQURBLElBQUkwUSxFQUFPLEdBQUlrSixFQUFNaFcsVUFBVTVILE9BQVMsRUFDaEM0ZCxLQUFRLEdBQUlsSixFQUFNa0osR0FBUWhXLFVBQVdnVyxFQUFNLEdBRXJELElBQUkrYyxFQUFTbDFCLEtBQUtrMUIsT0FDZHIyQixFQUFNLEtBQ05jLEVBQVUsS0FnQ2QsT0E5Qm9CLElBQWhCc1AsRUFBSzFVLE9BQ0hzNkIsR0FBUzVsQixFQUFLLElBQ2hCcFEsRUFBTW9RLEVBQUssR0FDRitiLEdBQVMvYixFQUFLLE1BQ25CQSxFQUFLLEdBQUdpbUIsU0FDVkEsRUFBU2ptQixFQUFLLEdBQUdpbUIsUUFFZmptQixFQUFLLEdBQUdwUSxNQUNWQSxFQUFNb1EsRUFBSyxHQUFHcFEsS0FJaEJjLEVBQVVuRixPQUFPOEgsS0FBSzJNLEVBQUssSUFBSTVDLFFBQU8sU0FBVUMsRUFBS3pOLEdBQ2pELElBQUk0QyxFQUVOLE9BQUkyekIsR0FBU1QsR0FBa0I5MUIsR0FDdEJyRSxPQUFPaStCLE9BQU8sR0FBSW5zQixJQUFPN0ssRUFBTSxJQUFRNUMsR0FBT29RLEVBQUssR0FBR3BRLEdBQU00QyxJQUU5RDZLLElBQ04sT0FFb0IsSUFBaEIyQyxFQUFLMVUsU0FDVnM2QixHQUFTNWxCLEVBQUssTUFDaEJwUSxFQUFNb1EsRUFBSyxJQUVUNGxCLEdBQVM1bEIsRUFBSyxNQUNoQmltQixFQUFTam1CLEVBQUssS0FJWGpQLEtBQUttRCxHQUFHNUUsRUFBTzIyQixFQUFRcjJCLEVBQUtjLElBR3JDdzJCLEdBQVExN0IsVUFBVTArQixLQUFPLFNBQWU1NkIsRUFBTzIyQixFQUFRcjJCLEVBQUtjLEdBRTFELElBQUt3MkIsR0FBUW1ILGVBQWVtSCxhQUkxQixNQUFPLEdBR1QsSUFBSzVsQyxFQUVILE9BRFVjLEVBQTBDLElBQUlza0MsS0FBS08sYUFBYXRQLEVBQVF2MUIsR0FBOUQsSUFBSXNrQyxLQUFLTyxhQUFhdFAsSUFDaEN3UCxjQUFjbm1DLEdBRzFCLElBQUl1NEIsRUFBWTkyQixLQUFLdWtDLG9CQUFvQmhtQyxFQUFPMjJCLEVBQVFsMUIsS0FBSysyQixlQUFnQi8yQixLQUFLOGdDLG9CQUFxQmppQyxFQUFLYyxHQUN4R21pQyxFQUFNaEwsR0FBYUEsRUFBVTROLGNBQWNubUMsR0FDL0MsR0FBSXlCLEtBQUt3aEMsZ0JBQWdCTSxHQUFNLENBSzdCLElBQUs5aEMsS0FBS3ErQixNQUFTLE1BQU0zaEMsTUFBTSxvQkFDL0IsT0FBT3NELEtBQUtxK0IsTUFBTXpILE1BQU11QyxLQUFLNTZCLEVBQU8yMkIsRUFBUXIyQixFQUFLYyxHQUVqRCxPQUFPbWlDLEdBQU8sSUFJbEJ0bkMsT0FBTzY0QixpQkFBa0I4QyxHQUFRMTdCLFVBQVcsSUFJNUNELE9BQU95RCxlQUFlazRCLEdBQVMsaUJBQWtCLENBQy9DaDRCLElBQUssV0FDSCxJQUFLbS9CLEdBQWdCLENBQ25CLElBQUlxSCxFQUE4QixvQkFBVFYsS0FDekIzRyxHQUFpQixDQUNmc0gsZUFBZ0JELFFBQThDLElBQXhCVixLQUFLQyxlQUMzQ08sYUFBY0UsUUFBNEMsSUFBdEJWLEtBQUtPLGNBSTdDLE9BQU9sSCxNQUlYbkgsR0FBUTdDLFFBQVUsR0FDbEI2QyxHQUFRcmQsUUFBVSxTQUVILFUsaUNDN2xFZnlhLElBQUltQixJQUFJeUIsSUFFUixJQU9lRixHQVBGLElBQUlFLEdBQVEsQ0FDckJqQixPQUFRN3RCLE9BQU82dEIsT0FDZm9DLFNBQVU5OEIsT0FBT2krQixPQUFPLENBQ3BCb00sVSx1WkNMUixJQTBhZSxJQUNYbGIsTUEzYWlCLENBQ2pCbWIscUJBQWlCdm5DLEVBQ2pCd25DLFVBQVcsR0FDWEMsa0JBQW1CLEVBQ25CQyxxQkFBc0IsRUFDdEJDLGtCQUFrQixFQUNsQkMsa0JBQW1CLEdBc2FuQkMsVUF4Q2MsQ0FDZEMsaUJBRGMsU0FDRzFiLEVBQU8yYixHQUNwQjNiLEVBQU1tYixnQkFBa0JRLEdBRTVCQyxtQkFKYyxTQUlLNWIsRUFBTzZiLEdBQ3RCN2IsRUFBTW9iLFVBQVVscUMsS0FBSzJxQyxJQUV6QkMsc0JBUGMsU0FPUTliLEdBQ2xCQSxFQUFNb2IsVUFBVS9wQyxTQUVwQjBxQyxnQkFWYyxTQVVFL2IsRUFBTzJiLEdBQ25CM2IsRUFBTXViLGlCQUFtQkksR0FFN0JLLHdCQWJjLFNBYVVoYyxFQUFPaWMsR0FDM0JqYyxFQUFNd2Isa0JBQW9CUyxHQUU5QkMsK0JBaEJjLFNBZ0JpQmxjLEVBQU9tYyxHQUNsQ25jLEVBQU1xYixtQkFBcUJjLEdBRS9CQyxpQ0FuQmMsU0FtQm1CcGMsR0FDN0JBLEVBQU1zYix3QkFFVmUsc0JBdEJjLFNBc0JRcmMsR0FDbEJBLEVBQU1zYixxQkFBdUIsRUFDN0J0YixFQUFNcWIsa0JBQW9CLEVBQzFCcmIsRUFBTW9iLFVBQVksS0FnQnRCaEksUUFwYVksQ0FDWmtKLGVBQWdCLFdBQW9CQyxHQUFXLElBQTdCQyxFQUE2QixFQUE3QkEsT0FBUUMsRUFBcUIsRUFBckJBLFFBRXRCRCxFQUFPLG1CQUFvQixDQUN2QmpsQyxNQUFPKzBCLEdBQUt6M0IsRUFBRSx1QkFDZHBCLFFBQVM2NEIsR0FBS3ozQixFQUFFLDJCQUdwQixJQUFJaWMsRUFBUTJyQixFQUFRQyxhQUFSLDBCQUNhSCxFQUFPbjZCLEdBRHBCLFlBQzBCNlIsR0FBT3FLLGFBQWF0YSxPQUFPNlQsT0FEckQsMEJBRWEwa0IsRUFBT242QixJQUVoQ3U2QixLQUFNbm9DLElBQUlzYyxHQUNMclIsTUFBSyxTQUFBbTlCLEdBQ0ZoVCxJQUFJOTRCLFVBQVUrckMsY0FBY0QsRUFBU3ZzQyxLQUFLbUgsSUFBS29sQyxFQUFTdnNDLEtBQUtxRCxTQUZyRSxPQUlXLFdBQ0hrMkIsSUFBSTk0QixVQUFVZ3NDLHVCQUx0QixTQU9hLFdBQ0xOLEVBQU8sd0JBQW9CNW9DLE9BR3ZDbXBDLGNBQWUsWUFBdUIsSUFBckJQLEVBQXFCLEVBQXJCQSxPQUFRQyxFQUFhLEVBQWJBLFFBQ2pCTyxFQUFRLEdBR1pQLEVBQVFRLGVBQWVoa0MsU0FBUSxTQUFBNGlDLEdBQUksT0FBSW1CLEVBQU05ckMsS0FBSzJxQyxFQUFLejVCLE9BR3ZELElBQUkwTyxFQUFRMnJCLEVBQVFDLGFBQVIseUJBQ1l6b0IsR0FBT3FLLGFBQWF0YSxPQUFPNlQsT0FDN0MsaUJBRU4ya0IsRUFBTyxtQkFBb0IsQ0FDdkJqbEMsTUFBTyswQixHQUFLejNCLEVBQUUsdUJBQ2RwQixRQUFTNjRCLEdBQUt6M0IsRUFBRSwyQkFHcEI4bkMsS0FBTU8sS0FBS3BzQixFQUFPLENBQ2Rxc0IsTUFBT0gsSUFFTnY5QixNQUFLLFNBQUFtOUIsR0FDRmhULElBQUk5NEIsVUFBVStyQyxjQUFjRCxFQUFTdnNDLEtBQUttSCxJQUFLb2xDLEVBQVN2c0MsS0FBS3FELFNBSnJFLE9BTVcsV0FDSGsyQixJQUFJOTRCLFVBQVVnc0MsdUJBUHRCLFNBU2EsV0FDTE4sRUFBTyx3QkFBb0I1b0MsT0FHdkN3cEMsU0FBVSxjQUE0RCxJQUExRFosRUFBMEQsRUFBMURBLE9BQVFDLEVBQWtELEVBQWxEQSxRQUFTWSxFQUF5QyxFQUF6Q0EsU0FBWUMsRUFBNkIsRUFBN0JBLFFBQVNDLEVBQW9CLEVBQXBCQSxlQUUxQ0MsRUFBYyxHQUNkTCxFQUFRLENBQUNJLEdBR1JBLElBQ0RKLEVBQVFWLEVBQVFRLGdCQUVwQkUsRUFBTWxrQyxTQUFRLFNBQUE1SSxHQUFJLE9BQUltdEMsRUFBWXRzQyxLQUFLLENBQ25DLEdBQU1iLEVBQUsrUixHQUNYLEtBQVEvUixFQUFLaUQsVUFJWmlxQyxHQUNEZixFQUFPLHlCQUdYLElBQUkxckIsRUFBUTJyQixFQUFRQyxhQUFSLDJCQUNjem9CLEdBQU9xSyxhQUFhdGEsT0FBTzZULE9BQy9DLFlBRU5waUIsUUFBUWdvQyxJQUFJSCxHQUVaWCxLQUNLTyxLQUFLcHNCLEVBQU8sQ0FDVDRzQixNQUFPSixFQUFRbDdCLEdBQUtrN0IsRUFBUWw3QixHQUFLLEtBQ2pDKzZCLE1BQU9LLElBRVYvOUIsTUFBSyxXQUNGKzlCLEVBQVl2a0MsU0FBUSxTQUFBeXlCLEdBQ2hCOFEsRUFBTyxjQUFlOVEsRUFBS3RwQixJQUMzQm82QixFQUFPLHVCQUF3QmMsRUFBUWw3QixJQUVyQixXQUFkc3BCLEVBQUtwNEIsTUFDTCtwQyxFQUFTLGNBQzBCLFdBQW5DWixFQUFRa0IsY0FBYzVwQixVQUN0QnNwQixFQUFTLHVCQWJ6QixPQWdCVyxrQkFBTXpULElBQUk5NEIsVUFBVWdzQyx3QkFFbkNjLGFBQWMsV0FBOEJyQixHQUFXLElBQXZDQyxFQUF1QyxFQUF2Q0EsT0FBUUMsRUFBK0IsRUFBL0JBLFFBQVNZLEVBQXNCLEVBQXRCQSxTQUd6QnZzQixFQUFRMnJCLEVBQVFDLGFBQVIsb0NBQ3VCem9CLEdBQU9xSyxhQUFhdGEsT0FBTzZULE9BQ3hELHFCQUVOOGtCLEtBQ0tPLEtBQUtwc0IsRUFBTyxDQUNUK3NCLFVBQVdwQixFQUFRa0IsY0FBY3Y3QixHQUNqQzFPLEtBQU02b0MsRUFBTzdvQyxLQUNib0QsS0FBTXlsQyxFQUFPemxDLE9BRWhCMkksTUFBSyxTQUFBbTlCLEdBQ0ZKLEVBQU8saUJBQWtCSSxFQUFTdnNDLE1BRWxDeXRDLEtBQU8zbUMsTUFBTSxhQUdidEQsWUFBVyxXQUNQaXFDLEtBQU8zbUMsTUFBTSxrQkFBbUJ5bEMsRUFBU3ZzQyxLQUFLK1IsTUFDL0MsSUFFb0MsV0FBbkNxNkIsRUFBUWtCLGNBQWM1cEIsVUFDdEJzcEIsRUFBUyxjQUMwQixXQUFuQ1osRUFBUWtCLGNBQWM1cEIsVUFDdEJzcEIsRUFBUyxvQkFuQnJCLE9Bc0JXLGtCQUFNelQsSUFBSTk0QixVQUFVZ3NDLHdCQUVuQ2lCLFdBQVksV0FBOEIxdEMsR0FBUyxJQUFyQ21zQyxFQUFxQyxFQUFyQ0EsT0FBUUMsRUFBNkIsRUFBN0JBLFFBQVNZLEVBQW9CLEVBQXBCQSxTQUdBLFdBQXZCWixFQUFRdUIsWUFBeUMsV0FBZDN0QyxFQUFLaUQsTUFDeENrcEMsRUFBTyw0QkFBNkJuc0MsR0FHeEMsSUFBSXlnQixFQUFRMnJCLEVBQVFDLGFBQVIsNkJBQ2dCcnNDLEVBQUsrUixHQURyQixZQUMyQjZSLEdBQU9xSyxhQUFhdGEsT0FBTzZULE9BRHRELHNCQUVTeG5CLEVBQUsrUixJQUUxQnU2QixLQUNLTyxLQUFLcHNCLEUsa1dBRFYsSUFFV3pnQixFQUZYLENBR1E0dEMsUUFBUyxXQUVaeCtCLE1BQUssU0FBQW05QixHQUNGSixFQUFPLG1CQUFvQkksRUFBU3ZzQyxNQUVsQixXQUFkQSxFQUFLaUQsTUFBd0QsV0FBbkNtcEMsRUFBUWtCLGNBQWM1cEIsVUFDaERzcEIsRUFBUyxjQUNLLFdBQWRodEMsRUFBS2lELE1BQXdELFdBQW5DbXBDLEVBQVFrQixjQUFjNXBCLFVBQ2hEc3BCLEVBQVMsb0JBWHJCLE9BYVcsa0JBQU16VCxJQUFJOTRCLFVBQVVnc0Msd0JBRW5Db0IsWUFBYSxjQUE0RCxJQUExRDFCLEVBQTBELEVBQTFEQSxPQUFRQyxFQUFrRCxFQUFsREEsUUFBVzBCLEVBQXVDLEVBQXZDQSxLQUFNQyxFQUFpQyxFQUFqQ0EsU0FBVUMsRUFBdUIsRUFBdkJBLGtCQUM5QyxPQUFPLElBQUlyc0MsU0FBUSxTQUFDQyxFQUFTQyxHQUd6QixJQUFJNGUsRUFBUTJyQixFQUFRQyxhQUFSLDZCQUNnQnpvQixHQUFPcUssYUFBYXRhLE9BQU82VCxPQUNqRCxjQUlGcGYsRUFEZ0Jra0MsS0FBTTJCLFlBQ0Q3bEMsU0FFekJra0MsS0FDS08sS0FBS3BzQixFQUFPcXRCLEVBQU0sQ0FDZkksWUFBYTlsQyxFQUFPb2YsTUFDcEIybUIsUUFBUyxDQUNMLGVBQWdCLDRCQUVwQkMsaUJBQWtCLFNBQUF6ckMsR0FDZCxJQUFJMHJDLEVBQW1CcjhCLEtBQUtzOEIsT0FBUU4sRUFBb0JyckMsRUFBTTRyQyxRQUFVUixFQUFZLEtBRXBGNUIsRUFBTywwQkFBMkJrQyxHQUFvQixJQUFNLElBQU1BLEdBRzlEQSxHQUFvQixLQUNwQmxDLEVBQU8sbUJBQW1CLE1BR3JDLzhCLE1BQUssU0FBQW05QixHQUNGM3FDLEVBQVEycUMsR0FFUkosRUFBTyxtQkFBbUIsR0FHMUJBLEVBQU8seUJBR0hJLEVBQVN2c0MsS0FBS3d1QyxXQUFhcEMsRUFBUWtCLGNBQWN2N0IsS0FHakRvNkIsRUFBTyxnQkFBaUJJLEVBQVN2c0MsTUFHakNtc0MsRUFBTywwQkFBMkIsR0FHbENBLEVBQU8scUNBSVBDLEVBQVFyQixVQUFVeHFDLFFBQ2xCZzVCLElBQUk5NEIsVUFBVWd1QyxpQkFBaUJyQyxFQUFRckIsVUFBVSxJQUloRHFCLEVBQVFyQixVQUFVeHFDLFFBQ25CNHJDLEVBQU8sNEJBNUNuQixPQStDVyxTQUFBMXBDLEdBQ0haLEVBQU9ZLEdBRVAsSUFBSTY2QixFQUFXLENBQ1gsSUFBTyxDQUNIcDJCLE1BQU8rMEIsR0FBS3ozQixFQUFFLDRCQUNkcEIsUUFBUzY0QixHQUFLejNCLEVBQUUsK0JBRXBCLElBQU8sQ0FDSDBDLE1BQU8rMEIsR0FBS3ozQixFQUFFLG1DQUNkcEIsUUFBUzY0QixHQUFLejNCLEVBQUUsc0NBRXBCLElBQU8sQ0FDSDBDLE1BQU8rMEIsR0FBS3ozQixFQUFFLDRCQUNkcEIsUUFBUzY0QixHQUFLejNCLEVBQUUsZ0NBSXhCaXBDLEtBQU8zbUMsTUFBTSxhQUFjLENBQ3ZCNG5DLE1BQU8sU0FDUHhuQyxNQUFPbzJCLEVBQVM3NkIsRUFBTThwQyxTQUFTakIsUUFBeEIsTUFDUGxvQyxRQUFTazZCLEVBQVM3NkIsRUFBTThwQyxTQUFTakIsUUFBeEIsVUFHYmEsRUFBTyxtQkFBbUIsR0FDMUJBLEVBQU8sNEJBSWZzQixLQUFPa0IsSUFBSSxpQkFBaUIsV0FDeEJ2bUMsRUFBT3dtQyxTQUdQekMsRUFBTyxtQkFBbUIsR0FDMUJBLEVBQU8sZ0NBSW5CMEMsWUFBYSxXQUFvQnhULEdBQVMsSUFBM0I4USxFQUEyQixFQUEzQkEsT0FBUUMsRUFBbUIsRUFBbkJBLFFBRWYwQyxFQUFnQixHQUNoQmhDLEVBQVEsQ0FBQ3pSLEdBQ1QwVCxHQUFnQixFQUdmMVQsSUFDRHlSLEVBQVFWLEVBQVFRLGdCQUdtQixVQUFuQ1IsRUFBUWtCLGNBQWM1cEIsV0FDdEJxckIsR0FBZ0IsR0FFcEJqQyxFQUFNbGtDLFNBQVEsU0FBQTVJLEdBQUksT0FBSTh1QyxFQUFjanVDLEtBQUssQ0FDckNvQyxLQUFNakQsRUFBS2lELEtBQ1g4TyxHQUFJL1IsRUFBSytSLFFBSWJvNkIsRUFBTyx5QkFFUEcsS0FDS08sS0FBS1QsRUFBUTRDLElBQU0saUJBQWtCLENBQ2xDQyxRQUFTRixFQUNUakMsTUFBT2dDLElBRVYxL0IsS0FFRzA5QixFQUFNbGtDLFNBQVEsU0FBQTVJLEdBQUksT0FBSW1zQyxFQUFPLGNBQWVuc0MsRUFBSytSLFFBUHpELE9BU1csa0JBQU13bkIsSUFBSTk0QixVQUFVZ3NDLHdCQUVuQ3lDLFdBQVksV0FBOEJoQyxHQUFtQixJQUEvQ2YsRUFBK0MsRUFBL0NBLE9BQVFDLEVBQXVDLEVBQXZDQSxRQUFTWSxFQUE4QixFQUE5QkEsU0FFdkJtQyxFQUFnQixHQUNoQnJDLEVBQVEsQ0FBQ0ksR0FHUkEsSUFDREosRUFBUVYsRUFBUVEsZ0JBRWhCRSxFQUFNbGtDLFNBQVEsU0FBQTVJLEdBQ1ZtdkMsRUFBY3R1QyxLQUFLLENBQ2Z1dUMsZUFBY3B2QyxFQUFLcXZDLFdBQ25CcHNDLEtBQU1qRCxFQUFLaUQsS0FDWDhPLEdBQUkvUixFQUFLK1IsS0FJakJvNkIsRUFBTyxjQUFlbnNDLEVBQUsrUixJQUdBLFdBQXZCcTZCLEVBQVF1QixZQUVVLFdBQWQzdEMsRUFBS2lELE1BQ0xrcEMsRUFBTyw4QkFBK0Juc0MsR0FJOUNtc0MsRUFBTyxjQUFlbnNDLEVBQUsrUixJQUdBLFdBQXZCcTZCLEVBQVF1QixZQUVVLFdBQWQzdEMsRUFBS2lELE1BQ0xrcEMsRUFBTyw4QkFBK0Juc0MsTUFLN0NrdEMsR0FDRGYsRUFBTyx5QkFJWCxJQUFJMXJCLEVBQVEyckIsRUFBUUMsYUFBUiw2QkFDZ0J6b0IsR0FBT3FLLGFBQWF0YSxPQUFPNlQsT0FDakQsY0FFTjhrQixLQUNLTyxLQUFLcHNCLEVBQU8sQ0FDVHFzQixNQUFPcUMsSUFFVi8vQixNQUFLLFdBRUYrL0IsRUFBY3ZtQyxTQUFRLFNBQUE1SSxHQUdBLFdBQWRBLEVBQUtpRCxNQUVEakQsRUFBSytSLEtBQU9xNkIsRUFBUWtCLGNBQWN2N0IsS0FFSyxXQUFuQ3E2QixFQUFRa0IsY0FBYzVwQixTQUN0QnNwQixFQUFTLGVBQWdCLENBQUMsQ0FBQ2QsT0FBUTdJLGdCQUFLK0ksRUFBUWtELGVBQWdCdFcsTUFBTSxFQUFNM1csTUFBTSxLQUVsRjJxQixFQUFTLFlBQWEsQ0FBQyxDQUFDZCxPQUFRN0ksZ0JBQUsrSSxFQUFRa0QsZUFBZ0J0VyxNQUFNLEVBQU0zVyxNQUFNLFNBTXhELFdBQW5DK3BCLEVBQVFrQixjQUFjNXBCLFVBQ3RCc3BCLEVBQVMsY0FFMEIsV0FBbkNaLEVBQVFrQixjQUFjNXBCLFVBQ3RCc3BCLEVBQVMsb0JBMUJyQixPQTZCVyxrQkFBTXpULElBQUk5NEIsVUFBVWdzQyx3QkFFbkM4QyxXQUFZLFlBQXVCLElBQXJCcEQsRUFBcUIsRUFBckJBLE9BQVFDLEVBQWEsRUFBYkEsUUFHbEJELEVBQU8sZ0JBQWlCLENBQUNxRCxTQUFTLEVBQU14dkMsS0FBTSxLQUU5Q3NzQyxLQUNLTyxLQUFLVCxFQUFRNEMsSUFBTSxjQUFlLENBQy9CcEIsUUFBUyxXQUVaeCtCLE1BQUssV0FDRis4QixFQUFPLGdCQUFpQixDQUFDcUQsU0FBUyxFQUFPeHZDLEtBQU0sS0FDL0N5dEMsS0FBTzNtQyxNQUFNLGFBRWJxbEMsRUFBTyw0QkFSZixPQVVXLGtCQUFNNVMsSUFBSTk0QixVQUFVZ3NDLHlCQThDbkNMLFFBYlksQ0FDWm5CLHFCQUFzQixTQUFBdGIsR0FBSyxPQUFJQSxFQUFNc2Isc0JBQ3JDRCxrQkFBbUIsU0FBQXJiLEdBQUssT0FBSUEsRUFBTXFiLG1CQUNsQ0csa0JBQW1CLFNBQUF4YixHQUFLLE9BQUlBLEVBQU13YixtQkFDbENELGlCQUFrQixTQUFBdmIsR0FBSyxPQUFJQSxFQUFNdWIsa0JBQ2pDSixnQkFBaUIsU0FBQW5iLEdBQUssT0FBSUEsRUFBTW1iLGlCQUNoQ0MsVUFBVyxTQUFBcGIsR0FBSyxPQUFJQSxFQUFNb2IsYSwyOEJDeGE5QixJQXFTZSxJQUNYcGIsTUF0U2lCLENBQ2pCaWQsZUFBZ0IsR0FDaEJVLG1CQUFlL3BDLEVBQ2Zrc0MsZ0JBQVlsc0MsRUFDWm1zQyxhQUFhLEVBQ2JKLGNBQWUsR0FDZkssV0FBVyxFQUNYM3ZDLEtBQU0sSUFnU05vc0MsUUFaWSxDQUNaUSxlQUFnQixTQUFBamQsR0FBSyxPQUFJQSxFQUFNaWQsZ0JBQy9CVSxjQUFlLFNBQUEzZCxHQUFLLE9BQUlBLEVBQU0yZCxlQUM5QmdDLGNBQWUsU0FBQTNmLEdBQUssT0FBSUEsRUFBTTJmLGVBQzlCSSxZQUFhLFNBQUEvZixHQUFLLE9BQUlBLEVBQU0rZixhQUM1QkQsV0FBWSxTQUFBOWYsR0FBSyxPQUFJQSxFQUFNOGYsWUFDM0JFLFVBQVcsU0FBQWhnQixHQUFLLE9BQUlBLEVBQU1nZ0IsV0FDMUIzdkMsS0FBTSxTQUFBMnZCLEdBQUssT0FBSUEsRUFBTTN2QixPQU1yQitpQyxRQTlSWSxDQUNaNk0sVUFBVyxjQUFrQyxJQUFoQ3pELEVBQWdDLEVBQWhDQSxPQUFRQyxFQUF3QixFQUF4QkEsUUFBV3lELEVBQWEsV0FDekMxRCxFQUFPLGdCQUFpQixDQUFDcUQsU0FBUyxFQUFNeHZDLEtBQU0sS0FFMUM2dkMsRUFBUXh0QixNQUNSOHBCLEVBQU8sd0JBR1BDLEVBQVFzRCxjQUNSdkQsRUFBTywwQkFBMEIsR0FDakNzQixLQUFPM21DLE1BQU0sZ0JBSWpCK29DLEVBQVEzRCxPQUFPeG9CLFNBQVdtc0IsRUFBUTNELE9BQU9tRCxZQUEwQyxVQUE1QlEsRUFBUTNELE9BQU94b0IsU0FBdUIsUUFBVSxPQUVqR21zQixFQUFRN1csTUFBUzZXLEVBQVFDLFNBQzNCM0QsRUFBTyx3QkFBeUJDLEVBQVFrQixlQUU1QyxJQUFJbm1DLEVBQWtDLFVBQTVCMG9DLEVBQVEzRCxPQUFPeG9CLFNBQ25CLG1CQUFxQm1zQixFQUFRM0QsT0FBT242QixHQUFLcTZCLEVBQVEwRCxRQUFRQyxJQUFNLGNBQy9ELG1CQUFxQkYsRUFBUTNELE9BQU9uNkIsR0FBS3E2QixFQUFRMEQsUUFBUUMsSUFFL0R6RCxLQUNLbm9DLElBQUlpb0MsRUFBUTRDLElBQU03bkMsR0FDbEJpSSxNQUFLLFNBQUFtOUIsR0FDRkosRUFBTyxnQkFBaUIsQ0FBQ3FELFNBQVMsRUFBT3h2QyxLQUFNdXNDLEVBQVN2c0MsT0FDeERtc0MsRUFBTyx1QkFBd0IwRCxFQUFRM0QsUUFFbkMyRCxFQUFRN1csT0FBUzZXLEVBQVFDLFNBQ3pCM0QsRUFBTywwQkFFWHNCLEtBQU8zbUMsTUFBTSxnQkFUckIsT0FXVyxTQUFBckUsR0FHQyxDQUFDLElBQUssS0FBSzI0QixTQUFTMzRCLEVBQU04cEMsU0FBU2pCLFNBRW5DYSxFQUFPLGtCQUFrQixHQUN6QnZvQixHQUFPL2lCLEtBQUssQ0FBQ3dDLEtBQU0sWUFLbkJvcUMsS0FBTzNtQyxNQUFNLGFBQWMsQ0FDdkJJLE1BQU8rMEIsR0FBS3ozQixFQUFFLHFCQUNkcEIsUUFBUzY0QixHQUFLejNCLEVBQUUsNkJBS3BDd3JDLFVBQVcsWUFBdUIsSUFBckI3RCxFQUFxQixFQUFyQkEsT0FBUUMsRUFBYSxFQUFiQSxRQUNqQkQsRUFBTyxnQkFBaUIsQ0FBQ3FELFNBQVMsRUFBTXh2QyxLQUFNLEtBRTlDbXNDLEVBQU8sd0JBQXlCQyxFQUFRa0IsZUFDeENuQixFQUFPLHVCQUF3QixDQUMzQjlvQyxLQUFNNDRCLEdBQUt6M0IsRUFBRSxrQkFDYnVOLFFBQUl4TyxFQUNKbWdCLFNBQVUsV0FHZDRvQixLQUNLbm9DLElBQUlpb0MsRUFBUTRDLElBQU0sa0JBQ2xCNS9CLE1BQUssU0FBQW05QixHQUNGSixFQUFPLGdCQUFpQixDQUFDcUQsU0FBUyxFQUFPeHZDLEtBQU11c0MsRUFBU3ZzQyxPQUN4RHl0QyxLQUFPM21DLE1BQU0sZ0JBSnJCLE9BTVcsa0JBQU15eUIsSUFBSTk0QixVQUFVZ3NDLHdCQUVuQ3dELFVBQVcsWUFBdUIsSUFBckI5RCxFQUFxQixFQUFyQkEsT0FBUUMsRUFBYSxFQUFiQSxRQUNqQkQsRUFBTyxnQkFBaUIsQ0FBQ3FELFNBQVMsRUFBTXh2QyxLQUFNLEtBQzlDbXNDLEVBQU8sd0JBRVAsSUFBSW1CLEVBQWdCLENBQ2hCanFDLEtBQU00NEIsR0FBS3ozQixFQUFFLHFCQUNia2YsU0FBVSxTQUNWM1IsUUFBSXhPLEdBR1I0b0MsRUFBTyx1QkFBd0JtQixHQUUvQmhCLEtBQ0tub0MsSUFBSWlvQyxFQUFRNEMsSUFBTSxnQkFBa0I1QyxFQUFRMEQsUUFBUUMsS0FDcEQzZ0MsTUFBSyxTQUFBbTlCLEdBQ0ZKLEVBQU8sZ0JBQWlCLENBQUNxRCxTQUFTLEVBQU94dkMsS0FBTXVzQyxFQUFTdnNDLE9BQ3hEbXNDLEVBQU8sd0JBQXlCbUIsR0FFaENHLEtBQU8zbUMsTUFBTSxnQkFOckIsT0FRVyxrQkFBTXl5QixJQUFJOTRCLFVBQVVnc0Msd0JBRW5DeUQsc0JBQXVCLFlBQXVCLElBQXJCL0QsRUFBcUIsRUFBckJBLE9BQVFDLEVBQWEsRUFBYkEsUUFDN0JELEVBQU8sZ0JBQWlCLENBQUNxRCxTQUFTLEVBQU14dkMsS0FBTSxLQUU5Q21zQyxFQUFPLHdCQUF5QkMsRUFBUWtCLGVBQ3hDbkIsRUFBTyx1QkFBd0IsQ0FDM0I5b0MsS0FBTTQ0QixHQUFLejNCLEVBQUUsK0JBQ2J1TixRQUFJeE8sRUFDSm1nQixTQUFVLHdCQUdkNG9CLEtBQ0tub0MsSUFBSWlvQyxFQUFRNEMsSUFBTSx1QkFBeUI1QyxFQUFRMEQsUUFBUUMsS0FDM0QzZ0MsTUFBSyxTQUFBbTlCLEdBQ0ZKLEVBQU8sZ0JBQWlCLENBQUNxRCxTQUFTLEVBQU94dkMsS0FBTXVzQyxFQUFTdnNDLE9BRXhEeXRDLEtBQU8zbUMsTUFBTSxnQkFMckIsT0FPVyxrQkFBTXl5QixJQUFJOTRCLFVBQVVnc0Msd0JBRW5DMEQsU0FBVSxZQUF1QixJQUFyQmhFLEVBQXFCLEVBQXJCQSxPQUFRQyxFQUFhLEVBQWJBLFFBQ2hCRCxFQUFPLGdCQUFpQixDQUFDcUQsU0FBUyxFQUFNeHZDLEtBQU0sS0FDOUNtc0MsRUFBTyx3QkFFUCxJQUFJaUUsRUFBUSxDQUNSL3NDLEtBQU00NEIsR0FBS3ozQixFQUFFLG1CQUNidU4sUUFBSXhPLEVBQ0ptZ0IsU0FBVSxjQUdkeW9CLEVBQU8sdUJBQXdCaUUsR0FFL0I5RCxLQUNLbm9DLElBQUlpb0MsRUFBUTRDLElBQU0sZ0JBQWtCNUMsRUFBUTBELFFBQVFDLEtBQ3BEM2dDLE1BQUssU0FBQW05QixHQUNGSixFQUFPLGdCQUFpQixDQUFDcUQsU0FBUyxFQUFPeHZDLEtBQU11c0MsRUFBU3ZzQyxPQUN4RG1zQyxFQUFPLHdCQUF5QmlFLEdBRWhDM0MsS0FBTzNtQyxNQUFNLGdCQU5yQixPQVFXLGtCQUFNeXlCLElBQUk5NEIsVUFBVWdzQyx3QkFFbkM0RCxnQkFBaUIsV0FBb0JudEIsR0FBVSxJQUE1QmlwQixFQUE0QixFQUE1QkEsT0FBUUMsRUFBb0IsRUFBcEJBLFFBQ3ZCRCxFQUFPLGdCQUFpQixDQUFDcUQsU0FBUyxFQUFNeHZDLEtBQU0sS0FDOUNtc0MsRUFBTywwQkFBMEIsR0FHakMsSUFBSTFyQixPQUFRbGQsRUFFWixHQUFJNm9DLEVBQVFDLGFBQWMsQ0FDdEIsSUFBSXNCLEVBQWF2QixFQUFRQyxhQUFhaUUsYUFDaEMsVUFDQSxTQUVON3ZCLEVBQVEsc0JBQUgsT0FBeUJrdEIsRUFBekIsWUFBdUMvcEIsR0FBT3FLLGFBQWF0YSxPQUFPNlQsWUFHdkUvRyxFQUFRLHFCQUdaNnJCLEtBQ0tub0MsSUFBSXNjLEVBQU8sQ0FDUjlNLE9BQVEsQ0FBQ3VQLE1BQU9BLEtBRW5COVQsTUFBSyxTQUFBbTlCLEdBQ0ZKLEVBQU8sZ0JBQWlCLENBQUNxRCxTQUFTLEVBQU94dkMsS0FBTXVzQyxFQUFTdnNDLFVBTGhFLE9BT1csa0JBQU11NUIsSUFBSTk0QixVQUFVZ3NDLHdCQUVuQzhELGNBQWUsWUFBdUIsSUFBckJwRSxFQUFxQixFQUFyQkEsT0FBUUMsRUFBYSxFQUFiQSxRQUVyQixPQUFPLElBQUl6cUMsU0FBUSxTQUFDQyxFQUFTQyxHQUd6QixJQUFJNGUsT0FBUWxkLEVBR1JrZCxFQURBMnJCLEVBQVFDLGFBQ0EsMEJBQUgsT0FBNkJ6b0IsR0FBT3FLLGFBQWF0YSxPQUFPNlQsT0FFckQseUJBR1o4a0IsS0FDS25vQyxJQUFJc2MsRUFBUTJyQixFQUFRMEQsUUFBUUMsS0FDNUIzZ0MsTUFBSyxTQUFBbTlCLEdBQ0YzcUMsRUFBUTJxQyxHQUVSSixFQUFPLHFCQUFzQkksRUFBU3ZzQyxTQUw5QyxPQU9XLFNBQUN5QyxHQUNKWixFQUFPWSxHQUVQODJCLElBQUk5NEIsVUFBVWdzQyw0QkF3RzlCckIsVUFsR2MsQ0FDZG9GLG1CQURjLFNBQ0s3Z0IsRUFBTzhnQixHQUN0QjlnQixFQUFNOGYsV0FBYWdCLEdBRXZCQyxjQUpjLFNBSUEvZ0IsRUFBT2tnQixHQUNqQmxnQixFQUFNaWQsZUFBZ0IsR0FDdEJqZCxFQUFNM3ZCLEtBQU82dkMsRUFBUTd2QyxLQUNyQjJ2QixFQUFNZ2dCLFVBQVlFLEVBQVFMLFNBRTlCbUIscUJBVGMsU0FTT2hoQixHQUNqQkEsRUFBTTJmLGNBQWdCLElBRTFCc0IsYUFaYyxTQVlEamhCLEVBQU81ZCxHQUNoQjRkLEVBQU0zdkIsS0FBSzZ3QyxNQUFLLFNBQUF4VixHQUNSQSxFQUFLdHBCLEtBQU9BLElBQUlzcEIsRUFBS3lWLFlBQVN2dEMsT0FHMUN3dEMsc0JBakJjLFNBaUJRcGhCLEVBQU91YyxHQUN6QnZjLEVBQU0yZixjQUFjenVDLEtBQUtxckMsSUFFN0I4RSx1QkFwQmMsU0FvQlNyaEIsR0FDbkJBLEVBQU0yZixjQUFjbHFCLE9BRXhCNnJCLGlCQXZCYyxTQXVCR3RoQixFQUFPdWhCLEdBRWhCdmhCLEVBQU1pZCxnQkFBa0JqZCxFQUFNaWQsZUFBZTc2QixLQUFPbS9CLEVBQVluL0IsS0FDaEU0ZCxFQUFNaWQsZUFBaUJzRSxHQUkzQnZoQixFQUFNM3ZCLEtBQUs2d0MsTUFBSyxTQUFBeFYsR0FDUkEsRUFBS3RwQixLQUFPbS9CLEVBQVluL0IsS0FDeEJzcEIsRUFBS2g0QixLQUFPNnRDLEVBQVk3dEMsS0FDeEJnNEIsRUFBSzhWLE1BQVFELEVBQVlDLE1BQVFELEVBQVlDLE1BQVEsS0FDckQ5VixFQUFLcVQsTUFBUXdDLEVBQVl4QyxNQUFRd0MsRUFBWXhDLE1BQVEsVUFJakUwQyw0QkF0Q2MsU0FzQ2N6aEIsRUFBTTBMLEdBQ2hDMUwsRUFBTWlkLGVBQWlCamQsRUFBTWlkLGVBQWVua0MsUUFBTyxTQUFBNkQsR0FBTyxPQUFJQSxFQUFReUYsS0FBT3NwQixFQUFLdHBCLE9BRXBGcy9CLHNCQXpDYyxTQXlDUTFoQixHQUNsQkEsRUFBTWlkLGVBQWlCLElBRTNCMEUscUJBNUNjLFNBNENPM2hCLEVBQU8wTCxHQUN4QjFMLEVBQU1pZCxlQUFpQixHQUN2QmpkLEVBQU1pZCxlQUFlL3JDLEtBQUt3NkIsSUFFOUJrVyxvQkFoRGMsU0FnRE01aEIsRUFBTzBMLEdBQ3ZCLElBQUltVyxFQUFZN2hCLEVBQU0zdkIsS0FBSzZ3QyxNQUFLLFNBQUEzZixHQUFFLE9BQUlBLEVBQUduZixLQUFPc3BCLEVBQUt0cEIsTUFDbEQ0ZCxFQUFNaWQsZUFBZXhSLFNBQVNvVyxJQUVqQzdoQixFQUFNaWQsZUFBZS9yQyxLQUFLMndDLEdBQXdCN2hCLEVBQU0yZCxnQkFFNURtRSxpQkF0RGMsU0FzREc5aEIsR0FDYkEsRUFBTWlkLGVBQWlCamQsRUFBTTN2QixNQUVqQzB4Qyx1QkF6RGMsU0F5RFMvaEIsRUFBT2dpQixHQUMxQmhpQixFQUFNK2YsWUFBY2lDLEdBRXhCQyxtQkE1RGMsU0E0REtqaUIsRUFBTzN2QixHQUN0QjJ2QixFQUFNM3ZCLEtBQUs2d0MsTUFBSyxTQUFBeFYsR0FDUkEsRUFBS3RwQixLQUFPL1IsRUFBSzZ4QyxVQUFTeFcsRUFBS3lWLE9BQVM5d0MsT0FHcEQ4eEMsZUFqRWMsU0FpRUNuaUIsRUFBT3VjLEdBQ2xCdmMsRUFBTTN2QixLQUFLcWtCLFFBQVE2bkIsSUFFdkI2RixjQXBFYyxTQW9FQXBpQixFQUFPbWQsR0FDakJuZCxFQUFNM3ZCLEtBQU8ydkIsRUFBTTN2QixLQUFLd0ksT0FBT3NrQyxJQUVuQ2tGLFlBdkVjLFNBdUVGcmlCLEVBQU81ZCxHQUNmNGQsRUFBTTN2QixLQUFPMnZCLEVBQU0zdkIsS0FBS3lJLFFBQU8sU0FBQXlvQixHQUFFLE9BQUlBLEVBQUduZixLQUFPQSxNQUVuRGtnQyxxQkExRWMsU0EwRU90aUIsRUFBTzVkLEdBQ3hCNGQsRUFBTTN2QixLQUFLOEwsS0FBSSxTQUFBb2xCLEdBQ1BBLEVBQUduZixJQUFNbWYsRUFBR25mLEtBQU9BLEdBQUltZixFQUFHNGIsWUFHdENvRixxQkEvRWMsU0ErRU92aUIsRUFBT3VjLEdBQ3hCdmMsRUFBTTJkLGNBQWdCcEIsS0NsSWYsSUFDWHZjLE1BeEppQixDQUNqQmdlLFdBQVksU0FDWndFLFVBQU01dUMsR0F1Sk42b0MsUUFQWSxDQUNadUIsV0FBWSxTQUFBaGUsR0FBSyxPQUFJQSxFQUFNZ2UsWUFDM0J3RSxLQUFNLFNBQUF4aUIsR0FBSyxPQUFJQSxFQUFNd2lCLE9BTXJCcFAsUUFySlksQ0FDWnFQLFdBQVksWUFBdUIsSUFBckJqRyxFQUFxQixFQUFyQkEsT0FBUUMsRUFBYSxFQUFiQSxRQUVsQixPQUFPLElBQUl6cUMsU0FBUSxTQUFDQyxFQUFTQyxHQUN6QnlxQyxLQUNLbm9DLElBQUlpb0MsRUFBUTRDLElBQU0sUUFBVTVDLEVBQVEwRCxRQUFRQyxLQUM1QzNnQyxNQUFLLFNBQUNtOUIsR0FDSDNxQyxFQUFRMnFDLEdBR21DLFNBQXZDQSxFQUFTdnNDLEtBQUtBLEtBQUt3VCxXQUFXdUIsTUFBcUJ3M0IsRUFBU3ZzQyxLQUFLQSxLQUFLcXlDLGNBQWNDLFNBQVN0eUMsS0FBS3dULFdBQVcrK0Isb0JBQzdHM3VCLEdBQU8vaUIsS0FBSyxDQUFDd0MsS0FBTSxjQUV2QjhvQyxFQUFPLGdCQUFpQkksRUFBU3ZzQyxTQVR6QyxPQVdhLFNBQUN5QyxHQUNOWixFQUFPWSxHQUdILENBQUMsSUFBSyxLQUFLMjRCLFNBQVMzNEIsRUFBTThwQyxTQUFTakIsU0FFbkNhLEVBQU8sa0JBQWtCLFVBTTdDcUcsT0FBUSxZQUFjLElBQVpyRyxFQUFZLEVBQVpBLE9BRUZzRyxFQUFRanZDLFlBQVcsV0FDbkIyb0MsRUFBTyxtQkFBb0IsQ0FDdkJqbEMsTUFBTyxjQUNQOUQsUUFBUyx1QkFFZCxLQUVIa3BDLEtBQ0tPLEtBQUssV0FDTHo5QixNQUFLLFdBQ0Z0TSxhQUFhMnZDLEdBQ2J0RyxFQUFPLGdCQUVQdm9CLEdBQU8vaUIsS0FBSyxDQUFDd0MsS0FBTSxlQUcvQnF2QyxnQkFBaUIsU0FBQ2pULEVBQVN5TSxHQUN2QixJQUFJeUcsRUFBZ0IsR0FDaEI3RixFQUFRLENBQUNaLEdBR1JBLElBQ0RZLEVBQVFyTixFQUFRMk0sUUFBUVEsZ0JBRTVCRSxFQUFNbGtDLFNBQVEsU0FBQzVJLEdBQ1gsR0FBa0IsV0FBZEEsRUFBS2lELEtBQW1CLENBRXhCLEdBQUl3OEIsRUFBUTJNLFFBQVErRixLQUFLbnlDLEtBQUtxeUMsY0FBY08sV0FBVzV5QyxLQUFLd1QsV0FBV3EvQixRQUFRaEMsTUFBSyxTQUFBM0UsR0FBTSxPQUFJQSxFQUFPbjZCLEtBQU8vUixFQUFLK1IsTUFBSyxPQUV0SDRnQyxFQUFjOXhDLEtBQUssQ0FDZmtSLEdBQUkvUixFQUFLK1IsU0FNaEJtNkIsR0FDRHpNLEVBQVEwTSxPQUFPLHlCQUduQixJQUFJMkcsRUFBa0IsR0FHdEJoRyxFQUFNaGhDLEtBQUksU0FBQTlMLEdBQ0R5L0IsRUFBUTJNLFFBQVErRixLQUFLbnlDLEtBQUtxeUMsY0FBY08sV0FBVzV5QyxLQUFLd1QsV0FBV3EvQixRQUFRaEMsTUFBSyxTQUFBM0UsR0FBTSxPQUFJQSxFQUFPbjZCLEtBQU8vUixFQUFLK1IsT0FDOUcrZ0MsRUFBZ0JqeUMsS0FBS2IsTUFLN0J5L0IsRUFBUTBNLE9BQU8sb0JBQXFCMkcsR0FFcEN4RyxLQUNLTyxLQUFLcE4sRUFBUTJNLFFBQVE0QyxJQUFNLHNCQUF1QixDQUMvQzZELFFBQVNGLElBRmpCLE9BSVcsV0FDSHBaLElBQUk5NEIsVUFBVWdzQyx3QkFHMUJzRyxxQkFBc0IsV0FBOEI3RyxHQUFXLElBQXZDQyxFQUF1QyxFQUF2Q0EsT0FBUUMsRUFBK0IsRUFBL0JBLFFBQStCLEVBQXRCWSxTQUdyQ2IsRUFBTyw4QkFBK0JELEdBRXRDSSxLQUNLTyxLQUFLVCxFQUFRNEMsSUFBTSx1QkFBeUI5QyxFQUFPbjZCLEdBQUksQ0FDcEQ2N0IsUUFBUyxXQUZqQixPQUlXLFdBQ0hyVSxJQUFJOTRCLFVBQVVnc0MseUJBbUQxQnJCLFVBOUNjLENBQ2Q0SCxjQURjLFNBQ0FyakIsRUFBT3dpQixHQUNqQnhpQixFQUFNd2lCLEtBQU9BLEdBRWpCYyxlQUpjLFNBSUN0akIsRUFBTzVhLEdBQ2xCNGEsRUFBTWdlLFdBQWE1NEIsR0FFdkJtK0IsYUFQYyxTQU9EdmpCLEdBQ1RBLEVBQU1LLFNBQU16c0IsR0FFaEI0dkMsa0JBVmMsU0FVSXhqQixFQUFPdWMsR0FDckJBLEVBQU90akMsU0FBUSxTQUFBeXlCLEdBQ1gxTCxFQUFNd2lCLEtBQUtueUMsS0FBS3F5QyxjQUFjTyxXQUFXNXlDLEtBQUt3VCxXQUFXcS9CLFFBQVFoeUMsS0FBSyxDQUNsRWtSLEdBQUlzcEIsRUFBS3RwQixHQUNUMU8sS0FBTWc0QixFQUFLaDRCLEtBQ1hKLEtBQU1vNEIsRUFBS3A0QixXQUl2Qm13QyxZQW5CYyxTQW1CRnpqQixFQUFPdHNCLEdBQ2Zzc0IsRUFBTXdpQixLQUFLbnlDLEtBQUtxeUMsY0FBY0MsU0FBU3R5QyxLQUFLd1QsV0FBV25RLEtBQU9BLEdBRWxFZ3dDLGNBdEJjLFNBc0JBMWpCLEVBQU8yakIsR0FDakIzakIsRUFBTXdpQixLQUFLbnlDLEtBQUtxeUMsY0FBY0MsU0FBU3R5QyxLQUFLd1QsV0FBVzgvQixPQUFTQSxHQUVwRUMsNEJBekJjLFNBeUJjNWpCLEVBQU8wTCxHQUMvQjFMLEVBQU13aUIsS0FBS255QyxLQUFLcXlDLGNBQWNPLFdBQVc1eUMsS0FBS3dULFdBQVdxL0IsUUFBVWxqQixFQUFNd2lCLEtBQUtueUMsS0FBS3F5QyxjQUFjTyxXQUFXNXlDLEtBQUt3VCxXQUFXcS9CLFFBQVFwcUMsUUFBTyxTQUFBeWpDLEdBQU0sT0FBSUEsRUFBT242QixLQUFPc3BCLEVBQUt0cEIsT0FFNUt5aEMsMEJBNUJjLFNBNEJZN2pCLEVBQU8zdkIsR0FDN0IydkIsRUFBTXdpQixLQUFLbnlDLEtBQUtxeUMsY0FBY08sV0FBVzV5QyxLQUFLd1QsV0FBV3EvQixRQUFRaEMsTUFBSyxTQUFBM0UsR0FDOURBLEVBQU9uNkIsS0FBTy9SLEVBQUsrUixLQUNuQm02QixFQUFPN29DLEtBQU9yRCxFQUFLcUQsWSwyOEJDMUluQyxJQThJZSxJQUNYc3NCLE1BL0lpQixDQUNqQjhqQixrQkFBbUIsQ0FDZixDQUNJQyxNQUFPelgsR0FBS3ozQixFQUFFLGlCQUNkRCxNQUFPLFNBQ1BrQyxLQUFNLGFBRVYsQ0FDSWl0QyxNQUFPelgsR0FBS3ozQixFQUFFLGtCQUNkRCxNQUFPLFVBQ1BrQyxLQUFNLFNBR2Q0bEMsa0JBQWM5b0MsRUFDZG93QyxnQkFBWXB3QyxHQWtJWjZvQyxRQVJZLENBQ1pxSCxrQkFBbUIsU0FBQTlqQixHQUFLLE9BQUlBLEVBQU04akIsbUJBQ2xDcEgsYUFBYyxTQUFBMWMsR0FBSyxPQUFJQSxFQUFNMGMsY0FDN0JzSCxXQUFZLFNBQUFoa0IsR0FBSyxPQUFJQSxFQUFNZ2tCLGFBTTNCNVEsUUFqSVksQ0FDWjZRLGFBQWMsY0FBa0MsSUFBaEN6SCxFQUFnQyxFQUFoQ0EsT0FBUUMsRUFBd0IsRUFBeEJBLFFBQVd5RCxFQUFhLFdBaUI1QyxPQWhCQTFELEVBQU8sZ0JBQWlCLENBQUNxRCxTQUFTLEVBQU14dkMsS0FBTSxLQUUxQzZ2QyxFQUFReHRCLE1BQ1I4cEIsRUFBTyx3QkFHUEMsRUFBUXNELGNBQ1J2RCxFQUFPLDBCQUEwQixHQUNqQ3NCLEtBQU8zbUMsTUFBTSxnQkFHWCtvQyxFQUFRN1csTUFBUzZXLEVBQVFDLFNBQzNCM0QsRUFBTyx3QkFBeUJDLEVBQVFrQixlQUU1Q3VDLEVBQVEzRCxPQUFPeG9CLFNBQVcsU0FFbkIsSUFBSS9oQixTQUFRLFNBQUNDLEVBQVNDLEdBQ3pCeXFDLEtBQ0tub0MsSUFETCw4QkFDZ0MwckMsRUFBUTNELE9BQU9uNkIsR0FEL0MsWUFDcUQ2UixHQUFPcUssYUFBYXRhLE9BQU82VCxPQURoRixPQUN3RjRrQixFQUFRMEQsUUFBUUMsTUFDbkczZ0MsTUFBSyxTQUFBbTlCLEdBQ0ZKLEVBQU8sZ0JBQWlCLENBQUNxRCxTQUFTLEVBQU94dkMsS0FBTXVzQyxFQUFTdnNDLE9BQ3hEbXNDLEVBQU8sdUJBQXdCMEQsRUFBUTNELFFBQ3ZDdUIsS0FBTzNtQyxNQUFNLGFBRVQrb0MsRUFBUTdXLE9BQVM2VyxFQUFRQyxTQUN6QjNELEVBQU8sMEJBRVh2cUMsRUFBUTJxQyxNQVZoQixPQVlXLFNBQUM5cEMsR0FFSmdyQyxLQUFPM21DLE1BQU0sYUFBYyxDQUN2QkksTUFBTyswQixHQUFLejNCLEVBQUUscUJBQ2RwQixRQUFTNjRCLEdBQUt6M0IsRUFBRSx5QkFHcEIzQyxFQUFPWSxVQUl2Qm94QyxjQUFlLFlBQWMsSUFBWjFILEVBQVksRUFBWkEsT0FFYkcsS0FBTW5vQyxJQUFOLDJCQUE4QnlmLEdBQU9xSyxhQUFhdGEsT0FBTzZULFFBQ3BEcFksTUFBSyxTQUFBbTlCLEdBQ0ZKLEVBQU8sb0JBQXFCSSxFQUFTdnNDLFVBR2pEOHpDLGVBQWdCLFdBQWtCdHNCLEdBQVUsSUFBMUIya0IsRUFBMEIsRUFBMUJBLE9BQTBCLEVBQWxCeGMsTUFDdEIsT0FBTyxJQUFJaHVCLFNBQVEsU0FBQ0MsRUFBU0MsR0FDekJ5cUMsS0FDS25vQyxJQURMLDRCQUM4QnFqQixJQUN6QnBZLE1BQUssU0FBQW05QixHQUNGM3FDLEVBQVEycUMsR0FHUkosRUFBTyxvQkFBcUJJLEVBQVN2c0MsS0FBS0EsS0FBS3dULFlBQy9DMjRCLEVBQU8saUJBQWtCSSxFQUFTdnNDLEtBQUtBLEtBQUt3VCxXQUFXbTZCLGVBUC9ELE9BU1csU0FBQWxyQyxHQUNIWixFQUFPWSxHQUVzQixLQUF6QkEsRUFBTThwQyxTQUFTakIsUUFDZjFuQixHQUFPL2lCLEtBQUssQ0FBQ3dDLEtBQU0sb0JBSXZDMHdDLFlBQWEsV0FBb0JDLEdBQWUsSUFBakM3SCxFQUFpQyxFQUFqQ0EsT0FBUUMsRUFBeUIsRUFBekJBLFFBQ25CLE9BQU8sSUFBSXpxQyxTQUFRLFNBQUNDLEVBQVNDLEdBRXpCLElBQUlxa0IsRUFBUyxHQUNUNG1CLEVBQVEsQ0FBQ2tILEdBRVRBLElBQ0FsSCxFQUFRVixFQUFRUSxnQkFHcEJFLEVBQU1sa0MsU0FBUSxTQUFBNUksR0FDVmttQixFQUFPcmxCLEtBQUtiLEVBQUs4d0MsT0FBT3RwQixVQUc1QjhrQixLQUNLTyxLQUFLLG9CQUFxQixDQUN2QmUsUUFBUyxTQUNUMW5CLE9BQVFBLElBRVg5VyxNQUFLLFdBRUYwOUIsRUFBTWxrQyxTQUFRLFNBQUF5eUIsR0FHTCtRLEVBQVFrQixlQUFvRCxXQUFuQ2xCLEVBQVFrQixjQUFjNXBCLFVBQ2hEeW9CLEVBQU8sY0FBZTlRLEVBQUt0cEIsSUFJL0JvNkIsRUFBTyxlQUFnQjlRLEVBQUt0cEIsSUFFNUJvNkIsRUFBTyw0QkFFWHZxQyxHQUFRLE1BbkJoQixPQXNCVyxTQUFDYSxHQUNKODJCLElBQUk5NEIsVUFBVWdzQyxvQkFFZDVxQyxFQUFPWSxXQXVCdkIyb0MsVUFsQmMsQ0FDZDZJLGtCQURjLFNBQ0l0a0IsRUFBTzN2QixHQUNyQjJ2QixFQUFNMGMsYUFBZXJzQyxHQUV6QmswQyxrQkFKYyxTQUlJdmtCLEVBQU8zdkIsR0FDckIydkIsRUFBTWdrQixXQUFhM3pDLEtDODRCWixJQUNYMnZCLE1BeGhDaUIsQ0FDakJ3a0IscUJBQXVFLFNBQWpEQyxhQUFhQyxRQUFRLDBCQUFzQyxFQUNqRkMsZ0JBQWlCRixhQUFhQyxRQUFRLGlCQUFtQixPQUN6RGhuQyxZQUFROUosRUFDUm1OLFdBQU9uTixFQUNQZ3hDLG1CQUFlaHhDLEVBQ2ZpeEMsbUJBQWVqeEMsRUFDZmt4QyxZQUFRbHhDLEVBQ1J1c0MsUUFBUyxDQUNML0ksS0FBTXFOLGFBQWFDLFFBQVEsV0FBYTVzQixLQUFLcEwsTUFBTSszQixhQUFhQyxRQUFRLFlBQVl0TixLQUFPLE9BQzNGMk4sTUFBT04sYUFBYUMsUUFBUSxXQUFhNXNCLEtBQUtwTCxNQUFNKzNCLGFBQWFDLFFBQVEsWUFBWUssTUFBUSxjQUVqR0MsTUFBTyxDQUNILENBQ0lqQixNQUFPelgsR0FBS3ozQixFQUFFLGVBQ2RELE1BQU8sU0FFWCxDQUNJbXZDLE1BQU96WCxHQUFLejNCLEVBQUUsY0FDZEQsTUFBTyxTQUdmcXdDLFVBQVcsQ0FDUCxDQUFDbEIsTUFBTyxpQkFBa0JudkMsTUFBTyxNQUNqQyxDQUFDbXZDLE1BQU8sV0FBWW52QyxNQUFPLE1BQzNCLENBQUNtdkMsTUFBTyxjQUFlbnZDLE1BQU8sTUFDOUIsQ0FBQ212QyxNQUFPLGdCQUFpQm52QyxNQUFPLE1BQ2hDLENBQUNtdkMsTUFBTyxVQUFXbnZDLE1BQU8sTUFDMUIsQ0FBQ212QyxNQUFPLFVBQVdudkMsTUFBTyxNQUMxQixDQUFDbXZDLE1BQU8saUJBQWtCbnZDLE1BQU8sTUFDakMsQ0FBQ212QyxNQUFPLFVBQVdudkMsTUFBTyxNQUMxQixDQUFDbXZDLE1BQU8sU0FBVW52QyxNQUFPLE1BQ3pCLENBQUNtdkMsTUFBTyxXQUFZbnZDLE1BQU8sTUFDM0IsQ0FBQ212QyxNQUFPLGFBQWNudkMsTUFBTyxNQUM3QixDQUFDbXZDLE1BQU8sc0JBQXVCbnZDLE1BQU8sTUFDdEMsQ0FBQ212QyxNQUFPLFlBQWFudkMsTUFBTyxNQUM1QixDQUFDbXZDLE1BQU8sVUFBV252QyxNQUFPLE1BQzFCLENBQUNtdkMsTUFBTyxRQUFTbnZDLE1BQU8sTUFDeEIsQ0FBQ212QyxNQUFPLFlBQWFudkMsTUFBTyxNQUM1QixDQUFDbXZDLE1BQU8sVUFBV252QyxNQUFPLE1BQzFCLENBQUNtdkMsTUFBTyxhQUFjbnZDLE1BQU8sTUFDN0IsQ0FBQ212QyxNQUFPLFVBQVdudkMsTUFBTyxNQUMxQixDQUFDbXZDLE1BQU8sVUFBV252QyxNQUFPLE1BQzFCLENBQUNtdkMsTUFBTyxhQUFjbnZDLE1BQU8sTUFDN0IsQ0FBQ212QyxNQUFPLFdBQVludkMsTUFBTyxNQUMzQixDQUFDbXZDLE1BQU8sVUFBV252QyxNQUFPLE1BQzFCLENBQUNtdkMsTUFBTyxVQUFXbnZDLE1BQU8sTUFDMUIsQ0FBQ212QyxNQUFPLFNBQVVudkMsTUFBTyxNQUN6QixDQUFDbXZDLE1BQU8sUUFBU252QyxNQUFPLE1BQ3hCLENBQUNtdkMsTUFBTyxVQUFXbnZDLE1BQU8sTUFDMUIsQ0FBQ212QyxNQUFPLFNBQVVudkMsTUFBTyxNQUN6QixDQUFDbXZDLE1BQU8sVUFBV252QyxNQUFPLE1BQzFCLENBQUNtdkMsTUFBTyx5QkFBMEJudkMsTUFBTyxNQUN6QyxDQUFDbXZDLE1BQU8sV0FBWW52QyxNQUFPLE1BQzNCLENBQUNtdkMsTUFBTyxnQkFBaUJudkMsTUFBTyxNQUNoQyxDQUFDbXZDLE1BQU8sU0FBVW52QyxNQUFPLE1BQ3pCLENBQUNtdkMsTUFBTyxpQ0FBa0NudkMsTUFBTyxNQUNqRCxDQUFDbXZDLE1BQU8sb0JBQXFCbnZDLE1BQU8sTUFDcEMsQ0FBQ212QyxNQUFPLFdBQVludkMsTUFBTyxNQUMzQixDQUFDbXZDLE1BQU8sZUFBZ0JudkMsTUFBTyxNQUMvQixDQUFDbXZDLE1BQU8sVUFBV252QyxNQUFPLE1BQzFCLENBQUNtdkMsTUFBTyxXQUFZbnZDLE1BQU8sTUFDM0IsQ0FBQ212QyxNQUFPLFdBQVludkMsTUFBTyxNQUMzQixDQUFDbXZDLE1BQU8sU0FBVW52QyxNQUFPLE1BQ3pCLENBQUNtdkMsTUFBTyxhQUFjbnZDLE1BQU8sTUFDN0IsQ0FBQ212QyxNQUFPLGlCQUFrQm52QyxNQUFPLE1BQ2pDLENBQUNtdkMsTUFBTywyQkFBNEJudkMsTUFBTyxNQUMzQyxDQUFDbXZDLE1BQU8sT0FBUW52QyxNQUFPLE1BQ3ZCLENBQUNtdkMsTUFBTyxRQUFTbnZDLE1BQU8sTUFDeEIsQ0FBQ212QyxNQUFPLFFBQVNudkMsTUFBTyxNQUN4QixDQUFDbXZDLE1BQU8sbUJBQW9CbnZDLE1BQU8sTUFDbkMsQ0FBQ212QyxNQUFPLDBCQUEyQm52QyxNQUFPLE1BQzFDLENBQUNtdkMsTUFBTyxXQUFZbnZDLE1BQU8sTUFDM0IsQ0FBQ212QyxNQUFPLFVBQVdudkMsTUFBTyxNQUMxQixDQUFDbXZDLE1BQU8sUUFBU252QyxNQUFPLE1BQ3hCLENBQUNtdkMsTUFBTyx3Q0FBeUNudkMsTUFBTyxNQUN4RCxDQUFDbXZDLE1BQU8sZUFBZ0JudkMsTUFBTyxNQUMvQixDQUFDbXZDLE1BQU8sYUFBY252QyxNQUFPLE1BQzdCLENBQUNtdkMsTUFBTyxnQkFBa0JudkMsTUFBTyxNQUNqQyxDQUFDbXZDLE1BQU8sVUFBV252QyxNQUFPLE1BQzFCLENBQUNtdkMsTUFBTyxPQUFRbnZDLE1BQU8sTUFDdkIsQ0FBQ212QyxNQUFPLFNBQVVudkMsTUFBTyxNQUN6QixDQUFDbXZDLE1BQU8sVUFBV252QyxNQUFPLE1BQzFCLENBQUNtdkMsTUFBTyxXQUFZbnZDLE1BQU8sTUFDM0IsQ0FBQ212QyxNQUFPLFdBQVludkMsTUFBTyxNQUMzQixDQUFDbXZDLE1BQU8scUJBQXNCbnZDLE1BQU8sTUFDckMsQ0FBQ212QyxNQUFPLFVBQVdudkMsTUFBTyxNQUMxQixDQUFDbXZDLE1BQU8sUUFBU252QyxNQUFPLE1BQ3hCLENBQUNtdkMsTUFBTyxjQUFlbnZDLE1BQU8sTUFDOUIsQ0FBQ212QyxNQUFPLG9CQUFxQm52QyxNQUFPLE1BQ3BDLENBQUNtdkMsTUFBTyxVQUFXbnZDLE1BQU8sTUFDMUIsQ0FBQ212QyxNQUFPLFVBQVdudkMsTUFBTyxNQUMxQixDQUFDbXZDLE1BQU8sV0FBWW52QyxNQUFPLE1BQzNCLENBQUNtdkMsTUFBTyw4QkFBK0JudkMsTUFBTyxNQUM5QyxDQUFDbXZDLE1BQU8sZ0JBQWlCbnZDLE1BQU8sTUFDaEMsQ0FBQ212QyxNQUFPLE9BQVFudkMsTUFBTyxNQUN2QixDQUFDbXZDLE1BQU8sVUFBV252QyxNQUFPLE1BQzFCLENBQUNtdkMsTUFBTyxTQUFVbnZDLE1BQU8sTUFDekIsQ0FBQ212QyxNQUFPLGdCQUFpQm52QyxNQUFPLE1BQ2hDLENBQUNtdkMsTUFBTyxtQkFBb0JudkMsTUFBTyxNQUNuQyxDQUFDbXZDLE1BQU8sOEJBQStCbnZDLE1BQU8sTUFDOUMsQ0FBQ212QyxNQUFPLFFBQVNudkMsTUFBTyxNQUN4QixDQUFDbXZDLE1BQU8sU0FBVW52QyxNQUFPLE1BQ3pCLENBQUNtdkMsTUFBTyxVQUFXbnZDLE1BQU8sTUFDMUIsQ0FBQ212QyxNQUFPLFVBQVdudkMsTUFBTyxNQUMxQixDQUFDbXZDLE1BQU8sUUFBU252QyxNQUFPLE1BQ3hCLENBQUNtdkMsTUFBTyxZQUFhbnZDLE1BQU8sTUFDNUIsQ0FBQ212QyxNQUFPLFNBQVVudkMsTUFBTyxNQUN6QixDQUFDbXZDLE1BQU8sWUFBYW52QyxNQUFPLE1BQzVCLENBQUNtdkMsTUFBTyxVQUFXbnZDLE1BQU8sTUFDMUIsQ0FBQ212QyxNQUFPLGFBQWNudkMsTUFBTyxNQUM3QixDQUFDbXZDLE1BQU8sT0FBUW52QyxNQUFPLE1BQ3ZCLENBQUNtdkMsTUFBTyxZQUFhbnZDLE1BQU8sTUFDNUIsQ0FBQ212QyxNQUFPLFdBQVludkMsTUFBTyxNQUMzQixDQUFDbXZDLE1BQU8sU0FBVW52QyxNQUFPLE1BQ3pCLENBQUNtdkMsTUFBTyxnQkFBaUJudkMsTUFBTyxNQUNoQyxDQUFDbXZDLE1BQU8sU0FBVW52QyxNQUFPLE1BQ3pCLENBQUNtdkMsTUFBTyxRQUFTbnZDLE1BQU8sTUFDeEIsQ0FBQ212QyxNQUFPLG9DQUFxQ252QyxNQUFPLE1BQ3BELENBQUNtdkMsTUFBTyxnQ0FBaUNudkMsTUFBTyxNQUNoRCxDQUFDbXZDLE1BQU8sV0FBWW52QyxNQUFPLE1BQzNCLENBQUNtdkMsTUFBTyxZQUFhbnZDLE1BQU8sTUFDNUIsQ0FBQ212QyxNQUFPLFVBQVdudkMsTUFBTyxNQUMxQixDQUFDbXZDLE1BQU8sVUFBV252QyxNQUFPLE1BQzFCLENBQUNtdkMsTUFBTyxRQUFTbnZDLE1BQU8sTUFDeEIsQ0FBQ212QyxNQUFPLFlBQWFudkMsTUFBTyxNQUM1QixDQUFDbXZDLE1BQU8sNEJBQTZCbnZDLE1BQU8sTUFDNUMsQ0FBQ212QyxNQUFPLE9BQVFudkMsTUFBTyxNQUN2QixDQUFDbXZDLE1BQU8sVUFBV252QyxNQUFPLE1BQzFCLENBQUNtdkMsTUFBTyxjQUFlbnZDLE1BQU8sTUFDOUIsQ0FBQ212QyxNQUFPLFNBQVVudkMsTUFBTyxNQUN6QixDQUFDbXZDLE1BQU8sUUFBU252QyxNQUFPLE1BQ3hCLENBQUNtdkMsTUFBTyxVQUFXbnZDLE1BQU8sTUFDMUIsQ0FBQ212QyxNQUFPLFFBQVNudkMsTUFBTyxNQUN4QixDQUFDbXZDLE1BQU8sU0FBVW52QyxNQUFPLE1BQ3pCLENBQUNtdkMsTUFBTyxTQUFVbnZDLE1BQU8sTUFDekIsQ0FBQ212QyxNQUFPLGFBQWNudkMsTUFBTyxNQUM3QixDQUFDbXZDLE1BQU8sUUFBU252QyxNQUFPLE1BQ3hCLENBQUNtdkMsTUFBTyxXQUFZbnZDLE1BQU8sTUFDM0IsQ0FBQ212QyxNQUFPLHlDQUEyQ252QyxNQUFPLE1BQzFELENBQUNtdkMsTUFBTyxxQkFBc0JudkMsTUFBTyxNQUNyQyxDQUFDbXZDLE1BQU8sU0FBVW52QyxNQUFPLE1BQ3pCLENBQUNtdkMsTUFBTyxhQUFjbnZDLE1BQU8sTUFDN0IsQ0FBQ212QyxNQUFPLG1DQUFxQ252QyxNQUFPLE1BQ3BELENBQUNtdkMsTUFBTyxTQUFVbnZDLE1BQU8sTUFDekIsQ0FBQ212QyxNQUFPLFVBQVdudkMsTUFBTyxNQUMxQixDQUFDbXZDLE1BQU8sVUFBV252QyxNQUFPLE1BQzFCLENBQUNtdkMsTUFBTyxVQUFXbnZDLE1BQU8sTUFDMUIsQ0FBQ212QyxNQUFPLHlCQUEwQm52QyxNQUFPLE1BQ3pDLENBQUNtdkMsTUFBTyxnQkFBaUJudkMsTUFBTyxNQUNoQyxDQUFDbXZDLE1BQU8sWUFBYW52QyxNQUFPLE1BQzVCLENBQUNtdkMsTUFBTyxhQUFjbnZDLE1BQU8sTUFDN0IsQ0FBQ212QyxNQUFPLFFBQVNudkMsTUFBTyxNQUN4QixDQUFDbXZDLE1BQU8sNkNBQThDbnZDLE1BQU8sTUFDN0QsQ0FBQ212QyxNQUFPLGFBQWNudkMsTUFBTyxNQUM3QixDQUFDbXZDLE1BQU8sU0FBVW52QyxNQUFPLE1BQ3pCLENBQUNtdkMsTUFBTyxXQUFZbnZDLE1BQU8sTUFDM0IsQ0FBQ212QyxNQUFPLFdBQVludkMsTUFBTyxNQUMzQixDQUFDbXZDLE1BQU8sT0FBUW52QyxNQUFPLE1BQ3ZCLENBQUNtdkMsTUFBTyxRQUFTbnZDLE1BQU8sTUFDeEIsQ0FBQ212QyxNQUFPLG1CQUFvQm52QyxNQUFPLE1BQ25DLENBQUNtdkMsTUFBTyxhQUFjbnZDLE1BQU8sTUFDN0IsQ0FBQ212QyxNQUFPLGFBQWNudkMsTUFBTyxNQUM3QixDQUFDbXZDLE1BQU8sWUFBYW52QyxNQUFPLE1BQzVCLENBQUNtdkMsTUFBTyxVQUFXbnZDLE1BQU8sTUFDMUIsQ0FBQ212QyxNQUFPLFNBQVVudkMsTUFBTyxNQUN6QixDQUFDbXZDLE1BQU8sa0NBQW1DbnZDLE1BQU8sTUFDbEQsQ0FBQ212QyxNQUFPLHVCQUF3Qm52QyxNQUFPLE1BQ3ZDLENBQUNtdkMsTUFBTyxTQUFVbnZDLE1BQU8sTUFDekIsQ0FBQ212QyxNQUFPLFdBQVludkMsTUFBTyxNQUMzQixDQUFDbXZDLE1BQU8sYUFBY252QyxNQUFPLE1BQzdCLENBQUNtdkMsTUFBTyxVQUFXbnZDLE1BQU8sTUFDMUIsQ0FBQ212QyxNQUFPLGFBQWNudkMsTUFBTyxNQUM3QixDQUFDbXZDLE1BQU8sVUFBV252QyxNQUFPLE1BQzFCLENBQUNtdkMsTUFBTyxVQUFXbnZDLE1BQU8sTUFDMUIsQ0FBQ212QyxNQUFPLFFBQVNudkMsTUFBTyxNQUN4QixDQUFDbXZDLE1BQU8sUUFBU252QyxNQUFPLE1BQ3hCLENBQUNtdkMsTUFBTyxjQUFlbnZDLE1BQU8sTUFDOUIsQ0FBQ212QyxNQUFPLHVCQUF3Qm52QyxNQUFPLE1BQ3ZDLENBQUNtdkMsTUFBTyxnQkFBaUJudkMsTUFBTyxNQUNoQyxDQUFDbXZDLE1BQU8sY0FBZW52QyxNQUFPLE1BQzlCLENBQUNtdkMsTUFBTyxZQUFhbnZDLE1BQU8sTUFDNUIsQ0FBQ212QyxNQUFPLFFBQVNudkMsTUFBTyxNQUN4QixDQUFDbXZDLE1BQU8sVUFBV252QyxNQUFPLE1BQzFCLENBQUNtdkMsTUFBTyxPQUFRbnZDLE1BQU8sTUFDdkIsQ0FBQ212QyxNQUFPLGlCQUFrQm52QyxNQUFPLE1BQ2pDLENBQUNtdkMsTUFBTywyQkFBNEJudkMsTUFBTyxNQUMzQyxDQUFDbXZDLE1BQU8sU0FBVW52QyxNQUFPLE1BQ3pCLENBQUNtdkMsTUFBTyxPQUFRbnZDLE1BQU8sTUFDdkIsQ0FBQ212QyxNQUFPLFdBQVludkMsTUFBTyxNQUMzQixDQUFDbXZDLE1BQU8sUUFBU252QyxNQUFPLE1BQ3hCLENBQUNtdkMsTUFBTyxrQ0FBbUNudkMsTUFBTyxNQUNsRCxDQUFDbXZDLE1BQU8sU0FBVW52QyxNQUFPLE1BQ3pCLENBQUNtdkMsTUFBTyxtQkFBb0JudkMsTUFBTyxNQUNuQyxDQUFDbXZDLE1BQU8sV0FBWW52QyxNQUFPLE1BQzNCLENBQUNtdkMsTUFBTyxPQUFRbnZDLE1BQU8sTUFDdkIsQ0FBQ212QyxNQUFPLGNBQWVudkMsTUFBTyxNQUM5QixDQUFDbXZDLE1BQU8sV0FBWW52QyxNQUFPLE1BQzNCLENBQUNtdkMsTUFBTyxTQUFVbnZDLE1BQU8sTUFDekIsQ0FBQ212QyxNQUFPLFdBQVludkMsTUFBTyxNQUMzQixDQUFDbXZDLE1BQU8sY0FBZW52QyxNQUFPLE1BQzlCLENBQUNtdkMsTUFBTyxRQUFTbnZDLE1BQU8sTUFDeEIsQ0FBQ212QyxNQUFPLFVBQVdudkMsTUFBTyxNQUMxQixDQUFDbXZDLE1BQU8sVUFBV252QyxNQUFPLE1BQzFCLENBQUNtdkMsTUFBTyxxQkFBc0JudkMsTUFBTyxNQUNyQyxDQUFDbXZDLE1BQU8sU0FBVW52QyxNQUFPLE1BQ3pCLENBQUNtdkMsTUFBTyxlQUFnQm52QyxNQUFPLE1BQy9CLENBQUNtdkMsTUFBTyx3QkFBeUJudkMsTUFBTyxNQUN4QyxDQUFDbXZDLE1BQU8sY0FBZW52QyxNQUFPLE1BQzlCLENBQUNtdkMsTUFBTyw0QkFBNkJudkMsTUFBTyxNQUM1QyxDQUFDbXZDLE1BQU8sbUNBQW9DbnZDLE1BQU8sTUFDbkQsQ0FBQ212QyxNQUFPLFFBQVNudkMsTUFBTyxNQUN4QixDQUFDbXZDLE1BQU8sYUFBY252QyxNQUFPLE1BQzdCLENBQUNtdkMsTUFBTyx3QkFBeUJudkMsTUFBTyxNQUN4QyxDQUFDbXZDLE1BQU8sZUFBZ0JudkMsTUFBTyxNQUMvQixDQUFDbXZDLE1BQU8sVUFBV252QyxNQUFPLE1BQzFCLENBQUNtdkMsTUFBTyx3QkFBeUJudkMsTUFBTyxNQUN4QyxDQUFDbXZDLE1BQU8sYUFBY252QyxNQUFPLE1BQzdCLENBQUNtdkMsTUFBTyxlQUFnQm52QyxNQUFPLE1BQy9CLENBQUNtdkMsTUFBTyxZQUFhbnZDLE1BQU8sTUFDNUIsQ0FBQ212QyxNQUFPLFdBQVludkMsTUFBTyxNQUMzQixDQUFDbXZDLE1BQU8sa0JBQW1CbnZDLE1BQU8sTUFDbEMsQ0FBQ212QyxNQUFPLFVBQVdudkMsTUFBTyxNQUMxQixDQUFDbXZDLE1BQU8sZUFBZ0JudkMsTUFBTyxNQUMvQixDQUFDbXZDLE1BQU8sK0NBQWdEbnZDLE1BQU8sTUFDL0QsQ0FBQ212QyxNQUFPLFFBQVNudkMsTUFBTyxNQUN4QixDQUFDbXZDLE1BQU8sWUFBYW52QyxNQUFPLE1BQzVCLENBQUNtdkMsTUFBTyxRQUFTbnZDLE1BQU8sTUFDeEIsQ0FBQ212QyxNQUFPLFdBQVludkMsTUFBTyxNQUMzQixDQUFDbXZDLE1BQU8seUJBQTBCbnZDLE1BQU8sTUFDekMsQ0FBQ212QyxNQUFPLFlBQWFudkMsTUFBTyxNQUM1QixDQUFDbXZDLE1BQU8sU0FBVW52QyxNQUFPLE1BQ3pCLENBQUNtdkMsTUFBTyxjQUFlbnZDLE1BQU8sTUFDOUIsQ0FBQ212QyxNQUFPLHVCQUF3Qm52QyxNQUFPLE1BQ3ZDLENBQUNtdkMsTUFBTyw0QkFBNkJudkMsTUFBTyxNQUM1QyxDQUFDbXZDLE1BQU8sYUFBY252QyxNQUFPLE1BQzdCLENBQUNtdkMsTUFBTywrQkFBZ0NudkMsTUFBTyxNQUMvQyxDQUFDbXZDLE1BQU8sV0FBWW52QyxNQUFPLE1BQzNCLENBQUNtdkMsTUFBTyxjQUFlbnZDLE1BQU8sTUFDOUIsQ0FBQ212QyxNQUFPLE9BQVFudkMsTUFBTyxNQUN2QixDQUFDbXZDLE1BQU8sVUFBV252QyxNQUFPLE1BQzFCLENBQUNtdkMsTUFBTyxRQUFTbnZDLE1BQU8sTUFDeEIsQ0FBQ212QyxNQUFPLHNCQUF1Qm52QyxNQUFPLE1BQ3RDLENBQUNtdkMsTUFBTyxVQUFXbnZDLE1BQU8sTUFDMUIsQ0FBQ212QyxNQUFPLFNBQVVudkMsTUFBTyxNQUN6QixDQUFDbXZDLE1BQU8sZUFBZ0JudkMsTUFBTyxNQUMvQixDQUFDbXZDLE1BQU8sMkJBQTRCbnZDLE1BQU8sTUFDM0MsQ0FBQ212QyxNQUFPLFNBQVVudkMsTUFBTyxNQUN6QixDQUFDbXZDLE1BQU8sU0FBVW52QyxNQUFPLE1BQ3pCLENBQUNtdkMsTUFBTyxVQUFXbnZDLE1BQU8sTUFDMUIsQ0FBQ212QyxNQUFPLHVCQUF3Qm52QyxNQUFPLE1BQ3ZDLENBQUNtdkMsTUFBTyxpQkFBa0JudkMsTUFBTyxNQUNqQyxDQUFDbXZDLE1BQU8sZ0JBQWlCbnZDLE1BQU8sTUFDaEMsQ0FBQ212QyxNQUFPLHVDQUF3Q252QyxNQUFPLE1BQ3ZELENBQUNtdkMsTUFBTyxVQUFXbnZDLE1BQU8sTUFDMUIsQ0FBQ212QyxNQUFPLGFBQWNudkMsTUFBTyxNQUM3QixDQUFDbXZDLE1BQU8sVUFBV252QyxNQUFPLE1BQzFCLENBQUNtdkMsTUFBTyxZQUFhbnZDLE1BQU8sTUFDNUIsQ0FBQ212QyxNQUFPLFdBQVludkMsTUFBTyxNQUMzQixDQUFDbXZDLE1BQU8sMEJBQTJCbnZDLE1BQU8sTUFDMUMsQ0FBQ212QyxNQUFPLHVCQUF3Qm52QyxNQUFPLE1BQ3ZDLENBQUNtdkMsTUFBTyxvQkFBcUJudkMsTUFBTyxNQUNwQyxDQUFDbXZDLE1BQU8saUJBQWtCbnZDLE1BQU8sTUFDakMsQ0FBQ212QyxNQUFPLFFBQVNudkMsTUFBTyxNQUN4QixDQUFDbXZDLE1BQU8sU0FBVW52QyxNQUFPLE1BQ3pCLENBQUNtdkMsTUFBTyxXQUFZbnZDLE1BQU8sT0FFL0Jzd0MsZUFBZ0IsQ0FDWixDQUNJbkIsTUFBT3pYLEdBQUt6M0IsRUFBRSw4QkFBK0IsQ0FBQ0QsTUFBTyxJQUNyREEsTUFBTyxHQUVYLENBQ0ltdkMsTUFBT3pYLEdBQUt6M0IsRUFBRSw4QkFBK0IsQ0FBQ0QsTUFBTyxJQUNyREEsTUFBTyxHQUVYLENBQ0ltdkMsTUFBT3pYLEdBQUt6M0IsRUFBRSw4QkFBK0IsQ0FBQ0QsTUFBTyxJQUNyREEsTUFBTyxHQUVYLENBQ0ltdkMsTUFBT3pYLEdBQUt6M0IsRUFBRSw4QkFBK0IsQ0FBQ0QsTUFBTyxLQUNyREEsTUFBTyxJQUVYLENBQ0ltdkMsTUFBT3pYLEdBQUt6M0IsRUFBRSw2QkFBOEIsQ0FBQ0QsTUFBTyxJQUNwREEsTUFBTyxJQUVYLENBQ0ltdkMsTUFBT3pYLEdBQUt6M0IsRUFBRSw2QkFBOEIsQ0FBQ0QsTUFBTyxJQUNwREEsTUFBTyxJQUVYLENBQ0ltdkMsTUFBT3pYLEdBQUt6M0IsRUFBRSw2QkFBOEIsQ0FBQ0QsTUFBTyxJQUNwREEsTUFBTyxNQUdmdXdDLGFBQWMsQ0FDVixDQUNJcEIsTUFBTyw2QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLGFBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyxzQkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHVCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8scUJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyx1QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHVCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sdUJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyxzQkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHNCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sMEJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTywwQkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHlCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8seUJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyxzQkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHlCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sMkJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyw4Q0FDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHNCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sdUJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyxzQkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHNCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sd0JBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyx1QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHdCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sNEJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyw4QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLGtDQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sa0JBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyxxQkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLDhCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sdUJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyx1QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHdCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sMEJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyxzQkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHFCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8scUJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyx5QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHVCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sOEJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyx1QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHVCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sK0JBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyxzQkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHVCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sc0JBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyx3QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLDJCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sc0JBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyx3QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHVCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8seUJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyx5QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHlCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sd0JBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyxxQkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLDBCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sMkJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyx3QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHFCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sMEJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyx3QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHdCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sZ0JBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyx1QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHFCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sd0JBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyx3QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHlCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sd0JBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyx3QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLDBCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sMEJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyw0QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHdCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8scUJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyxxQkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHlCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sd0JBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTywyQkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHFCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sd0JBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyx1QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHFDQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sMEJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTywyQkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLDJCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sdUJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyx3QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHdCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sMEJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTywrQkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLDJCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sMkJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyx3QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHFCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8scUJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyxxQkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHNCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sc0JBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyxvQ0FDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLDZCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8seUJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyxvQkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLG9CQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sc0JBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTywwQkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLDZCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8seUJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTywrQkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHdCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sMkJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyx5QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHlCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sMEJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyx3QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHNCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sb0JBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTywyQkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLDJCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sa0JBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyx1QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLG1DQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8scUJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyx5QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLDBCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sb0NBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyx1QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLHdCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8scUJBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyx3QkFDUG52QyxNQUFPLE9BRVgsQ0FDSW12QyxNQUFPLCtCQUNQbnZDLE1BQU8sT0FFWCxDQUNJbXZDLE1BQU8sb0JBQ1BudkMsTUFBTyxPQUVYLENBQ0ltdkMsTUFBTyx1QkFDUG52QyxNQUFPLFFBR2Z3d0MsVUFBVyxDQUNQLENBQ0l4d0MsTUFBTyxRQUNQbXZDLE1BQU8sb0NBRVgsQ0FDSW52QyxNQUFPLFFBQ1BtdkMsTUFBTyxxQ0FFWCxDQUNJbnZDLE1BQU8sUUFDUG12QyxNQUFPLHVCQUVYLENBQ0ludkMsTUFBTyxPQUNQbXZDLE1BQU8sc0JBRVgsQ0FDSW52QyxNQUFPLE9BQ1BtdkMsTUFBTywwQ0FFWCxDQUNJbnZDLE1BQU8sT0FDUG12QyxNQUFPLDJDQUVYLENBQ0ludkMsTUFBTyxPQUNQbXZDLE1BQU8sdURBRVgsQ0FDSW52QyxNQUFPLE9BQ1BtdkMsTUFBTyx3REFFWCxDQUNJbnZDLE1BQU8sT0FDUG12QyxNQUFPLHVEQUVYLENBQ0ludkMsTUFBTyxPQUNQbXZDLE1BQU8sNEJBRVgsQ0FDSW52QyxNQUFPLE9BQ1BtdkMsTUFBTyxnREFFWCxDQUNJbnZDLE1BQU8sT0FDUG12QyxNQUFPLDRCQUVYLENBQ0ludkMsTUFBTyxPQUNQbXZDLE1BQU8sMENBRVgsQ0FDSW52QyxNQUFPLE1BQ1BtdkMsTUFBTyx5REFFWCxDQUNJbnZDLE1BQU8sTUFDUG12QyxNQUFPLG1EQUVYLENBQ0ludkMsTUFBTyxNQUNQbXZDLE1BQU8seUNBRVgsQ0FDSW52QyxNQUFPLE1BQ1BtdkMsTUFBTyx1REFFWCxDQUNJbnZDLE1BQU8sTUFDUG12QyxNQUFPLHNCQUVYLENBQ0ludkMsTUFBTyxNQUNQbXZDLE1BQU8sZ0RBRVgsQ0FDSW52QyxNQUFPLE1BQ1BtdkMsTUFBTyxxQkFFWCxDQUNJbnZDLE1BQU8sTUFDUG12QyxNQUFPLDBEQUVYLENBQ0ludkMsTUFBTyxNQUNQbXZDLE1BQU8sbURBRVgsQ0FDSW52QyxNQUFPLE9BQ1BtdkMsTUFBTyx5QkFFWCxDQUNJbnZDLE1BQU8sTUFDUG12QyxNQUFPLHNDQUVYLENBQ0ludkMsTUFBTyxNQUNQbXZDLE1BQU8sdUNBRVgsQ0FDSW52QyxNQUFPLE1BQ1BtdkMsTUFBTyxvREFFWCxDQUNJbnZDLE1BQU8sTUFDUG12QyxNQUFPLHFEQUVYLENBQ0ludkMsTUFBTyxNQUNQbXZDLE1BQU8sZ0NBRVgsQ0FDSW52QyxNQUFPLE9BQ1BtdkMsTUFBTyxxREFFWCxDQUNJbnZDLE1BQU8sT0FDUG12QyxNQUFPLHdEQUVYLENBQ0ludkMsTUFBTyxPQUNQbXZDLE1BQU8sd0RBdUZmdEgsUUFyQlksQ0FDWjRJLGdCQUFpQixTQUFBcmxCLEdBQUssT0FBSUEsRUFBTXdrQixzQkFDaENHLGdCQUFpQixTQUFBM2tCLEdBQUssT0FBSUEsRUFBTTJrQixpQkFDaENPLGVBQWdCLFNBQUFsbEIsR0FBSyxPQUFJQSxFQUFNa2xCLGdCQUMvQk4sY0FBZSxTQUFBNWtCLEdBQUssT0FBSUEsRUFBTTRrQixlQUM5QkMsY0FBZSxTQUFBN2tCLEdBQUssT0FBSUEsRUFBTTZrQixlQUM5Qk0sYUFBYyxTQUFBbmxCLEdBQUssT0FBSUEsRUFBTW1sQixjQUM3QkYsVUFBVyxTQUFBamxCLEdBQUssT0FBSUEsRUFBTWlsQixXQUMxQkcsVUFBVyxTQUFBcGxCLEdBQUssT0FBSUEsRUFBTW9sQixXQUMxQi9GLElBQUssU0FBQXJmLEdBQUssT0FBSUEsRUFBTXRpQixPQUFPMmhDLEtBQzNCM2hDLE9BQVEsU0FBQXNpQixHQUFLLE9BQUlBLEVBQU10aUIsUUFDdkJvbkMsT0FBUSxTQUFBOWtCLEdBQUssT0FBSUEsRUFBTThrQixRQUN2Qi9qQyxNQUFPLFNBQUFpZixHQUFLLE9BQUlBLEVBQU1qZixPQUN0QmlrQyxNQUFPLFNBQUFobEIsR0FBSyxPQUFJQSxFQUFNZ2xCLE9BQ3RCN0UsUUFBUyxTQUFDbmdCLEdBQ04sTUFBTyxDQUFDbWdCLFFBQVNuZ0IsRUFBTW1nQixRQUFTQyxJQUFLLFNBQVdwZ0IsRUFBTW1nQixRQUFRNEUsTUFBUSxjQUFnQi9rQixFQUFNbWdCLFFBQVEvSSxRQU94R2hFLFFBcEZZLENBQ1prUyxrQkFBbUIsV0FBa0JDLEdBQVksSUFBNUIvSSxFQUE0QixFQUE1QkEsT0FHYmdKLEdBSHlDLEVBQXBCeGxCLE1BR1B1bEIsR0FHbEJkLGFBQWFnQixRQUFRLGVBQWdCRCxHQUdyQ2hKLEVBQU8saUJBQWtCZ0osSUFFN0JFLGVBQWdCLFNBQUM1VixHQUFvQyxJQUEzQjZWLEVBQTJCLDREQUFkL3hDLEVBQzlCK3hDLEVBT0Q3VixFQUFRME0sT0FBTyxtQkFBb0JtSixHQU4vQjdWLEVBQVE5UCxNQUFNd2tCLHFCQUNkMVUsRUFBUTBNLE9BQU8sb0JBQW9CLEdBRW5DMU0sRUFBUTBNLE9BQU8sb0JBQW9CLEtBb0UvQ2YsVUE1RGMsQ0FDZG1LLGlCQURjLFNBQ0c1bEIsRUFBTzN2QixHQUNwQjJ2QixFQUFNOGtCLE9BQVN6MEMsR0FFbkJ3MUMsZUFKYyxTQUlDN2xCLEdBQ1hBLEVBQU1tZ0IsUUFBUTRFLE1BQVFqdEIsS0FBS3BMLE1BQU0rM0IsYUFBYUMsUUFBUSxZQUFZSyxNQUNsRS9rQixFQUFNbWdCLFFBQVEvSSxLQUFPdGYsS0FBS3BMLE1BQU0rM0IsYUFBYUMsUUFBUSxZQUFZdE4sTUFFckUwTyxLQVJjLFNBUVQ5bEIsRUFBTzN2QixHQUNSMnZCLEVBQU10aUIsT0FBU3JOLEVBQUtxTixPQUNwQnNpQixFQUFNNGtCLGNBQWdCdjBDLEVBQUswMUMsZUFFL0JDLFNBWmMsU0FZTGhtQixFQUFPM3ZCLEdBQ1oydkIsRUFBTXRpQixPQUFPdW9DLE9BQVM1MUMsR0FFMUI2MUMsc0JBZmMsU0FlUWxtQixFQUFPM3ZCLEdBQ3pCMnZCLEVBQU10aUIsT0FBT3lvQyxrQkFBb0I5MUMsR0FFckMrMUMsaUJBbEJjLFNBa0JHcG1CLEVBQU9xbUIsR0FDcEJybUIsRUFBTXdrQixxQkFBdUI2QixFQUU3QjVCLGFBQWFnQixRQUFRLHVCQUF3QlksSUFFakRDLGVBdkJjLFNBdUJDdG1CLEVBQU9wckIsR0FDbEJvckIsRUFBTXRpQixPQUFPNm9DLGdCQUFrQjN4QyxHQUVuQzR4QyxrQkExQmMsU0EwQkl4bUIsRUFBTzN2QixHQUNyQjJ2QixFQUFNamYsTUFBUTFRLEdBRWxCbzJDLGVBN0JjLFNBNkJDem1CLEVBQU8xc0IsR0FDbEIwc0IsRUFBTTJrQixnQkFBa0JyeEMsR0FFNUJvekMscUJBaENjLFNBZ0NPMW1CLEVBQU8ybUIsR0FDeEIzbUIsRUFBTTZrQixjQUFnQjhCLEtDei9COUIvYyxJQUFJbUIsSUFBSTZiLE1BRU8sV0FBSUEsS0FBS0MsTUFBTSxDQUMxQjExQyxRQUFTLENBQ0wyMUMsaUJBQ0FDLGVBQ0FDLFlBQ0FDLFdBQ0E1bUIsVSxrWENZUixJQzdCcU4sR0Q2QnJOLENBQ0UsS0FBRixrQkFDRSxXQUFGLENBQ0ksYUFBSixLQUNJLGFBQUosTUFFRSxTLGtXQUFGLElBQ0EsMEJBRUUsS0FURixXQVVJLE1BQUosQ0FDTSxnQkFBTixDQUNBLENBQ1EsS0FBUixNQUNRLE1BQVIsZ0NBQ1EsVUFBUixZQUNRLFdBQVIsR0FFQSxDQUNRLEtBQVIsUUFDUSxNQUFSLDRCQUNRLFVBQVIsUUFDUSxXQUFSLEdBRUEsQ0FDUSxLQUFSLFdBQ1EsTUFBUiwrQkFDUSxVQUFSLFlBQ1EsV0FBUixHQUVBLENBQ1EsS0FBUixVQUNRLE1BQVIsNEJBQ1EsVUFBUixRQUNRLFdBQVIsSUFHTSxlQUFOLENBQ0EsQ0FDUSxLQUFSLFdBQ1EsTUFBUiw0QkFDUSxVQUFSLFFBQ1EsV0FBUixHQUVBLENBQ1EsS0FBUixZQUNRLE1BQVIsK0JBQ1EsVUFBUixXQUNRLFdBQVIsTyx5QkUxRGUsR0FYQyxhQUNkLElDVFcsV0FBYSxJQUFJanFCLEVBQUlDLEtBQVNDLEVBQUdGLEVBQUlHLGVBQW1CQyxFQUFHSixFQUFJSyxNQUFNRCxJQUFJRixFQUFHLE9BQU9FLEVBQUcsTUFBTSxDQUFDTyxNQUFNLENBQUMsR0FBSyxnQkFBZ0IsQ0FBQ1AsRUFBRyxNQUFNLENBQUNPLE1BQU0sQ0FBQyxHQUFLLGlCQUFpQixDQUFDUCxFQUFHLGVBQWUsQ0FBQ08sTUFBTSxDQUFDLE1BQVFYLEVBQUlza0IsUUFBUTRELGFBQWFuSyxLQUFLNWMsU0FBU25CLEVBQUlpQixHQUFHLEtBQUtiLEVBQUcsTUFBTSxDQUFDRSxZQUFZLGdCQUFnQixDQUFDRixFQUFHLE1BQU0sQ0FBQ0UsWUFBWSxxQkFBcUIsQ0FBQ0YsRUFBRyxJQUFJLENBQUNFLFlBQVkscUJBQXFCLENBQUNOLEVBQUlpQixHQUFHakIsRUFBSWtCLEdBQUdsQixFQUFJMjZCLEdBQUcsb0JBQW9CMzZCLEVBQUlpQixHQUFHLEtBQUtiLEVBQUcsZUFBZSxDQUFDTyxNQUFNLENBQUMsV0FBYVgsRUFBSTh3QyxtQkFBbUI5d0MsRUFBSWlCLEdBQUcsS0FBTWpCLEVBQUlzSCxPQUFhLE9BQUVsSCxFQUFHLElBQUksQ0FBQ0UsWUFBWSxxQkFBcUIsQ0FBQ04sRUFBSWlCLEdBQUdqQixFQUFJa0IsR0FBR2xCLEVBQUkyNkIsR0FBRyxtQkFBbUIzNkIsRUFBSWdCLEtBQUtoQixFQUFJaUIsR0FBRyxLQUFNakIsRUFBSXNILE9BQWEsT0FBRWxILEVBQUcsZUFBZSxDQUFDTyxNQUFNLENBQUMsV0FBYVgsRUFBSSt3QyxrQkFBa0Ivd0MsRUFBSWdCLE1BQU0sTUFBTSxPQUN0c0IsSURXcEIsRUFDQSxLQUNBLFdBQ0EsTSxRRWZ5TixHQzRCM04sQ0FDRSxLQUFGLHdCQUNFLFdBQUYsQ0FDSSxhQUFKLEtBQ0ksYUFBSixNQUVFLEtBTkYsV0FPSSxNQUFKLENBQ00sa0JBQU4sQ0FDQSxDQUNRLEtBQVIsT0FDUSxNQUFSLHdCQUNRLFVBQVIsVUFDUSxXQUFSLEdBRUEsQ0FDUSxLQUFSLGFBQ1EsTUFBUix3QkFDUSxVQUFSLFVBQ1EsV0FBUixHQUVBLENBQ1EsS0FBUixPQUNRLE1BQVIseUJBQ1EsVUFBUixXQUNRLFdBQVIsSUFHTSx1QkFBTixDQUNBLENBQ1EsS0FBUixRQUNRLE1BQVIsNkJBQ1EsVUFBUixlQUNRLFdBQVIsR0FFQSxDQUNRLEtBQVIsY0FDUSxNQUFSLDhCQUNRLFVBQVIsaUJBQ1EsV0FBUixHQUVBLENBQ1EsS0FBUixZQUNRLE1BQVIseUJBQ1EsVUFBUixVQUNRLFdBQVIsT0N0RGUsSSxVQVhDLGFBQ2QsSUNUVyxXQUFhLElBQUloQixFQUFJQyxLQUFTQyxFQUFHRixFQUFJRyxlQUFtQkMsRUFBR0osRUFBSUssTUFBTUQsSUFBSUYsRUFBRyxPQUFPRSxFQUFHLE1BQU0sQ0FBQ08sTUFBTSxDQUFDLEdBQUssZ0JBQWdCLENBQUNQLEVBQUcsTUFBTSxDQUFDTyxNQUFNLENBQUMsR0FBSyxpQkFBaUIsQ0FBQ1AsRUFBRyxlQUFlLENBQUNPLE1BQU0sQ0FBQyxNQUFRWCxFQUFJc2tCLFFBQVE0RCxhQUFhbkssS0FBSzVjLFNBQVNuQixFQUFJaUIsR0FBRyxLQUFLYixFQUFHLE1BQU0sQ0FBQ0UsWUFBWSxnQkFBZ0IsQ0FBQ0YsRUFBRyxNQUFNLENBQUNFLFlBQVkscUJBQXFCLENBQUNGLEVBQUcsSUFBSSxDQUFDRSxZQUFZLHFCQUFxQixDQUFDTixFQUFJaUIsR0FBR2pCLEVBQUlrQixHQUFHbEIsRUFBSTI2QixHQUFHLG1CQUFtQjM2QixFQUFJaUIsR0FBRyxLQUFLYixFQUFHLGVBQWUsQ0FBQ08sTUFBTSxDQUFDLFdBQWFYLEVBQUlneEMscUJBQXFCaHhDLEVBQUlpQixHQUFHLEtBQUtiLEVBQUcsSUFBSSxDQUFDRSxZQUFZLHFCQUFxQixDQUFDTixFQUFJaUIsR0FBR2pCLEVBQUlrQixHQUFHbEIsRUFBSTI2QixHQUFHLDJCQUEyQjM2QixFQUFJaUIsR0FBRyxLQUFLYixFQUFHLGVBQWUsQ0FBQ08sTUFBTSxDQUFDLFdBQWFYLEVBQUlpeEMsMkJBQTJCLE1BQU0sT0FDN3BCLElEV3BCLEVBQ0EsS0FDQSxXQUNBLE0sU0VQRnpkLElBQUltQixJQUFJdWMsSUFFUixJQUFNQyxHQUFjLENBQ2hCLENBQ0k3ekMsS0FBTSxTQUNONFAsS0FBTSxXQUNObk4sVUFBVyxrQkFDUCxnRUFDSmdlLEtBQU0sQ0FDRnF6QixjQUFjLElBR3RCLENBQ0k5ekMsS0FBTSxZQUNONFAsS0FBTSxpQkFDTm5OLFVBQVcsa0JBQ1AsbUNBQ0pnZSxLQUFNLENBQ0ZxekIsY0FBYyxFQUNkandDLE1BQU8rMEIsR0FBS3ozQixFQUFFLCtCQUd0QixDQUNJbkIsS0FBTSxnQkFDTjRQLEtBQU0sd0JBQ05uTixVQUFXLGtCQUNQLHlEQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPKzBCLEdBQUt6M0IsRUFBRSxrQ0FHdEIsQ0FDSW5CLEtBQU0sNkJBQ040UCxLQUFNLGNBQ05uTixVQUFXLGtCQUNQLHlEQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPLFdBR2YsQ0FDSTdELEtBQU0sNkJBQ040UCxLQUFNLHNCQUNObk4sVUFBVyxrQkFDUCx5REFDSmdlLEtBQU0sQ0FDRnF6QixjQUFjLEVBQ2Rqd0MsTUFBTyxtQkFHZixDQUNJN0QsS0FBTSxRQUNONFAsS0FBTSxTQUNObk4sVUFBVyxrQkFDUCxtQ0FDSmdlLEtBQU0sQ0FDRnF6QixjQUFjLEVBQ2Rqd0MsTUFBTyxTQUVYNE4sU0FBVSxDQUNOLENBQ0l6UixLQUFNLFFBQ040UCxLQUFNLGVBQ05uTixVQUFXLGtCQUNQLG1DQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPKzBCLEdBQUt6M0IsRUFBRSw2QkFHdEIsQ0FDSW5CLEtBQU0sNEJBQ040UCxLQUFNLG9CQUNObk4sVUFBVyxrQkFDUCx5REFDSmdlLEtBQU0sQ0FDRnF6QixjQUFjLEVBQ2Rqd0MsTUFBTyswQixHQUFLejNCLEVBQUUsOEJBR3RCLENBQ0luQixLQUFNLGFBQ040UCxLQUFNLHFCQUNObk4sVUFBVyxrQkFDUCx5REFDSmdlLEtBQU0sQ0FDRnF6QixjQUFjLEVBQ2Rqd0MsTUFBTyswQixHQUFLejNCLEVBQUUsaUNBTTVCNHlDLEdBQWMsQ0FDaEIsQ0FDSS96QyxLQUFNLFFBQ040UCxLQUFNLFNBQ05uTixVQUFXLGtCQUNQLG1DQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPLFNBRVg0TixTQUFVLENBQ04sQ0FDSXpSLEtBQU0sWUFDTjRQLEtBQU0sbUJBQ05uTixVQUFXLGtCQUNQLHlEQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPKzBCLEdBQUt6M0IsRUFBRSw0QkFHdEIsQ0FDSW5CLEtBQU0sV0FDTjRQLEtBQU0sa0JBQ05uTixVQUFXLGtCQUNQLHlEQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPKzBCLEdBQUt6M0IsRUFBRSwyQkFHdEIsQ0FDSW5CLEtBQU0sUUFDTjRQLEtBQU0sZUFDTm5OLFVBQVcsa0JBQ1AseURBQ0pnZSxLQUFNLENBQ0ZxekIsY0FBYyxFQUNkandDLE1BQU8rMEIsR0FBS3ozQixFQUFFLHdCQUd0QixDQUNJbkIsS0FBTSxXQUNONFAsS0FBTSxxQkFDTm5OLFVBQVcsa0JBQ1AseURBQ0pnZSxLQUFNLENBQ0ZxekIsY0FBYyxFQUNkandDLE1BQU8rMEIsR0FBS3ozQixFQUFFLDRCQUd0QixDQUNJbkIsS0FBTSxRQUNONFAsS0FBTSxlQUNObk4sVUFBVyxrQkFDUCx5REFDSmdlLEtBQU0sQ0FDRnF6QixjQUFjLEVBQ2Rqd0MsTUFBTyswQixHQUFLejNCLEVBQUUsZ0NBR3RCLENBQ0luQixLQUFNLFFBQ040UCxLQUFNLGVBQ05uTixVQUFXLGtCQUNQLG1DQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPKzBCLEdBQUt6M0IsRUFBRSw2QkFHdEIsQ0FDSW5CLEtBQU0sYUFDTjRQLEtBQU0scUJBQ05uTixVQUFXLGtCQUNQLHlEQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPKzBCLEdBQUt6M0IsRUFBRSw4QkFHdEIsQ0FDSW5CLEtBQU0sYUFDTjRQLEtBQU0scUJBQ05uTixVQUFXLGtCQUNQLHlEQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPKzBCLEdBQUt6M0IsRUFBRSw4QkFHdEIsQ0FDSW5CLEtBQU0sT0FDTjRQLEtBQU0sa0JBQ05uTixVQUFXLGtCQUNQLG1DQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPKzBCLEdBQUt6M0IsRUFBRSw0QkFFbEJzUSxTQUFVLENBQ04sQ0FDSXpSLEtBQU0sYUFDTjRQLEtBQU0sMEJBQ05uTixVQUFXLGtCQUNQLGdFQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPKzBCLEdBQUt6M0IsRUFBRSwrQkFHdEIsQ0FDSW5CLEtBQU0sY0FDTjRQLEtBQU0sMEJBQ05uTixVQUFXLGtCQUNQLGdFQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPKzBCLEdBQUt6M0IsRUFBRSxzQ0FHdEIsQ0FDSW5CLEtBQU0sbUJBQ040UCxLQUFNLCtCQUNObk4sVUFBVyxrQkFDUCxtQ0FDSmdlLEtBQU0sQ0FDRnF6QixjQUFjLEVBQ2Rqd0MsTUFBTyswQixHQUFLejNCLEVBQUUsK0JBR3RCLENBQ0luQixLQUFNLGVBQ040UCxLQUFNLDJCQUNObk4sVUFBVyxrQkFDUCx5REFDSmdlLEtBQU0sQ0FDRnF6QixjQUFjLEVBQ2Rqd0MsTUFBTyswQixHQUFLejNCLEVBQUUsMkJBR3RCLENBQ0luQixLQUFNLGVBQ040UCxLQUFNLDJCQUNObk4sVUFBVyxrQkFDUCxnRUFDSmdlLEtBQU0sQ0FDRnF6QixjQUFjLEVBQ2Rqd0MsTUFBTyswQixHQUFLejNCLEVBQUUsaUNBR3RCLENBQ0luQixLQUFNLGFBQ040UCxLQUFNLHlCQUNObk4sVUFBVyxrQkFDUCxnRUFDSmdlLEtBQU0sQ0FDRnF6QixjQUFjLEVBQ2Rqd0MsTUFBTyswQixHQUFLejNCLEVBQUUsaUNBSzlCLENBQ0luQixLQUFNLE9BQ040UCxLQUFNLGtCQUNObk4sVUFBVyxrQkFDUCxtQ0FDSmdlLEtBQU0sQ0FDRnF6QixjQUFjLEVBQ2Rqd0MsTUFBTyswQixHQUFLejNCLEVBQUUsc0JBRWxCc1EsU0FBVSxDQUNOLENBQ0l6UixLQUFNLGtCQUNONFAsS0FBTSw4QkFDTm5OLFVBQVcsa0JBQ1AsbUNBQ0pnZSxLQUFNLENBQ0ZxekIsY0FBYyxFQUNkandDLE1BQU8rMEIsR0FBS3ozQixFQUFFLDhCQUd0QixDQUNJbkIsS0FBTSxlQUNONFAsS0FBTSwyQkFDTm5OLFVBQVcsa0JBQ1AsZ0VBQ0pnZSxLQUFNLENBQ0ZxekIsY0FBYyxFQUNkandDLE1BQU8rMEIsR0FBS3ozQixFQUFFLGdDQUd0QixDQUNJbkIsS0FBTSxhQUNONFAsS0FBTSx5QkFDTm5OLFVBQVcsa0JBQ1AsZ0VBQ0pnZSxLQUFNLENBQ0ZxekIsY0FBYyxFQUNkandDLE1BQU8rMEIsR0FBS3ozQixFQUFFLGdDQUs5QixDQUNJbkIsS0FBTSxjQUNONFAsS0FBTSxrQkFDTm5OLFVBQVcsa0JBQ1AsbUNBQ0pnZSxLQUFNLENBQ0ZxekIsY0FBYyxFQUNkandDLE1BQU8rMEIsR0FBS3ozQixFQUFFLDBCQUVsQnNRLFNBQVUsQ0FDTixDQUNJelIsS0FBTSxnQkFDTjRQLEtBQU0sNkJBQ05uTixVQUFXLGtCQUNQLGdFQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPKzBCLEdBQUt6M0IsRUFBRSw2QkFHdEIsQ0FDSW5CLEtBQU0sV0FDTjRQLEtBQU0sd0JBQ05uTixVQUFXLGtCQUNQLGdFQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPLFVBR2YsQ0FDSTdELEtBQU0sY0FDTjRQLEtBQU0sMkJBQ05uTixVQUFXLGtCQUNQLGdFQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPKzBCLEdBQUt6M0IsRUFBRSwyQkFHdEIsQ0FDSW5CLEtBQU0sV0FDTjRQLEtBQU0sd0JBQ05uTixVQUFXLGtCQUNQLGdFQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPKzBCLEdBQUt6M0IsRUFBRSx3QkFHdEIsQ0FDSW5CLEtBQU0sY0FDTjRQLEtBQU0sMkJBQ05uTixVQUFXLGtCQUNQLGdFQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPKzBCLEdBQUt6M0IsRUFBRSwyQkFHdEIsQ0FDSW5CLEtBQU0sWUFDTjRQLEtBQU0seUJBQ05uTixVQUFXLGtCQUNQLGdFQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPKzBCLEdBQUt6M0IsRUFBRSw2QkFPdEMsQ0FDSW5CLEtBQU0sa0JBQ040UCxLQUFNLGNBQ05uTixVQUFXdXhDLEdBQ1h2ekIsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPKzBCLEdBQUt6M0IsRUFBRSxrQ0FHdEIsQ0FDSW5CLEtBQU0sd0JBQ040UCxLQUFNLGFBQ05uTixVQUFXd3hDLEdBQ1h4ekIsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPKzBCLEdBQUt6M0IsRUFBRSxvQ0FJcEIreUMsR0FBZSxDQUNqQixDQUNJbDBDLEtBQU0sU0FDTjRQLEtBQU0sZ0JBQ05uTixVQUFXLGtCQUNQLDhFQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsR0FFbEJyaUMsU0FBVSxDQUNOLENBQ0l6UixLQUFNLG9CQUNONFAsS0FBTSxzQkFDTm5OLFVBQVcsa0JBQ1AsdUVBQ0pnZSxLQUFNLENBQ0ZxekIsY0FBYyxJQUd0QixDQUNJOXpDLEtBQU0sbUJBQ040UCxLQUFNLHFCQUNObk4sVUFBVyxrQkFDUCx5REFDSmdlLEtBQU0sQ0FDRnF6QixjQUFjLElBR3RCLENBQ0k5ekMsS0FBTSx1QkFDTjRQLEtBQU0sNkJBQ05uTixVQUFXLGtCQUNQLHlEQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsT0FNNUJLLEdBQWEsQ0FDZixDQUNJbjBDLEtBQU0sU0FDTjRQLEtBQU0sV0FDTm5OLFVBQVcsa0JBQ1AsZ0VBQ0pnZSxLQUFNLENBQ0ZxekIsY0FBYyxJQUd0QixDQUNJOXpDLEtBQU0sU0FDTjRQLEtBQU0sV0FDTm5OLFVBQVcsa0JBQ1AsZ0VBQ0pnZSxLQUFNLENBQ0ZxekIsY0FBYyxJQUd0QixDQUNJOXpDLEtBQU0sb0JBQ040UCxLQUFNLHNCQUNObk4sVUFBVyxrQkFDUCxnRUFDSmdlLEtBQU0sQ0FDRnF6QixjQUFjLElBR3RCLENBQ0k5ekMsS0FBTSxvQkFDTjRQLEtBQU0sdUJBQ05uTixVQUFXLGtCQUNQLGdFQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsS0FJcEJNLEdBQWEsQ0FDZixDQUNJeGtDLEtBQU0sWUFDTjVQLEtBQU0sV0FDTnlDLFVBQVcsa0JBQ1AsOEVBQ0pnUCxTQUFVLENBQ04sQ0FDSXpSLEtBQU0sUUFDTjRQLEtBQU0sa0JBQ05uTixVQUFXLGtCQUNQLHVFQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsSUFHdEIsQ0FDSTl6QyxLQUFNLGNBQ040UCxLQUFNLHlCQUNObk4sVUFBVyxrQkFDUCx1RUFDSmdlLEtBQU0sQ0FDRnF6QixjQUFjLElBR3RCLENBQ0k5ekMsS0FBTSxXQUNONFAsS0FBTSxxQkFDTm5OLFVBQVcsa0JBQ1AsbUNBQ0pnZSxLQUFNLENBQ0ZxekIsY0FBYyxHQUVsQnJpQyxTQUFVLENBQ04sQ0FDSXpSLEtBQU0sVUFDTjRQLEtBQU0sb0JBQ05uTixVQUFXLGtCQUNQLGdFQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPKzBCLEdBQUt6M0IsRUFBRSwwQkFHdEIsQ0FDSW5CLEtBQU0sV0FDTjRQLEtBQU0sOEJBQ05uTixVQUFXLGtCQUNQLGdFQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPKzBCLEdBQUt6M0IsRUFBRSxvQ0FHdEIsQ0FDSW5CLEtBQU0sVUFDTjRQLEtBQU0sNkJBQ05uTixVQUFXLGtCQUNQLG1DQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPKzBCLEdBQUt6M0IsRUFBRSxtQ0FHdEIsQ0FDSW5CLEtBQU0sVUFDTjRQLEtBQU0sOEJBQ05uTixVQUFXLGtCQUNQLG1DQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPKzBCLEdBQUt6M0IsRUFBRSwyQkFHdEIsQ0FDSW5CLEtBQU0sZUFDTjRQLEtBQU0sa0NBQ05uTixVQUFXLGtCQUNQLG1DQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsRUFDZGp3QyxNQUFPKzBCLEdBQUt6M0IsRUFBRSwrQkFHdEIsQ0FDSW5CLEtBQU0saUJBQ040UCxLQUFNLHFDQUNObk4sVUFBVyxrQkFDUCxtQ0FDSmdlLEtBQU0sQ0FDRnF6QixjQUFjLEVBQ2Rqd0MsTUFBTyswQixHQUFLejNCLEVBQUUsa0NBR3RCLENBQ0luQixLQUFNLHNCQUNONFAsS0FBTSwyQ0FDTm5OLFVBQVcsa0JBQ1AsbUNBQ0pnZSxLQUFNLENBQ0ZxekIsY0FBYyxFQUNkandDLE1BQU8sNEJBS3ZCLENBQ0k3RCxLQUFNLGNBQ040UCxLQUFNLHlCQUNObk4sVUFBVyxrQkFDUCxtQ0FDSmdlLEtBQU0sQ0FDRnF6QixjQUFjLEVBQ2Rqd0MsTUFBTyswQixHQUFLejNCLEVBQUUsK0JBR3RCLENBQ0luQixLQUFNLGlCQUNONFAsS0FBTSw0QkFDTm5OLFVBQVcsa0JBQ1AseURBQ0pnZSxLQUFNLENBQ0ZxekIsY0FBYyxFQUNkandDLE1BQU8rMEIsR0FBS3ozQixFQUFFLHFDQW9KNUJvZixHQUFTLElBQUlxekIsR0FBTyxDQUN0Qnh5QyxLQUFNLFVBQ05pb0IsT0FBUSxHQUFGLE9BQ0N3cUIsR0FqSmUsQ0FDdEIsQ0FDSTd6QyxLQUFNLGNBQ040UCxLQUFNLFdBQ05uTixVQUFXLGtCQUNQLG1DQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsR0FFbEJyaUMsU0FBVSxDQUNOLENBQ0l6UixLQUFNLGVBQ040UCxLQUFNLDhCQUNObk4sVUFBVyxrQkFDUCxnRUFDSmdlLEtBQU0sQ0FDRnF6QixjQUFjLElBR3RCLENBQ0k5ekMsS0FBTSxXQUNONFAsS0FBTSx5QkFDTm5OLFVBQVcsa0JBQ1AsZ0VBQ0pnZSxLQUFNLENBQ0ZxekIsY0FBYyxJQUd0QixDQUNJOXpDLEtBQU0seUJBQ040UCxLQUFNLHdDQUNObk4sVUFBVyxrQkFDUCxnRUFDSmdlLEtBQU0sQ0FDRnF6QixjQUFjLElBR3RCLENBQ0k5ekMsS0FBTSxzQkFDTjRQLEtBQU0scUNBQ05uTixVQUFXLGtCQUNQLGdFQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsSUFHdEIsQ0FDSTl6QyxLQUFNLG9CQUNONFAsS0FBTSxtQ0FDTm5OLFVBQVcsa0JBQ1AsZ0VBQ0pnZSxLQUFNLENBQ0ZxekIsY0FBYyxJQUd0QixDQUNJOXpDLEtBQU0saUJBQ040UCxLQUFNLGdDQUNObk4sVUFBVyxrQkFDUCxnRUFDSmdlLEtBQU0sQ0FDRnF6QixjQUFjLElBR3RCLENBQ0k5ekMsS0FBTSxvQkFDTjRQLEtBQU0sNkJBQ05uTixVQUFXLGtCQUNQLGdFQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsSUFHdEIsQ0FDSTl6QyxLQUFNLG1CQUNONFAsS0FBTSxrQ0FDTm5OLFVBQVcsa0JBQ1AsZ0VBQ0pnZSxLQUFNLENBQ0ZxekIsY0FBYyxJQUd0QixDQUNJOXpDLEtBQU0sV0FDTjRQLEtBQU0sMEJBQ05uTixVQUFXLGtCQUNQLGdFQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsSUFHdEIsQ0FDSTl6QyxLQUFNLGVBQ040UCxLQUFNLDRCQUNObk4sVUFBVyxrQkFDUCxnRUFDSmdlLEtBQU0sQ0FDRnF6QixjQUFjLE9Ba0R2QkksR0FDQUgsR0E3Q1MsQ0FDaEIsQ0FDSS96QyxLQUFNLFdBQ040UCxLQUFNLElBQ05uTixVQUFXLGtCQUNQLG1DQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsSUFHdEIsQ0FDSTl6QyxLQUFNLGNBQ040UCxLQUFNLGNBQ05uTixVQUFXLGtCQUNQLG1DQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsSUFHdEIsQ0FDSTl6QyxLQUFNLFlBQ040UCxLQUFNLGNBQ05uTixVQUFXLGtCQUNQLHlEQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsSUFHdEIsQ0FDSTl6QyxLQUFNLFdBQ040UCxLQUFNLGFBQ05uTixVQUFXLGtCQUNQLGdFQUNKZ2UsS0FBTSxDQUNGcXpCLGNBQWMsS0FhZkssR0FDQUMsSUFFUHZuQixlQVhzQixTQVdQckcsRUFBSTdmLEVBQU0wdEMsR0FDckIsT0FBSUEsR0FHTyxDQUFDNW1DLEVBQUcsRUFBR0MsRUFBRyxNQUs3QjZTLEdBQU9pVixZQUFXLFNBQUNoUCxFQUFJN2YsRUFBTVYsR0FFckJ1Z0IsRUFBR2xJLFFBQVFnMkIsTUFBSyxTQUFBbDBCLEdBQU0sT0FBSUEsRUFBT0ssS0FBS3F6QixpQkFJaEJTLEdBQU14TCxRQUFRLytCLE9BQzlCdXFDLEdBQU14TCxRQUFRLytCLE9BQU82b0MsZ0JBQ3JCN29DLE9BQU82b0MsaUJBUVQ1c0MsSUFMQUEsRUFBSyxDQUNEakcsS0FBTSxTQUNONmYsTUFBTyxDQUFDdUssU0FBVTVELEVBQUc3RixZQU03QjFhLE9BSU9zYSxVLGFDenhCdU0sR0NzQnROLENBQ0UsV0FBRixDQUNJLE1BQUosTUFDSSxVQUFKLE1BRUUsTUFBRixTQUNFLEtBTkYsV0FPSSxNQUFKLENBQ00sU0FBTixJQUdFLFFBWEYsV0FXSSxJQUFKLE9BQ0ksS0FBSixXQUVJLFlBQUosV0FBTSxPQUFOLHNCQ3BDeU4sSSxVQ1V6TixDQUNFLFdBQUYsQ0FDSSxXQ0pZLGFBQ2QsSUNUVyxXQUFhLElBQUk3ZCxFQUFJQyxLQUFTQyxFQUFHRixFQUFJRyxlQUFtQkMsRUFBR0osRUFBSUssTUFBTUQsSUFBSUYsRUFBRyxPQUFPRSxFQUFHLGFBQWEsQ0FBQ08sTUFBTSxDQUFDLE9BQVMsR0FBRyxLQUFPLFNBQVMsQ0FBQ1AsRUFBRyxLQUFLLENBQUMweEMsV0FBVyxDQUFDLENBQUN4MEMsS0FBSyxPQUFPeTBDLFFBQVEsU0FBU3Z6QyxNQUFPd0IsRUFBWSxTQUFFZ3lDLFdBQVcsYUFBYTF4QyxZQUFZLGNBQWNHLE1BQU1ULEVBQUlzMUIsS0FBS3A0QixNQUFNLENBQUNrRCxFQUFHLE1BQU0sQ0FBQ0UsWUFBWSwwQkFBMEIsQ0FBQ0YsRUFBRyxPQUFPLENBQUNFLFlBQVksZUFBZSxDQUFtQixXQUFqQk4sRUFBSXMxQixLQUFLcDRCLEtBQW1Ca0QsRUFBRyxhQUFhLENBQUNPLE1BQU0sQ0FBQyxLQUFPLFFBQVFYLEVBQUlnQixLQUFLaEIsRUFBSWlCLEdBQUcsS0FBdUIsVUFBakJqQixFQUFJczFCLEtBQUtwNEIsS0FBa0JrRCxFQUFHLFNBQVMsQ0FBQ08sTUFBTSxDQUFDLEtBQU8sUUFBUVgsRUFBSWdCLE1BQU0sR0FBR2hCLEVBQUlpQixHQUFHLEtBQUtiLEVBQUcsTUFBTSxDQUFDRSxZQUFZLGtCQUFrQixDQUFDRixFQUFHLElBQUksQ0FBQ0UsWUFBWSxzQkFBc0IsQ0FBQ04sRUFBSWlCLEdBQUdqQixFQUFJa0IsR0FBR2xCLEVBQUlzMUIsS0FBS2o0QixnQkFBZ0IyQyxFQUFJaUIsR0FBRyxLQUFLYixFQUFHLE1BQU0sQ0FBQ0UsWUFBWSxlQUFlLENBQUNGLEVBQUcsZ0JBQ3hzQixJRFdwQixFQUNBLEtBQ0EsV0FDQSxNLFNEREEsS0FKRixXQUtJLE1BQUosQ0FDTSxjQUFOLEtBR0UsUUFURixXQVNJLElBQUosT0FDSSxHQUFKLDZCQUFNLE9BQU4sOEJHRGUsSSxVQVhDLGFBQ2QsSUNUVyxXQUFhLElBQWlCRixFQUFURCxLQUFnQkUsZUFBbUJDLEVBQW5DSCxLQUEwQ0ksTUFBTUQsSUFBSUYsRUFBRyxPQUFPRSxFQUFHLE1BQU0sQ0FBQ08sTUFBTSxDQUFDLEdBQUssbUJBQXBGVixLQUEyR00sR0FBM0dOLEtBQWdJLGVBQUUsU0FBU3ExQixFQUFLaDdCLEdBQUcsT0FBTzhGLEVBQUcsYUFBYSxDQUFDdEIsSUFBSXhFLEVBQUVxRyxNQUFNLENBQUMsS0FBTzIwQixRQUFVLEtBQ3JOLElEV3BCLEVBQ0EsS0FDQSxXQUNBLE0saVdFQUYsSUNmc04sR0RldE4sQ0FDRSxLQUFGLG1CQUNFLFdBQUYsQ0FDSSxNQUFKLE9BRUUsUyxrV0FBRixJQUNBLDBCQUVFLEtBUkYsV0FTSSxNQUFKLENBQ00scUJBQU4sSUFHRSxRQUFGLENBQ0ksZ0JBREosV0FFTSxhQUFOLHFDQUVNLEtBQU4seUJBR0UsUUFwQkYsV0FxQkksS0FBSixrRUVqQmUsSSxVQVhDLGFBQ2QsSUNUVyxXQUFhLElBQUl0MUIsRUFBSUMsS0FBU0MsRUFBR0YsRUFBSUcsZUFBbUJDLEVBQUdKLEVBQUlLLE1BQU1ELElBQUlGLEVBQUcsT0FBUUYsRUFBSWl5QyxxQkFBdUJqeUMsRUFBSXNILE9BQU91b0MsT0FBUXp2QyxFQUFHLE1BQU0sQ0FBQ0UsWUFBWSxrQkFBa0IsQ0FBQ0YsRUFBRyxPQUFPLENBQUNFLFlBQVksYUFBYTJZLEdBQUcsQ0FBQyxNQUFRalosRUFBSWt5QyxrQkFBa0IsQ0FBQzl4QyxFQUFHLFNBQVMsQ0FBQ08sTUFBTSxDQUFDLEtBQU8sU0FBUyxHQUFHWCxFQUFJaUIsR0FBRyxLQUFLYixFQUFHLE9BQU8sQ0FBQ08sTUFBTSxDQUFDLEtBQU8sZ0NBQWdDLElBQU0sTUFBTSxDQUFDUCxFQUFHLGNBQWMsQ0FBQ08sTUFBTSxDQUFDLEdBQUssQ0FBQ3JELEtBQU0sY0FBZXNRLE9BQVEsQ0FBQ3VrQyxLQUFNLG9CQUFvQixDQUFDbnlDLEVBQUlpQixHQUFHakIsRUFBSWtCLEdBQUdsQixFQUFJMjZCLEdBQUcsaUNBQWlDLElBQUksR0FBRzM2QixFQUFJZ0IsT0FDM2YsSURXcEIsRUFDQSxLQUNBLFdBQ0EsTSxtQ0VmMkwsR0NtQjdMLENBQ0UsS0FBRixNQUNFLFdBQUYsQ0FDSSxpQkFBSixHQUNJLGNBQUosR0FDSSxTQUFKLEtBQ0ksTUFBSixNQUVFLFFBQUYsQ0FDSSxRQURKLFdBRU0sR0FBTixxQkFHRSxZQWJGLFdBZ0JJLEtBQUosc0JBQ00sT0FBTix3QkFDTSxjQUFOLENBQ1EsS0FBUiwwQkFDUSxTQUFSLE9BQ1EsUUFBUixLQUtJLElBQUosdUNBR0Esc0JBQ0EsbUJBQU0sS0FBTixpQkFHQSx3QkFDQSxtQkFBTSxLQUFOLDRCQUVFLFFBcENGLFdBcUNJLEtBQUosYUNyQ2UsSSxVQVhDLGFBQ2QsSUNUVyxXQUFhLElBQWlCZCxFQUFURCxLQUFnQkUsZUFBbUJDLEVBQW5DSCxLQUEwQ0ksTUFBTUQsSUFBSUYsRUFBRyxPQUFPRSxFQUFHLE1BQU0sQ0FBQ08sTUFBTSxDQUFDLEdBQUssa0JBQWtCc1ksR0FBRyxDQUFDLE1BQTFHaFosS0FBc0hteUMsVUFBVSxDQUFDaHlDLEVBQUcsU0FBcElILEtBQWlKZ0IsR0FBRyxLQUFLYixFQUFHLGlCQUE1SkgsS0FBaUxnQixHQUFHLEtBQUtiLEVBQUcsZUFBNUxILEtBQStNZ0IsR0FBRyxLQUFLYixFQUFHLG9CQUExTkgsS0FBa1BnQixHQUFHLEtBQUtiLEVBQUcsYUFBYSxLQUN0UixJRFdwQixFQUNBLEtBQ0EsS0FDQSxNLGdsQ0VSRixJQUFNaXlDLEdBQVUsQ0FDWjllLFFBRFksU0FDSkMsR0FFSkEsRUFBSTk0QixVQUFVNDNDLFlBQWNDLHFCQUFTLFNBQVU3M0IsRUFBT3BkLEVBQU1rQixHQUFPLFlBSWpELEtBQVZBLEdBRm1CLENBQUMsc0JBQXVCLG1CQUFvQixnQkFFN0I2MkIsU0FBUy8zQixLQUUvQ2lwQyxLQUFNTyxLQUFLN21DLEtBQUt1eUMsT0FBT25NLFFBQVE0QyxJQUFNdnVCLEVBQU8sQ0FBQ3BkLE9BQU1rQixRQUFPcXBDLFFBQVMsVUFBbkUsT0FDVyxTQUFBbnJDLEdBQ0hnckMsS0FBTzNtQyxNQUFNLGFBQWMsQ0FDdkJJLE1BQU8sRUFBS3c1QixHQUFHLHFCQUNmdDlCLFFBQVMsRUFBS3M5QixHQUFHLDhCQUc5QixLQUVIbkgsRUFBSTk0QixVQUFVKzNDLGFBQWUsU0FBVS8zQixFQUFPcGQsRUFBTW8xQyxHQUFPLFdBR25EQyxFQUFXLElBQUlDLFNBR25CRCxFQUFTenpCLE9BQU8sT0FBUTVoQixHQUN4QnExQyxFQUFTenpCLE9BQU81aEIsRUFBTW8xQyxHQUN0QkMsRUFBU3p6QixPQUFPLFVBQVcsU0FFM0JxbkIsS0FBTU8sS0FBSzdtQyxLQUFLdXlDLE9BQU9uTSxRQUFRNEMsSUFBTXZ1QixFQUFPaTRCLEVBQVUsQ0FDbER2SyxRQUFTLENBQ0wsZUFBZ0IseUJBRnhCLE9BS1csU0FBQTFyQyxHQUNIZ3JDLEtBQU8zbUMsTUFBTSxhQUFjLENBQ3ZCSSxNQUFPLEVBQUt3NUIsR0FBRyxxQkFDZnQ5QixRQUFTLEVBQUtzOUIsR0FBRyw2QkFLakNuSCxFQUFJOTRCLFVBQVVtNEMsV0FBYSxXQUN2QixJQUFJNTlCLEVBQVloWixTQUFTbXZCLGVBQWUsa0JBRXBDblcsSUFDQUEsRUFBVTY5QixVQUFZLElBSTlCdGYsRUFBSTk0QixVQUFVcTRDLFVBQVksU0FBVTF3QyxHQUNoQyxPQUFPQSxFQUFTcEMsS0FBS3V5QyxPQUFPbk0sUUFBUS8rQixPQUFPbWlCLEtBQU8sSUFBTXBuQixFQUFTLElBR3JFbXhCLEVBQUk5NEIsVUFBVXM0QyxvQkFBc0IsU0FBVUMsR0FDMUMsOEJBQXdCQSxFQUF4QixTQUdKemYsRUFBSTk0QixVQUFVdzRDLGdCQUFrQixTQUFVQyxFQUFVbm5DLEdBQ2hELE1BQU8sWUFBY21uQyxFQUFXLElBQU1ubkMsR0FHMUN3bkIsRUFBSTk0QixVQUFVMDRDLG1CQUFxQixTQUFVL3dDLEdBQy9COUMsT0FBTzh6QyxLQUFLaHhDLEVBQVEsVUFFMUJpeEMsU0FHUjlmLEVBQUk5NEIsVUFBVTY0QyxjQUFnQixTQUFVQyxHQUNwQ3Z6QyxLQUFLdXlDLE9BQU92TCxTQUFTLGVBQWdCdU0sSUFHekNoZ0IsRUFBSTk0QixVQUFVKzRDLGFBQWQsK0JBQTZCLFdBQWdCN00sR0FBaEIscUJBQUF2MUIsRUFBQSx5REFFTCxHQUFoQnUxQixFQUFNcHNDLE9BRmUsb0RBSXBCeUYsS0FBS3l6QyxtQkFBbUI5TSxJQUFXM21DLEtBQUswekMsa0JBQWtCL00sR0FKdEMsaURBT3pCLEdBQUlBLEdBQU83Z0MsS0FBSSxTQUFBdXZCLEdBQ1gsRUFBS2tkLE9BQU9wTSxPQUFPLHFCQUFzQixDQUNyQ3FDLFVBQVdvSixHQUFNeEwsUUFBUWtCLGNBQWN2N0IsR0FBSzZsQyxHQUFNeEwsUUFBUWtCLGNBQWN2N0IsR0FBSyxHQUM3RXk1QixLQUFNblEsT0FLK0IsR0FBekNyMUIsS0FBS3V5QyxPQUFPbk0sUUFBUXBCLG1CQUNwQmhsQyxLQUFLeW9DLGlCQUFpQm1KLEdBQU14TCxRQUFRckIsVUFBVSxJQUdsRC9rQyxLQUFLdXlDLE9BQU9wTSxPQUFPLGlDQUFrQ1EsRUFBTXBzQyxRQW5CbEMsZ0RBQTdCLHNEQXNCQWc1QixFQUFJOTRCLFVBQVVrNUMscUJBQWQsK0JBQXFDLFdBQWdCaDNDLEVBQU82cUMsR0FBdkIscUJBQUFwMkIsRUFBQSx5REFHTyxJQUFwQ3pVLEVBQU1pM0MsYUFBYTlNLE1BQU12c0MsT0FISSxpREFNakMsR0FBSW9DLEVBQU1pM0MsYUFBYTlNLE9BQU9oaEMsS0FBSSxTQUFBdXZCLEdBQzlCLEVBQUtrZCxPQUFPcE0sT0FBTyxxQkFBc0IsQ0FDckNxQyxVQUFXaEIsR0FBd0IsR0FDbkNoQyxLQUFNblEsRUFBS3dlLGlCQUswQixHQUF6Qzd6QyxLQUFLdXlDLE9BQU9uTSxRQUFRcEIsbUJBQ3BCaGxDLEtBQUt5b0MsaUJBQWlCem9DLEtBQUt1eUMsT0FBT25NLFFBQVFyQixVQUFVLElBR3hEL2tDLEtBQUt1eUMsT0FBT3BNLE9BQU8saUNBQWtDLEdBQUl4cEMsRUFBTWkzQyxhQUFhOU0sT0FBT3ZzQyxRQWxCbEQsZ0RBQXJDLHdEQXFCQWc1QixFQUFJOTRCLFVBQVVndUMsaUJBQWQsK0JBQWlDLFdBQWdCcFQsR0FBaEIseUNBQUFqa0IsRUFBQSxzREFRN0IsSUFMSXZHLEVBQU8rbUMsR0FBTXhMLFFBQVEvK0IsT0FBT3lzQyxVQUM1QkMsRUFBYS9uQyxLQUFLMEMsS0FBSzJtQixFQUFLbVEsS0FBSzM2QixLQUFPQSxHQUN4Q21wQyxFQUFTLEdBR0ozNUMsRUFBSSxFQUFHQSxFQUFJMDVDLEVBQVkxNUMsSUFDNUIyNUMsRUFBT241QyxLQUFLdzZCLEVBQUttUSxLQUFLaG1DLE1BQ2xCbkYsRUFBSXdRLEVBQU1tQixLQUFLOHpCLElBQUl6bEMsRUFBSXdRLEVBQU9BLEVBQU13cUIsRUFBS21RLEtBQUszNkIsTUFBT3dxQixFQUFLbVEsS0FBS3ZvQyxPQUtuRXkxQyxFQUFXLElBQUlDLFNBQ2ZzQixFQUFlLEVBQ2ZDLEdBQW9CLEVBQ3BCQyxFQUFlOWUsRUFBS21RLEtBQUtub0MsS0FBS2tFLFFBQVEsa0VBQW1FLElBQ3pHNnlDLEVBQVdyeEMsTUFBTSxJQUFJMEssS0FBSyxHQUFHM0gsS0FBSSxTQUFBZ0YsR0FBQyxPQUFJa0IsS0FBS0MsU0FBU2xJLFNBQVMsSUFBSW9iLE9BQU8sTUFBSXRRLEtBQUssSUFBTSxJQUFNc2xDLEVBQWUsUUFuQm5GLEtBQUEvaUMsRUFBQSx1Q0FBQUEsRUFBQSxzREFzQnJCaWpDLEVBQTJCLElBQWxCTCxFQUFPejVDLE9BQ2hCd0MsRUFBUWkzQyxFQUFPaDVDLFFBQ2ZzNUMsRUFBVyxFQUdmNUIsRUFBUzFSLElBQUksT0FBUWprQyxFQUFPcTNDLEdBQzVCMUIsRUFBUzFSLElBQUksWUFBYTNMLEVBQUttVCxXQUMvQmtLLEVBQVMxUixJQUFJLFVBQVdxVCxHQTdCQyx1QkFpQ2Z6QyxHQUFNNUssU0FBUyxjQUFlLENBQ2hDYyxLQUFNNEssRUFDTjNLLFNBQVUxUyxFQUFLbVEsS0FBSzM2QixLQUNwQm05QixrQkFBbUJpTSxJQUNwQjdxQyxNQUFLLFdBQ0o2cUMsR0FBOEJsM0MsRUFBTThOLFFBTGxDLE9BTUcsU0FBQ3BPLEdBTVcsTUFIakI2M0MsR0FJSSxFQUFLN04sb0JBR0wsQ0FBQyxJQUFLLEtBQUtyUixTQUFTMzRCLEVBQU04cEMsU0FBU2pCLFVBQ25DNE8sR0FBb0IsTUFsRFAsVUFvRGhCQSxHQUFrQyxJQUFiSSxHQUErQixJQUFiQSxFQXBEdkIsOEdBc0RwQkosR0FBdUMsSUFBbEJGLEVBQU96NUMsT0F0RFIsMkRBQWpDLHNEQXlEQWc1QixFQUFJOTRCLFVBQVUrckMsY0FBZ0IsU0FBVXJsQyxFQUFLaXpDLEdBQ3pDLElBQUlHLEVBQVN2NEMsU0FBU0MsY0FBYyxLQUVwQ3M0QyxFQUFPandCLEtBQU9uakIsRUFFZG96QyxFQUFPQyxTQUFXSixFQUVsQnA0QyxTQUFTeTRDLEtBQUsvMkMsWUFBWTYyQyxHQUUxQkEsRUFBT3J2QixTQUdYcU8sRUFBSTk0QixVQUFVaTZDLFlBQWMsV0FDeEJqTixLQUFPM21DLE1BQU0sZ0JBR2pCeXlCLEVBQUk5NEIsVUFBVWs2QyxhQUFlLFNBQVVsNkIsRUFBT202QixHQUUxQyxPQUFPeGYsb0JBQVN3ZixFQUFXbjZCLEVBQU1wZCxPQUdyQ2syQixFQUFJOTRCLFVBQVVvNkMsZ0JBQWtCLFNBQVVuM0IsR0FHdEMsSUFBSW8zQixFQUFrQmxELEdBQU14TCxRQUFRa0IsZUFBaUJzSyxHQUFNeEwsUUFBUWtCLGNBQWM1cEIsU0FBV2swQixHQUFNeEwsUUFBUWtCLGNBQWM1cEIsY0FBV25nQixFQUduSSxNQUF3QixpQkFBYm1nQixHQUF5QkEsYUFBb0JsakIsT0FDN0M0NkIsb0JBQVMxWCxFQUFVbzNCLEdBR25CQSxJQUFvQnAzQixHQUluQzZWLEVBQUk5NEIsVUFBVXM2QyxpQkFBbUIsU0FBVTkzQyxHQUV2QyxJQUFJKzNDLEVBQW9CcEQsR0FBTXhMLFFBQVF1QixXQUd0QyxNQUFvQixpQkFBVDFxQyxHQUFxQkEsYUFBZ0J6QyxPQUNyQzQ2QixvQkFBU240QixFQUFNKzNDLEdBR2ZBLElBQXNCLzNDLEdBSXJDczJCLEVBQUk5NEIsVUFBVXc2QyxVQUFZLFdBV3RCLE1BVmdCLENBQ1osV0FDQSxTQUNBLFVBQ0EsUUFDQSxRQUNBLGNBQ0Esa0JBR1d0RCxNQUFLLFNBQUF1RCxHQUNoQixPQUFPdHdDLFVBQVVDLFVBQVVzZCxNQUFNK3lCLE9BSXpDM2hCLEVBQUk5NEIsVUFBVTA2QyxnQkFBa0IsV0FHNUIsTUFBb0Isa0JBRkx2RCxHQUFNeEwsUUFBUWdQLGdCQUtqQzdoQixFQUFJOTRCLFVBQVU0NkMsZ0JBQWtCLFdBRzVCLE1BQW9CLGtCQUZMekQsR0FBTXhMLFFBQVFnUCxnQkFLakM3aEIsRUFBSTk0QixVQUFVNjZDLGFBQWUsV0FHekIsTUFBb0IsZUFGTDFELEdBQU14TCxRQUFRZ1AsZ0JBS2pDN2hCLEVBQUk5NEIsVUFBVWdzQyxrQkFBb0IsV0FDOUJnQixLQUFPM21DLE1BQU0sYUFBYyxDQUN2QkksTUFBTyswQixHQUFLejNCLEVBQUUscUJBQ2RwQixRQUFTNjRCLEdBQUt6M0IsRUFBRSwwQkFJeEIrMEIsRUFBSTk0QixVQUFVZzVDLG1CQUFxQixTQUFVOU0sR0FJekMsSUFIQSxJQUFJNE8sR0FBWSxFQUNaQyxFQUFxQjVELEdBQU14TCxRQUFRLytCLE9BQU9tdUMsbUJBRXJDbjdDLEVBQUksRUFBR0EsRUFBSXNzQyxFQUFNcHNDLE9BQVFGLElBQUssQ0FDbkMsSUFBSW83QyxFQUFXOU8sRUFBTXRzQyxHQUFHNEMsS0FBSytWLE1BQU0sS0FFOUJ5aUMsRUFBUyxLQUNWQSxFQUFTLEdBQUtyN0IsRUFBRWlqQixLQUFLc0osRUFBTXRzQyxHQUFHZ0QsS0FBSzJWLE1BQU0sT0FHekN3aUMsRUFBbUJwZ0IsU0FBU3FnQixFQUFTLE1BQ3JDRixHQUFZLEVBRVo5TixLQUFPM21DLE1BQU0sYUFBYyxDQUN2QjRuQyxNQUFPLFNBQ1B4bkMsTUFBTyswQixHQUFLejNCLEVBQUUsbUNBQ2RwQixRQUFTNjRCLEdBQUt6M0IsRUFBRSxvQ0FBcUMsQ0FBQ2szQyxTQUFVRCxFQUFTLFFBSXJGLE9BQU9GLEdBR1hoaUIsRUFBSTk0QixVQUFVaTVDLGtCQUFvQixTQUFVL00sR0FJeEMsSUFIQSxJQUFJZ1AsRUFBYy9ELEdBQU14TCxRQUFRLytCLE9BQU9zdUMsWUFDbkNDLEdBQVcsRUFFTnY3QyxFQUFJLEVBQUdBLEVBQUlzc0MsRUFBTXBzQyxPQUFRRixJQUM5QixHQUFtQixHQUFmczdDLEdBQW9CaFAsRUFBTXRzQyxHQUFHd1EsS0FBTzhxQyxFQUFhLENBQ2pEQyxHQUFXLEVBQ1huTyxLQUFPM21DLE1BQU0sYUFBYyxDQUN2QjRuQyxNQUFPLFNBQ1B4bkMsTUFBTyswQixHQUFLejNCLEVBQUUsNEJBQ2RwQixRQUFTNjRCLEdBQUt6M0IsRUFBRSw2QkFBOEIsQ0FBQ20zQyxZQUFhL0QsR0FBTXhMLFFBQVEvK0IsT0FBT3d1Qyx5QkFFckYsTUFHUixPQUFPRCxHQUdYcmlCLEVBQUk5NEIsVUFBVXE3QyxtQkFBcUIsV0FBWSxNQUV2QzVQLEVBQVMwTCxHQUFNeEwsUUFBUWtCLGNBRXZCdkssRUFBVSxDQUNWLEtBQVEsQ0FBQyxZQUFhLENBQUMsQ0FBQ21KLE9BQVFBLEVBQVFsVCxNQUFNLEVBQU0zVyxNQUFNLEVBQU95dEIsU0FBUyxLQUMxRSxPQUFVLENBQUMsZUFBZ0IsQ0FBQyxDQUFDNUQsT0FBUUEsRUFBUWxULE1BQU0sRUFBTTNXLE1BQU0sRUFBT3l0QixTQUFTLEtBQy9FLE1BQVMsQ0FBQyxZQUFhLENBQUMsQ0FBQzVELE9BQVFBLEVBQVFsVCxNQUFNLEVBQU0zVyxNQUFNLEVBQU95dEIsU0FBUyxLQUMzRSxvQkFBdUIsQ0FBQyx5QkFDeEIsYUFBYyxDQUFDLFlBQ2YsT0FBVSxDQUFDLGFBQ1gsT0FBVSxDQUFDLGVBR2YsRUFBQTlwQyxLQUFLdXlDLFFBQU92TCxTQUFaLFdBQXdCakssRUFBUW1KLEVBQU94b0IsWUFHdkMxZCxLQUFLdXlDLE9BQU92TCxTQUFTLGNBR3JCaG5DLEtBQUt1eUMsT0FBT3ZMLFNBQVMsa0JBSXpCelQsRUFBSTk0QixVQUFVczdDLFNBQVcsWUFDMEIsR0FBM0NueEMsVUFBVUMsVUFBVVEsUUFBUSxZQUNqQnJKLFNBQVN5NEMsS0FDZnVCLFVBQVVDLElBQUksWUFLM0IxaUIsRUFBSTk0QixVQUFVeTdDLFNBQVcsV0FXckIsTUFUZ0IsQ0FDWixVQUNBLFFBQ0EsUUFDQSxPQUNBLFNBQ0EsY0FHV3ZFLE1BQUssU0FBQXVELEdBQ2hCLE9BQU90d0MsVUFBVUMsVUFBVXNkLE1BQU0reUIsU0FNbEM5QyxNLDBCQ2hEWCtELEdBQVMsQ0FDWG5vQyxPQUFRLE1BQ1JDLFNBQVUsT0FDVnhOLEtBQU0sQ0FBQyxJQUFLLElBQUssR0FBSSxPQUFRLDBWQTJmM0IyMUMsR0FBVSxDQUNacG9DLE9BQVEsTUFDUkMsU0FBVSxRQUNWeE4sS0FBTSxDQUFDLElBQUssSUFBSyxHQUFJLE9BQVEsdVJBa0YzQjQxQyxHQUFnQixDQUNsQnJvQyxPQUFRLE1BQ1JDLFNBQVUsZUFDVnhOLEtBQU0sQ0FBQyxJQUFLLElBQUssR0FBSSxPQUFRLDRSQUUzQjYxQyxHQUFnQixDQUNsQnRvQyxPQUFRLE1BQ1JDLFNBQVUsZUFDVnhOLEtBQU0sQ0FBQyxJQUFLLElBQUssR0FBSSxPQUFRLG1QQUUzQjgxQyxHQUFpQixDQUNuQnZvQyxPQUFRLE1BQ1JDLFNBQVUsZ0JBQ1Z4TixLQUFNLENBQUMsSUFBSyxJQUFLLEdBQUksT0FBUSw4UkF5YzNCKzFDLEdBQWEsQ0FDZnhvQyxPQUFRLE1BQ1JDLFNBQVUsV0FDVnhOLEtBQU0sQ0FBQyxJQUFLLElBQUssR0FBSSxPQUFRLCtiQW1FM0JnMkMsR0FBYyxDQUNoQnpvQyxPQUFRLE1BQ1JDLFNBQVUsYUFDVnhOLEtBQU0sQ0FBQyxJQUFLLElBQUssR0FBSSxPQUFRLDhOQUUzQmkyQyxHQUFjLENBQ2hCMW9DLE9BQVEsTUFDUkMsU0FBVSxhQUNWeE4sS0FBTSxDQUFDLElBQUssSUFBSyxHQUFJLE9BQVEsd05BaUczQmsyQyxHQUFhLENBQ2Yzb0MsT0FBUSxNQUNSQyxTQUFVLFlBQ1Z4TixLQUFNLENBQUMsSUFBSyxJQUFLLEdBQUksT0FBUSxvdUJBK0MzQm0yQyxHQUFTLENBQ1g1b0MsT0FBUSxNQUNSQyxTQUFVLE9BQ1Z4TixLQUFNLENBQUMsSUFBSyxJQUFLLEdBQUksT0FBUSxnTUFZM0JvMkMsR0FBYyxDQUNoQjdvQyxPQUFRLE1BQ1JDLFNBQVUsYUFDVnhOLEtBQU0sQ0FBQyxJQUFLLElBQUssR0FBSSxPQUFRLDJqQkFnQzNCcTJDLEdBQWMsQ0FDaEI5b0MsT0FBUSxNQUNSQyxTQUFVLGFBQ1Z4TixLQUFNLENBQUMsSUFBSyxJQUFLLEdBQUksT0FBUSwrY0FvRDNCczJDLEdBQWMsQ0FDaEIvb0MsT0FBUSxNQUNSQyxTQUFVLGFBQ1Z4TixLQUFNLENBQUMsSUFBSyxJQUFLLEdBQUksT0FBUSxtZUF1RjNCdTJDLEdBQVcsQ0FDYmhwQyxPQUFRLE1BQ1JDLFNBQVUsU0FDVnhOLEtBQU0sQ0FBQyxJQUFLLElBQUssR0FBSSxPQUFRLG9JQVkzQncyQyxHQUFlLENBQ2pCanBDLE9BQVEsTUFDUkMsU0FBVSxjQUNWeE4sS0FBTSxDQUFDLElBQUssSUFBSyxHQUFJLE9BQVEsb1RBMmEzQnkyQyxHQUFRLENBQ1ZscEMsT0FBUSxNQUNSQyxTQUFVLE1BQ1Z4TixLQUFNLENBQUMsSUFBSyxJQUFLLEdBQUksT0FBUSxrY0E0RjNCMDJDLEdBQVMsQ0FDWG5wQyxPQUFRLE1BQ1JDLFNBQVUsT0FDVnhOLEtBQU0sQ0FBQyxJQUFLLElBQUssR0FBSSxPQUFRLDBlQXdKM0IyMkMsR0FBUyxDQUNYcHBDLE9BQVEsTUFDUkMsU0FBVSxPQUNWeE4sS0FBTSxDQUFDLElBQUssSUFBSyxHQUFJLE9BQVEseVRBa0szQjQyQyxHQUFTLENBQ1hycEMsT0FBUSxNQUNSQyxTQUFVLE9BQ1Z4TixLQUFNLENBQUMsSUFBSyxJQUFLLEdBQUksT0FBUSxvdUNBZ0MzQjYyQyxHQUFTLENBQ1h0cEMsT0FBUSxNQUNSQyxTQUFVLE9BQ1Z4TixLQUFNLENBQUMsSUFBSyxJQUFLLEdBQUksT0FBUSx5TkFFM0I4MkMsR0FBYSxDQUNmdnBDLE9BQVEsTUFDUkMsU0FBVSxZQUNWeE4sS0FBTSxDQUFDLElBQUssSUFBSyxHQUFJLE9BQVEsMFJBa2UzQisyQyxHQUFjLENBQ2hCeHBDLE9BQVEsTUFDUkMsU0FBVSxhQUNWeE4sS0FBTSxDQUFDLElBQUssSUFBSyxHQUFJLE9BQVEsc2RBNmQzQmczQyxHQUFXLENBQ2J6cEMsT0FBUSxNQUNSQyxTQUFVLFNBQ1Z4TixLQUFNLENBQUMsSUFBSyxJQUFLLEdBQUksT0FBUSw4VkFxQzNCaTNDLEdBQVUsQ0FDWjFwQyxPQUFRLE1BQ1JDLFNBQVUsUUFDVnhOLEtBQU0sQ0FBQyxJQUFLLElBQUssR0FBSSxPQUFRLGtVQW1PM0JrM0MsR0FBUyxDQUNYM3BDLE9BQVEsTUFDUkMsU0FBVSxPQUNWeE4sS0FBTSxDQUFDLElBQUssSUFBSyxHQUFJLE9BQVEsMk1BeVMzQm0zQyxHQUFZLENBQ2Q1cEMsT0FBUSxNQUNSQyxTQUFVLFdBQ1Z4TixLQUFNLENBQUMsSUFBSyxJQUFLLEdBQUksT0FBUSwrdkJBc0czQm8zQyxHQUFPLENBQ1Q3cEMsT0FBUSxNQUNSQyxTQUFVLEtBQ1Z4TixLQUFNLENBQUMsSUFBSyxJQUFLLEdBQUksT0FBUSxnckNBTzNCcTNDLEdBQVcsQ0FDYjlwQyxPQUFRLE1BQ1JDLFNBQVUsVUFDVnhOLEtBQU0sQ0FBQyxJQUFLLElBQUssR0FBSSxPQUFRLHV3QkF5RDNCczNDLEdBQVUsQ0FDWi9wQyxPQUFRLE1BQ1JDLFNBQVUsUUFDVnhOLEtBQU0sQ0FBQyxJQUFLLElBQUssR0FBSSxPQUFRLG9hQXFIM0J1M0MsR0FBYSxDQUNmaHFDLE9BQVEsTUFDUkMsU0FBVSxZQUNWeE4sS0FBTSxDQUFDLElBQUssSUFBSyxHQUFJLE9BQVEsNFdBZ0gzQnczQyxHQUFXLENBQ2JqcUMsT0FBUSxNQUNSQyxTQUFVLFNBQ1Z4TixLQUFNLENBQUMsSUFBSyxJQUFLLEdBQUksT0FBUSwwY0FFM0J5M0MsR0FBUyxDQUNYbHFDLE9BQVEsTUFDUkMsU0FBVSxPQUNWeE4sS0FBTSxDQUFDLElBQUssSUFBSyxHQUFJLE9BQVEscVFBcUMzQjAzQyxHQUFhLENBQ2ZucUMsT0FBUSxNQUNSQyxTQUFVLFlBQ1Z4TixLQUFNLENBQUMsSUFBSyxJQUFLLEdBQUksT0FBUSxpZkFFM0IyM0MsR0FBZ0IsQ0FDbEJwcUMsT0FBUSxNQUNSQyxTQUFVLGVBQ1Z4TixLQUFNLENBQUMsSUFBSyxJQUFLLEdBQUksT0FBUSw0ZkN0bEovQjQzQyxFQUFRLFFBZ0RSaGpDLEtBQVE0Z0MsSUFDTnFCLEdBQ0FDLEdBQ0FmLEdBQ0E0QixHQUNBaEMsR0FDQWlCLEdBQ0FjLEdBQ0FELEdBQ0FyQixHQUNBRSxHQUNBRyxHQUNBVSxHQUNBRixHQUNBUCxHQUNBUixHQUNBUixHQUNBc0IsR0FDQWYsR0FDQUosR0FDQUMsR0FDQUYsR0FDQTRCLEdBQ0FELEdBQ0FmLEdBQ0FZLEdBQ0FDLEdBQ0FWLEdBQ0FKLEdBQ0FKLEdBQ0FFLEdBQ0FpQixHQUNBSixHQUNBbEIsR0FDQWUsSUFFRmprQixJQUFJenpCLFVBQVUsa0JBQW1CdzRDLE1BRWpDL2tCLElBQUltQixJQUFJdkMsSUFDUm9CLElBQUltQixJQUFJMGQsSUFFUjdlLElBQUlsc0IsT0FBT2t4QyxlQUFnQixFQUczQnY4QyxTQUFTbUosaUJBQWlCLFFBQVEsU0FBQXhJLEdBQ2hDLElBQUk2N0MsRUFBY3g4QyxTQUFTbXZCLGVBQWUsbUJBRTFDcXRCLEVBQVludEMsTUFBTW1nQixJQUFNN3VCLEVBQU04N0MsUUFBVSxHQUFLLEtBQzdDRCxFQUFZbnRDLE1BQU1rZ0IsS0FBTzV1QixFQUFNKzdDLFFBQVUsUUFFekMsR0FHRjE4QyxTQUFTbUosaUJBQWlCLFdBQVcsV0FDbkNzaUMsS0FBTzNtQyxNQUFNLFdBQ1osR0FFa0IsSUFBSXl5QixJQUFJLENBQzNCMEMsUUFDQTJiLFNBQ0FoMEIsVUFDQTVqQixLQUFNLENBQ0pxTixlQUVGOFMsT0FBUSxTQUFDSyxHQUFELE9BQU9BLEVBQUVtK0IsT0FDaEJDLE9BQU8sUyx1QkNqSFZ0NUMsT0FBTzhhLEVBQUlpK0IsRUFBUSxRQVFuQi80QyxPQUFPZ25DLE1BQVErUixFQUFRLFFBRXZCLzRDLE9BQU9nbkMsTUFBTWpELFNBQVM4RSxRQUFRMFEsT0FBTyxvQkFBc0Isa0Isb0NDVjNELHVCQUEyYyxHLG9DQ0UzYyxJQUFJQyxFQUFRLEVBQVEsUUFFcEIsU0FBU0MsSUFDUC80QyxLQUFLZzVDLFNBQVcsR0FXbEJELEVBQW1CdCtDLFVBQVVpNkIsSUFBTSxTQUFhcnFCLEVBQVdDLEdBS3pELE9BSkF0SyxLQUFLZzVDLFNBQVNuK0MsS0FBSyxDQUNqQndQLFVBQVdBLEVBQ1hDLFNBQVVBLElBRUx0SyxLQUFLZzVDLFNBQVN6K0MsT0FBUyxHQVFoQ3crQyxFQUFtQnQrQyxVQUFVdytDLE1BQVEsU0FBZWx0QyxHQUM5Qy9MLEtBQUtnNUMsU0FBU2p0QyxLQUNoQi9MLEtBQUtnNUMsU0FBU2p0QyxHQUFNLE9BWXhCZ3RDLEVBQW1CdCtDLFVBQVVtSSxRQUFVLFNBQWlCb0YsR0FDdEQ4d0MsRUFBTWwyQyxRQUFRNUMsS0FBS2c1QyxVQUFVLFNBQXdCeCtCLEdBQ3pDLE9BQU5BLEdBQ0Z4UyxFQUFHd1MsT0FLVG5mLEVBQU9ELFFBQVUyOUMsRyxxQkNyQ2pCMTlDLEVBQU9ELFFBQVUsU0FBVWdRLEdBRXpCLElBQUlzUyxFQUE2QixvQkFBWHBlLFFBQTBCQSxPQUFPb2UsU0FFdkQsSUFBS0EsRUFDSCxNQUFNLElBQUloaEIsTUFBTSxvQ0FJbkIsSUFBSzBPLEdBQXNCLGlCQUFSQSxFQUNqQixPQUFPQSxFQUdSLElBQUk4dEMsRUFBVXg3QixFQUFTNkwsU0FBVyxLQUFPN0wsRUFBUzhMLEtBQzlDMnZCLEVBQWFELEVBQVV4N0IsRUFBUzJULFNBQVM5dkIsUUFBUSxZQUFhLEtBMkRuRSxPQS9CZTZKLEVBQUk3SixRQUFRLHVEQUF1RCxTQUFTNjNDLEVBQVdDLEdBRXJHLElBV0lDLEVBWEFDLEVBQWtCRixFQUNwQjFtQyxPQUNBcFIsUUFBUSxZQUFZLFNBQVN2RCxFQUFHdzdDLEdBQUssT0FBT0EsS0FDNUNqNEMsUUFBUSxZQUFZLFNBQVN2RCxFQUFHdzdDLEdBQUssT0FBT0EsS0FHOUMsTUFBSSxvREFBb0RwNEMsS0FBS200QyxHQUNwREgsR0FRUkUsRUFGcUMsSUFBbENDLEVBQWdCbDBDLFFBQVEsTUFFbEJrMEMsRUFDa0MsSUFBakNBLEVBQWdCbDBDLFFBQVEsS0FFekI2ekMsRUFBVUssRUFHVkosRUFBYUksRUFBZ0JoNEMsUUFBUSxRQUFTLElBSWpELE9BQVNrZ0IsS0FBS0MsVUFBVTQzQixHQUFVLFUscUJDbEYzQyxJQUFJNTVDLEVBQVUsRUFBUSxRQUVBLGlCQUFaQSxJQUFzQkEsRUFBVSxDQUFDLENBQUNyRSxFQUFPaEIsRUFBSXFGLEVBQVMsTUFPaEUsSUFBSUMsRUFBVSxDQUFDLEtBQU0sRUFFckIsZUFQSUMsRUFRSixnQkFBcUJyQyxHQUVSLEVBQVEsT0FBUixDQUFtRW1DLEVBQVNDLEdBRXRGRCxFQUFRRyxTQUFReEUsRUFBT0QsUUFBVXNFLEVBQVFHLFMsc0JDakJsQ3hFLEVBQU9ELFFBQVUsRUFBUSxPQUFSLEVBQStELElBS2xGUCxLQUFLLENBQUNRLEVBQU9oQixFQUFJLDJuREFBNG5ELE0sa0NDTHJwRCxJLDhXQ1VBLElDVjhNLEVEVTlNLENBQ0UsS0FBRixXQUNFLFMsK1ZBQUYsSUFDQSxhQUNBLG9CQUZBLENBSUksVUFKSixXQUtNLE9BQU4sZ0RBR0UsS0FWRixXQVdJLE1BQUosQ0FDTSxtQkFBTixJQUdFLFFBQUYsQ0FDSSxXQURKLFdBRU0sRUFBTix1QkFDTSxFQUFOLDJCQUNNLEVBQU4sd0NBR0UsUUF0QkYsV0FzQkksSUFBSixPQUdJLEVBQUosZ0NBQU0sT0FBTiwwQkFHSSxFQUFKLCtCQUFNLE9BQU4sMEJBQ0ksRUFBSiwrQkFBTSxPQUFOLDBCQUNJLEVBQUosaUNBQU0sT0FBTiwwQkFDSSxFQUFKLGlDQUFNLE9BQU4sMEJBQ0ksRUFBSixxREFBTSxPQUFOLDJCLHdCRWxDSXlGLEVBQVksWUFDZCxHSFRXLFdBQWEsSUFBaUJHLEVBQVRELEtBQWdCRSxlQUFtQkMsRUFBbkNILEtBQTBDSSxNQUFNRCxJQUFJRixFQUFHLE9BQU9FLEVBQUcsYUFBYSxDQUFDTyxNQUFNLENBQUMsS0FBTyxhQUFhLENBQTFHVixLQUF5SCxVQUFFRyxFQUFHLE1BQU0sQ0FBQ0UsWUFBWSxXQUFXMlksR0FBRyxDQUFDLE1BQWhLaFosS0FBNEt5NUMsY0FBNUt6NUMsS0FBOExlLFNBQzFNLElHV3BCLEVBQ0EsS0FDQSxXQUNBLE1BSWEsSUFBQWpCLEUsMkNDbkJmLHVCQUFzZCxHLGtDQ0V0ZCxJQUFJZzVDLEVBQVEsRUFBUSxRQUNoQlksRUFBVyxFQUFRLFFBQ25CWCxFQUFxQixFQUFRLFFBQzdCWSxFQUFrQixFQUFRLFFBQzFCQyxFQUFjLEVBQVEsUUFPMUIsU0FBU0MsRUFBTUMsR0FDYjk1QyxLQUFLcWpDLFNBQVd5VyxFQUNoQjk1QyxLQUFLKzVDLGFBQWUsQ0FDbEJ6OEMsUUFBUyxJQUFJeTdDLEVBQ2J4UyxTQUFVLElBQUl3UyxHQVNsQmMsRUFBTXAvQyxVQUFVNkMsUUFBVSxTQUFpQitKLEdBR25CLGlCQUFYQSxHQUNUQSxFQUFTbEYsVUFBVSxJQUFNLElBQ2xCaEIsSUFBTWdCLFVBQVUsR0FFdkJrRixFQUFTQSxHQUFVLElBR3JCQSxFQUFTdXlDLEVBQVk1NUMsS0FBS3FqQyxTQUFVaDhCLElBR3pCMnlDLE9BQ1QzeUMsRUFBTzJ5QyxPQUFTM3lDLEVBQU8yeUMsT0FBT2puQyxjQUNyQi9TLEtBQUtxakMsU0FBUzJXLE9BQ3ZCM3lDLEVBQU8yeUMsT0FBU2g2QyxLQUFLcWpDLFNBQVMyVyxPQUFPam5DLGNBRXJDMUwsRUFBTzJ5QyxPQUFTLE1BSWxCLElBQUluWCxFQUFRLENBQUM4VyxPQUFpQnA4QyxHQUMxQjdCLEVBQVVDLFFBQVFDLFFBQVF5TCxHQVU5QixJQVJBckgsS0FBSys1QyxhQUFhejhDLFFBQVFzRixTQUFRLFNBQW9DcTNDLEdBQ3BFcFgsRUFBTXhrQixRQUFRNDdCLEVBQVk1dkMsVUFBVzR2QyxFQUFZM3ZDLGFBR25EdEssS0FBSys1QyxhQUFheFQsU0FBUzNqQyxTQUFRLFNBQWtDcTNDLEdBQ25FcFgsRUFBTWhvQyxLQUFLby9DLEVBQVk1dkMsVUFBVzR2QyxFQUFZM3ZDLGFBR3pDdTRCLEVBQU10b0MsUUFDWG1CLEVBQVVBLEVBQVEwTixLQUFLeTVCLEVBQU03bkMsUUFBUzZuQyxFQUFNN25DLFNBRzlDLE9BQU9VLEdBR1RtK0MsRUFBTXAvQyxVQUFVeS9DLE9BQVMsU0FBZ0I3eUMsR0FFdkMsT0FEQUEsRUFBU3V5QyxFQUFZNTVDLEtBQUtxakMsU0FBVWg4QixHQUM3QnF5QyxFQUFTcnlDLEVBQU9sRyxJQUFLa0csRUFBT3NHLE9BQVF0RyxFQUFPOHlDLGtCQUFrQjU0QyxRQUFRLE1BQU8sS0FJckZ1M0MsRUFBTWwyQyxRQUFRLENBQUMsU0FBVSxNQUFPLE9BQVEsWUFBWSxTQUE2Qm8zQyxHQUUvRUgsRUFBTXAvQyxVQUFVdS9DLEdBQVUsU0FBUzc0QyxFQUFLa0csR0FDdEMsT0FBT3JILEtBQUsxQyxRQUFRdzdDLEVBQU12akIsTUFBTWx1QixHQUFVLEdBQUksQ0FDNUMyeUMsT0FBUUEsRUFDUjc0QyxJQUFLQSxTQUtYMjNDLEVBQU1sMkMsUUFBUSxDQUFDLE9BQVEsTUFBTyxVQUFVLFNBQStCbzNDLEdBRXJFSCxFQUFNcC9DLFVBQVV1L0MsR0FBVSxTQUFTNzRDLEVBQUtuSCxFQUFNcU4sR0FDNUMsT0FBT3JILEtBQUsxQyxRQUFRdzdDLEVBQU12akIsTUFBTWx1QixHQUFVLEdBQUksQ0FDNUMyeUMsT0FBUUEsRUFDUjc0QyxJQUFLQSxFQUNMbkgsS0FBTUEsU0FLWnFCLEVBQU9ELFFBQVV5K0MsRyxrQ0M3RmpCLHdrRUErckNJTyxFQUFjLENBQ2hCLzhDLEtBQU0sY0FDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUyw0QkFDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxPQUFRLENBQ3hCOVosTUFBTyxDQUNMZzZDLEdBQUksS0FDSkMsR0FBSSxLQUNKQyxHQUFJLEtBQ0pDLEdBQUksT0FFSnJnQyxFQUFFLFdBQVksQ0FDaEI5WixNQUFPLENBQ0xvNkMsT0FBUSx5QkF5bUJaQyxFQUFVLENBQ1oxOUMsS0FBTSxVQUNOd0UsTUFBTyxDQUNMZ0osS0FBTSxDQUNKNU4sS0FBTWdkLE9BQ05DLFFBQVMsS0FDVG1nQyxVQUFXLFNBQW1CNTZDLEdBQzVCLE9BQVE0VCxNQUFNNVQsSUFBTUEsRUFBRWxGLFFBQVUsSUFBTThZLE1BQU01VCxFQUFFRCxNQUFNLEVBQUdDLEVBQUVsRixPQUFTLEtBQXVCLE1BQWhCa0YsRUFBRUQsT0FBTyxNQUl4RndhLFlBQVksRUFDWkcsT0FBUSxTQUFnQkssRUFBRzgvQixHQUN6QixJQUFJenZDLEVBQW9DLE1BQTdCeXZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxPQUFPLEdBQWE4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE1BQU0sRUFBRzg2QyxFQUFJejRDLE1BQU1nSixLQUFLdFEsT0FBUyxHQUFLLEtBQU93aEMsU0FBU3VlLEVBQUl6NEMsTUFBTWdKLE1BQVEsS0FDakluSyxFQUFRNDVDLEVBQUl0Z0QsS0FBSzBHLE9BQVMsR0FJOUIsT0FIQUEsRUFBTXlNLE1BQVF6TSxFQUFNeU0sT0FBU3RDLEVBQzdCbkssRUFBTTBNLE9BQVMxTSxFQUFNME0sUUFBVXZDLEVBQy9CeXZDLEVBQUl0Z0QsS0FBSzBHLE1BQVFBLEVBQ1Y4WixFQUFFLE1BQU8sSUFBZSxDQUFDLENBQzlCOVosTUFBTyxDQUNMNjVDLE1BQU8sNkJBQ1BwdEMsTUFBTyxLQUNQQyxPQUFRLEtBQ1JvdEMsUUFBUyxZQUNUL3NDLEtBQU0sT0FDTmd0QyxPQUFRLGVBQ1IsZUFBZ0IsSUFDaEIsaUJBQWtCLFFBQ2xCLGtCQUFtQixTQUVyQixNQUFTLHVCQUNSSCxFQUFJdGdELE9BQVEsQ0FBQ3dnQixFQUFFLE9BQVEsQ0FDeEI5WixNQUFPLENBQ0w1QyxFQUFHLCtIQUVIMGMsRUFBRSxXQUFZLENBQ2hCOVosTUFBTyxDQUNMbzZDLE9BQVEsbUNBRVJ0Z0MsRUFBRSxPQUFRLENBQ1o5WixNQUFPLENBQ0xnNkMsR0FBSSxLQUNKQyxHQUFJLFFBQ0pDLEdBQUksS0FDSkMsR0FBSSxZQXNEUkcsRUFBZSxDQUNqQjM5QyxLQUFNLGVBQ053RSxNQUFPLENBQ0xnSixLQUFNLENBQ0o1TixLQUFNZ2QsT0FDTkMsUUFBUyxLQUNUbWdDLFVBQVcsU0FBbUI1NkMsR0FDNUIsT0FBUTRULE1BQU01VCxJQUFNQSxFQUFFbEYsUUFBVSxJQUFNOFksTUFBTTVULEVBQUVELE1BQU0sRUFBR0MsRUFBRWxGLE9BQVMsS0FBdUIsTUFBaEJrRixFQUFFRCxPQUFPLE1BSXhGd2EsWUFBWSxFQUNaRyxPQUFRLFNBQWdCSyxFQUFHOC9CLEdBQ3pCLElBQUl6dkMsRUFBb0MsTUFBN0J5dkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE9BQU8sR0FBYTg2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsTUFBTSxFQUFHODZDLEVBQUl6NEMsTUFBTWdKLEtBQUt0USxPQUFTLEdBQUssS0FBT3doQyxTQUFTdWUsRUFBSXo0QyxNQUFNZ0osTUFBUSxLQUNqSW5LLEVBQVE0NUMsRUFBSXRnRCxLQUFLMEcsT0FBUyxHQUk5QixPQUhBQSxFQUFNeU0sTUFBUXpNLEVBQU15TSxPQUFTdEMsRUFDN0JuSyxFQUFNME0sT0FBUzFNLEVBQU0wTSxRQUFVdkMsRUFDL0J5dkMsRUFBSXRnRCxLQUFLMEcsTUFBUUEsRUFDVjhaLEVBQUUsTUFBTyxJQUFlLENBQUMsQ0FDOUI5WixNQUFPLENBQ0w2NUMsTUFBTyw2QkFDUHB0QyxNQUFPLEtBQ1BDLE9BQVEsS0FDUm90QyxRQUFTLFlBQ1Qvc0MsS0FBTSxPQUNOZ3RDLE9BQVEsZUFDUixlQUFnQixJQUNoQixpQkFBa0IsUUFDbEIsa0JBQW1CLFNBRXJCLE1BQVMsNEJBQ1JILEVBQUl0Z0QsT0FBUSxDQUFDd2dCLEVBQUUsT0FBUSxDQUN4QjlaLE1BQU8sQ0FDTG9LLEVBQUcsSUFDSEMsRUFBRyxJQUNIb0MsTUFBTyxLQUNQQyxPQUFRLEtBQ1I2dEMsR0FBSSxJQUNKQyxHQUFJLE9BRUoxZ0MsRUFBRSxPQUFRLENBQ1o5WixNQUFPLENBQ0xnNkMsR0FBSSxLQUNKQyxHQUFJLElBQ0pDLEdBQUksS0FDSkMsR0FBSSxPQUVKcmdDLEVBQUUsT0FBUSxDQUNaOVosTUFBTyxDQUNMZzZDLEdBQUksSUFDSkMsR0FBSSxJQUNKQyxHQUFJLElBQ0pDLEdBQUksT0FFSnJnQyxFQUFFLE9BQVEsQ0FDWjlaLE1BQU8sQ0FDTGc2QyxHQUFJLElBQ0pDLEdBQUksS0FDSkMsR0FBSSxLQUNKQyxHQUFJLFlBMExSTSxFQUFrQixDQUNwQjk5QyxLQUFNLGtCQUNOd0UsTUFBTyxDQUNMZ0osS0FBTSxDQUNKNU4sS0FBTWdkLE9BQ05DLFFBQVMsS0FDVG1nQyxVQUFXLFNBQW1CNTZDLEdBQzVCLE9BQVE0VCxNQUFNNVQsSUFBTUEsRUFBRWxGLFFBQVUsSUFBTThZLE1BQU01VCxFQUFFRCxNQUFNLEVBQUdDLEVBQUVsRixPQUFTLEtBQXVCLE1BQWhCa0YsRUFBRUQsT0FBTyxNQUl4RndhLFlBQVksRUFDWkcsT0FBUSxTQUFnQkssRUFBRzgvQixHQUN6QixJQUFJenZDLEVBQW9DLE1BQTdCeXZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxPQUFPLEdBQWE4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE1BQU0sRUFBRzg2QyxFQUFJejRDLE1BQU1nSixLQUFLdFEsT0FBUyxHQUFLLEtBQU93aEMsU0FBU3VlLEVBQUl6NEMsTUFBTWdKLE1BQVEsS0FDakluSyxFQUFRNDVDLEVBQUl0Z0QsS0FBSzBHLE9BQVMsR0FJOUIsT0FIQUEsRUFBTXlNLE1BQVF6TSxFQUFNeU0sT0FBU3RDLEVBQzdCbkssRUFBTTBNLE9BQVMxTSxFQUFNME0sUUFBVXZDLEVBQy9CeXZDLEVBQUl0Z0QsS0FBSzBHLE1BQVFBLEVBQ1Y4WixFQUFFLE1BQU8sSUFBZSxDQUFDLENBQzlCOVosTUFBTyxDQUNMNjVDLE1BQU8sNkJBQ1BwdEMsTUFBTyxLQUNQQyxPQUFRLEtBQ1JvdEMsUUFBUyxZQUNUL3NDLEtBQU0sT0FDTmd0QyxPQUFRLGVBQ1IsZUFBZ0IsSUFDaEIsaUJBQWtCLFFBQ2xCLGtCQUFtQixTQUVyQixNQUFTLGdDQUNSSCxFQUFJdGdELE9BQVEsQ0FBQ3dnQixFQUFFLFdBQVksQ0FDNUI5WixNQUFPLENBQ0xvNkMsT0FBUSxxQkFFUnRnQyxFQUFFLE9BQVEsQ0FDWjlaLE1BQU8sQ0FDTDVDLEVBQUcsbUVBTVBzOUMsRUFBWSxDQUNkLzlDLEtBQU0sWUFDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUyx5QkFDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxXQUFZLENBQzVCOVosTUFBTyxDQUNMbzZDLE9BQVEsd0JBTVpPLEVBQWtCLENBQ3BCaCtDLEtBQU0sa0JBQ053RSxNQUFPLENBQ0xnSixLQUFNLENBQ0o1TixLQUFNZ2QsT0FDTkMsUUFBUyxLQUNUbWdDLFVBQVcsU0FBbUI1NkMsR0FDNUIsT0FBUTRULE1BQU01VCxJQUFNQSxFQUFFbEYsUUFBVSxJQUFNOFksTUFBTTVULEVBQUVELE1BQU0sRUFBR0MsRUFBRWxGLE9BQVMsS0FBdUIsTUFBaEJrRixFQUFFRCxPQUFPLE1BSXhGd2EsWUFBWSxFQUNaRyxPQUFRLFNBQWdCSyxFQUFHOC9CLEdBQ3pCLElBQUl6dkMsRUFBb0MsTUFBN0J5dkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE9BQU8sR0FBYTg2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsTUFBTSxFQUFHODZDLEVBQUl6NEMsTUFBTWdKLEtBQUt0USxPQUFTLEdBQUssS0FBT3doQyxTQUFTdWUsRUFBSXo0QyxNQUFNZ0osTUFBUSxLQUNqSW5LLEVBQVE0NUMsRUFBSXRnRCxLQUFLMEcsT0FBUyxHQUk5QixPQUhBQSxFQUFNeU0sTUFBUXpNLEVBQU15TSxPQUFTdEMsRUFDN0JuSyxFQUFNME0sT0FBUzFNLEVBQU0wTSxRQUFVdkMsRUFDL0J5dkMsRUFBSXRnRCxLQUFLMEcsTUFBUUEsRUFDVjhaLEVBQUUsTUFBTyxJQUFlLENBQUMsQ0FDOUI5WixNQUFPLENBQ0w2NUMsTUFBTyw2QkFDUHB0QyxNQUFPLEtBQ1BDLE9BQVEsS0FDUm90QyxRQUFTLFlBQ1Qvc0MsS0FBTSxPQUNOZ3RDLE9BQVEsZUFDUixlQUFnQixJQUNoQixpQkFBa0IsUUFDbEIsa0JBQW1CLFNBRXJCLE1BQVMsZ0NBQ1JILEVBQUl0Z0QsT0FBUSxDQUFDd2dCLEVBQUUsV0FBWSxDQUM1QjlaLE1BQU8sQ0FDTG82QyxPQUFRLHdCQU1aUSxFQUFrQixDQUNwQmorQyxLQUFNLGtCQUNOd0UsTUFBTyxDQUNMZ0osS0FBTSxDQUNKNU4sS0FBTWdkLE9BQ05DLFFBQVMsS0FDVG1nQyxVQUFXLFNBQW1CNTZDLEdBQzVCLE9BQVE0VCxNQUFNNVQsSUFBTUEsRUFBRWxGLFFBQVUsSUFBTThZLE1BQU01VCxFQUFFRCxNQUFNLEVBQUdDLEVBQUVsRixPQUFTLEtBQXVCLE1BQWhCa0YsRUFBRUQsT0FBTyxNQUl4RndhLFlBQVksRUFDWkcsT0FBUSxTQUFnQkssRUFBRzgvQixHQUN6QixJQUFJenZDLEVBQW9DLE1BQTdCeXZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxPQUFPLEdBQWE4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE1BQU0sRUFBRzg2QyxFQUFJejRDLE1BQU1nSixLQUFLdFEsT0FBUyxHQUFLLEtBQU93aEMsU0FBU3VlLEVBQUl6NEMsTUFBTWdKLE1BQVEsS0FDakluSyxFQUFRNDVDLEVBQUl0Z0QsS0FBSzBHLE9BQVMsR0FJOUIsT0FIQUEsRUFBTXlNLE1BQVF6TSxFQUFNeU0sT0FBU3RDLEVBQzdCbkssRUFBTTBNLE9BQVMxTSxFQUFNME0sUUFBVXZDLEVBQy9CeXZDLEVBQUl0Z0QsS0FBSzBHLE1BQVFBLEVBQ1Y4WixFQUFFLE1BQU8sSUFBZSxDQUFDLENBQzlCOVosTUFBTyxDQUNMNjVDLE1BQU8sNkJBQ1BwdEMsTUFBTyxLQUNQQyxPQUFRLEtBQ1JvdEMsUUFBUyxZQUNUL3NDLEtBQU0sT0FDTmd0QyxPQUFRLGVBQ1IsZUFBZ0IsSUFDaEIsaUJBQWtCLFFBQ2xCLGtCQUFtQixTQUVyQixNQUFTLGdDQUNSSCxFQUFJdGdELE9BQVEsQ0FBQ3dnQixFQUFFLFdBQVksQ0FDNUI5WixNQUFPLENBQ0xvNkMsT0FBUSx5QkFNWlMsRUFBbUIsQ0FDckJsK0MsS0FBTSxtQkFDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUyxpQ0FDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxXQUFZLENBQzVCOVosTUFBTyxDQUNMbzZDLE9BQVEsd0JBTVpVLEVBQWdCLENBQ2xCbitDLEtBQU0sZ0JBQ053RSxNQUFPLENBQ0xnSixLQUFNLENBQ0o1TixLQUFNZ2QsT0FDTkMsUUFBUyxLQUNUbWdDLFVBQVcsU0FBbUI1NkMsR0FDNUIsT0FBUTRULE1BQU01VCxJQUFNQSxFQUFFbEYsUUFBVSxJQUFNOFksTUFBTTVULEVBQUVELE1BQU0sRUFBR0MsRUFBRWxGLE9BQVMsS0FBdUIsTUFBaEJrRixFQUFFRCxPQUFPLE1BSXhGd2EsWUFBWSxFQUNaRyxPQUFRLFNBQWdCSyxFQUFHOC9CLEdBQ3pCLElBQUl6dkMsRUFBb0MsTUFBN0J5dkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE9BQU8sR0FBYTg2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsTUFBTSxFQUFHODZDLEVBQUl6NEMsTUFBTWdKLEtBQUt0USxPQUFTLEdBQUssS0FBT3doQyxTQUFTdWUsRUFBSXo0QyxNQUFNZ0osTUFBUSxLQUNqSW5LLEVBQVE0NUMsRUFBSXRnRCxLQUFLMEcsT0FBUyxHQUk5QixPQUhBQSxFQUFNeU0sTUFBUXpNLEVBQU15TSxPQUFTdEMsRUFDN0JuSyxFQUFNME0sT0FBUzFNLEVBQU0wTSxRQUFVdkMsRUFDL0J5dkMsRUFBSXRnRCxLQUFLMEcsTUFBUUEsRUFDVjhaLEVBQUUsTUFBTyxJQUFlLENBQUMsQ0FDOUI5WixNQUFPLENBQ0w2NUMsTUFBTyw2QkFDUHB0QyxNQUFPLEtBQ1BDLE9BQVEsS0FDUm90QyxRQUFTLFlBQ1Qvc0MsS0FBTSxPQUNOZ3RDLE9BQVEsZUFDUixlQUFnQixJQUNoQixpQkFBa0IsUUFDbEIsa0JBQW1CLFNBRXJCLE1BQVMsOEJBQ1JILEVBQUl0Z0QsT0FBUSxDQUFDd2dCLEVBQUUsV0FBWSxDQUM1QjlaLE1BQU8sQ0FDTG82QyxPQUFRLHlCQXdmWlcsRUFBZSxDQUNqQnArQyxLQUFNLGVBQ053RSxNQUFPLENBQ0xnSixLQUFNLENBQ0o1TixLQUFNZ2QsT0FDTkMsUUFBUyxLQUNUbWdDLFVBQVcsU0FBbUI1NkMsR0FDNUIsT0FBUTRULE1BQU01VCxJQUFNQSxFQUFFbEYsUUFBVSxJQUFNOFksTUFBTTVULEVBQUVELE1BQU0sRUFBR0MsRUFBRWxGLE9BQVMsS0FBdUIsTUFBaEJrRixFQUFFRCxPQUFPLE1BSXhGd2EsWUFBWSxFQUNaRyxPQUFRLFNBQWdCSyxFQUFHOC9CLEdBQ3pCLElBQUl6dkMsRUFBb0MsTUFBN0J5dkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE9BQU8sR0FBYTg2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsTUFBTSxFQUFHODZDLEVBQUl6NEMsTUFBTWdKLEtBQUt0USxPQUFTLEdBQUssS0FBT3doQyxTQUFTdWUsRUFBSXo0QyxNQUFNZ0osTUFBUSxLQUNqSW5LLEVBQVE0NUMsRUFBSXRnRCxLQUFLMEcsT0FBUyxHQUk5QixPQUhBQSxFQUFNeU0sTUFBUXpNLEVBQU15TSxPQUFTdEMsRUFDN0JuSyxFQUFNME0sT0FBUzFNLEVBQU0wTSxRQUFVdkMsRUFDL0J5dkMsRUFBSXRnRCxLQUFLMEcsTUFBUUEsRUFDVjhaLEVBQUUsTUFBTyxJQUFlLENBQUMsQ0FDOUI5WixNQUFPLENBQ0w2NUMsTUFBTyw2QkFDUHB0QyxNQUFPLEtBQ1BDLE9BQVEsS0FDUm90QyxRQUFTLFlBQ1Qvc0MsS0FBTSxPQUNOZ3RDLE9BQVEsZUFDUixlQUFnQixJQUNoQixpQkFBa0IsUUFDbEIsa0JBQW1CLFNBRXJCLE1BQVMsNkJBQ1JILEVBQUl0Z0QsT0FBUSxDQUFDd2dCLEVBQUUsT0FBUSxDQUN4QjlaLE1BQU8sQ0FDTDVDLEVBQUcsK0ZBRUgwYyxFQUFFLE9BQVEsQ0FDWjlaLE1BQU8sQ0FDTGc2QyxHQUFJLElBQ0pDLEdBQUksSUFDSkMsR0FBSSxLQUNKQyxHQUFJLFlBbUpSYSxFQUFZLENBQ2RyK0MsS0FBTSxZQUNOd0UsTUFBTyxDQUNMZ0osS0FBTSxDQUNKNU4sS0FBTWdkLE9BQ05DLFFBQVMsS0FDVG1nQyxVQUFXLFNBQW1CNTZDLEdBQzVCLE9BQVE0VCxNQUFNNVQsSUFBTUEsRUFBRWxGLFFBQVUsSUFBTThZLE1BQU01VCxFQUFFRCxNQUFNLEVBQUdDLEVBQUVsRixPQUFTLEtBQXVCLE1BQWhCa0YsRUFBRUQsT0FBTyxNQUl4RndhLFlBQVksRUFDWkcsT0FBUSxTQUFnQkssRUFBRzgvQixHQUN6QixJQUFJenZDLEVBQW9DLE1BQTdCeXZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxPQUFPLEdBQWE4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE1BQU0sRUFBRzg2QyxFQUFJejRDLE1BQU1nSixLQUFLdFEsT0FBUyxHQUFLLEtBQU93aEMsU0FBU3VlLEVBQUl6NEMsTUFBTWdKLE1BQVEsS0FDakluSyxFQUFRNDVDLEVBQUl0Z0QsS0FBSzBHLE9BQVMsR0FJOUIsT0FIQUEsRUFBTXlNLE1BQVF6TSxFQUFNeU0sT0FBU3RDLEVBQzdCbkssRUFBTTBNLE9BQVMxTSxFQUFNME0sUUFBVXZDLEVBQy9CeXZDLEVBQUl0Z0QsS0FBSzBHLE1BQVFBLEVBQ1Y4WixFQUFFLE1BQU8sSUFBZSxDQUFDLENBQzlCOVosTUFBTyxDQUNMNjVDLE1BQU8sNkJBQ1BwdEMsTUFBTyxLQUNQQyxPQUFRLEtBQ1JvdEMsUUFBUyxZQUNUL3NDLEtBQU0sT0FDTmd0QyxPQUFRLGVBQ1IsZUFBZ0IsSUFDaEIsaUJBQWtCLFFBQ2xCLGtCQUFtQixTQUVyQixNQUFTLHlCQUNSSCxFQUFJdGdELE9BQVEsQ0FBQ3dnQixFQUFFLE9BQVEsQ0FDeEI5WixNQUFPLENBQ0w1QyxFQUFHLHVEQU1QNjlDLEVBQVcsQ0FDYnQrQyxLQUFNLFdBQ053RSxNQUFPLENBQ0xnSixLQUFNLENBQ0o1TixLQUFNZ2QsT0FDTkMsUUFBUyxLQUNUbWdDLFVBQVcsU0FBbUI1NkMsR0FDNUIsT0FBUTRULE1BQU01VCxJQUFNQSxFQUFFbEYsUUFBVSxJQUFNOFksTUFBTTVULEVBQUVELE1BQU0sRUFBR0MsRUFBRWxGLE9BQVMsS0FBdUIsTUFBaEJrRixFQUFFRCxPQUFPLE1BSXhGd2EsWUFBWSxFQUNaRyxPQUFRLFNBQWdCSyxFQUFHOC9CLEdBQ3pCLElBQUl6dkMsRUFBb0MsTUFBN0J5dkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE9BQU8sR0FBYTg2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsTUFBTSxFQUFHODZDLEVBQUl6NEMsTUFBTWdKLEtBQUt0USxPQUFTLEdBQUssS0FBT3doQyxTQUFTdWUsRUFBSXo0QyxNQUFNZ0osTUFBUSxLQUNqSW5LLEVBQVE0NUMsRUFBSXRnRCxLQUFLMEcsT0FBUyxHQUk5QixPQUhBQSxFQUFNeU0sTUFBUXpNLEVBQU15TSxPQUFTdEMsRUFDN0JuSyxFQUFNME0sT0FBUzFNLEVBQU0wTSxRQUFVdkMsRUFDL0J5dkMsRUFBSXRnRCxLQUFLMEcsTUFBUUEsRUFDVjhaLEVBQUUsTUFBTyxJQUFlLENBQUMsQ0FDOUI5WixNQUFPLENBQ0w2NUMsTUFBTyw2QkFDUHB0QyxNQUFPLEtBQ1BDLE9BQVEsS0FDUm90QyxRQUFTLFlBQ1Qvc0MsS0FBTSxPQUNOZ3RDLE9BQVEsZUFDUixlQUFnQixJQUNoQixpQkFBa0IsUUFDbEIsa0JBQW1CLFNBRXJCLE1BQVMsd0JBQ1JILEVBQUl0Z0QsT0FBUSxDQUFDd2dCLEVBQUUsV0FBWSxDQUM1QjlaLE1BQU8sQ0FDTG82QyxPQUFRLHNCQUVSdGdDLEVBQUUsV0FBWSxDQUNoQjlaLE1BQU8sQ0FDTG82QyxPQUFRLHVCQXVaWmMsRUFBc0IsQ0FDeEJ2K0MsS0FBTSxzQkFDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUyxxQ0FDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxXQUFZLENBQzVCOVosTUFBTyxDQUNMbzZDLE9BQVEsdUJBRVJ0Z0MsRUFBRSxPQUFRLENBQ1o5WixNQUFPLENBQ0w1QyxFQUFHLGlDQW1YUCs5QyxFQUFpQixDQUNuQngrQyxLQUFNLGlCQUNOd0UsTUFBTyxDQUNMZ0osS0FBTSxDQUNKNU4sS0FBTWdkLE9BQ05DLFFBQVMsS0FDVG1nQyxVQUFXLFNBQW1CNTZDLEdBQzVCLE9BQVE0VCxNQUFNNVQsSUFBTUEsRUFBRWxGLFFBQVUsSUFBTThZLE1BQU01VCxFQUFFRCxNQUFNLEVBQUdDLEVBQUVsRixPQUFTLEtBQXVCLE1BQWhCa0YsRUFBRUQsT0FBTyxNQUl4RndhLFlBQVksRUFDWkcsT0FBUSxTQUFnQkssRUFBRzgvQixHQUN6QixJQUFJenZDLEVBQW9DLE1BQTdCeXZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxPQUFPLEdBQWE4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE1BQU0sRUFBRzg2QyxFQUFJejRDLE1BQU1nSixLQUFLdFEsT0FBUyxHQUFLLEtBQU93aEMsU0FBU3VlLEVBQUl6NEMsTUFBTWdKLE1BQVEsS0FDakluSyxFQUFRNDVDLEVBQUl0Z0QsS0FBSzBHLE9BQVMsR0FJOUIsT0FIQUEsRUFBTXlNLE1BQVF6TSxFQUFNeU0sT0FBU3RDLEVBQzdCbkssRUFBTTBNLE9BQVMxTSxFQUFNME0sUUFBVXZDLEVBQy9CeXZDLEVBQUl0Z0QsS0FBSzBHLE1BQVFBLEVBQ1Y4WixFQUFFLE1BQU8sSUFBZSxDQUFDLENBQzlCOVosTUFBTyxDQUNMNjVDLE1BQU8sNkJBQ1BwdEMsTUFBTyxLQUNQQyxPQUFRLEtBQ1JvdEMsUUFBUyxZQUNUL3NDLEtBQU0sT0FDTmd0QyxPQUFRLGVBQ1IsZUFBZ0IsSUFDaEIsaUJBQWtCLFFBQ2xCLGtCQUFtQixTQUVyQixNQUFTLCtCQUNSSCxFQUFJdGdELE9BQVEsQ0FBQ3dnQixFQUFFLE9BQVEsQ0FDeEI5WixNQUFPLENBQ0xvSyxFQUFHLElBQ0hDLEVBQUcsSUFDSG9DLE1BQU8sS0FDUEMsT0FBUSxLQUNSNnRDLEdBQUksSUFDSkMsR0FBSSxPQUVKMWdDLEVBQUUsT0FBUSxDQUNaOVosTUFBTyxDQUNMZzZDLEdBQUksSUFDSkMsR0FBSSxLQUNKQyxHQUFJLEtBQ0pDLEdBQUksWUFzSFJpQixFQUFlLENBQ2pCeitDLEtBQU0sZUFDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUyw0QkFDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxVQUFXLENBQzNCOVosTUFBTyxDQUNMcVQsR0FBSSxLQUNKQyxHQUFJLElBQ0ppbkMsR0FBSSxJQUNKQyxHQUFJLE9BRUoxZ0MsRUFBRSxPQUFRLENBQ1o5WixNQUFPLENBQ0w1QyxFQUFHLHVDQUVIMGMsRUFBRSxPQUFRLENBQ1o5WixNQUFPLENBQ0w1QyxFQUFHLDZDQStSUGkrQyxFQUFpQixDQUNuQjErQyxLQUFNLGlCQUNOd0UsTUFBTyxDQUNMZ0osS0FBTSxDQUNKNU4sS0FBTWdkLE9BQ05DLFFBQVMsS0FDVG1nQyxVQUFXLFNBQW1CNTZDLEdBQzVCLE9BQVE0VCxNQUFNNVQsSUFBTUEsRUFBRWxGLFFBQVUsSUFBTThZLE1BQU01VCxFQUFFRCxNQUFNLEVBQUdDLEVBQUVsRixPQUFTLEtBQXVCLE1BQWhCa0YsRUFBRUQsT0FBTyxNQUl4RndhLFlBQVksRUFDWkcsT0FBUSxTQUFnQkssRUFBRzgvQixHQUN6QixJQUFJenZDLEVBQW9DLE1BQTdCeXZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxPQUFPLEdBQWE4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE1BQU0sRUFBRzg2QyxFQUFJejRDLE1BQU1nSixLQUFLdFEsT0FBUyxHQUFLLEtBQU93aEMsU0FBU3VlLEVBQUl6NEMsTUFBTWdKLE1BQVEsS0FDakluSyxFQUFRNDVDLEVBQUl0Z0QsS0FBSzBHLE9BQVMsR0FJOUIsT0FIQUEsRUFBTXlNLE1BQVF6TSxFQUFNeU0sT0FBU3RDLEVBQzdCbkssRUFBTTBNLE9BQVMxTSxFQUFNME0sUUFBVXZDLEVBQy9CeXZDLEVBQUl0Z0QsS0FBSzBHLE1BQVFBLEVBQ1Y4WixFQUFFLE1BQU8sSUFBZSxDQUFDLENBQzlCOVosTUFBTyxDQUNMNjVDLE1BQU8sNkJBQ1BwdEMsTUFBTyxLQUNQQyxPQUFRLEtBQ1JvdEMsUUFBUyxZQUNUL3NDLEtBQU0sT0FDTmd0QyxPQUFRLGVBQ1IsZUFBZ0IsSUFDaEIsaUJBQWtCLFFBQ2xCLGtCQUFtQixTQUVyQixNQUFTLCtCQUNSSCxFQUFJdGdELE9BQVEsQ0FBQ3dnQixFQUFFLE9BQVEsQ0FDeEI5WixNQUFPLENBQ0xnNkMsR0FBSSxLQUNKQyxHQUFJLElBQ0pDLEdBQUksS0FDSkMsR0FBSSxRQUVKcmdDLEVBQUUsT0FBUSxDQUNaOVosTUFBTyxDQUNMNUMsRUFBRywyREFNUGsrQyxFQUFvQixDQUN0QjMrQyxLQUFNLG9CQUNOd0UsTUFBTyxDQUNMZ0osS0FBTSxDQUNKNU4sS0FBTWdkLE9BQ05DLFFBQVMsS0FDVG1nQyxVQUFXLFNBQW1CNTZDLEdBQzVCLE9BQVE0VCxNQUFNNVQsSUFBTUEsRUFBRWxGLFFBQVUsSUFBTThZLE1BQU01VCxFQUFFRCxNQUFNLEVBQUdDLEVBQUVsRixPQUFTLEtBQXVCLE1BQWhCa0YsRUFBRUQsT0FBTyxNQUl4RndhLFlBQVksRUFDWkcsT0FBUSxTQUFnQkssRUFBRzgvQixHQUN6QixJQUFJenZDLEVBQW9DLE1BQTdCeXZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxPQUFPLEdBQWE4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE1BQU0sRUFBRzg2QyxFQUFJejRDLE1BQU1nSixLQUFLdFEsT0FBUyxHQUFLLEtBQU93aEMsU0FBU3VlLEVBQUl6NEMsTUFBTWdKLE1BQVEsS0FDakluSyxFQUFRNDVDLEVBQUl0Z0QsS0FBSzBHLE9BQVMsR0FJOUIsT0FIQUEsRUFBTXlNLE1BQVF6TSxFQUFNeU0sT0FBU3RDLEVBQzdCbkssRUFBTTBNLE9BQVMxTSxFQUFNME0sUUFBVXZDLEVBQy9CeXZDLEVBQUl0Z0QsS0FBSzBHLE1BQVFBLEVBQ1Y4WixFQUFFLE1BQU8sSUFBZSxDQUFDLENBQzlCOVosTUFBTyxDQUNMNjVDLE1BQU8sNkJBQ1BwdEMsTUFBTyxLQUNQQyxPQUFRLEtBQ1JvdEMsUUFBUyxZQUNUL3NDLEtBQU0sT0FDTmd0QyxPQUFRLGVBQ1IsZUFBZ0IsSUFDaEIsaUJBQWtCLFFBQ2xCLGtCQUFtQixTQUVyQixNQUFTLGtDQUNSSCxFQUFJdGdELE9BQVEsQ0FBQ3dnQixFQUFFLFdBQVksQ0FDNUI5WixNQUFPLENBQ0xvNkMsT0FBUSxzQkFFUnRnQyxFQUFFLE9BQVEsQ0FDWjlaLE1BQU8sQ0FDTGc2QyxHQUFJLEtBQ0pDLEdBQUksS0FDSkMsR0FBSSxLQUNKQyxHQUFJLFFBRUpyZ0MsRUFBRSxPQUFRLENBQ1o5WixNQUFPLENBQ0w1QyxFQUFHLDZEQTRJUG0rQyxFQUFZLENBQ2Q1K0MsS0FBTSxZQUNOd0UsTUFBTyxDQUNMZ0osS0FBTSxDQUNKNU4sS0FBTWdkLE9BQ05DLFFBQVMsS0FDVG1nQyxVQUFXLFNBQW1CNTZDLEdBQzVCLE9BQVE0VCxNQUFNNVQsSUFBTUEsRUFBRWxGLFFBQVUsSUFBTThZLE1BQU01VCxFQUFFRCxNQUFNLEVBQUdDLEVBQUVsRixPQUFTLEtBQXVCLE1BQWhCa0YsRUFBRUQsT0FBTyxNQUl4RndhLFlBQVksRUFDWkcsT0FBUSxTQUFnQkssRUFBRzgvQixHQUN6QixJQUFJenZDLEVBQW9DLE1BQTdCeXZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxPQUFPLEdBQWE4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE1BQU0sRUFBRzg2QyxFQUFJejRDLE1BQU1nSixLQUFLdFEsT0FBUyxHQUFLLEtBQU93aEMsU0FBU3VlLEVBQUl6NEMsTUFBTWdKLE1BQVEsS0FDakluSyxFQUFRNDVDLEVBQUl0Z0QsS0FBSzBHLE9BQVMsR0FJOUIsT0FIQUEsRUFBTXlNLE1BQVF6TSxFQUFNeU0sT0FBU3RDLEVBQzdCbkssRUFBTTBNLE9BQVMxTSxFQUFNME0sUUFBVXZDLEVBQy9CeXZDLEVBQUl0Z0QsS0FBSzBHLE1BQVFBLEVBQ1Y4WixFQUFFLE1BQU8sSUFBZSxDQUFDLENBQzlCOVosTUFBTyxDQUNMNjVDLE1BQU8sNkJBQ1BwdEMsTUFBTyxLQUNQQyxPQUFRLEtBQ1JvdEMsUUFBUyxZQUNUL3NDLEtBQU0sT0FDTmd0QyxPQUFRLGVBQ1IsZUFBZ0IsSUFDaEIsaUJBQWtCLFFBQ2xCLGtCQUFtQixTQUVyQixNQUFTLDBCQUNSSCxFQUFJdGdELE9BQVEsQ0FBQ3dnQixFQUFFLE9BQVEsQ0FDeEI5WixNQUFPLENBQ0w1QyxFQUFHLGlFQTRGUG8rQyxFQUFtQixDQUNyQjcrQyxLQUFNLG1CQUNOd0UsTUFBTyxDQUNMZ0osS0FBTSxDQUNKNU4sS0FBTWdkLE9BQ05DLFFBQVMsS0FDVG1nQyxVQUFXLFNBQW1CNTZDLEdBQzVCLE9BQVE0VCxNQUFNNVQsSUFBTUEsRUFBRWxGLFFBQVUsSUFBTThZLE1BQU01VCxFQUFFRCxNQUFNLEVBQUdDLEVBQUVsRixPQUFTLEtBQXVCLE1BQWhCa0YsRUFBRUQsT0FBTyxNQUl4RndhLFlBQVksRUFDWkcsT0FBUSxTQUFnQkssRUFBRzgvQixHQUN6QixJQUFJenZDLEVBQW9DLE1BQTdCeXZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxPQUFPLEdBQWE4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE1BQU0sRUFBRzg2QyxFQUFJejRDLE1BQU1nSixLQUFLdFEsT0FBUyxHQUFLLEtBQU93aEMsU0FBU3VlLEVBQUl6NEMsTUFBTWdKLE1BQVEsS0FDakluSyxFQUFRNDVDLEVBQUl0Z0QsS0FBSzBHLE9BQVMsR0FJOUIsT0FIQUEsRUFBTXlNLE1BQVF6TSxFQUFNeU0sT0FBU3RDLEVBQzdCbkssRUFBTTBNLE9BQVMxTSxFQUFNME0sUUFBVXZDLEVBQy9CeXZDLEVBQUl0Z0QsS0FBSzBHLE1BQVFBLEVBQ1Y4WixFQUFFLE1BQU8sSUFBZSxDQUFDLENBQzlCOVosTUFBTyxDQUNMNjVDLE1BQU8sNkJBQ1BwdEMsTUFBTyxLQUNQQyxPQUFRLEtBQ1JvdEMsUUFBUyxZQUNUL3NDLEtBQU0sT0FDTmd0QyxPQUFRLGVBQ1IsZUFBZ0IsSUFDaEIsaUJBQWtCLFFBQ2xCLGtCQUFtQixTQUVyQixNQUFTLGlDQUNSSCxFQUFJdGdELE9BQVEsQ0FBQ3dnQixFQUFFLE9BQVEsQ0FDeEI5WixNQUFPLENBQ0w1QyxFQUFHLDhEQUVIMGMsRUFBRSxXQUFZLENBQ2hCOVosTUFBTyxDQUNMbzZDLE9BQVEsb0JBRVJ0Z0MsRUFBRSxPQUFRLENBQ1o5WixNQUFPLENBQ0xnNkMsR0FBSSxLQUNKQyxHQUFJLEtBQ0pDLEdBQUksS0FDSkMsR0FBSSxXQU1Sc0IsRUFBYSxDQUNmOStDLEtBQU0sYUFDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUywyQkFDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxPQUFRLENBQ3hCOVosTUFBTyxDQUNMNUMsRUFBRywwTEFFSDBjLEVBQUUsT0FBUSxDQUNaOVosTUFBTyxDQUNMZzZDLEdBQUksSUFDSkMsR0FBSSxJQUNKQyxHQUFJLEtBQ0pDLEdBQUksWUFNUnVCLEVBQVUsQ0FDWi8rQyxLQUFNLFVBQ053RSxNQUFPLENBQ0xnSixLQUFNLENBQ0o1TixLQUFNZ2QsT0FDTkMsUUFBUyxLQUNUbWdDLFVBQVcsU0FBbUI1NkMsR0FDNUIsT0FBUTRULE1BQU01VCxJQUFNQSxFQUFFbEYsUUFBVSxJQUFNOFksTUFBTTVULEVBQUVELE1BQU0sRUFBR0MsRUFBRWxGLE9BQVMsS0FBdUIsTUFBaEJrRixFQUFFRCxPQUFPLE1BSXhGd2EsWUFBWSxFQUNaRyxPQUFRLFNBQWdCSyxFQUFHOC9CLEdBQ3pCLElBQUl6dkMsRUFBb0MsTUFBN0J5dkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE9BQU8sR0FBYTg2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsTUFBTSxFQUFHODZDLEVBQUl6NEMsTUFBTWdKLEtBQUt0USxPQUFTLEdBQUssS0FBT3doQyxTQUFTdWUsRUFBSXo0QyxNQUFNZ0osTUFBUSxLQUNqSW5LLEVBQVE0NUMsRUFBSXRnRCxLQUFLMEcsT0FBUyxHQUk5QixPQUhBQSxFQUFNeU0sTUFBUXpNLEVBQU15TSxPQUFTdEMsRUFDN0JuSyxFQUFNME0sT0FBUzFNLEVBQU0wTSxRQUFVdkMsRUFDL0J5dkMsRUFBSXRnRCxLQUFLMEcsTUFBUUEsRUFDVjhaLEVBQUUsTUFBTyxJQUFlLENBQUMsQ0FDOUI5WixNQUFPLENBQ0w2NUMsTUFBTyw2QkFDUHB0QyxNQUFPLEtBQ1BDLE9BQVEsS0FDUm90QyxRQUFTLFlBQ1Qvc0MsS0FBTSxPQUNOZ3RDLE9BQVEsZUFDUixlQUFnQixJQUNoQixpQkFBa0IsUUFDbEIsa0JBQW1CLFNBRXJCLE1BQVMsdUJBQ1JILEVBQUl0Z0QsT0FBUSxDQUFDd2dCLEVBQUUsT0FBUSxDQUN4QjlaLE1BQU8sQ0FDTDVDLEVBQUcsa0RBRUgwYyxFQUFFLFNBQVUsQ0FDZDlaLE1BQU8sQ0FDTHFULEdBQUksS0FDSkMsR0FBSSxLQUNKNVYsRUFBRyxXQStTUGkrQyxFQUFlLENBQ2pCaC9DLEtBQU0sZUFDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUyw2QkFDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxPQUFRLENBQ3hCOVosTUFBTyxDQUNMNUMsRUFBRyxnRUFFSDBjLEVBQUUsV0FBWSxDQUNoQjlaLE1BQU8sQ0FDTG82QyxPQUFRLG9CQUVSdGdDLEVBQUUsT0FBUSxDQUNaOVosTUFBTyxDQUNMZzZDLEdBQUksS0FDSkMsR0FBSSxLQUNKQyxHQUFJLElBQ0pDLEdBQUksUUFFSnJnQyxFQUFFLE9BQVEsQ0FDWjlaLE1BQU8sQ0FDTGc2QyxHQUFJLEtBQ0pDLEdBQUksS0FDSkMsR0FBSSxJQUNKQyxHQUFJLFFBRUpyZ0MsRUFBRSxXQUFZLENBQ2hCOVosTUFBTyxDQUNMbzZDLE9BQVEsc0JBTVp3QixFQUFXLENBQ2JqL0MsS0FBTSxXQUNOd0UsTUFBTyxDQUNMZ0osS0FBTSxDQUNKNU4sS0FBTWdkLE9BQ05DLFFBQVMsS0FDVG1nQyxVQUFXLFNBQW1CNTZDLEdBQzVCLE9BQVE0VCxNQUFNNVQsSUFBTUEsRUFBRWxGLFFBQVUsSUFBTThZLE1BQU01VCxFQUFFRCxNQUFNLEVBQUdDLEVBQUVsRixPQUFTLEtBQXVCLE1BQWhCa0YsRUFBRUQsT0FBTyxNQUl4RndhLFlBQVksRUFDWkcsT0FBUSxTQUFnQkssRUFBRzgvQixHQUN6QixJQUFJenZDLEVBQW9DLE1BQTdCeXZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxPQUFPLEdBQWE4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE1BQU0sRUFBRzg2QyxFQUFJejRDLE1BQU1nSixLQUFLdFEsT0FBUyxHQUFLLEtBQU93aEMsU0FBU3VlLEVBQUl6NEMsTUFBTWdKLE1BQVEsS0FDakluSyxFQUFRNDVDLEVBQUl0Z0QsS0FBSzBHLE9BQVMsR0FJOUIsT0FIQUEsRUFBTXlNLE1BQVF6TSxFQUFNeU0sT0FBU3RDLEVBQzdCbkssRUFBTTBNLE9BQVMxTSxFQUFNME0sUUFBVXZDLEVBQy9CeXZDLEVBQUl0Z0QsS0FBSzBHLE1BQVFBLEVBQ1Y4WixFQUFFLE1BQU8sSUFBZSxDQUFDLENBQzlCOVosTUFBTyxDQUNMNjVDLE1BQU8sNkJBQ1BwdEMsTUFBTyxLQUNQQyxPQUFRLEtBQ1JvdEMsUUFBUyxZQUNUL3NDLEtBQU0sT0FDTmd0QyxPQUFRLGVBQ1IsZUFBZ0IsSUFDaEIsaUJBQWtCLFFBQ2xCLGtCQUFtQixTQUVyQixNQUFTLHdCQUNSSCxFQUFJdGdELE9BQVEsQ0FBQ3dnQixFQUFFLE9BQVEsQ0FDeEI5WixNQUFPLENBQ0w1QyxFQUFHLGdFQUVIMGMsRUFBRSxXQUFZLENBQ2hCOVosTUFBTyxDQUNMbzZDLE9BQVEsd0JBc09aeUIsRUFBaUIsQ0FDbkJsL0MsS0FBTSxpQkFDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUywrQkFDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxPQUFRLENBQ3hCOVosTUFBTyxDQUNMNUMsRUFBRyxpRkFFSDBjLEVBQUUsT0FBUSxDQUNaOVosTUFBTyxDQUNMZzZDLEdBQUksS0FDSkMsR0FBSSxLQUNKQyxHQUFJLEtBQ0pDLEdBQUksUUFFSnJnQyxFQUFFLE9BQVEsQ0FDWjlaLE1BQU8sQ0FDTGc2QyxHQUFJLElBQ0pDLEdBQUksS0FDSkMsR0FBSSxLQUNKQyxHQUFJLFlBTVIyQixFQUFhLENBQ2ZuL0MsS0FBTSxhQUNOd0UsTUFBTyxDQUNMZ0osS0FBTSxDQUNKNU4sS0FBTWdkLE9BQ05DLFFBQVMsS0FDVG1nQyxVQUFXLFNBQW1CNTZDLEdBQzVCLE9BQVE0VCxNQUFNNVQsSUFBTUEsRUFBRWxGLFFBQVUsSUFBTThZLE1BQU01VCxFQUFFRCxNQUFNLEVBQUdDLEVBQUVsRixPQUFTLEtBQXVCLE1BQWhCa0YsRUFBRUQsT0FBTyxNQUl4RndhLFlBQVksRUFDWkcsT0FBUSxTQUFnQkssRUFBRzgvQixHQUN6QixJQUFJenZDLEVBQW9DLE1BQTdCeXZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxPQUFPLEdBQWE4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE1BQU0sRUFBRzg2QyxFQUFJejRDLE1BQU1nSixLQUFLdFEsT0FBUyxHQUFLLEtBQU93aEMsU0FBU3VlLEVBQUl6NEMsTUFBTWdKLE1BQVEsS0FDakluSyxFQUFRNDVDLEVBQUl0Z0QsS0FBSzBHLE9BQVMsR0FJOUIsT0FIQUEsRUFBTXlNLE1BQVF6TSxFQUFNeU0sT0FBU3RDLEVBQzdCbkssRUFBTTBNLE9BQVMxTSxFQUFNME0sUUFBVXZDLEVBQy9CeXZDLEVBQUl0Z0QsS0FBSzBHLE1BQVFBLEVBQ1Y4WixFQUFFLE1BQU8sSUFBZSxDQUFDLENBQzlCOVosTUFBTyxDQUNMNjVDLE1BQU8sNkJBQ1BwdEMsTUFBTyxLQUNQQyxPQUFRLEtBQ1JvdEMsUUFBUyxZQUNUL3NDLEtBQU0sT0FDTmd0QyxPQUFRLGVBQ1IsZUFBZ0IsSUFDaEIsaUJBQWtCLFFBQ2xCLGtCQUFtQixTQUVyQixNQUFTLDBCQUNSSCxFQUFJdGdELE9BQVEsQ0FBQ3dnQixFQUFFLE9BQVEsQ0FDeEI5WixNQUFPLENBQ0w1QyxFQUFHLHFGQXFnQlAyK0MsRUFBVyxDQUNicC9DLEtBQU0sV0FDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUyx3QkFDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxPQUFRLENBQ3hCOVosTUFBTyxDQUNMb0ssRUFBRyxJQUNIQyxFQUFHLElBQ0hvQyxNQUFPLElBQ1BDLE9BQVEsT0FFUm9OLEVBQUUsT0FBUSxDQUNaOVosTUFBTyxDQUNMb0ssRUFBRyxLQUNIQyxFQUFHLElBQ0hvQyxNQUFPLElBQ1BDLE9BQVEsT0FFUm9OLEVBQUUsT0FBUSxDQUNaOVosTUFBTyxDQUNMb0ssRUFBRyxLQUNIQyxFQUFHLEtBQ0hvQyxNQUFPLElBQ1BDLE9BQVEsT0FFUm9OLEVBQUUsT0FBUSxDQUNaOVosTUFBTyxDQUNMb0ssRUFBRyxJQUNIQyxFQUFHLEtBQ0hvQyxNQUFPLElBQ1BDLE9BQVEsV0FNWnN2QyxFQUFnQixDQUNsQnIvQyxLQUFNLGdCQUNOd0UsTUFBTyxDQUNMZ0osS0FBTSxDQUNKNU4sS0FBTWdkLE9BQ05DLFFBQVMsS0FDVG1nQyxVQUFXLFNBQW1CNTZDLEdBQzVCLE9BQVE0VCxNQUFNNVQsSUFBTUEsRUFBRWxGLFFBQVUsSUFBTThZLE1BQU01VCxFQUFFRCxNQUFNLEVBQUdDLEVBQUVsRixPQUFTLEtBQXVCLE1BQWhCa0YsRUFBRUQsT0FBTyxNQUl4RndhLFlBQVksRUFDWkcsT0FBUSxTQUFnQkssRUFBRzgvQixHQUN6QixJQUFJenZDLEVBQW9DLE1BQTdCeXZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxPQUFPLEdBQWE4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE1BQU0sRUFBRzg2QyxFQUFJejRDLE1BQU1nSixLQUFLdFEsT0FBUyxHQUFLLEtBQU93aEMsU0FBU3VlLEVBQUl6NEMsTUFBTWdKLE1BQVEsS0FDakluSyxFQUFRNDVDLEVBQUl0Z0QsS0FBSzBHLE9BQVMsR0FJOUIsT0FIQUEsRUFBTXlNLE1BQVF6TSxFQUFNeU0sT0FBU3RDLEVBQzdCbkssRUFBTTBNLE9BQVMxTSxFQUFNME0sUUFBVXZDLEVBQy9CeXZDLEVBQUl0Z0QsS0FBSzBHLE1BQVFBLEVBQ1Y4WixFQUFFLE1BQU8sSUFBZSxDQUFDLENBQzlCOVosTUFBTyxDQUNMNjVDLE1BQU8sNkJBQ1BwdEMsTUFBTyxLQUNQQyxPQUFRLEtBQ1JvdEMsUUFBUyxZQUNUL3NDLEtBQU0sT0FDTmd0QyxPQUFRLGVBQ1IsZUFBZ0IsSUFDaEIsaUJBQWtCLFFBQ2xCLGtCQUFtQixTQUVyQixNQUFTLDhCQUNSSCxFQUFJdGdELE9BQVEsQ0FBQ3dnQixFQUFFLE9BQVEsQ0FDeEI5WixNQUFPLENBQ0xnNkMsR0FBSSxLQUNKQyxHQUFJLEtBQ0pDLEdBQUksSUFDSkMsR0FBSSxRQUVKcmdDLEVBQUUsT0FBUSxDQUNaOVosTUFBTyxDQUNMNUMsRUFBRyxnSEFFSDBjLEVBQUUsT0FBUSxDQUNaOVosTUFBTyxDQUNMZzZDLEdBQUksSUFDSkMsR0FBSSxLQUNKQyxHQUFJLE9BQ0pDLEdBQUksUUFFSnJnQyxFQUFFLE9BQVEsQ0FDWjlaLE1BQU8sQ0FDTGc2QyxHQUFJLEtBQ0pDLEdBQUksS0FDSkMsR0FBSSxRQUNKQyxHQUFJLFlBa1BSOEIsRUFBVyxDQUNidC9DLEtBQU0sV0FDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUyx3QkFDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxPQUFRLENBQ3hCOVosTUFBTyxDQUNMNUMsRUFBRyxvREFFSDBjLEVBQUUsV0FBWSxDQUNoQjlaLE1BQU8sQ0FDTG82QyxPQUFRLCtCQU1aOEIsRUFBWSxDQUNkdi9DLEtBQU0sWUFDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUyx5QkFDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxPQUFRLENBQ3hCOVosTUFBTyxDQUNMb0ssRUFBRyxJQUNIQyxFQUFHLElBQ0hvQyxNQUFPLEtBQ1BDLE9BQVEsS0FDUjZ0QyxHQUFJLElBQ0pDLEdBQUksT0FFSjFnQyxFQUFFLFNBQVUsQ0FDZDlaLE1BQU8sQ0FDTHFULEdBQUksTUFDSkMsR0FBSSxNQUNKNVYsRUFBRyxTQUVIb2MsRUFBRSxXQUFZLENBQ2hCOVosTUFBTyxDQUNMbzZDLE9BQVEsMEJBaURaK0IsRUFBVyxDQUNieC9DLEtBQU0sV0FDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUyx3QkFDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxTQUFVLENBQzFCOVosTUFBTyxDQUNMcVQsR0FBSSxLQUNKQyxHQUFJLEtBQ0o1VixFQUFHLFFBRUhvYyxFQUFFLE9BQVEsQ0FDWjlaLE1BQU8sQ0FDTGc2QyxHQUFJLEtBQ0pDLEdBQUksS0FDSkMsR0FBSSxLQUNKQyxHQUFJLFFBRUpyZ0MsRUFBRSxPQUFRLENBQ1o5WixNQUFPLENBQ0xnNkMsR0FBSSxLQUNKQyxHQUFJLElBQ0pDLEdBQUksUUFDSkMsR0FBSSxXQXFRUmlDLEVBQWUsQ0FDakJ6L0MsS0FBTSxlQUNOd0UsTUFBTyxDQUNMZ0osS0FBTSxDQUNKNU4sS0FBTWdkLE9BQ05DLFFBQVMsS0FDVG1nQyxVQUFXLFNBQW1CNTZDLEdBQzVCLE9BQVE0VCxNQUFNNVQsSUFBTUEsRUFBRWxGLFFBQVUsSUFBTThZLE1BQU01VCxFQUFFRCxNQUFNLEVBQUdDLEVBQUVsRixPQUFTLEtBQXVCLE1BQWhCa0YsRUFBRUQsT0FBTyxNQUl4RndhLFlBQVksRUFDWkcsT0FBUSxTQUFnQkssRUFBRzgvQixHQUN6QixJQUFJenZDLEVBQW9DLE1BQTdCeXZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxPQUFPLEdBQWE4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE1BQU0sRUFBRzg2QyxFQUFJejRDLE1BQU1nSixLQUFLdFEsT0FBUyxHQUFLLEtBQU93aEMsU0FBU3VlLEVBQUl6NEMsTUFBTWdKLE1BQVEsS0FDakluSyxFQUFRNDVDLEVBQUl0Z0QsS0FBSzBHLE9BQVMsR0FJOUIsT0FIQUEsRUFBTXlNLE1BQVF6TSxFQUFNeU0sT0FBU3RDLEVBQzdCbkssRUFBTTBNLE9BQVMxTSxFQUFNME0sUUFBVXZDLEVBQy9CeXZDLEVBQUl0Z0QsS0FBSzBHLE1BQVFBLEVBQ1Y4WixFQUFFLE1BQU8sSUFBZSxDQUFDLENBQzlCOVosTUFBTyxDQUNMNjVDLE1BQU8sNkJBQ1BwdEMsTUFBTyxLQUNQQyxPQUFRLEtBQ1JvdEMsUUFBUyxZQUNUL3NDLEtBQU0sT0FDTmd0QyxPQUFRLGVBQ1IsZUFBZ0IsSUFDaEIsaUJBQWtCLFFBQ2xCLGtCQUFtQixTQUVyQixNQUFTLDZCQUNSSCxFQUFJdGdELE9BQVEsQ0FBQ3dnQixFQUFFLFNBQVUsQ0FDMUI5WixNQUFPLENBQ0xxVCxHQUFJLEtBQ0pDLEdBQUksS0FDSjVWLEVBQUcsUUFFSG9jLEVBQUUsU0FBVSxDQUNkOVosTUFBTyxDQUNMcVQsR0FBSSxLQUNKQyxHQUFJLEtBQ0o1VixFQUFHLE9BRUhvYyxFQUFFLE9BQVEsQ0FDWjlaLE1BQU8sQ0FDTGc2QyxHQUFJLE9BQ0pDLEdBQUksT0FDSkMsR0FBSSxPQUNKQyxHQUFJLFVBRUpyZ0MsRUFBRSxPQUFRLENBQ1o5WixNQUFPLENBQ0xnNkMsR0FBSSxRQUNKQyxHQUFJLFFBQ0pDLEdBQUksUUFDSkMsR0FBSSxXQUVKcmdDLEVBQUUsT0FBUSxDQUNaOVosTUFBTyxDQUNMZzZDLEdBQUksUUFDSkMsR0FBSSxPQUNKQyxHQUFJLFFBQ0pDLEdBQUksVUFFSnJnQyxFQUFFLE9BQVEsQ0FDWjlaLE1BQU8sQ0FDTGc2QyxHQUFJLFFBQ0pDLEdBQUksT0FDSkMsR0FBSSxRQUNKQyxHQUFJLFVBRUpyZ0MsRUFBRSxPQUFRLENBQ1o5WixNQUFPLENBQ0xnNkMsR0FBSSxPQUNKQyxHQUFJLFFBQ0pDLEdBQUksT0FDSkMsR0FBSSxlQW9EUmtDLEVBQVcsQ0FDYjEvQyxLQUFNLFdBQ053RSxNQUFPLENBQ0xnSixLQUFNLENBQ0o1TixLQUFNZ2QsT0FDTkMsUUFBUyxLQUNUbWdDLFVBQVcsU0FBbUI1NkMsR0FDNUIsT0FBUTRULE1BQU01VCxJQUFNQSxFQUFFbEYsUUFBVSxJQUFNOFksTUFBTTVULEVBQUVELE1BQU0sRUFBR0MsRUFBRWxGLE9BQVMsS0FBdUIsTUFBaEJrRixFQUFFRCxPQUFPLE1BSXhGd2EsWUFBWSxFQUNaRyxPQUFRLFNBQWdCSyxFQUFHOC9CLEdBQ3pCLElBQUl6dkMsRUFBb0MsTUFBN0J5dkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE9BQU8sR0FBYTg2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsTUFBTSxFQUFHODZDLEVBQUl6NEMsTUFBTWdKLEtBQUt0USxPQUFTLEdBQUssS0FBT3doQyxTQUFTdWUsRUFBSXo0QyxNQUFNZ0osTUFBUSxLQUNqSW5LLEVBQVE0NUMsRUFBSXRnRCxLQUFLMEcsT0FBUyxHQUk5QixPQUhBQSxFQUFNeU0sTUFBUXpNLEVBQU15TSxPQUFTdEMsRUFDN0JuSyxFQUFNME0sT0FBUzFNLEVBQU0wTSxRQUFVdkMsRUFDL0J5dkMsRUFBSXRnRCxLQUFLMEcsTUFBUUEsRUFDVjhaLEVBQUUsTUFBTyxJQUFlLENBQUMsQ0FDOUI5WixNQUFPLENBQ0w2NUMsTUFBTyw2QkFDUHB0QyxNQUFPLEtBQ1BDLE9BQVEsS0FDUm90QyxRQUFTLFlBQ1Qvc0MsS0FBTSxPQUNOZ3RDLE9BQVEsZUFDUixlQUFnQixJQUNoQixpQkFBa0IsUUFDbEIsa0JBQW1CLFNBRXJCLE1BQVMsd0JBQ1JILEVBQUl0Z0QsT0FBUSxDQUFDd2dCLEVBQUUsT0FBUSxDQUN4QjlaLE1BQU8sQ0FDTDVDLEVBQUcsaUVBRUgwYyxFQUFFLE9BQVEsQ0FDWjlaLE1BQU8sQ0FDTDVDLEVBQUcsc0VBMERQay9DLEVBQVcsQ0FDYjMvQyxLQUFNLFdBQ053RSxNQUFPLENBQ0xnSixLQUFNLENBQ0o1TixLQUFNZ2QsT0FDTkMsUUFBUyxLQUNUbWdDLFVBQVcsU0FBbUI1NkMsR0FDNUIsT0FBUTRULE1BQU01VCxJQUFNQSxFQUFFbEYsUUFBVSxJQUFNOFksTUFBTTVULEVBQUVELE1BQU0sRUFBR0MsRUFBRWxGLE9BQVMsS0FBdUIsTUFBaEJrRixFQUFFRCxPQUFPLE1BSXhGd2EsWUFBWSxFQUNaRyxPQUFRLFNBQWdCSyxFQUFHOC9CLEdBQ3pCLElBQUl6dkMsRUFBb0MsTUFBN0J5dkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE9BQU8sR0FBYTg2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsTUFBTSxFQUFHODZDLEVBQUl6NEMsTUFBTWdKLEtBQUt0USxPQUFTLEdBQUssS0FBT3doQyxTQUFTdWUsRUFBSXo0QyxNQUFNZ0osTUFBUSxLQUNqSW5LLEVBQVE0NUMsRUFBSXRnRCxLQUFLMEcsT0FBUyxHQUk5QixPQUhBQSxFQUFNeU0sTUFBUXpNLEVBQU15TSxPQUFTdEMsRUFDN0JuSyxFQUFNME0sT0FBUzFNLEVBQU0wTSxRQUFVdkMsRUFDL0J5dkMsRUFBSXRnRCxLQUFLMEcsTUFBUUEsRUFDVjhaLEVBQUUsTUFBTyxJQUFlLENBQUMsQ0FDOUI5WixNQUFPLENBQ0w2NUMsTUFBTyw2QkFDUHB0QyxNQUFPLEtBQ1BDLE9BQVEsS0FDUm90QyxRQUFTLFlBQ1Qvc0MsS0FBTSxPQUNOZ3RDLE9BQVEsZUFDUixlQUFnQixJQUNoQixpQkFBa0IsUUFDbEIsa0JBQW1CLFNBRXJCLE1BQVMsd0JBQ1JILEVBQUl0Z0QsT0FBUSxDQUFDd2dCLEVBQUUsT0FBUSxDQUN4QjlaLE1BQU8sQ0FDTGc2QyxHQUFJLElBQ0pDLEdBQUksSUFDSkMsR0FBSSxLQUNKQyxHQUFJLE9BRUpyZ0MsRUFBRSxPQUFRLENBQ1o5WixNQUFPLENBQ0xnNkMsR0FBSSxJQUNKQyxHQUFJLEtBQ0pDLEdBQUksS0FDSkMsR0FBSSxRQUVKcmdDLEVBQUUsT0FBUSxDQUNaOVosTUFBTyxDQUNMZzZDLEdBQUksSUFDSkMsR0FBSSxLQUNKQyxHQUFJLEtBQ0pDLEdBQUksUUFFSnJnQyxFQUFFLE9BQVEsQ0FDWjlaLE1BQU8sQ0FDTGc2QyxHQUFJLElBQ0pDLEdBQUksSUFDSkMsR0FBSSxPQUNKQyxHQUFJLE9BRUpyZ0MsRUFBRSxPQUFRLENBQ1o5WixNQUFPLENBQ0xnNkMsR0FBSSxJQUNKQyxHQUFJLEtBQ0pDLEdBQUksT0FDSkMsR0FBSSxRQUVKcmdDLEVBQUUsT0FBUSxDQUNaOVosTUFBTyxDQUNMZzZDLEdBQUksSUFDSkMsR0FBSSxLQUNKQyxHQUFJLE9BQ0pDLEdBQUksWUFpR1JvQyxFQUFXLENBQ2I1L0MsS0FBTSxXQUNOd0UsTUFBTyxDQUNMZ0osS0FBTSxDQUNKNU4sS0FBTWdkLE9BQ05DLFFBQVMsS0FDVG1nQyxVQUFXLFNBQW1CNTZDLEdBQzVCLE9BQVE0VCxNQUFNNVQsSUFBTUEsRUFBRWxGLFFBQVUsSUFBTThZLE1BQU01VCxFQUFFRCxNQUFNLEVBQUdDLEVBQUVsRixPQUFTLEtBQXVCLE1BQWhCa0YsRUFBRUQsT0FBTyxNQUl4RndhLFlBQVksRUFDWkcsT0FBUSxTQUFnQkssRUFBRzgvQixHQUN6QixJQUFJenZDLEVBQW9DLE1BQTdCeXZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxPQUFPLEdBQWE4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE1BQU0sRUFBRzg2QyxFQUFJejRDLE1BQU1nSixLQUFLdFEsT0FBUyxHQUFLLEtBQU93aEMsU0FBU3VlLEVBQUl6NEMsTUFBTWdKLE1BQVEsS0FDakluSyxFQUFRNDVDLEVBQUl0Z0QsS0FBSzBHLE9BQVMsR0FJOUIsT0FIQUEsRUFBTXlNLE1BQVF6TSxFQUFNeU0sT0FBU3RDLEVBQzdCbkssRUFBTTBNLE9BQVMxTSxFQUFNME0sUUFBVXZDLEVBQy9CeXZDLEVBQUl0Z0QsS0FBSzBHLE1BQVFBLEVBQ1Y4WixFQUFFLE1BQU8sSUFBZSxDQUFDLENBQzlCOVosTUFBTyxDQUNMNjVDLE1BQU8sNkJBQ1BwdEMsTUFBTyxLQUNQQyxPQUFRLEtBQ1JvdEMsUUFBUyxZQUNUL3NDLEtBQU0sT0FDTmd0QyxPQUFRLGVBQ1IsZUFBZ0IsSUFDaEIsaUJBQWtCLFFBQ2xCLGtCQUFtQixTQUVyQixNQUFTLHdCQUNSSCxFQUFJdGdELE9BQVEsQ0FBQ3dnQixFQUFFLE9BQVEsQ0FDeEI5WixNQUFPLENBQ0xvSyxFQUFHLElBQ0hDLEVBQUcsS0FDSG9DLE1BQU8sS0FDUEMsT0FBUSxLQUNSNnRDLEdBQUksSUFDSkMsR0FBSSxPQUVKMWdDLEVBQUUsT0FBUSxDQUNaOVosTUFBTyxDQUNMNUMsRUFBRyxrQ0EwR1BvL0MsRUFBVyxDQUNiNy9DLEtBQU0sV0FDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUyx3QkFDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxPQUFRLENBQ3hCOVosTUFBTyxDQUNMNUMsRUFBRyxpRkFFSDBjLEVBQUUsV0FBWSxDQUNoQjlaLE1BQU8sQ0FDTG82QyxPQUFRLHdCQXNRWnFDLEVBQVcsQ0FDYjkvQyxLQUFNLFdBQ053RSxNQUFPLENBQ0xnSixLQUFNLENBQ0o1TixLQUFNZ2QsT0FDTkMsUUFBUyxLQUNUbWdDLFVBQVcsU0FBbUI1NkMsR0FDNUIsT0FBUTRULE1BQU01VCxJQUFNQSxFQUFFbEYsUUFBVSxJQUFNOFksTUFBTTVULEVBQUVELE1BQU0sRUFBR0MsRUFBRWxGLE9BQVMsS0FBdUIsTUFBaEJrRixFQUFFRCxPQUFPLE1BSXhGd2EsWUFBWSxFQUNaRyxPQUFRLFNBQWdCSyxFQUFHOC9CLEdBQ3pCLElBQUl6dkMsRUFBb0MsTUFBN0J5dkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE9BQU8sR0FBYTg2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsTUFBTSxFQUFHODZDLEVBQUl6NEMsTUFBTWdKLEtBQUt0USxPQUFTLEdBQUssS0FBT3doQyxTQUFTdWUsRUFBSXo0QyxNQUFNZ0osTUFBUSxLQUNqSW5LLEVBQVE0NUMsRUFBSXRnRCxLQUFLMEcsT0FBUyxHQUk5QixPQUhBQSxFQUFNeU0sTUFBUXpNLEVBQU15TSxPQUFTdEMsRUFDN0JuSyxFQUFNME0sT0FBUzFNLEVBQU0wTSxRQUFVdkMsRUFDL0J5dkMsRUFBSXRnRCxLQUFLMEcsTUFBUUEsRUFDVjhaLEVBQUUsTUFBTyxJQUFlLENBQUMsQ0FDOUI5WixNQUFPLENBQ0w2NUMsTUFBTyw2QkFDUHB0QyxNQUFPLEtBQ1BDLE9BQVEsS0FDUm90QyxRQUFTLFlBQ1Qvc0MsS0FBTSxPQUNOZ3RDLE9BQVEsZUFDUixlQUFnQixJQUNoQixpQkFBa0IsUUFDbEIsa0JBQW1CLFNBRXJCLE1BQVMsd0JBQ1JILEVBQUl0Z0QsT0FBUSxDQUFDd2dCLEVBQUUsT0FBUSxDQUN4QjlaLE1BQU8sQ0FDTGc2QyxHQUFJLElBQ0pDLEdBQUksS0FDSkMsR0FBSSxLQUNKQyxHQUFJLFFBRUpyZ0MsRUFBRSxPQUFRLENBQ1o5WixNQUFPLENBQ0xnNkMsR0FBSSxJQUNKQyxHQUFJLElBQ0pDLEdBQUksS0FDSkMsR0FBSSxPQUVKcmdDLEVBQUUsT0FBUSxDQUNaOVosTUFBTyxDQUNMZzZDLEdBQUksSUFDSkMsR0FBSSxLQUNKQyxHQUFJLEtBQ0pDLEdBQUksWUEwYlJ1QyxFQUFjLENBQ2hCLy9DLEtBQU0sY0FDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUywyQkFDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxPQUFRLENBQ3hCOVosTUFBTyxDQUNMb0ssRUFBRyxJQUNIQyxFQUFHLElBQ0hvQyxNQUFPLEtBQ1BDLE9BQVEsS0FDUjZ0QyxHQUFJLElBQ0pDLEdBQUksT0FFSjFnQyxFQUFFLE9BQVEsQ0FDWjlaLE1BQU8sQ0FDTGc2QyxHQUFJLElBQ0pDLEdBQUksS0FDSkMsR0FBSSxLQUNKQyxHQUFJLFFBRUpyZ0MsRUFBRSxPQUFRLENBQ1o5WixNQUFPLENBQ0xnNkMsR0FBSSxLQUNKQyxHQUFJLEtBQ0pDLEdBQUksS0FDSkMsR0FBSSxZQTZDUndDLEVBQXFCLENBQ3ZCaGdELEtBQU0scUJBQ053RSxNQUFPLENBQ0xnSixLQUFNLENBQ0o1TixLQUFNZ2QsT0FDTkMsUUFBUyxLQUNUbWdDLFVBQVcsU0FBbUI1NkMsR0FDNUIsT0FBUTRULE1BQU01VCxJQUFNQSxFQUFFbEYsUUFBVSxJQUFNOFksTUFBTTVULEVBQUVELE1BQU0sRUFBR0MsRUFBRWxGLE9BQVMsS0FBdUIsTUFBaEJrRixFQUFFRCxPQUFPLE1BSXhGd2EsWUFBWSxFQUNaRyxPQUFRLFNBQWdCSyxFQUFHOC9CLEdBQ3pCLElBQUl6dkMsRUFBb0MsTUFBN0J5dkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE9BQU8sR0FBYTg2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsTUFBTSxFQUFHODZDLEVBQUl6NEMsTUFBTWdKLEtBQUt0USxPQUFTLEdBQUssS0FBT3doQyxTQUFTdWUsRUFBSXo0QyxNQUFNZ0osTUFBUSxLQUNqSW5LLEVBQVE0NUMsRUFBSXRnRCxLQUFLMEcsT0FBUyxHQUk5QixPQUhBQSxFQUFNeU0sTUFBUXpNLEVBQU15TSxPQUFTdEMsRUFDN0JuSyxFQUFNME0sT0FBUzFNLEVBQU0wTSxRQUFVdkMsRUFDL0J5dkMsRUFBSXRnRCxLQUFLMEcsTUFBUUEsRUFDVjhaLEVBQUUsTUFBTyxJQUFlLENBQUMsQ0FDOUI5WixNQUFPLENBQ0w2NUMsTUFBTyw2QkFDUHB0QyxNQUFPLEtBQ1BDLE9BQVEsS0FDUm90QyxRQUFTLFlBQ1Qvc0MsS0FBTSxPQUNOZ3RDLE9BQVEsZUFDUixlQUFnQixJQUNoQixpQkFBa0IsUUFDbEIsa0JBQW1CLFNBRXJCLE1BQVMsbUNBQ1JILEVBQUl0Z0QsT0FBUSxDQUFDd2dCLEVBQUUsU0FBVSxDQUMxQjlaLE1BQU8sQ0FDTHFULEdBQUksS0FDSkMsR0FBSSxLQUNKNVYsRUFBRyxPQUVIb2MsRUFBRSxTQUFVLENBQ2Q5WixNQUFPLENBQ0xxVCxHQUFJLEtBQ0pDLEdBQUksS0FDSjVWLEVBQUcsT0FFSG9jLEVBQUUsU0FBVSxDQUNkOVosTUFBTyxDQUNMcVQsR0FBSSxJQUNKQyxHQUFJLEtBQ0o1VixFQUFHLFdBTVBrL0MsRUFBbUIsQ0FDckJqZ0QsS0FBTSxtQkFDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUyxpQ0FDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxTQUFVLENBQzFCOVosTUFBTyxDQUNMcVQsR0FBSSxLQUNKQyxHQUFJLEtBQ0o1VixFQUFHLE9BRUhvYyxFQUFFLFNBQVUsQ0FDZDlaLE1BQU8sQ0FDTHFULEdBQUksS0FDSkMsR0FBSSxJQUNKNVYsRUFBRyxPQUVIb2MsRUFBRSxTQUFVLENBQ2Q5WixNQUFPLENBQ0xxVCxHQUFJLEtBQ0pDLEdBQUksS0FDSjVWLEVBQUcsV0FrSFBtL0MsRUFBWSxDQUNkbGdELEtBQU0sWUFDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUyx5QkFDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxPQUFRLENBQ3hCOVosTUFBTyxDQUNMNUMsRUFBRyxxQkFFSDBjLEVBQUUsU0FBVSxDQUNkOVosTUFBTyxDQUNMcVQsR0FBSSxJQUNKQyxHQUFJLEtBQ0o1VixFQUFHLE9BRUhvYyxFQUFFLFNBQVUsQ0FDZDlaLE1BQU8sQ0FDTHFULEdBQUksS0FDSkMsR0FBSSxLQUNKNVYsRUFBRyxXQW9MUG8vQyxFQUFnQixDQUNsQm5nRCxLQUFNLGdCQUNOd0UsTUFBTyxDQUNMZ0osS0FBTSxDQUNKNU4sS0FBTWdkLE9BQ05DLFFBQVMsS0FDVG1nQyxVQUFXLFNBQW1CNTZDLEdBQzVCLE9BQVE0VCxNQUFNNVQsSUFBTUEsRUFBRWxGLFFBQVUsSUFBTThZLE1BQU01VCxFQUFFRCxNQUFNLEVBQUdDLEVBQUVsRixPQUFTLEtBQXVCLE1BQWhCa0YsRUFBRUQsT0FBTyxNQUl4RndhLFlBQVksRUFDWkcsT0FBUSxTQUFnQkssRUFBRzgvQixHQUN6QixJQUFJenZDLEVBQW9DLE1BQTdCeXZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxPQUFPLEdBQWE4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE1BQU0sRUFBRzg2QyxFQUFJejRDLE1BQU1nSixLQUFLdFEsT0FBUyxHQUFLLEtBQU93aEMsU0FBU3VlLEVBQUl6NEMsTUFBTWdKLE1BQVEsS0FDakluSyxFQUFRNDVDLEVBQUl0Z0QsS0FBSzBHLE9BQVMsR0FJOUIsT0FIQUEsRUFBTXlNLE1BQVF6TSxFQUFNeU0sT0FBU3RDLEVBQzdCbkssRUFBTTBNLE9BQVMxTSxFQUFNME0sUUFBVXZDLEVBQy9CeXZDLEVBQUl0Z0QsS0FBSzBHLE1BQVFBLEVBQ1Y4WixFQUFFLE1BQU8sSUFBZSxDQUFDLENBQzlCOVosTUFBTyxDQUNMNjVDLE1BQU8sNkJBQ1BwdEMsTUFBTyxLQUNQQyxPQUFRLEtBQ1JvdEMsUUFBUyxZQUNUL3NDLEtBQU0sT0FDTmd0QyxPQUFRLGVBQ1IsZUFBZ0IsSUFDaEIsaUJBQWtCLFFBQ2xCLGtCQUFtQixTQUVyQixNQUFTLDZCQUNSSCxFQUFJdGdELE9BQVEsQ0FBQ3dnQixFQUFFLE9BQVEsQ0FDeEI5WixNQUFPLENBQ0w1QyxFQUFHLDJIQWd4QlAyL0MsRUFBVyxDQUNicGdELEtBQU0sV0FDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUyx3QkFDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxPQUFRLENBQ3hCOVosTUFBTyxDQUNMZzZDLEdBQUksS0FDSkMsR0FBSSxJQUNKQyxHQUFJLEtBQ0pDLEdBQUksUUFFSnJnQyxFQUFFLE9BQVEsQ0FDWjlaLE1BQU8sQ0FDTGc2QyxHQUFJLElBQ0pDLEdBQUksS0FDSkMsR0FBSSxLQUNKQyxHQUFJLFlBaURSNkMsRUFBWSxDQUNkcmdELEtBQU0sWUFDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUyx5QkFDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxPQUFRLENBQ3hCOVosTUFBTyxDQUNMNUMsRUFBRyxtQ0FFSDBjLEVBQUUsT0FBUSxDQUNaOVosTUFBTyxDQUNMZzZDLEdBQUksS0FDSkMsR0FBSSxJQUNKQyxHQUFJLEtBQ0pDLEdBQUksWUFNUjhDLEVBQWMsQ0FDaEJ0Z0QsS0FBTSxjQUNOd0UsTUFBTyxDQUNMZ0osS0FBTSxDQUNKNU4sS0FBTWdkLE9BQ05DLFFBQVMsS0FDVG1nQyxVQUFXLFNBQW1CNTZDLEdBQzVCLE9BQVE0VCxNQUFNNVQsSUFBTUEsRUFBRWxGLFFBQVUsSUFBTThZLE1BQU01VCxFQUFFRCxNQUFNLEVBQUdDLEVBQUVsRixPQUFTLEtBQXVCLE1BQWhCa0YsRUFBRUQsT0FBTyxNQUl4RndhLFlBQVksRUFDWkcsT0FBUSxTQUFnQkssRUFBRzgvQixHQUN6QixJQUFJenZDLEVBQW9DLE1BQTdCeXZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxPQUFPLEdBQWE4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE1BQU0sRUFBRzg2QyxFQUFJejRDLE1BQU1nSixLQUFLdFEsT0FBUyxHQUFLLEtBQU93aEMsU0FBU3VlLEVBQUl6NEMsTUFBTWdKLE1BQVEsS0FDakluSyxFQUFRNDVDLEVBQUl0Z0QsS0FBSzBHLE9BQVMsR0FJOUIsT0FIQUEsRUFBTXlNLE1BQVF6TSxFQUFNeU0sT0FBU3RDLEVBQzdCbkssRUFBTTBNLE9BQVMxTSxFQUFNME0sUUFBVXZDLEVBQy9CeXZDLEVBQUl0Z0QsS0FBSzBHLE1BQVFBLEVBQ1Y4WixFQUFFLE1BQU8sSUFBZSxDQUFDLENBQzlCOVosTUFBTyxDQUNMNjVDLE1BQU8sNkJBQ1BwdEMsTUFBTyxLQUNQQyxPQUFRLEtBQ1JvdEMsUUFBUyxZQUNUL3NDLEtBQU0sT0FDTmd0QyxPQUFRLGVBQ1IsZUFBZ0IsSUFDaEIsaUJBQWtCLFFBQ2xCLGtCQUFtQixTQUVyQixNQUFTLDJCQUNSSCxFQUFJdGdELE9BQVEsQ0FBQ3dnQixFQUFFLFdBQVksQ0FDNUI5WixNQUFPLENBQ0xvNkMsT0FBUSx1QkFFUnRnQyxFQUFFLE9BQVEsQ0FDWjlaLE1BQU8sQ0FDTDVDLEVBQUcsZ0ZBRUgwYyxFQUFFLE9BQVEsQ0FDWjlaLE1BQU8sQ0FDTG9LLEVBQUcsSUFDSEMsRUFBRyxLQUNIb0MsTUFBTyxLQUNQQyxPQUFRLFdBa0dad3dDLEVBQWdCLENBQ2xCdmdELEtBQU0sZ0JBQ053RSxNQUFPLENBQ0xnSixLQUFNLENBQ0o1TixLQUFNZ2QsT0FDTkMsUUFBUyxLQUNUbWdDLFVBQVcsU0FBbUI1NkMsR0FDNUIsT0FBUTRULE1BQU01VCxJQUFNQSxFQUFFbEYsUUFBVSxJQUFNOFksTUFBTTVULEVBQUVELE1BQU0sRUFBR0MsRUFBRWxGLE9BQVMsS0FBdUIsTUFBaEJrRixFQUFFRCxPQUFPLE1BSXhGd2EsWUFBWSxFQUNaRyxPQUFRLFNBQWdCSyxFQUFHOC9CLEdBQ3pCLElBQUl6dkMsRUFBb0MsTUFBN0J5dkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE9BQU8sR0FBYTg2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsTUFBTSxFQUFHODZDLEVBQUl6NEMsTUFBTWdKLEtBQUt0USxPQUFTLEdBQUssS0FBT3doQyxTQUFTdWUsRUFBSXo0QyxNQUFNZ0osTUFBUSxLQUNqSW5LLEVBQVE0NUMsRUFBSXRnRCxLQUFLMEcsT0FBUyxHQUk5QixPQUhBQSxFQUFNeU0sTUFBUXpNLEVBQU15TSxPQUFTdEMsRUFDN0JuSyxFQUFNME0sT0FBUzFNLEVBQU0wTSxRQUFVdkMsRUFDL0J5dkMsRUFBSXRnRCxLQUFLMEcsTUFBUUEsRUFDVjhaLEVBQUUsTUFBTyxJQUFlLENBQUMsQ0FDOUI5WixNQUFPLENBQ0w2NUMsTUFBTyw2QkFDUHB0QyxNQUFPLEtBQ1BDLE9BQVEsS0FDUm90QyxRQUFTLFlBQ1Qvc0MsS0FBTSxPQUNOZ3RDLE9BQVEsZUFDUixlQUFnQixJQUNoQixpQkFBa0IsUUFDbEIsa0JBQW1CLFNBRXJCLE1BQVMsOEJBQ1JILEVBQUl0Z0QsT0FBUSxDQUFDd2dCLEVBQUUsV0FBWSxDQUM1QjlaLE1BQU8sQ0FDTG82QyxPQUFRLHNCQUVSdGdDLEVBQUUsV0FBWSxDQUNoQjlaLE1BQU8sQ0FDTG82QyxPQUFRLG9CQUVSdGdDLEVBQUUsT0FBUSxDQUNaOVosTUFBTyxDQUNMNUMsRUFBRyw4RUE4VlArL0MsRUFBYSxDQUNmeGdELEtBQU0sYUFDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUywwQkFDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxTQUFVLENBQzFCOVosTUFBTyxDQUNMcVQsR0FBSSxLQUNKQyxHQUFJLEtBQ0o1VixFQUFHLE9BRUhvYyxFQUFFLE9BQVEsQ0FDWjlaLE1BQU8sQ0FDTGc2QyxHQUFJLEtBQ0pDLEdBQUksS0FDSkMsR0FBSSxRQUNKQyxHQUFJLGVBTVJpRCxFQUFXLENBQ2J6Z0QsS0FBTSxXQUNOd0UsTUFBTyxDQUNMZ0osS0FBTSxDQUNKNU4sS0FBTWdkLE9BQ05DLFFBQVMsS0FDVG1nQyxVQUFXLFNBQW1CNTZDLEdBQzVCLE9BQVE0VCxNQUFNNVQsSUFBTUEsRUFBRWxGLFFBQVUsSUFBTThZLE1BQU01VCxFQUFFRCxNQUFNLEVBQUdDLEVBQUVsRixPQUFTLEtBQXVCLE1BQWhCa0YsRUFBRUQsT0FBTyxNQUl4RndhLFlBQVksRUFDWkcsT0FBUSxTQUFnQkssRUFBRzgvQixHQUN6QixJQUFJenZDLEVBQW9DLE1BQTdCeXZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxPQUFPLEdBQWE4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE1BQU0sRUFBRzg2QyxFQUFJejRDLE1BQU1nSixLQUFLdFEsT0FBUyxHQUFLLEtBQU93aEMsU0FBU3VlLEVBQUl6NEMsTUFBTWdKLE1BQVEsS0FDakluSyxFQUFRNDVDLEVBQUl0Z0QsS0FBSzBHLE9BQVMsR0FJOUIsT0FIQUEsRUFBTXlNLE1BQVF6TSxFQUFNeU0sT0FBU3RDLEVBQzdCbkssRUFBTTBNLE9BQVMxTSxFQUFNME0sUUFBVXZDLEVBQy9CeXZDLEVBQUl0Z0QsS0FBSzBHLE1BQVFBLEVBQ1Y4WixFQUFFLE1BQU8sSUFBZSxDQUFDLENBQzlCOVosTUFBTyxDQUNMNjVDLE1BQU8sNkJBQ1BwdEMsTUFBTyxLQUNQQyxPQUFRLEtBQ1JvdEMsUUFBUyxZQUNUL3NDLEtBQU0sT0FDTmd0QyxPQUFRLGVBQ1IsZUFBZ0IsSUFDaEIsaUJBQWtCLFFBQ2xCLGtCQUFtQixTQUVyQixNQUFTLHdCQUNSSCxFQUFJdGdELE9BQVEsQ0FBQ3dnQixFQUFFLE9BQVEsQ0FDeEI5WixNQUFPLENBQ0xnNkMsR0FBSSxLQUNKQyxHQUFJLElBQ0pDLEdBQUksS0FDSkMsR0FBSSxRQUVKcmdDLEVBQUUsVUFBVyxDQUNmOVosTUFBTyxDQUNMbzZDLE9BQVEsbUNBeUVaaUQsRUFBZSxDQUNqQjFnRCxLQUFNLGVBQ053RSxNQUFPLENBQ0xnSixLQUFNLENBQ0o1TixLQUFNZ2QsT0FDTkMsUUFBUyxLQUNUbWdDLFVBQVcsU0FBbUI1NkMsR0FDNUIsT0FBUTRULE1BQU01VCxJQUFNQSxFQUFFbEYsUUFBVSxJQUFNOFksTUFBTTVULEVBQUVELE1BQU0sRUFBR0MsRUFBRWxGLE9BQVMsS0FBdUIsTUFBaEJrRixFQUFFRCxPQUFPLE1BSXhGd2EsWUFBWSxFQUNaRyxPQUFRLFNBQWdCSyxFQUFHOC9CLEdBQ3pCLElBQUl6dkMsRUFBb0MsTUFBN0J5dkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE9BQU8sR0FBYTg2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsTUFBTSxFQUFHODZDLEVBQUl6NEMsTUFBTWdKLEtBQUt0USxPQUFTLEdBQUssS0FBT3doQyxTQUFTdWUsRUFBSXo0QyxNQUFNZ0osTUFBUSxLQUNqSW5LLEVBQVE0NUMsRUFBSXRnRCxLQUFLMEcsT0FBUyxHQUk5QixPQUhBQSxFQUFNeU0sTUFBUXpNLEVBQU15TSxPQUFTdEMsRUFDN0JuSyxFQUFNME0sT0FBUzFNLEVBQU0wTSxRQUFVdkMsRUFDL0J5dkMsRUFBSXRnRCxLQUFLMEcsTUFBUUEsRUFDVjhaLEVBQUUsTUFBTyxJQUFlLENBQUMsQ0FDOUI5WixNQUFPLENBQ0w2NUMsTUFBTyw2QkFDUHB0QyxNQUFPLEtBQ1BDLE9BQVEsS0FDUm90QyxRQUFTLFlBQ1Qvc0MsS0FBTSxPQUNOZ3RDLE9BQVEsZUFDUixlQUFnQixJQUNoQixpQkFBa0IsUUFDbEIsa0JBQW1CLFNBRXJCLE1BQVMsNEJBQ1JILEVBQUl0Z0QsT0FBUSxDQUFDd2dCLEVBQUUsU0FBVSxDQUMxQjlaLE1BQU8sQ0FDTHFULEdBQUksS0FDSkMsR0FBSSxLQUNKNVYsRUFBRyxPQUVIb2MsRUFBRSxPQUFRLENBQ1o5WixNQUFPLENBQ0w1QyxFQUFHLHd1QkF5RVBrZ0QsRUFBWSxDQUNkM2dELEtBQU0sWUFDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUyx5QkFDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxPQUFRLENBQ3hCOVosTUFBTyxDQUNMNUMsRUFBRywrQ0FFSDBjLEVBQUUsV0FBWSxDQUNoQjlaLE1BQU8sQ0FDTG82QyxPQUFRLG1CQUVSdGdDLEVBQUUsT0FBUSxDQUNaOVosTUFBTyxDQUNMZzZDLEdBQUksS0FDSkMsR0FBSSxJQUNKQyxHQUFJLEtBQ0pDLEdBQUksWUEycEJSb0QsR0FBWSxDQUNkNWdELEtBQU0sWUFDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUyx5QkFDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxTQUFVLENBQzFCOVosTUFBTyxDQUNMcVQsR0FBSSxLQUNKQyxHQUFJLEtBQ0o1VixFQUFHLFFBRUhvYyxFQUFFLE9BQVEsQ0FDWjlaLE1BQU8sQ0FDTDVDLEVBQUcsNkJBRUgwYyxFQUFFLE9BQVEsQ0FDWjlaLE1BQU8sQ0FDTGc2QyxHQUFJLElBQ0pDLEdBQUksSUFDSkMsR0FBSSxPQUNKQyxHQUFJLE9BRUpyZ0MsRUFBRSxPQUFRLENBQ1o5WixNQUFPLENBQ0xnNkMsR0FBSSxLQUNKQyxHQUFJLElBQ0pDLEdBQUksUUFDSkMsR0FBSSxXQTJHUnFELEdBQVcsQ0FDYjdnRCxLQUFNLFdBQ053RSxNQUFPLENBQ0xnSixLQUFNLENBQ0o1TixLQUFNZ2QsT0FDTkMsUUFBUyxLQUNUbWdDLFVBQVcsU0FBbUI1NkMsR0FDNUIsT0FBUTRULE1BQU01VCxJQUFNQSxFQUFFbEYsUUFBVSxJQUFNOFksTUFBTTVULEVBQUVELE1BQU0sRUFBR0MsRUFBRWxGLE9BQVMsS0FBdUIsTUFBaEJrRixFQUFFRCxPQUFPLE1BSXhGd2EsWUFBWSxFQUNaRyxPQUFRLFNBQWdCSyxFQUFHOC9CLEdBQ3pCLElBQUl6dkMsRUFBb0MsTUFBN0J5dkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE9BQU8sR0FBYTg2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsTUFBTSxFQUFHODZDLEVBQUl6NEMsTUFBTWdKLEtBQUt0USxPQUFTLEdBQUssS0FBT3doQyxTQUFTdWUsRUFBSXo0QyxNQUFNZ0osTUFBUSxLQUNqSW5LLEVBQVE0NUMsRUFBSXRnRCxLQUFLMEcsT0FBUyxHQUk5QixPQUhBQSxFQUFNeU0sTUFBUXpNLEVBQU15TSxPQUFTdEMsRUFDN0JuSyxFQUFNME0sT0FBUzFNLEVBQU0wTSxRQUFVdkMsRUFDL0J5dkMsRUFBSXRnRCxLQUFLMEcsTUFBUUEsRUFDVjhaLEVBQUUsTUFBTyxJQUFlLENBQUMsQ0FDOUI5WixNQUFPLENBQ0w2NUMsTUFBTyw2QkFDUHB0QyxNQUFPLEtBQ1BDLE9BQVEsS0FDUm90QyxRQUFTLFlBQ1Qvc0MsS0FBTSxPQUNOZ3RDLE9BQVEsZUFDUixlQUFnQixJQUNoQixpQkFBa0IsUUFDbEIsa0JBQW1CLFNBRXJCLE1BQVMsd0JBQ1JILEVBQUl0Z0QsT0FBUSxDQUFDd2dCLEVBQUUsVUFBVyxDQUMzQjlaLE1BQU8sQ0FDTG82QyxPQUFRLHdHQXF3QlpxRCxHQUFhLENBQ2Y5Z0QsS0FBTSxhQUNOd0UsTUFBTyxDQUNMZ0osS0FBTSxDQUNKNU4sS0FBTWdkLE9BQ05DLFFBQVMsS0FDVG1nQyxVQUFXLFNBQW1CNTZDLEdBQzVCLE9BQVE0VCxNQUFNNVQsSUFBTUEsRUFBRWxGLFFBQVUsSUFBTThZLE1BQU01VCxFQUFFRCxNQUFNLEVBQUdDLEVBQUVsRixPQUFTLEtBQXVCLE1BQWhCa0YsRUFBRUQsT0FBTyxNQUl4RndhLFlBQVksRUFDWkcsT0FBUSxTQUFnQkssRUFBRzgvQixHQUN6QixJQUFJenZDLEVBQW9DLE1BQTdCeXZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxPQUFPLEdBQWE4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE1BQU0sRUFBRzg2QyxFQUFJejRDLE1BQU1nSixLQUFLdFEsT0FBUyxHQUFLLEtBQU93aEMsU0FBU3VlLEVBQUl6NEMsTUFBTWdKLE1BQVEsS0FDakluSyxFQUFRNDVDLEVBQUl0Z0QsS0FBSzBHLE9BQVMsR0FJOUIsT0FIQUEsRUFBTXlNLE1BQVF6TSxFQUFNeU0sT0FBU3RDLEVBQzdCbkssRUFBTTBNLE9BQVMxTSxFQUFNME0sUUFBVXZDLEVBQy9CeXZDLEVBQUl0Z0QsS0FBSzBHLE1BQVFBLEVBQ1Y4WixFQUFFLE1BQU8sSUFBZSxDQUFDLENBQzlCOVosTUFBTyxDQUNMNjVDLE1BQU8sNkJBQ1BwdEMsTUFBTyxLQUNQQyxPQUFRLEtBQ1JvdEMsUUFBUyxZQUNUL3NDLEtBQU0sT0FDTmd0QyxPQUFRLGVBQ1IsZUFBZ0IsSUFDaEIsaUJBQWtCLFFBQ2xCLGtCQUFtQixTQUVyQixNQUFTLDJCQUNSSCxFQUFJdGdELE9BQVEsQ0FBQ3dnQixFQUFFLFdBQVksQ0FDNUI5WixNQUFPLENBQ0xvNkMsT0FBUSxrQkFFUnRnQyxFQUFFLE9BQVEsQ0FDWjlaLE1BQU8sQ0FDTDVDLEVBQUcsb0ZBRUgwYyxFQUFFLE9BQVEsQ0FDWjlaLE1BQU8sQ0FDTGc2QyxHQUFJLEtBQ0pDLEdBQUksS0FDSkMsR0FBSSxLQUNKQyxHQUFJLFFBRUpyZ0MsRUFBRSxPQUFRLENBQ1o5WixNQUFPLENBQ0xnNkMsR0FBSSxLQUNKQyxHQUFJLEtBQ0pDLEdBQUksS0FDSkMsR0FBSSxZQU1SdUQsR0FBWSxDQUNkL2dELEtBQU0sWUFDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUyx5QkFDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxXQUFZLENBQzVCOVosTUFBTyxDQUNMbzZDLE9BQVEsa0JBRVJ0Z0MsRUFBRSxPQUFRLENBQ1o5WixNQUFPLENBQ0w1QyxFQUFHLHdGQStmUHVnRCxHQUFhLENBQ2ZoaEQsS0FBTSxhQUNOd0UsTUFBTyxDQUNMZ0osS0FBTSxDQUNKNU4sS0FBTWdkLE9BQ05DLFFBQVMsS0FDVG1nQyxVQUFXLFNBQW1CNTZDLEdBQzVCLE9BQVE0VCxNQUFNNVQsSUFBTUEsRUFBRWxGLFFBQVUsSUFBTThZLE1BQU01VCxFQUFFRCxNQUFNLEVBQUdDLEVBQUVsRixPQUFTLEtBQXVCLE1BQWhCa0YsRUFBRUQsT0FBTyxNQUl4RndhLFlBQVksRUFDWkcsT0FBUSxTQUFnQkssRUFBRzgvQixHQUN6QixJQUFJenZDLEVBQW9DLE1BQTdCeXZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxPQUFPLEdBQWE4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE1BQU0sRUFBRzg2QyxFQUFJejRDLE1BQU1nSixLQUFLdFEsT0FBUyxHQUFLLEtBQU93aEMsU0FBU3VlLEVBQUl6NEMsTUFBTWdKLE1BQVEsS0FDakluSyxFQUFRNDVDLEVBQUl0Z0QsS0FBSzBHLE9BQVMsR0FJOUIsT0FIQUEsRUFBTXlNLE1BQVF6TSxFQUFNeU0sT0FBU3RDLEVBQzdCbkssRUFBTTBNLE9BQVMxTSxFQUFNME0sUUFBVXZDLEVBQy9CeXZDLEVBQUl0Z0QsS0FBSzBHLE1BQVFBLEVBQ1Y4WixFQUFFLE1BQU8sSUFBZSxDQUFDLENBQzlCOVosTUFBTyxDQUNMNjVDLE1BQU8sNkJBQ1BwdEMsTUFBTyxLQUNQQyxPQUFRLEtBQ1JvdEMsUUFBUyxZQUNUL3NDLEtBQU0sT0FDTmd0QyxPQUFRLGVBQ1IsZUFBZ0IsSUFDaEIsaUJBQWtCLFFBQ2xCLGtCQUFtQixTQUVyQixNQUFTLDBCQUNSSCxFQUFJdGdELE9BQVEsQ0FBQ3dnQixFQUFFLE9BQVEsQ0FDeEI5WixNQUFPLENBQ0xvSyxFQUFHLElBQ0hDLEVBQUcsS0FDSG9DLE1BQU8sS0FDUEMsT0FBUSxLQUNSNnRDLEdBQUksSUFDSkMsR0FBSSxPQUVKMWdDLEVBQUUsT0FBUSxDQUNaOVosTUFBTyxDQUNMNUMsRUFBRyxpQ0FNUHdnRCxHQUFrQixDQUNwQmpoRCxLQUFNLGtCQUNOd0UsTUFBTyxDQUNMZ0osS0FBTSxDQUNKNU4sS0FBTWdkLE9BQ05DLFFBQVMsS0FDVG1nQyxVQUFXLFNBQW1CNTZDLEdBQzVCLE9BQVE0VCxNQUFNNVQsSUFBTUEsRUFBRWxGLFFBQVUsSUFBTThZLE1BQU01VCxFQUFFRCxNQUFNLEVBQUdDLEVBQUVsRixPQUFTLEtBQXVCLE1BQWhCa0YsRUFBRUQsT0FBTyxNQUl4RndhLFlBQVksRUFDWkcsT0FBUSxTQUFnQkssRUFBRzgvQixHQUN6QixJQUFJenZDLEVBQW9DLE1BQTdCeXZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxPQUFPLEdBQWE4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE1BQU0sRUFBRzg2QyxFQUFJejRDLE1BQU1nSixLQUFLdFEsT0FBUyxHQUFLLEtBQU93aEMsU0FBU3VlLEVBQUl6NEMsTUFBTWdKLE1BQVEsS0FDakluSyxFQUFRNDVDLEVBQUl0Z0QsS0FBSzBHLE9BQVMsR0FJOUIsT0FIQUEsRUFBTXlNLE1BQVF6TSxFQUFNeU0sT0FBU3RDLEVBQzdCbkssRUFBTTBNLE9BQVMxTSxFQUFNME0sUUFBVXZDLEVBQy9CeXZDLEVBQUl0Z0QsS0FBSzBHLE1BQVFBLEVBQ1Y4WixFQUFFLE1BQU8sSUFBZSxDQUFDLENBQzlCOVosTUFBTyxDQUNMNjVDLE1BQU8sNkJBQ1BwdEMsTUFBTyxLQUNQQyxPQUFRLEtBQ1JvdEMsUUFBUyxZQUNUL3NDLEtBQU0sT0FDTmd0QyxPQUFRLGVBQ1IsZUFBZ0IsSUFDaEIsaUJBQWtCLFFBQ2xCLGtCQUFtQixTQUVyQixNQUFTLGdDQUNSSCxFQUFJdGdELE9BQVEsQ0FBQ3dnQixFQUFFLFdBQVksQ0FDNUI5WixNQUFPLENBQ0xvNkMsT0FBUSxzQkFFUnRnQyxFQUFFLE9BQVEsQ0FDWjlaLE1BQU8sQ0FDTGc2QyxHQUFJLEtBQ0pDLEdBQUksS0FDSkMsR0FBSSxLQUNKQyxHQUFJLFFBRUpyZ0MsRUFBRSxPQUFRLENBQ1o5WixNQUFPLENBQ0w1QyxFQUFHLHdEQUVIMGMsRUFBRSxXQUFZLENBQ2hCOVosTUFBTyxDQUNMbzZDLE9BQVEsMEJBNkpaeUQsR0FBZSxDQUNqQmxoRCxLQUFNLGVBQ053RSxNQUFPLENBQ0xnSixLQUFNLENBQ0o1TixLQUFNZ2QsT0FDTkMsUUFBUyxLQUNUbWdDLFVBQVcsU0FBbUI1NkMsR0FDNUIsT0FBUTRULE1BQU01VCxJQUFNQSxFQUFFbEYsUUFBVSxJQUFNOFksTUFBTTVULEVBQUVELE1BQU0sRUFBR0MsRUFBRWxGLE9BQVMsS0FBdUIsTUFBaEJrRixFQUFFRCxPQUFPLE1BSXhGd2EsWUFBWSxFQUNaRyxPQUFRLFNBQWdCSyxFQUFHOC9CLEdBQ3pCLElBQUl6dkMsRUFBb0MsTUFBN0J5dkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE9BQU8sR0FBYTg2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsTUFBTSxFQUFHODZDLEVBQUl6NEMsTUFBTWdKLEtBQUt0USxPQUFTLEdBQUssS0FBT3doQyxTQUFTdWUsRUFBSXo0QyxNQUFNZ0osTUFBUSxLQUNqSW5LLEVBQVE0NUMsRUFBSXRnRCxLQUFLMEcsT0FBUyxHQUk5QixPQUhBQSxFQUFNeU0sTUFBUXpNLEVBQU15TSxPQUFTdEMsRUFDN0JuSyxFQUFNME0sT0FBUzFNLEVBQU0wTSxRQUFVdkMsRUFDL0J5dkMsRUFBSXRnRCxLQUFLMEcsTUFBUUEsRUFDVjhaLEVBQUUsTUFBTyxJQUFlLENBQUMsQ0FDOUI5WixNQUFPLENBQ0w2NUMsTUFBTyw2QkFDUHB0QyxNQUFPLEtBQ1BDLE9BQVEsS0FDUm90QyxRQUFTLFlBQ1Qvc0MsS0FBTSxPQUNOZ3RDLE9BQVEsZUFDUixlQUFnQixJQUNoQixpQkFBa0IsUUFDbEIsa0JBQW1CLFNBRXJCLE1BQVMsNkJBQ1JILEVBQUl0Z0QsT0FBUSxDQUFDd2dCLEVBQUUsT0FBUSxDQUN4QjlaLE1BQU8sQ0FDTDVDLEVBQUcsK0NBRUgwYyxFQUFFLFNBQVUsQ0FDZDlaLE1BQU8sQ0FDTHFULEdBQUksTUFDSkMsR0FBSSxJQUNKNVYsRUFBRyxPQUVIb2MsRUFBRSxPQUFRLENBQ1o5WixNQUFPLENBQ0xnNkMsR0FBSSxLQUNKQyxHQUFJLElBQ0pDLEdBQUksS0FDSkMsR0FBSSxRQUVKcmdDLEVBQUUsT0FBUSxDQUNaOVosTUFBTyxDQUNMZzZDLEdBQUksS0FDSkMsR0FBSSxLQUNKQyxHQUFJLEtBQ0pDLEdBQUksWUFpRVIyRCxHQUFXLENBQ2JuaEQsS0FBTSxXQUNOd0UsTUFBTyxDQUNMZ0osS0FBTSxDQUNKNU4sS0FBTWdkLE9BQ05DLFFBQVMsS0FDVG1nQyxVQUFXLFNBQW1CNTZDLEdBQzVCLE9BQVE0VCxNQUFNNVQsSUFBTUEsRUFBRWxGLFFBQVUsSUFBTThZLE1BQU01VCxFQUFFRCxNQUFNLEVBQUdDLEVBQUVsRixPQUFTLEtBQXVCLE1BQWhCa0YsRUFBRUQsT0FBTyxNQUl4RndhLFlBQVksRUFDWkcsT0FBUSxTQUFnQkssRUFBRzgvQixHQUN6QixJQUFJenZDLEVBQW9DLE1BQTdCeXZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxPQUFPLEdBQWE4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE1BQU0sRUFBRzg2QyxFQUFJejRDLE1BQU1nSixLQUFLdFEsT0FBUyxHQUFLLEtBQU93aEMsU0FBU3VlLEVBQUl6NEMsTUFBTWdKLE1BQVEsS0FDakluSyxFQUFRNDVDLEVBQUl0Z0QsS0FBSzBHLE9BQVMsR0FJOUIsT0FIQUEsRUFBTXlNLE1BQVF6TSxFQUFNeU0sT0FBU3RDLEVBQzdCbkssRUFBTTBNLE9BQVMxTSxFQUFNME0sUUFBVXZDLEVBQy9CeXZDLEVBQUl0Z0QsS0FBSzBHLE1BQVFBLEVBQ1Y4WixFQUFFLE1BQU8sSUFBZSxDQUFDLENBQzlCOVosTUFBTyxDQUNMNjVDLE1BQU8sNkJBQ1BwdEMsTUFBTyxLQUNQQyxPQUFRLEtBQ1JvdEMsUUFBUyxZQUNUL3NDLEtBQU0sT0FDTmd0QyxPQUFRLGVBQ1IsZUFBZ0IsSUFDaEIsaUJBQWtCLFFBQ2xCLGtCQUFtQixTQUVyQixNQUFTLHdCQUNSSCxFQUFJdGdELE9BQVEsQ0FBQ3dnQixFQUFFLE9BQVEsQ0FDeEI5WixNQUFPLENBQ0w1QyxFQUFHLCtDQUVIMGMsRUFBRSxTQUFVLENBQ2Q5WixNQUFPLENBQ0xxVCxHQUFJLEtBQ0pDLEdBQUksSUFDSjVWLEVBQUcsV0FNUHFnRCxHQUFZLENBQ2RwaEQsS0FBTSxZQUNOd0UsTUFBTyxDQUNMZ0osS0FBTSxDQUNKNU4sS0FBTWdkLE9BQ05DLFFBQVMsS0FDVG1nQyxVQUFXLFNBQW1CNTZDLEdBQzVCLE9BQVE0VCxNQUFNNVQsSUFBTUEsRUFBRWxGLFFBQVUsSUFBTThZLE1BQU01VCxFQUFFRCxNQUFNLEVBQUdDLEVBQUVsRixPQUFTLEtBQXVCLE1BQWhCa0YsRUFBRUQsT0FBTyxNQUl4RndhLFlBQVksRUFDWkcsT0FBUSxTQUFnQkssRUFBRzgvQixHQUN6QixJQUFJenZDLEVBQW9DLE1BQTdCeXZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxPQUFPLEdBQWE4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3JMLE1BQU0sRUFBRzg2QyxFQUFJejRDLE1BQU1nSixLQUFLdFEsT0FBUyxHQUFLLEtBQU93aEMsU0FBU3VlLEVBQUl6NEMsTUFBTWdKLE1BQVEsS0FDakluSyxFQUFRNDVDLEVBQUl0Z0QsS0FBSzBHLE9BQVMsR0FJOUIsT0FIQUEsRUFBTXlNLE1BQVF6TSxFQUFNeU0sT0FBU3RDLEVBQzdCbkssRUFBTTBNLE9BQVMxTSxFQUFNME0sUUFBVXZDLEVBQy9CeXZDLEVBQUl0Z0QsS0FBSzBHLE1BQVFBLEVBQ1Y4WixFQUFFLE1BQU8sSUFBZSxDQUFDLENBQzlCOVosTUFBTyxDQUNMNjVDLE1BQU8sNkJBQ1BwdEMsTUFBTyxLQUNQQyxPQUFRLEtBQ1JvdEMsUUFBUyxZQUNUL3NDLEtBQU0sT0FDTmd0QyxPQUFRLGVBQ1IsZUFBZ0IsSUFDaEIsaUJBQWtCLFFBQ2xCLGtCQUFtQixTQUVyQixNQUFTLHlCQUNSSCxFQUFJdGdELE9BQVEsQ0FBQ3dnQixFQUFFLE9BQVEsQ0FDeEI5WixNQUFPLENBQ0w1QyxFQUFHLCtDQUVIMGMsRUFBRSxTQUFVLENBQ2Q5WixNQUFPLENBQ0xxVCxHQUFJLElBQ0pDLEdBQUksSUFDSjVWLEVBQUcsT0FFSG9jLEVBQUUsT0FBUSxDQUNaOVosTUFBTyxDQUNMNUMsRUFBRyxnQ0FFSDBjLEVBQUUsT0FBUSxDQUNaOVosTUFBTyxDQUNMNUMsRUFBRyxtQ0FvRFA0Z0QsR0FBWSxDQUNkcmhELEtBQU0sWUFDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUyx5QkFDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxVQUFXLENBQzNCOVosTUFBTyxDQUNMbzZDLE9BQVEsMkJBRVJ0Z0MsRUFBRSxPQUFRLENBQ1o5WixNQUFPLENBQ0xvSyxFQUFHLElBQ0hDLEVBQUcsSUFDSG9DLE1BQU8sS0FDUEMsT0FBUSxLQUNSNnRDLEdBQUksSUFDSkMsR0FBSSxXQTZpQlJ5RCxHQUFjLENBQ2hCdGhELEtBQU0sY0FDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUyw0QkFDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxPQUFRLENBQ3hCOVosTUFBTyxDQUNMb0ssRUFBRyxJQUNIQyxFQUFHLElBQ0hvQyxNQUFPLEtBQ1BDLE9BQVEsS0FDUjZ0QyxHQUFJLElBQ0pDLEdBQUksT0FFSjFnQyxFQUFFLE9BQVEsQ0FDWjlaLE1BQU8sQ0FDTGc2QyxHQUFJLElBQ0pDLEdBQUksSUFDSkMsR0FBSSxLQUNKQyxHQUFJLFFBRUpyZ0MsRUFBRSxPQUFRLENBQ1o5WixNQUFPLENBQ0xnNkMsR0FBSSxLQUNKQyxHQUFJLElBQ0pDLEdBQUksSUFDSkMsR0FBSSxZQU1SK0QsR0FBUSxDQUNWdmhELEtBQU0sUUFDTndFLE1BQU8sQ0FDTGdKLEtBQU0sQ0FDSjVOLEtBQU1nZCxPQUNOQyxRQUFTLEtBQ1RtZ0MsVUFBVyxTQUFtQjU2QyxHQUM1QixPQUFRNFQsTUFBTTVULElBQU1BLEVBQUVsRixRQUFVLElBQU04WSxNQUFNNVQsRUFBRUQsTUFBTSxFQUFHQyxFQUFFbEYsT0FBUyxLQUF1QixNQUFoQmtGLEVBQUVELE9BQU8sTUFJeEZ3YSxZQUFZLEVBQ1pHLE9BQVEsU0FBZ0JLLEVBQUc4L0IsR0FDekIsSUFBSXp2QyxFQUFvQyxNQUE3Qnl2QyxFQUFJejRDLE1BQU1nSixLQUFLckwsT0FBTyxHQUFhODZDLEVBQUl6NEMsTUFBTWdKLEtBQUtyTCxNQUFNLEVBQUc4NkMsRUFBSXo0QyxNQUFNZ0osS0FBS3RRLE9BQVMsR0FBSyxLQUFPd2hDLFNBQVN1ZSxFQUFJejRDLE1BQU1nSixNQUFRLEtBQ2pJbkssRUFBUTQ1QyxFQUFJdGdELEtBQUswRyxPQUFTLEdBSTlCLE9BSEFBLEVBQU15TSxNQUFRek0sRUFBTXlNLE9BQVN0QyxFQUM3Qm5LLEVBQU0wTSxPQUFTMU0sRUFBTTBNLFFBQVV2QyxFQUMvQnl2QyxFQUFJdGdELEtBQUswRyxNQUFRQSxFQUNWOFosRUFBRSxNQUFPLElBQWUsQ0FBQyxDQUM5QjlaLE1BQU8sQ0FDTDY1QyxNQUFPLDZCQUNQcHRDLE1BQU8sS0FDUEMsT0FBUSxLQUNSb3RDLFFBQVMsWUFDVC9zQyxLQUFNLE9BQ05ndEMsT0FBUSxlQUNSLGVBQWdCLElBQ2hCLGlCQUFrQixRQUNsQixrQkFBbUIsU0FFckIsTUFBUyxxQkFDUkgsRUFBSXRnRCxPQUFRLENBQUN3Z0IsRUFBRSxPQUFRLENBQ3hCOVosTUFBTyxDQUNMZzZDLEdBQUksS0FDSkMsR0FBSSxJQUNKQyxHQUFJLElBQ0pDLEdBQUksUUFFSnJnQyxFQUFFLE9BQVEsQ0FDWjlaLE1BQU8sQ0FDTGc2QyxHQUFJLElBQ0pDLEdBQUksSUFDSkMsR0FBSSxLQUNKQyxHQUFJLGEsa0NDcDJiWix1QkFBcWQsRyxrQ0NBcmQsSSx3QkNBa04sRUMwQmxOLENBQ0UsS0FBRixVQUNFLE1BQUYsQ0FDQSxTQUVFLFdBQUYsQ0FDSSxnQkFBSixJQUNJLFNBQUosS0FFRSxRQUFGLENBQ0kscUJBREosV0FFTSxFQUFOLG1DQUVJLE9BSkosV0FLTSxLQUFOLGtCLHdCQ2hDSS82QyxFQUFZLFlBQ2QsR0hUVyxXQUFhLElBQWlCRyxFQUFURCxLQUFnQkUsZUFBbUJDLEVBQW5DSCxLQUEwQ0ksTUFBTUQsSUFBSUYsRUFBRyxPQUFPRSxFQUFHLFNBQVMsQ0FBQ0UsWUFBWSxpQkFBaUIsQ0FBQ0YsRUFBRyxNQUFNLENBQUNFLFlBQVksVUFBVTJZLEdBQUcsQ0FBQyxNQUE3SWhaLEtBQXlKNitDLFNBQVMsQ0FBQzErQyxFQUFHLG9CQUFvQixDQUFDRSxZQUFZLE9BQU9LLE1BQU0sQ0FBQyxLQUFPLFNBQVMsR0FBck9WLEtBQTRPZ0IsR0FBRyxLQUFLYixFQUFHLE1BQU0sQ0FBQ0UsWUFBWSxpQkFBaUIsQ0FBM1JMLEtBQWdTZ0IsR0FBaFNoQixLQUF1U2lCLEdBQXZTakIsS0FBOFNrQixVQUE5U2xCLEtBQTRUZ0IsR0FBRyxLQUFLYixFQUFHLE1BQU0sQ0FBQ0UsWUFBWSxjQUFjMlksR0FBRyxDQUFDLE1BQTVXaFosS0FBd1g4K0MsdUJBQXVCLENBQUMzK0MsRUFBRyxZQUFZLENBQUNFLFlBQVksT0FBT0ssTUFBTSxDQUFDLEtBQU8sU0FBUyxPQUN0ZCxJR1dwQixFQUNBLEtBQ0EsV0FDQSxNQUlhLElBQUFaLEUsMkNDbkJmLHVCQUE2WSxHLGtDQ3NCN1l6RSxFQUFPRCxRQUFVLFNBQWdCd04sR0FDL0IsT0FBTyxTQUFjOUYsR0FDbkIsT0FBTzhGLEVBQVM4UCxNQUFNLEtBQU01VixNLHNCQ3hCdEJ6SCxFQUFPRCxRQUFVLEVBQVEsT0FBUixFQUErRCxJQUtsRlAsS0FBSyxDQUFDUSxFQUFPaEIsRUFBSSxnZ0JBQWlnQixNLGtDQ0gxaEJnQixFQUFPRCxRQUFVLFNBQWM0TSxFQUFJKzJDLEdBQ2pDLE9BQU8sV0FFTCxJQURBLElBQUk5dkMsRUFBTyxJQUFJbE0sTUFBTVosVUFBVTVILFFBQ3RCRixFQUFJLEVBQUdBLEVBQUk0VSxFQUFLMVUsT0FBUUYsSUFDL0I0VSxFQUFLNVUsR0FBSzhILFVBQVU5SCxHQUV0QixPQUFPMk4sRUFBRzBRLE1BQU1xbUMsRUFBUzl2QyxNLG1CQ0g3QjVULEVBQU9ELFFBQVUsU0FBUzRqRCxHQUN6QixJQUFJeHNCLEVBQU8sR0F3Q1gsT0FyQ0FBLEVBQUt6dUIsU0FBVyxXQUNmLE9BQU8vRCxLQUFLOEYsS0FBSSxTQUFVdXZCLEdBQ3pCLElBQUkzMUIsRUFzQ1AsU0FBZ0MyMUIsRUFBTTJwQixHQUNyQyxJQUFJdC9DLEVBQVUyMUIsRUFBSyxJQUFNLEdBQ3JCNHBCLEVBQWE1cEIsRUFBSyxHQUN0QixJQUFLNHBCLEVBQ0osT0FBT3YvQyxFQUdSLEdBQUlzL0MsR0FBZ0MsbUJBQVRFLEtBQXFCLENBQy9DLElBQUlDLEdBWWFDLEVBWmFILEVBaUJ4QixtRUFITUMsS0FBS0csU0FBU3hpQyxtQkFBbUI0RSxLQUFLQyxVQUFVMDlCLE1BR3RDLE9BaEJsQkUsRUFBYUwsRUFBV00sUUFBUXo1QyxLQUFJLFNBQVUxRCxHQUNqRCxNQUFPLGlCQUFtQjY4QyxFQUFXTyxXQUFhcDlDLEVBQVMsU0FHNUQsTUFBTyxDQUFDMUMsR0FBUzhDLE9BQU84OEMsR0FBWTk4QyxPQUFPLENBQUMyOEMsSUFBZ0J0d0MsS0FBSyxNQU9uRSxJQUFtQnV3QyxFQUpsQixNQUFPLENBQUMxL0MsR0FBU21QLEtBQUssTUF0RE40d0MsQ0FBdUJwcUIsRUFBTTJwQixHQUMzQyxPQUFHM3BCLEVBQUssR0FDQSxVQUFZQSxFQUFLLEdBQUssSUFBTTMxQixFQUFVLElBRXRDQSxLQUVObVAsS0FBSyxLQUlUMmpCLEVBQUtuNEIsRUFBSSxTQUFTUyxFQUFTNGtELEdBQ0osaUJBQVo1a0QsSUFDVEEsRUFBVSxDQUFDLENBQUMsS0FBTUEsRUFBUyxNQUU1QixJQURBLElBQUk2a0QsRUFBeUIsR0FDckJ0bEQsRUFBSSxFQUFHQSxFQUFJMkYsS0FBS3pGLE9BQVFGLElBQUssQ0FDcEMsSUFBSTBSLEVBQUsvTCxLQUFLM0YsR0FBRyxHQUNBLGlCQUFQMFIsSUFDVDR6QyxFQUF1QjV6QyxJQUFNLEdBRS9CLElBQUkxUixFQUFJLEVBQUdBLEVBQUlTLEVBQVFQLE9BQVFGLElBQUssQ0FDbkMsSUFBSWc3QixFQUFPdjZCLEVBQVFULEdBS0csaUJBQVpnN0IsRUFBSyxJQUFvQnNxQixFQUF1QnRxQixFQUFLLE1BQzNEcXFCLElBQWVycUIsRUFBSyxHQUN0QkEsRUFBSyxHQUFLcXFCLEVBQ0RBLElBQ1RycUIsRUFBSyxHQUFLLElBQU1BLEVBQUssR0FBSyxVQUFZcXFCLEVBQWEsS0FFcERsdEIsRUFBSzMzQixLQUFLdzZCLE1BSU43QyxJLG1DQzlDUixjQUthLElBQUlqM0IsRUFBRWYsT0FBTzJqQixPQUFPLElBQUksU0FBUzNmLEVBQUVqRCxHQUFHLE9BQU8sTUFBTUEsRUFBRSxTQUFTd0QsRUFBRXhELEdBQUcsT0FBTyxNQUFNQSxFQUFFLFNBQVM2QyxFQUFFN0MsR0FBRyxPQUFNLElBQUtBLEVBQUUsU0FBU2xCLEVBQUVrQixHQUFHLE1BQU0saUJBQWlCQSxHQUFHLGlCQUFpQkEsR0FBRyxpQkFBaUJBLEdBQUcsa0JBQWtCQSxFQUFFLFNBQVN5QyxFQUFFekMsR0FBRyxPQUFPLE9BQU9BLEdBQUcsaUJBQWlCQSxFQUFFLElBQUk2VixFQUFFNVcsT0FBT0MsVUFBVXNKLFNBQVMsU0FBU3RFLEVBQUVsRSxHQUFHLE1BQU0sb0JBQW9CNlYsRUFBRXpXLEtBQUtZLEdBQUcsU0FBU3NDLEVBQUV0QyxHQUFHLElBQUlpRCxFQUFFNFUsV0FBVzZHLE9BQU8xZSxJQUFJLE9BQU9pRCxHQUFHLEdBQUd3TixLQUFLczhCLE1BQU05cEMsS0FBS0EsR0FBR29oRCxTQUFTcmtELEdBQUcsU0FBU3NrRCxFQUFFdGtELEdBQUcsT0FBT3dELEVBQUV4RCxJQUFJLG1CQUFtQkEsRUFBRTZOLE1BQU0sbUJBQW1CN04sRUFBRWdQLE1BQU0sU0FBU2pQLEVBQUVDLEdBQUcsT0FBTyxNQUFNQSxFQUFFLEdBQUd3SCxNQUFNQyxRQUFRekgsSUFBSWtFLEVBQUVsRSxJQUFJQSxFQUFFd0ksV0FBV3FOLEVBQUVxUSxLQUFLQyxVQUFVbm1CLEVBQUUsS0FBSyxHQUFHMGUsT0FBTzFlLEdBQUcsU0FBU3VrRCxFQUFFdmtELEdBQUcsSUFBSWlELEVBQUU0VSxXQUFXN1gsR0FBRyxPQUFPOFgsTUFBTTdVLEdBQUdqRCxFQUFFaUQsRUFBRSxTQUFTakMsRUFBRWhCLEVBQUVpRCxHQUFHLElBQUksSUFBSU8sRUFBRXZFLE9BQU9vRSxPQUFPLE1BQU1SLEVBQUU3QyxFQUFFeVgsTUFBTSxLQUFLM1ksRUFBRSxFQUFFQSxFQUFFK0QsRUFBRTdELE9BQU9GLElBQUkwRSxFQUFFWCxFQUFFL0QsS0FBSSxFQUFHLE9BQU9tRSxFQUFFLFNBQVNqRCxHQUFHLE9BQU93RCxFQUFFeEQsRUFBRXdYLGdCQUFnQixTQUFTeFgsR0FBRyxPQUFPd0QsRUFBRXhELElBQUksSUFBSXVDLEVBQUV2QixFQUFFLGtCQUFpQixHQUFJdXVCLEVBQUV2dUIsRUFBRSw4QkFBOEIsU0FBU2llLEVBQUVqZixFQUFFaUQsR0FBRyxHQUFHakQsRUFBRWhCLE9BQU8sQ0FBQyxJQUFJd0UsRUFBRXhELEVBQUU4SixRQUFRN0csR0FBRyxHQUFHTyxHQUFHLEVBQUUsT0FBT3hELEVBQUV3c0IsT0FBT2hwQixFQUFFLElBQUksSUFBSW5CLEVBQUVwRCxPQUFPQyxVQUFVQyxlQUFlLFNBQVNxUSxFQUFFeFAsRUFBRWlELEdBQUcsT0FBT1osRUFBRWpELEtBQUtZLEVBQUVpRCxHQUFHLFNBQVN1aEQsRUFBRXhrRCxHQUFHLElBQUlpRCxFQUFFaEUsT0FBT29FLE9BQU8sTUFBTSxPQUFPLFNBQVNHLEdBQUcsT0FBT1AsRUFBRU8sS0FBS1AsRUFBRU8sR0FBR3hELEVBQUV3RCxLQUFLLElBQUlxYixFQUFFLFNBQVMvSSxFQUFFMHVDLEdBQUUsU0FBU3hrRCxHQUFHLE9BQU9BLEVBQUVnRyxRQUFRNlksR0FBRSxTQUFTN2UsRUFBRWlELEdBQUcsT0FBT0EsRUFBRUEsRUFBRW9OLGNBQWMsU0FBT28wQyxFQUFFRCxHQUFFLFNBQVN4a0QsR0FBRyxPQUFPQSxFQUFFNGpCLE9BQU8sR0FBR3ZULGNBQWNyUSxFQUFFaUUsTUFBTSxNQUFLOEgsRUFBRSxhQUFhMjRDLEVBQUVGLEdBQUUsU0FBU3hrRCxHQUFHLE9BQU9BLEVBQUVnRyxRQUFRK0YsRUFBRSxPQUFPeUwsaUJBQW9CakksRUFBRW8xQyxTQUFTemxELFVBQVVxRSxLQUFLLFNBQVN2RCxFQUFFaUQsR0FBRyxPQUFPakQsRUFBRXVELEtBQUtOLElBQUksU0FBU2pELEVBQUVpRCxHQUFHLFNBQVNPLEVBQUVBLEdBQUcsSUFBSVgsRUFBRStELFVBQVU1SCxPQUFPLE9BQU82RCxFQUFFQSxFQUFFLEVBQUU3QyxFQUFFbWQsTUFBTWxhLEVBQUUyRCxXQUFXNUcsRUFBRVosS0FBSzZELEVBQUVPLEdBQUd4RCxFQUFFWixLQUFLNkQsR0FBRyxPQUFPTyxFQUFFb2hELFFBQVE1a0QsRUFBRWhCLE9BQU93RSxHQUFHLFNBQVNxaEQsRUFBRTdrRCxFQUFFaUQsR0FBR0EsRUFBRUEsR0FBRyxFQUFFLElBQUksSUFBSU8sRUFBRXhELEVBQUVoQixPQUFPaUUsRUFBRUosRUFBRSxJQUFJMkUsTUFBTWhFLEdBQUdBLEtBQUtYLEVBQUVXLEdBQUd4RCxFQUFFd0QsRUFBRVAsR0FBRyxPQUFPSixFQUFFLFNBQVNpaUQsRUFBRTlrRCxFQUFFaUQsR0FBRyxJQUFJLElBQUlPLEtBQUtQLEVBQUVqRCxFQUFFd0QsR0FBR1AsRUFBRU8sR0FBRyxPQUFPeEQsRUFBRSxTQUFTK2tELEVBQUUva0QsR0FBRyxJQUFJLElBQUlpRCxFQUFFLEdBQUdPLEVBQUUsRUFBRUEsRUFBRXhELEVBQUVoQixPQUFPd0UsSUFBSXhELEVBQUV3RCxJQUFJc2hELEVBQUU3aEQsRUFBRWpELEVBQUV3RCxJQUFJLE9BQU9QLEVBQUUsU0FBUytoRCxFQUFFaGxELEVBQUVpRCxFQUFFTyxJQUFJLElBQUl5aEQsRUFBRSxTQUFTamxELEVBQUVpRCxFQUFFTyxHQUFHLE9BQU0sR0FBSTBoRCxFQUFFLFNBQVNsbEQsR0FBRyxPQUFPQSxHQUFHLFNBQVNtbEQsRUFBRW5sRCxFQUFFaUQsR0FBRyxHQUFHakQsSUFBSWlELEVBQUUsT0FBTSxFQUFHLElBQUlPLEVBQUVmLEVBQUV6QyxHQUFHNkMsRUFBRUosRUFBRVEsR0FBRyxJQUFJTyxJQUFJWCxFQUFFLE9BQU9XLElBQUlYLEdBQUc2YixPQUFPMWUsS0FBSzBlLE9BQU96YixHQUFHLElBQUksSUFBSW5FLEVBQUUwSSxNQUFNQyxRQUFRekgsR0FBRzZWLEVBQUVyTyxNQUFNQyxRQUFReEUsR0FBRyxHQUFHbkUsR0FBRytXLEVBQUUsT0FBTzdWLEVBQUVoQixTQUFTaUUsRUFBRWpFLFFBQVFnQixFQUFFb2pCLE9BQU0sU0FBU3BqQixFQUFFd0QsR0FBRyxPQUFPMmhELEVBQUVubEQsRUFBRWlELEVBQUVPLE9BQU0sR0FBR3hELGFBQWFzdEIsTUFBTXJxQixhQUFhcXFCLEtBQUssT0FBT3R0QixFQUFFb2xELFlBQVluaUQsRUFBRW1pRCxVQUFVLEdBQUd0bUQsR0FBRytXLEVBQUUsT0FBTSxFQUFHLElBQUkzUixFQUFFakYsT0FBTzhILEtBQUsvRyxHQUFHc0MsRUFBRXJELE9BQU84SCxLQUFLOUQsR0FBRyxPQUFPaUIsRUFBRWxGLFNBQVNzRCxFQUFFdEQsUUFBUWtGLEVBQUVrZixPQUFNLFNBQVM1ZixHQUFHLE9BQU8yaEQsRUFBRW5sRCxFQUFFd0QsR0FBR1AsRUFBRU8sT0FBTSxNQUFNeEQsR0FBRyxPQUFNLEdBQUksU0FBU29tQixFQUFFcG1CLEVBQUVpRCxHQUFHLElBQUksSUFBSU8sRUFBRSxFQUFFQSxFQUFFeEQsRUFBRWhCLE9BQU93RSxJQUFJLEdBQUcyaEQsRUFBRW5sRCxFQUFFd0QsR0FBR1AsR0FBRyxPQUFPTyxFQUFFLE9BQU8sRUFBRSxTQUFTNmhELEVBQUVybEQsR0FBRyxJQUFJaUQsR0FBRSxFQUFHLE9BQU8sV0FBV0EsSUFBSUEsR0FBRSxFQUFHakQsRUFBRW1kLE1BQU0xWSxLQUFLbUMsYUFBYSxJQUFJMCtDLEVBQUUsdUJBQXVCQyxFQUFFLENBQUMsWUFBWSxZQUFZLFVBQVVDLEVBQUUsQ0FBQyxlQUFlLFVBQVUsY0FBYyxVQUFVLGVBQWUsVUFBVSxnQkFBZ0IsWUFBWSxZQUFZLGNBQWMsZ0JBQWdCLGtCQUFrQkMsRUFBRSxDQUFDM3NCLHNCQUFzQjc1QixPQUFPb0UsT0FBTyxNQUFNd2hDLFFBQU8sRUFBR21ZLGVBQWMsRUFBRzBJLFVBQVMsRUFBR3Y4QyxhQUFZLEVBQUd3OEMsYUFBYSxLQUFLQyxZQUFZLEtBQUtDLGdCQUFnQixHQUFHQyxTQUFTN21ELE9BQU9vRSxPQUFPLE1BQU0waUQsY0FBY2QsRUFBRWUsZUFBZWYsRUFBRWdCLGlCQUFpQmhCLEVBQUVpQixnQkFBZ0JsQixFQUFFbUIscUJBQXFCakIsRUFBRWtCLFlBQVluQixFQUFFb0IsT0FBTSxFQUFHQyxnQkFBZ0JkLEdBQUdoM0MsRUFBRSw4SkFBOEosU0FBUyszQyxFQUFFdm1ELEVBQUVpRCxFQUFFTyxFQUFFWCxHQUFHNUQsT0FBT3lELGVBQWUxQyxFQUFFaUQsRUFBRSxDQUFDRCxNQUFNUSxFQUFFYixhQUFhRSxFQUFFNEQsVUFBUyxFQUFHRCxjQUFhLElBQUssSUFBOENnZ0QsRUFBMUNDLEVBQUUsSUFBSXZ0QyxPQUFPLEtBQUsxSyxFQUFFM0gsT0FBTyxXQUFpQjYvQyxFQUFFLGFBQWEsR0FBR0MsRUFBRSxvQkFBb0I1aUQsT0FBTzZpRCxFQUFFLG9CQUFvQkMsaUJBQWlCQSxjQUFjQyxTQUFTQyxFQUFFSCxHQUFHQyxjQUFjQyxTQUFTdHZDLGNBQWN3dkMsRUFBRUwsR0FBRzVpRCxPQUFPc0YsVUFBVUMsVUFBVWtPLGNBQWN5dkMsRUFBRUQsR0FBRyxlQUFlbmhELEtBQUttaEQsR0FBR0UsRUFBRUYsR0FBR0EsRUFBRWw5QyxRQUFRLFlBQVksRUFBRXE5QyxFQUFFSCxHQUFHQSxFQUFFbDlDLFFBQVEsU0FBUyxFQUFFczlDLEdBQUdKLEdBQUdBLEVBQUVsOUMsUUFBUSxXQUFXazlDLEdBQUcsdUJBQXVCbmhELEtBQUttaEQsSUFBSSxRQUFRRCxHQUFHTSxJQUFHTCxHQUFHLGNBQWNuaEQsS0FBS21oRCxHQUFHQSxHQUFHLFlBQVluaEQsS0FBS21oRCxHQUFHQSxHQUFHQSxFQUFFcGdDLE1BQU0sbUJBQW1CMGdDLEdBQUUsR0FBR0MsTUFBTUMsSUFBRSxFQUFHLEdBQUdiLEVBQUUsSUFBSSxJQUFJYyxHQUFHLEdBQUd4b0QsT0FBT3lELGVBQWUra0QsR0FBRyxVQUFVLENBQUM3a0QsSUFBSSxXQUFXNGtELElBQUUsS0FBTXpqRCxPQUFPNkYsaUJBQWlCLGVBQWUsS0FBSzY5QyxJQUFJLE1BQU16bkQsSUFBSSxJQUFJa29DLEdBQUcsV0FBVyxZQUFPLElBQVNzZSxJQUFJQSxHQUFHRyxJQUFJQyxRQUFHLElBQW9CLzVDLEdBQVNBLEVBQU9DLFNBQVMsV0FBV0QsRUFBT0MsUUFBUXVRLElBQUlxcUMsU0FBVWxCLEdBQUdtQixHQUFHaEIsR0FBRzVpRCxPQUFPNmpELDZCQUE2QixTQUFTdGhDLEdBQUd0bUIsR0FBRyxNQUFNLG1CQUFtQkEsR0FBRyxjQUFjNkYsS0FBSzdGLEVBQUV3SSxZQUFZLElBQUlxL0MsR0FBR2xrRCxHQUFHLG9CQUFvQmIsUUFBUXdqQixHQUFHeGpCLFNBQVMsb0JBQW9CZ2xELFNBQVN4aEMsR0FBR3doQyxRQUFRaGhELFNBQVMrZ0QsR0FBRyxvQkFBb0JFLEtBQUt6aEMsR0FBR3loQyxLQUFLQSxJQUFJLFdBQVcsU0FBUy9uRCxJQUFJeUUsS0FBS2doQyxJQUFJeG1DLE9BQU9vRSxPQUFPLE1BQU0sT0FBT3JELEVBQUVkLFVBQVU4b0QsSUFBSSxTQUFTaG9ELEdBQUcsT0FBTSxJQUFLeUUsS0FBS2doQyxJQUFJemxDLElBQUlBLEVBQUVkLFVBQVV3N0MsSUFBSSxTQUFTMTZDLEdBQUd5RSxLQUFLZ2hDLElBQUl6bEMsSUFBRyxHQUFJQSxFQUFFZCxVQUFVK29ELE1BQU0sV0FBV3hqRCxLQUFLZ2hDLElBQUl4bUMsT0FBT29FLE9BQU8sT0FBT3JELEVBQXZOLEdBQTROLElBQUlrb0QsR0FBR2xELEVBQUVtRCxHQUFHLEVBQUVDLEdBQUcsV0FBVzNqRCxLQUFLK0wsR0FBRzIzQyxLQUFLMWpELEtBQUs0akQsS0FBSyxJQUFJRCxHQUFHbHBELFVBQVVvcEQsT0FBTyxTQUFTdG9ELEdBQUd5RSxLQUFLNGpELEtBQUsvb0QsS0FBS1UsSUFBSW9vRCxHQUFHbHBELFVBQVVxcEQsVUFBVSxTQUFTdm9ELEdBQUdpZixFQUFFeGEsS0FBSzRqRCxLQUFLcm9ELElBQUlvb0QsR0FBR2xwRCxVQUFVc3BELE9BQU8sV0FBV0osR0FBR3htRCxRQUFRd21ELEdBQUd4bUQsT0FBTzZtRCxPQUFPaGtELE9BQU8yakQsR0FBR2xwRCxVQUFVd3BELE9BQU8sV0FBVyxJQUFJLElBQUkxb0QsRUFBRXlFLEtBQUs0akQsS0FBS3BrRCxRQUFRaEIsRUFBRSxFQUFFTyxFQUFFeEQsRUFBRWhCLE9BQU9pRSxFQUFFTyxFQUFFUCxJQUFJakQsRUFBRWlELEdBQUcrNkIsVUFBVW9xQixHQUFHeG1ELE9BQU8sS0FBSyxJQUFJK21ELEdBQUcsR0FBRyxTQUFTQyxHQUFHNW9ELEdBQUcyb0QsR0FBR3JwRCxLQUFLVSxHQUFHb29ELEdBQUd4bUQsT0FBTzVCLEVBQUUsU0FBUzZvRCxLQUFLRixHQUFHOWtDLE1BQU11a0MsR0FBR3htRCxPQUFPK21ELEdBQUdBLEdBQUczcEQsT0FBTyxHQUFHLElBQUk4cEQsR0FBRyxTQUFTOW9ELEVBQUVpRCxFQUFFTyxFQUFFWCxFQUFFL0QsRUFBRTJELEVBQUVvVCxFQUFFM1IsR0FBR08sS0FBS2dQLElBQUl6VCxFQUFFeUUsS0FBS2hHLEtBQUt3RSxFQUFFd0IsS0FBSzhPLFNBQVMvUCxFQUFFaUIsS0FBS2lYLEtBQUs3WSxFQUFFNEIsS0FBS3NrRCxJQUFJanFELEVBQUUyRixLQUFLckIsUUFBRyxFQUFPcUIsS0FBS3k1QixRQUFRejdCLEVBQUVnQyxLQUFLdWtELGVBQVUsRUFBT3ZrRCxLQUFLd2tELGVBQVUsRUFBT3hrRCxLQUFLeWtELGVBQVUsRUFBT3prRCxLQUFLbkIsSUFBSUwsR0FBR0EsRUFBRUssSUFBSW1CLEtBQUswa0QsaUJBQWlCdHpDLEVBQUVwUixLQUFLb2MsdUJBQWtCLEVBQU9wYyxLQUFLc2EsWUFBTyxFQUFPdGEsS0FBSzhpQixLQUFJLEVBQUc5aUIsS0FBSzJsQixVQUFTLEVBQUczbEIsS0FBSzJrRCxjQUFhLEVBQUcza0QsS0FBSzRrRCxXQUFVLEVBQUc1a0QsS0FBSzZrRCxVQUFTLEVBQUc3a0QsS0FBSzhrRCxRQUFPLEVBQUc5a0QsS0FBSytrRCxhQUFhdGxELEVBQUVPLEtBQUtnbEQsZUFBVSxFQUFPaGxELEtBQUtpbEQsb0JBQW1CLEdBQUlDLEdBQUcsQ0FBQ3g1QyxNQUFNLENBQUMzSixjQUFhLElBQUttakQsR0FBR3g1QyxNQUFNdk4sSUFBSSxXQUFXLE9BQU82QixLQUFLb2MsbUJBQW1CNWhCLE9BQU82NEIsaUJBQWlCZ3hCLEdBQUc1cEQsVUFBVXlxRCxJQUFJLElBQUlDLEdBQUcsU0FBUzVwRCxRQUFHLElBQVNBLElBQUlBLEVBQUUsSUFBSSxJQUFJaUQsRUFBRSxJQUFJNmxELEdBQUcsT0FBTzdsRCxFQUFFeVksS0FBSzFiLEVBQUVpRCxFQUFFb21ELFdBQVUsRUFBR3BtRCxHQUFHLFNBQVM0bUQsR0FBRzdwRCxHQUFHLE9BQU8sSUFBSThvRCxRQUFHLE9BQU8sT0FBTyxFQUFPcHFDLE9BQU8xZSxJQUFJLFNBQVM4cEQsR0FBRzlwRCxHQUFHLElBQUlpRCxFQUFFLElBQUk2bEQsR0FBRzlvRCxFQUFFeVQsSUFBSXpULEVBQUV2QixLQUFLdUIsRUFBRXVULFVBQVV2VCxFQUFFdVQsU0FBU3RQLFFBQVFqRSxFQUFFMGIsS0FBSzFiLEVBQUUrb0QsSUFBSS9vRCxFQUFFaytCLFFBQVFsK0IsRUFBRW1wRCxpQkFBaUJucEQsRUFBRXdwRCxjQUFjLE9BQU92bUQsRUFBRUcsR0FBR3BELEVBQUVvRCxHQUFHSCxFQUFFbW5CLFNBQVNwcUIsRUFBRW9xQixTQUFTbm5CLEVBQUVLLElBQUl0RCxFQUFFc0QsSUFBSUwsRUFBRW9tRCxVQUFVcnBELEVBQUVxcEQsVUFBVXBtRCxFQUFFK2xELFVBQVVocEQsRUFBRWdwRCxVQUFVL2xELEVBQUVnbUQsVUFBVWpwRCxFQUFFaXBELFVBQVVobUQsRUFBRWltRCxVQUFVbHBELEVBQUVrcEQsVUFBVWptRCxFQUFFd21ELFVBQVV6cEQsRUFBRXlwRCxVQUFVeG1ELEVBQUVxbUQsVUFBUyxFQUFHcm1ELEVBQUUsSUFBSThtRCxHQUFHdmlELE1BQU10SSxVQUFVOHFELEdBQUcvcUQsT0FBT29FLE9BQU8wbUQsSUFBSSxDQUFDLE9BQU8sTUFBTSxRQUFRLFVBQVUsU0FBUyxPQUFPLFdBQVcxaUQsU0FBUSxTQUFTckgsR0FBRyxJQUFJaUQsRUFBRThtRCxHQUFHL3BELEdBQUd1bUQsRUFBRXlELEdBQUdocUQsR0FBRSxXQUFXLElBQUksSUFBSXdELEVBQUUsR0FBR1gsRUFBRStELFVBQVU1SCxPQUFPNkQsS0FBS1csRUFBRVgsR0FBRytELFVBQVUvRCxHQUFHLElBQUkvRCxFQUFFMkQsRUFBRVEsRUFBRWthLE1BQU0xWSxLQUFLakIsR0FBR3FTLEVBQUVwUixLQUFLd2xELE9BQU8sT0FBT2pxRCxHQUFHLElBQUksT0FBTyxJQUFJLFVBQVVsQixFQUFFMEUsRUFBRSxNQUFNLElBQUksU0FBUzFFLEVBQUUwRSxFQUFFUyxNQUFNLEdBQUcsT0FBT25GLEdBQUcrVyxFQUFFcTBDLGFBQWFwckQsR0FBRytXLEVBQUVzMEMsSUFBSXpCLFNBQVNqbUQsUUFBTSxJQUFJK0MsR0FBR3ZHLE9BQU9tckQsb0JBQW9CSixJQUFJSyxJQUFHLEVBQUcsU0FBU0MsR0FBR3RxRCxHQUFHcXFELEdBQUdycUQsRUFBRSxJQUFJdXFELEdBQUcsU0FBU3ZxRCxHQUFHLElBQUlpRCxFQUFFd0IsS0FBS3pCLE1BQU1oRCxFQUFFeUUsS0FBSzBsRCxJQUFJLElBQUkvQixHQUFHM2pELEtBQUsrbEQsUUFBUSxFQUFFakUsRUFBRXZtRCxFQUFFLFNBQVN5RSxNQUFNK0MsTUFBTUMsUUFBUXpILElBQUkwbUQsR0FBR3pqRCxFQUFFK21ELEdBQUdocUQsRUFBRXMxQixVQUFVcnlCLEdBQUcsU0FBU2pELEVBQUVpRCxFQUFFTyxHQUFHLElBQUksSUFBSVgsRUFBRSxFQUFFL0QsRUFBRTBFLEVBQUV4RSxPQUFPNkQsRUFBRS9ELEVBQUUrRCxJQUFJLENBQUMsSUFBSUosRUFBRWUsRUFBRVgsR0FBRzBqRCxFQUFFdm1ELEVBQUV5QyxFQUFFUSxFQUFFUixLQUFuRSxDQUF5RXpDLEVBQUVncUQsR0FBR3hrRCxJQUFJZixLQUFLeWxELGFBQWFscUQsSUFBSXlFLEtBQUtnbUQsS0FBS3pxRCxJQUFJLFNBQVMwcUQsR0FBRzFxRCxFQUFFaUQsR0FBRyxJQUFJTyxFQUFFLEdBQUdmLEVBQUV6QyxNQUFNQSxhQUFhOG9ELElBQUksT0FBT3Q1QyxFQUFFeFAsRUFBRSxXQUFXQSxFQUFFaXFELGtCQUFrQk0sR0FBRy9tRCxFQUFFeEQsRUFBRWlxRCxPQUFPSSxLQUFLbmlCLE9BQU8xZ0MsTUFBTUMsUUFBUXpILElBQUlrRSxFQUFFbEUsS0FBS2YsT0FBTzByRCxhQUFhM3FELEtBQUtBLEVBQUU0cUQsU0FBU3BuRCxFQUFFLElBQUkrbUQsR0FBR3ZxRCxJQUFJaUQsR0FBR08sR0FBR0EsRUFBRWduRCxVQUFVaG5ELEVBQUUsU0FBU3FuRCxHQUFHN3FELEVBQUVpRCxFQUFFTyxFQUFFWCxFQUFFL0QsR0FBRyxJQUFJMkQsRUFBRSxJQUFJMmxELEdBQUd2eUMsRUFBRTVXLE9BQU9tSSx5QkFBeUJwSCxFQUFFaUQsR0FBRyxJQUFJNFMsSUFBRyxJQUFLQSxFQUFFclAsYUFBYSxDQUFDLElBQUl0QyxFQUFFMlIsR0FBR0EsRUFBRWpULElBQUlOLEVBQUV1VCxHQUFHQSxFQUFFNHZCLElBQUl2aEMsSUFBSTVCLEdBQUcsSUFBSXNFLFVBQVU1SCxTQUFTd0UsRUFBRXhELEVBQUVpRCxJQUFJLElBQUlxaEQsR0FBR3hsRCxHQUFHNHJELEdBQUdsbkQsR0FBR3ZFLE9BQU95RCxlQUFlMUMsRUFBRWlELEVBQUUsQ0FBQ04sWUFBVyxFQUFHNkQsY0FBYSxFQUFHNUQsSUFBSSxXQUFXLElBQUlLLEVBQUVpQixFQUFFQSxFQUFFOUUsS0FBS1ksR0FBR3dELEVBQUUsT0FBTzRrRCxHQUFHeG1ELFNBQVNhLEVBQUUrbEQsU0FBU2xFLElBQUlBLEVBQUU2RixJQUFJM0IsU0FBU2hoRCxNQUFNQyxRQUFReEUsSUFBSSxTQUFTakQsRUFBRWlELEdBQUcsSUFBSSxJQUFJTyxPQUFFLEVBQU9YLEVBQUUsRUFBRS9ELEVBQUVtRSxFQUFFakUsT0FBTzZELEVBQUUvRCxFQUFFK0QsS0FBS1csRUFBRVAsRUFBRUosS0FBS1csRUFBRXltRCxRQUFRem1ELEVBQUV5bUQsT0FBT0UsSUFBSTNCLFNBQVNoaEQsTUFBTUMsUUFBUWpFLElBQUl4RCxFQUFFd0QsR0FBcEgsQ0FBd0hQLEtBQUtBLEdBQUd3aUMsSUFBSSxTQUFTeGlDLEdBQUcsSUFBSUosRUFBRXFCLEVBQUVBLEVBQUU5RSxLQUFLWSxHQUFHd0QsRUFBRVAsSUFBSUosR0FBR0ksR0FBR0EsR0FBR0osR0FBR0EsR0FBR3FCLElBQUk1QixJQUFJQSxFQUFFQSxFQUFFbEQsS0FBS1ksRUFBRWlELEdBQUdPLEVBQUVQLEVBQUVxaEQsR0FBR3hsRCxHQUFHNHJELEdBQUd6bkQsR0FBR1IsRUFBRWltRCxjQUFjLFNBQVNvQyxHQUFHOXFELEVBQUVpRCxFQUFFTyxHQUFHLEdBQUdnRSxNQUFNQyxRQUFRekgsSUFBSXNDLEVBQUVXLEdBQUcsT0FBT2pELEVBQUVoQixPQUFPeVIsS0FBS3NqQixJQUFJL3pCLEVBQUVoQixPQUFPaUUsR0FBR2pELEVBQUV3c0IsT0FBT3ZwQixFQUFFLEVBQUVPLEdBQUdBLEVBQUUsR0FBR1AsS0FBS2pELEtBQUtpRCxLQUFLaEUsT0FBT0MsV0FBVyxPQUFPYyxFQUFFaUQsR0FBR08sRUFBRUEsRUFBRSxJQUFJWCxFQUFFN0MsRUFBRWlxRCxPQUFPLE9BQU9qcUQsRUFBRTRxRCxRQUFRL25ELEdBQUdBLEVBQUUybkQsUUFBUWhuRCxFQUFFWCxHQUFHZ29ELEdBQUdob0QsRUFBRUcsTUFBTUMsRUFBRU8sR0FBR1gsRUFBRXNuRCxJQUFJekIsU0FBU2xsRCxJQUFJeEQsRUFBRWlELEdBQUdPLEVBQUVBLEdBQUcsU0FBU3VuRCxHQUFHL3FELEVBQUVpRCxHQUFHLEdBQUd1RSxNQUFNQyxRQUFRekgsSUFBSXNDLEVBQUVXLEdBQUdqRCxFQUFFd3NCLE9BQU92cEIsRUFBRSxPQUFPLENBQUMsSUFBSU8sRUFBRXhELEVBQUVpcUQsT0FBT2pxRCxFQUFFNHFELFFBQVFwbkQsR0FBR0EsRUFBRWduRCxTQUFTaDdDLEVBQUV4UCxFQUFFaUQsWUFBWWpELEVBQUVpRCxHQUFHTyxHQUFHQSxFQUFFMm1ELElBQUl6QixXQUFXNkIsR0FBR3JyRCxVQUFVdXJELEtBQUssU0FBU3pxRCxHQUFHLElBQUksSUFBSWlELEVBQUVoRSxPQUFPOEgsS0FBSy9HLEdBQUd3RCxFQUFFLEVBQUVBLEVBQUVQLEVBQUVqRSxPQUFPd0UsSUFBSXFuRCxHQUFHN3FELEVBQUVpRCxFQUFFTyxLQUFLK21ELEdBQUdyckQsVUFBVWdyRCxhQUFhLFNBQVNscUQsR0FBRyxJQUFJLElBQUlpRCxFQUFFLEVBQUVPLEVBQUV4RCxFQUFFaEIsT0FBT2lFLEVBQUVPLEVBQUVQLElBQUl5bkQsR0FBRzFxRCxFQUFFaUQsS0FBSyxJQUFJK25ELEdBQUd2RixFQUFFM3NCLHNCQUFzQixTQUFTbXlCLEdBQUdqckQsRUFBRWlELEdBQUcsSUFBSUEsRUFBRSxPQUFPakQsRUFBRSxJQUFJLElBQUl3RCxFQUFFWCxFQUFFL0QsRUFBRTJELEVBQUVrQixHQUFHbWtELFFBQVFoaEQsUUFBUTdELEdBQUdoRSxPQUFPOEgsS0FBSzlELEdBQUc0UyxFQUFFLEVBQUVBLEVBQUVwVCxFQUFFekQsT0FBTzZXLElBQUksWUFBWXJTLEVBQUVmLEVBQUVvVCxNQUFNaFQsRUFBRTdDLEVBQUV3RCxHQUFHMUUsRUFBRW1FLEVBQUVPLEdBQUdnTSxFQUFFeFAsRUFBRXdELEdBQUdYLElBQUkvRCxHQUFHb0YsRUFBRXJCLElBQUlxQixFQUFFcEYsSUFBSW1zRCxHQUFHcG9ELEVBQUUvRCxHQUFHZ3NELEdBQUc5cUQsRUFBRXdELEVBQUUxRSxJQUFJLE9BQU9rQixFQUFFLFNBQVNrckQsR0FBR2xyRCxFQUFFaUQsRUFBRU8sR0FBRyxPQUFPQSxFQUFFLFdBQVcsSUFBSVgsRUFBRSxtQkFBbUJJLEVBQUVBLEVBQUU3RCxLQUFLb0UsRUFBRUEsR0FBR1AsRUFBRW5FLEVBQUUsbUJBQW1Ca0IsRUFBRUEsRUFBRVosS0FBS29FLEVBQUVBLEdBQUd4RCxFQUFFLE9BQU82QyxFQUFFb29ELEdBQUdwb0QsRUFBRS9ELEdBQUdBLEdBQUdtRSxFQUFFakQsRUFBRSxXQUFXLE9BQU9pckQsR0FBRyxtQkFBbUJob0QsRUFBRUEsRUFBRTdELEtBQUtxRixLQUFLQSxNQUFNeEIsRUFBRSxtQkFBbUJqRCxFQUFFQSxFQUFFWixLQUFLcUYsS0FBS0EsTUFBTXpFLElBQUlpRCxFQUFFakQsRUFBRSxTQUFTbXJELEdBQUduckQsRUFBRWlELEdBQUcsSUFBSU8sRUFBRVAsRUFBRWpELEVBQUVBLEVBQUVpSCxPQUFPaEUsR0FBR3VFLE1BQU1DLFFBQVF4RSxHQUFHQSxFQUFFLENBQUNBLEdBQUdqRCxFQUFFLE9BQU93RCxFQUFFLFNBQVN4RCxHQUFHLElBQUksSUFBSWlELEVBQUUsR0FBR08sRUFBRSxFQUFFQSxFQUFFeEQsRUFBRWhCLE9BQU93RSxLQUFLLElBQUlQLEVBQUU2RyxRQUFROUosRUFBRXdELEtBQUtQLEVBQUUzRCxLQUFLVSxFQUFFd0QsSUFBSSxPQUFPUCxFQUF0RixDQUF5Rk8sR0FBR0EsRUFBRSxTQUFTNG5ELEdBQUdwckQsRUFBRWlELEVBQUVPLEVBQUVYLEdBQUcsSUFBSS9ELEVBQUVHLE9BQU9vRSxPQUFPckQsR0FBRyxNQUFNLE9BQU9pRCxFQUFFNmhELEVBQUVobUQsRUFBRW1FLEdBQUduRSxFQUFFa3NELEdBQUd2c0QsS0FBSyxTQUFTdUIsRUFBRWlELEVBQUVPLEdBQUcsT0FBT0EsRUFBRTBuRCxHQUFHbHJELEVBQUVpRCxFQUFFTyxHQUFHUCxHQUFHLG1CQUFtQkEsRUFBRWpELEVBQUVrckQsR0FBR2xyRCxFQUFFaUQsSUFBSXVpRCxFQUFFbitDLFNBQVEsU0FBU3JILEdBQUdnckQsR0FBR2hyRCxHQUFHbXJELE1BQUs1RixFQUFFbCtDLFNBQVEsU0FBU3JILEdBQUdnckQsR0FBR2hyRCxFQUFFLEtBQUtvckQsTUFBS0osR0FBR3pELE1BQU0sU0FBU3ZuRCxFQUFFaUQsRUFBRU8sRUFBRVgsR0FBRyxHQUFHN0MsSUFBSXNuRCxLQUFJdG5ELE9BQUUsR0FBUWlELElBQUlxa0QsS0FBSXJrRCxPQUFFLElBQVNBLEVBQUUsT0FBT2hFLE9BQU9vRSxPQUFPckQsR0FBRyxNQUFNLElBQUlBLEVBQUUsT0FBT2lELEVBQUUsSUFBSW5FLEVBQUUsR0FBRyxJQUFJLElBQUkyRCxLQUFLcWlELEVBQUVobUQsRUFBRWtCLEdBQUdpRCxFQUFFLENBQUMsSUFBSTRTLEVBQUUvVyxFQUFFMkQsR0FBR3lCLEVBQUVqQixFQUFFUixHQUFHb1QsSUFBSXJPLE1BQU1DLFFBQVFvTyxLQUFLQSxFQUFFLENBQUNBLElBQUkvVyxFQUFFMkQsR0FBR29ULEVBQUVBLEVBQUU1TyxPQUFPL0MsR0FBR3NELE1BQU1DLFFBQVF2RCxHQUFHQSxFQUFFLENBQUNBLEdBQUcsT0FBT3BGLEdBQUdrc0QsR0FBRzFrRCxNQUFNMGtELEdBQUdLLFFBQVFMLEdBQUdNLE9BQU9OLEdBQUdPLFNBQVMsU0FBU3ZyRCxFQUFFaUQsRUFBRU8sRUFBRVgsR0FBRyxJQUFJN0MsRUFBRSxPQUFPaUQsRUFBRSxJQUFJbkUsRUFBRUcsT0FBT29FLE9BQU8sTUFBTSxPQUFPeWhELEVBQUVobUQsRUFBRWtCLEdBQUdpRCxHQUFHNmhELEVBQUVobUQsRUFBRW1FLEdBQUduRSxHQUFHa3NELEdBQUdRLFFBQVFOLEdBQUcsSUFBSU8sR0FBRyxTQUFTenJELEVBQUVpRCxHQUFHLFlBQU8sSUFBU0EsRUFBRWpELEVBQUVpRCxHQUFHLFNBQVN5b0QsR0FBRzFyRCxFQUFFaUQsRUFBRU8sR0FBRyxHQUFHLG1CQUFtQlAsSUFBSUEsRUFBRUEsRUFBRW1CLFNBQVMsU0FBU3BFLEVBQUVpRCxHQUFHLElBQUlPLEVBQUV4RCxFQUFFc0csTUFBTSxHQUFHOUMsRUFBRSxDQUFDLElBQUlYLEVBQUUvRCxFQUFFMkQsRUFBRSxHQUFHLEdBQUcrRSxNQUFNQyxRQUFRakUsR0FBRyxJQUFJWCxFQUFFVyxFQUFFeEUsT0FBTzZELEtBQUssaUJBQWlCL0QsRUFBRTBFLEVBQUVYLE1BQU1KLEVBQUVxVCxFQUFFaFgsSUFBSSxDQUFDNEMsS0FBSyxZQUFZLEdBQUd3QyxFQUFFVixHQUFHLElBQUksSUFBSXFTLEtBQUtyUyxFQUFFMUUsRUFBRTBFLEVBQUVxUyxHQUFHcFQsRUFBRXFULEVBQUVELElBQUkzUixFQUFFcEYsR0FBR0EsRUFBRSxDQUFDNEMsS0FBSzVDLEdBQUdrQixFQUFFc0csTUFBTTdELEdBQTFNLENBQThNUSxHQUFHLFNBQVNqRCxFQUFFaUQsR0FBRyxJQUFJTyxFQUFFeEQsRUFBRXNyRCxPQUFPLEdBQUc5bkQsRUFBRSxDQUFDLElBQUlYLEVBQUU3QyxFQUFFc3JELE9BQU8sR0FBRyxHQUFHOWpELE1BQU1DLFFBQVFqRSxHQUFHLElBQUksSUFBSTFFLEVBQUUsRUFBRUEsRUFBRTBFLEVBQUV4RSxPQUFPRixJQUFJK0QsRUFBRVcsRUFBRTFFLElBQUksQ0FBQzJKLEtBQUtqRixFQUFFMUUsU0FBUyxHQUFHb0YsRUFBRVYsR0FBRyxJQUFJLElBQUlmLEtBQUtlLEVBQUUsQ0FBQyxJQUFJcVMsRUFBRXJTLEVBQUVmLEdBQUdJLEVBQUVKLEdBQUd5QixFQUFFMlIsR0FBR2l2QyxFQUFFLENBQUNyOEMsS0FBS2hHLEdBQUdvVCxHQUFHLENBQUNwTixLQUFLb04sS0FBOUwsQ0FBb001UyxHQUFHLFNBQVNqRCxHQUFHLElBQUlpRCxFQUFFakQsRUFBRXMyQyxXQUFXLEdBQUdyekMsRUFBRSxJQUFJLElBQUlPLEtBQUtQLEVBQUUsQ0FBQyxJQUFJSixFQUFFSSxFQUFFTyxHQUFHLG1CQUFtQlgsSUFBSUksRUFBRU8sR0FBRyxDQUFDRCxLQUFLVixFQUFFbTdCLE9BQU9uN0IsS0FBMUcsQ0FBZ0hJLElBQUlBLEVBQUUwb0QsUUFBUTFvRCxFQUFFMm9ELFVBQVU1ckQsRUFBRTByRCxHQUFHMXJELEVBQUVpRCxFQUFFMm9ELFFBQVFwb0QsSUFBSVAsRUFBRTRvRCxRQUFRLElBQUksSUFBSWhwRCxFQUFFLEVBQUUvRCxFQUFFbUUsRUFBRTRvRCxPQUFPN3NELE9BQU82RCxFQUFFL0QsRUFBRStELElBQUk3QyxFQUFFMHJELEdBQUcxckQsRUFBRWlELEVBQUU0b0QsT0FBT2hwRCxHQUFHVyxHQUFHLElBQUlmLEVBQUVvVCxFQUFFLEdBQUcsSUFBSXBULEtBQUt6QyxFQUFFc0MsRUFBRUcsR0FBRyxJQUFJQSxLQUFLUSxFQUFFdU0sRUFBRXhQLEVBQUV5QyxJQUFJSCxFQUFFRyxHQUFHLFNBQVNILEVBQUVPLEdBQUcsSUFBSS9ELEVBQUVrc0QsR0FBR25vRCxJQUFJNG9ELEdBQUc1MUMsRUFBRWhULEdBQUcvRCxFQUFFa0IsRUFBRTZDLEdBQUdJLEVBQUVKLEdBQUdXLEVBQUVYLEdBQUcsT0FBT2dULEVBQUUsU0FBU2kyQyxHQUFHOXJELEVBQUVpRCxFQUFFTyxFQUFFWCxHQUFHLEdBQUcsaUJBQWlCVyxFQUFFLENBQUMsSUFBSTFFLEVBQUVrQixFQUFFaUQsR0FBRyxHQUFHdU0sRUFBRTFRLEVBQUUwRSxHQUFHLE9BQU8xRSxFQUFFMEUsR0FBRyxJQUFJZixFQUFFcVQsRUFBRXRTLEdBQUcsR0FBR2dNLEVBQUUxUSxFQUFFMkQsR0FBRyxPQUFPM0QsRUFBRTJELEdBQUcsSUFBSW9ULEVBQUU0dUMsRUFBRWhpRCxHQUFHLE9BQU8rTSxFQUFFMVEsRUFBRStXLEdBQUcvVyxFQUFFK1csR0FBRy9XLEVBQUUwRSxJQUFJMUUsRUFBRTJELElBQUkzRCxFQUFFK1csSUFBSSxTQUFTazJDLEdBQUcvckQsRUFBRWlELEVBQUVPLEVBQUVYLEdBQUcsSUFBSS9ELEVBQUVtRSxFQUFFakQsR0FBR3lDLEdBQUcrTSxFQUFFaE0sRUFBRXhELEdBQUc2VixFQUFFclMsRUFBRXhELEdBQUdrRSxFQUFFOG5ELEdBQUd2akMsUUFBUTNwQixFQUFFNEMsTUFBTSxHQUFHd0MsR0FBRyxFQUFFLEdBQUd6QixJQUFJK00sRUFBRTFRLEVBQUUsV0FBVytXLEdBQUUsT0FBUSxHQUFHLEtBQUtBLEdBQUdBLElBQUk2dUMsRUFBRTFrRCxHQUFHLENBQUMsSUFBSXNDLEVBQUUwcEQsR0FBR3R0QyxPQUFPNWYsRUFBRTRDLE9BQU9ZLEVBQUUsR0FBRzRCLEVBQUU1QixLQUFLdVQsR0FBRSxHQUFJLFFBQUcsSUFBU0EsRUFBRSxDQUFDQSxFQUFFLFNBQVM3VixFQUFFaUQsRUFBRU8sR0FBRyxHQUFJZ00sRUFBRXZNLEVBQUUsV0FBUixDQUEwQixJQUFJSixFQUFFSSxFQUFFMGIsUUFBUSxPQUFHM2UsR0FBR0EsRUFBRXE0QixTQUFTNHpCLGdCQUFXLElBQVNqc0QsRUFBRXE0QixTQUFTNHpCLFVBQVV6b0QsU0FBSSxJQUFTeEQsRUFBRWtzRCxPQUFPMW9ELEdBQVV4RCxFQUFFa3NELE9BQU8xb0QsR0FBUyxtQkFBbUJYLEdBQUcsYUFBYXNwRCxHQUFHbHBELEVBQUV2QixNQUFNbUIsRUFBRXpELEtBQUtZLEdBQUc2QyxHQUE5TixDQUFpT0EsRUFBRS9ELEVBQUVrQixHQUFHLElBQUlza0QsRUFBRStGLEdBQUdDLElBQUcsR0FBSUksR0FBRzcwQyxHQUFHeTBDLEdBQUdoRyxHQUFHLE9BQU96dUMsRUFBRSxTQUFTczJDLEdBQUduc0QsR0FBRyxJQUFJaUQsRUFBRWpELEdBQUdBLEVBQUV3SSxXQUFXb2UsTUFBTSxzQkFBc0IsT0FBTzNqQixFQUFFQSxFQUFFLEdBQUcsR0FBRyxTQUFTbXBELEdBQUdwc0QsRUFBRWlELEdBQUcsT0FBT2twRCxHQUFHbnNELEtBQUttc0QsR0FBR2xwRCxHQUFHLFNBQVMrb0QsR0FBR2hzRCxFQUFFaUQsR0FBRyxJQUFJdUUsTUFBTUMsUUFBUXhFLEdBQUcsT0FBT21wRCxHQUFHbnBELEVBQUVqRCxHQUFHLEdBQUcsRUFBRSxJQUFJLElBQUl3RCxFQUFFLEVBQUVYLEVBQUVJLEVBQUVqRSxPQUFPd0UsRUFBRVgsRUFBRVcsSUFBSSxHQUFHNG9ELEdBQUducEQsRUFBRU8sR0FBR3hELEdBQUcsT0FBT3dELEVBQUUsT0FBTyxFQUFFLFNBQVM2b0QsR0FBR3JzRCxFQUFFaUQsRUFBRU8sR0FBR29sRCxLQUFLLElBQUksR0FBRzNsRCxFQUFFLElBQUksSUFBSUosRUFBRUksRUFBRUosRUFBRUEsRUFBRWlkLFNBQVMsQ0FBQyxJQUFJaGhCLEVBQUUrRCxFQUFFdzFCLFNBQVNpMEIsY0FBYyxHQUFHeHRELEVBQUUsSUFBSSxJQUFJMkQsRUFBRSxFQUFFQSxFQUFFM0QsRUFBRUUsT0FBT3lELElBQUksSUFBSSxJQUFHLElBQUszRCxFQUFFMkQsR0FBR3JELEtBQUt5RCxFQUFFN0MsRUFBRWlELEVBQUVPLEdBQUcsT0FBTyxNQUFNeEQsR0FBR3VzRCxHQUFHdnNELEVBQUU2QyxFQUFFLHVCQUF1QjBwRCxHQUFHdnNELEVBQUVpRCxFQUFFTyxHQUFHLFFBQVFxbEQsTUFBTSxTQUFTMkQsR0FBR3hzRCxFQUFFaUQsRUFBRU8sRUFBRVgsRUFBRS9ELEdBQUcsSUFBSTJELEVBQUUsS0FBS0EsRUFBRWUsRUFBRXhELEVBQUVtZCxNQUFNbGEsRUFBRU8sR0FBR3hELEVBQUVaLEtBQUs2RCxNQUFNUixFQUFFbW9ELFFBQVF0RyxFQUFFN2hELEtBQUtBLEVBQUU2TCxXQUFXN0wsRUFBRXVNLE9BQU0sU0FBU2hQLEdBQUcsT0FBT3FzRCxHQUFHcnNELEVBQUU2QyxFQUFFL0QsRUFBRSx1QkFBc0IyRCxFQUFFNkwsVUFBUyxHQUFJLE1BQU10TyxHQUFHcXNELEdBQUdyc0QsRUFBRTZDLEVBQUUvRCxHQUFHLE9BQU8yRCxFQUFFLFNBQVM4cEQsR0FBR3ZzRCxFQUFFaUQsRUFBRU8sR0FBRyxHQUFHaWlELEVBQUVFLGFBQWEsSUFBSSxPQUFPRixFQUFFRSxhQUFhdm1ELEtBQUssS0FBS1ksRUFBRWlELEVBQUVPLEdBQUcsTUFBTVAsR0FBR0EsSUFBSWpELEdBQUd5c0QsR0FBR3hwRCxFQUFFLEtBQUssdUJBQXVCd3BELEdBQUd6c0QsRUFBRWlELEVBQUVPLEdBQUcsU0FBU2lwRCxHQUFHenNELEVBQUVpRCxFQUFFTyxHQUFHLElBQUltakQsSUFBSUMsR0FBRyxvQkFBb0IvaUQsUUFBUSxNQUFNN0QsRUFBRTZELFFBQVEzQyxNQUFNbEIsR0FBRyxJQUFJMHNELEdBQUdDLElBQUcsRUFBR0MsR0FBRyxHQUFHQyxJQUFHLEVBQUcsU0FBU0MsS0FBS0QsSUFBRyxFQUFHLElBQUk3c0QsRUFBRTRzRCxHQUFHM29ELE1BQU0sR0FBRzJvRCxHQUFHNXRELE9BQU8sRUFBRSxJQUFJLElBQUlpRSxFQUFFLEVBQUVBLEVBQUVqRCxFQUFFaEIsT0FBT2lFLElBQUlqRCxFQUFFaUQsS0FBSyxHQUFHLG9CQUFvQjdDLFNBQVNrbUIsR0FBR2xtQixTQUFTLENBQUMsSUFBSTJzRCxHQUFHM3NELFFBQVFDLFVBQVVxc0QsR0FBRyxXQUFXSyxHQUFHbC9DLEtBQUtpL0MsSUFBSTFGLEdBQUdubEQsV0FBVytpRCxJQUFJMkgsSUFBRyxPQUFRLEdBQUcxRixHQUFHLG9CQUFvQi85QyxtQkFBbUJvZCxHQUFHcGQsbUJBQW1CLHlDQUF5Q0EsaUJBQWlCVixXQUFXa2tELFFBQUcsSUFBb0J6L0MsR0FBY3FaLEdBQUdyWixHQUFjLFdBQVdBLEVBQWE2L0MsS0FBSyxXQUFXN3FELFdBQVc2cUQsR0FBRyxRQUFRLENBQUMsSUFBSUUsR0FBRyxFQUFFQyxHQUFHLElBQUkvakQsaUJBQWlCNGpELElBQUlJLEdBQUd6c0QsU0FBUzBzRCxlQUFlenVDLE9BQU9zdUMsS0FBS0MsR0FBR0csUUFBUUYsR0FBRyxDQUFDRyxlQUFjLElBQUtYLEdBQUcsV0FBV00sSUFBSUEsR0FBRyxHQUFHLEVBQUVFLEdBQUd6dUQsS0FBS2lnQixPQUFPc3VDLEtBQUtMLElBQUcsRUFBRyxTQUFTVyxHQUFHdHRELEVBQUVpRCxHQUFHLElBQUlPLEVBQUUsR0FBR29wRCxHQUFHdHRELE1BQUssV0FBVyxHQUFHVSxFQUFFLElBQUlBLEVBQUVaLEtBQUs2RCxHQUFHLE1BQU1qRCxHQUFHcXNELEdBQUdyc0QsRUFBRWlELEVBQUUsaUJBQWlCTyxHQUFHQSxFQUFFUCxNQUFLNHBELEtBQUtBLElBQUcsRUFBR0gsT0FBTzFzRCxHQUFHLG9CQUFvQkksUUFBUSxPQUFPLElBQUlBLFNBQVEsU0FBU0osR0FBR3dELEVBQUV4RCxLQUFJLElBQUl1dEQsR0FBRyxJQUFJMUYsR0FBRyxTQUFTMkYsR0FBR3h0RCxJQUFJLFNBQVNBLEVBQUVpRCxFQUFFTyxHQUFHLElBQUlYLEVBQUUvRCxFQUFNK1csRUFBRXJPLE1BQU1DLFFBQVF4RSxHQUFHLE1BQUk0UyxJQUFJcFQsRUFBRVEsSUFBSWhFLE9BQU93dUQsU0FBU3hxRCxJQUFJQSxhQUFhNmxELElBQS9DLENBQXlELEdBQUc3bEQsRUFBRWduRCxPQUFPLENBQUMsSUFBSS9sRCxFQUFFakIsRUFBRWduRCxPQUFPRSxJQUFJMzVDLEdBQUcsR0FBR2hOLEVBQUV3a0QsSUFBSTlqRCxHQUFHLE9BQU9WLEVBQUVrM0MsSUFBSXgyQyxHQUFHLEdBQUcyUixFQUFFLElBQUloVCxFQUFFSSxFQUFFakUsT0FBTzZELEtBQUs3QyxFQUFFaUQsRUFBRUosR0FBR1csUUFBUSxJQUFxQlgsR0FBakIvRCxFQUFFRyxPQUFPOEgsS0FBSzlELElBQU9qRSxPQUFPNkQsS0FBSzdDLEVBQUVpRCxFQUFFbkUsRUFBRStELElBQUlXLElBQTlQLENBQWtReEQsRUFBRXV0RCxJQUFJQSxHQUFHdEYsUUFBUSxJQUFJeUYsR0FBR2xKLEdBQUUsU0FBU3hrRCxHQUFHLElBQUlpRCxFQUFFLE1BQU1qRCxFQUFFNGpCLE9BQU8sR0FBR3BnQixFQUFFLE9BQU94RCxFQUFFaUQsRUFBRWpELEVBQUVpRSxNQUFNLEdBQUdqRSxHQUFHNGpCLE9BQU8sR0FBRy9nQixFQUFFLE9BQU83QyxFQUFFd0QsRUFBRXhELEVBQUVpRSxNQUFNLEdBQUdqRSxHQUFHNGpCLE9BQU8sR0FBRyxNQUFNLENBQUM5aEIsS0FBSzlCLEVBQUU2QyxFQUFFN0MsRUFBRWlFLE1BQU0sR0FBR2pFLEVBQUUyZCxLQUFLbmEsRUFBRXdoQixRQUFRbmlCLEVBQUU4cUQsUUFBUTFxRCxNQUFLLFNBQVMycUQsR0FBRzV0RCxFQUFFaUQsR0FBRyxTQUFTTyxJQUFJLElBQUl4RCxFQUFFNEcsVUFBVS9ELEVBQUVXLEVBQUVxcUQsSUFBSSxJQUFJcm1ELE1BQU1DLFFBQVE1RSxHQUFHLE9BQU8ycEQsR0FBRzNwRCxFQUFFLEtBQUsrRCxVQUFVM0QsRUFBRSxnQkFBZ0IsSUFBSSxJQUFJbkUsRUFBRStELEVBQUVvQixRQUFReEIsRUFBRSxFQUFFQSxFQUFFM0QsRUFBRUUsT0FBT3lELElBQUkrcEQsR0FBRzF0RCxFQUFFMkQsR0FBRyxLQUFLekMsRUFBRWlELEVBQUUsZ0JBQWdCLE9BQU9PLEVBQUVxcUQsSUFBSTd0RCxFQUFFd0QsRUFBRSxTQUFTc3FELEdBQUc5dEQsRUFBRXdELEVBQUUxRSxFQUFFMkQsRUFBRW9ULEVBQUUzUixHQUFHLElBQUk1QixFQUFFZ2lELEVBQUV2a0QsRUFBRXdrRCxFQUFFLElBQUlqaUQsS0FBS3RDLEVBQUVza0QsRUFBRXRrRCxFQUFFc0MsR0FBR3ZDLEVBQUV5RCxFQUFFbEIsR0FBR2lpRCxFQUFFbUosR0FBR3ByRCxHQUFHVyxFQUFFcWhELEtBQUtyaEQsRUFBRWxELElBQUlrRCxFQUFFcWhELEVBQUV1SixPQUFPdkosRUFBRXRrRCxFQUFFc0MsR0FBR3NyRCxHQUFHdEosRUFBRXBnRCxJQUFJckIsRUFBRTBoRCxFQUFFNW1DLFFBQVEybUMsRUFBRXRrRCxFQUFFc0MsR0FBR3VULEVBQUUwdUMsRUFBRXppRCxLQUFLd2lELEVBQUVDLEVBQUV2L0IsVUFBVWxtQixFQUFFeWxELEVBQUV6aUQsS0FBS3dpRCxFQUFFQyxFQUFFdi9CLFFBQVF1L0IsRUFBRW9KLFFBQVFwSixFQUFFbnlDLFNBQVNreUMsSUFBSXZrRCxJQUFJQSxFQUFFOHRELElBQUl2SixFQUFFdGtELEVBQUVzQyxHQUFHdkMsSUFBSSxJQUFJdUMsS0FBS2tCLEVBQUVQLEVBQUVqRCxFQUFFc0MsS0FBS0csR0FBRzhoRCxFQUFFbUosR0FBR3ByRCxJQUFJUixLQUFLMEIsRUFBRWxCLEdBQUdpaUQsRUFBRXYvQixTQUFTLFNBQVMrb0MsR0FBRy90RCxFQUFFbEIsRUFBRTJELEdBQUcsSUFBSW9ULEVBQUU3VixhQUFhOG9ELEtBQUs5b0QsRUFBRUEsRUFBRXZCLEtBQUtpaUIsT0FBTzFnQixFQUFFdkIsS0FBS2lpQixLQUFLLEtBQUssSUFBSXhjLEVBQUVsRSxFQUFFbEIsR0FBRyxTQUFTd0QsSUFBSUcsRUFBRTBhLE1BQU0xWSxLQUFLbUMsV0FBV3FZLEVBQUVwSixFQUFFZzRDLElBQUl2ckQsR0FBR1csRUFBRWlCLEdBQUcyUixFQUFFKzNDLEdBQUcsQ0FBQ3RyRCxJQUFJa0IsRUFBRVUsRUFBRTJwRCxNQUFNaHJELEVBQUVxQixFQUFFOHBELFNBQVNuNEMsRUFBRTNSLEdBQUcycEQsSUFBSXZ1RCxLQUFLZ0QsR0FBR3VULEVBQUUrM0MsR0FBRyxDQUFDMXBELEVBQUU1QixJQUFJdVQsRUFBRW00QyxRQUFPLEVBQUdodUQsRUFBRWxCLEdBQUcrVyxFQUFFLFNBQVNvNEMsR0FBR2p1RCxFQUFFaUQsRUFBRUosRUFBRS9ELEVBQUUyRCxHQUFHLEdBQUdlLEVBQUVQLEdBQUcsQ0FBQyxHQUFHdU0sRUFBRXZNLEVBQUVKLEdBQUcsT0FBTzdDLEVBQUU2QyxHQUFHSSxFQUFFSixHQUFHSixVQUFVUSxFQUFFSixJQUFHLEVBQUcsR0FBRzJNLEVBQUV2TSxFQUFFbkUsR0FBRyxPQUFPa0IsRUFBRTZDLEdBQUdJLEVBQUVuRSxHQUFHMkQsVUFBVVEsRUFBRW5FLElBQUcsRUFBRyxPQUFNLEVBQUcsU0FBU292RCxHQUFHbHVELEdBQUcsT0FBT2xCLEVBQUVrQixHQUFHLENBQUM2cEQsR0FBRzdwRCxJQUFJd0gsTUFBTUMsUUFBUXpILEdBQUcsU0FBU0EsRUFBRXlDLEVBQUVvVCxHQUFHLElBQWF2VCxFQUFFZ2lELEVBQUV2a0QsRUFBRXdrRCxFQUFmcmdELEVBQUUsR0FBZSxJQUFJNUIsRUFBRSxFQUFFQSxFQUFFRyxFQUFFekQsT0FBT3NELElBQUlXLEVBQUVxaEQsRUFBRTdoRCxFQUFFSCxLQUFLLGtCQUFrQmdpRCxJQUFpQkMsRUFBRXJnRCxFQUFmbkUsRUFBRW1FLEVBQUVsRixPQUFPLEdBQVN3SSxNQUFNQyxRQUFRNjhDLEdBQUdBLEVBQUV0bEQsT0FBTyxJQUFJbXZELElBQUk3SixFQUFFdGtELEVBQUVza0QsR0FBR3p1QyxHQUFHLElBQUksSUFBSXZULElBQUksS0FBSzZyRCxHQUFHNUosS0FBS3JnRCxFQUFFbkUsR0FBRzhwRCxHQUFHdEYsRUFBRTdvQyxLQUFLNG9DLEVBQUUsR0FBRzVvQyxNQUFNNG9DLEVBQUU3a0QsU0FBU3lFLEVBQUU1RSxLQUFLNmQsTUFBTWpaLEVBQUVvZ0QsSUFBSXhsRCxFQUFFd2xELEdBQUc2SixHQUFHNUosR0FBR3JnRCxFQUFFbkUsR0FBRzhwRCxHQUFHdEYsRUFBRTdvQyxLQUFLNG9DLEdBQUcsS0FBS0EsR0FBR3BnRCxFQUFFNUUsS0FBS3VxRCxHQUFHdkYsSUFBSTZKLEdBQUc3SixJQUFJNkosR0FBRzVKLEdBQUdyZ0QsRUFBRW5FLEdBQUc4cEQsR0FBR3RGLEVBQUU3b0MsS0FBSzRvQyxFQUFFNW9DLE9BQU83WSxFQUFFSixFQUFFMnJELFdBQVc1cUQsRUFBRThnRCxFQUFFN3dDLE1BQU14USxFQUFFcWhELEVBQUVoaEQsTUFBTUUsRUFBRXFTLEtBQUt5dUMsRUFBRWhoRCxJQUFJLFVBQVV1UyxFQUFFLElBQUl2VCxFQUFFLE1BQU00QixFQUFFNUUsS0FBS2dsRCxLQUFLLE9BQU9wZ0QsRUFBamEsQ0FBb2FsRSxRQUFHLEVBQU8sU0FBU211RCxHQUFHbnVELEdBQUcsT0FBT3dELEVBQUV4RCxJQUFJd0QsRUFBRXhELEVBQUUwYixRQUFPLElBQUsxYixFQUFFcXBELFVBQVUsU0FBU2dGLEdBQUdydUQsRUFBRWlELEdBQUcsR0FBR2pELEVBQUUsQ0FBQyxJQUFJLElBQUl3RCxFQUFFdkUsT0FBT29FLE9BQU8sTUFBTVIsRUFBRWMsR0FBR21rRCxRQUFRaGhELFFBQVE5RyxHQUFHZixPQUFPOEgsS0FBSy9HLEdBQUdsQixFQUFFLEVBQUVBLEVBQUUrRCxFQUFFN0QsT0FBT0YsSUFBSSxDQUFDLElBQUkyRCxFQUFFSSxFQUFFL0QsR0FBRyxHQUFHLFdBQVcyRCxFQUFFLENBQUMsSUFBSSxJQUFJb1QsRUFBRTdWLEVBQUV5QyxHQUFHZ0csS0FBS3ZFLEVBQUVqQixFQUFFaUIsR0FBRyxDQUFDLEdBQUdBLEVBQUVvcUQsV0FBVzkrQyxFQUFFdEwsRUFBRW9xRCxVQUFVejRDLEdBQUcsQ0FBQ3JTLEVBQUVmLEdBQUd5QixFQUFFb3FELFVBQVV6NEMsR0FBRyxNQUFNM1IsRUFBRUEsRUFBRTRiLFFBQVEsSUFBSTViLEdBQUcsWUFBWWxFLEVBQUV5QyxHQUFHLENBQUMsSUFBSUgsRUFBRXRDLEVBQUV5QyxHQUFHa2MsUUFBUW5iLEVBQUVmLEdBQUcsbUJBQW1CSCxFQUFFQSxFQUFFbEQsS0FBSzZELEdBQUdYLElBQUksT0FBT2tCLEdBQUcsU0FBUytxRCxHQUFHdnVELEVBQUVpRCxHQUFHLElBQUlqRCxJQUFJQSxFQUFFaEIsT0FBTyxNQUFNLEdBQUcsSUFBSSxJQUFJd0UsRUFBRSxHQUFHWCxFQUFFLEVBQUUvRCxFQUFFa0IsRUFBRWhCLE9BQU82RCxFQUFFL0QsRUFBRStELElBQUksQ0FBQyxJQUFJSixFQUFFekMsRUFBRTZDLEdBQUdnVCxFQUFFcFQsRUFBRWhFLEtBQUssR0FBR29YLEdBQUdBLEVBQUUxUSxPQUFPMFEsRUFBRTFRLE1BQU0yNEIsYUFBYWpvQixFQUFFMVEsTUFBTTI0QixLQUFLcjdCLEVBQUV5N0IsVUFBVWo3QixHQUFHUixFQUFFdW1ELFlBQVkvbEQsSUFBSTRTLEdBQUcsTUFBTUEsRUFBRWlvQixNQUFNdDZCLEVBQUVtYixVQUFVbmIsRUFBRW1iLFFBQVEsS0FBS3JmLEtBQUttRCxPQUFPLENBQUMsSUFBSXlCLEVBQUUyUixFQUFFaW9CLEtBQUt4N0IsRUFBRWtCLEVBQUVVLEtBQUtWLEVBQUVVLEdBQUcsSUFBSSxhQUFhekIsRUFBRWdSLElBQUluUixFQUFFaEQsS0FBSzZkLE1BQU03YSxFQUFFRyxFQUFFOFEsVUFBVSxJQUFJalIsRUFBRWhELEtBQUttRCxJQUFJLElBQUksSUFBSTZoRCxLQUFLOWdELEVBQUVBLEVBQUU4Z0QsR0FBR2xoQyxNQUFNb3JDLFlBQVlockQsRUFBRThnRCxHQUFHLE9BQU85Z0QsRUFBRSxTQUFTZ3JELEdBQUd4dUQsR0FBRyxPQUFPQSxFQUFFcXBELFlBQVlycEQsRUFBRXdwRCxjQUFjLE1BQU14cEQsRUFBRTBiLEtBQUssU0FBUyt5QyxHQUFHeHJELEVBQUVPLEVBQUVYLEdBQUcsSUFBSS9ELEVBQUUyRCxFQUFFeEQsT0FBTzhILEtBQUt2RCxHQUFHeEUsT0FBTyxFQUFFNlcsRUFBRTVTLElBQUlBLEVBQUV5ckQsU0FBU2pzRCxFQUFFeUIsRUFBRWpCLEdBQUdBLEVBQUUwckQsS0FBSyxHQUFHMXJELEVBQUUsQ0FBQyxHQUFHQSxFQUFFdWtCLFlBQVksT0FBT3ZrQixFQUFFdWtCLFlBQVksR0FBRzNSLEdBQUdoVCxHQUFHQSxJQUFJN0MsR0FBR2tFLElBQUlyQixFQUFFOHJELE9BQU9sc0QsSUFBSUksRUFBRWluQixXQUFXLE9BQU9qbkIsRUFBRSxJQUFJLElBQUlQLEtBQUt4RCxFQUFFLEdBQUdtRSxFQUFFQSxFQUFFWCxJQUFJLE1BQU1BLEVBQUUsS0FBS3hELEVBQUV3RCxHQUFHc3NELEdBQUdwckQsRUFBRWxCLEVBQUVXLEVBQUVYLFVBQVV4RCxFQUFFLEdBQUcsSUFBSSxJQUFJd2xELEtBQUs5Z0QsRUFBRThnRCxLQUFLeGxELElBQUlBLEVBQUV3bEQsR0FBR3VLLEdBQUdyckQsRUFBRThnRCxJQUFJLE9BQU9yaEQsR0FBR2hFLE9BQU8wckQsYUFBYTFuRCxLQUFLQSxFQUFFdWtCLFlBQVkxb0IsR0FBR3luRCxFQUFFem5ELEVBQUUsVUFBVStXLEdBQUcwd0MsRUFBRXpuRCxFQUFFLE9BQU9vRixHQUFHcWlELEVBQUV6bkQsRUFBRSxhQUFhMkQsR0FBRzNELEVBQUUsU0FBUzh2RCxHQUFHNXVELEVBQUVpRCxFQUFFTyxHQUFHLElBQUlYLEVBQUUsV0FBVyxJQUFJN0MsRUFBRTRHLFVBQVU1SCxPQUFPd0UsRUFBRTJaLE1BQU0sS0FBS3ZXLFdBQVdwRCxFQUFFLElBQUksT0FBT3hELEVBQUVBLEdBQUcsaUJBQWlCQSxJQUFJd0gsTUFBTUMsUUFBUXpILEdBQUcsQ0FBQ0EsR0FBR2t1RCxHQUFHbHVELE1BQU0sSUFBSUEsRUFBRWhCLFFBQVEsSUFBSWdCLEVBQUVoQixRQUFRZ0IsRUFBRSxHQUFHcXBELGdCQUFXLEVBQU9ycEQsR0FBRyxPQUFPd0QsRUFBRXNyRCxPQUFPN3ZELE9BQU95RCxlQUFlMUMsRUFBRWlELEVBQUUsQ0FBQ0wsSUFBSUMsRUFBRUYsWUFBVyxFQUFHNkQsY0FBYSxJQUFLM0QsRUFBRSxTQUFTZ3NELEdBQUc3dUQsRUFBRWlELEdBQUcsT0FBTyxXQUFXLE9BQU9qRCxFQUFFaUQsSUFBSSxTQUFTOHJELEdBQUcvdUQsRUFBRWlELEdBQUcsSUFBSUosRUFBRS9ELEVBQUUrVyxFQUFFM1IsRUFBRTVCLEVBQUUsR0FBR2tGLE1BQU1DLFFBQVF6SCxJQUFJLGlCQUFpQkEsRUFBRSxJQUFJNkMsRUFBRSxJQUFJMkUsTUFBTXhILEVBQUVoQixRQUFRRixFQUFFLEVBQUUrVyxFQUFFN1YsRUFBRWhCLE9BQU9GLEVBQUUrVyxFQUFFL1csSUFBSStELEVBQUUvRCxHQUFHbUUsRUFBRWpELEVBQUVsQixHQUFHQSxRQUFRLEdBQUcsaUJBQWlCa0IsRUFBRSxJQUFJNkMsRUFBRSxJQUFJMkUsTUFBTXhILEdBQUdsQixFQUFFLEVBQUVBLEVBQUVrQixFQUFFbEIsSUFBSStELEVBQUUvRCxHQUFHbUUsRUFBRW5FLEVBQUUsRUFBRUEsUUFBUSxHQUFHMkQsRUFBRXpDLEdBQUcsR0FBRzJELElBQUkzRCxFQUFFOEMsT0FBT3FELFVBQVUsQ0FBQ3RELEVBQUUsR0FBRyxJQUFJLElBQUl5aEQsRUFBRXRrRCxFQUFFOEMsT0FBT3FELFlBQVlwRyxFQUFFdWtELEVBQUV2OEMsUUFBUWhJLEVBQUVpSSxNQUFNbkYsRUFBRXZELEtBQUsyRCxFQUFFbEQsRUFBRWlELE1BQU1ILEVBQUU3RCxTQUFTZSxFQUFFdWtELEVBQUV2OEMsWUFBWSxJQUFJN0QsRUFBRWpGLE9BQU84SCxLQUFLL0csR0FBRzZDLEVBQUUsSUFBSTJFLE1BQU10RCxFQUFFbEYsUUFBUUYsRUFBRSxFQUFFK1csRUFBRTNSLEVBQUVsRixPQUFPRixFQUFFK1csRUFBRS9XLElBQUl3RCxFQUFFNEIsRUFBRXBGLEdBQUcrRCxFQUFFL0QsR0FBR21FLEVBQUVqRCxFQUFFc0MsR0FBR0EsRUFBRXhELEdBQUcsT0FBTzBFLEVBQUVYLEtBQUtBLEVBQUUsSUFBSUEsRUFBRXVyRCxVQUFTLEVBQUd2ckQsRUFBRSxTQUFTbXNELEdBQUdodkQsRUFBRWlELEVBQUVPLEVBQUVYLEdBQUcsSUFBSS9ELEVBQUUyRCxFQUFFZ0MsS0FBS29sQixhQUFhN3BCLEdBQUd5QyxHQUFHZSxFQUFFQSxHQUFHLEdBQUdYLElBQUlXLEVBQUVzaEQsRUFBRUEsRUFBRSxHQUFHamlELEdBQUdXLElBQUkxRSxFQUFFMkQsRUFBRWUsSUFBSVAsR0FBR25FLEVBQUUyRixLQUFLMGxCLE9BQU9ucUIsSUFBSWlELEVBQUUsSUFBSTRTLEVBQUVyUyxHQUFHQSxFQUFFczZCLEtBQUssT0FBT2pvQixFQUFFcFIsS0FBS0UsZUFBZSxXQUFXLENBQUNtNUIsS0FBS2pvQixHQUFHL1csR0FBR0EsRUFBRSxTQUFTbXdELEdBQUdqdkQsR0FBRyxPQUFPOHJELEdBQUdybkQsS0FBSzR6QixTQUFTLFVBQVVyNEIsSUFBSWtsRCxFQUFFLFNBQVNnSyxHQUFHbHZELEVBQUVpRCxHQUFHLE9BQU91RSxNQUFNQyxRQUFRekgsSUFBSSxJQUFJQSxFQUFFOEosUUFBUTdHLEdBQUdqRCxJQUFJaUQsRUFBRSxTQUFTa3NELEdBQUdudkQsRUFBRWlELEVBQUVPLEVBQUVYLEVBQUUvRCxHQUFHLElBQUkyRCxFQUFFZ2pELEVBQUVLLFNBQVM3aUQsSUFBSU8sRUFBRSxPQUFPMUUsR0FBRytELElBQUk0aUQsRUFBRUssU0FBUzdpRCxHQUFHaXNELEdBQUdwd0QsRUFBRStELEdBQUdKLEVBQUV5c0QsR0FBR3pzRCxFQUFFekMsR0FBRzZDLEVBQUU2aEQsRUFBRTdoRCxLQUFLSSxPQUFFLEVBQU8sU0FBU204QixHQUFHcC9CLEVBQUVpRCxFQUFFTyxFQUFFWCxFQUFFL0QsR0FBRyxHQUFHMEUsR0FBS2YsRUFBRWUsR0FBRyxDQUFDLElBQUlxUyxFQUFFck8sTUFBTUMsUUFBUWpFLEtBQUtBLEVBQUV1aEQsRUFBRXZoRCxJQUFJLElBQUlVLEVBQUUsU0FBU3pCLEdBQUcsR0FBRyxVQUFVQSxHQUFHLFVBQVVBLEdBQUc4c0IsRUFBRTlzQixHQUFHb1QsRUFBRTdWLE1BQU0sQ0FBQyxJQUFJa0UsRUFBRWxFLEVBQUVtRixPQUFPbkYsRUFBRW1GLE1BQU16RCxLQUFLbVUsRUFBRWhULEdBQUc0aUQsRUFBRVcsWUFBWW5qRCxFQUFFaUIsRUFBRXpCLEdBQUd6QyxFQUFFb3ZELFdBQVdwdkQsRUFBRW92RCxTQUFTLElBQUlwdkQsRUFBRW1GLFFBQVFuRixFQUFFbUYsTUFBTSxJQUFJLElBQUk3QyxFQUFFd1QsRUFBRXJULEdBQUc2aEQsRUFBRUksRUFBRWppRCxHQUFHSCxLQUFLdVQsR0FBR3l1QyxLQUFLenVDLElBQUlBLEVBQUVwVCxHQUFHZSxFQUFFZixHQUFHM0QsS0FBS2tCLEVBQUV5ZCxLQUFLemQsRUFBRXlkLEdBQUcsS0FBSyxVQUFVaGIsR0FBRyxTQUFTekMsR0FBR3dELEVBQUVmLEdBQUd6QyxNQUFNLElBQUksSUFBSXNDLEtBQUtrQixFQUFFVSxFQUFFNUIsR0FBUSxPQUFPdEMsRUFBRSxTQUFTcXZELEdBQUdydkQsRUFBRWlELEdBQUcsSUFBSU8sRUFBRWlCLEtBQUs2cUQsZUFBZTdxRCxLQUFLNnFELGFBQWEsSUFBSXpzRCxFQUFFVyxFQUFFeEQsR0FBRyxPQUFPNkMsSUFBSUksR0FBS3NzRCxHQUFHMXNELEVBQUVXLEVBQUV4RCxHQUFHeUUsS0FBSzR6QixTQUFTbTNCLGdCQUFnQnh2RCxHQUFHWixLQUFLcUYsS0FBS2dyRCxhQUFhLEtBQUtockQsTUFBTSxhQUFhekUsR0FBRSxHQUEvRjZDLEVBQXNHLFNBQVNzOEIsR0FBR24vQixFQUFFaUQsRUFBRU8sR0FBRyxPQUFPK3JELEdBQUd2dkQsRUFBRSxXQUFXaUQsR0FBR08sRUFBRSxJQUFJQSxFQUFFLEtBQUksR0FBSXhELEVBQUUsU0FBU3V2RCxHQUFHdnZELEVBQUVpRCxFQUFFTyxHQUFHLEdBQUdnRSxNQUFNQyxRQUFRekgsR0FBRyxJQUFJLElBQUk2QyxFQUFFLEVBQUVBLEVBQUU3QyxFQUFFaEIsT0FBTzZELElBQUk3QyxFQUFFNkMsSUFBSSxpQkFBaUI3QyxFQUFFNkMsSUFBSTZzRCxHQUFHMXZELEVBQUU2QyxHQUFHSSxFQUFFLElBQUlKLEVBQUVXLFFBQVFrc0QsR0FBRzF2RCxFQUFFaUQsRUFBRU8sR0FBRyxTQUFTa3NELEdBQUcxdkQsRUFBRWlELEVBQUVPLEdBQUd4RCxFQUFFb3FCLFVBQVMsRUFBR3BxQixFQUFFc0QsSUFBSUwsRUFBRWpELEVBQUV1cEQsT0FBTy9sRCxFQUFFLFNBQVNtc0QsR0FBRzN2RCxFQUFFaUQsR0FBRyxHQUFHQSxHQUFLaUIsRUFBRWpCLEdBQUcsQ0FBQyxJQUFJTyxFQUFFeEQsRUFBRXlkLEdBQUd6ZCxFQUFFeWQsR0FBR3FuQyxFQUFFLEdBQUc5a0QsRUFBRXlkLElBQUksR0FBRyxJQUFJLElBQUk1YSxLQUFLSSxFQUFFLENBQUMsSUFBSW5FLEVBQUUwRSxFQUFFWCxHQUFHSixFQUFFUSxFQUFFSixHQUFHVyxFQUFFWCxHQUFHL0QsRUFBRSxHQUFHbUksT0FBT25JLEVBQUUyRCxHQUFHQSxHQUFRLE9BQU96QyxFQUFFLFNBQVM0dkQsR0FBRzV2RCxFQUFFaUQsRUFBRU8sRUFBRVgsR0FBR0ksRUFBRUEsR0FBRyxDQUFDeXJELFNBQVNsckQsR0FBRyxJQUFJLElBQUkxRSxFQUFFLEVBQUVBLEVBQUVrQixFQUFFaEIsT0FBT0YsSUFBSSxDQUFDLElBQUkyRCxFQUFFekMsRUFBRWxCLEdBQUcwSSxNQUFNQyxRQUFRaEYsR0FBR210RCxHQUFHbnRELEVBQUVRLEVBQUVPLEdBQUdmLElBQUlBLEVBQUVxc0QsUUFBUXJzRCxFQUFFZ0ssR0FBR3FpRCxPQUFNLEdBQUk3ckQsRUFBRVIsRUFBRWEsS0FBS2IsRUFBRWdLLElBQUksT0FBTzVKLElBQUlJLEVBQUUwckQsS0FBSzlyRCxHQUFHSSxFQUFFLFNBQVM0c0QsR0FBRzd2RCxFQUFFaUQsR0FBRyxJQUFJLElBQUlPLEVBQUUsRUFBRUEsRUFBRVAsRUFBRWpFLE9BQU93RSxHQUFHLEVBQUUsQ0FBQyxJQUFJWCxFQUFFSSxFQUFFTyxHQUFHLGlCQUFpQlgsR0FBR0EsSUFBSTdDLEVBQUVpRCxFQUFFTyxJQUFJUCxFQUFFTyxFQUFFLElBQUksT0FBT3hELEVBQUUsU0FBUzh2RCxHQUFHOXZELEVBQUVpRCxHQUFHLE1BQU0saUJBQWlCakQsRUFBRWlELEVBQUVqRCxFQUFFQSxFQUFFLFNBQVMrdkQsR0FBRy92RCxHQUFHQSxFQUFFZ3dELEdBQUc3d0IsR0FBR24vQixFQUFFNEgsR0FBRzI4QyxFQUFFdmtELEVBQUUwRixHQUFHM0YsRUFBRUMsRUFBRStFLEdBQUdncUQsR0FBRy91RCxFQUFFby9CLEdBQUc0dkIsR0FBR2h2RCxFQUFFaXdELEdBQUc5SyxFQUFFbmxELEVBQUU4SCxHQUFHc2UsRUFBRXBtQixFQUFFa3dELEdBQUdiLEdBQUdydkQsRUFBRW13RCxHQUFHbEIsR0FBR2p2RCxFQUFFb3dELEdBQUdqQixHQUFHbnZELEVBQUVxd0QsR0FBR2p4QixHQUFHcC9CLEVBQUV5RixHQUFHb2tELEdBQUc3cEQsRUFBRXdGLEdBQUdva0QsR0FBRzVwRCxFQUFFc3dELEdBQUdWLEdBQUc1dkQsRUFBRXV3RCxHQUFHWixHQUFHM3ZELEVBQUU2SCxHQUFHZ29ELEdBQUc3dkQsRUFBRXd3RCxHQUFHVixHQUFHLFNBQVNXLEdBQUd4dEQsRUFBRU8sRUFBRTFFLEVBQUUyRCxFQUFFb1QsR0FBRyxJQUFJM1IsRUFBRTVCLEVBQUVtQyxLQUFLNi9DLEVBQUV6dUMsRUFBRXpSLFFBQVFvTCxFQUFFL00sRUFBRSxTQUFTeUIsRUFBRWpGLE9BQU9vRSxPQUFPWixJQUFJaXVELFVBQVVqdUQsR0FBR3lCLEVBQUV6QixFQUFFQSxFQUFFQSxFQUFFaXVELFdBQVcsSUFBSTN3RCxFQUFFOEMsRUFBRXloRCxFQUFFcU0sV0FBV3BNLEdBQUd4a0QsRUFBRTBFLEtBQUtoRyxLQUFLd0UsRUFBRXdCLEtBQUs2QixNQUFNOUMsRUFBRWlCLEtBQUs4TyxTQUFTelUsRUFBRTJGLEtBQUtzYSxPQUFPdGMsRUFBRWdDLEtBQUt3WixVQUFVaGIsRUFBRXdhLElBQUl6ZCxFQUFFeUUsS0FBS21zRCxXQUFXdkMsR0FBRy9KLEVBQUVnSCxPQUFPN29ELEdBQUdnQyxLQUFLcTRCLE1BQU0sV0FBVyxPQUFPeDZCLEVBQUU2bkIsUUFBUXNrQyxHQUFHeHJELEVBQUU4NkIsWUFBWXo3QixFQUFFNm5CLE9BQU9va0MsR0FBR3p2RCxFQUFFMkQsSUFBSUgsRUFBRTZuQixRQUFRbHJCLE9BQU95RCxlQUFlK0IsS0FBSyxjQUFjLENBQUM5QixZQUFXLEVBQUdDLElBQUksV0FBVyxPQUFPNnJELEdBQUd4ckQsRUFBRTg2QixZQUFZdDVCLEtBQUtxNEIsWUFBWS84QixJQUFJMEUsS0FBSzR6QixTQUFTaXNCLEVBQUU3L0MsS0FBSzBsQixPQUFPMWxCLEtBQUtxNEIsUUFBUXI0QixLQUFLb2xCLGFBQWE0a0MsR0FBR3hyRCxFQUFFODZCLFlBQVl0NUIsS0FBSzBsQixTQUFTbTZCLEVBQUV1TSxTQUFTcHNELEtBQUtHLEdBQUcsU0FBUzVFLEVBQUVpRCxFQUFFTyxFQUFFWCxHQUFHLElBQUkvRCxFQUFFZ3lELEdBQUc1c0QsRUFBRWxFLEVBQUVpRCxFQUFFTyxFQUFFWCxFQUFFMGhELEdBQUcsT0FBT3psRCxJQUFJMEksTUFBTUMsUUFBUTNJLEtBQUtBLEVBQUVvcUQsVUFBVTVFLEVBQUV1TSxTQUFTL3hELEVBQUVrcUQsVUFBVXZtRCxHQUFHM0QsR0FBRzJGLEtBQUtHLEdBQUcsU0FBUzVFLEVBQUVpRCxFQUFFTyxFQUFFWCxHQUFHLE9BQU9pdUQsR0FBRzVzRCxFQUFFbEUsRUFBRWlELEVBQUVPLEVBQUVYLEVBQUUwaEQsSUFBSSxTQUFTd00sR0FBRy93RCxFQUFFaUQsRUFBRU8sRUFBRVgsRUFBRS9ELEdBQUcsSUFBSTJELEVBQUVxbkQsR0FBRzlwRCxHQUFHLE9BQU95QyxFQUFFdW1ELFVBQVV4bEQsRUFBRWYsRUFBRXdtRCxVQUFVcG1ELEVBQUVJLEVBQUU2NkIsUUFBUXI3QixFQUFFaEUsT0FBT2dFLEVBQUVoRSxLQUFLLEtBQUtxL0IsS0FBSzc2QixFQUFFNjZCLE1BQU1yN0IsRUFBRSxTQUFTdXVELEdBQUdoeEQsRUFBRWlELEdBQUcsSUFBSSxJQUFJTyxLQUFLUCxFQUFFakQsRUFBRThWLEVBQUV0UyxJQUFJUCxFQUFFTyxHQUFHdXNELEdBQUdVLEdBQUd2eEQsV0FBVyxJQUFJK3hELEdBQUcsQ0FBQ253QyxLQUFLLFNBQVM5Z0IsRUFBRWlELEdBQUcsR0FBR2pELEVBQUU2Z0Isb0JBQW9CN2dCLEVBQUU2Z0Isa0JBQWtCcXdDLGNBQWNseEQsRUFBRXZCLEtBQUtraEIsVUFBVSxDQUFDLElBQUk5YyxFQUFFN0MsRUFBRWl4RCxHQUFHdHdDLFNBQVM5ZCxFQUFFQSxRQUFTN0MsRUFBRTZnQixrQkFBa0IsU0FBUzdnQixFQUFFaUQsR0FBRyxJQUFJSixFQUFFLENBQUNzdUQsY0FBYSxFQUFHNzRCLGFBQWF0NEIsRUFBRStlLE9BQU85YixHQUFHbkUsRUFBRWtCLEVBQUV2QixLQUFLMnlELGVBQTZFLE9BQTlENXRELEVBQUUxRSxLQUFLK0QsRUFBRStiLE9BQU85ZixFQUFFOGYsT0FBTy9iLEVBQUUyc0QsZ0JBQWdCMXdELEVBQUUwd0QsaUJBQXdCLElBQUl4dkQsRUFBRW1wRCxpQkFBaUJrSSxLQUFLeHVELEdBQXZMLENBQTJMN0MsRUFBRXN4RCxLQUFLalUsT0FBT3A2QyxFQUFFakQsRUFBRStvRCxTQUFJLEVBQU85bEQsSUFBSzBkLFNBQVMsU0FBUzFkLEVBQUVPLEdBQUcsSUFBSVgsRUFBRVcsRUFBRTJsRCxrQkFBa0IsU0FBU2xtRCxFQUFFTyxFQUFFWCxFQUFFL0QsRUFBRTJELEdBQUcsSUFBSW9ULEVBQUUvVyxFQUFFTCxLQUFLcy9CLFlBQVk3NUIsRUFBRWpCLEVBQUU0bUIsYUFBYXZuQixLQUFLdVQsSUFBSUEsRUFBRTY0QyxTQUFTeHFELElBQUlsRSxJQUFJa0UsRUFBRXdxRCxTQUFTNzRDLEdBQUc1UyxFQUFFNG1CLGFBQWE4a0MsT0FBTzk0QyxFQUFFODRDLE1BQU1ySyxLQUFLN2hELEdBQUdRLEVBQUVvMUIsU0FBU2s1QixpQkFBaUJqdkQsR0FBc0UsR0FBbkVXLEVBQUVvMUIsU0FBU0MsYUFBYXg1QixFQUFFbUUsRUFBRXljLE9BQU81Z0IsRUFBRW1FLEVBQUV1dUQsU0FBU3Z1RCxFQUFFdXVELE9BQU96eUMsT0FBT2pnQixHQUFNbUUsRUFBRW8xQixTQUFTazVCLGdCQUFnQjl1RCxFQUFFUSxFQUFFd3VELE9BQU8zeUQsRUFBRUwsS0FBSzBHLE9BQU9uRixFQUFFaUQsRUFBRXl1RCxXQUFXN3VELEdBQUc3QyxFQUFFd0QsR0FBR1AsRUFBRW8xQixTQUFTL3hCLE1BQU0sQ0FBQ2drRCxJQUFHLEdBQUksSUFBSSxJQUFJdnFELEVBQUVrRCxFQUFFaXBELE9BQU8zSCxFQUFFdGhELEVBQUVvMUIsU0FBU3M1QixXQUFXLEdBQUczd0QsRUFBRSxFQUFFQSxFQUFFdWpELEVBQUV2bEQsT0FBT2dDLElBQUksQ0FBQyxJQUFJdUIsRUFBRWdpRCxFQUFFdmpELEdBQUd1dUIsRUFBRXRzQixFQUFFbzFCLFNBQVMveEIsTUFBTXZHLEVBQUV3QyxHQUFHd3BELEdBQUd4cEQsRUFBRWd0QixFQUFFL3JCLEVBQUVQLEdBQUdxbkQsSUFBRyxHQUFJcm5ELEVBQUVvMUIsU0FBUzR6QixVQUFVem9ELEVBQUVYLEVBQUVBLEdBQUc3QyxFQUFFLElBQUlpZixFQUFFaGMsRUFBRW8xQixTQUFTdTVCLGlCQUFpQjN1RCxFQUFFbzFCLFNBQVN1NUIsaUJBQWlCL3VELEVBQUVndkQsR0FBRzV1RCxFQUFFSixFQUFFb2MsR0FBR3FsQyxJQUFJcmhELEVBQUVrbkIsT0FBT29rQyxHQUFHOXJELEVBQUUzRCxFQUFFby9CLFNBQVNqN0IsRUFBRWdpQyxnQkFBdGxCLENBQXVtQnpoQyxFQUFFcWQsa0JBQWtCNWQsRUFBRTRkLGtCQUFrQmhlLEVBQUVvcEQsVUFBVXBwRCxFQUFFb2IsVUFBVXphLEVBQUVYLEVBQUUwUSxXQUFXdStDLE9BQU8sU0FBUzl4RCxHQUFHLElBQUlpRCxFQUFFTyxFQUFFeEQsRUFBRWsrQixRQUFRcjdCLEVBQUU3QyxFQUFFNmdCLGtCQUFrQmhlLEVBQUVrdkQsYUFBYWx2RCxFQUFFa3ZELFlBQVcsRUFBR0MsR0FBR252RCxFQUFFLFlBQVk3QyxFQUFFdkIsS0FBS2toQixZQUFZbmMsRUFBRXV1RCxhQUFhOXVELEVBQUVKLEdBQUdnZCxXQUFVLEVBQUd5cEIsR0FBR2hxQyxLQUFLMkQsSUFBSWd2RCxHQUFHcHZELEdBQUUsS0FBTXF2RCxRQUFRLFNBQVNseUQsR0FBRyxJQUFJaUQsRUFBRWpELEVBQUU2Z0Isa0JBQWtCNWQsRUFBRWl1RCxlQUFlbHhELEVBQUV2QixLQUFLa2hCLFVBQVUsU0FBUzNmLEVBQUVpRCxFQUFFTyxHQUFHLEtBQUdBLElBQUlQLEVBQUUyYyxpQkFBZ0IsRUFBR3V5QyxHQUFHbHZELEtBQWVBLEVBQUU0YyxXQUFVLENBQUM1YyxFQUFFNGMsV0FBVSxFQUFHLElBQUksSUFBSWhkLEVBQUUsRUFBRUEsRUFBRUksRUFBRW12RCxVQUFVcHpELE9BQU82RCxJQUFJN0MsRUFBRWlELEVBQUVtdkQsVUFBVXZ2RCxJQUFJbXZELEdBQUcvdUQsRUFBRSxnQkFBdEosQ0FBdUtBLEdBQUUsR0FBSUEsRUFBRTZoQyxjQUFjdXRCLEdBQUdwekQsT0FBTzhILEtBQUtrcUQsSUFBSSxTQUFTcUIsR0FBR3h6RCxFQUFFK1csRUFBRTNSLEVBQUU1QixFQUFFdkMsR0FBRyxJQUFJa0QsRUFBRW5FLEdBQUcsQ0FBQyxJQUFJeWxELEVBQUVyZ0QsRUFBRW0wQixTQUFTc3pCLE1BQU0sR0FBR2xwRCxFQUFFM0QsS0FBS0EsRUFBRXlsRCxFQUFFaG1DLE9BQU96ZixJQUFJLG1CQUFtQkEsRUFBRSxDQUFDLElBQUlrQyxFQUFFLEdBQUdpQyxFQUFFbkUsRUFBRTZ5QixXQUFNLEtBQVU3eUIsRUFBRSxTQUFTa0IsRUFBRWxCLEdBQUcsR0FBRytELEVBQUU3QyxFQUFFa0IsUUFBUXNDLEVBQUV4RCxFQUFFdXlELFdBQVcsT0FBT3Z5RCxFQUFFdXlELFVBQVUsR0FBRy91RCxFQUFFeEQsRUFBRStOLFVBQVUsT0FBTy9OLEVBQUUrTixTQUFTLElBQUk4SCxFQUFFMjhDLEdBQThELEdBQTNEMzhDLEdBQUdyUyxFQUFFeEQsRUFBRXl5RCxVQUFVLElBQUl6eUQsRUFBRXl5RCxPQUFPM29ELFFBQVErTCxJQUFJN1YsRUFBRXl5RCxPQUFPbnpELEtBQUt1VyxHQUFNaFQsRUFBRTdDLEVBQUVpdUMsVUFBVXpxQyxFQUFFeEQsRUFBRTB5RCxhQUFhLE9BQU8xeUQsRUFBRTB5RCxZQUFZLEdBQUc3OEMsSUFBSXJTLEVBQUV4RCxFQUFFeXlELFFBQVEsQ0FBQyxJQUFJdnVELEVBQUVsRSxFQUFFeXlELE9BQU8sQ0FBQzU4QyxHQUFHdlQsR0FBRSxFQUFHdkMsRUFBRSxLQUFLd2tELEVBQUUsS0FBSzF1QyxFQUFFdTNCLElBQUksa0JBQWlCLFdBQVcsT0FBT251QixFQUFFL2EsRUFBRTJSLE1BQUssSUFBSTdVLEVBQUUsU0FBU2hCLEdBQUcsSUFBSSxJQUFJaUQsRUFBRSxFQUFFTyxFQUFFVSxFQUFFbEYsT0FBT2lFLEVBQUVPLEVBQUVQLElBQUlpQixFQUFFakIsR0FBR2dpQyxlQUFlamxDLElBQUlrRSxFQUFFbEYsT0FBTyxFQUFFLE9BQU9lLElBQUl3QixhQUFheEIsR0FBR0EsRUFBRSxNQUFNLE9BQU93a0QsSUFBSWhqRCxhQUFhZ2pELEdBQUdBLEVBQUUsUUFBUWhpRCxFQUFFOGlELEdBQUUsU0FBU3BpRCxHQUFHakQsRUFBRStOLFNBQVM0a0QsR0FBRzF2RCxFQUFFbkUsR0FBR3dELEVBQUU0QixFQUFFbEYsT0FBTyxFQUFFZ0MsR0FBRSxNQUFNdXVCLEVBQUU4MUIsR0FBRSxTQUFTcGlELEdBQUdPLEVBQUV4RCxFQUFFdXlELGFBQWF2eUQsRUFBRWtCLE9BQU0sRUFBR0YsR0FBRSxPQUFPcUIsRUFBRXJDLEVBQUV1QyxFQUFFZ3RCLEdBQUcsT0FBTzlzQixFQUFFSixLQUFLaWlELEVBQUVqaUQsR0FBR1ksRUFBRWpELEVBQUUrTixXQUFXMUwsRUFBRXdMLEtBQUt0TCxFQUFFZ3RCLEdBQUcrMEIsRUFBRWppRCxFQUFFa0MsYUFBYWxDLEVBQUVrQyxVQUFVc0osS0FBS3RMLEVBQUVndEIsR0FBRy9yQixFQUFFbkIsRUFBRW5CLFNBQVNsQixFQUFFdXlELFVBQVVJLEdBQUd0d0QsRUFBRW5CLE1BQU1wQyxJQUFJMEUsRUFBRW5CLEVBQUU0ckMsV0FBV2p1QyxFQUFFMHlELFlBQVlDLEdBQUd0d0QsRUFBRTRyQyxRQUFRbnZDLEdBQUcsSUFBSXVELEVBQUV1d0QsTUFBTTV5RCxFQUFFaXVDLFNBQVEsRUFBR2x1QyxFQUFFa0MsWUFBVyxXQUFXbEMsRUFBRSxLQUFLa0QsRUFBRWpELEVBQUUrTixXQUFXOUssRUFBRWpELEVBQUVrQixTQUFTbEIsRUFBRWl1QyxTQUFRLEVBQUdqdEMsR0FBRSxNQUFNcUIsRUFBRXV3RCxPQUFPLE1BQU1wdkQsRUFBRW5CLEVBQUV6QixXQUFXMmpELEVBQUV0aUQsWUFBVyxXQUFXc2lELEVBQUUsS0FBS3RoRCxFQUFFakQsRUFBRStOLFdBQVd3aEIsRUFBRSxRQUFPbHRCLEVBQUV6QixZQUFZMEIsR0FBRSxFQUFHdEMsRUFBRWl1QyxRQUFRanVDLEVBQUUweUQsWUFBWTF5RCxFQUFFK04sVUFBaC9CLENBQTIvQi9NLEVBQUVsQyxFQUFFeWxELElBQUksT0FBTyxTQUFTdmtELEVBQUVpRCxFQUFFTyxFQUFFWCxFQUFFL0QsR0FBRyxJQUFJMkQsRUFBRW1uRCxLQUFLLE9BQU9ubkQsRUFBRSttRCxhQUFheHBELEVBQUV5QyxFQUFFZ25ELFVBQVUsQ0FBQ2hyRCxLQUFLd0UsRUFBRWk3QixRQUFRMTZCLEVBQUUrUCxTQUFTMVEsRUFBRTRRLElBQUkzVSxHQUFHMkQsRUFBdkcsQ0FBMEd6QixFQUFFNlUsRUFBRTNSLEVBQUU1QixFQUFFdkMsR0FBRzhWLEVBQUVBLEdBQUcsR0FBRzhwQixHQUFHN2dDLEdBQUcwRSxFQUFFcVMsRUFBRWc5QyxRQUFRLFNBQVM3eUQsRUFBRWlELEdBQUcsSUFBSUosRUFBRTdDLEVBQUU2eUQsT0FBTzd5RCxFQUFFNnlELE1BQU05MUIsTUFBTSxRQUFRaitCLEVBQUVrQixFQUFFNnlELE9BQU83eUQsRUFBRTZ5RCxNQUFNenhELE9BQU8sU0FBUzZCLEVBQUVrQyxRQUFRbEMsRUFBRWtDLE1BQU0sS0FBS3RDLEdBQUdJLEVBQUU0dkQsTUFBTTd2RCxNQUFNLElBQUlQLEVBQUVRLEVBQUV3YSxLQUFLeGEsRUFBRXdhLEdBQUcsSUFBSTVILEVBQUVwVCxFQUFFM0QsR0FBR29GLEVBQUVqQixFQUFFNHZELE1BQU14bEQsU0FBUzdKLEVBQUVxUyxJQUFJck8sTUFBTUMsUUFBUW9PLElBQUksSUFBSUEsRUFBRS9MLFFBQVE1RixHQUFHMlIsSUFBSTNSLEtBQUt6QixFQUFFM0QsR0FBRyxDQUFDb0YsR0FBRytDLE9BQU80TyxJQUFJcFQsRUFBRTNELEdBQUdvRixFQUF6UCxDQUE0UHBGLEVBQUVzRixRQUFReVIsR0FBRyxJQUFJdFQsRUFBRSxTQUFTdkMsRUFBRTZDLEVBQUUvRCxHQUFHLElBQUkyRCxFQUFFSSxFQUFFdUIsUUFBUWtDLE1BQU0sSUFBSXJELEVBQUVSLEdBQUcsQ0FBQyxJQUFJb1QsRUFBRSxHQUFHM1IsRUFBRWxFLEVBQUVtRixNQUFNN0MsRUFBRXRDLEVBQUVzRyxNQUFNLEdBQUc5QyxFQUFFVSxJQUFJVixFQUFFbEIsR0FBRyxJQUFJLElBQUlnaUQsS0FBSzdoRCxFQUFFLENBQUMsSUFBSTFDLEVBQUUya0QsRUFBRUosR0FBRzJKLEdBQUdwNEMsRUFBRXZULEVBQUVnaUQsRUFBRXZrRCxHQUFFLElBQUtrdUQsR0FBR3A0QyxFQUFFM1IsRUFBRW9nRCxFQUFFdmtELEdBQUUsR0FBSSxPQUFPOFYsR0FBNUosQ0FBZ0tBLEVBQUUvVyxHQUFHLEdBQUcrRCxFQUFFL0QsRUFBRXNGLFFBQVFxYSxZQUFZLE9BQU8sU0FBU3hiLEVBQUVKLEVBQUUvRCxFQUFFMkQsRUFBRW9ULEdBQUcsSUFBSTNSLEVBQUVqQixFQUFFbUIsUUFBUTlCLEVBQUUsR0FBR2dpRCxFQUFFcGdELEVBQUVvQyxNQUFNLEdBQUc5QyxFQUFFOGdELEdBQUcsSUFBSSxJQUFJdmtELEtBQUt1a0QsRUFBRWhpRCxFQUFFdkMsR0FBR2dzRCxHQUFHaHNELEVBQUV1a0QsRUFBRXpoRCxHQUFHN0MsUUFBUXdELEVBQUUxRSxFQUFFcUcsUUFBUTZyRCxHQUFHMXVELEVBQUV4RCxFQUFFcUcsT0FBTzNCLEVBQUUxRSxFQUFFd0gsUUFBUTBxRCxHQUFHMXVELEVBQUV4RCxFQUFFd0gsT0FBTyxJQUFJaStDLEVBQUUsSUFBSWtNLEdBQUczeEQsRUFBRXdELEVBQUV1VCxFQUFFcFQsRUFBRVEsR0FBR2pDLEVBQUVrRCxFQUFFMGEsT0FBT3hmLEtBQUssS0FBS21sRCxFQUFFMy9DLEdBQUcyL0MsR0FBRyxHQUFHdmpELGFBQWE4bkQsR0FBRyxPQUFPaUksR0FBRy92RCxFQUFFbEMsRUFBRXlsRCxFQUFFeGxDLE9BQU83YSxHQUFHLEdBQUdzRCxNQUFNQyxRQUFRekcsR0FBRyxDQUFDLElBQUksSUFBSXVCLEVBQUUyckQsR0FBR2x0RCxJQUFJLEdBQUd1dUIsRUFBRSxJQUFJL25CLE1BQU1qRixFQUFFdkQsUUFBUWlnQixFQUFFLEVBQUVBLEVBQUUxYyxFQUFFdkQsT0FBT2lnQixJQUFJc1EsRUFBRXRRLEdBQUc4eEMsR0FBR3h1RCxFQUFFMGMsR0FBR25nQixFQUFFeWxELEVBQUV4bEMsT0FBTzdhLEdBQUcsT0FBT3FyQixHQUEzVyxDQUErV3p3QixFQUFFeUQsRUFBRXNULEVBQUUzUixFQUFFNUIsR0FBRyxJQUFJaXRCLEVBQUUxWixFQUFFNEgsR0FBRyxHQUFHNUgsRUFBRTRILEdBQUc1SCxFQUFFeFEsU0FBU3hDLEVBQUUvRCxFQUFFc0YsUUFBUTJOLFVBQVUsQ0FBQyxJQUFJMVAsRUFBRXdULEVBQUVpb0IsS0FBS2pvQixFQUFFLEdBQUd4VCxJQUFJd1QsRUFBRWlvQixLQUFLejdCLElBQUksU0FBU3JDLEdBQUcsSUFBSSxJQUFJaUQsRUFBRWpELEVBQUUwZ0IsT0FBTzFnQixFQUFFMGdCLEtBQUssSUFBSWxkLEVBQUUsRUFBRUEsRUFBRTZ1RCxHQUFHcnpELE9BQU93RSxJQUFJLENBQUMsSUFBSVgsRUFBRXd2RCxHQUFHN3VELEdBQUcxRSxFQUFFbUUsRUFBRUosR0FBR0osRUFBRXd1RCxHQUFHcHVELEdBQUcvRCxJQUFJMkQsR0FBRzNELEdBQUdBLEVBQUVnMEQsVUFBVTd2RCxFQUFFSixHQUFHL0QsRUFBRWkwRCxHQUFHdHdELEVBQUUzRCxHQUFHMkQsSUFBL0gsQ0FBb0lvVCxHQUFHLElBQUlyRyxFQUFFMVEsRUFBRXNGLFFBQVF0QyxNQUFNL0IsRUFBRSxPQUFPLElBQUkrb0QsR0FBRyxpQkFBaUJocUQsRUFBRTZ5QixLQUFLbmlCLEVBQUUsSUFBSUEsRUFBRSxJQUFJcUcsT0FBRSxPQUFPLE9BQU8sRUFBTzNSLEVBQUUsQ0FBQ210RCxLQUFLdnlELEVBQUVtdEQsVUFBVTFwRCxFQUFFMGIsVUFBVXNSLEVBQUU5YixJQUFJMVQsRUFBRXdULFNBQVNqUixHQUFHdEIsS0FBSyxTQUFTK3hELEdBQUcveUQsRUFBRWlELEdBQUcsSUFBSU8sRUFBRSxTQUFTQSxFQUFFWCxHQUFHN0MsRUFBRXdELEVBQUVYLEdBQUdJLEVBQUVPLEVBQUVYLElBQUksT0FBT1csRUFBRXN2RCxTQUFRLEVBQUd0dkQsRUFBZ0IsU0FBU3N0RCxHQUFHOXdELEVBQUU2VixFQUFFM1IsRUFBRTVCLEVBQUVnaUQsRUFBRXZrRCxHQUFHLE9BQU95SCxNQUFNQyxRQUFRdkQsSUFBSXBGLEVBQUVvRixNQUFNb2dELEVBQUVoaUQsRUFBRUEsRUFBRTRCLEVBQUVBLE9BQUUsR0FBUXJCLEVBQUU5QyxLQUFLdWtELEVBQXJGLEdBQTJGLFNBQVN0a0QsRUFBRWxCLEVBQUUrVyxFQUFFM1IsRUFBRTVCLEdBQUcsR0FBR2tCLEVBQUVxUyxJQUFJclMsRUFBRXFTLEVBQUVvMEMsUUFBUSxPQUFPTCxLQUE2QixHQUF4QnBtRCxFQUFFcVMsSUFBSXJTLEVBQUVxUyxFQUFFbTlDLE1BQU1sMEQsRUFBRStXLEVBQUVtOUMsS0FBUWwwRCxFQUFFLE9BQU84cUQsS0FBa1AsSUFBSXRGLEVBQUV2a0QsRUFBNkJ3a0QsR0FBaFIvOEMsTUFBTUMsUUFBUXZELElBQUksbUJBQW1CQSxFQUFFLE1BQU0yUixFQUFFQSxHQUFHLElBQUlrb0IsWUFBWSxDQUFDcGYsUUFBUXphLEVBQUUsSUFBSUEsRUFBRWxGLE9BQU8sR0FBcFIsSUFBdVJzRCxFQUFPNEIsRUFBRWdxRCxHQUFHaHFELEdBQXhTLElBQTJTNUIsSUFBUzRCLEVBQUUsU0FBU2xFLEdBQUcsSUFBSSxJQUFJaUQsRUFBRSxFQUFFQSxFQUFFakQsRUFBRWhCLE9BQU9pRSxJQUFJLEdBQUd1RSxNQUFNQyxRQUFRekgsRUFBRWlELElBQUksT0FBT3VFLE1BQU10SSxVQUFVK0gsT0FBT2tXLE1BQU0sR0FBR25kLEdBQUcsT0FBT0EsRUFBL0csQ0FBa0hrRSxJQUFlLGlCQUFpQnBGLElBQVNpQixFQUFFQyxFQUFFMGYsUUFBUTFmLEVBQUUwZixPQUFPdGMsSUFBSXFpRCxFQUFFUyxnQkFBZ0JwbkQsR0FBR3dsRCxFQUFFbUIsRUFBRU0sY0FBY2puRCxHQUFHLElBQUlncUQsR0FBR3JELEVBQUVVLHFCQUFxQnJuRCxHQUFHK1csRUFBRTNSLE9BQUUsT0FBTyxFQUFPbEUsR0FBRzZWLEdBQUdBLEVBQUVvOUMsTUFBTXp2RCxFQUFFK2dELEVBQUV1SCxHQUFHOXJELEVBQUVxNEIsU0FBUyxhQUFhdjVCLElBQUksSUFBSWdxRCxHQUFHaHFELEVBQUUrVyxFQUFFM1IsT0FBRSxPQUFPLEVBQU9sRSxHQUFHc3lELEdBQUcvTixFQUFFMXVDLEVBQUU3VixFQUFFa0UsRUFBRXBGLElBQVF3bEQsRUFBRWdPLEdBQUd4ekQsRUFBRStXLEVBQUU3VixFQUFFa0UsR0FBRyxPQUFPc0QsTUFBTUMsUUFBUTY4QyxHQUFHQSxFQUFFOWdELEVBQUU4Z0QsSUFBSTlnRCxFQUFFekQsSUFBSSxTQUFTQyxFQUFFbEIsRUFBRTJELEVBQUVvVCxHQUFtRCxHQUFoRC9XLEVBQUVzRSxHQUFHWCxFQUFFLGtCQUFrQjNELEVBQUUyVSxNQUFNaFIsT0FBRSxFQUFPb1QsR0FBRSxHQUFPclMsRUFBRTFFLEVBQUV5VSxVQUFVLElBQUksSUFBSXJQLEVBQUUsRUFBRTVCLEVBQUV4RCxFQUFFeVUsU0FBU3ZVLE9BQU9rRixFQUFFNUIsRUFBRTRCLElBQUksQ0FBQyxJQUFJb2dELEVBQUV4bEQsRUFBRXlVLFNBQVNyUCxHQUFHVixFQUFFOGdELEVBQUU3d0MsT0FBT3hRLEVBQUVxaEQsRUFBRWxoRCxLQUFLUCxFQUFFZ1QsSUFBSSxRQUFReXVDLEVBQUU3d0MsTUFBTXpULEVBQUVza0QsRUFBRTdoRCxFQUFFb1QsSUFBaE0sQ0FBcU15dUMsRUFBRXZrRCxHQUFHeUQsRUFBRXFTLElBQUksU0FBUzdWLEdBQUd5QyxFQUFFekMsRUFBRThQLFFBQVEwOUMsR0FBR3h0RCxFQUFFOFAsT0FBT3JOLEVBQUV6QyxFQUFFaUYsUUFBUXVvRCxHQUFHeHRELEVBQUVpRixPQUFyRCxDQUE2RDRRLEdBQUd5dUMsR0FBR3NGLEtBQWg1QixDQUFzNUI1cEQsRUFBRTZWLEVBQUUzUixFQUFFNUIsRUFBRWdpRCxHQUFHLElBQUk0TyxHQUFHVixHQUFHLEtBQUssU0FBU0csR0FBRzN5RCxFQUFFaUQsR0FBRyxPQUFPakQsRUFBRW1ELFlBQVlRLElBQUksV0FBVzNELEVBQUU4QyxPQUFPQyxnQkFBZ0IvQyxFQUFFQSxFQUFFMmUsU0FBU2xjLEVBQUV6QyxHQUFHaUQsRUFBRXNiLE9BQU92ZSxHQUFHQSxFQUFFLFNBQVNtekQsR0FBR256RCxHQUFHLE9BQU9BLEVBQUVxcEQsV0FBV3JwRCxFQUFFd3BELGFBQWEsU0FBUzRKLEdBQUdwekQsR0FBRyxHQUFHd0gsTUFBTUMsUUFBUXpILEdBQUcsSUFBSSxJQUFJaUQsRUFBRSxFQUFFQSxFQUFFakQsRUFBRWhCLE9BQU9pRSxJQUFJLENBQUMsSUFBSUosRUFBRTdDLEVBQUVpRCxHQUFHLEdBQUdPLEVBQUVYLEtBQUtXLEVBQUVYLEVBQUVzbUQsbUJBQW1CZ0ssR0FBR3R3RCxJQUFJLE9BQU9BLEdBQUcsU0FBU3d3RCxHQUFHcnpELEVBQUVpRCxHQUFHaXdELEdBQUc5bEIsSUFBSXB0QyxFQUFFaUQsR0FBRyxTQUFTcXdELEdBQUd0ekQsRUFBRWlELEdBQUdpd0QsR0FBR0ssS0FBS3Z6RCxFQUFFaUQsR0FBRyxTQUFTdXdELEdBQUd4ekQsRUFBRWlELEdBQUcsSUFBSU8sRUFBRTB2RCxHQUFHLE9BQU8sU0FBU3J3RCxJQUFJLE9BQU9JLEVBQUVrYSxNQUFNLEtBQUt2VyxZQUFZcEQsRUFBRSt2RCxLQUFLdnpELEVBQUU2QyxJQUFJLFNBQVNndkQsR0FBRzd4RCxFQUFFaUQsRUFBRU8sR0FBRzB2RCxHQUFHbHpELEVBQUU4dEQsR0FBRzdxRCxFQUFFTyxHQUFHLEdBQUc2dkQsR0FBR0MsR0FBR0UsR0FBR3h6RCxHQUFHa3pELFFBQUcsRUFBTyxJQUFJNUIsR0FBRyxLQUFLLFNBQVNtQyxHQUFHenpELEdBQUcsSUFBSWlELEVBQUVxdUQsR0FBRyxPQUFPQSxHQUFHdHhELEVBQUUsV0FBV3N4RCxHQUFHcnVELEdBQUcsU0FBU2t2RCxHQUFHbnlELEdBQUcsS0FBS0EsSUFBSUEsRUFBRUEsRUFBRThmLFVBQVUsR0FBRzlmLEVBQUU2ZixVQUFVLE9BQU0sRUFBRyxPQUFNLEVBQUcsU0FBU295QyxHQUFHanlELEVBQUVpRCxHQUFHLEdBQUdBLEdBQUcsR0FBR2pELEVBQUU0ZixpQkFBZ0IsRUFBR3V5QyxHQUFHbnlELEdBQUcsWUFBWSxHQUFHQSxFQUFFNGYsZ0JBQWdCLE9BQU8sR0FBRzVmLEVBQUU2ZixXQUFXLE9BQU83ZixFQUFFNmYsVUFBVSxDQUFDN2YsRUFBRTZmLFdBQVUsRUFBRyxJQUFJLElBQUlyYyxFQUFFLEVBQUVBLEVBQUV4RCxFQUFFb3lELFVBQVVwekQsT0FBT3dFLElBQUl5dUQsR0FBR2p5RCxFQUFFb3lELFVBQVU1dUQsSUFBSXd1RCxHQUFHaHlELEVBQUUsY0FBYyxTQUFTZ3lELEdBQUdoeUQsRUFBRWlELEdBQUcybEQsS0FBSyxJQUFJcGxELEVBQUV4RCxFQUFFcTRCLFNBQVNwMUIsR0FBR0osRUFBRUksRUFBRSxRQUFRLEdBQUdPLEVBQUUsSUFBSSxJQUFJMUUsRUFBRSxFQUFFMkQsRUFBRWUsRUFBRXhFLE9BQU9GLEVBQUUyRCxFQUFFM0QsSUFBSTB0RCxHQUFHaHBELEVBQUUxRSxHQUFHa0IsRUFBRSxLQUFLQSxFQUFFNkMsR0FBRzdDLEVBQUUwekQsZUFBZTF6RCxFQUFFdUYsTUFBTSxRQUFRdEMsR0FBRzRsRCxLQUFLLElBQUk4SyxHQUFHLEdBQUdycUIsR0FBRyxHQUFHc3FCLEdBQUcsR0FBR0MsSUFBRyxFQUFHQyxJQUFHLEVBQUdyMkMsR0FBRyxFQUFNczJDLEdBQUcsRUFBRUMsR0FBRzFtQyxLQUFLRCxJQUFJLEdBQUdzNUIsSUFBSU0sRUFBRSxDQUFDLElBQUlnTixHQUFHbHdELE9BQU9vRixZQUFZOHFELElBQUksbUJBQW1CQSxHQUFHNW1DLEtBQUsybUMsS0FBS3Z6RCxTQUFTeXpELFlBQVksU0FBU0MsWUFBWUgsR0FBRyxXQUFXLE9BQU9DLEdBQUc1bUMsUUFBUSxTQUFTK21DLEtBQUssSUFBSXAwRCxFQUFFaUQsRUFBRSxJQUFJOHdELEdBQUdDLEtBQUtGLElBQUcsRUFBR0gsR0FBR251QixNQUFLLFNBQVN4bEMsRUFBRWlELEdBQUcsT0FBT2pELEVBQUV3USxHQUFHdk4sRUFBRXVOLE1BQUtpTixHQUFHLEVBQUVBLEdBQUdrMkMsR0FBRzMwRCxPQUFPeWUsTUFBTXpkLEVBQUUyekQsR0FBR2wyQyxLQUFLNDJDLFFBQVFyMEQsRUFBRXEwRCxTQUFTcHhELEVBQUVqRCxFQUFFd1EsR0FBR29qRCxHQUFHM3dELEdBQUcsS0FBS2pELEVBQUU2YyxNQUFNLElBQUlyWixFQUFFOGxDLEdBQUdybEMsUUFBUXBCLEVBQUU4d0QsR0FBRzF2RCxRQUFRd1osR0FBR2syQyxHQUFHMzBELE9BQU9zcUMsR0FBR3RxQyxPQUFPLEVBQUU0MEQsR0FBRyxHQUFHQyxHQUFHQyxJQUFHLEVBQUcsU0FBUzl6RCxHQUFHLElBQUksSUFBSWlELEVBQUUsRUFBRUEsRUFBRWpELEVBQUVoQixPQUFPaUUsSUFBSWpELEVBQUVpRCxHQUFHNGMsV0FBVSxFQUFHb3lDLEdBQUdqeUQsRUFBRWlELElBQUcsR0FBakUsQ0FBc0VPLEdBQUcsU0FBU3hELEdBQWtCLElBQWYsSUFBSWlELEVBQUVqRCxFQUFFaEIsT0FBWWlFLEtBQUssQ0FBQyxJQUFJTyxFQUFFeEQsRUFBRWlELEdBQUdKLEVBQUVXLEVBQUUrYyxHQUFHMWQsRUFBRXl4RCxXQUFXOXdELEdBQUdYLEVBQUVrdkQsYUFBYWx2RCxFQUFFcXVELGNBQWNjLEdBQUdudkQsRUFBRSxZQUE1RyxDQUF5SEEsR0FBRzhrRCxJQUFJbEMsRUFBRUMsVUFBVWlDLEdBQUc1NkMsS0FBSyxTQUFTLElBQUl3bkQsR0FBRyxFQUFFOW5ELEdBQUcsU0FBU3pNLEVBQUVpRCxFQUFFTyxFQUFFWCxFQUFFL0QsR0FBRzJGLEtBQUs4YixHQUFHdmdCLEVBQUVsQixJQUFJa0IsRUFBRXMwRCxTQUFTN3ZELE1BQU16RSxFQUFFdzBELFVBQVVsMUQsS0FBS21GLE1BQU01QixHQUFHNEIsS0FBS3lnQyxPQUFPcmlDLEVBQUVxaUMsS0FBS3pnQyxLQUFLbXNDLE9BQU8vdEMsRUFBRSt0QyxLQUFLbnNDLEtBQUtnd0QsT0FBTzV4RCxFQUFFNHhELEtBQUtod0QsS0FBS3czQixPQUFPcDVCLEVBQUVvNUIsS0FBS3gzQixLQUFLNHZELE9BQU94eEQsRUFBRXd4RCxRQUFRNXZELEtBQUt5Z0MsS0FBS3pnQyxLQUFLbXNDLEtBQUtuc0MsS0FBS2d3RCxLQUFLaHdELEtBQUt3M0IsTUFBSyxFQUFHeDNCLEtBQUsrckIsR0FBR2h0QixFQUFFaUIsS0FBSytMLEtBQUsrakQsR0FBRzl2RCxLQUFLaXdELFFBQU8sRUFBR2p3RCxLQUFLa3dELE1BQU1sd0QsS0FBS2d3RCxLQUFLaHdELEtBQUttd0QsS0FBSyxHQUFHbndELEtBQUtvd0QsUUFBUSxHQUFHcHdELEtBQUtxd0QsT0FBTyxJQUFJak4sR0FBR3BqRCxLQUFLc3dELFVBQVUsSUFBSWxOLEdBQUdwakQsS0FBSyt4QyxXQUFXLEdBQUcsbUJBQW1CdnpDLEVBQUV3QixLQUFLakMsT0FBT1MsR0FBR3dCLEtBQUtqQyxPQUFPLFNBQVN4QyxHQUFHLElBQUl5bUQsRUFBRTVnRCxLQUFLN0YsR0FBRyxDQUFDLElBQUlpRCxFQUFFakQsRUFBRXlYLE1BQU0sS0FBSyxPQUFPLFNBQVN6WCxHQUFHLElBQUksSUFBSXdELEVBQUUsRUFBRUEsRUFBRVAsRUFBRWpFLE9BQU93RSxJQUFJLENBQUMsSUFBSXhELEVBQUUsT0FBT0EsRUFBRUEsRUFBRWlELEVBQUVPLElBQUksT0FBT3hELElBQTNILENBQWdJaUQsR0FBR3dCLEtBQUtqQyxTQUFTaUMsS0FBS2pDLE9BQU93aUQsSUFBSXZnRCxLQUFLekIsTUFBTXlCLEtBQUtnd0QsVUFBSyxFQUFPaHdELEtBQUs3QixPQUFPNkosR0FBR3ZOLFVBQVUwRCxJQUFJLFdBQVcsSUFBSTVDLEVBQUU0b0QsR0FBR25rRCxNQUFNLElBQUl4QixFQUFFd0IsS0FBSzhiLEdBQUcsSUFBSXZnQixFQUFFeUUsS0FBS2pDLE9BQU9wRCxLQUFLNkQsRUFBRUEsR0FBRyxNQUFNakQsR0FBRyxJQUFJeUUsS0FBS21zQyxLQUFLLE1BQU01d0MsRUFBRXFzRCxHQUFHcnNELEVBQUVpRCxFQUFFLHVCQUF1QndCLEtBQUsreEMsV0FBVyxLQUFLLFFBQVEveEMsS0FBS3lnQyxNQUFNc29CLEdBQUd4dEQsR0FBRzZvRCxLQUFLcGtELEtBQUt1d0QsY0FBYyxPQUFPaDFELEdBQUd5TSxHQUFHdk4sVUFBVXVwRCxPQUFPLFNBQVN6b0QsR0FBRyxJQUFJaUQsRUFBRWpELEVBQUV3USxHQUFHL0wsS0FBS3N3RCxVQUFVL00sSUFBSS9rRCxLQUFLd0IsS0FBS3N3RCxVQUFVcmEsSUFBSXozQyxHQUFHd0IsS0FBS293RCxRQUFRdjFELEtBQUtVLEdBQUd5RSxLQUFLcXdELE9BQU85TSxJQUFJL2tELElBQUlqRCxFQUFFc29ELE9BQU83akQsUUFBUWdJLEdBQUd2TixVQUFVODFELFlBQVksV0FBVyxJQUFJLElBQUloMUQsRUFBRXlFLEtBQUttd0QsS0FBSzUxRCxPQUFPZ0IsS0FBSyxDQUFDLElBQUlpRCxFQUFFd0IsS0FBS213RCxLQUFLNTBELEdBQUd5RSxLQUFLc3dELFVBQVUvTSxJQUFJL2tELEVBQUV1TixLQUFLdk4sRUFBRXNsRCxVQUFVOWpELE1BQU0sSUFBSWpCLEVBQUVpQixLQUFLcXdELE9BQU9yd0QsS0FBS3F3RCxPQUFPcndELEtBQUtzd0QsVUFBVXR3RCxLQUFLc3dELFVBQVV2eEQsRUFBRWlCLEtBQUtzd0QsVUFBVTlNLFFBQVF6a0QsRUFBRWlCLEtBQUttd0QsS0FBS253RCxLQUFLbXdELEtBQUtud0QsS0FBS293RCxRQUFRcHdELEtBQUtvd0QsUUFBUXJ4RCxFQUFFaUIsS0FBS293RCxRQUFRNzFELE9BQU8sR0FBR3lOLEdBQUd2TixVQUFVOCtCLE9BQU8sV0FBV3Y1QixLQUFLZ3dELEtBQUtod0QsS0FBS2t3RCxPQUFNLEVBQUdsd0QsS0FBS3czQixLQUFLeDNCLEtBQUtvWSxNQUFNLFNBQVM3YyxHQUFHLElBQUlpRCxFQUFFakQsRUFBRXdRLEdBQUcsR0FBRyxNQUFNb2pELEdBQUczd0QsR0FBRyxDQUFDLEdBQUcyd0QsR0FBRzN3RCxJQUFHLEVBQUc2d0QsR0FBRyxDQUFDLElBQUksSUFBSXR3RCxFQUFFbXdELEdBQUczMEQsT0FBTyxFQUFFd0UsRUFBRWlhLElBQUlrMkMsR0FBR253RCxHQUFHZ04sR0FBR3hRLEVBQUV3USxJQUFJaE4sSUFBSW13RCxHQUFHbm5DLE9BQU9ocEIsRUFBRSxFQUFFLEVBQUV4RCxRQUFRMnpELEdBQUdyMEQsS0FBS1UsR0FBRzZ6RCxLQUFLQSxJQUFHLEVBQUd2RyxHQUFHOEcsTUFBdkosQ0FBOEozdkQsT0FBT2dJLEdBQUd2TixVQUFVMmQsSUFBSSxXQUFXLEdBQUdwWSxLQUFLaXdELE9BQU8sQ0FBQyxJQUFJMTBELEVBQUV5RSxLQUFLN0IsTUFBTSxHQUFHNUMsSUFBSXlFLEtBQUt6QixPQUFPUCxFQUFFekMsSUFBSXlFLEtBQUt5Z0MsS0FBSyxDQUFDLElBQUlqaUMsRUFBRXdCLEtBQUt6QixNQUFNLEdBQUd5QixLQUFLekIsTUFBTWhELEVBQUV5RSxLQUFLbXNDLEtBQUssSUFBSW5zQyxLQUFLK3JCLEdBQUdweEIsS0FBS3FGLEtBQUs4YixHQUFHdmdCLEVBQUVpRCxHQUFHLE1BQU1qRCxHQUFHcXNELEdBQUdyc0QsRUFBRXlFLEtBQUs4YixHQUFHLHlCQUF5QjliLEtBQUsreEMsV0FBVyxVQUFVL3hDLEtBQUsrckIsR0FBR3B4QixLQUFLcUYsS0FBSzhiLEdBQUd2Z0IsRUFBRWlELE1BQU13SixHQUFHdk4sVUFBVSsxRCxTQUFTLFdBQVd4d0QsS0FBS3pCLE1BQU15QixLQUFLN0IsTUFBTTZCLEtBQUtrd0QsT0FBTSxHQUFJbG9ELEdBQUd2TixVQUFVc3BELE9BQU8sV0FBVyxJQUFJLElBQUl4b0QsRUFBRXlFLEtBQUttd0QsS0FBSzUxRCxPQUFPZ0IsS0FBS3lFLEtBQUttd0QsS0FBSzUwRCxHQUFHd29ELFVBQVUvN0MsR0FBR3ZOLFVBQVVnMkQsU0FBUyxXQUFXLEdBQUd6d0QsS0FBS2l3RCxPQUFPLENBQUNqd0QsS0FBSzhiLEdBQUdxVSxtQkFBbUIzVixFQUFFeGEsS0FBSzhiLEdBQUdpMEMsVUFBVS92RCxNQUFNLElBQUksSUFBSXpFLEVBQUV5RSxLQUFLbXdELEtBQUs1MUQsT0FBT2dCLEtBQUt5RSxLQUFLbXdELEtBQUs1MEQsR0FBR3VvRCxVQUFVOWpELE1BQU1BLEtBQUtpd0QsUUFBTyxJQUFLLElBQUlTLEdBQUcsQ0FBQ3h5RCxZQUFXLEVBQUc2RCxjQUFhLEVBQUc1RCxJQUFJb2lELEVBQUV2ZixJQUFJdWYsR0FBRyxTQUFTb1EsR0FBR3AxRCxFQUFFaUQsRUFBRU8sR0FBRzJ4RCxHQUFHdnlELElBQUksV0FBVyxPQUFPNkIsS0FBS3hCLEdBQUdPLElBQUkyeEQsR0FBRzF2QixJQUFJLFNBQVN6bEMsR0FBR3lFLEtBQUt4QixHQUFHTyxHQUFHeEQsR0FBR2YsT0FBT3lELGVBQWUxQyxFQUFFd0QsRUFBRTJ4RCxJQUF1bkMsSUFBSUUsR0FBRyxDQUFDWixNQUFLLEdBQUksU0FBU2EsR0FBR3QxRCxFQUFFaUQsRUFBRU8sR0FBRyxJQUFJWCxHQUFHcWxDLEtBQUssbUJBQW1CMWtDLEdBQUcyeEQsR0FBR3Z5RCxJQUFJQyxFQUFFMHlELEdBQUd0eUQsR0FBR3V5RCxHQUFHaHlELEdBQUcyeEQsR0FBRzF2QixJQUFJdWYsSUFBSW1RLEdBQUd2eUQsSUFBSVksRUFBRVosSUFBSUMsSUFBRyxJQUFLVyxFQUFFNGIsTUFBTW0yQyxHQUFHdHlELEdBQUd1eUQsR0FBR2h5RCxFQUFFWixLQUFLb2lELEVBQUVtUSxHQUFHMXZCLElBQUlqaUMsRUFBRWlpQyxLQUFLdWYsR0FBRy9sRCxPQUFPeUQsZUFBZTFDLEVBQUVpRCxFQUFFa3lELElBQUksU0FBU0ksR0FBR3YxRCxHQUFHLE9BQU8sV0FBVyxJQUFJaUQsRUFBRXdCLEtBQUtneEQsbUJBQW1CaHhELEtBQUtneEQsa0JBQWtCejFELEdBQUcsR0FBR2lELEVBQUUsT0FBT0EsRUFBRTB4RCxPQUFPMXhELEVBQUVneUQsV0FBVzdNLEdBQUd4bUQsUUFBUXFCLEVBQUV1bEQsU0FBU3ZsRCxFQUFFRCxPQUFPLFNBQVN3eUQsR0FBR3gxRCxHQUFHLE9BQU8sV0FBVyxPQUFPQSxFQUFFWixLQUFLcUYsS0FBS0EsT0FBTyxTQUFTbUQsR0FBRzVILEVBQUVpRCxFQUFFTyxFQUFFWCxHQUFHLE9BQU9xQixFQUFFVixLQUFLWCxFQUFFVyxFQUFFQSxFQUFFQSxFQUFFaW1CLFNBQVMsaUJBQWlCam1CLElBQUlBLEVBQUV4RCxFQUFFd0QsSUFBSXhELEVBQUVnbEMsT0FBTy9oQyxFQUFFTyxFQUFFWCxHQUFHLElBQUk2eUQsR0FBRyxFQUFFLFNBQVMvMUIsR0FBRzMvQixHQUFHLElBQUlpRCxFQUFFakQsRUFBRW9FLFFBQVEsR0FBR3BFLEVBQUUyMUQsTUFBTSxDQUFDLElBQUlueUQsRUFBRW04QixHQUFHMy9CLEVBQUUyMUQsT0FBTyxHQUFHbnlELElBQUl4RCxFQUFFNDFELGFBQWEsQ0FBQzUxRCxFQUFFNDFELGFBQWFweUQsRUFBRSxJQUFJWCxFQUFFLFNBQVM3QyxHQUFHLElBQUlpRCxFQUFFTyxFQUFFeEQsRUFBRW9FLFFBQVF2QixFQUFFN0MsRUFBRTYxRCxjQUFjLElBQUksSUFBSS8yRCxLQUFLMEUsRUFBRUEsRUFBRTFFLEtBQUsrRCxFQUFFL0QsS0FBS21FLElBQUlBLEVBQUUsSUFBSUEsRUFBRW5FLEdBQUcwRSxFQUFFMUUsSUFBSSxPQUFPbUUsRUFBekcsQ0FBNEdqRCxHQUFHNkMsR0FBR2lpRCxFQUFFOWtELEVBQUU4MUQsY0FBY2p6RCxJQUFJSSxFQUFFakQsRUFBRW9FLFFBQVFzbkQsR0FBR2xvRCxFQUFFeEQsRUFBRTgxRCxnQkFBZ0JoMEQsT0FBT21CLEVBQUVvZCxXQUFXcGQsRUFBRW5CLE1BQU05QixJQUFJLE9BQU9pRCxFQUFFLFNBQVM4eUQsR0FBRy8xRCxHQUFHeUUsS0FBS3V4RCxNQUFNaDJELEdBQTJxQixTQUFTaTJELEdBQUdqMkQsR0FBRyxPQUFPQSxJQUFJQSxFQUFFcXhELEtBQUtqdEQsUUFBUXRDLE1BQU05QixFQUFFeVQsS0FBSyxTQUFTeWlELEdBQUdsMkQsRUFBRWlELEdBQUcsT0FBT3VFLE1BQU1DLFFBQVF6SCxHQUFHQSxFQUFFOEosUUFBUTdHLElBQUksRUFBRSxpQkFBaUJqRCxFQUFFQSxFQUFFeVgsTUFBTSxLQUFLM04sUUFBUTdHLElBQUksR0FBR08sRUFBRXhELEVBQUUsb0JBQW9CNlYsRUFBRXpXLEtBQUtvRSxJQUFJeEQsRUFBRTZGLEtBQUs1QyxJQUFJLElBQUlPLEVBQUUsU0FBUzJ5RCxHQUFHbjJELEVBQUVpRCxHQUFHLElBQUlPLEVBQUV4RCxFQUFFb2YsTUFBTXZjLEVBQUU3QyxFQUFFK0csS0FBS2pJLEVBQUVrQixFQUFFd3hELE9BQU8sSUFBSSxJQUFJL3VELEtBQUtlLEVBQUUsQ0FBQyxJQUFJcVMsRUFBRXJTLEVBQUVmLEdBQUcsR0FBR29ULEVBQUUsQ0FBQyxJQUFJM1IsRUFBRSt4RCxHQUFHcGdELEVBQUVzekMsa0JBQWtCamxELElBQUlqQixFQUFFaUIsSUFBSWt5RCxHQUFHNXlELEVBQUVmLEVBQUVJLEVBQUUvRCxLQUFLLFNBQVNzM0QsR0FBR3AyRCxFQUFFaUQsRUFBRU8sRUFBRVgsR0FBRyxJQUFJL0QsRUFBRWtCLEVBQUVpRCxJQUFJbkUsR0FBRytELEdBQUcvRCxFQUFFMlUsTUFBTTVRLEVBQUU0USxLQUFLM1UsRUFBRStoQixrQkFBa0Jpa0IsV0FBVzlrQyxFQUFFaUQsR0FBRyxLQUFLZ2MsRUFBRXpiLEVBQUVQLElBQUksU0FBU0EsR0FBR0EsRUFBRS9ELFVBQVU4MkQsTUFBTSxTQUFTL3lELEdBQUcsSUFBSU8sRUFBRWlCLEtBQUtqQixFQUFFNnlELEtBQUtYLEtBQUtseUQsRUFBRW9uRCxRQUFPLEVBQUczbkQsR0FBR0EsRUFBRWt1RCxhQUFhLFNBQVNueEQsRUFBRWlELEdBQUcsSUFBSU8sRUFBRXhELEVBQUVxNEIsU0FBU3A1QixPQUFPb0UsT0FBT3JELEVBQUVvRyxZQUFZaEMsU0FBU3ZCLEVBQUVJLEVBQUVxMUIsYUFBYTkwQixFQUFFdWIsT0FBTzliLEVBQUU4YixPQUFPdmIsRUFBRTgwQixhQUFhejFCLEVBQUUsSUFBSS9ELEVBQUUrRCxFQUFFc21ELGlCQUFpQjNsRCxFQUFFeW9ELFVBQVVudEQsRUFBRW10RCxVQUFVem9ELEVBQUVvdUQsaUJBQWlCOXlELEVBQUVtZixVQUFVemEsRUFBRSt0RCxnQkFBZ0J6eUQsRUFBRXlVLFNBQVMvUCxFQUFFOHlELGNBQWN4M0QsRUFBRTJVLElBQUl4USxFQUFFMmIsU0FBU3BiLEVBQUVvYixPQUFPM2IsRUFBRTJiLE9BQU9wYixFQUFFZ3NELGdCQUFnQnZzRCxFQUFFdXNELGlCQUE1UyxDQUE4VGhzRCxFQUFFUCxHQUFHTyxFQUFFNjBCLFNBQVNxekIsR0FBRy9yQixHQUFHbjhCLEVBQUU0QyxhQUFhbkQsR0FBRyxHQUFHTyxHQUFHQSxFQUFFaXNELGFBQWFqc0QsRUFBRUEsRUFBRXFCLE1BQU1yQixFQUFFLFNBQVN4RCxHQUFHLElBQUlpRCxFQUFFakQsRUFBRXE0QixTQUFTNzBCLEVBQUVQLEVBQUU4YixPQUFPLEdBQUd2YixJQUFJUCxFQUFFOE8sU0FBUyxDQUFDLEtBQUt2TyxFQUFFNjBCLFNBQVN0bUIsVUFBVXZPLEVBQUVzYyxTQUFTdGMsRUFBRUEsRUFBRXNjLFFBQVF0YyxFQUFFNHVELFVBQVU5eUQsS0FBS1UsR0FBR0EsRUFBRThmLFFBQVF0YyxFQUFFeEQsRUFBRW83QixNQUFNNTNCLEVBQUVBLEVBQUU0M0IsTUFBTXA3QixFQUFFQSxFQUFFb3lELFVBQVUsR0FBR3B5RCxFQUFFdTJELE1BQU0sR0FBR3YyRCxFQUFFczBELFNBQVMsS0FBS3QwRCxFQUFFNmYsVUFBVSxLQUFLN2YsRUFBRTRmLGlCQUFnQixFQUFHNWYsRUFBRSt4RCxZQUFXLEVBQUcveEQsRUFBRWt4RCxjQUFhLEVBQUdseEQsRUFBRTQwQixtQkFBa0IsRUFBdFMsQ0FBMFNweEIsR0FBRyxTQUFTeEQsR0FBR0EsRUFBRXcyRCxRQUFRdjNELE9BQU9vRSxPQUFPLE1BQU1yRCxFQUFFMHpELGVBQWMsRUFBRyxJQUFJendELEVBQUVqRCxFQUFFcTRCLFNBQVN1NUIsaUJBQWlCM3VELEdBQUc0dUQsR0FBRzd4RCxFQUFFaUQsR0FBdkcsQ0FBMkdPLEdBQUcsU0FBU1AsR0FBR0EsRUFBRXV1RCxPQUFPLEtBQUt2dUQsRUFBRXFzRCxhQUFhLEtBQUssSUFBSTlyRCxFQUFFUCxFQUFFbzFCLFNBQVN4MUIsRUFBRUksRUFBRXljLE9BQU9sYyxFQUFFODBCLGFBQWF4NUIsRUFBRStELEdBQUdBLEVBQUVxN0IsUUFBUWo3QixFQUFFa25CLE9BQU9va0MsR0FBRy9xRCxFQUFFK3RELGdCQUFnQnp5RCxHQUFHbUUsRUFBRTRtQixhQUFhN3BCLEVBQUVpRCxFQUFFMkIsR0FBRyxTQUFTNUUsRUFBRXdELEVBQUVYLEVBQUUvRCxHQUFHLE9BQU9neUQsR0FBRzd0RCxFQUFFakQsRUFBRXdELEVBQUVYLEVBQUUvRCxHQUFFLElBQUttRSxFQUFFMEIsZUFBZSxTQUFTM0UsRUFBRXdELEVBQUVYLEVBQUUvRCxHQUFHLE9BQU9neUQsR0FBRzd0RCxFQUFFakQsRUFBRXdELEVBQUVYLEVBQUUvRCxHQUFFLElBQUssSUFBSTJELEVBQUVJLEdBQUdBLEVBQUVwRSxLQUFLb3NELEdBQUc1bkQsRUFBRSxTQUFTUixHQUFHQSxFQUFFMEMsT0FBT25GLEVBQUUsTUFBSyxHQUFJNnFELEdBQUc1bkQsRUFBRSxhQUFhTyxFQUFFb3VELGtCQUFrQjV4RCxFQUFFLE1BQUssR0FBeFcsQ0FBNld3RCxHQUFHd3VELEdBQUd4dUQsRUFBRSxnQkFBZ0IsU0FBU3hELEdBQUcsSUFBSWlELEVBQUVvckQsR0FBR3J1RCxFQUFFcTRCLFNBQVNpekIsT0FBT3RyRCxHQUFHaUQsSUFBSXFuRCxJQUFHLEdBQUlyckQsT0FBTzhILEtBQUs5RCxHQUFHb0UsU0FBUSxTQUFTN0QsR0FBR3FuRCxHQUFHN3FELEVBQUV3RCxFQUFFUCxFQUFFTyxPQUFNOG1ELElBQUcsSUFBMUcsQ0FBZ0g5bUQsR0FBbDdJLFNBQVl4RCxHQUFHQSxFQUFFdzBELFVBQVUsR0FBRyxJQUFJdnhELEVBQUVqRCxFQUFFcTRCLFNBQVNwMUIsRUFBRXFELE9BQU8sU0FBU3RHLEVBQUVpRCxHQUFHLElBQUlPLEVBQUV4RCxFQUFFcTRCLFNBQVM0ekIsV0FBVyxHQUFHcHBELEVBQUU3QyxFQUFFa3NELE9BQU8sR0FBR3B0RCxFQUFFa0IsRUFBRXE0QixTQUFTczVCLFVBQVUsR0FBRzN4RCxFQUFFOGYsU0FBU3dxQyxJQUFHLEdBQUksSUFBSTduRCxFQUFFLFNBQVNBLEdBQUczRCxFQUFFUSxLQUFLbUQsR0FBRyxJQUFJb1QsRUFBRWsyQyxHQUFHdHBELEVBQUVRLEVBQUVPLEVBQUV4RCxHQUFHNnFELEdBQUdob0QsRUFBRUosRUFBRW9ULEdBQUdwVCxLQUFLekMsR0FBR28xRCxHQUFHcDFELEVBQUUsU0FBU3lDLElBQUksSUFBSSxJQUFJb1QsS0FBSzVTLEVBQUVSLEVBQUVvVCxHQUFHeTBDLElBQUcsR0FBaE4sQ0FBcU50cUQsRUFBRWlELEVBQUVxRCxPQUFPckQsRUFBRW9vRCxTQUFTLFNBQVNyckQsRUFBRWlELEdBQW9CLElBQUksSUFBSU8sS0FBekJ4RCxFQUFFcTRCLFNBQVMveEIsTUFBbUJyRCxFQUFFakQsRUFBRXdELEdBQUcsbUJBQW1CUCxFQUFFTyxHQUFHd2hELEVBQUV6MUMsRUFBRXRNLEVBQUVPLEdBQUd4RCxHQUFwRixDQUF3RkEsRUFBRWlELEVBQUVvb0QsU0FBU3BvRCxFQUFFeEUsS0FBSyxTQUFTdUIsR0FBRyxJQUFJaUQsRUFBRWpELEVBQUVxNEIsU0FBUzU1QixLQUFLeUYsRUFBRWpCLEVBQUVqRCxFQUFFNE4sTUFBTSxtQkFBbUIzSyxFQUFFLFNBQVNqRCxFQUFFaUQsR0FBRzJsRCxLQUFLLElBQUksT0FBTzVvRCxFQUFFWixLQUFLNkQsRUFBRUEsR0FBRyxNQUFNakQsR0FBRyxPQUFPcXNELEdBQUdyc0QsRUFBRWlELEVBQUUsVUFBVSxHQUFHLFFBQVE0bEQsTUFBdEYsQ0FBNkY1bEQsRUFBRWpELEdBQUdpRCxHQUFHLE1BQU1BLEVBQUUsSUFBNEUsSUFBeEUsSUFBK0s0UyxFQUEzS3JTLEVBQUV2RSxPQUFPOEgsS0FBSzlELEdBQUdKLEVBQUU3QyxFQUFFcTRCLFNBQVMveEIsTUFBTXhILEdBQUdrQixFQUFFcTRCLFNBQVNnekIsUUFBUTduRCxFQUFFeEUsUUFBYUYsS0FBSyxDQUFDLElBQUkyRCxFQUFFZSxFQUFFMUUsR0FBRytELEdBQUcyTSxFQUFFM00sRUFBRUosVUFBTyxFQUFPLE1BQU1vVCxHQUFHcFQsRUFBRSxJQUFJMGUsV0FBVyxLQUFLLEtBQUt0TCxHQUFHdS9DLEdBQUdwMUQsRUFBRSxRQUFReUMsSUFBVWlvRCxHQUFHem5ELEdBQUUsR0FBMVcsQ0FBK1dqRCxHQUFHMHFELEdBQUcxcUQsRUFBRTROLE1BQU0sSUFBRyxHQUFJM0ssRUFBRXNvRCxVQUFVLFNBQVN2ckQsRUFBRWlELEdBQUcsSUFBSU8sRUFBRXhELEVBQUV5MUQsa0JBQWtCeDJELE9BQU9vRSxPQUFPLE1BQU1SLEVBQUVxbEMsS0FBSyxJQUFJLElBQUlwcEMsS0FBS21FLEVBQUUsQ0FBQyxJQUFJUixFQUFFUSxFQUFFbkUsR0FBRytXLEVBQUUsbUJBQW1CcFQsRUFBRUEsRUFBRUEsRUFBRUcsSUFBSUMsSUFBSVcsRUFBRTFFLEdBQUcsSUFBSTJOLEdBQUd6TSxFQUFFNlYsR0FBR212QyxFQUFFQSxFQUFFcVEsS0FBS3YyRCxLQUFLa0IsR0FBR3MxRCxHQUFHdDFELEVBQUVsQixFQUFFMkQsSUFBMUssQ0FBK0t6QyxFQUFFaUQsRUFBRXNvRCxVQUFVdG9ELEVBQUVza0QsT0FBT3RrRCxFQUFFc2tELFFBQVFELElBQUcsU0FBU3RuRCxFQUFFaUQsR0FBRyxJQUFJLElBQUlPLEtBQUtQLEVBQUUsQ0FBQyxJQUFJSixFQUFFSSxFQUFFTyxHQUFHLEdBQUdnRSxNQUFNQyxRQUFRNUUsR0FBRyxJQUFJLElBQUkvRCxFQUFFLEVBQUVBLEVBQUUrRCxFQUFFN0QsT0FBT0YsSUFBSThJLEdBQUc1SCxFQUFFd0QsRUFBRVgsRUFBRS9ELFNBQVM4SSxHQUFHNUgsRUFBRXdELEVBQUVYLElBQWpILENBQXNIN0MsRUFBRWlELEVBQUVza0QsT0FBeTBHa1AsQ0FBR2p6RCxHQUFHLFNBQVN4RCxHQUFHLElBQUlpRCxFQUFFakQsRUFBRXE0QixTQUFTbXpCLFFBQVF2b0QsSUFBSWpELEVBQUVzdUQsVUFBVSxtQkFBbUJyckQsRUFBRUEsRUFBRTdELEtBQUtZLEdBQUdpRCxHQUFwRixDQUF3Rk8sR0FBR3d1RCxHQUFHeHVELEVBQUUsV0FBV0EsRUFBRTYwQixTQUFTMUksSUFBSW5zQixFQUFFNjVDLE9BQU83NUMsRUFBRTYwQixTQUFTMUksS0FBN2dELENBQW1oRG9tQyxJQUFJLFNBQVMvMUQsR0FBb0ZmLE9BQU95RCxlQUFlMUMsRUFBRWQsVUFBVSxRQUE3RyxDQUFDMEQsSUFBSSxXQUFXLE9BQU82QixLQUFLbUosU0FBNEYzTyxPQUFPeUQsZUFBZTFDLEVBQUVkLFVBQVUsU0FBcEgsQ0FBQzBELElBQUksV0FBVyxPQUFPNkIsS0FBS3luRCxVQUFvR2xzRCxFQUFFZCxVQUFVaW1DLEtBQUsybEIsR0FBRzlxRCxFQUFFZCxVQUFVdzNELFFBQVEzTCxHQUFHL3FELEVBQUVkLFVBQVU4bEMsT0FBTyxTQUFTaGxDLEVBQUVpRCxFQUFFTyxHQUFHLEdBQUdVLEVBQUVqQixHQUFHLE9BQU8yRSxHQUFHbkQsS0FBS3pFLEVBQUVpRCxFQUFFTyxJQUFJQSxFQUFFQSxHQUFHLElBQUlvdEMsTUFBSyxFQUFHLElBQUkvdEMsRUFBRSxJQUFJNEosR0FBR2hJLEtBQUt6RSxFQUFFaUQsRUFBRU8sR0FBRyxHQUFHQSxFQUFFNGhDLFVBQVUsSUFBSW5pQyxFQUFFN0QsS0FBS3FGLEtBQUs1QixFQUFFRyxPQUFPLE1BQU1oRCxHQUFHcXNELEdBQUdyc0QsRUFBRXlFLEtBQUssbUNBQW1DNUIsRUFBRTJ6QyxXQUFXLEtBQUssT0FBTyxXQUFXM3pDLEVBQUVxeUQsYUFBbmQsQ0FBaWVhLElBQUksU0FBUy8xRCxHQUFHLElBQUlpRCxFQUFFLFNBQVNqRCxFQUFFZCxVQUFVa3VDLElBQUksU0FBU3B0QyxFQUFFd0QsR0FBRyxJQUFJWCxFQUFFNEIsS0FBSyxHQUFHK0MsTUFBTUMsUUFBUXpILEdBQUcsSUFBSSxJQUFJbEIsRUFBRSxFQUFFMkQsRUFBRXpDLEVBQUVoQixPQUFPRixFQUFFMkQsRUFBRTNELElBQUkrRCxFQUFFdXFDLElBQUlwdEMsRUFBRWxCLEdBQUcwRSxRQUFRWCxFQUFFMnpELFFBQVF4MkQsS0FBSzZDLEVBQUUyekQsUUFBUXgyRCxHQUFHLEtBQUtWLEtBQUtrRSxHQUFHUCxFQUFFNEMsS0FBSzdGLEtBQUs2QyxFQUFFNndELGVBQWMsR0FBSSxPQUFPN3dELEdBQUc3QyxFQUFFZCxVQUFVZzRCLE1BQU0sU0FBU2wzQixFQUFFaUQsR0FBRyxJQUFJTyxFQUFFaUIsS0FBSyxTQUFTNUIsSUFBSVcsRUFBRSt2RCxLQUFLdnpELEVBQUU2QyxHQUFHSSxFQUFFa2EsTUFBTTNaLEVBQUVvRCxXQUFXLE9BQU8vRCxFQUFFNEosR0FBR3hKLEVBQUVPLEVBQUU0cEMsSUFBSXB0QyxFQUFFNkMsR0FBR1csR0FBR3hELEVBQUVkLFVBQVVxMEQsS0FBSyxTQUFTdnpELEVBQUVpRCxHQUFHLElBQUlPLEVBQUVpQixLQUFLLElBQUltQyxVQUFVNUgsT0FBTyxPQUFPd0UsRUFBRWd6RCxRQUFRdjNELE9BQU9vRSxPQUFPLE1BQU1HLEVBQUUsR0FBR2dFLE1BQU1DLFFBQVF6SCxHQUFHLENBQUMsSUFBSSxJQUFJNkMsRUFBRSxFQUFFL0QsRUFBRWtCLEVBQUVoQixPQUFPNkQsRUFBRS9ELEVBQUUrRCxJQUFJVyxFQUFFK3ZELEtBQUt2ekQsRUFBRTZDLEdBQUdJLEdBQUcsT0FBT08sRUFBRSxJQUFJZixFQUFFb1QsRUFBRXJTLEVBQUVnekQsUUFBUXgyRCxHQUFHLElBQUk2VixFQUFFLE9BQU9yUyxFQUFFLElBQUlQLEVBQUUsT0FBT08sRUFBRWd6RCxRQUFReDJELEdBQUcsS0FBS3dELEVBQUUsSUFBSSxJQUFJVSxFQUFFMlIsRUFBRTdXLE9BQU9rRixLQUFLLElBQUl6QixFQUFFb1QsRUFBRTNSLE1BQU1qQixHQUFHUixFQUFFZ0ssS0FBS3hKLEVBQUUsQ0FBQzRTLEVBQUUyVyxPQUFPdG9CLEVBQUUsR0FBRyxNQUFNLE9BQU9WLEdBQUd4RCxFQUFFZCxVQUFVcUcsTUFBTSxTQUFTdkYsR0FBRyxJQUFJaUQsRUFBRXdCLEtBQUsreEQsUUFBUXgyRCxHQUFHLEdBQUdpRCxFQUFFLENBQUNBLEVBQUVBLEVBQUVqRSxPQUFPLEVBQUU2bEQsRUFBRTVoRCxHQUFHQSxFQUFFLElBQUksSUFBSU8sRUFBRXFoRCxFQUFFaitDLFVBQVUsR0FBRy9ELEVBQUUsc0JBQXNCN0MsRUFBRSxJQUFJbEIsRUFBRSxFQUFFMkQsRUFBRVEsRUFBRWpFLE9BQU9GLEVBQUUyRCxFQUFFM0QsSUFBSTB0RCxHQUFHdnBELEVBQUVuRSxHQUFHMkYsS0FBS2pCLEVBQUVpQixLQUFLNUIsR0FBRyxPQUFPNEIsTUFBcDFCLENBQTIxQnN4RCxJQUFJLFNBQVMvMUQsR0FBR0EsRUFBRWQsVUFBVXkzRCxRQUFRLFNBQVMzMkQsRUFBRWlELEdBQUcsSUFBSU8sRUFBRWlCLEtBQUs1QixFQUFFVyxFQUFFb3pELElBQUk5M0QsRUFBRTBFLEVBQUVndUQsT0FBTy91RCxFQUFFZ3hELEdBQUdqd0QsR0FBR0EsRUFBRWd1RCxPQUFPeHhELEVBQUV3RCxFQUFFb3pELElBQUk5M0QsRUFBRTBFLEVBQUVxekQsVUFBVS8zRCxFQUFFa0IsR0FBR3dELEVBQUVxekQsVUFBVXJ6RCxFQUFFb3pELElBQUk1MkQsRUFBRWlELEdBQUUsR0FBSVIsSUFBSUksSUFBSUEsRUFBRWkwRCxRQUFRLE1BQU10ekQsRUFBRW96RCxNQUFNcHpELEVBQUVvekQsSUFBSUUsUUFBUXR6RCxHQUFHQSxFQUFFa2MsUUFBUWxjLEVBQUVzYyxTQUFTdGMsRUFBRWtjLFNBQVNsYyxFQUFFc2MsUUFBUTB4QyxTQUFTaHVELEVBQUVzYyxRQUFRODJDLElBQUlwekQsRUFBRW96RCxNQUFNNTJELEVBQUVkLFVBQVUrbEMsYUFBYSxXQUFXeGdDLEtBQUs2dkQsVUFBVTd2RCxLQUFLNnZELFNBQVN0MkIsVUFBVWgrQixFQUFFZCxVQUFVNGxDLFNBQVMsV0FBVyxJQUFJOWtDLEVBQUV5RSxLQUFLLElBQUl6RSxFQUFFNDBCLGtCQUFrQixDQUFDbzlCLEdBQUdoeUQsRUFBRSxpQkFBaUJBLEVBQUU0MEIsbUJBQWtCLEVBQUcsSUFBSTN4QixFQUFFakQsRUFBRThmLFNBQVM3YyxHQUFHQSxFQUFFMnhCLG1CQUFtQjUwQixFQUFFcTRCLFNBQVN0bUIsVUFBVWtOLEVBQUVoYyxFQUFFbXZELFVBQVVweUQsR0FBR0EsRUFBRXMwRCxVQUFVdDBELEVBQUVzMEQsU0FBU1ksV0FBVyxJQUFJLElBQUkxeEQsRUFBRXhELEVBQUV3MEQsVUFBVXgxRCxPQUFPd0UsS0FBS3hELEVBQUV3MEQsVUFBVWh4RCxHQUFHMHhELFdBQVdsMUQsRUFBRTROLE1BQU1xOEMsUUFBUWpxRCxFQUFFNE4sTUFBTXE4QyxPQUFPTyxVQUFVeHFELEVBQUVreEQsY0FBYSxFQUFHbHhELEVBQUU2MkQsVUFBVTcyRCxFQUFFd3hELE9BQU8sTUFBTVEsR0FBR2h5RCxFQUFFLGFBQWFBLEVBQUV1ekQsT0FBT3Z6RCxFQUFFNDJELE1BQU01MkQsRUFBRTQyRCxJQUFJRSxRQUFRLE1BQU05MkQsRUFBRTBmLFNBQVMxZixFQUFFMGYsT0FBT1gsT0FBTyxRQUE3eEIsQ0FBc3lCZzNDLElBQUksU0FBUy8xRCxHQUFHK3ZELEdBQUcvdkQsRUFBRWQsV0FBV2MsRUFBRWQsVUFBVTB2QixVQUFVLFNBQVM1dUIsR0FBRyxPQUFPc3RELEdBQUd0dEQsRUFBRXlFLE9BQU96RSxFQUFFZCxVQUFVOG1DLFFBQVEsV0FBVyxJQUFJaG1DLEVBQUVpRCxFQUFFd0IsS0FBS2pCLEVBQUVQLEVBQUVvMUIsU0FBU3gxQixFQUFFVyxFQUFFb2IsT0FBTzlmLEVBQUUwRSxFQUFFODBCLGFBQWF4NUIsSUFBSW1FLEVBQUU0bUIsYUFBYTRrQyxHQUFHM3ZELEVBQUVMLEtBQUtzL0IsWUFBWTk2QixFQUFFa25CLE9BQU9sbkIsRUFBRTRtQixlQUFlNW1CLEVBQUV5YyxPQUFPNWdCLEVBQUUsSUFBSTB6RCxHQUFHdnZELEVBQUVqRCxFQUFFNkMsRUFBRXpELEtBQUs2RCxFQUFFd3NELGFBQWF4c0QsRUFBRTBCLGdCQUFnQixNQUFNbkIsR0FBRzZvRCxHQUFHN29ELEVBQUVQLEVBQUUsVUFBVWpELEVBQUVpRCxFQUFFdXVELE9BQU8sUUFBUWdCLEdBQUcsS0FBSyxPQUFPaHJELE1BQU1DLFFBQVF6SCxJQUFJLElBQUlBLEVBQUVoQixTQUFTZ0IsRUFBRUEsRUFBRSxJQUFJQSxhQUFhOG9ELEtBQUs5b0QsRUFBRTRwRCxNQUFNNXBELEVBQUUrZSxPQUFPamdCLEVBQUVrQixHQUFqYixDQUFxYisxRCxJQUFJLElBQUlnQixHQUFHLENBQUNyNEMsT0FBT3hGLE9BQU8xUixPQUFPd3ZELEdBQUcsQ0FBQ0MsVUFBVSxDQUFDbjFELEtBQUssYUFBYWlRLFVBQVMsRUFBR3pMLE1BQU0sQ0FBQzR3RCxRQUFRSCxHQUFHSSxRQUFRSixHQUFHaGpDLElBQUksQ0FBQ3JWLE9BQU9nZixTQUFTeEUsUUFBUSxXQUFXejBCLEtBQUsyYSxNQUFNbmdCLE9BQU9vRSxPQUFPLE1BQU1vQixLQUFLc0MsS0FBSyxJQUFJNnhCLFVBQVUsV0FBVyxJQUFJLElBQUk1NEIsS0FBS3lFLEtBQUsyYSxNQUFNZzNDLEdBQUczeEQsS0FBSzJhLE1BQU1wZixFQUFFeUUsS0FBS3NDLE9BQU9xd0QsUUFBUSxXQUFXLElBQUlwM0QsRUFBRXlFLEtBQUtBLEtBQUt1Z0MsT0FBTyxXQUFVLFNBQVMvaEMsR0FBR2t6RCxHQUFHbjJELEdBQUUsU0FBU0EsR0FBRyxPQUFPazJELEdBQUdqekQsRUFBRWpELFNBQU95RSxLQUFLdWdDLE9BQU8sV0FBVSxTQUFTL2hDLEdBQUdrekQsR0FBR24yRCxHQUFFLFNBQVNBLEdBQUcsT0FBT2syRCxHQUFHanpELEVBQUVqRCxVQUFRNGUsT0FBTyxXQUFXLElBQUk1ZSxFQUFFeUUsS0FBSzBsQixPQUFPeEwsUUFBUTFiLEVBQUVtd0QsR0FBR3B6RCxHQUFHd0QsRUFBRVAsR0FBR0EsRUFBRWttRCxpQkFBaUIsR0FBRzNsRCxFQUFFLENBQUMsSUFBSVgsRUFBRW96RCxHQUFHenlELEdBQUcxRSxFQUFFMkYsS0FBS3l5RCxRQUFRejBELEVBQUVnQyxLQUFLMHlELFFBQVEsR0FBR3I0RCxLQUFLK0QsSUFBSXF6RCxHQUFHcDNELEVBQUUrRCxLQUFLSixHQUFHSSxHQUFHcXpELEdBQUd6ekQsRUFBRUksR0FBRyxPQUFPSSxFQUFFLElBQUk0UyxFQUFFcFIsS0FBSzJhLE1BQU1sYixFQUFFTyxLQUFLc0MsS0FBS3pFLEVBQUUsTUFBTVcsRUFBRUssSUFBSUUsRUFBRTZ0RCxLQUFLMS9CLEtBQUtudUIsRUFBRWlRLElBQUksS0FBS2pRLEVBQUVpUSxJQUFJLElBQUl4USxFQUFFSyxJQUFJdVMsRUFBRXZULElBQUlXLEVBQUU0ZCxrQkFBa0JoTCxFQUFFdlQsR0FBR3VlLGtCQUFrQjVCLEVBQUUvYSxFQUFFNUIsR0FBRzRCLEVBQUU1RSxLQUFLZ0QsS0FBS3VULEVBQUV2VCxHQUFHVyxFQUFFaUIsRUFBRTVFLEtBQUtnRCxHQUFHbUMsS0FBS3N2QixLQUFLN3ZCLEVBQUVsRixPQUFPd2hDLFNBQVMvN0IsS0FBS3N2QixNQUFNcWlDLEdBQUd2Z0QsRUFBRTNSLEVBQUUsR0FBR0EsRUFBRU8sS0FBSytzRCxTQUFTdnVELEVBQUV4RSxLQUFLa2hCLFdBQVUsRUFBRyxPQUFPMWMsR0FBR2pELEdBQUdBLEVBQUUsT0FBTyxTQUFTQSxHQUFHLElBQUlpRCxFQUFFLENBQUNMLElBQUksV0FBVyxPQUFPNmlELElBQUl4bUQsT0FBT3lELGVBQWUxQyxFQUFFLFNBQVNpRCxHQUFHakQsRUFBRTA0QixLQUFLLENBQUNXLEtBQUs2dUIsR0FBRzNwQyxPQUFPdW1DLEVBQUV1UyxhQUFhM0wsR0FBRy95QixlQUFla3lCLElBQUk3cUQsRUFBRXlsQyxJQUFJcWxCLEdBQUc5cUQsRUFBRXMzRCxPQUFPdk0sR0FBRy9xRCxFQUFFa2QsU0FBU293QyxHQUFHdHRELEVBQUV1M0QsV0FBVyxTQUFTdjNELEdBQUcsT0FBTzBxRCxHQUFHMXFELEdBQUdBLEdBQUdBLEVBQUVvRSxRQUFRbkYsT0FBT29FLE9BQU8sTUFBTWtpRCxFQUFFbCtDLFNBQVEsU0FBU3BFLEdBQUdqRCxFQUFFb0UsUUFBUW5CLEVBQUUsS0FBS2hFLE9BQU9vRSxPQUFPLFNBQVFyRCxFQUFFb0UsUUFBUXVuRCxNQUFNM3JELEVBQUU4a0QsRUFBRTlrRCxFQUFFb0UsUUFBUWljLFdBQVcyMkMsSUFBSSxTQUFTaDNELEdBQUdBLEVBQUVtNUIsSUFBSSxTQUFTbjVCLEdBQUcsSUFBSWlELEVBQUV3QixLQUFLK3lELG9CQUFvQi95RCxLQUFLK3lELGtCQUFrQixJQUFJLEdBQUd2MEQsRUFBRTZHLFFBQVE5SixJQUFJLEVBQUUsT0FBT3lFLEtBQUssSUFBSWpCLEVBQUVxaEQsRUFBRWorQyxVQUFVLEdBQUcsT0FBT3BELEVBQUVzZixRQUFRcmUsTUFBTSxtQkFBbUJ6RSxFQUFFKzNCLFFBQVEvM0IsRUFBRSszQixRQUFRNWEsTUFBTW5kLEVBQUV3RCxHQUFHLG1CQUFtQnhELEdBQUdBLEVBQUVtZCxNQUFNLEtBQUszWixHQUFHUCxFQUFFM0QsS0FBS1UsR0FBR3lFLE1BQXJRLENBQTRRekUsR0FBRyxTQUFTQSxHQUFHQSxFQUFFdTRCLE1BQU0sU0FBU3Y0QixHQUFHLE9BQU95RSxLQUFLTCxRQUFRc25ELEdBQUdqbkQsS0FBS0wsUUFBUXBFLEdBQUd5RSxNQUF2RSxDQUE4RXpFLEdBQWp0TixTQUFZQSxHQUFHQSxFQUFFMnhCLElBQUksRUFBRSxJQUFJMXVCLEVBQUUsRUFBRWpELEVBQUV1ZSxPQUFPLFNBQVN2ZSxHQUFHQSxFQUFFQSxHQUFHLEdBQUcsSUFBSXdELEVBQUVpQixLQUFLNUIsRUFBRVcsRUFBRW11QixJQUFJN3lCLEVBQUVrQixFQUFFeTNELFFBQVF6M0QsRUFBRXkzRCxNQUFNLElBQUksR0FBRzM0RCxFQUFFK0QsR0FBRyxPQUFPL0QsRUFBRStELEdBQUcsSUFBSUosRUFBRXpDLEVBQUU4QixNQUFNMEIsRUFBRVksUUFBUXRDLEtBQUsrVCxFQUFFLFNBQVM3VixHQUFHeUUsS0FBS3V4RCxNQUFNaDJELElBQUksT0FBTzZWLEVBQUUzVyxVQUFVRCxPQUFPb0UsT0FBT0csRUFBRXRFLFlBQVlrSCxZQUFZeVAsRUFBRUEsRUFBRThiLElBQUkxdUIsSUFBSTRTLEVBQUV6UixRQUFRc25ELEdBQUdsb0QsRUFBRVksUUFBUXBFLEdBQUc2VixFQUFFOC9DLE1BQU1ueUQsRUFBRXFTLEVBQUV6UixRQUFRa0MsT0FBTyxTQUFTdEcsR0FBRyxJQUFJaUQsRUFBRWpELEVBQUVvRSxRQUFRa0MsTUFBTSxJQUFJLElBQUk5QyxLQUFLUCxFQUFFbXlELEdBQUdwMUQsRUFBRWQsVUFBVSxTQUFTc0UsR0FBekUsQ0FBNkVxUyxHQUFHQSxFQUFFelIsUUFBUW1uRCxVQUFVLFNBQVN2ckQsR0FBRyxJQUFJaUQsRUFBRWpELEVBQUVvRSxRQUFRbW5ELFNBQVMsSUFBSSxJQUFJL25ELEtBQUtQLEVBQUVxeUQsR0FBR3QxRCxFQUFFZCxVQUFVc0UsRUFBRVAsRUFBRU8sSUFBdkUsQ0FBNEVxUyxHQUFHQSxFQUFFMEksT0FBTy9hLEVBQUUrYSxPQUFPMUksRUFBRTBpQixNQUFNLzBCLEVBQUUrMEIsTUFBTTFpQixFQUFFc2pCLElBQUkzMUIsRUFBRTIxQixJQUFJb3NCLEVBQUVsK0MsU0FBUSxTQUFTckgsR0FBRzZWLEVBQUU3VixHQUFHd0QsRUFBRXhELE1BQUt5QyxJQUFJb1QsRUFBRXpSLFFBQVFpYyxXQUFXNWQsR0FBR29ULEdBQUdBLEVBQUUrL0MsYUFBYXB5RCxFQUFFWSxRQUFReVIsRUFBRWlnRCxjQUFjOTFELEVBQUU2VixFQUFFZ2dELGNBQWMvUSxFQUFFLEdBQUdqdkMsRUFBRXpSLFNBQVN0RixFQUFFK0QsR0FBR2dULEVBQUVBLEdBQStpTTZoRCxDQUFHMTNELEdBQUcsU0FBU0EsR0FBR3VsRCxFQUFFbCtDLFNBQVEsU0FBU3BFLEdBQUdqRCxFQUFFaUQsR0FBRyxTQUFTakQsRUFBRXdELEdBQUcsT0FBT0EsR0FBRyxjQUFjUCxHQUFHaUIsRUFBRVYsS0FBS0EsRUFBRTFCLEtBQUswQixFQUFFMUIsTUFBTTlCLEVBQUV3RCxFQUFFaUIsS0FBS0wsUUFBUXVuRCxNQUFNcHRDLE9BQU8vYSxJQUFJLGNBQWNQLEdBQUcsbUJBQW1CTyxJQUFJQSxFQUFFLENBQUNELEtBQUtDLEVBQUV3NkIsT0FBT3g2QixJQUFJaUIsS0FBS0wsUUFBUW5CLEVBQUUsS0FBS2pELEdBQUd3RCxFQUFFQSxHQUFHaUIsS0FBS0wsUUFBUW5CLEVBQUUsS0FBS2pELE9BQXJQLENBQTRQQSxHQUFuOEIsQ0FBdThCKzFELElBQUk5MkQsT0FBT3lELGVBQWVxekQsR0FBRzcyRCxVQUFVLFlBQVksQ0FBQzBELElBQUlzbEMsS0FBS2pwQyxPQUFPeUQsZUFBZXF6RCxHQUFHNzJELFVBQVUsY0FBYyxDQUFDMEQsSUFBSSxXQUFXLE9BQU82QixLQUFLaWIsUUFBUWpiLEtBQUtpYixPQUFPaTRDLGNBQWMxNEQsT0FBT3lELGVBQWVxekQsR0FBRywwQkFBMEIsQ0FBQy95RCxNQUFNeXRELEtBQUtzRixHQUFHeDRDLFFBQVEsU0FBUyxJQUFJcTZDLEdBQUc1MkQsRUFBRSxlQUFlNjJELEdBQUc3MkQsRUFBRSx5Q0FBeUM4MkQsR0FBRyxTQUFTOTNELEVBQUVpRCxFQUFFTyxHQUFHLE1BQU0sVUFBVUEsR0FBR3EwRCxHQUFHNzNELElBQUksV0FBV2lELEdBQUcsYUFBYU8sR0FBRyxXQUFXeEQsR0FBRyxZQUFZd0QsR0FBRyxVQUFVeEQsR0FBRyxVQUFVd0QsR0FBRyxVQUFVeEQsR0FBRyszRCxHQUFHLzJELEVBQUUsd0NBQXdDZzNELEdBQUdoM0QsRUFBRSxzQ0FBZ0lpM0QsR0FBR2ozRCxFQUFFLHdZQUF3WWszRCxHQUFHLCtCQUErQkMsR0FBRyxTQUFTbjRELEdBQUcsTUFBTSxNQUFNQSxFQUFFNGpCLE9BQU8sSUFBSSxVQUFVNWpCLEVBQUVpRSxNQUFNLEVBQUUsSUFBSW0wRCxHQUFHLFNBQVNwNEQsR0FBRyxPQUFPbTRELEdBQUduNEQsR0FBR0EsRUFBRWlFLE1BQU0sRUFBRWpFLEVBQUVoQixRQUFRLElBQUlxNUQsR0FBRyxTQUFTcjRELEdBQUcsT0FBTyxNQUFNQSxJQUFHLElBQUtBLEdBQW1RLFNBQVNzNEQsR0FBR3Q0RCxFQUFFaUQsR0FBRyxNQUFNLENBQUM2QixZQUFZeXpELEdBQUd2NEQsRUFBRThFLFlBQVk3QixFQUFFNkIsYUFBYUcsTUFBTXpCLEVBQUV4RCxFQUFFaUYsT0FBTyxDQUFDakYsRUFBRWlGLE1BQU1oQyxFQUFFZ0MsT0FBT2hDLEVBQUVnQyxPQUFPLFNBQVNzekQsR0FBR3Y0RCxFQUFFaUQsR0FBRyxPQUFPakQsRUFBRWlELEVBQUVqRCxFQUFFLElBQUlpRCxFQUFFakQsRUFBRWlELEdBQUcsR0FBRyxTQUFTdTFELEdBQUd4NEQsR0FBRyxPQUFPd0gsTUFBTUMsUUFBUXpILEdBQUcsU0FBU0EsR0FBRyxJQUFJLElBQUlpRCxFQUFFSixFQUFFLEdBQUcvRCxFQUFFLEVBQUUyRCxFQUFFekMsRUFBRWhCLE9BQU9GLEVBQUUyRCxFQUFFM0QsSUFBSTBFLEVBQUVQLEVBQUV1MUQsR0FBR3g0RCxFQUFFbEIsTUFBTSxLQUFLbUUsSUFBSUosSUFBSUEsR0FBRyxLQUFLQSxHQUFHSSxHQUFHLE9BQU9KLEVBQW5HLENBQXNHN0MsR0FBR3lDLEVBQUV6QyxHQUFHLFNBQVNBLEdBQUcsSUFBSWlELEVBQUUsR0FBRyxJQUFJLElBQUlPLEtBQUt4RCxFQUFFQSxFQUFFd0QsS0FBS1AsSUFBSUEsR0FBRyxLQUFLQSxHQUFHTyxHQUFHLE9BQU9QLEVBQXBFLENBQXVFakQsR0FBRyxpQkFBaUJBLEVBQUVBLEVBQUUsR0FBRyxJQUFJeTRELEdBQUcsQ0FBQ0MsSUFBSSw2QkFBNkJDLEtBQUssc0NBQXNDQyxHQUFHNTNELEVBQUUsc25CQUFzbkI2M0QsR0FBRzczRCxFQUFFLGtOQUFpTixHQUFJODNELEdBQUcsU0FBUzk0RCxHQUFHLE9BQU80NEQsR0FBRzU0RCxJQUFJNjRELEdBQUc3NEQsSUFBSSxTQUFTKzRELEdBQUcvNEQsR0FBRyxPQUFPNjRELEdBQUc3NEQsR0FBRyxNQUFNLFNBQVNBLEVBQUUsWUFBTyxFQUFPLElBQUlnNUQsR0FBRy81RCxPQUFPb0UsT0FBTyxNQUFVNDFELEdBQUdqNEQsRUFBRSw2Q0FBNkMsU0FBU2s0RCxHQUFHbDVELEdBQUcsTUFBRyxpQkFBaUJBLEVBQVNTLFNBQVNnSyxjQUFjekssSUFBYVMsU0FBU0MsY0FBYyxPQUFjVixFQUFFLElBQUltNUQsR0FBR2w2RCxPQUFPMmpCLE9BQU8sQ0FBQ2xpQixjQUFjLFNBQVNWLEVBQUVpRCxHQUFHLElBQUlPLEVBQUUvQyxTQUFTQyxjQUFjVixHQUFHLE1BQU0sV0FBV0EsR0FBS2lELEVBQUV4RSxNQUFNd0UsRUFBRXhFLEtBQUswRyxZQUFPLElBQVNsQyxFQUFFeEUsS0FBSzBHLE1BQU1pMEQsVUFBVTUxRCxFQUFFMUMsYUFBYSxXQUFXLFlBQW5GMEMsR0FBbUc2MUQsZ0JBQWdCLFNBQVNyNUQsRUFBRWlELEdBQUcsT0FBT3hDLFNBQVM0NEQsZ0JBQWdCWixHQUFHejRELEdBQUdpRCxJQUFJa3FELGVBQWUsU0FBU250RCxHQUFHLE9BQU9TLFNBQVMwc0QsZUFBZW50RCxJQUFJczVELGNBQWMsU0FBU3Q1RCxHQUFHLE9BQU9TLFNBQVM2NEQsY0FBY3Q1RCxJQUFJc1EsYUFBYSxTQUFTdFEsRUFBRWlELEVBQUVPLEdBQUd4RCxFQUFFc1EsYUFBYXJOLEVBQUVPLElBQUkrMUQsWUFBWSxTQUFTdjVELEVBQUVpRCxHQUFHakQsRUFBRXU1RCxZQUFZdDJELElBQUlkLFlBQVksU0FBU25DLEVBQUVpRCxHQUFHakQsRUFBRW1DLFlBQVljLElBQUl1MkQsV0FBVyxTQUFTeDVELEdBQUcsT0FBT0EsRUFBRXc1RCxZQUFZQyxZQUFZLFNBQVN6NUQsR0FBRyxPQUFPQSxFQUFFeTVELGFBQWFycEQsUUFBUSxTQUFTcFEsR0FBRyxPQUFPQSxFQUFFb1EsU0FBU3NwRCxlQUFlLFNBQVMxNUQsRUFBRWlELEdBQUdqRCxFQUFFMitCLFlBQVkxN0IsR0FBRzAyRCxjQUFjLFNBQVMzNUQsRUFBRWlELEdBQUdqRCxFQUFFYyxhQUFhbUMsRUFBRSxPQUFPMjJELEdBQUcsQ0FBQ3YyRCxPQUFPLFNBQVNyRCxFQUFFaUQsR0FBRzQyRCxHQUFHNTJELElBQUkrNkIsT0FBTyxTQUFTaCtCLEVBQUVpRCxHQUFHakQsRUFBRXZCLEtBQUtxZ0IsTUFBTTdiLEVBQUV4RSxLQUFLcWdCLE1BQU0rNkMsR0FBRzc1RCxHQUFFLEdBQUk2NUQsR0FBRzUyRCxLQUFLaXZELFFBQVEsU0FBU2x5RCxHQUFHNjVELEdBQUc3NUQsR0FBRSxLQUFNLFNBQVM2NUQsR0FBRzc1RCxFQUFFaUQsR0FBRyxJQUFJSixFQUFFN0MsRUFBRXZCLEtBQUtxZ0IsSUFBSSxHQUFHdGIsRUFBRVgsR0FBRyxDQUFDLElBQUkvRCxFQUFFa0IsRUFBRWsrQixRQUFRejdCLEVBQUV6QyxFQUFFNmdCLG1CQUFtQjdnQixFQUFFK29ELElBQUlsekMsRUFBRS9XLEVBQUV5M0QsTUFBTXR6RCxFQUFFdUUsTUFBTUMsUUFBUW9PLEVBQUVoVCxJQUFJb2MsRUFBRXBKLEVBQUVoVCxHQUFHSixHQUFHb1QsRUFBRWhULEtBQUtKLElBQUlvVCxFQUFFaFQsUUFBRyxHQUFRN0MsRUFBRXZCLEtBQUtxN0QsU0FBU3R5RCxNQUFNQyxRQUFRb08sRUFBRWhULElBQUlnVCxFQUFFaFQsR0FBR2lILFFBQVFySCxHQUFHLEdBQUdvVCxFQUFFaFQsR0FBR3ZELEtBQUttRCxHQUFHb1QsRUFBRWhULEdBQUcsQ0FBQ0osR0FBR29ULEVBQUVoVCxHQUFHSixHQUFHLElBQUlzM0QsR0FBRyxJQUFJalIsR0FBRyxHQUFHLEdBQUcsSUFBSWtSLEdBQUcsQ0FBQyxTQUFTLFdBQVcsU0FBUyxTQUFTLFdBQVcsU0FBU0MsR0FBR2o2RCxFQUFFbEIsR0FBRyxPQUFPa0IsRUFBRXNELE1BQU14RSxFQUFFd0UsTUFBTXRELEVBQUV5VCxNQUFNM1UsRUFBRTJVLEtBQUt6VCxFQUFFcXBELFlBQVl2cUQsRUFBRXVxRCxXQUFXN2xELEVBQUV4RCxFQUFFdkIsUUFBUStFLEVBQUUxRSxFQUFFTCxPQUFPLFNBQVN1QixFQUFFaUQsR0FBRyxHQUFHLFVBQVVqRCxFQUFFeVQsSUFBSSxPQUFNLEVBQUcsSUFBSTVRLEVBQUUvRCxFQUFFMEUsRUFBRVgsRUFBRTdDLEVBQUV2QixPQUFPK0UsRUFBRVgsRUFBRUEsRUFBRXNDLFFBQVF0QyxFQUFFbkIsS0FBS2UsRUFBRWUsRUFBRVgsRUFBRUksRUFBRXhFLE9BQU8rRSxFQUFFWCxFQUFFQSxFQUFFc0MsUUFBUXRDLEVBQUVuQixLQUFLLE9BQU81QyxJQUFJMkQsR0FBR3cyRCxHQUFHbjZELElBQUltNkQsR0FBR3gyRCxHQUFoSixDQUFvSnpDLEVBQUVsQixJQUFJK0QsRUFBRTdDLEVBQUUwcEQscUJBQXFCMXBELEVBQUV3cEQsZUFBZTFxRCxFQUFFMHFELGNBQWN2bUQsRUFBRW5FLEVBQUUwcUQsYUFBYXRvRCxRQUFRLFNBQVNnNUQsR0FBR2w2RCxFQUFFaUQsRUFBRUosR0FBRyxJQUFJL0QsRUFBRTJELEVBQUVvVCxFQUFFLEdBQUcsSUFBSS9XLEVBQUVtRSxFQUFFbkUsR0FBRytELElBQUkvRCxFQUFFMEUsRUFBRWYsRUFBRXpDLEVBQUVsQixHQUFHd0UsT0FBT3VTLEVBQUVwVCxHQUFHM0QsR0FBRyxPQUFPK1csRUFBRSxJQUFJc2tELEdBQUcsQ0FBQzkyRCxPQUFPKzJELEdBQUdwOEIsT0FBT284QixHQUFHbEksUUFBUSxTQUFTbHlELEdBQUdvNkQsR0FBR3A2RCxFQUFFKzVELE1BQU0sU0FBU0ssR0FBR3A2RCxFQUFFaUQsSUFBSWpELEVBQUV2QixLQUFLNjNDLFlBQVlyekMsRUFBRXhFLEtBQUs2M0MsYUFBYSxTQUFTdDJDLEVBQUVpRCxHQUFHLElBQUlPLEVBQUVYLEVBQUUvRCxFQUFFMkQsRUFBRXpDLElBQUkrNUQsR0FBR2xrRCxFQUFFNVMsSUFBSTgyRCxHQUFHNzFELEVBQUVtMkQsR0FBR3I2RCxFQUFFdkIsS0FBSzYzQyxXQUFXdDJDLEVBQUVrK0IsU0FBUzU3QixFQUFFKzNELEdBQUdwM0QsRUFBRXhFLEtBQUs2M0MsV0FBV3J6QyxFQUFFaTdCLFNBQVNvbUIsRUFBRSxHQUFHdmtELEVBQUUsR0FBRyxJQUFJeUQsS0FBS2xCLEVBQUVPLEVBQUVxQixFQUFFVixHQUFHMUUsRUFBRXdELEVBQUVrQixHQUFHWCxHQUFHL0QsRUFBRXUvQixTQUFTeDdCLEVBQUVHLE1BQU1sRSxFQUFFdzdELE9BQU96M0QsRUFBRXlLLElBQUlpdEQsR0FBR3o3RCxFQUFFLFNBQVNtRSxFQUFFakQsR0FBR2xCLEVBQUU0eUIsS0FBSzV5QixFQUFFNHlCLElBQUk4b0Msa0JBQWtCejZELEVBQUVULEtBQUtSLEtBQUt5N0QsR0FBR3o3RCxFQUFFLE9BQU9tRSxFQUFFakQsR0FBR2xCLEVBQUU0eUIsS0FBSzV5QixFQUFFNHlCLElBQUkrb0MsVUFBVW5XLEVBQUVobEQsS0FBS1IsSUFBSSxHQUFHd2xELEVBQUV0bEQsT0FBTyxDQUFDLElBQUl1bEQsRUFBRSxXQUFXLElBQUksSUFBSS9nRCxFQUFFLEVBQUVBLEVBQUU4Z0QsRUFBRXRsRCxPQUFPd0UsSUFBSSsyRCxHQUFHalcsRUFBRTlnRCxHQUFHLFdBQVdQLEVBQUVqRCxJQUFJeUMsRUFBRXNyRCxHQUFHOXFELEVBQUUsU0FBU3NoRCxHQUFHQSxJQUF1RyxHQUFuR3hrRCxFQUFFZixRQUFRK3VELEdBQUc5cUQsRUFBRSxhQUFZLFdBQVcsSUFBSSxJQUFJTyxFQUFFLEVBQUVBLEVBQUV6RCxFQUFFZixPQUFPd0UsSUFBSSsyRCxHQUFHeDZELEVBQUV5RCxHQUFHLG1CQUFtQlAsRUFBRWpELE9BQVN5QyxFQUFFLElBQUllLEtBQUtVLEVBQUU1QixFQUFFa0IsSUFBSSsyRCxHQUFHcjJELEVBQUVWLEdBQUcsU0FBU3hELEVBQUVBLEVBQUU2VixHQUEvaEIsQ0FBbWlCN1YsRUFBRWlELEdBQUcsSUFBSXkzRCxHQUFHejdELE9BQU9vRSxPQUFPLE1BQU0sU0FBU2czRCxHQUFHcjZELEVBQUVpRCxHQUFHLElBQUlPLEVBQUVYLEVBQUUvRCxFQUFFRyxPQUFPb0UsT0FBTyxNQUFNLElBQUlyRCxFQUFFLE9BQU9sQixFQUFFLElBQUkwRSxFQUFFLEVBQUVBLEVBQUV4RCxFQUFFaEIsT0FBT3dFLEtBQUtYLEVBQUU3QyxFQUFFd0QsSUFBSWk3QixZQUFZNTdCLEVBQUU0N0IsVUFBVWk4QixJQUFJNTdELEVBQUU2N0QsR0FBRzkzRCxJQUFJQSxFQUFFQSxFQUFFNnVCLElBQUlvNkIsR0FBRzdvRCxFQUFFbzFCLFNBQVMsYUFBYXgxQixFQUFFZixNQUFNLE9BQU9oRCxFQUFFLFNBQVM2N0QsR0FBRzM2RCxHQUFHLE9BQU9BLEVBQUV1MkMsU0FBU3YyQyxFQUFFOEIsS0FBSyxJQUFJN0MsT0FBTzhILEtBQUsvRyxFQUFFeStCLFdBQVcsSUFBSW5yQixLQUFLLEtBQUssU0FBU2luRCxHQUFHdjZELEVBQUVpRCxFQUFFTyxFQUFFWCxFQUFFL0QsR0FBRyxJQUFJMkQsRUFBRXpDLEVBQUUweEIsS0FBSzF4QixFQUFFMHhCLElBQUl6dUIsR0FBRyxHQUFHUixFQUFFLElBQUlBLEVBQUVlLEVBQUV1bEQsSUFBSS9vRCxFQUFFd0QsRUFBRVgsRUFBRS9ELEdBQUcsTUFBTStELEdBQUd3cEQsR0FBR3hwRCxFQUFFVyxFQUFFMDZCLFFBQVEsYUFBYWwrQixFQUFFOEIsS0FBSyxJQUFJbUIsRUFBRSxVQUFVLElBQUkyM0QsR0FBRyxDQUFDaEIsR0FBR08sSUFBSSxTQUFTVSxHQUFHNzZELEVBQUU2QyxHQUFHLElBQUkvRCxFQUFFK0QsRUFBRXNtRCxpQkFBaUIsS0FBSzNsRCxFQUFFMUUsS0FBSSxJQUFLQSxFQUFFdXlELEtBQUtqdEQsUUFBUTAyRCxjQUFjNzNELEVBQUVqRCxFQUFFdkIsS0FBSzBHLFFBQVFsQyxFQUFFSixFQUFFcEUsS0FBSzBHLFFBQVEsQ0FBQyxJQUFJMUMsRUFBRW9ULEVBQUUzUixFQUFFckIsRUFBRWttRCxJQUFJem1ELEVBQUV0QyxFQUFFdkIsS0FBSzBHLE9BQU8sR0FBR20vQyxFQUFFemhELEVBQUVwRSxLQUFLMEcsT0FBTyxHQUFHLElBQUkxQyxLQUFLZSxFQUFFOGdELEVBQUUyRixVQUFVM0YsRUFBRXpoRCxFQUFFcEUsS0FBSzBHLE1BQU0yL0MsRUFBRSxHQUFHUixJQUFJQSxFQUFFenVDLEVBQUV5dUMsRUFBRTdoRCxHQUFHSCxFQUFFRyxLQUFLb1QsR0FBR2tsRCxHQUFHNzJELEVBQUV6QixFQUFFb1QsR0FBRyxJQUFJcFQsS0FBS3drRCxHQUFHRSxJQUFJN0MsRUFBRXRoRCxRQUFRVixFQUFFVSxPQUFPKzNELEdBQUc3MkQsRUFBRSxRQUFRb2dELEVBQUV0aEQsT0FBT1YsRUFBRVcsRUFBRXFoRCxFQUFFN2hELE1BQU0wMUQsR0FBRzExRCxHQUFHeUIsRUFBRTgyRCxrQkFBa0I5QyxHQUFHRSxHQUFHMzFELElBQUlzMUQsR0FBR3QxRCxJQUFJeUIsRUFBRSsyRCxnQkFBZ0J4NEQsS0FBSyxTQUFTczRELEdBQUcvNkQsRUFBRWlELEVBQUVPLEdBQUd4RCxFQUFFb1EsUUFBUXRHLFFBQVEsTUFBTSxFQUFFb3hELEdBQUdsN0QsRUFBRWlELEVBQUVPLEdBQUd5MEQsR0FBR2gxRCxHQUFHbzFELEdBQUc3MEQsR0FBR3hELEVBQUVpN0QsZ0JBQWdCaDRELElBQUlPLEVBQUUsb0JBQW9CUCxHQUFHLFVBQVVqRCxFQUFFb1EsUUFBUSxPQUFPbk4sRUFBRWpELEVBQUVjLGFBQWFtQyxFQUFFTyxJQUFJdTBELEdBQUc5MEQsR0FBR2pELEVBQUVjLGFBQWFtQyxFQUE1dUwsU0FBU2pELEVBQUVpRCxHQUFHLE9BQU9vMUQsR0FBR3AxRCxJQUFJLFVBQVVBLEVBQUUsUUFBUSxvQkFBb0JqRCxHQUFHZzRELEdBQUcvMEQsR0FBR0EsRUFBRSxPQUErcExrNEQsQ0FBR2w0RCxFQUFFTyxJQUFJMjBELEdBQUdsMUQsR0FBR28xRCxHQUFHNzBELEdBQUd4RCxFQUFFZzdELGtCQUFrQjlDLEdBQUdFLEdBQUduMUQsSUFBSWpELEVBQUVvN0QsZUFBZWxELEdBQUdqMUQsRUFBRU8sR0FBRzAzRCxHQUFHbDdELEVBQUVpRCxFQUFFTyxHQUFHLFNBQVMwM0QsR0FBR2w3RCxFQUFFaUQsRUFBRU8sR0FBRyxHQUFHNjBELEdBQUc3MEQsR0FBR3hELEVBQUVpN0QsZ0JBQWdCaDRELE9BQU8sQ0FBQyxHQUFHZ2tELElBQUlDLEdBQUcsYUFBYWxuRCxFQUFFb1EsU0FBUyxnQkFBZ0JuTixHQUFHLEtBQUtPLElBQUl4RCxFQUFFcTdELE9BQU8sQ0FBQyxJQUFJeDRELEVBQUUsU0FBU0ksR0FBR0EsRUFBRXE0RCwyQkFBMkJ0N0QsRUFBRXdNLG9CQUFvQixRQUFRM0osSUFBSTdDLEVBQUU0SixpQkFBaUIsUUFBUS9HLEdBQUc3QyxFQUFFcTdELFFBQU8sRUFBR3I3RCxFQUFFYyxhQUFhbUMsRUFBRU8sSUFBSSxJQUFJKzNELEdBQUcsQ0FBQ2w0RCxPQUFPdzNELEdBQUc3OEIsT0FBTzY4QixJQUFJLFNBQVNXLEdBQUd4N0QsRUFBRTZDLEdBQUcsSUFBSS9ELEVBQUUrRCxFQUFFa21ELElBQUl0bUQsRUFBRUksRUFBRXBFLEtBQUtvWCxFQUFFN1YsRUFBRXZCLEtBQUssS0FBS3dFLEVBQUVSLEVBQUVxQyxjQUFjN0IsRUFBRVIsRUFBRXdDLFNBQVNoQyxFQUFFNFMsSUFBSTVTLEVBQUU0UyxFQUFFL1EsY0FBYzdCLEVBQUU0UyxFQUFFNVEsU0FBUyxDQUFDLElBQUlmLEVBQTNrTCxTQUFZbEUsR0FBRyxJQUFJLElBQUlpRCxFQUFFakQsRUFBRXZCLEtBQUtvRSxFQUFFN0MsRUFBRWxCLEVBQUVrQixFQUFFd0QsRUFBRTFFLEVBQUUraEIscUJBQXFCL2hCLEVBQUVBLEVBQUUraEIsa0JBQWtCMndDLFNBQVMxeUQsRUFBRUwsT0FBT3dFLEVBQUVxMUQsR0FBR3g1RCxFQUFFTCxLQUFLd0UsSUFBSSxLQUFLTyxFQUFFWCxFQUFFQSxFQUFFa2MsU0FBU2xjLEdBQUdBLEVBQUVwRSxPQUFPd0UsRUFBRXExRCxHQUFHcjFELEVBQUVKLEVBQUVwRSxPQUFPLE9BQU8sU0FBU3VCLEVBQUVpRCxHQUFHLE9BQUdPLEVBQUV4RCxJQUFJd0QsRUFBRVAsR0FBVXMxRCxHQUFHdjRELEVBQUV3NEQsR0FBR3YxRCxJQUFVLEdBQXJELENBQXlEQSxFQUFFNkIsWUFBWTdCLEVBQUVnQyxPQUFvMUt3MkQsQ0FBRzU0RCxHQUFHUCxFQUFFeEQsRUFBRTQ4RCxtQkFBbUJsNEQsRUFBRWxCLEtBQUs0QixFQUFFcTBELEdBQUdyMEQsRUFBRXMwRCxHQUFHbDJELEtBQUs0QixJQUFJcEYsRUFBRTY4RCxhQUFhNzhELEVBQUVnQyxhQUFhLFFBQVFvRCxHQUFHcEYsRUFBRTY4RCxXQUFXejNELElBQUksSUFBSTAzRCxHQUFHQyxHQUFHQyxHQUFHQyxHQUFHQyxHQUFHQyxHQUFHQyxHQUFHLENBQUM3NEQsT0FBT200RCxHQUFHeDlCLE9BQU93OUIsSUFBSVcsR0FBRyxnQkFBZ0IsU0FBU0MsR0FBR3A4RCxHQUFHLElBQUlpRCxFQUFFTyxFQUFFWCxFQUFFL0QsRUFBRTJELEVBQUVvVCxHQUFFLEVBQUczUixHQUFFLEVBQUc1QixHQUFFLEVBQUdnaUQsR0FBRSxFQUFHdmtELEVBQUUsRUFBRXdrRCxFQUFFLEVBQUV2akQsRUFBRSxFQUFFdUIsRUFBRSxFQUFFLElBQUlNLEVBQUUsRUFBRUEsRUFBRTdDLEVBQUVoQixPQUFPNkQsSUFBSSxHQUFHVyxFQUFFUCxFQUFFQSxFQUFFakQsRUFBRW1oQixXQUFXdGUsR0FBR2dULEVBQUUsS0FBSzVTLEdBQUcsS0FBS08sSUFBSXFTLEdBQUUsUUFBUyxHQUFHM1IsRUFBRSxLQUFLakIsR0FBRyxLQUFLTyxJQUFJVSxHQUFFLFFBQVMsR0FBRzVCLEVBQUUsS0FBS1csR0FBRyxLQUFLTyxJQUFJbEIsR0FBRSxRQUFTLEdBQUdnaUQsRUFBRSxLQUFLcmhELEdBQUcsS0FBS08sSUFBSThnRCxHQUFFLFFBQVMsR0FBRyxNQUFNcmhELEdBQUcsTUFBTWpELEVBQUVtaEIsV0FBV3RlLEVBQUUsSUFBSSxNQUFNN0MsRUFBRW1oQixXQUFXdGUsRUFBRSxJQUFJOUMsR0FBR3drRCxHQUFHdmpELEVBQUUsQ0FBQyxPQUFPaUMsR0FBRyxLQUFLLEdBQUdpQixHQUFFLEVBQUcsTUFBTSxLQUFLLEdBQUcyUixHQUFFLEVBQUcsTUFBTSxLQUFLLEdBQUd2VCxHQUFFLEVBQUcsTUFBTSxLQUFLLEdBQUd0QixJQUFJLE1BQU0sS0FBSyxHQUFHQSxJQUFJLE1BQU0sS0FBSyxHQUFHdWpELElBQUksTUFBTSxLQUFLLEdBQUdBLElBQUksTUFBTSxLQUFLLElBQUl4a0QsSUFBSSxNQUFNLEtBQUssSUFBSUEsSUFBSSxHQUFHLEtBQUtrRCxFQUFFLENBQUMsSUFBSSxJQUFJc3NCLEVBQUUxc0IsRUFBRSxFQUFFb2MsT0FBRSxFQUFPc1EsR0FBRyxHQUFHLE9BQU90USxFQUFFamYsRUFBRTRqQixPQUFPMkwsSUFBSUEsS0FBS3RRLEdBQUdrOUMsR0FBR3QyRCxLQUFLb1osS0FBS3FsQyxHQUFFLGNBQVUsSUFBU3hsRCxHQUFHeUQsRUFBRU0sRUFBRSxFQUFFL0QsRUFBRWtCLEVBQUVpRSxNQUFNLEVBQUVwQixHQUFHdVUsUUFBUS9VLElBQUksU0FBU0EsS0FBS0ksSUFBSUEsRUFBRSxLQUFLbkQsS0FBS1UsRUFBRWlFLE1BQU0xQixFQUFFTSxHQUFHdVUsUUFBUTdVLEVBQUVNLEVBQUUsRUFBRSxRQUFHLElBQVMvRCxFQUFFQSxFQUFFa0IsRUFBRWlFLE1BQU0sRUFBRXBCLEdBQUd1VSxPQUFPLElBQUk3VSxHQUFHRixJQUFJSSxFQUFFLElBQUlJLEVBQUUsRUFBRUEsRUFBRUosRUFBRXpELE9BQU82RCxJQUFJL0QsRUFBRXU5RCxHQUFHdjlELEVBQUUyRCxFQUFFSSxJQUFJLE9BQU8vRCxFQUFFLFNBQVN1OUQsR0FBR3I4RCxFQUFFaUQsR0FBRyxJQUFJTyxFQUFFUCxFQUFFNkcsUUFBUSxLQUFLLEdBQUd0RyxFQUFFLEVBQUUsTUFBTSxPQUFPUCxFQUFFLE1BQU1qRCxFQUFFLElBQUksSUFBSTZDLEVBQUVJLEVBQUVnQixNQUFNLEVBQUVULEdBQUcxRSxFQUFFbUUsRUFBRWdCLE1BQU1ULEVBQUUsR0FBRyxNQUFNLE9BQU9YLEVBQUUsTUFBTTdDLEdBQUcsTUFBTWxCLEVBQUUsSUFBSUEsRUFBRUEsR0FBRyxTQUFTdzlELEdBQUd0OEQsRUFBRWlELEdBQUdZLFFBQVEzQyxNQUFNLG1CQUFtQmxCLEdBQUcsU0FBU3U4RCxHQUFHdjhELEVBQUVpRCxHQUFHLE9BQU9qRCxFQUFFQSxFQUFFdUssS0FBSSxTQUFTdkssR0FBRyxPQUFPQSxFQUFFaUQsTUFBS2lFLFFBQU8sU0FBU2xILEdBQUcsT0FBT0EsS0FBSSxHQUFHLFNBQVN3OEQsR0FBR3g4RCxFQUFFaUQsRUFBRU8sRUFBRVgsRUFBRS9ELElBQUlrQixFQUFFc0csUUFBUXRHLEVBQUVzRyxNQUFNLEtBQUtoSCxLQUFLbTlELEdBQUcsQ0FBQzM2RCxLQUFLbUIsRUFBRUQsTUFBTVEsRUFBRWs1RCxRQUFRNTlELEdBQUcrRCxJQUFJN0MsRUFBRTI4RCxPQUFNLEVBQUcsU0FBU0MsR0FBRzU4RCxFQUFFaUQsRUFBRU8sRUFBRVgsRUFBRS9ELElBQUlBLEVBQUVrQixFQUFFNjhELGVBQWU3OEQsRUFBRTY4RCxhQUFhLElBQUk3OEQsRUFBRW1GLFFBQVFuRixFQUFFbUYsTUFBTSxLQUFLN0YsS0FBS205RCxHQUFHLENBQUMzNkQsS0FBS21CLEVBQUVELE1BQU1RLEVBQUVrNUQsUUFBUTU5RCxHQUFHK0QsSUFBSTdDLEVBQUUyOEQsT0FBTSxFQUFHLFNBQVNHLEdBQUc5OEQsRUFBRWlELEVBQUVPLEVBQUVYLEdBQUc3QyxFQUFFKzhELFNBQVM5NUQsR0FBR08sRUFBRXhELEVBQUVnOUQsVUFBVTE5RCxLQUFLbTlELEdBQUcsQ0FBQzM2RCxLQUFLbUIsRUFBRUQsTUFBTVEsR0FBR1gsSUFBSSxTQUFTbzZELEdBQUdqOUQsRUFBRWlELEVBQUVPLEVBQUVYLEVBQUUvRCxFQUFFMkQsRUFBRW9ULEVBQUUzUixJQUFJbEUsRUFBRXMyQyxhQUFhdDJDLEVBQUVzMkMsV0FBVyxLQUFLaDNDLEtBQUttOUQsR0FBRyxDQUFDMzZELEtBQUttQixFQUFFc3pDLFFBQVEveUMsRUFBRVIsTUFBTUgsRUFBRXlLLElBQUl4TyxFQUFFbytELGFBQWF6NkQsRUFBRWc4QixVQUFVNW9CLEdBQUczUixJQUFJbEUsRUFBRTI4RCxPQUFNLEVBQUcsU0FBU1EsR0FBR245RCxFQUFFaUQsRUFBRU8sR0FBRyxPQUFPQSxFQUFFLE1BQU1QLEVBQUUsS0FBS2pELEVBQUUsS0FBS0EsRUFBRWlELEVBQUUsU0FBU202RCxHQUFHbjZELEVBQUVPLEVBQUVYLEVBQUUvRCxFQUFFMkQsRUFBRW9ULEVBQUUzUixFQUFFNUIsR0FBRyxJQUFJZ2lELEdBQUd4bEQsRUFBRUEsR0FBR2tCLEdBQUdxOUQsTUFBTS82RCxFQUFFa0IsRUFBRSxJQUFJQSxFQUFFLDhCQUE4QkEsRUFBRSxJQUFJLFVBQVVBLElBQUlBLEVBQUUscUJBQXFCMUUsRUFBRXUrRCxPQUFPditELEVBQUV3K0QsU0FBU2g3RCxFQUFFa0IsRUFBRSxJQUFJQSxFQUFFLDBCQUEwQkEsRUFBRSxJQUFJLFVBQVVBLElBQUlBLEVBQUUsWUFBWTFFLEVBQUVrbUIsaUJBQWlCbG1CLEVBQUVrbUIsUUFBUXhoQixFQUFFMjVELEdBQUcsSUFBSTM1RCxFQUFFbEIsSUFBSXhELEVBQUU2ZSxjQUFjN2UsRUFBRTZlLEtBQUtuYSxFQUFFMjVELEdBQUcsSUFBSTM1RCxFQUFFbEIsSUFBSXhELEVBQUU2dUQsaUJBQWlCN3VELEVBQUU2dUQsUUFBUW5xRCxFQUFFMjVELEdBQUcsSUFBSTM1RCxFQUFFbEIsSUFBSXhELEVBQUV5K0QsZUFBZXorRCxFQUFFeStELE9BQU9qWixFQUFFcmhELEVBQUV1NkQsZUFBZXY2RCxFQUFFdTZELGFBQWEsS0FBS2xaLEVBQUVyaEQsRUFBRWlwQyxTQUFTanBDLEVBQUVpcEMsT0FBTyxJQUFJLElBQUluc0MsRUFBRTA4RCxHQUFHLENBQUN6NUQsTUFBTUgsRUFBRXVVLE9BQU9zbEQsUUFBUXA2RCxHQUFHNEIsR0FBR3BGLElBQUlrQixJQUFJRCxFQUFFMCtCLFVBQVUzL0IsR0FBRyxJQUFJeWxELEVBQUVELEVBQUU5Z0QsR0FBR2dFLE1BQU1DLFFBQVE4OEMsR0FBRzloRCxFQUFFOGhELEVBQUV6aEMsUUFBUS9pQixHQUFHd2tELEVBQUVqbEQsS0FBS1MsR0FBR3VrRCxFQUFFOWdELEdBQUcrZ0QsRUFBRTloRCxFQUFFLENBQUMxQyxFQUFFd2tELEdBQUcsQ0FBQ0EsRUFBRXhrRCxHQUFHQSxFQUFFa0QsRUFBRTA1RCxPQUFNLEVBQUcsU0FBU2MsR0FBR3o5RCxFQUFFaUQsRUFBRU8sR0FBRyxJQUFJWCxFQUFFNjZELEdBQUcxOUQsRUFBRSxJQUFJaUQsSUFBSXk2RCxHQUFHMTlELEVBQUUsVUFBVWlELEdBQUcsR0FBRyxNQUFNSixFQUFFLE9BQU91NUQsR0FBR3Y1RCxHQUFHLElBQUcsSUFBS1csRUFBRSxDQUFDLElBQUkxRSxFQUFFNCtELEdBQUcxOUQsRUFBRWlELEdBQUcsR0FBRyxNQUFNbkUsRUFBRSxPQUFPb25CLEtBQUtDLFVBQVVybkIsSUFBSSxTQUFTNCtELEdBQUcxOUQsRUFBRWlELEVBQUVPLEdBQUcsSUFBSVgsRUFBRSxHQUFHLE9BQU9BLEVBQUU3QyxFQUFFKzhELFNBQVM5NUQsSUFBSSxJQUFJLElBQUluRSxFQUFFa0IsRUFBRWc5RCxVQUFVdjZELEVBQUUsRUFBRW9ULEVBQUUvVyxFQUFFRSxPQUFPeUQsRUFBRW9ULEVBQUVwVCxJQUFJLEdBQUczRCxFQUFFMkQsR0FBR1gsT0FBT21CLEVBQUUsQ0FBQ25FLEVBQUUwdEIsT0FBTy9wQixFQUFFLEdBQUcsTUFBTSxPQUFPZSxVQUFVeEQsRUFBRSs4RCxTQUFTOTVELEdBQUdKLEVBQUUsU0FBUzg2RCxHQUFHMzlELEVBQUVpRCxHQUFHLElBQUksSUFBSU8sRUFBRXhELEVBQUVnOUQsVUFBVW42RCxFQUFFLEVBQUUvRCxFQUFFMEUsRUFBRXhFLE9BQU82RCxFQUFFL0QsRUFBRStELElBQUksQ0FBQyxJQUFJSixFQUFFZSxFQUFFWCxHQUFHLEdBQUdJLEVBQUU0QyxLQUFLcEQsRUFBRVgsTUFBTSxPQUFPMEIsRUFBRWdwQixPQUFPM3BCLEVBQUUsR0FBR0osR0FBRyxTQUFTZzZELEdBQUd6OEQsRUFBRWlELEdBQUcsT0FBT0EsSUFBSSxNQUFNQSxFQUFFNGtDLFFBQVE3bkMsRUFBRTZuQyxNQUFNNWtDLEVBQUU0a0MsT0FBTyxNQUFNNWtDLEVBQUV3akIsTUFBTXptQixFQUFFeW1CLElBQUl4akIsRUFBRXdqQixNQUFNem1CLEVBQUUsU0FBUzQ5RCxHQUFHNTlELEVBQUVpRCxFQUFFTyxHQUFHLElBQUlYLEVBQUVXLEdBQUcsR0FBRzFFLEVBQUUrRCxFQUFFZzdELE9BQU9wN0QsRUFBRSxNQUFNSSxFQUFFdVUsT0FBTzNVLEVBQUUsOENBQThDM0QsSUFBSTJELEVBQUUsTUFBTUEsRUFBRSxLQUFLLElBQUlvVCxFQUFFaW9ELEdBQUc3NkQsRUFBRVIsR0FBR3pDLEVBQUU2eUQsTUFBTSxDQUFDN3ZELE1BQU0sSUFBSUMsRUFBRSxJQUFJdXpDLFdBQVd0d0IsS0FBS0MsVUFBVWxqQixHQUFHb0ssU0FBUyxtQkFBbUJ3SSxFQUFFLEtBQUssU0FBU2lvRCxHQUFHOTlELEVBQUVpRCxHQUFHLElBQUlPLEVBQUUsU0FBU3hELEdBQUcsR0FBR0EsRUFBRUEsRUFBRW9YLE9BQU93a0QsR0FBRzU3RCxFQUFFaEIsT0FBT2dCLEVBQUU4SixRQUFRLEtBQUssR0FBRzlKLEVBQUUrOUQsWUFBWSxLQUFLbkMsR0FBRyxFQUFFLE9BQU9HLEdBQUcvN0QsRUFBRSs5RCxZQUFZLE9BQU8sRUFBRSxDQUFDajlCLElBQUk5Z0MsRUFBRWlFLE1BQU0sRUFBRTgzRCxJQUFJejRELElBQUksSUFBSXRELEVBQUVpRSxNQUFNODNELEdBQUcsR0FBRyxLQUFLLENBQUNqN0IsSUFBSTlnQyxFQUFFc0QsSUFBSSxNQUFzQixJQUFoQnU0RCxHQUFHNzdELEVBQUUrN0QsR0FBR0MsR0FBR0MsR0FBRyxHQUFRK0IsTUFBTUMsR0FBR25DLEdBQUdvQyxNQUFNQyxHQUFHckMsSUFBSSxLQUFLQSxJQUFJc0MsR0FBR3RDLElBQUksTUFBTSxDQUFDaDdCLElBQUk5Z0MsRUFBRWlFLE1BQU0sRUFBRSszRCxJQUFJMTRELElBQUl0RCxFQUFFaUUsTUFBTSszRCxHQUFHLEVBQUVDLEtBQXpSLENBQStSajhELEdBQUcsT0FBTyxPQUFPd0QsRUFBRUYsSUFBSXRELEVBQUUsSUFBSWlELEVBQUUsUUFBUU8sRUFBRXM5QixJQUFJLEtBQUt0OUIsRUFBRUYsSUFBSSxLQUFLTCxFQUFFLElBQUksU0FBU2k3RCxLQUFLLE9BQU9yQyxHQUFHMTZDLGFBQWE0NkMsSUFBSSxTQUFTaUMsS0FBSyxPQUFPakMsSUFBSUgsR0FBRyxTQUFTcUMsR0FBR2orRCxHQUFHLE9BQU8sS0FBS0EsR0FBRyxLQUFLQSxFQUFFLFNBQVNvK0QsR0FBR3ArRCxHQUFHLElBQUlpRCxFQUFFLEVBQUUsSUFBSSs0RCxHQUFHRCxJQUFJaUMsTUFBTSxHQUFHQyxHQUFHaitELEVBQUVrK0QsTUFBTUMsR0FBR24rRCxRQUFRLEdBQUcsS0FBS0EsR0FBR2lELElBQUksS0FBS2pELEdBQUdpRCxJQUFJLElBQUlBLEVBQUUsQ0FBQ2c1RCxHQUFHRixHQUFHLE9BQU8sU0FBU29DLEdBQUduK0QsR0FBRyxJQUFJLElBQUlpRCxFQUFFakQsR0FBR2crRCxPQUFPaCtELEVBQUVrK0QsUUFBUWo3RCxLQUFLLElBQUlvN0QsR0FBR0MsR0FBRyxNQUFlLFNBQVNDLEdBQUd2K0QsRUFBRWlELEVBQUVPLEdBQUcsSUFBSVgsRUFBRXc3RCxHQUFHLE9BQU8sU0FBU3YvRCxJQUFJLE9BQU9tRSxFQUFFa2EsTUFBTSxLQUFLdlcsWUFBWTQzRCxHQUFHeCtELEVBQUVsQixFQUFFMEUsRUFBRVgsSUFBSSxJQUFJNDdELEdBQUc5UixNQUFNdEYsSUFBRzNwQixPQUFPMnBCLEdBQUUsS0FBSyxJQUFJLFNBQVNxWCxHQUFHMStELEVBQUVpRCxFQUFFTyxFQUFFWCxHQUFHLEdBQUc0N0QsR0FBRyxDQUFDLElBQUkzL0QsRUFBRWkxRCxHQUFHdHhELEVBQUVRLEVBQUVBLEVBQUVSLEVBQUVrOEQsU0FBUyxTQUFTMytELEdBQUcsR0FBR0EsRUFBRTRCLFNBQVM1QixFQUFFK3FCLGVBQWUvcUIsRUFBRW0wRCxXQUFXcjFELEdBQUdrQixFQUFFbTBELFdBQVcsR0FBR24wRCxFQUFFNEIsT0FBT2c5RCxnQkFBZ0JuK0QsU0FBUyxPQUFPZ0MsRUFBRTBhLE1BQU0xWSxLQUFLbUMsWUFBWXkzRCxHQUFHejBELGlCQUFpQjVKLEVBQUVpRCxFQUFFdWtELEdBQUUsQ0FBQ3hpQyxRQUFReGhCLEVBQUVtcUQsUUFBUTlxRCxHQUFHVyxHQUFHLFNBQVNnN0QsR0FBR3grRCxFQUFFaUQsRUFBRU8sRUFBRVgsSUFBSUEsR0FBR3c3RCxJQUFJN3hELG9CQUFvQnhNLEVBQUVpRCxFQUFFMDdELFVBQVUxN0QsRUFBRU8sR0FBRyxTQUFTcTdELEdBQUc3K0QsRUFBRTZDLEdBQUcsSUFBSUksRUFBRWpELEVBQUV2QixLQUFLZ2YsTUFBTXhhLEVBQUVKLEVBQUVwRSxLQUFLZ2YsSUFBSSxDQUFDLElBQUkzZSxFQUFFK0QsRUFBRXBFLEtBQUtnZixJQUFJLEdBQUdoYixFQUFFekMsRUFBRXZCLEtBQUtnZixJQUFJLEdBQUc0Z0QsR0FBR3g3RCxFQUFFa21ELElBQUksU0FBUy9vRCxHQUFHLEdBQUd3RCxFQUFFeEQsRUFBSSxLQUFHLENBQUMsSUFBSWlELEVBQUVna0QsRUFBRSxTQUFTLFFBQVFqbkQsRUFBRWlELEdBQUcsR0FBR2dFLE9BQU9qSCxFQUFJLElBQUVBLEVBQUVpRCxJQUFJLFdBQVdqRCxFQUFJLElBQUV3RCxFQUFFeEQsRUFBSSxPQUFLQSxFQUFFOCtELE9BQU8sR0FBRzczRCxPQUFPakgsRUFBSSxJQUFFQSxFQUFFOCtELFFBQVEsV0FBVzkrRCxFQUFJLEtBQTNKLENBQStKbEIsR0FBR2d2RCxHQUFHaHZELEVBQUUyRCxFQUFFaThELEdBQUdGLEdBQUdELEdBQUcxN0QsRUFBRXE3QixTQUFTbWdDLFFBQUcsR0FBUSxJQUFJVSxHQUFHQyxHQUFHLENBQUMzN0QsT0FBT3c3RCxHQUFHN2dDLE9BQU82Z0MsSUFBSSxTQUFTSSxHQUFHai9ELEVBQUU2QyxHQUFHLElBQUlJLEVBQUVqRCxFQUFFdkIsS0FBSzJ3RCxZQUFZbnNELEVBQUVKLEVBQUVwRSxLQUFLMndELFVBQVUsQ0FBQyxJQUFJdHdELEVBQUUyRCxFQUFFb1QsRUFBRWhULEVBQUVrbUQsSUFBSTdrRCxFQUFFbEUsRUFBRXZCLEtBQUsyd0QsVUFBVSxHQUFHOXNELEVBQUVPLEVBQUVwRSxLQUFLMndELFVBQVUsR0FBRyxJQUFJdHdELEtBQUswRSxFQUFFbEIsRUFBRTJuRCxVQUFVM25ELEVBQUVPLEVBQUVwRSxLQUFLMndELFNBQVN0SyxFQUFFLEdBQUd4aUQsSUFBSTRCLEVBQUVwRixLQUFLd0QsSUFBSXVULEVBQUUvVyxHQUFHLElBQUksSUFBSUEsS0FBS3dELEVBQUUsQ0FBQyxHQUFHRyxFQUFFSCxFQUFFeEQsR0FBRyxnQkFBZ0JBLEdBQUcsY0FBY0EsRUFBRSxDQUFDLEdBQUcrRCxFQUFFMFEsV0FBVzFRLEVBQUUwUSxTQUFTdlUsT0FBTyxHQUFHeUQsSUFBSXlCLEVBQUVwRixHQUFHLFNBQVMsSUFBSStXLEVBQUU1RixXQUFXalIsUUFBUTZXLEVBQUUwakQsWUFBWTFqRCxFQUFFNUYsV0FBVyxJQUFJLEdBQUcsVUFBVW5SLEdBQUcsYUFBYStXLEVBQUV6RixRQUFRLENBQUN5RixFQUFFcXBELE9BQU96OEQsRUFBRSxJQUFJNmhELEVBQUVyaEQsRUFBRVIsR0FBRyxHQUFHaWMsT0FBT2pjLEdBQUcwOEQsR0FBR3RwRCxFQUFFeXVDLEtBQUt6dUMsRUFBRTdTLE1BQU1zaEQsUUFBUSxHQUFHLGNBQWN4bEQsR0FBRys1RCxHQUFHaGpELEVBQUV6RixVQUFVbk4sRUFBRTRTLEVBQUU5RixXQUFXLEVBQUVndkQsR0FBR0EsSUFBSXQrRCxTQUFTQyxjQUFjLFFBQVFxUCxVQUFVLFFBQVF0TixFQUFFLFNBQVMsSUFBSSxJQUFJMUMsRUFBRWcvRCxHQUFHSyxXQUFXdnBELEVBQUV1cEQsWUFBWXZwRCxFQUFFMGpELFlBQVkxakQsRUFBRXVwRCxZQUFZLEtBQUtyL0QsRUFBRXEvRCxZQUFZdnBELEVBQUUxVCxZQUFZcEMsRUFBRXEvRCxpQkFBaUIsR0FBRzM4RCxJQUFJeUIsRUFBRXBGLEdBQUcsSUFBSStXLEVBQUUvVyxHQUFHMkQsRUFBRSxNQUFNekMsT0FBTyxTQUFTbS9ELEdBQUduL0QsRUFBRWlELEdBQUcsT0FBT2pELEVBQUVxL0QsWUFBWSxXQUFXci9ELEVBQUVvUSxTQUFTLFNBQVNwUSxFQUFFaUQsR0FBRyxJQUFJTyxHQUFFLEVBQUcsSUFBSUEsRUFBRS9DLFNBQVM2K0QsZ0JBQWdCdC9ELEVBQUUsTUFBTUEsSUFBSSxPQUFPd0QsR0FBR3hELEVBQUVnRCxRQUFRQyxFQUF0RixDQUF5RmpELEVBQUVpRCxJQUFJLFNBQVNqRCxFQUFFaUQsR0FBRyxJQUFJSixFQUFFN0MsRUFBRWdELE1BQU1sRSxFQUFFa0IsRUFBRXUvRCxZQUFZLEdBQUcvN0QsRUFBRTFFLEdBQUcsQ0FBQyxHQUFHQSxFQUFFKytELE9BQU8sT0FBT3RaLEVBQUUxaEQsS0FBSzBoRCxFQUFFdGhELEdBQUcsR0FBR25FLEVBQUVzWSxLQUFLLE9BQU92VSxFQUFFdVUsU0FBU25VLEVBQUVtVSxPQUFPLE9BQU92VSxJQUFJSSxFQUFwSSxDQUF1SWpELEVBQUVpRCxJQUFJLElBQUl1OEQsR0FBRyxDQUFDbjhELE9BQU80N0QsR0FBR2poQyxPQUFPaWhDLElBQUlRLEdBQUdqYixHQUFFLFNBQVN4a0QsR0FBRyxJQUFJaUQsRUFBRSxHQUFHTyxFQUFFLFFBQVEsT0FBT3hELEVBQUV5WCxNQUFNLGlCQUFpQnBRLFNBQVEsU0FBU3JILEdBQUcsR0FBR0EsRUFBRSxDQUFDLElBQUk2QyxFQUFFN0MsRUFBRXlYLE1BQU1qVSxHQUFHWCxFQUFFN0QsT0FBTyxJQUFJaUUsRUFBRUosRUFBRSxHQUFHdVUsUUFBUXZVLEVBQUUsR0FBR3VVLFlBQVduVSxLQUFJLFNBQVN5OEQsR0FBRzEvRCxHQUFHLElBQUlpRCxFQUFFMDhELEdBQUczL0QsRUFBRThQLE9BQU8sT0FBTzlQLEVBQUU0L0QsWUFBWTlhLEVBQUU5a0QsRUFBRTQvRCxZQUFZMzhELEdBQUdBLEVBQUUsU0FBUzA4RCxHQUFHMy9ELEdBQUcsT0FBT3dILE1BQU1DLFFBQVF6SCxHQUFHK2tELEVBQUUva0QsR0FBRyxpQkFBaUJBLEVBQUV5L0QsR0FBR3ovRCxHQUFHQSxFQUFFLElBQUk2L0QsR0FBR0MsR0FBRyxNQUFNQyxHQUFHLGlCQUFpQkMsR0FBRyxTQUFTaGdFLEVBQUVpRCxFQUFFTyxHQUFHLEdBQUdzOEQsR0FBR2o2RCxLQUFLNUMsR0FBR2pELEVBQUU4UCxNQUFNbXdELFlBQVloOUQsRUFBRU8sUUFBUSxHQUFHdThELEdBQUdsNkQsS0FBS3JDLEdBQUd4RCxFQUFFOFAsTUFBTW13RCxZQUFZdmIsRUFBRXpoRCxHQUFHTyxFQUFFd0MsUUFBUSs1RCxHQUFHLElBQUksaUJBQWlCLENBQUMsSUFBSWw5RCxFQUFFcTlELEdBQUdqOUQsR0FBRyxHQUFHdUUsTUFBTUMsUUFBUWpFLEdBQUcsSUFBSSxJQUFJMUUsRUFBRSxFQUFFMkQsRUFBRWUsRUFBRXhFLE9BQU9GLEVBQUUyRCxFQUFFM0QsSUFBSWtCLEVBQUU4UCxNQUFNak4sR0FBR1csRUFBRTFFLFFBQVFrQixFQUFFOFAsTUFBTWpOLEdBQUdXLElBQUkyOEQsR0FBRyxDQUFDLFNBQVMsTUFBTSxNQUFNRCxHQUFHMWIsR0FBRSxTQUFTeGtELEdBQUcsR0FBRzYvRCxHQUFHQSxJQUFJcC9ELFNBQVNDLGNBQWMsT0FBT29QLE1BQU0sWUFBWTlQLEVBQUU4VixFQUFFOVYsS0FBS0EsS0FBSzYvRCxHQUFHLE9BQU83L0QsRUFBRSxJQUFJLElBQUlpRCxFQUFFakQsRUFBRTRqQixPQUFPLEdBQUd2VCxjQUFjclEsRUFBRWlFLE1BQU0sR0FBR1QsRUFBRSxFQUFFQSxFQUFFMjhELEdBQUduaEUsT0FBT3dFLElBQUksQ0FBQyxJQUFJWCxFQUFFczlELEdBQUczOEQsR0FBR1AsRUFBRSxHQUFHSixLQUFLZzlELEdBQUcsT0FBT2g5RCxNQUFLLFNBQVN1OUQsR0FBR3BnRSxFQUFFNkMsR0FBRyxJQUFJL0QsRUFBRStELEVBQUVwRSxLQUFLZ0UsRUFBRXpDLEVBQUV2QixLQUFLLEtBQUt3RSxFQUFFbkUsRUFBRThnRSxjQUFjMzhELEVBQUVuRSxFQUFFZ1IsUUFBUTdNLEVBQUVSLEVBQUVtOUQsY0FBYzM4RCxFQUFFUixFQUFFcU4sUUFBUSxDQUFDLElBQUkrRixFQUFFM1IsRUFBRTVCLEVBQUVPLEVBQUVrbUQsSUFBSXpFLEVBQUU3aEQsRUFBRW05RCxZQUFZNy9ELEVBQUUwQyxFQUFFNDlELGlCQUFpQjU5RCxFQUFFcU4sT0FBTyxHQUFHeTBDLEVBQUVELEdBQUd2a0QsRUFBRWlCLEVBQUUyK0QsR0FBRzk4RCxFQUFFcEUsS0FBS3FSLFFBQVEsR0FBR2pOLEVBQUVwRSxLQUFLNGhFLGdCQUFnQjc4RCxFQUFFeEMsRUFBRWlwRCxRQUFRbkYsRUFBRSxHQUFHOWpELEdBQUdBLEVBQUUsSUFBSXVCLEVBQUUsU0FBU3ZDLEVBQUVpRCxHQUFtQixJQUFoQixJQUFJTyxFQUFFWCxFQUFFLEdBQWdCL0QsRUFBRWtCLEVBQUVsQixFQUFFK2hCLG9CQUFvQi9oQixFQUFFQSxFQUFFK2hCLGtCQUFrQjJ3QyxTQUFTMXlELEVBQUVMLE9BQU8rRSxFQUFFazhELEdBQUc1Z0UsRUFBRUwsUUFBUXFtRCxFQUFFamlELEVBQUVXLElBQUlBLEVBQUVrOEQsR0FBRzEvRCxFQUFFdkIsUUFBUXFtRCxFQUFFamlELEVBQUVXLEdBQUcsSUFBSSxJQUFJZixFQUFFekMsRUFBRXlDLEVBQUVBLEVBQUVzYyxRQUFRdGMsRUFBRWhFLE9BQU8rRSxFQUFFazhELEdBQUdqOUQsRUFBRWhFLFFBQVFxbUQsRUFBRWppRCxFQUFFVyxHQUFHLE9BQU9YLEVBQW5OLENBQXNOQSxHQUFNLElBQUlxQixLQUFLcWdELEVBQUV0aEQsRUFBRVYsRUFBRTJCLEtBQUs4N0QsR0FBRzE5RCxFQUFFNEIsRUFBRSxJQUFJLElBQUlBLEtBQUszQixHQUFHc1QsRUFBRXRULEVBQUUyQixNQUFNcWdELEVBQUVyZ0QsSUFBSTg3RCxHQUFHMTlELEVBQUU0QixFQUFFLE1BQU0yUixFQUFFLEdBQUdBLElBQUksSUFBSXlxRCxHQUFHLENBQUNqOUQsT0FBTys4RCxHQUFHcGlDLE9BQU9vaUMsSUFBSUcsR0FBRyxNQUFNLFNBQVNDLEdBQUd4Z0UsRUFBRWlELEdBQUcsR0FBR0EsSUFBSUEsRUFBRUEsRUFBRW1VLFFBQVEsR0FBR3BYLEVBQUV5NkMsVUFBVXgzQyxFQUFFNkcsUUFBUSxNQUFNLEVBQUU3RyxFQUFFd1UsTUFBTThvRCxJQUFJbDVELFNBQVEsU0FBU3BFLEdBQUcsT0FBT2pELEVBQUV5NkMsVUFBVUMsSUFBSXozQyxNQUFLakQsRUFBRXk2QyxVQUFVQyxJQUFJejNDLE9BQU8sQ0FBQyxJQUFJTyxFQUFFLEtBQUt4RCxFQUFFZ0wsYUFBYSxVQUFVLElBQUksSUFBSXhILEVBQUVzRyxRQUFRLElBQUk3RyxFQUFFLEtBQUssR0FBR2pELEVBQUVjLGFBQWEsU0FBUzBDLEVBQUVQLEdBQUdtVSxTQUFTLFNBQVN0UCxHQUFHOUgsRUFBRWlELEdBQUcsR0FBR0EsSUFBSUEsRUFBRUEsRUFBRW1VLFFBQVEsR0FBR3BYLEVBQUV5NkMsVUFBVXgzQyxFQUFFNkcsUUFBUSxNQUFNLEVBQUU3RyxFQUFFd1UsTUFBTThvRCxJQUFJbDVELFNBQVEsU0FBU3BFLEdBQUcsT0FBT2pELEVBQUV5NkMsVUFBVTFWLE9BQU85aEMsTUFBS2pELEVBQUV5NkMsVUFBVTFWLE9BQU85aEMsR0FBR2pELEVBQUV5NkMsVUFBVXo3QyxRQUFRZ0IsRUFBRWk3RCxnQkFBZ0IsYUFBYSxDQUFDLElBQUksSUFBSXozRCxFQUFFLEtBQUt4RCxFQUFFZ0wsYUFBYSxVQUFVLElBQUksSUFBSW5JLEVBQUUsSUFBSUksRUFBRSxJQUFJTyxFQUFFc0csUUFBUWpILElBQUksR0FBR1csRUFBRUEsRUFBRXdDLFFBQVFuRCxFQUFFLE1BQU1XLEVBQUVBLEVBQUU0VCxRQUFRcFgsRUFBRWMsYUFBYSxRQUFRMEMsR0FBR3hELEVBQUVpN0QsZ0JBQWdCLFVBQVUsU0FBU3dGLEdBQUd6Z0UsR0FBRyxHQUFHQSxFQUFFLENBQUMsR0FBRyxpQkFBaUJBLEVBQUUsQ0FBQyxJQUFJaUQsRUFBRSxHQUFHLE9BQU0sSUFBS2pELEVBQUU2UCxLQUFLaTFDLEVBQUU3aEQsRUFBRXk5RCxHQUFHMWdFLEVBQUU4QixNQUFNLE1BQU1nakQsRUFBRTdoRCxFQUFFakQsR0FBR2lELEVBQUUsTUFBTSxpQkFBaUJqRCxFQUFFMGdFLEdBQUcxZ0UsUUFBRyxHQUFRLElBQUkwZ0UsR0FBR2xjLEdBQUUsU0FBU3hrRCxHQUFHLE1BQU0sQ0FBQzJnRSxXQUFXM2dFLEVBQUUsU0FBUzRnRSxhQUFhNWdFLEVBQUUsWUFBWTZnRSxpQkFBaUI3Z0UsRUFBRSxnQkFBZ0I4Z0UsV0FBVzlnRSxFQUFFLFNBQVMrZ0UsYUFBYS9nRSxFQUFFLFlBQVlnaEUsaUJBQWlCaGhFLEVBQUUsb0JBQW1CaWhFLEdBQUd0YSxJQUFJTyxFQUFFZ2EsR0FBRyxhQUFhQyxHQUFHLFlBQVlDLEdBQUcsYUFBYUMsR0FBRyxnQkFBZ0JDLEdBQUcsWUFBWUMsR0FBRyxlQUFlTixVQUFLLElBQVNsOUQsT0FBT3k5RCxzQkFBaUIsSUFBU3o5RCxPQUFPMDlELHdCQUF3QkwsR0FBRyxtQkFBbUJDLEdBQUcsNEJBQXVCLElBQVN0OUQsT0FBTzI5RCxxQkFBZ0IsSUFBUzM5RCxPQUFPNDlELHVCQUF1QkwsR0FBRyxrQkFBa0JDLEdBQUcsdUJBQXVCLElBQUlLLEdBQUdqYixFQUFFNWlELE9BQU84OUQsc0JBQXNCOTlELE9BQU84OUQsc0JBQXNCdCtELEtBQUtRLFFBQVE5QixXQUFXLFNBQVNqQyxHQUFHLE9BQU9BLEtBQUssU0FBUzhoRSxHQUFHOWhFLEdBQUc0aEUsSUFBRyxXQUFXQSxHQUFHNWhFLE1BQUssU0FBUytoRSxHQUFHL2hFLEVBQUVpRCxHQUFHLElBQUlPLEVBQUV4RCxFQUFFMDdELHFCQUFxQjE3RCxFQUFFMDdELG1CQUFtQixJQUFJbDRELEVBQUVzRyxRQUFRN0csR0FBRyxJQUFJTyxFQUFFbEUsS0FBSzJELEdBQUd1OUQsR0FBR3hnRSxFQUFFaUQsSUFBSSxTQUFTKytELEdBQUdoaUUsRUFBRWlELEdBQUdqRCxFQUFFMDdELG9CQUFvQno4QyxFQUFFamYsRUFBRTA3RCxtQkFBbUJ6NEQsR0FBRzZFLEdBQUc5SCxFQUFFaUQsR0FBRyxTQUFTZy9ELEdBQUdqaUUsRUFBRWlELEVBQUVPLEdBQUcsSUFBSVgsRUFBRXEvRCxHQUFHbGlFLEVBQUVpRCxHQUFHbkUsRUFBRStELEVBQUVuQixLQUFLZSxFQUFFSSxFQUFFakMsUUFBUWlWLEVBQUVoVCxFQUFFcy9ELFVBQVUsSUFBSXJqRSxFQUFFLE9BQU8wRSxJQUFJLElBQUlVLEVBQUVwRixJQUFJb2lFLEdBQUdHLEdBQUdFLEdBQUdqL0QsRUFBRSxFQUFFZ2lELEVBQUUsV0FBV3RrRCxFQUFFd00sb0JBQW9CdEksRUFBRW5FLEdBQUd5RCxLQUFLekQsRUFBRSxTQUFTa0QsR0FBR0EsRUFBRXJCLFNBQVM1QixLQUFLc0MsR0FBR3VULEdBQUd5dUMsS0FBS3JpRCxZQUFXLFdBQVdLLEVBQUV1VCxHQUFHeXVDLE1BQUs3aEQsRUFBRSxHQUFHekMsRUFBRTRKLGlCQUFpQjFGLEVBQUVuRSxHQUFHLElBQUlxaUUsR0FBRyx5QkFBeUIsU0FBU0YsR0FBR2xpRSxFQUFFaUQsR0FBRyxJQUFJTyxFQUFFWCxFQUFFa0IsT0FBT3MrRCxpQkFBaUJyaUUsR0FBR2xCLEdBQUcrRCxFQUFFdStELEdBQUcsVUFBVSxJQUFJM3BELE1BQU0sTUFBTWhWLEdBQUdJLEVBQUV1K0QsR0FBRyxhQUFhLElBQUkzcEQsTUFBTSxNQUFNNUIsRUFBRXlzRCxHQUFHeGpFLEVBQUUyRCxHQUFHeUIsR0FBR3JCLEVBQUV5K0QsR0FBRyxVQUFVLElBQUk3cEQsTUFBTSxNQUFNblYsR0FBR08sRUFBRXkrRCxHQUFHLGFBQWEsSUFBSTdwRCxNQUFNLE1BQU02c0MsRUFBRWdlLEdBQUdwK0QsRUFBRTVCLEdBQUd2QyxFQUFFLEVBQUV3a0QsRUFBRSxFQUFFLE9BQU90aEQsSUFBSWkrRCxHQUFHcnJELEVBQUUsSUFBSXJTLEVBQUUwOUQsR0FBR25oRSxFQUFFOFYsRUFBRTB1QyxFQUFFOWhELEVBQUV6RCxRQUFRaUUsSUFBSWsrRCxHQUFHN2MsRUFBRSxJQUFJOWdELEVBQUUyOUQsR0FBR3BoRSxFQUFFdWtELEVBQUVDLEVBQUVqaUQsRUFBRXRELFFBQVF1bEQsR0FBRy9nRCxHQUFHekQsRUFBRTBRLEtBQUtzakIsSUFBSWxlLEVBQUV5dUMsSUFBSSxFQUFFenVDLEVBQUV5dUMsRUFBRTRjLEdBQUdDLEdBQUcsTUFBTTM5RCxJQUFJMDlELEdBQUd6K0QsRUFBRXpELE9BQU9zRCxFQUFFdEQsT0FBTyxFQUFFLENBQUMwQyxLQUFLOEIsRUFBRTVDLFFBQVFiLEVBQUVvaUUsVUFBVTVkLEVBQUVnZSxhQUFhLytELElBQUkwOUQsSUFBSWtCLEdBQUd2OEQsS0FBS2hELEVBQUV1K0QsR0FBRyxjQUFjLFNBQVNrQixHQUFHdGlFLEVBQUVpRCxHQUFHLEtBQUtqRCxFQUFFaEIsT0FBT2lFLEVBQUVqRSxRQUFRZ0IsRUFBRUEsRUFBRWlILE9BQU9qSCxHQUFHLE9BQU95USxLQUFLc2pCLElBQUk1VyxNQUFNLEtBQUtsYSxFQUFFc0gsS0FBSSxTQUFTdEgsRUFBRU8sR0FBRyxPQUFPZy9ELEdBQUd2L0QsR0FBR3UvRCxHQUFHeGlFLEVBQUV3RCxRQUFPLFNBQVNnL0QsR0FBR3hpRSxHQUFHLE9BQU8sSUFBSTA5QixPQUFPMTlCLEVBQUVpRSxNQUFNLEdBQUcsR0FBRytCLFFBQVEsSUFBSSxNQUFNLFNBQVN5OEQsR0FBR3ppRSxFQUFFNkMsR0FBRyxJQUFJL0QsRUFBRWtCLEVBQUUrb0QsSUFBSXZsRCxFQUFFMUUsRUFBRTRqRSxZQUFZNWpFLEVBQUU0akUsU0FBUzd4QyxXQUFVLEVBQUcveEIsRUFBRTRqRSxZQUFZLElBQUk3c0QsRUFBRTRxRCxHQUFHemdFLEVBQUV2QixLQUFLMmlDLFlBQVksSUFBSW4rQixFQUFFNFMsS0FBS3JTLEVBQUUxRSxFQUFFNmpFLFdBQVcsSUFBSTdqRSxFQUFFOGpFLFNBQVMsQ0FBQyxJQUFJLElBQUkxK0QsRUFBRTJSLEVBQUVoRyxJQUFJdk4sRUFBRXVULEVBQUVuVSxLQUFLNGlELEVBQUV6dUMsRUFBRThxRCxXQUFXNWdFLEVBQUU4VixFQUFFK3FELGFBQWE1L0QsRUFBRTZVLEVBQUVnckQsaUJBQWlCdCtELEVBQUVzVCxFQUFFZ3RELFlBQVl0ekMsRUFBRTFaLEVBQUVpdEQsY0FBYzdqRCxFQUFFcEosRUFBRWt0RCxrQkFBa0IxZ0UsRUFBRXdULEVBQUVzVyxZQUFZM2MsRUFBRXFHLEVBQUVtdEQsTUFBTXhlLEVBQUUzdUMsRUFBRW90RCxXQUFXcGtELEVBQUVoSixFQUFFcXRELGVBQWVwdEQsRUFBRUQsRUFBRXN0RCxhQUFhMWUsRUFBRTV1QyxFQUFFdXRELE9BQU9yM0QsRUFBRThKLEVBQUV3dEQsWUFBWTNlLEVBQUU3dUMsRUFBRXl0RCxnQkFBZ0IvekQsRUFBRXNHLEVBQUUwdEQsU0FBUzFlLEVBQUV5TSxHQUFHeE0sRUFBRXdNLEdBQUc1eEMsT0FBT29sQyxHQUFHQSxFQUFFL2xDLFFBQVE4bEMsRUFBRUMsRUFBRTVtQixRQUFRNG1CLEVBQUVBLEVBQUUvbEMsT0FBTyxJQUFJZ21DLEdBQUdGLEVBQUVrTixhQUFhL3hELEVBQUVvcEQsYUFBYSxJQUFJckUsR0FBR04sR0FBRyxLQUFLQSxFQUFFLENBQUMsSUFBSU8sRUFBRUQsR0FBR3hpRCxFQUFFQSxFQUFFK2hELEVBQUVXLEVBQUVGLEdBQUc5bEMsRUFBRUEsRUFBRWplLEVBQUVra0QsRUFBRUgsR0FBR3gxQixFQUFFQSxFQUFFeHZCLEVBQUVvbEQsRUFBRUosR0FBR2p2QyxHQUFHelQsRUFBRStqQixFQUFFMitCLEdBQUcsbUJBQW1CTixFQUFFQSxFQUFFajFDLEVBQUU4MUMsRUFBRVAsR0FBR2g1QyxHQUFHeTRDLEVBQUVlLEVBQUVSLEdBQUdMLEdBQUc3bEMsRUFBRTJtQyxFQUFFakIsRUFBRTloRCxFQUFFOE0sR0FBR0EsRUFBRXl6RCxNQUFNenpELEdBQUdrMkMsR0FBRSxJQUFLdmhELElBQUlnakQsRUFBRTE0QyxFQUFFZzFELEdBQUdwOUMsR0FBR21nQyxFQUFFem5ELEVBQUU2akUsU0FBU3RkLEdBQUUsV0FBV0ksSUFBSXVjLEdBQUdsakUsRUFBRW9tRCxHQUFHOGMsR0FBR2xqRSxFQUFFbW1ELElBQUlzQixFQUFFMTFCLFdBQVc0MEIsR0FBR3VjLEdBQUdsakUsRUFBRWttRCxHQUFHTyxHQUFHQSxFQUFFem1ELElBQUl3bUQsR0FBR0EsRUFBRXhtRCxHQUFHQSxFQUFFNmpFLFNBQVMsUUFBTzNpRSxFQUFFdkIsS0FBS2dsRSxNQUFNMVYsR0FBRy90RCxFQUFFLFVBQVMsV0FBVyxJQUFJaUQsRUFBRW5FLEVBQUUwNkQsV0FBV2gyRCxFQUFFUCxHQUFHQSxFQUFFeWdFLFVBQVV6Z0UsRUFBRXlnRSxTQUFTMWpFLEVBQUVzRCxLQUFLRSxHQUFHQSxFQUFFaVEsTUFBTXpULEVBQUV5VCxLQUFLalEsRUFBRXVsRCxJQUFJMlosVUFBVWwvRCxFQUFFdWxELElBQUkyWixXQUFXdDhDLEdBQUdBLEVBQUV0bkIsRUFBRXluRCxNQUFLcEIsR0FBR0EsRUFBRXJtRCxHQUFHMm1ELElBQUlzYyxHQUFHampFLEVBQUVrbUQsR0FBRytjLEdBQUdqakUsRUFBRW1tRCxHQUFHNmMsSUFBRyxXQUFXRSxHQUFHbGpFLEVBQUVrbUQsR0FBR3VCLEVBQUUxMUIsWUFBWWt4QyxHQUFHampFLEVBQUVvbUQsR0FBRzEyQyxJQUFJbTFELEdBQUduZSxHQUFHdmpELFdBQVdza0QsRUFBRWYsR0FBR3ljLEdBQUduakUsRUFBRXdELEVBQUVpa0QsU0FBUXZtRCxFQUFFdkIsS0FBS2dsRSxPQUFPNWdFLEdBQUdBLElBQUl1akIsR0FBR0EsRUFBRXRuQixFQUFFeW5ELElBQUlkLEdBQUdqM0MsR0FBRyszQyxNQUFNLFNBQVNxZCxHQUFHNWpFLEVBQUU2QyxHQUFHLElBQUkvRCxFQUFFa0IsRUFBRStvRCxJQUFJdmxELEVBQUUxRSxFQUFFNmpFLFlBQVk3akUsRUFBRTZqRSxTQUFTOXhDLFdBQVUsRUFBRy94QixFQUFFNmpFLFlBQVksSUFBSTlzRCxFQUFFNHFELEdBQUd6Z0UsRUFBRXZCLEtBQUsyaUMsWUFBWSxHQUFHbitCLEVBQUU0UyxJQUFJLElBQUkvVyxFQUFFOGpFLFNBQVMsT0FBTy8vRCxJQUFJLElBQUlXLEVBQUUxRSxFQUFFNGpFLFVBQVUsQ0FBQyxJQUFJeCtELEVBQUUyUixFQUFFaEcsSUFBSXZOLEVBQUV1VCxFQUFFblUsS0FBSzRpRCxFQUFFenVDLEVBQUVpckQsV0FBVy9nRSxFQUFFOFYsRUFBRWtyRCxhQUFhLy9ELEVBQUU2VSxFQUFFbXJELGlCQUFpQnorRCxFQUFFc1QsRUFBRWd1RCxZQUFZdDBDLEVBQUUxWixFQUFFaXVELE1BQU03a0QsRUFBRXBKLEVBQUVrdUQsV0FBVzFoRSxFQUFFd1QsRUFBRW11RCxlQUFleDBELEVBQUVxRyxFQUFFb3VELFdBQVd6ZixFQUFFM3VDLEVBQUUwdEQsU0FBUzFrRCxHQUFFLElBQUszYSxJQUFJZ2pELEVBQUVweEMsRUFBRTB0RCxHQUFHajBDLEdBQUdrMUIsRUFBRUYsRUFBRTloRCxFQUFFK2hELEdBQUdBLEVBQUVzZixNQUFNdGYsR0FBR3o0QyxFQUFFak4sRUFBRTRqRSxTQUFTcmQsR0FBRSxXQUFXdm1ELEVBQUUwNkQsWUFBWTE2RCxFQUFFMDZELFdBQVdrSyxXQUFXNWtFLEVBQUUwNkQsV0FBV2tLLFNBQVMxakUsRUFBRXNELEtBQUssTUFBTXViLElBQUltakQsR0FBR2xqRSxFQUFFaUIsR0FBR2lpRSxHQUFHbGpFLEVBQUVrQyxJQUFJK0ssRUFBRThrQixXQUFXaFMsR0FBR21qRCxHQUFHbGpFLEVBQUV3bEQsR0FBR2ppRCxHQUFHQSxFQUFFdkQsS0FBSytELElBQUlvYyxHQUFHQSxFQUFFbmdCLElBQUlBLEVBQUU0akUsU0FBUyxRQUFPbHpELEVBQUVBLEVBQUVrMUMsR0FBR0EsSUFBSSxTQUFTQSxJQUFJMzRDLEVBQUU4a0IsYUFBYTd3QixFQUFFdkIsS0FBS2dsRSxNQUFNM2tFLEVBQUUwNkQsY0FBYzE2RCxFQUFFMDZELFdBQVdrSyxXQUFXNWtFLEVBQUUwNkQsV0FBV2tLLFNBQVMsS0FBSzFqRSxFQUFFc0QsS0FBS3RELEdBQUd1QyxHQUFHQSxFQUFFekQsR0FBRytmLElBQUlrakQsR0FBR2pqRSxFQUFFd2xELEdBQUd5ZCxHQUFHampFLEVBQUVrQyxHQUFHOGdFLElBQUcsV0FBV0UsR0FBR2xqRSxFQUFFd2xELEdBQUd2NEMsRUFBRThrQixZQUFZa3hDLEdBQUdqakUsRUFBRWlCLEdBQUcrVixJQUFJNnRELEdBQUdsZixHQUFHeGlELFdBQVc4SixFQUFFMDRDLEdBQUd3ZCxHQUFHbmpFLEVBQUV3RCxFQUFFeUosU0FBUXdqQixHQUFHQSxFQUFFendCLEVBQUVpTixHQUFHOFMsR0FBRy9JLEdBQUcvSixNQUFNLFNBQVM0M0QsR0FBRzNqRSxHQUFHLE1BQU0saUJBQWlCQSxJQUFJOFgsTUFBTTlYLEdBQUcsU0FBU3dqRSxHQUFHeGpFLEdBQUcsR0FBR2lELEVBQUVqRCxHQUFHLE9BQU0sRUFBRyxJQUFJNkMsRUFBRTdDLEVBQUU2dEQsSUFBSSxPQUFPcnFELEVBQUVYLEdBQUcyZ0UsR0FBR2g4RCxNQUFNQyxRQUFRNUUsR0FBR0EsRUFBRSxHQUFHQSxJQUFJN0MsRUFBRTRrRCxTQUFTNWtELEVBQUVoQixRQUFRLEVBQUUsU0FBU2tsRSxHQUFHbGtFLEVBQUVpRCxJQUFHLElBQUtBLEVBQUV4RSxLQUFLZ2xFLE1BQU1oQixHQUFHeC9ELEdBQUcsSUFBSWtoRSxHQUFHLFNBQVNua0UsR0FBRyxJQUFJeUMsRUFBRW9ULEVBQUUzUixFQUFFLEdBQUc1QixFQUFFdEMsRUFBRVQsUUFBUStrRCxFQUFFdGtELEVBQUVva0UsUUFBUSxJQUFJM2hFLEVBQUUsRUFBRUEsRUFBRXUzRCxHQUFHaDdELFNBQVN5RCxFQUFFLElBQUl5QixFQUFFODFELEdBQUd2M0QsSUFBSSxHQUFHb1QsRUFBRSxFQUFFQSxFQUFFdlQsRUFBRXRELFNBQVM2VyxFQUFFclMsRUFBRWxCLEVBQUV1VCxHQUFHbWtELEdBQUd2M0QsTUFBTXlCLEVBQUU4MUQsR0FBR3YzRCxJQUFJbkQsS0FBS2dELEVBQUV1VCxHQUFHbWtELEdBQUd2M0QsS0FBSyxTQUFTMUMsRUFBRUMsR0FBRyxJQUFJaUQsRUFBRXFoRCxFQUFFa1YsV0FBV3g1RCxHQUFHd0QsRUFBRVAsSUFBSXFoRCxFQUFFaVYsWUFBWXQyRCxFQUFFakQsR0FBRyxTQUFTdWtELEVBQUV2a0QsRUFBRWlELEVBQUVuRSxFQUFFMkQsRUFBRW9ULEVBQUV2VCxFQUFFdkMsR0FBRyxHQUFHeUQsRUFBRXhELEVBQUUrb0QsTUFBTXZsRCxFQUFFbEIsS0FBS3RDLEVBQUVzQyxFQUFFdkMsR0FBRytwRCxHQUFHOXBELElBQUlBLEVBQUVvcEQsY0FBY3Z6QyxHQUFHLFNBQVM3VixFQUFFaUQsRUFBRW5FLEVBQUUyRCxHQUFHLElBQUlvVCxFQUFFN1YsRUFBRXZCLEtBQUssR0FBRytFLEVBQUVxUyxHQUFHLENBQUMsSUFBSXZULEVBQUVrQixFQUFFeEQsRUFBRTZnQixvQkFBb0JoTCxFQUFFOEosVUFBVSxHQUFHbmMsRUFBRXFTLEVBQUVBLEVBQUU2SyxPQUFPbGQsRUFBRXFTLEVBQUVBLEVBQUVpTCxPQUFPakwsRUFBRTdWLEdBQUUsR0FBSXdELEVBQUV4RCxFQUFFNmdCLG1CQUFtQixPQUFPdGUsRUFBRXZDLEVBQUVpRCxHQUFHc3NCLEVBQUV6d0IsRUFBRWtCLEVBQUUrb0QsSUFBSXRtRCxHQUFHSSxFQUFFUCxJQUFJLFNBQVN0QyxFQUFFaUQsRUFBRUosRUFBRS9ELEdBQUcsSUFBSSxJQUFJMkQsRUFBRW9ULEVBQUU3VixFQUFFNlYsRUFBRWdMLG1CQUFtQixHQUFnQ3JkLEVBQUVmLEdBQS9Cb1QsRUFBRUEsRUFBRWdMLGtCQUFrQjJ3QyxRQUFhL3lELE9BQU8rRSxFQUFFZixFQUFFQSxFQUFFMitCLFlBQVksQ0FBQyxJQUFJMytCLEVBQUUsRUFBRUEsRUFBRXlCLEVBQUVtZ0UsU0FBU3JsRSxTQUFTeUQsRUFBRXlCLEVBQUVtZ0UsU0FBUzVoRSxHQUFHczNELEdBQUdsa0QsR0FBRzVTLEVBQUUzRCxLQUFLdVcsR0FBRyxNQUFNMFosRUFBRTFzQixFQUFFN0MsRUFBRStvRCxJQUFJanFELEdBQW5NLENBQXVNa0IsRUFBRWlELEVBQUVuRSxFQUFFMkQsSUFBRyxHQUEvWCxDQUFvWXpDLEVBQUVpRCxFQUFFbkUsRUFBRTJELEdBQUcsQ0FBQyxJQUFJOGhELEVBQUV2a0QsRUFBRXZCLEtBQUt1QyxFQUFFaEIsRUFBRXVULFNBQVNsUixFQUFFckMsRUFBRXlULElBQUlqUSxFQUFFbkIsSUFBSXJDLEVBQUUrb0QsSUFBSS9vRCxFQUFFb0QsR0FBR2toRCxFQUFFK1UsZ0JBQWdCcjVELEVBQUVvRCxHQUFHZixHQUFHaWlELEVBQUU1akQsY0FBYzJCLEVBQUVyQyxHQUFHd2tELEVBQUV4a0QsR0FBR2lmLEVBQUVqZixFQUFFZ0IsRUFBRWlDLEdBQUdPLEVBQUUrZ0QsSUFBSS8wQyxFQUFFeFAsRUFBRWlELEdBQUdzc0IsRUFBRXp3QixFQUFFa0IsRUFBRStvRCxJQUFJdG1ELElBQUlJLEVBQUU3QyxFQUFFcXBELFlBQVlycEQsRUFBRStvRCxJQUFJekUsRUFBRWdWLGNBQWN0NUQsRUFBRTBiLE1BQU02VCxFQUFFendCLEVBQUVrQixFQUFFK29ELElBQUl0bUQsS0FBS3pDLEVBQUUrb0QsSUFBSXpFLEVBQUU2SSxlQUFlbnRELEVBQUUwYixNQUFNNlQsRUFBRXp3QixFQUFFa0IsRUFBRStvRCxJQUFJdG1ELEtBQUssU0FBU0YsRUFBRXZDLEVBQUVpRCxHQUFHTyxFQUFFeEQsRUFBRXZCLEtBQUs2bEUsaUJBQWlCcmhFLEVBQUUzRCxLQUFLNmQsTUFBTWxhLEVBQUVqRCxFQUFFdkIsS0FBSzZsRSxlQUFldGtFLEVBQUV2QixLQUFLNmxFLGNBQWMsTUFBTXRrRSxFQUFFK29ELElBQUkvb0QsRUFBRTZnQixrQkFBa0IrMUMsSUFBSXYwRCxFQUFFckMsSUFBSXdQLEVBQUV4UCxFQUFFaUQsR0FBR3VoRCxFQUFFeGtELEtBQUs2NUQsR0FBRzc1RCxHQUFHaUQsRUFBRTNELEtBQUtVLElBQUksU0FBU3V2QixFQUFFdnZCLEVBQUVpRCxFQUFFSixHQUFHVyxFQUFFeEQsS0FBS3dELEVBQUVYLEdBQUd5aEQsRUFBRWtWLFdBQVczMkQsS0FBSzdDLEdBQUdza0QsRUFBRWgwQyxhQUFhdFEsRUFBRWlELEVBQUVKLEdBQUd5aEQsRUFBRW5pRCxZQUFZbkMsRUFBRWlELElBQUksU0FBU2djLEVBQUVqZixFQUFFaUQsRUFBRU8sR0FBRyxHQUFHZ0UsTUFBTUMsUUFBUXhFLEdBQUcsSUFBSSxJQUFJSixFQUFFLEVBQUVBLEVBQUVJLEVBQUVqRSxTQUFTNkQsRUFBRTBoRCxFQUFFdGhELEVBQUVKLEdBQUdXLEVBQUV4RCxFQUFFK29ELElBQUksTUFBSyxFQUFHOWxELEVBQUVKLFFBQVEvRCxFQUFFa0IsRUFBRTBiLE9BQU80b0MsRUFBRW5pRCxZQUFZbkMsRUFBRStvRCxJQUFJekUsRUFBRTZJLGVBQWV6dUMsT0FBTzFlLEVBQUUwYixRQUFRLFNBQVNyWixFQUFFckMsR0FBRyxLQUFLQSxFQUFFNmdCLG1CQUFtQjdnQixFQUFFQSxFQUFFNmdCLGtCQUFrQjJ3QyxPQUFPLE9BQU9odUQsRUFBRXhELEVBQUV5VCxLQUFLLFNBQVNqRSxFQUFFeFAsRUFBRWlELEdBQUcsSUFBSSxJQUFJSixFQUFFLEVBQUVBLEVBQUVxQixFQUFFYixPQUFPckUsU0FBUzZELEVBQUVxQixFQUFFYixPQUFPUixHQUFHazNELEdBQUcvNUQsR0FBR3dELEVBQUVmLEVBQUV6QyxFQUFFdkIsS0FBS2lpQixRQUFRbGQsRUFBRWYsRUFBRVksU0FBU1osRUFBRVksT0FBTzAyRCxHQUFHLzVELEdBQUd3RCxFQUFFZixFQUFFcXZELFNBQVM3dUQsRUFBRTNELEtBQUtVLElBQUksU0FBU3drRCxFQUFFeGtELEdBQUcsSUFBSWlELEVBQUUsR0FBR08sRUFBRVAsRUFBRWpELEVBQUVrcEQsV0FBVzVFLEVBQUVxVixjQUFjMzVELEVBQUUrb0QsSUFBSTlsRCxRQUFRLElBQUksSUFBSUosRUFBRTdDLEVBQUU2QyxHQUFHVyxFQUFFUCxFQUFFSixFQUFFcTdCLFVBQVUxNkIsRUFBRVAsRUFBRUEsRUFBRW8xQixTQUFTdzRCLFdBQVd2TSxFQUFFcVYsY0FBYzM1RCxFQUFFK29ELElBQUk5bEQsR0FBR0osRUFBRUEsRUFBRWtjLE9BQU92YixFQUFFUCxFQUFFcXVELEtBQUtydUQsSUFBSWpELEVBQUVrK0IsU0FBU2o3QixJQUFJakQsRUFBRWdwRCxXQUFXeGxELEVBQUVQLEVBQUVBLEVBQUVvMUIsU0FBU3c0QixXQUFXdk0sRUFBRXFWLGNBQWMzNUQsRUFBRStvRCxJQUFJOWxELEdBQUcsU0FBUzRiLEVBQUU3ZSxFQUFFaUQsRUFBRU8sRUFBRVgsRUFBRS9ELEVBQUUyRCxHQUFHLEtBQUtJLEdBQUcvRCxJQUFJK0QsRUFBRTBoRCxFQUFFL2dELEVBQUVYLEdBQUdKLEVBQUV6QyxFQUFFaUQsR0FBRSxFQUFHTyxFQUFFWCxHQUFHLFNBQVNpVCxFQUFFOVYsR0FBRyxJQUFJaUQsRUFBRUosRUFBRS9ELEVBQUVrQixFQUFFdkIsS0FBSyxHQUFHK0UsRUFBRTFFLEdBQUcsSUFBSTBFLEVBQUVQLEVBQUVuRSxFQUFFNGhCLE9BQU9sZCxFQUFFUCxFQUFFQSxFQUFFaXZELFVBQVVqdkQsRUFBRWpELEdBQUdpRCxFQUFFLEVBQUVBLEVBQUVpQixFQUFFZ3VELFFBQVFsekQsU0FBU2lFLEVBQUVpQixFQUFFZ3VELFFBQVFqdkQsR0FBR2pELEdBQUcsR0FBR3dELEVBQUVQLEVBQUVqRCxFQUFFdVQsVUFBVSxJQUFJMVEsRUFBRSxFQUFFQSxFQUFFN0MsRUFBRXVULFNBQVN2VSxTQUFTNkQsRUFBRWlULEVBQUU5VixFQUFFdVQsU0FBUzFRLElBQUksU0FBUzRoRCxFQUFFemtELEVBQUVpRCxFQUFFSixHQUFHLEtBQUtJLEdBQUdKLElBQUlJLEVBQUUsQ0FBQyxJQUFJbkUsRUFBRWtCLEVBQUVpRCxHQUFHTyxFQUFFMUUsS0FBSzBFLEVBQUUxRSxFQUFFMlUsTUFBTTFILEVBQUVqTixHQUFHZ1gsRUFBRWhYLElBQUlpQixFQUFFakIsRUFBRWlxRCxPQUFPLFNBQVNoOUMsRUFBRS9MLEVBQUVpRCxHQUFHLEdBQUdPLEVBQUVQLElBQUlPLEVBQUV4RCxFQUFFdkIsTUFBTSxDQUFDLElBQUlvRSxFQUFFL0QsRUFBRW9GLEVBQUU2Z0MsT0FBTy9sQyxPQUFPLEVBQUUsSUFBSXdFLEVBQUVQLEdBQUdBLEVBQUVnYixXQUFXbmYsRUFBRW1FLEVBQUUsU0FBU2pELEVBQUVpRCxHQUFHLFNBQVNPLElBQUksS0FBS0EsRUFBRXlhLFdBQVdsZSxFQUFFQyxHQUFHLE9BQU93RCxFQUFFeWEsVUFBVWhiLEVBQUVPLEVBQXZFLENBQTBFeEQsRUFBRStvRCxJQUFJanFELEdBQUcwRSxFQUFFWCxFQUFFN0MsRUFBRTZnQixvQkFBb0JyZCxFQUFFWCxFQUFFQSxFQUFFMnVELFNBQVNodUQsRUFBRVgsRUFBRXBFLE9BQU9zTixFQUFFbEosRUFBRUksR0FBR0osRUFBRSxFQUFFQSxFQUFFcUIsRUFBRTZnQyxPQUFPL2xDLFNBQVM2RCxFQUFFcUIsRUFBRTZnQyxPQUFPbGlDLEdBQUc3QyxFQUFFaUQsR0FBR08sRUFBRVgsRUFBRTdDLEVBQUV2QixLQUFLaWlCLE9BQU9sZCxFQUFFWCxFQUFFQSxFQUFFa2lDLFFBQVFsaUMsRUFBRTdDLEVBQUVpRCxHQUFHQSxTQUFTbEQsRUFBRUMsRUFBRStvRCxLQUFLLFNBQVNyRSxFQUFFMWtELEVBQUVpRCxFQUFFSixFQUFFL0QsR0FBRyxJQUFJLElBQUkyRCxFQUFFSSxFQUFFSixFQUFFM0QsRUFBRTJELElBQUksQ0FBQyxJQUFJb1QsRUFBRTVTLEVBQUVSLEdBQUcsR0FBR2UsRUFBRXFTLElBQUlva0QsR0FBR2o2RCxFQUFFNlYsR0FBRyxPQUFPcFQsR0FBRyxTQUFTOE0sRUFBRXZQLEVBQUVsQixFQUFFMkQsRUFBRW9ULEVBQUV2VCxFQUFFdkMsR0FBRyxHQUFHQyxJQUFJbEIsRUFBRSxDQUFDMEUsRUFBRTFFLEVBQUVpcUQsTUFBTXZsRCxFQUFFcVMsS0FBSy9XLEVBQUUrVyxFQUFFdlQsR0FBR3duRCxHQUFHaHJELElBQUksSUFBSWtDLEVBQUVsQyxFQUFFaXFELElBQUkvb0QsRUFBRStvRCxJQUFJLEdBQUdsbUQsRUFBRTdDLEVBQUUwcEQsb0JBQW9CbG1ELEVBQUUxRSxFQUFFMHFELGFBQWF6N0MsVUFBVWczQyxFQUFFL2tELEVBQUUrb0QsSUFBSWpxRCxFQUFFMkQsR0FBRzNELEVBQUU0cUQsb0JBQW1CLE9BQVEsR0FBRzdtRCxFQUFFL0QsRUFBRXNyQixXQUFXdm5CLEVBQUU3QyxFQUFFb3FCLFdBQVd0ckIsRUFBRXdFLE1BQU10RCxFQUFFc0QsTUFBTVQsRUFBRS9ELEVBQUV3cUQsV0FBV3ptRCxFQUFFL0QsRUFBRXlxRCxTQUFTenFELEVBQUUraEIsa0JBQWtCN2dCLEVBQUU2Z0Isc0JBQXNCLENBQUMsSUFBSXRlLEVBQUVndEIsRUFBRXp3QixFQUFFTCxLQUFLK0UsRUFBRStyQixJQUFJL3JCLEVBQUVqQixFQUFFZ3RCLEVBQUU3TyxPQUFPbGQsRUFBRWpCLEVBQUVBLEVBQUVvZSxXQUFXcGUsRUFBRXZDLEVBQUVsQixHQUFHLElBQUltZ0IsRUFBRWpmLEVBQUV1VCxTQUFTL0QsRUFBRTFRLEVBQUV5VSxTQUFTLEdBQUcvUCxFQUFFK3JCLElBQUlsdEIsRUFBRXZELEdBQUcsQ0FBQyxJQUFJeUQsRUFBRSxFQUFFQSxFQUFFMkIsRUFBRTg1QixPQUFPaC9CLFNBQVN1RCxFQUFFMkIsRUFBRTg1QixPQUFPejdCLEdBQUd2QyxFQUFFbEIsR0FBRzBFLEVBQUVqQixFQUFFZ3RCLEVBQUU3TyxPQUFPbGQsRUFBRWpCLEVBQUVBLEVBQUV5N0IsU0FBU3o3QixFQUFFdkMsRUFBRWxCLEdBQUdtRSxFQUFFbkUsRUFBRTRjLE1BQU1sWSxFQUFFeWIsSUFBSXpiLEVBQUVnTSxHQUFHeVAsSUFBSXpQLEdBQUcsU0FBU3hQLEVBQUU2QyxFQUFFL0QsRUFBRTJELEVBQUVvVCxHQUFHLElBQUksSUFBSTNSLEVBQUU1QixFQUFFdkMsRUFBRWlCLEVBQUUsRUFBRXVCLEVBQUUsRUFBRWd0QixFQUFFMXNCLEVBQUU3RCxPQUFPLEVBQUVpZ0IsRUFBRXBjLEVBQUUsR0FBR1IsRUFBRVEsRUFBRTBzQixHQUFHL2YsRUFBRTFRLEVBQUVFLE9BQU8sRUFBRXdsRCxFQUFFMWxELEVBQUUsR0FBR2dYLEVBQUVoWCxFQUFFMFEsR0FBR3pELEdBQUc4SixFQUFFN1UsR0FBR3V1QixHQUFHaHRCLEdBQUdpTixHQUFHdk0sRUFBRWdjLEdBQUdBLEVBQUVwYyxJQUFJN0IsR0FBR2lDLEVBQUVaLEdBQUdBLEVBQUVRLElBQUkwc0IsR0FBRzBxQyxHQUFHaDdDLEVBQUV1bEMsSUFBSWoxQyxFQUFFMFAsRUFBRXVsQyxFQUFFL2hELEVBQUUzRCxFQUFFeUQsR0FBRzBjLEVBQUVwYyxJQUFJN0IsR0FBR3dqRCxFQUFFMWxELElBQUl5RCxJQUFJMDNELEdBQUc1M0QsRUFBRXlULElBQUl2RyxFQUFFbE4sRUFBRXlULEVBQUVyVCxFQUFFM0QsRUFBRTBRLEdBQUduTixFQUFFUSxJQUFJMHNCLEdBQUd6WixFQUFFaFgsSUFBSTBRLElBQUl5cUQsR0FBR2g3QyxFQUFFbkosSUFBSXZHLEVBQUUwUCxFQUFFbkosRUFBRXJULEVBQUUzRCxFQUFFMFEsR0FBR3pELEdBQUd1NEMsRUFBRWgwQyxhQUFhdFEsRUFBRWlmLEVBQUU4cEMsSUFBSXpFLEVBQUVtVixZQUFZcDNELEVBQUUwbUQsTUFBTTlwQyxFQUFFcGMsSUFBSTdCLEdBQUc4VSxFQUFFaFgsSUFBSTBRLElBQUl5cUQsR0FBRzUzRCxFQUFFbWlELElBQUlqMUMsRUFBRWxOLEVBQUVtaUQsRUFBRS9oRCxFQUFFM0QsRUFBRXlELEdBQUd3SixHQUFHdTRDLEVBQUVoMEMsYUFBYXRRLEVBQUVxQyxFQUFFMG1ELElBQUk5cEMsRUFBRThwQyxLQUFLMW1ELEVBQUVRLElBQUkwc0IsR0FBR2kxQixFQUFFMWxELElBQUl5RCxLQUFLVSxFQUFFaUIsS0FBS0EsRUFBRWcyRCxHQUFHcjNELEVBQUU3QixFQUFFdXVCLElBQUl0c0IsRUFBRVgsRUFBRWtCLEVBQUVnaEQsRUFBRWxoRCxLQUFLWSxFQUFFc2dELEVBQUVsaEQsS0FBS29oRCxFQUFFRixFQUFFM2hELEVBQUU3QixFQUFFdXVCLElBQUlnMUIsRUFBRUMsRUFBRS9oRCxFQUFFekMsRUFBRWlmLEVBQUU4cEMsS0FBSSxFQUFHanFELEVBQUV5RCxHQUFHMDNELEdBQUdsNkQsRUFBRThDLEVBQUVQLEdBQUdraUQsSUFBSWoxQyxFQUFFeFAsRUFBRXlrRCxFQUFFL2hELEVBQUUzRCxFQUFFeUQsR0FBR00sRUFBRVAsUUFBRyxFQUFPeUosR0FBR3U0QyxFQUFFaDBDLGFBQWF0USxFQUFFRCxFQUFFZ3BELElBQUk5cEMsRUFBRThwQyxNQUFNeEUsRUFBRUMsRUFBRS9oRCxFQUFFekMsRUFBRWlmLEVBQUU4cEMsS0FBSSxFQUFHanFELEVBQUV5RCxHQUFHaWlELEVBQUUxbEQsSUFBSXlELElBQUl2QixFQUFFdXVCLEVBQUUxUSxFQUFFN2UsRUFBRWlELEVBQUVuRSxFQUFFMFEsRUFBRSxJQUFJLEtBQUsxUSxFQUFFMFEsRUFBRSxHQUFHdTVDLElBQUlqcUQsRUFBRXlELEVBQUVpTixFQUFFL00sR0FBR0YsRUFBRWlOLEdBQUdpMUMsRUFBRTVoRCxFQUFFN0IsRUFBRXV1QixHQUE5bUIsQ0FBa25CdnVCLEVBQUVpZSxFQUFFelAsRUFBRS9NLEVBQUUxQyxHQUFHeUQsRUFBRWdNLElBQUloTSxFQUFFeEQsRUFBRTBiLE9BQU80b0MsRUFBRW9WLGVBQWUxNEQsRUFBRSxJQUFJNmQsRUFBRTdkLEVBQUUsS0FBS3dPLEVBQUUsRUFBRUEsRUFBRXhRLE9BQU8sRUFBRXlELElBQUllLEVBQUV5YixHQUFHd2xDLEVBQUV4bEMsRUFBRSxFQUFFQSxFQUFFamdCLE9BQU8sR0FBR3dFLEVBQUV4RCxFQUFFMGIsT0FBTzRvQyxFQUFFb1YsZUFBZTE0RCxFQUFFLElBQUloQixFQUFFMGIsT0FBTzVjLEVBQUU0YyxNQUFNNG9DLEVBQUVvVixlQUFlMTRELEVBQUVsQyxFQUFFNGMsTUFBTWxZLEVBQUUrckIsSUFBSS9yQixFQUFFakIsRUFBRWd0QixFQUFFN08sT0FBT2xkLEVBQUVqQixFQUFFQSxFQUFFZ2lFLFlBQVloaUUsRUFBRXZDLEVBQUVsQixLQUFLLFNBQVMrbEQsRUFBRTdrRCxFQUFFaUQsRUFBRW5FLEdBQUcsR0FBRytELEVBQUUvRCxJQUFJMEUsRUFBRXhELEVBQUUrZSxRQUFRL2UsRUFBRStlLE9BQU90Z0IsS0FBSzZsRSxjQUFjcmhFLE9BQU8sSUFBSSxJQUFJUixFQUFFLEVBQUVBLEVBQUVRLEVBQUVqRSxTQUFTeUQsRUFBRVEsRUFBRVIsR0FBR2hFLEtBQUtpaUIsS0FBS294QyxPQUFPN3VELEVBQUVSLElBQUksSUFBSXFpRCxFQUFFOWpELEVBQUUsMkNBQTJDLFNBQVMrakQsRUFBRS9rRCxFQUFFaUQsRUFBRW5FLEVBQUUyRCxHQUFHLElBQUlvVCxFQUFFM1IsRUFBRWpCLEVBQUV3USxJQUFJblIsRUFBRVcsRUFBRXhFLEtBQUs2bEQsRUFBRXJoRCxFQUFFc1EsU0FBUyxHQUFHOVEsRUFBRUEsR0FBR0gsR0FBR0EsRUFBRTJ3RCxJQUFJaHdELEVBQUU4bEQsSUFBSS9vRCxFQUFFNkMsRUFBRUksRUFBRW9tRCxZQUFZN2xELEVBQUVQLEVBQUV1bUQsY0FBYyxPQUFPdm1ELEVBQUV5bUQsb0JBQW1CLEdBQUcsRUFBRyxHQUFHbG1ELEVBQUVsQixLQUFLa0IsRUFBRXFTLEVBQUV2VCxFQUFFb2UsT0FBT2xkLEVBQUVxUyxFQUFFQSxFQUFFaUwsT0FBT2pMLEVBQUU1UyxHQUFFLEdBQUlPLEVBQUVxUyxFQUFFNVMsRUFBRTRkLG9CQUFvQixPQUFPdGUsRUFBRVUsRUFBRW5FLElBQUcsRUFBRyxHQUFHMEUsRUFBRVUsR0FBRyxDQUFDLEdBQUdWLEVBQUU4Z0QsR0FBRyxHQUFHdGtELEVBQUV3a0UsZ0JBQWdCLEdBQUdoaEUsRUFBRXFTLEVBQUV2VCxJQUFJa0IsRUFBRXFTLEVBQUVBLEVBQUV1NUMsV0FBVzVyRCxFQUFFcVMsRUFBRUEsRUFBRTlGLFlBQVksR0FBRzhGLElBQUk3VixFQUFFK1AsVUFBVSxPQUFNLE1BQU8sQ0FBQyxJQUFJLElBQUloUSxHQUFFLEVBQUd3a0QsRUFBRXZrRCxFQUFFby9ELFdBQVdwK0QsRUFBRSxFQUFFQSxFQUFFc2pELEVBQUV0bEQsT0FBT2dDLElBQUksQ0FBQyxJQUFJdWpELElBQUlRLEVBQUVSLEVBQUVELEVBQUV0akQsR0FBR2xDLEVBQUUyRCxHQUFHLENBQUMxQyxHQUFFLEVBQUcsTUFBTXdrRCxFQUFFQSxFQUFFa1YsWUFBWSxJQUFJMTVELEdBQUd3a0QsRUFBRSxPQUFNLE9BQVF0bEMsRUFBRWhjLEVBQUVxaEQsRUFBRXhsRCxHQUFHLEdBQUcwRSxFQUFFbEIsR0FBRyxDQUFDLElBQUlpdEIsR0FBRSxFQUFHLElBQUksSUFBSWx0QixLQUFLQyxFQUFFLElBQUl3aUQsRUFBRXppRCxHQUFHLENBQUNrdEIsR0FBRSxFQUFHL2YsRUFBRXZNLEVBQUVuRSxHQUFHLE9BQU95d0IsR0FBR2p0QixFQUFFMkMsT0FBT3VvRCxHQUFHbHJELEVBQUUyQyxhQUFhakYsRUFBRXZCLE9BQU93RSxFQUFFeVksT0FBTzFiLEVBQUV2QixLQUFLd0UsRUFBRXlZLE1BQU0sT0FBTSxFQUFHLE9BQU8sU0FBUzFiLEVBQUVsQixFQUFFMkQsRUFBRW9ULEdBQUcsSUFBSTVTLEVBQUVuRSxHQUFHLENBQUMsSUFBSXdELEVBQUV2QyxHQUFFLEVBQUdpQixFQUFFLEdBQUcsR0FBR2lDLEVBQUVqRCxHQUFHRCxHQUFFLEVBQUd3a0QsRUFBRXpsRCxFQUFFa0MsT0FBTyxDQUFDLElBQUl1QixFQUFFaUIsRUFBRXhELEVBQUU0aUUsVUFBVSxJQUFJcmdFLEdBQUcwM0QsR0FBR2o2RCxFQUFFbEIsR0FBR3lRLEVBQUV2UCxFQUFFbEIsRUFBRWtDLEVBQUUsS0FBSyxLQUFLNlUsT0FBTyxDQUFDLEdBQUd0VCxFQUFFLENBQUMsR0FBRyxJQUFJdkMsRUFBRTRpRSxVQUFVNWlFLEVBQUV5a0UsYUFBYW5mLEtBQUt0bEQsRUFBRWk3RCxnQkFBZ0IzVixHQUFHN2lELEdBQUUsR0FBSUksRUFBRUosSUFBSXNpRCxFQUFFL2tELEVBQUVsQixFQUFFa0MsR0FBRyxPQUFPNmpELEVBQUUvbEQsRUFBRWtDLEdBQUUsR0FBSWhCLEVBQUVzQyxFQUFFdEMsRUFBRUEsRUFBRSxJQUFJOG9ELEdBQUd4RSxFQUFFbDBDLFFBQVE5TixHQUFHa1YsY0FBYyxHQUFHLFFBQUcsRUFBT2xWLEdBQUcsSUFBSWl0QixFQUFFdnZCLEVBQUUrb0QsSUFBSTlwQyxFQUFFcWxDLEVBQUVrVixXQUFXanFDLEdBQUcsR0FBR2cxQixFQUFFemxELEVBQUVrQyxFQUFFdXVCLEVBQUVtekMsU0FBUyxLQUFLempELEVBQUVxbEMsRUFBRW1WLFlBQVlscUMsSUFBSS9yQixFQUFFMUUsRUFBRWlnQixRQUFRLElBQUksSUFBSXZQLEVBQUUxUSxFQUFFaWdCLE9BQU95bEMsRUFBRW5pRCxFQUFFdkQsR0FBRzBRLEdBQUcsQ0FBQyxJQUFJLElBQUlxUCxFQUFFLEVBQUVBLEVBQUUzYSxFQUFFZ3VELFFBQVFsekQsU0FBUzZmLEVBQUUzYSxFQUFFZ3VELFFBQVFyekMsR0FBR3JQLEdBQUcsR0FBR0EsRUFBRXU1QyxJQUFJanFELEVBQUVpcUQsSUFBSXZFLEVBQUUsQ0FBQyxJQUFJLElBQUl6NEMsRUFBRSxFQUFFQSxFQUFFN0gsRUFBRWIsT0FBT3JFLFNBQVMrTSxFQUFFN0gsRUFBRWIsT0FBTzBJLEdBQUdndUQsR0FBR3ZxRCxHQUFHLElBQUlrMUMsRUFBRWwxQyxFQUFFL1EsS0FBS2lpQixLQUFLb3hDLE9BQU8sR0FBR3BOLEVBQUVzSixPQUFPLElBQUksSUFBSWxKLEVBQUUsRUFBRUEsRUFBRUosRUFBRW1KLElBQUk3dUQsT0FBTzhsRCxJQUFJSixFQUFFbUosSUFBSS9JLFVBQVUrVSxHQUFHcnFELEdBQUdBLEVBQUVBLEVBQUV1UCxPQUFPdmIsRUFBRXliLEdBQUd3bEMsRUFBRSxDQUFDemtELEdBQUcsRUFBRSxHQUFHd0QsRUFBRXhELEVBQUV5VCxNQUFNcUMsRUFBRTlWLElBQUksT0FBTzZrRCxFQUFFL2xELEVBQUVrQyxFQUFFakIsR0FBR2pCLEVBQUVpcUQsSUFBSXZsRCxFQUFFeEQsSUFBSThWLEVBQUU5VixJQUFyMEssQ0FBMDBLLENBQUNva0UsUUFBUWpMLEdBQUc1NUQsUUFBUSxDQUFDZzhELEdBQUdXLEdBQUc4QyxHQUFHUSxHQUFHYyxHQUFHM1osRUFBRSxDQUFDdGpELE9BQU82Z0UsR0FBR0csU0FBU0gsR0FBR24vQixPQUFPLFNBQVMva0MsRUFBRWlELElBQUcsSUFBS2pELEVBQUV2QixLQUFLZ2xFLEtBQUtHLEdBQUc1akUsRUFBRWlELEdBQUdBLE1BQU0sSUFBSWdFLE9BQU8yekQsTUFBTTFULEdBQUd6bUQsU0FBU21KLGlCQUFpQixtQkFBa0IsV0FBVyxJQUFJNUosRUFBRVMsU0FBUzYrRCxjQUFjdC9ELEdBQUdBLEVBQUUwa0UsUUFBUUMsR0FBRzNrRSxFQUFFLFlBQVcsSUFBSTRrRSxHQUFHLENBQUNuSyxTQUFTLFNBQVN6NkQsRUFBRWlELEVBQUVPLEVBQUVYLEdBQUcsV0FBV1csRUFBRWlRLEtBQUs1USxFQUFFa21ELE1BQU1sbUQsRUFBRWttRCxJQUFJOGIsVUFBVTlXLEdBQUd2cUQsRUFBRSxhQUFZLFdBQVdvaEUsR0FBR3BLLGlCQUFpQng2RCxFQUFFaUQsRUFBRU8sTUFBS3NoRSxHQUFHOWtFLEVBQUVpRCxFQUFFTyxFQUFFMDZCLFNBQVNsK0IsRUFBRTZrRSxVQUFVLEdBQUd0NkQsSUFBSW5MLEtBQUtZLEVBQUVvRSxRQUFRMmdFLE1BQU0sYUFBYXZoRSxFQUFFaVEsS0FBS3dsRCxHQUFHajVELEVBQUUwQixTQUFTMUIsRUFBRXUvRCxZQUFZdDhELEVBQUV3N0IsVUFBVXg3QixFQUFFdzdCLFVBQVVnMkIsT0FBT3owRCxFQUFFNEosaUJBQWlCLG1CQUFtQm83RCxJQUFJaGxFLEVBQUU0SixpQkFBaUIsaUJBQWlCcTdELElBQUlqbEUsRUFBRTRKLGlCQUFpQixTQUFTcTdELElBQUkvZCxJQUFJbG5ELEVBQUUwa0UsUUFBTyxNQUFPbEssaUJBQWlCLFNBQVN4NkQsRUFBRWlELEVBQUVPLEdBQUcsR0FBRyxXQUFXQSxFQUFFaVEsSUFBSSxDQUFDcXhELEdBQUc5a0UsRUFBRWlELEVBQUVPLEVBQUUwNkIsU0FBUyxJQUFJcjdCLEVBQUU3QyxFQUFFNmtFLFVBQVUvbEUsRUFBRWtCLEVBQUU2a0UsVUFBVSxHQUFHdDZELElBQUluTCxLQUFLWSxFQUFFb0UsUUFBUTJnRSxJQUFPam1FLEVBQUVzM0MsTUFBSyxTQUFTcDJDLEVBQUVpRCxHQUFHLE9BQU9raUQsRUFBRW5sRCxFQUFFNkMsRUFBRUksU0FBT2pELEVBQUVvNUQsU0FBU24yRCxFQUFFRCxNQUFNb3pDLE1BQUssU0FBU3AyQyxHQUFHLE9BQU9rbEUsR0FBR2xsRSxFQUFFbEIsTUFBS21FLEVBQUVELFFBQVFDLEVBQUVvN0IsVUFBVTZtQyxHQUFHamlFLEVBQUVELE1BQU1sRSxLQUFLNmxFLEdBQUcza0UsRUFBRSxhQUFhLFNBQVM4a0UsR0FBRzlrRSxFQUFFaUQsRUFBRU8sR0FBRzJoRSxHQUFHbmxFLEVBQUVpRCxFQUFFTyxJQUFJeWpELEdBQUdFLElBQUlsbEQsWUFBVyxXQUFXa2pFLEdBQUdubEUsRUFBRWlELEVBQUVPLEtBQUksR0FBRyxTQUFTMmhFLEdBQUdubEUsRUFBRWlELEVBQUVPLEdBQUcsSUFBSVgsRUFBRUksRUFBRUQsTUFBTWxFLEVBQUVrQixFQUFFbzVELFNBQVMsSUFBSXQ2RCxHQUFHMEksTUFBTUMsUUFBUTVFLEdBQUcsQ0FBQyxJQUFJLElBQUlKLEVBQUVvVCxFQUFFM1IsRUFBRSxFQUFFNUIsRUFBRXRDLEVBQUVvRSxRQUFRcEYsT0FBT2tGLEVBQUU1QixFQUFFNEIsSUFBSSxHQUFHMlIsRUFBRTdWLEVBQUVvRSxRQUFRRixHQUFHcEYsRUFBRTJELEVBQUUyakIsRUFBRXZqQixFQUFFa2lFLEdBQUdsdkQsS0FBSyxFQUFFQSxFQUFFdXZELFdBQVczaUUsSUFBSW9ULEVBQUV1dkQsU0FBUzNpRSxRQUFRLEdBQUcwaUQsRUFBRTRmLEdBQUdsdkQsR0FBR2hULEdBQUcsWUFBWTdDLEVBQUVxbEUsZ0JBQWdCbmhFLElBQUlsRSxFQUFFcWxFLGNBQWNuaEUsSUFBSXBGLElBQUlrQixFQUFFcWxFLGVBQWUsSUFBSSxTQUFTSCxHQUFHbGxFLEVBQUVpRCxHQUFHLE9BQU9BLEVBQUVtZ0IsT0FBTSxTQUFTbmdCLEdBQUcsT0FBT2tpRCxFQUFFbGlELEVBQUVqRCxNQUFLLFNBQVMra0UsR0FBRy9rRSxHQUFHLE1BQU0sV0FBV0EsRUFBRUEsRUFBRWsvRCxPQUFPbC9ELEVBQUVnRCxNQUFNLFNBQVNnaUUsR0FBR2hsRSxHQUFHQSxFQUFFNEIsT0FBT3k5RCxXQUFVLEVBQUcsU0FBUzRGLEdBQUdqbEUsR0FBR0EsRUFBRTRCLE9BQU95OUQsWUFBWXIvRCxFQUFFNEIsT0FBT3k5RCxXQUFVLEVBQUdzRixHQUFHM2tFLEVBQUU0QixPQUFPLFVBQVUsU0FBUytpRSxHQUFHM2tFLEVBQUVpRCxHQUFHLElBQUlPLEVBQUUvQyxTQUFTeXpELFlBQVksY0FBYzF3RCxFQUFFOGhFLFVBQVVyaUUsR0FBRSxHQUFHLEdBQUlqRCxFQUFFdWxFLGNBQWMvaEUsR0FBRyxTQUFTZ2lFLEdBQUd4bEUsR0FBRyxPQUFPQSxFQUFFNmdCLG1CQUFtQjdnQixFQUFFdkIsTUFBTXVCLEVBQUV2QixLQUFLMmlDLFdBQVdwaEMsRUFBRXdsRSxHQUFHeGxFLEVBQUU2Z0Isa0JBQWtCMndDLFFBQVEsSUFBSWlVLEdBQUcsQ0FBQzVTLE1BQU0rUixHQUFHbkIsS0FBSyxDQUFDbGdFLEtBQUssU0FBU3ZELEVBQUVpRCxFQUFFTyxHQUFHLElBQUlYLEVBQUVJLEVBQUVELE1BQU1sRSxHQUFHMEUsRUFBRWdpRSxHQUFHaGlFLElBQUkvRSxNQUFNK0UsRUFBRS9FLEtBQUsyaUMsV0FBVzMrQixFQUFFekMsRUFBRTBsRSxtQkFBbUIsU0FBUzFsRSxFQUFFOFAsTUFBTTYxRCxRQUFRLEdBQUczbEUsRUFBRThQLE1BQU02MUQsUUFBUTlpRSxHQUFHL0QsR0FBRzBFLEVBQUUvRSxLQUFLZ2xFLE1BQUssRUFBR2hCLEdBQUdqL0QsR0FBRSxXQUFXeEQsRUFBRThQLE1BQU02MUQsUUFBUWxqRSxNQUFLekMsRUFBRThQLE1BQU02MUQsUUFBUTlpRSxFQUFFSixFQUFFLFFBQVF1N0IsT0FBTyxTQUFTaCtCLEVBQUVpRCxFQUFFTyxHQUFHLElBQUlYLEVBQUVJLEVBQUVELE9BQU9ILElBQUlJLEVBQUVvN0IsWUFBWTc2QixFQUFFZ2lFLEdBQUdoaUUsSUFBSS9FLE1BQU0rRSxFQUFFL0UsS0FBSzJpQyxZQUFZNTlCLEVBQUUvRSxLQUFLZ2xFLE1BQUssRUFBRzVnRSxFQUFFNC9ELEdBQUdqL0QsR0FBRSxXQUFXeEQsRUFBRThQLE1BQU02MUQsUUFBUTNsRSxFQUFFMGxFLHNCQUFxQjlCLEdBQUdwZ0UsR0FBRSxXQUFXeEQsRUFBRThQLE1BQU02MUQsUUFBUSxXQUFVM2xFLEVBQUU4UCxNQUFNNjFELFFBQVE5aUUsRUFBRTdDLEVBQUUwbEUsbUJBQW1CLFNBQVNsbkMsT0FBTyxTQUFTeCtCLEVBQUVpRCxFQUFFTyxFQUFFWCxFQUFFL0QsR0FBR0EsSUFBSWtCLEVBQUU4UCxNQUFNNjFELFFBQVEzbEUsRUFBRTBsRSx1QkFBdUJFLEdBQUcsQ0FBQzlqRSxLQUFLNGMsT0FBTzBrRCxPQUFPMzZDLFFBQVE1WSxJQUFJNFksUUFBUXZsQixLQUFLd2IsT0FBT2hkLEtBQUtnZCxPQUFPaWlELFdBQVdqaUQsT0FBT29pRCxXQUFXcGlELE9BQU9raUQsYUFBYWxpRCxPQUFPcWlELGFBQWFyaUQsT0FBT21pRCxpQkFBaUJuaUQsT0FBT3NpRCxpQkFBaUJ0aUQsT0FBT21rRCxZQUFZbmtELE9BQU9xa0Qsa0JBQWtCcmtELE9BQU9va0QsY0FBY3BrRCxPQUFPNmtELFNBQVMsQ0FBQzdsQyxPQUFPaGYsT0FBT3pmLFNBQVMsU0FBU3FwQixHQUFHdG9CLEdBQUcsSUFBSWlELEVBQUVqRCxHQUFHQSxFQUFFbXBELGlCQUFpQixPQUFPbG1ELEdBQUdBLEVBQUVvdUQsS0FBS2p0RCxRQUFRMk4sU0FBU3VXLEdBQUc4cUMsR0FBR253RCxFQUFFc1EsV0FBV3ZULEVBQUUsU0FBUzZsRSxHQUFHN2xFLEdBQUcsSUFBSWlELEVBQUUsR0FBR08sRUFBRXhELEVBQUVxNEIsU0FBUyxJQUFJLElBQUl4MUIsS0FBS1csRUFBRXlvRCxVQUFVaHBELEVBQUVKLEdBQUc3QyxFQUFFNkMsR0FBRyxJQUFJL0QsRUFBRTBFLEVBQUVvdUQsaUJBQWlCLElBQUksSUFBSW52RCxLQUFLM0QsRUFBRW1FLEVBQUU2UyxFQUFFclQsSUFBSTNELEVBQUUyRCxHQUFHLE9BQU9RLEVBQUUsU0FBUzZpRSxHQUFHOWxFLEVBQUVpRCxHQUFHLEdBQUcsaUJBQWlCNEMsS0FBSzVDLEVBQUV3USxLQUFLLE9BQU96VCxFQUFFLGFBQWEsQ0FBQ3NHLE1BQU1yRCxFQUFFa21ELGlCQUFpQjhDLFlBQVksSUFBSThaLEdBQUcsU0FBUy9sRSxHQUFHLE9BQU9BLEVBQUV5VCxLQUFLMC9DLEdBQUduekQsSUFBSWdtRSxHQUFHLFNBQVNobUUsR0FBRyxNQUFNLFNBQVNBLEVBQUU4QixNQUFNbWtFLEdBQUcsQ0FBQ25rRSxLQUFLLGFBQWF3RSxNQUFNcy9ELEdBQUc3ekQsVUFBUyxFQUFHNk0sT0FBTyxTQUFTNWUsR0FBRyxJQUFJaUQsRUFBRXdCLEtBQUtqQixFQUFFaUIsS0FBSzBsQixPQUFPeEwsUUFBUSxHQUFHbmIsSUFBSUEsRUFBRUEsRUFBRTBELE9BQU82K0QsS0FBSy9tRSxPQUFPLENBQUMsSUFBSTZELEVBQUU0QixLQUFLdkIsS0FBS1QsRUFBRWUsRUFBRSxHQUFHLEdBQUcsU0FBU3hELEdBQUcsS0FBS0EsRUFBRUEsRUFBRStlLFFBQVEsR0FBRy9lLEVBQUV2QixLQUFLMmlDLFdBQVcsT0FBTSxFQUF4RCxDQUE0RDM4QixLQUFLaWIsUUFBUSxPQUFPamQsRUFBRSxJQUFJb1QsRUFBRXlTLEdBQUc3bEIsR0FBRyxJQUFJb1QsRUFBRSxPQUFPcFQsRUFBRSxHQUFHZ0MsS0FBS3loRSxTQUFTLE9BQU9KLEdBQUc5bEUsRUFBRXlDLEdBQUcsSUFBSXlCLEVBQUUsZ0JBQWdCTyxLQUFLNHhELEtBQUssSUFBSXhnRCxFQUFFdlMsSUFBSSxNQUFNdVMsRUFBRXZTLElBQUl1UyxFQUFFd3pDLFVBQVVubEQsRUFBRSxVQUFVQSxFQUFFMlIsRUFBRXBDLElBQUkzVSxFQUFFK1csRUFBRXZTLEtBQUssSUFBSW9iLE9BQU83SSxFQUFFdlMsS0FBS3dHLFFBQVE1RixHQUFHMlIsRUFBRXZTLElBQUlZLEVBQUUyUixFQUFFdlMsSUFBSXVTLEVBQUV2UyxJQUFJLElBQUloQixHQUFHdVQsRUFBRXBYLE9BQU9vWCxFQUFFcFgsS0FBSyxLQUFLMmlDLFdBQVd5a0MsR0FBR3BoRSxNQUFNNi9DLEVBQUU3L0MsS0FBSytzRCxPQUFPenhELEVBQUV1b0IsR0FBR2c4QixHQUFHLEdBQUd6dUMsRUFBRXBYLEtBQUs2M0MsWUFBWXpnQyxFQUFFcFgsS0FBSzYzQyxXQUFXRixLQUFLNHZCLE1BQU1ud0QsRUFBRXBYLEtBQUtnbEUsTUFBSyxHQUFJMWpFLEdBQUdBLEVBQUV0QixPQUFPLFNBQVN1QixFQUFFaUQsR0FBRyxPQUFPQSxFQUFFSyxNQUFNdEQsRUFBRXNELEtBQUtMLEVBQUV3USxNQUFNelQsRUFBRXlULElBQTlDLENBQW1Eb0MsRUFBRTlWLEtBQUtvekQsR0FBR3B6RCxNQUFNQSxFQUFFOGdCLG9CQUFvQjlnQixFQUFFOGdCLGtCQUFrQjJ3QyxPQUFPbkksV0FBVyxDQUFDLElBQUk5RSxFQUFFeGtELEVBQUV0QixLQUFLMmlDLFdBQVcwakIsRUFBRSxHQUFHeGlELEdBQUcsR0FBRyxXQUFXTyxFQUFFLE9BQU80QixLQUFLeWhFLFVBQVMsRUFBR25ZLEdBQUd4SixFQUFFLGNBQWEsV0FBV3RoRCxFQUFFaWpFLFVBQVMsRUFBR2pqRSxFQUFFZ2lDLGtCQUFpQjZnQyxHQUFHOWxFLEVBQUV5QyxHQUFHLEdBQUcsV0FBV0ksRUFBRSxDQUFDLEdBQUdzd0QsR0FBR3Q5QyxHQUFHLE9BQU95dUMsRUFBRSxJQUFJdGpELEVBQUV1QixFQUFFLFdBQVd2QixLQUFLK3NELEdBQUd6ckQsRUFBRSxhQUFhQyxHQUFHd3JELEdBQUd6ckQsRUFBRSxpQkFBaUJDLEdBQUd3ckQsR0FBR3hKLEVBQUUsY0FBYSxTQUFTdmtELEdBQUdnQixFQUFFaEIsTUFBSyxPQUFPeUMsS0FBSzBqRSxHQUFHcmhCLEVBQUUsQ0FBQ3J4QyxJQUFJaUwsT0FBTzBuRCxVQUFVMW5ELFFBQVFrbkQsSUFBSSxTQUFTUyxHQUFHcm1FLEdBQUdBLEVBQUUrb0QsSUFBSXVkLFNBQVN0bUUsRUFBRStvRCxJQUFJdWQsVUFBVXRtRSxFQUFFK29ELElBQUk0WixVQUFVM2lFLEVBQUUrb0QsSUFBSTRaLFdBQVcsU0FBUzRELEdBQUd2bUUsR0FBR0EsRUFBRXZCLEtBQUsrbkUsT0FBT3htRSxFQUFFK29ELElBQUlqNUIsd0JBQXdCLFNBQVMyMkMsR0FBR3ptRSxHQUFHLElBQUlpRCxFQUFFakQsRUFBRXZCLEtBQUtpb0UsSUFBSWxqRSxFQUFFeEQsRUFBRXZCLEtBQUsrbkUsT0FBTzNqRSxFQUFFSSxFQUFFK3NCLEtBQUt4c0IsRUFBRXdzQixLQUFLbHhCLEVBQUVtRSxFQUFFZ3RCLElBQUl6c0IsRUFBRXlzQixJQUFJLEdBQUdwdEIsR0FBRy9ELEVBQUUsQ0FBQ2tCLEVBQUV2QixLQUFLa29FLE9BQU0sRUFBRyxJQUFJbGtFLEVBQUV6QyxFQUFFK29ELElBQUlqNUMsTUFBTXJOLEVBQUU0QixVQUFVNUIsRUFBRW1rRSxnQkFBZ0IsYUFBYS9qRSxFQUFFLE1BQU0vRCxFQUFFLE1BQU0yRCxFQUFFb2tFLG1CQUFtQixhQUFhVixHQUFHampFLEtBQUssSUFBSTRqRSxHQUFHLENBQUNDLFdBQVdkLEdBQUdlLGdCQUFnQixDQUFDMWdFLE1BQU02L0QsR0FBRzlwQyxZQUFZLFdBQVcsSUFBSXI4QixFQUFFeUUsS0FBS3hCLEVBQUV3QixLQUFLa3lELFFBQVFseUQsS0FBS2t5RCxRQUFRLFNBQVNuekQsRUFBRVgsR0FBRyxJQUFJL0QsRUFBRTIwRCxHQUFHenpELEdBQUdBLEVBQUU2MkQsVUFBVTcyRCxFQUFFd3hELE9BQU94eEQsRUFBRWluRSxNQUFLLEdBQUcsR0FBSWpuRSxFQUFFd3hELE9BQU94eEQsRUFBRWluRSxLQUFLbm9FLElBQUltRSxFQUFFN0QsS0FBS1ksRUFBRXdELEVBQUVYLEtBQUsrYixPQUFPLFNBQVM1ZSxHQUFHLElBQUksSUFBSWlELEVBQUV3QixLQUFLZ1AsS0FBS2hQLEtBQUtpYixPQUFPamhCLEtBQUtnVixLQUFLLE9BQU9qUSxFQUFFdkUsT0FBT29FLE9BQU8sTUFBTVIsRUFBRTRCLEtBQUt5aUUsYUFBYXppRSxLQUFLOE8sU0FBU3pVLEVBQUUyRixLQUFLMGxCLE9BQU94TCxTQUFTLEdBQUdsYyxFQUFFZ0MsS0FBSzhPLFNBQVMsR0FBR3NDLEVBQUVnd0QsR0FBR3BoRSxNQUFNUCxFQUFFLEVBQUVBLEVBQUVwRixFQUFFRSxPQUFPa0YsSUFBSSxDQUFDLElBQUk1QixFQUFFeEQsRUFBRW9GLEdBQUc1QixFQUFFbVIsS0FBSyxNQUFNblIsRUFBRWdCLEtBQUssSUFBSW9iLE9BQU9wYyxFQUFFZ0IsS0FBS3dHLFFBQVEsYUFBYXJILEVBQUVuRCxLQUFLZ0QsR0FBR2tCLEVBQUVsQixFQUFFZ0IsS0FBS2hCLEdBQUdBLEVBQUU3RCxPQUFPNkQsRUFBRTdELEtBQUssS0FBSzJpQyxXQUFXdnJCLEdBQUcsR0FBR2hULEVBQUUsQ0FBQyxJQUFJLElBQUl5aEQsRUFBRSxHQUFHdmtELEVBQUUsR0FBR3drRCxFQUFFLEVBQUVBLEVBQUUxaEQsRUFBRTdELE9BQU91bEQsSUFBSSxDQUFDLElBQUl2akQsRUFBRTZCLEVBQUUwaEQsR0FBR3ZqRCxFQUFFdkMsS0FBSzJpQyxXQUFXdnJCLEVBQUU3VSxFQUFFdkMsS0FBS2lvRSxJQUFJMWxFLEVBQUUrbkQsSUFBSWo1Qix3QkFBd0J0c0IsRUFBRXhDLEVBQUVzQyxLQUFLZ2hELEVBQUVobEQsS0FBSzBCLEdBQUdqQixFQUFFVCxLQUFLMEIsR0FBR3lELEtBQUt3aUUsS0FBS2puRSxFQUFFaUQsRUFBRSxLQUFLcWhELEdBQUc3L0MsS0FBSzBpRSxRQUFRcG5FLEVBQUUsT0FBT0MsRUFBRWlELEVBQUUsS0FBS1IsSUFBSXV4QixRQUFRLFdBQVcsSUFBSWgwQixFQUFFeUUsS0FBS3lpRSxhQUFhamtFLEVBQUV3QixLQUFLMmhFLFlBQVkzaEUsS0FBSzNDLE1BQU0sS0FBSyxRQUFROUIsRUFBRWhCLFFBQVF5RixLQUFLMmlFLFFBQVFwbkUsRUFBRSxHQUFHK29ELElBQUk5bEQsS0FBS2pELEVBQUVxSCxRQUFRZy9ELElBQUlybUUsRUFBRXFILFFBQVFrL0QsSUFBSXZtRSxFQUFFcUgsUUFBUW8vRCxJQUFJaGlFLEtBQUs0aUUsUUFBUTVtRSxTQUFTeTRDLEtBQUtvdUIsYUFBYXRuRSxFQUFFcUgsU0FBUSxTQUFTckgsR0FBRyxHQUFHQSxFQUFFdkIsS0FBS2tvRSxNQUFNLENBQUMsSUFBSW5qRSxFQUFFeEQsRUFBRStvRCxJQUFJbG1ELEVBQUVXLEVBQUVzTSxNQUFNaXlELEdBQUd2K0QsRUFBRVAsR0FBR0osRUFBRXdCLFVBQVV4QixFQUFFK2pFLGdCQUFnQi9qRSxFQUFFZ2tFLG1CQUFtQixHQUFHcmpFLEVBQUVvRyxpQkFBaUJ5M0QsR0FBRzc5RCxFQUFFOGlFLFFBQVEsU0FBU3RtRSxFQUFFNkMsR0FBR0EsR0FBR0EsRUFBRWpCLFNBQVM0QixHQUFHWCxJQUFJLGFBQWFnRCxLQUFLaEQsRUFBRTBrRSxnQkFBZ0IvakUsRUFBRWdKLG9CQUFvQjYwRCxHQUFHcmhFLEdBQUd3RCxFQUFFOGlFLFFBQVEsS0FBS3RFLEdBQUd4K0QsRUFBRVAsWUFBV29vRCxRQUFRLENBQUMrYixRQUFRLFNBQVNwbkUsRUFBRWlELEdBQUcsSUFBSWcrRCxHQUFHLE9BQU0sRUFBRyxHQUFHeDhELEtBQUsraUUsU0FBUyxPQUFPL2lFLEtBQUsraUUsU0FBUyxJQUFJaGtFLEVBQUV4RCxFQUFFeW5FLFlBQVl6bkUsRUFBRTA3RCxvQkFBb0IxN0QsRUFBRTA3RCxtQkFBbUJyMEQsU0FBUSxTQUFTckgsR0FBRzhILEdBQUd0RSxFQUFFeEQsTUFBS3dnRSxHQUFHaDlELEVBQUVQLEdBQUdPLEVBQUVzTSxNQUFNNjFELFFBQVEsT0FBT2xoRSxLQUFLbXlELElBQUl6MEQsWUFBWXFCLEdBQUcsSUFBSVgsRUFBRXEvRCxHQUFHMStELEdBQUcsT0FBT2lCLEtBQUtteUQsSUFBSTJDLFlBQVkvMUQsR0FBR2lCLEtBQUsraUUsU0FBUzNrRSxFQUFFMC9ELGlCQUFpQnhNLEdBQUdqcUQsT0FBT3M2QyxZQUFZMFIsR0FBRy9CLEdBQUdqcUQsT0FBT2k2QyxjQUFjK1MsR0FBRy9DLEdBQUdqcUQsT0FBT2s2QyxlQUFlNFIsR0FBRzdCLEdBQUdqcUQsT0FBT282QyxnQkFBZ0I2UyxHQUFHaEQsR0FBR2pxRCxPQUFPbTZDLGlCQUFpQixTQUFTam1ELEdBQUcsSUFBSTJtRCxFQUFFLE9BQU0sRUFBRyxHQUFHbVMsR0FBRzk0RCxHQUFHLE9BQU0sRUFBRyxHQUFHQSxFQUFFQSxFQUFFd1gsY0FBYyxNQUFNd2hELEdBQUdoNUQsR0FBRyxPQUFPZzVELEdBQUdoNUQsR0FBRyxJQUFJaUQsRUFBRXhDLFNBQVNDLGNBQWNWLEdBQUcsT0FBT0EsRUFBRThKLFFBQVEsTUFBTSxFQUFFa3ZELEdBQUdoNUQsR0FBR2lELEVBQUVtRCxjQUFjckMsT0FBTzJqRSxvQkFBb0J6a0UsRUFBRW1ELGNBQWNyQyxPQUFPNGpFLFlBQVkzTyxHQUFHaDVELEdBQUcscUJBQXFCNkYsS0FBSzVDLEVBQUV1RixhQUFhczhDLEVBQUVpUixHQUFHM3hELFFBQVFreUMsV0FBV212QixJQUFJM2dCLEVBQUVpUixHQUFHM3hELFFBQVFpYyxXQUFXeW1ELElBQUkvUSxHQUFHNzJELFVBQVUyM0QsVUFBVWxRLEVBQUV3ZCxHQUFHbmYsRUFBRStRLEdBQUc3MkQsVUFBVW0rQyxPQUFPLFNBQVNyOUMsRUFBRWlELEdBQUcsT0FBTyxTQUFTakQsRUFBRWlELEVBQUVPLEdBQUcsSUFBSVgsRUFBRSxPQUFPN0MsRUFBRTQyRCxJQUFJM3pELEVBQUVqRCxFQUFFcTRCLFNBQVN6WixTQUFTNWUsRUFBRXE0QixTQUFTelosT0FBT2dyQyxJQUFJb0ksR0FBR2h5RCxFQUFFLGVBQWU2QyxFQUFFLFdBQVc3QyxFQUFFMjJELFFBQVEzMkQsRUFBRWdtQyxVQUFVeGlDLElBQUksSUFBSWlKLEdBQUd6TSxFQUFFNkMsRUFBRW1pRCxFQUFFLENBQUNxUCxPQUFPLFdBQVdyMEQsRUFBRSt4RCxhQUFhL3hELEVBQUVreEQsY0FBY2MsR0FBR2h5RCxFQUFFLG1CQUFrQixHQUFJd0QsR0FBRSxFQUFHLE1BQU14RCxFQUFFMGYsU0FBUzFmLEVBQUUreEQsWUFBVyxFQUFHQyxHQUFHaHlELEVBQUUsWUFBWUEsRUFBM1IsQ0FBOFJ5RSxLQUFLekUsRUFBRUEsR0FBRzJtRCxFQUFFdVMsR0FBR2w1RCxRQUFHLEVBQU9pRCxJQUFJMGpELEdBQUcxa0QsWUFBVyxXQUFXd2pELEVBQUVDLFVBQVVpQyxJQUFJQSxHQUFHNTZDLEtBQUssT0FBT2dwRCxNQUFLLEdBQUcsSUFBbWY2UixHQUEvZUMsR0FBRywyQkFBMkJDLEdBQUcseUJBQXlCQyxHQUFHdmpCLEdBQUUsU0FBU3hrRCxHQUFHLElBQUlpRCxFQUFFakQsRUFBRSxHQUFHZ0csUUFBUThoRSxHQUFHLFFBQVF0a0UsRUFBRXhELEVBQUUsR0FBR2dHLFFBQVE4aEUsR0FBRyxRQUFRLE9BQU8sSUFBSTV1RCxPQUFPalcsRUFBRSxnQkFBZ0JPLEVBQUUsUUFBV3drRSxHQUFHLENBQUNDLFdBQVcsQ0FBQyxlQUFlQyxjQUFjLFNBQVNsb0UsRUFBRWlELEdBQUdBLEVBQUVvMkIsS0FBSyxJQUFJNzFCLEVBQUVrNkQsR0FBRzE5RCxFQUFFLFNBQVN3RCxJQUFJeEQsRUFBRThFLFlBQVlvaEIsS0FBS0MsVUFBVTNpQixJQUFJLElBQUlYLEVBQUU0NkQsR0FBR3o5RCxFQUFFLFNBQVEsR0FBSTZDLElBQUk3QyxFQUFFbW9FLGFBQWF0bEUsSUFBSXVsRSxRQUFRLFNBQVNwb0UsR0FBRyxJQUFJaUQsRUFBRSxHQUFHLE9BQU9qRCxFQUFFOEUsY0FBYzdCLEdBQUcsZUFBZWpELEVBQUU4RSxZQUFZLEtBQUs5RSxFQUFFbW9FLGVBQWVsbEUsR0FBRyxTQUFTakQsRUFBRW1vRSxhQUFhLEtBQUtsbEUsSUFBV3l5QixHQUFHLENBQUN1eUMsV0FBVyxDQUFDLGVBQWVDLGNBQWMsU0FBU2xvRSxFQUFFaUQsR0FBR0EsRUFBRW8yQixLQUFLLElBQUk3MUIsRUFBRWs2RCxHQUFHMTlELEVBQUUsU0FBU3dELElBQUl4RCxFQUFFNC9ELFlBQVkxNUMsS0FBS0MsVUFBVXM1QyxHQUFHajhELEtBQUssSUFBSVgsRUFBRTQ2RCxHQUFHejlELEVBQUUsU0FBUSxHQUFJNkMsSUFBSTdDLEVBQUVxb0UsYUFBYXhsRSxJQUFJdWxFLFFBQVEsU0FBU3BvRSxHQUFHLElBQUlpRCxFQUFFLEdBQUcsT0FBT2pELEVBQUU0L0QsY0FBYzM4RCxHQUFHLGVBQWVqRCxFQUFFNC9ELFlBQVksS0FBSzUvRCxFQUFFcW9FLGVBQWVwbEUsR0FBRyxVQUFVakQsRUFBRXFvRSxhQUFhLE1BQU1wbEUsSUFBNEZxbEUsR0FBR3RuRSxFQUFFLDZGQUE2RnVuRSxHQUFHdm5FLEVBQUUsMkRBQTJEd25FLEdBQUd4bkUsRUFBRSxtU0FBbVN5bkUsR0FBRyw0RUFBNEVDLEdBQUcsd0dBQXdHQyxHQUFHLDZCQUE2Qm42RCxFQUFFM0gsT0FBTyxLQUFLK2hFLEdBQUcsT0FBT0QsR0FBRyxRQUFRQSxHQUFHLElBQUlFLEdBQUcsSUFBSTN2RCxPQUFPLEtBQUswdkQsSUFBSUUsR0FBRyxhQUFhQyxHQUFHLElBQUk3dkQsT0FBTyxRQUFRMHZELEdBQUcsVUFBVUksR0FBRyxxQkFBcUJDLEdBQUcsU0FBU0MsR0FBRyxRQUFRQyxHQUFHbm9FLEVBQUUseUJBQXdCLEdBQUlvb0UsR0FBRyxHQUFHQyxHQUFHLENBQUMsT0FBTyxJQUFJLE9BQU8sSUFBSSxTQUFTLElBQUksUUFBUSxJQUFJLFFBQVEsS0FBSyxPQUFPLEtBQUssUUFBUSxLQUFLQyxHQUFHLDRCQUE0QkMsR0FBRyxtQ0FBbUNDLEdBQUd4b0UsRUFBRSxnQkFBZSxHQUFJeW9FLEdBQUcsU0FBU3pwRSxFQUFFaUQsR0FBRyxPQUFPakQsR0FBR3dwRSxHQUFHeHBFLElBQUksT0FBT2lELEVBQUUsSUFBSSxTQUFTeW1FLEdBQUcxcEUsRUFBRWlELEdBQUcsSUFBSU8sRUFBRVAsRUFBRXNtRSxHQUFHRCxHQUFHLE9BQU90cEUsRUFBRWdHLFFBQVF4QyxHQUFFLFNBQVN4RCxHQUFHLE9BQU9xcEUsR0FBR3JwRSxNQUFLLElBQUkycEUsR0FBR0MsR0FBR0MsR0FBR0MsR0FBR0MsR0FBR0MsR0FBR0MsR0FBR0MsR0FBR0MsR0FBRyxZQUFZQyxHQUFHLGVBQWVDLEdBQUcscUNBQXFDQyxHQUFHLGlDQUFpQ0MsR0FBRyxXQUFXQyxHQUFHLFdBQVdDLEdBQUcsU0FBU0MsR0FBRyxrQkFBa0JDLEdBQUcsd0JBQXdCQyxHQUFHLGtCQUFrQkMsR0FBRyxTQUFTQyxHQUFHLE9BQU9DLEdBQUd2bUIsR0FBcGdELFNBQVN4a0QsR0FBRyxPQUFPNG5FLEdBQUdBLElBQUlubkUsU0FBU0MsY0FBYyxRQUFRcVAsVUFBVS9QLEVBQUU0bkUsR0FBR2pwQyxlQUFrOENxc0MsR0FBRyxVQUFVLFNBQVM1NkMsR0FBR3B3QixFQUFFaUQsRUFBRU8sR0FBRyxNQUFNLENBQUM5QixLQUFLLEVBQUUrUixJQUFJelQsRUFBRWc5RCxVQUFVLzVELEVBQUU4NUQsU0FBU2tPLEdBQUdob0UsR0FBR2lvRSxZQUFZLEdBQUduc0QsT0FBT3ZiLEVBQUUrUCxTQUFTLElBQW1ySyxTQUFTNDNELEdBQUduckUsRUFBRWlELEdBQUcsSUFBSU8sRUFBRVgsR0FBR0EsRUFBRTQ2RCxHQUFHajZELEVBQUV4RCxFQUFFLFVBQVV3RCxFQUFFRixJQUFJVCxHQUFHN0MsRUFBRTI4RCxPQUFPMzhELEVBQUVzRCxNQUFNdEQsRUFBRSs5QixjQUFjLzlCLEVBQUVnOUQsVUFBVWgrRCxPQUFPLFNBQVNnQixHQUFHLElBQUlpRCxFQUFFdzZELEdBQUd6OUQsRUFBRSxPQUFPaUQsSUFBSWpELEVBQUU4ZSxJQUFJN2IsRUFBRWpELEVBQUU4NUQsU0FBUyxTQUFTOTVELEdBQVcsSUFBUixJQUFJaUQsRUFBRWpELEVBQU9pRCxHQUFHLENBQUMsUUFBRyxJQUFTQSxFQUFFbW9FLElBQUksT0FBTSxFQUFHbm9FLEVBQUVBLEVBQUU4YixPQUFPLE9BQU0sRUFBekUsQ0FBNkUvZSxJQUFsSSxDQUF1SUEsR0FBRyxTQUFTQSxHQUFHLElBQUlpRCxFQUFFLGFBQWFqRCxFQUFFeVQsS0FBS3hRLEVBQUV5NkQsR0FBRzE5RCxFQUFFLFNBQVNBLEVBQUVxckUsVUFBVXBvRSxHQUFHeTZELEdBQUcxOUQsRUFBRSxnQkFBZ0JpRCxFQUFFeTZELEdBQUcxOUQsRUFBRSxpQkFBaUJBLEVBQUVxckUsVUFBVXBvRSxHQUFHLElBQUlPLEVBQUVpNkQsR0FBR3o5RCxFQUFFLFFBQTRRLEdBQXBRd0QsSUFBSXhELEVBQUVzckUsV0FBVyxPQUFPOW5FLEVBQUUsWUFBWUEsRUFBRXhELEVBQUV1ckUscUJBQXFCdnJFLEVBQUUrOEQsU0FBUyxXQUFXLzhELEVBQUUrOEQsU0FBUyxnQkFBZ0IsYUFBYS84RCxFQUFFeVQsS0FBS3pULEVBQUVxckUsV0FBV3pPLEdBQUc1OEQsRUFBRSxPQUFPd0QsRUFBRSxTQUFTeEQsRUFBRWlELEdBQUcsT0FBT2pELEVBQUVrckUsWUFBWSxJQUFJam9FLElBQUlqRCxFQUFFa3JFLFlBQVksVUFBVWpvRSxJQUFJakQsRUFBRWtyRSxZQUFZam9FLEdBQXJGLENBQXlGakQsRUFBRSxVQUFhLGFBQWFBLEVBQUV5VCxJQUFJLENBQUMsSUFBSTVRLEVBQUU4NkQsR0FBRzM5RCxFQUFFNHFFLElBQUksR0FBRy9uRSxFQUFFLENBQUMsSUFBSS9ELEVBQUUwc0UsR0FBRzNvRSxHQUFHSixFQUFFM0QsRUFBRWdELEtBQUsrVCxFQUFFL1csRUFBRTQ5RCxRQUFRMThELEVBQUVzckUsV0FBVzdvRSxFQUFFekMsRUFBRXVyRSxrQkFBa0IxMUQsRUFBRTdWLEVBQUVxckUsVUFBVXhvRSxFQUFFRyxPQUFPZ29FLFFBQVEsQ0FBQyxJQUFJOW1FLEVBQUV5NUQsR0FBRzM5RCxFQUFFNHFFLElBQUksR0FBRzFtRSxFQUFFLENBQUMsSUFBSTVCLEVBQUV0QyxFQUFFKzlCLGNBQWMvOUIsRUFBRSs5QixZQUFZLElBQUl1bUIsRUFBRWtuQixHQUFHdG5FLEdBQUduRSxFQUFFdWtELEVBQUV4aUQsS0FBS3lpRCxFQUFFRCxFQUFFb1ksUUFBUTE3RCxFQUFFc0IsRUFBRXZDLEdBQUdxd0IsR0FBRyxXQUFXLEdBQUdwd0IsR0FBR2dCLEVBQUVzcUUsV0FBV3ZyRSxFQUFFaUIsRUFBRXVxRSxrQkFBa0JobkIsRUFBRXZqRCxFQUFFdVMsU0FBU3ZULEVBQUV1VCxTQUFTck0sUUFBTyxTQUFTbEgsR0FBRyxJQUFJQSxFQUFFcXJFLFVBQVUsT0FBT3JyRSxFQUFFK2UsT0FBTy9kLEdBQUUsS0FBS0EsRUFBRXFxRSxVQUFVbm5FLEVBQUVsQixPQUFPZ29FLEdBQUdockUsRUFBRXVULFNBQVMsR0FBR3ZULEVBQUUyOEQsT0FBTSxJQUFoMEIsQ0FBczBCMzhELEdBQUcsU0FBU0EsR0FBRyxTQUFTQSxFQUFFeVQsTUFBTXpULEVBQUV5ckUsU0FBU2hPLEdBQUd6OUQsRUFBRSxTQUE3QyxDQUF1REEsR0FBRyxTQUFTQSxHQUFHLElBQUlpRCxHQUFHQSxFQUFFdzZELEdBQUd6OUQsRUFBRSxTQUFTQSxFQUFFdUUsVUFBVXRCLEdBQUcsTUFBTXk2RCxHQUFHMTlELEVBQUUscUJBQXFCQSxFQUFFb3hELGdCQUFlLEdBQW5HLENBQXdHcHhELEdBQUcsSUFBSSxJQUFJbEIsRUFBRSxFQUFFQSxFQUFFK3FFLEdBQUc3cUUsT0FBT0YsSUFBSWtCLEVBQUU2cEUsR0FBRy9xRSxHQUFHa0IsRUFBRWlELElBQUlqRCxFQUFFLE9BQU8sU0FBU0EsR0FBRyxJQUFJaUQsRUFBRU8sRUFBRVgsRUFBRS9ELEVBQUUyRCxFQUFFb1QsRUFBRTNSLEVBQUU1QixFQUFFZ2lELEVBQUV0a0QsRUFBRWc5RCxVQUFVLElBQUkvNUQsRUFBRSxFQUFFTyxFQUFFOGdELEVBQUV0bEQsT0FBT2lFLEVBQUVPLEVBQUVQLElBQUksR0FBR0osRUFBRS9ELEVBQUV3bEQsRUFBRXJoRCxHQUFHbkIsS0FBS1csRUFBRTZoRCxFQUFFcmhELEdBQUdELE1BQU1vbkUsR0FBR3ZrRSxLQUFLaEQsR0FBRyxHQUFHN0MsRUFBRTByRSxhQUFZLEdBQUk3MUQsRUFBRTgxRCxHQUFHOW9FLEVBQUVtRCxRQUFRb2tFLEdBQUcsUUFBUXZuRSxFQUFFQSxFQUFFbUQsUUFBUTJrRSxHQUFHLEtBQUtELEdBQUc3a0UsS0FBS2hELEdBQUdBLEVBQUVBLEVBQUVtRCxRQUFRMGtFLEdBQUcsSUFBSWpvRSxFQUFFMjVELEdBQUczNUQsSUFBSUgsRUFBRWtvRSxHQUFHM2tFLEtBQUtoRCxNQUFNQSxFQUFFQSxFQUFFb0IsTUFBTSxHQUFHLElBQUk0UixJQUFJQSxFQUFFa25CLE9BQU96NkIsR0FBRyxlQUFlTyxFQUFFaVQsRUFBRWpULE1BQU1BLEVBQUUsYUFBYWdULEVBQUUrMUQsUUFBUXRwRSxJQUFJTyxFQUFFaVQsRUFBRWpULElBQUlnVCxFQUFFb21CLE9BQU8vM0IsRUFBRTQ1RCxHQUFHcjdELEVBQUUsVUFBVUgsRUFBRTg2RCxHQUFHcDlELEVBQUUsY0FBYzZDLEVBQUUsSUFBSXFCLEVBQUUsTUFBSyxFQUFHLEVBQUVvZ0QsRUFBRXJoRCxJQUFHLElBQUttNkQsR0FBR3A5RCxFQUFFLFVBQVU4VixFQUFFalQsR0FBR3FCLEVBQUUsTUFBSyxFQUFHLEVBQUVvZ0QsRUFBRXJoRCxJQUFJeWhELEVBQUU3aEQsS0FBS2lULEVBQUVqVCxJQUFJdTZELEdBQUdwOUQsRUFBRSxVQUFVMGtELEVBQUU3aEQsR0FBR3FCLEVBQUUsTUFBSyxFQUFHLEVBQUVvZ0QsRUFBRXJoRCxPQUFPNFMsR0FBR0EsRUFBRWtuQixPQUFPLzhCLEVBQUV1RSxXQUFXMGxFLEdBQUdqcUUsRUFBRXlULElBQUl6VCxFQUFFKzhELFNBQVNyN0QsS0FBS21CLEdBQUcyNUQsR0FBR3g4RCxFQUFFNkMsRUFBRUosRUFBRTZoRCxFQUFFcmhELEdBQUdYLEdBQUdzNkQsR0FBRzU4RCxFQUFFNkMsRUFBRUosRUFBRTZoRCxFQUFFcmhELEdBQUdYLFFBQVEsR0FBRzZuRSxHQUFHdGtFLEtBQUtoRCxHQUFHQSxFQUFFQSxFQUFFbUQsUUFBUW1rRSxHQUFHLEtBQUs3bkUsRUFBRWtvRSxHQUFHM2tFLEtBQUtoRCxNQUFNQSxFQUFFQSxFQUFFb0IsTUFBTSxHQUFHLElBQUltNUQsR0FBR3A5RCxFQUFFNkMsRUFBRUosRUFBRW9ULEdBQUUsRUFBRyxFQUFFeXVDLEVBQUVyaEQsR0FBR1gsT0FBTyxDQUFDLElBQUl2QyxHQUFHOEMsRUFBRUEsRUFBRW1ELFFBQVFva0UsR0FBRyxLQUFLeGpELE1BQU02akQsSUFBSWxtQixFQUFFeGtELEdBQUdBLEVBQUUsR0FBR3VDLEdBQUUsRUFBR2lpRCxJQUFJMWhELEVBQUVBLEVBQUVvQixNQUFNLElBQUlzZ0QsRUFBRXZsRCxPQUFPLElBQUl3ckUsR0FBRzNrRSxLQUFLMCtDLEtBQUtBLEVBQUVBLEVBQUV0Z0QsTUFBTSxHQUFHLEdBQUczQixHQUFFLElBQUsyNkQsR0FBR2o5RCxFQUFFNkMsRUFBRS9ELEVBQUUyRCxFQUFFOGhELEVBQUVqaUQsRUFBRXVULEVBQUV5dUMsRUFBRXJoRCxTQUFTMjVELEdBQUc1OEQsRUFBRTZDLEVBQUVxakIsS0FBS0MsVUFBVTFqQixHQUFHNmhELEVBQUVyaEQsS0FBS2pELEVBQUV1RSxXQUFXLFVBQVUxQixHQUFHb25FLEdBQUdqcUUsRUFBRXlULElBQUl6VCxFQUFFKzhELFNBQVNyN0QsS0FBS21CLElBQUkyNUQsR0FBR3g4RCxFQUFFNkMsRUFBRSxPQUFPeWhELEVBQUVyaEQsSUFBeDZCLENBQTY2QmpELEdBQUdBLEVBQUUsU0FBUzZyRSxHQUFHN3JFLEdBQUcsSUFBSWlELEVBQUUsR0FBR0EsRUFBRXk2RCxHQUFHMTlELEVBQUUsU0FBUyxDQUFDLElBQUl3RCxFQUFFLFNBQVN4RCxHQUFHLElBQUlpRCxFQUFFakQsRUFBRTRtQixNQUFNeWpELElBQUksR0FBSXBuRSxFQUFKLENBQWEsSUFBSU8sRUFBRSxHQUFHQSxFQUFFNG5FLElBQUlub0UsRUFBRSxHQUFHbVUsT0FBTyxJQUFJdlUsRUFBRUksRUFBRSxHQUFHbVUsT0FBT3BSLFFBQVF1a0UsR0FBRyxJQUFJenJFLEVBQUUrRCxFQUFFK2pCLE1BQU0wakQsSUFBMEcsT0FBdEd4ckUsR0FBRzBFLEVBQUU2b0IsTUFBTXhwQixFQUFFbUQsUUFBUXNrRSxHQUFHLElBQUlsekQsT0FBTzVULEVBQUVzb0UsVUFBVWh0RSxFQUFFLEdBQUdzWSxPQUFPdFksRUFBRSxLQUFLMEUsRUFBRXVvRSxVQUFVanRFLEVBQUUsR0FBR3NZLFNBQVM1VCxFQUFFNm9CLE1BQU14cEIsRUFBU1csR0FBbE8sQ0FBcU9QLEdBQUdPLEdBQUdzaEQsRUFBRTlrRCxFQUFFd0QsSUFBSSxTQUFTd29FLEdBQUdoc0UsRUFBRWlELEdBQUdqRCxFQUFFaXNFLGVBQWVqc0UsRUFBRWlzRSxhQUFhLElBQUlqc0UsRUFBRWlzRSxhQUFhM3NFLEtBQUsyRCxHQUFHLFNBQVN1b0UsR0FBR3hyRSxHQUFHLElBQUlpRCxFQUFFakQsRUFBRThCLEtBQUtrRSxRQUFRNGtFLEdBQUcsSUFBSSxPQUFPM25FLEdBQUcsTUFBTWpELEVBQUU4QixLQUFLLEtBQUttQixFQUFFLFdBQVd1bkUsR0FBRzNrRSxLQUFLNUMsR0FBRyxDQUFDbkIsS0FBS21CLEVBQUVnQixNQUFNLEdBQUcsR0FBR3k0RCxTQUFRLEdBQUksQ0FBQzU2RCxLQUFLLElBQUltQixFQUFFLElBQUl5NUQsU0FBUSxHQUFJLFNBQVNpUCxHQUFHM3JFLEdBQUcsSUFBSWlELEVBQUVqRCxFQUFFNG1CLE1BQU0rakQsSUFBSSxHQUFHMW5FLEVBQUUsQ0FBQyxJQUFJTyxFQUFFLEdBQUcsT0FBT1AsRUFBRW9FLFNBQVEsU0FBU3JILEdBQUd3RCxFQUFFeEQsRUFBRWlFLE1BQU0sS0FBSSxLQUFLVCxHQUFHLFNBQVN5bkUsR0FBR2pyRSxHQUFHLElBQUksSUFBSWlELEVBQUUsR0FBR08sRUFBRSxFQUFFWCxFQUFFN0MsRUFBRWhCLE9BQU93RSxFQUFFWCxFQUFFVyxJQUFJUCxFQUFFakQsRUFBRXdELEdBQUcxQixNQUFNOUIsRUFBRXdELEdBQUdSLE1BQU0sT0FBT0MsRUFBRSxJQUFJaXBFLEdBQUcsZUFBZUMsR0FBRyxVQUFVLFNBQVNDLEdBQUdwc0UsR0FBRyxPQUFPb3dCLEdBQUdwd0IsRUFBRXlULElBQUl6VCxFQUFFZzlELFVBQVUvNEQsUUFBUWpFLEVBQUUrZSxRQUFRLElBQXFvQnN0RCxHQUFHQyxHQUFwb0JDLEdBQUcsQ0FBQ3ZFLEdBQUd0eUMsR0FBRyxDQUFDODJDLGlCQUFpQixTQUFTeHNFLEVBQUVpRCxHQUFHLEdBQUcsVUFBVWpELEVBQUV5VCxJQUFJLENBQUMsSUFBSWpRLEVBQUVYLEVBQUU3QyxFQUFFKzhELFNBQVMsSUFBSWw2RCxFQUFFLFdBQVcsT0FBTyxJQUFJQSxFQUFFLFVBQVVBLEVBQUUsa0JBQWtCVyxFQUFFaTZELEdBQUd6OUQsRUFBRSxTQUFTNkMsRUFBRW5CLE1BQU04QixJQUFJWCxFQUFFLFlBQVlXLEVBQUUsSUFBSVgsRUFBRSxVQUFVLFVBQVVXLEVBQUUsQ0FBQyxJQUFJMUUsRUFBRTQrRCxHQUFHMTlELEVBQUUsUUFBTyxHQUFJeUMsRUFBRTNELEVBQUUsTUFBTUEsRUFBRSxJQUFJLEdBQUcrVyxFQUFFLE1BQU02bkQsR0FBRzE5RCxFQUFFLFVBQVMsR0FBSWtFLEVBQUV3NUQsR0FBRzE5RCxFQUFFLGFBQVksR0FBSXNDLEVBQUU4cEUsR0FBR3BzRSxHQUFHNnJFLEdBQUd2cEUsR0FBR3c2RCxHQUFHeDZELEVBQUUsT0FBTyxZQUFZNm9FLEdBQUc3b0UsRUFBRVcsR0FBR1gsRUFBRW1xRSxXQUFVLEVBQUducUUsRUFBRW9xRSxHQUFHLElBQUlscEUsRUFBRSxpQkFBaUJmLEVBQUV1cEUsR0FBRzFwRSxFQUFFLENBQUN3K0IsSUFBSXgrQixFQUFFb3FFLEdBQUcva0MsTUFBTXJsQyxJQUFJLElBQUlnaUQsRUFBRThuQixHQUFHcHNFLEdBQUcwOUQsR0FBR3BaLEVBQUUsU0FBUSxHQUFJd1ksR0FBR3hZLEVBQUUsT0FBTyxTQUFTNm1CLEdBQUc3bUIsRUFBRXJoRCxHQUFHK29FLEdBQUcxcEUsRUFBRSxDQUFDdytCLElBQUksSUFBSXQ5QixFQUFFLGNBQWNmLEVBQUVrbEMsTUFBTTJjLElBQUksSUFBSXZrRCxFQUFFcXNFLEdBQUdwc0UsR0FBRyxPQUFPMDlELEdBQUczOUQsRUFBRSxTQUFRLEdBQUkrOEQsR0FBRy84RCxFQUFFLFFBQVF5RCxHQUFHMm5FLEdBQUdwckUsRUFBRWtELEdBQUcrb0UsR0FBRzFwRSxFQUFFLENBQUN3K0IsSUFBSWhpQyxFQUFFNm9DLE1BQU01bkMsSUFBSThWLEVBQUV2VCxFQUFFcXFFLE1BQUssRUFBR3pvRSxJQUFJNUIsRUFBRXNxRSxPQUFPMW9FLEdBQUc1QixPQUFpQnVxRSxHQUFHLENBQUNDLFlBQVcsRUFBR3Z0RSxRQUFRZ3RFLEdBQUdqMkIsV0FBVyxDQUFDdWMsTUFBTSxTQUFTN3lELEVBQUVpRCxFQUFFTyxHQUFHLElBQUlYLEVBQUVJLEVBQUVELE1BQU1sRSxFQUFFbUUsRUFBRXc3QixVQUFVaDhCLEVBQUV6QyxFQUFFeVQsSUFBSW9DLEVBQUU3VixFQUFFKzhELFNBQVNyN0QsS0FBSyxHQUFHMUIsRUFBRXVFLFVBQVUsT0FBT3E1RCxHQUFHNTlELEVBQUU2QyxFQUFFL0QsSUFBRyxFQUFHLEdBQUcsV0FBVzJELEdBQUcsU0FBU3pDLEVBQUVpRCxFQUFFTyxHQUFHLElBQUlYLEVBQUUsOEtBQThLVyxHQUFHQSxFQUFFcTZELE9BQU8sVUFBVSxPQUFPLE1BQWdGVCxHQUFHcDlELEVBQUUsU0FBL0U2QyxFQUFFQSxFQUFFLElBQUlpN0QsR0FBRzc2RCxFQUFFLDZEQUE2RSxNQUFLLEdBQXRVLENBQTJVakQsRUFBRTZDLEVBQUUvRCxRQUFRLEdBQUcsVUFBVTJELEdBQUcsYUFBYW9ULEdBQUcsU0FBUzdWLEVBQUVpRCxFQUFFTyxHQUFHLElBQUlYLEVBQUVXLEdBQUdBLEVBQUVxNkQsT0FBTy8rRCxFQUFFMitELEdBQUd6OUQsRUFBRSxVQUFVLE9BQU95QyxFQUFFZzdELEdBQUd6OUQsRUFBRSxlQUFlLE9BQU82VixFQUFFNG5ELEdBQUd6OUQsRUFBRSxnQkFBZ0IsUUFBUXc4RCxHQUFHeDhELEVBQUUsVUFBVSxpQkFBaUJpRCxFQUFFLFFBQVFBLEVBQUUsSUFBSW5FLEVBQUUsUUFBUSxTQUFTMkQsRUFBRSxLQUFLUSxFQUFFLElBQUksT0FBT0EsRUFBRSxJQUFJUixFQUFFLE1BQU0yNkQsR0FBR3A5RCxFQUFFLFNBQVMsV0FBV2lELEVBQUUseUNBQXlDUixFQUFFLE1BQU1vVCxFQUFFLHFDQUFxQ2hULEVBQUUsTUFBTS9ELEVBQUUsSUFBSUEsR0FBRyw2Q0FBNkNnL0QsR0FBRzc2RCxFQUFFLHFCQUFxQixtQkFBbUI2NkQsR0FBRzc2RCxFQUFFLDZDQUE2QyxXQUFXNjZELEdBQUc3NkQsRUFBRSxPQUFPLElBQUksTUFBSyxHQUEzZ0IsQ0FBZ2hCakQsRUFBRTZDLEVBQUUvRCxRQUFRLEdBQUcsVUFBVTJELEdBQUcsVUFBVW9ULEdBQUcsU0FBUzdWLEVBQUVpRCxFQUFFTyxHQUFHLElBQUlYLEVBQUVXLEdBQUdBLEVBQUVxNkQsT0FBTy8rRCxFQUFFMitELEdBQUd6OUQsRUFBRSxVQUFVLE9BQU93OEQsR0FBR3g4RCxFQUFFLFVBQVUsTUFBTWlELEVBQUUsS0FBS25FLEVBQUUrRCxFQUFFLE1BQU0vRCxFQUFFLElBQUlBLEdBQUcsS0FBS3MrRCxHQUFHcDlELEVBQUUsU0FBUzg5RCxHQUFHNzZELEVBQUVuRSxHQUFHLE1BQUssR0FBekksQ0FBOElrQixFQUFFNkMsRUFBRS9ELFFBQVEsR0FBRyxVQUFVMkQsR0FBRyxhQUFhQSxHQUFHLFNBQVN6QyxFQUFFaUQsRUFBRU8sR0FBRyxJQUFJWCxFQUFFN0MsRUFBRSs4RCxTQUFTcjdELEtBQUs1QyxFQUFFMEUsR0FBRyxHQUFHZixFQUFFM0QsRUFBRTIxRCxLQUFLNStDLEVBQUUvVyxFQUFFKytELE9BQU8zNUQsRUFBRXBGLEVBQUVzWSxLQUFLOVUsR0FBR0csR0FBRyxVQUFVSSxFQUFFeWhELEVBQUU3aEQsRUFBRSxTQUFTLFVBQVVJLEVBQUV5N0QsR0FBRyxRQUFRditELEVBQUUsc0JBQXNCbUUsSUFBSW5FLEVBQUUsOEJBQThCOFYsSUFBSTlWLEVBQUUsTUFBTUEsRUFBRSxLQUFLLElBQUl3a0QsRUFBRXVaLEdBQUc3NkQsRUFBRWxELEdBQUd1QyxJQUFJaWlELEVBQUUscUNBQXFDQSxHQUFHaVksR0FBR3g4RCxFQUFFLFFBQVEsSUFBSWlELEVBQUUsS0FBS202RCxHQUFHcDlELEVBQUVza0QsRUFBRUMsRUFBRSxNQUFLLElBQUtyZ0QsR0FBRzJSLElBQUl1bkQsR0FBR3A5RCxFQUFFLE9BQU8sa0JBQTFVLENBQTZWQSxFQUFFNkMsRUFBRS9ELFFBQVEsSUFBSTJtRCxFQUFFTSxjQUFjdGpELEdBQUcsT0FBT203RCxHQUFHNTlELEVBQUU2QyxFQUFFL0QsSUFBRyxFQUFHLE9BQU0sR0FBSTRjLEtBQUssU0FBUzFiLEVBQUVpRCxHQUFHQSxFQUFFRCxPQUFPdzVELEdBQUd4OEQsRUFBRSxjQUFjLE1BQU1pRCxFQUFFRCxNQUFNLElBQUlDLElBQUl5VyxLQUFLLFNBQVMxWixFQUFFaUQsR0FBR0EsRUFBRUQsT0FBT3c1RCxHQUFHeDhELEVBQUUsWUFBWSxNQUFNaUQsRUFBRUQsTUFBTSxJQUFJQyxLQUFLOHBFLFNBQVMsU0FBUy9zRSxHQUFHLE1BQU0sUUFBUUEsR0FBR2d0RSxXQUFXMUUsR0FBR2xpQixZQUFZMFIsR0FBR21WLGlCQUFpQjFFLEdBQUd4aUIsY0FBYytTLEdBQUc1UyxnQkFBZ0I2UyxHQUFHa1AsV0FBVyxTQUFTam9FLEdBQUcsT0FBT0EsRUFBRThRLFFBQU8sU0FBUzlRLEVBQUVpRCxHQUFHLE9BQU9qRCxFQUFFaUgsT0FBT2hFLEVBQUVnbEUsWUFBWSxNQUFLLElBQUkzMEQsS0FBSyxLQUF0RixDQUE0Rmk1RCxLQUFLVyxHQUFHMW9CLEdBQUUsU0FBU3hrRCxHQUFHLE9BQU9nQixFQUFFLGlGQUFpRmhCLEVBQUUsSUFBSUEsRUFBRSxRQUErZ0MsSUFBSW10RSxHQUFHLDBEQUEwREMsR0FBRyxnQkFBZ0JDLEdBQUcsK0ZBQStGQyxHQUFHLENBQUNDLElBQUksR0FBR0MsSUFBSSxFQUFFeEssTUFBTSxHQUFHeUssTUFBTSxHQUFHQyxHQUFHLEdBQUcxOUMsS0FBSyxHQUFHcXRDLE1BQU0sR0FBR3NRLEtBQUssR0FBR3JXLE9BQU8sQ0FBQyxFQUFFLEtBQUtzVyxHQUFHLENBQUNMLElBQUksQ0FBQyxNQUFNLFVBQVVDLElBQUksTUFBTXhLLE1BQU0sUUFBUXlLLE1BQU0sQ0FBQyxJQUFJLFlBQVlDLEdBQUcsQ0FBQyxLQUFLLFdBQVcxOUMsS0FBSyxDQUFDLE9BQU8sYUFBYXF0QyxNQUFNLENBQUMsUUFBUSxjQUFjc1EsS0FBSyxDQUFDLE9BQU8sYUFBYXJXLE9BQU8sQ0FBQyxZQUFZLFNBQVMsUUFBUXVXLEdBQUcsU0FBUzd0RSxHQUFHLE1BQU0sTUFBTUEsRUFBRSxpQkFBaUI4dEUsR0FBRyxDQUFDQyxLQUFLLDRCQUE0QkMsUUFBUSwyQkFBMkJ2eEMsS0FBS294QyxHQUFHLDBDQUEwQ0ksS0FBS0osR0FBRyxtQkFBbUJwdUUsTUFBTW91RSxHQUFHLG9CQUFvQkssSUFBSUwsR0FBRyxrQkFBa0J0ckQsS0FBS3NyRCxHQUFHLG1CQUFtQjc5QyxLQUFLNjlDLEdBQUcsNkNBQTZDdlEsT0FBT3VRLEdBQUcsNkNBQTZDeFEsTUFBTXdRLEdBQUcsOENBQThDLFNBQVNNLEdBQUdudUUsRUFBRWlELEdBQUcsSUFBSU8sRUFBRVAsRUFBRSxZQUFZLE1BQU1KLEVBQUUsR0FBRy9ELEVBQUUsR0FBRyxJQUFJLElBQUkyRCxLQUFLekMsRUFBRSxDQUFDLElBQUk2VixFQUFFdTRELEdBQUdwdUUsRUFBRXlDLElBQUl6QyxFQUFFeUMsSUFBSXpDLEVBQUV5QyxHQUFHaTZELFFBQVE1OUQsR0FBRzJELEVBQUUsSUFBSW9ULEVBQUUsSUFBSWhULEdBQUcsSUFBSUosRUFBRSxLQUFLb1QsRUFBRSxJQUFJLE9BQU9oVCxFQUFFLElBQUlBLEVBQUVvQixNQUFNLEdBQUcsR0FBRyxJQUFJbkYsRUFBRTBFLEVBQUUsTUFBTVgsRUFBRSxLQUFLL0QsRUFBRW1GLE1BQU0sR0FBRyxHQUFHLEtBQUtULEVBQUVYLEVBQUUsU0FBU3VyRSxHQUFHcHVFLEdBQUcsSUFBSUEsRUFBRSxNQUFNLGVBQWUsR0FBR3dILE1BQU1DLFFBQVF6SCxHQUFHLE1BQU0sSUFBSUEsRUFBRXVLLEtBQUksU0FBU3ZLLEdBQUcsT0FBT291RSxHQUFHcHVFLE1BQUtzVCxLQUFLLEtBQUssSUFBSSxJQUFJclEsRUFBRW9xRSxHQUFHeG5FLEtBQUs3RixFQUFFZ0QsT0FBT1EsRUFBRTJwRSxHQUFHdG5FLEtBQUs3RixFQUFFZ0QsT0FBT0gsRUFBRXdxRSxHQUFHeG5FLEtBQUs3RixFQUFFZ0QsTUFBTWdELFFBQVFvbkUsR0FBRyxLQUFLLEdBQUdwdEUsRUFBRXkrQixVQUFVLENBQUMsSUFBSTMvQixFQUFFLEdBQUcyRCxFQUFFLEdBQUdvVCxFQUFFLEdBQUcsSUFBSSxJQUFJM1IsS0FBS2xFLEVBQUV5K0IsVUFBVSxHQUFHcXZDLEdBQUc1cEUsR0FBR3pCLEdBQUdxckUsR0FBRzVwRSxHQUFHb3BFLEdBQUdwcEUsSUFBSTJSLEVBQUV2VyxLQUFLNEUsUUFBUSxHQUFHLFVBQVVBLEVBQUUsQ0FBQyxJQUFJNUIsRUFBRXRDLEVBQUV5K0IsVUFBVWg4QixHQUFHb3JFLEdBQUcsQ0FBQyxPQUFPLFFBQVEsTUFBTSxRQUFRM21FLFFBQU8sU0FBU2xILEdBQUcsT0FBT3NDLEVBQUV0QyxNQUFLdUssS0FBSSxTQUFTdkssR0FBRyxNQUFNLFVBQVVBLEVBQUUsU0FBUXNULEtBQUssWUFBWXVDLEVBQUV2VyxLQUFLNEUsR0FBRyxPQUFPMlIsRUFBRTdXLFNBQVNGLEdBQUcsU0FBU2tCLEdBQUcsTUFBTSxtQ0FBbUNBLEVBQUV1SyxJQUFJOGpFLElBQUkvNkQsS0FBSyxNQUFNLGdCQUExRSxDQUEyRnVDLElBQUlwVCxJQUFJM0QsR0FBRzJELEdBQUcsb0JBQW9CM0QsR0FBR21FLEVBQUUsVUFBVWpELEVBQUVnRCxNQUFNLFdBQVdRLEVBQUUsV0FBV3hELEVBQUVnRCxNQUFNLFlBQVlILEVBQUUsVUFBVTdDLEVBQUVnRCxNQUFNaEQsRUFBRWdELE9BQU8sSUFBSSxPQUFPQyxHQUFHTyxFQUFFeEQsRUFBRWdELE1BQU0scUJBQXFCSCxFQUFFLFVBQVU3QyxFQUFFZ0QsTUFBTWhELEVBQUVnRCxPQUFPLElBQUksU0FBU3FyRSxHQUFHcnVFLEdBQUcsSUFBSWlELEVBQUV1OUIsU0FBU3hnQyxFQUFFLElBQUksR0FBR2lELEVBQUUsTUFBTSxvQkFBb0JBLEVBQUUsSUFBSU8sRUFBRThwRSxHQUFHdHRFLEdBQUc2QyxFQUFFK3FFLEdBQUc1dEUsR0FBRyxNQUFNLHFCQUFxQmttQixLQUFLQyxVQUFVbm1CLEdBQUcsSUFBSWttQixLQUFLQyxVQUFVM2lCLEdBQUcsZUFBZTBpQixLQUFLQyxVQUFVdGpCLEdBQUcsSUFBSSxJQUFJeXJFLEdBQUcsQ0FBQzd3RCxHQUFHLFNBQVN6ZCxFQUFFaUQsR0FBR2pELEVBQUV1dUUsY0FBYyxTQUFTdnVFLEdBQUcsTUFBTSxNQUFNQSxFQUFFLElBQUlpRCxFQUFFRCxNQUFNLE1BQU1PLEtBQUssU0FBU3ZELEVBQUVpRCxHQUFHakQsRUFBRXd1RSxTQUFTLFNBQVNockUsR0FBRyxNQUFNLE1BQU1BLEVBQUUsS0FBS3hELEVBQUV5VCxJQUFJLEtBQUt4USxFQUFFRCxNQUFNLEtBQUtDLEVBQUV3N0IsV0FBV3g3QixFQUFFdzdCLFVBQVUxQixLQUFLLE9BQU8sVUFBVTk1QixFQUFFdzdCLFdBQVd4N0IsRUFBRXc3QixVQUFVeEMsS0FBSyxRQUFRLElBQUksTUFBTXd5QyxNQUFNenBCLEdBQUcwcEIsR0FBRyxTQUFTMXVFLEdBQUd5RSxLQUFLTCxRQUFRcEUsRUFBRXlFLEtBQUs0MEIsS0FBS3I1QixFQUFFcTVCLE1BQU1pakMsR0FBRzczRCxLQUFLa3FFLFdBQVdwUyxHQUFHdjhELEVBQUVULFFBQVEsaUJBQWlCa0YsS0FBS21xRSxXQUFXclMsR0FBR3Y4RCxFQUFFVCxRQUFRLFdBQVdrRixLQUFLNnhDLFdBQVd3TyxFQUFFQSxFQUFFLEdBQUd3cEIsSUFBSXR1RSxFQUFFczJDLFlBQVksSUFBSXJ6QyxFQUFFakQsRUFBRStsRCxlQUFlZCxFQUFFeGdELEtBQUtvcUUsZUFBZSxTQUFTN3VFLEdBQUcsUUFBUUEsRUFBRXVFLFlBQVl0QixFQUFFakQsRUFBRXlULE1BQU1oUCxLQUFLcXFFLE9BQU8sRUFBRXJxRSxLQUFLK3FELGdCQUFnQixHQUFHL3FELEtBQUt3dUQsS0FBSSxHQUFJLFNBQVM4YixHQUFHL3VFLEVBQUVpRCxHQUFHLElBQUlPLEVBQUUsSUFBSWtyRSxHQUFHenJFLEdBQUcsTUFBTSxDQUFDMmIsT0FBTyxzQkFBc0I1ZSxFQUFFZ3ZFLEdBQUdodkUsRUFBRXdELEdBQUcsYUFBYSxJQUFJZ3NELGdCQUFnQmhzRCxFQUFFZ3NELGlCQUFpQixTQUFTd2YsR0FBR2h2RSxFQUFFaUQsR0FBRyxHQUFHakQsRUFBRStlLFNBQVMvZSxFQUFFaXpELElBQUlqekQsRUFBRWl6RCxLQUFLanpELEVBQUUrZSxPQUFPazBDLEtBQUtqekQsRUFBRWl2RSxhQUFhanZFLEVBQUVrdkUsZ0JBQWdCLE9BQU9DLEdBQUdudkUsRUFBRWlELEdBQUcsR0FBR2pELEVBQUUyZCxPQUFPM2QsRUFBRW92RSxjQUFjLE9BQU9DLEdBQUdydkUsRUFBRWlELEdBQUcsR0FBR2pELEVBQUVvckUsTUFBTXByRSxFQUFFc3ZFLGFBQWEsT0FBT0MsR0FBR3Z2RSxFQUFFaUQsR0FBRyxHQUFHakQsRUFBRTBzRSxLQUFLMXNFLEVBQUV3dkUsWUFBWSxPQUFPQyxHQUFHenZFLEVBQUVpRCxHQUFHLEdBQUcsYUFBYWpELEVBQUV5VCxLQUFLelQsRUFBRXNyRSxZQUFZcm9FLEVBQUVnd0QsSUFBSSxDQUFDLEdBQUcsU0FBU2p6RCxFQUFFeVQsSUFBSSxPQUFPLFNBQVN6VCxFQUFFaUQsR0FBRyxJQUFJTyxFQUFFeEQsRUFBRXlyRSxVQUFVLFlBQVk1b0UsRUFBRTZzRSxHQUFHMXZFLEVBQUVpRCxHQUFHbkUsRUFBRSxNQUFNMEUsR0FBR1gsRUFBRSxJQUFJQSxFQUFFLElBQUlKLEVBQUV6QyxFQUFFbUYsT0FBT25GLEVBQUU2OEQsYUFBYThTLElBQUkzdkUsRUFBRW1GLE9BQU8sSUFBSThCLE9BQU9qSCxFQUFFNjhELGNBQWMsSUFBSXR5RCxLQUFJLFNBQVN2SyxHQUFHLE1BQU0sQ0FBQzhCLEtBQUtnVSxFQUFFOVYsRUFBRThCLE1BQU1rQixNQUFNaEQsRUFBRWdELE1BQU0wNUQsUUFBUTE4RCxFQUFFMDhELGFBQVksS0FBSzdtRCxFQUFFN1YsRUFBRSs4RCxTQUFTLFVBQTZFLE9BQWxFdDZELElBQUlvVCxHQUFHaFQsSUFBSS9ELEdBQUcsU0FBUzJELElBQUkzRCxHQUFHLElBQUkyRCxHQUFHb1QsSUFBSS9XLElBQUkyRCxFQUFFLEdBQUcsU0FBUyxJQUFJb1QsR0FBVS9XLEVBQUUsSUFBclUsQ0FBMFVrQixFQUFFaUQsR0FBRyxJQUFJTyxFQUFFLEdBQUd4RCxFQUFFdUUsVUFBVWYsRUFBRSxTQUFTeEQsRUFBRWlELEVBQUVPLEdBQUcsSUFBSVgsRUFBRUksRUFBRW11RCxlQUFlLEtBQUtzZSxHQUFHenNFLEVBQUVPLEdBQUUsR0FBSSxNQUFNLE1BQU14RCxFQUFFLElBQUk0dkUsR0FBRzNzRSxFQUFFTyxJQUFJWCxFQUFFLElBQUlBLEVBQUUsSUFBSSxJQUE5RixDQUFtRzdDLEVBQUV1RSxVQUFVdkUsRUFBRWlELE9BQU8sQ0FBQyxJQUFJSixJQUFJN0MsRUFBRTI4RCxPQUFPMzhELEVBQUVpekQsS0FBS2h3RCxFQUFFNHJFLGVBQWU3dUUsTUFBTTZDLEVBQUUrc0UsR0FBRzV2RSxFQUFFaUQsSUFBSSxJQUFJbkUsRUFBRWtCLEVBQUVveEQsZUFBZSxLQUFLc2UsR0FBRzF2RSxFQUFFaUQsR0FBRSxHQUFJTyxFQUFFLE9BQU94RCxFQUFFeVQsSUFBSSxLQUFLNVEsRUFBRSxJQUFJQSxFQUFFLEtBQUsvRCxFQUFFLElBQUlBLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSTJELEVBQUUsRUFBRUEsRUFBRVEsRUFBRTByRSxXQUFXM3ZFLE9BQU95RCxJQUFJZSxFQUFFUCxFQUFFMHJFLFdBQVdsc0UsR0FBR3pDLEVBQUV3RCxHQUFHLE9BQU9BLEVBQUUsT0FBT2tzRSxHQUFHMXZFLEVBQUVpRCxJQUFJLFNBQVMsU0FBU2tzRSxHQUFHbnZFLEVBQUVpRCxHQUFHakQsRUFBRWt2RSxpQkFBZ0IsRUFBRyxJQUFJMXJFLEVBQUVQLEVBQUVnd0QsSUFBSSxPQUFPanpELEVBQUVpekQsTUFBTWh3RCxFQUFFZ3dELElBQUlqekQsRUFBRWl6RCxLQUFLaHdELEVBQUV1c0QsZ0JBQWdCbHdELEtBQUsscUJBQXFCMHZFLEdBQUdodkUsRUFBRWlELEdBQUcsS0FBS0EsRUFBRWd3RCxJQUFJenZELEVBQUUsT0FBT1AsRUFBRXVzRCxnQkFBZ0J4d0QsT0FBTyxJQUFJZ0IsRUFBRTZ2RSxZQUFZLFFBQVEsSUFBSSxJQUFJLFNBQVNSLEdBQUdydkUsRUFBRWlELEdBQUcsR0FBR2pELEVBQUVvdkUsZUFBYyxFQUFHcHZFLEVBQUUwc0UsS0FBSzFzRSxFQUFFd3ZFLFlBQVksT0FBT0MsR0FBR3p2RSxFQUFFaUQsR0FBRyxHQUFHakQsRUFBRTZ2RSxZQUFZLENBQUMsSUFBSSxJQUFJcnNFLEVBQUUsR0FBR1gsRUFBRTdDLEVBQUUrZSxPQUFPbGMsR0FBRyxDQUFDLEdBQUdBLEVBQUV1b0UsSUFBSSxDQUFDNW5FLEVBQUVYLEVBQUVTLElBQUksTUFBTVQsRUFBRUEsRUFBRWtjLE9BQU8sT0FBT3ZiLEVBQUUsTUFBTXdyRSxHQUFHaHZFLEVBQUVpRCxHQUFHLElBQUlBLEVBQUU2ckUsU0FBUyxJQUFJdHJFLEVBQUUsSUFBSXdyRSxHQUFHaHZFLEVBQUVpRCxHQUFHLE9BQU9rc0UsR0FBR252RSxFQUFFaUQsR0FBRyxTQUFTd3NFLEdBQUd6dkUsRUFBRWlELEVBQUVPLEVBQUVYLEdBQUcsT0FBTzdDLEVBQUV3dkUsYUFBWSxFQUFHLFNBQVN4dkUsRUFBRWlELEVBQUVPLEVBQUVYLEVBQUUvRCxHQUFHLElBQUltRSxFQUFFakUsT0FBTyxPQUFPRixHQUFHLE9BQU8sSUFBSTJELEVBQUVRLEVBQUV4RCxRQUFRLE9BQU9nRCxFQUFFcStCLElBQUksSUFBSXIrQixFQUFFcStCLElBQUksS0FBS2pyQixFQUFFcFQsRUFBRWtsQyxPQUFPLElBQUkzbkMsRUFBRWlELEVBQUVPLEVBQUVYLEVBQUUvRCxHQUFHLEdBQUcrVyxFQUFFcFQsRUFBRWtsQyxPQUFPLFNBQVM5eEIsRUFBRTdWLEdBQUcsT0FBTzZDLEVBQUVBLEVBQUU3QyxFQUFFd0QsR0FBR3hELEVBQUUyZCxLQUFLMHhELEdBQUdydkUsRUFBRXdELEdBQUd3ckUsR0FBR2h2RSxFQUFFd0QsSUFBeEwsQ0FBNkx4RCxFQUFFaXNFLGFBQWFob0UsUUFBUWhCLEVBQUVPLEVBQUVYLEdBQUcsU0FBUzBzRSxHQUFHdnZFLEVBQUVpRCxFQUFFTyxFQUFFWCxHQUFHLElBQUkvRCxFQUFFa0IsRUFBRW9yRSxJQUFJM29FLEVBQUV6QyxFQUFFcXNCLE1BQU14VyxFQUFFN1YsRUFBRThyRSxVQUFVLElBQUk5ckUsRUFBRThyRSxVQUFVLEdBQUc1bkUsRUFBRWxFLEVBQUUrckUsVUFBVSxJQUFJL3JFLEVBQUUrckUsVUFBVSxHQUFHLE9BQU8vckUsRUFBRXN2RSxjQUFhLEdBQUl6c0UsR0FBRyxNQUFNLEtBQUsvRCxFQUFFLGNBQWMyRCxFQUFFb1QsRUFBRTNSLEVBQUUsYUFBYVYsR0FBR3dyRSxJQUFJaHZFLEVBQUVpRCxHQUFHLEtBQUssU0FBUzJzRSxHQUFHNXZFLEVBQUVpRCxHQUFHLElBQUlPLEVBQUUsSUFBSVgsRUFBRSxTQUFTN0MsRUFBRWlELEdBQUcsSUFBSU8sRUFBRXhELEVBQUVzMkMsV0FBVyxHQUFJOXlDLEVBQUosQ0FBYSxJQUFJWCxFQUFFL0QsRUFBRTJELEVBQUVvVCxFQUFFM1IsRUFBRSxlQUFlNUIsR0FBRSxFQUFHLElBQUlPLEVBQUUsRUFBRS9ELEVBQUUwRSxFQUFFeEUsT0FBTzZELEVBQUUvRCxFQUFFK0QsSUFBSSxDQUFDSixFQUFFZSxFQUFFWCxHQUFHZ1QsR0FBRSxFQUFHLElBQUl5dUMsRUFBRXJoRCxFQUFFcXpDLFdBQVc3ekMsRUFBRVgsTUFBTXdpRCxJQUFJenVDLElBQUl5dUMsRUFBRXRrRCxFQUFFeUMsRUFBRVEsRUFBRW8yQixPQUFPeGpCLElBQUl2VCxHQUFFLEVBQUc0QixHQUFHLFVBQVV6QixFQUFFWCxLQUFLLGNBQWNXLEVBQUU4ekMsUUFBUSxLQUFLOXpDLEVBQUVPLE1BQU0sV0FBV1AsRUFBRU8sTUFBTSxnQkFBZ0JrakIsS0FBS0MsVUFBVTFqQixFQUFFTyxPQUFPLEtBQUtQLEVBQUU2SyxJQUFJLFNBQVM3SyxFQUFFeTZELGFBQWF6NkQsRUFBRTZLLElBQUksSUFBSTdLLEVBQUU2SyxJQUFJLEtBQUssS0FBSzdLLEVBQUVnOEIsVUFBVSxjQUFjdlksS0FBS0MsVUFBVTFqQixFQUFFZzhCLFdBQVcsSUFBSSxNQUFNLE9BQUduOEIsRUFBUzRCLEVBQUVELE1BQU0sR0FBRyxHQUFHLFNBQTFCLEdBQXBhLENBQW1jakUsRUFBRWlELEdBQUdKLElBQUlXLEdBQUdYLEVBQUUsS0FBSzdDLEVBQUVzRCxNQUFNRSxHQUFHLE9BQU94RCxFQUFFc0QsSUFBSSxLQUFLdEQsRUFBRThlLE1BQU10YixHQUFHLE9BQU94RCxFQUFFOGUsSUFBSSxLQUFLOWUsRUFBRTg1RCxXQUFXdDJELEdBQUcsa0JBQWtCeEQsRUFBRWl6RCxNQUFNenZELEdBQUcsYUFBYXhELEVBQUV1RSxZQUFZZixHQUFHLFFBQVF4RCxFQUFFeVQsSUFBSSxNQUFNLElBQUksSUFBSTNVLEVBQUUsRUFBRUEsRUFBRW1FLEVBQUUyckUsV0FBVzV2RSxPQUFPRixJQUFJMEUsR0FBR1AsRUFBRTJyRSxXQUFXOXZFLEdBQUdrQixHQUFHLEdBQUdBLEVBQUVtRixRQUFRM0IsR0FBRyxTQUFTbXNFLEdBQUczdkUsRUFBRW1GLE9BQU8sS0FBS25GLEVBQUVzRyxRQUFROUMsR0FBRyxZQUFZbXNFLEdBQUczdkUsRUFBRXNHLE9BQU8sS0FBS3RHLEVBQUVrc0MsU0FBUzFvQyxHQUFHMnFFLEdBQUdudUUsRUFBRWtzQyxRQUFPLEdBQUksS0FBS2xzQyxFQUFFdzlELGVBQWVoNkQsR0FBRzJxRSxHQUFHbnVFLEVBQUV3OUQsY0FBYSxHQUFJLEtBQUt4OUQsRUFBRXNyRSxhQUFhdHJFLEVBQUVxckUsWUFBWTduRSxHQUFHLFFBQVF4RCxFQUFFc3JFLFdBQVcsS0FBS3RyRSxFQUFFKzlCLGNBQWN2NkIsR0FBRyxTQUFTeEQsRUFBRWlELEVBQUVPLEdBQUcsSUFBSVgsRUFBRTdDLEVBQUVvckUsS0FBS25zRSxPQUFPOEgsS0FBSzlELEdBQUdtekMsTUFBSyxTQUFTcDJDLEdBQUcsSUFBSXdELEVBQUVQLEVBQUVqRCxHQUFHLE9BQU93RCxFQUFFK25FLG1CQUFtQi9uRSxFQUFFa3BFLElBQUlscEUsRUFBRTRuRSxLQUFLMEUsR0FBR3RzRSxNQUFLMUUsSUFBSWtCLEVBQUUwc0UsR0FBRyxJQUFJN3BFLEVBQUUsSUFBSSxJQUFJSixFQUFFekMsRUFBRStlLE9BQU90YyxHQUFHLENBQUMsR0FBR0EsRUFBRTRvRSxXQUFXNW9FLEVBQUU0b0UsWUFBWUwsSUFBSXZvRSxFQUFFMm9FLElBQUksQ0FBQ3ZvRSxHQUFFLEVBQUcsTUFBTUosRUFBRWlxRSxLQUFLNXRFLEdBQUUsR0FBSTJELEVBQUVBLEVBQUVzYyxPQUFPLElBQUlsSixFQUFFNVcsT0FBTzhILEtBQUs5RCxHQUFHc0gsS0FBSSxTQUFTdkssR0FBRyxPQUFPK3ZFLEdBQUc5c0UsRUFBRWpELEdBQUd3RCxNQUFLOFAsS0FBSyxLQUFLLE1BQU0sbUJBQW1CdUMsRUFBRSxLQUFLaFQsRUFBRSxhQUFhLE1BQU1BLEdBQUcvRCxFQUFFLGVBQWUsU0FBU2tCLEdBQXlCLElBQXRCLElBQUlpRCxFQUFFLEtBQUtPLEVBQUV4RCxFQUFFaEIsT0FBWXdFLEdBQUdQLEVBQUUsR0FBR0EsRUFBRWpELEVBQUVtaEIsYUFBYTNkLEdBQUcsT0FBT1AsSUFBSSxFQUE5RSxDQUFpRjRTLEdBQUcsSUFBSSxJQUEvYyxDQUFvZDdWLEVBQUVBLEVBQUUrOUIsWUFBWTk2QixHQUFHLEtBQUtqRCxFQUFFNnlELFFBQVFydkQsR0FBRyxnQkFBZ0J4RCxFQUFFNnlELE1BQU03dkQsTUFBTSxhQUFhaEQsRUFBRTZ5RCxNQUFNeGxELFNBQVMsZUFBZXJOLEVBQUU2eUQsTUFBTXJjLFdBQVcsTUFBTXgyQyxFQUFFb3hELGVBQWUsQ0FBQyxJQUFJM3VELEVBQUUsU0FBU3pDLEVBQUVpRCxHQUFHLElBQUlPLEVBQUV4RCxFQUFFdVQsU0FBUyxHQUFHLEdBQUcvUCxHQUFHLElBQUlBLEVBQUU5QixLQUFLLENBQUMsSUFBSW1CLEVBQUVrc0UsR0FBR3ZyRSxFQUFFUCxFQUFFbUIsU0FBUyxNQUFNLHFDQUFxQ3ZCLEVBQUUrYixPQUFPLHNCQUFzQi9iLEVBQUUyc0QsZ0JBQWdCamxELEtBQUksU0FBU3ZLLEdBQUcsTUFBTSxjQUFjQSxFQUFFLE9BQU1zVCxLQUFLLEtBQUssTUFBNU4sQ0FBbU90VCxFQUFFaUQsR0FBR1IsSUFBSWUsR0FBR2YsRUFBRSxLQUFLLE9BQU9lLEVBQUVBLEVBQUV3QyxRQUFRLEtBQUssSUFBSSxJQUFJaEcsRUFBRTY4RCxlQUFlcjVELEVBQUUsTUFBTUEsRUFBRSxLQUFLeEQsRUFBRXlULElBQUksS0FBS2s4RCxHQUFHM3ZFLEVBQUU2OEQsY0FBYyxLQUFLNzhELEVBQUV3dUUsV0FBV2hyRSxFQUFFeEQsRUFBRXd1RSxTQUFTaHJFLElBQUl4RCxFQUFFdXVFLGdCQUFnQi9xRSxFQUFFeEQsRUFBRXV1RSxjQUFjL3FFLElBQUlBLEVBQUUsU0FBU3NzRSxHQUFHOXZFLEdBQUcsT0FBTyxJQUFJQSxFQUFFMEIsT0FBTyxTQUFTMUIsRUFBRXlULEtBQUt6VCxFQUFFdVQsU0FBUzZpQyxLQUFLMDVCLEtBQUssU0FBU0MsR0FBRy92RSxFQUFFaUQsR0FBRyxJQUFJTyxFQUFFeEQsRUFBRSs4RCxTQUFTLGNBQWMsR0FBRy84RCxFQUFFMHNFLEtBQUsxc0UsRUFBRXd2RSxjQUFjaHNFLEVBQUUsT0FBT2lzRSxHQUFHenZFLEVBQUVpRCxFQUFFOHNFLEdBQUcsUUFBUSxHQUFHL3ZFLEVBQUVvckUsTUFBTXByRSxFQUFFc3ZFLGFBQWEsT0FBT0MsR0FBR3Z2RSxFQUFFaUQsRUFBRThzRSxJQUFJLElBQUlsdEUsRUFBRTdDLEVBQUVxckUsWUFBWUwsR0FBRyxHQUFHdHNELE9BQU8xZSxFQUFFcXJFLFdBQVd2c0UsRUFBRSxZQUFZK0QsRUFBRSxhQUFhLGFBQWE3QyxFQUFFeVQsSUFBSXpULEVBQUUwc0UsSUFBSWxwRSxFQUFFLElBQUl4RCxFQUFFMHNFLEdBQUcsTUFBTWdELEdBQUcxdkUsRUFBRWlELElBQUksYUFBYSxhQUFheXNFLEdBQUcxdkUsRUFBRWlELElBQUksWUFBWStyRSxHQUFHaHZFLEVBQUVpRCxJQUFJLElBQUlSLEVBQUVJLEVBQUUsR0FBRyxjQUFjLE1BQU0sU0FBUzdDLEVBQUVzckUsWUFBWSxhQUFhLE9BQU94c0UsRUFBRTJELEVBQUUsSUFBSSxTQUFTaXRFLEdBQUcxdkUsRUFBRWlELEVBQUVPLEVBQUVYLEVBQUUvRCxHQUFHLElBQUkyRCxFQUFFekMsRUFBRXVULFNBQVMsR0FBRzlRLEVBQUV6RCxPQUFPLENBQUMsSUFBSTZXLEVBQUVwVCxFQUFFLEdBQUcsR0FBRyxJQUFJQSxFQUFFekQsUUFBUTZXLEVBQUV1MUQsS0FBSyxhQUFhdjFELEVBQUVwQyxLQUFLLFNBQVNvQyxFQUFFcEMsSUFBSSxDQUFDLElBQUl2UCxFQUFFVixFQUFFUCxFQUFFNHJFLGVBQWVoNUQsR0FBRyxLQUFLLEtBQUssR0FBRyxNQUFNLElBQUloVCxHQUFHbXNFLElBQUluNUQsRUFBRTVTLEdBQUdpQixFQUFFLElBQUk1QixFQUFFa0IsRUFBRSxTQUFTeEQsRUFBRWlELEdBQUcsSUFBSSxJQUFJTyxFQUFFLEVBQUVYLEVBQUUsRUFBRUEsRUFBRTdDLEVBQUVoQixPQUFPNkQsSUFBSSxDQUFDLElBQUkvRCxFQUFFa0IsRUFBRTZDLEdBQUcsR0FBRyxJQUFJL0QsRUFBRTRDLEtBQUssQ0FBQyxHQUFHc3VFLEdBQUdseEUsSUFBSUEsRUFBRW10RSxjQUFjbnRFLEVBQUVtdEUsYUFBYTcxQixNQUFLLFNBQVNwMkMsR0FBRyxPQUFPZ3dFLEdBQUdod0UsRUFBRTJuQyxVQUFTLENBQUNua0MsRUFBRSxFQUFFLE9BQU9QLEVBQUVuRSxJQUFJQSxFQUFFbXRFLGNBQWNudEUsRUFBRW10RSxhQUFhNzFCLE1BQUssU0FBU3AyQyxHQUFHLE9BQU9pRCxFQUFFakQsRUFBRTJuQyxhQUFZbmtDLEVBQUUsSUFBSSxPQUFPQSxFQUE3UCxDQUFnUWYsRUFBRVEsRUFBRTRyRSxnQkFBZ0IsRUFBRXZxQixFQUFFeGxELEdBQUdteEUsR0FBRyxNQUFNLElBQUl4dEUsRUFBRThILEtBQUksU0FBU3ZLLEdBQUcsT0FBT3NrRCxFQUFFdGtELEVBQUVpRCxNQUFLcVEsS0FBSyxLQUFLLEtBQUtoUixFQUFFLElBQUlBLEVBQUUsS0FBSyxTQUFTMHRFLEdBQUdod0UsR0FBRyxZQUFPLElBQVNBLEVBQUVvckUsS0FBSyxhQUFhcHJFLEVBQUV5VCxLQUFLLFNBQVN6VCxFQUFFeVQsSUFBSSxTQUFTdzhELEdBQUdqd0UsRUFBRWlELEdBQUcsT0FBTyxJQUFJakQsRUFBRTBCLEtBQUtzdEUsR0FBR2h2RSxFQUFFaUQsR0FBRyxJQUFJakQsRUFBRTBCLE1BQU0xQixFQUFFcXBELFdBQVd4bUQsRUFBRTdDLEVBQUUsTUFBTWttQixLQUFLQyxVQUFVdGpCLEVBQUU2WSxNQUFNLEtBQUssT0FBTyxLQUFLbFksRUFBRXhELEdBQUcwQixLQUFLOEIsRUFBRWd6QyxXQUFXMDVCLEdBQUdocUQsS0FBS0MsVUFBVTNpQixFQUFFa1ksUUFBUSxJQUFJLElBQUlsWSxFQUFFWCxFQUFFLFNBQVM4c0UsR0FBRzN2RSxHQUFHLElBQUksSUFBSWlELEVBQUUsR0FBR08sRUFBRSxHQUFHWCxFQUFFLEVBQUVBLEVBQUU3QyxFQUFFaEIsT0FBTzZELElBQUksQ0FBQyxJQUFJL0QsRUFBRWtCLEVBQUU2QyxHQUFHSixFQUFFeXRFLEdBQUdweEUsRUFBRWtFLE9BQU9sRSxFQUFFNDlELFFBQVFsNUQsR0FBRzFFLEVBQUVnRCxLQUFLLElBQUlXLEVBQUUsSUFBSVEsR0FBRyxJQUFJbkUsRUFBRWdELEtBQUssS0FBS1csRUFBRSxJQUFJLE9BQU9RLEVBQUUsSUFBSUEsRUFBRWdCLE1BQU0sR0FBRyxHQUFHLElBQUlULEVBQUUsTUFBTVAsRUFBRSxLQUFLTyxFQUFFUyxNQUFNLEdBQUcsR0FBRyxLQUFLaEIsRUFBRSxTQUFTaXRFLEdBQUdsd0UsR0FBRyxPQUFPQSxFQUFFZ0csUUFBUSxVQUFVLFdBQVdBLFFBQVEsVUFBVSxXQUErUCxTQUFTbXFFLEdBQUdud0UsRUFBRWlELEdBQUcsSUFBSSxPQUFPLElBQUkwaEQsU0FBUzNrRCxHQUFHLE1BQU13RCxHQUFHLE9BQU9QLEVBQUUzRCxLQUFLLENBQUNzRSxJQUFJSixFQUFFNHNFLEtBQUtwd0UsSUFBSWdsRCxHQUFHLFNBQVNxckIsR0FBR3J3RSxHQUFHLElBQUlpRCxFQUFFaEUsT0FBT29FLE9BQU8sTUFBTSxPQUFPLFNBQVNHLEVBQUVYLEVBQUUvRCxJQUFJK0QsRUFBRWlpRCxFQUFFLEdBQUdqaUQsSUFBSXcyQixZQUFZeDJCLEVBQUV3MkIsS0FBSyxJQUFJNTJCLEVBQUVJLEVBQUV5dEUsV0FBVzV4RCxPQUFPN2IsRUFBRXl0RSxZQUFZOXNFLEVBQUVBLEVBQUUsR0FBR1AsRUFBRVIsR0FBRyxPQUFPUSxFQUFFUixHQUFHLElBQUlvVCxFQUFFN1YsRUFBRXdELEVBQUVYLEdBQUdxQixFQUFFLEdBQUc1QixFQUFFLEdBQUcsT0FBTzRCLEVBQUUwYSxPQUFPdXhELEdBQUd0NkQsRUFBRStJLE9BQU90YyxHQUFHNEIsRUFBRXNyRCxnQkFBZ0IzNUMsRUFBRTI1QyxnQkFBZ0JqbEQsS0FBSSxTQUFTdkssR0FBRyxPQUFPbXdFLEdBQUdud0UsRUFBRXNDLE1BQUtXLEVBQUVSLEdBQUd5QixHQUF6bUIsSUFBSWdWLE9BQU8sTUFBTSxpTUFBaU16QixNQUFNLEtBQUtuRSxLQUFLLFdBQVcsT0FBK1gsSUFBSWk5RCxHQUFHQyxHQUFHcHRFLElBQUltdEUsR0FBRyxTQUFTdndFLEVBQUVpRCxHQUFHLElBQUlPLEVBQS9zcEIsU0FBWXhELEVBQUVpRCxHQUFHMG1FLEdBQUcxbUUsRUFBRW8yQixNQUFNaWpDLEdBQUcwTixHQUFHL21FLEVBQUU4cEUsVUFBVTluQixFQUFFZ2xCLEdBQUdobkUsRUFBRW1qRCxhQUFhbkIsRUFBRWlsQixHQUFHam5FLEVBQUVpakQsaUJBQWlCakIsRUFBRWhpRCxFQUFFOGlELGNBQWM4akIsR0FBR3ROLEdBQUd0NUQsRUFBRTFELFFBQVEsaUJBQWlCdXFFLEdBQUd2TixHQUFHdDVELEVBQUUxRCxRQUFRLG9CQUFvQndxRSxHQUFHeE4sR0FBR3Q1RCxFQUFFMUQsUUFBUSxxQkFBcUJxcUUsR0FBRzNtRSxFQUFFcXRFLFdBQVcsSUFBSTlzRSxFQUFFWCxFQUFFL0QsRUFBRSxHQUFHMkQsR0FBRSxJQUFLUSxFQUFFd3RFLG1CQUFtQjU2RCxFQUFFNVMsRUFBRXl0RSxXQUFXeHNFLEdBQUUsRUFBRzVCLEdBQUUsRUFBRyxTQUFTZ2lELEVBQUV0a0QsR0FBRyxHQUFHRCxFQUFFQyxHQUFHa0UsR0FBR2xFLEVBQUV5c0UsWUFBWXpzRSxFQUFFbXJFLEdBQUduckUsRUFBRWlELElBQUluRSxFQUFFRSxRQUFRZ0IsSUFBSXdELEdBQUdBLEVBQUVrcEUsS0FBSzFzRSxFQUFFNHNFLFFBQVE1c0UsRUFBRTJzRSxPQUFPWCxHQUFHeG9FLEVBQUUsQ0FBQ3M5QixJQUFJOWdDLEVBQUU0c0UsT0FBT2psQyxNQUFNM25DLElBQUk2QyxJQUFJN0MsRUFBRTJ3RSxVQUFVLEdBQUczd0UsRUFBRTRzRSxRQUFRNXNFLEVBQUUyc0UsS0FBSzkyRCxFQUFFN1YsR0FBR3NrRCxFQUFFLFNBQVN0a0QsR0FBa0IsSUFBZixJQUFJaUQsRUFBRWpELEVBQUVoQixPQUFZaUUsS0FBSyxDQUFDLEdBQUcsSUFBSWpELEVBQUVpRCxHQUFHdkIsS0FBSyxPQUFPMUIsRUFBRWlELEdBQUdqRCxFQUFFNmpCLE9BQXJFLENBQTZFaGhCLEVBQUUwUSxZQUFZK3dDLEVBQUVvb0IsSUFBSVYsR0FBRzFuQixFQUFFLENBQUN4akIsSUFBSWpyQixFQUFFKzJELE9BQU9qbEMsTUFBTTl4QixRQUFRLENBQUMsR0FBRzdWLEVBQUVxckUsVUFBVSxDQUFDLElBQUk1b0UsRUFBRXpDLEVBQUVzckUsWUFBWSxhQUFhem9FLEVBQUVrN0IsY0FBY2w3QixFQUFFazdCLFlBQVksS0FBS3Q3QixHQUFHekMsRUFBRTZDLEVBQUUwUSxTQUFTalUsS0FBS1UsR0FBR0EsRUFBRStlLE9BQU9sYyxFQUFFLElBQUlnVCxFQUFFeXVDLEVBQUV0a0QsRUFBRXVULFNBQVN2VCxFQUFFdVQsU0FBU3JNLFFBQU8sU0FBU2xILEdBQUcsT0FBT0EsRUFBRXFyRSxhQUFZdHJFLEVBQUVDLEdBQUdBLEVBQUVpekQsTUFBTS91RCxHQUFFLEdBQUk4bEUsR0FBR2hxRSxFQUFFeVQsT0FBT25SLEdBQUUsR0FBSSxJQUFJLElBQUlpaUQsRUFBRSxFQUFFQSxFQUFFd2xCLEdBQUcvcUUsT0FBT3VsRCxJQUFJd2xCLEdBQUd4bEIsR0FBR3ZrRCxFQUFFaUQsR0FBRyxTQUFTbEQsRUFBRUMsR0FBRyxJQUFJc0MsRUFBRSxJQUFJLElBQUlXLEdBQUdBLEVBQUVqRCxFQUFFdVQsU0FBU3ZULEVBQUV1VCxTQUFTdlUsT0FBTyxLQUFLLElBQUlpRSxFQUFFdkIsTUFBTSxNQUFNdUIsRUFBRXlZLE1BQU0xYixFQUFFdVQsU0FBU3NRLE1BQU0sT0FBTyxTQUFTN2pCLEVBQUVpRCxHQUFHLElBQUksSUFBSU8sRUFBRVgsRUFBRS9ELEVBQUUsR0FBRzJELEVBQUVRLEVBQUU2cEUsV0FBV2ozRCxFQUFFNVMsRUFBRStwRSxZQUFZL25CLEVBQUUvZ0QsRUFBRWpCLEVBQUVncUUsa0JBQWtCaG9CLEVBQUUzaUQsRUFBRSxFQUFFdEMsR0FBRyxDQUFDLEdBQUd3RCxFQUFFeEQsRUFBRTZDLEdBQUdzbUUsR0FBR3RtRSxHQUFHLENBQUMsSUFBSXloRCxFQUFFLEVBQUV2a0QsRUFBRThDLEVBQUUyVSxjQUFjK3NDLEVBQUU2a0IsR0FBR3JwRSxLQUFLcXBFLEdBQUdycEUsR0FBRyxJQUFJbVosT0FBTyxrQkFBa0JuWixFQUFFLFVBQVUsTUFBTWlCLEVBQUVoQixFQUFFZ0csUUFBUXUrQyxHQUFFLFNBQVN2a0QsRUFBRXdELEVBQUVYLEdBQUcsT0FBT3loRCxFQUFFemhELEVBQUU3RCxPQUFPbXFFLEdBQUdwcEUsSUFBSSxhQUFhQSxJQUFJeUQsRUFBRUEsRUFBRXdDLFFBQVEsc0JBQXNCLE1BQU1BLFFBQVEsNEJBQTRCLE9BQU95akUsR0FBRzFwRSxFQUFFeUQsS0FBS0EsRUFBRUEsRUFBRVMsTUFBTSxJQUFJaEIsRUFBRTJ0RSxPQUFPM3RFLEVBQUUydEUsTUFBTXB0RSxHQUFHLE1BQUtsQixHQUFHdEMsRUFBRWhCLE9BQU9nQyxFQUFFaEMsT0FBT2dCLEVBQUVnQixFQUFFOGpELEVBQUUva0QsRUFBRXVDLEVBQUVnaUQsRUFBRWhpRCxPQUFPLENBQUMsSUFBSUMsRUFBRXZDLEVBQUU4SixRQUFRLEtBQUssR0FBRyxJQUFJdkgsRUFBRSxDQUFDLEdBQUcwbUUsR0FBR3BqRSxLQUFLN0YsR0FBRyxDQUFDLElBQUl1dkIsRUFBRXZ2QixFQUFFOEosUUFBUSxVQUFVLEdBQUd5bEIsR0FBRyxFQUFFLENBQUN0c0IsRUFBRTR0RSxtQkFBbUI1dEUsRUFBRTZ0RSxRQUFROXdFLEVBQUUrd0UsVUFBVSxFQUFFeGhELEdBQUdqdEIsRUFBRUEsRUFBRWl0QixFQUFFLEdBQUdtMUIsRUFBRW4xQixFQUFFLEdBQUcsVUFBVSxHQUFHMjVDLEdBQUdyakUsS0FBSzdGLEdBQUcsQ0FBQyxJQUFJaWYsRUFBRWpmLEVBQUU4SixRQUFRLE1BQU0sR0FBR21WLEdBQUcsRUFBRSxDQUFDeWxDLEVBQUV6bEMsRUFBRSxHQUFHLFVBQVUsSUFBSTVjLEVBQUVyQyxFQUFFNG1CLE1BQU1vaUQsSUFBSSxHQUFHM21FLEVBQUUsQ0FBQ3FpRCxFQUFFcmlELEVBQUUsR0FBR3JELFFBQVEsU0FBUyxJQUFJd1EsRUFBRXhQLEVBQUU0bUIsTUFBTW1pRCxJQUFJLEdBQUd2NUQsRUFBRSxDQUFDLElBQUlnMUMsRUFBRWxpRCxFQUFFb2lELEVBQUVsMUMsRUFBRSxHQUFHeFEsUUFBUThsRCxFQUFFdDFDLEVBQUUsR0FBR2cxQyxFQUFFbGlELEdBQUcsU0FBUyxJQUFJdWMsRUFBRXRQLElBQUksR0FBR3NQLEVBQUUsQ0FBQ2dtQyxFQUFFaG1DLEdBQUc0cUQsR0FBRzVxRCxFQUFFek8sUUFBUXBRLElBQUkwa0QsRUFBRSxHQUFHLFVBQVUsSUFBSTV1QyxPQUFFLEVBQU8ydUMsT0FBRSxFQUFPMTRDLE9BQUUsRUFBTyxHQUFHeEosR0FBRyxFQUFFLENBQUMsSUFBSWtpRCxFQUFFemtELEVBQUVpRSxNQUFNMUIsS0FBS3dtRSxHQUFHbGpFLEtBQUs0K0MsSUFBSW9rQixHQUFHaGpFLEtBQUs0K0MsSUFBSXdrQixHQUFHcGpFLEtBQUs0K0MsSUFBSXlrQixHQUFHcmpFLEtBQUs0K0MsS0FBSzE0QyxFQUFFMDRDLEVBQUUzNkMsUUFBUSxJQUFJLElBQUksSUFBSXZILEdBQUd3SixFQUFFMDRDLEVBQUV6a0QsRUFBRWlFLE1BQU0xQixHQUFHdVQsRUFBRTlWLEVBQUUrd0UsVUFBVSxFQUFFeHVFLEdBQUdBLEVBQUUsSUFBSXVULEVBQUU5VixHQUFHOFYsR0FBRzR1QyxFQUFFNXVDLEVBQUU5VyxRQUFRaUUsRUFBRTJ0RSxPQUFPOTZELEdBQUc3UyxFQUFFMnRFLE1BQU05NkQsRUFBRXhULEVBQUV3VCxFQUFFOVcsT0FBT3NELEdBQUcsR0FBR3RDLElBQUl3RCxFQUFFLENBQUNQLEVBQUUydEUsT0FBTzN0RSxFQUFFMnRFLE1BQU01d0UsR0FBRyxPQUFPLFNBQVMwa0QsRUFBRXpoRCxHQUFHWCxHQUFHVyxFQUFFakQsRUFBRUEsRUFBRSt3RSxVQUFVOXRFLEdBQUcsU0FBU3NNLElBQUksSUFBSXRNLEVBQUVqRCxFQUFFNG1CLE1BQU1paUQsSUFBSSxHQUFHNWxFLEVBQUUsQ0FBQyxJQUFJTyxFQUFFWCxFQUFFL0QsRUFBRSxDQUFDc1IsUUFBUW5OLEVBQUUsR0FBR2tDLE1BQU0sR0FBRzBpQyxNQUFNdmxDLEdBQUcsSUFBSW9pRCxFQUFFemhELEVBQUUsR0FBR2pFLFVBQVV3RSxFQUFFeEQsRUFBRTRtQixNQUFNa2lELE9BQU9qbUUsRUFBRTdDLEVBQUU0bUIsTUFBTThoRCxLQUFLMW9FLEVBQUU0bUIsTUFBTTZoRCxNQUFNNWxFLEVBQUVnbEMsTUFBTXZsQyxFQUFFb2lELEVBQUU3aEQsRUFBRSxHQUFHN0QsUUFBUTZELEVBQUU0akIsSUFBSW5rQixFQUFFeEQsRUFBRXFHLE1BQU03RixLQUFLdUQsR0FBRyxHQUFHVyxFQUFFLE9BQU8xRSxFQUFFa3lFLFdBQVd4dEUsRUFBRSxHQUFHa2hELEVBQUVsaEQsRUFBRSxHQUFHeEUsUUFBUUYsRUFBRTJuQixJQUFJbmtCLEVBQUV4RCxHQUFHLFNBQVMrbEQsRUFBRTdrRCxHQUFHLElBQUl3RCxFQUFFeEQsRUFBRW9RLFFBQVE5TixFQUFFdEMsRUFBRWd4RSxXQUFXdnVFLElBQUksTUFBTUksR0FBRzJsRSxHQUFHaGxFLElBQUlzaEQsRUFBRWppRCxHQUFHcUIsRUFBRVYsSUFBSVgsSUFBSVcsR0FBR3NoRCxFQUFFdGhELElBQUksSUFBSSxJQUFJOGdELEVBQUV6dUMsRUFBRXJTLE1BQU1sQixFQUFFdkMsRUFBRUMsRUFBRW1GLE1BQU1uRyxPQUFPdWxELEVBQUUsSUFBSS84QyxNQUFNekgsR0FBR2lCLEVBQUUsRUFBRUEsRUFBRWpCLEVBQUVpQixJQUFJLENBQUMsSUFBSXVCLEVBQUV2QyxFQUFFbUYsTUFBTW5FLEdBQUd1dUIsRUFBRWh0QixFQUFFLElBQUlBLEVBQUUsSUFBSUEsRUFBRSxJQUFJLEdBQUcwYyxFQUFFLE1BQU16YixHQUFHLFNBQVNqQixFQUFFLEdBQUdVLEVBQUVndUUsNEJBQTRCaHVFLEVBQUVpdUUscUJBQXFCM3NCLEVBQUV2akQsR0FBRyxDQUFDYyxLQUFLUyxFQUFFLEdBQUdTLE1BQU0wbUUsR0FBR242QyxFQUFFdFEsSUFBSXFsQyxJQUFJeGxELEVBQUVRLEtBQUssQ0FBQ21VLElBQUlqUSxFQUFFMnRFLGNBQWMzdEUsRUFBRWdVLGNBQWNyUyxNQUFNby9DLEVBQUUxYyxNQUFNN25DLEVBQUU2bkMsTUFBTXBoQixJQUFJem1CLEVBQUV5bUIsTUFBTTVqQixFQUFFVyxHQUFHUCxFQUFFNGtDLE9BQU81a0MsRUFBRTRrQyxNQUFNcmtDLEVBQUUrZ0QsRUFBRUQsRUFBRXRrRCxFQUFFNm5DLE1BQU03bkMsRUFBRXltQixLQUFLLFNBQVNxK0IsRUFBRTlrRCxFQUFFd0QsRUFBRWYsR0FBRyxJQUFJb1QsRUFBRTNSLEVBQUUsR0FBRyxNQUFNVixJQUFJQSxFQUFFbEIsR0FBRyxNQUFNRyxJQUFJQSxFQUFFSCxHQUFHdEMsRUFBRSxJQUFJa0UsRUFBRWxFLEVBQUV3WCxjQUFjM0IsRUFBRS9XLEVBQUVFLE9BQU8sRUFBRTZXLEdBQUcsR0FBRy9XLEVBQUUrVyxHQUFHczdELGdCQUFnQmp0RSxFQUFFMlIsVUFBVUEsRUFBRSxFQUFFLEdBQUdBLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSXl1QyxFQUFFeGxELEVBQUVFLE9BQU8sRUFBRXNsRCxHQUFHenVDLEVBQUV5dUMsSUFBSXJoRCxFQUFFd2pCLEtBQUt4akIsRUFBRXdqQixJQUFJM25CLEVBQUV3bEQsR0FBRzd3QyxJQUFJalEsRUFBRWYsR0FBRzNELEVBQUVFLE9BQU82VyxFQUFFaFQsRUFBRWdULEdBQUcvVyxFQUFFK1csRUFBRSxHQUFHcEMsUUFBUSxPQUFPdlAsRUFBRWpCLEVBQUU0a0MsT0FBTzVrQyxFQUFFNGtDLE1BQU03bkMsRUFBRSxJQUFHLEVBQUd3RCxFQUFFZixHQUFHLE1BQU15QixJQUFJakIsRUFBRTRrQyxPQUFPNWtDLEVBQUU0a0MsTUFBTTduQyxFQUFFLElBQUcsRUFBR3dELEVBQUVmLEdBQUdRLEVBQUV3akIsS0FBS3hqQixFQUFFd2pCLElBQUl6bUIsRUFBRXdELEVBQUVmLElBQUlxaUQsSUFBem1FLENBQThtRTlrRCxFQUFFLENBQUNxNUIsS0FBS3N3QyxHQUFHbUQsV0FBVzdwRSxFQUFFNnBFLFdBQVdFLFdBQVcvcEUsRUFBRStwRSxXQUFXQyxpQkFBaUJocUUsRUFBRWdxRSxpQkFBaUJpRSxxQkFBcUJqdUUsRUFBRWl1RSxxQkFBcUJELDRCQUE0Qmh1RSxFQUFFZ3VFLDRCQUE0Qkosa0JBQWtCNXRFLEVBQUVtdUUsU0FBU0Msa0JBQWtCcHVFLEVBQUVvdUUsa0JBQWtCeHBDLE1BQU0sU0FBUzduQyxFQUFFeUMsRUFBRW9ULEVBQUU5VixFQUFFd2tELEdBQUcsSUFBSXZqRCxFQUFFNkIsR0FBR0EsRUFBRU8sSUFBSThtRSxHQUFHbHFFLEdBQUdpbkQsR0FBRyxRQUFRam1ELElBQUl5QixFQUFFLFNBQVN6QyxHQUFHLElBQUksSUFBSWlELEVBQUUsR0FBR08sRUFBRSxFQUFFQSxFQUFFeEQsRUFBRWhCLE9BQU93RSxJQUFJLENBQUMsSUFBSVgsRUFBRTdDLEVBQUV3RCxHQUFHMG9FLEdBQUdybUUsS0FBS2hELEVBQUVmLFFBQVFlLEVBQUVmLEtBQUtlLEVBQUVmLEtBQUtrRSxRQUFRbW1FLEdBQUcsSUFBSWxwRSxFQUFFM0QsS0FBS3VELElBQUksT0FBT0ksRUFBekgsQ0FBNEhSLElBQUksSUFBSUYsRUFBRWd0QixFQUFFYSxHQUFHcHdCLEVBQUV5QyxFQUFFSSxHQUFHN0IsSUFBSXV1QixFQUFFbnNCLEdBQUdwQyxHQUFHLFdBQVd1QixFQUFFZ3RCLEdBQUc5YixNQUFNLFdBQVdsUixFQUFFa1IsS0FBS2xSLEVBQUV3NkQsU0FBU3I3RCxNQUFNLG9CQUFvQmEsRUFBRXc2RCxTQUFTcjdELE9BQU93bUMsT0FBTzNZLEVBQUVvaEQsV0FBVSxHQUFJLElBQUksSUFBSTF4RCxFQUFFLEVBQUVBLEVBQUU2cUQsR0FBRzlxRSxPQUFPaWdCLElBQUlzUSxFQUFFdTZDLEdBQUc3cUQsR0FBR3NRLEVBQUV0c0IsSUFBSXNzQixFQUFFcnJCLElBQUssU0FBU2xFLEdBQUcsTUFBTTA5RCxHQUFHMTlELEVBQUUsV0FBV0EsRUFBRWl6RCxLQUFJLEdBQXhDLENBQTZDMWpDLEdBQUdBLEVBQUUwakMsTUFBTS91RCxHQUFFLElBQUs4bEUsR0FBR3o2QyxFQUFFOWIsT0FBT25SLEdBQUUsR0FBSTRCLEVBQUUsU0FBU2xFLEdBQUcsSUFBSWlELEVBQUVqRCxFQUFFZzlELFVBQVV4NUQsRUFBRVAsRUFBRWpFLE9BQU8sR0FBR3dFLEVBQUUsSUFBSSxJQUFJWCxFQUFFN0MsRUFBRW1GLE1BQU0sSUFBSXFDLE1BQU1oRSxHQUFHMUUsRUFBRSxFQUFFQSxFQUFFMEUsRUFBRTFFLElBQUkrRCxFQUFFL0QsR0FBRyxDQUFDZ0QsS0FBS21CLEVBQUVuRSxHQUFHZ0QsS0FBS2tCLE1BQU1rakIsS0FBS0MsVUFBVWxqQixFQUFFbkUsR0FBR2tFLFFBQVEsTUFBTUMsRUFBRW5FLEdBQUcrb0MsUUFBUWhsQyxFQUFFL0QsR0FBRytvQyxNQUFNNWtDLEVBQUVuRSxHQUFHK29DLE1BQU1obEMsRUFBRS9ELEdBQUcybkIsSUFBSXhqQixFQUFFbkUsR0FBRzJuQixVQUFVem1CLEVBQUVpekQsTUFBTWp6RCxFQUFFMjhELE9BQU0sR0FBak8sQ0FBc09wdEMsR0FBR0EsRUFBRWs5QyxZQUFZWixHQUFHdDhDLEdBQUcsU0FBU3Z2QixHQUFHLElBQUlpRCxFQUFFeTZELEdBQUcxOUQsRUFBRSxRQUFRLEdBQUdpRCxFQUFFakQsRUFBRTBzRSxHQUFHenBFLEVBQUUrb0UsR0FBR2hzRSxFQUFFLENBQUM4Z0MsSUFBSTc5QixFQUFFMGtDLE1BQU0zbkMsUUFBUSxDQUFDLE1BQU0wOUQsR0FBRzE5RCxFQUFFLFlBQVlBLEVBQUUyc0UsTUFBSyxHQUFJLElBQUlucEUsRUFBRWs2RCxHQUFHMTlELEVBQUUsYUFBYXdELElBQUl4RCxFQUFFNHNFLE9BQU9wcEUsSUFBN0ksQ0FBa0orckIsR0FBRyxTQUFTdnZCLEdBQUcsTUFBTTA5RCxHQUFHMTlELEVBQUUsWUFBWUEsRUFBRTJkLE1BQUssR0FBMUMsQ0FBK0M0UixJQUFJL3JCLElBQUlBLEVBQUUrckIsR0FBRzFaLEVBQUV5dUMsRUFBRS8wQixJQUFJMXNCLEVBQUUwc0IsRUFBRXp3QixFQUFFUSxLQUFLaXdCLEtBQUs5SSxJQUFJLFNBQVN6bUIsRUFBRWlELEVBQUVPLEdBQUcsSUFBSWYsRUFBRTNELEVBQUVBLEVBQUVFLE9BQU8sR0FBR0YsRUFBRUUsUUFBUSxFQUFFNkQsRUFBRS9ELEVBQUVBLEVBQUVFLE9BQU8sR0FBR3NsRCxFQUFFN2hELElBQUltdUUsTUFBTSxTQUFTNXdFLEVBQUVpRCxFQUFFTyxHQUFHLEdBQUdYLEtBQUtva0QsR0FBRyxhQUFhcGtELEVBQUU0USxLQUFLNVEsRUFBRWs2RCxTQUFTdVUsY0FBY3R4RSxHQUFHLENBQUMsSUFBSWxCLEVBQUV3bEQsRUFBRXZrRCxFQUFFd2tELEVBQUUxaEQsRUFBRTBRLFVBQVl2VCxFQUFFc0MsR0FBR3RDLEVBQUVvWCxPQUFPLFlBQVl0WSxFQUFFK0QsR0FBRzRRLEtBQUssVUFBVTNVLEVBQUUyVSxJQUFJelQsRUFBRStxRSxHQUFHL3FFLEdBQUd1a0QsRUFBRXZsRCxPQUFPNlcsRUFBRSxhQUFhQSxHQUFHZzFELEdBQUdobEUsS0FBSzdGLEdBQUcsR0FBRyxJQUFJeUMsRUFBRSxJQUFJLEdBQUcsTUFBR0gsR0FBRyxhQUFhdVQsSUFBSTdWLEVBQUVBLEVBQUVnRyxRQUFROGtFLEdBQUcsT0FBTzVtRSxHQUFHLE1BQU1sRSxJQUFJc2tELEVBQUUsU0FBU3RrRCxFQUFFaUQsR0FBRyxJQUFJTyxFQUFFUCxFQUFFOGtFLEdBQUc5a0UsR0FBRzRrRSxHQUFHLEdBQUdya0UsRUFBRXFDLEtBQUs3RixHQUFHLENBQUMsSUFBSSxJQUFJNkMsRUFBRS9ELEVBQUUyRCxFQUFFb1QsRUFBRSxHQUFHM1IsRUFBRSxHQUFHNUIsRUFBRWtCLEVBQUUrdEUsVUFBVSxFQUFFMXVFLEVBQUVXLEVBQUVzaEIsS0FBSzlrQixJQUFJLEVBQUVsQixFQUFFK0QsRUFBRXNNLE9BQU83TSxJQUFJNEIsRUFBRTVFLEtBQUttRCxFQUFFekMsRUFBRWlFLE1BQU0zQixFQUFFeEQsSUFBSStXLEVBQUV2VyxLQUFLNG1CLEtBQUtDLFVBQVUxakIsS0FBSyxJQUFJNmhELEVBQUU4WCxHQUFHdjVELEVBQUUsR0FBR3VVLFFBQVF2QixFQUFFdlcsS0FBSyxNQUFNZ2xELEVBQUUsS0FBS3BnRCxFQUFFNUUsS0FBSyxDQUFDLFdBQVdnbEQsSUFBSWhpRCxFQUFFeEQsRUFBRStELEVBQUUsR0FBRzdELE9BQU8sT0FBT3NELEVBQUV0QyxFQUFFaEIsU0FBU2tGLEVBQUU1RSxLQUFLbUQsRUFBRXpDLEVBQUVpRSxNQUFNM0IsSUFBSXVULEVBQUV2VyxLQUFLNG1CLEtBQUtDLFVBQVUxakIsS0FBSyxDQUFDK3pDLFdBQVczZ0MsRUFBRXZDLEtBQUssS0FBS3FSLE9BQU96Z0IsSUFBelYsQ0FBOFZsRSxFQUFFNHBFLEtBQUs3cEUsRUFBRSxDQUFDMkIsS0FBSyxFQUFFODBDLFdBQVc4TixFQUFFOU4sV0FBVzd4QixPQUFPMi9CLEVBQUUzL0IsT0FBT2pKLEtBQUsxYixHQUFHLE1BQU1BLEdBQUd1a0QsRUFBRXZsRCxRQUFRLE1BQU11bEQsRUFBRUEsRUFBRXZsRCxPQUFPLEdBQUcwYyxPQUFPM2IsRUFBRSxDQUFDMkIsS0FBSyxFQUFFZ2EsS0FBSzFiLElBQUlELEdBQUd3a0QsRUFBRWpsRCxLQUFLUyxNQUFLK3dFLFFBQVEsU0FBUzl3RSxFQUFFaUQsRUFBRU8sR0FBRyxHQUFHWCxFQUFFLENBQUMsSUFBSS9ELEVBQUUsQ0FBQzRDLEtBQUssRUFBRWdhLEtBQUsxYixFQUFFcXBELFdBQVUsR0FBSXhtRCxFQUFFMFEsU0FBU2pVLEtBQUtSLE9BQU8wRSxFQUFvaWZndUUsQ0FBR3h4RSxFQUFFb1gsT0FBT25VLElBQUcsSUFBS0EsRUFBRXd1RSxVQUEzeVQsU0FBWXp4RSxFQUFFaUQsR0FBR2pELElBQUlxc0UsR0FBR2EsR0FBR2pxRSxFQUFFZ2xFLFlBQVksSUFBSXFFLEdBQUdycEUsRUFBRThpRCxlQUFlZCxFQUFFLFNBQVNqbEQsRUFBRWlELEdBQStRLEdBQTVRQSxFQUFFeXVFLE9BQU8sU0FBUzF4RSxHQUFHLE9BQUcsSUFBSUEsRUFBRTBCLE9BQWlCLElBQUkxQixFQUFFMEIsU0FBdUIxQixFQUFFaXpELE1BQU1qekQsRUFBRTByRSxhQUFhMXJFLEVBQUUwc0UsSUFBSTFzRSxFQUFFb3JFLEtBQUs3b0UsRUFBRXZDLEVBQUV5VCxPQUFPNjRELEdBQUd0c0UsRUFBRXlULE1BQU0sU0FBU3pULEdBQUcsS0FBS0EsRUFBRStlLFFBQVEsQ0FBQyxHQUFHLGNBQWMvZSxFQUFFQSxFQUFFK2UsUUFBUXRMLElBQUksT0FBTSxFQUFHLEdBQUd6VCxFQUFFb3JFLElBQUksT0FBTSxFQUFHLE9BQU0sRUFBOUYsQ0FBa0dwckUsS0FBS2YsT0FBTzhILEtBQUsvRyxHQUFHb2pCLE1BQU1pcEQsT0FBelAsQ0FBZ1FwcEUsR0FBTSxJQUFJQSxFQUFFdkIsS0FBSyxDQUFDLElBQUk0cUUsR0FBR3JwRSxFQUFFd1EsTUFBTSxTQUFTeFEsRUFBRXdRLEtBQUssTUFBTXhRLEVBQUU4NUQsU0FBUyxtQkFBbUIsT0FBTyxJQUFJLElBQUl2NUQsRUFBRSxFQUFFWCxFQUFFSSxFQUFFc1EsU0FBU3ZVLE9BQU93RSxFQUFFWCxFQUFFVyxJQUFJLENBQUMsSUFBSTFFLEVBQUVtRSxFQUFFc1EsU0FBUy9QLEdBQUd4RCxFQUFFbEIsR0FBR0EsRUFBRTR5RSxTQUFTenVFLEVBQUV5dUUsUUFBTyxHQUFJLEdBQUd6dUUsRUFBRWdwRSxhQUFhLElBQUksSUFBSXhwRSxFQUFFLEVBQUVvVCxFQUFFNVMsRUFBRWdwRSxhQUFhanRFLE9BQU95RCxFQUFFb1QsRUFBRXBULElBQUksQ0FBQyxJQUFJeUIsRUFBRWpCLEVBQUVncEUsYUFBYXhwRSxHQUFHa2xDLE1BQU0zbkMsRUFBRWtFLEdBQUdBLEVBQUV3dEUsU0FBU3p1RSxFQUFFeXVFLFFBQU8sS0FBbmtCLENBQTBrQjF4RSxHQUFHLFNBQVNBLEVBQUVpRCxFQUFFTyxHQUFHLEdBQUcsSUFBSVAsRUFBRXZCLEtBQUssQ0FBQyxJQUFJdUIsRUFBRXl1RSxRQUFRenVFLEVBQUUwYSxRQUFRMWEsRUFBRTRzRSxZQUFZcnNFLEdBQUdQLEVBQUV5dUUsUUFBUXp1RSxFQUFFc1EsU0FBU3ZVLFNBQVMsSUFBSWlFLEVBQUVzUSxTQUFTdlUsUUFBUSxJQUFJaUUsRUFBRXNRLFNBQVMsR0FBRzdSLE1BQU0sWUFBWXVCLEVBQUVnc0UsWUFBVyxHQUFJLEdBQUdoc0UsRUFBRWdzRSxZQUFXLEVBQUdoc0UsRUFBRXNRLFNBQVMsSUFBSSxJQUFJMVEsRUFBRSxFQUFFL0QsRUFBRW1FLEVBQUVzUSxTQUFTdlUsT0FBTzZELEVBQUUvRCxFQUFFK0QsSUFBSTdDLEVBQUVpRCxFQUFFc1EsU0FBUzFRLEdBQUdXLEtBQUtQLEVBQUVtb0UsS0FBSyxHQUFHbm9FLEVBQUVncEUsYUFBYSxJQUFJLElBQUl4cEUsRUFBRSxFQUFFb1QsRUFBRTVTLEVBQUVncEUsYUFBYWp0RSxPQUFPeUQsRUFBRW9ULEVBQUVwVCxJQUFJekMsRUFBRWlELEVBQUVncEUsYUFBYXhwRSxHQUFHa2xDLE1BQU1ua0MsSUFBNVcsQ0FBaVh4RCxHQUFFLElBQWt6UjJ4RSxDQUFHbnVFLEVBQUVQLEdBQUcsSUFBSUosRUFBRWtzRSxHQUFHdnJFLEVBQUVQLEdBQUcsTUFBTSxDQUFDMnVFLElBQUlwdUUsRUFBRW9iLE9BQU8vYixFQUFFK2IsT0FBTzR3QyxnQkFBZ0Izc0QsRUFBRTJzRCxrQkFBa0IsU0FBU3h2RCxHQUFHLFNBQVNpRCxFQUFFQSxFQUFFTyxHQUFHLElBQUlYLEVBQUU1RCxPQUFPb0UsT0FBT3JELEdBQUdsQixFQUFFLEdBQUcyRCxFQUFFLEdBQUcsR0FBR2UsRUFBRSxJQUFJLElBQUlxUyxLQUFLclMsRUFBRWpFLFVBQVVzRCxFQUFFdEQsU0FBU1MsRUFBRVQsU0FBUyxJQUFJMEgsT0FBT3pELEVBQUVqRSxVQUFVaUUsRUFBRTh5QyxhQUFhenpDLEVBQUV5ekMsV0FBV3dPLEVBQUU3bEQsT0FBT29FLE9BQU9yRCxFQUFFczJDLFlBQVksTUFBTTl5QyxFQUFFOHlDLGFBQWE5eUMsRUFBRSxZQUFZcVMsR0FBRyxlQUFlQSxJQUFJaFQsRUFBRWdULEdBQUdyUyxFQUFFcVMsSUFBSWhULEVBQUV3MkIsS0FBSyxTQUFTcjVCLEVBQUVpRCxFQUFFTyxJQUFJQSxFQUFFZixFQUFFM0QsR0FBR1EsS0FBS1UsSUFBSSxJQUFJa0UsRUFBRXFzRSxHQUFHdHRFLEVBQUVtVSxPQUFPdlUsR0FBRyxPQUFPcUIsRUFBRTJ0RSxPQUFPL3lFLEVBQUVvRixFQUFFNHRFLEtBQUtydkUsRUFBRXlCLEVBQUUsTUFBTSxDQUFDOGlCLFFBQVEvakIsRUFBRTh1RSxtQkFBbUIxQixHQUFHcHRFLE1BQU00cEUsSUFBSW1GLElBQUk1dUUsR0FBRzRqQixRQUFRNWpCLEdBQUcydUUsb0JBQW9CLFNBQVMvZSxHQUFHaHpELEdBQUcsT0FBT3d3RSxHQUFHQSxJQUFJL3ZFLFNBQVNDLGNBQWMsUUFBUXFQLFVBQVUvUCxFQUFFLGlCQUFpQixnQkFBZ0J3d0UsR0FBR3pnRSxVQUFVakcsUUFBUSxTQUFTLEVBQUUsSUFBSW1vRSxLQUFLdHJCLEdBQUdxTSxJQUFHLEdBQUlrZixLQUFLdnJCLEdBQUdxTSxJQUFHLEdBQUltZixHQUFHM3RCLEdBQUUsU0FBU3hrRCxHQUFHLElBQUlpRCxFQUFFaTJELEdBQUdsNUQsR0FBRyxPQUFPaUQsR0FBR0EsRUFBRThNLGFBQVlxaUUsR0FBR3JjLEdBQUc3MkQsVUFBVW0rQyxPQUFPMFksR0FBRzcyRCxVQUFVbStDLE9BQU8sU0FBU3I5QyxFQUFFaUQsR0FBRyxJQUFJakQsRUFBRUEsR0FBR2s1RCxHQUFHbDVELE1BQU1TLFNBQVN5NEMsTUFBTWw1QyxJQUFJUyxTQUFTa0osZ0JBQWdCLE9BQU9sRixLQUFLLElBQUlqQixFQUFFaUIsS0FBSzR6QixTQUFTLElBQUk3MEIsRUFBRW9iLE9BQU8sQ0FBQyxJQUFJL2IsRUFBRVcsRUFBRTZ1RSxTQUFTLEdBQUd4dkUsRUFBRSxHQUFHLGlCQUFpQkEsRUFBRSxNQUFNQSxFQUFFK2dCLE9BQU8sS0FBSy9nQixFQUFFc3ZFLEdBQUd0dkUsUUFBUSxDQUFDLElBQUlBLEVBQUUrL0QsU0FBUyxPQUFPbitELEtBQUs1QixFQUFFQSxFQUFFa04sZUFBZS9QLElBQUk2QyxFQUFFLFNBQVM3QyxHQUFHLEdBQUdBLEVBQUVzeUUsVUFBVSxPQUFPdHlFLEVBQUVzeUUsVUFBVSxJQUFJcnZFLEVBQUV4QyxTQUFTQyxjQUFjLE9BQU8sT0FBT3VDLEVBQUVkLFlBQVluQyxFQUFFeW5FLFdBQVUsSUFBS3hrRSxFQUFFOE0sVUFBMUgsQ0FBcUkvUCxJQUFJLEdBQUc2QyxFQUFFLENBQUMsSUFBSS9ELEVBQUVrekUsR0FBR252RSxFQUFFLENBQUN3dUUsbUJBQWtCLEVBQUdILHFCQUFxQmUsR0FBR2hCLDRCQUE0QmlCLEdBQUc1QixXQUFXOXNFLEVBQUU4c0UsV0FBV2MsU0FBUzV0RSxFQUFFNHRFLFVBQVUzc0UsTUFBTWhDLEVBQUUzRCxFQUFFOGYsT0FBTy9JLEVBQUUvVyxFQUFFMHdELGdCQUFnQmhzRCxFQUFFb2IsT0FBT25jLEVBQUVlLEVBQUVnc0QsZ0JBQWdCMzVDLEdBQUcsT0FBT3U4RCxHQUFHaHpFLEtBQUtxRixLQUFLekUsRUFBRWlELElBQUk4eUQsR0FBRy91QyxRQUFRZ3JELEdBQUdseUUsRUFBT0QsUUFBUWsyRCxLLGdGQ0x0dTJGLFlBRUEsSUFBSXhZLEVBQVEsRUFBUSxRQUNoQmcxQixFQUFzQixFQUFRLFFBRTlCQyxFQUF1QixDQUN6QixlQUFnQixxQ0FHbEIsU0FBU0MsRUFBc0I3bEMsRUFBUzVwQyxJQUNqQ3U2QyxFQUFNbTFCLFlBQVk5bEMsSUFBWTJRLEVBQU1tMUIsWUFBWTlsQyxFQUFRLG1CQUMzREEsRUFBUSxnQkFBa0I1cEMsR0FnQjlCLElBWE0ydkUsRUFXRjdxQyxFQUFXLENBQ2I2cUMsVUFYOEIsb0JBQW5CQyxxQkFHbUIsSUFBWjlsRSxHQUF1RSxxQkFBNUM3TixPQUFPQyxVQUFVc0osU0FBU3BKLEtBQUswTixNQUQxRTZsRSxFQUFVLEVBQVEsU0FLYkEsR0FNUEUsaUJBQWtCLENBQUMsU0FBMEJwMEUsRUFBTW11QyxHQUdqRCxPQUZBMmxDLEVBQW9CM2xDLEVBQVMsVUFDN0IybEMsRUFBb0IzbEMsRUFBUyxnQkFDekIyUSxFQUFNdTFCLFdBQVdyMEUsSUFDbkI4K0MsRUFBTXcxQixjQUFjdDBFLElBQ3BCOCtDLEVBQU15MUIsU0FBU3YwRSxJQUNmOCtDLEVBQU0wMUIsU0FBU3gwRSxJQUNmOCtDLEVBQU0yMUIsT0FBT3owRSxJQUNiOCtDLEVBQU00MUIsT0FBTzEwRSxHQUVOQSxFQUVMOCtDLEVBQU02MUIsa0JBQWtCMzBFLEdBQ25CQSxFQUFLNDBFLE9BRVY5MUIsRUFBTSsxQixrQkFBa0I3MEUsSUFDMUJnMEUsRUFBc0I3bEMsRUFBUyxtREFDeEJudUMsRUFBSytKLFlBRVYrMEMsRUFBTTl0QixTQUFTaHhCLElBQ2pCZzBFLEVBQXNCN2xDLEVBQVMsa0NBQ3hCMW1CLEtBQUtDLFVBQVUxbkIsSUFFakJBLElBR1Q4MEUsa0JBQW1CLENBQUMsU0FBMkI5MEUsR0FFN0MsR0FBb0IsaUJBQVRBLEVBQ1QsSUFDRUEsRUFBT3luQixLQUFLcEwsTUFBTXJjLEdBQ2xCLE1BQU91QixJQUVYLE9BQU92QixJQU9UbUMsUUFBUyxFQUVUNHlFLGVBQWdCLGFBQ2hCQyxlQUFnQixlQUVoQkMsa0JBQW1CLEVBRW5CQyxlQUFnQixTQUF3QjVwQyxHQUN0QyxPQUFPQSxHQUFVLEtBQU9BLEVBQVMsTUFJckNqQyxFQUFTOEUsUUFBVSxDQUNqQjBRLE9BQVEsQ0FDTixPQUFVLHNDQUlkQyxFQUFNbDJDLFFBQVEsQ0FBQyxTQUFVLE1BQU8sU0FBUyxTQUE2Qm8zQyxHQUNwRTNXLEVBQVM4RSxRQUFRNlIsR0FBVSxNQUc3QmxCLEVBQU1sMkMsUUFBUSxDQUFDLE9BQVEsTUFBTyxVQUFVLFNBQStCbzNDLEdBQ3JFM1csRUFBUzhFLFFBQVE2UixHQUFVbEIsRUFBTXZqQixNQUFNdzRDLE1BR3pDMXlFLEVBQU9ELFFBQVVpb0MsSSwwREMxRkYsU0FBUzhyQyxFQUN0QkMsRUFDQWoxRCxFQUNBNHdDLEVBQ0Fza0IsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsR0FHQSxJQXFCSXh6RCxFQXJCQXRjLEVBQW1DLG1CQUFsQnl2RSxFQUNqQkEsRUFBY3p2RSxRQUNkeXZFLEVBaURKLEdBOUNJajFELElBQ0Z4YSxFQUFRd2EsT0FBU0EsRUFDakJ4YSxFQUFRb3JELGdCQUFrQkEsRUFDMUJwckQsRUFBUXVzRCxXQUFZLEdBSWxCbWpCLElBQ0YxdkUsRUFBUXFhLFlBQWEsR0FJbkJ1MUQsSUFDRjV2RSxFQUFReXNELFNBQVcsVUFBWW1qQixHQUk3QkMsR0FDRnZ6RCxFQUFPLFNBQVV3ZCxJQUVmQSxFQUNFQSxHQUNDejVCLEtBQUtpYixRQUFVamIsS0FBS2liLE9BQU9pNEMsWUFDM0JsekQsS0FBS3NhLFFBQVV0YSxLQUFLc2EsT0FBT1csUUFBVWpiLEtBQUtzYSxPQUFPVyxPQUFPaTRDLGFBRVosb0JBQXhCd2Msc0JBQ3JCajJDLEVBQVVpMkMscUJBR1JKLEdBQ0ZBLEVBQWEzMEUsS0FBS3FGLEtBQU15NUIsR0FHdEJBLEdBQVdBLEVBQVFrMkMsdUJBQ3JCbDJDLEVBQVFrMkMsc0JBQXNCMTVCLElBQUl1NUIsSUFLdEM3dkUsRUFBUWl3RSxhQUFlM3pELEdBQ2RxekQsSUFDVHJ6RCxFQUFPd3pELEVBQ0gsV0FBY0gsRUFBYTMwRSxLQUFLcUYsS0FBTUEsS0FBSzIyQixNQUFNL0MsU0FBU2k4QyxhQUMxRFAsR0FHRnJ6RCxFQUNGLEdBQUl0YyxFQUFRcWEsV0FBWSxDQUd0QnJhLEVBQVFtd0UsY0FBZ0I3ekQsRUFFeEIsSUFBSTh6RCxFQUFpQnB3RSxFQUFRd2EsT0FDN0J4YSxFQUFRd2EsT0FBUyxTQUFtQ0ssRUFBR2lmLEdBRXJELE9BREF4ZCxFQUFLdGhCLEtBQUs4K0IsR0FDSHMyQyxFQUFldjFELEVBQUdpZixRQUV0QixDQUVMLElBQUl1MkMsRUFBV3J3RSxFQUFRbzBCLGFBQ3ZCcDBCLEVBQVFvMEIsYUFBZWk4QyxFQUNuQixHQUFHeHRFLE9BQU93dEUsRUFBVS96RCxHQUNwQixDQUFDQSxHQUlULE1BQU8sQ0FDTDdnQixRQUFTZzBFLEVBQ1R6dkUsUUFBU0EsR0ExRmIsbUMsbUNDQUEsOENBeUNBLElBS0lzd0UsR0FMMkIsb0JBQVgzd0UsT0FDaEJBLFlBQ2tCLElBQVg4SSxFQUNMQSxFQUNBLElBQ21CKzZDLDZCQTJDekIsU0FBUytzQixFQUFVenVFLEVBQUtrWixHQUl0QixRQUhlLElBQVZBLElBQW1CQSxFQUFRLElBR3BCLE9BQVJsWixHQUErQixpQkFBUkEsRUFDekIsT0FBT0EsRUFJVCxJQXRCbUJxK0MsRUFzQmZyakIsR0F0QmVxakIsRUFzQkcsU0FBVWppRCxHQUFLLE9BQU9BLEVBQUVzeUUsV0FBYTF1RSxHQUE1Q2taLEVBckJIbFksT0FBT3E5QyxHQUFHLElBc0J0QixHQUFJcmpCLEVBQ0YsT0FBT0EsRUFBSTJ6QyxLQUdiLElBQUlBLEVBQU9ydEUsTUFBTUMsUUFBUXZCLEdBQU8sR0FBSyxHQVlyQyxPQVRBa1osRUFBTTlmLEtBQUssQ0FDVHMxRSxTQUFVMXVFLEVBQ1YydUUsS0FBTUEsSUFHUjUxRSxPQUFPOEgsS0FBS2IsR0FBS21CLFNBQVEsU0FBVS9ELEdBQ2pDdXhFLEVBQUt2eEUsR0FBT3F4RSxFQUFTenVFLEVBQUk1QyxHQUFNOGIsTUFHMUJ5MUQsRUFNVCxTQUFTQyxFQUFjNXVFLEVBQUt1RyxHQUMxQnhOLE9BQU84SCxLQUFLYixHQUFLbUIsU0FBUSxTQUFVL0QsR0FBTyxPQUFPbUosRUFBR3ZHLEVBQUk1QyxHQUFNQSxNQUdoRSxTQUFTbXNCLEVBQVV2cEIsR0FDakIsT0FBZSxPQUFSQSxHQUErQixpQkFBUkEsRUFrQmhDLElBQUk2dUUsRUFBUyxTQUFpQkMsRUFBV0MsR0FDdkN4d0UsS0FBS3d3RSxRQUFVQSxFQUVmeHdFLEtBQUt5d0UsVUFBWWoyRSxPQUFPb0UsT0FBTyxNQUUvQm9CLEtBQUswd0UsV0FBYUgsRUFDbEIsSUFBSUksRUFBV0osRUFBVTVtRCxNQUd6QjNwQixLQUFLMnBCLE9BQTZCLG1CQUFiZ25ELEVBQTBCQSxJQUFhQSxJQUFhLElBR3ZFcitDLEVBQXFCLENBQUVzK0MsV0FBWSxDQUFFN3VFLGNBQWMsSUFFdkR1d0IsRUFBbUJzK0MsV0FBV3p5RSxJQUFNLFdBQ2xDLFFBQVM2QixLQUFLMHdFLFdBQVdFLFlBRzNCTixFQUFPNzFFLFVBQVVvMkUsU0FBVyxTQUFtQmh5RSxFQUFLeEQsR0FDbEQyRSxLQUFLeXdFLFVBQVU1eEUsR0FBT3hELEdBR3hCaTFFLEVBQU83MUUsVUFBVXE2RCxZQUFjLFNBQXNCajJELFVBQzVDbUIsS0FBS3l3RSxVQUFVNXhFLElBR3hCeXhFLEVBQU83MUUsVUFBVXEyRSxTQUFXLFNBQW1CanlFLEdBQzdDLE9BQU9tQixLQUFLeXdFLFVBQVU1eEUsSUFHeEJ5eEUsRUFBTzcxRSxVQUFVczJFLFNBQVcsU0FBbUJseUUsR0FDN0MsT0FBT0EsS0FBT21CLEtBQUt5d0UsV0FHckJILEVBQU83MUUsVUFBVTgrQixPQUFTLFNBQWlCZzNDLEdBQ3pDdndFLEtBQUswd0UsV0FBV0UsV0FBYUwsRUFBVUssV0FDbkNMLEVBQVV4ekMsVUFDWi84QixLQUFLMHdFLFdBQVczekMsUUFBVXd6QyxFQUFVeHpDLFNBRWxDd3pDLEVBQVVuckMsWUFDWnBsQyxLQUFLMHdFLFdBQVd0ckMsVUFBWW1yQyxFQUFVbnJDLFdBRXBDbXJDLEVBQVVucUMsVUFDWnBtQyxLQUFLMHdFLFdBQVd0cUMsUUFBVW1xQyxFQUFVbnFDLFVBSXhDa3FDLEVBQU83MUUsVUFBVXUyRSxhQUFlLFNBQXVCaHBFLEdBQ3JEcW9FLEVBQWFyd0UsS0FBS3l3RSxVQUFXem9FLElBRy9Cc29FLEVBQU83MUUsVUFBVXcyRSxjQUFnQixTQUF3QmpwRSxHQUNuRGhJLEtBQUswd0UsV0FBV3RxQyxTQUNsQmlxQyxFQUFhcndFLEtBQUswd0UsV0FBV3RxQyxRQUFTcCtCLElBSTFDc29FLEVBQU83MUUsVUFBVXkyRSxjQUFnQixTQUF3QmxwRSxHQUNuRGhJLEtBQUswd0UsV0FBVzN6QyxTQUNsQnN6QyxFQUFhcndFLEtBQUswd0UsV0FBVzN6QyxRQUFTLzBCLElBSTFDc29FLEVBQU83MUUsVUFBVTAyRSxnQkFBa0IsU0FBMEJucEUsR0FDdkRoSSxLQUFLMHdFLFdBQVd0ckMsV0FDbEJpckMsRUFBYXJ3RSxLQUFLMHdFLFdBQVd0ckMsVUFBV3A5QixJQUk1Q3hOLE9BQU82NEIsaUJBQWtCaTlDLEVBQU83MUUsVUFBVzYzQixHQUUzQyxJQUFJOCtDLEVBQW1CLFNBQTJCQyxHQUVoRHJ4RSxLQUFLc3hFLFNBQVMsR0FBSUQsR0FBZSxJQUduQ0QsRUFBaUIzMkUsVUFBVTBELElBQU0sU0FBYzhPLEdBQzdDLE9BQU9BLEVBQUtaLFFBQU8sU0FBVWhSLEVBQVF3RCxHQUNuQyxPQUFPeEQsRUFBT3kxRSxTQUFTanlFLEtBQ3RCbUIsS0FBSzYyQixPQUdWdTZDLEVBQWlCMzJFLFVBQVU4MkUsYUFBZSxTQUF1QnRrRSxHQUMvRCxJQUFJNVIsRUFBUzJFLEtBQUs2MkIsS0FDbEIsT0FBTzVwQixFQUFLWixRQUFPLFNBQVUzRSxFQUFXN0ksR0FFdEMsT0FBTzZJLElBRFByTSxFQUFTQSxFQUFPeTFFLFNBQVNqeUUsSUFDRSt4RSxXQUFhL3hFLEVBQU0sSUFBTSxNQUNuRCxLQUdMdXlFLEVBQWlCMzJFLFVBQVU4K0IsT0FBUyxTQUFtQjgzQyxJQXlEdkQsU0FBUzkzQyxFQUFRdHNCLEVBQU11a0UsRUFBY0MsR0FDL0IsRUFRSixHQUhBRCxFQUFhajRDLE9BQU9rNEMsR0FHaEJBLEVBQVUzMkUsUUFDWixJQUFLLElBQUkrRCxLQUFPNHlFLEVBQVUzMkUsUUFBUyxDQUNqQyxJQUFLMDJFLEVBQWFWLFNBQVNqeUUsR0FPekIsY0FFRjA2QixFQUNFdHNCLEVBQUt6SyxPQUFPM0QsR0FDWjJ5RSxFQUFhVixTQUFTanlFLEdBQ3RCNHlFLEVBQVUzMkUsUUFBUStELEtBL0V4QjA2QixDQUFPLEdBQUl2NUIsS0FBSzYyQixLQUFNdzZDLElBR3hCRCxFQUFpQjMyRSxVQUFVNjJFLFNBQVcsU0FBbUJya0UsRUFBTXNqRSxFQUFXQyxHQUN0RSxJQUFJcHNELEVBQVNwa0IsVUFDSSxJQUFad3dFLElBQXFCQSxHQUFVLEdBTXRDLElBQUlpQixFQUFZLElBQUluQixFQUFPQyxFQUFXQyxHQUNsQixJQUFoQnZqRSxFQUFLMVMsT0FDUHlGLEtBQUs2MkIsS0FBTzQ2QyxFQUVDenhFLEtBQUs3QixJQUFJOE8sRUFBS3pOLE1BQU0sR0FBSSxJQUM5QnF4RSxTQUFTNWpFLEVBQUtBLEVBQUsxUyxPQUFTLEdBQUlrM0UsR0FJckNsQixFQUFVejFFLFNBQ1p1MUUsRUFBYUUsRUFBVXoxRSxTQUFTLFNBQVU0MkUsRUFBZ0I3eUUsR0FDeER1bEIsRUFBT2t0RCxTQUFTcmtFLEVBQUt6SyxPQUFPM0QsR0FBTTZ5RSxFQUFnQmxCLE9BS3hEWSxFQUFpQjMyRSxVQUFVazNFLFdBQWEsU0FBcUIxa0UsR0FDM0QsSUFBSXFOLEVBQVN0YSxLQUFLN0IsSUFBSThPLEVBQUt6TixNQUFNLEdBQUksSUFDakNYLEVBQU1vTyxFQUFLQSxFQUFLMVMsT0FBUyxHQUN6Qm1SLEVBQVE0TyxFQUFPdzJELFNBQVNqeUUsR0FFdkI2TSxHQVVBQSxFQUFNOGtFLFNBSVhsMkQsRUFBT3c2QyxZQUFZajJELElBR3JCdXlFLEVBQWlCMzJFLFVBQVVtM0UsYUFBZSxTQUF1QjNrRSxHQUMvRCxJQUFJcU4sRUFBU3RhLEtBQUs3QixJQUFJOE8sRUFBS3pOLE1BQU0sR0FBSSxJQUNqQ1gsRUFBTW9PLEVBQUtBLEVBQUsxUyxPQUFTLEdBRTdCLE9BQU8rZixFQUFPeTJELFNBQVNseUUsSUFnQ3pCLElBeUNJMDBCLEVBRUosSUFBSWlkLEVBQVEsU0FBZ0I3d0MsR0FDMUIsSUFBSXlrQixFQUFTcGtCLFVBQ0ksSUFBWkwsSUFBcUJBLEVBQVUsS0FLL0I0ekIsR0FBeUIsb0JBQVhqMEIsUUFBMEJBLE9BQU9pMEIsS0FDbERELEVBQVFoMEIsT0FBT2kwQixLQVNqQixJQUFJcytDLEVBQVVseUUsRUFBUWt5RSxhQUEwQixJQUFaQSxJQUFxQkEsRUFBVSxJQUNuRSxJQUFJOXZELEVBQVNwaUIsRUFBUW9pQixZQUF3QixJQUFYQSxJQUFvQkEsR0FBUyxHQUcvRC9oQixLQUFLOHhFLGFBQWMsRUFDbkI5eEUsS0FBSyt4RSxTQUFXdjNFLE9BQU9vRSxPQUFPLE1BQzlCb0IsS0FBS2d5RSxtQkFBcUIsR0FDMUJoeUUsS0FBS2l5RSxXQUFhejNFLE9BQU9vRSxPQUFPLE1BQ2hDb0IsS0FBS2t5RSxnQkFBa0IxM0UsT0FBT29FLE9BQU8sTUFDckNvQixLQUFLbXlFLFNBQVcsSUFBSWYsRUFBaUJ6eEUsR0FDckNLLEtBQUtveUUscUJBQXVCNTNFLE9BQU9vRSxPQUFPLE1BQzFDb0IsS0FBS3F5RSxhQUFlLEdBQ3BCcnlFLEtBQUtzeUUsV0FBYSxJQUFJLytDLEVBQ3RCdnpCLEtBQUt1eUUsdUJBQXlCLzNFLE9BQU9vRSxPQUFPLE1BRzVDLElBQUlnekMsRUFBUTV4QyxLQUVSZ25DLEVBRE1obkMsS0FDU2duQyxTQUNmYixFQUZNbm1DLEtBRU9tbUMsT0FDakJubUMsS0FBS2duQyxTQUFXLFNBQXdCL3BDLEVBQU00c0MsR0FDNUMsT0FBTzdDLEVBQVNyc0MsS0FBS2kzQyxFQUFPMzBDLEVBQU00c0MsSUFFcEM3cEMsS0FBS21tQyxPQUFTLFNBQXNCbHBDLEVBQU00c0MsRUFBU2xxQyxHQUNqRCxPQUFPd21DLEVBQU94ckMsS0FBS2kzQyxFQUFPMzBDLEVBQU00c0MsRUFBU2xxQyxJQUkzQ0ssS0FBSytoQixPQUFTQSxFQUVkLElBQUk0SCxFQUFRM3BCLEtBQUtteUUsU0FBU3Q3QyxLQUFLbE4sTUFLL0I2b0QsRUFBY3h5RSxLQUFNMnBCLEVBQU8sR0FBSTNwQixLQUFLbXlFLFNBQVN0N0MsTUFJN0M0N0MsRUFBYXp5RSxLQUFNMnBCLEdBR25Ca29ELEVBQVFqdkUsU0FBUSxTQUFVOHZFLEdBQVUsT0FBT0EsRUFBT3R1RCxZQUVYN21CLElBQXJCb0MsRUFBUXNoRCxTQUF5QnRoRCxFQUFRc2hELFNBQVcxdEIsRUFBSWxzQixPQUFPNDVDLFdBeFhuRixTQUF3QnJQLEdBQ2pCcStCLElBRUxyK0IsRUFBTStnQyxhQUFlMUMsRUFFckJBLEVBQVkzbkUsS0FBSyxZQUFhc3BDLEdBRTlCcStCLEVBQVlqM0QsR0FBRyx3QkFBd0IsU0FBVTQ1RCxHQUMvQ2hoQyxFQUFNaG9CLGFBQWFncEQsTUFHckJoaEMsRUFBTWloQyxXQUFVLFNBQVVDLEVBQVVucEQsR0FDbENzbUQsRUFBWTNuRSxLQUFLLGdCQUFpQndxRSxFQUFVbnBELEtBQzNDLENBQUVvcEQsU0FBUyxJQUVkbmhDLEVBQU1vaEMsaUJBQWdCLFNBQVVwMkMsRUFBUWpULEdBQ3RDc21ELEVBQVkzbkUsS0FBSyxjQUFlczBCLEVBQVFqVCxLQUN2QyxDQUFFb3BELFNBQVMsS0F5V1pFLENBQWNqekUsT0FJZGt6RSxFQUF1QixDQUFFdnBELE1BQU8sQ0FBRTVuQixjQUFjLElBbU1wRCxTQUFTb3hFLEVBQWtCbnJFLEVBQUk0N0MsRUFBTWprRCxHQU1uQyxPQUxJaWtELEVBQUt2K0MsUUFBUTJDLEdBQU0sSUFDckJySSxHQUFXQSxFQUFRb3pFLFFBQ2ZudkIsRUFBS3ZsQyxRQUFRclcsR0FDYjQ3QyxFQUFLL29ELEtBQUttTixJQUVULFdBQ0wsSUFBSTNOLEVBQUl1cEQsRUFBS3YrQyxRQUFRMkMsR0FDakIzTixHQUFLLEdBQ1B1cEQsRUFBSzc3QixPQUFPMXRCLEVBQUcsSUFLckIsU0FBUys0RSxFQUFZeGhDLEVBQU95aEMsR0FDMUJ6aEMsRUFBTW1nQyxTQUFXdjNFLE9BQU9vRSxPQUFPLE1BQy9CZ3pDLEVBQU1xZ0MsV0FBYXozRSxPQUFPb0UsT0FBTyxNQUNqQ2d6QyxFQUFNc2dDLGdCQUFrQjEzRSxPQUFPb0UsT0FBTyxNQUN0Q2d6QyxFQUFNd2dDLHFCQUF1QjUzRSxPQUFPb0UsT0FBTyxNQUMzQyxJQUFJK3FCLEVBQVFpb0IsRUFBTWpvQixNQUVsQjZvRCxFQUFjNWdDLEVBQU9qb0IsRUFBTyxHQUFJaW9CLEVBQU11Z0MsU0FBU3Q3QyxNQUFNLEdBRXJENDdDLEVBQWE3Z0MsRUFBT2pvQixFQUFPMHBELEdBRzdCLFNBQVNaLEVBQWM3Z0MsRUFBT2pvQixFQUFPMHBELEdBQ25DLElBQUlDLEVBQVExaEMsRUFBTTd4QyxJQUdsQjZ4QyxFQUFNeEwsUUFBVSxHQUVoQndMLEVBQU0yZ0MsdUJBQXlCLzNFLE9BQU9vRSxPQUFPLE1BQzdDLElBQUkyMEUsRUFBaUIzaEMsRUFBTXNnQyxnQkFDdkJwckIsRUFBVyxHQUNmdXBCLEVBQWFrRCxHQUFnQixTQUFVdnJFLEVBQUluSixHQUl6Q2lvRCxFQUFTam9ELEdBL2dCYixTQUFrQm1KLEVBQUlhLEdBQ3BCLE9BQU8sV0FDTCxPQUFPYixFQUFHYSxJQTZnQk04WCxDQUFRM1ksRUFBSTRwQyxHQUM1QnAzQyxPQUFPeUQsZUFBZTJ6QyxFQUFNeEwsUUFBU3ZuQyxFQUFLLENBQ3hDVixJQUFLLFdBQWMsT0FBT3l6QyxFQUFNN3hDLElBQUlsQixJQUNwQ1gsWUFBWSxPQU9oQixJQUFJa2lDLEVBQVM3TSxFQUFJbHNCLE9BQU8rNEIsT0FDeEI3TSxFQUFJbHNCLE9BQU8rNEIsUUFBUyxFQUNwQndSLEVBQU03eEMsSUFBTSxJQUFJd3pCLEVBQUksQ0FDbEJ2NUIsS0FBTSxDQUNKdzVFLFFBQVM3cEQsR0FFWG05QixTQUFVQSxJQUVadnpCLEVBQUlsc0IsT0FBTys0QixPQUFTQSxFQUdoQndSLEVBQU03dkIsUUF3TVosU0FBMkI2dkIsR0FDekJBLEVBQU03eEMsSUFBSXdnQyxRQUFPLFdBQWMsT0FBT3ZnQyxLQUFLbUosTUFBTXFxRSxXQUFXLFdBQ3RELElBR0gsQ0FBRS95QyxNQUFNLEVBQU1qSixNQUFNLElBNU1yQmk4QyxDQUFpQjdoQyxHQUdmMGhDLElBQ0VELEdBR0Z6aEMsRUFBTThoQyxhQUFZLFdBQ2hCSixFQUFNbnFFLE1BQU1xcUUsUUFBVSxRQUcxQmpnRCxFQUFJOWEsVUFBUyxXQUFjLE9BQU82NkQsRUFBTWp6QyxlQUk1QyxTQUFTbXlDLEVBQWU1Z0MsRUFBTytoQyxFQUFXMW1FLEVBQU01UixFQUFRZzRFLEdBQ3RELElBQUlPLEdBQVUzbUUsRUFBSzFTLE9BQ2ZtTixFQUFZa3FDLEVBQU11Z0MsU0FBU1osYUFBYXRrRSxHQVc1QyxHQVJJNVIsRUFBT3UxRSxhQUNMaC9CLEVBQU13Z0MscUJBQXFCMXFFLEdBRy9Ca3FDLEVBQU13Z0MscUJBQXFCMXFFLEdBQWFyTSxJQUlyQ3U0RSxJQUFXUCxFQUFLLENBQ25CLElBQUlRLEVBQWNDLEVBQWVILEVBQVcxbUUsRUFBS3pOLE1BQU0sR0FBSSxJQUN2RHUwRSxFQUFhOW1FLEVBQUtBLEVBQUsxUyxPQUFTLEdBQ3BDcTNDLEVBQU04aEMsYUFBWSxXQVFoQm5nRCxFQUFJeU4sSUFBSTZ5QyxFQUFhRSxFQUFZMTRFLEVBQU9zdUIsVUFJNUMsSUFBSXFxRCxFQUFRMzRFLEVBQU9vK0IsUUEyQnJCLFNBQTJCbVksRUFBT2xxQyxFQUFXdUYsR0FDM0MsSUFBSWduRSxFQUE0QixLQUFkdnNFLEVBRWRzc0UsRUFBUSxDQUNWaHRDLFNBQVVpdEMsRUFBY3JpQyxFQUFNNUssU0FBVyxTQUFVa3RDLEVBQU9DLEVBQVVDLEdBQ2xFLElBQUlubEUsRUFBT29sRSxFQUFpQkgsRUFBT0MsRUFBVUMsR0FDekN2cUMsRUFBVTU2QixFQUFLNDZCLFFBQ2ZscUMsRUFBVXNQLEVBQUt0UCxRQUNmMUMsRUFBT2dTLEVBQUtoUyxLQVVoQixPQVJLMEMsR0FBWUEsRUFBUWszQixPQUN2QjU1QixFQUFPeUssRUFBWXpLLEdBT2QyMEMsRUFBTTVLLFNBQVMvcEMsRUFBTTRzQyxJQUc5QjFELE9BQVE4dEMsRUFBY3JpQyxFQUFNekwsT0FBUyxTQUFVK3RDLEVBQU9DLEVBQVVDLEdBQzlELElBQUlubEUsRUFBT29sRSxFQUFpQkgsRUFBT0MsRUFBVUMsR0FDekN2cUMsRUFBVTU2QixFQUFLNDZCLFFBQ2ZscUMsRUFBVXNQLEVBQUt0UCxRQUNmMUMsRUFBT2dTLEVBQUtoUyxLQUVYMEMsR0FBWUEsRUFBUWszQixPQUN2QjU1QixFQUFPeUssRUFBWXpLLEdBT3JCMjBDLEVBQU16TCxPQUFPbHBDLEVBQU00c0MsRUFBU2xxQyxLQWlCaEMsT0FYQW5GLE9BQU82NEIsaUJBQWlCMmdELEVBQU8sQ0FDN0I1dEMsUUFBUyxDQUNQam9DLElBQUs4MUUsRUFDRCxXQUFjLE9BQU9yaUMsRUFBTXhMLFNBQzNCLFdBQWMsT0FVeEIsU0FBMkJ3TCxFQUFPbHFDLEdBQ2hDLElBQUtrcUMsRUFBTTJnQyx1QkFBdUI3cUUsR0FBWSxDQUM1QyxJQUFJNHNFLEVBQWUsR0FDZkMsRUFBVzdzRSxFQUFVbk4sT0FDekJDLE9BQU84SCxLQUFLc3ZDLEVBQU14TCxTQUFTeGpDLFNBQVEsU0FBVTNGLEdBRTNDLEdBQUlBLEVBQUt1QyxNQUFNLEVBQUcrMEUsS0FBYzdzRSxFQUFoQyxDQUdBLElBQUk4c0UsRUFBWXYzRSxFQUFLdUMsTUFBTSswRSxHQUszQi81RSxPQUFPeUQsZUFBZXEyRSxFQUFjRSxFQUFXLENBQzdDcjJFLElBQUssV0FBYyxPQUFPeXpDLEVBQU14TCxRQUFRbnBDLElBQ3hDaUIsWUFBWSxRQUdoQjB6QyxFQUFNMmdDLHVCQUF1QjdxRSxHQUFhNHNFLEVBRzVDLE9BQU8xaUMsRUFBTTJnQyx1QkFBdUI3cUUsR0FoQ1Arc0UsQ0FBaUI3aUMsRUFBT2xxQyxLQUVuRGlpQixNQUFPLENBQ0x4ckIsSUFBSyxXQUFjLE9BQU8yMUUsRUFBZWxpQyxFQUFNam9CLE1BQU8xYyxPQUluRCttRSxFQS9Fc0JVLENBQWlCOWlDLEVBQU9scUMsRUFBV3VGLEdBRWhFNVIsRUFBTzgxRSxpQkFBZ0IsU0FBVTJCLEVBQVVqMEUsSUF5RzdDLFNBQTJCK3lDLEVBQU8zMEMsRUFBTStuQixFQUFTZ3ZELElBQ25DcGlDLEVBQU1xZ0MsV0FBV2gxRSxLQUFVMjBDLEVBQU1xZ0MsV0FBV2gxRSxHQUFRLEtBQzFEcEMsTUFBSyxTQUFpQ2d2QyxHQUMxQzdrQixFQUFRcnFCLEtBQUtpM0MsRUFBT29pQyxFQUFNcnFELE1BQU9rZ0IsTUExR2pDOHFDLENBQWlCL2lDLEVBRElscUMsRUFBWTdJLEVBQ09pMEUsRUFBVWtCLE1BR3BEMzRFLEVBQU82MUUsZUFBYyxTQUFVdDBDLEVBQVEvOUIsR0FDckMsSUFBSTVCLEVBQU8yL0IsRUFBTy9GLEtBQU9oNEIsRUFBTTZJLEVBQVk3SSxFQUN2Q21tQixFQUFVNFgsRUFBTzVYLFNBQVc0WCxHQXlHcEMsU0FBeUJnVixFQUFPMzBDLEVBQU0rbkIsRUFBU2d2RCxJQUNqQ3BpQyxFQUFNbWdDLFNBQVM5MEUsS0FBVTIwQyxFQUFNbWdDLFNBQVM5MEUsR0FBUSxLQUN0RHBDLE1BQUssU0FBK0JndkMsR0FDeEMsSUE3c0JnQnpqQyxFQTZzQlorVyxFQUFNNkgsRUFBUXJxQixLQUFLaTNDLEVBQU8sQ0FDNUI1SyxTQUFVZ3RDLEVBQU1odEMsU0FDaEJiLE9BQVE2dEMsRUFBTTd0QyxPQUNkQyxRQUFTNHRDLEVBQU01dEMsUUFDZnpjLE1BQU9xcUQsRUFBTXJxRCxNQUNiaXJELFlBQWFoakMsRUFBTXhMLFFBQ25CdXRDLFVBQVcvaEMsRUFBTWpvQixPQUNoQmtnQixHQUlILE9BeHRCZ0J6akMsRUFxdEJEK1csSUFwdEJpQixtQkFBYi9XLEVBQUlnRCxPQXF0QnJCK1QsRUFBTXhoQixRQUFRQyxRQUFRdWhCLElBRXBCeTBCLEVBQU0rZ0MsYUFDRHgxRCxFQUFJNVMsT0FBTSxTQUFVcEwsR0FFekIsTUFEQXl5QyxFQUFNK2dDLGFBQWFycUUsS0FBSyxhQUFjbkosR0FDaENBLEtBR0RnZSxLQTVIVDAzRCxDQUFlampDLEVBQU8zMEMsRUFBTStuQixFQUFTZ3ZELE1BR3ZDMzRFLEVBQU80MUUsZUFBYyxTQUFVbHpFLEVBQVFjLElBOEh6QyxTQUF5Qit5QyxFQUFPMzBDLEVBQU02M0UsRUFBV2QsR0FDL0MsR0FBSXBpQyxFQUFNc2dDLGdCQUFnQmoxRSxHQUl4QixjQUVGMjBDLEVBQU1zZ0MsZ0JBQWdCajFFLEdBQVEsU0FBd0IyMEMsR0FDcEQsT0FBT2tqQyxFQUNMZCxFQUFNcnFELE1BQ05xcUQsRUFBTTV0QyxRQUNOd0wsRUFBTWpvQixNQUNOaW9CLEVBQU14TCxVQXhJUjJ1QyxDQUFlbmpDLEVBRE1scUMsRUFBWTdJLEVBQ0tkLEVBQVFpMkUsTUFHaEQzNEUsRUFBTzIxRSxjQUFhLFNBQVV0bEUsRUFBTzdNLEdBQ25DMnpFLEVBQWM1Z0MsRUFBTytoQyxFQUFXMW1FLEVBQUt6SyxPQUFPM0QsR0FBTTZNLEVBQU8ybkUsTUFpSjdELFNBQVNTLEVBQWdCbnFELEVBQU8xYyxHQUM5QixPQUFPQSxFQUFLWixRQUFPLFNBQVVzZCxFQUFPOXFCLEdBQU8sT0FBTzhxQixFQUFNOXFCLEtBQVM4cUIsR0FHbkUsU0FBUzBxRCxFQUFrQnAzRSxFQUFNNHNDLEVBQVNscUMsR0FXeEMsT0FWSXFyQixFQUFTL3RCLElBQVNBLEVBQUtBLE9BQ3pCMEMsRUFBVWtxQyxFQUNWQSxFQUFVNXNDLEVBQ1ZBLEVBQU9BLEVBQUtBLE1BT1AsQ0FBRUEsS0FBTUEsRUFBTTRzQyxRQUFTQSxFQUFTbHFDLFFBQVNBLEdBR2xELFNBQVMyekIsRUFBUzNQLEdBQ1o0UCxHQUFPNVAsSUFBUzRQLEdBMzRCdEIsU0FBcUJBLEdBR25CLEdBRmMwRixPQUFPMUYsRUFBSXphLFFBQVE5RixNQUFNLEtBQUssS0FFN0IsRUFDYnVnQixFQUFJTyxNQUFNLENBQUVDLGFBQWNpaEQsUUFDckIsQ0FHTCxJQUFJempCLEVBQVFoK0IsRUFBSTk0QixVQUFVODJELE1BQzFCaCtCLEVBQUk5NEIsVUFBVTgyRCxNQUFRLFNBQVU1eEQsUUFDYixJQUFaQSxJQUFxQkEsRUFBVSxJQUVwQ0EsRUFBUTBjLEtBQU8xYyxFQUFRMGMsS0FDbkIsQ0FBQzI0RCxHQUFVeHlFLE9BQU83QyxFQUFRMGMsTUFDMUIyNEQsRUFDSnpqQixFQUFNNTJELEtBQUtxRixLQUFNTCxJQVFyQixTQUFTcTFFLElBQ1AsSUFBSXIxRSxFQUFVSyxLQUFLNHpCLFNBRWZqMEIsRUFBUWl5QyxNQUNWNXhDLEtBQUt1eUMsT0FBa0MsbUJBQWxCNXlDLEVBQVFpeUMsTUFDekJqeUMsRUFBUWl5QyxRQUNSanlDLEVBQVFpeUMsTUFDSGp5QyxFQUFRMmEsUUFBVTNhLEVBQVEyYSxPQUFPaTRCLFNBQzFDdnlDLEtBQUt1eUMsT0FBUzV5QyxFQUFRMmEsT0FBT2k0QixTQXEzQmpDMGlDLENBREExaEQsRUFBTTVQLEdBeGVSdXZELEVBQXFCdnBELE1BQU14ckIsSUFBTSxXQUMvQixPQUFPNkIsS0FBS0QsSUFBSW9KLE1BQU1xcUUsU0FHeEJOLEVBQXFCdnBELE1BQU1xWCxJQUFNLFNBQVVsVyxHQUNyQyxHQUtOMGxCLEVBQU0vMUMsVUFBVTByQyxPQUFTLFNBQWlCK3RDLEVBQU9DLEVBQVVDLEdBQ3ZELElBQUlod0QsRUFBU3BrQixLQUdYcWEsRUFBTWc2RCxFQUFpQkgsRUFBT0MsRUFBVUMsR0FDdENuM0UsRUFBT29kLEVBQUlwZCxLQUNYNHNDLEVBQVV4dkIsRUFBSXd2QixRQUdoQmlwQyxHQUZZejRELEVBQUkxYSxRQUVMLENBQUUxQyxLQUFNQSxFQUFNNHNDLFFBQVNBLElBQ2xDcXJDLEVBQVFsMUUsS0FBS2l5RSxXQUFXaDFFLEdBQ3ZCaTRFLElBTUxsMUUsS0FBSzB6RSxhQUFZLFdBQ2Z3QixFQUFNdHlFLFNBQVEsU0FBeUJvaUIsR0FDckNBLEVBQVE2a0IsU0FJWjdwQyxLQUFLcXlFLGFBQ0Y3eUUsUUFDQW9ELFNBQVEsU0FBVTg0QixHQUFPLE9BQU9BLEVBQUlvM0MsRUFBVTF1RCxFQUFPdUYsWUFhMUQ2bUIsRUFBTS8xQyxVQUFVdXNDLFNBQVcsU0FBbUJrdEMsRUFBT0MsR0FDakQsSUFBSS92RCxFQUFTcGtCLEtBR1hxYSxFQUFNZzZELEVBQWlCSCxFQUFPQyxHQUM1QmwzRSxFQUFPb2QsRUFBSXBkLEtBQ1g0c0MsRUFBVXh2QixFQUFJd3ZCLFFBRWhCak4sRUFBUyxDQUFFMy9CLEtBQU1BLEVBQU00c0MsUUFBU0EsR0FDaENxckMsRUFBUWwxRSxLQUFLK3hFLFNBQVM5MEUsR0FDMUIsR0FBS2k0RSxFQUFMLENBT0EsSUFDRWwxRSxLQUFLZ3lFLG1CQUNGeHlFLFFBQ0FpRCxRQUFPLFNBQVVpNUIsR0FBTyxPQUFPQSxFQUFJazBCLFVBQ25DaHRELFNBQVEsU0FBVTg0QixHQUFPLE9BQU9BLEVBQUlrMEIsT0FBT2h6QixFQUFReFksRUFBT3VGLFVBQzdELE1BQU9wdUIsR0FDSCxFQU1OLElBQUkyVixFQUFTZ2tFLEVBQU0zNkUsT0FBUyxFQUN4Qm9CLFFBQVFnQyxJQUFJdTNFLEVBQU1wdkUsS0FBSSxTQUFVa2YsR0FBVyxPQUFPQSxFQUFRNmtCLE9BQzFEcXJDLEVBQU0sR0FBR3JyQyxHQUViLE9BQU8sSUFBSWx1QyxTQUFRLFNBQVVDLEVBQVNDLEdBQ3BDcVYsRUFBTzlILE1BQUssU0FBVStULEdBQ3BCLElBQ0VpSCxFQUFPNHRELG1CQUNKdnZFLFFBQU8sU0FBVWk1QixHQUFPLE9BQU9BLEVBQUl5NUMsU0FDbkN2eUUsU0FBUSxTQUFVODRCLEdBQU8sT0FBT0EsRUFBSXk1QyxNQUFNdjRDLEVBQVF4WSxFQUFPdUYsVUFDNUQsTUFBT3B1QixHQUNILEVBS05LLEVBQVF1aEIsTUFDUCxTQUFVMWdCLEdBQ1gsSUFDRTJuQixFQUFPNHRELG1CQUNKdnZFLFFBQU8sU0FBVWk1QixHQUFPLE9BQU9BLEVBQUlqL0IsU0FDbkNtRyxTQUFRLFNBQVU4NEIsR0FBTyxPQUFPQSxFQUFJai9CLE1BQU1tZ0MsRUFBUXhZLEVBQU91RixNQUFPbHRCLE1BQ25FLE1BQU9sQixHQUNILEVBS05NLEVBQU9ZLFdBS2IrekMsRUFBTS8xQyxVQUFVbzRFLFVBQVksU0FBb0I3cUUsRUFBSXJJLEdBQ2xELE9BQU93ekUsRUFBaUJuckUsRUFBSWhJLEtBQUtxeUUsYUFBYzF5RSxJQUdqRDZ3QyxFQUFNLzFDLFVBQVV1NEUsZ0JBQWtCLFNBQTBCaHJFLEVBQUlySSxHQUU5RCxPQUFPd3pFLEVBRGtCLG1CQUFQbnJFLEVBQW9CLENBQUU0bkQsT0FBUTVuRCxHQUFPQSxFQUN6QmhJLEtBQUtneUUsbUJBQW9CcnlFLElBR3pENndDLEVBQU0vMUMsVUFBVXFvRCxNQUFRLFNBQWdCL2tELEVBQVFndUIsRUFBSXBzQixHQUNoRCxJQUFJeWtCLEVBQVNwa0IsS0FLZixPQUFPQSxLQUFLc3lFLFdBQVcveEMsUUFBTyxXQUFjLE9BQU94aUMsRUFBT3FtQixFQUFPdUYsTUFBT3ZGLEVBQU9naUIsV0FBYXJhLEVBQUlwc0IsSUFHbEc2d0MsRUFBTS8xQyxVQUFVbXZCLGFBQWUsU0FBdUJELEdBQ2xELElBQUl2RixFQUFTcGtCLEtBRWZBLEtBQUswekUsYUFBWSxXQUNmdHZELEVBQU9ya0IsSUFBSW9KLE1BQU1xcUUsUUFBVTdwRCxNQUkvQjZtQixFQUFNLzFDLFVBQVUyNkUsZUFBaUIsU0FBeUJub0UsRUFBTXNqRSxFQUFXNXdFLFFBQ3RELElBQVpBLElBQXFCQSxFQUFVLElBRWxCLGlCQUFUc04sSUFBcUJBLEVBQU8sQ0FBQ0EsSUFPeENqTixLQUFLbXlFLFNBQVNiLFNBQVNya0UsRUFBTXNqRSxHQUM3QmlDLEVBQWN4eUUsS0FBTUEsS0FBSzJwQixNQUFPMWMsRUFBTWpOLEtBQUtteUUsU0FBU2gwRSxJQUFJOE8sR0FBT3ROLEVBQVEwMUUsZUFFdkU1QyxFQUFhenlFLEtBQU1BLEtBQUsycEIsUUFHMUI2bUIsRUFBTS8xQyxVQUFVNjZFLGlCQUFtQixTQUEyQnJvRSxHQUMxRCxJQUFJbVgsRUFBU3BrQixLQUVLLGlCQUFUaU4sSUFBcUJBLEVBQU8sQ0FBQ0EsSUFNeENqTixLQUFLbXlFLFNBQVNSLFdBQVcxa0UsR0FDekJqTixLQUFLMHpFLGFBQVksV0FDZixJQUFJRyxFQUFjQyxFQUFlMXZELEVBQU91RixNQUFPMWMsRUFBS3pOLE1BQU0sR0FBSSxJQUM5RCt6QixFQUFJcy9CLE9BQU9naEIsRUFBYTVtRSxFQUFLQSxFQUFLMVMsT0FBUyxPQUU3QzY0RSxFQUFXcHpFLE9BR2J3d0MsRUFBTS8xQyxVQUFVODZFLFVBQVksU0FBb0J0b0UsR0FPOUMsTUFOb0IsaUJBQVRBLElBQXFCQSxFQUFPLENBQUNBLElBTWpDak4sS0FBS215RSxTQUFTUCxhQUFhM2tFLElBR3BDdWpDLEVBQU0vMUMsVUFBVSs2RSxVQUFZLFNBQW9CQyxHQUM5Q3oxRSxLQUFLbXlFLFNBQVM1NEMsT0FBT2s4QyxHQUNyQnJDLEVBQVdwekUsTUFBTSxJQUduQnd3QyxFQUFNLzFDLFVBQVVpNUUsWUFBYyxTQUFzQjFyRSxHQUNsRCxJQUFJMHRFLEVBQWExMUUsS0FBSzh4RSxZQUN0Qjl4RSxLQUFLOHhFLGFBQWMsRUFDbkI5cEUsSUFDQWhJLEtBQUs4eEUsWUFBYzRELEdBR3JCbDdFLE9BQU82NEIsaUJBQWtCbWQsRUFBTS8xQyxVQUFXeTRFLEdBbVQxQyxJQUFJeUMsRUFBV0MsR0FBbUIsU0FBVWx1RSxFQUFXbXVFLEdBQ3JELElBQUkxNEQsRUFBTSxHQTBCVixPQXRCQTI0RCxFQUFhRCxHQUFRanpFLFNBQVEsU0FBVXlYLEdBQ3JDLElBQUl4YixFQUFNd2IsRUFBSXhiLElBQ1Z1SCxFQUFNaVUsRUFBSWpVLElBRWQrVyxFQUFJdGUsR0FBTyxXQUNULElBQUk4cUIsRUFBUTNwQixLQUFLdXlDLE9BQU81b0IsTUFDcEJ5YyxFQUFVcG1DLEtBQUt1eUMsT0FBT25NLFFBQzFCLEdBQUkxK0IsRUFBVyxDQUNiLElBQUlyTSxFQUFTMDZFLEVBQXFCLzFFLEtBQUt1eUMsT0FBUSxXQUFZN3FDLEdBQzNELElBQUtyTSxFQUNILE9BRUZzdUIsRUFBUXR1QixFQUFPbytCLFFBQVE5UCxNQUN2QnljLEVBQVUvcUMsRUFBT28rQixRQUFRMk0sUUFFM0IsTUFBc0IsbUJBQVJoZ0MsRUFDVkEsRUFBSXpMLEtBQUtxRixLQUFNMnBCLEVBQU95YyxHQUN0QnpjLEVBQU12akIsSUFHWitXLEVBQUl0ZSxHQUFLbTNFLE1BQU8sS0FFWDc0RCxLQVNMODRELEVBQWVMLEdBQW1CLFNBQVVsdUUsRUFBVzA5QixHQUN6RCxJQUFJam9CLEVBQU0sR0EwQlYsT0F0QkEyNEQsRUFBYTF3QyxHQUFXeGlDLFNBQVEsU0FBVXlYLEdBQ3hDLElBQUl4YixFQUFNd2IsRUFBSXhiLElBQ1Z1SCxFQUFNaVUsRUFBSWpVLElBRWQrVyxFQUFJdGUsR0FBTyxXQUVULElBREEsSUFBSW9RLEVBQU8sR0FBSWtKLEVBQU1oVyxVQUFVNUgsT0FDdkI0ZCxLQUFRbEosRUFBTWtKLEdBQVFoVyxVQUFXZ1csR0FHekMsSUFBSWd1QixFQUFTbm1DLEtBQUt1eUMsT0FBT3BNLE9BQ3pCLEdBQUl6K0IsRUFBVyxDQUNiLElBQUlyTSxFQUFTMDZFLEVBQXFCLzFFLEtBQUt1eUMsT0FBUSxlQUFnQjdxQyxHQUMvRCxJQUFLck0sRUFDSCxPQUVGOHFDLEVBQVM5cUMsRUFBT28rQixRQUFRME0sT0FFMUIsTUFBc0IsbUJBQVIvL0IsRUFDVkEsRUFBSXNTLE1BQU0xWSxLQUFNLENBQUNtbUMsR0FBUTNqQyxPQUFPeU0sSUFDaENrM0IsRUFBT3p0QixNQUFNMVksS0FBS3V5QyxPQUFRLENBQUNuc0MsR0FBSzVELE9BQU95TSxRQUd4Q2tPLEtBU0wrNEQsRUFBYU4sR0FBbUIsU0FBVWx1RSxFQUFXMCtCLEdBQ3ZELElBQUlqcEIsRUFBTSxHQXVCVixPQW5CQTI0RCxFQUFhMXZDLEdBQVN4akMsU0FBUSxTQUFVeVgsR0FDdEMsSUFBSXhiLEVBQU13YixFQUFJeGIsSUFDVnVILEVBQU1pVSxFQUFJalUsSUFHZEEsRUFBTXNCLEVBQVl0QixFQUNsQitXLEVBQUl0ZSxHQUFPLFdBQ1QsSUFBSTZJLEdBQWNxdUUsRUFBcUIvMUUsS0FBS3V5QyxPQUFRLGFBQWM3cUMsR0FPbEUsT0FBTzFILEtBQUt1eUMsT0FBT25NLFFBQVFoZ0MsSUFHN0IrVyxFQUFJdGUsR0FBS20zRSxNQUFPLEtBRVg3NEQsS0FTTGc1RCxFQUFhUCxHQUFtQixTQUFVbHVFLEVBQVdxMUIsR0FDdkQsSUFBSTVmLEVBQU0sR0EwQlYsT0F0QkEyNEQsRUFBYS80QyxHQUFTbjZCLFNBQVEsU0FBVXlYLEdBQ3RDLElBQUl4YixFQUFNd2IsRUFBSXhiLElBQ1Z1SCxFQUFNaVUsRUFBSWpVLElBRWQrVyxFQUFJdGUsR0FBTyxXQUVULElBREEsSUFBSW9RLEVBQU8sR0FBSWtKLEVBQU1oVyxVQUFVNUgsT0FDdkI0ZCxLQUFRbEosRUFBTWtKLEdBQVFoVyxVQUFXZ1csR0FHekMsSUFBSTZ1QixFQUFXaG5DLEtBQUt1eUMsT0FBT3ZMLFNBQzNCLEdBQUl0L0IsRUFBVyxDQUNiLElBQUlyTSxFQUFTMDZFLEVBQXFCLzFFLEtBQUt1eUMsT0FBUSxhQUFjN3FDLEdBQzdELElBQUtyTSxFQUNILE9BRUYyckMsRUFBVzNyQyxFQUFPbytCLFFBQVF1TixTQUU1QixNQUFzQixtQkFBUjVnQyxFQUNWQSxFQUFJc1MsTUFBTTFZLEtBQU0sQ0FBQ2duQyxHQUFVeGtDLE9BQU95TSxJQUNsQyszQixFQUFTdHVCLE1BQU0xWSxLQUFLdXlDLE9BQVEsQ0FBQ25zQyxHQUFLNUQsT0FBT3lNLFFBRzFDa08sS0FzQlQsU0FBUzI0RCxFQUFjaHdFLEdBQ3JCLE9BYUYsU0FBcUJBLEdBQ25CLE9BQU8vQyxNQUFNQyxRQUFROEMsSUFBUWtsQixFQUFTbGxCLEdBZGpDc3dFLENBQVd0d0UsR0FHVC9DLE1BQU1DLFFBQVE4QyxHQUNqQkEsRUFBSUEsS0FBSSxTQUFVakgsR0FBTyxNQUFPLENBQUdBLElBQUtBLEVBQUt1SCxJQUFLdkgsTUFDbERyRSxPQUFPOEgsS0FBS3dELEdBQUtBLEtBQUksU0FBVWpILEdBQU8sTUFBTyxDQUFHQSxJQUFLQSxFQUFLdUgsSUFBS04sRUFBSWpILE9BSjlELEdBcUJYLFNBQVMrMkUsRUFBb0I1dEUsR0FDM0IsT0FBTyxTQUFVTixFQUFXNUIsR0FPMUIsTUFOeUIsaUJBQWQ0QixHQUNUNUIsRUFBTTRCLEVBQ05BLEVBQVksSUFDd0MsTUFBM0NBLEVBQVV5WCxPQUFPelgsRUFBVW5OLE9BQVMsS0FDN0NtTixHQUFhLEtBRVJNLEVBQUdOLEVBQVc1QixJQVd6QixTQUFTaXdFLEVBQXNCbmtDLEVBQU95a0MsRUFBUTN1RSxHQUs1QyxPQUpha3FDLEVBQU13Z0MscUJBQXFCMXFFLEdBZ0UxQyxTQUFTNHVFLEVBQWNDLEVBQVFuNUUsRUFBU281RSxHQUN0QyxJQUFJRixFQUFlRSxFQUNmRCxFQUFPRSxlQUNQRixFQUFPLzFELE1BR1gsSUFDRTgxRCxFQUFhMzdFLEtBQUs0N0UsRUFBUW41RSxHQUMxQixNQUFPN0IsR0FDUGc3RSxFQUFPbnZDLElBQUlocUMsSUFJZixTQUFTczVFLEVBQVlILEdBQ25CLElBQ0VBLEVBQU9JLFdBQ1AsTUFBT3A3RSxHQUNQZzdFLEVBQU9udkMsSUFBSSxrQkFJZixTQUFTd3ZDLElBQ1AsSUFBSUMsRUFBTyxJQUFJaHVELEtBQ2YsTUFBUSxNQUFTaXVELEVBQUlELEVBQUtFLFdBQVksR0FBTSxJQUFPRCxFQUFJRCxFQUFLRyxhQUFjLEdBQU0sSUFBT0YsRUFBSUQsRUFBS0ksYUFBYyxHQUFNLElBQU9ILEVBQUlELEVBQUtLLGtCQUFtQixHQU96SixTQUFTSixFQUFLSyxFQUFLQyxHQUNqQixPQUxlanJFLEVBS0QsSUFMTWtyRSxFQUtERCxFQUFZRCxFQUFJcHpFLFdBQVd4SixPQUp2QyxJQUFLd0ksTUFBTXMwRSxFQUFRLEdBQUl4b0UsS0FBSzFDLEdBSXFCZ3JFLEVBTDFELElBQWlCaHJFLEVBQUtrckUsRUFRdEIsSUFBSTNzRSxFQUFRLENBQ1Y4bEMsTUFBT0EsRUFDUGxkLFFBQVNBLEVBQ1R4YSxRQUFTLFFBQ1Q2OEQsU0FBVUEsRUFDVk0sYUFBY0EsRUFDZEMsV0FBWUEsRUFDWkMsV0FBWUEsRUFDWm1CLHdCQW5LNEIsU0FBVTV2RSxHQUFhLE1BQU8sQ0FDMURpdUUsU0FBVUEsRUFBUzcyRSxLQUFLLEtBQU00SSxHQUM5Qnd1RSxXQUFZQSxFQUFXcDNFLEtBQUssS0FBTTRJLEdBQ2xDdXVFLGFBQWNBLEVBQWFuM0UsS0FBSyxLQUFNNEksR0FDdEN5dUUsV0FBWUEsRUFBV3IzRSxLQUFLLEtBQU00SSxLQWdLbEM2dkUsYUFsR0YsU0FBdUJsOUQsUUFDUixJQUFSQSxJQUFpQkEsRUFBTSxJQUM1QixJQUFJbThELEVBQVluOEQsRUFBSW04RCxlQUE4QixJQUFkQSxJQUF1QkEsR0FBWSxHQUN2RSxJQUFJL3pFLEVBQVM0WCxFQUFJNVgsWUFBd0IsSUFBWEEsSUFBb0JBLEVBQVMsU0FBVXF3RSxFQUFVMEUsRUFBYUMsR0FBYyxPQUFPLElBQ2pILElBQUlDLEVBQWNyOUQsRUFBSXE5RCxpQkFBa0MsSUFBaEJBLElBQXlCQSxFQUFjLFNBQVUvdEQsR0FBUyxPQUFPQSxJQUN6RyxJQUFJZ3VELEVBQXNCdDlELEVBQUlzOUQseUJBQWtELElBQXhCQSxJQUFpQ0EsRUFBc0IsU0FBVUMsR0FBTyxPQUFPQSxJQUN2SSxJQUFJQyxFQUFleDlELEVBQUl3OUQsa0JBQW9DLElBQWpCQSxJQUEwQkEsRUFBZSxTQUFVajdDLEVBQVFqVCxHQUFTLE9BQU8sSUFDckgsSUFBSW11RCxFQUFvQno5RCxFQUFJeTlELHVCQUE4QyxJQUF0QkEsSUFBK0JBLEVBQW9CLFNBQVVDLEdBQU8sT0FBT0EsSUFDL0gsSUFBSUMsRUFBZTM5RCxFQUFJMjlELGtCQUFvQyxJQUFqQkEsSUFBMEJBLEdBQWUsR0FDbkYsSUFBSUMsRUFBYTU5RCxFQUFJNDlELGdCQUFnQyxJQUFmQSxJQUF3QkEsR0FBYSxHQUMzRSxJQUFJMUIsRUFBU2w4RCxFQUFJazhELE9BRWpCLFlBRnlDLElBQVhBLElBQW9CQSxFQUFTbjNFLFNBRXBELFNBQVV3eUMsR0FDZixJQUFJc21DLEVBQVloSSxFQUFTdCtCLEVBQU1qb0IsWUFFVCxJQUFYNHNELElBSVB5QixHQUNGcG1DLEVBQU1paEMsV0FBVSxTQUFVQyxFQUFVbnBELEdBQ2xDLElBQUl3dUQsRUFBWWpJLEVBQVN2bUQsR0FFekIsR0FBSWxuQixFQUFPcXdFLEVBQVVvRixFQUFXQyxHQUFZLENBQzFDLElBQUlDLEVBQWdCeEIsSUFDaEJ5QixFQUFvQlYsRUFBb0I3RSxHQUN4QzExRSxFQUFVLFlBQWUwMUUsRUFBYSxLQUFJc0YsRUFFOUM5QixFQUFhQyxFQUFRbjVFLEVBQVNvNUUsR0FDOUJELEVBQU9udkMsSUFBSSxnQkFBaUIsb0NBQXFDc3dDLEVBQVlRLElBQzdFM0IsRUFBT252QyxJQUFJLGNBQWUsb0NBQXFDaXhDLEdBQy9EOUIsRUFBT252QyxJQUFJLGdCQUFpQixvQ0FBcUNzd0MsRUFBWVMsSUFDN0V6QixFQUFXSCxHQUdiMkIsRUFBWUMsS0FJWkYsR0FDRnJtQyxFQUFNb2hDLGlCQUFnQixTQUFVcDJDLEVBQVFqVCxHQUN0QyxHQUFJa3VELEVBQWFqN0MsRUFBUWpULEdBQVEsQ0FDL0IsSUFBSXl1RCxFQUFnQnhCLElBQ2hCMEIsRUFBa0JSLEVBQWtCbDdDLEdBQ3BDeC9CLEVBQVUsVUFBYXcvQixFQUFXLEtBQUl3N0MsRUFFMUM5QixFQUFhQyxFQUFRbjVFLEVBQVNvNUUsR0FDOUJELEVBQU9udkMsSUFBSSxZQUFhLG9DQUFxQ2t4QyxHQUM3RDVCLEVBQVdILFdBcUROLFEsMkNDcHRDZixJQUFJNzJFLEVBQVUsRUFBUSxRQUVBLGlCQUFaQSxJQUFzQkEsRUFBVSxDQUFDLENBQUNyRSxFQUFPaEIsRUFBSXFGLEVBQVMsTUFPaEUsSUFBSUMsRUFBVSxDQUFDLEtBQU0sRUFFckIsZUFQSUMsRUFRSixnQkFBcUJyQyxHQUVSLEVBQVEsT0FBUixDQUFzRW1DLEVBQVNDLEdBRXpGRCxFQUFRRyxTQUFReEUsRUFBT0QsUUFBVXNFLEVBQVFHLFMsa0NDZjVDLElBQUkwNEUsRUFBZSxFQUFRLFFBWTNCbDlFLEVBQU9ELFFBQVUsU0FBcUJnQyxFQUFTaUssRUFBUXNrRSxFQUFNcnVFLEVBQVNpcEMsR0FDcEUsSUFBSTlwQyxFQUFRLElBQUlDLE1BQU1VLEdBQ3RCLE9BQU9tN0UsRUFBYTk3RSxFQUFPNEssRUFBUXNrRSxFQUFNcnVFLEVBQVNpcEMsSyxrQ0NkcERsckMsRUFBT0QsUUFBVSxTQUFrQm1ELEdBQ2pDLFNBQVVBLElBQVNBLEVBQU1pNkUsYyxzQkNIM0IscUJBUUUsV0FHQSxJQVVJQyxFQUFrQixzQkFTbEJDLEVBQWMseUJBZ0RkQyxFQUFZLENBQ2QsQ0FBQyxNQTlCaUIsS0ErQmxCLENBQUMsT0F0Q2tCLEdBdUNuQixDQUFDLFVBdENzQixHQXVDdkIsQ0FBQyxRQXJDbUIsR0FzQ3BCLENBQUMsYUFyQ3lCLElBc0MxQixDQUFDLE9BakNrQixLQWtDbkIsQ0FBQyxVQXRDcUIsSUF1Q3RCLENBQUMsZUF0QzJCLElBdUM1QixDQUFDLFFBckNtQixNQXlDbEJDLEVBQVUscUJBQ1ZDLEVBQVcsaUJBRVhDLEVBQVUsbUJBQ1ZDLEVBQVUsZ0JBRVZDLEVBQVcsaUJBQ1hDLEVBQVUsb0JBQ1ZDLEVBQVMsNkJBQ1RDLEVBQVMsZUFDVEMsRUFBWSxrQkFFWkMsRUFBWSxrQkFHWkMsRUFBWSxrQkFDWkMsRUFBUyxlQUNUQyxFQUFZLGtCQUNaQyxFQUFZLGtCQUVaQyxFQUFhLG1CQUdiQyxFQUFpQix1QkFDakJDLEVBQWMsb0JBQ2RDLEVBQWEsd0JBQ2JDLEVBQWEsd0JBQ2JDLEVBQVUscUJBQ1ZDLEVBQVcsc0JBQ1hDLEVBQVcsc0JBQ1hDLEVBQVcsc0JBRVhDLEVBQVksdUJBQ1pDLEVBQVksdUJBR1pDLEVBQXVCLGlCQUN2QkMsRUFBc0IscUJBQ3RCQyxFQUF3QixnQ0FHeEJDLEVBQWdCLDRCQUNoQkMsRUFBa0IsV0FDbEJDLEVBQW1Cam1FLE9BQU8rbEUsRUFBY3A0RSxRQUN4Q3U0RSxFQUFxQmxtRSxPQUFPZ21FLEVBQWdCcjRFLFFBRzVDdzRFLEVBQVcsbUJBQ1hDLEVBQWEsa0JBQ2JDLEVBQWdCLG1CQUdoQkMsRUFBZSxtREFDZkMsRUFBZ0IsUUFDaEJDLEVBQWEsbUdBTWJDLEVBQWUsc0JBQ2ZDLEVBQWtCMW1FLE9BQU95bUUsRUFBYTk0RSxRQUd0Q2c1RSxFQUFTLGFBQ1RDLEVBQWMsT0FDZEMsRUFBWSxPQUdaQyxFQUFnQiw0Q0FDaEJDLEVBQWdCLG9DQUNoQkMsRUFBaUIsUUFHakJDLEdBQWMsNENBR2RDLEdBQWUsV0FNZkMsR0FBZSxrQ0FHZkMsR0FBVSxPQUdWQyxHQUFhLHFCQUdiQyxHQUFhLGFBR2JDLEdBQWUsOEJBR2ZDLEdBQVksY0FHWkMsR0FBVyxtQkFHWEMsR0FBVSw4Q0FHVkMsR0FBWSxPQUdaQyxHQUFvQix5QkFPcEJDLEdBQWVDLGdEQVNmQyxHQUFlQyw4T0FJZkMsR0FBVyxvQkFDWEMsR0FBVSxJQUFNSCxHQUFlLElBQy9CSSxHQUFVLElBQU1OLEdBQWUsSUFDL0JPLEdBQVcsT0FDWEMsR0FBWSxvQkFDWkMsR0FBVSw4QkFDVkMsR0FBUyxvQkFBdUJSLEdBQWVLLEdBQXRDLHFFQUNUSSxHQUFTLDJCQUVUQyxHQUFjLHFCQUNkQyxHQUFhLGtDQUNiQyxHQUFhLHFDQUNiQyxHQUFVLDhCQUlWQyxHQUFjLE1BQVFQLEdBQVUsSUFBTUMsR0FBUyxJQUMvQ08sR0FBYyxNQUFRRixHQUFVLElBQU1MLEdBQVMsSUFHL0NRLEdBWmEsTUFBUVosR0FBVSxJQUFNSyxHQUFTLElBWXRCLElBS3hCUSxHQUpXLG9CQUlRRCxJQUhQLGdCQUF3QixDQUFDTixHQUFhQyxHQUFZQyxJQUFZdnVFLEtBQUssS0FBbkUscUJBQTJGMnVFLEdBQVcsTUFJbEhFLEdBQVUsTUFBUSxDQUFDWixHQUFXSyxHQUFZQyxJQUFZdnVFLEtBQUssS0FBTyxJQUFNNHVFLEdBQ3hFRSxHQUFXLE1BQVEsQ0FBQ1QsR0FBY04sR0FBVSxJQUFLQSxHQUFTTyxHQUFZQyxHQUFZVixJQUFVN3RFLEtBQUssS0FBTyxJQUd4Ryt1RSxHQUFTbnBFLE9BL0JBLE9BK0JlLEtBTXhCb3BFLEdBQWNwcEUsT0FBT21vRSxHQUFTLEtBRzlCa0IsR0FBWXJwRSxPQUFPd29FLEdBQVMsTUFBUUEsR0FBUyxLQUFPVSxHQUFXRixHQUFPLEtBR3RFTSxHQUFnQnRwRSxPQUFPLENBQ3pCNG9FLEdBQVUsSUFBTU4sR0FBaEJNLG9DQUEwRCxDQUFDVixHQUFTVSxHQUFTLEtBQUt4dUUsS0FBSyxLQUFPLElBQzlGMHVFLHVDQUE4QyxDQUFDWixHQUFTVSxHQUFVQyxHQUFhLEtBQUt6dUUsS0FBSyxLQUFPLElBQ2hHd3VFLEdBQVUsSUFBTUMsR0FBaEJELGlDQUNBQSxvQ0F0QmUsbURBREEsbURBMEJmUixHQUNBYSxJQUNBN3VFLEtBQUssS0FBTSxLQUdUbXZFLEdBQWV2cEUsT0FBTywwQkFBK0I2bkUsR0FBL0IsbUJBR3RCMkIsR0FBbUIscUVBR25CQyxHQUFlLENBQ2pCLFFBQVMsU0FBVSxXQUFZLE9BQVEsUUFBUyxlQUFnQixlQUNoRSxXQUFZLFlBQWEsYUFBYyxhQUFjLE1BQU8sT0FBUSxTQUNwRSxVQUFXLFNBQVUsTUFBTyxTQUFVLFNBQVUsWUFBYSxhQUM3RCxvQkFBcUIsY0FBZSxjQUFlLFVBQ25ELElBQUssZUFBZ0IsV0FBWSxXQUFZLGNBSTNDQyxJQUFtQixFQUduQkMsR0FBaUIsR0FDckJBLEdBQWV2RSxHQUFjdUUsR0FBZXRFLEdBQzVDc0UsR0FBZXJFLEdBQVdxRSxHQUFlcEUsR0FDekNvRSxHQUFlbkUsR0FBWW1FLEdBQWVsRSxHQUMxQ2tFLEdBL0tzQiw4QkErS1lBLEdBQWVqRSxHQUNqRGlFLEdBQWVoRSxJQUFhLEVBQzVCZ0UsR0FBZXhGLEdBQVd3RixHQUFldkYsR0FDekN1RixHQUFlekUsR0FBa0J5RSxHQUFldEYsR0FDaERzRixHQUFleEUsR0FBZXdFLEdBQWVyRixHQUM3Q3FGLEdBQWVwRixHQUFZb0YsR0FBZW5GLEdBQzFDbUYsR0FBZWpGLEdBQVVpRixHQUFlaEYsR0FDeENnRixHQUFlL0UsR0FBYStFLEdBQWU5RSxHQUMzQzhFLEdBQWU3RSxHQUFVNkUsR0FBZTVFLEdBQ3hDNEUsR0FBZTFFLElBQWMsRUFHN0IsSUFBSTJFLEdBQWdCLEdBQ3BCQSxHQUFjekYsR0FBV3lGLEdBQWN4RixHQUN2Q3dGLEdBQWMxRSxHQUFrQjBFLEdBQWN6RSxHQUM5Q3lFLEdBQWN2RixHQUFXdUYsR0FBY3RGLEdBQ3ZDc0YsR0FBY3hFLEdBQWN3RSxHQUFjdkUsR0FDMUN1RSxHQUFjdEUsR0FBV3NFLEdBQWNyRSxHQUN2Q3FFLEdBQWNwRSxHQUFZb0UsR0FBY2xGLEdBQ3hDa0YsR0FBY2pGLEdBQWFpRixHQUFjaEYsR0FDekNnRixHQUFjL0UsR0FBYStFLEdBQWM5RSxHQUN6QzhFLEdBQWM3RSxHQUFhNkUsR0FBYzVFLEdBQ3pDNEUsR0FBY25FLEdBQVltRSxHQXJNSiw4QkFzTXRCQSxHQUFjbEUsR0FBYWtFLEdBQWNqRSxJQUFhLEVBQ3REaUUsR0FBY3JGLEdBQVlxRixHQUFjcEYsR0FDeENvRixHQUFjM0UsSUFBYyxFQUc1QixJQTRFSTRFLEdBQWdCLENBQ2xCLEtBQU0sS0FDTixJQUFLLElBQ0wsS0FBTSxJQUNOLEtBQU0sSUFDTixTQUFVLFFBQ1YsU0FBVSxTQUlSQyxHQUFpQm5yRSxXQUNqQm9yRSxHQUFlemlELFNBR2YwaUQsR0FBOEIsaUJBQVZyMkUsR0FBc0JBLEdBQVVBLEVBQU81TixTQUFXQSxRQUFVNE4sRUFHaEZzMkUsR0FBMEIsaUJBQVIxbUQsTUFBb0JBLE1BQVFBLEtBQUt4OUIsU0FBV0EsUUFBVXc5QixLQUd4RW5CLEdBQU80bkQsSUFBY0MsSUFBWXgrQixTQUFTLGNBQVRBLEdBR2pDeStCLEdBQTRDdmpGLElBQVlBLEVBQVEraUUsVUFBWS9pRSxFQUc1RXdqRixHQUFhRCxJQUFnQyxpQkFBVnRqRixHQUFzQkEsSUFBV0EsRUFBTzhpRSxVQUFZOWlFLEVBR3ZGd2pGLEdBQWdCRCxJQUFjQSxHQUFXeGpGLFVBQVl1akYsR0FHckRHLEdBQWNELElBQWlCSixHQUFXcDJFLFFBRzFDMDJFLEdBQVksV0FDZCxJQUVFLElBQUlDLEVBQVFKLElBQWNBLEdBQVd2bUMsU0FBV3VtQyxHQUFXdm1DLFFBQVEsUUFBUTJtQyxNQUUzRSxPQUFJQSxHQUtHRixJQUFlQSxHQUFZcmxFLFNBQVdxbEUsR0FBWXJsRSxRQUFRLFFBQ2pFLE1BQU9sZSxLQVhJLEdBZVgwakYsR0FBb0JGLElBQVlBLEdBQVN6USxjQUN6QzRRLEdBQWFILElBQVlBLEdBQVNJLE9BQ2xDQyxHQUFZTCxJQUFZQSxHQUFTTSxNQUNqQ0MsR0FBZVAsSUFBWUEsR0FBU1EsU0FDcENDLEdBQVlULElBQVlBLEdBQVNVLE1BQ2pDQyxHQUFtQlgsSUFBWUEsR0FBU1ksYUFjNUMsU0FBU2puRSxHQUFNdkgsRUFBTTR0QyxFQUFTOXZDLEdBQzVCLE9BQVFBLEVBQUsxVSxRQUNYLEtBQUssRUFBRyxPQUFPNFcsRUFBS3hXLEtBQUtva0QsR0FDekIsS0FBSyxFQUFHLE9BQU81dEMsRUFBS3hXLEtBQUtva0QsRUFBUzl2QyxFQUFLLElBQ3ZDLEtBQUssRUFBRyxPQUFPa0MsRUFBS3hXLEtBQUtva0QsRUFBUzl2QyxFQUFLLEdBQUlBLEVBQUssSUFDaEQsS0FBSyxFQUFHLE9BQU9rQyxFQUFLeFcsS0FBS29rRCxFQUFTOXZDLEVBQUssR0FBSUEsRUFBSyxHQUFJQSxFQUFLLElBRTNELE9BQU9rQyxFQUFLdUgsTUFBTXFtQyxFQUFTOXZDLEdBYTdCLFNBQVMyd0UsR0FBZ0JwbkUsRUFBT3FuRSxFQUFRQyxFQUFVQyxHQUloRCxJQUhBLElBQUlyMUUsR0FBUyxFQUNUblEsRUFBa0IsTUFBVGllLEVBQWdCLEVBQUlBLEVBQU1qZSxTQUU5Qm1RLEVBQVFuUSxHQUFRLENBQ3ZCLElBQUlnRSxFQUFRaWEsRUFBTTlOLEdBQ2xCbTFFLEVBQU9FLEVBQWF4aEYsRUFBT3VoRixFQUFTdmhGLEdBQVFpYSxHQUU5QyxPQUFPdW5FLEVBWVQsU0FBU0MsR0FBVXhuRSxFQUFPc25FLEdBSXhCLElBSEEsSUFBSXAxRSxHQUFTLEVBQ1RuUSxFQUFrQixNQUFUaWUsRUFBZ0IsRUFBSUEsRUFBTWplLFNBRTlCbVEsRUFBUW5RLElBQzhCLElBQXpDdWxGLEVBQVN0bkUsRUFBTTlOLEdBQVFBLEVBQU84TixLQUlwQyxPQUFPQSxFQVlULFNBQVN5bkUsR0FBZXpuRSxFQUFPc25FLEdBRzdCLElBRkEsSUFBSXZsRixFQUFrQixNQUFUaWUsRUFBZ0IsRUFBSUEsRUFBTWplLE9BRWhDQSxNQUMwQyxJQUEzQ3VsRixFQUFTdG5FLEVBQU1qZSxHQUFTQSxFQUFRaWUsS0FJdEMsT0FBT0EsRUFhVCxTQUFTMG5FLEdBQVcxbkUsRUFBTzJuRSxHQUl6QixJQUhBLElBQUl6MUUsR0FBUyxFQUNUblEsRUFBa0IsTUFBVGllLEVBQWdCLEVBQUlBLEVBQU1qZSxTQUU5Qm1RLEVBQVFuUSxHQUNmLElBQUs0bEYsRUFBVTNuRSxFQUFNOU4sR0FBUUEsRUFBTzhOLEdBQ2xDLE9BQU8sRUFHWCxPQUFPLEVBWVQsU0FBUzRuRSxHQUFZNW5FLEVBQU8ybkUsR0FNMUIsSUFMQSxJQUFJejFFLEdBQVMsRUFDVG5RLEVBQWtCLE1BQVRpZSxFQUFnQixFQUFJQSxFQUFNamUsT0FDbkM4bEYsRUFBVyxFQUNYbnZFLEVBQVMsS0FFSnhHLEVBQVFuUSxHQUFRLENBQ3ZCLElBQUlnRSxFQUFRaWEsRUFBTTlOLEdBQ2R5MUUsRUFBVTVoRixFQUFPbU0sRUFBTzhOLEtBQzFCdEgsRUFBT212RSxLQUFjOWhGLEdBR3pCLE9BQU8yUyxFQVlULFNBQVNvdkUsR0FBYzluRSxFQUFPamEsR0FFNUIsU0FEc0IsTUFBVGlhLEVBQWdCLEVBQUlBLEVBQU1qZSxTQUNwQmdtRixHQUFZL25FLEVBQU9qYSxFQUFPLElBQU0sRUFZckQsU0FBU2lpRixHQUFrQmhvRSxFQUFPamEsRUFBT2tpRixHQUl2QyxJQUhBLElBQUkvMUUsR0FBUyxFQUNUblEsRUFBa0IsTUFBVGllLEVBQWdCLEVBQUlBLEVBQU1qZSxTQUU5Qm1RLEVBQVFuUSxHQUNmLEdBQUlrbUYsRUFBV2xpRixFQUFPaWEsRUFBTTlOLElBQzFCLE9BQU8sRUFHWCxPQUFPLEVBWVQsU0FBU2cyRSxHQUFTbG9FLEVBQU9zbkUsR0FLdkIsSUFKQSxJQUFJcDFFLEdBQVMsRUFDVG5RLEVBQWtCLE1BQVRpZSxFQUFnQixFQUFJQSxFQUFNamUsT0FDbkMyVyxFQUFTbk8sTUFBTXhJLEtBRVZtUSxFQUFRblEsR0FDZjJXLEVBQU94RyxHQUFTbzFFLEVBQVN0bkUsRUFBTTlOLEdBQVFBLEVBQU84TixHQUVoRCxPQUFPdEgsRUFXVCxTQUFTeXZFLEdBQVVub0UsRUFBT3ZFLEdBS3hCLElBSkEsSUFBSXZKLEdBQVMsRUFDVG5RLEVBQVMwWixFQUFPMVosT0FDaEI4VixFQUFTbUksRUFBTWplLFNBRVZtUSxFQUFRblEsR0FDZmllLEVBQU1uSSxFQUFTM0YsR0FBU3VKLEVBQU92SixHQUVqQyxPQUFPOE4sRUFlVCxTQUFTb29FLEdBQVlwb0UsRUFBT3NuRSxFQUFVQyxFQUFhYyxHQUNqRCxJQUFJbjJFLEdBQVMsRUFDVG5RLEVBQWtCLE1BQVRpZSxFQUFnQixFQUFJQSxFQUFNamUsT0FLdkMsSUFISXNtRixHQUFhdG1GLElBQ2Z3bEYsRUFBY3ZuRSxJQUFROU4sTUFFZkEsRUFBUW5RLEdBQ2Z3bEYsRUFBY0QsRUFBU0MsRUFBYXZuRSxFQUFNOU4sR0FBUUEsRUFBTzhOLEdBRTNELE9BQU91bkUsRUFlVCxTQUFTZSxHQUFpQnRvRSxFQUFPc25FLEVBQVVDLEVBQWFjLEdBQ3RELElBQUl0bUYsRUFBa0IsTUFBVGllLEVBQWdCLEVBQUlBLEVBQU1qZSxPQUl2QyxJQUhJc21GLEdBQWF0bUYsSUFDZndsRixFQUFjdm5FLElBQVFqZSxJQUVqQkEsS0FDTHdsRixFQUFjRCxFQUFTQyxFQUFhdm5FLEVBQU1qZSxHQUFTQSxFQUFRaWUsR0FFN0QsT0FBT3VuRSxFQWFULFNBQVNnQixHQUFVdm9FLEVBQU8ybkUsR0FJeEIsSUFIQSxJQUFJejFFLEdBQVMsRUFDVG5RLEVBQWtCLE1BQVRpZSxFQUFnQixFQUFJQSxFQUFNamUsU0FFOUJtUSxFQUFRblEsR0FDZixHQUFJNGxGLEVBQVUzbkUsRUFBTTlOLEdBQVFBLEVBQU84TixHQUNqQyxPQUFPLEVBR1gsT0FBTyxFQVVULElBQUl3b0UsR0FBWUMsR0FBYSxVQW1DN0IsU0FBU0MsR0FBWUMsRUFBWWhCLEVBQVdpQixHQUMxQyxJQUFJbHdFLEVBT0osT0FOQWt3RSxFQUFTRCxHQUFZLFNBQVM1aUYsRUFBT00sRUFBS3NpRixHQUN4QyxHQUFJaEIsRUFBVTVoRixFQUFPTSxFQUFLc2lGLEdBRXhCLE9BREFqd0UsRUFBU3JTLEdBQ0YsS0FHSnFTLEVBY1QsU0FBU213RSxHQUFjN29FLEVBQU8ybkUsRUFBV21CLEVBQVdDLEdBSWxELElBSEEsSUFBSWhuRixFQUFTaWUsRUFBTWplLE9BQ2ZtUSxFQUFRNDJFLEdBQWFDLEVBQVksR0FBSyxHQUVsQ0EsRUFBWTcyRSxNQUFZQSxFQUFRblEsR0FDdEMsR0FBSTRsRixFQUFVM25FLEVBQU05TixHQUFRQSxFQUFPOE4sR0FDakMsT0FBTzlOLEVBR1gsT0FBUSxFQVlWLFNBQVM2MUUsR0FBWS9uRSxFQUFPamEsRUFBTytpRixHQUNqQyxPQUFPL2lGLEdBQVVBLEVBb2NuQixTQUF1QmlhLEVBQU9qYSxFQUFPK2lGLEdBQ25DLElBQUk1MkUsRUFBUTQyRSxFQUFZLEVBQ3BCL21GLEVBQVNpZSxFQUFNamUsT0FFbkIsT0FBU21RLEVBQVFuUSxHQUNmLEdBQUlpZSxFQUFNOU4sS0FBV25NLEVBQ25CLE9BQU9tTSxFQUdYLE9BQVEsRUE1Y0o4MkUsQ0FBY2hwRSxFQUFPamEsRUFBTytpRixHQUM1QkQsR0FBYzdvRSxFQUFPaXBFLEdBQVdILEdBYXRDLFNBQVNJLEdBQWdCbHBFLEVBQU9qYSxFQUFPK2lGLEVBQVdiLEdBSWhELElBSEEsSUFBSS8xRSxFQUFRNDJFLEVBQVksRUFDcEIvbUYsRUFBU2llLEVBQU1qZSxTQUVWbVEsRUFBUW5RLEdBQ2YsR0FBSWttRixFQUFXam9FLEVBQU05TixHQUFRbk0sR0FDM0IsT0FBT21NLEVBR1gsT0FBUSxFQVVWLFNBQVMrMkUsR0FBVWxqRixHQUNqQixPQUFPQSxHQUFVQSxFQVluQixTQUFTb2pGLEdBQVNucEUsRUFBT3NuRSxHQUN2QixJQUFJdmxGLEVBQWtCLE1BQVRpZSxFQUFnQixFQUFJQSxFQUFNamUsT0FDdkMsT0FBT0EsRUFBVXFuRixHQUFRcHBFLEVBQU9zbkUsR0FBWXZsRixFQTd4QnBDLElBdXlCVixTQUFTMG1GLEdBQWFwaUYsR0FDcEIsT0FBTyxTQUFTRyxHQUNkLE9BQWlCLE1BQVZBLE9BcDJCUHpCLEVBbzJCb0N5QixFQUFPSCxJQVcvQyxTQUFTZ2pGLEdBQWU3aUYsR0FDdEIsT0FBTyxTQUFTSCxHQUNkLE9BQWlCLE1BQVZHLE9BajNCUHpCLEVBaTNCb0N5QixFQUFPSCxJQWlCL0MsU0FBU2lqRixHQUFXWCxFQUFZckIsRUFBVUMsRUFBYWMsRUFBV08sR0FNaEUsT0FMQUEsRUFBU0QsR0FBWSxTQUFTNWlGLEVBQU9tTSxFQUFPeTJFLEdBQzFDcEIsRUFBY2MsR0FDVEEsR0FBWSxFQUFPdGlGLEdBQ3BCdWhGLEVBQVNDLEVBQWF4aEYsRUFBT21NLEVBQU95MkUsTUFFbkNwQixFQWdDVCxTQUFTNkIsR0FBUXBwRSxFQUFPc25FLEdBS3RCLElBSkEsSUFBSTV1RSxFQUNBeEcsR0FBUyxFQUNUblEsRUFBU2llLEVBQU1qZSxTQUVWbVEsRUFBUW5RLEdBQVEsQ0FDdkIsSUFBSXdoQixFQUFVK2pFLEVBQVN0bkUsRUFBTTlOLFNBOTZCN0JuTixJQSs2Qkl3ZSxJQUNGN0ssT0FoN0JGM1QsSUFnN0JXMlQsRUFBdUI2SyxFQUFXN0ssRUFBUzZLLEdBR3hELE9BQU83SyxFQVlULFNBQVM2d0UsR0FBVWhqRixFQUFHK2dGLEdBSXBCLElBSEEsSUFBSXAxRSxHQUFTLEVBQ1R3RyxFQUFTbk8sTUFBTWhFLEtBRVYyTCxFQUFRM0wsR0FDZm1TLEVBQU94RyxHQUFTbzFFLEVBQVNwMUUsR0FFM0IsT0FBT3dHLEVBeUJULFNBQVM4d0UsR0FBVTd3RSxHQUNqQixPQUFPLFNBQVM1UyxHQUNkLE9BQU80UyxFQUFLNVMsSUFjaEIsU0FBUzBqRixHQUFXampGLEVBQVE2QyxHQUMxQixPQUFPNitFLEdBQVM3K0UsR0FBTyxTQUFTaEQsR0FDOUIsT0FBT0csRUFBT0gsTUFZbEIsU0FBU3FqRixHQUFTdm5FLEVBQU85YixHQUN2QixPQUFPOGIsRUFBTTRvQyxJQUFJMWtELEdBWW5CLFNBQVNzakYsR0FBZ0JDLEVBQVlDLEdBSW5DLElBSEEsSUFBSTMzRSxHQUFTLEVBQ1RuUSxFQUFTNm5GLEVBQVc3bkYsU0FFZm1RLEVBQVFuUSxHQUFVZ21GLEdBQVk4QixFQUFZRCxFQUFXMTNFLEdBQVEsSUFBTSxJQUM1RSxPQUFPQSxFQVlULFNBQVM0M0UsR0FBY0YsRUFBWUMsR0FHakMsSUFGQSxJQUFJMzNFLEVBQVEwM0UsRUFBVzduRixPQUVoQm1RLEtBQVc2MUUsR0FBWThCLEVBQVlELEVBQVcxM0UsR0FBUSxJQUFNLElBQ25FLE9BQU9BLEVBV1QsU0FBUzYzRSxHQUFhL3BFLEVBQU9xMEQsR0FJM0IsSUFIQSxJQUFJdHlFLEVBQVNpZSxFQUFNamUsT0FDZjJXLEVBQVMsRUFFTjNXLEtBQ0RpZSxFQUFNamUsS0FBWXN5RSxLQUNsQjM3RCxFQUdOLE9BQU9BLEVBV1QsSUFBSXN4RSxHQUFlWCxHQXB3QkcsQ0FFcEIsSUFBUSxJQUFNLElBQVEsSUFBSyxJQUFRLElBQUssSUFBUSxJQUFLLElBQVEsSUFBSyxJQUFRLElBQzFFLElBQVEsSUFBTSxJQUFRLElBQUssSUFBUSxJQUFLLElBQVEsSUFBSyxJQUFRLElBQUssSUFBUSxJQUMxRSxJQUFRLElBQU0sSUFBUSxJQUN0QixJQUFRLElBQU0sSUFBUSxJQUN0QixJQUFRLElBQU0sSUFBUSxJQUFLLElBQVEsSUFBSyxJQUFRLElBQ2hELElBQVEsSUFBTSxJQUFRLElBQUssSUFBUSxJQUFLLElBQVEsSUFDaEQsSUFBUSxJQUFNLElBQVEsSUFBSyxJQUFRLElBQUssSUFBUSxJQUNoRCxJQUFRLElBQU0sSUFBUSxJQUFLLElBQVEsSUFBSyxJQUFRLElBQ2hELElBQVEsSUFBTSxJQUFRLElBQ3RCLElBQVEsSUFBTSxJQUFRLElBQUssSUFBUSxJQUFLLElBQVEsSUFBSyxJQUFRLElBQUssSUFBUSxJQUMxRSxJQUFRLElBQU0sSUFBUSxJQUFLLElBQVEsSUFBSyxJQUFRLElBQUssSUFBUSxJQUFLLElBQVEsSUFDMUUsSUFBUSxJQUFNLElBQVEsSUFBSyxJQUFRLElBQUssSUFBUSxJQUNoRCxJQUFRLElBQU0sSUFBUSxJQUFLLElBQVEsSUFBSyxJQUFRLElBQ2hELElBQVEsSUFBTSxJQUFRLElBQUssSUFBUSxJQUNuQyxJQUFRLEtBQU0sSUFBUSxLQUN0QixJQUFRLEtBQU0sSUFBUSxLQUN0QixJQUFRLEtBRVIsSUFBVSxJQUFNLElBQVUsSUFBSyxJQUFVLElBQ3pDLElBQVUsSUFBTSxJQUFVLElBQUssSUFBVSxJQUN6QyxJQUFVLElBQU0sSUFBVSxJQUFLLElBQVUsSUFBSyxJQUFVLElBQ3hELElBQVUsSUFBTSxJQUFVLElBQUssSUFBVSxJQUFLLElBQVUsSUFDeEQsSUFBVSxJQUFNLElBQVUsSUFBSyxJQUFVLElBQUssSUFBVSxJQUN4RCxJQUFVLElBQU0sSUFBVSxJQUFLLElBQVUsSUFBSyxJQUFVLElBQUssSUFBVSxJQUN2RSxJQUFVLElBQU0sSUFBVSxJQUFLLElBQVUsSUFBSyxJQUFVLElBQUssSUFBVSxJQUN2RSxJQUFVLElBQU0sSUFBVSxJQUFLLElBQVUsSUFBSyxJQUFVLElBQ3hELElBQVUsSUFBTSxJQUFVLElBQUssSUFBVSxJQUFLLElBQVUsSUFDeEQsSUFBVSxJQUFNLElBQVUsSUFBSyxJQUFVLElBQUssSUFBVSxJQUN4RCxJQUFVLElBQU0sSUFBVSxJQUFLLElBQVUsSUFBSyxJ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QUFVcWtDLEVBQU1wL0MsVUFBV2cvQixHQUd4Q3FmLEVBQU1oL0IsT0FBT3RFLEVBQVVpa0IsR0FFaEJqa0IsRUFJVCxJQUFJOHdCLEVBQVFnK0UsRUF0QkcsRUFBUSxTQXlCdkJoK0UsRUFBTXVULE1BQVFBLEVBR2R2VCxFQUFNMW5DLE9BQVMsU0FBZ0JrN0MsR0FDN0IsT0FBT3dxRSxFQUFlMXFFLEVBQVl0VCxFQUFNakQsU0FBVXlXLEtBSXBEeFQsRUFBTSt5RSxPQUFTLEVBQVEsUUFDdkIveUUsRUFBTTJCLFlBQWMsRUFBUSxRQUM1QjNCLEVBQU04dEUsU0FBVyxFQUFRLFFBR3pCOXRFLEVBQU0zb0MsSUFBTSxTQUFhbkMsR0FDdkIsT0FBT0csUUFBUWdDLElBQUluQyxJQUVyQjhxQyxFQUFNc2pFLE9BQVMsRUFBUSxRQUV2QnZ1RyxFQUFPRCxRQUFVa3JDLEVBR2pCanJDLEVBQU9ELFFBQVE4ZSxRQUFVb3NCIiwiZmlsZSI6Ii9qcy9tYWluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gaW5zdGFsbCBhIEpTT05QIGNhbGxiYWNrIGZvciBjaHVuayBsb2FkaW5nXG4gXHRmdW5jdGlvbiB3ZWJwYWNrSnNvbnBDYWxsYmFjayhkYXRhKSB7XG4gXHRcdHZhciBjaHVua0lkcyA9IGRhdGFbMF07XG4gXHRcdHZhciBtb3JlTW9kdWxlcyA9IGRhdGFbMV07XG5cblxuIFx0XHQvLyBhZGQgXCJtb3JlTW9kdWxlc1wiIHRvIHRoZSBtb2R1bGVzIG9iamVjdCxcbiBcdFx0Ly8gdGhlbiBmbGFnIGFsbCBcImNodW5rSWRzXCIgYXMgbG9hZGVkIGFuZCBmaXJlIGNhbGxiYWNrXG4gXHRcdHZhciBtb2R1bGVJZCwgY2h1bmtJZCwgaSA9IDAsIHJlc29sdmVzID0gW107XG4gXHRcdGZvcig7aSA8IGNodW5rSWRzLmxlbmd0aDsgaSsrKSB7XG4gXHRcdFx0Y2h1bmtJZCA9IGNodW5rSWRzW2ldO1xuIFx0XHRcdGlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpbnN0YWxsZWRDaHVua3MsIGNodW5rSWQpICYmIGluc3RhbGxlZENodW5rc1tjaHVua0lkXSkge1xuIFx0XHRcdFx0cmVzb2x2ZXMucHVzaChpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF1bMF0pO1xuIFx0XHRcdH1cbiBcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSAwO1xuIFx0XHR9XG4gXHRcdGZvcihtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuIFx0XHRcdGlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb3JlTW9kdWxlcywgbW9kdWxlSWQpKSB7XG4gXHRcdFx0XHRtb2R1bGVzW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcdFx0aWYocGFyZW50SnNvbnBGdW5jdGlvbikgcGFyZW50SnNvbnBGdW5jdGlvbihkYXRhKTtcblxuIFx0XHR3aGlsZShyZXNvbHZlcy5sZW5ndGgpIHtcbiBcdFx0XHRyZXNvbHZlcy5zaGlmdCgpKCk7XG4gXHRcdH1cblxuIFx0fTtcblxuXG4gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBvYmplY3QgdG8gc3RvcmUgbG9hZGVkIGFuZCBsb2FkaW5nIGNodW5rc1xuIFx0Ly8gdW5kZWZpbmVkID0gY2h1bmsgbm90IGxvYWRlZCwgbnVsbCA9IGNodW5rIHByZWxvYWRlZC9wcmVmZXRjaGVkXG4gXHQvLyBQcm9taXNlID0gY2h1bmsgbG9hZGluZywgMCA9IGNodW5rIGxvYWRlZFxuIFx0dmFyIGluc3RhbGxlZENodW5rcyA9IHtcbiBcdFx0MTA6IDBcbiBcdH07XG5cblxuXG4gXHQvLyBzY3JpcHQgcGF0aCBmdW5jdGlvblxuIFx0ZnVuY3Rpb24ganNvbnBTY3JpcHRTcmMoY2h1bmtJZCkge1xuIFx0XHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgXCJcIiArICh7XCIwXCI6XCJ2ZW5kb3JzfmNodW5rcy9hZG1pbi1hY2NvdW50fmNodW5rcy9hcHAtYXBwZWFyYW5jZX5jaHVua3MvYXBwLWJpbGxpbmdzfmNodW5rcy9hcHAtZW1haWx+Y2h1bmtzL2FwcC1pfjgzOTRjZjg1XCIsXCIxXCI6XCJjaHVua3MvYWRtaW4tYWNjb3VudH5jaHVua3MvYXBwLXNldHVwfmNodW5rcy9iaWxsaW5ncy1kZXRhaWx+Y2h1bmtzL2NyZWF0ZS1uZXctcGFzc3dvcmR+Y2h1bmtzL2RhdGFifmNjNmU3NDhlXCIsXCIyXCI6XCJjaHVua3MvYXBwLWFwcGVhcmFuY2V+Y2h1bmtzL2FwcC1iaWxsaW5nc35jaHVua3MvYXBwLWVtYWlsfmNodW5rcy9hcHAtaW5kZXh+Y2h1bmtzL2FwcC1vdGhlcnN+Y2h1bmtzfjhjYzdkOTZmXCIsXCIzXCI6XCJjaHVua3MvZGFzaGJvYXJkfmNodW5rcy9pbnZvaWNlc35jaHVua3MvcGFnZXN+Y2h1bmtzL3BsYW5zfmNodW5rcy91c2VyLWludm9pY2VzXCIsXCI0XCI6XCJjaHVua3MvZmlsZXN+Y2h1bmtzL3BsYXRmb3JtfmNodW5rcy9zaGFyZWR+Y2h1bmtzL3NoYXJlZC1maWxlc35jaHVua3Mvc2hhcmVkL2ZpbGUtYnJvd3NlclwiLFwiNVwiOlwiY2h1bmtzL2ZpbGVzfmNodW5rcy9zaGFyZWQtZmlsZXN+Y2h1bmtzL3NoYXJlZC9maWxlLWJyb3dzZXJ+Y2h1bmtzL3NoYXJlZC9zaW5nbGUtZmlsZVwiLFwiNlwiOlwiY2h1bmtzL2ZpbGVzfmNodW5rcy9zaGFyZWQtZmlsZXN+Y2h1bmtzL3NoYXJlZC9maWxlLWJyb3dzZXJcIixcIjdcIjpcImNodW5rcy9wbGF0Zm9ybX5jaHVua3Mvc2hhcmVkXCIsXCI4XCI6XCJjaHVua3MvcHJvZmlsZX5jaHVua3Mvc2V0dGluZ3MtcGFzc3dvcmRcIixcIjlcIjpcInZlbmRvcnN+Y2h1bmtzL3BsYXRmb3JtfmNodW5rcy9zaGFyZWRcIixcIjExXCI6XCJjaHVua3MvYWRtaW5cIixcIjEyXCI6XCJjaHVua3MvYWRtaW4tYWNjb3VudFwiLFwiMTNcIjpcImNodW5rcy9hcHAtYXBwZWFyYW5jZVwiLFwiMTRcIjpcImNodW5rcy9hcHAtYmlsbGluZ3NcIixcIjE1XCI6XCJjaHVua3MvYXBwLWVtYWlsXCIsXCIxNlwiOlwiY2h1bmtzL2FwcC1pbmRleFwiLFwiMTdcIjpcImNodW5rcy9hcHAtb3RoZXJzXCIsXCIxOFwiOlwiY2h1bmtzL2FwcC1wYXltZW50c1wiLFwiMTlcIjpcImNodW5rcy9hcHAtc2V0dGluZ3NcIixcIjIwXCI6XCJjaHVua3MvYXBwLXNldHVwXCIsXCIyMVwiOlwiY2h1bmtzL2JpbGxpbmdzLWRldGFpbFwiLFwiMjJcIjpcImNodW5rcy9jb250YWN0LXVzXCIsXCIyM1wiOlwiY2h1bmtzL2NyZWF0ZS1uZXctcGFzc3dvcmRcIixcIjI0XCI6XCJjaHVua3MvZGFzaGJvYXJkXCIsXCIyNVwiOlwiY2h1bmtzL2RhdGFiYXNlXCIsXCIyNlwiOlwiY2h1bmtzL2R5bmFtaWMtcGFnZVwiLFwiMjdcIjpcImNodW5rcy9lbnZpcm9ubWVudC1zZXR1cFwiLFwiMjhcIjpcImNodW5rcy9maWxlc1wiLFwiMjlcIjpcImNodW5rcy9mb3Jnb3R0ZW4tcGFzc3dvcmRcIixcIjMwXCI6XCJjaHVua3MvaG9tZXBhZ2VcIixcIjMxXCI6XCJjaHVua3MvaW5zdGFsbGF0aW9uLWRpc2NsYWltZXJcIixcIjMyXCI6XCJjaHVua3MvaW52b2ljZXNcIixcIjMzXCI6XCJjaHVua3Mvbm90LWZvdW5kLXNoYXJlZFwiLFwiMzRcIjpcImNodW5rcy9vYXNpcy9wbGF0YmFcIixcIjM1XCI6XCJjaHVua3MvcGFnZS1lZGl0XCIsXCIzNlwiOlwiY2h1bmtzL3BhZ2VzXCIsXCIzN1wiOlwiY2h1bmtzL3BsYW5cIixcIjM4XCI6XCJjaHVua3MvcGxhbi1jcmVhdGVcIixcIjM5XCI6XCJjaHVua3MvcGxhbi1kZWxldGVcIixcIjQwXCI6XCJjaHVua3MvcGxhbi1zZXR0aW5nc1wiLFwiNDFcIjpcImNodW5rcy9wbGFuLXN1YnNjcmliZXJzXCIsXCI0MlwiOlwiY2h1bmtzL3BsYW5zXCIsXCI0M1wiOlwiY2h1bmtzL3BsYXRmb3JtXCIsXCI0NFwiOlwiY2h1bmtzL3Byb2ZpbGVcIixcIjQ1XCI6XCJjaHVua3MvcHVyY2hhc2UtY29kZVwiLFwiNDZcIjpcImNodW5rcy9zZXR0aW5nc1wiLFwiNDdcIjpcImNodW5rcy9zZXR0aW5ncy1jcmVhdGUtcGF5bWVudC1tZXRob2RzXCIsXCI0OFwiOlwiY2h1bmtzL3NldHRpbmdzLWludm9pY2VzXCIsXCI0OVwiOlwiY2h1bmtzL3NldHRpbmdzLXBhc3N3b3JkXCIsXCI1MFwiOlwiY2h1bmtzL3NldHRpbmdzLXBheW1lbnQtbWV0aG9kc1wiLFwiNTFcIjpcImNodW5rcy9zZXR0aW5ncy1zdG9yYWdlXCIsXCI1MlwiOlwiY2h1bmtzL3NldHRpbmdzLXN1YnNjcmlwdGlvblwiLFwiNTNcIjpcImNodW5rcy9zZXR1cC13aXphcmRcIixcIjU0XCI6XCJjaHVua3Mvc2hhcmVkXCIsXCI1NVwiOlwiY2h1bmtzL3NoYXJlZC1maWxlc1wiLFwiNTZcIjpcImNodW5rcy9zaGFyZWQvYXV0aGVudGljYXRlXCIsXCI1N1wiOlwiY2h1bmtzL3NoYXJlZC9maWxlLWJyb3dzZXJcIixcIjU4XCI6XCJjaHVua3Mvc2hhcmVkL3NpbmdsZS1maWxlXCIsXCI1OVwiOlwiY2h1bmtzL3NpZ24taW5cIixcIjYwXCI6XCJjaHVua3Mvc2lnbi11cFwiLFwiNjFcIjpcImNodW5rcy9zdHJpcGUtY3JlZGVudGlhbHNcIixcIjYyXCI6XCJjaHVua3Mvc3Vic2NyaXB0aW9uLXBsYW5zXCIsXCI2M1wiOlwiY2h1bmtzL3N1YnNjcmlwdGlvbi1zZXJ2aWNlXCIsXCI2NFwiOlwiY2h1bmtzL3VwZ3JhZGUtYmlsbGluZ1wiLFwiNjVcIjpcImNodW5rcy91cGdyYWRlLXBsYW5cIixcIjY2XCI6XCJjaHVua3MvdXNlclwiLFwiNjdcIjpcImNodW5rcy91c2VyLWNyZWF0ZVwiLFwiNjhcIjpcImNodW5rcy91c2VyLWRlbGV0ZVwiLFwiNjlcIjpcImNodW5rcy91c2VyLWRldGFpbFwiLFwiNzBcIjpcImNodW5rcy91c2VyLWludm9pY2VzXCIsXCI3MVwiOlwiY2h1bmtzL3VzZXItcGFzc3dvcmRcIixcIjcyXCI6XCJjaHVua3MvdXNlci1zdG9yYWdlXCIsXCI3M1wiOlwiY2h1bmtzL3VzZXItc3Vic2NyaXB0aW9uXCIsXCI3NFwiOlwiY2h1bmtzL3VzZXJzXCJ9W2NodW5rSWRdfHxjaHVua0lkKSArIFwiLmpzP2lkPVwiICsge1wiMFwiOlwiZjRhZjk5ZjgyODI3YWQ4MzEwNTFcIixcIjFcIjpcIjQ4ZGE5ZDVhYTc2MDU0ZDY3NjExXCIsXCIyXCI6XCJjYWJmYjEyOThhOTQzOTM0MzMxOVwiLFwiM1wiOlwiMzVkM2UzOWJjN2ViYzk3MTlmMjFcIixcIjRcIjpcIjA5M2NhNTI4YzNhNmU3OTk0NjkwXCIsXCI1XCI6XCIzMDZmYjAzMGFmM2I3ODAyNGMxNFwiLFwiNlwiOlwiM2JiMjc3ZWRmYTJkODIyZjljM2RcIixcIjdcIjpcIjUwMzdlMGRjNDA1MTZkOTc0MjViXCIsXCI4XCI6XCIzMWE5YWVhMDA1Y2RmNDM3ZTRmNlwiLFwiOVwiOlwiYzQyNTFkYWE5M2FhYmVhMTI5NjBcIixcIjExXCI6XCJlN2JmZjE2NWEyMDQ0M2FjODg1MFwiLFwiMTJcIjpcImFmMTNmYmZiNjZhZWY3YWI3MTM2XCIsXCIxM1wiOlwiYzI4MzlmNjk1MjI5NjVmMmY4YjVcIixcIjE0XCI6XCI4OWEyOGE5YjFjMDBhNmNkMDg4MVwiLFwiMTVcIjpcImZjMjc2ZWM5ZTUxNzA1NmI4NTQ1XCIsXCIxNlwiOlwiNGM0NmRjYTA0NGJmZDdkZDUzNWRcIixcIjE3XCI6XCJjNjliYTFiYWM2ODkzNWUzN2NhN1wiLFwiMThcIjpcImY5NzU5NmIyMWJmYTdlNjQ5OTBmXCIsXCIxOVwiOlwiYjg0ZTczYmU5NWIxMjUzNGIwNGZcIixcIjIwXCI6XCJhNWFjNzlhMzFhMDMxOGNkYjgyNFwiLFwiMjFcIjpcImMyYTM3YzQwMjRiMzA3NzQ4YzRhXCIsXCIyMlwiOlwiNzU2NTU4NjNmZDFlODQ2MWQ2N2FcIixcIjIzXCI6XCJkZGI5NGVlM2Q2MGNlMDljYTk0YVwiLFwiMjRcIjpcIjEyZDNlYWQyNGM2ODA2MTU3NWNiXCIsXCIyNVwiOlwiMzhkZTA5NzI3NjFlZGY1ODkwODhcIixcIjI2XCI6XCI3ZjVlYzUzNDFlZTI5NGU5NmFkYlwiLFwiMjdcIjpcImZkMDY1MWYyN2I0N2Q0YmQ4Y2VkXCIsXCIyOFwiOlwiNTY3MmNmYTYwOGVmYjJmMzk0NTRcIixcIjI5XCI6XCJhZDBhMGUzYjNiNWM1MzVhMTkyNFwiLFwiMzBcIjpcIjM2MzAyYTYxNTIxZWEzODVkOWUzXCIsXCIzMVwiOlwiZWRjZWUwMGFkZTQ3YmE0ZDU2MjhcIixcIjMyXCI6XCJlYTdmYTA2ZTc3YzA5MjBjNWM1OFwiLFwiMzNcIjpcIjExZmExNDk1NjMwMmYzNDhjMzUwXCIsXCIzNFwiOlwiZTZlMzQzODg4NjUzMTA2YzhhZTRcIixcIjM1XCI6XCJjODNkYWNjNWZlZDJhMWJmZGIzOFwiLFwiMzZcIjpcImE2ODU5NGM1NmI2M2U2NmI0OTdlXCIsXCIzN1wiOlwiOTU2YzdjNjdiNzQ4NTlmNTYwZTNcIixcIjM4XCI6XCJkYzQ3NGU4NDczYWU0MzkzMDEzY1wiLFwiMzlcIjpcIjM3NzJjZTFhMmYwZTZiMWM4OTdhXCIsXCI0MFwiOlwiNzk1NmI2ZWQ4MGY3N2Q1MDdmYzhcIixcIjQxXCI6XCJjM2Q1NWMwY2U4NzQwYWI4MzEwNFwiLFwiNDJcIjpcIjU3NDhiZGQ5ZGU3MTMxNzQ1NjViXCIsXCI0M1wiOlwiNzEyMDk2MmM2NzVlYWMwMTBhNThcIixcIjQ0XCI6XCIyNjIxMzRlZTI0NWM2YzE0ZjU1YlwiLFwiNDVcIjpcImEwOTkyMjBhMTAzZTU2YTU0ZWM1XCIsXCI0NlwiOlwiMDU3Nzk3NTgxZjMxMTk1NmM4NzNcIixcIjQ3XCI6XCIzZTI2ZGMzN2MxZDZjNjA0MjRlOFwiLFwiNDhcIjpcIjE4MmM3OTQ0YjYzYmIyN2I5YWZjXCIsXCI0OVwiOlwiY2U3NDliOWRmNjFhNWQyNGJjNTdcIixcIjUwXCI6XCIyNzdkYWMwOTBlYTBhZjdjMzA3MVwiLFwiNTFcIjpcImRmNzU4YzQxNWZlYjZlZGQ0M2Q3XCIsXCI1MlwiOlwiOWY0MWEzYWZjZDJjOGZhM2E2MDFcIixcIjUzXCI6XCIyZjhmMmJhMTE0N2M0MDYzZmQ5OVwiLFwiNTRcIjpcIjQzYzJlODAzMjMyNGI4MDdmZGEwXCIsXCI1NVwiOlwiNzhiZTMwMjZmOTk5OTc1NWZhNDhcIixcIjU2XCI6XCJmMTVjZmFmZDU0OGYzOWI5ZmM4OVwiLFwiNTdcIjpcImQ2MTM2NjUxZjA5YzBlZDM4Yzg2XCIsXCI1OFwiOlwiNzAzYjY2OTNjZWUwMWMzYmRiMDNcIixcIjU5XCI6XCJjZGIwOTA1NzdiODM5ZTlmZTY4M1wiLFwiNjBcIjpcIjYyNGQyMjMxMzBlZjkwYjQ0ODAxXCIsXCI2MVwiOlwiN2IyMGVkNTk0ZDNlNzk3OWE5Y2FcIixcIjYyXCI6XCJjNWYxMzA0Y2U3NTg4NWY0YmE0MlwiLFwiNjNcIjpcIjQ1OTRiNGVjOGE2MzE3ZjdlZjhlXCIsXCI2NFwiOlwiYjc4YWRkNjU2ODEzMzA0ZDQ3OTJcIixcIjY1XCI6XCIwNmUwNGI2ZDljNTVjNmZjZmMxMFwiLFwiNjZcIjpcImQyYzNjNmU1ODdhZTcxOWQ5NzIzXCIsXCI2N1wiOlwiYWE4M2ZmMTA2MzQxZTFhZTkwZDBcIixcIjY4XCI6XCJlOTVmODc1NzRmMjczZjk1YWIwOVwiLFwiNjlcIjpcIjdlMzBlOWNmNDc1OTRiMDhlM2Y2XCIsXCI3MFwiOlwiOGUzYzNhZGUwN2FjZDg0Mzc5MjdcIixcIjcxXCI6XCI2ZmJkYzNjZDJiMTVmYjRiNzhhMVwiLFwiNzJcIjpcIjYzOGYzNzlhYzViYmQ3MmE4M2YzXCIsXCI3M1wiOlwiYzMxZTczZjgyY2MzNjdiMmNjMGJcIixcIjc0XCI6XCJhZWExODY5MWQyZjA5M2NiNGE5N1wifVtjaHVua0lkXSArIFwiXCJcbiBcdH1cblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG4gXHQvLyBUaGlzIGZpbGUgY29udGFpbnMgb25seSB0aGUgZW50cnkgY2h1bmsuXG4gXHQvLyBUaGUgY2h1bmsgbG9hZGluZyBmdW5jdGlvbiBmb3IgYWRkaXRpb25hbCBjaHVua3NcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZSA9IGZ1bmN0aW9uIHJlcXVpcmVFbnN1cmUoY2h1bmtJZCkge1xuIFx0XHR2YXIgcHJvbWlzZXMgPSBbXTtcblxuXG4gXHRcdC8vIEpTT05QIGNodW5rIGxvYWRpbmcgZm9yIGphdmFzY3JpcHRcblxuIFx0XHR2YXIgaW5zdGFsbGVkQ2h1bmtEYXRhID0gaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdO1xuIFx0XHRpZihpbnN0YWxsZWRDaHVua0RhdGEgIT09IDApIHsgLy8gMCBtZWFucyBcImFscmVhZHkgaW5zdGFsbGVkXCIuXG5cbiBcdFx0XHQvLyBhIFByb21pc2UgbWVhbnMgXCJjdXJyZW50bHkgbG9hZGluZ1wiLlxuIFx0XHRcdGlmKGluc3RhbGxlZENodW5rRGF0YSkge1xuIFx0XHRcdFx0cHJvbWlzZXMucHVzaChpbnN0YWxsZWRDaHVua0RhdGFbMl0pO1xuIFx0XHRcdH0gZWxzZSB7XG4gXHRcdFx0XHQvLyBzZXR1cCBQcm9taXNlIGluIGNodW5rIGNhY2hlXG4gXHRcdFx0XHR2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuIFx0XHRcdFx0XHRpbnN0YWxsZWRDaHVua0RhdGEgPSBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSBbcmVzb2x2ZSwgcmVqZWN0XTtcbiBcdFx0XHRcdH0pO1xuIFx0XHRcdFx0cHJvbWlzZXMucHVzaChpbnN0YWxsZWRDaHVua0RhdGFbMl0gPSBwcm9taXNlKTtcblxuIFx0XHRcdFx0Ly8gc3RhcnQgY2h1bmsgbG9hZGluZ1xuIFx0XHRcdFx0dmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuIFx0XHRcdFx0dmFyIG9uU2NyaXB0Q29tcGxldGU7XG5cbiBcdFx0XHRcdHNjcmlwdC5jaGFyc2V0ID0gJ3V0Zi04JztcbiBcdFx0XHRcdHNjcmlwdC50aW1lb3V0ID0gMTIwO1xuIFx0XHRcdFx0aWYgKF9fd2VicGFja19yZXF1aXJlX18ubmMpIHtcbiBcdFx0XHRcdFx0c2NyaXB0LnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIF9fd2VicGFja19yZXF1aXJlX18ubmMpO1xuIFx0XHRcdFx0fVxuIFx0XHRcdFx0c2NyaXB0LnNyYyA9IGpzb25wU2NyaXB0U3JjKGNodW5rSWQpO1xuXG4gXHRcdFx0XHQvLyBjcmVhdGUgZXJyb3IgYmVmb3JlIHN0YWNrIHVud291bmQgdG8gZ2V0IHVzZWZ1bCBzdGFja3RyYWNlIGxhdGVyXG4gXHRcdFx0XHR2YXIgZXJyb3IgPSBuZXcgRXJyb3IoKTtcbiBcdFx0XHRcdG9uU2NyaXB0Q29tcGxldGUgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiBcdFx0XHRcdFx0Ly8gYXZvaWQgbWVtIGxlYWtzIGluIElFLlxuIFx0XHRcdFx0XHRzY3JpcHQub25lcnJvciA9IHNjcmlwdC5vbmxvYWQgPSBudWxsO1xuIFx0XHRcdFx0XHRjbGVhclRpbWVvdXQodGltZW91dCk7XG4gXHRcdFx0XHRcdHZhciBjaHVuayA9IGluc3RhbGxlZENodW5rc1tjaHVua0lkXTtcbiBcdFx0XHRcdFx0aWYoY2h1bmsgIT09IDApIHtcbiBcdFx0XHRcdFx0XHRpZihjaHVuaykge1xuIFx0XHRcdFx0XHRcdFx0dmFyIGVycm9yVHlwZSA9IGV2ZW50ICYmIChldmVudC50eXBlID09PSAnbG9hZCcgPyAnbWlzc2luZycgOiBldmVudC50eXBlKTtcbiBcdFx0XHRcdFx0XHRcdHZhciByZWFsU3JjID0gZXZlbnQgJiYgZXZlbnQudGFyZ2V0ICYmIGV2ZW50LnRhcmdldC5zcmM7XG4gXHRcdFx0XHRcdFx0XHRlcnJvci5tZXNzYWdlID0gJ0xvYWRpbmcgY2h1bmsgJyArIGNodW5rSWQgKyAnIGZhaWxlZC5cXG4oJyArIGVycm9yVHlwZSArICc6ICcgKyByZWFsU3JjICsgJyknO1xuIFx0XHRcdFx0XHRcdFx0ZXJyb3IubmFtZSA9ICdDaHVua0xvYWRFcnJvcic7XG4gXHRcdFx0XHRcdFx0XHRlcnJvci50eXBlID0gZXJyb3JUeXBlO1xuIFx0XHRcdFx0XHRcdFx0ZXJyb3IucmVxdWVzdCA9IHJlYWxTcmM7XG4gXHRcdFx0XHRcdFx0XHRjaHVua1sxXShlcnJvcik7XG4gXHRcdFx0XHRcdFx0fVxuIFx0XHRcdFx0XHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9IHVuZGVmaW5lZDtcbiBcdFx0XHRcdFx0fVxuIFx0XHRcdFx0fTtcbiBcdFx0XHRcdHZhciB0aW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbigpe1xuIFx0XHRcdFx0XHRvblNjcmlwdENvbXBsZXRlKHsgdHlwZTogJ3RpbWVvdXQnLCB0YXJnZXQ6IHNjcmlwdCB9KTtcbiBcdFx0XHRcdH0sIDEyMDAwMCk7XG4gXHRcdFx0XHRzY3JpcHQub25lcnJvciA9IHNjcmlwdC5vbmxvYWQgPSBvblNjcmlwdENvbXBsZXRlO1xuIFx0XHRcdFx0ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuIFx0XHRcdH1cbiBcdFx0fVxuIFx0XHRyZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuIFx0fTtcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIi9cIjtcblxuIFx0Ly8gb24gZXJyb3IgZnVuY3Rpb24gZm9yIGFzeW5jIGxvYWRpbmdcbiBcdF9fd2VicGFja19yZXF1aXJlX18ub2UgPSBmdW5jdGlvbihlcnIpIHsgY29uc29sZS5lcnJvcihlcnIpOyB0aHJvdyBlcnI7IH07XG5cbiBcdHZhciBqc29ucEFycmF5ID0gd2luZG93W1wid2VicGFja0pzb25wXCJdID0gd2luZG93W1wid2VicGFja0pzb25wXCJdIHx8IFtdO1xuIFx0dmFyIG9sZEpzb25wRnVuY3Rpb24gPSBqc29ucEFycmF5LnB1c2guYmluZChqc29ucEFycmF5KTtcbiBcdGpzb25wQXJyYXkucHVzaCA9IHdlYnBhY2tKc29ucENhbGxiYWNrO1xuIFx0anNvbnBBcnJheSA9IGpzb25wQXJyYXkuc2xpY2UoKTtcbiBcdGZvcih2YXIgaSA9IDA7IGkgPCBqc29ucEFycmF5Lmxlbmd0aDsgaSsrKSB3ZWJwYWNrSnNvbnBDYWxsYmFjayhqc29ucEFycmF5W2ldKTtcbiBcdHZhciBwYXJlbnRKc29ucEZ1bmN0aW9uID0gb2xkSnNvbnBGdW5jdGlvbjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDApO1xuIiwiXG52YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTWVudUl0ZW1MaXN0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVjYTk3ZmZlJnNjb3BlZD10cnVlJmxhbmc9c2NzcyZcIik7XG5cbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuXG52YXIgdHJhbnNmb3JtO1xudmFyIGluc2VydEludG87XG5cblxuXG52YXIgb3B0aW9ucyA9IHtcImhtclwiOnRydWV9XG5cbm9wdGlvbnMudHJhbnNmb3JtID0gdHJhbnNmb3JtXG5vcHRpb25zLmluc2VydEludG8gPSB1bmRlZmluZWQ7XG5cbnZhciB1cGRhdGUgPSByZXF1aXJlKFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlcy5qc1wiKShjb250ZW50LCBvcHRpb25zKTtcblxuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG5cbmlmKG1vZHVsZS5ob3QpIHtcblx0bW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTWVudUl0ZW1MaXN0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVjYTk3ZmZlJnNjb3BlZD10cnVlJmxhbmc9c2NzcyZcIiwgZnVuY3Rpb24oKSB7XG5cdFx0dmFyIG5ld0NvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS03LTIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTctMyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL01lbnVJdGVtTGlzdC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01Y2E5N2ZmZSZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3MmXCIpO1xuXG5cdFx0aWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG5cblx0XHR2YXIgbG9jYWxzID0gKGZ1bmN0aW9uKGEsIGIpIHtcblx0XHRcdHZhciBrZXksIGlkeCA9IDA7XG5cblx0XHRcdGZvcihrZXkgaW4gYSkge1xuXHRcdFx0XHRpZighYiB8fCBhW2tleV0gIT09IGJba2V5XSkgcmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRpZHgrKztcblx0XHRcdH1cblxuXHRcdFx0Zm9yKGtleSBpbiBiKSBpZHgtLTtcblxuXHRcdFx0cmV0dXJuIGlkeCA9PT0gMDtcblx0XHR9KGNvbnRlbnQubG9jYWxzLCBuZXdDb250ZW50LmxvY2FscykpO1xuXG5cdFx0aWYoIWxvY2FscykgdGhyb3cgbmV3IEVycm9yKCdBYm9ydGluZyBDU1MgSE1SIGR1ZSB0byBjaGFuZ2VkIGNzcy1tb2R1bGVzIGxvY2Fscy4nKTtcblxuXHRcdHVwZGF0ZShuZXdDb250ZW50KTtcblx0fSk7XG5cblx0bW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG59IiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVmlnbmV0dGUudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NjAyZTU1YTQmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9WaWduZXR0ZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD02MDJlNTVhNCZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCIiLCJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi50b2FzdHItbGlzdFtkYXRhLXYtMWQ1NDBiZWJdIHtcXG4gIHRyYW5zaXRpb246IGFsbCA1cyBlYXNlO1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbn1cXG4udG9hc3RyLWxpc3QtZW50ZXJbZGF0YS12LTFkNTQwYmViXSxcXG4udG9hc3RyLWxpc3QtbGVhdmUtdG9bZGF0YS12LTFkNTQwYmViXSB7XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTtcXG59XFxuLnRvYXN0ci1saXN0LWxlYXZlLWFjdGl2ZVtkYXRhLXYtMWQ1NDBiZWJdIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG59XFxuI3RvYXN0ci13cmFwcGVyW2RhdGEtdi0xZDU0MGJlYl0ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcmlnaHQ6IDMwcHg7XFxuICB0b3A6IDMwcHg7XFxuICB6LWluZGV4OiAxMDtcXG59XFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2OTBweCkge1xcbiN0b2FzdHItd3JhcHBlcltkYXRhLXYtMWQ1NDBiZWJdIHtcXG4gICAgdG9wOiBpbml0aWFsO1xcbiAgICByaWdodDogMTVweDtcXG4gICAgbGVmdDogMTVweDtcXG4gICAgYm90dG9tOiAxNXB4O1xcbn1cXG59XFxuXCIsIFwiXCJdKTtcblxuLy8gZXhwb3J0c1xuIiwidmFyIHJlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ3VsJyx7c3RhdGljQ2xhc3M6XCJsaW5rLWdyb3VwXCJ9LF92bS5fbCgoX3ZtLm5hdmlnYXRpb24pLGZ1bmN0aW9uKGxpbmssaSl7cmV0dXJuIChsaW5rLmlzVmlzaWJsZSk/X2MoJ3JvdXRlci1saW5rJyx7a2V5Omksc3RhdGljQ2xhc3M6XCJsaW5rLWl0ZW1cIixjbGFzczpsaW5rLmljb24sYXR0cnM6e1widG9cIjp7bmFtZTogbGluay5yb3V0ZU5hbWV9fSxuYXRpdmVPbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7cmV0dXJuIF92bS4kZW1pdCgnbWVudScsIGxpbmsuaWNvbil9fX0sW19jKCdkaXYnLHtzdGF0aWNDbGFzczpcIm1lbnUtaWNvblwifSxbKGxpbmsuaWNvbiA9PT0gJ2hhcmQtZHJpdmUnKT9fYygnaGFyZC1kcml2ZS1pY29uJyx7YXR0cnM6e1wic2l6ZVwiOlwiMTdcIn19KTpfdm0uX2UoKSxfdm0uX3YoXCIgXCIpLChsaW5rLmljb24gPT09ICdzaGFyZScpP19jKCdzaGFyZS1pY29uJyx7YXR0cnM6e1wic2l6ZVwiOlwiMTdcIn19KTpfdm0uX2UoKSxfdm0uX3YoXCIgXCIpLChsaW5rLmljb24gPT09ICd0cmFzaCcpP19jKCd0cmFzaDItaWNvbicse2F0dHJzOntcInNpemVcIjpcIjE3XCJ9fSk6X3ZtLl9lKCksX3ZtLl92KFwiIFwiKSwobGluay5pY29uID09PSAncG93ZXInKT9fYygncG93ZXItaWNvbicse2F0dHJzOntcInNpemVcIjpcIjE3XCJ9fSk6X3ZtLl9lKCksX3ZtLl92KFwiIFwiKSwobGluay5pY29uID09PSAnc2V0dGluZ3MnKT9fYygnc2V0dGluZ3MtaWNvbicse2F0dHJzOntcInNpemVcIjpcIjE3XCJ9fSk6X3ZtLl9lKCksX3ZtLl92KFwiIFwiKSwobGluay5pY29uID09PSAnbGF0ZXN0Jyk/X2MoJ3VwbG9hZC1jbG91ZC1pY29uJyx7YXR0cnM6e1wic2l6ZVwiOlwiMTdcIn19KTpfdm0uX2UoKSxfdm0uX3YoXCIgXCIpLChsaW5rLmljb24gPT09ICd1c2VyJyk/X2MoJ3VzZXItaWNvbicse2F0dHJzOntcInNpemVcIjpcIjE3XCJ9fSk6X3ZtLl9lKCksX3ZtLl92KFwiIFwiKSwobGluay5pY29uID09PSAndXNlcnMnKT9fYygndXNlcnMtaWNvbicse2F0dHJzOntcInNpemVcIjpcIjE3XCJ9fSk6X3ZtLl9lKCksX3ZtLl92KFwiIFwiKSwobGluay5pY29uID09PSAnbG9jaycpP19jKCdsb2NrLWljb24nLHthdHRyczp7XCJzaXplXCI6XCIxN1wifX0pOl92bS5fZSgpLF92bS5fdihcIiBcIiksKGxpbmsuaWNvbiA9PT0gJ2ZpbGUtdGV4dCcpP19jKCdmaWxlLXRleHQtaWNvbicse2F0dHJzOntcInNpemVcIjpcIjE3XCJ9fSk6X3ZtLl9lKCksX3ZtLl92KFwiIFwiKSwobGluay5pY29uID09PSAnZGF0YWJhc2UnKT9fYygnZGF0YWJhc2UtaWNvbicse2F0dHJzOntcInNpemVcIjpcIjE3XCJ9fSk6X3ZtLl9lKCksX3ZtLl92KFwiIFwiKSwobGluay5pY29uID09PSAnY3JlZGl0LWNhcmQnKT9fYygnY3JlZGl0LWNhcmQtaWNvbicse2F0dHJzOntcInNpemVcIjpcIjE3XCJ9fSk6X3ZtLl9lKCksX3ZtLl92KFwiIFwiKSwobGluay5pY29uID09PSAnY2xvdWQnKT9fYygnY2xvdWQtaWNvbicse2F0dHJzOntcInNpemVcIjpcIjE3XCJ9fSk6X3ZtLl9lKCksX3ZtLl92KFwiIFwiKSwobGluay5pY29uID09PSAnbW9uaXRvcicpP19jKCdtb25pdG9yLWljb24nLHthdHRyczp7XCJzaXplXCI6XCIxN1wifX0pOl92bS5fZSgpLF92bS5fdihcIiBcIiksKGxpbmsuaWNvbiA9PT0gJ2JveCcpP19jKCdib3gtaWNvbicse2F0dHJzOntcInNpemVcIjpcIjE3XCJ9fSk6X3ZtLl9lKCldLDEpLF92bS5fdihcIiBcIiksX2MoJ2InLHtzdGF0aWNDbGFzczpcIm1lbnUtbGlua1wifSxbX2MoJ3NwYW4nLFtfdm0uX3YoX3ZtLl9zKGxpbmsudGl0bGUpKV0pLF92bS5fdihcIiBcIiksX2MoJ2NoZXZyb24tcmlnaHQtaWNvbicse3N0YXRpY0NsYXNzOlwiYXJyb3ctcmlnaHRcIixhdHRyczp7XCJzaXplXCI6XCIxNVwifX0pXSwxKV0pOl92bS5fZSgpfSksMSl9XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSIsImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P3JlZi0tNC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTWVudUl0ZW1MaXN0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS00LTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9NZW51SXRlbUxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiPHRlbXBsYXRlPlxuICAgIDx1bCBjbGFzcz1cImxpbmstZ3JvdXBcIj5cbiAgICAgICAgPHJvdXRlci1saW5rIDp0bz1cIntuYW1lOiBsaW5rLnJvdXRlTmFtZX1cIiB2LWZvcj1cIihsaW5rLCBpKSBpbiBuYXZpZ2F0aW9uXCIgOmtleT1cImlcIiB2LWlmPVwibGluay5pc1Zpc2libGVcIiA6Y2xhc3M9XCJsaW5rLmljb25cIiBjbGFzcz1cImxpbmstaXRlbVwiIEBjbGljay5uYXRpdmU9XCIkZW1pdCgnbWVudScsIGxpbmsuaWNvbilcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWljb25cIj5cbiAgICAgICAgICAgICAgICA8aGFyZC1kcml2ZS1pY29uIHYtaWY9XCJsaW5rLmljb24gPT09ICdoYXJkLWRyaXZlJ1wiIHNpemU9XCIxN1wiPjwvaGFyZC1kcml2ZS1pY29uPlxuICAgICAgICAgICAgICAgIDxzaGFyZS1pY29uIHYtaWY9XCJsaW5rLmljb24gPT09ICdzaGFyZSdcIiBzaXplPVwiMTdcIj48L3NoYXJlLWljb24+XG4gICAgICAgICAgICAgICAgPHRyYXNoMi1pY29uIHYtaWY9XCJsaW5rLmljb24gPT09ICd0cmFzaCdcIiBzaXplPVwiMTdcIj48L3RyYXNoMi1pY29uPlxuICAgICAgICAgICAgICAgIDxwb3dlci1pY29uIHYtaWY9XCJsaW5rLmljb24gPT09ICdwb3dlcidcIiBzaXplPVwiMTdcIj48L3Bvd2VyLWljb24+XG4gICAgICAgICAgICAgICAgPHNldHRpbmdzLWljb24gdi1pZj1cImxpbmsuaWNvbiA9PT0gJ3NldHRpbmdzJ1wiIHNpemU9XCIxN1wiPjwvc2V0dGluZ3MtaWNvbj5cbiAgICAgICAgICAgICAgICA8dXBsb2FkLWNsb3VkLWljb24gdi1pZj1cImxpbmsuaWNvbiA9PT0gJ2xhdGVzdCdcIiBzaXplPVwiMTdcIj48L3VwbG9hZC1jbG91ZC1pY29uPlxuICAgICAgICAgICAgICAgIDx1c2VyLWljb24gdi1pZj1cImxpbmsuaWNvbiA9PT0gJ3VzZXInXCIgc2l6ZT1cIjE3XCI+PC91c2VyLWljb24+XG4gICAgICAgICAgICAgICAgPHVzZXJzLWljb24gdi1pZj1cImxpbmsuaWNvbiA9PT0gJ3VzZXJzJ1wiIHNpemU9XCIxN1wiPjwvdXNlcnMtaWNvbj5cbiAgICAgICAgICAgICAgICA8bG9jay1pY29uIHYtaWY9XCJsaW5rLmljb24gPT09ICdsb2NrJ1wiIHNpemU9XCIxN1wiPjwvbG9jay1pY29uPlxuICAgICAgICAgICAgICAgIDxmaWxlLXRleHQtaWNvbiB2LWlmPVwibGluay5pY29uID09PSAnZmlsZS10ZXh0J1wiIHNpemU9XCIxN1wiPjwvZmlsZS10ZXh0LWljb24+XG4gICAgICAgICAgICAgICAgPGRhdGFiYXNlLWljb24gdi1pZj1cImxpbmsuaWNvbiA9PT0gJ2RhdGFiYXNlJ1wiIHNpemU9XCIxN1wiPjwvZGF0YWJhc2UtaWNvbj5cbiAgICAgICAgICAgICAgICA8Y3JlZGl0LWNhcmQtaWNvbiB2LWlmPVwibGluay5pY29uID09PSAnY3JlZGl0LWNhcmQnXCIgc2l6ZT1cIjE3XCI+PC9jcmVkaXQtY2FyZC1pY29uPlxuICAgICAgICAgICAgICAgIDxjbG91ZC1pY29uIHYtaWY9XCJsaW5rLmljb24gPT09ICdjbG91ZCdcIiBzaXplPVwiMTdcIj48L2Nsb3VkLWljb24+XG4gICAgICAgICAgICAgICAgPG1vbml0b3ItaWNvbiB2LWlmPVwibGluay5pY29uID09PSAnbW9uaXRvcidcIiBzaXplPVwiMTdcIj48L21vbml0b3ItaWNvbj5cbiAgICAgICAgICAgICAgICA8Ym94LWljb24gdi1pZj1cImxpbmsuaWNvbiA9PT0gJ2JveCdcIiBzaXplPVwiMTdcIj48L2JveC1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YiBjbGFzcz1cIm1lbnUtbGlua1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGxpbmsudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGNoZXZyb24tcmlnaHQtaWNvbiBzaXplPVwiMTVcIiBjbGFzcz1cImFycm93LXJpZ2h0XCI+PC9jaGV2cm9uLXJpZ2h0LWljb24+XG4gICAgICAgICAgICA8L2I+XG4gICAgICAgIDwvcm91dGVyLWxpbms+XG4gICAgPC91bD5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgaW1wb3J0IHtcbiAgICAgICAgQ2hldnJvblJpZ2h0SWNvbixcbiAgICAgICAgVXBsb2FkQ2xvdWRJY29uLFxuICAgICAgICBDcmVkaXRDYXJkSWNvbixcbiAgICAgICAgSGFyZERyaXZlSWNvbixcbiAgICAgICAgRmlsZVRleHRJY29uLFxuICAgICAgICBTZXR0aW5nc0ljb24sXG4gICAgICAgIERhdGFiYXNlSWNvbixcbiAgICAgICAgTW9uaXRvckljb24sXG4gICAgICAgIFRyYXNoMkljb24sXG4gICAgICAgIENsb3VkSWNvbixcbiAgICAgICAgUG93ZXJJY29uLFxuICAgICAgICBTaGFyZUljb24sXG4gICAgICAgIFVzZXJzSWNvbixcbiAgICAgICAgVXNlckljb24sXG4gICAgICAgIExvY2tJY29uLFxuICAgICAgICBCb3hJY29uLFxuICAgIH0gZnJvbSAndnVlLWZlYXRoZXItaWNvbnMnXG5cbiAgICBleHBvcnQgZGVmYXVsdCB7XG4gICAgICAgIG5hbWU6ICdNZW51QmFyJyxcbiAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgQm94SWNvbixcbiAgICAgICAgICAgIE1vbml0b3JJY29uLFxuICAgICAgICAgICAgQ2hldnJvblJpZ2h0SWNvbixcbiAgICAgICAgICAgIFVwbG9hZENsb3VkSWNvbixcbiAgICAgICAgICAgIENyZWRpdENhcmRJY29uLFxuICAgICAgICAgICAgSGFyZERyaXZlSWNvbixcbiAgICAgICAgICAgIERhdGFiYXNlSWNvbixcbiAgICAgICAgICAgIEZpbGVUZXh0SWNvbixcbiAgICAgICAgICAgIFNldHRpbmdzSWNvbixcbiAgICAgICAgICAgIFRyYXNoMkljb24sXG4gICAgICAgICAgICBDbG91ZEljb24sXG4gICAgICAgICAgICBQb3dlckljb24sXG4gICAgICAgICAgICBVc2Vyc0ljb24sXG4gICAgICAgICAgICBTaGFyZUljb24sXG4gICAgICAgICAgICBMb2NrSWNvbixcbiAgICAgICAgICAgIFVzZXJJY29uLFxuICAgICAgICB9LFxuICAgICAgICBwcm9wczogW1xuICAgICAgICAgICAgJ25hdmlnYXRpb24nXG4gICAgICAgIF0sXG4gICAgfVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQgbGFuZz1cInNjc3NcIj5cbiAgICBAaW1wb3J0ICdAYXNzZXRzL3Z1ZWZpbGVtYW5hZ2VyL192YXJpYWJsZXMnO1xuICAgIEBpbXBvcnQgJ0Bhc3NldHMvdnVlZmlsZW1hbmFnZXIvX21peGlucyc7XG5cbiAgICAubGluay1pdGVtIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAxN3B4IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICYucG93ZXIge1xuXG4gICAgICAgICAgICAubWVudS1pY29uIHtcblxuICAgICAgICAgICAgICAgIHBhdGgsIGxpbmUsIHBvbHlsaW5lLCByZWN0LCBjaXJjbGUsIGVsbGlwc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdHJva2U6ICRyZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubWVudS1saW5rIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHJlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5tZW51LWljb24ge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG5cbiAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTFweDtcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwYXRoLCBsaW5lLCBwb2x5bGluZSwgcmVjdCwgY2lyY2xlLCBlbGxpcHNlIHtcbiAgICAgICAgICAgICAgICBzdHJva2U6ICR0ZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm1lbnUtbGluayB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgY29sb3I6ICR0ZXh0O1xuXG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoMTQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuICAgICAgICAubGluay1pdGVtIHtcblxuICAgICAgICAgICAgLm1lbnUtaWNvbiB7XG5cbiAgICAgICAgICAgICAgICBwYXRoLCBsaW5lLCBwb2x5bGluZSwgcmVjdCwgY2lyY2xlLCBlbGxpcHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiAkZGFya19tb2RlX3RleHRfcHJpbWFyeTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5tZW51LWxpbmsge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkZGFya19tb2RlX3RleHRfcHJpbWFyeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuPC9zdHlsZT5cbiIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vTWVudUl0ZW1MaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01Y2E5N2ZmZSZzY29wZWQ9dHJ1ZSZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9NZW51SXRlbUxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9NZW51SXRlbUxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5pbXBvcnQgc3R5bGUwIGZyb20gXCIuL01lbnVJdGVtTGlzdC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01Y2E5N2ZmZSZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3MmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcIjVjYTk3ZmZlXCIsXG4gIG51bGxcbiAgXG4pXG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lmaWVkIFVSTCBpcyBhYnNvbHV0ZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIFVSTCB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIFVSTCBpcyBhYnNvbHV0ZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNBYnNvbHV0ZVVSTCh1cmwpIHtcbiAgLy8gQSBVUkwgaXMgY29uc2lkZXJlZCBhYnNvbHV0ZSBpZiBpdCBiZWdpbnMgd2l0aCBcIjxzY2hlbWU+Oi8vXCIgb3IgXCIvL1wiIChwcm90b2NvbC1yZWxhdGl2ZSBVUkwpLlxuICAvLyBSRkMgMzk4NiBkZWZpbmVzIHNjaGVtZSBuYW1lIGFzIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBiZWdpbm5pbmcgd2l0aCBhIGxldHRlciBhbmQgZm9sbG93ZWRcbiAgLy8gYnkgYW55IGNvbWJpbmF0aW9uIG9mIGxldHRlcnMsIGRpZ2l0cywgcGx1cywgcGVyaW9kLCBvciBoeXBoZW4uXG4gIHJldHVybiAvXihbYS16XVthLXpcXGRcXCtcXC1cXC5dKjopP1xcL1xcLy9pLnRlc3QodXJsKTtcbn07XG4iLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Ub2FzdHJXcmFwcGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTFkNTQwYmViJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVG9hc3RyV3JhcHBlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0xZDU0MGJlYiZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCIiLCJcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Ub2FzdHJJdGVtLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTM2YzM2N2ZlJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIik7XG5cbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuXG52YXIgdHJhbnNmb3JtO1xudmFyIGluc2VydEludG87XG5cblxuXG52YXIgb3B0aW9ucyA9IHtcImhtclwiOnRydWV9XG5cbm9wdGlvbnMudHJhbnNmb3JtID0gdHJhbnNmb3JtXG5vcHRpb25zLmluc2VydEludG8gPSB1bmRlZmluZWQ7XG5cbnZhciB1cGRhdGUgPSByZXF1aXJlKFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlcy5qc1wiKShjb250ZW50LCBvcHRpb25zKTtcblxuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG5cbmlmKG1vZHVsZS5ob3QpIHtcblx0bW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVG9hc3RySXRlbS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0zNmMzNjdmZSZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Ub2FzdHJJdGVtLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTM2YzM2N2ZlJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIik7XG5cblx0XHRpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcblxuXHRcdHZhciBsb2NhbHMgPSAoZnVuY3Rpb24oYSwgYikge1xuXHRcdFx0dmFyIGtleSwgaWR4ID0gMDtcblxuXHRcdFx0Zm9yKGtleSBpbiBhKSB7XG5cdFx0XHRcdGlmKCFiIHx8IGFba2V5XSAhPT0gYltrZXldKSByZXR1cm4gZmFsc2U7XG5cdFx0XHRcdGlkeCsrO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3Ioa2V5IGluIGIpIGlkeC0tO1xuXG5cdFx0XHRyZXR1cm4gaWR4ID09PSAwO1xuXHRcdH0oY29udGVudC5sb2NhbHMsIG5ld0NvbnRlbnQubG9jYWxzKSk7XG5cblx0XHRpZighbG9jYWxzKSB0aHJvdyBuZXcgRXJyb3IoJ0Fib3J0aW5nIENTUyBITVIgZHVlIHRvIGNoYW5nZWQgY3NzLW1vZHVsZXMgbG9jYWxzLicpO1xuXG5cdFx0dXBkYXRlKG5ld0NvbnRlbnQpO1xuXHR9KTtcblxuXHRtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcbn0iLCJcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Nb2JpbGVIZWFkZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NDNjZTFjZDAmc2NvcGVkPXRydWUmbGFuZz1zY3NzJlwiKTtcblxuaWYodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG5cbnZhciB0cmFuc2Zvcm07XG52YXIgaW5zZXJ0SW50bztcblxuXG5cbnZhciBvcHRpb25zID0ge1wiaG1yXCI6dHJ1ZX1cblxub3B0aW9ucy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm1cbm9wdGlvbnMuaW5zZXJ0SW50byA9IHVuZGVmaW5lZDtcblxudmFyIHVwZGF0ZSA9IHJlcXVpcmUoXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzLmpzXCIpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5pZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2FscztcblxuaWYobW9kdWxlLmhvdCkge1xuXHRtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Nb2JpbGVIZWFkZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NDNjZTFjZDAmc2NvcGVkPXRydWUmbGFuZz1zY3NzJlwiLCBmdW5jdGlvbigpIHtcblx0XHR2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTW9iaWxlSGVhZGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTQzY2UxY2QwJnNjb3BlZD10cnVlJmxhbmc9c2NzcyZcIik7XG5cblx0XHRpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcblxuXHRcdHZhciBsb2NhbHMgPSAoZnVuY3Rpb24oYSwgYikge1xuXHRcdFx0dmFyIGtleSwgaWR4ID0gMDtcblxuXHRcdFx0Zm9yKGtleSBpbiBhKSB7XG5cdFx0XHRcdGlmKCFiIHx8IGFba2V5XSAhPT0gYltrZXldKSByZXR1cm4gZmFsc2U7XG5cdFx0XHRcdGlkeCsrO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3Ioa2V5IGluIGIpIGlkeC0tO1xuXG5cdFx0XHRyZXR1cm4gaWR4ID09PSAwO1xuXHRcdH0oY29udGVudC5sb2NhbHMsIG5ld0NvbnRlbnQubG9jYWxzKSk7XG5cblx0XHRpZighbG9jYWxzKSB0aHJvdyBuZXcgRXJyb3IoJ0Fib3J0aW5nIENTUyBITVIgZHVlIHRvIGNoYW5nZWQgY3NzLW1vZHVsZXMgbG9jYWxzLicpO1xuXG5cdFx0dXBkYXRlKG5ld0NvbnRlbnQpO1xuXHR9KTtcblxuXHRtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcbn0iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBVUkwgYnkgY29tYmluaW5nIHRoZSBzcGVjaWZpZWQgVVJMc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVVJMIFRoZSBiYXNlIFVSTFxuICogQHBhcmFtIHtzdHJpbmd9IHJlbGF0aXZlVVJMIFRoZSByZWxhdGl2ZSBVUkxcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21iaW5lZCBVUkxcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjb21iaW5lVVJMcyhiYXNlVVJMLCByZWxhdGl2ZVVSTCkge1xuICByZXR1cm4gcmVsYXRpdmVVUkxcbiAgICA/IGJhc2VVUkwucmVwbGFjZSgvXFwvKyQvLCAnJykgKyAnLycgKyByZWxhdGl2ZVVSTC5yZXBsYWNlKC9eXFwvKy8sICcnKVxuICAgIDogYmFzZVVSTDtcbn07XG4iLCJmdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHtcbiAgICBfdHlwZW9mID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIHR5cGVvZiBvYmo7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBfdHlwZW9mID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBfdHlwZW9mKG9iaik7XG59XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07XG4gICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gIGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xuICBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7XG4gIHJldHVybiBDb25zdHJ1Y3Rvcjtcbn1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5IGluIG9iaikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307XG4gICAgdmFyIG93bktleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuXG4gICAgaWYgKHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBvd25LZXlzID0gb3duS2V5cy5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwgc3ltKS5lbnVtZXJhYmxlO1xuICAgICAgfSkpO1xuICAgIH1cblxuICAgIG93bktleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkge1xuICByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpO1xufVxuXG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7XG4gIHJldHVybiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5KGFycikgfHwgX25vbkl0ZXJhYmxlU3ByZWFkKCk7XG59XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSBhcnIyW2ldID0gYXJyW2ldO1xuXG4gICAgcmV0dXJuIGFycjI7XG4gIH1cbn1cblxuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyO1xufVxuXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KGl0ZXIpIHtcbiAgaWYgKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoaXRlcikgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGl0ZXIpID09PSBcIltvYmplY3QgQXJndW1lbnRzXVwiKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTtcbn1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkge1xuICB2YXIgX2FyciA9IFtdO1xuICB2YXIgX24gPSB0cnVlO1xuICB2YXIgX2QgPSBmYWxzZTtcbiAgdmFyIF9lID0gdW5kZWZpbmVkO1xuXG4gIHRyeSB7XG4gICAgZm9yICh2YXIgX2kgPSBhcnJbU3ltYm9sLml0ZXJhdG9yXSgpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkge1xuICAgICAgX2Fyci5wdXNoKF9zLnZhbHVlKTtcblxuICAgICAgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgX2QgPSB0cnVlO1xuICAgIF9lID0gZXJyO1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdICE9IG51bGwpIF9pW1wicmV0dXJuXCJdKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChfZCkgdGhyb3cgX2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIF9hcnI7XG59XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpO1xufVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKTtcbn1cblxudmFyIG5vb3AgPSBmdW5jdGlvbiBub29wKCkge307XG5cbnZhciBfV0lORE9XID0ge307XG52YXIgX0RPQ1VNRU5UID0ge307XG52YXIgX01VVEFUSU9OX09CU0VSVkVSID0gbnVsbDtcbnZhciBfUEVSRk9STUFOQ0UgPSB7XG4gIG1hcms6IG5vb3AsXG4gIG1lYXN1cmU6IG5vb3Bcbn07XG5cbnRyeSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykgX1dJTkRPVyA9IHdpbmRvdztcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIF9ET0NVTUVOVCA9IGRvY3VtZW50O1xuICBpZiAodHlwZW9mIE11dGF0aW9uT2JzZXJ2ZXIgIT09ICd1bmRlZmluZWQnKSBfTVVUQVRJT05fT0JTRVJWRVIgPSBNdXRhdGlvbk9ic2VydmVyO1xuICBpZiAodHlwZW9mIHBlcmZvcm1hbmNlICE9PSAndW5kZWZpbmVkJykgX1BFUkZPUk1BTkNFID0gcGVyZm9ybWFuY2U7XG59IGNhdGNoIChlKSB7fVxuXG52YXIgX3JlZiA9IF9XSU5ET1cubmF2aWdhdG9yIHx8IHt9LFxuICAgIF9yZWYkdXNlckFnZW50ID0gX3JlZi51c2VyQWdlbnQsXG4gICAgdXNlckFnZW50ID0gX3JlZiR1c2VyQWdlbnQgPT09IHZvaWQgMCA/ICcnIDogX3JlZiR1c2VyQWdlbnQ7XG5cbnZhciBXSU5ET1cgPSBfV0lORE9XO1xudmFyIERPQ1VNRU5UID0gX0RPQ1VNRU5UO1xudmFyIE1VVEFUSU9OX09CU0VSVkVSID0gX01VVEFUSU9OX09CU0VSVkVSO1xudmFyIFBFUkZPUk1BTkNFID0gX1BFUkZPUk1BTkNFO1xudmFyIElTX0JST1dTRVIgPSAhIVdJTkRPVy5kb2N1bWVudDtcbnZhciBJU19ET00gPSAhIURPQ1VNRU5ULmRvY3VtZW50RWxlbWVudCAmJiAhIURPQ1VNRU5ULmhlYWQgJiYgdHlwZW9mIERPQ1VNRU5ULmFkZEV2ZW50TGlzdGVuZXIgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIERPQ1VNRU5ULmNyZWF0ZUVsZW1lbnQgPT09ICdmdW5jdGlvbic7XG52YXIgSVNfSUUgPSB+dXNlckFnZW50LmluZGV4T2YoJ01TSUUnKSB8fCB+dXNlckFnZW50LmluZGV4T2YoJ1RyaWRlbnQvJyk7XG5cbnZhciBOQU1FU1BBQ0VfSURFTlRJRklFUiA9ICdfX19GT05UX0FXRVNPTUVfX18nO1xudmFyIFVOSVRTX0lOX0dSSUQgPSAxNjtcbnZhciBERUZBVUxUX0ZBTUlMWV9QUkVGSVggPSAnZmEnO1xudmFyIERFRkFVTFRfUkVQTEFDRU1FTlRfQ0xBU1MgPSAnc3ZnLWlubGluZS0tZmEnO1xudmFyIERBVEFfRkFfSTJTVkcgPSAnZGF0YS1mYS1pMnN2Zyc7XG52YXIgREFUQV9GQV9QU0VVRE9fRUxFTUVOVCA9ICdkYXRhLWZhLXBzZXVkby1lbGVtZW50JztcbnZhciBEQVRBX0ZBX1BTRVVET19FTEVNRU5UX1BFTkRJTkcgPSAnZGF0YS1mYS1wc2V1ZG8tZWxlbWVudC1wZW5kaW5nJztcbnZhciBEQVRBX1BSRUZJWCA9ICdkYXRhLXByZWZpeCc7XG52YXIgREFUQV9JQ09OID0gJ2RhdGEtaWNvbic7XG52YXIgSFRNTF9DTEFTU19JMlNWR19CQVNFX0NMQVNTID0gJ2ZvbnRhd2Vzb21lLWkyc3ZnJztcbnZhciBNVVRBVElPTl9BUFBST0FDSF9BU1lOQyA9ICdhc3luYyc7XG52YXIgVEFHTkFNRVNfVE9fU0tJUF9GT1JfUFNFVURPRUxFTUVOVFMgPSBbJ0hUTUwnLCAnSEVBRCcsICdTVFlMRScsICdTQ1JJUFQnXTtcbnZhciBQUk9EVUNUSU9OID0gZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59KCk7XG52YXIgUFJFRklYX1RPX1NUWUxFID0ge1xuICAnZmFzJzogJ3NvbGlkJyxcbiAgJ2Zhcic6ICdyZWd1bGFyJyxcbiAgJ2ZhbCc6ICdsaWdodCcsXG4gICdmYWQnOiAnZHVvdG9uZScsXG4gICdmYWInOiAnYnJhbmRzJyxcbiAgJ2ZhJzogJ3NvbGlkJ1xufTtcbnZhciBTVFlMRV9UT19QUkVGSVggPSB7XG4gICdzb2xpZCc6ICdmYXMnLFxuICAncmVndWxhcic6ICdmYXInLFxuICAnbGlnaHQnOiAnZmFsJyxcbiAgJ2R1b3RvbmUnOiAnZmFkJyxcbiAgJ2JyYW5kcyc6ICdmYWInXG59O1xudmFyIExBWUVSU19URVhUX0NMQVNTTkFNRSA9ICdmYS1sYXllcnMtdGV4dCc7XG52YXIgRk9OVF9GQU1JTFlfUEFUVEVSTiA9IC9Gb250IEF3ZXNvbWUgNSAoU29saWR8UmVndWxhcnxMaWdodHxEdW90b25lfEJyYW5kc3xGcmVlfFBybykvO1xudmFyIEZPTlRfV0VJR0hUX1RPX1BSRUZJWCA9IHtcbiAgJzkwMCc6ICdmYXMnLFxuICAnNDAwJzogJ2ZhcicsXG4gICdub3JtYWwnOiAnZmFyJyxcbiAgJzMwMCc6ICdmYWwnXG59O1xudmFyIG9uZVRvVGVuID0gWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXTtcbnZhciBvbmVUb1R3ZW50eSA9IG9uZVRvVGVuLmNvbmNhdChbMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjBdKTtcbnZhciBBVFRSSUJVVEVTX1dBVENIRURfRk9SX01VVEFUSU9OID0gWydjbGFzcycsICdkYXRhLXByZWZpeCcsICdkYXRhLWljb24nLCAnZGF0YS1mYS10cmFuc2Zvcm0nLCAnZGF0YS1mYS1tYXNrJ107XG52YXIgRFVPVE9ORV9DTEFTU0VTID0ge1xuICBHUk9VUDogJ2dyb3VwJyxcbiAgU1dBUF9PUEFDSVRZOiAnc3dhcC1vcGFjaXR5JyxcbiAgUFJJTUFSWTogJ3ByaW1hcnknLFxuICBTRUNPTkRBUlk6ICdzZWNvbmRhcnknXG59O1xudmFyIFJFU0VSVkVEX0NMQVNTRVMgPSBbJ3hzJywgJ3NtJywgJ2xnJywgJ2Z3JywgJ3VsJywgJ2xpJywgJ2JvcmRlcicsICdwdWxsLWxlZnQnLCAncHVsbC1yaWdodCcsICdzcGluJywgJ3B1bHNlJywgJ3JvdGF0ZS05MCcsICdyb3RhdGUtMTgwJywgJ3JvdGF0ZS0yNzAnLCAnZmxpcC1ob3Jpem9udGFsJywgJ2ZsaXAtdmVydGljYWwnLCAnZmxpcC1ib3RoJywgJ3N0YWNrJywgJ3N0YWNrLTF4JywgJ3N0YWNrLTJ4JywgJ2ludmVyc2UnLCAnbGF5ZXJzJywgJ2xheWVycy10ZXh0JywgJ2xheWVycy1jb3VudGVyJywgRFVPVE9ORV9DTEFTU0VTLkdST1VQLCBEVU9UT05FX0NMQVNTRVMuU1dBUF9PUEFDSVRZLCBEVU9UT05FX0NMQVNTRVMuUFJJTUFSWSwgRFVPVE9ORV9DTEFTU0VTLlNFQ09OREFSWV0uY29uY2F0KG9uZVRvVGVuLm1hcChmdW5jdGlvbiAobikge1xuICByZXR1cm4gXCJcIi5jb25jYXQobiwgXCJ4XCIpO1xufSkpLmNvbmNhdChvbmVUb1R3ZW50eS5tYXAoZnVuY3Rpb24gKG4pIHtcbiAgcmV0dXJuIFwidy1cIi5jb25jYXQobik7XG59KSk7XG5cbnZhciBpbml0aWFsID0gV0lORE9XLkZvbnRBd2Vzb21lQ29uZmlnIHx8IHt9O1xuXG5mdW5jdGlvbiBnZXRBdHRyQ29uZmlnKGF0dHIpIHtcbiAgdmFyIGVsZW1lbnQgPSBET0NVTUVOVC5xdWVyeVNlbGVjdG9yKCdzY3JpcHRbJyArIGF0dHIgKyAnXScpO1xuXG4gIGlmIChlbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuZ2V0QXR0cmlidXRlKGF0dHIpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvZXJjZSh2YWwpIHtcbiAgLy8gR2V0dGluZyBhbiBlbXB0eSBzdHJpbmcgd2lsbCBvY2N1ciBpZiB0aGUgYXR0cmlidXRlIGlzIHNldCBvbiB0aGUgSFRNTCB0YWcgYnV0IHdpdGhvdXQgYSB2YWx1ZVxuICAvLyBXZSdsbCBhc3N1bWUgdGhhdCB0aGlzIGlzIGFuIGluZGljYXRpb24gdGhhdCBpdCBzaG91bGQgYmUgdG9nZ2xlZCB0byB0cnVlXG4gIC8vIEZvciBleGFtcGxlIDxzY3JpcHQgZGF0YS1zZWFyY2gtcHNldWRvLWVsZW1lbnRzIHNyYz1cIi4uLlwiPjwvc2NyaXB0PlxuICBpZiAodmFsID09PSAnJykgcmV0dXJuIHRydWU7XG4gIGlmICh2YWwgPT09ICdmYWxzZScpIHJldHVybiBmYWxzZTtcbiAgaWYgKHZhbCA9PT0gJ3RydWUnKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIHZhbDtcbn1cblxuaWYgKERPQ1VNRU5UICYmIHR5cGVvZiBET0NVTUVOVC5xdWVyeVNlbGVjdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gIHZhciBhdHRycyA9IFtbJ2RhdGEtZmFtaWx5LXByZWZpeCcsICdmYW1pbHlQcmVmaXgnXSwgWydkYXRhLXJlcGxhY2VtZW50LWNsYXNzJywgJ3JlcGxhY2VtZW50Q2xhc3MnXSwgWydkYXRhLWF1dG8tcmVwbGFjZS1zdmcnLCAnYXV0b1JlcGxhY2VTdmcnXSwgWydkYXRhLWF1dG8tYWRkLWNzcycsICdhdXRvQWRkQ3NzJ10sIFsnZGF0YS1hdXRvLWExMXknLCAnYXV0b0ExMXknXSwgWydkYXRhLXNlYXJjaC1wc2V1ZG8tZWxlbWVudHMnLCAnc2VhcmNoUHNldWRvRWxlbWVudHMnXSwgWydkYXRhLW9ic2VydmUtbXV0YXRpb25zJywgJ29ic2VydmVNdXRhdGlvbnMnXSwgWydkYXRhLW11dGF0ZS1hcHByb2FjaCcsICdtdXRhdGVBcHByb2FjaCddLCBbJ2RhdGEta2VlcC1vcmlnaW5hbC1zb3VyY2UnLCAna2VlcE9yaWdpbmFsU291cmNlJ10sIFsnZGF0YS1tZWFzdXJlLXBlcmZvcm1hbmNlJywgJ21lYXN1cmVQZXJmb3JtYW5jZSddLCBbJ2RhdGEtc2hvdy1taXNzaW5nLWljb25zJywgJ3Nob3dNaXNzaW5nSWNvbnMnXV07XG4gIGF0dHJzLmZvckVhY2goZnVuY3Rpb24gKF9yZWYpIHtcbiAgICB2YXIgX3JlZjIgPSBfc2xpY2VkVG9BcnJheShfcmVmLCAyKSxcbiAgICAgICAgYXR0ciA9IF9yZWYyWzBdLFxuICAgICAgICBrZXkgPSBfcmVmMlsxXTtcblxuICAgIHZhciB2YWwgPSBjb2VyY2UoZ2V0QXR0ckNvbmZpZyhhdHRyKSk7XG5cbiAgICBpZiAodmFsICE9PSB1bmRlZmluZWQgJiYgdmFsICE9PSBudWxsKSB7XG4gICAgICBpbml0aWFsW2tleV0gPSB2YWw7XG4gICAgfVxuICB9KTtcbn1cblxudmFyIF9kZWZhdWx0ID0ge1xuICBmYW1pbHlQcmVmaXg6IERFRkFVTFRfRkFNSUxZX1BSRUZJWCxcbiAgcmVwbGFjZW1lbnRDbGFzczogREVGQVVMVF9SRVBMQUNFTUVOVF9DTEFTUyxcbiAgYXV0b1JlcGxhY2VTdmc6IHRydWUsXG4gIGF1dG9BZGRDc3M6IHRydWUsXG4gIGF1dG9BMTF5OiB0cnVlLFxuICBzZWFyY2hQc2V1ZG9FbGVtZW50czogZmFsc2UsXG4gIG9ic2VydmVNdXRhdGlvbnM6IHRydWUsXG4gIG11dGF0ZUFwcHJvYWNoOiAnYXN5bmMnLFxuICBrZWVwT3JpZ2luYWxTb3VyY2U6IHRydWUsXG4gIG1lYXN1cmVQZXJmb3JtYW5jZTogZmFsc2UsXG4gIHNob3dNaXNzaW5nSWNvbnM6IHRydWVcbn07XG5cbnZhciBfY29uZmlnID0gX29iamVjdFNwcmVhZCh7fSwgX2RlZmF1bHQsIGluaXRpYWwpO1xuXG5pZiAoIV9jb25maWcuYXV0b1JlcGxhY2VTdmcpIF9jb25maWcub2JzZXJ2ZU11dGF0aW9ucyA9IGZhbHNlO1xuXG52YXIgY29uZmlnID0gX29iamVjdFNwcmVhZCh7fSwgX2NvbmZpZyk7XG5cbldJTkRPVy5Gb250QXdlc29tZUNvbmZpZyA9IGNvbmZpZztcblxudmFyIHcgPSBXSU5ET1cgfHwge307XG5pZiAoIXdbTkFNRVNQQUNFX0lERU5USUZJRVJdKSB3W05BTUVTUEFDRV9JREVOVElGSUVSXSA9IHt9O1xuaWYgKCF3W05BTUVTUEFDRV9JREVOVElGSUVSXS5zdHlsZXMpIHdbTkFNRVNQQUNFX0lERU5USUZJRVJdLnN0eWxlcyA9IHt9O1xuaWYgKCF3W05BTUVTUEFDRV9JREVOVElGSUVSXS5ob29rcykgd1tOQU1FU1BBQ0VfSURFTlRJRklFUl0uaG9va3MgPSB7fTtcbmlmICghd1tOQU1FU1BBQ0VfSURFTlRJRklFUl0uc2hpbXMpIHdbTkFNRVNQQUNFX0lERU5USUZJRVJdLnNoaW1zID0gW107XG52YXIgbmFtZXNwYWNlID0gd1tOQU1FU1BBQ0VfSURFTlRJRklFUl07XG5cbnZhciBmdW5jdGlvbnMgPSBbXTtcblxudmFyIGxpc3RlbmVyID0gZnVuY3Rpb24gbGlzdGVuZXIoKSB7XG4gIERPQ1VNRU5ULnJlbW92ZUV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBsaXN0ZW5lcik7XG4gIGxvYWRlZCA9IDE7XG4gIGZ1bmN0aW9ucy5tYXAoZnVuY3Rpb24gKGZuKSB7XG4gICAgcmV0dXJuIGZuKCk7XG4gIH0pO1xufTtcblxudmFyIGxvYWRlZCA9IGZhbHNlO1xuXG5pZiAoSVNfRE9NKSB7XG4gIGxvYWRlZCA9IChET0NVTUVOVC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwgPyAvXmxvYWRlZHxeYy8gOiAvXmxvYWRlZHxeaXxeYy8pLnRlc3QoRE9DVU1FTlQucmVhZHlTdGF0ZSk7XG4gIGlmICghbG9hZGVkKSBET0NVTUVOVC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgbGlzdGVuZXIpO1xufVxuXG5mdW5jdGlvbiBkb21yZWFkeSAoZm4pIHtcbiAgaWYgKCFJU19ET00pIHJldHVybjtcbiAgbG9hZGVkID8gc2V0VGltZW91dChmbiwgMCkgOiBmdW5jdGlvbnMucHVzaChmbik7XG59XG5cbnZhciBQRU5ESU5HID0gJ3BlbmRpbmcnO1xudmFyIFNFVFRMRUQgPSAnc2V0dGxlZCc7XG52YXIgRlVMRklMTEVEID0gJ2Z1bGZpbGxlZCc7XG52YXIgUkVKRUNURUQgPSAncmVqZWN0ZWQnO1xuXG52YXIgTk9PUCA9IGZ1bmN0aW9uIE5PT1AoKSB7fTtcblxudmFyIGlzTm9kZSA9IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBnbG9iYWwucHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGdsb2JhbC5wcm9jZXNzLmVtaXQgPT09ICdmdW5jdGlvbic7XG52YXIgYXN5bmNTZXRUaW1lciA9IHR5cGVvZiBzZXRJbW1lZGlhdGUgPT09ICd1bmRlZmluZWQnID8gc2V0VGltZW91dCA6IHNldEltbWVkaWF0ZTtcbnZhciBhc3luY1F1ZXVlID0gW107XG52YXIgYXN5bmNUaW1lcjtcblxuZnVuY3Rpb24gYXN5bmNGbHVzaCgpIHtcbiAgLy8gcnVuIHByb21pc2UgY2FsbGJhY2tzXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXN5bmNRdWV1ZS5sZW5ndGg7IGkrKykge1xuICAgIGFzeW5jUXVldWVbaV1bMF0oYXN5bmNRdWV1ZVtpXVsxXSk7XG4gIH0gLy8gcmVzZXQgYXN5bmMgYXN5bmNRdWV1ZVxuXG5cbiAgYXN5bmNRdWV1ZSA9IFtdO1xuICBhc3luY1RpbWVyID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGFzeW5jQ2FsbChjYWxsYmFjaywgYXJnKSB7XG4gIGFzeW5jUXVldWUucHVzaChbY2FsbGJhY2ssIGFyZ10pO1xuXG4gIGlmICghYXN5bmNUaW1lcikge1xuICAgIGFzeW5jVGltZXIgPSB0cnVlO1xuICAgIGFzeW5jU2V0VGltZXIoYXN5bmNGbHVzaCwgMCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW52b2tlUmVzb2x2ZXIocmVzb2x2ZXIsIHByb21pc2UpIHtcbiAgZnVuY3Rpb24gcmVzb2x2ZVByb21pc2UodmFsdWUpIHtcbiAgICByZXNvbHZlKHByb21pc2UsIHZhbHVlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlamVjdFByb21pc2UocmVhc29uKSB7XG4gICAgcmVqZWN0KHByb21pc2UsIHJlYXNvbik7XG4gIH1cblxuICB0cnkge1xuICAgIHJlc29sdmVyKHJlc29sdmVQcm9taXNlLCByZWplY3RQcm9taXNlKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJlamVjdFByb21pc2UoZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW52b2tlQ2FsbGJhY2soc3Vic2NyaWJlcikge1xuICB2YXIgb3duZXIgPSBzdWJzY3JpYmVyLm93bmVyO1xuICB2YXIgc2V0dGxlZCA9IG93bmVyLl9zdGF0ZTtcbiAgdmFyIHZhbHVlID0gb3duZXIuX2RhdGE7XG4gIHZhciBjYWxsYmFjayA9IHN1YnNjcmliZXJbc2V0dGxlZF07XG4gIHZhciBwcm9taXNlID0gc3Vic2NyaWJlci50aGVuO1xuXG4gIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICBzZXR0bGVkID0gRlVMRklMTEVEO1xuXG4gICAgdHJ5IHtcbiAgICAgIHZhbHVlID0gY2FsbGJhY2sodmFsdWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlamVjdChwcm9taXNlLCBlKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWhhbmRsZVRoZW5hYmxlKHByb21pc2UsIHZhbHVlKSkge1xuICAgIGlmIChzZXR0bGVkID09PSBGVUxGSUxMRUQpIHtcbiAgICAgIHJlc29sdmUocHJvbWlzZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChzZXR0bGVkID09PSBSRUpFQ1RFRCkge1xuICAgICAgcmVqZWN0KHByb21pc2UsIHZhbHVlKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaGFuZGxlVGhlbmFibGUocHJvbWlzZSwgdmFsdWUpIHtcbiAgdmFyIHJlc29sdmVkO1xuXG4gIHRyeSB7XG4gICAgaWYgKHByb21pc2UgPT09IHZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBIHByb21pc2VzIGNhbGxiYWNrIGNhbm5vdCByZXR1cm4gdGhhdCBzYW1lIHByb21pc2UuJyk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlICYmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgfHwgX3R5cGVvZih2YWx1ZSkgPT09ICdvYmplY3QnKSkge1xuICAgICAgLy8gdGhlbiBzaG91bGQgYmUgcmV0cmlldmVkIG9ubHkgb25jZVxuICAgICAgdmFyIHRoZW4gPSB2YWx1ZS50aGVuO1xuXG4gICAgICBpZiAodHlwZW9mIHRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhlbi5jYWxsKHZhbHVlLCBmdW5jdGlvbiAodmFsKSB7XG4gICAgICAgICAgaWYgKCFyZXNvbHZlZCkge1xuICAgICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IHZhbCkge1xuICAgICAgICAgICAgICBmdWxmaWxsKHByb21pc2UsIHZhbCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXNvbHZlKHByb21pc2UsIHZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICAgICAgaWYgKCFyZXNvbHZlZCkge1xuICAgICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmVqZWN0KHByb21pc2UsIHJlYXNvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCFyZXNvbHZlZCkge1xuICAgICAgcmVqZWN0KHByb21pc2UsIGUpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlKHByb21pc2UsIHZhbHVlKSB7XG4gIGlmIChwcm9taXNlID09PSB2YWx1ZSB8fCAhaGFuZGxlVGhlbmFibGUocHJvbWlzZSwgdmFsdWUpKSB7XG4gICAgZnVsZmlsbChwcm9taXNlLCB2YWx1ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZnVsZmlsbChwcm9taXNlLCB2YWx1ZSkge1xuICBpZiAocHJvbWlzZS5fc3RhdGUgPT09IFBFTkRJTkcpIHtcbiAgICBwcm9taXNlLl9zdGF0ZSA9IFNFVFRMRUQ7XG4gICAgcHJvbWlzZS5fZGF0YSA9IHZhbHVlO1xuICAgIGFzeW5jQ2FsbChwdWJsaXNoRnVsZmlsbG1lbnQsIHByb21pc2UpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlamVjdChwcm9taXNlLCByZWFzb24pIHtcbiAgaWYgKHByb21pc2UuX3N0YXRlID09PSBQRU5ESU5HKSB7XG4gICAgcHJvbWlzZS5fc3RhdGUgPSBTRVRUTEVEO1xuICAgIHByb21pc2UuX2RhdGEgPSByZWFzb247XG4gICAgYXN5bmNDYWxsKHB1Ymxpc2hSZWplY3Rpb24sIHByb21pc2UpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHB1Ymxpc2gocHJvbWlzZSkge1xuICBwcm9taXNlLl90aGVuID0gcHJvbWlzZS5fdGhlbi5mb3JFYWNoKGludm9rZUNhbGxiYWNrKTtcbn1cblxuZnVuY3Rpb24gcHVibGlzaEZ1bGZpbGxtZW50KHByb21pc2UpIHtcbiAgcHJvbWlzZS5fc3RhdGUgPSBGVUxGSUxMRUQ7XG4gIHB1Ymxpc2gocHJvbWlzZSk7XG59XG5cbmZ1bmN0aW9uIHB1Ymxpc2hSZWplY3Rpb24ocHJvbWlzZSkge1xuICBwcm9taXNlLl9zdGF0ZSA9IFJFSkVDVEVEO1xuICBwdWJsaXNoKHByb21pc2UpO1xuXG4gIGlmICghcHJvbWlzZS5faGFuZGxlZCAmJiBpc05vZGUpIHtcbiAgICBnbG9iYWwucHJvY2Vzcy5lbWl0KCd1bmhhbmRsZWRSZWplY3Rpb24nLCBwcm9taXNlLl9kYXRhLCBwcm9taXNlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBub3RpZnlSZWplY3Rpb25IYW5kbGVkKHByb21pc2UpIHtcbiAgZ2xvYmFsLnByb2Nlc3MuZW1pdCgncmVqZWN0aW9uSGFuZGxlZCcsIHByb21pc2UpO1xufVxuLyoqXG4gKiBAY2xhc3NcbiAqL1xuXG5cbmZ1bmN0aW9uIFAocmVzb2x2ZXIpIHtcbiAgaWYgKHR5cGVvZiByZXNvbHZlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb21pc2UgcmVzb2x2ZXIgJyArIHJlc29sdmVyICsgJyBpcyBub3QgYSBmdW5jdGlvbicpO1xuICB9XG5cbiAgaWYgKHRoaXMgaW5zdGFuY2VvZiBQID09PSBmYWxzZSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ZhaWxlZCB0byBjb25zdHJ1Y3QgXFwnUHJvbWlzZVxcJzogUGxlYXNlIHVzZSB0aGUgXFwnbmV3XFwnIG9wZXJhdG9yLCB0aGlzIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uJyk7XG4gIH1cblxuICB0aGlzLl90aGVuID0gW107XG4gIGludm9rZVJlc29sdmVyKHJlc29sdmVyLCB0aGlzKTtcbn1cblxuUC5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBQLFxuICBfc3RhdGU6IFBFTkRJTkcsXG4gIF90aGVuOiBudWxsLFxuICBfZGF0YTogdW5kZWZpbmVkLFxuICBfaGFuZGxlZDogZmFsc2UsXG4gIHRoZW46IGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsbWVudCwgb25SZWplY3Rpb24pIHtcbiAgICB2YXIgc3Vic2NyaWJlciA9IHtcbiAgICAgIG93bmVyOiB0aGlzLFxuICAgICAgdGhlbjogbmV3IHRoaXMuY29uc3RydWN0b3IoTk9PUCksXG4gICAgICBmdWxmaWxsZWQ6IG9uRnVsZmlsbG1lbnQsXG4gICAgICByZWplY3RlZDogb25SZWplY3Rpb25cbiAgICB9O1xuXG4gICAgaWYgKChvblJlamVjdGlvbiB8fCBvbkZ1bGZpbGxtZW50KSAmJiAhdGhpcy5faGFuZGxlZCkge1xuICAgICAgdGhpcy5faGFuZGxlZCA9IHRydWU7XG5cbiAgICAgIGlmICh0aGlzLl9zdGF0ZSA9PT0gUkVKRUNURUQgJiYgaXNOb2RlKSB7XG4gICAgICAgIGFzeW5jQ2FsbChub3RpZnlSZWplY3Rpb25IYW5kbGVkLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RhdGUgPT09IEZVTEZJTExFRCB8fCB0aGlzLl9zdGF0ZSA9PT0gUkVKRUNURUQpIHtcbiAgICAgIC8vIGFscmVhZHkgcmVzb2x2ZWQsIGNhbGwgY2FsbGJhY2sgYXN5bmNcbiAgICAgIGFzeW5jQ2FsbChpbnZva2VDYWxsYmFjaywgc3Vic2NyaWJlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHN1YnNjcmliZVxuICAgICAgdGhpcy5fdGhlbi5wdXNoKHN1YnNjcmliZXIpO1xuICAgIH1cblxuICAgIHJldHVybiBzdWJzY3JpYmVyLnRoZW47XG4gIH0sXG4gIGNhdGNoOiBmdW5jdGlvbiBfY2F0Y2gob25SZWplY3Rpb24pIHtcbiAgICByZXR1cm4gdGhpcy50aGVuKG51bGwsIG9uUmVqZWN0aW9uKTtcbiAgfVxufTtcblxuUC5hbGwgPSBmdW5jdGlvbiAocHJvbWlzZXMpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHByb21pc2VzKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1lvdSBtdXN0IHBhc3MgYW4gYXJyYXkgdG8gUHJvbWlzZS5hbGwoKS4nKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIHJlc3VsdHMgPSBbXTtcbiAgICB2YXIgcmVtYWluaW5nID0gMDtcblxuICAgIGZ1bmN0aW9uIHJlc29sdmVyKGluZGV4KSB7XG4gICAgICByZW1haW5pbmcrKztcbiAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgcmVzdWx0c1tpbmRleF0gPSB2YWx1ZTtcblxuICAgICAgICBpZiAoISAtLXJlbWFpbmluZykge1xuICAgICAgICAgIHJlc29sdmUocmVzdWx0cyk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDAsIHByb21pc2U7IGkgPCBwcm9taXNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgcHJvbWlzZSA9IHByb21pc2VzW2ldO1xuXG4gICAgICBpZiAocHJvbWlzZSAmJiB0eXBlb2YgcHJvbWlzZS50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHByb21pc2UudGhlbihyZXNvbHZlcihpKSwgcmVqZWN0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdHNbaV0gPSBwcm9taXNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcmVtYWluaW5nKSB7XG4gICAgICByZXNvbHZlKHJlc3VsdHMpO1xuICAgIH1cbiAgfSk7XG59O1xuXG5QLnJhY2UgPSBmdW5jdGlvbiAocHJvbWlzZXMpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHByb21pc2VzKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1lvdSBtdXN0IHBhc3MgYW4gYXJyYXkgdG8gUHJvbWlzZS5yYWNlKCkuJyk7XG4gIH1cblxuICByZXR1cm4gbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGZvciAodmFyIGkgPSAwLCBwcm9taXNlOyBpIDwgcHJvbWlzZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHByb21pc2UgPSBwcm9taXNlc1tpXTtcblxuICAgICAgaWYgKHByb21pc2UgJiYgdHlwZW9mIHByb21pc2UudGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBwcm9taXNlLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUocHJvbWlzZSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn07XG5cblAucmVzb2x2ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICBpZiAodmFsdWUgJiYgX3R5cGVvZih2YWx1ZSkgPT09ICdvYmplY3QnICYmIHZhbHVlLmNvbnN0cnVjdG9yID09PSBQKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgcmVzb2x2ZSh2YWx1ZSk7XG4gIH0pO1xufTtcblxuUC5yZWplY3QgPSBmdW5jdGlvbiAocmVhc29uKSB7XG4gIHJldHVybiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgcmVqZWN0KHJlYXNvbik7XG4gIH0pO1xufTtcblxudmFyIHBpY2tlZCA9IHR5cGVvZiBQcm9taXNlID09PSAnZnVuY3Rpb24nID8gUHJvbWlzZSA6IFA7XG5cbnZhciBkID0gVU5JVFNfSU5fR1JJRDtcbnZhciBtZWFuaW5nbGVzc1RyYW5zZm9ybSA9IHtcbiAgc2l6ZTogMTYsXG4gIHg6IDAsXG4gIHk6IDAsXG4gIHJvdGF0ZTogMCxcbiAgZmxpcFg6IGZhbHNlLFxuICBmbGlwWTogZmFsc2Vcbn07XG5cbmZ1bmN0aW9uIGlzUmVzZXJ2ZWQobmFtZSkge1xuICByZXR1cm4gflJFU0VSVkVEX0NMQVNTRVMuaW5kZXhPZihuYW1lKTtcbn1cbmZ1bmN0aW9uIGluc2VydENzcyhjc3MpIHtcbiAgaWYgKCFjc3MgfHwgIUlTX0RPTSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBzdHlsZSA9IERPQ1VNRU5ULmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHN0eWxlLnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0L2NzcycpO1xuICBzdHlsZS5pbm5lckhUTUwgPSBjc3M7XG4gIHZhciBoZWFkQ2hpbGRyZW4gPSBET0NVTUVOVC5oZWFkLmNoaWxkTm9kZXM7XG4gIHZhciBiZWZvcmVDaGlsZCA9IG51bGw7XG5cbiAgZm9yICh2YXIgaSA9IGhlYWRDaGlsZHJlbi5sZW5ndGggLSAxOyBpID4gLTE7IGktLSkge1xuICAgIHZhciBjaGlsZCA9IGhlYWRDaGlsZHJlbltpXTtcbiAgICB2YXIgdGFnTmFtZSA9IChjaGlsZC50YWdOYW1lIHx8ICcnKS50b1VwcGVyQ2FzZSgpO1xuXG4gICAgaWYgKFsnU1RZTEUnLCAnTElOSyddLmluZGV4T2YodGFnTmFtZSkgPiAtMSkge1xuICAgICAgYmVmb3JlQ2hpbGQgPSBjaGlsZDtcbiAgICB9XG4gIH1cblxuICBET0NVTUVOVC5oZWFkLmluc2VydEJlZm9yZShzdHlsZSwgYmVmb3JlQ2hpbGQpO1xuICByZXR1cm4gY3NzO1xufVxudmFyIGlkUG9vbCA9ICcwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWic7XG5mdW5jdGlvbiBuZXh0VW5pcXVlSWQoKSB7XG4gIHZhciBzaXplID0gMTI7XG4gIHZhciBpZCA9ICcnO1xuXG4gIHdoaWxlIChzaXplLS0gPiAwKSB7XG4gICAgaWQgKz0gaWRQb29sW01hdGgucmFuZG9tKCkgKiA2MiB8IDBdO1xuICB9XG5cbiAgcmV0dXJuIGlkO1xufVxuZnVuY3Rpb24gdG9BcnJheShvYmopIHtcbiAgdmFyIGFycmF5ID0gW107XG5cbiAgZm9yICh2YXIgaSA9IChvYmogfHwgW10pLmxlbmd0aCA+Pj4gMDsgaS0tOykge1xuICAgIGFycmF5W2ldID0gb2JqW2ldO1xuICB9XG5cbiAgcmV0dXJuIGFycmF5O1xufVxuZnVuY3Rpb24gY2xhc3NBcnJheShub2RlKSB7XG4gIGlmIChub2RlLmNsYXNzTGlzdCkge1xuICAgIHJldHVybiB0b0FycmF5KG5vZGUuY2xhc3NMaXN0KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKG5vZGUuZ2V0QXR0cmlidXRlKCdjbGFzcycpIHx8ICcnKS5zcGxpdCgnICcpLmZpbHRlcihmdW5jdGlvbiAoaSkge1xuICAgICAgcmV0dXJuIGk7XG4gICAgfSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGdldEljb25OYW1lKGZhbWlseVByZWZpeCwgY2xzKSB7XG4gIHZhciBwYXJ0cyA9IGNscy5zcGxpdCgnLScpO1xuICB2YXIgcHJlZml4ID0gcGFydHNbMF07XG4gIHZhciBpY29uTmFtZSA9IHBhcnRzLnNsaWNlKDEpLmpvaW4oJy0nKTtcblxuICBpZiAocHJlZml4ID09PSBmYW1pbHlQcmVmaXggJiYgaWNvbk5hbWUgIT09ICcnICYmICFpc1Jlc2VydmVkKGljb25OYW1lKSkge1xuICAgIHJldHVybiBpY29uTmFtZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuZnVuY3Rpb24gaHRtbEVzY2FwZShzdHIpIHtcbiAgcmV0dXJuIFwiXCIuY29uY2F0KHN0cikucmVwbGFjZSgvJi9nLCAnJmFtcDsnKS5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7JykucmVwbGFjZSgvJy9nLCAnJiMzOTsnKS5yZXBsYWNlKC88L2csICcmbHQ7JykucmVwbGFjZSgvPi9nLCAnJmd0OycpO1xufVxuZnVuY3Rpb24gam9pbkF0dHJpYnV0ZXMoYXR0cmlidXRlcykge1xuICByZXR1cm4gT2JqZWN0LmtleXMoYXR0cmlidXRlcyB8fCB7fSkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGF0dHJpYnV0ZU5hbWUpIHtcbiAgICByZXR1cm4gYWNjICsgXCJcIi5jb25jYXQoYXR0cmlidXRlTmFtZSwgXCI9XFxcIlwiKS5jb25jYXQoaHRtbEVzY2FwZShhdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdKSwgXCJcXFwiIFwiKTtcbiAgfSwgJycpLnRyaW0oKTtcbn1cbmZ1bmN0aW9uIGpvaW5TdHlsZXMoc3R5bGVzKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhzdHlsZXMgfHwge30pLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBzdHlsZU5hbWUpIHtcbiAgICByZXR1cm4gYWNjICsgXCJcIi5jb25jYXQoc3R5bGVOYW1lLCBcIjogXCIpLmNvbmNhdChzdHlsZXNbc3R5bGVOYW1lXSwgXCI7XCIpO1xuICB9LCAnJyk7XG59XG5mdW5jdGlvbiB0cmFuc2Zvcm1Jc01lYW5pbmdmdWwodHJhbnNmb3JtKSB7XG4gIHJldHVybiB0cmFuc2Zvcm0uc2l6ZSAhPT0gbWVhbmluZ2xlc3NUcmFuc2Zvcm0uc2l6ZSB8fCB0cmFuc2Zvcm0ueCAhPT0gbWVhbmluZ2xlc3NUcmFuc2Zvcm0ueCB8fCB0cmFuc2Zvcm0ueSAhPT0gbWVhbmluZ2xlc3NUcmFuc2Zvcm0ueSB8fCB0cmFuc2Zvcm0ucm90YXRlICE9PSBtZWFuaW5nbGVzc1RyYW5zZm9ybS5yb3RhdGUgfHwgdHJhbnNmb3JtLmZsaXBYIHx8IHRyYW5zZm9ybS5mbGlwWTtcbn1cbmZ1bmN0aW9uIHRyYW5zZm9ybUZvclN2ZyhfcmVmKSB7XG4gIHZhciB0cmFuc2Zvcm0gPSBfcmVmLnRyYW5zZm9ybSxcbiAgICAgIGNvbnRhaW5lcldpZHRoID0gX3JlZi5jb250YWluZXJXaWR0aCxcbiAgICAgIGljb25XaWR0aCA9IF9yZWYuaWNvbldpZHRoO1xuICB2YXIgb3V0ZXIgPSB7XG4gICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZShcIi5jb25jYXQoY29udGFpbmVyV2lkdGggLyAyLCBcIiAyNTYpXCIpXG4gIH07XG4gIHZhciBpbm5lclRyYW5zbGF0ZSA9IFwidHJhbnNsYXRlKFwiLmNvbmNhdCh0cmFuc2Zvcm0ueCAqIDMyLCBcIiwgXCIpLmNvbmNhdCh0cmFuc2Zvcm0ueSAqIDMyLCBcIikgXCIpO1xuICB2YXIgaW5uZXJTY2FsZSA9IFwic2NhbGUoXCIuY29uY2F0KHRyYW5zZm9ybS5zaXplIC8gMTYgKiAodHJhbnNmb3JtLmZsaXBYID8gLTEgOiAxKSwgXCIsIFwiKS5jb25jYXQodHJhbnNmb3JtLnNpemUgLyAxNiAqICh0cmFuc2Zvcm0uZmxpcFkgPyAtMSA6IDEpLCBcIikgXCIpO1xuICB2YXIgaW5uZXJSb3RhdGUgPSBcInJvdGF0ZShcIi5jb25jYXQodHJhbnNmb3JtLnJvdGF0ZSwgXCIgMCAwKVwiKTtcbiAgdmFyIGlubmVyID0ge1xuICAgIHRyYW5zZm9ybTogXCJcIi5jb25jYXQoaW5uZXJUcmFuc2xhdGUsIFwiIFwiKS5jb25jYXQoaW5uZXJTY2FsZSwgXCIgXCIpLmNvbmNhdChpbm5lclJvdGF0ZSlcbiAgfTtcbiAgdmFyIHBhdGggPSB7XG4gICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZShcIi5jb25jYXQoaWNvbldpZHRoIC8gMiAqIC0xLCBcIiAtMjU2KVwiKVxuICB9O1xuICByZXR1cm4ge1xuICAgIG91dGVyOiBvdXRlcixcbiAgICBpbm5lcjogaW5uZXIsXG4gICAgcGF0aDogcGF0aFxuICB9O1xufVxuZnVuY3Rpb24gdHJhbnNmb3JtRm9yQ3NzKF9yZWYyKSB7XG4gIHZhciB0cmFuc2Zvcm0gPSBfcmVmMi50cmFuc2Zvcm0sXG4gICAgICBfcmVmMiR3aWR0aCA9IF9yZWYyLndpZHRoLFxuICAgICAgd2lkdGggPSBfcmVmMiR3aWR0aCA9PT0gdm9pZCAwID8gVU5JVFNfSU5fR1JJRCA6IF9yZWYyJHdpZHRoLFxuICAgICAgX3JlZjIkaGVpZ2h0ID0gX3JlZjIuaGVpZ2h0LFxuICAgICAgaGVpZ2h0ID0gX3JlZjIkaGVpZ2h0ID09PSB2b2lkIDAgPyBVTklUU19JTl9HUklEIDogX3JlZjIkaGVpZ2h0LFxuICAgICAgX3JlZjIkc3RhcnRDZW50ZXJlZCA9IF9yZWYyLnN0YXJ0Q2VudGVyZWQsXG4gICAgICBzdGFydENlbnRlcmVkID0gX3JlZjIkc3RhcnRDZW50ZXJlZCA9PT0gdm9pZCAwID8gZmFsc2UgOiBfcmVmMiRzdGFydENlbnRlcmVkO1xuICB2YXIgdmFsID0gJyc7XG5cbiAgaWYgKHN0YXJ0Q2VudGVyZWQgJiYgSVNfSUUpIHtcbiAgICB2YWwgKz0gXCJ0cmFuc2xhdGUoXCIuY29uY2F0KHRyYW5zZm9ybS54IC8gZCAtIHdpZHRoIC8gMiwgXCJlbSwgXCIpLmNvbmNhdCh0cmFuc2Zvcm0ueSAvIGQgLSBoZWlnaHQgLyAyLCBcImVtKSBcIik7XG4gIH0gZWxzZSBpZiAoc3RhcnRDZW50ZXJlZCkge1xuICAgIHZhbCArPSBcInRyYW5zbGF0ZShjYWxjKC01MCUgKyBcIi5jb25jYXQodHJhbnNmb3JtLnggLyBkLCBcImVtKSwgY2FsYygtNTAlICsgXCIpLmNvbmNhdCh0cmFuc2Zvcm0ueSAvIGQsIFwiZW0pKSBcIik7XG4gIH0gZWxzZSB7XG4gICAgdmFsICs9IFwidHJhbnNsYXRlKFwiLmNvbmNhdCh0cmFuc2Zvcm0ueCAvIGQsIFwiZW0sIFwiKS5jb25jYXQodHJhbnNmb3JtLnkgLyBkLCBcImVtKSBcIik7XG4gIH1cblxuICB2YWwgKz0gXCJzY2FsZShcIi5jb25jYXQodHJhbnNmb3JtLnNpemUgLyBkICogKHRyYW5zZm9ybS5mbGlwWCA/IC0xIDogMSksIFwiLCBcIikuY29uY2F0KHRyYW5zZm9ybS5zaXplIC8gZCAqICh0cmFuc2Zvcm0uZmxpcFkgPyAtMSA6IDEpLCBcIikgXCIpO1xuICB2YWwgKz0gXCJyb3RhdGUoXCIuY29uY2F0KHRyYW5zZm9ybS5yb3RhdGUsIFwiZGVnKSBcIik7XG4gIHJldHVybiB2YWw7XG59XG5cbnZhciBBTExfU1BBQ0UgPSB7XG4gIHg6IDAsXG4gIHk6IDAsXG4gIHdpZHRoOiAnMTAwJScsXG4gIGhlaWdodDogJzEwMCUnXG59O1xuXG5mdW5jdGlvbiBmaWxsQmxhY2soYWJzdHJhY3QpIHtcbiAgdmFyIGZvcmNlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB0cnVlO1xuXG4gIGlmIChhYnN0cmFjdC5hdHRyaWJ1dGVzICYmIChhYnN0cmFjdC5hdHRyaWJ1dGVzLmZpbGwgfHwgZm9yY2UpKSB7XG4gICAgYWJzdHJhY3QuYXR0cmlidXRlcy5maWxsID0gJ2JsYWNrJztcbiAgfVxuXG4gIHJldHVybiBhYnN0cmFjdDtcbn1cblxuZnVuY3Rpb24gZGVHcm91cChhYnN0cmFjdCkge1xuICBpZiAoYWJzdHJhY3QudGFnID09PSAnZycpIHtcbiAgICByZXR1cm4gYWJzdHJhY3QuY2hpbGRyZW47XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFthYnN0cmFjdF07XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFrZUljb25NYXNraW5nIChfcmVmKSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgICBhdHRyaWJ1dGVzID0gX3JlZi5hdHRyaWJ1dGVzLFxuICAgICAgbWFpbiA9IF9yZWYubWFpbixcbiAgICAgIG1hc2sgPSBfcmVmLm1hc2ssXG4gICAgICBleHBsaWNpdE1hc2tJZCA9IF9yZWYubWFza0lkLFxuICAgICAgdHJhbnNmb3JtID0gX3JlZi50cmFuc2Zvcm07XG4gIHZhciBtYWluV2lkdGggPSBtYWluLndpZHRoLFxuICAgICAgbWFpblBhdGggPSBtYWluLmljb247XG4gIHZhciBtYXNrV2lkdGggPSBtYXNrLndpZHRoLFxuICAgICAgbWFza1BhdGggPSBtYXNrLmljb247XG4gIHZhciB0cmFucyA9IHRyYW5zZm9ybUZvclN2Zyh7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2Zvcm0sXG4gICAgY29udGFpbmVyV2lkdGg6IG1hc2tXaWR0aCxcbiAgICBpY29uV2lkdGg6IG1haW5XaWR0aFxuICB9KTtcbiAgdmFyIG1hc2tSZWN0ID0ge1xuICAgIHRhZzogJ3JlY3QnLFxuICAgIGF0dHJpYnV0ZXM6IF9vYmplY3RTcHJlYWQoe30sIEFMTF9TUEFDRSwge1xuICAgICAgZmlsbDogJ3doaXRlJ1xuICAgIH0pXG4gIH07XG4gIHZhciBtYXNrSW5uZXJHcm91cENoaWxkcmVuTWl4aW4gPSBtYWluUGF0aC5jaGlsZHJlbiA/IHtcbiAgICBjaGlsZHJlbjogbWFpblBhdGguY2hpbGRyZW4ubWFwKGZpbGxCbGFjaylcbiAgfSA6IHt9O1xuICB2YXIgbWFza0lubmVyR3JvdXAgPSB7XG4gICAgdGFnOiAnZycsXG4gICAgYXR0cmlidXRlczogX29iamVjdFNwcmVhZCh7fSwgdHJhbnMuaW5uZXIpLFxuICAgIGNoaWxkcmVuOiBbZmlsbEJsYWNrKF9vYmplY3RTcHJlYWQoe1xuICAgICAgdGFnOiBtYWluUGF0aC50YWcsXG4gICAgICBhdHRyaWJ1dGVzOiBfb2JqZWN0U3ByZWFkKHt9LCBtYWluUGF0aC5hdHRyaWJ1dGVzLCB0cmFucy5wYXRoKVxuICAgIH0sIG1hc2tJbm5lckdyb3VwQ2hpbGRyZW5NaXhpbikpXVxuICB9O1xuICB2YXIgbWFza091dGVyR3JvdXAgPSB7XG4gICAgdGFnOiAnZycsXG4gICAgYXR0cmlidXRlczogX29iamVjdFNwcmVhZCh7fSwgdHJhbnMub3V0ZXIpLFxuICAgIGNoaWxkcmVuOiBbbWFza0lubmVyR3JvdXBdXG4gIH07XG4gIHZhciBtYXNrSWQgPSBcIm1hc2stXCIuY29uY2F0KGV4cGxpY2l0TWFza0lkIHx8IG5leHRVbmlxdWVJZCgpKTtcbiAgdmFyIGNsaXBJZCA9IFwiY2xpcC1cIi5jb25jYXQoZXhwbGljaXRNYXNrSWQgfHwgbmV4dFVuaXF1ZUlkKCkpO1xuICB2YXIgbWFza1RhZyA9IHtcbiAgICB0YWc6ICdtYXNrJyxcbiAgICBhdHRyaWJ1dGVzOiBfb2JqZWN0U3ByZWFkKHt9LCBBTExfU1BBQ0UsIHtcbiAgICAgIGlkOiBtYXNrSWQsXG4gICAgICBtYXNrVW5pdHM6ICd1c2VyU3BhY2VPblVzZScsXG4gICAgICBtYXNrQ29udGVudFVuaXRzOiAndXNlclNwYWNlT25Vc2UnXG4gICAgfSksXG4gICAgY2hpbGRyZW46IFttYXNrUmVjdCwgbWFza091dGVyR3JvdXBdXG4gIH07XG4gIHZhciBkZWZzID0ge1xuICAgIHRhZzogJ2RlZnMnLFxuICAgIGNoaWxkcmVuOiBbe1xuICAgICAgdGFnOiAnY2xpcFBhdGgnLFxuICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICBpZDogY2xpcElkXG4gICAgICB9LFxuICAgICAgY2hpbGRyZW46IGRlR3JvdXAobWFza1BhdGgpXG4gICAgfSwgbWFza1RhZ11cbiAgfTtcbiAgY2hpbGRyZW4ucHVzaChkZWZzLCB7XG4gICAgdGFnOiAncmVjdCcsXG4gICAgYXR0cmlidXRlczogX29iamVjdFNwcmVhZCh7XG4gICAgICBmaWxsOiAnY3VycmVudENvbG9yJyxcbiAgICAgICdjbGlwLXBhdGgnOiBcInVybCgjXCIuY29uY2F0KGNsaXBJZCwgXCIpXCIpLFxuICAgICAgbWFzazogXCJ1cmwoI1wiLmNvbmNhdChtYXNrSWQsIFwiKVwiKVxuICAgIH0sIEFMTF9TUEFDRSlcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgIGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXNcbiAgfTtcbn1cblxuZnVuY3Rpb24gbWFrZUljb25TdGFuZGFyZCAoX3JlZikge1xuICB2YXIgY2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuLFxuICAgICAgYXR0cmlidXRlcyA9IF9yZWYuYXR0cmlidXRlcyxcbiAgICAgIG1haW4gPSBfcmVmLm1haW4sXG4gICAgICB0cmFuc2Zvcm0gPSBfcmVmLnRyYW5zZm9ybSxcbiAgICAgIHN0eWxlcyA9IF9yZWYuc3R5bGVzO1xuICB2YXIgc3R5bGVTdHJpbmcgPSBqb2luU3R5bGVzKHN0eWxlcyk7XG5cbiAgaWYgKHN0eWxlU3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICBhdHRyaWJ1dGVzWydzdHlsZSddID0gc3R5bGVTdHJpbmc7XG4gIH1cblxuICBpZiAodHJhbnNmb3JtSXNNZWFuaW5nZnVsKHRyYW5zZm9ybSkpIHtcbiAgICB2YXIgdHJhbnMgPSB0cmFuc2Zvcm1Gb3JTdmcoe1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2Zvcm0sXG4gICAgICBjb250YWluZXJXaWR0aDogbWFpbi53aWR0aCxcbiAgICAgIGljb25XaWR0aDogbWFpbi53aWR0aFxuICAgIH0pO1xuICAgIGNoaWxkcmVuLnB1c2goe1xuICAgICAgdGFnOiAnZycsXG4gICAgICBhdHRyaWJ1dGVzOiBfb2JqZWN0U3ByZWFkKHt9LCB0cmFucy5vdXRlciksXG4gICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgdGFnOiAnZycsXG4gICAgICAgIGF0dHJpYnV0ZXM6IF9vYmplY3RTcHJlYWQoe30sIHRyYW5zLmlubmVyKSxcbiAgICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgICAgdGFnOiBtYWluLmljb24udGFnLFxuICAgICAgICAgIGNoaWxkcmVuOiBtYWluLmljb24uY2hpbGRyZW4sXG4gICAgICAgICAgYXR0cmlidXRlczogX29iamVjdFNwcmVhZCh7fSwgbWFpbi5pY29uLmF0dHJpYnV0ZXMsIHRyYW5zLnBhdGgpXG4gICAgICAgIH1dXG4gICAgICB9XVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGNoaWxkcmVuLnB1c2gobWFpbi5pY29uKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgIGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXNcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXNJY29uIChfcmVmKSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgICBtYWluID0gX3JlZi5tYWluLFxuICAgICAgbWFzayA9IF9yZWYubWFzayxcbiAgICAgIGF0dHJpYnV0ZXMgPSBfcmVmLmF0dHJpYnV0ZXMsXG4gICAgICBzdHlsZXMgPSBfcmVmLnN0eWxlcyxcbiAgICAgIHRyYW5zZm9ybSA9IF9yZWYudHJhbnNmb3JtO1xuXG4gIGlmICh0cmFuc2Zvcm1Jc01lYW5pbmdmdWwodHJhbnNmb3JtKSAmJiBtYWluLmZvdW5kICYmICFtYXNrLmZvdW5kKSB7XG4gICAgdmFyIHdpZHRoID0gbWFpbi53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gbWFpbi5oZWlnaHQ7XG4gICAgdmFyIG9mZnNldCA9IHtcbiAgICAgIHg6IHdpZHRoIC8gaGVpZ2h0IC8gMixcbiAgICAgIHk6IDAuNVxuICAgIH07XG4gICAgYXR0cmlidXRlc1snc3R5bGUnXSA9IGpvaW5TdHlsZXMoX29iamVjdFNwcmVhZCh7fSwgc3R5bGVzLCB7XG4gICAgICAndHJhbnNmb3JtLW9yaWdpbic6IFwiXCIuY29uY2F0KG9mZnNldC54ICsgdHJhbnNmb3JtLnggLyAxNiwgXCJlbSBcIikuY29uY2F0KG9mZnNldC55ICsgdHJhbnNmb3JtLnkgLyAxNiwgXCJlbVwiKVxuICAgIH0pKTtcbiAgfVxuXG4gIHJldHVybiBbe1xuICAgIHRhZzogJ3N2ZycsXG4gICAgYXR0cmlidXRlczogYXR0cmlidXRlcyxcbiAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgfV07XG59XG5cbmZ1bmN0aW9uIGFzU3ltYm9sIChfcmVmKSB7XG4gIHZhciBwcmVmaXggPSBfcmVmLnByZWZpeCxcbiAgICAgIGljb25OYW1lID0gX3JlZi5pY29uTmFtZSxcbiAgICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbixcbiAgICAgIGF0dHJpYnV0ZXMgPSBfcmVmLmF0dHJpYnV0ZXMsXG4gICAgICBzeW1ib2wgPSBfcmVmLnN5bWJvbDtcbiAgdmFyIGlkID0gc3ltYm9sID09PSB0cnVlID8gXCJcIi5jb25jYXQocHJlZml4LCBcIi1cIikuY29uY2F0KGNvbmZpZy5mYW1pbHlQcmVmaXgsIFwiLVwiKS5jb25jYXQoaWNvbk5hbWUpIDogc3ltYm9sO1xuICByZXR1cm4gW3tcbiAgICB0YWc6ICdzdmcnLFxuICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgIHN0eWxlOiAnZGlzcGxheTogbm9uZTsnXG4gICAgfSxcbiAgICBjaGlsZHJlbjogW3tcbiAgICAgIHRhZzogJ3N5bWJvbCcsXG4gICAgICBhdHRyaWJ1dGVzOiBfb2JqZWN0U3ByZWFkKHt9LCBhdHRyaWJ1dGVzLCB7XG4gICAgICAgIGlkOiBpZFxuICAgICAgfSksXG4gICAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgICB9XVxuICB9XTtcbn1cblxuZnVuY3Rpb24gbWFrZUlubGluZVN2Z0Fic3RyYWN0KHBhcmFtcykge1xuICB2YXIgX3BhcmFtcyRpY29ucyA9IHBhcmFtcy5pY29ucyxcbiAgICAgIG1haW4gPSBfcGFyYW1zJGljb25zLm1haW4sXG4gICAgICBtYXNrID0gX3BhcmFtcyRpY29ucy5tYXNrLFxuICAgICAgcHJlZml4ID0gcGFyYW1zLnByZWZpeCxcbiAgICAgIGljb25OYW1lID0gcGFyYW1zLmljb25OYW1lLFxuICAgICAgdHJhbnNmb3JtID0gcGFyYW1zLnRyYW5zZm9ybSxcbiAgICAgIHN5bWJvbCA9IHBhcmFtcy5zeW1ib2wsXG4gICAgICB0aXRsZSA9IHBhcmFtcy50aXRsZSxcbiAgICAgIG1hc2tJZCA9IHBhcmFtcy5tYXNrSWQsXG4gICAgICB0aXRsZUlkID0gcGFyYW1zLnRpdGxlSWQsXG4gICAgICBleHRyYSA9IHBhcmFtcy5leHRyYSxcbiAgICAgIF9wYXJhbXMkd2F0Y2hhYmxlID0gcGFyYW1zLndhdGNoYWJsZSxcbiAgICAgIHdhdGNoYWJsZSA9IF9wYXJhbXMkd2F0Y2hhYmxlID09PSB2b2lkIDAgPyBmYWxzZSA6IF9wYXJhbXMkd2F0Y2hhYmxlO1xuXG4gIHZhciBfcmVmID0gbWFzay5mb3VuZCA/IG1hc2sgOiBtYWluLFxuICAgICAgd2lkdGggPSBfcmVmLndpZHRoLFxuICAgICAgaGVpZ2h0ID0gX3JlZi5oZWlnaHQ7XG5cbiAgdmFyIHdpZHRoQ2xhc3MgPSBcImZhLXctXCIuY29uY2F0KE1hdGguY2VpbCh3aWR0aCAvIGhlaWdodCAqIDE2KSk7XG4gIHZhciBhdHRyQ2xhc3MgPSBbY29uZmlnLnJlcGxhY2VtZW50Q2xhc3MsIGljb25OYW1lID8gXCJcIi5jb25jYXQoY29uZmlnLmZhbWlseVByZWZpeCwgXCItXCIpLmNvbmNhdChpY29uTmFtZSkgOiAnJywgd2lkdGhDbGFzc10uZmlsdGVyKGZ1bmN0aW9uIChjKSB7XG4gICAgcmV0dXJuIGV4dHJhLmNsYXNzZXMuaW5kZXhPZihjKSA9PT0gLTE7XG4gIH0pLmNvbmNhdChleHRyYS5jbGFzc2VzKS5qb2luKCcgJyk7XG4gIHZhciBjb250ZW50ID0ge1xuICAgIGNoaWxkcmVuOiBbXSxcbiAgICBhdHRyaWJ1dGVzOiBfb2JqZWN0U3ByZWFkKHt9LCBleHRyYS5hdHRyaWJ1dGVzLCB7XG4gICAgICAnZGF0YS1wcmVmaXgnOiBwcmVmaXgsXG4gICAgICAnZGF0YS1pY29uJzogaWNvbk5hbWUsXG4gICAgICAnY2xhc3MnOiBhdHRyQ2xhc3MsXG4gICAgICAncm9sZSc6IGV4dHJhLmF0dHJpYnV0ZXMucm9sZSB8fCAnaW1nJyxcbiAgICAgICd4bWxucyc6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsXG4gICAgICAndmlld0JveCc6IFwiMCAwIFwiLmNvbmNhdCh3aWR0aCwgXCIgXCIpLmNvbmNhdChoZWlnaHQpXG4gICAgfSlcbiAgfTtcblxuICBpZiAod2F0Y2hhYmxlKSB7XG4gICAgY29udGVudC5hdHRyaWJ1dGVzW0RBVEFfRkFfSTJTVkddID0gJyc7XG4gIH1cblxuICBpZiAodGl0bGUpIGNvbnRlbnQuY2hpbGRyZW4ucHVzaCh7XG4gICAgdGFnOiAndGl0bGUnLFxuICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgIGlkOiBjb250ZW50LmF0dHJpYnV0ZXNbJ2FyaWEtbGFiZWxsZWRieSddIHx8IFwidGl0bGUtXCIuY29uY2F0KHRpdGxlSWQgfHwgbmV4dFVuaXF1ZUlkKCkpXG4gICAgfSxcbiAgICBjaGlsZHJlbjogW3RpdGxlXVxuICB9KTtcblxuICB2YXIgYXJncyA9IF9vYmplY3RTcHJlYWQoe30sIGNvbnRlbnQsIHtcbiAgICBwcmVmaXg6IHByZWZpeCxcbiAgICBpY29uTmFtZTogaWNvbk5hbWUsXG4gICAgbWFpbjogbWFpbixcbiAgICBtYXNrOiBtYXNrLFxuICAgIG1hc2tJZDogbWFza0lkLFxuICAgIHRyYW5zZm9ybTogdHJhbnNmb3JtLFxuICAgIHN5bWJvbDogc3ltYm9sLFxuICAgIHN0eWxlczogZXh0cmEuc3R5bGVzXG4gIH0pO1xuXG4gIHZhciBfcmVmMiA9IG1hc2suZm91bmQgJiYgbWFpbi5mb3VuZCA/IG1ha2VJY29uTWFza2luZyhhcmdzKSA6IG1ha2VJY29uU3RhbmRhcmQoYXJncyksXG4gICAgICBjaGlsZHJlbiA9IF9yZWYyLmNoaWxkcmVuLFxuICAgICAgYXR0cmlidXRlcyA9IF9yZWYyLmF0dHJpYnV0ZXM7XG5cbiAgYXJncy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICBhcmdzLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xuXG4gIGlmIChzeW1ib2wpIHtcbiAgICByZXR1cm4gYXNTeW1ib2woYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGFzSWNvbihhcmdzKTtcbiAgfVxufVxuZnVuY3Rpb24gbWFrZUxheWVyc1RleHRBYnN0cmFjdChwYXJhbXMpIHtcbiAgdmFyIGNvbnRlbnQgPSBwYXJhbXMuY29udGVudCxcbiAgICAgIHdpZHRoID0gcGFyYW1zLndpZHRoLFxuICAgICAgaGVpZ2h0ID0gcGFyYW1zLmhlaWdodCxcbiAgICAgIHRyYW5zZm9ybSA9IHBhcmFtcy50cmFuc2Zvcm0sXG4gICAgICB0aXRsZSA9IHBhcmFtcy50aXRsZSxcbiAgICAgIGV4dHJhID0gcGFyYW1zLmV4dHJhLFxuICAgICAgX3BhcmFtcyR3YXRjaGFibGUyID0gcGFyYW1zLndhdGNoYWJsZSxcbiAgICAgIHdhdGNoYWJsZSA9IF9wYXJhbXMkd2F0Y2hhYmxlMiA9PT0gdm9pZCAwID8gZmFsc2UgOiBfcGFyYW1zJHdhdGNoYWJsZTI7XG5cbiAgdmFyIGF0dHJpYnV0ZXMgPSBfb2JqZWN0U3ByZWFkKHt9LCBleHRyYS5hdHRyaWJ1dGVzLCB0aXRsZSA/IHtcbiAgICAndGl0bGUnOiB0aXRsZVxuICB9IDoge30sIHtcbiAgICAnY2xhc3MnOiBleHRyYS5jbGFzc2VzLmpvaW4oJyAnKVxuICB9KTtcblxuICBpZiAod2F0Y2hhYmxlKSB7XG4gICAgYXR0cmlidXRlc1tEQVRBX0ZBX0kyU1ZHXSA9ICcnO1xuICB9XG5cbiAgdmFyIHN0eWxlcyA9IF9vYmplY3RTcHJlYWQoe30sIGV4dHJhLnN0eWxlcyk7XG5cbiAgaWYgKHRyYW5zZm9ybUlzTWVhbmluZ2Z1bCh0cmFuc2Zvcm0pKSB7XG4gICAgc3R5bGVzWyd0cmFuc2Zvcm0nXSA9IHRyYW5zZm9ybUZvckNzcyh7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zZm9ybSxcbiAgICAgIHN0YXJ0Q2VudGVyZWQ6IHRydWUsXG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodFxuICAgIH0pO1xuICAgIHN0eWxlc1snLXdlYmtpdC10cmFuc2Zvcm0nXSA9IHN0eWxlc1sndHJhbnNmb3JtJ107XG4gIH1cblxuICB2YXIgc3R5bGVTdHJpbmcgPSBqb2luU3R5bGVzKHN0eWxlcyk7XG5cbiAgaWYgKHN0eWxlU3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICBhdHRyaWJ1dGVzWydzdHlsZSddID0gc3R5bGVTdHJpbmc7XG4gIH1cblxuICB2YXIgdmFsID0gW107XG4gIHZhbC5wdXNoKHtcbiAgICB0YWc6ICdzcGFuJyxcbiAgICBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzLFxuICAgIGNoaWxkcmVuOiBbY29udGVudF1cbiAgfSk7XG5cbiAgaWYgKHRpdGxlKSB7XG4gICAgdmFsLnB1c2goe1xuICAgICAgdGFnOiAnc3BhbicsXG4gICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgIGNsYXNzOiAnc3Itb25seSdcbiAgICAgIH0sXG4gICAgICBjaGlsZHJlbjogW3RpdGxlXVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHZhbDtcbn1cbmZ1bmN0aW9uIG1ha2VMYXllcnNDb3VudGVyQWJzdHJhY3QocGFyYW1zKSB7XG4gIHZhciBjb250ZW50ID0gcGFyYW1zLmNvbnRlbnQsXG4gICAgICB0aXRsZSA9IHBhcmFtcy50aXRsZSxcbiAgICAgIGV4dHJhID0gcGFyYW1zLmV4dHJhO1xuXG4gIHZhciBhdHRyaWJ1dGVzID0gX29iamVjdFNwcmVhZCh7fSwgZXh0cmEuYXR0cmlidXRlcywgdGl0bGUgPyB7XG4gICAgJ3RpdGxlJzogdGl0bGVcbiAgfSA6IHt9LCB7XG4gICAgJ2NsYXNzJzogZXh0cmEuY2xhc3Nlcy5qb2luKCcgJylcbiAgfSk7XG5cbiAgdmFyIHN0eWxlU3RyaW5nID0gam9pblN0eWxlcyhleHRyYS5zdHlsZXMpO1xuXG4gIGlmIChzdHlsZVN0cmluZy5sZW5ndGggPiAwKSB7XG4gICAgYXR0cmlidXRlc1snc3R5bGUnXSA9IHN0eWxlU3RyaW5nO1xuICB9XG5cbiAgdmFyIHZhbCA9IFtdO1xuICB2YWwucHVzaCh7XG4gICAgdGFnOiAnc3BhbicsXG4gICAgYXR0cmlidXRlczogYXR0cmlidXRlcyxcbiAgICBjaGlsZHJlbjogW2NvbnRlbnRdXG4gIH0pO1xuXG4gIGlmICh0aXRsZSkge1xuICAgIHZhbC5wdXNoKHtcbiAgICAgIHRhZzogJ3NwYW4nLFxuICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICBjbGFzczogJ3NyLW9ubHknXG4gICAgICB9LFxuICAgICAgY2hpbGRyZW46IFt0aXRsZV1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB2YWw7XG59XG5cbnZhciBub29wJDEgPSBmdW5jdGlvbiBub29wKCkge307XG5cbnZhciBwID0gY29uZmlnLm1lYXN1cmVQZXJmb3JtYW5jZSAmJiBQRVJGT1JNQU5DRSAmJiBQRVJGT1JNQU5DRS5tYXJrICYmIFBFUkZPUk1BTkNFLm1lYXN1cmUgPyBQRVJGT1JNQU5DRSA6IHtcbiAgbWFyazogbm9vcCQxLFxuICBtZWFzdXJlOiBub29wJDFcbn07XG52YXIgcHJlYW1ibGUgPSBcIkZBIFxcXCI1LjE0LjBcXFwiXCI7XG5cbnZhciBiZWdpbiA9IGZ1bmN0aW9uIGJlZ2luKG5hbWUpIHtcbiAgcC5tYXJrKFwiXCIuY29uY2F0KHByZWFtYmxlLCBcIiBcIikuY29uY2F0KG5hbWUsIFwiIGJlZ2luc1wiKSk7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGVuZChuYW1lKTtcbiAgfTtcbn07XG5cbnZhciBlbmQgPSBmdW5jdGlvbiBlbmQobmFtZSkge1xuICBwLm1hcmsoXCJcIi5jb25jYXQocHJlYW1ibGUsIFwiIFwiKS5jb25jYXQobmFtZSwgXCIgZW5kc1wiKSk7XG4gIHAubWVhc3VyZShcIlwiLmNvbmNhdChwcmVhbWJsZSwgXCIgXCIpLmNvbmNhdChuYW1lKSwgXCJcIi5jb25jYXQocHJlYW1ibGUsIFwiIFwiKS5jb25jYXQobmFtZSwgXCIgYmVnaW5zXCIpLCBcIlwiLmNvbmNhdChwcmVhbWJsZSwgXCIgXCIpLmNvbmNhdChuYW1lLCBcIiBlbmRzXCIpKTtcbn07XG5cbnZhciBwZXJmID0ge1xuICBiZWdpbjogYmVnaW4sXG4gIGVuZDogZW5kXG59O1xuXG4vKipcbiAqIEludGVybmFsIGhlbHBlciB0byBiaW5kIGEgZnVuY3Rpb24ga25vd24gdG8gaGF2ZSA0IGFyZ3VtZW50c1xuICogdG8gYSBnaXZlbiBjb250ZXh0LlxuICovXG5cbnZhciBiaW5kSW50ZXJuYWw0ID0gZnVuY3Rpb24gYmluZEludGVybmFsNChmdW5jLCB0aGlzQ29udGV4dCkge1xuICByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHtcbiAgICByZXR1cm4gZnVuYy5jYWxsKHRoaXNDb250ZXh0LCBhLCBiLCBjLCBkKTtcbiAgfTtcbn07XG5cbi8qKlxuICogIyBSZWR1Y2VcbiAqXG4gKiBBIGZhc3Qgb2JqZWN0IGAucmVkdWNlKClgIGltcGxlbWVudGF0aW9uLlxuICpcbiAqIEBwYXJhbSAge09iamVjdH0gICBzdWJqZWN0ICAgICAgVGhlIG9iamVjdCB0byByZWR1Y2Ugb3Zlci5cbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBmbiAgICAgICAgICAgVGhlIHJlZHVjZXIgZnVuY3Rpb24uXG4gKiBAcGFyYW0gIHttaXhlZH0gICAgaW5pdGlhbFZhbHVlIFRoZSBpbml0aWFsIHZhbHVlIGZvciB0aGUgcmVkdWNlciwgZGVmYXVsdHMgdG8gc3ViamVjdFswXS5cbiAqIEBwYXJhbSAge09iamVjdH0gICB0aGlzQ29udGV4dCAgVGhlIGNvbnRleHQgZm9yIHRoZSByZWR1Y2VyLlxuICogQHJldHVybiB7bWl4ZWR9ICAgICAgICAgICAgICAgICBUaGUgZmluYWwgcmVzdWx0LlxuICovXG5cblxudmFyIHJlZHVjZSA9IGZ1bmN0aW9uIGZhc3RSZWR1Y2VPYmplY3Qoc3ViamVjdCwgZm4sIGluaXRpYWxWYWx1ZSwgdGhpc0NvbnRleHQpIHtcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhzdWJqZWN0KSxcbiAgICAgIGxlbmd0aCA9IGtleXMubGVuZ3RoLFxuICAgICAgaXRlcmF0b3IgPSB0aGlzQ29udGV4dCAhPT0gdW5kZWZpbmVkID8gYmluZEludGVybmFsNChmbiwgdGhpc0NvbnRleHQpIDogZm4sXG4gICAgICBpLFxuICAgICAga2V5LFxuICAgICAgcmVzdWx0O1xuXG4gIGlmIChpbml0aWFsVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIGkgPSAxO1xuICAgIHJlc3VsdCA9IHN1YmplY3Rba2V5c1swXV07XG4gIH0gZWxzZSB7XG4gICAgaSA9IDA7XG4gICAgcmVzdWx0ID0gaW5pdGlhbFZhbHVlO1xuICB9XG5cbiAgZm9yICg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGtleSA9IGtleXNbaV07XG4gICAgcmVzdWx0ID0gaXRlcmF0b3IocmVzdWx0LCBzdWJqZWN0W2tleV0sIGtleSwgc3ViamVjdCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZnVuY3Rpb24gdG9IZXgodW5pY29kZSkge1xuICB2YXIgcmVzdWx0ID0gJyc7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB1bmljb2RlLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGhleCA9IHVuaWNvZGUuY2hhckNvZGVBdChpKS50b1N0cmluZygxNik7XG4gICAgcmVzdWx0ICs9ICgnMDAwJyArIGhleCkuc2xpY2UoLTQpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZGVmaW5lSWNvbnMocHJlZml4LCBpY29ucykge1xuICB2YXIgcGFyYW1zID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7fTtcbiAgdmFyIF9wYXJhbXMkc2tpcEhvb2tzID0gcGFyYW1zLnNraXBIb29rcyxcbiAgICAgIHNraXBIb29rcyA9IF9wYXJhbXMkc2tpcEhvb2tzID09PSB2b2lkIDAgPyBmYWxzZSA6IF9wYXJhbXMkc2tpcEhvb2tzO1xuICB2YXIgbm9ybWFsaXplZCA9IE9iamVjdC5rZXlzKGljb25zKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgaWNvbk5hbWUpIHtcbiAgICB2YXIgaWNvbiA9IGljb25zW2ljb25OYW1lXTtcbiAgICB2YXIgZXhwYW5kZWQgPSAhIWljb24uaWNvbjtcblxuICAgIGlmIChleHBhbmRlZCkge1xuICAgICAgYWNjW2ljb24uaWNvbk5hbWVdID0gaWNvbi5pY29uO1xuICAgIH0gZWxzZSB7XG4gICAgICBhY2NbaWNvbk5hbWVdID0gaWNvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG5cbiAgaWYgKHR5cGVvZiBuYW1lc3BhY2UuaG9va3MuYWRkUGFjayA9PT0gJ2Z1bmN0aW9uJyAmJiAhc2tpcEhvb2tzKSB7XG4gICAgbmFtZXNwYWNlLmhvb2tzLmFkZFBhY2socHJlZml4LCBub3JtYWxpemVkKTtcbiAgfSBlbHNlIHtcbiAgICBuYW1lc3BhY2Uuc3R5bGVzW3ByZWZpeF0gPSBfb2JqZWN0U3ByZWFkKHt9LCBuYW1lc3BhY2Uuc3R5bGVzW3ByZWZpeF0gfHwge30sIG5vcm1hbGl6ZWQpO1xuICB9XG4gIC8qKlxuICAgKiBGb250IEF3ZXNvbWUgNCB1c2VkIHRoZSBwcmVmaXggb2YgYGZhYCBmb3IgYWxsIGljb25zLiBXaXRoIHRoZSBpbnRyb2R1Y3Rpb25cbiAgICogb2YgbmV3IHN0eWxlcyB3ZSBuZWVkZWQgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRoZW0uIFByZWZpeCBgZmFgIGlzIG5vdyBhbiBhbGlhc1xuICAgKiBmb3IgYGZhc2Agc28gd2UnbGwgZWFzeSB0aGUgdXBncmFkZSBwcm9jZXNzIGZvciBvdXIgdXNlcnMgYnkgYXV0b21hdGljYWxseSBkZWZpbmluZ1xuICAgKiB0aGlzIGFzIHdlbGwuXG4gICAqL1xuXG5cbiAgaWYgKHByZWZpeCA9PT0gJ2ZhcycpIHtcbiAgICBkZWZpbmVJY29ucygnZmEnLCBpY29ucyk7XG4gIH1cbn1cblxudmFyIHN0eWxlcyA9IG5hbWVzcGFjZS5zdHlsZXMsXG4gICAgc2hpbXMgPSBuYW1lc3BhY2Uuc2hpbXM7XG52YXIgX2J5VW5pY29kZSA9IHt9O1xudmFyIF9ieUxpZ2F0dXJlID0ge307XG52YXIgX2J5T2xkTmFtZSA9IHt9O1xudmFyIGJ1aWxkID0gZnVuY3Rpb24gYnVpbGQoKSB7XG4gIHZhciBsb29rdXAgPSBmdW5jdGlvbiBsb29rdXAocmVkdWNlcikge1xuICAgIHJldHVybiByZWR1Y2Uoc3R5bGVzLCBmdW5jdGlvbiAobywgc3R5bGUsIHByZWZpeCkge1xuICAgICAgb1twcmVmaXhdID0gcmVkdWNlKHN0eWxlLCByZWR1Y2VyLCB7fSk7XG4gICAgICByZXR1cm4gbztcbiAgICB9LCB7fSk7XG4gIH07XG5cbiAgX2J5VW5pY29kZSA9IGxvb2t1cChmdW5jdGlvbiAoYWNjLCBpY29uLCBpY29uTmFtZSkge1xuICAgIGlmIChpY29uWzNdKSB7XG4gICAgICBhY2NbaWNvblszXV0gPSBpY29uTmFtZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9KTtcbiAgX2J5TGlnYXR1cmUgPSBsb29rdXAoZnVuY3Rpb24gKGFjYywgaWNvbiwgaWNvbk5hbWUpIHtcbiAgICB2YXIgbGlnYXR1cmVzID0gaWNvblsyXTtcbiAgICBhY2NbaWNvbk5hbWVdID0gaWNvbk5hbWU7XG4gICAgbGlnYXR1cmVzLmZvckVhY2goZnVuY3Rpb24gKGxpZ2F0dXJlKSB7XG4gICAgICBhY2NbbGlnYXR1cmVdID0gaWNvbk5hbWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIGFjYztcbiAgfSk7XG4gIHZhciBoYXNSZWd1bGFyID0gJ2ZhcicgaW4gc3R5bGVzO1xuICBfYnlPbGROYW1lID0gcmVkdWNlKHNoaW1zLCBmdW5jdGlvbiAoYWNjLCBzaGltKSB7XG4gICAgdmFyIG9sZE5hbWUgPSBzaGltWzBdO1xuICAgIHZhciBwcmVmaXggPSBzaGltWzFdO1xuICAgIHZhciBpY29uTmFtZSA9IHNoaW1bMl07XG5cbiAgICBpZiAocHJlZml4ID09PSAnZmFyJyAmJiAhaGFzUmVndWxhcikge1xuICAgICAgcHJlZml4ID0gJ2Zhcyc7XG4gICAgfVxuXG4gICAgYWNjW29sZE5hbWVdID0ge1xuICAgICAgcHJlZml4OiBwcmVmaXgsXG4gICAgICBpY29uTmFtZTogaWNvbk5hbWVcbiAgICB9O1xuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbn07XG5idWlsZCgpO1xuZnVuY3Rpb24gYnlVbmljb2RlKHByZWZpeCwgdW5pY29kZSkge1xuICByZXR1cm4gKF9ieVVuaWNvZGVbcHJlZml4XSB8fCB7fSlbdW5pY29kZV07XG59XG5mdW5jdGlvbiBieUxpZ2F0dXJlKHByZWZpeCwgbGlnYXR1cmUpIHtcbiAgcmV0dXJuIChfYnlMaWdhdHVyZVtwcmVmaXhdIHx8IHt9KVtsaWdhdHVyZV07XG59XG5mdW5jdGlvbiBieU9sZE5hbWUobmFtZSkge1xuICByZXR1cm4gX2J5T2xkTmFtZVtuYW1lXSB8fCB7XG4gICAgcHJlZml4OiBudWxsLFxuICAgIGljb25OYW1lOiBudWxsXG4gIH07XG59XG5cbnZhciBzdHlsZXMkMSA9IG5hbWVzcGFjZS5zdHlsZXM7XG52YXIgZW1wdHlDYW5vbmljYWxJY29uID0gZnVuY3Rpb24gZW1wdHlDYW5vbmljYWxJY29uKCkge1xuICByZXR1cm4ge1xuICAgIHByZWZpeDogbnVsbCxcbiAgICBpY29uTmFtZTogbnVsbCxcbiAgICByZXN0OiBbXVxuICB9O1xufTtcbmZ1bmN0aW9uIGdldENhbm9uaWNhbEljb24odmFsdWVzKSB7XG4gIHJldHVybiB2YWx1ZXMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGNscykge1xuICAgIHZhciBpY29uTmFtZSA9IGdldEljb25OYW1lKGNvbmZpZy5mYW1pbHlQcmVmaXgsIGNscyk7XG5cbiAgICBpZiAoc3R5bGVzJDFbY2xzXSkge1xuICAgICAgYWNjLnByZWZpeCA9IGNscztcbiAgICB9IGVsc2UgaWYgKGNvbmZpZy5hdXRvRmV0Y2hTdmcgJiYgWydmYXMnLCAnZmFyJywgJ2ZhbCcsICdmYWQnLCAnZmFiJywgJ2ZhJ10uaW5kZXhPZihjbHMpID4gLTEpIHtcbiAgICAgIGFjYy5wcmVmaXggPSBjbHM7XG4gICAgfSBlbHNlIGlmIChpY29uTmFtZSkge1xuICAgICAgdmFyIHNoaW0gPSBhY2MucHJlZml4ID09PSAnZmEnID8gYnlPbGROYW1lKGljb25OYW1lKSA6IHt9O1xuICAgICAgYWNjLmljb25OYW1lID0gc2hpbS5pY29uTmFtZSB8fCBpY29uTmFtZTtcbiAgICAgIGFjYy5wcmVmaXggPSBzaGltLnByZWZpeCB8fCBhY2MucHJlZml4O1xuICAgIH0gZWxzZSBpZiAoY2xzICE9PSBjb25maWcucmVwbGFjZW1lbnRDbGFzcyAmJiBjbHMuaW5kZXhPZignZmEtdy0nKSAhPT0gMCkge1xuICAgICAgYWNjLnJlc3QucHVzaChjbHMpO1xuICAgIH1cblxuICAgIHJldHVybiBhY2M7XG4gIH0sIGVtcHR5Q2Fub25pY2FsSWNvbigpKTtcbn1cbmZ1bmN0aW9uIGljb25Gcm9tTWFwcGluZyhtYXBwaW5nLCBwcmVmaXgsIGljb25OYW1lKSB7XG4gIGlmIChtYXBwaW5nICYmIG1hcHBpbmdbcHJlZml4XSAmJiBtYXBwaW5nW3ByZWZpeF1baWNvbk5hbWVdKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByZWZpeDogcHJlZml4LFxuICAgICAgaWNvbk5hbWU6IGljb25OYW1lLFxuICAgICAgaWNvbjogbWFwcGluZ1twcmVmaXhdW2ljb25OYW1lXVxuICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9IdG1sKGFic3RyYWN0Tm9kZXMpIHtcbiAgdmFyIHRhZyA9IGFic3RyYWN0Tm9kZXMudGFnLFxuICAgICAgX2Fic3RyYWN0Tm9kZXMkYXR0cmliID0gYWJzdHJhY3ROb2Rlcy5hdHRyaWJ1dGVzLFxuICAgICAgYXR0cmlidXRlcyA9IF9hYnN0cmFjdE5vZGVzJGF0dHJpYiA9PT0gdm9pZCAwID8ge30gOiBfYWJzdHJhY3ROb2RlcyRhdHRyaWIsXG4gICAgICBfYWJzdHJhY3ROb2RlcyRjaGlsZHIgPSBhYnN0cmFjdE5vZGVzLmNoaWxkcmVuLFxuICAgICAgY2hpbGRyZW4gPSBfYWJzdHJhY3ROb2RlcyRjaGlsZHIgPT09IHZvaWQgMCA/IFtdIDogX2Fic3RyYWN0Tm9kZXMkY2hpbGRyO1xuXG4gIGlmICh0eXBlb2YgYWJzdHJhY3ROb2RlcyA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gaHRtbEVzY2FwZShhYnN0cmFjdE5vZGVzKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gXCI8XCIuY29uY2F0KHRhZywgXCIgXCIpLmNvbmNhdChqb2luQXR0cmlidXRlcyhhdHRyaWJ1dGVzKSwgXCI+XCIpLmNvbmNhdChjaGlsZHJlbi5tYXAodG9IdG1sKS5qb2luKCcnKSwgXCI8L1wiKS5jb25jYXQodGFnLCBcIj5cIik7XG4gIH1cbn1cblxudmFyIG5vb3AkMiA9IGZ1bmN0aW9uIG5vb3AoKSB7fTtcblxuZnVuY3Rpb24gaXNXYXRjaGVkKG5vZGUpIHtcbiAgdmFyIGkyc3ZnID0gbm9kZS5nZXRBdHRyaWJ1dGUgPyBub2RlLmdldEF0dHJpYnV0ZShEQVRBX0ZBX0kyU1ZHKSA6IG51bGw7XG4gIHJldHVybiB0eXBlb2YgaTJzdmcgPT09ICdzdHJpbmcnO1xufVxuXG5mdW5jdGlvbiBnZXRNdXRhdG9yKCkge1xuICBpZiAoY29uZmlnLmF1dG9SZXBsYWNlU3ZnID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIG11dGF0b3JzLnJlcGxhY2U7XG4gIH1cblxuICB2YXIgbXV0YXRvciA9IG11dGF0b3JzW2NvbmZpZy5hdXRvUmVwbGFjZVN2Z107XG4gIHJldHVybiBtdXRhdG9yIHx8IG11dGF0b3JzLnJlcGxhY2U7XG59XG5cbnZhciBtdXRhdG9ycyA9IHtcbiAgcmVwbGFjZTogZnVuY3Rpb24gcmVwbGFjZShtdXRhdGlvbikge1xuICAgIHZhciBub2RlID0gbXV0YXRpb25bMF07XG4gICAgdmFyIGFic3RyYWN0ID0gbXV0YXRpb25bMV07XG4gICAgdmFyIG5ld091dGVySFRNTCA9IGFic3RyYWN0Lm1hcChmdW5jdGlvbiAoYSkge1xuICAgICAgcmV0dXJuIHRvSHRtbChhKTtcbiAgICB9KS5qb2luKCdcXG4nKTtcblxuICAgIGlmIChub2RlLnBhcmVudE5vZGUgJiYgbm9kZS5vdXRlckhUTUwpIHtcbiAgICAgIG5vZGUub3V0ZXJIVE1MID0gbmV3T3V0ZXJIVE1MICsgKGNvbmZpZy5rZWVwT3JpZ2luYWxTb3VyY2UgJiYgbm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdzdmcnID8gXCI8IS0tIFwiLmNvbmNhdChub2RlLm91dGVySFRNTCwgXCIgLS0+XCIpIDogJycpO1xuICAgIH0gZWxzZSBpZiAobm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICB2YXIgbmV3Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgIG5vZGUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Tm9kZSwgbm9kZSk7XG4gICAgICBuZXdOb2RlLm91dGVySFRNTCA9IG5ld091dGVySFRNTDtcbiAgICB9XG4gIH0sXG4gIG5lc3Q6IGZ1bmN0aW9uIG5lc3QobXV0YXRpb24pIHtcbiAgICB2YXIgbm9kZSA9IG11dGF0aW9uWzBdO1xuICAgIHZhciBhYnN0cmFjdCA9IG11dGF0aW9uWzFdOyAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgYSByZXBsYWNlZCBub2RlIHdlIGRvIG5vdCB3YW50IHRvIGNvbnRpbnVlIG5lc3Rpbmcgd2l0aGluIGl0LlxuICAgIC8vIFNob3J0LWNpcmN1aXQgdG8gdGhlIHN0YW5kYXJkIHJlcGxhY2VtZW50XG5cbiAgICBpZiAofmNsYXNzQXJyYXkobm9kZSkuaW5kZXhPZihjb25maWcucmVwbGFjZW1lbnRDbGFzcykpIHtcbiAgICAgIHJldHVybiBtdXRhdG9ycy5yZXBsYWNlKG11dGF0aW9uKTtcbiAgICB9XG5cbiAgICB2YXIgZm9yU3ZnID0gbmV3IFJlZ0V4cChcIlwiLmNvbmNhdChjb25maWcuZmFtaWx5UHJlZml4LCBcIi0uKlwiKSk7XG4gICAgZGVsZXRlIGFic3RyYWN0WzBdLmF0dHJpYnV0ZXMuc3R5bGU7XG4gICAgZGVsZXRlIGFic3RyYWN0WzBdLmF0dHJpYnV0ZXMuaWQ7XG4gICAgdmFyIHNwbGl0Q2xhc3NlcyA9IGFic3RyYWN0WzBdLmF0dHJpYnV0ZXMuY2xhc3Muc3BsaXQoJyAnKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgY2xzKSB7XG4gICAgICBpZiAoY2xzID09PSBjb25maWcucmVwbGFjZW1lbnRDbGFzcyB8fCBjbHMubWF0Y2goZm9yU3ZnKSkge1xuICAgICAgICBhY2MudG9TdmcucHVzaChjbHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWNjLnRvTm9kZS5wdXNoKGNscyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge1xuICAgICAgdG9Ob2RlOiBbXSxcbiAgICAgIHRvU3ZnOiBbXVxuICAgIH0pO1xuICAgIGFic3RyYWN0WzBdLmF0dHJpYnV0ZXMuY2xhc3MgPSBzcGxpdENsYXNzZXMudG9Tdmcuam9pbignICcpO1xuICAgIHZhciBuZXdJbm5lckhUTUwgPSBhYnN0cmFjdC5tYXAoZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiB0b0h0bWwoYSk7XG4gICAgfSkuam9pbignXFxuJyk7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgc3BsaXRDbGFzc2VzLnRvTm9kZS5qb2luKCcgJykpO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKERBVEFfRkFfSTJTVkcsICcnKTtcbiAgICBub2RlLmlubmVySFRNTCA9IG5ld0lubmVySFRNTDtcbiAgfVxufTtcblxuZnVuY3Rpb24gcGVyZm9ybU9wZXJhdGlvblN5bmMob3ApIHtcbiAgb3AoKTtcbn1cblxuZnVuY3Rpb24gcGVyZm9ybShtdXRhdGlvbnMsIGNhbGxiYWNrKSB7XG4gIHZhciBjYWxsYmFja0Z1bmN0aW9uID0gdHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nID8gY2FsbGJhY2sgOiBub29wJDI7XG5cbiAgaWYgKG11dGF0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICBjYWxsYmFja0Z1bmN0aW9uKCk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGZyYW1lID0gcGVyZm9ybU9wZXJhdGlvblN5bmM7XG5cbiAgICBpZiAoY29uZmlnLm11dGF0ZUFwcHJvYWNoID09PSBNVVRBVElPTl9BUFBST0FDSF9BU1lOQykge1xuICAgICAgZnJhbWUgPSBXSU5ET1cucmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8IHBlcmZvcm1PcGVyYXRpb25TeW5jO1xuICAgIH1cblxuICAgIGZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBtdXRhdG9yID0gZ2V0TXV0YXRvcigpO1xuICAgICAgdmFyIG1hcmsgPSBwZXJmLmJlZ2luKCdtdXRhdGUnKTtcbiAgICAgIG11dGF0aW9ucy5tYXAobXV0YXRvcik7XG4gICAgICBtYXJrKCk7XG4gICAgICBjYWxsYmFja0Z1bmN0aW9uKCk7XG4gICAgfSk7XG4gIH1cbn1cbnZhciBkaXNhYmxlZCA9IGZhbHNlO1xuZnVuY3Rpb24gZGlzYWJsZU9ic2VydmF0aW9uKCkge1xuICBkaXNhYmxlZCA9IHRydWU7XG59XG5mdW5jdGlvbiBlbmFibGVPYnNlcnZhdGlvbigpIHtcbiAgZGlzYWJsZWQgPSBmYWxzZTtcbn1cbnZhciBtbyA9IG51bGw7XG5mdW5jdGlvbiBvYnNlcnZlKG9wdGlvbnMpIHtcbiAgaWYgKCFNVVRBVElPTl9PQlNFUlZFUikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghY29uZmlnLm9ic2VydmVNdXRhdGlvbnMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgdHJlZUNhbGxiYWNrID0gb3B0aW9ucy50cmVlQ2FsbGJhY2ssXG4gICAgICBub2RlQ2FsbGJhY2sgPSBvcHRpb25zLm5vZGVDYWxsYmFjayxcbiAgICAgIHBzZXVkb0VsZW1lbnRzQ2FsbGJhY2sgPSBvcHRpb25zLnBzZXVkb0VsZW1lbnRzQ2FsbGJhY2ssXG4gICAgICBfb3B0aW9ucyRvYnNlcnZlTXV0YXQgPSBvcHRpb25zLm9ic2VydmVNdXRhdGlvbnNSb290LFxuICAgICAgb2JzZXJ2ZU11dGF0aW9uc1Jvb3QgPSBfb3B0aW9ucyRvYnNlcnZlTXV0YXQgPT09IHZvaWQgMCA/IERPQ1VNRU5UIDogX29wdGlvbnMkb2JzZXJ2ZU11dGF0O1xuICBtbyA9IG5ldyBNVVRBVElPTl9PQlNFUlZFUihmdW5jdGlvbiAob2JqZWN0cykge1xuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuO1xuICAgIHRvQXJyYXkob2JqZWN0cykuZm9yRWFjaChmdW5jdGlvbiAobXV0YXRpb25SZWNvcmQpIHtcbiAgICAgIGlmIChtdXRhdGlvblJlY29yZC50eXBlID09PSAnY2hpbGRMaXN0JyAmJiBtdXRhdGlvblJlY29yZC5hZGRlZE5vZGVzLmxlbmd0aCA+IDAgJiYgIWlzV2F0Y2hlZChtdXRhdGlvblJlY29yZC5hZGRlZE5vZGVzWzBdKSkge1xuICAgICAgICBpZiAoY29uZmlnLnNlYXJjaFBzZXVkb0VsZW1lbnRzKSB7XG4gICAgICAgICAgcHNldWRvRWxlbWVudHNDYWxsYmFjayhtdXRhdGlvblJlY29yZC50YXJnZXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJlZUNhbGxiYWNrKG11dGF0aW9uUmVjb3JkLnRhcmdldCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtdXRhdGlvblJlY29yZC50eXBlID09PSAnYXR0cmlidXRlcycgJiYgbXV0YXRpb25SZWNvcmQudGFyZ2V0LnBhcmVudE5vZGUgJiYgY29uZmlnLnNlYXJjaFBzZXVkb0VsZW1lbnRzKSB7XG4gICAgICAgIHBzZXVkb0VsZW1lbnRzQ2FsbGJhY2sobXV0YXRpb25SZWNvcmQudGFyZ2V0LnBhcmVudE5vZGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAobXV0YXRpb25SZWNvcmQudHlwZSA9PT0gJ2F0dHJpYnV0ZXMnICYmIGlzV2F0Y2hlZChtdXRhdGlvblJlY29yZC50YXJnZXQpICYmIH5BVFRSSUJVVEVTX1dBVENIRURfRk9SX01VVEFUSU9OLmluZGV4T2YobXV0YXRpb25SZWNvcmQuYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgaWYgKG11dGF0aW9uUmVjb3JkLmF0dHJpYnV0ZU5hbWUgPT09ICdjbGFzcycpIHtcbiAgICAgICAgICB2YXIgX2dldENhbm9uaWNhbEljb24gPSBnZXRDYW5vbmljYWxJY29uKGNsYXNzQXJyYXkobXV0YXRpb25SZWNvcmQudGFyZ2V0KSksXG4gICAgICAgICAgICAgIHByZWZpeCA9IF9nZXRDYW5vbmljYWxJY29uLnByZWZpeCxcbiAgICAgICAgICAgICAgaWNvbk5hbWUgPSBfZ2V0Q2Fub25pY2FsSWNvbi5pY29uTmFtZTtcblxuICAgICAgICAgIGlmIChwcmVmaXgpIG11dGF0aW9uUmVjb3JkLnRhcmdldC5zZXRBdHRyaWJ1dGUoJ2RhdGEtcHJlZml4JywgcHJlZml4KTtcbiAgICAgICAgICBpZiAoaWNvbk5hbWUpIG11dGF0aW9uUmVjb3JkLnRhcmdldC5zZXRBdHRyaWJ1dGUoJ2RhdGEtaWNvbicsIGljb25OYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBub2RlQ2FsbGJhY2sobXV0YXRpb25SZWNvcmQudGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgaWYgKCFJU19ET00pIHJldHVybjtcbiAgbW8ub2JzZXJ2ZShvYnNlcnZlTXV0YXRpb25zUm9vdCwge1xuICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgIGNoYXJhY3RlckRhdGE6IHRydWUsXG4gICAgc3VidHJlZTogdHJ1ZVxuICB9KTtcbn1cbmZ1bmN0aW9uIGRpc2Nvbm5lY3QoKSB7XG4gIGlmICghbW8pIHJldHVybjtcbiAgbW8uZGlzY29ubmVjdCgpO1xufVxuXG5mdW5jdGlvbiBzdHlsZVBhcnNlciAobm9kZSkge1xuICB2YXIgc3R5bGUgPSBub2RlLmdldEF0dHJpYnV0ZSgnc3R5bGUnKTtcbiAgdmFyIHZhbCA9IFtdO1xuXG4gIGlmIChzdHlsZSkge1xuICAgIHZhbCA9IHN0eWxlLnNwbGl0KCc7JykucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHN0eWxlKSB7XG4gICAgICB2YXIgc3R5bGVzID0gc3R5bGUuc3BsaXQoJzonKTtcbiAgICAgIHZhciBwcm9wID0gc3R5bGVzWzBdO1xuICAgICAgdmFyIHZhbHVlID0gc3R5bGVzLnNsaWNlKDEpO1xuXG4gICAgICBpZiAocHJvcCAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFjY1twcm9wXSA9IHZhbHVlLmpvaW4oJzonKS50cmltKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuICB9XG5cbiAgcmV0dXJuIHZhbDtcbn1cblxuZnVuY3Rpb24gY2xhc3NQYXJzZXIgKG5vZGUpIHtcbiAgdmFyIGV4aXN0aW5nUHJlZml4ID0gbm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtcHJlZml4Jyk7XG4gIHZhciBleGlzdGluZ0ljb25OYW1lID0gbm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtaWNvbicpO1xuICB2YXIgaW5uZXJUZXh0ID0gbm9kZS5pbm5lclRleHQgIT09IHVuZGVmaW5lZCA/IG5vZGUuaW5uZXJUZXh0LnRyaW0oKSA6ICcnO1xuICB2YXIgdmFsID0gZ2V0Q2Fub25pY2FsSWNvbihjbGFzc0FycmF5KG5vZGUpKTtcblxuICBpZiAoZXhpc3RpbmdQcmVmaXggJiYgZXhpc3RpbmdJY29uTmFtZSkge1xuICAgIHZhbC5wcmVmaXggPSBleGlzdGluZ1ByZWZpeDtcbiAgICB2YWwuaWNvbk5hbWUgPSBleGlzdGluZ0ljb25OYW1lO1xuICB9XG5cbiAgaWYgKHZhbC5wcmVmaXggJiYgaW5uZXJUZXh0Lmxlbmd0aCA+IDEpIHtcbiAgICB2YWwuaWNvbk5hbWUgPSBieUxpZ2F0dXJlKHZhbC5wcmVmaXgsIG5vZGUuaW5uZXJUZXh0KTtcbiAgfSBlbHNlIGlmICh2YWwucHJlZml4ICYmIGlubmVyVGV4dC5sZW5ndGggPT09IDEpIHtcbiAgICB2YWwuaWNvbk5hbWUgPSBieVVuaWNvZGUodmFsLnByZWZpeCwgdG9IZXgobm9kZS5pbm5lclRleHQpKTtcbiAgfVxuXG4gIHJldHVybiB2YWw7XG59XG5cbnZhciBwYXJzZVRyYW5zZm9ybVN0cmluZyA9IGZ1bmN0aW9uIHBhcnNlVHJhbnNmb3JtU3RyaW5nKHRyYW5zZm9ybVN0cmluZykge1xuICB2YXIgdHJhbnNmb3JtID0ge1xuICAgIHNpemU6IDE2LFxuICAgIHg6IDAsXG4gICAgeTogMCxcbiAgICBmbGlwWDogZmFsc2UsXG4gICAgZmxpcFk6IGZhbHNlLFxuICAgIHJvdGF0ZTogMFxuICB9O1xuXG4gIGlmICghdHJhbnNmb3JtU3RyaW5nKSB7XG4gICAgcmV0dXJuIHRyYW5zZm9ybTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdHJhbnNmb3JtU3RyaW5nLnRvTG93ZXJDYXNlKCkuc3BsaXQoJyAnKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgbikge1xuICAgICAgdmFyIHBhcnRzID0gbi50b0xvd2VyQ2FzZSgpLnNwbGl0KCctJyk7XG4gICAgICB2YXIgZmlyc3QgPSBwYXJ0c1swXTtcbiAgICAgIHZhciByZXN0ID0gcGFydHMuc2xpY2UoMSkuam9pbignLScpO1xuXG4gICAgICBpZiAoZmlyc3QgJiYgcmVzdCA9PT0gJ2gnKSB7XG4gICAgICAgIGFjYy5mbGlwWCA9IHRydWU7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9XG5cbiAgICAgIGlmIChmaXJzdCAmJiByZXN0ID09PSAndicpIHtcbiAgICAgICAgYWNjLmZsaXBZID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH1cblxuICAgICAgcmVzdCA9IHBhcnNlRmxvYXQocmVzdCk7XG5cbiAgICAgIGlmIChpc05hTihyZXN0KSkge1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKGZpcnN0KSB7XG4gICAgICAgIGNhc2UgJ2dyb3cnOlxuICAgICAgICAgIGFjYy5zaXplID0gYWNjLnNpemUgKyByZXN0O1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3Nocmluayc6XG4gICAgICAgICAgYWNjLnNpemUgPSBhY2Muc2l6ZSAtIHJlc3Q7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgYWNjLnggPSBhY2MueCAtIHJlc3Q7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgIGFjYy54ID0gYWNjLnggKyByZXN0O1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3VwJzpcbiAgICAgICAgICBhY2MueSA9IGFjYy55IC0gcmVzdDtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdkb3duJzpcbiAgICAgICAgICBhY2MueSA9IGFjYy55ICsgcmVzdDtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdyb3RhdGUnOlxuICAgICAgICAgIGFjYy5yb3RhdGUgPSBhY2Mucm90YXRlICsgcmVzdDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB0cmFuc2Zvcm0pO1xuICB9XG59O1xuZnVuY3Rpb24gdHJhbnNmb3JtUGFyc2VyIChub2RlKSB7XG4gIHJldHVybiBwYXJzZVRyYW5zZm9ybVN0cmluZyhub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1mYS10cmFuc2Zvcm0nKSk7XG59XG5cbmZ1bmN0aW9uIHN5bWJvbFBhcnNlciAobm9kZSkge1xuICB2YXIgc3ltYm9sID0gbm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtZmEtc3ltYm9sJyk7XG4gIHJldHVybiBzeW1ib2wgPT09IG51bGwgPyBmYWxzZSA6IHN5bWJvbCA9PT0gJycgPyB0cnVlIDogc3ltYm9sO1xufVxuXG5mdW5jdGlvbiBhdHRyaWJ1dGVzUGFyc2VyIChub2RlKSB7XG4gIHZhciBleHRyYUF0dHJpYnV0ZXMgPSB0b0FycmF5KG5vZGUuYXR0cmlidXRlcykucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGF0dHIpIHtcbiAgICBpZiAoYWNjLm5hbWUgIT09ICdjbGFzcycgJiYgYWNjLm5hbWUgIT09ICdzdHlsZScpIHtcbiAgICAgIGFjY1thdHRyLm5hbWVdID0gYXR0ci52YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG4gIHZhciB0aXRsZSA9IG5vZGUuZ2V0QXR0cmlidXRlKCd0aXRsZScpO1xuICB2YXIgdGl0bGVJZCA9IG5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLWZhLXRpdGxlLWlkJyk7XG5cbiAgaWYgKGNvbmZpZy5hdXRvQTExeSkge1xuICAgIGlmICh0aXRsZSkge1xuICAgICAgZXh0cmFBdHRyaWJ1dGVzWydhcmlhLWxhYmVsbGVkYnknXSA9IFwiXCIuY29uY2F0KGNvbmZpZy5yZXBsYWNlbWVudENsYXNzLCBcIi10aXRsZS1cIikuY29uY2F0KHRpdGxlSWQgfHwgbmV4dFVuaXF1ZUlkKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBleHRyYUF0dHJpYnV0ZXNbJ2FyaWEtaGlkZGVuJ10gPSAndHJ1ZSc7XG4gICAgICBleHRyYUF0dHJpYnV0ZXNbJ2ZvY3VzYWJsZSddID0gJ2ZhbHNlJztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXh0cmFBdHRyaWJ1dGVzO1xufVxuXG5mdW5jdGlvbiBtYXNrUGFyc2VyIChub2RlKSB7XG4gIHZhciBtYXNrID0gbm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtZmEtbWFzaycpO1xuXG4gIGlmICghbWFzaykge1xuICAgIHJldHVybiBlbXB0eUNhbm9uaWNhbEljb24oKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2V0Q2Fub25pY2FsSWNvbihtYXNrLnNwbGl0KCcgJykubWFwKGZ1bmN0aW9uIChpKSB7XG4gICAgICByZXR1cm4gaS50cmltKCk7XG4gICAgfSkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGJsYW5rTWV0YSgpIHtcbiAgcmV0dXJuIHtcbiAgICBpY29uTmFtZTogbnVsbCxcbiAgICB0aXRsZTogbnVsbCxcbiAgICB0aXRsZUlkOiBudWxsLFxuICAgIHByZWZpeDogbnVsbCxcbiAgICB0cmFuc2Zvcm06IG1lYW5pbmdsZXNzVHJhbnNmb3JtLFxuICAgIHN5bWJvbDogZmFsc2UsXG4gICAgbWFzazogbnVsbCxcbiAgICBtYXNrSWQ6IG51bGwsXG4gICAgZXh0cmE6IHtcbiAgICAgIGNsYXNzZXM6IFtdLFxuICAgICAgc3R5bGVzOiB7fSxcbiAgICAgIGF0dHJpYnV0ZXM6IHt9XG4gICAgfVxuICB9O1xufVxuZnVuY3Rpb24gcGFyc2VNZXRhKG5vZGUpIHtcbiAgdmFyIF9jbGFzc1BhcnNlciA9IGNsYXNzUGFyc2VyKG5vZGUpLFxuICAgICAgaWNvbk5hbWUgPSBfY2xhc3NQYXJzZXIuaWNvbk5hbWUsXG4gICAgICBwcmVmaXggPSBfY2xhc3NQYXJzZXIucHJlZml4LFxuICAgICAgZXh0cmFDbGFzc2VzID0gX2NsYXNzUGFyc2VyLnJlc3Q7XG5cbiAgdmFyIGV4dHJhU3R5bGVzID0gc3R5bGVQYXJzZXIobm9kZSk7XG4gIHZhciB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm1QYXJzZXIobm9kZSk7XG4gIHZhciBzeW1ib2wgPSBzeW1ib2xQYXJzZXIobm9kZSk7XG4gIHZhciBleHRyYUF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzUGFyc2VyKG5vZGUpO1xuICB2YXIgbWFzayA9IG1hc2tQYXJzZXIobm9kZSk7XG4gIHJldHVybiB7XG4gICAgaWNvbk5hbWU6IGljb25OYW1lLFxuICAgIHRpdGxlOiBub2RlLmdldEF0dHJpYnV0ZSgndGl0bGUnKSxcbiAgICB0aXRsZUlkOiBub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1mYS10aXRsZS1pZCcpLFxuICAgIHByZWZpeDogcHJlZml4LFxuICAgIHRyYW5zZm9ybTogdHJhbnNmb3JtLFxuICAgIHN5bWJvbDogc3ltYm9sLFxuICAgIG1hc2s6IG1hc2ssXG4gICAgbWFza0lkOiBub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1mYS1tYXNrLWlkJyksXG4gICAgZXh0cmE6IHtcbiAgICAgIGNsYXNzZXM6IGV4dHJhQ2xhc3NlcyxcbiAgICAgIHN0eWxlczogZXh0cmFTdHlsZXMsXG4gICAgICBhdHRyaWJ1dGVzOiBleHRyYUF0dHJpYnV0ZXNcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIE1pc3NpbmdJY29uKGVycm9yKSB7XG4gIHRoaXMubmFtZSA9ICdNaXNzaW5nSWNvbic7XG4gIHRoaXMubWVzc2FnZSA9IGVycm9yIHx8ICdJY29uIHVuYXZhaWxhYmxlJztcbiAgdGhpcy5zdGFjayA9IG5ldyBFcnJvcigpLnN0YWNrO1xufVxuTWlzc2luZ0ljb24ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpO1xuTWlzc2luZ0ljb24ucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWlzc2luZ0ljb247XG5cbnZhciBGSUxMID0ge1xuICBmaWxsOiAnY3VycmVudENvbG9yJ1xufTtcbnZhciBBTklNQVRJT05fQkFTRSA9IHtcbiAgYXR0cmlidXRlVHlwZTogJ1hNTCcsXG4gIHJlcGVhdENvdW50OiAnaW5kZWZpbml0ZScsXG4gIGR1cjogJzJzJ1xufTtcbnZhciBSSU5HID0ge1xuICB0YWc6ICdwYXRoJyxcbiAgYXR0cmlidXRlczogX29iamVjdFNwcmVhZCh7fSwgRklMTCwge1xuICAgIGQ6ICdNMTU2LjUsNDQ3LjdsLTEyLjYsMjkuNWMtMTguNy05LjUtMzUuOS0yMS4yLTUxLjUtMzQuOWwyMi43LTIyLjdDMTI3LjYsNDMwLjUsMTQxLjUsNDQwLDE1Ni41LDQ0Ny43eiBNNDAuNiwyNzJIOC41IGMxLjQsMjEuMiw1LjQsNDEuNywxMS43LDYxLjFMNTAsMzIxLjJDNDUuMSwzMDUuNSw0MS44LDI4OSw0MC42LDI3MnogTTQwLjYsMjQwYzEuNC0xOC44LDUuMi0zNywxMS4xLTU0LjFsLTI5LjUtMTIuNiBDMTQuNywxOTQuMywxMCwyMTYuNyw4LjUsMjQwSDQwLjZ6IE02NC4zLDE1Ni41YzcuOC0xNC45LDE3LjItMjguOCwyOC4xLTQxLjVMNjkuNyw5Mi4zYy0xMy43LDE1LjYtMjUuNSwzMi44LTM0LjksNTEuNSBMNjQuMywxNTYuNXogTTM5Nyw0MTkuNmMtMTMuOSwxMi0yOS40LDIyLjMtNDYuMSwzMC40bDExLjksMjkuOGMyMC43LTkuOSwzOS44LTIyLjYsNTYuOS0zNy42TDM5Nyw0MTkuNnogTTExNSw5Mi40IGMxMy45LTEyLDI5LjQtMjIuMyw0Ni4xLTMwLjRsLTExLjktMjkuOGMtMjAuNyw5LjktMzkuOCwyMi42LTU2LjgsMzcuNkwxMTUsOTIuNHogTTQ0Ny43LDM1NS41Yy03LjgsMTQuOS0xNy4yLDI4LjgtMjguMSw0MS41IGwyMi43LDIyLjdjMTMuNy0xNS42LDI1LjUtMzIuOSwzNC45LTUxLjVMNDQ3LjcsMzU1LjV6IE00NzEuNCwyNzJjLTEuNCwxOC44LTUuMiwzNy0xMS4xLDU0LjFsMjkuNSwxMi42IGM3LjUtMjEuMSwxMi4yLTQzLjUsMTMuNi02Ni44SDQ3MS40eiBNMzIxLjIsNDYyYy0xNS43LDUtMzIuMiw4LjItNDkuMiw5LjR2MzIuMWMyMS4yLTEuNCw0MS43LTUuNCw2MS4xLTExLjdMMzIxLjIsNDYyeiBNMjQwLDQ3MS40Yy0xOC44LTEuNC0zNy01LjItNTQuMS0xMS4xbC0xMi42LDI5LjVjMjEuMSw3LjUsNDMuNSwxMi4yLDY2LjgsMTMuNlY0NzEuNHogTTQ2MiwxOTAuOGM1LDE1LjcsOC4yLDMyLjIsOS40LDQ5LjJoMzIuMSBjLTEuNC0yMS4yLTUuNC00MS43LTExLjctNjEuMUw0NjIsMTkwLjh6IE05Mi40LDM5N2MtMTItMTMuOS0yMi4zLTI5LjQtMzAuNC00Ni4xbC0yOS44LDExLjljOS45LDIwLjcsMjIuNiwzOS44LDM3LjYsNTYuOSBMOTIuNCwzOTd6IE0yNzIsNDAuNmMxOC44LDEuNCwzNi45LDUuMiw1NC4xLDExLjFsMTIuNi0yOS41QzMxNy43LDE0LjcsMjk1LjMsMTAsMjcyLDguNVY0MC42eiBNMTkwLjgsNTAgYzE1LjctNSwzMi4yLTguMiw0OS4yLTkuNFY4LjVjLTIxLjIsMS40LTQxLjcsNS40LTYxLjEsMTEuN0wxOTAuOCw1MHogTTQ0Mi4zLDkyLjNMNDE5LjYsMTE1YzEyLDEzLjksMjIuMywyOS40LDMwLjUsNDYuMSBsMjkuOC0xMS45QzQ3MCwxMjguNSw0NTcuMywxMDkuNCw0NDIuMyw5Mi4zeiBNMzk3LDkyLjRsMjIuNy0yMi43Yy0xNS42LTEzLjctMzIuOC0yNS41LTUxLjUtMzQuOWwtMTIuNiwyOS41IEMzNzAuNCw3Mi4xLDM4NC40LDgxLjUsMzk3LDkyLjR6J1xuICB9KVxufTtcblxudmFyIE9QQUNJVFlfQU5JTUFURSA9IF9vYmplY3RTcHJlYWQoe30sIEFOSU1BVElPTl9CQVNFLCB7XG4gIGF0dHJpYnV0ZU5hbWU6ICdvcGFjaXR5J1xufSk7XG5cbnZhciBET1QgPSB7XG4gIHRhZzogJ2NpcmNsZScsXG4gIGF0dHJpYnV0ZXM6IF9vYmplY3RTcHJlYWQoe30sIEZJTEwsIHtcbiAgICBjeDogJzI1NicsXG4gICAgY3k6ICczNjQnLFxuICAgIHI6ICcyOCdcbiAgfSksXG4gIGNoaWxkcmVuOiBbe1xuICAgIHRhZzogJ2FuaW1hdGUnLFxuICAgIGF0dHJpYnV0ZXM6IF9vYmplY3RTcHJlYWQoe30sIEFOSU1BVElPTl9CQVNFLCB7XG4gICAgICBhdHRyaWJ1dGVOYW1lOiAncicsXG4gICAgICB2YWx1ZXM6ICcyODsxNDsyODsyODsxNDsyODsnXG4gICAgfSlcbiAgfSwge1xuICAgIHRhZzogJ2FuaW1hdGUnLFxuICAgIGF0dHJpYnV0ZXM6IF9vYmplY3RTcHJlYWQoe30sIE9QQUNJVFlfQU5JTUFURSwge1xuICAgICAgdmFsdWVzOiAnMTswOzE7MTswOzE7J1xuICAgIH0pXG4gIH1dXG59O1xudmFyIFFVRVNUSU9OID0ge1xuICB0YWc6ICdwYXRoJyxcbiAgYXR0cmlidXRlczogX29iamVjdFNwcmVhZCh7fSwgRklMTCwge1xuICAgIG9wYWNpdHk6ICcxJyxcbiAgICBkOiAnTTI2My43LDMxMmgtMTZjLTYuNiwwLTEyLTUuNC0xMi0xMmMwLTcxLDc3LjQtNjMuOSw3Ny40LTEwNy44YzAtMjAtMTcuOC00MC4yLTU3LjQtNDAuMmMtMjkuMSwwLTQ0LjMsOS42LTU5LjIsMjguNyBjLTMuOSw1LTExLjEsNi0xNi4yLDIuNGwtMTMuMS05LjJjLTUuNi0zLjktNi45LTExLjgtMi42LTE3LjJjMjEuMi0yNy4yLDQ2LjQtNDQuNyw5MS4yLTQ0LjdjNTIuMywwLDk3LjQsMjkuOCw5Ny40LDgwLjIgYzAsNjcuNi03Ny40LDYzLjUtNzcuNCwxMDcuOEMyNzUuNywzMDYuNiwyNzAuMywzMTIsMjYzLjcsMzEyeidcbiAgfSksXG4gIGNoaWxkcmVuOiBbe1xuICAgIHRhZzogJ2FuaW1hdGUnLFxuICAgIGF0dHJpYnV0ZXM6IF9vYmplY3RTcHJlYWQoe30sIE9QQUNJVFlfQU5JTUFURSwge1xuICAgICAgdmFsdWVzOiAnMTswOzA7MDswOzE7J1xuICAgIH0pXG4gIH1dXG59O1xudmFyIEVYQ0xBTUFUSU9OID0ge1xuICB0YWc6ICdwYXRoJyxcbiAgYXR0cmlidXRlczogX29iamVjdFNwcmVhZCh7fSwgRklMTCwge1xuICAgIG9wYWNpdHk6ICcwJyxcbiAgICBkOiAnTTIzMi41LDEzNC41bDcsMTY4YzAuMyw2LjQsNS42LDExLjUsMTIsMTEuNWg5YzYuNCwwLDExLjctNS4xLDEyLTExLjVsNy0xNjhjMC4zLTYuOC01LjItMTIuNS0xMi0xMi41aC0yMyBDMjM3LjcsMTIyLDIzMi4yLDEyNy43LDIzMi41LDEzNC41eidcbiAgfSksXG4gIGNoaWxkcmVuOiBbe1xuICAgIHRhZzogJ2FuaW1hdGUnLFxuICAgIGF0dHJpYnV0ZXM6IF9vYmplY3RTcHJlYWQoe30sIE9QQUNJVFlfQU5JTUFURSwge1xuICAgICAgdmFsdWVzOiAnMDswOzE7MTswOzA7J1xuICAgIH0pXG4gIH1dXG59O1xudmFyIG1pc3NpbmcgPSB7XG4gIHRhZzogJ2cnLFxuICBjaGlsZHJlbjogW1JJTkcsIERPVCwgUVVFU1RJT04sIEVYQ0xBTUFUSU9OXVxufTtcblxudmFyIHN0eWxlcyQyID0gbmFtZXNwYWNlLnN0eWxlcztcbmZ1bmN0aW9uIGFzRm91bmRJY29uKGljb24pIHtcbiAgdmFyIHdpZHRoID0gaWNvblswXTtcbiAgdmFyIGhlaWdodCA9IGljb25bMV07XG5cbiAgdmFyIF9pY29uJHNsaWNlID0gaWNvbi5zbGljZSg0KSxcbiAgICAgIF9pY29uJHNsaWNlMiA9IF9zbGljZWRUb0FycmF5KF9pY29uJHNsaWNlLCAxKSxcbiAgICAgIHZlY3RvckRhdGEgPSBfaWNvbiRzbGljZTJbMF07XG5cbiAgdmFyIGVsZW1lbnQgPSBudWxsO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KHZlY3RvckRhdGEpKSB7XG4gICAgZWxlbWVudCA9IHtcbiAgICAgIHRhZzogJ2cnLFxuICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICBjbGFzczogXCJcIi5jb25jYXQoY29uZmlnLmZhbWlseVByZWZpeCwgXCItXCIpLmNvbmNhdChEVU9UT05FX0NMQVNTRVMuR1JPVVApXG4gICAgICB9LFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHRhZzogJ3BhdGgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgY2xhc3M6IFwiXCIuY29uY2F0KGNvbmZpZy5mYW1pbHlQcmVmaXgsIFwiLVwiKS5jb25jYXQoRFVPVE9ORV9DTEFTU0VTLlNFQ09OREFSWSksXG4gICAgICAgICAgZmlsbDogJ2N1cnJlbnRDb2xvcicsXG4gICAgICAgICAgZDogdmVjdG9yRGF0YVswXVxuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIHRhZzogJ3BhdGgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgY2xhc3M6IFwiXCIuY29uY2F0KGNvbmZpZy5mYW1pbHlQcmVmaXgsIFwiLVwiKS5jb25jYXQoRFVPVE9ORV9DTEFTU0VTLlBSSU1BUlkpLFxuICAgICAgICAgIGZpbGw6ICdjdXJyZW50Q29sb3InLFxuICAgICAgICAgIGQ6IHZlY3RvckRhdGFbMV1cbiAgICAgICAgfVxuICAgICAgfV1cbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIGVsZW1lbnQgPSB7XG4gICAgICB0YWc6ICdwYXRoJyxcbiAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgZmlsbDogJ2N1cnJlbnRDb2xvcicsXG4gICAgICAgIGQ6IHZlY3RvckRhdGFcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBmb3VuZDogdHJ1ZSxcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgaWNvbjogZWxlbWVudFxuICB9O1xufVxuZnVuY3Rpb24gZmluZEljb24oaWNvbk5hbWUsIHByZWZpeCkge1xuICByZXR1cm4gbmV3IHBpY2tlZChmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIHZhbCA9IHtcbiAgICAgIGZvdW5kOiBmYWxzZSxcbiAgICAgIHdpZHRoOiA1MTIsXG4gICAgICBoZWlnaHQ6IDUxMixcbiAgICAgIGljb246IG1pc3NpbmdcbiAgICB9O1xuXG4gICAgaWYgKGljb25OYW1lICYmIHByZWZpeCAmJiBzdHlsZXMkMltwcmVmaXhdICYmIHN0eWxlcyQyW3ByZWZpeF1baWNvbk5hbWVdKSB7XG4gICAgICB2YXIgaWNvbiA9IHN0eWxlcyQyW3ByZWZpeF1baWNvbk5hbWVdO1xuICAgICAgcmV0dXJuIHJlc29sdmUoYXNGb3VuZEljb24oaWNvbikpO1xuICAgIH1cblxuICAgIHZhciBoZWFkZXJzID0ge307XG5cbiAgICBpZiAoX3R5cGVvZihXSU5ET1cuRm9udEF3ZXNvbWVLaXRDb25maWcpID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygd2luZG93LkZvbnRBd2Vzb21lS2l0Q29uZmlnLnRva2VuID09PSAnc3RyaW5nJykge1xuICAgICAgaGVhZGVyc1snZmEta2l0LXRva2VuJ10gPSBXSU5ET1cuRm9udEF3ZXNvbWVLaXRDb25maWcudG9rZW47XG4gICAgfVxuXG4gICAgaWYgKGljb25OYW1lICYmIHByZWZpeCAmJiAhY29uZmlnLnNob3dNaXNzaW5nSWNvbnMpIHtcbiAgICAgIHJlamVjdChuZXcgTWlzc2luZ0ljb24oXCJJY29uIGlzIG1pc3NpbmcgZm9yIHByZWZpeCBcIi5jb25jYXQocHJlZml4LCBcIiB3aXRoIGljb24gbmFtZSBcIikuY29uY2F0KGljb25OYW1lKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXNvbHZlKHZhbCk7XG4gICAgfVxuICB9KTtcbn1cblxudmFyIHN0eWxlcyQzID0gbmFtZXNwYWNlLnN0eWxlcztcblxuZnVuY3Rpb24gZ2VuZXJhdGVTdmdSZXBsYWNlbWVudE11dGF0aW9uKG5vZGUsIG5vZGVNZXRhKSB7XG4gIHZhciBpY29uTmFtZSA9IG5vZGVNZXRhLmljb25OYW1lLFxuICAgICAgdGl0bGUgPSBub2RlTWV0YS50aXRsZSxcbiAgICAgIHRpdGxlSWQgPSBub2RlTWV0YS50aXRsZUlkLFxuICAgICAgcHJlZml4ID0gbm9kZU1ldGEucHJlZml4LFxuICAgICAgdHJhbnNmb3JtID0gbm9kZU1ldGEudHJhbnNmb3JtLFxuICAgICAgc3ltYm9sID0gbm9kZU1ldGEuc3ltYm9sLFxuICAgICAgbWFzayA9IG5vZGVNZXRhLm1hc2ssXG4gICAgICBtYXNrSWQgPSBub2RlTWV0YS5tYXNrSWQsXG4gICAgICBleHRyYSA9IG5vZGVNZXRhLmV4dHJhO1xuICByZXR1cm4gbmV3IHBpY2tlZChmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgcGlja2VkLmFsbChbZmluZEljb24oaWNvbk5hbWUsIHByZWZpeCksIGZpbmRJY29uKG1hc2suaWNvbk5hbWUsIG1hc2sucHJlZml4KV0pLnRoZW4oZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgIHZhciBfcmVmMiA9IF9zbGljZWRUb0FycmF5KF9yZWYsIDIpLFxuICAgICAgICAgIG1haW4gPSBfcmVmMlswXSxcbiAgICAgICAgICBtYXNrID0gX3JlZjJbMV07XG5cbiAgICAgIHJlc29sdmUoW25vZGUsIG1ha2VJbmxpbmVTdmdBYnN0cmFjdCh7XG4gICAgICAgIGljb25zOiB7XG4gICAgICAgICAgbWFpbjogbWFpbixcbiAgICAgICAgICBtYXNrOiBtYXNrXG4gICAgICAgIH0sXG4gICAgICAgIHByZWZpeDogcHJlZml4LFxuICAgICAgICBpY29uTmFtZTogaWNvbk5hbWUsXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNmb3JtLFxuICAgICAgICBzeW1ib2w6IHN5bWJvbCxcbiAgICAgICAgbWFzazogbWFzayxcbiAgICAgICAgbWFza0lkOiBtYXNrSWQsXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcbiAgICAgICAgdGl0bGVJZDogdGl0bGVJZCxcbiAgICAgICAgZXh0cmE6IGV4dHJhLFxuICAgICAgICB3YXRjaGFibGU6IHRydWVcbiAgICAgIH0pXSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZUxheWVyc1RleHQobm9kZSwgbm9kZU1ldGEpIHtcbiAgdmFyIHRpdGxlID0gbm9kZU1ldGEudGl0bGUsXG4gICAgICB0cmFuc2Zvcm0gPSBub2RlTWV0YS50cmFuc2Zvcm0sXG4gICAgICBleHRyYSA9IG5vZGVNZXRhLmV4dHJhO1xuICB2YXIgd2lkdGggPSBudWxsO1xuICB2YXIgaGVpZ2h0ID0gbnVsbDtcblxuICBpZiAoSVNfSUUpIHtcbiAgICB2YXIgY29tcHV0ZWRGb250U2l6ZSA9IHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUobm9kZSkuZm9udFNpemUsIDEwKTtcbiAgICB2YXIgYm91bmRpbmdDbGllbnRSZWN0ID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICB3aWR0aCA9IGJvdW5kaW5nQ2xpZW50UmVjdC53aWR0aCAvIGNvbXB1dGVkRm9udFNpemU7XG4gICAgaGVpZ2h0ID0gYm91bmRpbmdDbGllbnRSZWN0LmhlaWdodCAvIGNvbXB1dGVkRm9udFNpemU7XG4gIH1cblxuICBpZiAoY29uZmlnLmF1dG9BMTF5ICYmICF0aXRsZSkge1xuICAgIGV4dHJhLmF0dHJpYnV0ZXNbJ2FyaWEtaGlkZGVuJ10gPSAndHJ1ZSc7XG4gIH1cblxuICByZXR1cm4gcGlja2VkLnJlc29sdmUoW25vZGUsIG1ha2VMYXllcnNUZXh0QWJzdHJhY3Qoe1xuICAgIGNvbnRlbnQ6IG5vZGUuaW5uZXJIVE1MLFxuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB0cmFuc2Zvcm06IHRyYW5zZm9ybSxcbiAgICB0aXRsZTogdGl0bGUsXG4gICAgZXh0cmE6IGV4dHJhLFxuICAgIHdhdGNoYWJsZTogdHJ1ZVxuICB9KV0pO1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZU11dGF0aW9uKG5vZGUpIHtcbiAgdmFyIG5vZGVNZXRhID0gcGFyc2VNZXRhKG5vZGUpO1xuXG4gIGlmICh+bm9kZU1ldGEuZXh0cmEuY2xhc3Nlcy5pbmRleE9mKExBWUVSU19URVhUX0NMQVNTTkFNRSkpIHtcbiAgICByZXR1cm4gZ2VuZXJhdGVMYXllcnNUZXh0KG5vZGUsIG5vZGVNZXRhKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2VuZXJhdGVTdmdSZXBsYWNlbWVudE11dGF0aW9uKG5vZGUsIG5vZGVNZXRhKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBvblRyZWUocm9vdCkge1xuICB2YXIgY2FsbGJhY2sgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IG51bGw7XG4gIGlmICghSVNfRE9NKSByZXR1cm47XG4gIHZhciBodG1sQ2xhc3NMaXN0ID0gRE9DVU1FTlQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdDtcblxuICB2YXIgaGNsQWRkID0gZnVuY3Rpb24gaGNsQWRkKHN1ZmZpeCkge1xuICAgIHJldHVybiBodG1sQ2xhc3NMaXN0LmFkZChcIlwiLmNvbmNhdChIVE1MX0NMQVNTX0kyU1ZHX0JBU0VfQ0xBU1MsIFwiLVwiKS5jb25jYXQoc3VmZml4KSk7XG4gIH07XG5cbiAgdmFyIGhjbFJlbW92ZSA9IGZ1bmN0aW9uIGhjbFJlbW92ZShzdWZmaXgpIHtcbiAgICByZXR1cm4gaHRtbENsYXNzTGlzdC5yZW1vdmUoXCJcIi5jb25jYXQoSFRNTF9DTEFTU19JMlNWR19CQVNFX0NMQVNTLCBcIi1cIikuY29uY2F0KHN1ZmZpeCkpO1xuICB9O1xuXG4gIHZhciBwcmVmaXhlcyA9IGNvbmZpZy5hdXRvRmV0Y2hTdmcgPyBPYmplY3Qua2V5cyhQUkVGSVhfVE9fU1RZTEUpIDogT2JqZWN0LmtleXMoc3R5bGVzJDMpO1xuICB2YXIgcHJlZml4ZXNEb21RdWVyeSA9IFtcIi5cIi5jb25jYXQoTEFZRVJTX1RFWFRfQ0xBU1NOQU1FLCBcIjpub3QoW1wiKS5jb25jYXQoREFUQV9GQV9JMlNWRywgXCJdKVwiKV0uY29uY2F0KHByZWZpeGVzLm1hcChmdW5jdGlvbiAocCkge1xuICAgIHJldHVybiBcIi5cIi5jb25jYXQocCwgXCI6bm90KFtcIikuY29uY2F0KERBVEFfRkFfSTJTVkcsIFwiXSlcIik7XG4gIH0pKS5qb2luKCcsICcpO1xuXG4gIGlmIChwcmVmaXhlc0RvbVF1ZXJ5Lmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBjYW5kaWRhdGVzID0gW107XG5cbiAgdHJ5IHtcbiAgICBjYW5kaWRhdGVzID0gdG9BcnJheShyb290LnF1ZXJ5U2VsZWN0b3JBbGwocHJlZml4ZXNEb21RdWVyeSkpO1xuICB9IGNhdGNoIChlKSB7Ly8gbm9vcFxuICB9XG5cbiAgaWYgKGNhbmRpZGF0ZXMubGVuZ3RoID4gMCkge1xuICAgIGhjbEFkZCgncGVuZGluZycpO1xuICAgIGhjbFJlbW92ZSgnY29tcGxldGUnKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgbWFyayA9IHBlcmYuYmVnaW4oJ29uVHJlZScpO1xuICB2YXIgbXV0YXRpb25zID0gY2FuZGlkYXRlcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgbm9kZSkge1xuICAgIHRyeSB7XG4gICAgICB2YXIgbXV0YXRpb24gPSBnZW5lcmF0ZU11dGF0aW9uKG5vZGUpO1xuXG4gICAgICBpZiAobXV0YXRpb24pIHtcbiAgICAgICAgYWNjLnB1c2gobXV0YXRpb24pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICghUFJPRFVDVElPTikge1xuICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIE1pc3NpbmdJY29uKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdKTtcbiAgcmV0dXJuIG5ldyBwaWNrZWQoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHBpY2tlZC5hbGwobXV0YXRpb25zKS50aGVuKGZ1bmN0aW9uIChyZXNvbHZlZE11dGF0aW9ucykge1xuICAgICAgcGVyZm9ybShyZXNvbHZlZE11dGF0aW9ucywgZnVuY3Rpb24gKCkge1xuICAgICAgICBoY2xBZGQoJ2FjdGl2ZScpO1xuICAgICAgICBoY2xBZGQoJ2NvbXBsZXRlJyk7XG4gICAgICAgIGhjbFJlbW92ZSgncGVuZGluZycpO1xuICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSBjYWxsYmFjaygpO1xuICAgICAgICBtYXJrKCk7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIG1hcmsoKTtcbiAgICAgIHJlamVjdCgpO1xuICAgIH0pO1xuICB9KTtcbn1cbmZ1bmN0aW9uIG9uTm9kZShub2RlKSB7XG4gIHZhciBjYWxsYmFjayA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogbnVsbDtcbiAgZ2VuZXJhdGVNdXRhdGlvbihub2RlKS50aGVuKGZ1bmN0aW9uIChtdXRhdGlvbikge1xuICAgIGlmIChtdXRhdGlvbikge1xuICAgICAgcGVyZm9ybShbbXV0YXRpb25dLCBjYWxsYmFjayk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZUZvclBvc2l0aW9uKG5vZGUsIHBvc2l0aW9uKSB7XG4gIHZhciBwZW5kaW5nQXR0cmlidXRlID0gXCJcIi5jb25jYXQoREFUQV9GQV9QU0VVRE9fRUxFTUVOVF9QRU5ESU5HKS5jb25jYXQocG9zaXRpb24ucmVwbGFjZSgnOicsICctJykpO1xuICByZXR1cm4gbmV3IHBpY2tlZChmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgaWYgKG5vZGUuZ2V0QXR0cmlidXRlKHBlbmRpbmdBdHRyaWJ1dGUpICE9PSBudWxsKSB7XG4gICAgICAvLyBUaGlzIG5vZGUgaXMgYWxyZWFkeSBiZWluZyBwcm9jZXNzZWRcbiAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgdmFyIGNoaWxkcmVuID0gdG9BcnJheShub2RlLmNoaWxkcmVuKTtcbiAgICB2YXIgYWxyZWFkeVByb2Nlc3NlZFBzZXVkb0VsZW1lbnQgPSBjaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24gKGMpIHtcbiAgICAgIHJldHVybiBjLmdldEF0dHJpYnV0ZShEQVRBX0ZBX1BTRVVET19FTEVNRU5UKSA9PT0gcG9zaXRpb247XG4gICAgfSlbMF07XG4gICAgdmFyIHN0eWxlcyA9IFdJTkRPVy5nZXRDb21wdXRlZFN0eWxlKG5vZGUsIHBvc2l0aW9uKTtcbiAgICB2YXIgZm9udEZhbWlseSA9IHN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKCdmb250LWZhbWlseScpLm1hdGNoKEZPTlRfRkFNSUxZX1BBVFRFUk4pO1xuICAgIHZhciBmb250V2VpZ2h0ID0gc3R5bGVzLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtd2VpZ2h0Jyk7XG4gICAgdmFyIGNvbnRlbnQgPSBzdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgnY29udGVudCcpO1xuXG4gICAgaWYgKGFscmVhZHlQcm9jZXNzZWRQc2V1ZG9FbGVtZW50ICYmICFmb250RmFtaWx5KSB7XG4gICAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IHByb2Nlc3NlZCBpdCBidXQgdGhlIGN1cnJlbnQgY29tcHV0ZWQgc3R5bGUgZG9lcyBub3QgcmVzdWx0IGluIGEgZm9udC1mYW1pbHksXG4gICAgICAvLyB0aGF0IHByb2JhYmx5IG1lYW5zIHRoYXQgYSBjbGFzcyBuYW1lIHRoYXQgd2FzIHByZXZpb3VzbHkgcHJlc2VudCB0byBtYWtlIHRoZSBpY29uIGhhcyBiZWVuXG4gICAgICAvLyByZW1vdmVkLiBTbyB3ZSBub3cgc2hvdWxkIGRlbGV0ZSB0aGUgaWNvbi5cbiAgICAgIG5vZGUucmVtb3ZlQ2hpbGQoYWxyZWFkeVByb2Nlc3NlZFBzZXVkb0VsZW1lbnQpO1xuICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICB9IGVsc2UgaWYgKGZvbnRGYW1pbHkgJiYgY29udGVudCAhPT0gJ25vbmUnICYmIGNvbnRlbnQgIT09ICcnKSB7XG4gICAgICB2YXIgcHJlZml4ID0gflsnU29saWQnLCAnUmVndWxhcicsICdMaWdodCcsICdEdW90b25lJywgJ0JyYW5kcyddLmluZGV4T2YoZm9udEZhbWlseVsxXSkgPyBTVFlMRV9UT19QUkVGSVhbZm9udEZhbWlseVsxXS50b0xvd2VyQ2FzZSgpXSA6IEZPTlRfV0VJR0hUX1RPX1BSRUZJWFtmb250V2VpZ2h0XTtcbiAgICAgIHZhciBoZXhWYWx1ZSA9IHRvSGV4KGNvbnRlbnQubGVuZ3RoID09PSAzID8gY29udGVudC5zdWJzdHIoMSwgMSkgOiBjb250ZW50KTtcbiAgICAgIHZhciBpY29uTmFtZSA9IGJ5VW5pY29kZShwcmVmaXgsIGhleFZhbHVlKTtcbiAgICAgIHZhciBpY29uSWRlbnRpZmllciA9IGljb25OYW1lOyAvLyBPbmx5IGNvbnZlcnQgdGhlIHBzZXVkbyBlbGVtZW50IGluIHRoaXMgOmJlZm9yZS86YWZ0ZXIgcG9zaXRpb24gaW50byBhbiBpY29uIGlmIHdlIGhhdmVuJ3RcbiAgICAgIC8vIGFscmVhZHkgZG9uZSBzbyB3aXRoIHRoZSBzYW1lIHByZWZpeCBhbmQgaWNvbk5hbWVcblxuICAgICAgaWYgKGljb25OYW1lICYmICghYWxyZWFkeVByb2Nlc3NlZFBzZXVkb0VsZW1lbnQgfHwgYWxyZWFkeVByb2Nlc3NlZFBzZXVkb0VsZW1lbnQuZ2V0QXR0cmlidXRlKERBVEFfUFJFRklYKSAhPT0gcHJlZml4IHx8IGFscmVhZHlQcm9jZXNzZWRQc2V1ZG9FbGVtZW50LmdldEF0dHJpYnV0ZShEQVRBX0lDT04pICE9PSBpY29uSWRlbnRpZmllcikpIHtcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUocGVuZGluZ0F0dHJpYnV0ZSwgaWNvbklkZW50aWZpZXIpO1xuXG4gICAgICAgIGlmIChhbHJlYWR5UHJvY2Vzc2VkUHNldWRvRWxlbWVudCkge1xuICAgICAgICAgIC8vIERlbGV0ZSB0aGUgb2xkIG9uZSwgc2luY2Ugd2UncmUgcmVwbGFjaW5nIGl0IHdpdGggYSBuZXcgb25lXG4gICAgICAgICAgbm9kZS5yZW1vdmVDaGlsZChhbHJlYWR5UHJvY2Vzc2VkUHNldWRvRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbWV0YSA9IGJsYW5rTWV0YSgpO1xuICAgICAgICB2YXIgZXh0cmEgPSBtZXRhLmV4dHJhO1xuICAgICAgICBleHRyYS5hdHRyaWJ1dGVzW0RBVEFfRkFfUFNFVURPX0VMRU1FTlRdID0gcG9zaXRpb247XG4gICAgICAgIGZpbmRJY29uKGljb25OYW1lLCBwcmVmaXgpLnRoZW4oZnVuY3Rpb24gKG1haW4pIHtcbiAgICAgICAgICB2YXIgYWJzdHJhY3QgPSBtYWtlSW5saW5lU3ZnQWJzdHJhY3QoX29iamVjdFNwcmVhZCh7fSwgbWV0YSwge1xuICAgICAgICAgICAgaWNvbnM6IHtcbiAgICAgICAgICAgICAgbWFpbjogbWFpbixcbiAgICAgICAgICAgICAgbWFzazogZW1wdHlDYW5vbmljYWxJY29uKClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmVmaXg6IHByZWZpeCxcbiAgICAgICAgICAgIGljb25OYW1lOiBpY29uSWRlbnRpZmllcixcbiAgICAgICAgICAgIGV4dHJhOiBleHRyYSxcbiAgICAgICAgICAgIHdhdGNoYWJsZTogdHJ1ZVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgICB2YXIgZWxlbWVudCA9IERPQ1VNRU5ULmNyZWF0ZUVsZW1lbnQoJ3N2ZycpO1xuXG4gICAgICAgICAgaWYgKHBvc2l0aW9uID09PSAnOmJlZm9yZScpIHtcbiAgICAgICAgICAgIG5vZGUuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIG5vZGUuZmlyc3RDaGlsZCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5vZGUuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZWxlbWVudC5vdXRlckhUTUwgPSBhYnN0cmFjdC5tYXAoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgIHJldHVybiB0b0h0bWwoYSk7XG4gICAgICAgICAgfSkuam9pbignXFxuJyk7XG4gICAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUocGVuZGluZ0F0dHJpYnV0ZSk7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9KS5jYXRjaChyZWplY3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZShub2RlKSB7XG4gIHJldHVybiBwaWNrZWQuYWxsKFtyZXBsYWNlRm9yUG9zaXRpb24obm9kZSwgJzpiZWZvcmUnKSwgcmVwbGFjZUZvclBvc2l0aW9uKG5vZGUsICc6YWZ0ZXInKV0pO1xufVxuXG5mdW5jdGlvbiBwcm9jZXNzYWJsZShub2RlKSB7XG4gIHJldHVybiBub2RlLnBhcmVudE5vZGUgIT09IGRvY3VtZW50LmhlYWQgJiYgIX5UQUdOQU1FU19UT19TS0lQX0ZPUl9QU0VVRE9FTEVNRU5UUy5pbmRleE9mKG5vZGUudGFnTmFtZS50b1VwcGVyQ2FzZSgpKSAmJiAhbm9kZS5nZXRBdHRyaWJ1dGUoREFUQV9GQV9QU0VVRE9fRUxFTUVOVCkgJiYgKCFub2RlLnBhcmVudE5vZGUgfHwgbm9kZS5wYXJlbnROb2RlLnRhZ05hbWUgIT09ICdzdmcnKTtcbn1cblxuZnVuY3Rpb24gc2VhcmNoUHNldWRvRWxlbWVudHMgKHJvb3QpIHtcbiAgaWYgKCFJU19ET00pIHJldHVybjtcbiAgcmV0dXJuIG5ldyBwaWNrZWQoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciBvcGVyYXRpb25zID0gdG9BcnJheShyb290LnF1ZXJ5U2VsZWN0b3JBbGwoJyonKSkuZmlsdGVyKHByb2Nlc3NhYmxlKS5tYXAocmVwbGFjZSk7XG4gICAgdmFyIGVuZCA9IHBlcmYuYmVnaW4oJ3NlYXJjaFBzZXVkb0VsZW1lbnRzJyk7XG4gICAgZGlzYWJsZU9ic2VydmF0aW9uKCk7XG4gICAgcGlja2VkLmFsbChvcGVyYXRpb25zKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIGVuZCgpO1xuICAgICAgZW5hYmxlT2JzZXJ2YXRpb24oKTtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICBlbmQoKTtcbiAgICAgIGVuYWJsZU9ic2VydmF0aW9uKCk7XG4gICAgICByZWplY3QoKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbnZhciBiYXNlU3R5bGVzID0gXCJzdmc6bm90KDpyb290KS5zdmctaW5saW5lLS1mYSB7XFxuICBvdmVyZmxvdzogdmlzaWJsZTtcXG59XFxuXFxuLnN2Zy1pbmxpbmUtLWZhIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcXG4gIGhlaWdodDogMWVtO1xcbiAgb3ZlcmZsb3c6IHZpc2libGU7XFxuICB2ZXJ0aWNhbC1hbGlnbjogLTAuMTI1ZW07XFxufVxcbi5zdmctaW5saW5lLS1mYS5mYS1sZyB7XFxuICB2ZXJ0aWNhbC1hbGlnbjogLTAuMjI1ZW07XFxufVxcbi5zdmctaW5saW5lLS1mYS5mYS13LTEge1xcbiAgd2lkdGg6IDAuMDYyNWVtO1xcbn1cXG4uc3ZnLWlubGluZS0tZmEuZmEtdy0yIHtcXG4gIHdpZHRoOiAwLjEyNWVtO1xcbn1cXG4uc3ZnLWlubGluZS0tZmEuZmEtdy0zIHtcXG4gIHdpZHRoOiAwLjE4NzVlbTtcXG59XFxuLnN2Zy1pbmxpbmUtLWZhLmZhLXctNCB7XFxuICB3aWR0aDogMC4yNWVtO1xcbn1cXG4uc3ZnLWlubGluZS0tZmEuZmEtdy01IHtcXG4gIHdpZHRoOiAwLjMxMjVlbTtcXG59XFxuLnN2Zy1pbmxpbmUtLWZhLmZhLXctNiB7XFxuICB3aWR0aDogMC4zNzVlbTtcXG59XFxuLnN2Zy1pbmxpbmUtLWZhLmZhLXctNyB7XFxuICB3aWR0aDogMC40Mzc1ZW07XFxufVxcbi5zdmctaW5saW5lLS1mYS5mYS13LTgge1xcbiAgd2lkdGg6IDAuNWVtO1xcbn1cXG4uc3ZnLWlubGluZS0tZmEuZmEtdy05IHtcXG4gIHdpZHRoOiAwLjU2MjVlbTtcXG59XFxuLnN2Zy1pbmxpbmUtLWZhLmZhLXctMTAge1xcbiAgd2lkdGg6IDAuNjI1ZW07XFxufVxcbi5zdmctaW5saW5lLS1mYS5mYS13LTExIHtcXG4gIHdpZHRoOiAwLjY4NzVlbTtcXG59XFxuLnN2Zy1pbmxpbmUtLWZhLmZhLXctMTIge1xcbiAgd2lkdGg6IDAuNzVlbTtcXG59XFxuLnN2Zy1pbmxpbmUtLWZhLmZhLXctMTMge1xcbiAgd2lkdGg6IDAuODEyNWVtO1xcbn1cXG4uc3ZnLWlubGluZS0tZmEuZmEtdy0xNCB7XFxuICB3aWR0aDogMC44NzVlbTtcXG59XFxuLnN2Zy1pbmxpbmUtLWZhLmZhLXctMTUge1xcbiAgd2lkdGg6IDAuOTM3NWVtO1xcbn1cXG4uc3ZnLWlubGluZS0tZmEuZmEtdy0xNiB7XFxuICB3aWR0aDogMWVtO1xcbn1cXG4uc3ZnLWlubGluZS0tZmEuZmEtdy0xNyB7XFxuICB3aWR0aDogMS4wNjI1ZW07XFxufVxcbi5zdmctaW5saW5lLS1mYS5mYS13LTE4IHtcXG4gIHdpZHRoOiAxLjEyNWVtO1xcbn1cXG4uc3ZnLWlubGluZS0tZmEuZmEtdy0xOSB7XFxuICB3aWR0aDogMS4xODc1ZW07XFxufVxcbi5zdmctaW5saW5lLS1mYS5mYS13LTIwIHtcXG4gIHdpZHRoOiAxLjI1ZW07XFxufVxcbi5zdmctaW5saW5lLS1mYS5mYS1wdWxsLWxlZnQge1xcbiAgbWFyZ2luLXJpZ2h0OiAwLjNlbTtcXG4gIHdpZHRoOiBhdXRvO1xcbn1cXG4uc3ZnLWlubGluZS0tZmEuZmEtcHVsbC1yaWdodCB7XFxuICBtYXJnaW4tbGVmdDogMC4zZW07XFxuICB3aWR0aDogYXV0bztcXG59XFxuLnN2Zy1pbmxpbmUtLWZhLmZhLWJvcmRlciB7XFxuICBoZWlnaHQ6IDEuNWVtO1xcbn1cXG4uc3ZnLWlubGluZS0tZmEuZmEtbGkge1xcbiAgd2lkdGg6IDJlbTtcXG59XFxuLnN2Zy1pbmxpbmUtLWZhLmZhLWZ3IHtcXG4gIHdpZHRoOiAxLjI1ZW07XFxufVxcblxcbi5mYS1sYXllcnMgc3ZnLnN2Zy1pbmxpbmUtLWZhIHtcXG4gIGJvdHRvbTogMDtcXG4gIGxlZnQ6IDA7XFxuICBtYXJnaW46IGF1dG87XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICByaWdodDogMDtcXG4gIHRvcDogMDtcXG59XFxuXFxuLmZhLWxheWVycyB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBoZWlnaHQ6IDFlbTtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIHZlcnRpY2FsLWFsaWduOiAtMC4xMjVlbTtcXG4gIHdpZHRoOiAxZW07XFxufVxcbi5mYS1sYXllcnMgc3ZnLnN2Zy1pbmxpbmUtLWZhIHtcXG4gIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcXG4gICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcXG59XFxuXFxuLmZhLWxheWVycy1jb3VudGVyLCAuZmEtbGF5ZXJzLXRleHQge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbn1cXG5cXG4uZmEtbGF5ZXJzLXRleHQge1xcbiAgbGVmdDogNTAlO1xcbiAgdG9wOiA1MCU7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcXG4gIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcXG4gICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcXG59XFxuXFxuLmZhLWxheWVycy1jb3VudGVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjI1M2E7XFxuICBib3JkZXItcmFkaXVzOiAxZW07XFxuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBjb2xvcjogI2ZmZjtcXG4gIGhlaWdodDogMS41ZW07XFxuICBsaW5lLWhlaWdodDogMTtcXG4gIG1heC13aWR0aDogNWVtO1xcbiAgbWluLXdpZHRoOiAxLjVlbTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBwYWRkaW5nOiAwLjI1ZW07XFxuICByaWdodDogMDtcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgdG9wOiAwO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuMjUpO1xcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuMjUpO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiB0b3AgcmlnaHQ7XFxuICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcCByaWdodDtcXG59XFxuXFxuLmZhLWxheWVycy1ib3R0b20tcmlnaHQge1xcbiAgYm90dG9tOiAwO1xcbiAgcmlnaHQ6IDA7XFxuICB0b3A6IGF1dG87XFxuICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC4yNSk7XFxuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC4yNSk7XFxuICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSByaWdodDtcXG4gICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogYm90dG9tIHJpZ2h0O1xcbn1cXG5cXG4uZmEtbGF5ZXJzLWJvdHRvbS1sZWZ0IHtcXG4gIGJvdHRvbTogMDtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogYXV0bztcXG4gIHRvcDogYXV0bztcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjI1KTtcXG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjI1KTtcXG4gIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogYm90dG9tIGxlZnQ7XFxuICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSBsZWZ0O1xcbn1cXG5cXG4uZmEtbGF5ZXJzLXRvcC1yaWdodCB7XFxuICByaWdodDogMDtcXG4gIHRvcDogMDtcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjI1KTtcXG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjI1KTtcXG4gIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogdG9wIHJpZ2h0O1xcbiAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgcmlnaHQ7XFxufVxcblxcbi5mYS1sYXllcnMtdG9wLWxlZnQge1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiBhdXRvO1xcbiAgdG9wOiAwO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuMjUpO1xcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuMjUpO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDtcXG4gICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7XFxufVxcblxcbi5mYS1sZyB7XFxuICBmb250LXNpemU6IDEuMzMzMzMzMzMzM2VtO1xcbiAgbGluZS1oZWlnaHQ6IDAuNzVlbTtcXG4gIHZlcnRpY2FsLWFsaWduOiAtMC4wNjY3ZW07XFxufVxcblxcbi5mYS14cyB7XFxuICBmb250LXNpemU6IDAuNzVlbTtcXG59XFxuXFxuLmZhLXNtIHtcXG4gIGZvbnQtc2l6ZTogMC44NzVlbTtcXG59XFxuXFxuLmZhLTF4IHtcXG4gIGZvbnQtc2l6ZTogMWVtO1xcbn1cXG5cXG4uZmEtMngge1xcbiAgZm9udC1zaXplOiAyZW07XFxufVxcblxcbi5mYS0zeCB7XFxuICBmb250LXNpemU6IDNlbTtcXG59XFxuXFxuLmZhLTR4IHtcXG4gIGZvbnQtc2l6ZTogNGVtO1xcbn1cXG5cXG4uZmEtNXgge1xcbiAgZm9udC1zaXplOiA1ZW07XFxufVxcblxcbi5mYS02eCB7XFxuICBmb250LXNpemU6IDZlbTtcXG59XFxuXFxuLmZhLTd4IHtcXG4gIGZvbnQtc2l6ZTogN2VtO1xcbn1cXG5cXG4uZmEtOHgge1xcbiAgZm9udC1zaXplOiA4ZW07XFxufVxcblxcbi5mYS05eCB7XFxuICBmb250LXNpemU6IDllbTtcXG59XFxuXFxuLmZhLTEweCB7XFxuICBmb250LXNpemU6IDEwZW07XFxufVxcblxcbi5mYS1mdyB7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICB3aWR0aDogMS4yNWVtO1xcbn1cXG5cXG4uZmEtdWwge1xcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xcbiAgbWFyZ2luLWxlZnQ6IDIuNWVtO1xcbiAgcGFkZGluZy1sZWZ0OiAwO1xcbn1cXG4uZmEtdWwgPiBsaSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcblxcbi5mYS1saSB7XFxuICBsZWZ0OiAtMmVtO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgd2lkdGg6IDJlbTtcXG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcbn1cXG5cXG4uZmEtYm9yZGVyIHtcXG4gIGJvcmRlcjogc29saWQgMC4wOGVtICNlZWU7XFxuICBib3JkZXItcmFkaXVzOiAwLjFlbTtcXG4gIHBhZGRpbmc6IDAuMmVtIDAuMjVlbSAwLjE1ZW07XFxufVxcblxcbi5mYS1wdWxsLWxlZnQge1xcbiAgZmxvYXQ6IGxlZnQ7XFxufVxcblxcbi5mYS1wdWxsLXJpZ2h0IHtcXG4gIGZsb2F0OiByaWdodDtcXG59XFxuXFxuLmZhLmZhLXB1bGwtbGVmdCxcXG4uZmFzLmZhLXB1bGwtbGVmdCxcXG4uZmFyLmZhLXB1bGwtbGVmdCxcXG4uZmFsLmZhLXB1bGwtbGVmdCxcXG4uZmFiLmZhLXB1bGwtbGVmdCB7XFxuICBtYXJnaW4tcmlnaHQ6IDAuM2VtO1xcbn1cXG4uZmEuZmEtcHVsbC1yaWdodCxcXG4uZmFzLmZhLXB1bGwtcmlnaHQsXFxuLmZhci5mYS1wdWxsLXJpZ2h0LFxcbi5mYWwuZmEtcHVsbC1yaWdodCxcXG4uZmFiLmZhLXB1bGwtcmlnaHQge1xcbiAgbWFyZ2luLWxlZnQ6IDAuM2VtO1xcbn1cXG5cXG4uZmEtc3BpbiB7XFxuICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAycyBpbmZpbml0ZSBsaW5lYXI7XFxuICAgICAgICAgIGFuaW1hdGlvbjogZmEtc3BpbiAycyBpbmZpbml0ZSBsaW5lYXI7XFxufVxcblxcbi5mYS1wdWxzZSB7XFxuICAtd2Via2l0LWFuaW1hdGlvbjogZmEtc3BpbiAxcyBpbmZpbml0ZSBzdGVwcyg4KTtcXG4gICAgICAgICAgYW5pbWF0aW9uOiBmYS1zcGluIDFzIGluZmluaXRlIHN0ZXBzKDgpO1xcbn1cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgZmEtc3BpbiB7XFxuICAwJSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICB9XFxuICAxMDAlIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICB9XFxufVxcblxcbkBrZXlmcmFtZXMgZmEtc3BpbiB7XFxuICAwJSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICB9XFxuICAxMDAlIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICB9XFxufVxcbi5mYS1yb3RhdGUtOTAge1xcbiAgLW1zLWZpbHRlcjogXFxcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTEpXFxcIjtcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XFxufVxcblxcbi5mYS1yb3RhdGUtMTgwIHtcXG4gIC1tcy1maWx0ZXI6IFxcXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQmFzaWNJbWFnZShyb3RhdGlvbj0yKVxcXCI7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XFxuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XFxufVxcblxcbi5mYS1yb3RhdGUtMjcwIHtcXG4gIC1tcy1maWx0ZXI6IFxcXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQmFzaWNJbWFnZShyb3RhdGlvbj0zKVxcXCI7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDI3MGRlZyk7XFxuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZyk7XFxufVxcblxcbi5mYS1mbGlwLWhvcml6b250YWwge1xcbiAgLW1zLWZpbHRlcjogXFxcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTAsIG1pcnJvcj0xKVxcXCI7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoLTEsIDEpO1xcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTtcXG59XFxuXFxuLmZhLWZsaXAtdmVydGljYWwge1xcbiAgLW1zLWZpbHRlcjogXFxcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTIsIG1pcnJvcj0xKVxcXCI7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSwgLTEpO1xcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIC0xKTtcXG59XFxuXFxuLmZhLWZsaXAtYm90aCwgLmZhLWZsaXAtaG9yaXpvbnRhbC5mYS1mbGlwLXZlcnRpY2FsIHtcXG4gIC1tcy1maWx0ZXI6IFxcXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQmFzaWNJbWFnZShyb3RhdGlvbj0yLCBtaXJyb3I9MSlcXFwiO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKC0xLCAtMSk7XFxuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoLTEsIC0xKTtcXG59XFxuXFxuOnJvb3QgLmZhLXJvdGF0ZS05MCxcXG46cm9vdCAuZmEtcm90YXRlLTE4MCxcXG46cm9vdCAuZmEtcm90YXRlLTI3MCxcXG46cm9vdCAuZmEtZmxpcC1ob3Jpem9udGFsLFxcbjpyb290IC5mYS1mbGlwLXZlcnRpY2FsLFxcbjpyb290IC5mYS1mbGlwLWJvdGgge1xcbiAgLXdlYmtpdC1maWx0ZXI6IG5vbmU7XFxuICAgICAgICAgIGZpbHRlcjogbm9uZTtcXG59XFxuXFxuLmZhLXN0YWNrIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIGhlaWdodDogMmVtO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgd2lkdGg6IDIuNWVtO1xcbn1cXG5cXG4uZmEtc3RhY2stMXgsXFxuLmZhLXN0YWNrLTJ4IHtcXG4gIGJvdHRvbTogMDtcXG4gIGxlZnQ6IDA7XFxuICBtYXJnaW46IGF1dG87XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICByaWdodDogMDtcXG4gIHRvcDogMDtcXG59XFxuXFxuLnN2Zy1pbmxpbmUtLWZhLmZhLXN0YWNrLTF4IHtcXG4gIGhlaWdodDogMWVtO1xcbiAgd2lkdGg6IDEuMjVlbTtcXG59XFxuLnN2Zy1pbmxpbmUtLWZhLmZhLXN0YWNrLTJ4IHtcXG4gIGhlaWdodDogMmVtO1xcbiAgd2lkdGg6IDIuNWVtO1xcbn1cXG5cXG4uZmEtaW52ZXJzZSB7XFxuICBjb2xvcjogI2ZmZjtcXG59XFxuXFxuLnNyLW9ubHkge1xcbiAgYm9yZGVyOiAwO1xcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcXG4gIGhlaWdodDogMXB4O1xcbiAgbWFyZ2luOiAtMXB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHBhZGRpbmc6IDA7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB3aWR0aDogMXB4O1xcbn1cXG5cXG4uc3Itb25seS1mb2N1c2FibGU6YWN0aXZlLCAuc3Itb25seS1mb2N1c2FibGU6Zm9jdXMge1xcbiAgY2xpcDogYXV0bztcXG4gIGhlaWdodDogYXV0bztcXG4gIG1hcmdpbjogMDtcXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xcbiAgcG9zaXRpb246IHN0YXRpYztcXG4gIHdpZHRoOiBhdXRvO1xcbn1cXG5cXG4uc3ZnLWlubGluZS0tZmEgLmZhLXByaW1hcnkge1xcbiAgZmlsbDogdmFyKC0tZmEtcHJpbWFyeS1jb2xvciwgY3VycmVudENvbG9yKTtcXG4gIG9wYWNpdHk6IDE7XFxuICBvcGFjaXR5OiB2YXIoLS1mYS1wcmltYXJ5LW9wYWNpdHksIDEpO1xcbn1cXG5cXG4uc3ZnLWlubGluZS0tZmEgLmZhLXNlY29uZGFyeSB7XFxuICBmaWxsOiB2YXIoLS1mYS1zZWNvbmRhcnktY29sb3IsIGN1cnJlbnRDb2xvcik7XFxuICBvcGFjaXR5OiAwLjQ7XFxuICBvcGFjaXR5OiB2YXIoLS1mYS1zZWNvbmRhcnktb3BhY2l0eSwgMC40KTtcXG59XFxuXFxuLnN2Zy1pbmxpbmUtLWZhLmZhLXN3YXAtb3BhY2l0eSAuZmEtcHJpbWFyeSB7XFxuICBvcGFjaXR5OiAwLjQ7XFxuICBvcGFjaXR5OiB2YXIoLS1mYS1zZWNvbmRhcnktb3BhY2l0eSwgMC40KTtcXG59XFxuXFxuLnN2Zy1pbmxpbmUtLWZhLmZhLXN3YXAtb3BhY2l0eSAuZmEtc2Vjb25kYXJ5IHtcXG4gIG9wYWNpdHk6IDE7XFxuICBvcGFjaXR5OiB2YXIoLS1mYS1wcmltYXJ5LW9wYWNpdHksIDEpO1xcbn1cXG5cXG4uc3ZnLWlubGluZS0tZmEgbWFzayAuZmEtcHJpbWFyeSxcXG4uc3ZnLWlubGluZS0tZmEgbWFzayAuZmEtc2Vjb25kYXJ5IHtcXG4gIGZpbGw6IGJsYWNrO1xcbn1cXG5cXG4uZmFkLmZhLWludmVyc2Uge1xcbiAgY29sb3I6ICNmZmY7XFxufVwiO1xuXG5mdW5jdGlvbiBjc3MgKCkge1xuICB2YXIgZGZwID0gREVGQVVMVF9GQU1JTFlfUFJFRklYO1xuICB2YXIgZHJjID0gREVGQVVMVF9SRVBMQUNFTUVOVF9DTEFTUztcbiAgdmFyIGZwID0gY29uZmlnLmZhbWlseVByZWZpeDtcbiAgdmFyIHJjID0gY29uZmlnLnJlcGxhY2VtZW50Q2xhc3M7XG4gIHZhciBzID0gYmFzZVN0eWxlcztcblxuICBpZiAoZnAgIT09IGRmcCB8fCByYyAhPT0gZHJjKSB7XG4gICAgdmFyIGRQYXR0ID0gbmV3IFJlZ0V4cChcIlxcXFwuXCIuY29uY2F0KGRmcCwgXCJcXFxcLVwiKSwgJ2cnKTtcbiAgICB2YXIgY3VzdG9tUHJvcFBhdHQgPSBuZXcgUmVnRXhwKFwiXFxcXC0tXCIuY29uY2F0KGRmcCwgXCJcXFxcLVwiKSwgJ2cnKTtcbiAgICB2YXIgclBhdHQgPSBuZXcgUmVnRXhwKFwiXFxcXC5cIi5jb25jYXQoZHJjKSwgJ2cnKTtcbiAgICBzID0gcy5yZXBsYWNlKGRQYXR0LCBcIi5cIi5jb25jYXQoZnAsIFwiLVwiKSkucmVwbGFjZShjdXN0b21Qcm9wUGF0dCwgXCItLVwiLmNvbmNhdChmcCwgXCItXCIpKS5yZXBsYWNlKHJQYXR0LCBcIi5cIi5jb25jYXQocmMpKTtcbiAgfVxuXG4gIHJldHVybiBzO1xufVxuXG52YXIgTGlicmFyeSA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIExpYnJhcnkoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIExpYnJhcnkpO1xuXG4gICAgdGhpcy5kZWZpbml0aW9ucyA9IHt9O1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKExpYnJhcnksIFt7XG4gICAga2V5OiBcImFkZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGQoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgZGVmaW5pdGlvbnMgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgIGRlZmluaXRpb25zW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgfVxuXG4gICAgICB2YXIgYWRkaXRpb25zID0gZGVmaW5pdGlvbnMucmVkdWNlKHRoaXMuX3B1bGxEZWZpbml0aW9ucywge30pO1xuICAgICAgT2JqZWN0LmtleXMoYWRkaXRpb25zKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgX3RoaXMuZGVmaW5pdGlvbnNba2V5XSA9IF9vYmplY3RTcHJlYWQoe30sIF90aGlzLmRlZmluaXRpb25zW2tleV0gfHwge30sIGFkZGl0aW9uc1trZXldKTtcbiAgICAgICAgZGVmaW5lSWNvbnMoa2V5LCBhZGRpdGlvbnNba2V5XSk7XG4gICAgICAgIGJ1aWxkKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVzZXQoKSB7XG4gICAgICB0aGlzLmRlZmluaXRpb25zID0ge307XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIl9wdWxsRGVmaW5pdGlvbnNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX3B1bGxEZWZpbml0aW9ucyhhZGRpdGlvbnMsIGRlZmluaXRpb24pIHtcbiAgICAgIHZhciBub3JtYWxpemVkID0gZGVmaW5pdGlvbi5wcmVmaXggJiYgZGVmaW5pdGlvbi5pY29uTmFtZSAmJiBkZWZpbml0aW9uLmljb24gPyB7XG4gICAgICAgIDA6IGRlZmluaXRpb25cbiAgICAgIH0gOiBkZWZpbml0aW9uO1xuICAgICAgT2JqZWN0LmtleXMobm9ybWFsaXplZCkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIF9ub3JtYWxpemVkJGtleSA9IG5vcm1hbGl6ZWRba2V5XSxcbiAgICAgICAgICAgIHByZWZpeCA9IF9ub3JtYWxpemVkJGtleS5wcmVmaXgsXG4gICAgICAgICAgICBpY29uTmFtZSA9IF9ub3JtYWxpemVkJGtleS5pY29uTmFtZSxcbiAgICAgICAgICAgIGljb24gPSBfbm9ybWFsaXplZCRrZXkuaWNvbjtcbiAgICAgICAgaWYgKCFhZGRpdGlvbnNbcHJlZml4XSkgYWRkaXRpb25zW3ByZWZpeF0gPSB7fTtcbiAgICAgICAgYWRkaXRpb25zW3ByZWZpeF1baWNvbk5hbWVdID0gaWNvbjtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFkZGl0aW9ucztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTGlicmFyeTtcbn0oKTtcblxuZnVuY3Rpb24gZW5zdXJlQ3NzKCkge1xuICBpZiAoY29uZmlnLmF1dG9BZGRDc3MgJiYgIV9jc3NJbnNlcnRlZCkge1xuICAgIGluc2VydENzcyhjc3MoKSk7XG5cbiAgICBfY3NzSW5zZXJ0ZWQgPSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFwaU9iamVjdCh2YWwsIGFic3RyYWN0Q3JlYXRvcikge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodmFsLCAnYWJzdHJhY3QnLCB7XG4gICAgZ2V0OiBhYnN0cmFjdENyZWF0b3JcbiAgfSk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2YWwsICdodG1sJywge1xuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHZhbC5hYnN0cmFjdC5tYXAoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgcmV0dXJuIHRvSHRtbChhKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2YWwsICdub2RlJywge1xuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgaWYgKCFJU19ET00pIHJldHVybjtcbiAgICAgIHZhciBjb250YWluZXIgPSBET0NVTUVOVC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSB2YWwuaHRtbDtcbiAgICAgIHJldHVybiBjb250YWluZXIuY2hpbGRyZW47XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHZhbDtcbn1cblxuZnVuY3Rpb24gZmluZEljb25EZWZpbml0aW9uKGljb25Mb29rdXApIHtcbiAgdmFyIF9pY29uTG9va3VwJHByZWZpeCA9IGljb25Mb29rdXAucHJlZml4LFxuICAgICAgcHJlZml4ID0gX2ljb25Mb29rdXAkcHJlZml4ID09PSB2b2lkIDAgPyAnZmEnIDogX2ljb25Mb29rdXAkcHJlZml4LFxuICAgICAgaWNvbk5hbWUgPSBpY29uTG9va3VwLmljb25OYW1lO1xuICBpZiAoIWljb25OYW1lKSByZXR1cm47XG4gIHJldHVybiBpY29uRnJvbU1hcHBpbmcobGlicmFyeS5kZWZpbml0aW9ucywgcHJlZml4LCBpY29uTmFtZSkgfHwgaWNvbkZyb21NYXBwaW5nKG5hbWVzcGFjZS5zdHlsZXMsIHByZWZpeCwgaWNvbk5hbWUpO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlSWNvbnMobmV4dCkge1xuICByZXR1cm4gZnVuY3Rpb24gKG1heWJlSWNvbkRlZmluaXRpb24pIHtcbiAgICB2YXIgcGFyYW1zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgICB2YXIgaWNvbkRlZmluaXRpb24gPSAobWF5YmVJY29uRGVmaW5pdGlvbiB8fCB7fSkuaWNvbiA/IG1heWJlSWNvbkRlZmluaXRpb24gOiBmaW5kSWNvbkRlZmluaXRpb24obWF5YmVJY29uRGVmaW5pdGlvbiB8fCB7fSk7XG4gICAgdmFyIG1hc2sgPSBwYXJhbXMubWFzaztcblxuICAgIGlmIChtYXNrKSB7XG4gICAgICBtYXNrID0gKG1hc2sgfHwge30pLmljb24gPyBtYXNrIDogZmluZEljb25EZWZpbml0aW9uKG1hc2sgfHwge30pO1xuICAgIH1cblxuICAgIHJldHVybiBuZXh0KGljb25EZWZpbml0aW9uLCBfb2JqZWN0U3ByZWFkKHt9LCBwYXJhbXMsIHtcbiAgICAgIG1hc2s6IG1hc2tcbiAgICB9KSk7XG4gIH07XG59XG5cbnZhciBsaWJyYXJ5ID0gbmV3IExpYnJhcnkoKTtcbnZhciBub0F1dG8gPSBmdW5jdGlvbiBub0F1dG8oKSB7XG4gIGNvbmZpZy5hdXRvUmVwbGFjZVN2ZyA9IGZhbHNlO1xuICBjb25maWcub2JzZXJ2ZU11dGF0aW9ucyA9IGZhbHNlO1xuICBkaXNjb25uZWN0KCk7XG59O1xudmFyIF9jc3NJbnNlcnRlZCA9IGZhbHNlO1xudmFyIGRvbSA9IHtcbiAgaTJzdmc6IGZ1bmN0aW9uIGkyc3ZnKCkge1xuICAgIHZhciBwYXJhbXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuXG4gICAgaWYgKElTX0RPTSkge1xuICAgICAgZW5zdXJlQ3NzKCk7XG4gICAgICB2YXIgX3BhcmFtcyRub2RlID0gcGFyYW1zLm5vZGUsXG4gICAgICAgICAgbm9kZSA9IF9wYXJhbXMkbm9kZSA9PT0gdm9pZCAwID8gRE9DVU1FTlQgOiBfcGFyYW1zJG5vZGUsXG4gICAgICAgICAgX3BhcmFtcyRjYWxsYmFjayA9IHBhcmFtcy5jYWxsYmFjayxcbiAgICAgICAgICBjYWxsYmFjayA9IF9wYXJhbXMkY2FsbGJhY2sgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICgpIHt9IDogX3BhcmFtcyRjYWxsYmFjaztcblxuICAgICAgaWYgKGNvbmZpZy5zZWFyY2hQc2V1ZG9FbGVtZW50cykge1xuICAgICAgICBzZWFyY2hQc2V1ZG9FbGVtZW50cyhub2RlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9uVHJlZShub2RlLCBjYWxsYmFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwaWNrZWQucmVqZWN0KCdPcGVyYXRpb24gcmVxdWlyZXMgYSBET00gb2Ygc29tZSBraW5kLicpO1xuICAgIH1cbiAgfSxcbiAgY3NzOiBjc3MsXG4gIGluc2VydENzczogZnVuY3Rpb24gaW5zZXJ0Q3NzJCQxKCkge1xuICAgIGlmICghX2Nzc0luc2VydGVkKSB7XG4gICAgICBpbnNlcnRDc3MoY3NzKCkpO1xuXG4gICAgICBfY3NzSW5zZXJ0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfSxcbiAgd2F0Y2g6IGZ1bmN0aW9uIHdhdGNoKCkge1xuICAgIHZhciBwYXJhbXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuICAgIHZhciBhdXRvUmVwbGFjZVN2Z1Jvb3QgPSBwYXJhbXMuYXV0b1JlcGxhY2VTdmdSb290LFxuICAgICAgICBvYnNlcnZlTXV0YXRpb25zUm9vdCA9IHBhcmFtcy5vYnNlcnZlTXV0YXRpb25zUm9vdDtcblxuICAgIGlmIChjb25maWcuYXV0b1JlcGxhY2VTdmcgPT09IGZhbHNlKSB7XG4gICAgICBjb25maWcuYXV0b1JlcGxhY2VTdmcgPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbmZpZy5vYnNlcnZlTXV0YXRpb25zID0gdHJ1ZTtcbiAgICBkb21yZWFkeShmdW5jdGlvbiAoKSB7XG4gICAgICBhdXRvUmVwbGFjZSh7XG4gICAgICAgIGF1dG9SZXBsYWNlU3ZnUm9vdDogYXV0b1JlcGxhY2VTdmdSb290XG4gICAgICB9KTtcbiAgICAgIG9ic2VydmUoe1xuICAgICAgICB0cmVlQ2FsbGJhY2s6IG9uVHJlZSxcbiAgICAgICAgbm9kZUNhbGxiYWNrOiBvbk5vZGUsXG4gICAgICAgIHBzZXVkb0VsZW1lbnRzQ2FsbGJhY2s6IHNlYXJjaFBzZXVkb0VsZW1lbnRzLFxuICAgICAgICBvYnNlcnZlTXV0YXRpb25zUm9vdDogb2JzZXJ2ZU11dGF0aW9uc1Jvb3RcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59O1xudmFyIHBhcnNlID0ge1xuICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybSh0cmFuc2Zvcm1TdHJpbmcpIHtcbiAgICByZXR1cm4gcGFyc2VUcmFuc2Zvcm1TdHJpbmcodHJhbnNmb3JtU3RyaW5nKTtcbiAgfVxufTtcbnZhciBpY29uID0gcmVzb2x2ZUljb25zKGZ1bmN0aW9uIChpY29uRGVmaW5pdGlvbikge1xuICB2YXIgcGFyYW1zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgdmFyIF9wYXJhbXMkdHJhbnNmb3JtID0gcGFyYW1zLnRyYW5zZm9ybSxcbiAgICAgIHRyYW5zZm9ybSA9IF9wYXJhbXMkdHJhbnNmb3JtID09PSB2b2lkIDAgPyBtZWFuaW5nbGVzc1RyYW5zZm9ybSA6IF9wYXJhbXMkdHJhbnNmb3JtLFxuICAgICAgX3BhcmFtcyRzeW1ib2wgPSBwYXJhbXMuc3ltYm9sLFxuICAgICAgc3ltYm9sID0gX3BhcmFtcyRzeW1ib2wgPT09IHZvaWQgMCA/IGZhbHNlIDogX3BhcmFtcyRzeW1ib2wsXG4gICAgICBfcGFyYW1zJG1hc2sgPSBwYXJhbXMubWFzayxcbiAgICAgIG1hc2sgPSBfcGFyYW1zJG1hc2sgPT09IHZvaWQgMCA/IG51bGwgOiBfcGFyYW1zJG1hc2ssXG4gICAgICBfcGFyYW1zJG1hc2tJZCA9IHBhcmFtcy5tYXNrSWQsXG4gICAgICBtYXNrSWQgPSBfcGFyYW1zJG1hc2tJZCA9PT0gdm9pZCAwID8gbnVsbCA6IF9wYXJhbXMkbWFza0lkLFxuICAgICAgX3BhcmFtcyR0aXRsZSA9IHBhcmFtcy50aXRsZSxcbiAgICAgIHRpdGxlID0gX3BhcmFtcyR0aXRsZSA9PT0gdm9pZCAwID8gbnVsbCA6IF9wYXJhbXMkdGl0bGUsXG4gICAgICBfcGFyYW1zJHRpdGxlSWQgPSBwYXJhbXMudGl0bGVJZCxcbiAgICAgIHRpdGxlSWQgPSBfcGFyYW1zJHRpdGxlSWQgPT09IHZvaWQgMCA/IG51bGwgOiBfcGFyYW1zJHRpdGxlSWQsXG4gICAgICBfcGFyYW1zJGNsYXNzZXMgPSBwYXJhbXMuY2xhc3NlcyxcbiAgICAgIGNsYXNzZXMgPSBfcGFyYW1zJGNsYXNzZXMgPT09IHZvaWQgMCA/IFtdIDogX3BhcmFtcyRjbGFzc2VzLFxuICAgICAgX3BhcmFtcyRhdHRyaWJ1dGVzID0gcGFyYW1zLmF0dHJpYnV0ZXMsXG4gICAgICBhdHRyaWJ1dGVzID0gX3BhcmFtcyRhdHRyaWJ1dGVzID09PSB2b2lkIDAgPyB7fSA6IF9wYXJhbXMkYXR0cmlidXRlcyxcbiAgICAgIF9wYXJhbXMkc3R5bGVzID0gcGFyYW1zLnN0eWxlcyxcbiAgICAgIHN0eWxlcyA9IF9wYXJhbXMkc3R5bGVzID09PSB2b2lkIDAgPyB7fSA6IF9wYXJhbXMkc3R5bGVzO1xuICBpZiAoIWljb25EZWZpbml0aW9uKSByZXR1cm47XG4gIHZhciBwcmVmaXggPSBpY29uRGVmaW5pdGlvbi5wcmVmaXgsXG4gICAgICBpY29uTmFtZSA9IGljb25EZWZpbml0aW9uLmljb25OYW1lLFxuICAgICAgaWNvbiA9IGljb25EZWZpbml0aW9uLmljb247XG4gIHJldHVybiBhcGlPYmplY3QoX29iamVjdFNwcmVhZCh7XG4gICAgdHlwZTogJ2ljb24nXG4gIH0sIGljb25EZWZpbml0aW9uKSwgZnVuY3Rpb24gKCkge1xuICAgIGVuc3VyZUNzcygpO1xuXG4gICAgaWYgKGNvbmZpZy5hdXRvQTExeSkge1xuICAgICAgaWYgKHRpdGxlKSB7XG4gICAgICAgIGF0dHJpYnV0ZXNbJ2FyaWEtbGFiZWxsZWRieSddID0gXCJcIi5jb25jYXQoY29uZmlnLnJlcGxhY2VtZW50Q2xhc3MsIFwiLXRpdGxlLVwiKS5jb25jYXQodGl0bGVJZCB8fCBuZXh0VW5pcXVlSWQoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhdHRyaWJ1dGVzWydhcmlhLWhpZGRlbiddID0gJ3RydWUnO1xuICAgICAgICBhdHRyaWJ1dGVzWydmb2N1c2FibGUnXSA9ICdmYWxzZSc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ha2VJbmxpbmVTdmdBYnN0cmFjdCh7XG4gICAgICBpY29uczoge1xuICAgICAgICBtYWluOiBhc0ZvdW5kSWNvbihpY29uKSxcbiAgICAgICAgbWFzazogbWFzayA/IGFzRm91bmRJY29uKG1hc2suaWNvbikgOiB7XG4gICAgICAgICAgZm91bmQ6IGZhbHNlLFxuICAgICAgICAgIHdpZHRoOiBudWxsLFxuICAgICAgICAgIGhlaWdodDogbnVsbCxcbiAgICAgICAgICBpY29uOiB7fVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcHJlZml4OiBwcmVmaXgsXG4gICAgICBpY29uTmFtZTogaWNvbk5hbWUsXG4gICAgICB0cmFuc2Zvcm06IF9vYmplY3RTcHJlYWQoe30sIG1lYW5pbmdsZXNzVHJhbnNmb3JtLCB0cmFuc2Zvcm0pLFxuICAgICAgc3ltYm9sOiBzeW1ib2wsXG4gICAgICB0aXRsZTogdGl0bGUsXG4gICAgICBtYXNrSWQ6IG1hc2tJZCxcbiAgICAgIHRpdGxlSWQ6IHRpdGxlSWQsXG4gICAgICBleHRyYToge1xuICAgICAgICBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzLFxuICAgICAgICBzdHlsZXM6IHN0eWxlcyxcbiAgICAgICAgY2xhc3NlczogY2xhc3Nlc1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn0pO1xudmFyIHRleHQgPSBmdW5jdGlvbiB0ZXh0KGNvbnRlbnQpIHtcbiAgdmFyIHBhcmFtcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG4gIHZhciBfcGFyYW1zJHRyYW5zZm9ybTIgPSBwYXJhbXMudHJhbnNmb3JtLFxuICAgICAgdHJhbnNmb3JtID0gX3BhcmFtcyR0cmFuc2Zvcm0yID09PSB2b2lkIDAgPyBtZWFuaW5nbGVzc1RyYW5zZm9ybSA6IF9wYXJhbXMkdHJhbnNmb3JtMixcbiAgICAgIF9wYXJhbXMkdGl0bGUyID0gcGFyYW1zLnRpdGxlLFxuICAgICAgdGl0bGUgPSBfcGFyYW1zJHRpdGxlMiA9PT0gdm9pZCAwID8gbnVsbCA6IF9wYXJhbXMkdGl0bGUyLFxuICAgICAgX3BhcmFtcyRjbGFzc2VzMiA9IHBhcmFtcy5jbGFzc2VzLFxuICAgICAgY2xhc3NlcyA9IF9wYXJhbXMkY2xhc3NlczIgPT09IHZvaWQgMCA/IFtdIDogX3BhcmFtcyRjbGFzc2VzMixcbiAgICAgIF9wYXJhbXMkYXR0cmlidXRlczIgPSBwYXJhbXMuYXR0cmlidXRlcyxcbiAgICAgIGF0dHJpYnV0ZXMgPSBfcGFyYW1zJGF0dHJpYnV0ZXMyID09PSB2b2lkIDAgPyB7fSA6IF9wYXJhbXMkYXR0cmlidXRlczIsXG4gICAgICBfcGFyYW1zJHN0eWxlczIgPSBwYXJhbXMuc3R5bGVzLFxuICAgICAgc3R5bGVzID0gX3BhcmFtcyRzdHlsZXMyID09PSB2b2lkIDAgPyB7fSA6IF9wYXJhbXMkc3R5bGVzMjtcbiAgcmV0dXJuIGFwaU9iamVjdCh7XG4gICAgdHlwZTogJ3RleHQnLFxuICAgIGNvbnRlbnQ6IGNvbnRlbnRcbiAgfSwgZnVuY3Rpb24gKCkge1xuICAgIGVuc3VyZUNzcygpO1xuICAgIHJldHVybiBtYWtlTGF5ZXJzVGV4dEFic3RyYWN0KHtcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnQsXG4gICAgICB0cmFuc2Zvcm06IF9vYmplY3RTcHJlYWQoe30sIG1lYW5pbmdsZXNzVHJhbnNmb3JtLCB0cmFuc2Zvcm0pLFxuICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgZXh0cmE6IHtcbiAgICAgICAgYXR0cmlidXRlczogYXR0cmlidXRlcyxcbiAgICAgICAgc3R5bGVzOiBzdHlsZXMsXG4gICAgICAgIGNsYXNzZXM6IFtcIlwiLmNvbmNhdChjb25maWcuZmFtaWx5UHJlZml4LCBcIi1sYXllcnMtdGV4dFwiKV0uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShjbGFzc2VzKSlcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59O1xudmFyIGNvdW50ZXIgPSBmdW5jdGlvbiBjb3VudGVyKGNvbnRlbnQpIHtcbiAgdmFyIHBhcmFtcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG4gIHZhciBfcGFyYW1zJHRpdGxlMyA9IHBhcmFtcy50aXRsZSxcbiAgICAgIHRpdGxlID0gX3BhcmFtcyR0aXRsZTMgPT09IHZvaWQgMCA/IG51bGwgOiBfcGFyYW1zJHRpdGxlMyxcbiAgICAgIF9wYXJhbXMkY2xhc3NlczMgPSBwYXJhbXMuY2xhc3NlcyxcbiAgICAgIGNsYXNzZXMgPSBfcGFyYW1zJGNsYXNzZXMzID09PSB2b2lkIDAgPyBbXSA6IF9wYXJhbXMkY2xhc3NlczMsXG4gICAgICBfcGFyYW1zJGF0dHJpYnV0ZXMzID0gcGFyYW1zLmF0dHJpYnV0ZXMsXG4gICAgICBhdHRyaWJ1dGVzID0gX3BhcmFtcyRhdHRyaWJ1dGVzMyA9PT0gdm9pZCAwID8ge30gOiBfcGFyYW1zJGF0dHJpYnV0ZXMzLFxuICAgICAgX3BhcmFtcyRzdHlsZXMzID0gcGFyYW1zLnN0eWxlcyxcbiAgICAgIHN0eWxlcyA9IF9wYXJhbXMkc3R5bGVzMyA9PT0gdm9pZCAwID8ge30gOiBfcGFyYW1zJHN0eWxlczM7XG4gIHJldHVybiBhcGlPYmplY3Qoe1xuICAgIHR5cGU6ICdjb3VudGVyJyxcbiAgICBjb250ZW50OiBjb250ZW50XG4gIH0sIGZ1bmN0aW9uICgpIHtcbiAgICBlbnN1cmVDc3MoKTtcbiAgICByZXR1cm4gbWFrZUxheWVyc0NvdW50ZXJBYnN0cmFjdCh7XG4gICAgICBjb250ZW50OiBjb250ZW50LnRvU3RyaW5nKCksXG4gICAgICB0aXRsZTogdGl0bGUsXG4gICAgICBleHRyYToge1xuICAgICAgICBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzLFxuICAgICAgICBzdHlsZXM6IHN0eWxlcyxcbiAgICAgICAgY2xhc3NlczogW1wiXCIuY29uY2F0KGNvbmZpZy5mYW1pbHlQcmVmaXgsIFwiLWxheWVycy1jb3VudGVyXCIpXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGNsYXNzZXMpKVxuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn07XG52YXIgbGF5ZXIgPSBmdW5jdGlvbiBsYXllcihhc3NlbWJsZXIpIHtcbiAgdmFyIHBhcmFtcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG4gIHZhciBfcGFyYW1zJGNsYXNzZXM0ID0gcGFyYW1zLmNsYXNzZXMsXG4gICAgICBjbGFzc2VzID0gX3BhcmFtcyRjbGFzc2VzNCA9PT0gdm9pZCAwID8gW10gOiBfcGFyYW1zJGNsYXNzZXM0O1xuICByZXR1cm4gYXBpT2JqZWN0KHtcbiAgICB0eXBlOiAnbGF5ZXInXG4gIH0sIGZ1bmN0aW9uICgpIHtcbiAgICBlbnN1cmVDc3MoKTtcbiAgICB2YXIgY2hpbGRyZW4gPSBbXTtcbiAgICBhc3NlbWJsZXIoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgIEFycmF5LmlzQXJyYXkoYXJncykgPyBhcmdzLm1hcChmdW5jdGlvbiAoYSkge1xuICAgICAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLmNvbmNhdChhLmFic3RyYWN0KTtcbiAgICAgIH0pIDogY2hpbGRyZW4gPSBjaGlsZHJlbi5jb25jYXQoYXJncy5hYnN0cmFjdCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIFt7XG4gICAgICB0YWc6ICdzcGFuJyxcbiAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgY2xhc3M6IFtcIlwiLmNvbmNhdChjb25maWcuZmFtaWx5UHJlZml4LCBcIi1sYXllcnNcIildLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoY2xhc3NlcykpLmpvaW4oJyAnKVxuICAgICAgfSxcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICAgIH1dO1xuICB9KTtcbn07XG52YXIgYXBpID0ge1xuICBub0F1dG86IG5vQXV0byxcbiAgY29uZmlnOiBjb25maWcsXG4gIGRvbTogZG9tLFxuICBsaWJyYXJ5OiBsaWJyYXJ5LFxuICBwYXJzZTogcGFyc2UsXG4gIGZpbmRJY29uRGVmaW5pdGlvbjogZmluZEljb25EZWZpbml0aW9uLFxuICBpY29uOiBpY29uLFxuICB0ZXh0OiB0ZXh0LFxuICBjb3VudGVyOiBjb3VudGVyLFxuICBsYXllcjogbGF5ZXIsXG4gIHRvSHRtbDogdG9IdG1sXG59O1xuXG52YXIgYXV0b1JlcGxhY2UgPSBmdW5jdGlvbiBhdXRvUmVwbGFjZSgpIHtcbiAgdmFyIHBhcmFtcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XG4gIHZhciBfcGFyYW1zJGF1dG9SZXBsYWNlU3YgPSBwYXJhbXMuYXV0b1JlcGxhY2VTdmdSb290LFxuICAgICAgYXV0b1JlcGxhY2VTdmdSb290ID0gX3BhcmFtcyRhdXRvUmVwbGFjZVN2ID09PSB2b2lkIDAgPyBET0NVTUVOVCA6IF9wYXJhbXMkYXV0b1JlcGxhY2VTdjtcbiAgaWYgKChPYmplY3Qua2V5cyhuYW1lc3BhY2Uuc3R5bGVzKS5sZW5ndGggPiAwIHx8IGNvbmZpZy5hdXRvRmV0Y2hTdmcpICYmIElTX0RPTSAmJiBjb25maWcuYXV0b1JlcGxhY2VTdmcpIGFwaS5kb20uaTJzdmcoe1xuICAgIG5vZGU6IGF1dG9SZXBsYWNlU3ZnUm9vdFxuICB9KTtcbn07XG5cbmV4cG9ydCB7IGljb24sIG5vQXV0bywgY29uZmlnLCB0b0h0bWwsIGxheWVyLCB0ZXh0LCBjb3VudGVyLCBsaWJyYXJ5LCBkb20sIHBhcnNlLCBmaW5kSWNvbkRlZmluaXRpb24gfTtcbiIsIi8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4gYnJvd3NlclxudmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vLyBjYWNoZWQgZnJvbSB3aGF0ZXZlciBnbG9iYWwgaXMgcHJlc2VudCBzbyB0aGF0IHRlc3QgcnVubmVycyB0aGF0IHN0dWIgaXRcbi8vIGRvbid0IGJyZWFrIHRoaW5ncy4gIEJ1dCB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4gYSB0cnkgY2F0Y2ggaW4gY2FzZSBpdCBpc1xuLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRvZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYVxuLy8gZnVuY3Rpb24gYmVjYXVzZSB0cnkvY2F0Y2hlcyBkZW9wdGltaXplIGluIGNlcnRhaW4gZW5naW5lcy5cblxudmFyIGNhY2hlZFNldFRpbWVvdXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0O1xuXG5mdW5jdGlvbiBkZWZhdWx0U2V0VGltb3V0KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuZnVuY3Rpb24gZGVmYXVsdENsZWFyVGltZW91dCAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbihmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzZXRUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjbGVhclRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgfVxufSAoKSlcbmZ1bmN0aW9uIHJ1blRpbWVvdXQoZnVuKSB7XG4gICAgaWYgKGNhY2hlZFNldFRpbWVvdXQgPT09IHNldFRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIC8vIGlmIHNldFRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRTZXRUaW1lb3V0ID09PSBkZWZhdWx0U2V0VGltb3V0IHx8ICFjYWNoZWRTZXRUaW1lb3V0KSAmJiBzZXRUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfSBjYXRjaChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbChudWxsLCBmdW4sIDApO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3JcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhpcywgZnVuLCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG59XG5mdW5jdGlvbiBydW5DbGVhclRpbWVvdXQobWFya2VyKSB7XG4gICAgaWYgKGNhY2hlZENsZWFyVGltZW91dCA9PT0gY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIC8vIGlmIGNsZWFyVGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZENsZWFyVGltZW91dCA9PT0gZGVmYXVsdENsZWFyVGltZW91dCB8fCAhY2FjaGVkQ2xlYXJUaW1lb3V0KSAmJiBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0ICB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKG51bGwsIG1hcmtlcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3IuXG4gICAgICAgICAgICAvLyBTb21lIHZlcnNpb25zIG9mIEkuRS4gaGF2ZSBkaWZmZXJlbnQgcnVsZXMgZm9yIGNsZWFyVGltZW91dCB2cyBzZXRUaW1lb3V0XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwodGhpcywgbWFya2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG5cbn1cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGRyYWluaW5nID0gZmFsc2U7XG52YXIgY3VycmVudFF1ZXVlO1xudmFyIHF1ZXVlSW5kZXggPSAtMTtcblxuZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgfVxuICAgIGlmIChxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgZHJhaW5RdWV1ZSgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcbiAgICBpZiAoZHJhaW5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgdGltZW91dCA9IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcbiAgICBkcmFpbmluZyA9IHRydWU7XG5cbiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIHdoaWxlKGxlbikge1xuICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtcbiAgICAgICAgcXVldWUgPSBbXTtcbiAgICAgICAgd2hpbGUgKCsrcXVldWVJbmRleCA8IGxlbikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRRdWV1ZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB9XG4gICAgY3VycmVudFF1ZXVlID0gbnVsbDtcbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIHJ1bkNsZWFyVGltZW91dCh0aW1lb3V0KTtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xuICAgIGlmIChxdWV1ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG4gICAgICAgIHJ1blRpbWVvdXQoZHJhaW5RdWV1ZSk7XG4gICAgfVxufTtcblxuLy8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0c1xuZnVuY3Rpb24gSXRlbShmdW4sIGFycmF5KSB7XG4gICAgdGhpcy5mdW4gPSBmdW47XG4gICAgdGhpcy5hcnJheSA9IGFycmF5O1xufVxuSXRlbS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpO1xufTtcbnByb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7XG5wcm9jZXNzLmJyb3dzZXIgPSB0cnVlO1xucHJvY2Vzcy5lbnYgPSB7fTtcbnByb2Nlc3MuYXJndiA9IFtdO1xucHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5wcm9jZXNzLnZlcnNpb25zID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5wcm9jZXNzLm9uID0gbm9vcDtcbnByb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5vbmNlID0gbm9vcDtcbnByb2Nlc3Mub2ZmID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xucHJvY2Vzcy5lbWl0ID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZE9uY2VMaXN0ZW5lciA9IG5vb3A7XG5cbnByb2Nlc3MubGlzdGVuZXJzID0gZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIFtdIH1cblxucHJvY2Vzcy5iaW5kaW5nID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xuXG5wcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJyB9O1xucHJvY2Vzcy5jaGRpciA9IGZ1bmN0aW9uIChkaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcbnByb2Nlc3MudW1hc2sgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH07XG4iLCIvKiFcbiAgKiB2dWUtcm91dGVyIHYzLjQuM1xuICAqIChjKSAyMDIwIEV2YW4gWW91XG4gICogQGxpY2Vuc2UgTUlUXG4gICovXG4vKiAgKi9cblxuZnVuY3Rpb24gYXNzZXJ0IChjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgaWYgKCFjb25kaXRpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoKFwiW3Z1ZS1yb3V0ZXJdIFwiICsgbWVzc2FnZSkpXG4gIH1cbn1cblxuZnVuY3Rpb24gd2FybiAoY29uZGl0aW9uLCBtZXNzYWdlKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICFjb25kaXRpb24pIHtcbiAgICB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgY29uc29sZS53YXJuKChcIlt2dWUtcm91dGVyXSBcIiArIG1lc3NhZ2UpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBleHRlbmQgKGEsIGIpIHtcbiAgZm9yICh2YXIga2V5IGluIGIpIHtcbiAgICBhW2tleV0gPSBiW2tleV07XG4gIH1cbiAgcmV0dXJuIGFcbn1cblxudmFyIFZpZXcgPSB7XG4gIG5hbWU6ICdSb3V0ZXJWaWV3JyxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcHJvcHM6IHtcbiAgICBuYW1lOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnZGVmYXVsdCdcbiAgICB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyIChfLCByZWYpIHtcbiAgICB2YXIgcHJvcHMgPSByZWYucHJvcHM7XG4gICAgdmFyIGNoaWxkcmVuID0gcmVmLmNoaWxkcmVuO1xuICAgIHZhciBwYXJlbnQgPSByZWYucGFyZW50O1xuICAgIHZhciBkYXRhID0gcmVmLmRhdGE7XG5cbiAgICAvLyB1c2VkIGJ5IGRldnRvb2xzIHRvIGRpc3BsYXkgYSByb3V0ZXItdmlldyBiYWRnZVxuICAgIGRhdGEucm91dGVyVmlldyA9IHRydWU7XG5cbiAgICAvLyBkaXJlY3RseSB1c2UgcGFyZW50IGNvbnRleHQncyBjcmVhdGVFbGVtZW50KCkgZnVuY3Rpb25cbiAgICAvLyBzbyB0aGF0IGNvbXBvbmVudHMgcmVuZGVyZWQgYnkgcm91dGVyLXZpZXcgY2FuIHJlc29sdmUgbmFtZWQgc2xvdHNcbiAgICB2YXIgaCA9IHBhcmVudC4kY3JlYXRlRWxlbWVudDtcbiAgICB2YXIgbmFtZSA9IHByb3BzLm5hbWU7XG4gICAgdmFyIHJvdXRlID0gcGFyZW50LiRyb3V0ZTtcbiAgICB2YXIgY2FjaGUgPSBwYXJlbnQuX3JvdXRlclZpZXdDYWNoZSB8fCAocGFyZW50Ll9yb3V0ZXJWaWV3Q2FjaGUgPSB7fSk7XG5cbiAgICAvLyBkZXRlcm1pbmUgY3VycmVudCB2aWV3IGRlcHRoLCBhbHNvIGNoZWNrIHRvIHNlZSBpZiB0aGUgdHJlZVxuICAgIC8vIGhhcyBiZWVuIHRvZ2dsZWQgaW5hY3RpdmUgYnV0IGtlcHQtYWxpdmUuXG4gICAgdmFyIGRlcHRoID0gMDtcbiAgICB2YXIgaW5hY3RpdmUgPSBmYWxzZTtcbiAgICB3aGlsZSAocGFyZW50ICYmIHBhcmVudC5fcm91dGVyUm9vdCAhPT0gcGFyZW50KSB7XG4gICAgICB2YXIgdm5vZGVEYXRhID0gcGFyZW50LiR2bm9kZSA/IHBhcmVudC4kdm5vZGUuZGF0YSA6IHt9O1xuICAgICAgaWYgKHZub2RlRGF0YS5yb3V0ZXJWaWV3KSB7XG4gICAgICAgIGRlcHRoKys7XG4gICAgICB9XG4gICAgICBpZiAodm5vZGVEYXRhLmtlZXBBbGl2ZSAmJiBwYXJlbnQuX2RpcmVjdEluYWN0aXZlICYmIHBhcmVudC5faW5hY3RpdmUpIHtcbiAgICAgICAgaW5hY3RpdmUgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcGFyZW50ID0gcGFyZW50LiRwYXJlbnQ7XG4gICAgfVxuICAgIGRhdGEucm91dGVyVmlld0RlcHRoID0gZGVwdGg7XG5cbiAgICAvLyByZW5kZXIgcHJldmlvdXMgdmlldyBpZiB0aGUgdHJlZSBpcyBpbmFjdGl2ZSBhbmQga2VwdC1hbGl2ZVxuICAgIGlmIChpbmFjdGl2ZSkge1xuICAgICAgdmFyIGNhY2hlZERhdGEgPSBjYWNoZVtuYW1lXTtcbiAgICAgIHZhciBjYWNoZWRDb21wb25lbnQgPSBjYWNoZWREYXRhICYmIGNhY2hlZERhdGEuY29tcG9uZW50O1xuICAgICAgaWYgKGNhY2hlZENvbXBvbmVudCkge1xuICAgICAgICAvLyAjMjMwMVxuICAgICAgICAvLyBwYXNzIHByb3BzXG4gICAgICAgIGlmIChjYWNoZWREYXRhLmNvbmZpZ1Byb3BzKSB7XG4gICAgICAgICAgZmlsbFByb3BzaW5EYXRhKGNhY2hlZENvbXBvbmVudCwgZGF0YSwgY2FjaGVkRGF0YS5yb3V0ZSwgY2FjaGVkRGF0YS5jb25maWdQcm9wcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGgoY2FjaGVkQ29tcG9uZW50LCBkYXRhLCBjaGlsZHJlbilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHJlbmRlciBwcmV2aW91cyBlbXB0eSB2aWV3XG4gICAgICAgIHJldHVybiBoKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbWF0Y2hlZCA9IHJvdXRlLm1hdGNoZWRbZGVwdGhdO1xuICAgIHZhciBjb21wb25lbnQgPSBtYXRjaGVkICYmIG1hdGNoZWQuY29tcG9uZW50c1tuYW1lXTtcblxuICAgIC8vIHJlbmRlciBlbXB0eSBub2RlIGlmIG5vIG1hdGNoZWQgcm91dGUgb3Igbm8gY29uZmlnIGNvbXBvbmVudFxuICAgIGlmICghbWF0Y2hlZCB8fCAhY29tcG9uZW50KSB7XG4gICAgICBjYWNoZVtuYW1lXSA9IG51bGw7XG4gICAgICByZXR1cm4gaCgpXG4gICAgfVxuXG4gICAgLy8gY2FjaGUgY29tcG9uZW50XG4gICAgY2FjaGVbbmFtZV0gPSB7IGNvbXBvbmVudDogY29tcG9uZW50IH07XG5cbiAgICAvLyBhdHRhY2ggaW5zdGFuY2UgcmVnaXN0cmF0aW9uIGhvb2tcbiAgICAvLyB0aGlzIHdpbGwgYmUgY2FsbGVkIGluIHRoZSBpbnN0YW5jZSdzIGluamVjdGVkIGxpZmVjeWNsZSBob29rc1xuICAgIGRhdGEucmVnaXN0ZXJSb3V0ZUluc3RhbmNlID0gZnVuY3Rpb24gKHZtLCB2YWwpIHtcbiAgICAgIC8vIHZhbCBjb3VsZCBiZSB1bmRlZmluZWQgZm9yIHVucmVnaXN0cmF0aW9uXG4gICAgICB2YXIgY3VycmVudCA9IG1hdGNoZWQuaW5zdGFuY2VzW25hbWVdO1xuICAgICAgaWYgKFxuICAgICAgICAodmFsICYmIGN1cnJlbnQgIT09IHZtKSB8fFxuICAgICAgICAoIXZhbCAmJiBjdXJyZW50ID09PSB2bSlcbiAgICAgICkge1xuICAgICAgICBtYXRjaGVkLmluc3RhbmNlc1tuYW1lXSA9IHZhbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBhbHNvIHJlZ2lzdGVyIGluc3RhbmNlIGluIHByZXBhdGNoIGhvb2tcbiAgICAvLyBpbiBjYXNlIHRoZSBzYW1lIGNvbXBvbmVudCBpbnN0YW5jZSBpcyByZXVzZWQgYWNyb3NzIGRpZmZlcmVudCByb3V0ZXNcbiAgICA7KGRhdGEuaG9vayB8fCAoZGF0YS5ob29rID0ge30pKS5wcmVwYXRjaCA9IGZ1bmN0aW9uIChfLCB2bm9kZSkge1xuICAgICAgbWF0Y2hlZC5pbnN0YW5jZXNbbmFtZV0gPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICB9O1xuXG4gICAgLy8gcmVnaXN0ZXIgaW5zdGFuY2UgaW4gaW5pdCBob29rXG4gICAgLy8gaW4gY2FzZSBrZXB0LWFsaXZlIGNvbXBvbmVudCBiZSBhY3RpdmVkIHdoZW4gcm91dGVzIGNoYW5nZWRcbiAgICBkYXRhLmhvb2suaW5pdCA9IGZ1bmN0aW9uICh2bm9kZSkge1xuICAgICAgaWYgKHZub2RlLmRhdGEua2VlcEFsaXZlICYmXG4gICAgICAgIHZub2RlLmNvbXBvbmVudEluc3RhbmNlICYmXG4gICAgICAgIHZub2RlLmNvbXBvbmVudEluc3RhbmNlICE9PSBtYXRjaGVkLmluc3RhbmNlc1tuYW1lXVxuICAgICAgKSB7XG4gICAgICAgIG1hdGNoZWQuaW5zdGFuY2VzW25hbWVdID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciBjb25maWdQcm9wcyA9IG1hdGNoZWQucHJvcHMgJiYgbWF0Y2hlZC5wcm9wc1tuYW1lXTtcbiAgICAvLyBzYXZlIHJvdXRlIGFuZCBjb25maWdQcm9wcyBpbiBjYWNoZVxuICAgIGlmIChjb25maWdQcm9wcykge1xuICAgICAgZXh0ZW5kKGNhY2hlW25hbWVdLCB7XG4gICAgICAgIHJvdXRlOiByb3V0ZSxcbiAgICAgICAgY29uZmlnUHJvcHM6IGNvbmZpZ1Byb3BzXG4gICAgICB9KTtcbiAgICAgIGZpbGxQcm9wc2luRGF0YShjb21wb25lbnQsIGRhdGEsIHJvdXRlLCBjb25maWdQcm9wcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGgoY29tcG9uZW50LCBkYXRhLCBjaGlsZHJlbilcbiAgfVxufTtcblxuZnVuY3Rpb24gZmlsbFByb3BzaW5EYXRhIChjb21wb25lbnQsIGRhdGEsIHJvdXRlLCBjb25maWdQcm9wcykge1xuICAvLyByZXNvbHZlIHByb3BzXG4gIHZhciBwcm9wc1RvUGFzcyA9IGRhdGEucHJvcHMgPSByZXNvbHZlUHJvcHMocm91dGUsIGNvbmZpZ1Byb3BzKTtcbiAgaWYgKHByb3BzVG9QYXNzKSB7XG4gICAgLy8gY2xvbmUgdG8gcHJldmVudCBtdXRhdGlvblxuICAgIHByb3BzVG9QYXNzID0gZGF0YS5wcm9wcyA9IGV4dGVuZCh7fSwgcHJvcHNUb1Bhc3MpO1xuICAgIC8vIHBhc3Mgbm9uLWRlY2xhcmVkIHByb3BzIGFzIGF0dHJzXG4gICAgdmFyIGF0dHJzID0gZGF0YS5hdHRycyA9IGRhdGEuYXR0cnMgfHwge307XG4gICAgZm9yICh2YXIga2V5IGluIHByb3BzVG9QYXNzKSB7XG4gICAgICBpZiAoIWNvbXBvbmVudC5wcm9wcyB8fCAhKGtleSBpbiBjb21wb25lbnQucHJvcHMpKSB7XG4gICAgICAgIGF0dHJzW2tleV0gPSBwcm9wc1RvUGFzc1trZXldO1xuICAgICAgICBkZWxldGUgcHJvcHNUb1Bhc3Nba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVByb3BzIChyb3V0ZSwgY29uZmlnKSB7XG4gIHN3aXRjaCAodHlwZW9mIGNvbmZpZykge1xuICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgICByZXR1cm5cbiAgICBjYXNlICdvYmplY3QnOlxuICAgICAgcmV0dXJuIGNvbmZpZ1xuICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgIHJldHVybiBjb25maWcocm91dGUpXG4gICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICByZXR1cm4gY29uZmlnID8gcm91dGUucGFyYW1zIDogdW5kZWZpbmVkXG4gICAgZGVmYXVsdDpcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgXCJwcm9wcyBpbiBcXFwiXCIgKyAocm91dGUucGF0aCkgKyBcIlxcXCIgaXMgYSBcIiArICh0eXBlb2YgY29uZmlnKSArIFwiLCBcIiArXG4gICAgICAgICAgXCJleHBlY3RpbmcgYW4gb2JqZWN0LCBmdW5jdGlvbiBvciBib29sZWFuLlwiXG4gICAgICAgICk7XG4gICAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbnZhciBlbmNvZGVSZXNlcnZlUkUgPSAvWyEnKCkqXS9nO1xudmFyIGVuY29kZVJlc2VydmVSZXBsYWNlciA9IGZ1bmN0aW9uIChjKSB7IHJldHVybiAnJScgKyBjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpOyB9O1xudmFyIGNvbW1hUkUgPSAvJTJDL2c7XG5cbi8vIGZpeGVkIGVuY29kZVVSSUNvbXBvbmVudCB3aGljaCBpcyBtb3JlIGNvbmZvcm1hbnQgdG8gUkZDMzk4Njpcbi8vIC0gZXNjYXBlcyBbIScoKSpdXG4vLyAtIHByZXNlcnZlIGNvbW1hc1xudmFyIGVuY29kZSA9IGZ1bmN0aW9uIChzdHIpIHsgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChzdHIpXG4gICAgLnJlcGxhY2UoZW5jb2RlUmVzZXJ2ZVJFLCBlbmNvZGVSZXNlcnZlUmVwbGFjZXIpXG4gICAgLnJlcGxhY2UoY29tbWFSRSwgJywnKTsgfTtcblxudmFyIGRlY29kZSA9IGRlY29kZVVSSUNvbXBvbmVudDtcblxuZnVuY3Rpb24gcmVzb2x2ZVF1ZXJ5IChcbiAgcXVlcnksXG4gIGV4dHJhUXVlcnksXG4gIF9wYXJzZVF1ZXJ5XG4pIHtcbiAgaWYgKCBleHRyYVF1ZXJ5ID09PSB2b2lkIDAgKSBleHRyYVF1ZXJ5ID0ge307XG5cbiAgdmFyIHBhcnNlID0gX3BhcnNlUXVlcnkgfHwgcGFyc2VRdWVyeTtcbiAgdmFyIHBhcnNlZFF1ZXJ5O1xuICB0cnkge1xuICAgIHBhcnNlZFF1ZXJ5ID0gcGFyc2UocXVlcnkgfHwgJycpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKGZhbHNlLCBlLm1lc3NhZ2UpO1xuICAgIHBhcnNlZFF1ZXJ5ID0ge307XG4gIH1cbiAgZm9yICh2YXIga2V5IGluIGV4dHJhUXVlcnkpIHtcbiAgICB2YXIgdmFsdWUgPSBleHRyYVF1ZXJ5W2tleV07XG4gICAgcGFyc2VkUXVlcnlba2V5XSA9IEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICA/IHZhbHVlLm1hcChjYXN0UXVlcnlQYXJhbVZhbHVlKVxuICAgICAgOiBjYXN0UXVlcnlQYXJhbVZhbHVlKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gcGFyc2VkUXVlcnlcbn1cblxudmFyIGNhc3RRdWVyeVBhcmFtVmFsdWUgPSBmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuICh2YWx1ZSA9PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyB2YWx1ZSA6IFN0cmluZyh2YWx1ZSkpOyB9O1xuXG5mdW5jdGlvbiBwYXJzZVF1ZXJ5IChxdWVyeSkge1xuICB2YXIgcmVzID0ge307XG5cbiAgcXVlcnkgPSBxdWVyeS50cmltKCkucmVwbGFjZSgvXihcXD98I3wmKS8sICcnKTtcblxuICBpZiAoIXF1ZXJ5KSB7XG4gICAgcmV0dXJuIHJlc1xuICB9XG5cbiAgcXVlcnkuc3BsaXQoJyYnKS5mb3JFYWNoKGZ1bmN0aW9uIChwYXJhbSkge1xuICAgIHZhciBwYXJ0cyA9IHBhcmFtLnJlcGxhY2UoL1xcKy9nLCAnICcpLnNwbGl0KCc9Jyk7XG4gICAgdmFyIGtleSA9IGRlY29kZShwYXJ0cy5zaGlmdCgpKTtcbiAgICB2YXIgdmFsID0gcGFydHMubGVuZ3RoID4gMCA/IGRlY29kZShwYXJ0cy5qb2luKCc9JykpIDogbnVsbDtcblxuICAgIGlmIChyZXNba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXNba2V5XSA9IHZhbDtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocmVzW2tleV0pKSB7XG4gICAgICByZXNba2V5XS5wdXNoKHZhbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc1trZXldID0gW3Jlc1trZXldLCB2YWxdO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlRdWVyeSAob2JqKSB7XG4gIHZhciByZXMgPSBvYmpcbiAgICA/IE9iamVjdC5rZXlzKG9iailcbiAgICAgIC5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdmFsID0gb2JqW2tleV07XG5cbiAgICAgICAgaWYgKHZhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuICcnXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGVuY29kZShrZXkpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgICAgIHZhbC5mb3JFYWNoKGZ1bmN0aW9uICh2YWwyKSB7XG4gICAgICAgICAgICBpZiAodmFsMiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHZhbDIgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZW5jb2RlKGtleSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZW5jb2RlKGtleSkgKyAnPScgKyBlbmNvZGUodmFsMikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiByZXN1bHQuam9pbignJicpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZW5jb2RlKGtleSkgKyAnPScgKyBlbmNvZGUodmFsKVxuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHgubGVuZ3RoID4gMDsgfSlcbiAgICAgIC5qb2luKCcmJylcbiAgICA6IG51bGw7XG4gIHJldHVybiByZXMgPyAoXCI/XCIgKyByZXMpIDogJydcbn1cblxuLyogICovXG5cbnZhciB0cmFpbGluZ1NsYXNoUkUgPSAvXFwvPyQvO1xuXG5mdW5jdGlvbiBjcmVhdGVSb3V0ZSAoXG4gIHJlY29yZCxcbiAgbG9jYXRpb24sXG4gIHJlZGlyZWN0ZWRGcm9tLFxuICByb3V0ZXJcbikge1xuICB2YXIgc3RyaW5naWZ5UXVlcnkgPSByb3V0ZXIgJiYgcm91dGVyLm9wdGlvbnMuc3RyaW5naWZ5UXVlcnk7XG5cbiAgdmFyIHF1ZXJ5ID0gbG9jYXRpb24ucXVlcnkgfHwge307XG4gIHRyeSB7XG4gICAgcXVlcnkgPSBjbG9uZShxdWVyeSk7XG4gIH0gY2F0Y2ggKGUpIHt9XG5cbiAgdmFyIHJvdXRlID0ge1xuICAgIG5hbWU6IGxvY2F0aW9uLm5hbWUgfHwgKHJlY29yZCAmJiByZWNvcmQubmFtZSksXG4gICAgbWV0YTogKHJlY29yZCAmJiByZWNvcmQubWV0YSkgfHwge30sXG4gICAgcGF0aDogbG9jYXRpb24ucGF0aCB8fCAnLycsXG4gICAgaGFzaDogbG9jYXRpb24uaGFzaCB8fCAnJyxcbiAgICBxdWVyeTogcXVlcnksXG4gICAgcGFyYW1zOiBsb2NhdGlvbi5wYXJhbXMgfHwge30sXG4gICAgZnVsbFBhdGg6IGdldEZ1bGxQYXRoKGxvY2F0aW9uLCBzdHJpbmdpZnlRdWVyeSksXG4gICAgbWF0Y2hlZDogcmVjb3JkID8gZm9ybWF0TWF0Y2gocmVjb3JkKSA6IFtdXG4gIH07XG4gIGlmIChyZWRpcmVjdGVkRnJvbSkge1xuICAgIHJvdXRlLnJlZGlyZWN0ZWRGcm9tID0gZ2V0RnVsbFBhdGgocmVkaXJlY3RlZEZyb20sIHN0cmluZ2lmeVF1ZXJ5KTtcbiAgfVxuICByZXR1cm4gT2JqZWN0LmZyZWV6ZShyb3V0ZSlcbn1cblxuZnVuY3Rpb24gY2xvbmUgKHZhbHVlKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoY2xvbmUpXG4gIH0gZWxzZSBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgIHZhciByZXMgPSB7fTtcbiAgICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICAgIHJlc1trZXldID0gY2xvbmUodmFsdWVba2V5XSk7XG4gICAgfVxuICAgIHJldHVybiByZXNcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxufVxuXG4vLyB0aGUgc3RhcnRpbmcgcm91dGUgdGhhdCByZXByZXNlbnRzIHRoZSBpbml0aWFsIHN0YXRlXG52YXIgU1RBUlQgPSBjcmVhdGVSb3V0ZShudWxsLCB7XG4gIHBhdGg6ICcvJ1xufSk7XG5cbmZ1bmN0aW9uIGZvcm1hdE1hdGNoIChyZWNvcmQpIHtcbiAgdmFyIHJlcyA9IFtdO1xuICB3aGlsZSAocmVjb3JkKSB7XG4gICAgcmVzLnVuc2hpZnQocmVjb3JkKTtcbiAgICByZWNvcmQgPSByZWNvcmQucGFyZW50O1xuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gZ2V0RnVsbFBhdGggKFxuICByZWYsXG4gIF9zdHJpbmdpZnlRdWVyeVxuKSB7XG4gIHZhciBwYXRoID0gcmVmLnBhdGg7XG4gIHZhciBxdWVyeSA9IHJlZi5xdWVyeTsgaWYgKCBxdWVyeSA9PT0gdm9pZCAwICkgcXVlcnkgPSB7fTtcbiAgdmFyIGhhc2ggPSByZWYuaGFzaDsgaWYgKCBoYXNoID09PSB2b2lkIDAgKSBoYXNoID0gJyc7XG5cbiAgdmFyIHN0cmluZ2lmeSA9IF9zdHJpbmdpZnlRdWVyeSB8fCBzdHJpbmdpZnlRdWVyeTtcbiAgcmV0dXJuIChwYXRoIHx8ICcvJykgKyBzdHJpbmdpZnkocXVlcnkpICsgaGFzaFxufVxuXG5mdW5jdGlvbiBpc1NhbWVSb3V0ZSAoYSwgYikge1xuICBpZiAoYiA9PT0gU1RBUlQpIHtcbiAgICByZXR1cm4gYSA9PT0gYlxuICB9IGVsc2UgaWYgKCFiKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH0gZWxzZSBpZiAoYS5wYXRoICYmIGIucGF0aCkge1xuICAgIHJldHVybiAoXG4gICAgICBhLnBhdGgucmVwbGFjZSh0cmFpbGluZ1NsYXNoUkUsICcnKSA9PT0gYi5wYXRoLnJlcGxhY2UodHJhaWxpbmdTbGFzaFJFLCAnJykgJiZcbiAgICAgIGEuaGFzaCA9PT0gYi5oYXNoICYmXG4gICAgICBpc09iamVjdEVxdWFsKGEucXVlcnksIGIucXVlcnkpXG4gICAgKVxuICB9IGVsc2UgaWYgKGEubmFtZSAmJiBiLm5hbWUpIHtcbiAgICByZXR1cm4gKFxuICAgICAgYS5uYW1lID09PSBiLm5hbWUgJiZcbiAgICAgIGEuaGFzaCA9PT0gYi5oYXNoICYmXG4gICAgICBpc09iamVjdEVxdWFsKGEucXVlcnksIGIucXVlcnkpICYmXG4gICAgICBpc09iamVjdEVxdWFsKGEucGFyYW1zLCBiLnBhcmFtcylcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuZnVuY3Rpb24gaXNPYmplY3RFcXVhbCAoYSwgYikge1xuICBpZiAoIGEgPT09IHZvaWQgMCApIGEgPSB7fTtcbiAgaWYgKCBiID09PSB2b2lkIDAgKSBiID0ge307XG5cbiAgLy8gaGFuZGxlIG51bGwgdmFsdWUgIzE1NjZcbiAgaWYgKCFhIHx8ICFiKSB7IHJldHVybiBhID09PSBiIH1cbiAgdmFyIGFLZXlzID0gT2JqZWN0LmtleXMoYSk7XG4gIHZhciBiS2V5cyA9IE9iamVjdC5rZXlzKGIpO1xuICBpZiAoYUtleXMubGVuZ3RoICE9PSBiS2V5cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICByZXR1cm4gYUtleXMuZXZlcnkoZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBhVmFsID0gYVtrZXldO1xuICAgIHZhciBiVmFsID0gYltrZXldO1xuICAgIC8vIHF1ZXJ5IHZhbHVlcyBjYW4gYmUgbnVsbCBhbmQgdW5kZWZpbmVkXG4gICAgaWYgKGFWYWwgPT0gbnVsbCB8fCBiVmFsID09IG51bGwpIHsgcmV0dXJuIGFWYWwgPT09IGJWYWwgfVxuICAgIC8vIGNoZWNrIG5lc3RlZCBlcXVhbGl0eVxuICAgIGlmICh0eXBlb2YgYVZhbCA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGJWYWwgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RFcXVhbChhVmFsLCBiVmFsKVxuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKGFWYWwpID09PSBTdHJpbmcoYlZhbClcbiAgfSlcbn1cblxuZnVuY3Rpb24gaXNJbmNsdWRlZFJvdXRlIChjdXJyZW50LCB0YXJnZXQpIHtcbiAgcmV0dXJuIChcbiAgICBjdXJyZW50LnBhdGgucmVwbGFjZSh0cmFpbGluZ1NsYXNoUkUsICcvJykuaW5kZXhPZihcbiAgICAgIHRhcmdldC5wYXRoLnJlcGxhY2UodHJhaWxpbmdTbGFzaFJFLCAnLycpXG4gICAgKSA9PT0gMCAmJlxuICAgICghdGFyZ2V0Lmhhc2ggfHwgY3VycmVudC5oYXNoID09PSB0YXJnZXQuaGFzaCkgJiZcbiAgICBxdWVyeUluY2x1ZGVzKGN1cnJlbnQucXVlcnksIHRhcmdldC5xdWVyeSlcbiAgKVxufVxuXG5mdW5jdGlvbiBxdWVyeUluY2x1ZGVzIChjdXJyZW50LCB0YXJnZXQpIHtcbiAgZm9yICh2YXIga2V5IGluIHRhcmdldCkge1xuICAgIGlmICghKGtleSBpbiBjdXJyZW50KSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiByZXNvbHZlUGF0aCAoXG4gIHJlbGF0aXZlLFxuICBiYXNlLFxuICBhcHBlbmRcbikge1xuICB2YXIgZmlyc3RDaGFyID0gcmVsYXRpdmUuY2hhckF0KDApO1xuICBpZiAoZmlyc3RDaGFyID09PSAnLycpIHtcbiAgICByZXR1cm4gcmVsYXRpdmVcbiAgfVxuXG4gIGlmIChmaXJzdENoYXIgPT09ICc/JyB8fCBmaXJzdENoYXIgPT09ICcjJykge1xuICAgIHJldHVybiBiYXNlICsgcmVsYXRpdmVcbiAgfVxuXG4gIHZhciBzdGFjayA9IGJhc2Uuc3BsaXQoJy8nKTtcblxuICAvLyByZW1vdmUgdHJhaWxpbmcgc2VnbWVudCBpZjpcbiAgLy8gLSBub3QgYXBwZW5kaW5nXG4gIC8vIC0gYXBwZW5kaW5nIHRvIHRyYWlsaW5nIHNsYXNoIChsYXN0IHNlZ21lbnQgaXMgZW1wdHkpXG4gIGlmICghYXBwZW5kIHx8ICFzdGFja1tzdGFjay5sZW5ndGggLSAxXSkge1xuICAgIHN0YWNrLnBvcCgpO1xuICB9XG5cbiAgLy8gcmVzb2x2ZSByZWxhdGl2ZSBwYXRoXG4gIHZhciBzZWdtZW50cyA9IHJlbGF0aXZlLnJlcGxhY2UoL15cXC8vLCAnJykuc3BsaXQoJy8nKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWdtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzZWdtZW50ID0gc2VnbWVudHNbaV07XG4gICAgaWYgKHNlZ21lbnQgPT09ICcuLicpIHtcbiAgICAgIHN0YWNrLnBvcCgpO1xuICAgIH0gZWxzZSBpZiAoc2VnbWVudCAhPT0gJy4nKSB7XG4gICAgICBzdGFjay5wdXNoKHNlZ21lbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVuc3VyZSBsZWFkaW5nIHNsYXNoXG4gIGlmIChzdGFja1swXSAhPT0gJycpIHtcbiAgICBzdGFjay51bnNoaWZ0KCcnKTtcbiAgfVxuXG4gIHJldHVybiBzdGFjay5qb2luKCcvJylcbn1cblxuZnVuY3Rpb24gcGFyc2VQYXRoIChwYXRoKSB7XG4gIHZhciBoYXNoID0gJyc7XG4gIHZhciBxdWVyeSA9ICcnO1xuXG4gIHZhciBoYXNoSW5kZXggPSBwYXRoLmluZGV4T2YoJyMnKTtcbiAgaWYgKGhhc2hJbmRleCA+PSAwKSB7XG4gICAgaGFzaCA9IHBhdGguc2xpY2UoaGFzaEluZGV4KTtcbiAgICBwYXRoID0gcGF0aC5zbGljZSgwLCBoYXNoSW5kZXgpO1xuICB9XG5cbiAgdmFyIHF1ZXJ5SW5kZXggPSBwYXRoLmluZGV4T2YoJz8nKTtcbiAgaWYgKHF1ZXJ5SW5kZXggPj0gMCkge1xuICAgIHF1ZXJ5ID0gcGF0aC5zbGljZShxdWVyeUluZGV4ICsgMSk7XG4gICAgcGF0aCA9IHBhdGguc2xpY2UoMCwgcXVlcnlJbmRleCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHBhdGg6IHBhdGgsXG4gICAgcXVlcnk6IHF1ZXJ5LFxuICAgIGhhc2g6IGhhc2hcbiAgfVxufVxuXG5mdW5jdGlvbiBjbGVhblBhdGggKHBhdGgpIHtcbiAgcmV0dXJuIHBhdGgucmVwbGFjZSgvXFwvXFwvL2csICcvJylcbn1cblxudmFyIGlzYXJyYXkgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIChhcnIpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcnIpID09ICdbb2JqZWN0IEFycmF5XSc7XG59O1xuXG4vKipcbiAqIEV4cG9zZSBgcGF0aFRvUmVnZXhwYC5cbiAqL1xudmFyIHBhdGhUb1JlZ2V4cF8xID0gcGF0aFRvUmVnZXhwO1xudmFyIHBhcnNlXzEgPSBwYXJzZTtcbnZhciBjb21waWxlXzEgPSBjb21waWxlO1xudmFyIHRva2Vuc1RvRnVuY3Rpb25fMSA9IHRva2Vuc1RvRnVuY3Rpb247XG52YXIgdG9rZW5zVG9SZWdFeHBfMSA9IHRva2Vuc1RvUmVnRXhwO1xuXG4vKipcbiAqIFRoZSBtYWluIHBhdGggbWF0Y2hpbmcgcmVnZXhwIHV0aWxpdHkuXG4gKlxuICogQHR5cGUge1JlZ0V4cH1cbiAqL1xudmFyIFBBVEhfUkVHRVhQID0gbmV3IFJlZ0V4cChbXG4gIC8vIE1hdGNoIGVzY2FwZWQgY2hhcmFjdGVycyB0aGF0IHdvdWxkIG90aGVyd2lzZSBhcHBlYXIgaW4gZnV0dXJlIG1hdGNoZXMuXG4gIC8vIFRoaXMgYWxsb3dzIHRoZSB1c2VyIHRvIGVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMgdGhhdCB3b24ndCB0cmFuc2Zvcm0uXG4gICcoXFxcXFxcXFwuKScsXG4gIC8vIE1hdGNoIEV4cHJlc3Mtc3R5bGUgcGFyYW1ldGVycyBhbmQgdW4tbmFtZWQgcGFyYW1ldGVycyB3aXRoIGEgcHJlZml4XG4gIC8vIGFuZCBvcHRpb25hbCBzdWZmaXhlcy4gTWF0Y2hlcyBhcHBlYXIgYXM6XG4gIC8vXG4gIC8vIFwiLzp0ZXN0KFxcXFxkKyk/XCIgPT4gW1wiL1wiLCBcInRlc3RcIiwgXCJcXGQrXCIsIHVuZGVmaW5lZCwgXCI/XCIsIHVuZGVmaW5lZF1cbiAgLy8gXCIvcm91dGUoXFxcXGQrKVwiICA9PiBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgXCJcXGQrXCIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXVxuICAvLyBcIi8qXCIgICAgICAgICAgICA9PiBbXCIvXCIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgXCIqXCJdXG4gICcoW1xcXFwvLl0pPyg/Oig/OlxcXFw6KFxcXFx3KykoPzpcXFxcKCgoPzpcXFxcXFxcXC58W15cXFxcXFxcXCgpXSkrKVxcXFwpKT98XFxcXCgoKD86XFxcXFxcXFwufFteXFxcXFxcXFwoKV0pKylcXFxcKSkoWysqP10pP3woXFxcXCopKSdcbl0uam9pbignfCcpLCAnZycpO1xuXG4vKipcbiAqIFBhcnNlIGEgc3RyaW5nIGZvciB0aGUgcmF3IHRva2Vucy5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICBzdHJcbiAqIEBwYXJhbSAge09iamVjdD19IG9wdGlvbnNcbiAqIEByZXR1cm4geyFBcnJheX1cbiAqL1xuZnVuY3Rpb24gcGFyc2UgKHN0ciwgb3B0aW9ucykge1xuICB2YXIgdG9rZW5zID0gW107XG4gIHZhciBrZXkgPSAwO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgcGF0aCA9ICcnO1xuICB2YXIgZGVmYXVsdERlbGltaXRlciA9IG9wdGlvbnMgJiYgb3B0aW9ucy5kZWxpbWl0ZXIgfHwgJy8nO1xuICB2YXIgcmVzO1xuXG4gIHdoaWxlICgocmVzID0gUEFUSF9SRUdFWFAuZXhlYyhzdHIpKSAhPSBudWxsKSB7XG4gICAgdmFyIG0gPSByZXNbMF07XG4gICAgdmFyIGVzY2FwZWQgPSByZXNbMV07XG4gICAgdmFyIG9mZnNldCA9IHJlcy5pbmRleDtcbiAgICBwYXRoICs9IHN0ci5zbGljZShpbmRleCwgb2Zmc2V0KTtcbiAgICBpbmRleCA9IG9mZnNldCArIG0ubGVuZ3RoO1xuXG4gICAgLy8gSWdub3JlIGFscmVhZHkgZXNjYXBlZCBzZXF1ZW5jZXMuXG4gICAgaWYgKGVzY2FwZWQpIHtcbiAgICAgIHBhdGggKz0gZXNjYXBlZFsxXTtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgdmFyIG5leHQgPSBzdHJbaW5kZXhdO1xuICAgIHZhciBwcmVmaXggPSByZXNbMl07XG4gICAgdmFyIG5hbWUgPSByZXNbM107XG4gICAgdmFyIGNhcHR1cmUgPSByZXNbNF07XG4gICAgdmFyIGdyb3VwID0gcmVzWzVdO1xuICAgIHZhciBtb2RpZmllciA9IHJlc1s2XTtcbiAgICB2YXIgYXN0ZXJpc2sgPSByZXNbN107XG5cbiAgICAvLyBQdXNoIHRoZSBjdXJyZW50IHBhdGggb250byB0aGUgdG9rZW5zLlxuICAgIGlmIChwYXRoKSB7XG4gICAgICB0b2tlbnMucHVzaChwYXRoKTtcbiAgICAgIHBhdGggPSAnJztcbiAgICB9XG5cbiAgICB2YXIgcGFydGlhbCA9IHByZWZpeCAhPSBudWxsICYmIG5leHQgIT0gbnVsbCAmJiBuZXh0ICE9PSBwcmVmaXg7XG4gICAgdmFyIHJlcGVhdCA9IG1vZGlmaWVyID09PSAnKycgfHwgbW9kaWZpZXIgPT09ICcqJztcbiAgICB2YXIgb3B0aW9uYWwgPSBtb2RpZmllciA9PT0gJz8nIHx8IG1vZGlmaWVyID09PSAnKic7XG4gICAgdmFyIGRlbGltaXRlciA9IHJlc1syXSB8fCBkZWZhdWx0RGVsaW1pdGVyO1xuICAgIHZhciBwYXR0ZXJuID0gY2FwdHVyZSB8fCBncm91cDtcblxuICAgIHRva2Vucy5wdXNoKHtcbiAgICAgIG5hbWU6IG5hbWUgfHwga2V5KyssXG4gICAgICBwcmVmaXg6IHByZWZpeCB8fCAnJyxcbiAgICAgIGRlbGltaXRlcjogZGVsaW1pdGVyLFxuICAgICAgb3B0aW9uYWw6IG9wdGlvbmFsLFxuICAgICAgcmVwZWF0OiByZXBlYXQsXG4gICAgICBwYXJ0aWFsOiBwYXJ0aWFsLFxuICAgICAgYXN0ZXJpc2s6ICEhYXN0ZXJpc2ssXG4gICAgICBwYXR0ZXJuOiBwYXR0ZXJuID8gZXNjYXBlR3JvdXAocGF0dGVybikgOiAoYXN0ZXJpc2sgPyAnLionIDogJ1teJyArIGVzY2FwZVN0cmluZyhkZWxpbWl0ZXIpICsgJ10rPycpXG4gICAgfSk7XG4gIH1cblxuICAvLyBNYXRjaCBhbnkgY2hhcmFjdGVycyBzdGlsbCByZW1haW5pbmcuXG4gIGlmIChpbmRleCA8IHN0ci5sZW5ndGgpIHtcbiAgICBwYXRoICs9IHN0ci5zdWJzdHIoaW5kZXgpO1xuICB9XG5cbiAgLy8gSWYgdGhlIHBhdGggZXhpc3RzLCBwdXNoIGl0IG9udG8gdGhlIGVuZC5cbiAgaWYgKHBhdGgpIHtcbiAgICB0b2tlbnMucHVzaChwYXRoKTtcbiAgfVxuXG4gIHJldHVybiB0b2tlbnNcbn1cblxuLyoqXG4gKiBDb21waWxlIGEgc3RyaW5nIHRvIGEgdGVtcGxhdGUgZnVuY3Rpb24gZm9yIHRoZSBwYXRoLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gICAgICAgICAgICAgc3RyXG4gKiBAcGFyYW0gIHtPYmplY3Q9fSAgICAgICAgICAgIG9wdGlvbnNcbiAqIEByZXR1cm4geyFmdW5jdGlvbihPYmplY3Q9LCBPYmplY3Q9KX1cbiAqL1xuZnVuY3Rpb24gY29tcGlsZSAoc3RyLCBvcHRpb25zKSB7XG4gIHJldHVybiB0b2tlbnNUb0Z1bmN0aW9uKHBhcnNlKHN0ciwgb3B0aW9ucyksIG9wdGlvbnMpXG59XG5cbi8qKlxuICogUHJldHRpZXIgZW5jb2Rpbmcgb2YgVVJJIHBhdGggc2VnbWVudHMuXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBlbmNvZGVVUklDb21wb25lbnRQcmV0dHkgKHN0cikge1xuICByZXR1cm4gZW5jb2RlVVJJKHN0cikucmVwbGFjZSgvW1xcLz8jXS9nLCBmdW5jdGlvbiAoYykge1xuICAgIHJldHVybiAnJScgKyBjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKClcbiAgfSlcbn1cblxuLyoqXG4gKiBFbmNvZGUgdGhlIGFzdGVyaXNrIHBhcmFtZXRlci4gU2ltaWxhciB0byBgcHJldHR5YCwgYnV0IGFsbG93cyBzbGFzaGVzLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ31cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZW5jb2RlQXN0ZXJpc2sgKHN0cikge1xuICByZXR1cm4gZW5jb2RlVVJJKHN0cikucmVwbGFjZSgvWz8jXS9nLCBmdW5jdGlvbiAoYykge1xuICAgIHJldHVybiAnJScgKyBjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKClcbiAgfSlcbn1cblxuLyoqXG4gKiBFeHBvc2UgYSBtZXRob2QgZm9yIHRyYW5zZm9ybWluZyB0b2tlbnMgaW50byB0aGUgcGF0aCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gdG9rZW5zVG9GdW5jdGlvbiAodG9rZW5zLCBvcHRpb25zKSB7XG4gIC8vIENvbXBpbGUgYWxsIHRoZSB0b2tlbnMgaW50byByZWdleHBzLlxuICB2YXIgbWF0Y2hlcyA9IG5ldyBBcnJheSh0b2tlbnMubGVuZ3RoKTtcblxuICAvLyBDb21waWxlIGFsbCB0aGUgcGF0dGVybnMgYmVmb3JlIGNvbXBpbGF0aW9uLlxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgIGlmICh0eXBlb2YgdG9rZW5zW2ldID09PSAnb2JqZWN0Jykge1xuICAgICAgbWF0Y2hlc1tpXSA9IG5ldyBSZWdFeHAoJ14oPzonICsgdG9rZW5zW2ldLnBhdHRlcm4gKyAnKSQnLCBmbGFncyhvcHRpb25zKSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChvYmosIG9wdHMpIHtcbiAgICB2YXIgcGF0aCA9ICcnO1xuICAgIHZhciBkYXRhID0gb2JqIHx8IHt9O1xuICAgIHZhciBvcHRpb25zID0gb3B0cyB8fCB7fTtcbiAgICB2YXIgZW5jb2RlID0gb3B0aW9ucy5wcmV0dHkgPyBlbmNvZGVVUklDb21wb25lbnRQcmV0dHkgOiBlbmNvZGVVUklDb21wb25lbnQ7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHRva2VuID0gdG9rZW5zW2ldO1xuXG4gICAgICBpZiAodHlwZW9mIHRva2VuID09PSAnc3RyaW5nJykge1xuICAgICAgICBwYXRoICs9IHRva2VuO1xuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIHZhciB2YWx1ZSA9IGRhdGFbdG9rZW4ubmFtZV07XG4gICAgICB2YXIgc2VnbWVudDtcblxuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgaWYgKHRva2VuLm9wdGlvbmFsKSB7XG4gICAgICAgICAgLy8gUHJlcGVuZCBwYXJ0aWFsIHNlZ21lbnQgcHJlZml4ZXMuXG4gICAgICAgICAgaWYgKHRva2VuLnBhcnRpYWwpIHtcbiAgICAgICAgICAgIHBhdGggKz0gdG9rZW4ucHJlZml4O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgXCInICsgdG9rZW4ubmFtZSArICdcIiB0byBiZSBkZWZpbmVkJylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoaXNhcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgaWYgKCF0b2tlbi5yZXBlYXQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBcIicgKyB0b2tlbi5uYW1lICsgJ1wiIHRvIG5vdCByZXBlYXQsIGJ1dCByZWNlaXZlZCBgJyArIEpTT04uc3RyaW5naWZ5KHZhbHVlKSArICdgJylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBpZiAodG9rZW4ub3B0aW9uYWwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIFwiJyArIHRva2VuLm5hbWUgKyAnXCIgdG8gbm90IGJlIGVtcHR5JylcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHZhbHVlLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgc2VnbWVudCA9IGVuY29kZSh2YWx1ZVtqXSk7XG5cbiAgICAgICAgICBpZiAoIW1hdGNoZXNbaV0udGVzdChzZWdtZW50KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgYWxsIFwiJyArIHRva2VuLm5hbWUgKyAnXCIgdG8gbWF0Y2ggXCInICsgdG9rZW4ucGF0dGVybiArICdcIiwgYnV0IHJlY2VpdmVkIGAnICsgSlNPTi5zdHJpbmdpZnkoc2VnbWVudCkgKyAnYCcpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcGF0aCArPSAoaiA9PT0gMCA/IHRva2VuLnByZWZpeCA6IHRva2VuLmRlbGltaXRlcikgKyBzZWdtZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgc2VnbWVudCA9IHRva2VuLmFzdGVyaXNrID8gZW5jb2RlQXN0ZXJpc2sodmFsdWUpIDogZW5jb2RlKHZhbHVlKTtcblxuICAgICAgaWYgKCFtYXRjaGVzW2ldLnRlc3Qoc2VnbWVudCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgXCInICsgdG9rZW4ubmFtZSArICdcIiB0byBtYXRjaCBcIicgKyB0b2tlbi5wYXR0ZXJuICsgJ1wiLCBidXQgcmVjZWl2ZWQgXCInICsgc2VnbWVudCArICdcIicpXG4gICAgICB9XG5cbiAgICAgIHBhdGggKz0gdG9rZW4ucHJlZml4ICsgc2VnbWVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGF0aFxuICB9XG59XG5cbi8qKlxuICogRXNjYXBlIGEgcmVndWxhciBleHByZXNzaW9uIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHN0clxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBlc2NhcGVTdHJpbmcgKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoLyhbLisqPz1eIToke30oKVtcXF18XFwvXFxcXF0pL2csICdcXFxcJDEnKVxufVxuXG4vKipcbiAqIEVzY2FwZSB0aGUgY2FwdHVyaW5nIGdyb3VwIGJ5IGVzY2FwaW5nIHNwZWNpYWwgY2hhcmFjdGVycyBhbmQgbWVhbmluZy5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9IGdyb3VwXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVzY2FwZUdyb3VwIChncm91cCkge1xuICByZXR1cm4gZ3JvdXAucmVwbGFjZSgvKFs9ITokXFwvKCldKS9nLCAnXFxcXCQxJylcbn1cblxuLyoqXG4gKiBBdHRhY2ggdGhlIGtleXMgYXMgYSBwcm9wZXJ0eSBvZiB0aGUgcmVnZXhwLlxuICpcbiAqIEBwYXJhbSAgeyFSZWdFeHB9IHJlXG4gKiBAcGFyYW0gIHtBcnJheX0gICBrZXlzXG4gKiBAcmV0dXJuIHshUmVnRXhwfVxuICovXG5mdW5jdGlvbiBhdHRhY2hLZXlzIChyZSwga2V5cykge1xuICByZS5rZXlzID0ga2V5cztcbiAgcmV0dXJuIHJlXG59XG5cbi8qKlxuICogR2V0IHRoZSBmbGFncyBmb3IgYSByZWdleHAgZnJvbSB0aGUgb3B0aW9ucy5cbiAqXG4gKiBAcGFyYW0gIHtPYmplY3R9IG9wdGlvbnNcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZmxhZ3MgKG9wdGlvbnMpIHtcbiAgcmV0dXJuIG9wdGlvbnMgJiYgb3B0aW9ucy5zZW5zaXRpdmUgPyAnJyA6ICdpJ1xufVxuXG4vKipcbiAqIFB1bGwgb3V0IGtleXMgZnJvbSBhIHJlZ2V4cC5cbiAqXG4gKiBAcGFyYW0gIHshUmVnRXhwfSBwYXRoXG4gKiBAcGFyYW0gIHshQXJyYXl9ICBrZXlzXG4gKiBAcmV0dXJuIHshUmVnRXhwfVxuICovXG5mdW5jdGlvbiByZWdleHBUb1JlZ2V4cCAocGF0aCwga2V5cykge1xuICAvLyBVc2UgYSBuZWdhdGl2ZSBsb29rYWhlYWQgdG8gbWF0Y2ggb25seSBjYXB0dXJpbmcgZ3JvdXBzLlxuICB2YXIgZ3JvdXBzID0gcGF0aC5zb3VyY2UubWF0Y2goL1xcKCg/IVxcPykvZyk7XG5cbiAgaWYgKGdyb3Vwcykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBrZXlzLnB1c2goe1xuICAgICAgICBuYW1lOiBpLFxuICAgICAgICBwcmVmaXg6IG51bGwsXG4gICAgICAgIGRlbGltaXRlcjogbnVsbCxcbiAgICAgICAgb3B0aW9uYWw6IGZhbHNlLFxuICAgICAgICByZXBlYXQ6IGZhbHNlLFxuICAgICAgICBwYXJ0aWFsOiBmYWxzZSxcbiAgICAgICAgYXN0ZXJpc2s6IGZhbHNlLFxuICAgICAgICBwYXR0ZXJuOiBudWxsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXR0YWNoS2V5cyhwYXRoLCBrZXlzKVxufVxuXG4vKipcbiAqIFRyYW5zZm9ybSBhbiBhcnJheSBpbnRvIGEgcmVnZXhwLlxuICpcbiAqIEBwYXJhbSAgeyFBcnJheX0gIHBhdGhcbiAqIEBwYXJhbSAge0FycmF5fSAgIGtleXNcbiAqIEBwYXJhbSAgeyFPYmplY3R9IG9wdGlvbnNcbiAqIEByZXR1cm4geyFSZWdFeHB9XG4gKi9cbmZ1bmN0aW9uIGFycmF5VG9SZWdleHAgKHBhdGgsIGtleXMsIG9wdGlvbnMpIHtcbiAgdmFyIHBhcnRzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgcGFydHMucHVzaChwYXRoVG9SZWdleHAocGF0aFtpXSwga2V5cywgb3B0aW9ucykuc291cmNlKTtcbiAgfVxuXG4gIHZhciByZWdleHAgPSBuZXcgUmVnRXhwKCcoPzonICsgcGFydHMuam9pbignfCcpICsgJyknLCBmbGFncyhvcHRpb25zKSk7XG5cbiAgcmV0dXJuIGF0dGFjaEtleXMocmVnZXhwLCBrZXlzKVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIHBhdGggcmVnZXhwIGZyb20gc3RyaW5nIGlucHV0LlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gIHBhdGhcbiAqIEBwYXJhbSAgeyFBcnJheX0gIGtleXNcbiAqIEBwYXJhbSAgeyFPYmplY3R9IG9wdGlvbnNcbiAqIEByZXR1cm4geyFSZWdFeHB9XG4gKi9cbmZ1bmN0aW9uIHN0cmluZ1RvUmVnZXhwIChwYXRoLCBrZXlzLCBvcHRpb25zKSB7XG4gIHJldHVybiB0b2tlbnNUb1JlZ0V4cChwYXJzZShwYXRoLCBvcHRpb25zKSwga2V5cywgb3B0aW9ucylcbn1cblxuLyoqXG4gKiBFeHBvc2UgYSBmdW5jdGlvbiBmb3IgdGFraW5nIHRva2VucyBhbmQgcmV0dXJuaW5nIGEgUmVnRXhwLlxuICpcbiAqIEBwYXJhbSAgeyFBcnJheX0gICAgICAgICAgdG9rZW5zXG4gKiBAcGFyYW0gIHsoQXJyYXl8T2JqZWN0KT19IGtleXNcbiAqIEBwYXJhbSAge09iamVjdD19ICAgICAgICAgb3B0aW9uc1xuICogQHJldHVybiB7IVJlZ0V4cH1cbiAqL1xuZnVuY3Rpb24gdG9rZW5zVG9SZWdFeHAgKHRva2Vucywga2V5cywgb3B0aW9ucykge1xuICBpZiAoIWlzYXJyYXkoa2V5cykpIHtcbiAgICBvcHRpb25zID0gLyoqIEB0eXBlIHshT2JqZWN0fSAqLyAoa2V5cyB8fCBvcHRpb25zKTtcbiAgICBrZXlzID0gW107XG4gIH1cblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICB2YXIgc3RyaWN0ID0gb3B0aW9ucy5zdHJpY3Q7XG4gIHZhciBlbmQgPSBvcHRpb25zLmVuZCAhPT0gZmFsc2U7XG4gIHZhciByb3V0ZSA9ICcnO1xuXG4gIC8vIEl0ZXJhdGUgb3ZlciB0aGUgdG9rZW5zIGFuZCBjcmVhdGUgb3VyIHJlZ2V4cCBzdHJpbmcuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHRva2VuID0gdG9rZW5zW2ldO1xuXG4gICAgaWYgKHR5cGVvZiB0b2tlbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJvdXRlICs9IGVzY2FwZVN0cmluZyh0b2tlbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBwcmVmaXggPSBlc2NhcGVTdHJpbmcodG9rZW4ucHJlZml4KTtcbiAgICAgIHZhciBjYXB0dXJlID0gJyg/OicgKyB0b2tlbi5wYXR0ZXJuICsgJyknO1xuXG4gICAgICBrZXlzLnB1c2godG9rZW4pO1xuXG4gICAgICBpZiAodG9rZW4ucmVwZWF0KSB7XG4gICAgICAgIGNhcHR1cmUgKz0gJyg/OicgKyBwcmVmaXggKyBjYXB0dXJlICsgJykqJztcbiAgICAgIH1cblxuICAgICAgaWYgKHRva2VuLm9wdGlvbmFsKSB7XG4gICAgICAgIGlmICghdG9rZW4ucGFydGlhbCkge1xuICAgICAgICAgIGNhcHR1cmUgPSAnKD86JyArIHByZWZpeCArICcoJyArIGNhcHR1cmUgKyAnKSk/JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYXB0dXJlID0gcHJlZml4ICsgJygnICsgY2FwdHVyZSArICcpPyc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhcHR1cmUgPSBwcmVmaXggKyAnKCcgKyBjYXB0dXJlICsgJyknO1xuICAgICAgfVxuXG4gICAgICByb3V0ZSArPSBjYXB0dXJlO1xuICAgIH1cbiAgfVxuXG4gIHZhciBkZWxpbWl0ZXIgPSBlc2NhcGVTdHJpbmcob3B0aW9ucy5kZWxpbWl0ZXIgfHwgJy8nKTtcbiAgdmFyIGVuZHNXaXRoRGVsaW1pdGVyID0gcm91dGUuc2xpY2UoLWRlbGltaXRlci5sZW5ndGgpID09PSBkZWxpbWl0ZXI7XG5cbiAgLy8gSW4gbm9uLXN0cmljdCBtb2RlIHdlIGFsbG93IGEgc2xhc2ggYXQgdGhlIGVuZCBvZiBtYXRjaC4gSWYgdGhlIHBhdGggdG9cbiAgLy8gbWF0Y2ggYWxyZWFkeSBlbmRzIHdpdGggYSBzbGFzaCwgd2UgcmVtb3ZlIGl0IGZvciBjb25zaXN0ZW5jeS4gVGhlIHNsYXNoXG4gIC8vIGlzIHZhbGlkIGF0IHRoZSBlbmQgb2YgYSBwYXRoIG1hdGNoLCBub3QgaW4gdGhlIG1pZGRsZS4gVGhpcyBpcyBpbXBvcnRhbnRcbiAgLy8gaW4gbm9uLWVuZGluZyBtb2RlLCB3aGVyZSBcIi90ZXN0L1wiIHNob3VsZG4ndCBtYXRjaCBcIi90ZXN0Ly9yb3V0ZVwiLlxuICBpZiAoIXN0cmljdCkge1xuICAgIHJvdXRlID0gKGVuZHNXaXRoRGVsaW1pdGVyID8gcm91dGUuc2xpY2UoMCwgLWRlbGltaXRlci5sZW5ndGgpIDogcm91dGUpICsgJyg/OicgKyBkZWxpbWl0ZXIgKyAnKD89JCkpPyc7XG4gIH1cblxuICBpZiAoZW5kKSB7XG4gICAgcm91dGUgKz0gJyQnO1xuICB9IGVsc2Uge1xuICAgIC8vIEluIG5vbi1lbmRpbmcgbW9kZSwgd2UgbmVlZCB0aGUgY2FwdHVyaW5nIGdyb3VwcyB0byBtYXRjaCBhcyBtdWNoIGFzXG4gICAgLy8gcG9zc2libGUgYnkgdXNpbmcgYSBwb3NpdGl2ZSBsb29rYWhlYWQgdG8gdGhlIGVuZCBvciBuZXh0IHBhdGggc2VnbWVudC5cbiAgICByb3V0ZSArPSBzdHJpY3QgJiYgZW5kc1dpdGhEZWxpbWl0ZXIgPyAnJyA6ICcoPz0nICsgZGVsaW1pdGVyICsgJ3wkKSc7XG4gIH1cblxuICByZXR1cm4gYXR0YWNoS2V5cyhuZXcgUmVnRXhwKCdeJyArIHJvdXRlLCBmbGFncyhvcHRpb25zKSksIGtleXMpXG59XG5cbi8qKlxuICogTm9ybWFsaXplIHRoZSBnaXZlbiBwYXRoIHN0cmluZywgcmV0dXJuaW5nIGEgcmVndWxhciBleHByZXNzaW9uLlxuICpcbiAqIEFuIGVtcHR5IGFycmF5IGNhbiBiZSBwYXNzZWQgaW4gZm9yIHRoZSBrZXlzLCB3aGljaCB3aWxsIGhvbGQgdGhlXG4gKiBwbGFjZWhvbGRlciBrZXkgZGVzY3JpcHRpb25zLiBGb3IgZXhhbXBsZSwgdXNpbmcgYC91c2VyLzppZGAsIGBrZXlzYCB3aWxsXG4gKiBjb250YWluIGBbeyBuYW1lOiAnaWQnLCBkZWxpbWl0ZXI6ICcvJywgb3B0aW9uYWw6IGZhbHNlLCByZXBlYXQ6IGZhbHNlIH1dYC5cbiAqXG4gKiBAcGFyYW0gIHsoc3RyaW5nfFJlZ0V4cHxBcnJheSl9IHBhdGhcbiAqIEBwYXJhbSAgeyhBcnJheXxPYmplY3QpPX0gICAgICAga2V5c1xuICogQHBhcmFtICB7T2JqZWN0PX0gICAgICAgICAgICAgICBvcHRpb25zXG4gKiBAcmV0dXJuIHshUmVnRXhwfVxuICovXG5mdW5jdGlvbiBwYXRoVG9SZWdleHAgKHBhdGgsIGtleXMsIG9wdGlvbnMpIHtcbiAgaWYgKCFpc2FycmF5KGtleXMpKSB7XG4gICAgb3B0aW9ucyA9IC8qKiBAdHlwZSB7IU9iamVjdH0gKi8gKGtleXMgfHwgb3B0aW9ucyk7XG4gICAga2V5cyA9IFtdO1xuICB9XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgaWYgKHBhdGggaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICByZXR1cm4gcmVnZXhwVG9SZWdleHAocGF0aCwgLyoqIEB0eXBlIHshQXJyYXl9ICovIChrZXlzKSlcbiAgfVxuXG4gIGlmIChpc2FycmF5KHBhdGgpKSB7XG4gICAgcmV0dXJuIGFycmF5VG9SZWdleHAoLyoqIEB0eXBlIHshQXJyYXl9ICovIChwYXRoKSwgLyoqIEB0eXBlIHshQXJyYXl9ICovIChrZXlzKSwgb3B0aW9ucylcbiAgfVxuXG4gIHJldHVybiBzdHJpbmdUb1JlZ2V4cCgvKiogQHR5cGUge3N0cmluZ30gKi8gKHBhdGgpLCAvKiogQHR5cGUgeyFBcnJheX0gKi8gKGtleXMpLCBvcHRpb25zKVxufVxucGF0aFRvUmVnZXhwXzEucGFyc2UgPSBwYXJzZV8xO1xucGF0aFRvUmVnZXhwXzEuY29tcGlsZSA9IGNvbXBpbGVfMTtcbnBhdGhUb1JlZ2V4cF8xLnRva2Vuc1RvRnVuY3Rpb24gPSB0b2tlbnNUb0Z1bmN0aW9uXzE7XG5wYXRoVG9SZWdleHBfMS50b2tlbnNUb1JlZ0V4cCA9IHRva2Vuc1RvUmVnRXhwXzE7XG5cbi8qICAqL1xuXG4vLyAkZmxvdy1kaXNhYmxlLWxpbmVcbnZhciByZWdleHBDb21waWxlQ2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG5mdW5jdGlvbiBmaWxsUGFyYW1zIChcbiAgcGF0aCxcbiAgcGFyYW1zLFxuICByb3V0ZU1zZ1xuKSB7XG4gIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcbiAgdHJ5IHtcbiAgICB2YXIgZmlsbGVyID1cbiAgICAgIHJlZ2V4cENvbXBpbGVDYWNoZVtwYXRoXSB8fFxuICAgICAgKHJlZ2V4cENvbXBpbGVDYWNoZVtwYXRoXSA9IHBhdGhUb1JlZ2V4cF8xLmNvbXBpbGUocGF0aCkpO1xuXG4gICAgLy8gRml4ICMyNTA1IHJlc29sdmluZyBhc3RlcmlzayByb3V0ZXMgeyBuYW1lOiAnbm90LWZvdW5kJywgcGFyYW1zOiB7IHBhdGhNYXRjaDogJy9ub3QtZm91bmQnIH19XG4gICAgLy8gYW5kIGZpeCAjMzEwNiBzbyB0aGF0IHlvdSBjYW4gd29yayB3aXRoIGxvY2F0aW9uIGRlc2NyaXB0b3Igb2JqZWN0IGhhdmluZyBwYXJhbXMucGF0aE1hdGNoIGVxdWFsIHRvIGVtcHR5IHN0cmluZ1xuICAgIGlmICh0eXBlb2YgcGFyYW1zLnBhdGhNYXRjaCA9PT0gJ3N0cmluZycpIHsgcGFyYW1zWzBdID0gcGFyYW1zLnBhdGhNYXRjaDsgfVxuXG4gICAgcmV0dXJuIGZpbGxlcihwYXJhbXMsIHsgcHJldHR5OiB0cnVlIH0pXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gRml4ICMzMDcyIG5vIHdhcm4gaWYgYHBhdGhNYXRjaGAgaXMgc3RyaW5nXG4gICAgICB3YXJuKHR5cGVvZiBwYXJhbXMucGF0aE1hdGNoID09PSAnc3RyaW5nJywgKFwibWlzc2luZyBwYXJhbSBmb3IgXCIgKyByb3V0ZU1zZyArIFwiOiBcIiArIChlLm1lc3NhZ2UpKSk7XG4gICAgfVxuICAgIHJldHVybiAnJ1xuICB9IGZpbmFsbHkge1xuICAgIC8vIGRlbGV0ZSB0aGUgMCBpZiBpdCB3YXMgYWRkZWRcbiAgICBkZWxldGUgcGFyYW1zWzBdO1xuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBub3JtYWxpemVMb2NhdGlvbiAoXG4gIHJhdyxcbiAgY3VycmVudCxcbiAgYXBwZW5kLFxuICByb3V0ZXJcbikge1xuICB2YXIgbmV4dCA9IHR5cGVvZiByYXcgPT09ICdzdHJpbmcnID8geyBwYXRoOiByYXcgfSA6IHJhdztcbiAgLy8gbmFtZWQgdGFyZ2V0XG4gIGlmIChuZXh0Ll9ub3JtYWxpemVkKSB7XG4gICAgcmV0dXJuIG5leHRcbiAgfSBlbHNlIGlmIChuZXh0Lm5hbWUpIHtcbiAgICBuZXh0ID0gZXh0ZW5kKHt9LCByYXcpO1xuICAgIHZhciBwYXJhbXMgPSBuZXh0LnBhcmFtcztcbiAgICBpZiAocGFyYW1zICYmIHR5cGVvZiBwYXJhbXMgPT09ICdvYmplY3QnKSB7XG4gICAgICBuZXh0LnBhcmFtcyA9IGV4dGVuZCh7fSwgcGFyYW1zKTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHRcbiAgfVxuXG4gIC8vIHJlbGF0aXZlIHBhcmFtc1xuICBpZiAoIW5leHQucGF0aCAmJiBuZXh0LnBhcmFtcyAmJiBjdXJyZW50KSB7XG4gICAgbmV4dCA9IGV4dGVuZCh7fSwgbmV4dCk7XG4gICAgbmV4dC5fbm9ybWFsaXplZCA9IHRydWU7XG4gICAgdmFyIHBhcmFtcyQxID0gZXh0ZW5kKGV4dGVuZCh7fSwgY3VycmVudC5wYXJhbXMpLCBuZXh0LnBhcmFtcyk7XG4gICAgaWYgKGN1cnJlbnQubmFtZSkge1xuICAgICAgbmV4dC5uYW1lID0gY3VycmVudC5uYW1lO1xuICAgICAgbmV4dC5wYXJhbXMgPSBwYXJhbXMkMTtcbiAgICB9IGVsc2UgaWYgKGN1cnJlbnQubWF0Y2hlZC5sZW5ndGgpIHtcbiAgICAgIHZhciByYXdQYXRoID0gY3VycmVudC5tYXRjaGVkW2N1cnJlbnQubWF0Y2hlZC5sZW5ndGggLSAxXS5wYXRoO1xuICAgICAgbmV4dC5wYXRoID0gZmlsbFBhcmFtcyhyYXdQYXRoLCBwYXJhbXMkMSwgKFwicGF0aCBcIiArIChjdXJyZW50LnBhdGgpKSk7XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB3YXJuKGZhbHNlLCBcInJlbGF0aXZlIHBhcmFtcyBuYXZpZ2F0aW9uIHJlcXVpcmVzIGEgY3VycmVudCByb3V0ZS5cIik7XG4gICAgfVxuICAgIHJldHVybiBuZXh0XG4gIH1cblxuICB2YXIgcGFyc2VkUGF0aCA9IHBhcnNlUGF0aChuZXh0LnBhdGggfHwgJycpO1xuICB2YXIgYmFzZVBhdGggPSAoY3VycmVudCAmJiBjdXJyZW50LnBhdGgpIHx8ICcvJztcbiAgdmFyIHBhdGggPSBwYXJzZWRQYXRoLnBhdGhcbiAgICA/IHJlc29sdmVQYXRoKHBhcnNlZFBhdGgucGF0aCwgYmFzZVBhdGgsIGFwcGVuZCB8fCBuZXh0LmFwcGVuZClcbiAgICA6IGJhc2VQYXRoO1xuXG4gIHZhciBxdWVyeSA9IHJlc29sdmVRdWVyeShcbiAgICBwYXJzZWRQYXRoLnF1ZXJ5LFxuICAgIG5leHQucXVlcnksXG4gICAgcm91dGVyICYmIHJvdXRlci5vcHRpb25zLnBhcnNlUXVlcnlcbiAgKTtcblxuICB2YXIgaGFzaCA9IG5leHQuaGFzaCB8fCBwYXJzZWRQYXRoLmhhc2g7XG4gIGlmIChoYXNoICYmIGhhc2guY2hhckF0KDApICE9PSAnIycpIHtcbiAgICBoYXNoID0gXCIjXCIgKyBoYXNoO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBfbm9ybWFsaXplZDogdHJ1ZSxcbiAgICBwYXRoOiBwYXRoLFxuICAgIHF1ZXJ5OiBxdWVyeSxcbiAgICBoYXNoOiBoYXNoXG4gIH1cbn1cblxuLyogICovXG5cbi8vIHdvcmsgYXJvdW5kIHdlaXJkIGZsb3cgYnVnXG52YXIgdG9UeXBlcyA9IFtTdHJpbmcsIE9iamVjdF07XG52YXIgZXZlbnRUeXBlcyA9IFtTdHJpbmcsIEFycmF5XTtcblxudmFyIG5vb3AgPSBmdW5jdGlvbiAoKSB7fTtcblxudmFyIExpbmsgPSB7XG4gIG5hbWU6ICdSb3V0ZXJMaW5rJyxcbiAgcHJvcHM6IHtcbiAgICB0bzoge1xuICAgICAgdHlwZTogdG9UeXBlcyxcbiAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgfSxcbiAgICB0YWc6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdhJ1xuICAgIH0sXG4gICAgZXhhY3Q6IEJvb2xlYW4sXG4gICAgYXBwZW5kOiBCb29sZWFuLFxuICAgIHJlcGxhY2U6IEJvb2xlYW4sXG4gICAgYWN0aXZlQ2xhc3M6IFN0cmluZyxcbiAgICBleGFjdEFjdGl2ZUNsYXNzOiBTdHJpbmcsXG4gICAgYXJpYUN1cnJlbnRWYWx1ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ3BhZ2UnXG4gICAgfSxcbiAgICBldmVudDoge1xuICAgICAgdHlwZTogZXZlbnRUeXBlcyxcbiAgICAgIGRlZmF1bHQ6ICdjbGljaydcbiAgICB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyIChoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICB2YXIgcm91dGVyID0gdGhpcy4kcm91dGVyO1xuICAgIHZhciBjdXJyZW50ID0gdGhpcy4kcm91dGU7XG4gICAgdmFyIHJlZiA9IHJvdXRlci5yZXNvbHZlKFxuICAgICAgdGhpcy50byxcbiAgICAgIGN1cnJlbnQsXG4gICAgICB0aGlzLmFwcGVuZFxuICAgICk7XG4gICAgdmFyIGxvY2F0aW9uID0gcmVmLmxvY2F0aW9uO1xuICAgIHZhciByb3V0ZSA9IHJlZi5yb3V0ZTtcbiAgICB2YXIgaHJlZiA9IHJlZi5ocmVmO1xuXG4gICAgdmFyIGNsYXNzZXMgPSB7fTtcbiAgICB2YXIgZ2xvYmFsQWN0aXZlQ2xhc3MgPSByb3V0ZXIub3B0aW9ucy5saW5rQWN0aXZlQ2xhc3M7XG4gICAgdmFyIGdsb2JhbEV4YWN0QWN0aXZlQ2xhc3MgPSByb3V0ZXIub3B0aW9ucy5saW5rRXhhY3RBY3RpdmVDbGFzcztcbiAgICAvLyBTdXBwb3J0IGdsb2JhbCBlbXB0eSBhY3RpdmUgY2xhc3NcbiAgICB2YXIgYWN0aXZlQ2xhc3NGYWxsYmFjayA9XG4gICAgICBnbG9iYWxBY3RpdmVDbGFzcyA9PSBudWxsID8gJ3JvdXRlci1saW5rLWFjdGl2ZScgOiBnbG9iYWxBY3RpdmVDbGFzcztcbiAgICB2YXIgZXhhY3RBY3RpdmVDbGFzc0ZhbGxiYWNrID1cbiAgICAgIGdsb2JhbEV4YWN0QWN0aXZlQ2xhc3MgPT0gbnVsbFxuICAgICAgICA/ICdyb3V0ZXItbGluay1leGFjdC1hY3RpdmUnXG4gICAgICAgIDogZ2xvYmFsRXhhY3RBY3RpdmVDbGFzcztcbiAgICB2YXIgYWN0aXZlQ2xhc3MgPVxuICAgICAgdGhpcy5hY3RpdmVDbGFzcyA9PSBudWxsID8gYWN0aXZlQ2xhc3NGYWxsYmFjayA6IHRoaXMuYWN0aXZlQ2xhc3M7XG4gICAgdmFyIGV4YWN0QWN0aXZlQ2xhc3MgPVxuICAgICAgdGhpcy5leGFjdEFjdGl2ZUNsYXNzID09IG51bGxcbiAgICAgICAgPyBleGFjdEFjdGl2ZUNsYXNzRmFsbGJhY2tcbiAgICAgICAgOiB0aGlzLmV4YWN0QWN0aXZlQ2xhc3M7XG5cbiAgICB2YXIgY29tcGFyZVRhcmdldCA9IHJvdXRlLnJlZGlyZWN0ZWRGcm9tXG4gICAgICA/IGNyZWF0ZVJvdXRlKG51bGwsIG5vcm1hbGl6ZUxvY2F0aW9uKHJvdXRlLnJlZGlyZWN0ZWRGcm9tKSwgbnVsbCwgcm91dGVyKVxuICAgICAgOiByb3V0ZTtcblxuICAgIGNsYXNzZXNbZXhhY3RBY3RpdmVDbGFzc10gPSBpc1NhbWVSb3V0ZShjdXJyZW50LCBjb21wYXJlVGFyZ2V0KTtcbiAgICBjbGFzc2VzW2FjdGl2ZUNsYXNzXSA9IHRoaXMuZXhhY3RcbiAgICAgID8gY2xhc3Nlc1tleGFjdEFjdGl2ZUNsYXNzXVxuICAgICAgOiBpc0luY2x1ZGVkUm91dGUoY3VycmVudCwgY29tcGFyZVRhcmdldCk7XG5cbiAgICB2YXIgYXJpYUN1cnJlbnRWYWx1ZSA9IGNsYXNzZXNbZXhhY3RBY3RpdmVDbGFzc10gPyB0aGlzLmFyaWFDdXJyZW50VmFsdWUgOiBudWxsO1xuXG4gICAgdmFyIGhhbmRsZXIgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKGd1YXJkRXZlbnQoZSkpIHtcbiAgICAgICAgaWYgKHRoaXMkMS5yZXBsYWNlKSB7XG4gICAgICAgICAgcm91dGVyLnJlcGxhY2UobG9jYXRpb24sIG5vb3ApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJvdXRlci5wdXNoKGxvY2F0aW9uLCBub29wKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgb24gPSB7IGNsaWNrOiBndWFyZEV2ZW50IH07XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5ldmVudCkpIHtcbiAgICAgIHRoaXMuZXZlbnQuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgICAgICBvbltlXSA9IGhhbmRsZXI7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgb25bdGhpcy5ldmVudF0gPSBoYW5kbGVyO1xuICAgIH1cblxuICAgIHZhciBkYXRhID0geyBjbGFzczogY2xhc3NlcyB9O1xuXG4gICAgdmFyIHNjb3BlZFNsb3QgPVxuICAgICAgIXRoaXMuJHNjb3BlZFNsb3RzLiRoYXNOb3JtYWwgJiZcbiAgICAgIHRoaXMuJHNjb3BlZFNsb3RzLmRlZmF1bHQgJiZcbiAgICAgIHRoaXMuJHNjb3BlZFNsb3RzLmRlZmF1bHQoe1xuICAgICAgICBocmVmOiBocmVmLFxuICAgICAgICByb3V0ZTogcm91dGUsXG4gICAgICAgIG5hdmlnYXRlOiBoYW5kbGVyLFxuICAgICAgICBpc0FjdGl2ZTogY2xhc3Nlc1thY3RpdmVDbGFzc10sXG4gICAgICAgIGlzRXhhY3RBY3RpdmU6IGNsYXNzZXNbZXhhY3RBY3RpdmVDbGFzc11cbiAgICAgIH0pO1xuXG4gICAgaWYgKHNjb3BlZFNsb3QpIHtcbiAgICAgIGlmIChzY29wZWRTbG90Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gc2NvcGVkU2xvdFswXVxuICAgICAgfSBlbHNlIGlmIChzY29wZWRTbG90Lmxlbmd0aCA+IDEgfHwgIXNjb3BlZFNsb3QubGVuZ3RoKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgd2FybihcbiAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgKFwiUm91dGVyTGluayB3aXRoIHRvPVxcXCJcIiArICh0aGlzLnRvKSArIFwiXFxcIiBpcyB0cnlpbmcgdG8gdXNlIGEgc2NvcGVkIHNsb3QgYnV0IGl0IGRpZG4ndCBwcm92aWRlIGV4YWN0bHkgb25lIGNoaWxkLiBXcmFwcGluZyB0aGUgY29udGVudCB3aXRoIGEgc3BhbiBlbGVtZW50LlwiKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNjb3BlZFNsb3QubGVuZ3RoID09PSAwID8gaCgpIDogaCgnc3BhbicsIHt9LCBzY29wZWRTbG90KVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnRhZyA9PT0gJ2EnKSB7XG4gICAgICBkYXRhLm9uID0gb247XG4gICAgICBkYXRhLmF0dHJzID0geyBocmVmOiBocmVmLCAnYXJpYS1jdXJyZW50JzogYXJpYUN1cnJlbnRWYWx1ZSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBmaW5kIHRoZSBmaXJzdCA8YT4gY2hpbGQgYW5kIGFwcGx5IGxpc3RlbmVyIGFuZCBocmVmXG4gICAgICB2YXIgYSA9IGZpbmRBbmNob3IodGhpcy4kc2xvdHMuZGVmYXVsdCk7XG4gICAgICBpZiAoYSkge1xuICAgICAgICAvLyBpbiBjYXNlIHRoZSA8YT4gaXMgYSBzdGF0aWMgbm9kZVxuICAgICAgICBhLmlzU3RhdGljID0gZmFsc2U7XG4gICAgICAgIHZhciBhRGF0YSA9IChhLmRhdGEgPSBleHRlbmQoe30sIGEuZGF0YSkpO1xuICAgICAgICBhRGF0YS5vbiA9IGFEYXRhLm9uIHx8IHt9O1xuICAgICAgICAvLyB0cmFuc2Zvcm0gZXhpc3RpbmcgZXZlbnRzIGluIGJvdGggb2JqZWN0cyBpbnRvIGFycmF5cyBzbyB3ZSBjYW4gcHVzaCBsYXRlclxuICAgICAgICBmb3IgKHZhciBldmVudCBpbiBhRGF0YS5vbikge1xuICAgICAgICAgIHZhciBoYW5kbGVyJDEgPSBhRGF0YS5vbltldmVudF07XG4gICAgICAgICAgaWYgKGV2ZW50IGluIG9uKSB7XG4gICAgICAgICAgICBhRGF0YS5vbltldmVudF0gPSBBcnJheS5pc0FycmF5KGhhbmRsZXIkMSkgPyBoYW5kbGVyJDEgOiBbaGFuZGxlciQxXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gYXBwZW5kIG5ldyBsaXN0ZW5lcnMgZm9yIHJvdXRlci1saW5rXG4gICAgICAgIGZvciAodmFyIGV2ZW50JDEgaW4gb24pIHtcbiAgICAgICAgICBpZiAoZXZlbnQkMSBpbiBhRGF0YS5vbikge1xuICAgICAgICAgICAgLy8gb25bZXZlbnRdIGlzIGFsd2F5cyBhIGZ1bmN0aW9uXG4gICAgICAgICAgICBhRGF0YS5vbltldmVudCQxXS5wdXNoKG9uW2V2ZW50JDFdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYURhdGEub25bZXZlbnQkMV0gPSBoYW5kbGVyO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBhQXR0cnMgPSAoYS5kYXRhLmF0dHJzID0gZXh0ZW5kKHt9LCBhLmRhdGEuYXR0cnMpKTtcbiAgICAgICAgYUF0dHJzLmhyZWYgPSBocmVmO1xuICAgICAgICBhQXR0cnNbJ2FyaWEtY3VycmVudCddID0gYXJpYUN1cnJlbnRWYWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGRvZXNuJ3QgaGF2ZSA8YT4gY2hpbGQsIGFwcGx5IGxpc3RlbmVyIHRvIHNlbGZcbiAgICAgICAgZGF0YS5vbiA9IG9uO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBoKHRoaXMudGFnLCBkYXRhLCB0aGlzLiRzbG90cy5kZWZhdWx0KVxuICB9XG59O1xuXG5mdW5jdGlvbiBndWFyZEV2ZW50IChlKSB7XG4gIC8vIGRvbid0IHJlZGlyZWN0IHdpdGggY29udHJvbCBrZXlzXG4gIGlmIChlLm1ldGFLZXkgfHwgZS5hbHRLZXkgfHwgZS5jdHJsS2V5IHx8IGUuc2hpZnRLZXkpIHsgcmV0dXJuIH1cbiAgLy8gZG9uJ3QgcmVkaXJlY3Qgd2hlbiBwcmV2ZW50RGVmYXVsdCBjYWxsZWRcbiAgaWYgKGUuZGVmYXVsdFByZXZlbnRlZCkgeyByZXR1cm4gfVxuICAvLyBkb24ndCByZWRpcmVjdCBvbiByaWdodCBjbGlja1xuICBpZiAoZS5idXR0b24gIT09IHVuZGVmaW5lZCAmJiBlLmJ1dHRvbiAhPT0gMCkgeyByZXR1cm4gfVxuICAvLyBkb24ndCByZWRpcmVjdCBpZiBgdGFyZ2V0PVwiX2JsYW5rXCJgXG4gIGlmIChlLmN1cnJlbnRUYXJnZXQgJiYgZS5jdXJyZW50VGFyZ2V0LmdldEF0dHJpYnV0ZSkge1xuICAgIHZhciB0YXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQuZ2V0QXR0cmlidXRlKCd0YXJnZXQnKTtcbiAgICBpZiAoL1xcYl9ibGFua1xcYi9pLnRlc3QodGFyZ2V0KSkgeyByZXR1cm4gfVxuICB9XG4gIC8vIHRoaXMgbWF5IGJlIGEgV2VleCBldmVudCB3aGljaCBkb2Vzbid0IGhhdmUgdGhpcyBtZXRob2RcbiAgaWYgKGUucHJldmVudERlZmF1bHQpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gZmluZEFuY2hvciAoY2hpbGRyZW4pIHtcbiAgaWYgKGNoaWxkcmVuKSB7XG4gICAgdmFyIGNoaWxkO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgICBpZiAoY2hpbGQudGFnID09PSAnYScpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkXG4gICAgICB9XG4gICAgICBpZiAoY2hpbGQuY2hpbGRyZW4gJiYgKGNoaWxkID0gZmluZEFuY2hvcihjaGlsZC5jaGlsZHJlbikpKSB7XG4gICAgICAgIHJldHVybiBjaGlsZFxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG52YXIgX1Z1ZTtcblxuZnVuY3Rpb24gaW5zdGFsbCAoVnVlKSB7XG4gIGlmIChpbnN0YWxsLmluc3RhbGxlZCAmJiBfVnVlID09PSBWdWUpIHsgcmV0dXJuIH1cbiAgaW5zdGFsbC5pbnN0YWxsZWQgPSB0cnVlO1xuXG4gIF9WdWUgPSBWdWU7XG5cbiAgdmFyIGlzRGVmID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHYgIT09IHVuZGVmaW5lZDsgfTtcblxuICB2YXIgcmVnaXN0ZXJJbnN0YW5jZSA9IGZ1bmN0aW9uICh2bSwgY2FsbFZhbCkge1xuICAgIHZhciBpID0gdm0uJG9wdGlvbnMuX3BhcmVudFZub2RlO1xuICAgIGlmIChpc0RlZihpKSAmJiBpc0RlZihpID0gaS5kYXRhKSAmJiBpc0RlZihpID0gaS5yZWdpc3RlclJvdXRlSW5zdGFuY2UpKSB7XG4gICAgICBpKHZtLCBjYWxsVmFsKTtcbiAgICB9XG4gIH07XG5cbiAgVnVlLm1peGluKHtcbiAgICBiZWZvcmVDcmVhdGU6IGZ1bmN0aW9uIGJlZm9yZUNyZWF0ZSAoKSB7XG4gICAgICBpZiAoaXNEZWYodGhpcy4kb3B0aW9ucy5yb3V0ZXIpKSB7XG4gICAgICAgIHRoaXMuX3JvdXRlclJvb3QgPSB0aGlzO1xuICAgICAgICB0aGlzLl9yb3V0ZXIgPSB0aGlzLiRvcHRpb25zLnJvdXRlcjtcbiAgICAgICAgdGhpcy5fcm91dGVyLmluaXQodGhpcyk7XG4gICAgICAgIFZ1ZS51dGlsLmRlZmluZVJlYWN0aXZlKHRoaXMsICdfcm91dGUnLCB0aGlzLl9yb3V0ZXIuaGlzdG9yeS5jdXJyZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3JvdXRlclJvb3QgPSAodGhpcy4kcGFyZW50ICYmIHRoaXMuJHBhcmVudC5fcm91dGVyUm9vdCkgfHwgdGhpcztcbiAgICAgIH1cbiAgICAgIHJlZ2lzdGVySW5zdGFuY2UodGhpcywgdGhpcyk7XG4gICAgfSxcbiAgICBkZXN0cm95ZWQ6IGZ1bmN0aW9uIGRlc3Ryb3llZCAoKSB7XG4gICAgICByZWdpc3Rlckluc3RhbmNlKHRoaXMpO1xuICAgIH1cbiAgfSk7XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZS5wcm90b3R5cGUsICckcm91dGVyJywge1xuICAgIGdldDogZnVuY3Rpb24gZ2V0ICgpIHsgcmV0dXJuIHRoaXMuX3JvdXRlclJvb3QuX3JvdXRlciB9XG4gIH0pO1xuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUucHJvdG90eXBlLCAnJHJvdXRlJywge1xuICAgIGdldDogZnVuY3Rpb24gZ2V0ICgpIHsgcmV0dXJuIHRoaXMuX3JvdXRlclJvb3QuX3JvdXRlIH1cbiAgfSk7XG5cbiAgVnVlLmNvbXBvbmVudCgnUm91dGVyVmlldycsIFZpZXcpO1xuICBWdWUuY29tcG9uZW50KCdSb3V0ZXJMaW5rJywgTGluayk7XG5cbiAgdmFyIHN0cmF0cyA9IFZ1ZS5jb25maWcub3B0aW9uTWVyZ2VTdHJhdGVnaWVzO1xuICAvLyB1c2UgdGhlIHNhbWUgaG9vayBtZXJnaW5nIHN0cmF0ZWd5IGZvciByb3V0ZSBob29rc1xuICBzdHJhdHMuYmVmb3JlUm91dGVFbnRlciA9IHN0cmF0cy5iZWZvcmVSb3V0ZUxlYXZlID0gc3RyYXRzLmJlZm9yZVJvdXRlVXBkYXRlID0gc3RyYXRzLmNyZWF0ZWQ7XG59XG5cbi8qICAqL1xuXG52YXIgaW5Ccm93c2VyID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCc7XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBjcmVhdGVSb3V0ZU1hcCAoXG4gIHJvdXRlcyxcbiAgb2xkUGF0aExpc3QsXG4gIG9sZFBhdGhNYXAsXG4gIG9sZE5hbWVNYXBcbikge1xuICAvLyB0aGUgcGF0aCBsaXN0IGlzIHVzZWQgdG8gY29udHJvbCBwYXRoIG1hdGNoaW5nIHByaW9yaXR5XG4gIHZhciBwYXRoTGlzdCA9IG9sZFBhdGhMaXN0IHx8IFtdO1xuICAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbiAgdmFyIHBhdGhNYXAgPSBvbGRQYXRoTWFwIHx8IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIC8vICRmbG93LWRpc2FibGUtbGluZVxuICB2YXIgbmFtZU1hcCA9IG9sZE5hbWVNYXAgfHwgT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICByb3V0ZXMuZm9yRWFjaChmdW5jdGlvbiAocm91dGUpIHtcbiAgICBhZGRSb3V0ZVJlY29yZChwYXRoTGlzdCwgcGF0aE1hcCwgbmFtZU1hcCwgcm91dGUpO1xuICB9KTtcblxuICAvLyBlbnN1cmUgd2lsZGNhcmQgcm91dGVzIGFyZSBhbHdheXMgYXQgdGhlIGVuZFxuICBmb3IgKHZhciBpID0gMCwgbCA9IHBhdGhMaXN0Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGlmIChwYXRoTGlzdFtpXSA9PT0gJyonKSB7XG4gICAgICBwYXRoTGlzdC5wdXNoKHBhdGhMaXN0LnNwbGljZShpLCAxKVswXSk7XG4gICAgICBsLS07XG4gICAgICBpLS07XG4gICAgfVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgLy8gd2FybiBpZiByb3V0ZXMgZG8gbm90IGluY2x1ZGUgbGVhZGluZyBzbGFzaGVzXG4gICAgdmFyIGZvdW5kID0gcGF0aExpc3RcbiAgICAvLyBjaGVjayBmb3IgbWlzc2luZyBsZWFkaW5nIHNsYXNoXG4gICAgICAuZmlsdGVyKGZ1bmN0aW9uIChwYXRoKSB7IHJldHVybiBwYXRoICYmIHBhdGguY2hhckF0KDApICE9PSAnKicgJiYgcGF0aC5jaGFyQXQoMCkgIT09ICcvJzsgfSk7XG5cbiAgICBpZiAoZm91bmQubGVuZ3RoID4gMCkge1xuICAgICAgdmFyIHBhdGhOYW1lcyA9IGZvdW5kLm1hcChmdW5jdGlvbiAocGF0aCkgeyByZXR1cm4gKFwiLSBcIiArIHBhdGgpOyB9KS5qb2luKCdcXG4nKTtcbiAgICAgIHdhcm4oZmFsc2UsIChcIk5vbi1uZXN0ZWQgcm91dGVzIG11c3QgaW5jbHVkZSBhIGxlYWRpbmcgc2xhc2ggY2hhcmFjdGVyLiBGaXggdGhlIGZvbGxvd2luZyByb3V0ZXM6IFxcblwiICsgcGF0aE5hbWVzKSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwYXRoTGlzdDogcGF0aExpc3QsXG4gICAgcGF0aE1hcDogcGF0aE1hcCxcbiAgICBuYW1lTWFwOiBuYW1lTWFwXG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkUm91dGVSZWNvcmQgKFxuICBwYXRoTGlzdCxcbiAgcGF0aE1hcCxcbiAgbmFtZU1hcCxcbiAgcm91dGUsXG4gIHBhcmVudCxcbiAgbWF0Y2hBc1xuKSB7XG4gIHZhciBwYXRoID0gcm91dGUucGF0aDtcbiAgdmFyIG5hbWUgPSByb3V0ZS5uYW1lO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGFzc2VydChwYXRoICE9IG51bGwsIFwiXFxcInBhdGhcXFwiIGlzIHJlcXVpcmVkIGluIGEgcm91dGUgY29uZmlndXJhdGlvbi5cIik7XG4gICAgYXNzZXJ0KFxuICAgICAgdHlwZW9mIHJvdXRlLmNvbXBvbmVudCAhPT0gJ3N0cmluZycsXG4gICAgICBcInJvdXRlIGNvbmZpZyBcXFwiY29tcG9uZW50XFxcIiBmb3IgcGF0aDogXCIgKyAoU3RyaW5nKFxuICAgICAgICBwYXRoIHx8IG5hbWVcbiAgICAgICkpICsgXCIgY2Fubm90IGJlIGEgXCIgKyBcInN0cmluZyBpZC4gVXNlIGFuIGFjdHVhbCBjb21wb25lbnQgaW5zdGVhZC5cIlxuICAgICk7XG4gIH1cblxuICB2YXIgcGF0aFRvUmVnZXhwT3B0aW9ucyA9XG4gICAgcm91dGUucGF0aFRvUmVnZXhwT3B0aW9ucyB8fCB7fTtcbiAgdmFyIG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplUGF0aChwYXRoLCBwYXJlbnQsIHBhdGhUb1JlZ2V4cE9wdGlvbnMuc3RyaWN0KTtcblxuICBpZiAodHlwZW9mIHJvdXRlLmNhc2VTZW5zaXRpdmUgPT09ICdib29sZWFuJykge1xuICAgIHBhdGhUb1JlZ2V4cE9wdGlvbnMuc2Vuc2l0aXZlID0gcm91dGUuY2FzZVNlbnNpdGl2ZTtcbiAgfVxuXG4gIHZhciByZWNvcmQgPSB7XG4gICAgcGF0aDogbm9ybWFsaXplZFBhdGgsXG4gICAgcmVnZXg6IGNvbXBpbGVSb3V0ZVJlZ2V4KG5vcm1hbGl6ZWRQYXRoLCBwYXRoVG9SZWdleHBPcHRpb25zKSxcbiAgICBjb21wb25lbnRzOiByb3V0ZS5jb21wb25lbnRzIHx8IHsgZGVmYXVsdDogcm91dGUuY29tcG9uZW50IH0sXG4gICAgaW5zdGFuY2VzOiB7fSxcbiAgICBuYW1lOiBuYW1lLFxuICAgIHBhcmVudDogcGFyZW50LFxuICAgIG1hdGNoQXM6IG1hdGNoQXMsXG4gICAgcmVkaXJlY3Q6IHJvdXRlLnJlZGlyZWN0LFxuICAgIGJlZm9yZUVudGVyOiByb3V0ZS5iZWZvcmVFbnRlcixcbiAgICBtZXRhOiByb3V0ZS5tZXRhIHx8IHt9LFxuICAgIHByb3BzOlxuICAgICAgcm91dGUucHJvcHMgPT0gbnVsbFxuICAgICAgICA/IHt9XG4gICAgICAgIDogcm91dGUuY29tcG9uZW50c1xuICAgICAgICAgID8gcm91dGUucHJvcHNcbiAgICAgICAgICA6IHsgZGVmYXVsdDogcm91dGUucHJvcHMgfVxuICB9O1xuXG4gIGlmIChyb3V0ZS5jaGlsZHJlbikge1xuICAgIC8vIFdhcm4gaWYgcm91dGUgaXMgbmFtZWQsIGRvZXMgbm90IHJlZGlyZWN0IGFuZCBoYXMgYSBkZWZhdWx0IGNoaWxkIHJvdXRlLlxuICAgIC8vIElmIHVzZXJzIG5hdmlnYXRlIHRvIHRoaXMgcm91dGUgYnkgbmFtZSwgdGhlIGRlZmF1bHQgY2hpbGQgd2lsbFxuICAgIC8vIG5vdCBiZSByZW5kZXJlZCAoR0ggSXNzdWUgIzYyOSlcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKFxuICAgICAgICByb3V0ZS5uYW1lICYmXG4gICAgICAgICFyb3V0ZS5yZWRpcmVjdCAmJlxuICAgICAgICByb3V0ZS5jaGlsZHJlbi5zb21lKGZ1bmN0aW9uIChjaGlsZCkgeyByZXR1cm4gL15cXC8/JC8udGVzdChjaGlsZC5wYXRoKTsgfSlcbiAgICAgICkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIFwiTmFtZWQgUm91dGUgJ1wiICsgKHJvdXRlLm5hbWUpICsgXCInIGhhcyBhIGRlZmF1bHQgY2hpbGQgcm91dGUuIFwiICtcbiAgICAgICAgICAgIFwiV2hlbiBuYXZpZ2F0aW5nIHRvIHRoaXMgbmFtZWQgcm91dGUgKDp0bz1cXFwie25hbWU6ICdcIiArIChyb3V0ZS5uYW1lKSArIFwiJ1xcXCIpLCBcIiArXG4gICAgICAgICAgICBcInRoZSBkZWZhdWx0IGNoaWxkIHJvdXRlIHdpbGwgbm90IGJlIHJlbmRlcmVkLiBSZW1vdmUgdGhlIG5hbWUgZnJvbSBcIiArXG4gICAgICAgICAgICBcInRoaXMgcm91dGUgYW5kIHVzZSB0aGUgbmFtZSBvZiB0aGUgZGVmYXVsdCBjaGlsZCByb3V0ZSBmb3IgbmFtZWQgXCIgK1xuICAgICAgICAgICAgXCJsaW5rcyBpbnN0ZWFkLlwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJvdXRlLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICB2YXIgY2hpbGRNYXRjaEFzID0gbWF0Y2hBc1xuICAgICAgICA/IGNsZWFuUGF0aCgobWF0Y2hBcyArIFwiL1wiICsgKGNoaWxkLnBhdGgpKSlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICBhZGRSb3V0ZVJlY29yZChwYXRoTGlzdCwgcGF0aE1hcCwgbmFtZU1hcCwgY2hpbGQsIHJlY29yZCwgY2hpbGRNYXRjaEFzKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmICghcGF0aE1hcFtyZWNvcmQucGF0aF0pIHtcbiAgICBwYXRoTGlzdC5wdXNoKHJlY29yZC5wYXRoKTtcbiAgICBwYXRoTWFwW3JlY29yZC5wYXRoXSA9IHJlY29yZDtcbiAgfVxuXG4gIGlmIChyb3V0ZS5hbGlhcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIGFsaWFzZXMgPSBBcnJheS5pc0FycmF5KHJvdXRlLmFsaWFzKSA/IHJvdXRlLmFsaWFzIDogW3JvdXRlLmFsaWFzXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFsaWFzZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciBhbGlhcyA9IGFsaWFzZXNbaV07XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBhbGlhcyA9PT0gcGF0aCkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIChcIkZvdW5kIGFuIGFsaWFzIHdpdGggdGhlIHNhbWUgdmFsdWUgYXMgdGhlIHBhdGg6IFxcXCJcIiArIHBhdGggKyBcIlxcXCIuIFlvdSBoYXZlIHRvIHJlbW92ZSB0aGF0IGFsaWFzLiBJdCB3aWxsIGJlIGlnbm9yZWQgaW4gZGV2ZWxvcG1lbnQuXCIpXG4gICAgICAgICk7XG4gICAgICAgIC8vIHNraXAgaW4gZGV2IHRvIG1ha2UgaXQgd29ya1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICB2YXIgYWxpYXNSb3V0ZSA9IHtcbiAgICAgICAgcGF0aDogYWxpYXMsXG4gICAgICAgIGNoaWxkcmVuOiByb3V0ZS5jaGlsZHJlblxuICAgICAgfTtcbiAgICAgIGFkZFJvdXRlUmVjb3JkKFxuICAgICAgICBwYXRoTGlzdCxcbiAgICAgICAgcGF0aE1hcCxcbiAgICAgICAgbmFtZU1hcCxcbiAgICAgICAgYWxpYXNSb3V0ZSxcbiAgICAgICAgcGFyZW50LFxuICAgICAgICByZWNvcmQucGF0aCB8fCAnLycgLy8gbWF0Y2hBc1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpZiAobmFtZSkge1xuICAgIGlmICghbmFtZU1hcFtuYW1lXSkge1xuICAgICAgbmFtZU1hcFtuYW1lXSA9IHJlY29yZDtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIW1hdGNoQXMpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBcIkR1cGxpY2F0ZSBuYW1lZCByb3V0ZXMgZGVmaW5pdGlvbjogXCIgK1xuICAgICAgICAgIFwieyBuYW1lOiBcXFwiXCIgKyBuYW1lICsgXCJcXFwiLCBwYXRoOiBcXFwiXCIgKyAocmVjb3JkLnBhdGgpICsgXCJcXFwiIH1cIlxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY29tcGlsZVJvdXRlUmVnZXggKFxuICBwYXRoLFxuICBwYXRoVG9SZWdleHBPcHRpb25zXG4pIHtcbiAgdmFyIHJlZ2V4ID0gcGF0aFRvUmVnZXhwXzEocGF0aCwgW10sIHBhdGhUb1JlZ2V4cE9wdGlvbnMpO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhciBrZXlzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICByZWdleC5rZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgd2FybihcbiAgICAgICAgIWtleXNba2V5Lm5hbWVdLFxuICAgICAgICAoXCJEdXBsaWNhdGUgcGFyYW0ga2V5cyBpbiByb3V0ZSB3aXRoIHBhdGg6IFxcXCJcIiArIHBhdGggKyBcIlxcXCJcIilcbiAgICAgICk7XG4gICAgICBrZXlzW2tleS5uYW1lXSA9IHRydWU7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHJlZ2V4XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVBhdGggKFxuICBwYXRoLFxuICBwYXJlbnQsXG4gIHN0cmljdFxuKSB7XG4gIGlmICghc3RyaWN0KSB7IHBhdGggPSBwYXRoLnJlcGxhY2UoL1xcLyQvLCAnJyk7IH1cbiAgaWYgKHBhdGhbMF0gPT09ICcvJykgeyByZXR1cm4gcGF0aCB9XG4gIGlmIChwYXJlbnQgPT0gbnVsbCkgeyByZXR1cm4gcGF0aCB9XG4gIHJldHVybiBjbGVhblBhdGgoKChwYXJlbnQucGF0aCkgKyBcIi9cIiArIHBhdGgpKVxufVxuXG4vKiAgKi9cblxuXG5cbmZ1bmN0aW9uIGNyZWF0ZU1hdGNoZXIgKFxuICByb3V0ZXMsXG4gIHJvdXRlclxuKSB7XG4gIHZhciByZWYgPSBjcmVhdGVSb3V0ZU1hcChyb3V0ZXMpO1xuICB2YXIgcGF0aExpc3QgPSByZWYucGF0aExpc3Q7XG4gIHZhciBwYXRoTWFwID0gcmVmLnBhdGhNYXA7XG4gIHZhciBuYW1lTWFwID0gcmVmLm5hbWVNYXA7XG5cbiAgZnVuY3Rpb24gYWRkUm91dGVzIChyb3V0ZXMpIHtcbiAgICBjcmVhdGVSb3V0ZU1hcChyb3V0ZXMsIHBhdGhMaXN0LCBwYXRoTWFwLCBuYW1lTWFwKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG1hdGNoIChcbiAgICByYXcsXG4gICAgY3VycmVudFJvdXRlLFxuICAgIHJlZGlyZWN0ZWRGcm9tXG4gICkge1xuICAgIHZhciBsb2NhdGlvbiA9IG5vcm1hbGl6ZUxvY2F0aW9uKHJhdywgY3VycmVudFJvdXRlLCBmYWxzZSwgcm91dGVyKTtcbiAgICB2YXIgbmFtZSA9IGxvY2F0aW9uLm5hbWU7XG5cbiAgICBpZiAobmFtZSkge1xuICAgICAgdmFyIHJlY29yZCA9IG5hbWVNYXBbbmFtZV07XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB3YXJuKHJlY29yZCwgKFwiUm91dGUgd2l0aCBuYW1lICdcIiArIG5hbWUgKyBcIicgZG9lcyBub3QgZXhpc3RcIikpO1xuICAgICAgfVxuICAgICAgaWYgKCFyZWNvcmQpIHsgcmV0dXJuIF9jcmVhdGVSb3V0ZShudWxsLCBsb2NhdGlvbikgfVxuICAgICAgdmFyIHBhcmFtTmFtZXMgPSByZWNvcmQucmVnZXgua2V5c1xuICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuICFrZXkub3B0aW9uYWw7IH0pXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4ga2V5Lm5hbWU7IH0pO1xuXG4gICAgICBpZiAodHlwZW9mIGxvY2F0aW9uLnBhcmFtcyAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgbG9jYXRpb24ucGFyYW1zID0ge307XG4gICAgICB9XG5cbiAgICAgIGlmIChjdXJyZW50Um91dGUgJiYgdHlwZW9mIGN1cnJlbnRSb3V0ZS5wYXJhbXMgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBjdXJyZW50Um91dGUucGFyYW1zKSB7XG4gICAgICAgICAgaWYgKCEoa2V5IGluIGxvY2F0aW9uLnBhcmFtcykgJiYgcGFyYW1OYW1lcy5pbmRleE9mKGtleSkgPiAtMSkge1xuICAgICAgICAgICAgbG9jYXRpb24ucGFyYW1zW2tleV0gPSBjdXJyZW50Um91dGUucGFyYW1zW2tleV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxvY2F0aW9uLnBhdGggPSBmaWxsUGFyYW1zKHJlY29yZC5wYXRoLCBsb2NhdGlvbi5wYXJhbXMsIChcIm5hbWVkIHJvdXRlIFxcXCJcIiArIG5hbWUgKyBcIlxcXCJcIikpO1xuICAgICAgcmV0dXJuIF9jcmVhdGVSb3V0ZShyZWNvcmQsIGxvY2F0aW9uLCByZWRpcmVjdGVkRnJvbSlcbiAgICB9IGVsc2UgaWYgKGxvY2F0aW9uLnBhdGgpIHtcbiAgICAgIGxvY2F0aW9uLnBhcmFtcyA9IHt9O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRoTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcGF0aCA9IHBhdGhMaXN0W2ldO1xuICAgICAgICB2YXIgcmVjb3JkJDEgPSBwYXRoTWFwW3BhdGhdO1xuICAgICAgICBpZiAobWF0Y2hSb3V0ZShyZWNvcmQkMS5yZWdleCwgbG9jYXRpb24ucGF0aCwgbG9jYXRpb24ucGFyYW1zKSkge1xuICAgICAgICAgIHJldHVybiBfY3JlYXRlUm91dGUocmVjb3JkJDEsIGxvY2F0aW9uLCByZWRpcmVjdGVkRnJvbSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBubyBtYXRjaFxuICAgIHJldHVybiBfY3JlYXRlUm91dGUobnVsbCwgbG9jYXRpb24pXG4gIH1cblxuICBmdW5jdGlvbiByZWRpcmVjdCAoXG4gICAgcmVjb3JkLFxuICAgIGxvY2F0aW9uXG4gICkge1xuICAgIHZhciBvcmlnaW5hbFJlZGlyZWN0ID0gcmVjb3JkLnJlZGlyZWN0O1xuICAgIHZhciByZWRpcmVjdCA9IHR5cGVvZiBvcmlnaW5hbFJlZGlyZWN0ID09PSAnZnVuY3Rpb24nXG4gICAgICA/IG9yaWdpbmFsUmVkaXJlY3QoY3JlYXRlUm91dGUocmVjb3JkLCBsb2NhdGlvbiwgbnVsbCwgcm91dGVyKSlcbiAgICAgIDogb3JpZ2luYWxSZWRpcmVjdDtcblxuICAgIGlmICh0eXBlb2YgcmVkaXJlY3QgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZWRpcmVjdCA9IHsgcGF0aDogcmVkaXJlY3QgfTtcbiAgICB9XG5cbiAgICBpZiAoIXJlZGlyZWN0IHx8IHR5cGVvZiByZWRpcmVjdCAhPT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgZmFsc2UsIChcImludmFsaWQgcmVkaXJlY3Qgb3B0aW9uOiBcIiArIChKU09OLnN0cmluZ2lmeShyZWRpcmVjdCkpKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIF9jcmVhdGVSb3V0ZShudWxsLCBsb2NhdGlvbilcbiAgICB9XG5cbiAgICB2YXIgcmUgPSByZWRpcmVjdDtcbiAgICB2YXIgbmFtZSA9IHJlLm5hbWU7XG4gICAgdmFyIHBhdGggPSByZS5wYXRoO1xuICAgIHZhciBxdWVyeSA9IGxvY2F0aW9uLnF1ZXJ5O1xuICAgIHZhciBoYXNoID0gbG9jYXRpb24uaGFzaDtcbiAgICB2YXIgcGFyYW1zID0gbG9jYXRpb24ucGFyYW1zO1xuICAgIHF1ZXJ5ID0gcmUuaGFzT3duUHJvcGVydHkoJ3F1ZXJ5JykgPyByZS5xdWVyeSA6IHF1ZXJ5O1xuICAgIGhhc2ggPSByZS5oYXNPd25Qcm9wZXJ0eSgnaGFzaCcpID8gcmUuaGFzaCA6IGhhc2g7XG4gICAgcGFyYW1zID0gcmUuaGFzT3duUHJvcGVydHkoJ3BhcmFtcycpID8gcmUucGFyYW1zIDogcGFyYW1zO1xuXG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIC8vIHJlc29sdmVkIG5hbWVkIGRpcmVjdFxuICAgICAgdmFyIHRhcmdldFJlY29yZCA9IG5hbWVNYXBbbmFtZV07XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBhc3NlcnQodGFyZ2V0UmVjb3JkLCAoXCJyZWRpcmVjdCBmYWlsZWQ6IG5hbWVkIHJvdXRlIFxcXCJcIiArIG5hbWUgKyBcIlxcXCIgbm90IGZvdW5kLlwiKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbWF0Y2goe1xuICAgICAgICBfbm9ybWFsaXplZDogdHJ1ZSxcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgcXVlcnk6IHF1ZXJ5LFxuICAgICAgICBoYXNoOiBoYXNoLFxuICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgfSwgdW5kZWZpbmVkLCBsb2NhdGlvbilcbiAgICB9IGVsc2UgaWYgKHBhdGgpIHtcbiAgICAgIC8vIDEuIHJlc29sdmUgcmVsYXRpdmUgcmVkaXJlY3RcbiAgICAgIHZhciByYXdQYXRoID0gcmVzb2x2ZVJlY29yZFBhdGgocGF0aCwgcmVjb3JkKTtcbiAgICAgIC8vIDIuIHJlc29sdmUgcGFyYW1zXG4gICAgICB2YXIgcmVzb2x2ZWRQYXRoID0gZmlsbFBhcmFtcyhyYXdQYXRoLCBwYXJhbXMsIChcInJlZGlyZWN0IHJvdXRlIHdpdGggcGF0aCBcXFwiXCIgKyByYXdQYXRoICsgXCJcXFwiXCIpKTtcbiAgICAgIC8vIDMuIHJlbWF0Y2ggd2l0aCBleGlzdGluZyBxdWVyeSBhbmQgaGFzaFxuICAgICAgcmV0dXJuIG1hdGNoKHtcbiAgICAgICAgX25vcm1hbGl6ZWQ6IHRydWUsXG4gICAgICAgIHBhdGg6IHJlc29sdmVkUGF0aCxcbiAgICAgICAgcXVlcnk6IHF1ZXJ5LFxuICAgICAgICBoYXNoOiBoYXNoXG4gICAgICB9LCB1bmRlZmluZWQsIGxvY2F0aW9uKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB3YXJuKGZhbHNlLCAoXCJpbnZhbGlkIHJlZGlyZWN0IG9wdGlvbjogXCIgKyAoSlNPTi5zdHJpbmdpZnkocmVkaXJlY3QpKSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIF9jcmVhdGVSb3V0ZShudWxsLCBsb2NhdGlvbilcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBhbGlhcyAoXG4gICAgcmVjb3JkLFxuICAgIGxvY2F0aW9uLFxuICAgIG1hdGNoQXNcbiAgKSB7XG4gICAgdmFyIGFsaWFzZWRQYXRoID0gZmlsbFBhcmFtcyhtYXRjaEFzLCBsb2NhdGlvbi5wYXJhbXMsIChcImFsaWFzZWQgcm91dGUgd2l0aCBwYXRoIFxcXCJcIiArIG1hdGNoQXMgKyBcIlxcXCJcIikpO1xuICAgIHZhciBhbGlhc2VkTWF0Y2ggPSBtYXRjaCh7XG4gICAgICBfbm9ybWFsaXplZDogdHJ1ZSxcbiAgICAgIHBhdGg6IGFsaWFzZWRQYXRoXG4gICAgfSk7XG4gICAgaWYgKGFsaWFzZWRNYXRjaCkge1xuICAgICAgdmFyIG1hdGNoZWQgPSBhbGlhc2VkTWF0Y2gubWF0Y2hlZDtcbiAgICAgIHZhciBhbGlhc2VkUmVjb3JkID0gbWF0Y2hlZFttYXRjaGVkLmxlbmd0aCAtIDFdO1xuICAgICAgbG9jYXRpb24ucGFyYW1zID0gYWxpYXNlZE1hdGNoLnBhcmFtcztcbiAgICAgIHJldHVybiBfY3JlYXRlUm91dGUoYWxpYXNlZFJlY29yZCwgbG9jYXRpb24pXG4gICAgfVxuICAgIHJldHVybiBfY3JlYXRlUm91dGUobnVsbCwgbG9jYXRpb24pXG4gIH1cblxuICBmdW5jdGlvbiBfY3JlYXRlUm91dGUgKFxuICAgIHJlY29yZCxcbiAgICBsb2NhdGlvbixcbiAgICByZWRpcmVjdGVkRnJvbVxuICApIHtcbiAgICBpZiAocmVjb3JkICYmIHJlY29yZC5yZWRpcmVjdCkge1xuICAgICAgcmV0dXJuIHJlZGlyZWN0KHJlY29yZCwgcmVkaXJlY3RlZEZyb20gfHwgbG9jYXRpb24pXG4gICAgfVxuICAgIGlmIChyZWNvcmQgJiYgcmVjb3JkLm1hdGNoQXMpIHtcbiAgICAgIHJldHVybiBhbGlhcyhyZWNvcmQsIGxvY2F0aW9uLCByZWNvcmQubWF0Y2hBcylcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZVJvdXRlKHJlY29yZCwgbG9jYXRpb24sIHJlZGlyZWN0ZWRGcm9tLCByb3V0ZXIpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1hdGNoOiBtYXRjaCxcbiAgICBhZGRSb3V0ZXM6IGFkZFJvdXRlc1xuICB9XG59XG5cbmZ1bmN0aW9uIG1hdGNoUm91dGUgKFxuICByZWdleCxcbiAgcGF0aCxcbiAgcGFyYW1zXG4pIHtcbiAgdmFyIG0gPSBwYXRoLm1hdGNoKHJlZ2V4KTtcblxuICBpZiAoIW0pIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfSBlbHNlIGlmICghcGFyYW1zKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAxLCBsZW4gPSBtLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgdmFyIGtleSA9IHJlZ2V4LmtleXNbaSAtIDFdO1xuICAgIHZhciB2YWwgPSB0eXBlb2YgbVtpXSA9PT0gJ3N0cmluZycgPyBkZWNvZGVVUklDb21wb25lbnQobVtpXSkgOiBtW2ldO1xuICAgIGlmIChrZXkpIHtcbiAgICAgIC8vIEZpeCAjMTk5NDogdXNpbmcgKiB3aXRoIHByb3BzOiB0cnVlIGdlbmVyYXRlcyBhIHBhcmFtIG5hbWVkIDBcbiAgICAgIHBhcmFtc1trZXkubmFtZSB8fCAncGF0aE1hdGNoJ10gPSB2YWw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVJlY29yZFBhdGggKHBhdGgsIHJlY29yZCkge1xuICByZXR1cm4gcmVzb2x2ZVBhdGgocGF0aCwgcmVjb3JkLnBhcmVudCA/IHJlY29yZC5wYXJlbnQucGF0aCA6ICcvJywgdHJ1ZSlcbn1cblxuLyogICovXG5cbi8vIHVzZSBVc2VyIFRpbWluZyBhcGkgKGlmIHByZXNlbnQpIGZvciBtb3JlIGFjY3VyYXRlIGtleSBwcmVjaXNpb25cbnZhciBUaW1lID1cbiAgaW5Ccm93c2VyICYmIHdpbmRvdy5wZXJmb3JtYW5jZSAmJiB3aW5kb3cucGVyZm9ybWFuY2Uubm93XG4gICAgPyB3aW5kb3cucGVyZm9ybWFuY2VcbiAgICA6IERhdGU7XG5cbmZ1bmN0aW9uIGdlblN0YXRlS2V5ICgpIHtcbiAgcmV0dXJuIFRpbWUubm93KCkudG9GaXhlZCgzKVxufVxuXG52YXIgX2tleSA9IGdlblN0YXRlS2V5KCk7XG5cbmZ1bmN0aW9uIGdldFN0YXRlS2V5ICgpIHtcbiAgcmV0dXJuIF9rZXlcbn1cblxuZnVuY3Rpb24gc2V0U3RhdGVLZXkgKGtleSkge1xuICByZXR1cm4gKF9rZXkgPSBrZXkpXG59XG5cbi8qICAqL1xuXG52YXIgcG9zaXRpb25TdG9yZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbmZ1bmN0aW9uIHNldHVwU2Nyb2xsICgpIHtcbiAgLy8gUHJldmVudCBicm93c2VyIHNjcm9sbCBiZWhhdmlvciBvbiBIaXN0b3J5IHBvcHN0YXRlXG4gIGlmICgnc2Nyb2xsUmVzdG9yYXRpb24nIGluIHdpbmRvdy5oaXN0b3J5KSB7XG4gICAgd2luZG93Lmhpc3Rvcnkuc2Nyb2xsUmVzdG9yYXRpb24gPSAnbWFudWFsJztcbiAgfVxuICAvLyBGaXggZm9yICMxNTg1IGZvciBGaXJlZm94XG4gIC8vIEZpeCBmb3IgIzIxOTUgQWRkIG9wdGlvbmFsIHRoaXJkIGF0dHJpYnV0ZSB0byB3b3JrYXJvdW5kIGEgYnVnIGluIHNhZmFyaSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNjc4XG4gIC8vIEZpeCBmb3IgIzI3NzQgU3VwcG9ydCBmb3IgYXBwcyBsb2FkZWQgZnJvbSBXaW5kb3dzIGZpbGUgc2hhcmVzIG5vdCBtYXBwZWQgdG8gbmV0d29yayBkcml2ZXM6IHJlcGxhY2VkIGxvY2F0aW9uLm9yaWdpbiB3aXRoXG4gIC8vIHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdFxuICAvLyBsb2NhdGlvbi5ob3N0IGNvbnRhaW5zIHRoZSBwb3J0IGFuZCBsb2NhdGlvbi5ob3N0bmFtZSBkb2Vzbid0XG4gIHZhciBwcm90b2NvbEFuZFBhdGggPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XG4gIHZhciBhYnNvbHV0ZVBhdGggPSB3aW5kb3cubG9jYXRpb24uaHJlZi5yZXBsYWNlKHByb3RvY29sQW5kUGF0aCwgJycpO1xuICAvLyBwcmVzZXJ2ZSBleGlzdGluZyBoaXN0b3J5IHN0YXRlIGFzIGl0IGNvdWxkIGJlIG92ZXJyaWRlbiBieSB0aGUgdXNlclxuICB2YXIgc3RhdGVDb3B5ID0gZXh0ZW5kKHt9LCB3aW5kb3cuaGlzdG9yeS5zdGF0ZSk7XG4gIHN0YXRlQ29weS5rZXkgPSBnZXRTdGF0ZUtleSgpO1xuICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoc3RhdGVDb3B5LCAnJywgYWJzb2x1dGVQYXRoKTtcbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvcHN0YXRlJywgaGFuZGxlUG9wU3RhdGUpO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdwb3BzdGF0ZScsIGhhbmRsZVBvcFN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBoYW5kbGVTY3JvbGwgKFxuICByb3V0ZXIsXG4gIHRvLFxuICBmcm9tLFxuICBpc1BvcFxuKSB7XG4gIGlmICghcm91dGVyLmFwcCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGJlaGF2aW9yID0gcm91dGVyLm9wdGlvbnMuc2Nyb2xsQmVoYXZpb3I7XG4gIGlmICghYmVoYXZpb3IpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiZWhhdmlvciA9PT0gJ2Z1bmN0aW9uJywgXCJzY3JvbGxCZWhhdmlvciBtdXN0IGJlIGEgZnVuY3Rpb25cIik7XG4gIH1cblxuICAvLyB3YWl0IHVudGlsIHJlLXJlbmRlciBmaW5pc2hlcyBiZWZvcmUgc2Nyb2xsaW5nXG4gIHJvdXRlci5hcHAuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcG9zaXRpb24gPSBnZXRTY3JvbGxQb3NpdGlvbigpO1xuICAgIHZhciBzaG91bGRTY3JvbGwgPSBiZWhhdmlvci5jYWxsKFxuICAgICAgcm91dGVyLFxuICAgICAgdG8sXG4gICAgICBmcm9tLFxuICAgICAgaXNQb3AgPyBwb3NpdGlvbiA6IG51bGxcbiAgICApO1xuXG4gICAgaWYgKCFzaG91bGRTY3JvbGwpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygc2hvdWxkU2Nyb2xsLnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHNob3VsZFNjcm9sbFxuICAgICAgICAudGhlbihmdW5jdGlvbiAoc2hvdWxkU2Nyb2xsKSB7XG4gICAgICAgICAgc2Nyb2xsVG9Qb3NpdGlvbigoc2hvdWxkU2Nyb2xsKSwgcG9zaXRpb24pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICBhc3NlcnQoZmFsc2UsIGVyci50b1N0cmluZygpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzY3JvbGxUb1Bvc2l0aW9uKHNob3VsZFNjcm9sbCwgcG9zaXRpb24pO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNhdmVTY3JvbGxQb3NpdGlvbiAoKSB7XG4gIHZhciBrZXkgPSBnZXRTdGF0ZUtleSgpO1xuICBpZiAoa2V5KSB7XG4gICAgcG9zaXRpb25TdG9yZVtrZXldID0ge1xuICAgICAgeDogd2luZG93LnBhZ2VYT2Zmc2V0LFxuICAgICAgeTogd2luZG93LnBhZ2VZT2Zmc2V0XG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBoYW5kbGVQb3BTdGF0ZSAoZSkge1xuICBzYXZlU2Nyb2xsUG9zaXRpb24oKTtcbiAgaWYgKGUuc3RhdGUgJiYgZS5zdGF0ZS5rZXkpIHtcbiAgICBzZXRTdGF0ZUtleShlLnN0YXRlLmtleSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0U2Nyb2xsUG9zaXRpb24gKCkge1xuICB2YXIga2V5ID0gZ2V0U3RhdGVLZXkoKTtcbiAgaWYgKGtleSkge1xuICAgIHJldHVybiBwb3NpdGlvblN0b3JlW2tleV1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRFbGVtZW50UG9zaXRpb24gKGVsLCBvZmZzZXQpIHtcbiAgdmFyIGRvY0VsID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICB2YXIgZG9jUmVjdCA9IGRvY0VsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB2YXIgZWxSZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHJldHVybiB7XG4gICAgeDogZWxSZWN0LmxlZnQgLSBkb2NSZWN0LmxlZnQgLSBvZmZzZXQueCxcbiAgICB5OiBlbFJlY3QudG9wIC0gZG9jUmVjdC50b3AgLSBvZmZzZXQueVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWRQb3NpdGlvbiAob2JqKSB7XG4gIHJldHVybiBpc051bWJlcihvYmoueCkgfHwgaXNOdW1iZXIob2JqLnkpXG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVBvc2l0aW9uIChvYmopIHtcbiAgcmV0dXJuIHtcbiAgICB4OiBpc051bWJlcihvYmoueCkgPyBvYmoueCA6IHdpbmRvdy5wYWdlWE9mZnNldCxcbiAgICB5OiBpc051bWJlcihvYmoueSkgPyBvYmoueSA6IHdpbmRvdy5wYWdlWU9mZnNldFxuICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU9mZnNldCAob2JqKSB7XG4gIHJldHVybiB7XG4gICAgeDogaXNOdW1iZXIob2JqLngpID8gb2JqLnggOiAwLFxuICAgIHk6IGlzTnVtYmVyKG9iai55KSA/IG9iai55IDogMFxuICB9XG59XG5cbmZ1bmN0aW9uIGlzTnVtYmVyICh2KSB7XG4gIHJldHVybiB0eXBlb2YgdiA9PT0gJ251bWJlcidcbn1cblxudmFyIGhhc2hTdGFydHNXaXRoTnVtYmVyUkUgPSAvXiNcXGQvO1xuXG5mdW5jdGlvbiBzY3JvbGxUb1Bvc2l0aW9uIChzaG91bGRTY3JvbGwsIHBvc2l0aW9uKSB7XG4gIHZhciBpc09iamVjdCA9IHR5cGVvZiBzaG91bGRTY3JvbGwgPT09ICdvYmplY3QnO1xuICBpZiAoaXNPYmplY3QgJiYgdHlwZW9mIHNob3VsZFNjcm9sbC5zZWxlY3RvciA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBnZXRFbGVtZW50QnlJZCB3b3VsZCBzdGlsbCBmYWlsIGlmIHRoZSBzZWxlY3RvciBjb250YWlucyBhIG1vcmUgY29tcGxpY2F0ZWQgcXVlcnkgbGlrZSAjbWFpbltkYXRhLWF0dHJdXG4gICAgLy8gYnV0IGF0IHRoZSBzYW1lIHRpbWUsIGl0IGRvZXNuJ3QgbWFrZSBtdWNoIHNlbnNlIHRvIHNlbGVjdCBhbiBlbGVtZW50IHdpdGggYW4gaWQgYW5kIGFuIGV4dHJhIHNlbGVjdG9yXG4gICAgdmFyIGVsID0gaGFzaFN0YXJ0c1dpdGhOdW1iZXJSRS50ZXN0KHNob3VsZFNjcm9sbC5zZWxlY3RvcikgLy8gJGZsb3ctZGlzYWJsZS1saW5lXG4gICAgICA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNob3VsZFNjcm9sbC5zZWxlY3Rvci5zbGljZSgxKSkgLy8gJGZsb3ctZGlzYWJsZS1saW5lXG4gICAgICA6IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2hvdWxkU2Nyb2xsLnNlbGVjdG9yKTtcblxuICAgIGlmIChlbCkge1xuICAgICAgdmFyIG9mZnNldCA9XG4gICAgICAgIHNob3VsZFNjcm9sbC5vZmZzZXQgJiYgdHlwZW9mIHNob3VsZFNjcm9sbC5vZmZzZXQgPT09ICdvYmplY3QnXG4gICAgICAgICAgPyBzaG91bGRTY3JvbGwub2Zmc2V0XG4gICAgICAgICAgOiB7fTtcbiAgICAgIG9mZnNldCA9IG5vcm1hbGl6ZU9mZnNldChvZmZzZXQpO1xuICAgICAgcG9zaXRpb24gPSBnZXRFbGVtZW50UG9zaXRpb24oZWwsIG9mZnNldCk7XG4gICAgfSBlbHNlIGlmIChpc1ZhbGlkUG9zaXRpb24oc2hvdWxkU2Nyb2xsKSkge1xuICAgICAgcG9zaXRpb24gPSBub3JtYWxpemVQb3NpdGlvbihzaG91bGRTY3JvbGwpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc09iamVjdCAmJiBpc1ZhbGlkUG9zaXRpb24oc2hvdWxkU2Nyb2xsKSkge1xuICAgIHBvc2l0aW9uID0gbm9ybWFsaXplUG9zaXRpb24oc2hvdWxkU2Nyb2xsKTtcbiAgfVxuXG4gIGlmIChwb3NpdGlvbikge1xuICAgIHdpbmRvdy5zY3JvbGxUbyhwb3NpdGlvbi54LCBwb3NpdGlvbi55KTtcbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIHN1cHBvcnRzUHVzaFN0YXRlID1cbiAgaW5Ccm93c2VyICYmXG4gIChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHVhID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQ7XG5cbiAgICBpZiAoXG4gICAgICAodWEuaW5kZXhPZignQW5kcm9pZCAyLicpICE9PSAtMSB8fCB1YS5pbmRleE9mKCdBbmRyb2lkIDQuMCcpICE9PSAtMSkgJiZcbiAgICAgIHVhLmluZGV4T2YoJ01vYmlsZSBTYWZhcmknKSAhPT0gLTEgJiZcbiAgICAgIHVhLmluZGV4T2YoJ0Nocm9tZScpID09PSAtMSAmJlxuICAgICAgdWEuaW5kZXhPZignV2luZG93cyBQaG9uZScpID09PSAtMVxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgcmV0dXJuIHdpbmRvdy5oaXN0b3J5ICYmIHR5cGVvZiB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUgPT09ICdmdW5jdGlvbidcbiAgfSkoKTtcblxuZnVuY3Rpb24gcHVzaFN0YXRlICh1cmwsIHJlcGxhY2UpIHtcbiAgc2F2ZVNjcm9sbFBvc2l0aW9uKCk7XG4gIC8vIHRyeS4uLmNhdGNoIHRoZSBwdXNoU3RhdGUgY2FsbCB0byBnZXQgYXJvdW5kIFNhZmFyaVxuICAvLyBET00gRXhjZXB0aW9uIDE4IHdoZXJlIGl0IGxpbWl0cyB0byAxMDAgcHVzaFN0YXRlIGNhbGxzXG4gIHZhciBoaXN0b3J5ID0gd2luZG93Lmhpc3Rvcnk7XG4gIHRyeSB7XG4gICAgaWYgKHJlcGxhY2UpIHtcbiAgICAgIC8vIHByZXNlcnZlIGV4aXN0aW5nIGhpc3Rvcnkgc3RhdGUgYXMgaXQgY291bGQgYmUgb3ZlcnJpZGVuIGJ5IHRoZSB1c2VyXG4gICAgICB2YXIgc3RhdGVDb3B5ID0gZXh0ZW5kKHt9LCBoaXN0b3J5LnN0YXRlKTtcbiAgICAgIHN0YXRlQ29weS5rZXkgPSBnZXRTdGF0ZUtleSgpO1xuICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUoc3RhdGVDb3B5LCAnJywgdXJsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGlzdG9yeS5wdXNoU3RhdGUoeyBrZXk6IHNldFN0YXRlS2V5KGdlblN0YXRlS2V5KCkpIH0sICcnLCB1cmwpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIHdpbmRvdy5sb2NhdGlvbltyZXBsYWNlID8gJ3JlcGxhY2UnIDogJ2Fzc2lnbiddKHVybCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVwbGFjZVN0YXRlICh1cmwpIHtcbiAgcHVzaFN0YXRlKHVybCwgdHJ1ZSk7XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBydW5RdWV1ZSAocXVldWUsIGZuLCBjYikge1xuICB2YXIgc3RlcCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgIGlmIChpbmRleCA+PSBxdWV1ZS5sZW5ndGgpIHtcbiAgICAgIGNiKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChxdWV1ZVtpbmRleF0pIHtcbiAgICAgICAgZm4ocXVldWVbaW5kZXhdLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgc3RlcChpbmRleCArIDEpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0ZXAoaW5kZXggKyAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHN0ZXAoMCk7XG59XG5cbnZhciBOYXZpZ2F0aW9uRmFpbHVyZVR5cGUgPSB7XG4gIHJlZGlyZWN0ZWQ6IDIsXG4gIGFib3J0ZWQ6IDQsXG4gIGNhbmNlbGxlZDogOCxcbiAgZHVwbGljYXRlZDogMTZcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZU5hdmlnYXRpb25SZWRpcmVjdGVkRXJyb3IgKGZyb20sIHRvKSB7XG4gIHJldHVybiBjcmVhdGVSb3V0ZXJFcnJvcihcbiAgICBmcm9tLFxuICAgIHRvLFxuICAgIE5hdmlnYXRpb25GYWlsdXJlVHlwZS5yZWRpcmVjdGVkLFxuICAgIChcIlJlZGlyZWN0ZWQgd2hlbiBnb2luZyBmcm9tIFxcXCJcIiArIChmcm9tLmZ1bGxQYXRoKSArIFwiXFxcIiB0byBcXFwiXCIgKyAoc3RyaW5naWZ5Um91dGUoXG4gICAgICB0b1xuICAgICkpICsgXCJcXFwiIHZpYSBhIG5hdmlnYXRpb24gZ3VhcmQuXCIpXG4gIClcbn1cblxuZnVuY3Rpb24gY3JlYXRlTmF2aWdhdGlvbkR1cGxpY2F0ZWRFcnJvciAoZnJvbSwgdG8pIHtcbiAgdmFyIGVycm9yID0gY3JlYXRlUm91dGVyRXJyb3IoXG4gICAgZnJvbSxcbiAgICB0byxcbiAgICBOYXZpZ2F0aW9uRmFpbHVyZVR5cGUuZHVwbGljYXRlZCxcbiAgICAoXCJBdm9pZGVkIHJlZHVuZGFudCBuYXZpZ2F0aW9uIHRvIGN1cnJlbnQgbG9jYXRpb246IFxcXCJcIiArIChmcm9tLmZ1bGxQYXRoKSArIFwiXFxcIi5cIilcbiAgKTtcbiAgLy8gYmFja3dhcmRzIGNvbXBhdGlibGUgd2l0aCB0aGUgZmlyc3QgaW50cm9kdWN0aW9uIG9mIEVycm9yc1xuICBlcnJvci5uYW1lID0gJ05hdmlnYXRpb25EdXBsaWNhdGVkJztcbiAgcmV0dXJuIGVycm9yXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU5hdmlnYXRpb25DYW5jZWxsZWRFcnJvciAoZnJvbSwgdG8pIHtcbiAgcmV0dXJuIGNyZWF0ZVJvdXRlckVycm9yKFxuICAgIGZyb20sXG4gICAgdG8sXG4gICAgTmF2aWdhdGlvbkZhaWx1cmVUeXBlLmNhbmNlbGxlZCxcbiAgICAoXCJOYXZpZ2F0aW9uIGNhbmNlbGxlZCBmcm9tIFxcXCJcIiArIChmcm9tLmZ1bGxQYXRoKSArIFwiXFxcIiB0byBcXFwiXCIgKyAodG8uZnVsbFBhdGgpICsgXCJcXFwiIHdpdGggYSBuZXcgbmF2aWdhdGlvbi5cIilcbiAgKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVOYXZpZ2F0aW9uQWJvcnRlZEVycm9yIChmcm9tLCB0bykge1xuICByZXR1cm4gY3JlYXRlUm91dGVyRXJyb3IoXG4gICAgZnJvbSxcbiAgICB0byxcbiAgICBOYXZpZ2F0aW9uRmFpbHVyZVR5cGUuYWJvcnRlZCxcbiAgICAoXCJOYXZpZ2F0aW9uIGFib3J0ZWQgZnJvbSBcXFwiXCIgKyAoZnJvbS5mdWxsUGF0aCkgKyBcIlxcXCIgdG8gXFxcIlwiICsgKHRvLmZ1bGxQYXRoKSArIFwiXFxcIiB2aWEgYSBuYXZpZ2F0aW9uIGd1YXJkLlwiKVxuICApXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVJvdXRlckVycm9yIChmcm9tLCB0bywgdHlwZSwgbWVzc2FnZSkge1xuICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIGVycm9yLl9pc1JvdXRlciA9IHRydWU7XG4gIGVycm9yLmZyb20gPSBmcm9tO1xuICBlcnJvci50byA9IHRvO1xuICBlcnJvci50eXBlID0gdHlwZTtcblxuICByZXR1cm4gZXJyb3Jcbn1cblxudmFyIHByb3BlcnRpZXNUb0xvZyA9IFsncGFyYW1zJywgJ3F1ZXJ5JywgJ2hhc2gnXTtcblxuZnVuY3Rpb24gc3RyaW5naWZ5Um91dGUgKHRvKSB7XG4gIGlmICh0eXBlb2YgdG8gPT09ICdzdHJpbmcnKSB7IHJldHVybiB0byB9XG4gIGlmICgncGF0aCcgaW4gdG8pIHsgcmV0dXJuIHRvLnBhdGggfVxuICB2YXIgbG9jYXRpb24gPSB7fTtcbiAgcHJvcGVydGllc1RvTG9nLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIGlmIChrZXkgaW4gdG8pIHsgbG9jYXRpb25ba2V5XSA9IHRvW2tleV07IH1cbiAgfSk7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShsb2NhdGlvbiwgbnVsbCwgMilcbn1cblxuZnVuY3Rpb24gaXNFcnJvciAoZXJyKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZXJyKS5pbmRleE9mKCdFcnJvcicpID4gLTFcbn1cblxuZnVuY3Rpb24gaXNOYXZpZ2F0aW9uRmFpbHVyZSAoZXJyLCBlcnJvclR5cGUpIHtcbiAgcmV0dXJuIChcbiAgICBpc0Vycm9yKGVycikgJiZcbiAgICBlcnIuX2lzUm91dGVyICYmXG4gICAgKGVycm9yVHlwZSA9PSBudWxsIHx8IGVyci50eXBlID09PSBlcnJvclR5cGUpXG4gIClcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIHJlc29sdmVBc3luY0NvbXBvbmVudHMgKG1hdGNoZWQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0bywgZnJvbSwgbmV4dCkge1xuICAgIHZhciBoYXNBc3luYyA9IGZhbHNlO1xuICAgIHZhciBwZW5kaW5nID0gMDtcbiAgICB2YXIgZXJyb3IgPSBudWxsO1xuXG4gICAgZmxhdE1hcENvbXBvbmVudHMobWF0Y2hlZCwgZnVuY3Rpb24gKGRlZiwgXywgbWF0Y2gsIGtleSkge1xuICAgICAgLy8gaWYgaXQncyBhIGZ1bmN0aW9uIGFuZCBkb2Vzbid0IGhhdmUgY2lkIGF0dGFjaGVkLFxuICAgICAgLy8gYXNzdW1lIGl0J3MgYW4gYXN5bmMgY29tcG9uZW50IHJlc29sdmUgZnVuY3Rpb24uXG4gICAgICAvLyB3ZSBhcmUgbm90IHVzaW5nIFZ1ZSdzIGRlZmF1bHQgYXN5bmMgcmVzb2x2aW5nIG1lY2hhbmlzbSBiZWNhdXNlXG4gICAgICAvLyB3ZSB3YW50IHRvIGhhbHQgdGhlIG5hdmlnYXRpb24gdW50aWwgdGhlIGluY29taW5nIGNvbXBvbmVudCBoYXMgYmVlblxuICAgICAgLy8gcmVzb2x2ZWQuXG4gICAgICBpZiAodHlwZW9mIGRlZiA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWYuY2lkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaGFzQXN5bmMgPSB0cnVlO1xuICAgICAgICBwZW5kaW5nKys7XG5cbiAgICAgICAgdmFyIHJlc29sdmUgPSBvbmNlKGZ1bmN0aW9uIChyZXNvbHZlZERlZikge1xuICAgICAgICAgIGlmIChpc0VTTW9kdWxlKHJlc29sdmVkRGVmKSkge1xuICAgICAgICAgICAgcmVzb2x2ZWREZWYgPSByZXNvbHZlZERlZi5kZWZhdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBzYXZlIHJlc29sdmVkIG9uIGFzeW5jIGZhY3RvcnkgaW4gY2FzZSBpdCdzIHVzZWQgZWxzZXdoZXJlXG4gICAgICAgICAgZGVmLnJlc29sdmVkID0gdHlwZW9mIHJlc29sdmVkRGVmID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IHJlc29sdmVkRGVmXG4gICAgICAgICAgICA6IF9WdWUuZXh0ZW5kKHJlc29sdmVkRGVmKTtcbiAgICAgICAgICBtYXRjaC5jb21wb25lbnRzW2tleV0gPSByZXNvbHZlZERlZjtcbiAgICAgICAgICBwZW5kaW5nLS07XG4gICAgICAgICAgaWYgKHBlbmRpbmcgPD0gMCkge1xuICAgICAgICAgICAgbmV4dCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdmFyIHJlamVjdCA9IG9uY2UoZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgICAgIHZhciBtc2cgPSBcIkZhaWxlZCB0byByZXNvbHZlIGFzeW5jIGNvbXBvbmVudCBcIiArIGtleSArIFwiOiBcIiArIHJlYXNvbjtcbiAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oZmFsc2UsIG1zZyk7XG4gICAgICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICAgICAgZXJyb3IgPSBpc0Vycm9yKHJlYXNvbilcbiAgICAgICAgICAgICAgPyByZWFzb25cbiAgICAgICAgICAgICAgOiBuZXcgRXJyb3IobXNnKTtcbiAgICAgICAgICAgIG5leHQoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdmFyIHJlcztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXMgPSBkZWYocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiByZXMudGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmVzLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gbmV3IHN5bnRheCBpbiBWdWUgMi4zXG4gICAgICAgICAgICB2YXIgY29tcCA9IHJlcy5jb21wb25lbnQ7XG4gICAgICAgICAgICBpZiAoY29tcCAmJiB0eXBlb2YgY29tcC50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIGNvbXAudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFoYXNBc3luYykgeyBuZXh0KCk7IH1cbiAgfVxufVxuXG5mdW5jdGlvbiBmbGF0TWFwQ29tcG9uZW50cyAoXG4gIG1hdGNoZWQsXG4gIGZuXG4pIHtcbiAgcmV0dXJuIGZsYXR0ZW4obWF0Y2hlZC5tYXAoZnVuY3Rpb24gKG0pIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMobS5jb21wb25lbnRzKS5tYXAoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gZm4oXG4gICAgICBtLmNvbXBvbmVudHNba2V5XSxcbiAgICAgIG0uaW5zdGFuY2VzW2tleV0sXG4gICAgICBtLCBrZXlcbiAgICApOyB9KVxuICB9KSlcbn1cblxuZnVuY3Rpb24gZmxhdHRlbiAoYXJyKSB7XG4gIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCBhcnIpXG59XG5cbnZhciBoYXNTeW1ib2wgPVxuICB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmXG4gIHR5cGVvZiBTeW1ib2wudG9TdHJpbmdUYWcgPT09ICdzeW1ib2wnO1xuXG5mdW5jdGlvbiBpc0VTTW9kdWxlIChvYmopIHtcbiAgcmV0dXJuIG9iai5fX2VzTW9kdWxlIHx8IChoYXNTeW1ib2wgJiYgb2JqW1N5bWJvbC50b1N0cmluZ1RhZ10gPT09ICdNb2R1bGUnKVxufVxuXG4vLyBpbiBXZWJwYWNrIDIsIHJlcXVpcmUuZW5zdXJlIG5vdyBhbHNvIHJldHVybnMgYSBQcm9taXNlXG4vLyBzbyB0aGUgcmVzb2x2ZS9yZWplY3QgZnVuY3Rpb25zIG1heSBnZXQgY2FsbGVkIGFuIGV4dHJhIHRpbWVcbi8vIGlmIHRoZSB1c2VyIHVzZXMgYW4gYXJyb3cgZnVuY3Rpb24gc2hvcnRoYW5kIHRoYXQgaGFwcGVucyB0b1xuLy8gcmV0dXJuIHRoYXQgUHJvbWlzZS5cbmZ1bmN0aW9uIG9uY2UgKGZuKSB7XG4gIHZhciBjYWxsZWQgPSBmYWxzZTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHdoaWxlICggbGVuLS0gKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuIF07XG5cbiAgICBpZiAoY2FsbGVkKSB7IHJldHVybiB9XG4gICAgY2FsbGVkID0gdHJ1ZTtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJncylcbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIEhpc3RvcnkgPSBmdW5jdGlvbiBIaXN0b3J5IChyb3V0ZXIsIGJhc2UpIHtcbiAgdGhpcy5yb3V0ZXIgPSByb3V0ZXI7XG4gIHRoaXMuYmFzZSA9IG5vcm1hbGl6ZUJhc2UoYmFzZSk7XG4gIC8vIHN0YXJ0IHdpdGggYSByb3V0ZSBvYmplY3QgdGhhdCBzdGFuZHMgZm9yIFwibm93aGVyZVwiXG4gIHRoaXMuY3VycmVudCA9IFNUQVJUO1xuICB0aGlzLnBlbmRpbmcgPSBudWxsO1xuICB0aGlzLnJlYWR5ID0gZmFsc2U7XG4gIHRoaXMucmVhZHlDYnMgPSBbXTtcbiAgdGhpcy5yZWFkeUVycm9yQ2JzID0gW107XG4gIHRoaXMuZXJyb3JDYnMgPSBbXTtcbiAgdGhpcy5saXN0ZW5lcnMgPSBbXTtcbn07XG5cbkhpc3RvcnkucHJvdG90eXBlLmxpc3RlbiA9IGZ1bmN0aW9uIGxpc3RlbiAoY2IpIHtcbiAgdGhpcy5jYiA9IGNiO1xufTtcblxuSGlzdG9yeS5wcm90b3R5cGUub25SZWFkeSA9IGZ1bmN0aW9uIG9uUmVhZHkgKGNiLCBlcnJvckNiKSB7XG4gIGlmICh0aGlzLnJlYWR5KSB7XG4gICAgY2IoKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnJlYWR5Q2JzLnB1c2goY2IpO1xuICAgIGlmIChlcnJvckNiKSB7XG4gICAgICB0aGlzLnJlYWR5RXJyb3JDYnMucHVzaChlcnJvckNiKTtcbiAgICB9XG4gIH1cbn07XG5cbkhpc3RvcnkucHJvdG90eXBlLm9uRXJyb3IgPSBmdW5jdGlvbiBvbkVycm9yIChlcnJvckNiKSB7XG4gIHRoaXMuZXJyb3JDYnMucHVzaChlcnJvckNiKTtcbn07XG5cbkhpc3RvcnkucHJvdG90eXBlLnRyYW5zaXRpb25UbyA9IGZ1bmN0aW9uIHRyYW5zaXRpb25UbyAoXG4gIGxvY2F0aW9uLFxuICBvbkNvbXBsZXRlLFxuICBvbkFib3J0XG4pIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICB2YXIgcm91dGU7XG4gIC8vIGNhdGNoIHJlZGlyZWN0IG9wdGlvbiBodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlLXJvdXRlci9pc3N1ZXMvMzIwMVxuICB0cnkge1xuICAgIHJvdXRlID0gdGhpcy5yb3V0ZXIubWF0Y2gobG9jYXRpb24sIHRoaXMuY3VycmVudCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aGlzLmVycm9yQ2JzLmZvckVhY2goZnVuY3Rpb24gKGNiKSB7XG4gICAgICBjYihlKTtcbiAgICB9KTtcbiAgICAvLyBFeGNlcHRpb24gc2hvdWxkIHN0aWxsIGJlIHRocm93blxuICAgIHRocm93IGVcbiAgfVxuICB0aGlzLmNvbmZpcm1UcmFuc2l0aW9uKFxuICAgIHJvdXRlLFxuICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBwcmV2ID0gdGhpcyQxLmN1cnJlbnQ7XG4gICAgICB0aGlzJDEudXBkYXRlUm91dGUocm91dGUpO1xuICAgICAgb25Db21wbGV0ZSAmJiBvbkNvbXBsZXRlKHJvdXRlKTtcbiAgICAgIHRoaXMkMS5lbnN1cmVVUkwoKTtcbiAgICAgIHRoaXMkMS5yb3V0ZXIuYWZ0ZXJIb29rcy5mb3JFYWNoKGZ1bmN0aW9uIChob29rKSB7XG4gICAgICAgIGhvb2sgJiYgaG9vayhyb3V0ZSwgcHJldik7XG4gICAgICB9KTtcblxuICAgICAgLy8gZmlyZSByZWFkeSBjYnMgb25jZVxuICAgICAgaWYgKCF0aGlzJDEucmVhZHkpIHtcbiAgICAgICAgdGhpcyQxLnJlYWR5ID0gdHJ1ZTtcbiAgICAgICAgdGhpcyQxLnJlYWR5Q2JzLmZvckVhY2goZnVuY3Rpb24gKGNiKSB7XG4gICAgICAgICAgY2Iocm91dGUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIGlmIChvbkFib3J0KSB7XG4gICAgICAgIG9uQWJvcnQoZXJyKTtcbiAgICAgIH1cbiAgICAgIGlmIChlcnIgJiYgIXRoaXMkMS5yZWFkeSkge1xuICAgICAgICB0aGlzJDEucmVhZHkgPSB0cnVlO1xuICAgICAgICAvLyBJbml0aWFsIHJlZGlyZWN0aW9uIHNob3VsZCBzdGlsbCB0cmlnZ2VyIHRoZSBvblJlYWR5IG9uU3VjY2Vzc1xuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlLXJvdXRlci9pc3N1ZXMvMzIyNVxuICAgICAgICBpZiAoIWlzTmF2aWdhdGlvbkZhaWx1cmUoZXJyLCBOYXZpZ2F0aW9uRmFpbHVyZVR5cGUucmVkaXJlY3RlZCkpIHtcbiAgICAgICAgICB0aGlzJDEucmVhZHlFcnJvckNicy5mb3JFYWNoKGZ1bmN0aW9uIChjYikge1xuICAgICAgICAgICAgY2IoZXJyKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzJDEucmVhZHlDYnMuZm9yRWFjaChmdW5jdGlvbiAoY2IpIHtcbiAgICAgICAgICAgIGNiKHJvdXRlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgKTtcbn07XG5cbkhpc3RvcnkucHJvdG90eXBlLmNvbmZpcm1UcmFuc2l0aW9uID0gZnVuY3Rpb24gY29uZmlybVRyYW5zaXRpb24gKHJvdXRlLCBvbkNvbXBsZXRlLCBvbkFib3J0KSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgdmFyIGN1cnJlbnQgPSB0aGlzLmN1cnJlbnQ7XG4gIHZhciBhYm9ydCA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAvLyBjaGFuZ2VkIGFmdGVyIGFkZGluZyBlcnJvcnMgd2l0aFxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS92dWVqcy92dWUtcm91dGVyL3B1bGwvMzA0NyBiZWZvcmUgdGhhdCBjaGFuZ2UsXG4gICAgLy8gcmVkaXJlY3QgYW5kIGFib3J0ZWQgbmF2aWdhdGlvbiB3b3VsZCBwcm9kdWNlIGFuIGVyciA9PSBudWxsXG4gICAgaWYgKCFpc05hdmlnYXRpb25GYWlsdXJlKGVycikgJiYgaXNFcnJvcihlcnIpKSB7XG4gICAgICBpZiAodGhpcyQxLmVycm9yQ2JzLmxlbmd0aCkge1xuICAgICAgICB0aGlzJDEuZXJyb3JDYnMuZm9yRWFjaChmdW5jdGlvbiAoY2IpIHtcbiAgICAgICAgICBjYihlcnIpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdhcm4oZmFsc2UsICd1bmNhdWdodCBlcnJvciBkdXJpbmcgcm91dGUgbmF2aWdhdGlvbjonKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgfVxuICAgIH1cbiAgICBvbkFib3J0ICYmIG9uQWJvcnQoZXJyKTtcbiAgfTtcbiAgdmFyIGxhc3RSb3V0ZUluZGV4ID0gcm91dGUubWF0Y2hlZC5sZW5ndGggLSAxO1xuICB2YXIgbGFzdEN1cnJlbnRJbmRleCA9IGN1cnJlbnQubWF0Y2hlZC5sZW5ndGggLSAxO1xuICBpZiAoXG4gICAgaXNTYW1lUm91dGUocm91dGUsIGN1cnJlbnQpICYmXG4gICAgLy8gaW4gdGhlIGNhc2UgdGhlIHJvdXRlIG1hcCBoYXMgYmVlbiBkeW5hbWljYWxseSBhcHBlbmRlZCB0b1xuICAgIGxhc3RSb3V0ZUluZGV4ID09PSBsYXN0Q3VycmVudEluZGV4ICYmXG4gICAgcm91dGUubWF0Y2hlZFtsYXN0Um91dGVJbmRleF0gPT09IGN1cnJlbnQubWF0Y2hlZFtsYXN0Q3VycmVudEluZGV4XVxuICApIHtcbiAgICB0aGlzLmVuc3VyZVVSTCgpO1xuICAgIHJldHVybiBhYm9ydChjcmVhdGVOYXZpZ2F0aW9uRHVwbGljYXRlZEVycm9yKGN1cnJlbnQsIHJvdXRlKSlcbiAgfVxuXG4gIHZhciByZWYgPSByZXNvbHZlUXVldWUoXG4gICAgdGhpcy5jdXJyZW50Lm1hdGNoZWQsXG4gICAgcm91dGUubWF0Y2hlZFxuICApO1xuICAgIHZhciB1cGRhdGVkID0gcmVmLnVwZGF0ZWQ7XG4gICAgdmFyIGRlYWN0aXZhdGVkID0gcmVmLmRlYWN0aXZhdGVkO1xuICAgIHZhciBhY3RpdmF0ZWQgPSByZWYuYWN0aXZhdGVkO1xuXG4gIHZhciBxdWV1ZSA9IFtdLmNvbmNhdChcbiAgICAvLyBpbi1jb21wb25lbnQgbGVhdmUgZ3VhcmRzXG4gICAgZXh0cmFjdExlYXZlR3VhcmRzKGRlYWN0aXZhdGVkKSxcbiAgICAvLyBnbG9iYWwgYmVmb3JlIGhvb2tzXG4gICAgdGhpcy5yb3V0ZXIuYmVmb3JlSG9va3MsXG4gICAgLy8gaW4tY29tcG9uZW50IHVwZGF0ZSBob29rc1xuICAgIGV4dHJhY3RVcGRhdGVIb29rcyh1cGRhdGVkKSxcbiAgICAvLyBpbi1jb25maWcgZW50ZXIgZ3VhcmRzXG4gICAgYWN0aXZhdGVkLm1hcChmdW5jdGlvbiAobSkgeyByZXR1cm4gbS5iZWZvcmVFbnRlcjsgfSksXG4gICAgLy8gYXN5bmMgY29tcG9uZW50c1xuICAgIHJlc29sdmVBc3luY0NvbXBvbmVudHMoYWN0aXZhdGVkKVxuICApO1xuXG4gIHRoaXMucGVuZGluZyA9IHJvdXRlO1xuICB2YXIgaXRlcmF0b3IgPSBmdW5jdGlvbiAoaG9vaywgbmV4dCkge1xuICAgIGlmICh0aGlzJDEucGVuZGluZyAhPT0gcm91dGUpIHtcbiAgICAgIHJldHVybiBhYm9ydChjcmVhdGVOYXZpZ2F0aW9uQ2FuY2VsbGVkRXJyb3IoY3VycmVudCwgcm91dGUpKVxuICAgIH1cbiAgICB0cnkge1xuICAgICAgaG9vayhyb3V0ZSwgY3VycmVudCwgZnVuY3Rpb24gKHRvKSB7XG4gICAgICAgIGlmICh0byA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAvLyBuZXh0KGZhbHNlKSAtPiBhYm9ydCBuYXZpZ2F0aW9uLCBlbnN1cmUgY3VycmVudCBVUkxcbiAgICAgICAgICB0aGlzJDEuZW5zdXJlVVJMKHRydWUpO1xuICAgICAgICAgIGFib3J0KGNyZWF0ZU5hdmlnYXRpb25BYm9ydGVkRXJyb3IoY3VycmVudCwgcm91dGUpKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0Vycm9yKHRvKSkge1xuICAgICAgICAgIHRoaXMkMS5lbnN1cmVVUkwodHJ1ZSk7XG4gICAgICAgICAgYWJvcnQodG8pO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIHR5cGVvZiB0byA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgICAodHlwZW9mIHRvID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgKHR5cGVvZiB0by5wYXRoID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdG8ubmFtZSA9PT0gJ3N0cmluZycpKVxuICAgICAgICApIHtcbiAgICAgICAgICAvLyBuZXh0KCcvJykgb3IgbmV4dCh7IHBhdGg6ICcvJyB9KSAtPiByZWRpcmVjdFxuICAgICAgICAgIGFib3J0KGNyZWF0ZU5hdmlnYXRpb25SZWRpcmVjdGVkRXJyb3IoY3VycmVudCwgcm91dGUpKTtcbiAgICAgICAgICBpZiAodHlwZW9mIHRvID09PSAnb2JqZWN0JyAmJiB0by5yZXBsYWNlKSB7XG4gICAgICAgICAgICB0aGlzJDEucmVwbGFjZSh0byk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMkMS5wdXNoKHRvKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gY29uZmlybSB0cmFuc2l0aW9uIGFuZCBwYXNzIG9uIHRoZSB2YWx1ZVxuICAgICAgICAgIG5leHQodG8pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhYm9ydChlKTtcbiAgICB9XG4gIH07XG5cbiAgcnVuUXVldWUocXVldWUsIGl0ZXJhdG9yLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHBvc3RFbnRlckNicyA9IFtdO1xuICAgIHZhciBpc1ZhbGlkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLmN1cnJlbnQgPT09IHJvdXRlOyB9O1xuICAgIC8vIHdhaXQgdW50aWwgYXN5bmMgY29tcG9uZW50cyBhcmUgcmVzb2x2ZWQgYmVmb3JlXG4gICAgLy8gZXh0cmFjdGluZyBpbi1jb21wb25lbnQgZW50ZXIgZ3VhcmRzXG4gICAgdmFyIGVudGVyR3VhcmRzID0gZXh0cmFjdEVudGVyR3VhcmRzKGFjdGl2YXRlZCwgcG9zdEVudGVyQ2JzLCBpc1ZhbGlkKTtcbiAgICB2YXIgcXVldWUgPSBlbnRlckd1YXJkcy5jb25jYXQodGhpcyQxLnJvdXRlci5yZXNvbHZlSG9va3MpO1xuICAgIHJ1blF1ZXVlKHF1ZXVlLCBpdGVyYXRvciwgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKHRoaXMkMS5wZW5kaW5nICE9PSByb3V0ZSkge1xuICAgICAgICByZXR1cm4gYWJvcnQoY3JlYXRlTmF2aWdhdGlvbkNhbmNlbGxlZEVycm9yKGN1cnJlbnQsIHJvdXRlKSlcbiAgICAgIH1cbiAgICAgIHRoaXMkMS5wZW5kaW5nID0gbnVsbDtcbiAgICAgIG9uQ29tcGxldGUocm91dGUpO1xuICAgICAgaWYgKHRoaXMkMS5yb3V0ZXIuYXBwKSB7XG4gICAgICAgIHRoaXMkMS5yb3V0ZXIuYXBwLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcG9zdEVudGVyQ2JzLmZvckVhY2goZnVuY3Rpb24gKGNiKSB7XG4gICAgICAgICAgICBjYigpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59O1xuXG5IaXN0b3J5LnByb3RvdHlwZS51cGRhdGVSb3V0ZSA9IGZ1bmN0aW9uIHVwZGF0ZVJvdXRlIChyb3V0ZSkge1xuICB0aGlzLmN1cnJlbnQgPSByb3V0ZTtcbiAgdGhpcy5jYiAmJiB0aGlzLmNiKHJvdXRlKTtcbn07XG5cbkhpc3RvcnkucHJvdG90eXBlLnNldHVwTGlzdGVuZXJzID0gZnVuY3Rpb24gc2V0dXBMaXN0ZW5lcnMgKCkge1xuICAvLyBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGVtcHR5XG59O1xuXG5IaXN0b3J5LnByb3RvdHlwZS50ZWFyZG93bkxpc3RlbmVycyA9IGZ1bmN0aW9uIHRlYXJkb3duTGlzdGVuZXJzICgpIHtcbiAgdGhpcy5saXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbiAoY2xlYW51cExpc3RlbmVyKSB7XG4gICAgY2xlYW51cExpc3RlbmVyKCk7XG4gIH0pO1xuICB0aGlzLmxpc3RlbmVycyA9IFtdO1xufTtcblxuZnVuY3Rpb24gbm9ybWFsaXplQmFzZSAoYmFzZSkge1xuICBpZiAoIWJhc2UpIHtcbiAgICBpZiAoaW5Ccm93c2VyKSB7XG4gICAgICAvLyByZXNwZWN0IDxiYXNlPiB0YWdcbiAgICAgIHZhciBiYXNlRWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdiYXNlJyk7XG4gICAgICBiYXNlID0gKGJhc2VFbCAmJiBiYXNlRWwuZ2V0QXR0cmlidXRlKCdocmVmJykpIHx8ICcvJztcbiAgICAgIC8vIHN0cmlwIGZ1bGwgVVJMIG9yaWdpblxuICAgICAgYmFzZSA9IGJhc2UucmVwbGFjZSgvXmh0dHBzPzpcXC9cXC9bXlxcL10rLywgJycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBiYXNlID0gJy8nO1xuICAgIH1cbiAgfVxuICAvLyBtYWtlIHN1cmUgdGhlcmUncyB0aGUgc3RhcnRpbmcgc2xhc2hcbiAgaWYgKGJhc2UuY2hhckF0KDApICE9PSAnLycpIHtcbiAgICBiYXNlID0gJy8nICsgYmFzZTtcbiAgfVxuICAvLyByZW1vdmUgdHJhaWxpbmcgc2xhc2hcbiAgcmV0dXJuIGJhc2UucmVwbGFjZSgvXFwvJC8sICcnKVxufVxuXG5mdW5jdGlvbiByZXNvbHZlUXVldWUgKFxuICBjdXJyZW50LFxuICBuZXh0XG4pIHtcbiAgdmFyIGk7XG4gIHZhciBtYXggPSBNYXRoLm1heChjdXJyZW50Lmxlbmd0aCwgbmV4dC5sZW5ndGgpO1xuICBmb3IgKGkgPSAwOyBpIDwgbWF4OyBpKyspIHtcbiAgICBpZiAoY3VycmVudFtpXSAhPT0gbmV4dFtpXSkge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB1cGRhdGVkOiBuZXh0LnNsaWNlKDAsIGkpLFxuICAgIGFjdGl2YXRlZDogbmV4dC5zbGljZShpKSxcbiAgICBkZWFjdGl2YXRlZDogY3VycmVudC5zbGljZShpKVxuICB9XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RHdWFyZHMgKFxuICByZWNvcmRzLFxuICBuYW1lLFxuICBiaW5kLFxuICByZXZlcnNlXG4pIHtcbiAgdmFyIGd1YXJkcyA9IGZsYXRNYXBDb21wb25lbnRzKHJlY29yZHMsIGZ1bmN0aW9uIChkZWYsIGluc3RhbmNlLCBtYXRjaCwga2V5KSB7XG4gICAgdmFyIGd1YXJkID0gZXh0cmFjdEd1YXJkKGRlZiwgbmFtZSk7XG4gICAgaWYgKGd1YXJkKSB7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShndWFyZClcbiAgICAgICAgPyBndWFyZC5tYXAoZnVuY3Rpb24gKGd1YXJkKSB7IHJldHVybiBiaW5kKGd1YXJkLCBpbnN0YW5jZSwgbWF0Y2gsIGtleSk7IH0pXG4gICAgICAgIDogYmluZChndWFyZCwgaW5zdGFuY2UsIG1hdGNoLCBrZXkpXG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGZsYXR0ZW4ocmV2ZXJzZSA/IGd1YXJkcy5yZXZlcnNlKCkgOiBndWFyZHMpXG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RHdWFyZCAoXG4gIGRlZixcbiAga2V5XG4pIHtcbiAgaWYgKHR5cGVvZiBkZWYgIT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBleHRlbmQgbm93IHNvIHRoYXQgZ2xvYmFsIG1peGlucyBhcmUgYXBwbGllZC5cbiAgICBkZWYgPSBfVnVlLmV4dGVuZChkZWYpO1xuICB9XG4gIHJldHVybiBkZWYub3B0aW9uc1trZXldXG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RMZWF2ZUd1YXJkcyAoZGVhY3RpdmF0ZWQpIHtcbiAgcmV0dXJuIGV4dHJhY3RHdWFyZHMoZGVhY3RpdmF0ZWQsICdiZWZvcmVSb3V0ZUxlYXZlJywgYmluZEd1YXJkLCB0cnVlKVxufVxuXG5mdW5jdGlvbiBleHRyYWN0VXBkYXRlSG9va3MgKHVwZGF0ZWQpIHtcbiAgcmV0dXJuIGV4dHJhY3RHdWFyZHModXBkYXRlZCwgJ2JlZm9yZVJvdXRlVXBkYXRlJywgYmluZEd1YXJkKVxufVxuXG5mdW5jdGlvbiBiaW5kR3VhcmQgKGd1YXJkLCBpbnN0YW5jZSkge1xuICBpZiAoaW5zdGFuY2UpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gYm91bmRSb3V0ZUd1YXJkICgpIHtcbiAgICAgIHJldHVybiBndWFyZC5hcHBseShpbnN0YW5jZSwgYXJndW1lbnRzKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBleHRyYWN0RW50ZXJHdWFyZHMgKFxuICBhY3RpdmF0ZWQsXG4gIGNicyxcbiAgaXNWYWxpZFxuKSB7XG4gIHJldHVybiBleHRyYWN0R3VhcmRzKFxuICAgIGFjdGl2YXRlZCxcbiAgICAnYmVmb3JlUm91dGVFbnRlcicsXG4gICAgZnVuY3Rpb24gKGd1YXJkLCBfLCBtYXRjaCwga2V5KSB7XG4gICAgICByZXR1cm4gYmluZEVudGVyR3VhcmQoZ3VhcmQsIG1hdGNoLCBrZXksIGNicywgaXNWYWxpZClcbiAgICB9XG4gIClcbn1cblxuZnVuY3Rpb24gYmluZEVudGVyR3VhcmQgKFxuICBndWFyZCxcbiAgbWF0Y2gsXG4gIGtleSxcbiAgY2JzLFxuICBpc1ZhbGlkXG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHJvdXRlRW50ZXJHdWFyZCAodG8sIGZyb20sIG5leHQpIHtcbiAgICByZXR1cm4gZ3VhcmQodG8sIGZyb20sIGZ1bmN0aW9uIChjYikge1xuICAgICAgaWYgKHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYnMucHVzaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgLy8gIzc1MFxuICAgICAgICAgIC8vIGlmIGEgcm91dGVyLXZpZXcgaXMgd3JhcHBlZCB3aXRoIGFuIG91dC1pbiB0cmFuc2l0aW9uLFxuICAgICAgICAgIC8vIHRoZSBpbnN0YW5jZSBtYXkgbm90IGhhdmUgYmVlbiByZWdpc3RlcmVkIGF0IHRoaXMgdGltZS5cbiAgICAgICAgICAvLyB3ZSB3aWxsIG5lZWQgdG8gcG9sbCBmb3IgcmVnaXN0cmF0aW9uIHVudGlsIGN1cnJlbnQgcm91dGVcbiAgICAgICAgICAvLyBpcyBubyBsb25nZXIgdmFsaWQuXG4gICAgICAgICAgcG9sbChjYiwgbWF0Y2guaW5zdGFuY2VzLCBrZXksIGlzVmFsaWQpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIG5leHQoY2IpO1xuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gcG9sbCAoXG4gIGNiLCAvLyBzb21laG93IGZsb3cgY2Fubm90IGluZmVyIHRoaXMgaXMgYSBmdW5jdGlvblxuICBpbnN0YW5jZXMsXG4gIGtleSxcbiAgaXNWYWxpZFxuKSB7XG4gIGlmIChcbiAgICBpbnN0YW5jZXNba2V5XSAmJlxuICAgICFpbnN0YW5jZXNba2V5XS5faXNCZWluZ0Rlc3Ryb3llZCAvLyBkbyBub3QgcmV1c2UgYmVpbmcgZGVzdHJveWVkIGluc3RhbmNlXG4gICkge1xuICAgIGNiKGluc3RhbmNlc1trZXldKTtcbiAgfSBlbHNlIGlmIChpc1ZhbGlkKCkpIHtcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIHBvbGwoY2IsIGluc3RhbmNlcywga2V5LCBpc1ZhbGlkKTtcbiAgICB9LCAxNik7XG4gIH1cbn1cblxuLyogICovXG5cbnZhciBIVE1MNUhpc3RvcnkgPSAvKkBfX1BVUkVfXyovKGZ1bmN0aW9uIChIaXN0b3J5KSB7XG4gIGZ1bmN0aW9uIEhUTUw1SGlzdG9yeSAocm91dGVyLCBiYXNlKSB7XG4gICAgSGlzdG9yeS5jYWxsKHRoaXMsIHJvdXRlciwgYmFzZSk7XG5cbiAgICB0aGlzLl9zdGFydExvY2F0aW9uID0gZ2V0TG9jYXRpb24odGhpcy5iYXNlKTtcbiAgfVxuXG4gIGlmICggSGlzdG9yeSApIEhUTUw1SGlzdG9yeS5fX3Byb3RvX18gPSBIaXN0b3J5O1xuICBIVE1MNUhpc3RvcnkucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggSGlzdG9yeSAmJiBIaXN0b3J5LnByb3RvdHlwZSApO1xuICBIVE1MNUhpc3RvcnkucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gSFRNTDVIaXN0b3J5O1xuXG4gIEhUTUw1SGlzdG9yeS5wcm90b3R5cGUuc2V0dXBMaXN0ZW5lcnMgPSBmdW5jdGlvbiBzZXR1cExpc3RlbmVycyAoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICBpZiAodGhpcy5saXN0ZW5lcnMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdmFyIHJvdXRlciA9IHRoaXMucm91dGVyO1xuICAgIHZhciBleHBlY3RTY3JvbGwgPSByb3V0ZXIub3B0aW9ucy5zY3JvbGxCZWhhdmlvcjtcbiAgICB2YXIgc3VwcG9ydHNTY3JvbGwgPSBzdXBwb3J0c1B1c2hTdGF0ZSAmJiBleHBlY3RTY3JvbGw7XG5cbiAgICBpZiAoc3VwcG9ydHNTY3JvbGwpIHtcbiAgICAgIHRoaXMubGlzdGVuZXJzLnB1c2goc2V0dXBTY3JvbGwoKSk7XG4gICAgfVxuXG4gICAgdmFyIGhhbmRsZVJvdXRpbmdFdmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBjdXJyZW50ID0gdGhpcyQxLmN1cnJlbnQ7XG5cbiAgICAgIC8vIEF2b2lkaW5nIGZpcnN0IGBwb3BzdGF0ZWAgZXZlbnQgZGlzcGF0Y2hlZCBpbiBzb21lIGJyb3dzZXJzIGJ1dCBmaXJzdFxuICAgICAgLy8gaGlzdG9yeSByb3V0ZSBub3QgdXBkYXRlZCBzaW5jZSBhc3luYyBndWFyZCBhdCB0aGUgc2FtZSB0aW1lLlxuICAgICAgdmFyIGxvY2F0aW9uID0gZ2V0TG9jYXRpb24odGhpcyQxLmJhc2UpO1xuICAgICAgaWYgKHRoaXMkMS5jdXJyZW50ID09PSBTVEFSVCAmJiBsb2NhdGlvbiA9PT0gdGhpcyQxLl9zdGFydExvY2F0aW9uKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICB0aGlzJDEudHJhbnNpdGlvblRvKGxvY2F0aW9uLCBmdW5jdGlvbiAocm91dGUpIHtcbiAgICAgICAgaWYgKHN1cHBvcnRzU2Nyb2xsKSB7XG4gICAgICAgICAgaGFuZGxlU2Nyb2xsKHJvdXRlciwgcm91dGUsIGN1cnJlbnQsIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwb3BzdGF0ZScsIGhhbmRsZVJvdXRpbmdFdmVudCk7XG4gICAgdGhpcy5saXN0ZW5lcnMucHVzaChmdW5jdGlvbiAoKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9wc3RhdGUnLCBoYW5kbGVSb3V0aW5nRXZlbnQpO1xuICAgIH0pO1xuICB9O1xuXG4gIEhUTUw1SGlzdG9yeS5wcm90b3R5cGUuZ28gPSBmdW5jdGlvbiBnbyAobikge1xuICAgIHdpbmRvdy5oaXN0b3J5LmdvKG4pO1xuICB9O1xuXG4gIEhUTUw1SGlzdG9yeS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIHB1c2ggKGxvY2F0aW9uLCBvbkNvbXBsZXRlLCBvbkFib3J0KSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICB2YXIgcmVmID0gdGhpcztcbiAgICB2YXIgZnJvbVJvdXRlID0gcmVmLmN1cnJlbnQ7XG4gICAgdGhpcy50cmFuc2l0aW9uVG8obG9jYXRpb24sIGZ1bmN0aW9uIChyb3V0ZSkge1xuICAgICAgcHVzaFN0YXRlKGNsZWFuUGF0aCh0aGlzJDEuYmFzZSArIHJvdXRlLmZ1bGxQYXRoKSk7XG4gICAgICBoYW5kbGVTY3JvbGwodGhpcyQxLnJvdXRlciwgcm91dGUsIGZyb21Sb3V0ZSwgZmFsc2UpO1xuICAgICAgb25Db21wbGV0ZSAmJiBvbkNvbXBsZXRlKHJvdXRlKTtcbiAgICB9LCBvbkFib3J0KTtcbiAgfTtcblxuICBIVE1MNUhpc3RvcnkucHJvdG90eXBlLnJlcGxhY2UgPSBmdW5jdGlvbiByZXBsYWNlIChsb2NhdGlvbiwgb25Db21wbGV0ZSwgb25BYm9ydCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgdmFyIHJlZiA9IHRoaXM7XG4gICAgdmFyIGZyb21Sb3V0ZSA9IHJlZi5jdXJyZW50O1xuICAgIHRoaXMudHJhbnNpdGlvblRvKGxvY2F0aW9uLCBmdW5jdGlvbiAocm91dGUpIHtcbiAgICAgIHJlcGxhY2VTdGF0ZShjbGVhblBhdGgodGhpcyQxLmJhc2UgKyByb3V0ZS5mdWxsUGF0aCkpO1xuICAgICAgaGFuZGxlU2Nyb2xsKHRoaXMkMS5yb3V0ZXIsIHJvdXRlLCBmcm9tUm91dGUsIGZhbHNlKTtcbiAgICAgIG9uQ29tcGxldGUgJiYgb25Db21wbGV0ZShyb3V0ZSk7XG4gICAgfSwgb25BYm9ydCk7XG4gIH07XG5cbiAgSFRNTDVIaXN0b3J5LnByb3RvdHlwZS5lbnN1cmVVUkwgPSBmdW5jdGlvbiBlbnN1cmVVUkwgKHB1c2gpIHtcbiAgICBpZiAoZ2V0TG9jYXRpb24odGhpcy5iYXNlKSAhPT0gdGhpcy5jdXJyZW50LmZ1bGxQYXRoKSB7XG4gICAgICB2YXIgY3VycmVudCA9IGNsZWFuUGF0aCh0aGlzLmJhc2UgKyB0aGlzLmN1cnJlbnQuZnVsbFBhdGgpO1xuICAgICAgcHVzaCA/IHB1c2hTdGF0ZShjdXJyZW50KSA6IHJlcGxhY2VTdGF0ZShjdXJyZW50KTtcbiAgICB9XG4gIH07XG5cbiAgSFRNTDVIaXN0b3J5LnByb3RvdHlwZS5nZXRDdXJyZW50TG9jYXRpb24gPSBmdW5jdGlvbiBnZXRDdXJyZW50TG9jYXRpb24gKCkge1xuICAgIHJldHVybiBnZXRMb2NhdGlvbih0aGlzLmJhc2UpXG4gIH07XG5cbiAgcmV0dXJuIEhUTUw1SGlzdG9yeTtcbn0oSGlzdG9yeSkpO1xuXG5mdW5jdGlvbiBnZXRMb2NhdGlvbiAoYmFzZSkge1xuICB2YXIgcGF0aCA9IGRlY29kZVVSSSh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpO1xuICBpZiAoYmFzZSAmJiBwYXRoLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihiYXNlLnRvTG93ZXJDYXNlKCkpID09PSAwKSB7XG4gICAgcGF0aCA9IHBhdGguc2xpY2UoYmFzZS5sZW5ndGgpO1xuICB9XG4gIHJldHVybiAocGF0aCB8fCAnLycpICsgd2luZG93LmxvY2F0aW9uLnNlYXJjaCArIHdpbmRvdy5sb2NhdGlvbi5oYXNoXG59XG5cbi8qICAqL1xuXG52YXIgSGFzaEhpc3RvcnkgPSAvKkBfX1BVUkVfXyovKGZ1bmN0aW9uIChIaXN0b3J5KSB7XG4gIGZ1bmN0aW9uIEhhc2hIaXN0b3J5IChyb3V0ZXIsIGJhc2UsIGZhbGxiYWNrKSB7XG4gICAgSGlzdG9yeS5jYWxsKHRoaXMsIHJvdXRlciwgYmFzZSk7XG4gICAgLy8gY2hlY2sgaGlzdG9yeSBmYWxsYmFjayBkZWVwbGlua2luZ1xuICAgIGlmIChmYWxsYmFjayAmJiBjaGVja0ZhbGxiYWNrKHRoaXMuYmFzZSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBlbnN1cmVTbGFzaCgpO1xuICB9XG5cbiAgaWYgKCBIaXN0b3J5ICkgSGFzaEhpc3RvcnkuX19wcm90b19fID0gSGlzdG9yeTtcbiAgSGFzaEhpc3RvcnkucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggSGlzdG9yeSAmJiBIaXN0b3J5LnByb3RvdHlwZSApO1xuICBIYXNoSGlzdG9yeS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBIYXNoSGlzdG9yeTtcblxuICAvLyB0aGlzIGlzIGRlbGF5ZWQgdW50aWwgdGhlIGFwcCBtb3VudHNcbiAgLy8gdG8gYXZvaWQgdGhlIGhhc2hjaGFuZ2UgbGlzdGVuZXIgYmVpbmcgZmlyZWQgdG9vIGVhcmx5XG4gIEhhc2hIaXN0b3J5LnByb3RvdHlwZS5zZXR1cExpc3RlbmVycyA9IGZ1bmN0aW9uIHNldHVwTGlzdGVuZXJzICgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIGlmICh0aGlzLmxpc3RlbmVycy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgcm91dGVyID0gdGhpcy5yb3V0ZXI7XG4gICAgdmFyIGV4cGVjdFNjcm9sbCA9IHJvdXRlci5vcHRpb25zLnNjcm9sbEJlaGF2aW9yO1xuICAgIHZhciBzdXBwb3J0c1Njcm9sbCA9IHN1cHBvcnRzUHVzaFN0YXRlICYmIGV4cGVjdFNjcm9sbDtcblxuICAgIGlmIChzdXBwb3J0c1Njcm9sbCkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMucHVzaChzZXR1cFNjcm9sbCgpKTtcbiAgICB9XG5cbiAgICB2YXIgaGFuZGxlUm91dGluZ0V2ZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGN1cnJlbnQgPSB0aGlzJDEuY3VycmVudDtcbiAgICAgIGlmICghZW5zdXJlU2xhc2goKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHRoaXMkMS50cmFuc2l0aW9uVG8oZ2V0SGFzaCgpLCBmdW5jdGlvbiAocm91dGUpIHtcbiAgICAgICAgaWYgKHN1cHBvcnRzU2Nyb2xsKSB7XG4gICAgICAgICAgaGFuZGxlU2Nyb2xsKHRoaXMkMS5yb3V0ZXIsIHJvdXRlLCBjdXJyZW50LCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXN1cHBvcnRzUHVzaFN0YXRlKSB7XG4gICAgICAgICAgcmVwbGFjZUhhc2gocm91dGUuZnVsbFBhdGgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICAgIHZhciBldmVudFR5cGUgPSBzdXBwb3J0c1B1c2hTdGF0ZSA/ICdwb3BzdGF0ZScgOiAnaGFzaGNoYW5nZSc7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICBldmVudFR5cGUsXG4gICAgICBoYW5kbGVSb3V0aW5nRXZlbnRcbiAgICApO1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2goZnVuY3Rpb24gKCkge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVSb3V0aW5nRXZlbnQpO1xuICAgIH0pO1xuICB9O1xuXG4gIEhhc2hIaXN0b3J5LnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gcHVzaCAobG9jYXRpb24sIG9uQ29tcGxldGUsIG9uQWJvcnQpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIHZhciByZWYgPSB0aGlzO1xuICAgIHZhciBmcm9tUm91dGUgPSByZWYuY3VycmVudDtcbiAgICB0aGlzLnRyYW5zaXRpb25UbyhcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgZnVuY3Rpb24gKHJvdXRlKSB7XG4gICAgICAgIHB1c2hIYXNoKHJvdXRlLmZ1bGxQYXRoKTtcbiAgICAgICAgaGFuZGxlU2Nyb2xsKHRoaXMkMS5yb3V0ZXIsIHJvdXRlLCBmcm9tUm91dGUsIGZhbHNlKTtcbiAgICAgICAgb25Db21wbGV0ZSAmJiBvbkNvbXBsZXRlKHJvdXRlKTtcbiAgICAgIH0sXG4gICAgICBvbkFib3J0XG4gICAgKTtcbiAgfTtcblxuICBIYXNoSGlzdG9yeS5wcm90b3R5cGUucmVwbGFjZSA9IGZ1bmN0aW9uIHJlcGxhY2UgKGxvY2F0aW9uLCBvbkNvbXBsZXRlLCBvbkFib3J0KSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICB2YXIgcmVmID0gdGhpcztcbiAgICB2YXIgZnJvbVJvdXRlID0gcmVmLmN1cnJlbnQ7XG4gICAgdGhpcy50cmFuc2l0aW9uVG8oXG4gICAgICBsb2NhdGlvbixcbiAgICAgIGZ1bmN0aW9uIChyb3V0ZSkge1xuICAgICAgICByZXBsYWNlSGFzaChyb3V0ZS5mdWxsUGF0aCk7XG4gICAgICAgIGhhbmRsZVNjcm9sbCh0aGlzJDEucm91dGVyLCByb3V0ZSwgZnJvbVJvdXRlLCBmYWxzZSk7XG4gICAgICAgIG9uQ29tcGxldGUgJiYgb25Db21wbGV0ZShyb3V0ZSk7XG4gICAgICB9LFxuICAgICAgb25BYm9ydFxuICAgICk7XG4gIH07XG5cbiAgSGFzaEhpc3RvcnkucHJvdG90eXBlLmdvID0gZnVuY3Rpb24gZ28gKG4pIHtcbiAgICB3aW5kb3cuaGlzdG9yeS5nbyhuKTtcbiAgfTtcblxuICBIYXNoSGlzdG9yeS5wcm90b3R5cGUuZW5zdXJlVVJMID0gZnVuY3Rpb24gZW5zdXJlVVJMIChwdXNoKSB7XG4gICAgdmFyIGN1cnJlbnQgPSB0aGlzLmN1cnJlbnQuZnVsbFBhdGg7XG4gICAgaWYgKGdldEhhc2goKSAhPT0gY3VycmVudCkge1xuICAgICAgcHVzaCA/IHB1c2hIYXNoKGN1cnJlbnQpIDogcmVwbGFjZUhhc2goY3VycmVudCk7XG4gICAgfVxuICB9O1xuXG4gIEhhc2hIaXN0b3J5LnByb3RvdHlwZS5nZXRDdXJyZW50TG9jYXRpb24gPSBmdW5jdGlvbiBnZXRDdXJyZW50TG9jYXRpb24gKCkge1xuICAgIHJldHVybiBnZXRIYXNoKClcbiAgfTtcblxuICByZXR1cm4gSGFzaEhpc3Rvcnk7XG59KEhpc3RvcnkpKTtcblxuZnVuY3Rpb24gY2hlY2tGYWxsYmFjayAoYmFzZSkge1xuICB2YXIgbG9jYXRpb24gPSBnZXRMb2NhdGlvbihiYXNlKTtcbiAgaWYgKCEvXlxcLyMvLnRlc3QobG9jYXRpb24pKSB7XG4gICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UoY2xlYW5QYXRoKGJhc2UgKyAnLyMnICsgbG9jYXRpb24pKTtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG59XG5cbmZ1bmN0aW9uIGVuc3VyZVNsYXNoICgpIHtcbiAgdmFyIHBhdGggPSBnZXRIYXNoKCk7XG4gIGlmIChwYXRoLmNoYXJBdCgwKSA9PT0gJy8nKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICByZXBsYWNlSGFzaCgnLycgKyBwYXRoKTtcbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGdldEhhc2ggKCkge1xuICAvLyBXZSBjYW4ndCB1c2Ugd2luZG93LmxvY2F0aW9uLmhhc2ggaGVyZSBiZWNhdXNlIGl0J3Mgbm90XG4gIC8vIGNvbnNpc3RlbnQgYWNyb3NzIGJyb3dzZXJzIC0gRmlyZWZveCB3aWxsIHByZS1kZWNvZGUgaXQhXG4gIHZhciBocmVmID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gIHZhciBpbmRleCA9IGhyZWYuaW5kZXhPZignIycpO1xuICAvLyBlbXB0eSBwYXRoXG4gIGlmIChpbmRleCA8IDApIHsgcmV0dXJuICcnIH1cblxuICBocmVmID0gaHJlZi5zbGljZShpbmRleCArIDEpO1xuICAvLyBkZWNvZGUgdGhlIGhhc2ggYnV0IG5vdCB0aGUgc2VhcmNoIG9yIGhhc2hcbiAgLy8gYXMgc2VhcmNoKHF1ZXJ5KSBpcyBhbHJlYWR5IGRlY29kZWRcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL3Z1ZS1yb3V0ZXIvaXNzdWVzLzI3MDhcbiAgdmFyIHNlYXJjaEluZGV4ID0gaHJlZi5pbmRleE9mKCc/Jyk7XG4gIGlmIChzZWFyY2hJbmRleCA8IDApIHtcbiAgICB2YXIgaGFzaEluZGV4ID0gaHJlZi5pbmRleE9mKCcjJyk7XG4gICAgaWYgKGhhc2hJbmRleCA+IC0xKSB7XG4gICAgICBocmVmID0gZGVjb2RlVVJJKGhyZWYuc2xpY2UoMCwgaGFzaEluZGV4KSkgKyBocmVmLnNsaWNlKGhhc2hJbmRleCk7XG4gICAgfSBlbHNlIHsgaHJlZiA9IGRlY29kZVVSSShocmVmKTsgfVxuICB9IGVsc2Uge1xuICAgIGhyZWYgPSBkZWNvZGVVUkkoaHJlZi5zbGljZSgwLCBzZWFyY2hJbmRleCkpICsgaHJlZi5zbGljZShzZWFyY2hJbmRleCk7XG4gIH1cblxuICByZXR1cm4gaHJlZlxufVxuXG5mdW5jdGlvbiBnZXRVcmwgKHBhdGgpIHtcbiAgdmFyIGhyZWYgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgdmFyIGkgPSBocmVmLmluZGV4T2YoJyMnKTtcbiAgdmFyIGJhc2UgPSBpID49IDAgPyBocmVmLnNsaWNlKDAsIGkpIDogaHJlZjtcbiAgcmV0dXJuIChiYXNlICsgXCIjXCIgKyBwYXRoKVxufVxuXG5mdW5jdGlvbiBwdXNoSGFzaCAocGF0aCkge1xuICBpZiAoc3VwcG9ydHNQdXNoU3RhdGUpIHtcbiAgICBwdXNoU3RhdGUoZ2V0VXJsKHBhdGgpKTtcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cubG9jYXRpb24uaGFzaCA9IHBhdGg7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVwbGFjZUhhc2ggKHBhdGgpIHtcbiAgaWYgKHN1cHBvcnRzUHVzaFN0YXRlKSB7XG4gICAgcmVwbGFjZVN0YXRlKGdldFVybChwYXRoKSk7XG4gIH0gZWxzZSB7XG4gICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UoZ2V0VXJsKHBhdGgpKTtcbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIEFic3RyYWN0SGlzdG9yeSA9IC8qQF9fUFVSRV9fKi8oZnVuY3Rpb24gKEhpc3RvcnkpIHtcbiAgZnVuY3Rpb24gQWJzdHJhY3RIaXN0b3J5IChyb3V0ZXIsIGJhc2UpIHtcbiAgICBIaXN0b3J5LmNhbGwodGhpcywgcm91dGVyLCBiYXNlKTtcbiAgICB0aGlzLnN0YWNrID0gW107XG4gICAgdGhpcy5pbmRleCA9IC0xO1xuICB9XG5cbiAgaWYgKCBIaXN0b3J5ICkgQWJzdHJhY3RIaXN0b3J5Ll9fcHJvdG9fXyA9IEhpc3Rvcnk7XG4gIEFic3RyYWN0SGlzdG9yeS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBIaXN0b3J5ICYmIEhpc3RvcnkucHJvdG90eXBlICk7XG4gIEFic3RyYWN0SGlzdG9yeS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBBYnN0cmFjdEhpc3Rvcnk7XG5cbiAgQWJzdHJhY3RIaXN0b3J5LnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gcHVzaCAobG9jYXRpb24sIG9uQ29tcGxldGUsIG9uQWJvcnQpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIHRoaXMudHJhbnNpdGlvblRvKFxuICAgICAgbG9jYXRpb24sXG4gICAgICBmdW5jdGlvbiAocm91dGUpIHtcbiAgICAgICAgdGhpcyQxLnN0YWNrID0gdGhpcyQxLnN0YWNrLnNsaWNlKDAsIHRoaXMkMS5pbmRleCArIDEpLmNvbmNhdChyb3V0ZSk7XG4gICAgICAgIHRoaXMkMS5pbmRleCsrO1xuICAgICAgICBvbkNvbXBsZXRlICYmIG9uQ29tcGxldGUocm91dGUpO1xuICAgICAgfSxcbiAgICAgIG9uQWJvcnRcbiAgICApO1xuICB9O1xuXG4gIEFic3RyYWN0SGlzdG9yeS5wcm90b3R5cGUucmVwbGFjZSA9IGZ1bmN0aW9uIHJlcGxhY2UgKGxvY2F0aW9uLCBvbkNvbXBsZXRlLCBvbkFib3J0KSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICB0aGlzLnRyYW5zaXRpb25UbyhcbiAgICAgIGxvY2F0aW9uLFxuICAgICAgZnVuY3Rpb24gKHJvdXRlKSB7XG4gICAgICAgIHRoaXMkMS5zdGFjayA9IHRoaXMkMS5zdGFjay5zbGljZSgwLCB0aGlzJDEuaW5kZXgpLmNvbmNhdChyb3V0ZSk7XG4gICAgICAgIG9uQ29tcGxldGUgJiYgb25Db21wbGV0ZShyb3V0ZSk7XG4gICAgICB9LFxuICAgICAgb25BYm9ydFxuICAgICk7XG4gIH07XG5cbiAgQWJzdHJhY3RIaXN0b3J5LnByb3RvdHlwZS5nbyA9IGZ1bmN0aW9uIGdvIChuKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICB2YXIgdGFyZ2V0SW5kZXggPSB0aGlzLmluZGV4ICsgbjtcbiAgICBpZiAodGFyZ2V0SW5kZXggPCAwIHx8IHRhcmdldEluZGV4ID49IHRoaXMuc3RhY2subGVuZ3RoKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdmFyIHJvdXRlID0gdGhpcy5zdGFja1t0YXJnZXRJbmRleF07XG4gICAgdGhpcy5jb25maXJtVHJhbnNpdGlvbihcbiAgICAgIHJvdXRlLFxuICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzJDEuaW5kZXggPSB0YXJnZXRJbmRleDtcbiAgICAgICAgdGhpcyQxLnVwZGF0ZVJvdXRlKHJvdXRlKTtcbiAgICAgIH0sXG4gICAgICBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGlmIChpc05hdmlnYXRpb25GYWlsdXJlKGVyciwgTmF2aWdhdGlvbkZhaWx1cmVUeXBlLmR1cGxpY2F0ZWQpKSB7XG4gICAgICAgICAgdGhpcyQxLmluZGV4ID0gdGFyZ2V0SW5kZXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9O1xuXG4gIEFic3RyYWN0SGlzdG9yeS5wcm90b3R5cGUuZ2V0Q3VycmVudExvY2F0aW9uID0gZnVuY3Rpb24gZ2V0Q3VycmVudExvY2F0aW9uICgpIHtcbiAgICB2YXIgY3VycmVudCA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXTtcbiAgICByZXR1cm4gY3VycmVudCA/IGN1cnJlbnQuZnVsbFBhdGggOiAnLydcbiAgfTtcblxuICBBYnN0cmFjdEhpc3RvcnkucHJvdG90eXBlLmVuc3VyZVVSTCA9IGZ1bmN0aW9uIGVuc3VyZVVSTCAoKSB7XG4gICAgLy8gbm9vcFxuICB9O1xuXG4gIHJldHVybiBBYnN0cmFjdEhpc3Rvcnk7XG59KEhpc3RvcnkpKTtcblxuLyogICovXG5cbnZhciBWdWVSb3V0ZXIgPSBmdW5jdGlvbiBWdWVSb3V0ZXIgKG9wdGlvbnMpIHtcbiAgaWYgKCBvcHRpb25zID09PSB2b2lkIDAgKSBvcHRpb25zID0ge307XG5cbiAgdGhpcy5hcHAgPSBudWxsO1xuICB0aGlzLmFwcHMgPSBbXTtcbiAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgdGhpcy5iZWZvcmVIb29rcyA9IFtdO1xuICB0aGlzLnJlc29sdmVIb29rcyA9IFtdO1xuICB0aGlzLmFmdGVySG9va3MgPSBbXTtcbiAgdGhpcy5tYXRjaGVyID0gY3JlYXRlTWF0Y2hlcihvcHRpb25zLnJvdXRlcyB8fCBbXSwgdGhpcyk7XG5cbiAgdmFyIG1vZGUgPSBvcHRpb25zLm1vZGUgfHwgJ2hhc2gnO1xuICB0aGlzLmZhbGxiYWNrID1cbiAgICBtb2RlID09PSAnaGlzdG9yeScgJiYgIXN1cHBvcnRzUHVzaFN0YXRlICYmIG9wdGlvbnMuZmFsbGJhY2sgIT09IGZhbHNlO1xuICBpZiAodGhpcy5mYWxsYmFjaykge1xuICAgIG1vZGUgPSAnaGFzaCc7XG4gIH1cbiAgaWYgKCFpbkJyb3dzZXIpIHtcbiAgICBtb2RlID0gJ2Fic3RyYWN0JztcbiAgfVxuICB0aGlzLm1vZGUgPSBtb2RlO1xuXG4gIHN3aXRjaCAobW9kZSkge1xuICAgIGNhc2UgJ2hpc3RvcnknOlxuICAgICAgdGhpcy5oaXN0b3J5ID0gbmV3IEhUTUw1SGlzdG9yeSh0aGlzLCBvcHRpb25zLmJhc2UpO1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdoYXNoJzpcbiAgICAgIHRoaXMuaGlzdG9yeSA9IG5ldyBIYXNoSGlzdG9yeSh0aGlzLCBvcHRpb25zLmJhc2UsIHRoaXMuZmFsbGJhY2spO1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdhYnN0cmFjdCc6XG4gICAgICB0aGlzLmhpc3RvcnkgPSBuZXcgQWJzdHJhY3RIaXN0b3J5KHRoaXMsIG9wdGlvbnMuYmFzZSk7XG4gICAgICBicmVha1xuICAgIGRlZmF1bHQ6XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBhc3NlcnQoZmFsc2UsIChcImludmFsaWQgbW9kZTogXCIgKyBtb2RlKSk7XG4gICAgICB9XG4gIH1cbn07XG5cbnZhciBwcm90b3R5cGVBY2Nlc3NvcnMgPSB7IGN1cnJlbnRSb3V0ZTogeyBjb25maWd1cmFibGU6IHRydWUgfSB9O1xuXG5WdWVSb3V0ZXIucHJvdG90eXBlLm1hdGNoID0gZnVuY3Rpb24gbWF0Y2ggKHJhdywgY3VycmVudCwgcmVkaXJlY3RlZEZyb20pIHtcbiAgcmV0dXJuIHRoaXMubWF0Y2hlci5tYXRjaChyYXcsIGN1cnJlbnQsIHJlZGlyZWN0ZWRGcm9tKVxufTtcblxucHJvdG90eXBlQWNjZXNzb3JzLmN1cnJlbnRSb3V0ZS5nZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmhpc3RvcnkgJiYgdGhpcy5oaXN0b3J5LmN1cnJlbnRcbn07XG5cblZ1ZVJvdXRlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uIGluaXQgKGFwcCAvKiBWdWUgY29tcG9uZW50IGluc3RhbmNlICovKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgIGFzc2VydChcbiAgICAgIGluc3RhbGwuaW5zdGFsbGVkLFxuICAgICAgXCJub3QgaW5zdGFsbGVkLiBNYWtlIHN1cmUgdG8gY2FsbCBgVnVlLnVzZShWdWVSb3V0ZXIpYCBcIiArXG4gICAgICAgIFwiYmVmb3JlIGNyZWF0aW5nIHJvb3QgaW5zdGFuY2UuXCJcbiAgICApO1xuXG4gIHRoaXMuYXBwcy5wdXNoKGFwcCk7XG5cbiAgLy8gc2V0IHVwIGFwcCBkZXN0cm95ZWQgaGFuZGxlclxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVlLXJvdXRlci9pc3N1ZXMvMjYzOVxuICBhcHAuJG9uY2UoJ2hvb2s6ZGVzdHJveWVkJywgZnVuY3Rpb24gKCkge1xuICAgIC8vIGNsZWFuIG91dCBhcHAgZnJvbSB0aGlzLmFwcHMgYXJyYXkgb25jZSBkZXN0cm95ZWRcbiAgICB2YXIgaW5kZXggPSB0aGlzJDEuYXBwcy5pbmRleE9mKGFwcCk7XG4gICAgaWYgKGluZGV4ID4gLTEpIHsgdGhpcyQxLmFwcHMuc3BsaWNlKGluZGV4LCAxKTsgfVxuICAgIC8vIGVuc3VyZSB3ZSBzdGlsbCBoYXZlIGEgbWFpbiBhcHAgb3IgbnVsbCBpZiBubyBhcHBzXG4gICAgLy8gd2UgZG8gbm90IHJlbGVhc2UgdGhlIHJvdXRlciBzbyBpdCBjYW4gYmUgcmV1c2VkXG4gICAgaWYgKHRoaXMkMS5hcHAgPT09IGFwcCkgeyB0aGlzJDEuYXBwID0gdGhpcyQxLmFwcHNbMF0gfHwgbnVsbDsgfVxuXG4gICAgaWYgKCF0aGlzJDEuYXBwKSB7XG4gICAgICAvLyBjbGVhbiB1cCBldmVudCBsaXN0ZW5lcnNcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS92dWVqcy92dWUtcm91dGVyL2lzc3Vlcy8yMzQxXG4gICAgICB0aGlzJDEuaGlzdG9yeS50ZWFyZG93bkxpc3RlbmVycygpO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gbWFpbiBhcHAgcHJldmlvdXNseSBpbml0aWFsaXplZFxuICAvLyByZXR1cm4gYXMgd2UgZG9uJ3QgbmVlZCB0byBzZXQgdXAgbmV3IGhpc3RvcnkgbGlzdGVuZXJcbiAgaWYgKHRoaXMuYXBwKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB0aGlzLmFwcCA9IGFwcDtcblxuICB2YXIgaGlzdG9yeSA9IHRoaXMuaGlzdG9yeTtcblxuICBpZiAoaGlzdG9yeSBpbnN0YW5jZW9mIEhUTUw1SGlzdG9yeSB8fCBoaXN0b3J5IGluc3RhbmNlb2YgSGFzaEhpc3RvcnkpIHtcbiAgICB2YXIgaGFuZGxlSW5pdGlhbFNjcm9sbCA9IGZ1bmN0aW9uIChyb3V0ZU9yRXJyb3IpIHtcbiAgICAgIHZhciBmcm9tID0gaGlzdG9yeS5jdXJyZW50O1xuICAgICAgdmFyIGV4cGVjdFNjcm9sbCA9IHRoaXMkMS5vcHRpb25zLnNjcm9sbEJlaGF2aW9yO1xuICAgICAgdmFyIHN1cHBvcnRzU2Nyb2xsID0gc3VwcG9ydHNQdXNoU3RhdGUgJiYgZXhwZWN0U2Nyb2xsO1xuXG4gICAgICBpZiAoc3VwcG9ydHNTY3JvbGwgJiYgJ2Z1bGxQYXRoJyBpbiByb3V0ZU9yRXJyb3IpIHtcbiAgICAgICAgaGFuZGxlU2Nyb2xsKHRoaXMkMSwgcm91dGVPckVycm9yLCBmcm9tLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgc2V0dXBMaXN0ZW5lcnMgPSBmdW5jdGlvbiAocm91dGVPckVycm9yKSB7XG4gICAgICBoaXN0b3J5LnNldHVwTGlzdGVuZXJzKCk7XG4gICAgICBoYW5kbGVJbml0aWFsU2Nyb2xsKHJvdXRlT3JFcnJvcik7XG4gICAgfTtcbiAgICBoaXN0b3J5LnRyYW5zaXRpb25UbyhcbiAgICAgIGhpc3RvcnkuZ2V0Q3VycmVudExvY2F0aW9uKCksXG4gICAgICBzZXR1cExpc3RlbmVycyxcbiAgICAgIHNldHVwTGlzdGVuZXJzXG4gICAgKTtcbiAgfVxuXG4gIGhpc3RvcnkubGlzdGVuKGZ1bmN0aW9uIChyb3V0ZSkge1xuICAgIHRoaXMkMS5hcHBzLmZvckVhY2goZnVuY3Rpb24gKGFwcCkge1xuICAgICAgYXBwLl9yb3V0ZSA9IHJvdXRlO1xuICAgIH0pO1xuICB9KTtcbn07XG5cblZ1ZVJvdXRlci5wcm90b3R5cGUuYmVmb3JlRWFjaCA9IGZ1bmN0aW9uIGJlZm9yZUVhY2ggKGZuKSB7XG4gIHJldHVybiByZWdpc3Rlckhvb2sodGhpcy5iZWZvcmVIb29rcywgZm4pXG59O1xuXG5WdWVSb3V0ZXIucHJvdG90eXBlLmJlZm9yZVJlc29sdmUgPSBmdW5jdGlvbiBiZWZvcmVSZXNvbHZlIChmbikge1xuICByZXR1cm4gcmVnaXN0ZXJIb29rKHRoaXMucmVzb2x2ZUhvb2tzLCBmbilcbn07XG5cblZ1ZVJvdXRlci5wcm90b3R5cGUuYWZ0ZXJFYWNoID0gZnVuY3Rpb24gYWZ0ZXJFYWNoIChmbikge1xuICByZXR1cm4gcmVnaXN0ZXJIb29rKHRoaXMuYWZ0ZXJIb29rcywgZm4pXG59O1xuXG5WdWVSb3V0ZXIucHJvdG90eXBlLm9uUmVhZHkgPSBmdW5jdGlvbiBvblJlYWR5IChjYiwgZXJyb3JDYikge1xuICB0aGlzLmhpc3Rvcnkub25SZWFkeShjYiwgZXJyb3JDYik7XG59O1xuXG5WdWVSb3V0ZXIucHJvdG90eXBlLm9uRXJyb3IgPSBmdW5jdGlvbiBvbkVycm9yIChlcnJvckNiKSB7XG4gIHRoaXMuaGlzdG9yeS5vbkVycm9yKGVycm9yQ2IpO1xufTtcblxuVnVlUm91dGVyLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gcHVzaCAobG9jYXRpb24sIG9uQ29tcGxldGUsIG9uQWJvcnQpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbiAgaWYgKCFvbkNvbXBsZXRlICYmICFvbkFib3J0ICYmIHR5cGVvZiBQcm9taXNlICE9PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB0aGlzJDEuaGlzdG9yeS5wdXNoKGxvY2F0aW9uLCByZXNvbHZlLCByZWplY3QpO1xuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgdGhpcy5oaXN0b3J5LnB1c2gobG9jYXRpb24sIG9uQ29tcGxldGUsIG9uQWJvcnQpO1xuICB9XG59O1xuXG5WdWVSb3V0ZXIucHJvdG90eXBlLnJlcGxhY2UgPSBmdW5jdGlvbiByZXBsYWNlIChsb2NhdGlvbiwgb25Db21wbGV0ZSwgb25BYm9ydCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIC8vICRmbG93LWRpc2FibGUtbGluZVxuICBpZiAoIW9uQ29tcGxldGUgJiYgIW9uQWJvcnQgJiYgdHlwZW9mIFByb21pc2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHRoaXMkMS5oaXN0b3J5LnJlcGxhY2UobG9jYXRpb24sIHJlc29sdmUsIHJlamVjdCk7XG4gICAgfSlcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmhpc3RvcnkucmVwbGFjZShsb2NhdGlvbiwgb25Db21wbGV0ZSwgb25BYm9ydCk7XG4gIH1cbn07XG5cblZ1ZVJvdXRlci5wcm90b3R5cGUuZ28gPSBmdW5jdGlvbiBnbyAobikge1xuICB0aGlzLmhpc3RvcnkuZ28obik7XG59O1xuXG5WdWVSb3V0ZXIucHJvdG90eXBlLmJhY2sgPSBmdW5jdGlvbiBiYWNrICgpIHtcbiAgdGhpcy5nbygtMSk7XG59O1xuXG5WdWVSb3V0ZXIucHJvdG90eXBlLmZvcndhcmQgPSBmdW5jdGlvbiBmb3J3YXJkICgpIHtcbiAgdGhpcy5nbygxKTtcbn07XG5cblZ1ZVJvdXRlci5wcm90b3R5cGUuZ2V0TWF0Y2hlZENvbXBvbmVudHMgPSBmdW5jdGlvbiBnZXRNYXRjaGVkQ29tcG9uZW50cyAodG8pIHtcbiAgdmFyIHJvdXRlID0gdG9cbiAgICA/IHRvLm1hdGNoZWRcbiAgICAgID8gdG9cbiAgICAgIDogdGhpcy5yZXNvbHZlKHRvKS5yb3V0ZVxuICAgIDogdGhpcy5jdXJyZW50Um91dGU7XG4gIGlmICghcm91dGUpIHtcbiAgICByZXR1cm4gW11cbiAgfVxuICByZXR1cm4gW10uY29uY2F0LmFwcGx5KFxuICAgIFtdLFxuICAgIHJvdXRlLm1hdGNoZWQubWFwKGZ1bmN0aW9uIChtKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMobS5jb21wb25lbnRzKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICByZXR1cm4gbS5jb21wb25lbnRzW2tleV1cbiAgICAgIH0pXG4gICAgfSlcbiAgKVxufTtcblxuVnVlUm91dGVyLnByb3RvdHlwZS5yZXNvbHZlID0gZnVuY3Rpb24gcmVzb2x2ZSAoXG4gIHRvLFxuICBjdXJyZW50LFxuICBhcHBlbmRcbikge1xuICBjdXJyZW50ID0gY3VycmVudCB8fCB0aGlzLmhpc3RvcnkuY3VycmVudDtcbiAgdmFyIGxvY2F0aW9uID0gbm9ybWFsaXplTG9jYXRpb24odG8sIGN1cnJlbnQsIGFwcGVuZCwgdGhpcyk7XG4gIHZhciByb3V0ZSA9IHRoaXMubWF0Y2gobG9jYXRpb24sIGN1cnJlbnQpO1xuICB2YXIgZnVsbFBhdGggPSByb3V0ZS5yZWRpcmVjdGVkRnJvbSB8fCByb3V0ZS5mdWxsUGF0aDtcbiAgdmFyIGJhc2UgPSB0aGlzLmhpc3RvcnkuYmFzZTtcbiAgdmFyIGhyZWYgPSBjcmVhdGVIcmVmKGJhc2UsIGZ1bGxQYXRoLCB0aGlzLm1vZGUpO1xuICByZXR1cm4ge1xuICAgIGxvY2F0aW9uOiBsb2NhdGlvbixcbiAgICByb3V0ZTogcm91dGUsXG4gICAgaHJlZjogaHJlZixcbiAgICAvLyBmb3IgYmFja3dhcmRzIGNvbXBhdFxuICAgIG5vcm1hbGl6ZWRUbzogbG9jYXRpb24sXG4gICAgcmVzb2x2ZWQ6IHJvdXRlXG4gIH1cbn07XG5cblZ1ZVJvdXRlci5wcm90b3R5cGUuYWRkUm91dGVzID0gZnVuY3Rpb24gYWRkUm91dGVzIChyb3V0ZXMpIHtcbiAgdGhpcy5tYXRjaGVyLmFkZFJvdXRlcyhyb3V0ZXMpO1xuICBpZiAodGhpcy5oaXN0b3J5LmN1cnJlbnQgIT09IFNUQVJUKSB7XG4gICAgdGhpcy5oaXN0b3J5LnRyYW5zaXRpb25Ubyh0aGlzLmhpc3RvcnkuZ2V0Q3VycmVudExvY2F0aW9uKCkpO1xuICB9XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyggVnVlUm91dGVyLnByb3RvdHlwZSwgcHJvdG90eXBlQWNjZXNzb3JzICk7XG5cbmZ1bmN0aW9uIHJlZ2lzdGVySG9vayAobGlzdCwgZm4pIHtcbiAgbGlzdC5wdXNoKGZuKTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaSA9IGxpc3QuaW5kZXhPZihmbik7XG4gICAgaWYgKGkgPiAtMSkgeyBsaXN0LnNwbGljZShpLCAxKTsgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUhyZWYgKGJhc2UsIGZ1bGxQYXRoLCBtb2RlKSB7XG4gIHZhciBwYXRoID0gbW9kZSA9PT0gJ2hhc2gnID8gJyMnICsgZnVsbFBhdGggOiBmdWxsUGF0aDtcbiAgcmV0dXJuIGJhc2UgPyBjbGVhblBhdGgoYmFzZSArICcvJyArIHBhdGgpIDogcGF0aFxufVxuXG5WdWVSb3V0ZXIuaW5zdGFsbCA9IGluc3RhbGw7XG5WdWVSb3V0ZXIudmVyc2lvbiA9ICczLjQuMyc7XG5WdWVSb3V0ZXIuaXNOYXZpZ2F0aW9uRmFpbHVyZSA9IGlzTmF2aWdhdGlvbkZhaWx1cmU7XG5WdWVSb3V0ZXIuTmF2aWdhdGlvbkZhaWx1cmVUeXBlID0gTmF2aWdhdGlvbkZhaWx1cmVUeXBlO1xuXG5pZiAoaW5Ccm93c2VyICYmIHdpbmRvdy5WdWUpIHtcbiAgd2luZG93LlZ1ZS51c2UoVnVlUm91dGVyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgVnVlUm91dGVyO1xuIiwiLyohXG4gKiB2dWUtaTE4biB2OC4yMS4wIFxuICogKGMpIDIwMjAga2F6dXlhIGthd2FndWNoaVxuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovXG4vKiAgKi9cblxuLyoqXG4gKiBjb25zdGFudHNcbiAqL1xuXG52YXIgbnVtYmVyRm9ybWF0S2V5cyA9IFtcbiAgJ3N0eWxlJyxcbiAgJ2N1cnJlbmN5JyxcbiAgJ2N1cnJlbmN5RGlzcGxheScsXG4gICd1c2VHcm91cGluZycsXG4gICdtaW5pbXVtSW50ZWdlckRpZ2l0cycsXG4gICdtaW5pbXVtRnJhY3Rpb25EaWdpdHMnLFxuICAnbWF4aW11bUZyYWN0aW9uRGlnaXRzJyxcbiAgJ21pbmltdW1TaWduaWZpY2FudERpZ2l0cycsXG4gICdtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMnLFxuICAnbG9jYWxlTWF0Y2hlcicsXG4gICdmb3JtYXRNYXRjaGVyJyxcbiAgJ3VuaXQnXG5dO1xuXG4vKipcbiAqIHV0aWxpdGllc1xuICovXG5cbmZ1bmN0aW9uIHdhcm4gKG1zZywgZXJyKSB7XG4gIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb25zb2xlLndhcm4oJ1t2dWUtaTE4bl0gJyArIG1zZyk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGVycikge1xuICAgICAgY29uc29sZS53YXJuKGVyci5zdGFjayk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGVycm9yIChtc2csIGVycikge1xuICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgY29uc29sZS5lcnJvcignW3Z1ZS1pMThuXSAnICsgbXNnKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVyci5zdGFjayk7XG4gICAgfVxuICB9XG59XG5cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxuZnVuY3Rpb24gaXNPYmplY3QgKG9iaikge1xuICByZXR1cm4gb2JqICE9PSBudWxsICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnXG59XG5cbmZ1bmN0aW9uIGlzQm9vbGVhbiAodmFsKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsID09PSAnYm9vbGVhbidcbn1cblxuZnVuY3Rpb24gaXNTdHJpbmcgKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZydcbn1cblxudmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbnZhciBPQkpFQ1RfU1RSSU5HID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0IChvYmopIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwob2JqKSA9PT0gT0JKRUNUX1NUUklOR1xufVxuXG5mdW5jdGlvbiBpc051bGwgKHZhbCkge1xuICByZXR1cm4gdmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb24gKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJ1xufVxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MgKCkge1xuICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICB3aGlsZSAoIGxlbi0tICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiBdO1xuXG4gIHZhciBsb2NhbGUgPSBudWxsO1xuICB2YXIgcGFyYW1zID0gbnVsbDtcbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgaWYgKGlzT2JqZWN0KGFyZ3NbMF0pIHx8IGlzQXJyYXkoYXJnc1swXSkpIHtcbiAgICAgIHBhcmFtcyA9IGFyZ3NbMF07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGxvY2FsZSA9IGFyZ3NbMF07XG4gICAgfVxuICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgbG9jYWxlID0gYXJnc1swXTtcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGlzT2JqZWN0KGFyZ3NbMV0pIHx8IGlzQXJyYXkoYXJnc1sxXSkpIHtcbiAgICAgIHBhcmFtcyA9IGFyZ3NbMV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsgbG9jYWxlOiBsb2NhbGUsIHBhcmFtczogcGFyYW1zIH1cbn1cblxuZnVuY3Rpb24gbG9vc2VDbG9uZSAob2JqKSB7XG4gIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaikpXG59XG5cbmZ1bmN0aW9uIHJlbW92ZSAoYXJyLCBpdGVtKSB7XG4gIGlmIChhcnIubGVuZ3RoKSB7XG4gICAgdmFyIGluZGV4ID0gYXJyLmluZGV4T2YoaXRlbSk7XG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHJldHVybiBhcnIuc3BsaWNlKGluZGV4LCAxKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpbmNsdWRlcyAoYXJyLCBpdGVtKSB7XG4gIHJldHVybiAhIX5hcnIuaW5kZXhPZihpdGVtKVxufVxuXG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuZnVuY3Rpb24gaGFzT3duIChvYmosIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSlcbn1cblxuZnVuY3Rpb24gbWVyZ2UgKHRhcmdldCkge1xuICB2YXIgYXJndW1lbnRzJDEgPSBhcmd1bWVudHM7XG5cbiAgdmFyIG91dHB1dCA9IE9iamVjdCh0YXJnZXQpO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHMkMVtpXTtcbiAgICBpZiAoc291cmNlICE9PSB1bmRlZmluZWQgJiYgc291cmNlICE9PSBudWxsKSB7XG4gICAgICB2YXIga2V5ID0gKHZvaWQgMCk7XG4gICAgICBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKGhhc093bihzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICBpZiAoaXNPYmplY3Qoc291cmNlW2tleV0pKSB7XG4gICAgICAgICAgICBvdXRwdXRba2V5XSA9IG1lcmdlKG91dHB1dFtrZXldLCBzb3VyY2Vba2V5XSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dHB1dFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXRwdXRcbn1cblxuZnVuY3Rpb24gbG9vc2VFcXVhbCAoYSwgYikge1xuICBpZiAoYSA9PT0gYikgeyByZXR1cm4gdHJ1ZSB9XG4gIHZhciBpc09iamVjdEEgPSBpc09iamVjdChhKTtcbiAgdmFyIGlzT2JqZWN0QiA9IGlzT2JqZWN0KGIpO1xuICBpZiAoaXNPYmplY3RBICYmIGlzT2JqZWN0Qikge1xuICAgIHRyeSB7XG4gICAgICB2YXIgaXNBcnJheUEgPSBpc0FycmF5KGEpO1xuICAgICAgdmFyIGlzQXJyYXlCID0gaXNBcnJheShiKTtcbiAgICAgIGlmIChpc0FycmF5QSAmJiBpc0FycmF5Qikge1xuICAgICAgICByZXR1cm4gYS5sZW5ndGggPT09IGIubGVuZ3RoICYmIGEuZXZlcnkoZnVuY3Rpb24gKGUsIGkpIHtcbiAgICAgICAgICByZXR1cm4gbG9vc2VFcXVhbChlLCBiW2ldKVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmICghaXNBcnJheUEgJiYgIWlzQXJyYXlCKSB7XG4gICAgICAgIHZhciBrZXlzQSA9IE9iamVjdC5rZXlzKGEpO1xuICAgICAgICB2YXIga2V5c0IgPSBPYmplY3Qua2V5cyhiKTtcbiAgICAgICAgcmV0dXJuIGtleXNBLmxlbmd0aCA9PT0ga2V5c0IubGVuZ3RoICYmIGtleXNBLmV2ZXJ5KGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICByZXR1cm4gbG9vc2VFcXVhbChhW2tleV0sIGJba2V5XSlcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH0gZWxzZSBpZiAoIWlzT2JqZWN0QSAmJiAhaXNPYmplY3RCKSB7XG4gICAgcmV0dXJuIFN0cmluZyhhKSA9PT0gU3RyaW5nKGIpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGV4dGVuZCAoVnVlKSB7XG4gIGlmICghVnVlLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgnJGkxOG4nKSkge1xuICAgIC8vICRGbG93Rml4TWVcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlLnByb3RvdHlwZSwgJyRpMThuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQgKCkgeyByZXR1cm4gdGhpcy5faTE4biB9XG4gICAgfSk7XG4gIH1cblxuICBWdWUucHJvdG90eXBlLiR0ID0gZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciB2YWx1ZXMgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgd2hpbGUgKCBsZW4tLSA+IDAgKSB2YWx1ZXNbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gKyAxIF07XG5cbiAgICB2YXIgaTE4biA9IHRoaXMuJGkxOG47XG4gICAgcmV0dXJuIGkxOG4uX3QuYXBwbHkoaTE4biwgWyBrZXksIGkxOG4ubG9jYWxlLCBpMThuLl9nZXRNZXNzYWdlcygpLCB0aGlzIF0uY29uY2F0KCB2YWx1ZXMgKSlcbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiR0YyA9IGZ1bmN0aW9uIChrZXksIGNob2ljZSkge1xuICAgIHZhciB2YWx1ZXMgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7XG4gICAgd2hpbGUgKCBsZW4tLSA+IDAgKSB2YWx1ZXNbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gKyAyIF07XG5cbiAgICB2YXIgaTE4biA9IHRoaXMuJGkxOG47XG4gICAgcmV0dXJuIGkxOG4uX3RjLmFwcGx5KGkxOG4sIFsga2V5LCBpMThuLmxvY2FsZSwgaTE4bi5fZ2V0TWVzc2FnZXMoKSwgdGhpcywgY2hvaWNlIF0uY29uY2F0KCB2YWx1ZXMgKSlcbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiR0ZSA9IGZ1bmN0aW9uIChrZXksIGxvY2FsZSkge1xuICAgIHZhciBpMThuID0gdGhpcy4kaTE4bjtcbiAgICByZXR1cm4gaTE4bi5fdGUoa2V5LCBpMThuLmxvY2FsZSwgaTE4bi5fZ2V0TWVzc2FnZXMoKSwgbG9jYWxlKVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJGQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICB2YXIgcmVmO1xuXG4gICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgd2hpbGUgKCBsZW4tLSA+IDAgKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuICsgMSBdO1xuICAgIHJldHVybiAocmVmID0gdGhpcy4kaTE4bikuZC5hcHBseShyZWYsIFsgdmFsdWUgXS5jb25jYXQoIGFyZ3MgKSlcbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRuID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgdmFyIHJlZjtcblxuICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGggLSAxO1xuICAgIHdoaWxlICggbGVuLS0gPiAwICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiArIDEgXTtcbiAgICByZXR1cm4gKHJlZiA9IHRoaXMuJGkxOG4pLm4uYXBwbHkocmVmLCBbIHZhbHVlIF0uY29uY2F0KCBhcmdzICkpXG4gIH07XG59XG5cbi8qICAqL1xuXG52YXIgbWl4aW4gPSB7XG4gIGJlZm9yZUNyZWF0ZTogZnVuY3Rpb24gYmVmb3JlQ3JlYXRlICgpIHtcbiAgICB2YXIgb3B0aW9ucyA9IHRoaXMuJG9wdGlvbnM7XG4gICAgb3B0aW9ucy5pMThuID0gb3B0aW9ucy5pMThuIHx8IChvcHRpb25zLl9faTE4biA/IHt9IDogbnVsbCk7XG5cbiAgICBpZiAob3B0aW9ucy5pMThuKSB7XG4gICAgICBpZiAob3B0aW9ucy5pMThuIGluc3RhbmNlb2YgVnVlSTE4bikge1xuICAgICAgICAvLyBpbml0IGxvY2FsZSBtZXNzYWdlcyB2aWEgY3VzdG9tIGJsb2Nrc1xuICAgICAgICBpZiAob3B0aW9ucy5fX2kxOG4pIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIGxvY2FsZU1lc3NhZ2VzID0ge307XG4gICAgICAgICAgICBvcHRpb25zLl9faTE4bi5mb3JFYWNoKGZ1bmN0aW9uIChyZXNvdXJjZSkge1xuICAgICAgICAgICAgICBsb2NhbGVNZXNzYWdlcyA9IG1lcmdlKGxvY2FsZU1lc3NhZ2VzLCBKU09OLnBhcnNlKHJlc291cmNlKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGxvY2FsZU1lc3NhZ2VzKS5mb3JFYWNoKGZ1bmN0aW9uIChsb2NhbGUpIHtcbiAgICAgICAgICAgICAgb3B0aW9ucy5pMThuLm1lcmdlTG9jYWxlTWVzc2FnZShsb2NhbGUsIGxvY2FsZU1lc3NhZ2VzW2xvY2FsZV0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgZXJyb3IoXCJDYW5ub3QgcGFyc2UgbG9jYWxlIG1lc3NhZ2VzIHZpYSBjdXN0b20gYmxvY2tzLlwiLCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faTE4biA9IG9wdGlvbnMuaTE4bjtcbiAgICAgICAgdGhpcy5faTE4bldhdGNoZXIgPSB0aGlzLl9pMThuLndhdGNoSTE4bkRhdGEoKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdChvcHRpb25zLmkxOG4pKSB7XG4gICAgICAgIHZhciByb290STE4biA9IHRoaXMuJHJvb3QgJiYgdGhpcy4kcm9vdC4kaTE4biAmJiB0aGlzLiRyb290LiRpMThuIGluc3RhbmNlb2YgVnVlSTE4blxuICAgICAgICAgID8gdGhpcy4kcm9vdC4kaTE4blxuICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgLy8gY29tcG9uZW50IGxvY2FsIGkxOG5cbiAgICAgICAgaWYgKHJvb3RJMThuKSB7XG4gICAgICAgICAgb3B0aW9ucy5pMThuLnJvb3QgPSB0aGlzLiRyb290O1xuICAgICAgICAgIG9wdGlvbnMuaTE4bi5mb3JtYXR0ZXIgPSByb290STE4bi5mb3JtYXR0ZXI7XG4gICAgICAgICAgb3B0aW9ucy5pMThuLmZhbGxiYWNrTG9jYWxlID0gcm9vdEkxOG4uZmFsbGJhY2tMb2NhbGU7XG4gICAgICAgICAgb3B0aW9ucy5pMThuLmZvcm1hdEZhbGxiYWNrTWVzc2FnZXMgPSByb290STE4bi5mb3JtYXRGYWxsYmFja01lc3NhZ2VzO1xuICAgICAgICAgIG9wdGlvbnMuaTE4bi5zaWxlbnRUcmFuc2xhdGlvbldhcm4gPSByb290STE4bi5zaWxlbnRUcmFuc2xhdGlvbldhcm47XG4gICAgICAgICAgb3B0aW9ucy5pMThuLnNpbGVudEZhbGxiYWNrV2FybiA9IHJvb3RJMThuLnNpbGVudEZhbGxiYWNrV2FybjtcbiAgICAgICAgICBvcHRpb25zLmkxOG4ucGx1cmFsaXphdGlvblJ1bGVzID0gcm9vdEkxOG4ucGx1cmFsaXphdGlvblJ1bGVzO1xuICAgICAgICAgIG9wdGlvbnMuaTE4bi5wcmVzZXJ2ZURpcmVjdGl2ZUNvbnRlbnQgPSByb290STE4bi5wcmVzZXJ2ZURpcmVjdGl2ZUNvbnRlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpbml0IGxvY2FsZSBtZXNzYWdlcyB2aWEgY3VzdG9tIGJsb2Nrc1xuICAgICAgICBpZiAob3B0aW9ucy5fX2kxOG4pIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIGxvY2FsZU1lc3NhZ2VzJDEgPSB7fTtcbiAgICAgICAgICAgIG9wdGlvbnMuX19pMThuLmZvckVhY2goZnVuY3Rpb24gKHJlc291cmNlKSB7XG4gICAgICAgICAgICAgIGxvY2FsZU1lc3NhZ2VzJDEgPSBtZXJnZShsb2NhbGVNZXNzYWdlcyQxLCBKU09OLnBhcnNlKHJlc291cmNlKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG9wdGlvbnMuaTE4bi5tZXNzYWdlcyA9IGxvY2FsZU1lc3NhZ2VzJDE7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgd2FybihcIkNhbm5vdCBwYXJzZSBsb2NhbGUgbWVzc2FnZXMgdmlhIGN1c3RvbSBibG9ja3MuXCIsIGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZhciByZWYgPSBvcHRpb25zLmkxOG47XG4gICAgICAgIHZhciBzaGFyZWRNZXNzYWdlcyA9IHJlZi5zaGFyZWRNZXNzYWdlcztcbiAgICAgICAgaWYgKHNoYXJlZE1lc3NhZ2VzICYmIGlzUGxhaW5PYmplY3Qoc2hhcmVkTWVzc2FnZXMpKSB7XG4gICAgICAgICAgb3B0aW9ucy5pMThuLm1lc3NhZ2VzID0gbWVyZ2Uob3B0aW9ucy5pMThuLm1lc3NhZ2VzLCBzaGFyZWRNZXNzYWdlcyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9pMThuID0gbmV3IFZ1ZUkxOG4ob3B0aW9ucy5pMThuKTtcbiAgICAgICAgdGhpcy5faTE4bldhdGNoZXIgPSB0aGlzLl9pMThuLndhdGNoSTE4bkRhdGEoKTtcblxuICAgICAgICBpZiAob3B0aW9ucy5pMThuLnN5bmMgPT09IHVuZGVmaW5lZCB8fCAhIW9wdGlvbnMuaTE4bi5zeW5jKSB7XG4gICAgICAgICAgdGhpcy5fbG9jYWxlV2F0Y2hlciA9IHRoaXMuJGkxOG4ud2F0Y2hMb2NhbGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyb290STE4bikge1xuICAgICAgICAgIHJvb3RJMThuLm9uQ29tcG9uZW50SW5zdGFuY2VDcmVhdGVkKHRoaXMuX2kxOG4pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHdhcm4oXCJDYW5ub3QgYmUgaW50ZXJwcmV0ZWQgJ2kxOG4nIG9wdGlvbi5cIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuJHJvb3QgJiYgdGhpcy4kcm9vdC4kaTE4biAmJiB0aGlzLiRyb290LiRpMThuIGluc3RhbmNlb2YgVnVlSTE4bikge1xuICAgICAgLy8gcm9vdCBpMThuXG4gICAgICB0aGlzLl9pMThuID0gdGhpcy4kcm9vdC4kaTE4bjtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMucGFyZW50ICYmIG9wdGlvbnMucGFyZW50LiRpMThuICYmIG9wdGlvbnMucGFyZW50LiRpMThuIGluc3RhbmNlb2YgVnVlSTE4bikge1xuICAgICAgLy8gcGFyZW50IGkxOG5cbiAgICAgIHRoaXMuX2kxOG4gPSBvcHRpb25zLnBhcmVudC4kaTE4bjtcbiAgICB9XG4gIH0sXG5cbiAgYmVmb3JlTW91bnQ6IGZ1bmN0aW9uIGJlZm9yZU1vdW50ICgpIHtcbiAgICB2YXIgb3B0aW9ucyA9IHRoaXMuJG9wdGlvbnM7XG4gICAgb3B0aW9ucy5pMThuID0gb3B0aW9ucy5pMThuIHx8IChvcHRpb25zLl9faTE4biA/IHt9IDogbnVsbCk7XG5cbiAgICBpZiAob3B0aW9ucy5pMThuKSB7XG4gICAgICBpZiAob3B0aW9ucy5pMThuIGluc3RhbmNlb2YgVnVlSTE4bikge1xuICAgICAgICAvLyBpbml0IGxvY2FsZSBtZXNzYWdlcyB2aWEgY3VzdG9tIGJsb2Nrc1xuICAgICAgICB0aGlzLl9pMThuLnN1YnNjcmliZURhdGFDaGFuZ2luZyh0aGlzKTtcbiAgICAgICAgdGhpcy5fc3Vic2NyaWJpbmcgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KG9wdGlvbnMuaTE4bikpIHtcbiAgICAgICAgdGhpcy5faTE4bi5zdWJzY3JpYmVEYXRhQ2hhbmdpbmcodGhpcyk7XG4gICAgICAgIHRoaXMuX3N1YnNjcmliaW5nID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgd2FybihcIkNhbm5vdCBiZSBpbnRlcnByZXRlZCAnaTE4bicgb3B0aW9uLlwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy4kcm9vdCAmJiB0aGlzLiRyb290LiRpMThuICYmIHRoaXMuJHJvb3QuJGkxOG4gaW5zdGFuY2VvZiBWdWVJMThuKSB7XG4gICAgICB0aGlzLl9pMThuLnN1YnNjcmliZURhdGFDaGFuZ2luZyh0aGlzKTtcbiAgICAgIHRoaXMuX3N1YnNjcmliaW5nID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMucGFyZW50ICYmIG9wdGlvbnMucGFyZW50LiRpMThuICYmIG9wdGlvbnMucGFyZW50LiRpMThuIGluc3RhbmNlb2YgVnVlSTE4bikge1xuICAgICAgdGhpcy5faTE4bi5zdWJzY3JpYmVEYXRhQ2hhbmdpbmcodGhpcyk7XG4gICAgICB0aGlzLl9zdWJzY3JpYmluZyA9IHRydWU7XG4gICAgfVxuICB9LFxuXG4gIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3kgKCkge1xuICAgIGlmICghdGhpcy5faTE4bikgeyByZXR1cm4gfVxuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChzZWxmLl9zdWJzY3JpYmluZykge1xuICAgICAgICBzZWxmLl9pMThuLnVuc3Vic2NyaWJlRGF0YUNoYW5naW5nKHNlbGYpO1xuICAgICAgICBkZWxldGUgc2VsZi5fc3Vic2NyaWJpbmc7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWxmLl9pMThuV2F0Y2hlcikge1xuICAgICAgICBzZWxmLl9pMThuV2F0Y2hlcigpO1xuICAgICAgICBzZWxmLl9pMThuLmRlc3Ryb3lWTSgpO1xuICAgICAgICBkZWxldGUgc2VsZi5faTE4bldhdGNoZXI7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWxmLl9sb2NhbGVXYXRjaGVyKSB7XG4gICAgICAgIHNlbGYuX2xvY2FsZVdhdGNoZXIoKTtcbiAgICAgICAgZGVsZXRlIHNlbGYuX2xvY2FsZVdhdGNoZXI7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn07XG5cbi8qICAqL1xuXG52YXIgaW50ZXJwb2xhdGlvbkNvbXBvbmVudCA9IHtcbiAgbmFtZTogJ2kxOG4nLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczoge1xuICAgIHRhZzoge1xuICAgICAgdHlwZTogW1N0cmluZywgQm9vbGVhbiwgT2JqZWN0XSxcbiAgICAgIGRlZmF1bHQ6ICdzcGFuJ1xuICAgIH0sXG4gICAgcGF0aDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICB9LFxuICAgIGxvY2FsZToge1xuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBwbGFjZXM6IHtcbiAgICAgIHR5cGU6IFtBcnJheSwgT2JqZWN0XVxuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIgKGgsIHJlZikge1xuICAgIHZhciBkYXRhID0gcmVmLmRhdGE7XG4gICAgdmFyIHBhcmVudCA9IHJlZi5wYXJlbnQ7XG4gICAgdmFyIHByb3BzID0gcmVmLnByb3BzO1xuICAgIHZhciBzbG90cyA9IHJlZi5zbG90cztcblxuICAgIHZhciAkaTE4biA9IHBhcmVudC4kaTE4bjtcbiAgICBpZiAoISRpMThuKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB3YXJuKCdDYW5ub3QgZmluZCBWdWVJMThuIGluc3RhbmNlIScpO1xuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdmFyIHBhdGggPSBwcm9wcy5wYXRoO1xuICAgIHZhciBsb2NhbGUgPSBwcm9wcy5sb2NhbGU7XG4gICAgdmFyIHBsYWNlcyA9IHByb3BzLnBsYWNlcztcbiAgICB2YXIgcGFyYW1zID0gc2xvdHMoKTtcbiAgICB2YXIgY2hpbGRyZW4gPSAkaTE4bi5pKFxuICAgICAgcGF0aCxcbiAgICAgIGxvY2FsZSxcbiAgICAgIG9ubHlIYXNEZWZhdWx0UGxhY2UocGFyYW1zKSB8fCBwbGFjZXNcbiAgICAgICAgPyB1c2VMZWdhY3lQbGFjZXMocGFyYW1zLmRlZmF1bHQsIHBsYWNlcylcbiAgICAgICAgOiBwYXJhbXNcbiAgICApO1xuXG4gICAgdmFyIHRhZyA9ICghIXByb3BzLnRhZyAmJiBwcm9wcy50YWcgIT09IHRydWUpIHx8IHByb3BzLnRhZyA9PT0gZmFsc2UgPyBwcm9wcy50YWcgOiAnc3Bhbic7XG4gICAgcmV0dXJuIHRhZyA/IGgodGFnLCBkYXRhLCBjaGlsZHJlbikgOiBjaGlsZHJlblxuICB9XG59O1xuXG5mdW5jdGlvbiBvbmx5SGFzRGVmYXVsdFBsYWNlIChwYXJhbXMpIHtcbiAgdmFyIHByb3A7XG4gIGZvciAocHJvcCBpbiBwYXJhbXMpIHtcbiAgICBpZiAocHJvcCAhPT0gJ2RlZmF1bHQnKSB7IHJldHVybiBmYWxzZSB9XG4gIH1cbiAgcmV0dXJuIEJvb2xlYW4ocHJvcClcbn1cblxuZnVuY3Rpb24gdXNlTGVnYWN5UGxhY2VzIChjaGlsZHJlbiwgcGxhY2VzKSB7XG4gIHZhciBwYXJhbXMgPSBwbGFjZXMgPyBjcmVhdGVQYXJhbXNGcm9tUGxhY2VzKHBsYWNlcykgOiB7fTtcblxuICBpZiAoIWNoaWxkcmVuKSB7IHJldHVybiBwYXJhbXMgfVxuXG4gIC8vIEZpbHRlciBlbXB0eSB0ZXh0IG5vZGVzXG4gIGNoaWxkcmVuID0gY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIHJldHVybiBjaGlsZC50YWcgfHwgY2hpbGQudGV4dC50cmltKCkgIT09ICcnXG4gIH0pO1xuXG4gIHZhciBldmVyeVBsYWNlID0gY2hpbGRyZW4uZXZlcnkodm5vZGVIYXNQbGFjZUF0dHJpYnV0ZSk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGV2ZXJ5UGxhY2UpIHtcbiAgICB3YXJuKCdgcGxhY2VgIGF0dHJpYnV0ZSBpcyBkZXByZWNhdGVkIGluIG5leHQgbWFqb3IgdmVyc2lvbi4gUGxlYXNlIHN3aXRjaCB0byBWdWUgc2xvdHMuJyk7XG4gIH1cblxuICByZXR1cm4gY2hpbGRyZW4ucmVkdWNlKFxuICAgIGV2ZXJ5UGxhY2UgPyBhc3NpZ25DaGlsZFBsYWNlIDogYXNzaWduQ2hpbGRJbmRleCxcbiAgICBwYXJhbXNcbiAgKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVQYXJhbXNGcm9tUGxhY2VzIChwbGFjZXMpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB3YXJuKCdgcGxhY2VzYCBwcm9wIGlzIGRlcHJlY2F0ZWQgaW4gbmV4dCBtYWpvciB2ZXJzaW9uLiBQbGVhc2Ugc3dpdGNoIHRvIFZ1ZSBzbG90cy4nKTtcbiAgfVxuXG4gIHJldHVybiBBcnJheS5pc0FycmF5KHBsYWNlcylcbiAgICA/IHBsYWNlcy5yZWR1Y2UoYXNzaWduQ2hpbGRJbmRleCwge30pXG4gICAgOiBPYmplY3QuYXNzaWduKHt9LCBwbGFjZXMpXG59XG5cbmZ1bmN0aW9uIGFzc2lnbkNoaWxkUGxhY2UgKHBhcmFtcywgY2hpbGQpIHtcbiAgaWYgKGNoaWxkLmRhdGEgJiYgY2hpbGQuZGF0YS5hdHRycyAmJiBjaGlsZC5kYXRhLmF0dHJzLnBsYWNlKSB7XG4gICAgcGFyYW1zW2NoaWxkLmRhdGEuYXR0cnMucGxhY2VdID0gY2hpbGQ7XG4gIH1cbiAgcmV0dXJuIHBhcmFtc1xufVxuXG5mdW5jdGlvbiBhc3NpZ25DaGlsZEluZGV4IChwYXJhbXMsIGNoaWxkLCBpbmRleCkge1xuICBwYXJhbXNbaW5kZXhdID0gY2hpbGQ7XG4gIHJldHVybiBwYXJhbXNcbn1cblxuZnVuY3Rpb24gdm5vZGVIYXNQbGFjZUF0dHJpYnV0ZSAodm5vZGUpIHtcbiAgcmV0dXJuIEJvb2xlYW4odm5vZGUuZGF0YSAmJiB2bm9kZS5kYXRhLmF0dHJzICYmIHZub2RlLmRhdGEuYXR0cnMucGxhY2UpXG59XG5cbi8qICAqL1xuXG52YXIgbnVtYmVyQ29tcG9uZW50ID0ge1xuICBuYW1lOiAnaTE4bi1uJyxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcHJvcHM6IHtcbiAgICB0YWc6IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIEJvb2xlYW4sIE9iamVjdF0sXG4gICAgICBkZWZhdWx0OiAnc3BhbidcbiAgICB9LFxuICAgIHZhbHVlOiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdXG4gICAgfSxcbiAgICBsb2NhbGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIgKGgsIHJlZikge1xuICAgIHZhciBwcm9wcyA9IHJlZi5wcm9wcztcbiAgICB2YXIgcGFyZW50ID0gcmVmLnBhcmVudDtcbiAgICB2YXIgZGF0YSA9IHJlZi5kYXRhO1xuXG4gICAgdmFyIGkxOG4gPSBwYXJlbnQuJGkxOG47XG5cbiAgICBpZiAoIWkxOG4pIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHdhcm4oJ0Nhbm5vdCBmaW5kIFZ1ZUkxOG4gaW5zdGFuY2UhJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHZhciBrZXkgPSBudWxsO1xuICAgIHZhciBvcHRpb25zID0gbnVsbDtcblxuICAgIGlmIChpc1N0cmluZyhwcm9wcy5mb3JtYXQpKSB7XG4gICAgICBrZXkgPSBwcm9wcy5mb3JtYXQ7XG4gICAgfSBlbHNlIGlmIChpc09iamVjdChwcm9wcy5mb3JtYXQpKSB7XG4gICAgICBpZiAocHJvcHMuZm9ybWF0LmtleSkge1xuICAgICAgICBrZXkgPSBwcm9wcy5mb3JtYXQua2V5O1xuICAgICAgfVxuXG4gICAgICAvLyBGaWx0ZXIgb3V0IG51bWJlciBmb3JtYXQgb3B0aW9ucyBvbmx5XG4gICAgICBvcHRpb25zID0gT2JqZWN0LmtleXMocHJvcHMuZm9ybWF0KS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcHJvcCkge1xuICAgICAgICB2YXIgb2JqO1xuXG4gICAgICAgIGlmIChpbmNsdWRlcyhudW1iZXJGb3JtYXRLZXlzLCBwcm9wKSkge1xuICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBhY2MsICggb2JqID0ge30sIG9ialtwcm9wXSA9IHByb3BzLmZvcm1hdFtwcm9wXSwgb2JqICkpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjY1xuICAgICAgfSwgbnVsbCk7XG4gICAgfVxuXG4gICAgdmFyIGxvY2FsZSA9IHByb3BzLmxvY2FsZSB8fCBpMThuLmxvY2FsZTtcbiAgICB2YXIgcGFydHMgPSBpMThuLl9udHAocHJvcHMudmFsdWUsIGxvY2FsZSwga2V5LCBvcHRpb25zKTtcblxuICAgIHZhciB2YWx1ZXMgPSBwYXJ0cy5tYXAoZnVuY3Rpb24gKHBhcnQsIGluZGV4KSB7XG4gICAgICB2YXIgb2JqO1xuXG4gICAgICB2YXIgc2xvdCA9IGRhdGEuc2NvcGVkU2xvdHMgJiYgZGF0YS5zY29wZWRTbG90c1twYXJ0LnR5cGVdO1xuICAgICAgcmV0dXJuIHNsb3QgPyBzbG90KCggb2JqID0ge30sIG9ialtwYXJ0LnR5cGVdID0gcGFydC52YWx1ZSwgb2JqLmluZGV4ID0gaW5kZXgsIG9iai5wYXJ0cyA9IHBhcnRzLCBvYmogKSkgOiBwYXJ0LnZhbHVlXG4gICAgfSk7XG5cbiAgICB2YXIgdGFnID0gKCEhcHJvcHMudGFnICYmIHByb3BzLnRhZyAhPT0gdHJ1ZSkgfHwgcHJvcHMudGFnID09PSBmYWxzZSA/IHByb3BzLnRhZyA6ICdzcGFuJztcbiAgICByZXR1cm4gdGFnXG4gICAgICA/IGgodGFnLCB7XG4gICAgICAgIGF0dHJzOiBkYXRhLmF0dHJzLFxuICAgICAgICAnY2xhc3MnOiBkYXRhWydjbGFzcyddLFxuICAgICAgICBzdGF0aWNDbGFzczogZGF0YS5zdGF0aWNDbGFzc1xuICAgICAgfSwgdmFsdWVzKVxuICAgICAgOiB2YWx1ZXNcbiAgfVxufTtcblxuLyogICovXG5cbmZ1bmN0aW9uIGJpbmQgKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xuICBpZiAoIWFzc2VydChlbCwgdm5vZGUpKSB7IHJldHVybiB9XG5cbiAgdChlbCwgYmluZGluZywgdm5vZGUpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGUgKGVsLCBiaW5kaW5nLCB2bm9kZSwgb2xkVk5vZGUpIHtcbiAgaWYgKCFhc3NlcnQoZWwsIHZub2RlKSkgeyByZXR1cm4gfVxuXG4gIHZhciBpMThuID0gdm5vZGUuY29udGV4dC4kaTE4bjtcbiAgaWYgKGxvY2FsZUVxdWFsKGVsLCB2bm9kZSkgJiZcbiAgICAobG9vc2VFcXVhbChiaW5kaW5nLnZhbHVlLCBiaW5kaW5nLm9sZFZhbHVlKSAmJlxuICAgICBsb29zZUVxdWFsKGVsLl9sb2NhbGVNZXNzYWdlLCBpMThuLmdldExvY2FsZU1lc3NhZ2UoaTE4bi5sb2NhbGUpKSkpIHsgcmV0dXJuIH1cblxuICB0KGVsLCBiaW5kaW5nLCB2bm9kZSk7XG59XG5cbmZ1bmN0aW9uIHVuYmluZCAoZWwsIGJpbmRpbmcsIHZub2RlLCBvbGRWTm9kZSkge1xuICB2YXIgdm0gPSB2bm9kZS5jb250ZXh0O1xuICBpZiAoIXZtKSB7XG4gICAgd2FybignVnVlIGluc3RhbmNlIGRvZXMgbm90IGV4aXN0cyBpbiBWTm9kZSBjb250ZXh0Jyk7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgaTE4biA9IHZub2RlLmNvbnRleHQuJGkxOG4gfHwge307XG4gIGlmICghYmluZGluZy5tb2RpZmllcnMucHJlc2VydmUgJiYgIWkxOG4ucHJlc2VydmVEaXJlY3RpdmVDb250ZW50KSB7XG4gICAgZWwudGV4dENvbnRlbnQgPSAnJztcbiAgfVxuICBlbC5fdnQgPSB1bmRlZmluZWQ7XG4gIGRlbGV0ZSBlbFsnX3Z0J107XG4gIGVsLl9sb2NhbGUgPSB1bmRlZmluZWQ7XG4gIGRlbGV0ZSBlbFsnX2xvY2FsZSddO1xuICBlbC5fbG9jYWxlTWVzc2FnZSA9IHVuZGVmaW5lZDtcbiAgZGVsZXRlIGVsWydfbG9jYWxlTWVzc2FnZSddO1xufVxuXG5mdW5jdGlvbiBhc3NlcnQgKGVsLCB2bm9kZSkge1xuICB2YXIgdm0gPSB2bm9kZS5jb250ZXh0O1xuICBpZiAoIXZtKSB7XG4gICAgd2FybignVnVlIGluc3RhbmNlIGRvZXMgbm90IGV4aXN0cyBpbiBWTm9kZSBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBpZiAoIXZtLiRpMThuKSB7XG4gICAgd2FybignVnVlSTE4biBpbnN0YW5jZSBkb2VzIG5vdCBleGlzdHMgaW4gVnVlIGluc3RhbmNlJyk7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5mdW5jdGlvbiBsb2NhbGVFcXVhbCAoZWwsIHZub2RlKSB7XG4gIHZhciB2bSA9IHZub2RlLmNvbnRleHQ7XG4gIHJldHVybiBlbC5fbG9jYWxlID09PSB2bS4kaTE4bi5sb2NhbGVcbn1cblxuZnVuY3Rpb24gdCAoZWwsIGJpbmRpbmcsIHZub2RlKSB7XG4gIHZhciByZWYkMSwgcmVmJDI7XG5cbiAgdmFyIHZhbHVlID0gYmluZGluZy52YWx1ZTtcblxuICB2YXIgcmVmID0gcGFyc2VWYWx1ZSh2YWx1ZSk7XG4gIHZhciBwYXRoID0gcmVmLnBhdGg7XG4gIHZhciBsb2NhbGUgPSByZWYubG9jYWxlO1xuICB2YXIgYXJncyA9IHJlZi5hcmdzO1xuICB2YXIgY2hvaWNlID0gcmVmLmNob2ljZTtcbiAgaWYgKCFwYXRoICYmICFsb2NhbGUgJiYgIWFyZ3MpIHtcbiAgICB3YXJuKCd2YWx1ZSB0eXBlIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmICghcGF0aCkge1xuICAgIHdhcm4oJ2BwYXRoYCBpcyByZXF1aXJlZCBpbiB2LXQgZGlyZWN0aXZlJyk7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgdm0gPSB2bm9kZS5jb250ZXh0O1xuICBpZiAoY2hvaWNlICE9IG51bGwpIHtcbiAgICBlbC5fdnQgPSBlbC50ZXh0Q29udGVudCA9IChyZWYkMSA9IHZtLiRpMThuKS50Yy5hcHBseShyZWYkMSwgWyBwYXRoLCBjaG9pY2UgXS5jb25jYXQoIG1ha2VQYXJhbXMobG9jYWxlLCBhcmdzKSApKTtcbiAgfSBlbHNlIHtcbiAgICBlbC5fdnQgPSBlbC50ZXh0Q29udGVudCA9IChyZWYkMiA9IHZtLiRpMThuKS50LmFwcGx5KHJlZiQyLCBbIHBhdGggXS5jb25jYXQoIG1ha2VQYXJhbXMobG9jYWxlLCBhcmdzKSApKTtcbiAgfVxuICBlbC5fbG9jYWxlID0gdm0uJGkxOG4ubG9jYWxlO1xuICBlbC5fbG9jYWxlTWVzc2FnZSA9IHZtLiRpMThuLmdldExvY2FsZU1lc3NhZ2Uodm0uJGkxOG4ubG9jYWxlKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VWYWx1ZSAodmFsdWUpIHtcbiAgdmFyIHBhdGg7XG4gIHZhciBsb2NhbGU7XG4gIHZhciBhcmdzO1xuICB2YXIgY2hvaWNlO1xuXG4gIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICBwYXRoID0gdmFsdWU7XG4gIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICBwYXRoID0gdmFsdWUucGF0aDtcbiAgICBsb2NhbGUgPSB2YWx1ZS5sb2NhbGU7XG4gICAgYXJncyA9IHZhbHVlLmFyZ3M7XG4gICAgY2hvaWNlID0gdmFsdWUuY2hvaWNlO1xuICB9XG5cbiAgcmV0dXJuIHsgcGF0aDogcGF0aCwgbG9jYWxlOiBsb2NhbGUsIGFyZ3M6IGFyZ3MsIGNob2ljZTogY2hvaWNlIH1cbn1cblxuZnVuY3Rpb24gbWFrZVBhcmFtcyAobG9jYWxlLCBhcmdzKSB7XG4gIHZhciBwYXJhbXMgPSBbXTtcblxuICBsb2NhbGUgJiYgcGFyYW1zLnB1c2gobG9jYWxlKTtcbiAgaWYgKGFyZ3MgJiYgKEFycmF5LmlzQXJyYXkoYXJncykgfHwgaXNQbGFpbk9iamVjdChhcmdzKSkpIHtcbiAgICBwYXJhbXMucHVzaChhcmdzKTtcbiAgfVxuXG4gIHJldHVybiBwYXJhbXNcbn1cblxudmFyIFZ1ZTtcblxuZnVuY3Rpb24gaW5zdGFsbCAoX1Z1ZSkge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgaW5zdGFsbC5pbnN0YWxsZWQgJiYgX1Z1ZSA9PT0gVnVlKSB7XG4gICAgd2FybignYWxyZWFkeSBpbnN0YWxsZWQuJyk7XG4gICAgcmV0dXJuXG4gIH1cbiAgaW5zdGFsbC5pbnN0YWxsZWQgPSB0cnVlO1xuXG4gIFZ1ZSA9IF9WdWU7XG5cbiAgdmFyIHZlcnNpb24gPSAoVnVlLnZlcnNpb24gJiYgTnVtYmVyKFZ1ZS52ZXJzaW9uLnNwbGl0KCcuJylbMF0pKSB8fCAtMTtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHZlcnNpb24gPCAyKSB7XG4gICAgd2FybigoXCJ2dWUtaTE4biAoXCIgKyAoaW5zdGFsbC52ZXJzaW9uKSArIFwiKSBuZWVkIHRvIHVzZSBWdWUgMi4wIG9yIGxhdGVyIChWdWU6IFwiICsgKFZ1ZS52ZXJzaW9uKSArIFwiKS5cIikpO1xuICAgIHJldHVyblxuICB9XG5cbiAgZXh0ZW5kKFZ1ZSk7XG4gIFZ1ZS5taXhpbihtaXhpbik7XG4gIFZ1ZS5kaXJlY3RpdmUoJ3QnLCB7IGJpbmQ6IGJpbmQsIHVwZGF0ZTogdXBkYXRlLCB1bmJpbmQ6IHVuYmluZCB9KTtcbiAgVnVlLmNvbXBvbmVudChpbnRlcnBvbGF0aW9uQ29tcG9uZW50Lm5hbWUsIGludGVycG9sYXRpb25Db21wb25lbnQpO1xuICBWdWUuY29tcG9uZW50KG51bWJlckNvbXBvbmVudC5uYW1lLCBudW1iZXJDb21wb25lbnQpO1xuXG4gIC8vIHVzZSBzaW1wbGUgbWVyZ2VTdHJhdGVnaWVzIHRvIHByZXZlbnQgaTE4biBpbnN0YW5jZSBsb3NlICdfX3Byb3RvX18nXG4gIHZhciBzdHJhdHMgPSBWdWUuY29uZmlnLm9wdGlvbk1lcmdlU3RyYXRlZ2llcztcbiAgc3RyYXRzLmkxOG4gPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuICAgIHJldHVybiBjaGlsZFZhbCA9PT0gdW5kZWZpbmVkXG4gICAgICA/IHBhcmVudFZhbFxuICAgICAgOiBjaGlsZFZhbFxuICB9O1xufVxuXG4vKiAgKi9cblxudmFyIEJhc2VGb3JtYXR0ZXIgPSBmdW5jdGlvbiBCYXNlRm9ybWF0dGVyICgpIHtcbiAgdGhpcy5fY2FjaGVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbn07XG5cbkJhc2VGb3JtYXR0ZXIucHJvdG90eXBlLmludGVycG9sYXRlID0gZnVuY3Rpb24gaW50ZXJwb2xhdGUgKG1lc3NhZ2UsIHZhbHVlcykge1xuICBpZiAoIXZhbHVlcykge1xuICAgIHJldHVybiBbbWVzc2FnZV1cbiAgfVxuICB2YXIgdG9rZW5zID0gdGhpcy5fY2FjaGVzW21lc3NhZ2VdO1xuICBpZiAoIXRva2Vucykge1xuICAgIHRva2VucyA9IHBhcnNlKG1lc3NhZ2UpO1xuICAgIHRoaXMuX2NhY2hlc1ttZXNzYWdlXSA9IHRva2VucztcbiAgfVxuICByZXR1cm4gY29tcGlsZSh0b2tlbnMsIHZhbHVlcylcbn07XG5cblxuXG52YXIgUkVfVE9LRU5fTElTVF9WQUxVRSA9IC9eKD86XFxkKSsvO1xudmFyIFJFX1RPS0VOX05BTUVEX1ZBTFVFID0gL14oPzpcXHcpKy87XG5cbmZ1bmN0aW9uIHBhcnNlIChmb3JtYXQpIHtcbiAgdmFyIHRva2VucyA9IFtdO1xuICB2YXIgcG9zaXRpb24gPSAwO1xuXG4gIHZhciB0ZXh0ID0gJyc7XG4gIHdoaWxlIChwb3NpdGlvbiA8IGZvcm1hdC5sZW5ndGgpIHtcbiAgICB2YXIgY2hhciA9IGZvcm1hdFtwb3NpdGlvbisrXTtcbiAgICBpZiAoY2hhciA9PT0gJ3snKSB7XG4gICAgICBpZiAodGV4dCkge1xuICAgICAgICB0b2tlbnMucHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWU6IHRleHQgfSk7XG4gICAgICB9XG5cbiAgICAgIHRleHQgPSAnJztcbiAgICAgIHZhciBzdWIgPSAnJztcbiAgICAgIGNoYXIgPSBmb3JtYXRbcG9zaXRpb24rK107XG4gICAgICB3aGlsZSAoY2hhciAhPT0gdW5kZWZpbmVkICYmIGNoYXIgIT09ICd9Jykge1xuICAgICAgICBzdWIgKz0gY2hhcjtcbiAgICAgICAgY2hhciA9IGZvcm1hdFtwb3NpdGlvbisrXTtcbiAgICAgIH1cbiAgICAgIHZhciBpc0Nsb3NlZCA9IGNoYXIgPT09ICd9JztcblxuICAgICAgdmFyIHR5cGUgPSBSRV9UT0tFTl9MSVNUX1ZBTFVFLnRlc3Qoc3ViKVxuICAgICAgICA/ICdsaXN0J1xuICAgICAgICA6IGlzQ2xvc2VkICYmIFJFX1RPS0VOX05BTUVEX1ZBTFVFLnRlc3Qoc3ViKVxuICAgICAgICAgID8gJ25hbWVkJ1xuICAgICAgICAgIDogJ3Vua25vd24nO1xuICAgICAgdG9rZW5zLnB1c2goeyB2YWx1ZTogc3ViLCB0eXBlOiB0eXBlIH0pO1xuICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gJyUnKSB7XG4gICAgICAvLyB3aGVuIGZvdW5kIHJhaWxzIGkxOG4gc3ludGF4LCBza2lwIHRleHQgY2FwdHVyZVxuICAgICAgaWYgKGZvcm1hdFsocG9zaXRpb24pXSAhPT0gJ3snKSB7XG4gICAgICAgIHRleHQgKz0gY2hhcjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGV4dCArPSBjaGFyO1xuICAgIH1cbiAgfVxuXG4gIHRleHQgJiYgdG9rZW5zLnB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlOiB0ZXh0IH0pO1xuXG4gIHJldHVybiB0b2tlbnNcbn1cblxuZnVuY3Rpb24gY29tcGlsZSAodG9rZW5zLCB2YWx1ZXMpIHtcbiAgdmFyIGNvbXBpbGVkID0gW107XG4gIHZhciBpbmRleCA9IDA7XG5cbiAgdmFyIG1vZGUgPSBBcnJheS5pc0FycmF5KHZhbHVlcylcbiAgICA/ICdsaXN0J1xuICAgIDogaXNPYmplY3QodmFsdWVzKVxuICAgICAgPyAnbmFtZWQnXG4gICAgICA6ICd1bmtub3duJztcbiAgaWYgKG1vZGUgPT09ICd1bmtub3duJykgeyByZXR1cm4gY29tcGlsZWQgfVxuXG4gIHdoaWxlIChpbmRleCA8IHRva2Vucy5sZW5ndGgpIHtcbiAgICB2YXIgdG9rZW4gPSB0b2tlbnNbaW5kZXhdO1xuICAgIHN3aXRjaCAodG9rZW4udHlwZSkge1xuICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgIGNvbXBpbGVkLnB1c2godG9rZW4udmFsdWUpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnbGlzdCc6XG4gICAgICAgIGNvbXBpbGVkLnB1c2godmFsdWVzW3BhcnNlSW50KHRva2VuLnZhbHVlLCAxMCldKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ25hbWVkJzpcbiAgICAgICAgaWYgKG1vZGUgPT09ICduYW1lZCcpIHtcbiAgICAgICAgICBjb21waWxlZC5wdXNoKCh2YWx1ZXMpW3Rva2VuLnZhbHVlXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIHdhcm4oKFwiVHlwZSBvZiB0b2tlbiAnXCIgKyAodG9rZW4udHlwZSkgKyBcIicgYW5kIGZvcm1hdCBvZiB2YWx1ZSAnXCIgKyBtb2RlICsgXCInIGRvbid0IG1hdGNoIVwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICd1bmtub3duJzpcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB3YXJuKFwiRGV0ZWN0ICd1bmtub3duJyB0eXBlIG9mIHRva2VuIVwiKTtcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgIH1cbiAgICBpbmRleCsrO1xuICB9XG5cbiAgcmV0dXJuIGNvbXBpbGVkXG59XG5cbi8qICAqL1xuXG4vKipcbiAqICBQYXRoIHBhcnNlclxuICogIC0gSW5zcGlyZWQ6XG4gKiAgICBWdWUuanMgUGF0aCBwYXJzZXJcbiAqL1xuXG4vLyBhY3Rpb25zXG52YXIgQVBQRU5EID0gMDtcbnZhciBQVVNIID0gMTtcbnZhciBJTkNfU1VCX1BBVEhfREVQVEggPSAyO1xudmFyIFBVU0hfU1VCX1BBVEggPSAzO1xuXG4vLyBzdGF0ZXNcbnZhciBCRUZPUkVfUEFUSCA9IDA7XG52YXIgSU5fUEFUSCA9IDE7XG52YXIgQkVGT1JFX0lERU5UID0gMjtcbnZhciBJTl9JREVOVCA9IDM7XG52YXIgSU5fU1VCX1BBVEggPSA0O1xudmFyIElOX1NJTkdMRV9RVU9URSA9IDU7XG52YXIgSU5fRE9VQkxFX1FVT1RFID0gNjtcbnZhciBBRlRFUl9QQVRIID0gNztcbnZhciBFUlJPUiA9IDg7XG5cbnZhciBwYXRoU3RhdGVNYWNoaW5lID0gW107XG5cbnBhdGhTdGF0ZU1hY2hpbmVbQkVGT1JFX1BBVEhdID0ge1xuICAnd3MnOiBbQkVGT1JFX1BBVEhdLFxuICAnaWRlbnQnOiBbSU5fSURFTlQsIEFQUEVORF0sXG4gICdbJzogW0lOX1NVQl9QQVRIXSxcbiAgJ2VvZic6IFtBRlRFUl9QQVRIXVxufTtcblxucGF0aFN0YXRlTWFjaGluZVtJTl9QQVRIXSA9IHtcbiAgJ3dzJzogW0lOX1BBVEhdLFxuICAnLic6IFtCRUZPUkVfSURFTlRdLFxuICAnWyc6IFtJTl9TVUJfUEFUSF0sXG4gICdlb2YnOiBbQUZURVJfUEFUSF1cbn07XG5cbnBhdGhTdGF0ZU1hY2hpbmVbQkVGT1JFX0lERU5UXSA9IHtcbiAgJ3dzJzogW0JFRk9SRV9JREVOVF0sXG4gICdpZGVudCc6IFtJTl9JREVOVCwgQVBQRU5EXSxcbiAgJzAnOiBbSU5fSURFTlQsIEFQUEVORF0sXG4gICdudW1iZXInOiBbSU5fSURFTlQsIEFQUEVORF1cbn07XG5cbnBhdGhTdGF0ZU1hY2hpbmVbSU5fSURFTlRdID0ge1xuICAnaWRlbnQnOiBbSU5fSURFTlQsIEFQUEVORF0sXG4gICcwJzogW0lOX0lERU5ULCBBUFBFTkRdLFxuICAnbnVtYmVyJzogW0lOX0lERU5ULCBBUFBFTkRdLFxuICAnd3MnOiBbSU5fUEFUSCwgUFVTSF0sXG4gICcuJzogW0JFRk9SRV9JREVOVCwgUFVTSF0sXG4gICdbJzogW0lOX1NVQl9QQVRILCBQVVNIXSxcbiAgJ2VvZic6IFtBRlRFUl9QQVRILCBQVVNIXVxufTtcblxucGF0aFN0YXRlTWFjaGluZVtJTl9TVUJfUEFUSF0gPSB7XG4gIFwiJ1wiOiBbSU5fU0lOR0xFX1FVT1RFLCBBUFBFTkRdLFxuICAnXCInOiBbSU5fRE9VQkxFX1FVT1RFLCBBUFBFTkRdLFxuICAnWyc6IFtJTl9TVUJfUEFUSCwgSU5DX1NVQl9QQVRIX0RFUFRIXSxcbiAgJ10nOiBbSU5fUEFUSCwgUFVTSF9TVUJfUEFUSF0sXG4gICdlb2YnOiBFUlJPUixcbiAgJ2Vsc2UnOiBbSU5fU1VCX1BBVEgsIEFQUEVORF1cbn07XG5cbnBhdGhTdGF0ZU1hY2hpbmVbSU5fU0lOR0xFX1FVT1RFXSA9IHtcbiAgXCInXCI6IFtJTl9TVUJfUEFUSCwgQVBQRU5EXSxcbiAgJ2VvZic6IEVSUk9SLFxuICAnZWxzZSc6IFtJTl9TSU5HTEVfUVVPVEUsIEFQUEVORF1cbn07XG5cbnBhdGhTdGF0ZU1hY2hpbmVbSU5fRE9VQkxFX1FVT1RFXSA9IHtcbiAgJ1wiJzogW0lOX1NVQl9QQVRILCBBUFBFTkRdLFxuICAnZW9mJzogRVJST1IsXG4gICdlbHNlJzogW0lOX0RPVUJMRV9RVU9URSwgQVBQRU5EXVxufTtcblxuLyoqXG4gKiBDaGVjayBpZiBhbiBleHByZXNzaW9uIGlzIGEgbGl0ZXJhbCB2YWx1ZS5cbiAqL1xuXG52YXIgbGl0ZXJhbFZhbHVlUkUgPSAvXlxccz8oPzp0cnVlfGZhbHNlfC0/W1xcZC5dK3wnW14nXSonfFwiW15cIl0qXCIpXFxzPyQvO1xuZnVuY3Rpb24gaXNMaXRlcmFsIChleHApIHtcbiAgcmV0dXJuIGxpdGVyYWxWYWx1ZVJFLnRlc3QoZXhwKVxufVxuXG4vKipcbiAqIFN0cmlwIHF1b3RlcyBmcm9tIGEgc3RyaW5nXG4gKi9cblxuZnVuY3Rpb24gc3RyaXBRdW90ZXMgKHN0cikge1xuICB2YXIgYSA9IHN0ci5jaGFyQ29kZUF0KDApO1xuICB2YXIgYiA9IHN0ci5jaGFyQ29kZUF0KHN0ci5sZW5ndGggLSAxKTtcbiAgcmV0dXJuIGEgPT09IGIgJiYgKGEgPT09IDB4MjIgfHwgYSA9PT0gMHgyNylcbiAgICA/IHN0ci5zbGljZSgxLCAtMSlcbiAgICA6IHN0clxufVxuXG4vKipcbiAqIERldGVybWluZSB0aGUgdHlwZSBvZiBhIGNoYXJhY3RlciBpbiBhIGtleXBhdGguXG4gKi9cblxuZnVuY3Rpb24gZ2V0UGF0aENoYXJUeXBlIChjaCkge1xuICBpZiAoY2ggPT09IHVuZGVmaW5lZCB8fCBjaCA9PT0gbnVsbCkgeyByZXR1cm4gJ2VvZicgfVxuXG4gIHZhciBjb2RlID0gY2guY2hhckNvZGVBdCgwKTtcblxuICBzd2l0Y2ggKGNvZGUpIHtcbiAgICBjYXNlIDB4NUI6IC8vIFtcbiAgICBjYXNlIDB4NUQ6IC8vIF1cbiAgICBjYXNlIDB4MkU6IC8vIC5cbiAgICBjYXNlIDB4MjI6IC8vIFwiXG4gICAgY2FzZSAweDI3OiAvLyAnXG4gICAgICByZXR1cm4gY2hcblxuICAgIGNhc2UgMHg1RjogLy8gX1xuICAgIGNhc2UgMHgyNDogLy8gJFxuICAgIGNhc2UgMHgyRDogLy8gLVxuICAgICAgcmV0dXJuICdpZGVudCdcblxuICAgIGNhc2UgMHgwOTogLy8gVGFiXG4gICAgY2FzZSAweDBBOiAvLyBOZXdsaW5lXG4gICAgY2FzZSAweDBEOiAvLyBSZXR1cm5cbiAgICBjYXNlIDB4QTA6ICAvLyBOby1icmVhayBzcGFjZVxuICAgIGNhc2UgMHhGRUZGOiAgLy8gQnl0ZSBPcmRlciBNYXJrXG4gICAgY2FzZSAweDIwMjg6ICAvLyBMaW5lIFNlcGFyYXRvclxuICAgIGNhc2UgMHgyMDI5OiAgLy8gUGFyYWdyYXBoIFNlcGFyYXRvclxuICAgICAgcmV0dXJuICd3cydcbiAgfVxuXG4gIHJldHVybiAnaWRlbnQnXG59XG5cbi8qKlxuICogRm9ybWF0IGEgc3ViUGF0aCwgcmV0dXJuIGl0cyBwbGFpbiBmb3JtIGlmIGl0IGlzXG4gKiBhIGxpdGVyYWwgc3RyaW5nIG9yIG51bWJlci4gT3RoZXJ3aXNlIHByZXBlbmQgdGhlXG4gKiBkeW5hbWljIGluZGljYXRvciAoKikuXG4gKi9cblxuZnVuY3Rpb24gZm9ybWF0U3ViUGF0aCAocGF0aCkge1xuICB2YXIgdHJpbW1lZCA9IHBhdGgudHJpbSgpO1xuICAvLyBpbnZhbGlkIGxlYWRpbmcgMFxuICBpZiAocGF0aC5jaGFyQXQoMCkgPT09ICcwJyAmJiBpc05hTihwYXRoKSkgeyByZXR1cm4gZmFsc2UgfVxuXG4gIHJldHVybiBpc0xpdGVyYWwodHJpbW1lZCkgPyBzdHJpcFF1b3Rlcyh0cmltbWVkKSA6ICcqJyArIHRyaW1tZWRcbn1cblxuLyoqXG4gKiBQYXJzZSBhIHN0cmluZyBwYXRoIGludG8gYW4gYXJyYXkgb2Ygc2VnbWVudHNcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZSQxIChwYXRoKSB7XG4gIHZhciBrZXlzID0gW107XG4gIHZhciBpbmRleCA9IC0xO1xuICB2YXIgbW9kZSA9IEJFRk9SRV9QQVRIO1xuICB2YXIgc3ViUGF0aERlcHRoID0gMDtcbiAgdmFyIGM7XG4gIHZhciBrZXk7XG4gIHZhciBuZXdDaGFyO1xuICB2YXIgdHlwZTtcbiAgdmFyIHRyYW5zaXRpb247XG4gIHZhciBhY3Rpb247XG4gIHZhciB0eXBlTWFwO1xuICB2YXIgYWN0aW9ucyA9IFtdO1xuXG4gIGFjdGlvbnNbUFVTSF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgIGtleSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH07XG5cbiAgYWN0aW9uc1tBUFBFTkRdID0gZnVuY3Rpb24gKCkge1xuICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAga2V5ID0gbmV3Q2hhcjtcbiAgICB9IGVsc2Uge1xuICAgICAga2V5ICs9IG5ld0NoYXI7XG4gICAgfVxuICB9O1xuXG4gIGFjdGlvbnNbSU5DX1NVQl9QQVRIX0RFUFRIXSA9IGZ1bmN0aW9uICgpIHtcbiAgICBhY3Rpb25zW0FQUEVORF0oKTtcbiAgICBzdWJQYXRoRGVwdGgrKztcbiAgfTtcblxuICBhY3Rpb25zW1BVU0hfU1VCX1BBVEhdID0gZnVuY3Rpb24gKCkge1xuICAgIGlmIChzdWJQYXRoRGVwdGggPiAwKSB7XG4gICAgICBzdWJQYXRoRGVwdGgtLTtcbiAgICAgIG1vZGUgPSBJTl9TVUJfUEFUSDtcbiAgICAgIGFjdGlvbnNbQVBQRU5EXSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdWJQYXRoRGVwdGggPSAwO1xuICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBmYWxzZSB9XG4gICAgICBrZXkgPSBmb3JtYXRTdWJQYXRoKGtleSk7XG4gICAgICBpZiAoa2V5ID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjdGlvbnNbUFVTSF0oKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgZnVuY3Rpb24gbWF5YmVVbmVzY2FwZVF1b3RlICgpIHtcbiAgICB2YXIgbmV4dENoYXIgPSBwYXRoW2luZGV4ICsgMV07XG4gICAgaWYgKChtb2RlID09PSBJTl9TSU5HTEVfUVVPVEUgJiYgbmV4dENoYXIgPT09IFwiJ1wiKSB8fFxuICAgICAgKG1vZGUgPT09IElOX0RPVUJMRV9RVU9URSAmJiBuZXh0Q2hhciA9PT0gJ1wiJykpIHtcbiAgICAgIGluZGV4Kys7XG4gICAgICBuZXdDaGFyID0gJ1xcXFwnICsgbmV4dENoYXI7XG4gICAgICBhY3Rpb25zW0FQUEVORF0oKTtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG5cbiAgd2hpbGUgKG1vZGUgIT09IG51bGwpIHtcbiAgICBpbmRleCsrO1xuICAgIGMgPSBwYXRoW2luZGV4XTtcblxuICAgIGlmIChjID09PSAnXFxcXCcgJiYgbWF5YmVVbmVzY2FwZVF1b3RlKCkpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgdHlwZSA9IGdldFBhdGhDaGFyVHlwZShjKTtcbiAgICB0eXBlTWFwID0gcGF0aFN0YXRlTWFjaGluZVttb2RlXTtcbiAgICB0cmFuc2l0aW9uID0gdHlwZU1hcFt0eXBlXSB8fCB0eXBlTWFwWydlbHNlJ10gfHwgRVJST1I7XG5cbiAgICBpZiAodHJhbnNpdGlvbiA9PT0gRVJST1IpIHtcbiAgICAgIHJldHVybiAvLyBwYXJzZSBlcnJvclxuICAgIH1cblxuICAgIG1vZGUgPSB0cmFuc2l0aW9uWzBdO1xuICAgIGFjdGlvbiA9IGFjdGlvbnNbdHJhbnNpdGlvblsxXV07XG4gICAgaWYgKGFjdGlvbikge1xuICAgICAgbmV3Q2hhciA9IHRyYW5zaXRpb25bMl07XG4gICAgICBuZXdDaGFyID0gbmV3Q2hhciA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gY1xuICAgICAgICA6IG5ld0NoYXI7XG4gICAgICBpZiAoYWN0aW9uKCkgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2RlID09PSBBRlRFUl9QQVRIKSB7XG4gICAgICByZXR1cm4ga2V5c1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cbnZhciBJMThuUGF0aCA9IGZ1bmN0aW9uIEkxOG5QYXRoICgpIHtcbiAgdGhpcy5fY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xufTtcblxuLyoqXG4gKiBFeHRlcm5hbCBwYXJzZSB0aGF0IGNoZWNrIGZvciBhIGNhY2hlIGhpdCBmaXJzdFxuICovXG5JMThuUGF0aC5wcm90b3R5cGUucGFyc2VQYXRoID0gZnVuY3Rpb24gcGFyc2VQYXRoIChwYXRoKSB7XG4gIHZhciBoaXQgPSB0aGlzLl9jYWNoZVtwYXRoXTtcbiAgaWYgKCFoaXQpIHtcbiAgICBoaXQgPSBwYXJzZSQxKHBhdGgpO1xuICAgIGlmIChoaXQpIHtcbiAgICAgIHRoaXMuX2NhY2hlW3BhdGhdID0gaGl0O1xuICAgIH1cbiAgfVxuICByZXR1cm4gaGl0IHx8IFtdXG59O1xuXG4vKipcbiAqIEdldCBwYXRoIHZhbHVlIGZyb20gcGF0aCBzdHJpbmdcbiAqL1xuSTE4blBhdGgucHJvdG90eXBlLmdldFBhdGhWYWx1ZSA9IGZ1bmN0aW9uIGdldFBhdGhWYWx1ZSAob2JqLCBwYXRoKSB7XG4gIGlmICghaXNPYmplY3Qob2JqKSkgeyByZXR1cm4gbnVsbCB9XG5cbiAgdmFyIHBhdGhzID0gdGhpcy5wYXJzZVBhdGgocGF0aCk7XG4gIGlmIChwYXRocy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9IGVsc2Uge1xuICAgIHZhciBsZW5ndGggPSBwYXRocy5sZW5ndGg7XG4gICAgdmFyIGxhc3QgPSBvYmo7XG4gICAgdmFyIGkgPSAwO1xuICAgIHdoaWxlIChpIDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgdmFsdWUgPSBsYXN0W3BhdGhzW2ldXTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgICBsYXN0ID0gdmFsdWU7XG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhc3RcbiAgfVxufTtcblxuLyogICovXG5cblxuXG52YXIgaHRtbFRhZ01hdGNoZXIgPSAvPFxcLz9bXFx3XFxzPVwiLy4nOjsjLVxcL10rPi87XG52YXIgbGlua0tleU1hdGNoZXIgPSAvKD86QCg/OlxcLlthLXpdKyk/Oig/OltcXHdcXC1ffC5dK3xcXChbXFx3XFwtX3wuXStcXCkpKS9nO1xudmFyIGxpbmtLZXlQcmVmaXhNYXRjaGVyID0gL15AKD86XFwuKFthLXpdKykpPzovO1xudmFyIGJyYWNrZXRzTWF0Y2hlciA9IC9bKCldL2c7XG52YXIgZGVmYXVsdE1vZGlmaWVycyA9IHtcbiAgJ3VwcGVyJzogZnVuY3Rpb24gKHN0cikgeyByZXR1cm4gc3RyLnRvTG9jYWxlVXBwZXJDYXNlKCk7IH0sXG4gICdsb3dlcic6IGZ1bmN0aW9uIChzdHIpIHsgcmV0dXJuIHN0ci50b0xvY2FsZUxvd2VyQ2FzZSgpOyB9LFxuICAnY2FwaXRhbGl6ZSc6IGZ1bmN0aW9uIChzdHIpIHsgcmV0dXJuIChcIlwiICsgKHN0ci5jaGFyQXQoMCkudG9Mb2NhbGVVcHBlckNhc2UoKSkgKyAoc3RyLnN1YnN0cigxKSkpOyB9XG59O1xuXG52YXIgZGVmYXVsdEZvcm1hdHRlciA9IG5ldyBCYXNlRm9ybWF0dGVyKCk7XG5cbnZhciBWdWVJMThuID0gZnVuY3Rpb24gVnVlSTE4biAob3B0aW9ucykge1xuICB2YXIgdGhpcyQxID0gdGhpcztcbiAgaWYgKCBvcHRpb25zID09PSB2b2lkIDAgKSBvcHRpb25zID0ge307XG5cbiAgLy8gQXV0byBpbnN0YWxsIGlmIGl0IGlzIG5vdCBkb25lIHlldCBhbmQgYHdpbmRvd2AgaGFzIGBWdWVgLlxuICAvLyBUbyBhbGxvdyB1c2VycyB0byBhdm9pZCBhdXRvLWluc3RhbGxhdGlvbiBpbiBzb21lIGNhc2VzLFxuICAvLyB0aGlzIGNvZGUgc2hvdWxkIGJlIHBsYWNlZCBoZXJlLiBTZWUgIzI5MFxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKCFWdWUgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LlZ1ZSkge1xuICAgIGluc3RhbGwod2luZG93LlZ1ZSk7XG4gIH1cblxuICB2YXIgbG9jYWxlID0gb3B0aW9ucy5sb2NhbGUgfHwgJ2VuLVVTJztcbiAgdmFyIGZhbGxiYWNrTG9jYWxlID0gb3B0aW9ucy5mYWxsYmFja0xvY2FsZSA9PT0gZmFsc2VcbiAgICA/IGZhbHNlXG4gICAgOiBvcHRpb25zLmZhbGxiYWNrTG9jYWxlIHx8ICdlbi1VUyc7XG4gIHZhciBtZXNzYWdlcyA9IG9wdGlvbnMubWVzc2FnZXMgfHwge307XG4gIHZhciBkYXRlVGltZUZvcm1hdHMgPSBvcHRpb25zLmRhdGVUaW1lRm9ybWF0cyB8fCB7fTtcbiAgdmFyIG51bWJlckZvcm1hdHMgPSBvcHRpb25zLm51bWJlckZvcm1hdHMgfHwge307XG5cbiAgdGhpcy5fdm0gPSBudWxsO1xuICB0aGlzLl9mb3JtYXR0ZXIgPSBvcHRpb25zLmZvcm1hdHRlciB8fCBkZWZhdWx0Rm9ybWF0dGVyO1xuICB0aGlzLl9tb2RpZmllcnMgPSBvcHRpb25zLm1vZGlmaWVycyB8fCB7fTtcbiAgdGhpcy5fbWlzc2luZyA9IG9wdGlvbnMubWlzc2luZyB8fCBudWxsO1xuICB0aGlzLl9yb290ID0gb3B0aW9ucy5yb290IHx8IG51bGw7XG4gIHRoaXMuX3N5bmMgPSBvcHRpb25zLnN5bmMgPT09IHVuZGVmaW5lZCA/IHRydWUgOiAhIW9wdGlvbnMuc3luYztcbiAgdGhpcy5fZmFsbGJhY2tSb290ID0gb3B0aW9ucy5mYWxsYmFja1Jvb3QgPT09IHVuZGVmaW5lZFxuICAgID8gdHJ1ZVxuICAgIDogISFvcHRpb25zLmZhbGxiYWNrUm9vdDtcbiAgdGhpcy5fZm9ybWF0RmFsbGJhY2tNZXNzYWdlcyA9IG9wdGlvbnMuZm9ybWF0RmFsbGJhY2tNZXNzYWdlcyA9PT0gdW5kZWZpbmVkXG4gICAgPyBmYWxzZVxuICAgIDogISFvcHRpb25zLmZvcm1hdEZhbGxiYWNrTWVzc2FnZXM7XG4gIHRoaXMuX3NpbGVudFRyYW5zbGF0aW9uV2FybiA9IG9wdGlvbnMuc2lsZW50VHJhbnNsYXRpb25XYXJuID09PSB1bmRlZmluZWRcbiAgICA/IGZhbHNlXG4gICAgOiBvcHRpb25zLnNpbGVudFRyYW5zbGF0aW9uV2FybjtcbiAgdGhpcy5fc2lsZW50RmFsbGJhY2tXYXJuID0gb3B0aW9ucy5zaWxlbnRGYWxsYmFja1dhcm4gPT09IHVuZGVmaW5lZFxuICAgID8gZmFsc2VcbiAgICA6ICEhb3B0aW9ucy5zaWxlbnRGYWxsYmFja1dhcm47XG4gIHRoaXMuX2RhdGVUaW1lRm9ybWF0dGVycyA9IHt9O1xuICB0aGlzLl9udW1iZXJGb3JtYXR0ZXJzID0ge307XG4gIHRoaXMuX3BhdGggPSBuZXcgSTE4blBhdGgoKTtcbiAgdGhpcy5fZGF0YUxpc3RlbmVycyA9IFtdO1xuICB0aGlzLl9jb21wb25lbnRJbnN0YW5jZUNyZWF0ZWRMaXN0ZW5lciA9IG9wdGlvbnMuY29tcG9uZW50SW5zdGFuY2VDcmVhdGVkTGlzdGVuZXIgfHwgbnVsbDtcbiAgdGhpcy5fcHJlc2VydmVEaXJlY3RpdmVDb250ZW50ID0gb3B0aW9ucy5wcmVzZXJ2ZURpcmVjdGl2ZUNvbnRlbnQgPT09IHVuZGVmaW5lZFxuICAgID8gZmFsc2VcbiAgICA6ICEhb3B0aW9ucy5wcmVzZXJ2ZURpcmVjdGl2ZUNvbnRlbnQ7XG4gIHRoaXMucGx1cmFsaXphdGlvblJ1bGVzID0gb3B0aW9ucy5wbHVyYWxpemF0aW9uUnVsZXMgfHwge307XG4gIHRoaXMuX3dhcm5IdG1sSW5NZXNzYWdlID0gb3B0aW9ucy53YXJuSHRtbEluTWVzc2FnZSB8fCAnb2ZmJztcbiAgdGhpcy5fcG9zdFRyYW5zbGF0aW9uID0gb3B0aW9ucy5wb3N0VHJhbnNsYXRpb24gfHwgbnVsbDtcblxuICAvKipcbiAgICogQHBhcmFtIGNob2ljZSB7bnVtYmVyfSBhIGNob2ljZSBpbmRleCBnaXZlbiBieSB0aGUgaW5wdXQgdG8gJHRjOiBgJHRjKCdwYXRoLnRvLnJ1bGUnLCBjaG9pY2VJbmRleClgXG4gICAqIEBwYXJhbSBjaG9pY2VzTGVuZ3RoIHtudW1iZXJ9IGFuIG92ZXJhbGwgYW1vdW50IG9mIGF2YWlsYWJsZSBjaG9pY2VzXG4gICAqIEByZXR1cm5zIGEgZmluYWwgY2hvaWNlIGluZGV4XG4gICovXG4gIHRoaXMuZ2V0Q2hvaWNlSW5kZXggPSBmdW5jdGlvbiAoY2hvaWNlLCBjaG9pY2VzTGVuZ3RoKSB7XG4gICAgdmFyIHRoaXNQcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyQxKTtcbiAgICBpZiAodGhpc1Byb3RvdHlwZSAmJiB0aGlzUHJvdG90eXBlLmdldENob2ljZUluZGV4KSB7XG4gICAgICB2YXIgcHJvdG90eXBlR2V0Q2hvaWNlSW5kZXggPSAodGhpc1Byb3RvdHlwZS5nZXRDaG9pY2VJbmRleCk7XG4gICAgICByZXR1cm4gKHByb3RvdHlwZUdldENob2ljZUluZGV4KS5jYWxsKHRoaXMkMSwgY2hvaWNlLCBjaG9pY2VzTGVuZ3RoKVxuICAgIH1cblxuICAgIC8vIERlZmF1bHQgKG9sZCkgZ2V0Q2hvaWNlSW5kZXggaW1wbGVtZW50YXRpb24gLSBlbmdsaXNoLWNvbXBhdGlibGVcbiAgICB2YXIgZGVmYXVsdEltcGwgPSBmdW5jdGlvbiAoX2Nob2ljZSwgX2Nob2ljZXNMZW5ndGgpIHtcbiAgICAgIF9jaG9pY2UgPSBNYXRoLmFicyhfY2hvaWNlKTtcblxuICAgICAgaWYgKF9jaG9pY2VzTGVuZ3RoID09PSAyKSB7XG4gICAgICAgIHJldHVybiBfY2hvaWNlXG4gICAgICAgICAgPyBfY2hvaWNlID4gMVxuICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICA6IDBcbiAgICAgICAgICA6IDFcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIF9jaG9pY2UgPyBNYXRoLm1pbihfY2hvaWNlLCAyKSA6IDBcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMkMS5sb2NhbGUgaW4gdGhpcyQxLnBsdXJhbGl6YXRpb25SdWxlcykge1xuICAgICAgcmV0dXJuIHRoaXMkMS5wbHVyYWxpemF0aW9uUnVsZXNbdGhpcyQxLmxvY2FsZV0uYXBwbHkodGhpcyQxLCBbY2hvaWNlLCBjaG9pY2VzTGVuZ3RoXSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGRlZmF1bHRJbXBsKGNob2ljZSwgY2hvaWNlc0xlbmd0aClcbiAgICB9XG4gIH07XG5cblxuICB0aGlzLl9leGlzdCA9IGZ1bmN0aW9uIChtZXNzYWdlLCBrZXkpIHtcbiAgICBpZiAoIW1lc3NhZ2UgfHwgIWtleSkgeyByZXR1cm4gZmFsc2UgfVxuICAgIGlmICghaXNOdWxsKHRoaXMkMS5fcGF0aC5nZXRQYXRoVmFsdWUobWVzc2FnZSwga2V5KSkpIHsgcmV0dXJuIHRydWUgfVxuICAgIC8vIGZhbGxiYWNrIGZvciBmbGF0IGtleVxuICAgIGlmIChtZXNzYWdlW2tleV0pIHsgcmV0dXJuIHRydWUgfVxuICAgIHJldHVybiBmYWxzZVxuICB9O1xuXG4gIGlmICh0aGlzLl93YXJuSHRtbEluTWVzc2FnZSA9PT0gJ3dhcm4nIHx8IHRoaXMuX3dhcm5IdG1sSW5NZXNzYWdlID09PSAnZXJyb3InKSB7XG4gICAgT2JqZWN0LmtleXMobWVzc2FnZXMpLmZvckVhY2goZnVuY3Rpb24gKGxvY2FsZSkge1xuICAgICAgdGhpcyQxLl9jaGVja0xvY2FsZU1lc3NhZ2UobG9jYWxlLCB0aGlzJDEuX3dhcm5IdG1sSW5NZXNzYWdlLCBtZXNzYWdlc1tsb2NhbGVdKTtcbiAgICB9KTtcbiAgfVxuXG4gIHRoaXMuX2luaXRWTSh7XG4gICAgbG9jYWxlOiBsb2NhbGUsXG4gICAgZmFsbGJhY2tMb2NhbGU6IGZhbGxiYWNrTG9jYWxlLFxuICAgIG1lc3NhZ2VzOiBtZXNzYWdlcyxcbiAgICBkYXRlVGltZUZvcm1hdHM6IGRhdGVUaW1lRm9ybWF0cyxcbiAgICBudW1iZXJGb3JtYXRzOiBudW1iZXJGb3JtYXRzXG4gIH0pO1xufTtcblxudmFyIHByb3RvdHlwZUFjY2Vzc29ycyA9IHsgdm06IHsgY29uZmlndXJhYmxlOiB0cnVlIH0sbWVzc2FnZXM6IHsgY29uZmlndXJhYmxlOiB0cnVlIH0sZGF0ZVRpbWVGb3JtYXRzOiB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LG51bWJlckZvcm1hdHM6IHsgY29uZmlndXJhYmxlOiB0cnVlIH0sYXZhaWxhYmxlTG9jYWxlczogeyBjb25maWd1cmFibGU6IHRydWUgfSxsb2NhbGU6IHsgY29uZmlndXJhYmxlOiB0cnVlIH0sZmFsbGJhY2tMb2NhbGU6IHsgY29uZmlndXJhYmxlOiB0cnVlIH0sZm9ybWF0RmFsbGJhY2tNZXNzYWdlczogeyBjb25maWd1cmFibGU6IHRydWUgfSxtaXNzaW5nOiB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LGZvcm1hdHRlcjogeyBjb25maWd1cmFibGU6IHRydWUgfSxzaWxlbnRUcmFuc2xhdGlvbldhcm46IHsgY29uZmlndXJhYmxlOiB0cnVlIH0sc2lsZW50RmFsbGJhY2tXYXJuOiB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LHByZXNlcnZlRGlyZWN0aXZlQ29udGVudDogeyBjb25maWd1cmFibGU6IHRydWUgfSx3YXJuSHRtbEluTWVzc2FnZTogeyBjb25maWd1cmFibGU6IHRydWUgfSxwb3N0VHJhbnNsYXRpb246IHsgY29uZmlndXJhYmxlOiB0cnVlIH0gfTtcblxuVnVlSTE4bi5wcm90b3R5cGUuX2NoZWNrTG9jYWxlTWVzc2FnZSA9IGZ1bmN0aW9uIF9jaGVja0xvY2FsZU1lc3NhZ2UgKGxvY2FsZSwgbGV2ZWwsIG1lc3NhZ2UpIHtcbiAgdmFyIHBhdGhzID0gW107XG5cbiAgdmFyIGZuID0gZnVuY3Rpb24gKGxldmVsLCBsb2NhbGUsIG1lc3NhZ2UsIHBhdGhzKSB7XG4gICAgaWYgKGlzUGxhaW5PYmplY3QobWVzc2FnZSkpIHtcbiAgICAgIE9iamVjdC5rZXlzKG1lc3NhZ2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdmFsID0gbWVzc2FnZVtrZXldO1xuICAgICAgICBpZiAoaXNQbGFpbk9iamVjdCh2YWwpKSB7XG4gICAgICAgICAgcGF0aHMucHVzaChrZXkpO1xuICAgICAgICAgIHBhdGhzLnB1c2goJy4nKTtcbiAgICAgICAgICBmbihsZXZlbCwgbG9jYWxlLCB2YWwsIHBhdGhzKTtcbiAgICAgICAgICBwYXRocy5wb3AoKTtcbiAgICAgICAgICBwYXRocy5wb3AoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwYXRocy5wdXNoKGtleSk7XG4gICAgICAgICAgZm4obGV2ZWwsIGxvY2FsZSwgdmFsLCBwYXRocyk7XG4gICAgICAgICAgcGF0aHMucG9wKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShtZXNzYWdlKSkge1xuICAgICAgbWVzc2FnZS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtLCBpbmRleCkge1xuICAgICAgICBpZiAoaXNQbGFpbk9iamVjdChpdGVtKSkge1xuICAgICAgICAgIHBhdGhzLnB1c2goKFwiW1wiICsgaW5kZXggKyBcIl1cIikpO1xuICAgICAgICAgIHBhdGhzLnB1c2goJy4nKTtcbiAgICAgICAgICBmbihsZXZlbCwgbG9jYWxlLCBpdGVtLCBwYXRocyk7XG4gICAgICAgICAgcGF0aHMucG9wKCk7XG4gICAgICAgICAgcGF0aHMucG9wKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGF0aHMucHVzaCgoXCJbXCIgKyBpbmRleCArIFwiXVwiKSk7XG4gICAgICAgICAgZm4obGV2ZWwsIGxvY2FsZSwgaXRlbSwgcGF0aHMpO1xuICAgICAgICAgIHBhdGhzLnBvcCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGlzU3RyaW5nKG1lc3NhZ2UpKSB7XG4gICAgICB2YXIgcmV0ID0gaHRtbFRhZ01hdGNoZXIudGVzdChtZXNzYWdlKTtcbiAgICAgIGlmIChyZXQpIHtcbiAgICAgICAgdmFyIG1zZyA9IFwiRGV0ZWN0ZWQgSFRNTCBpbiBtZXNzYWdlICdcIiArIG1lc3NhZ2UgKyBcIicgb2Yga2V5cGF0aCAnXCIgKyAocGF0aHMuam9pbignJykpICsgXCInIGF0ICdcIiArIGxvY2FsZSArIFwiJy4gQ29uc2lkZXIgY29tcG9uZW50IGludGVycG9sYXRpb24gd2l0aCAnPGkxOG4+JyB0byBhdm9pZCBYU1MuIFNlZSBodHRwczovL2JpdC5seS8yWnFKemtwXCI7XG4gICAgICAgIGlmIChsZXZlbCA9PT0gJ3dhcm4nKSB7XG4gICAgICAgICAgd2Fybihtc2cpO1xuICAgICAgICB9IGVsc2UgaWYgKGxldmVsID09PSAnZXJyb3InKSB7XG4gICAgICAgICAgZXJyb3IobXNnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBmbihsZXZlbCwgbG9jYWxlLCBtZXNzYWdlLCBwYXRocyk7XG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5faW5pdFZNID0gZnVuY3Rpb24gX2luaXRWTSAoZGF0YSkge1xuICB2YXIgc2lsZW50ID0gVnVlLmNvbmZpZy5zaWxlbnQ7XG4gIFZ1ZS5jb25maWcuc2lsZW50ID0gdHJ1ZTtcbiAgdGhpcy5fdm0gPSBuZXcgVnVlKHsgZGF0YTogZGF0YSB9KTtcbiAgVnVlLmNvbmZpZy5zaWxlbnQgPSBzaWxlbnQ7XG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5kZXN0cm95Vk0gPSBmdW5jdGlvbiBkZXN0cm95Vk0gKCkge1xuICB0aGlzLl92bS4kZGVzdHJveSgpO1xufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuc3Vic2NyaWJlRGF0YUNoYW5naW5nID0gZnVuY3Rpb24gc3Vic2NyaWJlRGF0YUNoYW5naW5nICh2bSkge1xuICB0aGlzLl9kYXRhTGlzdGVuZXJzLnB1c2godm0pO1xufTtcblxuVnVlSTE4bi5wcm90b3R5cGUudW5zdWJzY3JpYmVEYXRhQ2hhbmdpbmcgPSBmdW5jdGlvbiB1bnN1YnNjcmliZURhdGFDaGFuZ2luZyAodm0pIHtcbiAgcmVtb3ZlKHRoaXMuX2RhdGFMaXN0ZW5lcnMsIHZtKTtcbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLndhdGNoSTE4bkRhdGEgPSBmdW5jdGlvbiB3YXRjaEkxOG5EYXRhICgpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICByZXR1cm4gdGhpcy5fdm0uJHdhdGNoKCckZGF0YScsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaSA9IHNlbGYuX2RhdGFMaXN0ZW5lcnMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIFZ1ZS5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNlbGYuX2RhdGFMaXN0ZW5lcnNbaV0gJiYgc2VsZi5fZGF0YUxpc3RlbmVyc1tpXS4kZm9yY2VVcGRhdGUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgeyBkZWVwOiB0cnVlIH0pXG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS53YXRjaExvY2FsZSA9IGZ1bmN0aW9uIHdhdGNoTG9jYWxlICgpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICghdGhpcy5fc3luYyB8fCAhdGhpcy5fcm9vdCkgeyByZXR1cm4gbnVsbCB9XG4gIHZhciB0YXJnZXQgPSB0aGlzLl92bTtcbiAgcmV0dXJuIHRoaXMuX3Jvb3QuJGkxOG4udm0uJHdhdGNoKCdsb2NhbGUnLCBmdW5jdGlvbiAodmFsKSB7XG4gICAgdGFyZ2V0LiRzZXQodGFyZ2V0LCAnbG9jYWxlJywgdmFsKTtcbiAgICB0YXJnZXQuJGZvcmNlVXBkYXRlKCk7XG4gIH0sIHsgaW1tZWRpYXRlOiB0cnVlIH0pXG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5vbkNvbXBvbmVudEluc3RhbmNlQ3JlYXRlZCA9IGZ1bmN0aW9uIG9uQ29tcG9uZW50SW5zdGFuY2VDcmVhdGVkIChuZXdJMThuKSB7XG4gIGlmICh0aGlzLl9jb21wb25lbnRJbnN0YW5jZUNyZWF0ZWRMaXN0ZW5lcikge1xuICAgIHRoaXMuX2NvbXBvbmVudEluc3RhbmNlQ3JlYXRlZExpc3RlbmVyKG5ld0kxOG4sIHRoaXMpO1xuICB9XG59O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMudm0uZ2V0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fdm0gfTtcblxucHJvdG90eXBlQWNjZXNzb3JzLm1lc3NhZ2VzLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGxvb3NlQ2xvbmUodGhpcy5fZ2V0TWVzc2FnZXMoKSkgfTtcbnByb3RvdHlwZUFjY2Vzc29ycy5kYXRlVGltZUZvcm1hdHMuZ2V0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbG9vc2VDbG9uZSh0aGlzLl9nZXREYXRlVGltZUZvcm1hdHMoKSkgfTtcbnByb3RvdHlwZUFjY2Vzc29ycy5udW1iZXJGb3JtYXRzLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGxvb3NlQ2xvbmUodGhpcy5fZ2V0TnVtYmVyRm9ybWF0cygpKSB9O1xucHJvdG90eXBlQWNjZXNzb3JzLmF2YWlsYWJsZUxvY2FsZXMuZ2V0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gT2JqZWN0LmtleXModGhpcy5tZXNzYWdlcykuc29ydCgpIH07XG5cbnByb3RvdHlwZUFjY2Vzc29ycy5sb2NhbGUuZ2V0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fdm0ubG9jYWxlIH07XG5wcm90b3R5cGVBY2Nlc3NvcnMubG9jYWxlLnNldCA9IGZ1bmN0aW9uIChsb2NhbGUpIHtcbiAgdGhpcy5fdm0uJHNldCh0aGlzLl92bSwgJ2xvY2FsZScsIGxvY2FsZSk7XG59O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMuZmFsbGJhY2tMb2NhbGUuZ2V0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fdm0uZmFsbGJhY2tMb2NhbGUgfTtcbnByb3RvdHlwZUFjY2Vzc29ycy5mYWxsYmFja0xvY2FsZS5zZXQgPSBmdW5jdGlvbiAobG9jYWxlKSB7XG4gIHRoaXMuX2xvY2FsZUNoYWluQ2FjaGUgPSB7fTtcbiAgdGhpcy5fdm0uJHNldCh0aGlzLl92bSwgJ2ZhbGxiYWNrTG9jYWxlJywgbG9jYWxlKTtcbn07XG5cbnByb3RvdHlwZUFjY2Vzc29ycy5mb3JtYXRGYWxsYmFja01lc3NhZ2VzLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX2Zvcm1hdEZhbGxiYWNrTWVzc2FnZXMgfTtcbnByb3RvdHlwZUFjY2Vzc29ycy5mb3JtYXRGYWxsYmFja01lc3NhZ2VzLnNldCA9IGZ1bmN0aW9uIChmYWxsYmFjaykgeyB0aGlzLl9mb3JtYXRGYWxsYmFja01lc3NhZ2VzID0gZmFsbGJhY2s7IH07XG5cbnByb3RvdHlwZUFjY2Vzc29ycy5taXNzaW5nLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX21pc3NpbmcgfTtcbnByb3RvdHlwZUFjY2Vzc29ycy5taXNzaW5nLnNldCA9IGZ1bmN0aW9uIChoYW5kbGVyKSB7IHRoaXMuX21pc3NpbmcgPSBoYW5kbGVyOyB9O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMuZm9ybWF0dGVyLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX2Zvcm1hdHRlciB9O1xucHJvdG90eXBlQWNjZXNzb3JzLmZvcm1hdHRlci5zZXQgPSBmdW5jdGlvbiAoZm9ybWF0dGVyKSB7IHRoaXMuX2Zvcm1hdHRlciA9IGZvcm1hdHRlcjsgfTtcblxucHJvdG90eXBlQWNjZXNzb3JzLnNpbGVudFRyYW5zbGF0aW9uV2Fybi5nZXQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9zaWxlbnRUcmFuc2xhdGlvbldhcm4gfTtcbnByb3RvdHlwZUFjY2Vzc29ycy5zaWxlbnRUcmFuc2xhdGlvbldhcm4uc2V0ID0gZnVuY3Rpb24gKHNpbGVudCkgeyB0aGlzLl9zaWxlbnRUcmFuc2xhdGlvbldhcm4gPSBzaWxlbnQ7IH07XG5cbnByb3RvdHlwZUFjY2Vzc29ycy5zaWxlbnRGYWxsYmFja1dhcm4uZ2V0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fc2lsZW50RmFsbGJhY2tXYXJuIH07XG5wcm90b3R5cGVBY2Nlc3NvcnMuc2lsZW50RmFsbGJhY2tXYXJuLnNldCA9IGZ1bmN0aW9uIChzaWxlbnQpIHsgdGhpcy5fc2lsZW50RmFsbGJhY2tXYXJuID0gc2lsZW50OyB9O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMucHJlc2VydmVEaXJlY3RpdmVDb250ZW50LmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX3ByZXNlcnZlRGlyZWN0aXZlQ29udGVudCB9O1xucHJvdG90eXBlQWNjZXNzb3JzLnByZXNlcnZlRGlyZWN0aXZlQ29udGVudC5zZXQgPSBmdW5jdGlvbiAocHJlc2VydmUpIHsgdGhpcy5fcHJlc2VydmVEaXJlY3RpdmVDb250ZW50ID0gcHJlc2VydmU7IH07XG5cbnByb3RvdHlwZUFjY2Vzc29ycy53YXJuSHRtbEluTWVzc2FnZS5nZXQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl93YXJuSHRtbEluTWVzc2FnZSB9O1xucHJvdG90eXBlQWNjZXNzb3JzLndhcm5IdG1sSW5NZXNzYWdlLnNldCA9IGZ1bmN0aW9uIChsZXZlbCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIHZhciBvcmdMZXZlbCA9IHRoaXMuX3dhcm5IdG1sSW5NZXNzYWdlO1xuICB0aGlzLl93YXJuSHRtbEluTWVzc2FnZSA9IGxldmVsO1xuICBpZiAob3JnTGV2ZWwgIT09IGxldmVsICYmIChsZXZlbCA9PT0gJ3dhcm4nIHx8IGxldmVsID09PSAnZXJyb3InKSkge1xuICAgIHZhciBtZXNzYWdlcyA9IHRoaXMuX2dldE1lc3NhZ2VzKCk7XG4gICAgT2JqZWN0LmtleXMobWVzc2FnZXMpLmZvckVhY2goZnVuY3Rpb24gKGxvY2FsZSkge1xuICAgICAgdGhpcyQxLl9jaGVja0xvY2FsZU1lc3NhZ2UobG9jYWxlLCB0aGlzJDEuX3dhcm5IdG1sSW5NZXNzYWdlLCBtZXNzYWdlc1tsb2NhbGVdKTtcbiAgICB9KTtcbiAgfVxufTtcblxucHJvdG90eXBlQWNjZXNzb3JzLnBvc3RUcmFuc2xhdGlvbi5nZXQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9wb3N0VHJhbnNsYXRpb24gfTtcbnByb3RvdHlwZUFjY2Vzc29ycy5wb3N0VHJhbnNsYXRpb24uc2V0ID0gZnVuY3Rpb24gKGhhbmRsZXIpIHsgdGhpcy5fcG9zdFRyYW5zbGF0aW9uID0gaGFuZGxlcjsgfTtcblxuVnVlSTE4bi5wcm90b3R5cGUuX2dldE1lc3NhZ2VzID0gZnVuY3Rpb24gX2dldE1lc3NhZ2VzICgpIHsgcmV0dXJuIHRoaXMuX3ZtLm1lc3NhZ2VzIH07XG5WdWVJMThuLnByb3RvdHlwZS5fZ2V0RGF0ZVRpbWVGb3JtYXRzID0gZnVuY3Rpb24gX2dldERhdGVUaW1lRm9ybWF0cyAoKSB7IHJldHVybiB0aGlzLl92bS5kYXRlVGltZUZvcm1hdHMgfTtcblZ1ZUkxOG4ucHJvdG90eXBlLl9nZXROdW1iZXJGb3JtYXRzID0gZnVuY3Rpb24gX2dldE51bWJlckZvcm1hdHMgKCkgeyByZXR1cm4gdGhpcy5fdm0ubnVtYmVyRm9ybWF0cyB9O1xuXG5WdWVJMThuLnByb3RvdHlwZS5fd2FybkRlZmF1bHQgPSBmdW5jdGlvbiBfd2FybkRlZmF1bHQgKGxvY2FsZSwga2V5LCByZXN1bHQsIHZtLCB2YWx1ZXMsIGludGVycG9sYXRlTW9kZSkge1xuICBpZiAoIWlzTnVsbChyZXN1bHQpKSB7IHJldHVybiByZXN1bHQgfVxuICBpZiAodGhpcy5fbWlzc2luZykge1xuICAgIHZhciBtaXNzaW5nUmV0ID0gdGhpcy5fbWlzc2luZy5hcHBseShudWxsLCBbbG9jYWxlLCBrZXksIHZtLCB2YWx1ZXNdKTtcbiAgICBpZiAoaXNTdHJpbmcobWlzc2luZ1JldCkpIHtcbiAgICAgIHJldHVybiBtaXNzaW5nUmV0XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF0aGlzLl9pc1NpbGVudFRyYW5zbGF0aW9uV2FybihrZXkpKSB7XG4gICAgICB3YXJuKFxuICAgICAgICBcIkNhbm5vdCB0cmFuc2xhdGUgdGhlIHZhbHVlIG9mIGtleXBhdGggJ1wiICsga2V5ICsgXCInLiBcIiArXG4gICAgICAgICdVc2UgdGhlIHZhbHVlIG9mIGtleXBhdGggYXMgZGVmYXVsdC4nXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0aGlzLl9mb3JtYXRGYWxsYmFja01lc3NhZ2VzKSB7XG4gICAgdmFyIHBhcnNlZEFyZ3MgPSBwYXJzZUFyZ3MuYXBwbHkodm9pZCAwLCB2YWx1ZXMpO1xuICAgIHJldHVybiB0aGlzLl9yZW5kZXIoa2V5LCBpbnRlcnBvbGF0ZU1vZGUsIHBhcnNlZEFyZ3MucGFyYW1zLCBrZXkpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGtleVxuICB9XG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5faXNGYWxsYmFja1Jvb3QgPSBmdW5jdGlvbiBfaXNGYWxsYmFja1Jvb3QgKHZhbCkge1xuICByZXR1cm4gIXZhbCAmJiAhaXNOdWxsKHRoaXMuX3Jvb3QpICYmIHRoaXMuX2ZhbGxiYWNrUm9vdFxufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuX2lzU2lsZW50RmFsbGJhY2tXYXJuID0gZnVuY3Rpb24gX2lzU2lsZW50RmFsbGJhY2tXYXJuIChrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX3NpbGVudEZhbGxiYWNrV2FybiBpbnN0YW5jZW9mIFJlZ0V4cFxuICAgID8gdGhpcy5fc2lsZW50RmFsbGJhY2tXYXJuLnRlc3Qoa2V5KVxuICAgIDogdGhpcy5fc2lsZW50RmFsbGJhY2tXYXJuXG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5faXNTaWxlbnRGYWxsYmFjayA9IGZ1bmN0aW9uIF9pc1NpbGVudEZhbGxiYWNrIChsb2NhbGUsIGtleSkge1xuICByZXR1cm4gdGhpcy5faXNTaWxlbnRGYWxsYmFja1dhcm4oa2V5KSAmJiAodGhpcy5faXNGYWxsYmFja1Jvb3QoKSB8fCBsb2NhbGUgIT09IHRoaXMuZmFsbGJhY2tMb2NhbGUpXG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5faXNTaWxlbnRUcmFuc2xhdGlvbldhcm4gPSBmdW5jdGlvbiBfaXNTaWxlbnRUcmFuc2xhdGlvbldhcm4gKGtleSkge1xuICByZXR1cm4gdGhpcy5fc2lsZW50VHJhbnNsYXRpb25XYXJuIGluc3RhbmNlb2YgUmVnRXhwXG4gICAgPyB0aGlzLl9zaWxlbnRUcmFuc2xhdGlvbldhcm4udGVzdChrZXkpXG4gICAgOiB0aGlzLl9zaWxlbnRUcmFuc2xhdGlvbldhcm5cbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLl9pbnRlcnBvbGF0ZSA9IGZ1bmN0aW9uIF9pbnRlcnBvbGF0ZSAoXG4gIGxvY2FsZSxcbiAgbWVzc2FnZSxcbiAga2V5LFxuICBob3N0LFxuICBpbnRlcnBvbGF0ZU1vZGUsXG4gIHZhbHVlcyxcbiAgdmlzaXRlZExpbmtTdGFja1xuKSB7XG4gIGlmICghbWVzc2FnZSkgeyByZXR1cm4gbnVsbCB9XG5cbiAgdmFyIHBhdGhSZXQgPSB0aGlzLl9wYXRoLmdldFBhdGhWYWx1ZShtZXNzYWdlLCBrZXkpO1xuICBpZiAoaXNBcnJheShwYXRoUmV0KSB8fCBpc1BsYWluT2JqZWN0KHBhdGhSZXQpKSB7IHJldHVybiBwYXRoUmV0IH1cblxuICB2YXIgcmV0O1xuICBpZiAoaXNOdWxsKHBhdGhSZXQpKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoaXNQbGFpbk9iamVjdChtZXNzYWdlKSkge1xuICAgICAgcmV0ID0gbWVzc2FnZVtrZXldO1xuICAgICAgaWYgKCEoaXNTdHJpbmcocmV0KSB8fCBpc0Z1bmN0aW9uKHJldCkpKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF0aGlzLl9pc1NpbGVudFRyYW5zbGF0aW9uV2FybihrZXkpICYmICF0aGlzLl9pc1NpbGVudEZhbGxiYWNrKGxvY2FsZSwga2V5KSkge1xuICAgICAgICAgIHdhcm4oKFwiVmFsdWUgb2Yga2V5ICdcIiArIGtleSArIFwiJyBpcyBub3QgYSBzdHJpbmcgb3IgZnVuY3Rpb24gIVwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoaXNTdHJpbmcocGF0aFJldCkgfHwgaXNGdW5jdGlvbihwYXRoUmV0KSkge1xuICAgICAgcmV0ID0gcGF0aFJldDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXRoaXMuX2lzU2lsZW50VHJhbnNsYXRpb25XYXJuKGtleSkgJiYgIXRoaXMuX2lzU2lsZW50RmFsbGJhY2sobG9jYWxlLCBrZXkpKSB7XG4gICAgICAgIHdhcm4oKFwiVmFsdWUgb2Yga2V5ICdcIiArIGtleSArIFwiJyBpcyBub3QgYSBzdHJpbmcgb3IgZnVuY3Rpb24hXCIpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2YgbGlua3Mgd2l0aGluIHRoZSB0cmFuc2xhdGVkIHN0cmluZ1xuICBpZiAoaXNTdHJpbmcocmV0KSAmJiAocmV0LmluZGV4T2YoJ0A6JykgPj0gMCB8fCByZXQuaW5kZXhPZignQC4nKSA+PSAwKSkge1xuICAgIHJldCA9IHRoaXMuX2xpbmsobG9jYWxlLCBtZXNzYWdlLCByZXQsIGhvc3QsICdyYXcnLCB2YWx1ZXMsIHZpc2l0ZWRMaW5rU3RhY2spO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX3JlbmRlcihyZXQsIGludGVycG9sYXRlTW9kZSwgdmFsdWVzLCBrZXkpXG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5fbGluayA9IGZ1bmN0aW9uIF9saW5rIChcbiAgbG9jYWxlLFxuICBtZXNzYWdlLFxuICBzdHIsXG4gIGhvc3QsXG4gIGludGVycG9sYXRlTW9kZSxcbiAgdmFsdWVzLFxuICB2aXNpdGVkTGlua1N0YWNrXG4pIHtcbiAgdmFyIHJldCA9IHN0cjtcblxuICAvLyBNYXRjaCBhbGwgdGhlIGxpbmtzIHdpdGhpbiB0aGUgbG9jYWxcbiAgLy8gV2UgYXJlIGdvaW5nIHRvIHJlcGxhY2UgZWFjaCBvZlxuICAvLyB0aGVtIHdpdGggaXRzIHRyYW5zbGF0aW9uXG4gIHZhciBtYXRjaGVzID0gcmV0Lm1hdGNoKGxpbmtLZXlNYXRjaGVyKTtcbiAgZm9yICh2YXIgaWR4IGluIG1hdGNoZXMpIHtcbiAgICAvLyBpZSBjb21wYXRpYmxlOiBmaWx0ZXIgY3VzdG9tIGFycmF5XG4gICAgLy8gcHJvdG90eXBlIG1ldGhvZFxuICAgIGlmICghbWF0Y2hlcy5oYXNPd25Qcm9wZXJ0eShpZHgpKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICB2YXIgbGluayA9IG1hdGNoZXNbaWR4XTtcbiAgICB2YXIgbGlua0tleVByZWZpeE1hdGNoZXMgPSBsaW5rLm1hdGNoKGxpbmtLZXlQcmVmaXhNYXRjaGVyKTtcbiAgICB2YXIgbGlua1ByZWZpeCA9IGxpbmtLZXlQcmVmaXhNYXRjaGVzWzBdO1xuICAgICAgdmFyIGZvcm1hdHRlck5hbWUgPSBsaW5rS2V5UHJlZml4TWF0Y2hlc1sxXTtcblxuICAgIC8vIFJlbW92ZSB0aGUgbGVhZGluZyBAOiwgQC5jYXNlOiBhbmQgdGhlIGJyYWNrZXRzXG4gICAgdmFyIGxpbmtQbGFjZWhvbGRlciA9IGxpbmsucmVwbGFjZShsaW5rUHJlZml4LCAnJykucmVwbGFjZShicmFja2V0c01hdGNoZXIsICcnKTtcblxuICAgIGlmIChpbmNsdWRlcyh2aXNpdGVkTGlua1N0YWNrLCBsaW5rUGxhY2Vob2xkZXIpKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB3YXJuKChcIkNpcmN1bGFyIHJlZmVyZW5jZSBmb3VuZC4gXFxcIlwiICsgbGluayArIFwiXFxcIiBpcyBhbHJlYWR5IHZpc2l0ZWQgaW4gdGhlIGNoYWluIG9mIFwiICsgKHZpc2l0ZWRMaW5rU3RhY2sucmV2ZXJzZSgpLmpvaW4oJyA8LSAnKSkpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXRcbiAgICB9XG4gICAgdmlzaXRlZExpbmtTdGFjay5wdXNoKGxpbmtQbGFjZWhvbGRlcik7XG5cbiAgICAvLyBUcmFuc2xhdGUgdGhlIGxpbmtcbiAgICB2YXIgdHJhbnNsYXRlZCA9IHRoaXMuX2ludGVycG9sYXRlKFxuICAgICAgbG9jYWxlLCBtZXNzYWdlLCBsaW5rUGxhY2Vob2xkZXIsIGhvc3QsXG4gICAgICBpbnRlcnBvbGF0ZU1vZGUgPT09ICdyYXcnID8gJ3N0cmluZycgOiBpbnRlcnBvbGF0ZU1vZGUsXG4gICAgICBpbnRlcnBvbGF0ZU1vZGUgPT09ICdyYXcnID8gdW5kZWZpbmVkIDogdmFsdWVzLFxuICAgICAgdmlzaXRlZExpbmtTdGFja1xuICAgICk7XG5cbiAgICBpZiAodGhpcy5faXNGYWxsYmFja1Jvb3QodHJhbnNsYXRlZCkpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF0aGlzLl9pc1NpbGVudFRyYW5zbGF0aW9uV2FybihsaW5rUGxhY2Vob2xkZXIpKSB7XG4gICAgICAgIHdhcm4oKFwiRmFsbCBiYWNrIHRvIHRyYW5zbGF0ZSB0aGUgbGluayBwbGFjZWhvbGRlciAnXCIgKyBsaW5rUGxhY2Vob2xkZXIgKyBcIicgd2l0aCByb290IGxvY2FsZS5cIikpO1xuICAgICAgfVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoIXRoaXMuX3Jvb3QpIHsgdGhyb3cgRXJyb3IoJ3VuZXhwZWN0ZWQgZXJyb3InKSB9XG4gICAgICB2YXIgcm9vdCA9IHRoaXMuX3Jvb3QuJGkxOG47XG4gICAgICB0cmFuc2xhdGVkID0gcm9vdC5fdHJhbnNsYXRlKFxuICAgICAgICByb290Ll9nZXRNZXNzYWdlcygpLCByb290LmxvY2FsZSwgcm9vdC5mYWxsYmFja0xvY2FsZSxcbiAgICAgICAgbGlua1BsYWNlaG9sZGVyLCBob3N0LCBpbnRlcnBvbGF0ZU1vZGUsIHZhbHVlc1xuICAgICAgKTtcbiAgICB9XG4gICAgdHJhbnNsYXRlZCA9IHRoaXMuX3dhcm5EZWZhdWx0KFxuICAgICAgbG9jYWxlLCBsaW5rUGxhY2Vob2xkZXIsIHRyYW5zbGF0ZWQsIGhvc3QsXG4gICAgICBpc0FycmF5KHZhbHVlcykgPyB2YWx1ZXMgOiBbdmFsdWVzXSxcbiAgICAgIGludGVycG9sYXRlTW9kZVxuICAgICk7XG5cbiAgICBpZiAodGhpcy5fbW9kaWZpZXJzLmhhc093blByb3BlcnR5KGZvcm1hdHRlck5hbWUpKSB7XG4gICAgICB0cmFuc2xhdGVkID0gdGhpcy5fbW9kaWZpZXJzW2Zvcm1hdHRlck5hbWVdKHRyYW5zbGF0ZWQpO1xuICAgIH0gZWxzZSBpZiAoZGVmYXVsdE1vZGlmaWVycy5oYXNPd25Qcm9wZXJ0eShmb3JtYXR0ZXJOYW1lKSkge1xuICAgICAgdHJhbnNsYXRlZCA9IGRlZmF1bHRNb2RpZmllcnNbZm9ybWF0dGVyTmFtZV0odHJhbnNsYXRlZCk7XG4gICAgfVxuXG4gICAgdmlzaXRlZExpbmtTdGFjay5wb3AoKTtcblxuICAgIC8vIFJlcGxhY2UgdGhlIGxpbmsgd2l0aCB0aGUgdHJhbnNsYXRlZFxuICAgIHJldCA9ICF0cmFuc2xhdGVkID8gcmV0IDogcmV0LnJlcGxhY2UobGluaywgdHJhbnNsYXRlZCk7XG4gIH1cblxuICByZXR1cm4gcmV0XG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5fY3JlYXRlTWVzc2FnZUNvbnRleHQgPSBmdW5jdGlvbiBfY3JlYXRlTWVzc2FnZUNvbnRleHQgKHZhbHVlcykge1xuICB2YXIgX2xpc3QgPSBpc0FycmF5KHZhbHVlcykgPyB2YWx1ZXMgOiBbXTtcbiAgdmFyIF9uYW1lZCA9IGlzT2JqZWN0KHZhbHVlcykgPyB2YWx1ZXMgOiB7fTtcbiAgdmFyIGxpc3QgPSBmdW5jdGlvbiAoaW5kZXgpIHsgcmV0dXJuIF9saXN0W2luZGV4XTsgfTtcbiAgdmFyIG5hbWVkID0gZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gX25hbWVkW2tleV07IH07XG4gIHJldHVybiB7XG4gICAgbGlzdDogbGlzdCxcbiAgICBuYW1lZDogbmFtZWRcbiAgfVxufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuX3JlbmRlciA9IGZ1bmN0aW9uIF9yZW5kZXIgKG1lc3NhZ2UsIGludGVycG9sYXRlTW9kZSwgdmFsdWVzLCBwYXRoKSB7XG4gIGlmIChpc0Z1bmN0aW9uKG1lc3NhZ2UpKSB7XG4gICAgcmV0dXJuIG1lc3NhZ2UodGhpcy5fY3JlYXRlTWVzc2FnZUNvbnRleHQodmFsdWVzKSlcbiAgfVxuXG4gIHZhciByZXQgPSB0aGlzLl9mb3JtYXR0ZXIuaW50ZXJwb2xhdGUobWVzc2FnZSwgdmFsdWVzLCBwYXRoKTtcblxuICAvLyBJZiB0aGUgY3VzdG9tIGZvcm1hdHRlciByZWZ1c2VzIHRvIHdvcmsgLSBhcHBseSB0aGUgZGVmYXVsdCBvbmVcbiAgaWYgKCFyZXQpIHtcbiAgICByZXQgPSBkZWZhdWx0Rm9ybWF0dGVyLmludGVycG9sYXRlKG1lc3NhZ2UsIHZhbHVlcywgcGF0aCk7XG4gIH1cblxuICAvLyBpZiBpbnRlcnBvbGF0ZU1vZGUgaXMgKipub3QqKiAnc3RyaW5nJyAoJ3JvdycpLFxuICAvLyByZXR1cm4gdGhlIGNvbXBpbGVkIGRhdGEgKGUuZy4gWydmb28nLCBWTm9kZSwgJ2JhciddKSB3aXRoIGZvcm1hdHRlclxuICByZXR1cm4gaW50ZXJwb2xhdGVNb2RlID09PSAnc3RyaW5nJyAmJiAhaXNTdHJpbmcocmV0KSA/IHJldC5qb2luKCcnKSA6IHJldFxufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuX2FwcGVuZEl0ZW1Ub0NoYWluID0gZnVuY3Rpb24gX2FwcGVuZEl0ZW1Ub0NoYWluIChjaGFpbiwgaXRlbSwgYmxvY2tzKSB7XG4gIHZhciBmb2xsb3cgPSBmYWxzZTtcbiAgaWYgKCFpbmNsdWRlcyhjaGFpbiwgaXRlbSkpIHtcbiAgICBmb2xsb3cgPSB0cnVlO1xuICAgIGlmIChpdGVtKSB7XG4gICAgICBmb2xsb3cgPSBpdGVtW2l0ZW0ubGVuZ3RoIC0gMV0gIT09ICchJztcbiAgICAgIGl0ZW0gPSBpdGVtLnJlcGxhY2UoLyEvZywgJycpO1xuICAgICAgY2hhaW4ucHVzaChpdGVtKTtcbiAgICAgIGlmIChibG9ja3MgJiYgYmxvY2tzW2l0ZW1dKSB7XG4gICAgICAgIGZvbGxvdyA9IGJsb2Nrc1tpdGVtXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZvbGxvd1xufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuX2FwcGVuZExvY2FsZVRvQ2hhaW4gPSBmdW5jdGlvbiBfYXBwZW5kTG9jYWxlVG9DaGFpbiAoY2hhaW4sIGxvY2FsZSwgYmxvY2tzKSB7XG4gIHZhciBmb2xsb3c7XG4gIHZhciB0b2tlbnMgPSBsb2NhbGUuc3BsaXQoJy0nKTtcbiAgZG8ge1xuICAgIHZhciBpdGVtID0gdG9rZW5zLmpvaW4oJy0nKTtcbiAgICBmb2xsb3cgPSB0aGlzLl9hcHBlbmRJdGVtVG9DaGFpbihjaGFpbiwgaXRlbSwgYmxvY2tzKTtcbiAgICB0b2tlbnMuc3BsaWNlKC0xLCAxKTtcbiAgfSB3aGlsZSAodG9rZW5zLmxlbmd0aCAmJiAoZm9sbG93ID09PSB0cnVlKSlcbiAgcmV0dXJuIGZvbGxvd1xufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuX2FwcGVuZEJsb2NrVG9DaGFpbiA9IGZ1bmN0aW9uIF9hcHBlbmRCbG9ja1RvQ2hhaW4gKGNoYWluLCBibG9jaywgYmxvY2tzKSB7XG4gIHZhciBmb2xsb3cgPSB0cnVlO1xuICBmb3IgKHZhciBpID0gMDsgKGkgPCBibG9jay5sZW5ndGgpICYmIChpc0Jvb2xlYW4oZm9sbG93KSk7IGkrKykge1xuICAgIHZhciBsb2NhbGUgPSBibG9ja1tpXTtcbiAgICBpZiAoaXNTdHJpbmcobG9jYWxlKSkge1xuICAgICAgZm9sbG93ID0gdGhpcy5fYXBwZW5kTG9jYWxlVG9DaGFpbihjaGFpbiwgbG9jYWxlLCBibG9ja3MpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZm9sbG93XG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5fZ2V0TG9jYWxlQ2hhaW4gPSBmdW5jdGlvbiBfZ2V0TG9jYWxlQ2hhaW4gKHN0YXJ0LCBmYWxsYmFja0xvY2FsZSkge1xuICBpZiAoc3RhcnQgPT09ICcnKSB7IHJldHVybiBbXSB9XG5cbiAgaWYgKCF0aGlzLl9sb2NhbGVDaGFpbkNhY2hlKSB7XG4gICAgdGhpcy5fbG9jYWxlQ2hhaW5DYWNoZSA9IHt9O1xuICB9XG5cbiAgdmFyIGNoYWluID0gdGhpcy5fbG9jYWxlQ2hhaW5DYWNoZVtzdGFydF07XG4gIGlmICghY2hhaW4pIHtcbiAgICBpZiAoIWZhbGxiYWNrTG9jYWxlKSB7XG4gICAgICBmYWxsYmFja0xvY2FsZSA9IHRoaXMuZmFsbGJhY2tMb2NhbGU7XG4gICAgfVxuICAgIGNoYWluID0gW107XG5cbiAgICAvLyBmaXJzdCBibG9jayBkZWZpbmVkIGJ5IHN0YXJ0XG4gICAgdmFyIGJsb2NrID0gW3N0YXJ0XTtcblxuICAgIC8vIHdoaWxlIGFueSBpbnRlcnZlbmluZyBibG9jayBmb3VuZFxuICAgIHdoaWxlIChpc0FycmF5KGJsb2NrKSkge1xuICAgICAgYmxvY2sgPSB0aGlzLl9hcHBlbmRCbG9ja1RvQ2hhaW4oXG4gICAgICAgIGNoYWluLFxuICAgICAgICBibG9jayxcbiAgICAgICAgZmFsbGJhY2tMb2NhbGVcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gbGFzdCBibG9jayBkZWZpbmVkIGJ5IGRlZmF1bHRcbiAgICB2YXIgZGVmYXVsdHM7XG4gICAgaWYgKGlzQXJyYXkoZmFsbGJhY2tMb2NhbGUpKSB7XG4gICAgICBkZWZhdWx0cyA9IGZhbGxiYWNrTG9jYWxlO1xuICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoZmFsbGJhY2tMb2NhbGUpKSB7XG4gICAgICAvKiAkRmxvd0ZpeE1lICovXG4gICAgICBpZiAoZmFsbGJhY2tMb2NhbGVbJ2RlZmF1bHQnXSkge1xuICAgICAgICBkZWZhdWx0cyA9IGZhbGxiYWNrTG9jYWxlWydkZWZhdWx0J107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWZhdWx0cyA9IG51bGw7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlZmF1bHRzID0gZmFsbGJhY2tMb2NhbGU7XG4gICAgfVxuXG4gICAgLy8gY29udmVydCBkZWZhdWx0cyB0byBhcnJheVxuICAgIGlmIChpc1N0cmluZyhkZWZhdWx0cykpIHtcbiAgICAgIGJsb2NrID0gW2RlZmF1bHRzXTtcbiAgICB9IGVsc2Uge1xuICAgICAgYmxvY2sgPSBkZWZhdWx0cztcbiAgICB9XG4gICAgaWYgKGJsb2NrKSB7XG4gICAgICB0aGlzLl9hcHBlbmRCbG9ja1RvQ2hhaW4oXG4gICAgICAgIGNoYWluLFxuICAgICAgICBibG9jayxcbiAgICAgICAgbnVsbFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5fbG9jYWxlQ2hhaW5DYWNoZVtzdGFydF0gPSBjaGFpbjtcbiAgfVxuICByZXR1cm4gY2hhaW5cbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLl90cmFuc2xhdGUgPSBmdW5jdGlvbiBfdHJhbnNsYXRlIChcbiAgbWVzc2FnZXMsXG4gIGxvY2FsZSxcbiAgZmFsbGJhY2ssXG4gIGtleSxcbiAgaG9zdCxcbiAgaW50ZXJwb2xhdGVNb2RlLFxuICBhcmdzXG4pIHtcbiAgdmFyIGNoYWluID0gdGhpcy5fZ2V0TG9jYWxlQ2hhaW4obG9jYWxlLCBmYWxsYmFjayk7XG4gIHZhciByZXM7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY2hhaW4ubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc3RlcCA9IGNoYWluW2ldO1xuICAgIHJlcyA9XG4gICAgICB0aGlzLl9pbnRlcnBvbGF0ZShzdGVwLCBtZXNzYWdlc1tzdGVwXSwga2V5LCBob3N0LCBpbnRlcnBvbGF0ZU1vZGUsIGFyZ3MsIFtrZXldKTtcbiAgICBpZiAoIWlzTnVsbChyZXMpKSB7XG4gICAgICBpZiAoc3RlcCAhPT0gbG9jYWxlICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXRoaXMuX2lzU2lsZW50VHJhbnNsYXRpb25XYXJuKGtleSkgJiYgIXRoaXMuX2lzU2lsZW50RmFsbGJhY2tXYXJuKGtleSkpIHtcbiAgICAgICAgd2FybigoXCJGYWxsIGJhY2sgdG8gdHJhbnNsYXRlIHRoZSBrZXlwYXRoICdcIiArIGtleSArIFwiJyB3aXRoICdcIiArIHN0ZXAgKyBcIicgbG9jYWxlLlwiKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzXG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsXG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5fdCA9IGZ1bmN0aW9uIF90IChrZXksIF9sb2NhbGUsIG1lc3NhZ2VzLCBob3N0KSB7XG4gICAgdmFyIHJlZjtcblxuICAgIHZhciB2YWx1ZXMgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aCAtIDQ7XG4gICAgd2hpbGUgKCBsZW4tLSA+IDAgKSB2YWx1ZXNbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gKyA0IF07XG4gIGlmICgha2V5KSB7IHJldHVybiAnJyB9XG5cbiAgdmFyIHBhcnNlZEFyZ3MgPSBwYXJzZUFyZ3MuYXBwbHkodm9pZCAwLCB2YWx1ZXMpO1xuICB2YXIgbG9jYWxlID0gcGFyc2VkQXJncy5sb2NhbGUgfHwgX2xvY2FsZTtcblxuICB2YXIgcmV0ID0gdGhpcy5fdHJhbnNsYXRlKFxuICAgIG1lc3NhZ2VzLCBsb2NhbGUsIHRoaXMuZmFsbGJhY2tMb2NhbGUsIGtleSxcbiAgICBob3N0LCAnc3RyaW5nJywgcGFyc2VkQXJncy5wYXJhbXNcbiAgKTtcbiAgaWYgKHRoaXMuX2lzRmFsbGJhY2tSb290KHJldCkpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhdGhpcy5faXNTaWxlbnRUcmFuc2xhdGlvbldhcm4oa2V5KSAmJiAhdGhpcy5faXNTaWxlbnRGYWxsYmFja1dhcm4oa2V5KSkge1xuICAgICAgd2FybigoXCJGYWxsIGJhY2sgdG8gdHJhbnNsYXRlIHRoZSBrZXlwYXRoICdcIiArIGtleSArIFwiJyB3aXRoIHJvb3QgbG9jYWxlLlwiKSk7XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghdGhpcy5fcm9vdCkgeyB0aHJvdyBFcnJvcigndW5leHBlY3RlZCBlcnJvcicpIH1cbiAgICByZXR1cm4gKHJlZiA9IHRoaXMuX3Jvb3QpLiR0LmFwcGx5KHJlZiwgWyBrZXkgXS5jb25jYXQoIHZhbHVlcyApKVxuICB9IGVsc2Uge1xuICAgIHJldCA9IHRoaXMuX3dhcm5EZWZhdWx0KGxvY2FsZSwga2V5LCByZXQsIGhvc3QsIHZhbHVlcywgJ3N0cmluZycpO1xuICAgIGlmICh0aGlzLl9wb3N0VHJhbnNsYXRpb24gJiYgcmV0ICE9PSBudWxsICYmIHJldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXQgPSB0aGlzLl9wb3N0VHJhbnNsYXRpb24ocmV0LCBrZXkpO1xuICAgIH1cbiAgICByZXR1cm4gcmV0XG4gIH1cbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLnQgPSBmdW5jdGlvbiB0IChrZXkpIHtcbiAgICB2YXIgcmVmO1xuXG4gICAgdmFyIHZhbHVlcyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoIC0gMTtcbiAgICB3aGlsZSAoIGxlbi0tID4gMCApIHZhbHVlc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiArIDEgXTtcbiAgcmV0dXJuIChyZWYgPSB0aGlzKS5fdC5hcHBseShyZWYsIFsga2V5LCB0aGlzLmxvY2FsZSwgdGhpcy5fZ2V0TWVzc2FnZXMoKSwgbnVsbCBdLmNvbmNhdCggdmFsdWVzICkpXG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5faSA9IGZ1bmN0aW9uIF9pIChrZXksIGxvY2FsZSwgbWVzc2FnZXMsIGhvc3QsIHZhbHVlcykge1xuICB2YXIgcmV0ID1cbiAgICB0aGlzLl90cmFuc2xhdGUobWVzc2FnZXMsIGxvY2FsZSwgdGhpcy5mYWxsYmFja0xvY2FsZSwga2V5LCBob3N0LCAncmF3JywgdmFsdWVzKTtcbiAgaWYgKHRoaXMuX2lzRmFsbGJhY2tSb290KHJldCkpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhdGhpcy5faXNTaWxlbnRUcmFuc2xhdGlvbldhcm4oa2V5KSkge1xuICAgICAgd2FybigoXCJGYWxsIGJhY2sgdG8gaW50ZXJwb2xhdGUgdGhlIGtleXBhdGggJ1wiICsga2V5ICsgXCInIHdpdGggcm9vdCBsb2NhbGUuXCIpKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9yb290KSB7IHRocm93IEVycm9yKCd1bmV4cGVjdGVkIGVycm9yJykgfVxuICAgIHJldHVybiB0aGlzLl9yb290LiRpMThuLmkoa2V5LCBsb2NhbGUsIHZhbHVlcylcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdGhpcy5fd2FybkRlZmF1bHQobG9jYWxlLCBrZXksIHJldCwgaG9zdCwgW3ZhbHVlc10sICdyYXcnKVxuICB9XG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5pID0gZnVuY3Rpb24gaSAoa2V5LCBsb2NhbGUsIHZhbHVlcykge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKCFrZXkpIHsgcmV0dXJuICcnIH1cblxuICBpZiAoIWlzU3RyaW5nKGxvY2FsZSkpIHtcbiAgICBsb2NhbGUgPSB0aGlzLmxvY2FsZTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9pKGtleSwgbG9jYWxlLCB0aGlzLl9nZXRNZXNzYWdlcygpLCBudWxsLCB2YWx1ZXMpXG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5fdGMgPSBmdW5jdGlvbiBfdGMgKFxuICBrZXksXG4gIF9sb2NhbGUsXG4gIG1lc3NhZ2VzLFxuICBob3N0LFxuICBjaG9pY2Vcbikge1xuICAgIHZhciByZWY7XG5cbiAgICB2YXIgdmFsdWVzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGggLSA1O1xuICAgIHdoaWxlICggbGVuLS0gPiAwICkgdmFsdWVzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuICsgNSBdO1xuICBpZiAoIWtleSkgeyByZXR1cm4gJycgfVxuICBpZiAoY2hvaWNlID09PSB1bmRlZmluZWQpIHtcbiAgICBjaG9pY2UgPSAxO1xuICB9XG5cbiAgdmFyIHByZWRlZmluZWQgPSB7ICdjb3VudCc6IGNob2ljZSwgJ24nOiBjaG9pY2UgfTtcbiAgdmFyIHBhcnNlZEFyZ3MgPSBwYXJzZUFyZ3MuYXBwbHkodm9pZCAwLCB2YWx1ZXMpO1xuICBwYXJzZWRBcmdzLnBhcmFtcyA9IE9iamVjdC5hc3NpZ24ocHJlZGVmaW5lZCwgcGFyc2VkQXJncy5wYXJhbXMpO1xuICB2YWx1ZXMgPSBwYXJzZWRBcmdzLmxvY2FsZSA9PT0gbnVsbCA/IFtwYXJzZWRBcmdzLnBhcmFtc10gOiBbcGFyc2VkQXJncy5sb2NhbGUsIHBhcnNlZEFyZ3MucGFyYW1zXTtcbiAgcmV0dXJuIHRoaXMuZmV0Y2hDaG9pY2UoKHJlZiA9IHRoaXMpLl90LmFwcGx5KHJlZiwgWyBrZXksIF9sb2NhbGUsIG1lc3NhZ2VzLCBob3N0IF0uY29uY2F0KCB2YWx1ZXMgKSksIGNob2ljZSlcbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLmZldGNoQ2hvaWNlID0gZnVuY3Rpb24gZmV0Y2hDaG9pY2UgKG1lc3NhZ2UsIGNob2ljZSkge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKCFtZXNzYWdlICYmICFpc1N0cmluZyhtZXNzYWdlKSkgeyByZXR1cm4gbnVsbCB9XG4gIHZhciBjaG9pY2VzID0gbWVzc2FnZS5zcGxpdCgnfCcpO1xuXG4gIGNob2ljZSA9IHRoaXMuZ2V0Q2hvaWNlSW5kZXgoY2hvaWNlLCBjaG9pY2VzLmxlbmd0aCk7XG4gIGlmICghY2hvaWNlc1tjaG9pY2VdKSB7IHJldHVybiBtZXNzYWdlIH1cbiAgcmV0dXJuIGNob2ljZXNbY2hvaWNlXS50cmltKClcbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLnRjID0gZnVuY3Rpb24gdGMgKGtleSwgY2hvaWNlKSB7XG4gICAgdmFyIHJlZjtcblxuICAgIHZhciB2YWx1ZXMgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7XG4gICAgd2hpbGUgKCBsZW4tLSA+IDAgKSB2YWx1ZXNbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gKyAyIF07XG4gIHJldHVybiAocmVmID0gdGhpcykuX3RjLmFwcGx5KHJlZiwgWyBrZXksIHRoaXMubG9jYWxlLCB0aGlzLl9nZXRNZXNzYWdlcygpLCBudWxsLCBjaG9pY2UgXS5jb25jYXQoIHZhbHVlcyApKVxufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuX3RlID0gZnVuY3Rpb24gX3RlIChrZXksIGxvY2FsZSwgbWVzc2FnZXMpIHtcbiAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoIC0gMztcbiAgICB3aGlsZSAoIGxlbi0tID4gMCApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gKyAzIF07XG5cbiAgdmFyIF9sb2NhbGUgPSBwYXJzZUFyZ3MuYXBwbHkodm9pZCAwLCBhcmdzKS5sb2NhbGUgfHwgbG9jYWxlO1xuICByZXR1cm4gdGhpcy5fZXhpc3QobWVzc2FnZXNbX2xvY2FsZV0sIGtleSlcbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLnRlID0gZnVuY3Rpb24gdGUgKGtleSwgbG9jYWxlKSB7XG4gIHJldHVybiB0aGlzLl90ZShrZXksIHRoaXMubG9jYWxlLCB0aGlzLl9nZXRNZXNzYWdlcygpLCBsb2NhbGUpXG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5nZXRMb2NhbGVNZXNzYWdlID0gZnVuY3Rpb24gZ2V0TG9jYWxlTWVzc2FnZSAobG9jYWxlKSB7XG4gIHJldHVybiBsb29zZUNsb25lKHRoaXMuX3ZtLm1lc3NhZ2VzW2xvY2FsZV0gfHwge30pXG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5zZXRMb2NhbGVNZXNzYWdlID0gZnVuY3Rpb24gc2V0TG9jYWxlTWVzc2FnZSAobG9jYWxlLCBtZXNzYWdlKSB7XG4gIGlmICh0aGlzLl93YXJuSHRtbEluTWVzc2FnZSA9PT0gJ3dhcm4nIHx8IHRoaXMuX3dhcm5IdG1sSW5NZXNzYWdlID09PSAnZXJyb3InKSB7XG4gICAgdGhpcy5fY2hlY2tMb2NhbGVNZXNzYWdlKGxvY2FsZSwgdGhpcy5fd2Fybkh0bWxJbk1lc3NhZ2UsIG1lc3NhZ2UpO1xuICB9XG4gIHRoaXMuX3ZtLiRzZXQodGhpcy5fdm0ubWVzc2FnZXMsIGxvY2FsZSwgbWVzc2FnZSk7XG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5tZXJnZUxvY2FsZU1lc3NhZ2UgPSBmdW5jdGlvbiBtZXJnZUxvY2FsZU1lc3NhZ2UgKGxvY2FsZSwgbWVzc2FnZSkge1xuICBpZiAodGhpcy5fd2Fybkh0bWxJbk1lc3NhZ2UgPT09ICd3YXJuJyB8fCB0aGlzLl93YXJuSHRtbEluTWVzc2FnZSA9PT0gJ2Vycm9yJykge1xuICAgIHRoaXMuX2NoZWNrTG9jYWxlTWVzc2FnZShsb2NhbGUsIHRoaXMuX3dhcm5IdG1sSW5NZXNzYWdlLCBtZXNzYWdlKTtcbiAgfVxuICB0aGlzLl92bS4kc2V0KHRoaXMuX3ZtLm1lc3NhZ2VzLCBsb2NhbGUsIG1lcmdlKHt9LCB0aGlzLl92bS5tZXNzYWdlc1tsb2NhbGVdIHx8IHt9LCBtZXNzYWdlKSk7XG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5nZXREYXRlVGltZUZvcm1hdCA9IGZ1bmN0aW9uIGdldERhdGVUaW1lRm9ybWF0IChsb2NhbGUpIHtcbiAgcmV0dXJuIGxvb3NlQ2xvbmUodGhpcy5fdm0uZGF0ZVRpbWVGb3JtYXRzW2xvY2FsZV0gfHwge30pXG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5zZXREYXRlVGltZUZvcm1hdCA9IGZ1bmN0aW9uIHNldERhdGVUaW1lRm9ybWF0IChsb2NhbGUsIGZvcm1hdCkge1xuICB0aGlzLl92bS4kc2V0KHRoaXMuX3ZtLmRhdGVUaW1lRm9ybWF0cywgbG9jYWxlLCBmb3JtYXQpO1xuICB0aGlzLl9jbGVhckRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgZm9ybWF0KTtcbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLm1lcmdlRGF0ZVRpbWVGb3JtYXQgPSBmdW5jdGlvbiBtZXJnZURhdGVUaW1lRm9ybWF0IChsb2NhbGUsIGZvcm1hdCkge1xuICB0aGlzLl92bS4kc2V0KHRoaXMuX3ZtLmRhdGVUaW1lRm9ybWF0cywgbG9jYWxlLCBtZXJnZSh0aGlzLl92bS5kYXRlVGltZUZvcm1hdHNbbG9jYWxlXSB8fCB7fSwgZm9ybWF0KSk7XG4gIHRoaXMuX2NsZWFyRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBmb3JtYXQpO1xufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuX2NsZWFyRGF0ZVRpbWVGb3JtYXQgPSBmdW5jdGlvbiBfY2xlYXJEYXRlVGltZUZvcm1hdCAobG9jYWxlLCBmb3JtYXQpIHtcbiAgZm9yICh2YXIga2V5IGluIGZvcm1hdCkge1xuICAgIHZhciBpZCA9IGxvY2FsZSArIFwiX19cIiArIGtleTtcblxuICAgIGlmICghdGhpcy5fZGF0ZVRpbWVGb3JtYXR0ZXJzLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBkZWxldGUgdGhpcy5fZGF0ZVRpbWVGb3JtYXR0ZXJzW2lkXTtcbiAgfVxufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuX2xvY2FsaXplRGF0ZVRpbWUgPSBmdW5jdGlvbiBfbG9jYWxpemVEYXRlVGltZSAoXG4gIHZhbHVlLFxuICBsb2NhbGUsXG4gIGZhbGxiYWNrLFxuICBkYXRlVGltZUZvcm1hdHMsXG4gIGtleVxuKSB7XG4gIHZhciBfbG9jYWxlID0gbG9jYWxlO1xuICB2YXIgZm9ybWF0cyA9IGRhdGVUaW1lRm9ybWF0c1tfbG9jYWxlXTtcblxuICB2YXIgY2hhaW4gPSB0aGlzLl9nZXRMb2NhbGVDaGFpbihsb2NhbGUsIGZhbGxiYWNrKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFpbi5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjdXJyZW50ID0gX2xvY2FsZTtcbiAgICB2YXIgc3RlcCA9IGNoYWluW2ldO1xuICAgIGZvcm1hdHMgPSBkYXRlVGltZUZvcm1hdHNbc3RlcF07XG4gICAgX2xvY2FsZSA9IHN0ZXA7XG4gICAgLy8gZmFsbGJhY2sgbG9jYWxlXG4gICAgaWYgKGlzTnVsbChmb3JtYXRzKSB8fCBpc051bGwoZm9ybWF0c1trZXldKSkge1xuICAgICAgaWYgKHN0ZXAgIT09IGxvY2FsZSAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF0aGlzLl9pc1NpbGVudFRyYW5zbGF0aW9uV2FybihrZXkpICYmICF0aGlzLl9pc1NpbGVudEZhbGxiYWNrV2FybihrZXkpKSB7XG4gICAgICAgIHdhcm4oKFwiRmFsbCBiYWNrIHRvICdcIiArIHN0ZXAgKyBcIicgZGF0ZXRpbWUgZm9ybWF0cyBmcm9tICdcIiArIGN1cnJlbnQgKyBcIicgZGF0ZXRpbWUgZm9ybWF0cy5cIikpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmIChpc051bGwoZm9ybWF0cykgfHwgaXNOdWxsKGZvcm1hdHNba2V5XSkpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9IGVsc2Uge1xuICAgIHZhciBmb3JtYXQgPSBmb3JtYXRzW2tleV07XG4gICAgdmFyIGlkID0gX2xvY2FsZSArIFwiX19cIiArIGtleTtcbiAgICB2YXIgZm9ybWF0dGVyID0gdGhpcy5fZGF0ZVRpbWVGb3JtYXR0ZXJzW2lkXTtcbiAgICBpZiAoIWZvcm1hdHRlcikge1xuICAgICAgZm9ybWF0dGVyID0gdGhpcy5fZGF0ZVRpbWVGb3JtYXR0ZXJzW2lkXSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KF9sb2NhbGUsIGZvcm1hdCk7XG4gICAgfVxuICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KHZhbHVlKVxuICB9XG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5fZCA9IGZ1bmN0aW9uIF9kICh2YWx1ZSwgbG9jYWxlLCBrZXkpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICFWdWVJMThuLmF2YWlsYWJpbGl0aWVzLmRhdGVUaW1lRm9ybWF0KSB7XG4gICAgd2FybignQ2Fubm90IGZvcm1hdCBhIERhdGUgdmFsdWUgZHVlIHRvIG5vdCBzdXBwb3J0ZWQgSW50bC5EYXRlVGltZUZvcm1hdC4nKTtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGlmICgha2V5KSB7XG4gICAgcmV0dXJuIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSkuZm9ybWF0KHZhbHVlKVxuICB9XG5cbiAgdmFyIHJldCA9XG4gICAgdGhpcy5fbG9jYWxpemVEYXRlVGltZSh2YWx1ZSwgbG9jYWxlLCB0aGlzLmZhbGxiYWNrTG9jYWxlLCB0aGlzLl9nZXREYXRlVGltZUZvcm1hdHMoKSwga2V5KTtcbiAgaWYgKHRoaXMuX2lzRmFsbGJhY2tSb290KHJldCkpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhdGhpcy5faXNTaWxlbnRUcmFuc2xhdGlvbldhcm4oa2V5KSAmJiAhdGhpcy5faXNTaWxlbnRGYWxsYmFja1dhcm4oa2V5KSkge1xuICAgICAgd2FybigoXCJGYWxsIGJhY2sgdG8gZGF0ZXRpbWUgbG9jYWxpemF0aW9uIG9mIHJvb3Q6IGtleSAnXCIgKyBrZXkgKyBcIicuXCIpKTtcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCF0aGlzLl9yb290KSB7IHRocm93IEVycm9yKCd1bmV4cGVjdGVkIGVycm9yJykgfVxuICAgIHJldHVybiB0aGlzLl9yb290LiRpMThuLmQodmFsdWUsIGtleSwgbG9jYWxlKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiByZXQgfHwgJydcbiAgfVxufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuZCA9IGZ1bmN0aW9uIGQgKHZhbHVlKSB7XG4gICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgd2hpbGUgKCBsZW4tLSA+IDAgKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuICsgMSBdO1xuXG4gIHZhciBsb2NhbGUgPSB0aGlzLmxvY2FsZTtcbiAgdmFyIGtleSA9IG51bGw7XG5cbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgaWYgKGlzU3RyaW5nKGFyZ3NbMF0pKSB7XG4gICAgICBrZXkgPSBhcmdzWzBdO1xuICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoYXJnc1swXSkpIHtcbiAgICAgIGlmIChhcmdzWzBdLmxvY2FsZSkge1xuICAgICAgICBsb2NhbGUgPSBhcmdzWzBdLmxvY2FsZTtcbiAgICAgIH1cbiAgICAgIGlmIChhcmdzWzBdLmtleSkge1xuICAgICAgICBrZXkgPSBhcmdzWzBdLmtleTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICBpZiAoaXNTdHJpbmcoYXJnc1swXSkpIHtcbiAgICAgIGtleSA9IGFyZ3NbMF07XG4gICAgfVxuICAgIGlmIChpc1N0cmluZyhhcmdzWzFdKSkge1xuICAgICAgbG9jYWxlID0gYXJnc1sxXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpcy5fZCh2YWx1ZSwgbG9jYWxlLCBrZXkpXG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5nZXROdW1iZXJGb3JtYXQgPSBmdW5jdGlvbiBnZXROdW1iZXJGb3JtYXQgKGxvY2FsZSkge1xuICByZXR1cm4gbG9vc2VDbG9uZSh0aGlzLl92bS5udW1iZXJGb3JtYXRzW2xvY2FsZV0gfHwge30pXG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5zZXROdW1iZXJGb3JtYXQgPSBmdW5jdGlvbiBzZXROdW1iZXJGb3JtYXQgKGxvY2FsZSwgZm9ybWF0KSB7XG4gIHRoaXMuX3ZtLiRzZXQodGhpcy5fdm0ubnVtYmVyRm9ybWF0cywgbG9jYWxlLCBmb3JtYXQpO1xuICB0aGlzLl9jbGVhck51bWJlckZvcm1hdChsb2NhbGUsIGZvcm1hdCk7XG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5tZXJnZU51bWJlckZvcm1hdCA9IGZ1bmN0aW9uIG1lcmdlTnVtYmVyRm9ybWF0IChsb2NhbGUsIGZvcm1hdCkge1xuICB0aGlzLl92bS4kc2V0KHRoaXMuX3ZtLm51bWJlckZvcm1hdHMsIGxvY2FsZSwgbWVyZ2UodGhpcy5fdm0ubnVtYmVyRm9ybWF0c1tsb2NhbGVdIHx8IHt9LCBmb3JtYXQpKTtcbiAgdGhpcy5fY2xlYXJOdW1iZXJGb3JtYXQobG9jYWxlLCBmb3JtYXQpO1xufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuX2NsZWFyTnVtYmVyRm9ybWF0ID0gZnVuY3Rpb24gX2NsZWFyTnVtYmVyRm9ybWF0IChsb2NhbGUsIGZvcm1hdCkge1xuICBmb3IgKHZhciBrZXkgaW4gZm9ybWF0KSB7XG4gICAgdmFyIGlkID0gbG9jYWxlICsgXCJfX1wiICsga2V5O1xuXG4gICAgaWYgKCF0aGlzLl9udW1iZXJGb3JtYXR0ZXJzLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBkZWxldGUgdGhpcy5fbnVtYmVyRm9ybWF0dGVyc1tpZF07XG4gIH1cbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLl9nZXROdW1iZXJGb3JtYXR0ZXIgPSBmdW5jdGlvbiBfZ2V0TnVtYmVyRm9ybWF0dGVyIChcbiAgdmFsdWUsXG4gIGxvY2FsZSxcbiAgZmFsbGJhY2ssXG4gIG51bWJlckZvcm1hdHMsXG4gIGtleSxcbiAgb3B0aW9uc1xuKSB7XG4gIHZhciBfbG9jYWxlID0gbG9jYWxlO1xuICB2YXIgZm9ybWF0cyA9IG51bWJlckZvcm1hdHNbX2xvY2FsZV07XG5cbiAgdmFyIGNoYWluID0gdGhpcy5fZ2V0TG9jYWxlQ2hhaW4obG9jYWxlLCBmYWxsYmFjayk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY2hhaW4ubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY3VycmVudCA9IF9sb2NhbGU7XG4gICAgdmFyIHN0ZXAgPSBjaGFpbltpXTtcbiAgICBmb3JtYXRzID0gbnVtYmVyRm9ybWF0c1tzdGVwXTtcbiAgICBfbG9jYWxlID0gc3RlcDtcbiAgICAvLyBmYWxsYmFjayBsb2NhbGVcbiAgICBpZiAoaXNOdWxsKGZvcm1hdHMpIHx8IGlzTnVsbChmb3JtYXRzW2tleV0pKSB7XG4gICAgICBpZiAoc3RlcCAhPT0gbG9jYWxlICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXRoaXMuX2lzU2lsZW50VHJhbnNsYXRpb25XYXJuKGtleSkgJiYgIXRoaXMuX2lzU2lsZW50RmFsbGJhY2tXYXJuKGtleSkpIHtcbiAgICAgICAgd2FybigoXCJGYWxsIGJhY2sgdG8gJ1wiICsgc3RlcCArIFwiJyBudW1iZXIgZm9ybWF0cyBmcm9tICdcIiArIGN1cnJlbnQgKyBcIicgbnVtYmVyIGZvcm1hdHMuXCIpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoaXNOdWxsKGZvcm1hdHMpIHx8IGlzTnVsbChmb3JtYXRzW2tleV0pKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfSBlbHNlIHtcbiAgICB2YXIgZm9ybWF0ID0gZm9ybWF0c1trZXldO1xuXG4gICAgdmFyIGZvcm1hdHRlcjtcbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgLy8gSWYgb3B0aW9ucyBzcGVjaWZpZWQgLSBjcmVhdGUgb25lIHRpbWUgbnVtYmVyIGZvcm1hdHRlclxuICAgICAgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KF9sb2NhbGUsIE9iamVjdC5hc3NpZ24oe30sIGZvcm1hdCwgb3B0aW9ucykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgaWQgPSBfbG9jYWxlICsgXCJfX1wiICsga2V5O1xuICAgICAgZm9ybWF0dGVyID0gdGhpcy5fbnVtYmVyRm9ybWF0dGVyc1tpZF07XG4gICAgICBpZiAoIWZvcm1hdHRlcikge1xuICAgICAgICBmb3JtYXR0ZXIgPSB0aGlzLl9udW1iZXJGb3JtYXR0ZXJzW2lkXSA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChfbG9jYWxlLCBmb3JtYXQpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0dGVyXG4gIH1cbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLl9uID0gZnVuY3Rpb24gX24gKHZhbHVlLCBsb2NhbGUsIGtleSwgb3B0aW9ucykge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKCFWdWVJMThuLmF2YWlsYWJpbGl0aWVzLm51bWJlckZvcm1hdCkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB3YXJuKCdDYW5ub3QgZm9ybWF0IGEgTnVtYmVyIHZhbHVlIGR1ZSB0byBub3Qgc3VwcG9ydGVkIEludGwuTnVtYmVyRm9ybWF0LicpO1xuICAgIH1cbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGlmICgha2V5KSB7XG4gICAgdmFyIG5mID0gIW9wdGlvbnMgPyBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlKSA6IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIG9wdGlvbnMpO1xuICAgIHJldHVybiBuZi5mb3JtYXQodmFsdWUpXG4gIH1cblxuICB2YXIgZm9ybWF0dGVyID0gdGhpcy5fZ2V0TnVtYmVyRm9ybWF0dGVyKHZhbHVlLCBsb2NhbGUsIHRoaXMuZmFsbGJhY2tMb2NhbGUsIHRoaXMuX2dldE51bWJlckZvcm1hdHMoKSwga2V5LCBvcHRpb25zKTtcbiAgdmFyIHJldCA9IGZvcm1hdHRlciAmJiBmb3JtYXR0ZXIuZm9ybWF0KHZhbHVlKTtcbiAgaWYgKHRoaXMuX2lzRmFsbGJhY2tSb290KHJldCkpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhdGhpcy5faXNTaWxlbnRUcmFuc2xhdGlvbldhcm4oa2V5KSAmJiAhdGhpcy5faXNTaWxlbnRGYWxsYmFja1dhcm4oa2V5KSkge1xuICAgICAgd2FybigoXCJGYWxsIGJhY2sgdG8gbnVtYmVyIGxvY2FsaXphdGlvbiBvZiByb290OiBrZXkgJ1wiICsga2V5ICsgXCInLlwiKSk7XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghdGhpcy5fcm9vdCkgeyB0aHJvdyBFcnJvcigndW5leHBlY3RlZCBlcnJvcicpIH1cbiAgICByZXR1cm4gdGhpcy5fcm9vdC4kaTE4bi5uKHZhbHVlLCBPYmplY3QuYXNzaWduKHt9LCB7IGtleToga2V5LCBsb2NhbGU6IGxvY2FsZSB9LCBvcHRpb25zKSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcmV0IHx8ICcnXG4gIH1cbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLm4gPSBmdW5jdGlvbiBuICh2YWx1ZSkge1xuICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGggLSAxO1xuICAgIHdoaWxlICggbGVuLS0gPiAwICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiArIDEgXTtcblxuICB2YXIgbG9jYWxlID0gdGhpcy5sb2NhbGU7XG4gIHZhciBrZXkgPSBudWxsO1xuICB2YXIgb3B0aW9ucyA9IG51bGw7XG5cbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgaWYgKGlzU3RyaW5nKGFyZ3NbMF0pKSB7XG4gICAgICBrZXkgPSBhcmdzWzBdO1xuICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoYXJnc1swXSkpIHtcbiAgICAgIGlmIChhcmdzWzBdLmxvY2FsZSkge1xuICAgICAgICBsb2NhbGUgPSBhcmdzWzBdLmxvY2FsZTtcbiAgICAgIH1cbiAgICAgIGlmIChhcmdzWzBdLmtleSkge1xuICAgICAgICBrZXkgPSBhcmdzWzBdLmtleTtcbiAgICAgIH1cblxuICAgICAgLy8gRmlsdGVyIG91dCBudW1iZXIgZm9ybWF0IG9wdGlvbnMgb25seVxuICAgICAgb3B0aW9ucyA9IE9iamVjdC5rZXlzKGFyZ3NbMF0pLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBrZXkpIHtcbiAgICAgICAgICB2YXIgb2JqO1xuXG4gICAgICAgIGlmIChpbmNsdWRlcyhudW1iZXJGb3JtYXRLZXlzLCBrZXkpKSB7XG4gICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGFjYywgKCBvYmogPSB7fSwgb2JqW2tleV0gPSBhcmdzWzBdW2tleV0sIG9iaiApKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2NcbiAgICAgIH0sIG51bGwpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChhcmdzLmxlbmd0aCA9PT0gMikge1xuICAgIGlmIChpc1N0cmluZyhhcmdzWzBdKSkge1xuICAgICAga2V5ID0gYXJnc1swXTtcbiAgICB9XG4gICAgaWYgKGlzU3RyaW5nKGFyZ3NbMV0pKSB7XG4gICAgICBsb2NhbGUgPSBhcmdzWzFdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzLl9uKHZhbHVlLCBsb2NhbGUsIGtleSwgb3B0aW9ucylcbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLl9udHAgPSBmdW5jdGlvbiBfbnRwICh2YWx1ZSwgbG9jYWxlLCBrZXksIG9wdGlvbnMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICghVnVlSTE4bi5hdmFpbGFiaWxpdGllcy5udW1iZXJGb3JtYXQpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FybignQ2Fubm90IGZvcm1hdCB0byBwYXJ0cyBhIE51bWJlciB2YWx1ZSBkdWUgdG8gbm90IHN1cHBvcnRlZCBJbnRsLk51bWJlckZvcm1hdC4nKTtcbiAgICB9XG4gICAgcmV0dXJuIFtdXG4gIH1cblxuICBpZiAoIWtleSkge1xuICAgIHZhciBuZiA9ICFvcHRpb25zID8gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSkgOiBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCBvcHRpb25zKTtcbiAgICByZXR1cm4gbmYuZm9ybWF0VG9QYXJ0cyh2YWx1ZSlcbiAgfVxuXG4gIHZhciBmb3JtYXR0ZXIgPSB0aGlzLl9nZXROdW1iZXJGb3JtYXR0ZXIodmFsdWUsIGxvY2FsZSwgdGhpcy5mYWxsYmFja0xvY2FsZSwgdGhpcy5fZ2V0TnVtYmVyRm9ybWF0cygpLCBrZXksIG9wdGlvbnMpO1xuICB2YXIgcmV0ID0gZm9ybWF0dGVyICYmIGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKHZhbHVlKTtcbiAgaWYgKHRoaXMuX2lzRmFsbGJhY2tSb290KHJldCkpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhdGhpcy5faXNTaWxlbnRUcmFuc2xhdGlvbldhcm4oa2V5KSkge1xuICAgICAgd2FybigoXCJGYWxsIGJhY2sgdG8gZm9ybWF0IG51bWJlciB0byBwYXJ0cyBvZiByb290OiBrZXkgJ1wiICsga2V5ICsgXCInIC5cIikpO1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIXRoaXMuX3Jvb3QpIHsgdGhyb3cgRXJyb3IoJ3VuZXhwZWN0ZWQgZXJyb3InKSB9XG4gICAgcmV0dXJuIHRoaXMuX3Jvb3QuJGkxOG4uX250cCh2YWx1ZSwgbG9jYWxlLCBrZXksIG9wdGlvbnMpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJldCB8fCBbXVxuICB9XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyggVnVlSTE4bi5wcm90b3R5cGUsIHByb3RvdHlwZUFjY2Vzc29ycyApO1xuXG52YXIgYXZhaWxhYmlsaXRpZXM7XG4vLyAkRmxvd0ZpeE1lXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlSTE4biwgJ2F2YWlsYWJpbGl0aWVzJywge1xuICBnZXQ6IGZ1bmN0aW9uIGdldCAoKSB7XG4gICAgaWYgKCFhdmFpbGFiaWxpdGllcykge1xuICAgICAgdmFyIGludGxEZWZpbmVkID0gdHlwZW9mIEludGwgIT09ICd1bmRlZmluZWQnO1xuICAgICAgYXZhaWxhYmlsaXRpZXMgPSB7XG4gICAgICAgIGRhdGVUaW1lRm9ybWF0OiBpbnRsRGVmaW5lZCAmJiB0eXBlb2YgSW50bC5EYXRlVGltZUZvcm1hdCAhPT0gJ3VuZGVmaW5lZCcsXG4gICAgICAgIG51bWJlckZvcm1hdDogaW50bERlZmluZWQgJiYgdHlwZW9mIEludGwuTnVtYmVyRm9ybWF0ICE9PSAndW5kZWZpbmVkJ1xuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXZhaWxhYmlsaXRpZXNcbiAgfVxufSk7XG5cblZ1ZUkxOG4uaW5zdGFsbCA9IGluc3RhbGw7XG5WdWVJMThuLnZlcnNpb24gPSAnOC4yMS4wJztcblxuZXhwb3J0IGRlZmF1bHQgVnVlSTE4bjtcbiIsImltcG9ydCBWdWUgZnJvbSAndnVlJztcbmltcG9ydCBWdWVJMThuIGZyb20gJ3Z1ZS1pMThuJztcblxuaW1wb3J0IGVuIGZyb20gJy4vbGFuZy9lbi5qc29uJ1xuaW1wb3J0IHNrIGZyb20gJy4vbGFuZy9zay5qc29uJ1xuaW1wb3J0IGNuIGZyb20gJy4vbGFuZy9jbi5qc29uJ1xuXG5WdWUudXNlKFZ1ZUkxOG4pO1xuXG5jb25zdCBpMThuID0gbmV3IFZ1ZUkxOG4oe1xuICAgIGxvY2FsZTogY29uZmlnLmxvY2FsZSxcbiAgICBtZXNzYWdlczogT2JqZWN0LmFzc2lnbih7XG4gICAgICAgIGVuXG4gICAgfSksXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgaTE4bjtcbiIsImltcG9ydCBpMThuIGZyb20gJ0AvaTE4bi9pbmRleCdcbmltcG9ydCByb3V0ZXIgZnJvbSAnQC9yb3V0ZXInXG5pbXBvcnQge2V2ZW50c30gZnJvbSAnQC9idXMnXG5pbXBvcnQge2xhc3R9IGZyb20gJ2xvZGFzaCdcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcydcbmltcG9ydCBWdWUgZnJvbSAndnVlJ1xuXG5jb25zdCBkZWZhdWx0U3RhdGUgPSB7XG4gICAgcHJvY2Vzc2luZ1BvcHVwOiB1bmRlZmluZWQsXG4gICAgZmlsZVF1ZXVlOiBbXSxcbiAgICBmaWxlc0luUXVldWVUb3RhbDogMCxcbiAgICBmaWxlc0luUXVldWVVcGxvYWRlZDogMCxcbiAgICBpc1Byb2Nlc3NpbmdGaWxlOiBmYWxzZSxcbiAgICB1cGxvYWRpbmdQcm9ncmVzczogMFxufVxuXG5jb25zdCBhY3Rpb25zID0ge1xuICAgIGRvd25sb2FkRm9sZGVyOiAoe2NvbW1pdCwgZ2V0dGVyc30sIGZvbGRlcikgPT4ge1xuXG4gICAgICAgIGNvbW1pdCgnUFJPQ0VTU0lOR19QT1BVUCcsIHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuLnQoJ3BvcHVwX3ppcHBpbmcudGl0bGUnKSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGkxOG4udCgncG9wdXBfemlwcGluZy5tZXNzYWdlJylcbiAgICAgICAgfSlcblxuICAgICAgICBsZXQgcm91dGUgPSBnZXR0ZXJzLnNoYXJlZERldGFpbFxuICAgICAgICAgICAgPyBgL2FwaS96aXAvZm9sZGVyLyR7Zm9sZGVyLmlkfS8ke3JvdXRlci5jdXJyZW50Um91dGUucGFyYW1zLnRva2VufWBcbiAgICAgICAgICAgIDogYC9hcGkvemlwL2ZvbGRlci8ke2ZvbGRlci5pZH1gXG5cbiAgICAgICAgYXhpb3MuZ2V0KHJvdXRlKVxuICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIFZ1ZS5wcm90b3R5cGUuJGRvd25sb2FkRmlsZShyZXNwb25zZS5kYXRhLnVybCwgcmVzcG9uc2UuZGF0YS5uYW1lKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgVnVlLnByb3RvdHlwZS4kaXNTb21ldGhpbmdXcm9uZygpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbW1pdCgnUFJPQ0VTU0lOR19QT1BVUCcsIHVuZGVmaW5lZClcbiAgICAgICAgICAgIH0pXG4gICAgfSxcbiAgICBkb3dubG9hZEZpbGVzOiAoe2NvbW1pdCwgZ2V0dGVyc30pID0+IHtcbiAgICAgICAgbGV0IGZpbGVzID0gW11cblxuICAgICAgICAvLyBnZXQgaWRzIG9mIHNlbGVjdGVkIGZpbGVzXG4gICAgICAgIGdldHRlcnMuZmlsZUluZm9EZXRhaWwuZm9yRWFjaChmaWxlID0+IGZpbGVzLnB1c2goZmlsZS5pZCkpXG5cbiAgICAgICAgLy8gR2V0IHJvdXRlXG4gICAgICAgIGxldCByb3V0ZSA9IGdldHRlcnMuc2hhcmVkRGV0YWlsXG4gICAgICAgICAgICA/IGAvYXBpL3ppcC9maWxlcy8ke3JvdXRlci5jdXJyZW50Um91dGUucGFyYW1zLnRva2VufWBcbiAgICAgICAgICAgIDogJy9hcGkvemlwL2ZpbGVzJ1xuXG4gICAgICAgIGNvbW1pdCgnUFJPQ0VTU0lOR19QT1BVUCcsIHtcbiAgICAgICAgICAgIHRpdGxlOiBpMThuLnQoJ3BvcHVwX3ppcHBpbmcudGl0bGUnKSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGkxOG4udCgncG9wdXBfemlwcGluZy5tZXNzYWdlJyksXG4gICAgICAgIH0pXG5cbiAgICAgICAgYXhpb3MucG9zdChyb3V0ZSwge1xuICAgICAgICAgICAgaXRlbXM6IGZpbGVzXG4gICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgVnVlLnByb3RvdHlwZS4kZG93bmxvYWRGaWxlKHJlc3BvbnNlLmRhdGEudXJsLCByZXNwb25zZS5kYXRhLm5hbWUpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICBWdWUucHJvdG90eXBlLiRpc1NvbWV0aGluZ1dyb25nKClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29tbWl0KCdQUk9DRVNTSU5HX1BPUFVQJywgdW5kZWZpbmVkKVxuICAgICAgICAgICAgfSlcbiAgICB9LFxuICAgIG1vdmVJdGVtOiAoe2NvbW1pdCwgZ2V0dGVycywgZGlzcGF0Y2h9LCB7dG9faXRlbSwgbm9TZWxlY3RlZEl0ZW19KSA9PiB7XG5cbiAgICAgICAgbGV0IGl0ZW1zVG9Nb3ZlID0gW11cbiAgICAgICAgbGV0IGl0ZW1zID0gW25vU2VsZWN0ZWRJdGVtXVxuXG4gICAgICAgIC8vIElmIGNvbWluZyBubyBzZWxlY3RlZCBpdGVtIGRvbnQgZ2V0IGl0ZW1zIHRvIG1vdmUgZnJvbSBmaWxlSW5mb0RldGFpbFxuICAgICAgICBpZiAoIW5vU2VsZWN0ZWRJdGVtKVxuICAgICAgICAgICAgaXRlbXMgPSBnZXR0ZXJzLmZpbGVJbmZvRGV0YWlsXG5cbiAgICAgICAgaXRlbXMuZm9yRWFjaChkYXRhID0+IGl0ZW1zVG9Nb3ZlLnB1c2goe1xuICAgICAgICAgICAgJ2lkJzogZGF0YS5pZCxcbiAgICAgICAgICAgICd0eXBlJzogZGF0YS50eXBlXG4gICAgICAgIH0pKVxuXG4gICAgICAgIC8vIFJlbW92ZSBmaWxlIHByZXZpZXdcbiAgICAgICAgaWYgKCFub1NlbGVjdGVkSXRlbSlcbiAgICAgICAgICAgIGNvbW1pdCgnQ0xFQVJfRklMRUlORk9fREVUQUlMJylcblxuICAgICAgICAvLyBHZXQgcm91dGVcbiAgICAgICAgbGV0IHJvdXRlID0gZ2V0dGVycy5zaGFyZWREZXRhaWxcbiAgICAgICAgICAgID8gYC9hcGkvZWRpdG9yL21vdmUvJHtyb3V0ZXIuY3VycmVudFJvdXRlLnBhcmFtcy50b2tlbn1gXG4gICAgICAgICAgICA6ICcvYXBpL21vdmUnXG5cbiAgICAgICAgY29uc29sZS5sb2codG9faXRlbSk7XG5cbiAgICAgICAgYXhpb3NcbiAgICAgICAgICAgIC5wb3N0KHJvdXRlLCB7XG4gICAgICAgICAgICAgICAgdG9faWQ6IHRvX2l0ZW0uaWQgPyB0b19pdGVtLmlkIDogbnVsbCxcbiAgICAgICAgICAgICAgICBpdGVtczogaXRlbXNUb01vdmVcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbXNUb01vdmUuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29tbWl0KCdSRU1PVkVfSVRFTScsIGl0ZW0uaWQpXG4gICAgICAgICAgICAgICAgICAgIGNvbW1pdCgnSU5DUkVBU0VfRk9MREVSX0lURU0nLCB0b19pdGVtLmlkKVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdmb2xkZXInKVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2goJ2dldEFwcERhdGEnKVxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0dGVycy5jdXJyZW50Rm9sZGVyLmxvY2F0aW9uID09PSAncHVibGljJylcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKCdnZXRGb2xkZXJUcmVlJylcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoKSA9PiBWdWUucHJvdG90eXBlLiRpc1NvbWV0aGluZ1dyb25nKCkpXG4gICAgfSxcbiAgICBjcmVhdGVGb2xkZXI6ICh7Y29tbWl0LCBnZXR0ZXJzLCBkaXNwYXRjaH0sIGZvbGRlcikgPT4ge1xuXG4gICAgICAgIC8vIEdldCByb3V0ZVxuICAgICAgICBsZXQgcm91dGUgPSBnZXR0ZXJzLnNoYXJlZERldGFpbFxuICAgICAgICAgICAgPyBgL2FwaS9lZGl0b3IvY3JlYXRlLWZvbGRlci8ke3JvdXRlci5jdXJyZW50Um91dGUucGFyYW1zLnRva2VufWBcbiAgICAgICAgICAgIDogJy9hcGkvY3JlYXRlLWZvbGRlcidcblxuICAgICAgICBheGlvc1xuICAgICAgICAgICAgLnBvc3Qocm91dGUsIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRfaWQ6IGdldHRlcnMuY3VycmVudEZvbGRlci5pZCxcbiAgICAgICAgICAgICAgICBuYW1lOiBmb2xkZXIubmFtZSxcbiAgICAgICAgICAgICAgICBpY29uOiBmb2xkZXIuaWNvblxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICBjb21taXQoJ0FERF9ORVdfRk9MREVSJywgcmVzcG9uc2UuZGF0YSlcblxuICAgICAgICAgICAgICAgIGV2ZW50cy4kZW1pdCgnc2Nyb2xsVG9wJylcblxuICAgICAgICAgICAgICAgIC8vIFNldCBmb2N1cyBvbiBuZXcgZm9sZGVyIG5hbWVcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRzLiRlbWl0KCduZXdGb2xkZXI6Zm9jdXMnLCByZXNwb25zZS5kYXRhLmlkKVxuICAgICAgICAgICAgICAgIH0sIDEwKVxuXG4gICAgICAgICAgICAgICAgaWYgKGdldHRlcnMuY3VycmVudEZvbGRlci5sb2NhdGlvbiAhPT0gJ3B1YmxpYycpXG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKCdnZXRBcHBEYXRhJylcbiAgICAgICAgICAgICAgICBpZiAoZ2V0dGVycy5jdXJyZW50Rm9sZGVyLmxvY2F0aW9uID09PSAncHVibGljJylcbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2goJ2dldEZvbGRlclRyZWUnKVxuXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IFZ1ZS5wcm90b3R5cGUuJGlzU29tZXRoaW5nV3JvbmcoKSlcbiAgICB9LFxuICAgIHJlbmFtZUl0ZW06ICh7Y29tbWl0LCBnZXR0ZXJzLCBkaXNwYXRjaH0sIGRhdGEpID0+IHtcblxuICAgICAgICAvLyBVcGRhdGVkIG5hbWUgaW4gZmF2b3VyaXRlcyBwYW5lbFxuICAgICAgICBpZiAoZ2V0dGVycy5wZXJtaXNzaW9uID09PSAnbWFzdGVyJyAmJiBkYXRhLnR5cGUgPT09ICdmb2xkZXInKVxuICAgICAgICAgICAgY29tbWl0KCdVUERBVEVfTkFNRV9JTl9GQVZPVVJJVEVTJywgZGF0YSlcblxuICAgICAgICAvLyBHZXQgcm91dGVcbiAgICAgICAgbGV0IHJvdXRlID0gZ2V0dGVycy5zaGFyZWREZXRhaWxcbiAgICAgICAgICAgID8gYC9hcGkvZWRpdG9yL3JlbmFtZS8ke2RhdGEuaWR9LyR7cm91dGVyLmN1cnJlbnRSb3V0ZS5wYXJhbXMudG9rZW59YFxuICAgICAgICAgICAgOiBgL2FwaS9yZW5hbWUvJHtkYXRhLmlkfWBcblxuICAgICAgICBheGlvc1xuICAgICAgICAgICAgLnBvc3Qocm91dGUsIHtcbiAgICAgICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgICAgIF9tZXRob2Q6ICdwYXRjaCdcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgY29tbWl0KCdDSEFOR0VfSVRFTV9OQU1FJywgcmVzcG9uc2UuZGF0YSlcblxuICAgICAgICAgICAgICAgIGlmIChkYXRhLnR5cGUgPT09ICdmb2xkZXInICYmIGdldHRlcnMuY3VycmVudEZvbGRlci5sb2NhdGlvbiAhPT0gJ3B1YmxpYycpXG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKCdnZXRBcHBEYXRhJylcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS50eXBlID09PSAnZm9sZGVyJyAmJiBnZXR0ZXJzLmN1cnJlbnRGb2xkZXIubG9jYXRpb24gPT09ICdwdWJsaWMnKVxuICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaCgnZ2V0Rm9sZGVyVHJlZScpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IFZ1ZS5wcm90b3R5cGUuJGlzU29tZXRoaW5nV3JvbmcoKSlcbiAgICB9LFxuICAgIHVwbG9hZEZpbGVzOiAoe2NvbW1pdCwgZ2V0dGVyc30sIHtmb3JtLCBmaWxlU2l6ZSwgdG90YWxVcGxvYWRlZFNpemV9KSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cbiAgICAgICAgICAgIC8vIEdldCByb3V0ZVxuICAgICAgICAgICAgbGV0IHJvdXRlID0gZ2V0dGVycy5zaGFyZWREZXRhaWxcbiAgICAgICAgICAgICAgICA/IGAvYXBpL2VkaXRvci91cGxvYWQvJHtyb3V0ZXIuY3VycmVudFJvdXRlLnBhcmFtcy50b2tlbn1gXG4gICAgICAgICAgICAgICAgOiAnL2FwaS91cGxvYWQnXG5cbiAgICAgICAgICAgIC8vIENyZWF0ZSBjYW5jZWwgdG9rZW4gZm9yIGF4aW9zIGNhbmNlbGxhdGlvblxuICAgICAgICAgICAgY29uc3QgQ2FuY2VsVG9rZW4gPSBheGlvcy5DYW5jZWxUb2tlbixcbiAgICAgICAgICAgICAgICBzb3VyY2UgPSBDYW5jZWxUb2tlbi5zb3VyY2UoKVxuXG4gICAgICAgICAgICBheGlvc1xuICAgICAgICAgICAgICAgIC5wb3N0KHJvdXRlLCBmb3JtLCB7XG4gICAgICAgICAgICAgICAgICAgIGNhbmNlbFRva2VuOiBzb3VyY2UudG9rZW4sXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBvblVwbG9hZFByb2dyZXNzOiBldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGVyY2VudENvbXBsZXRlZCA9IE1hdGguZmxvb3IoKCh0b3RhbFVwbG9hZGVkU2l6ZSArIGV2ZW50LmxvYWRlZCkgLyBmaWxlU2l6ZSkgKiAxMDApXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdCgnVVBMT0FESU5HX0ZJTEVfUFJPR1JFU1MnLCBwZXJjZW50Q29tcGxldGVkID49IDEwMCA/IDEwMCA6IHBlcmNlbnRDb21wbGV0ZWQpXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldCBwcm9jZXNzaW5nIGZpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZXJjZW50Q29tcGxldGVkID49IDEwMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXQoJ1BST0NFU1NJTkdfRklMRScsIHRydWUpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSlcblxuICAgICAgICAgICAgICAgICAgICBjb21taXQoJ1BST0NFU1NJTkdfRklMRScsIGZhbHNlKVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBmaXJzdCBmaWxlIGZyb20gZmlsZSBxdWV1ZVxuICAgICAgICAgICAgICAgICAgICBjb21taXQoJ1NISUZUX0ZST01fRklMRV9RVUVVRScpXG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdXNlciBpcyBpbiB1cGxvYWRpbmcgZm9sZGVyLCBpZiB5ZXMsIHRoYW4gc2hvdyBuZXcgZmlsZVxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5mb2xkZXJfaWQgPT0gZ2V0dGVycy5jdXJyZW50Rm9sZGVyLmlkKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFkZCB1cGxvYWRlZCBpdGVtIGludG8gdmlld1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0KCdBRERfTkVXX0lURU1TJywgcmVzcG9uc2UuZGF0YSlcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXQgZmlsZSBwcm9ncmVzc1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0KCdVUExPQURJTkdfRklMRV9QUk9HUkVTUycsIDApXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluY3JlYXNlIGNvdW50IGluIGZpbGVzIGluIHF1ZXVlIHVwbG9hZGVkIGZvciAxXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21taXQoJ0lOQ1JFQVNFX0ZJTEVTX0lOX1FVRVVFX1VQTE9BREVEJylcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFN0YXJ0IHVwbG9hZGluZyBuZXh0IGZpbGUgaWYgZmlsZSBxdWV1ZSBpcyBub3QgZW1wdHlcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldHRlcnMuZmlsZVF1ZXVlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgVnVlLnByb3RvdHlwZS4kaGFuZGxlVXBsb2FkaW5nKGdldHRlcnMuZmlsZVF1ZXVlWzBdKVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXQgdXBsb2FkIHByb2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFnZXR0ZXJzLmZpbGVRdWV1ZS5sZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21taXQoJ0NMRUFSX1VQTE9BRF9QUk9HUkVTUycpXG5cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcilcblxuICAgICAgICAgICAgICAgICAgICBsZXQgbWVzc2FnZXMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnNDIzJzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpMThuLnQoJ3BvcHVwX2V4Y2VlZF9saW1pdC50aXRsZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGkxOG4udCgncG9wdXBfZXhjZWVkX2xpbWl0Lm1lc3NhZ2UnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICc0MTUnOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGkxOG4udCgncG9wdXBfbWltZXR5cGVzX2JsYWNrbGlzdC50aXRsZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGkxOG4udCgncG9wdXBfbWltZXR5cGVzX2JsYWNrbGlzdC5tZXNzYWdlJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAnNDEzJzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpMThuLnQoJ3BvcHVwX3BheWxvZF9lcnJvci50aXRsZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGkxOG4udCgncG9wdXBfcGF5bG9kX2Vycm9yLm1lc3NhZ2UnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZXZlbnRzLiRlbWl0KCdhbGVydDpvcGVuJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW1vamk6ICfwn5is8J+YrPCfmKwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG1lc3NhZ2VzW2Vycm9yLnJlc3BvbnNlLnN0YXR1c11bJ3RpdGxlJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlc1tlcnJvci5yZXNwb25zZS5zdGF0dXNdWydtZXNzYWdlJ11cbiAgICAgICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgICAgICBjb21taXQoJ1BST0NFU1NJTkdfRklMRScsIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICBjb21taXQoJ0NMRUFSX1VQTE9BRF9QUk9HUkVTUycpXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgLy8gQ2FuY2VsIHRoZSB1cGxvYWQgcmVxdWVzdFxuICAgICAgICAgICAgZXZlbnRzLiRvbignY2FuY2VsLXVwbG9hZCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICBzb3VyY2UuY2FuY2VsKClcblxuICAgICAgICAgICAgICAgIC8vIEhpZGUgdXBsb2FkIHByb2dyZXNzIGJhclxuICAgICAgICAgICAgICAgIGNvbW1pdCgnUFJPQ0VTU0lOR19GSUxFJywgZmFsc2UpXG4gICAgICAgICAgICAgICAgY29tbWl0KCdDTEVBUl9VUExPQURfUFJPR1JFU1MnKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICB9LFxuICAgIHJlc3RvcmVJdGVtOiAoe2NvbW1pdCwgZ2V0dGVyc30sIGl0ZW0pID0+IHtcblxuICAgICAgICBsZXQgaXRlbVRvUmVzdG9yZSA9IFtdXG4gICAgICAgIGxldCBpdGVtcyA9IFtpdGVtXVxuICAgICAgICBsZXQgcmVzdG9yZVRvSG9tZSA9IGZhbHNlXG5cbiAgICAgICAgLy8gSWYgY29taW5nIG5vIHNlbGVjdGVkIGl0ZW0gZG9udCBnZXQgaXRlbXMgdG8gcmVzdG9yZSBmcm9tIGZpbGVJbmZvRGV0YWlsXG4gICAgICAgIGlmICghaXRlbSlcbiAgICAgICAgICAgIGl0ZW1zID0gZ2V0dGVycy5maWxlSW5mb0RldGFpbFxuXG4gICAgICAgIC8vIENoZWNrIGlmIGZpbGUgY2FuIGJlIHJlc3RvcmVkIHRvIGhvbWUgZGlyZWN0b3J5XG4gICAgICAgIGlmIChnZXR0ZXJzLmN1cnJlbnRGb2xkZXIubG9jYXRpb24gPT09ICd0cmFzaCcpXG4gICAgICAgICAgICByZXN0b3JlVG9Ib21lID0gdHJ1ZVxuXG4gICAgICAgIGl0ZW1zLmZvckVhY2goZGF0YSA9PiBpdGVtVG9SZXN0b3JlLnB1c2goe1xuICAgICAgICAgICAgdHlwZTogZGF0YS50eXBlLFxuICAgICAgICAgICAgaWQ6IGRhdGEuaWRcbiAgICAgICAgfSkpXG5cbiAgICAgICAgLy8gUmVtb3ZlIGZpbGUgcHJldmlld1xuICAgICAgICBjb21taXQoJ0NMRUFSX0ZJTEVJTkZPX0RFVEFJTCcpXG5cbiAgICAgICAgYXhpb3NcbiAgICAgICAgICAgIC5wb3N0KGdldHRlcnMuYXBpICsgJy90cmFzaC9yZXN0b3JlJywge1xuICAgICAgICAgICAgICAgIHRvX2hvbWU6IHJlc3RvcmVUb0hvbWUsXG4gICAgICAgICAgICAgICAgaXRlbXM6IGl0ZW1Ub1Jlc3RvcmVcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbihcbiAgICAgICAgICAgICAgICAvLyBSZW1vdmUgZmlsZVxuICAgICAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goZGF0YSA9PiBjb21taXQoJ1JFTU9WRV9JVEVNJywgZGF0YS5pZCkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4gVnVlLnByb3RvdHlwZS4kaXNTb21ldGhpbmdXcm9uZygpKVxuICAgIH0sXG4gICAgZGVsZXRlSXRlbTogKHtjb21taXQsIGdldHRlcnMsIGRpc3BhdGNofSwgbm9TZWxlY3RlZEl0ZW0pID0+IHtcblxuICAgICAgICBsZXQgaXRlbXNUb0RlbGV0ZSA9IFtdXG4gICAgICAgIGxldCBpdGVtcyA9IFtub1NlbGVjdGVkSXRlbV1cblxuICAgICAgICAvLyBJZiBjb21pbmcgbm8gc2VsZWN0ZWQgaXRlbSBkb250IGdldCBpdGVtcyB0byBtb3ZlIGZyb20gZmlsZUluZm9EZXRhaWxcbiAgICAgICAgaWYgKCFub1NlbGVjdGVkSXRlbSlcbiAgICAgICAgICAgIGl0ZW1zID0gZ2V0dGVycy5maWxlSW5mb0RldGFpbFxuXG4gICAgICAgICAgICBpdGVtcy5mb3JFYWNoKGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgIGl0ZW1zVG9EZWxldGUucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGZvcmNlX2RlbGV0ZTogZGF0YS5kZWxldGVkX2F0ID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBkYXRhLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGlkOiBkYXRhLmlkXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgLy8gUmVtb3ZlIGZpbGVcbiAgICAgICAgICAgIGNvbW1pdCgnUkVNT1ZFX0lURU0nLCBkYXRhLmlkKVxuXG4gICAgICAgICAgICAvLyBSZW1vdmUgaXRlbSBmcm9tIHNpZGViYXJcbiAgICAgICAgICAgIGlmIChnZXR0ZXJzLnBlcm1pc3Npb24gPT09ICdtYXN0ZXInKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoZGF0YS50eXBlID09PSAnZm9sZGVyJylcbiAgICAgICAgICAgICAgICAgICAgY29tbWl0KCdSRU1PVkVfSVRFTV9GUk9NX0ZBVk9VUklURVMnLCBkYXRhKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBSZW1vdmUgZmlsZVxuICAgICAgICAgICAgY29tbWl0KCdSRU1PVkVfSVRFTScsIGRhdGEuaWQpXG5cbiAgICAgICAgICAgIC8vIFJlbW92ZSBpdGVtIGZyb20gc2lkZWJhclxuICAgICAgICAgICAgaWYgKGdldHRlcnMucGVybWlzc2lvbiA9PT0gJ21hc3RlcicpIHtcblxuICAgICAgICAgICAgICAgIGlmIChkYXRhLnR5cGUgPT09ICdmb2xkZXInKVxuICAgICAgICAgICAgICAgICAgICBjb21taXQoJ1JFTU9WRV9JVEVNX0ZST01fRkFWT1VSSVRFUycsIGRhdGEpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgLy8gUmVtb3ZlIGZpbGUgcHJldmlld1xuICAgICAgICBpZiAoIW5vU2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICBjb21taXQoJ0NMRUFSX0ZJTEVJTkZPX0RFVEFJTCcpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZXQgcm91dGVcbiAgICAgICAgbGV0IHJvdXRlID0gZ2V0dGVycy5zaGFyZWREZXRhaWxcbiAgICAgICAgICAgID8gYC9hcGkvZWRpdG9yL3JlbW92ZS8ke3JvdXRlci5jdXJyZW50Um91dGUucGFyYW1zLnRva2VufWBcbiAgICAgICAgICAgIDogJy9hcGkvcmVtb3ZlJ1xuXG4gICAgICAgIGF4aW9zXG4gICAgICAgICAgICAucG9zdChyb3V0ZSwge1xuICAgICAgICAgICAgICAgIGl0ZW1zOiBpdGVtc1RvRGVsZXRlXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuXG4gICAgICAgICAgICAgICAgaXRlbXNUb0RlbGV0ZS5mb3JFYWNoKGRhdGEgPT4ge1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIGlzIGZvbGRlciwgdXBkYXRlIGFwcCBkYXRhXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnR5cGUgPT09ICdmb2xkZXInKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmlkID09PSBnZXR0ZXJzLmN1cnJlbnRGb2xkZXIuaWQpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXR0ZXJzLmN1cnJlbnRGb2xkZXIubG9jYXRpb24gPT09ICdwdWJsaWMnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKCdicm93c2VTaGFyZWQnLCBbe2ZvbGRlcjogbGFzdChnZXR0ZXJzLmJyb3dzZUhpc3RvcnkpLCBiYWNrOiB0cnVlLCBpbml0OiBmYWxzZX1dKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKCdnZXRGb2xkZXInLCBbe2ZvbGRlcjogbGFzdChnZXR0ZXJzLmJyb3dzZUhpc3RvcnkpLCBiYWNrOiB0cnVlLCBpbml0OiBmYWxzZX1dKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICBpZiAoZ2V0dGVycy5jdXJyZW50Rm9sZGVyLmxvY2F0aW9uICE9PSAncHVibGljJylcbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2goJ2dldEFwcERhdGEnKVxuXG4gICAgICAgICAgICAgICAgaWYgKGdldHRlcnMuY3VycmVudEZvbGRlci5sb2NhdGlvbiA9PT0gJ3B1YmxpYycpXG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKCdnZXRGb2xkZXJUcmVlJylcblxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoKSA9PiBWdWUucHJvdG90eXBlLiRpc1NvbWV0aGluZ1dyb25nKCkpXG4gICAgfSxcbiAgICBlbXB0eVRyYXNoOiAoe2NvbW1pdCwgZ2V0dGVyc30pID0+IHtcblxuICAgICAgICAvLyBDbGVhciBmaWxlIGJyb3dzZXJcbiAgICAgICAgY29tbWl0KCdMT0FESU5HX1NUQVRFJywge2xvYWRpbmc6IHRydWUsIGRhdGE6IFtdfSlcblxuICAgICAgICBheGlvc1xuICAgICAgICAgICAgLnBvc3QoZ2V0dGVycy5hcGkgKyAnL3RyYXNoL2R1bXAnLCB7XG4gICAgICAgICAgICAgICAgX21ldGhvZDogJ2RlbGV0ZSdcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29tbWl0KCdMT0FESU5HX1NUQVRFJywge2xvYWRpbmc6IGZhbHNlLCBkYXRhOiBbXX0pXG4gICAgICAgICAgICAgICAgZXZlbnRzLiRlbWl0KCdzY3JvbGxUb3AnKVxuXG4gICAgICAgICAgICAgICAgY29tbWl0KCdDTEVBUl9GSUxFSU5GT19ERVRBSUwnKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoKSA9PiBWdWUucHJvdG90eXBlLiRpc1NvbWV0aGluZ1dyb25nKCkpXG4gICAgfVxufVxuXG5jb25zdCBtdXRhdGlvbnMgPSB7XG4gICAgUFJPQ0VTU0lOR19QT1BVUChzdGF0ZSwgc3RhdHVzKSB7XG4gICAgICAgIHN0YXRlLnByb2Nlc3NpbmdQb3B1cCA9IHN0YXR1c1xuICAgIH0sXG4gICAgQUREX0ZJTEVTX1RPX1FVRVVFKHN0YXRlLCBmaWxlKSB7XG4gICAgICAgIHN0YXRlLmZpbGVRdWV1ZS5wdXNoKGZpbGUpXG4gICAgfSxcbiAgICBTSElGVF9GUk9NX0ZJTEVfUVVFVUUoc3RhdGUpIHtcbiAgICAgICAgc3RhdGUuZmlsZVF1ZXVlLnNoaWZ0KClcbiAgICB9LFxuICAgIFBST0NFU1NJTkdfRklMRShzdGF0ZSwgc3RhdHVzKSB7XG4gICAgICAgIHN0YXRlLmlzUHJvY2Vzc2luZ0ZpbGUgPSBzdGF0dXNcbiAgICB9LFxuICAgIFVQTE9BRElOR19GSUxFX1BST0dSRVNTKHN0YXRlLCBwZXJjZW50YWdlKSB7XG4gICAgICAgIHN0YXRlLnVwbG9hZGluZ1Byb2dyZXNzID0gcGVyY2VudGFnZVxuICAgIH0sXG4gICAgSU5DUkVBU0VfRklMRVNfSU5fUVVFVUVTX1RPVEFMKHN0YXRlLCBjb3VudCkge1xuICAgICAgICBzdGF0ZS5maWxlc0luUXVldWVUb3RhbCArPSBjb3VudFxuICAgIH0sXG4gICAgSU5DUkVBU0VfRklMRVNfSU5fUVVFVUVfVVBMT0FERUQoc3RhdGUpIHtcbiAgICAgICAgc3RhdGUuZmlsZXNJblF1ZXVlVXBsb2FkZWQrK1xuICAgIH0sXG4gICAgQ0xFQVJfVVBMT0FEX1BST0dSRVNTKHN0YXRlKSB7XG4gICAgICAgIHN0YXRlLmZpbGVzSW5RdWV1ZVVwbG9hZGVkID0gMFxuICAgICAgICBzdGF0ZS5maWxlc0luUXVldWVUb3RhbCA9IDBcbiAgICAgICAgc3RhdGUuZmlsZVF1ZXVlID0gW11cbiAgICB9XG59XG5cbmNvbnN0IGdldHRlcnMgPSB7XG4gICAgZmlsZXNJblF1ZXVlVXBsb2FkZWQ6IHN0YXRlID0+IHN0YXRlLmZpbGVzSW5RdWV1ZVVwbG9hZGVkLFxuICAgIGZpbGVzSW5RdWV1ZVRvdGFsOiBzdGF0ZSA9PiBzdGF0ZS5maWxlc0luUXVldWVUb3RhbCxcbiAgICB1cGxvYWRpbmdQcm9ncmVzczogc3RhdGUgPT4gc3RhdGUudXBsb2FkaW5nUHJvZ3Jlc3MsXG4gICAgaXNQcm9jZXNzaW5nRmlsZTogc3RhdGUgPT4gc3RhdGUuaXNQcm9jZXNzaW5nRmlsZSxcbiAgICBwcm9jZXNzaW5nUG9wdXA6IHN0YXRlID0+IHN0YXRlLnByb2Nlc3NpbmdQb3B1cCxcbiAgICBmaWxlUXVldWU6IHN0YXRlID0+IHN0YXRlLmZpbGVRdWV1ZVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgc3RhdGU6IGRlZmF1bHRTdGF0ZSxcbiAgICBtdXRhdGlvbnMsXG4gICAgYWN0aW9ucyxcbiAgICBnZXR0ZXJzXG59XG4iLCJpbXBvcnQgVnVlIGZyb20gXCJ2dWVcIlxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJ1xuaW1wb3J0IHtldmVudHN9IGZyb20gJ0AvYnVzJ1xuaW1wb3J0IHJvdXRlciBmcm9tICdAL3JvdXRlcidcbmltcG9ydCBpMThuIGZyb20gJ0AvaTE4bi9pbmRleCdcblxuY29uc3QgZGVmYXVsdFN0YXRlID0ge1xuICAgIGZpbGVJbmZvRGV0YWlsOiBbXSxcbiAgICBjdXJyZW50Rm9sZGVyOiB1bmRlZmluZWQsXG4gICAgbmF2aWdhdGlvbjogdW5kZWZpbmVkLFxuICAgIGlzU2VhcmNoaW5nOiBmYWxzZSxcbiAgICBicm93c2VIaXN0b3J5OiBbXSxcbiAgICBpc0xvYWRpbmc6IHRydWUsXG4gICAgZGF0YTogW10sXG59XG5cbmNvbnN0IGFjdGlvbnMgPSB7XG4gICAgZ2V0Rm9sZGVyOiAoe2NvbW1pdCwgZ2V0dGVyc30sIFtwYXlsb2FkXSkgPT4ge1xuICAgICAgICBjb21taXQoJ0xPQURJTkdfU1RBVEUnLCB7bG9hZGluZzogdHJ1ZSwgZGF0YTogW119KVxuXG4gICAgICAgIGlmIChwYXlsb2FkLmluaXQpXG4gICAgICAgICAgICBjb21taXQoJ0ZMVVNIX0ZPTERFUl9ISVNUT1JZJylcblxuICAgICAgICAvLyBDbGVhciBzZWFyY2hcbiAgICAgICAgaWYgKGdldHRlcnMuaXNTZWFyY2hpbmcpIHtcbiAgICAgICAgICAgIGNvbW1pdCgnQ0hBTkdFX1NFQVJDSElOR19TVEFURScsIGZhbHNlKVxuICAgICAgICAgICAgZXZlbnRzLiRlbWl0KCdjbGVhci1xdWVyeScpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgZm9sZGVyIGxvY2F0aW9uXG4gICAgICAgIHBheWxvYWQuZm9sZGVyLmxvY2F0aW9uID0gcGF5bG9hZC5mb2xkZXIuZGVsZXRlZF9hdCB8fCBwYXlsb2FkLmZvbGRlci5sb2NhdGlvbiA9PT0gJ3RyYXNoJyA/ICd0cmFzaCcgOiAnYmFzZSdcblxuICAgICAgICBpZiAoISBwYXlsb2FkLmJhY2sgJiYgIXBheWxvYWQuc29ydGluZylcbiAgICAgICAgICAgIGNvbW1pdCgnU1RPUkVfUFJFVklPVVNfRk9MREVSJywgZ2V0dGVycy5jdXJyZW50Rm9sZGVyKVxuXG4gICAgICAgIGxldCB1cmwgPSBwYXlsb2FkLmZvbGRlci5sb2NhdGlvbiA9PT0gJ3RyYXNoJ1xuICAgICAgICAgICAgPyAnL2Jyb3dzZS9mb2xkZXJzLycgKyBwYXlsb2FkLmZvbGRlci5pZCArIGdldHRlcnMuc29ydGluZy5VUkkgKyAnJnRyYXNoPXRydWUnXG4gICAgICAgICAgICA6ICcvYnJvd3NlL2ZvbGRlcnMvJyArIHBheWxvYWQuZm9sZGVyLmlkICsgZ2V0dGVycy5zb3J0aW5nLlVSSVxuXG4gICAgICAgIGF4aW9zXG4gICAgICAgICAgICAuZ2V0KGdldHRlcnMuYXBpICsgdXJsKVxuICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIGNvbW1pdCgnTE9BRElOR19TVEFURScsIHtsb2FkaW5nOiBmYWxzZSwgZGF0YTogcmVzcG9uc2UuZGF0YX0pXG4gICAgICAgICAgICAgICAgY29tbWl0KCdTVE9SRV9DVVJSRU5UX0ZPTERFUicsIHBheWxvYWQuZm9sZGVyKVxuXG4gICAgICAgICAgICAgICAgaWYgKHBheWxvYWQuYmFjayAmJiAhcGF5bG9hZC5zb3J0aW5nKVxuICAgICAgICAgICAgICAgICAgICBjb21taXQoJ1JFTU9WRV9CUk9XU0VSX0hJU1RPUlknKVxuXG4gICAgICAgICAgICAgICAgZXZlbnRzLiRlbWl0KCdzY3JvbGxUb3AnKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG5cbiAgICAgICAgICAgICAgICAvLyBSZWRpcmVjdCBpZiB1bmF1dGhlbnRpY2F0ZWRcbiAgICAgICAgICAgICAgICBpZiAoWzQwMSwgNDAzXS5pbmNsdWRlcyhlcnJvci5yZXNwb25zZS5zdGF0dXMpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgY29tbWl0KCdTRVRfQVVUSE9SSVpFRCcsIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICByb3V0ZXIucHVzaCh7bmFtZTogJ1NpZ25Jbid9KVxuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICAvLyBTaG93IGVycm9yIG1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRzLiRlbWl0KCdhbGVydDpvcGVuJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGkxOG4udCgncG9wdXBfZXJyb3IudGl0bGUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGkxOG4udCgncG9wdXBfZXJyb3IubWVzc2FnZScpLFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgfSxcbiAgICBnZXRMYXRlc3Q6ICh7Y29tbWl0LCBnZXR0ZXJzfSkgPT4ge1xuICAgICAgICBjb21taXQoJ0xPQURJTkdfU1RBVEUnLCB7bG9hZGluZzogdHJ1ZSwgZGF0YTogW119KVxuXG4gICAgICAgIGNvbW1pdCgnU1RPUkVfUFJFVklPVVNfRk9MREVSJywgZ2V0dGVycy5jdXJyZW50Rm9sZGVyKVxuICAgICAgICBjb21taXQoJ1NUT1JFX0NVUlJFTlRfRk9MREVSJywge1xuICAgICAgICAgICAgbmFtZTogaTE4bi50KCdzaWRlYmFyLmxhdGVzdCcpLFxuICAgICAgICAgICAgaWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGxvY2F0aW9uOiAnbGF0ZXN0JyxcbiAgICAgICAgfSlcblxuICAgICAgICBheGlvc1xuICAgICAgICAgICAgLmdldChnZXR0ZXJzLmFwaSArICcvYnJvd3NlL2xhdGVzdCcgKVxuICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIGNvbW1pdCgnTE9BRElOR19TVEFURScsIHtsb2FkaW5nOiBmYWxzZSwgZGF0YTogcmVzcG9uc2UuZGF0YX0pXG4gICAgICAgICAgICAgICAgZXZlbnRzLiRlbWl0KCdzY3JvbGxUb3AnKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoKSA9PiBWdWUucHJvdG90eXBlLiRpc1NvbWV0aGluZ1dyb25nKCkpXG4gICAgfSxcbiAgICBnZXRTaGFyZWQ6ICh7Y29tbWl0LCBnZXR0ZXJzfSkgPT4ge1xuICAgICAgICBjb21taXQoJ0xPQURJTkdfU1RBVEUnLCB7bG9hZGluZzogdHJ1ZSwgZGF0YTogW119KVxuICAgICAgICBjb21taXQoJ0ZMVVNIX0ZPTERFUl9ISVNUT1JZJylcblxuICAgICAgICBsZXQgY3VycmVudEZvbGRlciA9IHtcbiAgICAgICAgICAgIG5hbWU6IGkxOG4udCgnc2lkZWJhci5teV9zaGFyZWQnKSxcbiAgICAgICAgICAgIGxvY2F0aW9uOiAnc2hhcmVkJyxcbiAgICAgICAgICAgIGlkOiB1bmRlZmluZWQsXG4gICAgICAgIH1cblxuICAgICAgICBjb21taXQoJ1NUT1JFX0NVUlJFTlRfRk9MREVSJywgY3VycmVudEZvbGRlcilcblxuICAgICAgICBheGlvc1xuICAgICAgICAgICAgLmdldChnZXR0ZXJzLmFwaSArICcvYnJvd3NlL3NoYXJlJyArIGdldHRlcnMuc29ydGluZy5VUkkpXG4gICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgY29tbWl0KCdMT0FESU5HX1NUQVRFJywge2xvYWRpbmc6IGZhbHNlLCBkYXRhOiByZXNwb25zZS5kYXRhfSlcbiAgICAgICAgICAgICAgICBjb21taXQoJ1NUT1JFX1BSRVZJT1VTX0ZPTERFUicsIGN1cnJlbnRGb2xkZXIpXG5cbiAgICAgICAgICAgICAgICBldmVudHMuJGVtaXQoJ3Njcm9sbFRvcCcpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IFZ1ZS5wcm90b3R5cGUuJGlzU29tZXRoaW5nV3JvbmcoKSlcbiAgICB9LFxuICAgIGdldFBhcnRpY2lwYW50VXBsb2FkczogKHtjb21taXQsIGdldHRlcnN9KSA9PiB7XG4gICAgICAgIGNvbW1pdCgnTE9BRElOR19TVEFURScsIHtsb2FkaW5nOiB0cnVlLCBkYXRhOiBbXX0pXG5cbiAgICAgICAgY29tbWl0KCdTVE9SRV9QUkVWSU9VU19GT0xERVInLCBnZXR0ZXJzLmN1cnJlbnRGb2xkZXIpXG4gICAgICAgIGNvbW1pdCgnU1RPUkVfQ1VSUkVOVF9GT0xERVInLCB7XG4gICAgICAgICAgICBuYW1lOiBpMThuLnQoJ3NpZGViYXIucGFydGljaXBhbnRfdXBsb2FkcycpLFxuICAgICAgICAgICAgaWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGxvY2F0aW9uOiAncGFydGljaXBhbnRfdXBsb2FkcycsXG4gICAgICAgIH0pXG5cbiAgICAgICAgYXhpb3NcbiAgICAgICAgICAgIC5nZXQoZ2V0dGVycy5hcGkgKyAnL2Jyb3dzZS9wYXJ0aWNpcGFudHMnICsgZ2V0dGVycy5zb3J0aW5nLlVSSSlcbiAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICBjb21taXQoJ0xPQURJTkdfU1RBVEUnLCB7bG9hZGluZzogZmFsc2UsIGRhdGE6IHJlc3BvbnNlLmRhdGF9KVxuXG4gICAgICAgICAgICAgICAgZXZlbnRzLiRlbWl0KCdzY3JvbGxUb3AnKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoKSA9PiBWdWUucHJvdG90eXBlLiRpc1NvbWV0aGluZ1dyb25nKCkpXG4gICAgfSxcbiAgICBnZXRUcmFzaDogKHtjb21taXQsIGdldHRlcnN9KSA9PiB7XG4gICAgICAgIGNvbW1pdCgnTE9BRElOR19TVEFURScsIHtsb2FkaW5nOiB0cnVlLCBkYXRhOiBbXX0pXG4gICAgICAgIGNvbW1pdCgnRkxVU0hfRk9MREVSX0hJU1RPUlknKVxuXG4gICAgICAgIGxldCB0cmFzaCA9IHtcbiAgICAgICAgICAgIG5hbWU6IGkxOG4udCgnbG9jYXRpb25zLnRyYXNoJyksXG4gICAgICAgICAgICBpZDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbG9jYXRpb246ICd0cmFzaC1yb290JyxcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbW1pdCgnU1RPUkVfQ1VSUkVOVF9GT0xERVInLCB0cmFzaClcblxuICAgICAgICBheGlvc1xuICAgICAgICAgICAgLmdldChnZXR0ZXJzLmFwaSArICcvYnJvd3NlL3RyYXNoJyArIGdldHRlcnMuc29ydGluZy5VUkkpXG4gICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgY29tbWl0KCdMT0FESU5HX1NUQVRFJywge2xvYWRpbmc6IGZhbHNlLCBkYXRhOiByZXNwb25zZS5kYXRhfSlcbiAgICAgICAgICAgICAgICBjb21taXQoJ1NUT1JFX1BSRVZJT1VTX0ZPTERFUicsIHRyYXNoKVxuXG4gICAgICAgICAgICAgICAgZXZlbnRzLiRlbWl0KCdzY3JvbGxUb3AnKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoKSA9PiBWdWUucHJvdG90eXBlLiRpc1NvbWV0aGluZ1dyb25nKCkpXG4gICAgfSxcbiAgICBnZXRTZWFyY2hSZXN1bHQ6ICh7Y29tbWl0LCBnZXR0ZXJzfSwgcXVlcnkpID0+IHtcbiAgICAgICAgY29tbWl0KCdMT0FESU5HX1NUQVRFJywge2xvYWRpbmc6IHRydWUsIGRhdGE6IFtdfSlcbiAgICAgICAgY29tbWl0KCdDSEFOR0VfU0VBUkNISU5HX1NUQVRFJywgdHJ1ZSlcblxuICAgICAgICAvLyBHZXQgcm91dGVcbiAgICAgICAgbGV0IHJvdXRlID0gdW5kZWZpbmVkXG5cbiAgICAgICAgaWYgKGdldHRlcnMuc2hhcmVkRGV0YWlsKSB7XG4gICAgICAgICAgICBsZXQgcGVybWlzc2lvbiA9IGdldHRlcnMuc2hhcmVkRGV0YWlsLmlzX3Byb3RlY3RlZFxuICAgICAgICAgICAgICAgID8gJ3ByaXZhdGUnXG4gICAgICAgICAgICAgICAgOiAncHVibGljJ1xuXG4gICAgICAgICAgICByb3V0ZSA9IGAvYXBpL2Jyb3dzZS9zZWFyY2gvJHtwZXJtaXNzaW9ufS8ke3JvdXRlci5jdXJyZW50Um91dGUucGFyYW1zLnRva2VufWBcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcm91dGUgPSAnL2FwaS9icm93c2Uvc2VhcmNoJ1xuICAgICAgICB9XG5cbiAgICAgICAgYXhpb3NcbiAgICAgICAgICAgIC5nZXQocm91dGUsIHtcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtxdWVyeTogcXVlcnl9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIGNvbW1pdCgnTE9BRElOR19TVEFURScsIHtsb2FkaW5nOiBmYWxzZSwgZGF0YTogcmVzcG9uc2UuZGF0YX0pXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IFZ1ZS5wcm90b3R5cGUuJGlzU29tZXRoaW5nV3JvbmcoKSlcbiAgICB9LFxuICAgIGdldEZvbGRlclRyZWU6ICh7Y29tbWl0LCBnZXR0ZXJzfSkgPT4ge1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cbiAgICAgICAgICAgIC8vIEdldCByb3V0ZVxuICAgICAgICAgICAgbGV0IHJvdXRlID0gdW5kZWZpbmVkXG5cbiAgICAgICAgICAgIGlmIChnZXR0ZXJzLnNoYXJlZERldGFpbCkge1xuICAgICAgICAgICAgICAgIHJvdXRlID0gYC9hcGkvYnJvd3NlL25hdmlnYXRpb24vJHtyb3V0ZXIuY3VycmVudFJvdXRlLnBhcmFtcy50b2tlbn1gXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJvdXRlID0gJy9hcGkvYnJvd3NlL25hdmlnYXRpb24nXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGF4aW9zXG4gICAgICAgICAgICAgICAgLmdldChyb3V0ZSArIGdldHRlcnMuc29ydGluZy5VUkkpXG4gICAgICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbW1pdCgnVVBEQVRFX0ZPTERFUl9UUkVFJywgcmVzcG9uc2UuZGF0YSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKVxuXG4gICAgICAgICAgICAgICAgICAgIFZ1ZS5wcm90b3R5cGUuJGlzU29tZXRoaW5nV3JvbmcoKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgfSxcbn1cblxuY29uc3QgbXV0YXRpb25zID0ge1xuICAgIFVQREFURV9GT0xERVJfVFJFRShzdGF0ZSwgdHJlZSkge1xuICAgICAgICBzdGF0ZS5uYXZpZ2F0aW9uID0gdHJlZVxuICAgIH0sXG4gICAgTE9BRElOR19TVEFURShzdGF0ZSwgcGF5bG9hZCkge1xuICAgICAgICBzdGF0ZS5maWxlSW5mb0RldGFpbD0gW11cbiAgICAgICAgc3RhdGUuZGF0YSA9IHBheWxvYWQuZGF0YVxuICAgICAgICBzdGF0ZS5pc0xvYWRpbmcgPSBwYXlsb2FkLmxvYWRpbmdcbiAgICB9LFxuICAgIEZMVVNIX0ZPTERFUl9ISVNUT1JZKHN0YXRlKSB7XG4gICAgICAgIHN0YXRlLmJyb3dzZUhpc3RvcnkgPSBbXVxuICAgIH0sXG4gICAgRkxVU0hfU0hBUkVEKHN0YXRlLCBpZCkge1xuICAgICAgICBzdGF0ZS5kYXRhLmZpbmQoaXRlbSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5pZCA9PT0gaWQpIGl0ZW0uc2hhcmVkID0gdW5kZWZpbmVkXG4gICAgICAgIH0pXG4gICAgfSxcbiAgICBTVE9SRV9QUkVWSU9VU19GT0xERVIoc3RhdGUsIGZvbGRlcikge1xuICAgICAgICBzdGF0ZS5icm93c2VIaXN0b3J5LnB1c2goZm9sZGVyKVxuICAgIH0sXG4gICAgUkVNT1ZFX0JST1dTRVJfSElTVE9SWShzdGF0ZSkge1xuICAgICAgICBzdGF0ZS5icm93c2VIaXN0b3J5LnBvcCgpXG4gICAgfSxcbiAgICBDSEFOR0VfSVRFTV9OQU1FKHN0YXRlLCB1cGRhdGVkRmlsZSkge1xuICAgICAgICAvLyBSZW5hbWUgZmlsZW5hbWUgaW4gZmlsZSBpbmZvIGRldGFpbFxuICAgICAgICBpZiAoc3RhdGUuZmlsZUluZm9EZXRhaWwgJiYgc3RhdGUuZmlsZUluZm9EZXRhaWwuaWQgPT09IHVwZGF0ZWRGaWxlLmlkKSB7XG4gICAgICAgICAgICBzdGF0ZS5maWxlSW5mb0RldGFpbCA9IHVwZGF0ZWRGaWxlXG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZW5hbWUgaXRlbSBuYW1lIGluIGRhdGEgdmlld1xuICAgICAgICBzdGF0ZS5kYXRhLmZpbmQoaXRlbSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5pZCA9PT0gdXBkYXRlZEZpbGUuaWQpIHtcbiAgICAgICAgICAgICAgICBpdGVtLm5hbWUgPSB1cGRhdGVkRmlsZS5uYW1lXG4gICAgICAgICAgICAgICAgaXRlbS5jb2xvciA9IHVwZGF0ZWRGaWxlLmNvbG9yID8gdXBkYXRlZEZpbGUuY29sb3IgOiBudWxsXG4gICAgICAgICAgICAgICAgaXRlbS5lbW9qaSA9IHVwZGF0ZWRGaWxlLmVtb2ppID8gdXBkYXRlZEZpbGUuZW1vamkgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfSxcbiAgICBSRU1PVkVfSVRFTV9GSUxFSU5GT19ERVRBSUwoc3RhdGUsaXRlbSkge1xuICAgICAgc3RhdGUuZmlsZUluZm9EZXRhaWwgPSBzdGF0ZS5maWxlSW5mb0RldGFpbC5maWx0ZXIoZWxlbWVudCA9PiBlbGVtZW50LmlkICE9PSBpdGVtLmlkKVxuICAgIH0sXG4gICAgQ0xFQVJfRklMRUlORk9fREVUQUlMKHN0YXRlKSB7XG4gICAgICAgIHN0YXRlLmZpbGVJbmZvRGV0YWlsID0gW11cbiAgICB9LFxuICAgIExPQURfRklMRUlORk9fREVUQUlMKHN0YXRlLCBpdGVtKSB7XG4gICAgICAgIHN0YXRlLmZpbGVJbmZvRGV0YWlsID0gW11cbiAgICAgICAgc3RhdGUuZmlsZUluZm9EZXRhaWwucHVzaChpdGVtKVxuICAgIH0sXG4gICAgR0VUX0ZJTEVJTkZPX0RFVEFJTChzdGF0ZSwgaXRlbSkge1xuICAgICAgICBsZXQgY2hlY2tEYXRhID0gc3RhdGUuZGF0YS5maW5kKGVsID0+IGVsLmlkID09PSBpdGVtLmlkKVxuICAgICAgICBpZihzdGF0ZS5maWxlSW5mb0RldGFpbC5pbmNsdWRlcyhjaGVja0RhdGEpKSByZXR1cm5cblxuICAgICAgICBzdGF0ZS5maWxlSW5mb0RldGFpbC5wdXNoKGNoZWNrRGF0YSA/IGNoZWNrRGF0YSA6IHN0YXRlLmN1cnJlbnRGb2xkZXIpXG4gICAgfSxcbiAgICBTRUxFQ1RfQUxMX0ZJTEVTKHN0YXRlKXtcbiAgICAgICAgc3RhdGUuZmlsZUluZm9EZXRhaWwgPSBzdGF0ZS5kYXRhXG4gICAgfSxcbiAgICBDSEFOR0VfU0VBUkNISU5HX1NUQVRFKHN0YXRlLCBzZWFyY2hTdGF0ZSkge1xuICAgICAgICBzdGF0ZS5pc1NlYXJjaGluZyA9IHNlYXJjaFN0YXRlXG4gICAgfSxcbiAgICBVUERBVEVfU0hBUkVEX0lURU0oc3RhdGUsIGRhdGEpIHtcbiAgICAgICAgc3RhdGUuZGF0YS5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IGRhdGEuaXRlbV9pZCkgaXRlbS5zaGFyZWQgPSBkYXRhXG4gICAgICAgIH0pXG4gICAgfSxcbiAgICBBRERfTkVXX0ZPTERFUihzdGF0ZSwgZm9sZGVyKSB7XG4gICAgICAgIHN0YXRlLmRhdGEudW5zaGlmdChmb2xkZXIpXG4gICAgfSxcbiAgICBBRERfTkVXX0lURU1TKHN0YXRlLCBpdGVtcykge1xuICAgICAgICBzdGF0ZS5kYXRhID0gc3RhdGUuZGF0YS5jb25jYXQoaXRlbXMpXG4gICAgfSxcbiAgICBSRU1PVkVfSVRFTShzdGF0ZSwgaWQpIHtcbiAgICAgICAgc3RhdGUuZGF0YSA9IHN0YXRlLmRhdGEuZmlsdGVyKGVsID0+IGVsLmlkICE9PSBpZClcbiAgICB9LFxuICAgIElOQ1JFQVNFX0ZPTERFUl9JVEVNKHN0YXRlLCBpZCkge1xuICAgICAgICBzdGF0ZS5kYXRhLm1hcChlbCA9PiB7XG4gICAgICAgICAgICBpZiAoZWwuaWQgJiYgZWwuaWQgPT09IGlkKSBlbC5pdGVtcysrXG4gICAgICAgIH0pXG4gICAgfSxcbiAgICBTVE9SRV9DVVJSRU5UX0ZPTERFUihzdGF0ZSwgZm9sZGVyKSB7XG4gICAgICAgIHN0YXRlLmN1cnJlbnRGb2xkZXIgPSBmb2xkZXJcbiAgICB9LFxufVxuXG5jb25zdCBnZXR0ZXJzID0ge1xuICAgIGZpbGVJbmZvRGV0YWlsOiBzdGF0ZSA9PiBzdGF0ZS5maWxlSW5mb0RldGFpbCxcbiAgICBjdXJyZW50Rm9sZGVyOiBzdGF0ZSA9PiBzdGF0ZS5jdXJyZW50Rm9sZGVyLFxuICAgIGJyb3dzZUhpc3Rvcnk6IHN0YXRlID0+IHN0YXRlLmJyb3dzZUhpc3RvcnksXG4gICAgaXNTZWFyY2hpbmc6IHN0YXRlID0+IHN0YXRlLmlzU2VhcmNoaW5nLFxuICAgIG5hdmlnYXRpb246IHN0YXRlID0+IHN0YXRlLm5hdmlnYXRpb24sXG4gICAgaXNMb2FkaW5nOiBzdGF0ZSA9PiBzdGF0ZS5pc0xvYWRpbmcsXG4gICAgZGF0YTogc3RhdGUgPT4gc3RhdGUuZGF0YSxcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIHN0YXRlOiBkZWZhdWx0U3RhdGUsXG4gICAgZ2V0dGVycyxcbiAgICBhY3Rpb25zLFxuICAgIG11dGF0aW9uc1xufVxuIiwiaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJ1xuaW1wb3J0IHJvdXRlciBmcm9tICdAL3JvdXRlcidcbmltcG9ydCBWdWUgZnJvbSAndnVlJ1xuXG5jb25zdCBkZWZhdWx0U3RhdGUgPSB7XG4gICAgcGVybWlzc2lvbjogJ21hc3RlcicsIC8vIG1hc3RlciB8IGVkaXRvciB8IHZpc2l0b3JcbiAgICB1c2VyOiB1bmRlZmluZWQsXG59XG5cbmNvbnN0IGFjdGlvbnMgPSB7XG4gICAgZ2V0QXBwRGF0YTogKHtjb21taXQsIGdldHRlcnN9KSA9PiB7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGF4aW9zXG4gICAgICAgICAgICAgICAgLmdldChnZXR0ZXJzLmFwaSArICcvdXNlcicgKyBnZXR0ZXJzLnNvcnRpbmcuVVJJKVxuICAgICAgICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIE9hc2lzIHJlZGlyZWN0aW9uIHRvIHNldHVwIHBsYW4gcHJvY2VzcyBhZnRlciBzaWduIGluXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLmRhdGEuYXR0cmlidXRlcy5yb2xlID09PSAndXNlcicgJiYgISByZXNwb25zZS5kYXRhLmRhdGEucmVsYXRpb25zaGlwcy5zZXR0aW5ncy5kYXRhLmF0dHJpYnV0ZXMucGF5bWVudF9hY3RpdmF0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyLnB1c2goe25hbWU6ICdTZXRVcFBsYW4nfSlcblxuICAgICAgICAgICAgICAgICAgICBjb21taXQoJ1JFVFJJRVZFX1VTRVInLCByZXNwb25zZS5kYXRhKVxuXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcilcblxuICAgICAgICAgICAgICAgICAgICAvLyBSZWRpcmVjdCBpZiB1bmF1dGhlbnRpY2F0ZWRcbiAgICAgICAgICAgICAgICAgICAgaWYgKFs0MDEsIDQwM10uaW5jbHVkZXMoZXJyb3IucmVzcG9uc2Uuc3RhdHVzKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21taXQoJ1NFVF9BVVRIT1JJWkVEJywgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgfSxcbiAgICBsb2dPdXQ6ICh7Y29tbWl0fSkgPT4ge1xuXG4gICAgICAgIGxldCBwb3B1cCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29tbWl0KCdQUk9DRVNTSU5HX1BPUFVQJywge1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnTG9nZ2luZyBPdXQnLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdXYWl0IGEgc2Vjb25kLi4uJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sIDMwMClcblxuICAgICAgICBheGlvc1xuICAgICAgICAgICAgLnBvc3QoJy9sb2dvdXQnKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChwb3B1cClcbiAgICAgICAgICAgICAgICBjb21taXQoJ0RFU1RST1lfREFUQScpXG5cbiAgICAgICAgICAgICAgICByb3V0ZXIucHVzaCh7bmFtZTogJ1NpZ25Jbid9KVxuICAgICAgICAgICAgfSlcbiAgICB9LFxuICAgIGFkZFRvRmF2b3VyaXRlczogKGNvbnRleHQsIGZvbGRlcikgPT4ge1xuICAgICAgICBsZXQgYWRkRmF2b3VyaXRlcyA9IFtdXG4gICAgICAgIGxldCBpdGVtcyA9IFtmb2xkZXJdXG5cbiAgICAgICAgLy8gSWYgZG9udCBjb21pbmcgc2luZ2xlIGZvbGRlciBnZXQgZm9sZGVycyB0byBhZGQgdG8gZmF2b3VyaXRlcyBmcm9tIGZpbGVJbmZvRGV0YWlsXG4gICAgICAgIGlmICghZm9sZGVyKVxuICAgICAgICAgICAgaXRlbXMgPSBjb250ZXh0LmdldHRlcnMuZmlsZUluZm9EZXRhaWxcblxuICAgICAgICBpdGVtcy5mb3JFYWNoKChkYXRhKSA9PiB7XG4gICAgICAgICAgICBpZiAoZGF0YS50eXBlID09PSAnZm9sZGVyJykge1xuXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuZ2V0dGVycy51c2VyLmRhdGEucmVsYXRpb25zaGlwcy5mYXZvdXJpdGVzLmRhdGEuYXR0cmlidXRlcy5mb2xkZXJzLmZpbmQoZm9sZGVyID0+IGZvbGRlci5pZCA9PT0gZGF0YS5pZCkpIHJldHVyblxuXG4gICAgICAgICAgICAgICAgYWRkRmF2b3VyaXRlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGRhdGEuaWRcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIElmIGRvbnQgY29taW5nIHNpbmdsZSBmb2xkZXIgY2xlYXIgdGhlIHNlbGVjdGVkIGZvbGRlcnMgaW4gZmlsZUluZm9EZXRhaWxcbiAgICAgICAgaWYgKCFmb2xkZXIpIHtcbiAgICAgICAgICAgIGNvbnRleHQuY29tbWl0KCdDTEVBUl9GSUxFSU5GT19ERVRBSUwnKVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHB1c2hUb0Zhdm9yaXRlcyA9IFtdXG5cbiAgICAgICAgLy8gQ2hlY2sgaXMgZmF2b3JpdGVzIGFscmVhZHkgZG9uJ3QgaW5jbHVkZSBzb21lIG9mIHB1c2hlZCBmb2xkZXJzXG4gICAgICAgIGl0ZW1zLm1hcChkYXRhID0+IHtcbiAgICAgICAgICAgIGlmICghY29udGV4dC5nZXR0ZXJzLnVzZXIuZGF0YS5yZWxhdGlvbnNoaXBzLmZhdm91cml0ZXMuZGF0YS5hdHRyaWJ1dGVzLmZvbGRlcnMuZmluZChmb2xkZXIgPT4gZm9sZGVyLmlkID09PSBkYXRhLmlkKSkge1xuICAgICAgICAgICAgICAgIHB1c2hUb0Zhdm9yaXRlcy5wdXNoKGRhdGEpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgLy8gQWRkIHRvIHN0b3JhZ2VcbiAgICAgICAgY29udGV4dC5jb21taXQoJ0FERF9UT19GQVZPVVJJVEVTJywgcHVzaFRvRmF2b3JpdGVzKVxuXG4gICAgICAgIGF4aW9zXG4gICAgICAgICAgICAucG9zdChjb250ZXh0LmdldHRlcnMuYXBpICsgJy9mb2xkZXJzL2Zhdm91cml0ZXMnLCB7XG4gICAgICAgICAgICAgICAgZm9sZGVyczogYWRkRmF2b3VyaXRlc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgVnVlLnByb3RvdHlwZS4kaXNTb21ldGhpbmdXcm9uZygpXG4gICAgICAgICAgICB9KVxuICAgIH0sXG4gICAgcmVtb3ZlRnJvbUZhdm91cml0ZXM6ICh7Y29tbWl0LCBnZXR0ZXJzLCBkaXNwYXRjaH0sIGZvbGRlcikgPT4ge1xuXG4gICAgICAgIC8vIFJlbW92ZSBmcm9tIHN0b3JhZ2VcbiAgICAgICAgY29tbWl0KCdSRU1PVkVfSVRFTV9GUk9NX0ZBVk9VUklURVMnLCBmb2xkZXIpXG5cbiAgICAgICAgYXhpb3NcbiAgICAgICAgICAgIC5wb3N0KGdldHRlcnMuYXBpICsgJy9mb2xkZXJzL2Zhdm91cml0ZXMvJyArIGZvbGRlci5pZCwge1xuICAgICAgICAgICAgICAgIF9tZXRob2Q6ICdkZWxldGUnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICBWdWUucHJvdG90eXBlLiRpc1NvbWV0aGluZ1dyb25nKClcbiAgICAgICAgICAgIH0pXG4gICAgfSxcbn1cblxuY29uc3QgbXV0YXRpb25zID0ge1xuICAgIFJFVFJJRVZFX1VTRVIoc3RhdGUsIHVzZXIpIHtcbiAgICAgICAgc3RhdGUudXNlciA9IHVzZXJcbiAgICB9LFxuICAgIFNFVF9QRVJNSVNTSU9OKHN0YXRlLCByb2xlKSB7XG4gICAgICAgIHN0YXRlLnBlcm1pc3Npb24gPSByb2xlXG4gICAgfSxcbiAgICBERVNUUk9ZX0RBVEEoc3RhdGUpIHtcbiAgICAgICAgc3RhdGUuYXBwID0gdW5kZWZpbmVkXG4gICAgfSxcbiAgICBBRERfVE9fRkFWT1VSSVRFUyhzdGF0ZSwgZm9sZGVyKSB7XG4gICAgICAgIGZvbGRlci5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgc3RhdGUudXNlci5kYXRhLnJlbGF0aW9uc2hpcHMuZmF2b3VyaXRlcy5kYXRhLmF0dHJpYnV0ZXMuZm9sZGVycy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICB9LFxuICAgIFVQREFURV9OQU1FKHN0YXRlLCBuYW1lKSB7XG4gICAgICAgIHN0YXRlLnVzZXIuZGF0YS5yZWxhdGlvbnNoaXBzLnNldHRpbmdzLmRhdGEuYXR0cmlidXRlcy5uYW1lID0gbmFtZVxuICAgIH0sXG4gICAgVVBEQVRFX0FWQVRBUihzdGF0ZSwgYXZhdGFyKSB7XG4gICAgICAgIHN0YXRlLnVzZXIuZGF0YS5yZWxhdGlvbnNoaXBzLnNldHRpbmdzLmRhdGEuYXR0cmlidXRlcy5hdmF0YXIgPSBhdmF0YXJcbiAgICB9LFxuICAgIFJFTU9WRV9JVEVNX0ZST01fRkFWT1VSSVRFUyhzdGF0ZSwgaXRlbSkge1xuICAgICAgICBzdGF0ZS51c2VyLmRhdGEucmVsYXRpb25zaGlwcy5mYXZvdXJpdGVzLmRhdGEuYXR0cmlidXRlcy5mb2xkZXJzID0gc3RhdGUudXNlci5kYXRhLnJlbGF0aW9uc2hpcHMuZmF2b3VyaXRlcy5kYXRhLmF0dHJpYnV0ZXMuZm9sZGVycy5maWx0ZXIoZm9sZGVyID0+IGZvbGRlci5pZCAhPT0gaXRlbS5pZClcbiAgICB9LFxuICAgIFVQREFURV9OQU1FX0lOX0ZBVk9VUklURVMoc3RhdGUsIGRhdGEpIHtcbiAgICAgICAgc3RhdGUudXNlci5kYXRhLnJlbGF0aW9uc2hpcHMuZmF2b3VyaXRlcy5kYXRhLmF0dHJpYnV0ZXMuZm9sZGVycy5maW5kKGZvbGRlciA9PiB7XG4gICAgICAgICAgICBpZiAoZm9sZGVyLmlkID09PSBkYXRhLmlkKSB7XG4gICAgICAgICAgICAgICAgZm9sZGVyLm5hbWUgPSBkYXRhLm5hbWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG59XG5cbmNvbnN0IGdldHRlcnMgPSB7XG4gICAgcGVybWlzc2lvbjogc3RhdGUgPT4gc3RhdGUucGVybWlzc2lvbixcbiAgICB1c2VyOiBzdGF0ZSA9PiBzdGF0ZS51c2VyLFxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgc3RhdGU6IGRlZmF1bHRTdGF0ZSxcbiAgICBnZXR0ZXJzLFxuICAgIGFjdGlvbnMsXG4gICAgbXV0YXRpb25zXG59XG4iLCJpbXBvcnQgaTE4biBmcm9tICdAL2kxOG4vaW5kZXgnXG5pbXBvcnQgcm91dGVyIGZyb20gJ0Avcm91dGVyJ1xuaW1wb3J0IHtldmVudHN9IGZyb20gJ0AvYnVzJ1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJ1xuaW1wb3J0IFZ1ZSBmcm9tIFwidnVlXCI7XG5cbmNvbnN0IGRlZmF1bHRTdGF0ZSA9IHtcbiAgICBwZXJtaXNzaW9uT3B0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogaTE4bi50KCdzaGFyZWQuZWRpdG9yJyksXG4gICAgICAgICAgICB2YWx1ZTogJ2VkaXRvcicsXG4gICAgICAgICAgICBpY29uOiAndXNlci1lZGl0JyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IGkxOG4udCgnc2hhcmVkLnZpc2l0b3InKSxcbiAgICAgICAgICAgIHZhbHVlOiAndmlzaXRvcicsXG4gICAgICAgICAgICBpY29uOiAndXNlcicsXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICBzaGFyZWREZXRhaWw6IHVuZGVmaW5lZCxcbiAgICBzaGFyZWRGaWxlOiB1bmRlZmluZWQsXG59XG5jb25zdCBhY3Rpb25zID0ge1xuICAgIGJyb3dzZVNoYXJlZDogKHtjb21taXQsIGdldHRlcnN9LCBbcGF5bG9hZF0pID0+IHtcbiAgICAgICAgY29tbWl0KCdMT0FESU5HX1NUQVRFJywge2xvYWRpbmc6IHRydWUsIGRhdGE6IFtdfSlcblxuICAgICAgICBpZiAocGF5bG9hZC5pbml0KVxuICAgICAgICAgICAgY29tbWl0KCdGTFVTSF9GT0xERVJfSElTVE9SWScpXG5cbiAgICAgICAgLy8gQ2xlYXIgc2VhcmNoXG4gICAgICAgIGlmIChnZXR0ZXJzLmlzU2VhcmNoaW5nKSB7XG4gICAgICAgICAgICBjb21taXQoJ0NIQU5HRV9TRUFSQ0hJTkdfU1RBVEUnLCBmYWxzZSlcbiAgICAgICAgICAgIGV2ZW50cy4kZW1pdCgnY2xlYXItcXVlcnknKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEgcGF5bG9hZC5iYWNrICYmICFwYXlsb2FkLnNvcnRpbmcpXG4gICAgICAgICAgICBjb21taXQoJ1NUT1JFX1BSRVZJT1VTX0ZPTERFUicsIGdldHRlcnMuY3VycmVudEZvbGRlcilcblxuICAgICAgICBwYXlsb2FkLmZvbGRlci5sb2NhdGlvbiA9ICdwdWJsaWMnXG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGF4aW9zXG4gICAgICAgICAgICAgICAgLmdldChgL2FwaS9icm93c2UvZm9sZGVycy8ke3BheWxvYWQuZm9sZGVyLmlkfS8ke3JvdXRlci5jdXJyZW50Um91dGUucGFyYW1zLnRva2VufSR7Z2V0dGVycy5zb3J0aW5nLlVSSX1gKVxuICAgICAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29tbWl0KCdMT0FESU5HX1NUQVRFJywge2xvYWRpbmc6IGZhbHNlLCBkYXRhOiByZXNwb25zZS5kYXRhfSlcbiAgICAgICAgICAgICAgICAgICAgY29tbWl0KCdTVE9SRV9DVVJSRU5UX0ZPTERFUicsIHBheWxvYWQuZm9sZGVyKVxuICAgICAgICAgICAgICAgICAgICBldmVudHMuJGVtaXQoJ3Njcm9sbFRvcCcpXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHBheWxvYWQuYmFjayAmJiAhcGF5bG9hZC5zb3J0aW5nKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0KCdSRU1PVkVfQlJPV1NFUl9ISVNUT1JZJylcblxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBTaG93IGVycm9yIG1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRzLiRlbWl0KCdhbGVydDpvcGVuJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGkxOG4udCgncG9wdXBfZXJyb3IudGl0bGUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGkxOG4udCgncG9wdXBfZXJyb3IubWVzc2FnZScpLFxuICAgICAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgIH0sXG4gICAgZ2V0U2luZ2xlRmlsZTogKHtjb21taXR9KSA9PiB7XG5cbiAgICAgICAgYXhpb3MuZ2V0KGAvYXBpL2Jyb3dzZS9maWxlLyR7cm91dGVyLmN1cnJlbnRSb3V0ZS5wYXJhbXMudG9rZW59YClcbiAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICBjb21taXQoJ1NUT1JFX1NIQVJFRF9GSUxFJywgcmVzcG9uc2UuZGF0YSlcbiAgICAgICAgICAgIH0pXG4gICAgfSxcbiAgICBnZXRTaGFyZURldGFpbDogKHtjb21taXQsIHN0YXRlfSwgdG9rZW4pID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGF4aW9zXG4gICAgICAgICAgICAgICAgLmdldChgL2FwaS9icm93c2Uvc2hhcmUvJHt0b2tlbn1gKVxuICAgICAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSlcblxuICAgICAgICAgICAgICAgICAgICAvLyBDb21taXQgc2hhcmVkIGl0ZW0gb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICBjb21taXQoJ1NFVF9TSEFSRURfREVUQUlMJywgcmVzcG9uc2UuZGF0YS5kYXRhLmF0dHJpYnV0ZXMpXG4gICAgICAgICAgICAgICAgICAgIGNvbW1pdCgnU0VUX1BFUk1JU1NJT04nLCByZXNwb25zZS5kYXRhLmRhdGEuYXR0cmlidXRlcy5wZXJtaXNzaW9uKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5yZXNwb25zZS5zdGF0dXMgPT0gNDA0KVxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyLnB1c2goe25hbWU6ICdOb3RGb3VuZCd9KVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgfSxcbiAgICBzaGFyZUNhbmNlbDogKHtjb21taXQsIGdldHRlcnN9LCBzaW5nbGVJdGVtKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cbiAgICAgICAgICAgIGxldCB0b2tlbnMgPSBbXVxuICAgICAgICAgICAgbGV0IGl0ZW1zID0gW3NpbmdsZUl0ZW1dXG5cbiAgICAgICAgICAgIGlmKCFzaW5nbGVJdGVtKSB7XG4gICAgICAgICAgICAgICAgaXRlbXMgPSBnZXR0ZXJzLmZpbGVJbmZvRGV0YWlsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgdG9rZW5zLnB1c2goZGF0YS5zaGFyZWQudG9rZW4pXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBheGlvc1xuICAgICAgICAgICAgICAgIC5wb3N0KCcvYXBpL3NoYXJlL3Jldm9rZScsIHtcbiAgICAgICAgICAgICAgICAgICAgX21ldGhvZDogJ2RlbGV0ZScsXG4gICAgICAgICAgICAgICAgICAgIHRva2VuczogdG9rZW5zXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG5cbiAgICAgICAgICAgICAgICAgICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGl0ZW0gZnJvbSBmaWxlIGJyb3dzZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZ2V0dGVycy5jdXJyZW50Rm9sZGVyICYmIGdldHRlcnMuY3VycmVudEZvbGRlci5sb2NhdGlvbiA9PT0gJ3NoYXJlZCcgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0KCdSRU1PVkVfSVRFTScsIGl0ZW0uaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZsdXNoIHNoYXJlZCBkYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21taXQoJ0ZMVVNIX1NIQVJFRCcsIGl0ZW0uaWQpXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdCgnQ0xFQVJfRklMRUlORk9fREVUQUlMJylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKVxuXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIFZ1ZS5wcm90b3R5cGUuJGlzU29tZXRoaW5nV3JvbmcoKVxuXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgIH0sXG59XG5jb25zdCBtdXRhdGlvbnMgPSB7XG4gICAgU0VUX1NIQVJFRF9ERVRBSUwoc3RhdGUsIGRhdGEpIHtcbiAgICAgICAgc3RhdGUuc2hhcmVkRGV0YWlsID0gZGF0YVxuICAgIH0sXG4gICAgU1RPUkVfU0hBUkVEX0ZJTEUoc3RhdGUsIGRhdGEpIHtcbiAgICAgICAgc3RhdGUuc2hhcmVkRmlsZSA9IGRhdGFcbiAgICB9XG59XG5jb25zdCBnZXR0ZXJzID0ge1xuICAgIHBlcm1pc3Npb25PcHRpb25zOiBzdGF0ZSA9PiBzdGF0ZS5wZXJtaXNzaW9uT3B0aW9ucyxcbiAgICBzaGFyZWREZXRhaWw6IHN0YXRlID0+IHN0YXRlLnNoYXJlZERldGFpbCxcbiAgICBzaGFyZWRGaWxlOiBzdGF0ZSA9PiBzdGF0ZS5zaGFyZWRGaWxlLFxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgc3RhdGU6IGRlZmF1bHRTdGF0ZSxcbiAgICBnZXR0ZXJzLFxuICAgIGFjdGlvbnMsXG4gICAgbXV0YXRpb25zXG59XG4iLCJpbXBvcnQgaTE4biBmcm9tICdAL2kxOG4vaW5kZXgnXG5cbmNvbnN0IGRlZmF1bHRTdGF0ZSA9IHtcbiAgICBmaWxlSW5mb1BhbmVsVmlzaWJsZTogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2ZpbGVfaW5mb192aXNpYmlsaXR5JykgPT09ICd0cnVlJyB8fCBmYWxzZSxcbiAgICBGaWxlUHJldmlld1R5cGU6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwcmV2aWV3X3R5cGUnKSB8fCAnbGlzdCcsXG4gICAgY29uZmlnOiB1bmRlZmluZWQsXG4gICAgaW5kZXg6IHVuZGVmaW5lZCxcbiAgICBob21lRGlyZWN0b3J5OiB1bmRlZmluZWQsXG4gICAgcmVxdWVzdGVkUGxhbjogdW5kZWZpbmVkLFxuICAgIGVtb2ppczogdW5kZWZpbmVkLFxuICAgIHNvcnRpbmc6IHtcbiAgICAgICAgc29ydDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3NvcnRpbmcnKSA/IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3NvcnRpbmcnKSkuc29ydCA6ICdERVNDJyxcbiAgICAgICAgZmllbGQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzb3J0aW5nJykgPyBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzb3J0aW5nJykpLmZpZWxkIDogJ2NyZWF0ZWRfYXQnLFxuICAgIH0sXG4gICAgcm9sZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IGkxOG4udCgncm9sZXMuYWRtaW4nKSxcbiAgICAgICAgICAgIHZhbHVlOiAnYWRtaW4nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogaTE4bi50KCdyb2xlcy51c2VyJyksXG4gICAgICAgICAgICB2YWx1ZTogJ3VzZXInLFxuICAgICAgICB9LFxuICAgIF0sXG4gICAgY291bnRyaWVzOiBbXG4gICAgICAgIHtsYWJlbDogJ0N6ZWNoIFJlcHVibGljJywgdmFsdWU6ICdDWid9LFxuICAgICAgICB7bGFiZWw6ICdTbG92YWtpYScsIHZhbHVlOiAnU0snfSxcbiAgICAgICAge2xhYmVsOiAnQWZnaGFuaXN0YW4nLCB2YWx1ZTogJ0FGJ30sXG4gICAgICAgIHtsYWJlbDogJ8OFbGFuZCBJc2xhbmRzJywgdmFsdWU6ICdBWCd9LFxuICAgICAgICB7bGFiZWw6ICdBbGJhbmlhJywgdmFsdWU6ICdBTCd9LFxuICAgICAgICB7bGFiZWw6ICdBbGdlcmlhJywgdmFsdWU6ICdEWid9LFxuICAgICAgICB7bGFiZWw6ICdBbWVyaWNhbiBTYW1vYScsIHZhbHVlOiAnQVMnfSxcbiAgICAgICAge2xhYmVsOiAnQW5kb3JyQScsIHZhbHVlOiAnQUQnfSxcbiAgICAgICAge2xhYmVsOiAnQW5nb2xhJywgdmFsdWU6ICdBTyd9LFxuICAgICAgICB7bGFiZWw6ICdBbmd1aWxsYScsIHZhbHVlOiAnQUknfSxcbiAgICAgICAge2xhYmVsOiAnQW50YXJjdGljYScsIHZhbHVlOiAnQVEnfSxcbiAgICAgICAge2xhYmVsOiAnQW50aWd1YSBhbmQgQmFyYnVkYScsIHZhbHVlOiAnQUcnfSxcbiAgICAgICAge2xhYmVsOiAnQXJnZW50aW5hJywgdmFsdWU6ICdBUid9LFxuICAgICAgICB7bGFiZWw6ICdBcm1lbmlhJywgdmFsdWU6ICdBTSd9LFxuICAgICAgICB7bGFiZWw6ICdBcnViYScsIHZhbHVlOiAnQVcnfSxcbiAgICAgICAge2xhYmVsOiAnQXVzdHJhbGlhJywgdmFsdWU6ICdBVSd9LFxuICAgICAgICB7bGFiZWw6ICdBdXN0cmlhJywgdmFsdWU6ICdBVCd9LFxuICAgICAgICB7bGFiZWw6ICdBemVyYmFpamFuJywgdmFsdWU6ICdBWid9LFxuICAgICAgICB7bGFiZWw6ICdCYWhhbWFzJywgdmFsdWU6ICdCUyd9LFxuICAgICAgICB7bGFiZWw6ICdCYWhyYWluJywgdmFsdWU6ICdCSCd9LFxuICAgICAgICB7bGFiZWw6ICdCYW5nbGFkZXNoJywgdmFsdWU6ICdCRCd9LFxuICAgICAgICB7bGFiZWw6ICdCYXJiYWRvcycsIHZhbHVlOiAnQkInfSxcbiAgICAgICAge2xhYmVsOiAnQmVsYXJ1cycsIHZhbHVlOiAnQlknfSxcbiAgICAgICAge2xhYmVsOiAnQmVsZ2l1bScsIHZhbHVlOiAnQkUnfSxcbiAgICAgICAge2xhYmVsOiAnQmVsaXplJywgdmFsdWU6ICdCWid9LFxuICAgICAgICB7bGFiZWw6ICdCZW5pbicsIHZhbHVlOiAnQkonfSxcbiAgICAgICAge2xhYmVsOiAnQmVybXVkYScsIHZhbHVlOiAnQk0nfSxcbiAgICAgICAge2xhYmVsOiAnQmh1dGFuJywgdmFsdWU6ICdCVCd9LFxuICAgICAgICB7bGFiZWw6ICdCb2xpdmlhJywgdmFsdWU6ICdCTyd9LFxuICAgICAgICB7bGFiZWw6ICdCb3NuaWEgYW5kIEhlcnplZ292aW5hJywgdmFsdWU6ICdCQSd9LFxuICAgICAgICB7bGFiZWw6ICdCb3Rzd2FuYScsIHZhbHVlOiAnQlcnfSxcbiAgICAgICAge2xhYmVsOiAnQm91dmV0IElzbGFuZCcsIHZhbHVlOiAnQlYnfSxcbiAgICAgICAge2xhYmVsOiAnQnJhemlsJywgdmFsdWU6ICdCUid9LFxuICAgICAgICB7bGFiZWw6ICdCcml0aXNoIEluZGlhbiBPY2VhbiBUZXJyaXRvcnknLCB2YWx1ZTogJ0lPJ30sXG4gICAgICAgIHtsYWJlbDogJ0JydW5laSBEYXJ1c3NhbGFtJywgdmFsdWU6ICdCTid9LFxuICAgICAgICB7bGFiZWw6ICdCdWxnYXJpYScsIHZhbHVlOiAnQkcnfSxcbiAgICAgICAge2xhYmVsOiAnQnVya2luYSBGYXNvJywgdmFsdWU6ICdCRid9LFxuICAgICAgICB7bGFiZWw6ICdCdXJ1bmRpJywgdmFsdWU6ICdCSSd9LFxuICAgICAgICB7bGFiZWw6ICdDYW1ib2RpYScsIHZhbHVlOiAnS0gnfSxcbiAgICAgICAge2xhYmVsOiAnQ2FtZXJvb24nLCB2YWx1ZTogJ0NNJ30sXG4gICAgICAgIHtsYWJlbDogJ0NhbmFkYScsIHZhbHVlOiAnQ0EnfSxcbiAgICAgICAge2xhYmVsOiAnQ2FwZSBWZXJkZScsIHZhbHVlOiAnQ1YnfSxcbiAgICAgICAge2xhYmVsOiAnQ2F5bWFuIElzbGFuZHMnLCB2YWx1ZTogJ0tZJ30sXG4gICAgICAgIHtsYWJlbDogJ0NlbnRyYWwgQWZyaWNhbiBSZXB1YmxpYycsIHZhbHVlOiAnQ0YnfSxcbiAgICAgICAge2xhYmVsOiAnQ2hhZCcsIHZhbHVlOiAnVEQnfSxcbiAgICAgICAge2xhYmVsOiAnQ2hpbGUnLCB2YWx1ZTogJ0NMJ30sXG4gICAgICAgIHtsYWJlbDogJ0NoaW5hJywgdmFsdWU6ICdDTid9LFxuICAgICAgICB7bGFiZWw6ICdDaHJpc3RtYXMgSXNsYW5kJywgdmFsdWU6ICdDWCd9LFxuICAgICAgICB7bGFiZWw6ICdDb2NvcyAoS2VlbGluZykgSXNsYW5kcycsIHZhbHVlOiAnQ0MnfSxcbiAgICAgICAge2xhYmVsOiAnQ29sb21iaWEnLCB2YWx1ZTogJ0NPJ30sXG4gICAgICAgIHtsYWJlbDogJ0NvbW9yb3MnLCB2YWx1ZTogJ0tNJ30sXG4gICAgICAgIHtsYWJlbDogJ0NvbmdvJywgdmFsdWU6ICdDRyd9LFxuICAgICAgICB7bGFiZWw6ICdDb25nbywgVGhlIERlbW9jcmF0aWMgUmVwdWJsaWMgb2YgdGhlJywgdmFsdWU6ICdDRCd9LFxuICAgICAgICB7bGFiZWw6ICdDb29rIElzbGFuZHMnLCB2YWx1ZTogJ0NLJ30sXG4gICAgICAgIHtsYWJlbDogJ0Nvc3RhIFJpY2EnLCB2YWx1ZTogJ0NSJ30sXG4gICAgICAgIHtsYWJlbDogJ0NvdGUgRFxcJ0l2b2lyZScsIHZhbHVlOiAnQ0knfSxcbiAgICAgICAge2xhYmVsOiAnQ3JvYXRpYScsIHZhbHVlOiAnSFInfSxcbiAgICAgICAge2xhYmVsOiAnQ3ViYScsIHZhbHVlOiAnQ1UnfSxcbiAgICAgICAge2xhYmVsOiAnQ3lwcnVzJywgdmFsdWU6ICdDWSd9LFxuICAgICAgICB7bGFiZWw6ICdEZW5tYXJrJywgdmFsdWU6ICdESyd9LFxuICAgICAgICB7bGFiZWw6ICdEamlib3V0aScsIHZhbHVlOiAnREonfSxcbiAgICAgICAge2xhYmVsOiAnRG9taW5pY2EnLCB2YWx1ZTogJ0RNJ30sXG4gICAgICAgIHtsYWJlbDogJ0RvbWluaWNhbiBSZXB1YmxpYycsIHZhbHVlOiAnRE8nfSxcbiAgICAgICAge2xhYmVsOiAnRWN1YWRvcicsIHZhbHVlOiAnRUMnfSxcbiAgICAgICAge2xhYmVsOiAnRWd5cHQnLCB2YWx1ZTogJ0VHJ30sXG4gICAgICAgIHtsYWJlbDogJ0VsIFNhbHZhZG9yJywgdmFsdWU6ICdTVid9LFxuICAgICAgICB7bGFiZWw6ICdFcXVhdG9yaWFsIEd1aW5lYScsIHZhbHVlOiAnR1EnfSxcbiAgICAgICAge2xhYmVsOiAnRXJpdHJlYScsIHZhbHVlOiAnRVInfSxcbiAgICAgICAge2xhYmVsOiAnRXN0b25pYScsIHZhbHVlOiAnRUUnfSxcbiAgICAgICAge2xhYmVsOiAnRXRoaW9waWEnLCB2YWx1ZTogJ0VUJ30sXG4gICAgICAgIHtsYWJlbDogJ0ZhbGtsYW5kIElzbGFuZHMgKE1hbHZpbmFzKScsIHZhbHVlOiAnRksnfSxcbiAgICAgICAge2xhYmVsOiAnRmFyb2UgSXNsYW5kcycsIHZhbHVlOiAnRk8nfSxcbiAgICAgICAge2xhYmVsOiAnRmlqaScsIHZhbHVlOiAnRkonfSxcbiAgICAgICAge2xhYmVsOiAnRmlubGFuZCcsIHZhbHVlOiAnRkknfSxcbiAgICAgICAge2xhYmVsOiAnRnJhbmNlJywgdmFsdWU6ICdGUid9LFxuICAgICAgICB7bGFiZWw6ICdGcmVuY2ggR3VpYW5hJywgdmFsdWU6ICdHRid9LFxuICAgICAgICB7bGFiZWw6ICdGcmVuY2ggUG9seW5lc2lhJywgdmFsdWU6ICdQRid9LFxuICAgICAgICB7bGFiZWw6ICdGcmVuY2ggU291dGhlcm4gVGVycml0b3JpZXMnLCB2YWx1ZTogJ1RGJ30sXG4gICAgICAgIHtsYWJlbDogJ0dhYm9uJywgdmFsdWU6ICdHQSd9LFxuICAgICAgICB7bGFiZWw6ICdHYW1iaWEnLCB2YWx1ZTogJ0dNJ30sXG4gICAgICAgIHtsYWJlbDogJ0dlb3JnaWEnLCB2YWx1ZTogJ0dFJ30sXG4gICAgICAgIHtsYWJlbDogJ0dlcm1hbnknLCB2YWx1ZTogJ0RFJ30sXG4gICAgICAgIHtsYWJlbDogJ0doYW5hJywgdmFsdWU6ICdHSCd9LFxuICAgICAgICB7bGFiZWw6ICdHaWJyYWx0YXInLCB2YWx1ZTogJ0dJJ30sXG4gICAgICAgIHtsYWJlbDogJ0dyZWVjZScsIHZhbHVlOiAnR1InfSxcbiAgICAgICAge2xhYmVsOiAnR3JlZW5sYW5kJywgdmFsdWU6ICdHTCd9LFxuICAgICAgICB7bGFiZWw6ICdHcmVuYWRhJywgdmFsdWU6ICdHRCd9LFxuICAgICAgICB7bGFiZWw6ICdHdWFkZWxvdXBlJywgdmFsdWU6ICdHUCd9LFxuICAgICAgICB7bGFiZWw6ICdHdWFtJywgdmFsdWU6ICdHVSd9LFxuICAgICAgICB7bGFiZWw6ICdHdWF0ZW1hbGEnLCB2YWx1ZTogJ0dUJ30sXG4gICAgICAgIHtsYWJlbDogJ0d1ZXJuc2V5JywgdmFsdWU6ICdHRyd9LFxuICAgICAgICB7bGFiZWw6ICdHdWluZWEnLCB2YWx1ZTogJ0dOJ30sXG4gICAgICAgIHtsYWJlbDogJ0d1aW5lYS1CaXNzYXUnLCB2YWx1ZTogJ0dXJ30sXG4gICAgICAgIHtsYWJlbDogJ0d1eWFuYScsIHZhbHVlOiAnR1knfSxcbiAgICAgICAge2xhYmVsOiAnSGFpdGknLCB2YWx1ZTogJ0hUJ30sXG4gICAgICAgIHtsYWJlbDogJ0hlYXJkIElzbGFuZCBhbmQgTWNkb25hbGQgSXNsYW5kcycsIHZhbHVlOiAnSE0nfSxcbiAgICAgICAge2xhYmVsOiAnSG9seSBTZWUgKFZhdGljYW4gQ2l0eSBTdGF0ZSknLCB2YWx1ZTogJ1ZBJ30sXG4gICAgICAgIHtsYWJlbDogJ0hvbmR1cmFzJywgdmFsdWU6ICdITid9LFxuICAgICAgICB7bGFiZWw6ICdIb25nIEtvbmcnLCB2YWx1ZTogJ0hLJ30sXG4gICAgICAgIHtsYWJlbDogJ0h1bmdhcnknLCB2YWx1ZTogJ0hVJ30sXG4gICAgICAgIHtsYWJlbDogJ0ljZWxhbmQnLCB2YWx1ZTogJ0lTJ30sXG4gICAgICAgIHtsYWJlbDogJ0luZGlhJywgdmFsdWU6ICdJTid9LFxuICAgICAgICB7bGFiZWw6ICdJbmRvbmVzaWEnLCB2YWx1ZTogJ0lEJ30sXG4gICAgICAgIHtsYWJlbDogJ0lyYW4sIElzbGFtaWMgUmVwdWJsaWMgT2YnLCB2YWx1ZTogJ0lSJ30sXG4gICAgICAgIHtsYWJlbDogJ0lyYXEnLCB2YWx1ZTogJ0lRJ30sXG4gICAgICAgIHtsYWJlbDogJ0lyZWxhbmQnLCB2YWx1ZTogJ0lFJ30sXG4gICAgICAgIHtsYWJlbDogJ0lzbGUgb2YgTWFuJywgdmFsdWU6ICdJTSd9LFxuICAgICAgICB7bGFiZWw6ICdJc3JhZWwnLCB2YWx1ZTogJ0lMJ30sXG4gICAgICAgIHtsYWJlbDogJ0l0YWx5JywgdmFsdWU6ICdJVCd9LFxuICAgICAgICB7bGFiZWw6ICdKYW1haWNhJywgdmFsdWU6ICdKTSd9LFxuICAgICAgICB7bGFiZWw6ICdKYXBhbicsIHZhbHVlOiAnSlAnfSxcbiAgICAgICAge2xhYmVsOiAnSmVyc2V5JywgdmFsdWU6ICdKRSd9LFxuICAgICAgICB7bGFiZWw6ICdKb3JkYW4nLCB2YWx1ZTogJ0pPJ30sXG4gICAgICAgIHtsYWJlbDogJ0themFraHN0YW4nLCB2YWx1ZTogJ0taJ30sXG4gICAgICAgIHtsYWJlbDogJ0tlbnlhJywgdmFsdWU6ICdLRSd9LFxuICAgICAgICB7bGFiZWw6ICdLaXJpYmF0aScsIHZhbHVlOiAnS0knfSxcbiAgICAgICAge2xhYmVsOiAnS29yZWEsIERlbW9jcmF0aWMgUGVvcGxlXFwnUyBSZXB1YmxpYyBvZicsIHZhbHVlOiAnS1AnfSxcbiAgICAgICAge2xhYmVsOiAnS29yZWEsIFJlcHVibGljIG9mJywgdmFsdWU6ICdLUid9LFxuICAgICAgICB7bGFiZWw6ICdLdXdhaXQnLCB2YWx1ZTogJ0tXJ30sXG4gICAgICAgIHtsYWJlbDogJ0t5cmd5enN0YW4nLCB2YWx1ZTogJ0tHJ30sXG4gICAgICAgIHtsYWJlbDogJ0xhbyBQZW9wbGVcXCdTIERlbW9jcmF0aWMgUmVwdWJsaWMnLCB2YWx1ZTogJ0xBJ30sXG4gICAgICAgIHtsYWJlbDogJ0xhdHZpYScsIHZhbHVlOiAnTFYnfSxcbiAgICAgICAge2xhYmVsOiAnTGViYW5vbicsIHZhbHVlOiAnTEInfSxcbiAgICAgICAge2xhYmVsOiAnTGVzb3RobycsIHZhbHVlOiAnTFMnfSxcbiAgICAgICAge2xhYmVsOiAnTGliZXJpYScsIHZhbHVlOiAnTFInfSxcbiAgICAgICAge2xhYmVsOiAnTGlieWFuIEFyYWIgSmFtYWhpcml5YScsIHZhbHVlOiAnTFknfSxcbiAgICAgICAge2xhYmVsOiAnTGllY2h0ZW5zdGVpbicsIHZhbHVlOiAnTEknfSxcbiAgICAgICAge2xhYmVsOiAnTGl0aHVhbmlhJywgdmFsdWU6ICdMVCd9LFxuICAgICAgICB7bGFiZWw6ICdMdXhlbWJvdXJnJywgdmFsdWU6ICdMVSd9LFxuICAgICAgICB7bGFiZWw6ICdNYWNhbycsIHZhbHVlOiAnTU8nfSxcbiAgICAgICAge2xhYmVsOiAnTWFjZWRvbmlhLCBUaGUgRm9ybWVyIFl1Z29zbGF2IFJlcHVibGljIG9mJywgdmFsdWU6ICdNSyd9LFxuICAgICAgICB7bGFiZWw6ICdNYWRhZ2FzY2FyJywgdmFsdWU6ICdNRyd9LFxuICAgICAgICB7bGFiZWw6ICdNYWxhd2knLCB2YWx1ZTogJ01XJ30sXG4gICAgICAgIHtsYWJlbDogJ01hbGF5c2lhJywgdmFsdWU6ICdNWSd9LFxuICAgICAgICB7bGFiZWw6ICdNYWxkaXZlcycsIHZhbHVlOiAnTVYnfSxcbiAgICAgICAge2xhYmVsOiAnTWFsaScsIHZhbHVlOiAnTUwnfSxcbiAgICAgICAge2xhYmVsOiAnTWFsdGEnLCB2YWx1ZTogJ01UJ30sXG4gICAgICAgIHtsYWJlbDogJ01hcnNoYWxsIElzbGFuZHMnLCB2YWx1ZTogJ01IJ30sXG4gICAgICAgIHtsYWJlbDogJ01hcnRpbmlxdWUnLCB2YWx1ZTogJ01RJ30sXG4gICAgICAgIHtsYWJlbDogJ01hdXJpdGFuaWEnLCB2YWx1ZTogJ01SJ30sXG4gICAgICAgIHtsYWJlbDogJ01hdXJpdGl1cycsIHZhbHVlOiAnTVUnfSxcbiAgICAgICAge2xhYmVsOiAnTWF5b3R0ZScsIHZhbHVlOiAnWVQnfSxcbiAgICAgICAge2xhYmVsOiAnTWV4aWNvJywgdmFsdWU6ICdNWCd9LFxuICAgICAgICB7bGFiZWw6ICdNaWNyb25lc2lhLCBGZWRlcmF0ZWQgU3RhdGVzIG9mJywgdmFsdWU6ICdGTSd9LFxuICAgICAgICB7bGFiZWw6ICdNb2xkb3ZhLCBSZXB1YmxpYyBvZicsIHZhbHVlOiAnTUQnfSxcbiAgICAgICAge2xhYmVsOiAnTW9uYWNvJywgdmFsdWU6ICdNQyd9LFxuICAgICAgICB7bGFiZWw6ICdNb25nb2xpYScsIHZhbHVlOiAnTU4nfSxcbiAgICAgICAge2xhYmVsOiAnTW9udHNlcnJhdCcsIHZhbHVlOiAnTVMnfSxcbiAgICAgICAge2xhYmVsOiAnTW9yb2NjbycsIHZhbHVlOiAnTUEnfSxcbiAgICAgICAge2xhYmVsOiAnTW96YW1iaXF1ZScsIHZhbHVlOiAnTVonfSxcbiAgICAgICAge2xhYmVsOiAnTXlhbm1hcicsIHZhbHVlOiAnTU0nfSxcbiAgICAgICAge2xhYmVsOiAnTmFtaWJpYScsIHZhbHVlOiAnTkEnfSxcbiAgICAgICAge2xhYmVsOiAnTmF1cnUnLCB2YWx1ZTogJ05SJ30sXG4gICAgICAgIHtsYWJlbDogJ05lcGFsJywgdmFsdWU6ICdOUCd9LFxuICAgICAgICB7bGFiZWw6ICdOZXRoZXJsYW5kcycsIHZhbHVlOiAnTkwnfSxcbiAgICAgICAge2xhYmVsOiAnTmV0aGVybGFuZHMgQW50aWxsZXMnLCB2YWx1ZTogJ0FOJ30sXG4gICAgICAgIHtsYWJlbDogJ05ldyBDYWxlZG9uaWEnLCB2YWx1ZTogJ05DJ30sXG4gICAgICAgIHtsYWJlbDogJ05ldyBaZWFsYW5kJywgdmFsdWU6ICdOWid9LFxuICAgICAgICB7bGFiZWw6ICdOaWNhcmFndWEnLCB2YWx1ZTogJ05JJ30sXG4gICAgICAgIHtsYWJlbDogJ05pZ2VyJywgdmFsdWU6ICdORSd9LFxuICAgICAgICB7bGFiZWw6ICdOaWdlcmlhJywgdmFsdWU6ICdORyd9LFxuICAgICAgICB7bGFiZWw6ICdOaXVlJywgdmFsdWU6ICdOVSd9LFxuICAgICAgICB7bGFiZWw6ICdOb3Jmb2xrIElzbGFuZCcsIHZhbHVlOiAnTkYnfSxcbiAgICAgICAge2xhYmVsOiAnTm9ydGhlcm4gTWFyaWFuYSBJc2xhbmRzJywgdmFsdWU6ICdNUCd9LFxuICAgICAgICB7bGFiZWw6ICdOb3J3YXknLCB2YWx1ZTogJ05PJ30sXG4gICAgICAgIHtsYWJlbDogJ09tYW4nLCB2YWx1ZTogJ09NJ30sXG4gICAgICAgIHtsYWJlbDogJ1Bha2lzdGFuJywgdmFsdWU6ICdQSyd9LFxuICAgICAgICB7bGFiZWw6ICdQYWxhdScsIHZhbHVlOiAnUFcnfSxcbiAgICAgICAge2xhYmVsOiAnUGFsZXN0aW5pYW4gVGVycml0b3J5LCBPY2N1cGllZCcsIHZhbHVlOiAnUFMnfSxcbiAgICAgICAge2xhYmVsOiAnUGFuYW1hJywgdmFsdWU6ICdQQSd9LFxuICAgICAgICB7bGFiZWw6ICdQYXB1YSBOZXcgR3VpbmVhJywgdmFsdWU6ICdQRyd9LFxuICAgICAgICB7bGFiZWw6ICdQYXJhZ3VheScsIHZhbHVlOiAnUFknfSxcbiAgICAgICAge2xhYmVsOiAnUGVydScsIHZhbHVlOiAnUEUnfSxcbiAgICAgICAge2xhYmVsOiAnUGhpbGlwcGluZXMnLCB2YWx1ZTogJ1BIJ30sXG4gICAgICAgIHtsYWJlbDogJ1BpdGNhaXJuJywgdmFsdWU6ICdQTid9LFxuICAgICAgICB7bGFiZWw6ICdQb2xhbmQnLCB2YWx1ZTogJ1BMJ30sXG4gICAgICAgIHtsYWJlbDogJ1BvcnR1Z2FsJywgdmFsdWU6ICdQVCd9LFxuICAgICAgICB7bGFiZWw6ICdQdWVydG8gUmljbycsIHZhbHVlOiAnUFInfSxcbiAgICAgICAge2xhYmVsOiAnUWF0YXInLCB2YWx1ZTogJ1FBJ30sXG4gICAgICAgIHtsYWJlbDogJ1JldW5pb24nLCB2YWx1ZTogJ1JFJ30sXG4gICAgICAgIHtsYWJlbDogJ1JvbWFuaWEnLCB2YWx1ZTogJ1JPJ30sXG4gICAgICAgIHtsYWJlbDogJ1J1c3NpYW4gRmVkZXJhdGlvbicsIHZhbHVlOiAnUlUnfSxcbiAgICAgICAge2xhYmVsOiAnUldBTkRBJywgdmFsdWU6ICdSVyd9LFxuICAgICAgICB7bGFiZWw6ICdTYWludCBIZWxlbmEnLCB2YWx1ZTogJ1NIJ30sXG4gICAgICAgIHtsYWJlbDogJ1NhaW50IEtpdHRzIGFuZCBOZXZpcycsIHZhbHVlOiAnS04nfSxcbiAgICAgICAge2xhYmVsOiAnU2FpbnQgTHVjaWEnLCB2YWx1ZTogJ0xDJ30sXG4gICAgICAgIHtsYWJlbDogJ1NhaW50IFBpZXJyZSBhbmQgTWlxdWVsb24nLCB2YWx1ZTogJ1BNJ30sXG4gICAgICAgIHtsYWJlbDogJ1NhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzJywgdmFsdWU6ICdWQyd9LFxuICAgICAgICB7bGFiZWw6ICdTYW1vYScsIHZhbHVlOiAnV1MnfSxcbiAgICAgICAge2xhYmVsOiAnU2FuIE1hcmlubycsIHZhbHVlOiAnU00nfSxcbiAgICAgICAge2xhYmVsOiAnU2FvIFRvbWUgYW5kIFByaW5jaXBlJywgdmFsdWU6ICdTVCd9LFxuICAgICAgICB7bGFiZWw6ICdTYXVkaSBBcmFiaWEnLCB2YWx1ZTogJ1NBJ30sXG4gICAgICAgIHtsYWJlbDogJ1NlbmVnYWwnLCB2YWx1ZTogJ1NOJ30sXG4gICAgICAgIHtsYWJlbDogJ1NlcmJpYSBhbmQgTW9udGVuZWdybycsIHZhbHVlOiAnQ1MnfSxcbiAgICAgICAge2xhYmVsOiAnU2V5Y2hlbGxlcycsIHZhbHVlOiAnU0MnfSxcbiAgICAgICAge2xhYmVsOiAnU2llcnJhIExlb25lJywgdmFsdWU6ICdTTCd9LFxuICAgICAgICB7bGFiZWw6ICdTaW5nYXBvcmUnLCB2YWx1ZTogJ1NHJ30sXG4gICAgICAgIHtsYWJlbDogJ1Nsb3ZlbmlhJywgdmFsdWU6ICdTSSd9LFxuICAgICAgICB7bGFiZWw6ICdTb2xvbW9uIElzbGFuZHMnLCB2YWx1ZTogJ1NCJ30sXG4gICAgICAgIHtsYWJlbDogJ1NvbWFsaWEnLCB2YWx1ZTogJ1NPJ30sXG4gICAgICAgIHtsYWJlbDogJ1NvdXRoIEFmcmljYScsIHZhbHVlOiAnWkEnfSxcbiAgICAgICAge2xhYmVsOiAnU291dGggR2VvcmdpYSBhbmQgdGhlIFNvdXRoIFNhbmR3aWNoIElzbGFuZHMnLCB2YWx1ZTogJ0dTJ30sXG4gICAgICAgIHtsYWJlbDogJ1NwYWluJywgdmFsdWU6ICdFUyd9LFxuICAgICAgICB7bGFiZWw6ICdTcmkgTGFua2EnLCB2YWx1ZTogJ0xLJ30sXG4gICAgICAgIHtsYWJlbDogJ1N1ZGFuJywgdmFsdWU6ICdTRCd9LFxuICAgICAgICB7bGFiZWw6ICdTdXJpbmFtZScsIHZhbHVlOiAnU1InfSxcbiAgICAgICAge2xhYmVsOiAnU3ZhbGJhcmQgYW5kIEphbiBNYXllbicsIHZhbHVlOiAnU0onfSxcbiAgICAgICAge2xhYmVsOiAnU3dhemlsYW5kJywgdmFsdWU6ICdTWid9LFxuICAgICAgICB7bGFiZWw6ICdTd2VkZW4nLCB2YWx1ZTogJ1NFJ30sXG4gICAgICAgIHtsYWJlbDogJ1N3aXR6ZXJsYW5kJywgdmFsdWU6ICdDSCd9LFxuICAgICAgICB7bGFiZWw6ICdTeXJpYW4gQXJhYiBSZXB1YmxpYycsIHZhbHVlOiAnU1knfSxcbiAgICAgICAge2xhYmVsOiAnVGFpd2FuLCBQcm92aW5jZSBvZiBDaGluYScsIHZhbHVlOiAnVFcnfSxcbiAgICAgICAge2xhYmVsOiAnVGFqaWtpc3RhbicsIHZhbHVlOiAnVEonfSxcbiAgICAgICAge2xhYmVsOiAnVGFuemFuaWEsIFVuaXRlZCBSZXB1YmxpYyBvZicsIHZhbHVlOiAnVFonfSxcbiAgICAgICAge2xhYmVsOiAnVGhhaWxhbmQnLCB2YWx1ZTogJ1RIJ30sXG4gICAgICAgIHtsYWJlbDogJ1RpbW9yLUxlc3RlJywgdmFsdWU6ICdUTCd9LFxuICAgICAgICB7bGFiZWw6ICdUb2dvJywgdmFsdWU6ICdURyd9LFxuICAgICAgICB7bGFiZWw6ICdUb2tlbGF1JywgdmFsdWU6ICdUSyd9LFxuICAgICAgICB7bGFiZWw6ICdUb25nYScsIHZhbHVlOiAnVE8nfSxcbiAgICAgICAge2xhYmVsOiAnVHJpbmlkYWQgYW5kIFRvYmFnbycsIHZhbHVlOiAnVFQnfSxcbiAgICAgICAge2xhYmVsOiAnVHVuaXNpYScsIHZhbHVlOiAnVE4nfSxcbiAgICAgICAge2xhYmVsOiAnVHVya2V5JywgdmFsdWU6ICdUUid9LFxuICAgICAgICB7bGFiZWw6ICdUdXJrbWVuaXN0YW4nLCB2YWx1ZTogJ1RNJ30sXG4gICAgICAgIHtsYWJlbDogJ1R1cmtzIGFuZCBDYWljb3MgSXNsYW5kcycsIHZhbHVlOiAnVEMnfSxcbiAgICAgICAge2xhYmVsOiAnVHV2YWx1JywgdmFsdWU6ICdUVid9LFxuICAgICAgICB7bGFiZWw6ICdVZ2FuZGEnLCB2YWx1ZTogJ1VHJ30sXG4gICAgICAgIHtsYWJlbDogJ1VrcmFpbmUnLCB2YWx1ZTogJ1VBJ30sXG4gICAgICAgIHtsYWJlbDogJ1VuaXRlZCBBcmFiIEVtaXJhdGVzJywgdmFsdWU6ICdBRSd9LFxuICAgICAgICB7bGFiZWw6ICdVbml0ZWQgS2luZ2RvbScsIHZhbHVlOiAnR0InfSxcbiAgICAgICAge2xhYmVsOiAnVW5pdGVkIFN0YXRlcycsIHZhbHVlOiAnVVMnfSxcbiAgICAgICAge2xhYmVsOiAnVW5pdGVkIFN0YXRlcyBNaW5vciBPdXRseWluZyBJc2xhbmRzJywgdmFsdWU6ICdVTSd9LFxuICAgICAgICB7bGFiZWw6ICdVcnVndWF5JywgdmFsdWU6ICdVWSd9LFxuICAgICAgICB7bGFiZWw6ICdVemJla2lzdGFuJywgdmFsdWU6ICdVWid9LFxuICAgICAgICB7bGFiZWw6ICdWYW51YXR1JywgdmFsdWU6ICdWVSd9LFxuICAgICAgICB7bGFiZWw6ICdWZW5lenVlbGEnLCB2YWx1ZTogJ1ZFJ30sXG4gICAgICAgIHtsYWJlbDogJ1ZpZXQgTmFtJywgdmFsdWU6ICdWTid9LFxuICAgICAgICB7bGFiZWw6ICdWaXJnaW4gSXNsYW5kcywgQnJpdGlzaCcsIHZhbHVlOiAnVkcnfSxcbiAgICAgICAge2xhYmVsOiAnVmlyZ2luIElzbGFuZHMsIFUuUy4nLCB2YWx1ZTogJ1ZJJ30sXG4gICAgICAgIHtsYWJlbDogJ1dhbGxpcyBhbmQgRnV0dW5hJywgdmFsdWU6ICdXRid9LFxuICAgICAgICB7bGFiZWw6ICdXZXN0ZXJuIFNhaGFyYScsIHZhbHVlOiAnRUgnfSxcbiAgICAgICAge2xhYmVsOiAnWWVtZW4nLCB2YWx1ZTogJ1lFJ30sXG4gICAgICAgIHtsYWJlbDogJ1phbWJpYScsIHZhbHVlOiAnWk0nfSxcbiAgICAgICAge2xhYmVsOiAnWmltYmFid2UnLCB2YWx1ZTogJ1pXJ31cbiAgICBdLFxuICAgIGV4cGlyYXRpb25MaXN0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiBpMThuLnQoJ3NoYXJlZF9mb3JtLmV4cGlyYXRpb25faG91cicsIHt2YWx1ZTogMX0pLFxuICAgICAgICAgICAgdmFsdWU6IDEsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiBpMThuLnQoJ3NoYXJlZF9mb3JtLmV4cGlyYXRpb25faG91cicsIHt2YWx1ZTogMn0pLFxuICAgICAgICAgICAgdmFsdWU6IDIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiBpMThuLnQoJ3NoYXJlZF9mb3JtLmV4cGlyYXRpb25faG91cicsIHt2YWx1ZTogNn0pLFxuICAgICAgICAgICAgdmFsdWU6IDYsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiBpMThuLnQoJ3NoYXJlZF9mb3JtLmV4cGlyYXRpb25faG91cicsIHt2YWx1ZTogMTJ9KSxcbiAgICAgICAgICAgIHZhbHVlOiAxMixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IGkxOG4udCgnc2hhcmVkX2Zvcm0uZXhwaXJhdGlvbl9kYXknLCB7dmFsdWU6IDF9KSxcbiAgICAgICAgICAgIHZhbHVlOiAyNCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IGkxOG4udCgnc2hhcmVkX2Zvcm0uZXhwaXJhdGlvbl9kYXknLCB7dmFsdWU6IDJ9KSxcbiAgICAgICAgICAgIHZhbHVlOiA0OCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IGkxOG4udCgnc2hhcmVkX2Zvcm0uZXhwaXJhdGlvbl9kYXknLCB7dmFsdWU6IDd9KSxcbiAgICAgICAgICAgIHZhbHVlOiAxNjgsXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICBjdXJyZW5jeUxpc3Q6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdVU0QgLSBVbml0ZWQgU3RhdGVzIERvbGxhcicsXG4gICAgICAgICAgICB2YWx1ZTogJ1VTRCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnRVVSIC0gRXVybycsXG4gICAgICAgICAgICB2YWx1ZTogJ0VVUicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnR0JQIC0gQnJpdGlzaCBQb3VuZCcsXG4gICAgICAgICAgICB2YWx1ZTogJ0dCUCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnQUZOIC0gQWZnaGFuIEFmZ2hhbmknLFxuICAgICAgICAgICAgdmFsdWU6ICdBRk4nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0FMTCAtIEFsYmFuaWFuIExlaycsXG4gICAgICAgICAgICB2YWx1ZTogJ0FMTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnRFpEIC0gQWxnZXJpYW4gRGluYXInLFxuICAgICAgICAgICAgdmFsdWU6ICdEWkQnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0FPQSAtIEFuZ29sYW4gS3dhbnphJyxcbiAgICAgICAgICAgIHZhbHVlOiAnQU9BJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdBUlMgLSBBcmdlbnRpbmUgUGVzbycsXG4gICAgICAgICAgICB2YWx1ZTogJ0FSUycsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnQU1EIC0gQXJtZW5pYW4gRHJhbScsXG4gICAgICAgICAgICB2YWx1ZTogJ0FNRCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnQVdHIC0gQXJ1YmFuIEZsb3JpbicsXG4gICAgICAgICAgICB2YWx1ZTogJ0FXRycsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnQVVEIC0gQXVzdHJhbGlhbiBEb2xsYXInLFxuICAgICAgICAgICAgdmFsdWU6ICdBVUQnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0FaTiAtIEF6ZXJiYWlqYW5pIE1hbmF0JyxcbiAgICAgICAgICAgIHZhbHVlOiAnQVpOJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdCRFQgLSBCYW5nbGFkZXNoaSBUYWthJyxcbiAgICAgICAgICAgIHZhbHVlOiAnQkRUJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdCQkQgLSBCYXJiYWRpYW4gRG9sbGFyJyxcbiAgICAgICAgICAgIHZhbHVlOiAnQkJEJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdCWkQgLSBCZWxpemUgRG9sbGFyJyxcbiAgICAgICAgICAgIHZhbHVlOiAnQlpEJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdCTUQgLSBCZXJtdWRpYW4gRG9sbGFyJyxcbiAgICAgICAgICAgIHZhbHVlOiAnQk1EJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdCT0IgLSBCb2xpdmlhbiBCb2xpdmlhbm8nLFxuICAgICAgICAgICAgdmFsdWU6ICdCT0InLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0JBTSAtIEJvc25pYSAmIEhlcnplZ292aW5hIENvbnZlcnRpYmxlIE1hcmsnLFxuICAgICAgICAgICAgdmFsdWU6ICdCQU0nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0JXUCAtIEJvdHN3YW5hIFB1bGEnLFxuICAgICAgICAgICAgdmFsdWU6ICdCV1AnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0JSTCAtIEJyYXppbGlhbiBSZWFsJyxcbiAgICAgICAgICAgIHZhbHVlOiAnQlJMJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdCTkQgLSBCcnVuZWkgRG9sbGFyJyxcbiAgICAgICAgICAgIHZhbHVlOiAnQk5EJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdCR04gLSBCdWxnYXJpYW4gTGV2JyxcbiAgICAgICAgICAgIHZhbHVlOiAnQkdOJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdCSUYgLSBCdXJ1bmRpYW4gRnJhbmMnLFxuICAgICAgICAgICAgdmFsdWU6ICdCSUYnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0tIUiAtIENhbWJvZGlhbiBSaWVsJyxcbiAgICAgICAgICAgIHZhbHVlOiAnS0hSJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdDQUQgLSBDYW5hZGlhbiBEb2xsYXInLFxuICAgICAgICAgICAgdmFsdWU6ICdDQUQnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0NWRSAtIENhcGUgVmVyZGVhbiBFc2N1ZG8nLFxuICAgICAgICAgICAgdmFsdWU6ICdDVkUnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0tZRCAtIENheW1hbiBJc2xhbmRzIERvbGxhcicsXG4gICAgICAgICAgICB2YWx1ZTogJ0tZRCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnWEFGIC0gQ2VudHJhbCBBZnJpY2FuIENmYSBGcmFuYycsXG4gICAgICAgICAgICB2YWx1ZTogJ1hBRicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnWFBGIC0gQ2ZwIEZyYW5jJyxcbiAgICAgICAgICAgIHZhbHVlOiAnWFBGJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdDTFAgLSBDaGlsZWFuIFBlc28nLFxuICAgICAgICAgICAgdmFsdWU6ICdDTFAnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0NOWSAtIENoaW5lc2UgUmVubWluYmkgWXVhbicsXG4gICAgICAgICAgICB2YWx1ZTogJ0NOWScsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnQ09QIC0gQ29sb21iaWFuIFBlc28nLFxuICAgICAgICAgICAgdmFsdWU6ICdDT1AnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0tNRiAtIENvbW9yaWFuIEZyYW5jJyxcbiAgICAgICAgICAgIHZhbHVlOiAnS01GJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdDREYgLSBDb25nb2xlc2UgRnJhbmMnLFxuICAgICAgICAgICAgdmFsdWU6ICdDREYnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0NSQyAtIENvc3RhIFJpY2FuIENvbMOzbicsXG4gICAgICAgICAgICB2YWx1ZTogJ0NSQycsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnSFJLIC0gQ3JvYXRpYW4gS3VuYScsXG4gICAgICAgICAgICB2YWx1ZTogJ0hSSycsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnQ1pLIC0gQ3plY2ggS29ydW5hJyxcbiAgICAgICAgICAgIHZhbHVlOiAnQ1pLJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdES0sgLSBEYW5pc2ggS3JvbmUnLFxuICAgICAgICAgICAgdmFsdWU6ICdES0snLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0RKRiAtIERqaWJvdXRpYW4gRnJhbmMnLFxuICAgICAgICAgICAgdmFsdWU6ICdESkYnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0RPUCAtIERvbWluaWNhbiBQZXNvJyxcbiAgICAgICAgICAgIHZhbHVlOiAnRE9QJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdYQ0QgLSBFYXN0IENhcmliYmVhbiBEb2xsYXInLFxuICAgICAgICAgICAgdmFsdWU6ICdYQ0QnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0VHUCAtIEVneXB0aWFuIFBvdW5kJyxcbiAgICAgICAgICAgIHZhbHVlOiAnRUdQJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdFVEIgLSBFdGhpb3BpYW4gQmlycicsXG4gICAgICAgICAgICB2YWx1ZTogJ0VUQicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnRktQIC0gRmFsa2xhbmQgSXNsYW5kcyBQb3VuZCcsXG4gICAgICAgICAgICB2YWx1ZTogJ0ZLUCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnRkpEIC0gRmlqaWFuIERvbGxhcicsXG4gICAgICAgICAgICB2YWx1ZTogJ0ZKRCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnR01EIC0gR2FtYmlhbiBEYWxhc2knLFxuICAgICAgICAgICAgdmFsdWU6ICdHTUQnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0dFTCAtIEdlb3JnaWFuIExhcmknLFxuICAgICAgICAgICAgdmFsdWU6ICdHRUwnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0dJUCAtIEdpYnJhbHRhciBQb3VuZCcsXG4gICAgICAgICAgICB2YWx1ZTogJ0dJUCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnR1RRIC0gR3VhdGVtYWxhbiBRdWV0emFsJyxcbiAgICAgICAgICAgIHZhbHVlOiAnR1RRJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdHTkYgLSBHdWluZWFuIEZyYW5jJyxcbiAgICAgICAgICAgIHZhbHVlOiAnR05GJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdHWUQgLSBHdXlhbmVzZSBEb2xsYXInLFxuICAgICAgICAgICAgdmFsdWU6ICdHWUQnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0hURyAtIEhhaXRpYW4gR291cmRlJyxcbiAgICAgICAgICAgIHZhbHVlOiAnSFRHJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdITkwgLSBIb25kdXJhbiBMZW1waXJhJyxcbiAgICAgICAgICAgIHZhbHVlOiAnSE5MJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdIS0QgLSBIb25nIEtvbmcgRG9sbGFyJyxcbiAgICAgICAgICAgIHZhbHVlOiAnSEtEJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdIVUYgLSBIdW5nYXJpYW4gRm9yaW50JyxcbiAgICAgICAgICAgIHZhbHVlOiAnSFVGJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdJU0sgLSBJY2VsYW5kaWMgS3LDs25hJyxcbiAgICAgICAgICAgIHZhbHVlOiAnSVNLJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdJTlIgLSBJbmRpYW4gUnVwZWUnLFxuICAgICAgICAgICAgdmFsdWU6ICdJTlInLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0lEUiAtIEluZG9uZXNpYW4gUnVwaWFoJyxcbiAgICAgICAgICAgIHZhbHVlOiAnSURSJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdJTFMgLSBJc3JhZWxpIE5ldyBTaGVxZWwnLFxuICAgICAgICAgICAgdmFsdWU6ICdJTFMnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0pNRCAtIEphbWFpY2FuIERvbGxhcicsXG4gICAgICAgICAgICB2YWx1ZTogJ0pNRCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnSlBZIC0gSmFwYW5lc2UgWWVuJyxcbiAgICAgICAgICAgIHZhbHVlOiAnSlBZJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdLWlQgLSBLYXpha2hzdGFuaSBUZW5nZScsXG4gICAgICAgICAgICB2YWx1ZTogJ0taVCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnS0VTIC0gS2VueWFuIFNoaWxsaW5nJyxcbiAgICAgICAgICAgIHZhbHVlOiAnS0VTJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdLR1MgLSBLeXJneXpzdGFuaSBTb20nLFxuICAgICAgICAgICAgdmFsdWU6ICdLR1MnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0xBSyAtIExhbyBLaXAnLFxuICAgICAgICAgICAgdmFsdWU6ICdMQUsnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0xCUCAtIExlYmFuZXNlIFBvdW5kJyxcbiAgICAgICAgICAgIHZhbHVlOiAnTEJQJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdMU0wgLSBMZXNvdGhvIExvdGknLFxuICAgICAgICAgICAgdmFsdWU6ICdMU0wnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0xSRCAtIExpYmVyaWFuIERvbGxhcicsXG4gICAgICAgICAgICB2YWx1ZTogJ0xSRCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnTU9QIC0gTWFjYW5lc2UgUGF0YWNhJyxcbiAgICAgICAgICAgIHZhbHVlOiAnTU9QJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdNS0QgLSBNYWNlZG9uaWFuIERlbmFyJyxcbiAgICAgICAgICAgIHZhbHVlOiAnTUtEJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdNR0EgLSBNYWxhZ2FzeSBBcmlhcnknLFxuICAgICAgICAgICAgdmFsdWU6ICdNR0EnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ01XSyAtIE1hbGF3aWFuIEt3YWNoYScsXG4gICAgICAgICAgICB2YWx1ZTogJ01XSycsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnTVlSIC0gTWFsYXlzaWFuIFJpbmdnaXQnLFxuICAgICAgICAgICAgdmFsdWU6ICdNWVInLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ01WUiAtIE1hbGRpdmlhbiBSdWZpeWFhJyxcbiAgICAgICAgICAgIHZhbHVlOiAnTVZSJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdNUk8gLSBNYXVyaXRhbmlhbiBPdWd1aXlhJyxcbiAgICAgICAgICAgIHZhbHVlOiAnTVJPJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdNVVIgLSBNYXVyaXRpYW4gUnVwZWUnLFxuICAgICAgICAgICAgdmFsdWU6ICdNVVInLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ01YTiAtIE1leGljYW4gUGVzbycsXG4gICAgICAgICAgICB2YWx1ZTogJ01YTicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnTURMIC0gTW9sZG92YW4gTGV1JyxcbiAgICAgICAgICAgIHZhbHVlOiAnTURMJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdNTlQgLSBNb25nb2xpYW4gVMO2Z3LDtmcnLFxuICAgICAgICAgICAgdmFsdWU6ICdNTlQnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ01BRCAtIE1vcm9jY2FuIERpcmhhbScsXG4gICAgICAgICAgICB2YWx1ZTogJ01BRCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnTVpOIC0gTW96YW1iaWNhbiBNZXRpY2FsJyxcbiAgICAgICAgICAgIHZhbHVlOiAnTVpOJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdNTUsgLSBNeWFubWFyIEt5YXQnLFxuICAgICAgICAgICAgdmFsdWU6ICdNTUsnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ05BRCAtIE5hbWliaWFuIERvbGxhcicsXG4gICAgICAgICAgICB2YWx1ZTogJ05BRCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnTlBSIC0gTmVwYWxlc2UgUnVwZWUnLFxuICAgICAgICAgICAgdmFsdWU6ICdOUFInLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0FORyAtIE5ldGhlcmxhbmRzIEFudGlsbGVhbiBHdWxkZW4nLFxuICAgICAgICAgICAgdmFsdWU6ICdBTkcnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1RXRCAtIE5ldyBUYWl3YW4gRG9sbGFyJyxcbiAgICAgICAgICAgIHZhbHVlOiAnVFdEJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdOWkQgLSBOZXcgWmVhbGFuZCBEb2xsYXInLFxuICAgICAgICAgICAgdmFsdWU6ICdOWkQnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ05JTyAtIE5pY2FyYWd1YW4gQ8OzcmRvYmEnLFxuICAgICAgICAgICAgdmFsdWU6ICdOSU8nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ05HTiAtIE5pZ2VyaWFuIE5haXJhJyxcbiAgICAgICAgICAgIHZhbHVlOiAnTkdOJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdOT0sgLSBOb3J3ZWdpYW4gS3JvbmUnLFxuICAgICAgICAgICAgdmFsdWU6ICdOT0snLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1BLUiAtIFBha2lzdGFuaSBSdXBlZScsXG4gICAgICAgICAgICB2YWx1ZTogJ1BLUicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnUEFCIC0gUGFuYW1hbmlhbiBCYWxib2EnLFxuICAgICAgICAgICAgdmFsdWU6ICdQQUInLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1BHSyAtIFBhcHVhIE5ldyBHdWluZWFuIEtpbmEnLFxuICAgICAgICAgICAgdmFsdWU6ICdQR0snLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1BZRyAtIFBhcmFndWF5YW4gR3VhcmFuw60nLFxuICAgICAgICAgICAgdmFsdWU6ICdQWUcnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1BFTiAtIFBlcnV2aWFuIE51ZXZvIFNvbCcsXG4gICAgICAgICAgICB2YWx1ZTogJ1BFTicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnUEhQIC0gUGhpbGlwcGluZSBQZXNvJyxcbiAgICAgICAgICAgIHZhbHVlOiAnUEhQJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdQTE4gLSBQb2xpc2ggWsWCb3R5JyxcbiAgICAgICAgICAgIHZhbHVlOiAnUExOJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdRQVIgLSBRYXRhcmkgUml5YWwnLFxuICAgICAgICAgICAgdmFsdWU6ICdRQVInLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1JPTiAtIFJvbWFuaWFuIExldScsXG4gICAgICAgICAgICB2YWx1ZTogJ1JPTicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnUlVCIC0gUnVzc2lhbiBSdWJsZScsXG4gICAgICAgICAgICB2YWx1ZTogJ1JVQicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnUldGIC0gUndhbmRhbiBGcmFuYycsXG4gICAgICAgICAgICB2YWx1ZTogJ1JXRicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnU1REIC0gU8OjbyBUb23DqSBhbmQgUHLDrW5jaXBlIERvYnJhJyxcbiAgICAgICAgICAgIHZhbHVlOiAnU1REJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdTSFAgLSBTYWludCBIZWxlbmlhbiBQb3VuZCcsXG4gICAgICAgICAgICB2YWx1ZTogJ1NIUCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnU1ZDIC0gU2FsdmFkb3JhbiBDb2zDs24nLFxuICAgICAgICAgICAgdmFsdWU6ICdTVkMnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1dTVCAtIFNhbW9hbiBUYWxhJyxcbiAgICAgICAgICAgIHZhbHVlOiAnV1NUJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdTQVIgLSBTYXVkaSBSaXlhbCcsXG4gICAgICAgICAgICB2YWx1ZTogJ1NBUicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnUlNEIC0gU2VyYmlhbiBEaW5hcicsXG4gICAgICAgICAgICB2YWx1ZTogJ1JTRCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnU0NSIC0gU2V5Y2hlbGxvaXMgUnVwZWUnLFxuICAgICAgICAgICAgdmFsdWU6ICdTQ1InLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1NMTCAtIFNpZXJyYSBMZW9uZWFuIExlb25lJyxcbiAgICAgICAgICAgIHZhbHVlOiAnU0xMJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdTR0QgLSBTaW5nYXBvcmUgRG9sbGFyJyxcbiAgICAgICAgICAgIHZhbHVlOiAnU0dEJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdTQkQgLSBTb2xvbW9uIElzbGFuZHMgRG9sbGFyJyxcbiAgICAgICAgICAgIHZhbHVlOiAnU0JEJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdTT1MgLSBTb21hbGkgU2hpbGxpbmcnLFxuICAgICAgICAgICAgdmFsdWU6ICdTT1MnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1pBUiAtIFNvdXRoIEFmcmljYW4gUmFuZCcsXG4gICAgICAgICAgICB2YWx1ZTogJ1pBUicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnS1JXIC0gU291dGggS29yZWFuIFdvbicsXG4gICAgICAgICAgICB2YWx1ZTogJ0tSVycsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnTEtSIC0gU3JpIExhbmthbiBSdXBlZScsXG4gICAgICAgICAgICB2YWx1ZTogJ0xLUicsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnU1JEIC0gU3VyaW5hbWVzZSBEb2xsYXInLFxuICAgICAgICAgICAgdmFsdWU6ICdTUkQnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1NaTCAtIFN3YXppIExpbGFuZ2VuaScsXG4gICAgICAgICAgICB2YWx1ZTogJ1NaTCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnU0VLIC0gU3dlZGlzaCBLcm9uYScsXG4gICAgICAgICAgICB2YWx1ZTogJ1NFSycsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnQ0hGIC0gU3dpc3MgRnJhbmMnLFxuICAgICAgICAgICAgdmFsdWU6ICdDSEYnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1RKUyAtIFRhamlraXN0YW5pIFNvbW9uaScsXG4gICAgICAgICAgICB2YWx1ZTogJ1RKUycsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnVFpTIC0gVGFuemFuaWFuIFNoaWxsaW5nJyxcbiAgICAgICAgICAgIHZhbHVlOiAnVFpTJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdUSEIgLSBUaGFpIEJhaHQnLFxuICAgICAgICAgICAgdmFsdWU6ICdUSEInLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1RPUCAtIFRvbmdhbiBQYcq7YW5nYScsXG4gICAgICAgICAgICB2YWx1ZTogJ1RPUCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnVFREIC0gVHJpbmlkYWQgYW5kIFRvYmFnbyBEb2xsYXInLFxuICAgICAgICAgICAgdmFsdWU6ICdUVEQnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1RSWSAtIFR1cmtpc2ggTGlyYScsXG4gICAgICAgICAgICB2YWx1ZTogJ1RSWScsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnVUdYIC0gVWdhbmRhbiBTaGlsbGluZycsXG4gICAgICAgICAgICB2YWx1ZTogJ1VHWCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnVUFIIC0gVWtyYWluaWFuIEhyeXZuaWEnLFxuICAgICAgICAgICAgdmFsdWU6ICdVQUgnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0FFRCAtIFVuaXRlZCBBcmFiIEVtaXJhdGVzIERpcmhhbScsXG4gICAgICAgICAgICB2YWx1ZTogJ0FFRCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnVVlVIC0gVXJ1Z3VheWFuIFBlc28nLFxuICAgICAgICAgICAgdmFsdWU6ICdVWVUnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1VaUyAtIFV6YmVraXN0YW5pIFNvbScsXG4gICAgICAgICAgICB2YWx1ZTogJ1VaUycsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnVlVWIC0gVmFudWF0dSBWYXR1JyxcbiAgICAgICAgICAgIHZhbHVlOiAnVlVWJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdWTkQgLSBWaWV0bmFtZXNlIMSQ4buTbmcnLFxuICAgICAgICAgICAgdmFsdWU6ICdWTkQnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1hPRiAtIFdlc3QgQWZyaWNhbiBDZmEgRnJhbmMnLFxuICAgICAgICAgICAgdmFsdWU6ICdYT0YnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1lFUiAtIFllbWVuaSBSaWFsJyxcbiAgICAgICAgICAgIHZhbHVlOiAnWUVSJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdaTVcgLSBaYW1iaWFuIEt3YWNoYScsXG4gICAgICAgICAgICB2YWx1ZTogJ1pNVycsXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICB0aW1lem9uZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6IFwiLTEyLjBcIixcbiAgICAgICAgICAgIGxhYmVsOiBcIihHTVQgLTEyOjAwKSBFbml3ZXRvaywgS3dhamFsZWluXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6IFwiLTExLjBcIixcbiAgICAgICAgICAgIGxhYmVsOiBcIihHTVQgLTExOjAwKSBNaWR3YXkgSXNsYW5kLCBTYW1vYVwiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlOiBcIi0xMC4wXCIsXG4gICAgICAgICAgICBsYWJlbDogXCIoR01UIC0xMDowMCkgSGF3YWlpXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6IFwiLTkuMFwiLFxuICAgICAgICAgICAgbGFiZWw6IFwiKEdNVCAtOTowMCkgQWxhc2thXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6IFwiLTguMFwiLFxuICAgICAgICAgICAgbGFiZWw6IFwiKEdNVCAtODowMCkgUGFjaWZpYyBUaW1lIChVUyAmIENhbmFkYSlcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogXCItNy4wXCIsXG4gICAgICAgICAgICBsYWJlbDogXCIoR01UIC03OjAwKSBNb3VudGFpbiBUaW1lIChVUyAmIENhbmFkYSlcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogXCItNi4wXCIsXG4gICAgICAgICAgICBsYWJlbDogXCIoR01UIC02OjAwKSBDZW50cmFsIFRpbWUgKFVTICYgQ2FuYWRhKSwgTWV4aWNvIENpdHlcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogXCItNS4wXCIsXG4gICAgICAgICAgICBsYWJlbDogXCIoR01UIC01OjAwKSBFYXN0ZXJuIFRpbWUgKFVTICYgQ2FuYWRhKSwgQm9nb3RhLCBMaW1hXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6IFwiLTQuMFwiLFxuICAgICAgICAgICAgbGFiZWw6IFwiKEdNVCAtNDowMCkgQXRsYW50aWMgVGltZSAoQ2FuYWRhKSwgQ2FyYWNhcywgTGEgUGF6XCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6IFwiLTMuNVwiLFxuICAgICAgICAgICAgbGFiZWw6IFwiKEdNVCAtMzozMCkgTmV3Zm91bmRsYW5kXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6IFwiLTMuMFwiLFxuICAgICAgICAgICAgbGFiZWw6IFwiKEdNVCAtMzowMCkgQnJhemlsLCBCdWVub3MgQWlyZXMsIEdlb3JnZXRvd25cIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogXCItMi4wXCIsXG4gICAgICAgICAgICBsYWJlbDogXCIoR01UIC0yOjAwKSBNaWQtQXRsYW50aWNcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogXCItMS4wXCIsXG4gICAgICAgICAgICBsYWJlbDogXCIoR01UIC0xOjAwKSBBem9yZXMsIENhcGUgVmVyZGUgSXNsYW5kc1wiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlOiBcIjAuMFwiLFxuICAgICAgICAgICAgbGFiZWw6IFwiKEdNVCkgV2VzdGVybiBFdXJvcGUgVGltZSwgTG9uZG9uLCBMaXNib24sIENhc2FibGFuY2FcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogXCIxLjBcIixcbiAgICAgICAgICAgIGxhYmVsOiBcIihHTVQgKzE6MDApIEJydXNzZWxzLCBDb3BlbmhhZ2VuLCBNYWRyaWQsIFBhcmlzXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6IFwiMi4wXCIsXG4gICAgICAgICAgICBsYWJlbDogXCIoR01UICsyOjAwKSBLYWxpbmluZ3JhZCwgU291dGggQWZyaWNhXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6IFwiMy4wXCIsXG4gICAgICAgICAgICBsYWJlbDogXCIoR01UICszOjAwKSBCYWdoZGFkLCBSaXlhZGgsIE1vc2NvdywgU3QuIFBldGVyc2J1cmdcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogXCIzLjVcIixcbiAgICAgICAgICAgIGxhYmVsOiBcIihHTVQgKzM6MzApIFRlaHJhblwiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlOiBcIjQuMFwiLFxuICAgICAgICAgICAgbGFiZWw6IFwiKEdNVCArNDowMCkgQWJ1IERoYWJpLCBNdXNjYXQsIEJha3UsIFRiaWxpc2lcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogXCI0LjVcIixcbiAgICAgICAgICAgIGxhYmVsOiBcIihHTVQgKzQ6MzApIEthYnVsXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6IFwiNS4wXCIsXG4gICAgICAgICAgICBsYWJlbDogXCIoR01UICs1OjAwKSBFa2F0ZXJpbmJ1cmcsIElzbGFtYWJhZCwgS2FyYWNoaSwgVGFzaGtlbnRcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogXCI1LjVcIixcbiAgICAgICAgICAgIGxhYmVsOiBcIihHTVQgKzU6MzApIEJvbWJheSwgQ2FsY3V0dGEsIE1hZHJhcywgTmV3IERlbGhpXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6IFwiNS43NVwiLFxuICAgICAgICAgICAgbGFiZWw6IFwiKEdNVCArNTo0NSkgS2F0aG1hbmR1XCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6IFwiNi4wXCIsXG4gICAgICAgICAgICBsYWJlbDogXCIoR01UICs2OjAwKSBBbG1hdHksIERoYWthLCBDb2xvbWJvXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6IFwiNy4wXCIsXG4gICAgICAgICAgICBsYWJlbDogXCIoR01UICs3OjAwKSBCYW5na29rLCBIYW5vaSwgSmFrYXJ0YVwiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlOiBcIjguMFwiLFxuICAgICAgICAgICAgbGFiZWw6IFwiKEdNVCArODowMCkgQmVpamluZywgUGVydGgsIFNpbmdhcG9yZSwgSG9uZyBLb25nXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6IFwiOS4wXCIsXG4gICAgICAgICAgICBsYWJlbDogXCIoR01UICs5OjAwKSBUb2t5bywgU2VvdWwsIE9zYWthLCBTYXBwb3JvLCBZYWt1dHNrXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6IFwiOS41XCIsXG4gICAgICAgICAgICBsYWJlbDogXCIoR01UICs5OjMwKSBBZGVsYWlkZSwgRGFyd2luXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6IFwiMTAuMFwiLFxuICAgICAgICAgICAgbGFiZWw6IFwiKEdNVCArMTA6MDApIEVhc3Rlcm4gQXVzdHJhbGlhLCBHdWFtLCBWbGFkaXZvc3Rva1wiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlOiBcIjExLjBcIixcbiAgICAgICAgICAgIGxhYmVsOiBcIihHTVQgKzExOjAwKSBNYWdhZGFuLCBTb2xvbW9uIElzbGFuZHMsIE5ldyBDYWxlZG9uaWFcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogXCIxMi4wXCIsXG4gICAgICAgICAgICBsYWJlbDogXCIoR01UICsxMjowMCkgQXVja2xhbmQsIFdlbGxpbmd0b24sIEZpamksIEthbWNoYXRrYVwiXG4gICAgICAgIH1cbiAgICBdXG59XG5jb25zdCBhY3Rpb25zID0ge1xuICAgIGNoYW5nZVByZXZpZXdUeXBlOiAoe2NvbW1pdCwgc3RhdGV9LCBwcmV2aWV3KSA9PiB7XG5cbiAgICAgICAgLy8gR2V0IHByZXZpZXcgdHlwZVxuICAgICAgICBsZXQgcHJldmlld1R5cGUgPSBwcmV2aWV3XG5cbiAgICAgICAgLy8gU3RvcmUgcHJldmlldyB0eXBlIHRvIGxvY2FsU3RvcmFnZVxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgncHJldmlld190eXBlJywgcHJldmlld1R5cGUpXG5cbiAgICAgICAgLy8gQ2hhbmdlIHByZXZpZXdcbiAgICAgICAgY29tbWl0KCdDSEFOR0VfUFJFVklFVycsIHByZXZpZXdUeXBlKVxuICAgIH0sXG4gICAgZmlsZUluZm9Ub2dnbGU6IChjb250ZXh0LCB2aXNpYmlsaXR5ID0gdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgIGlmICghdmlzaWJpbGl0eSkge1xuICAgICAgICAgICAgaWYgKGNvbnRleHQuc3RhdGUuZmlsZUluZm9QYW5lbFZpc2libGUpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmNvbW1pdCgnRklMRV9JTkZPX1RPR0dMRScsIGZhbHNlKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmNvbW1pdCgnRklMRV9JTkZPX1RPR0dMRScsIHRydWUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb250ZXh0LmNvbW1pdCgnRklMRV9JTkZPX1RPR0dMRScsIHZpc2liaWxpdHkpXG4gICAgICAgIH1cbiAgICB9LFxufVxuXG5jb25zdCBtdXRhdGlvbnMgPSB7XG4gICAgTE9BRF9FTU9KSVNfTElTVChzdGF0ZSwgZGF0YSkge1xuICAgICAgICBzdGF0ZS5lbW9qaXMgPSBkYXRhXG4gICAgfSxcbiAgICBVUERBVEVfU09SVElORyhzdGF0ZSkge1xuICAgICAgICBzdGF0ZS5zb3J0aW5nLmZpZWxkID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc29ydGluZycpKS5maWVsZFxuICAgICAgICBzdGF0ZS5zb3J0aW5nLnNvcnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzb3J0aW5nJykpLnNvcnRcbiAgICB9LFxuICAgIElOSVQoc3RhdGUsIGRhdGEpIHtcbiAgICAgICAgc3RhdGUuY29uZmlnID0gZGF0YS5jb25maWdcbiAgICAgICAgc3RhdGUuaG9tZURpcmVjdG9yeSA9IGRhdGEucm9vdERpcmVjdG9yeVxuICAgIH0sXG4gICAgU0VUX1NBQVMoc3RhdGUsIGRhdGEpIHtcbiAgICAgICAgc3RhdGUuY29uZmlnLmlzU2FhUyA9IGRhdGFcbiAgICB9LFxuICAgIFNFVF9TVFJJUEVfUFVCTElDX0tFWShzdGF0ZSwgZGF0YSkge1xuICAgICAgICBzdGF0ZS5jb25maWcuc3RyaXBlX3B1YmxpY19rZXkgPSBkYXRhXG4gICAgfSxcbiAgICBGSUxFX0lORk9fVE9HR0xFKHN0YXRlLCBpc1Zpc2libGUpIHtcbiAgICAgICAgc3RhdGUuZmlsZUluZm9QYW5lbFZpc2libGUgPSBpc1Zpc2libGVcblxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZmlsZV9pbmZvX3Zpc2liaWxpdHknLCBpc1Zpc2libGUpXG4gICAgfSxcbiAgICBTRVRfQVVUSE9SSVpFRChzdGF0ZSwgdmFsdWUpIHtcbiAgICAgICAgc3RhdGUuY29uZmlnLmlzQXV0aGVudGljYXRlZCA9IHZhbHVlXG4gICAgfSxcbiAgICBTRVRfSU5ERVhfQ09OVEVOVChzdGF0ZSwgZGF0YSkge1xuICAgICAgICBzdGF0ZS5pbmRleCA9IGRhdGFcbiAgICB9LFxuICAgIENIQU5HRV9QUkVWSUVXKHN0YXRlLCB0eXBlKSB7XG4gICAgICAgIHN0YXRlLkZpbGVQcmV2aWV3VHlwZSA9IHR5cGVcbiAgICB9LFxuICAgIFNUT1JFX1JFUVVFU1RFRF9QTEFOKHN0YXRlLCBwbGFuKSB7XG4gICAgICAgIHN0YXRlLnJlcXVlc3RlZFBsYW4gPSBwbGFuXG4gICAgfSxcbn1cblxuY29uc3QgZ2V0dGVycyA9IHtcbiAgICBmaWxlSW5mb1Zpc2libGU6IHN0YXRlID0+IHN0YXRlLmZpbGVJbmZvUGFuZWxWaXNpYmxlLFxuICAgIEZpbGVQcmV2aWV3VHlwZTogc3RhdGUgPT4gc3RhdGUuRmlsZVByZXZpZXdUeXBlLFxuICAgIGV4cGlyYXRpb25MaXN0OiBzdGF0ZSA9PiBzdGF0ZS5leHBpcmF0aW9uTGlzdCxcbiAgICBob21lRGlyZWN0b3J5OiBzdGF0ZSA9PiBzdGF0ZS5ob21lRGlyZWN0b3J5LFxuICAgIHJlcXVlc3RlZFBsYW46IHN0YXRlID0+IHN0YXRlLnJlcXVlc3RlZFBsYW4sXG4gICAgY3VycmVuY3lMaXN0OiBzdGF0ZSA9PiBzdGF0ZS5jdXJyZW5jeUxpc3QsXG4gICAgY291bnRyaWVzOiBzdGF0ZSA9PiBzdGF0ZS5jb3VudHJpZXMsXG4gICAgdGltZXpvbmVzOiBzdGF0ZSA9PiBzdGF0ZS50aW1lem9uZXMsXG4gICAgYXBpOiBzdGF0ZSA9PiBzdGF0ZS5jb25maWcuYXBpLFxuICAgIGNvbmZpZzogc3RhdGUgPT4gc3RhdGUuY29uZmlnLFxuICAgIGVtb2ppczogc3RhdGUgPT4gc3RhdGUuZW1vamlzLFxuICAgIGluZGV4OiBzdGF0ZSA9PiBzdGF0ZS5pbmRleCxcbiAgICByb2xlczogc3RhdGUgPT4gc3RhdGUucm9sZXMsXG4gICAgc29ydGluZzogKHN0YXRlKSA9PiB7XG4gICAgICAgIHJldHVybiB7c29ydGluZzogc3RhdGUuc29ydGluZywgVVJJOiAnP3NvcnQ9JyArIHN0YXRlLnNvcnRpbmcuZmllbGQgKyAnJmRpcmVjdGlvbj0nICsgc3RhdGUuc29ydGluZy5zb3J0fVxuICAgIH0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBzdGF0ZTogZGVmYXVsdFN0YXRlLFxuICAgIGdldHRlcnMsXG4gICAgYWN0aW9ucyxcbiAgICBtdXRhdGlvbnNcbn1cbiIsImltcG9ydCBWdWV4IGZyb20gJ3Z1ZXgnXG5pbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcblxuaW1wb3J0IGZpbGVGdW5jdGlvbnMgZnJvbSAnLi9tb2R1bGVzL2ZpbGVGdW5jdGlvbnMnXG5pbXBvcnQgZmlsZUJyb3dzZXIgZnJvbSAnLi9tb2R1bGVzL2ZpbGVCcm93c2VyJ1xuaW1wb3J0IHVzZXJBdXRoIGZyb20gJy4vbW9kdWxlcy91c2VyQXV0aCdcbmltcG9ydCBzaGFyaW5nIGZyb20gJy4vbW9kdWxlcy9zaGFyaW5nJ1xuaW1wb3J0IGFwcCBmcm9tICcuL21vZHVsZXMvYXBwJ1xuXG5WdWUudXNlKFZ1ZXgpXG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBWdWV4LlN0b3JlKHtcbiAgICBtb2R1bGVzOiB7XG4gICAgICAgIGZpbGVGdW5jdGlvbnMsXG4gICAgICAgIGZpbGVCcm93c2VyLFxuICAgICAgICB1c2VyQXV0aCxcbiAgICAgICAgc2hhcmluZyxcbiAgICAgICAgYXBwLFxuICAgIH1cbn0pIiwiPHRlbXBsYXRlPlxuICAgIDxkaXYgaWQ9XCJzaW5nbGUtcGFnZVwiPlxuICAgICAgICA8ZGl2IGlkPVwicGFnZS1jb250ZW50XCI+XG5cbiAgICAgICAgICAgIDwhLS1IZWFkZXItLT5cbiAgICAgICAgICAgIDxNb2JpbGVIZWFkZXIgOnRpdGxlPVwiJHJvdXRlci5jdXJyZW50Um91dGUubWV0YS50aXRsZVwiLz5cblxuICAgICAgICAgICAgPCEtLUNvbnRlbnQtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LXBhZ2VcIj5cbiAgICAgICAgICAgICAgICA8bmF2IGNsYXNzPVwibW9iaWxlLW5hdmlnYXRpb25cIj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tQWRtaW4gbWVudS0tPlxuICAgICAgICAgICAgICAgICAgICA8YiBjbGFzcz1cIm1vYmlsZS1tZW51LWxhYmVsXCI+e3sgJHQoJ2dsb2JhbC5hZG1pbicpIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICA8TWVudUl0ZW1MaXN0IDpuYXZpZ2F0aW9uPVwiQWRtaW5OYXZpZ2F0aW9uXCIgLz5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tU2FhUyBtZW51LS0+XG4gICAgICAgICAgICAgICAgICAgIDxiIHYtaWY9XCJjb25maWcuaXNTYWFTXCIgY2xhc3M9XCJtb2JpbGUtbWVudS1sYWJlbFwiPnt7ICR0KCdnbG9iYWwuc2FhcycpIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICA8TWVudUl0ZW1MaXN0IHYtaWY9XCJjb25maWcuaXNTYWFTXCIgOm5hdmlnYXRpb249XCJTYXNzTmF2aWdhdGlvblwiIC8+XG4gICAgICAgICAgICAgICAgPC9uYXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuICAgIGltcG9ydCBNZW51SXRlbUxpc3QgZnJvbSAnQC9jb21wb25lbnRzL01vYmlsZS9NZW51SXRlbUxpc3QnXG4gICAgaW1wb3J0IE1vYmlsZUhlYWRlciBmcm9tICdAL2NvbXBvbmVudHMvTW9iaWxlL01vYmlsZUhlYWRlcidcbiAgICBpbXBvcnQgeyBtYXBHZXR0ZXJzIH0gZnJvbSAndnVleCdcblxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgbmFtZTogJ0FkbWluTW9iaWxlTWVudScsXG4gICAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgICAgIE1lbnVJdGVtTGlzdCxcbiAgICAgICAgICAgIE1vYmlsZUhlYWRlcixcbiAgICAgICAgfSxcbiAgICAgICAgY29tcHV0ZWQ6IHtcbiAgICAgICAgICAgIC4uLm1hcEdldHRlcnMoWydjb25maWcnXSksXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGEoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIEFkbWluTmF2aWdhdGlvbjogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnYm94JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLiR0KCdhZG1pbl9tZW51LmRhc2hib2FyZCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVOYW1lOiAnRGFzaGJvYXJkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ3VzZXJzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLiR0KCdhZG1pbl9tZW51LnVzZXJzJyksXG4gICAgICAgICAgICAgICAgICAgICAgICByb3V0ZU5hbWU6ICdVc2VycycsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdzZXR0aW5ncycsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy4kdCgnYWRtaW5fbWVudS5zZXR0aW5ncycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVOYW1lOiAnQXBwT3RoZXJzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ21vbml0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMuJHQoJ2FkbWluX21lbnUucGFnZXMnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlTmFtZTogJ1BhZ2VzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIFNhc3NOYXZpZ2F0aW9uOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdkYXRhYmFzZScsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy4kdCgnYWRtaW5fbWVudS5wbGFucycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVOYW1lOiAnUGxhbnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnZmlsZS10ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLiR0KCdhZG1pbl9tZW51Lmludm9pY2VzJyksXG4gICAgICAgICAgICAgICAgICAgICAgICByb3V0ZU5hbWU6ICdJbnZvaWNlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH1cbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkIGxhbmc9XCJzY3NzXCI+XG4gICAgQGltcG9ydCAnQGFzc2V0cy92dWVmaWxlbWFuYWdlci9fdmFyaWFibGVzJztcbiAgICBAaW1wb3J0ICdAYXNzZXRzL3Z1ZWZpbGVtYW5hZ2VyL19taXhpbnMnO1xuXG4gICAgLm1vYmlsZS1uYXZpZ2F0aW9uIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHotaW5kZXg6IDk5O1xuXG4gICAgICAgIC5tb2JpbGUtbWVudS1sYWJlbCB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAzMHB4O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgICAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKDExKTtcbiAgICAgICAgICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuICAgICAgICAubW9iaWxlLW5hdmlnYXRpb24ge1xuXG4gICAgICAgICAgICAubW9iaWxlLW1lbnUtbGFiZWwge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkZGFya19tb2RlX3RleHRfc2Vjb25kYXJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P3JlZi0tNC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQWRtaW5Nb2JpbGVNZW51LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS00LTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BZG1pbk1vYmlsZU1lbnUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9BZG1pbk1vYmlsZU1lbnUudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTIyNjk5YjI1JnNjb3BlZD10cnVlJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FkbWluTW9iaWxlTWVudS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FkbWluTW9iaWxlTWVudS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vQWRtaW5Nb2JpbGVNZW51LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTIyNjk5YjI1JnNjb3BlZD10cnVlJmxhbmc9c2NzcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIFwiMjI2OTliMjVcIixcbiAgbnVsbFxuICBcbilcblxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJ2YXIgcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiBfYygnZGl2Jyx7YXR0cnM6e1wiaWRcIjpcInNpbmdsZS1wYWdlXCJ9fSxbX2MoJ2Rpdicse2F0dHJzOntcImlkXCI6XCJwYWdlLWNvbnRlbnRcIn19LFtfYygnTW9iaWxlSGVhZGVyJyx7YXR0cnM6e1widGl0bGVcIjpfdm0uJHJvdXRlci5jdXJyZW50Um91dGUubWV0YS50aXRsZX19KSxfdm0uX3YoXCIgXCIpLF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcImNvbnRlbnQtcGFnZVwifSxbX2MoJ25hdicse3N0YXRpY0NsYXNzOlwibW9iaWxlLW5hdmlnYXRpb25cIn0sW19jKCdiJyx7c3RhdGljQ2xhc3M6XCJtb2JpbGUtbWVudS1sYWJlbFwifSxbX3ZtLl92KF92bS5fcyhfdm0uJHQoJ2dsb2JhbC5hZG1pbicpKSldKSxfdm0uX3YoXCIgXCIpLF9jKCdNZW51SXRlbUxpc3QnLHthdHRyczp7XCJuYXZpZ2F0aW9uXCI6X3ZtLkFkbWluTmF2aWdhdGlvbn19KSxfdm0uX3YoXCIgXCIpLChfdm0uY29uZmlnLmlzU2FhUyk/X2MoJ2InLHtzdGF0aWNDbGFzczpcIm1vYmlsZS1tZW51LWxhYmVsXCJ9LFtfdm0uX3YoX3ZtLl9zKF92bS4kdCgnZ2xvYmFsLnNhYXMnKSkpXSk6X3ZtLl9lKCksX3ZtLl92KFwiIFwiKSwoX3ZtLmNvbmZpZy5pc1NhYVMpP19jKCdNZW51SXRlbUxpc3QnLHthdHRyczp7XCJuYXZpZ2F0aW9uXCI6X3ZtLlNhc3NOYXZpZ2F0aW9ufX0pOl92bS5fZSgpXSwxKV0pXSwxKV0pfVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9yZWYtLTQtMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1VzZXJQcm9maWxlTW9iaWxlTWVudS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P3JlZi0tNC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVXNlclByb2ZpbGVNb2JpbGVNZW51LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiIsIjx0ZW1wbGF0ZT5cbiAgICA8ZGl2IGlkPVwic2luZ2xlLXBhZ2VcIj5cbiAgICAgICAgPGRpdiBpZD1cInBhZ2UtY29udGVudFwiPlxuXG4gICAgICAgICAgICA8IS0tSGVhZGVyLS0+XG4gICAgICAgICAgICA8TW9iaWxlSGVhZGVyIDp0aXRsZT1cIiRyb3V0ZXIuY3VycmVudFJvdXRlLm1ldGEudGl0bGVcIi8+XG5cbiAgICAgICAgICAgIDwhLS1Db250ZW50LS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1wYWdlXCI+XG4gICAgICAgICAgICAgICAgPG5hdiBjbGFzcz1cIm1vYmlsZS1uYXZpZ2F0aW9uXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLUFkbWluIG1lbnUtLT5cbiAgICAgICAgICAgICAgICAgICAgPGIgY2xhc3M9XCJtb2JpbGUtbWVudS1sYWJlbFwiPnt7ICR0KCdnbG9iYWwubWVudScpIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICA8TWVudUl0ZW1MaXN0IDpuYXZpZ2F0aW9uPVwiUHJvZmlsZU5hdmlnYXRpb25cIiAvPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS1TYWFTIG1lbnUtLT5cbiAgICAgICAgICAgICAgICAgICAgPGIgY2xhc3M9XCJtb2JpbGUtbWVudS1sYWJlbFwiPnt7ICR0KCdnbG9iYWwuc3Vic2NyaXB0aW9uJykgfX08L2I+XG4gICAgICAgICAgICAgICAgICAgIDxNZW51SXRlbUxpc3QgOm5hdmlnYXRpb249XCJTdWJzY3JpcHRpb25OYXZpZ2F0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICA8L25hdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgaW1wb3J0IE1lbnVJdGVtTGlzdCBmcm9tICdAL2NvbXBvbmVudHMvTW9iaWxlL01lbnVJdGVtTGlzdCdcbiAgICBpbXBvcnQgTW9iaWxlSGVhZGVyIGZyb20gJ0AvY29tcG9uZW50cy9Nb2JpbGUvTW9iaWxlSGVhZGVyJ1xuXG4gICAgZXhwb3J0IGRlZmF1bHQge1xuICAgICAgICBuYW1lOiAnVXNlclByb2ZpbGVNb2JpbGVNZW51JyxcbiAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgTWVudUl0ZW1MaXN0LFxuICAgICAgICAgICAgTW9iaWxlSGVhZGVyLFxuICAgICAgICB9LFxuICAgICAgICBkYXRhKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBQcm9maWxlTmF2aWdhdGlvbjogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAndXNlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy4kdCgnbWVudS5wcm9maWxlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICByb3V0ZU5hbWU6ICdQcm9maWxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2hhcmQtZHJpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMuJHQoJ21lbnUuc3RvcmFnZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVOYW1lOiAnU3RvcmFnZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdsb2NrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLiR0KCdtZW51LnBhc3N3b3JkJyksXG4gICAgICAgICAgICAgICAgICAgICAgICByb3V0ZU5hbWU6ICdQYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBTdWJzY3JpcHRpb25OYXZpZ2F0aW9uOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdjbG91ZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy4kdCgnbWVudS5zdWJzY3JpcHRpb24nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlTmFtZTogJ1N1YnNjcmlwdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdjcmVkaXQtY2FyZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy4kdCgnbWVudS5wYXltZW50X2NhcmRzJyksXG4gICAgICAgICAgICAgICAgICAgICAgICByb3V0ZU5hbWU6ICdQYXltZW50TWV0aG9kcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdmaWxlLXRleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMuJHQoJ21lbnUuaW52b2ljZXMnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlTmFtZTogJ0ludm9pY2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZCBsYW5nPVwic2Nzc1wiPlxuICAgIEBpbXBvcnQgJ0Bhc3NldHMvdnVlZmlsZW1hbmFnZXIvX3ZhcmlhYmxlcyc7XG4gICAgQGltcG9ydCAnQGFzc2V0cy92dWVmaWxlbWFuYWdlci9fbWl4aW5zJztcblxuICAgIC5tb2JpbGUtbmF2aWdhdGlvbiB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB6LWluZGV4OiA5OTtcblxuICAgICAgICAubW9iaWxlLW1lbnUtbGFiZWwge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMzBweDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDVweDtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgxMSk7XG4gICAgICAgICAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgICAgICAgLm1vYmlsZS1uYXZpZ2F0aW9uIHtcblxuICAgICAgICAgICAgLm1vYmlsZS1tZW51LWxhYmVsIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGRhcmtfbW9kZV90ZXh0X3NlY29uZGFyeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL1VzZXJQcm9maWxlTW9iaWxlTWVudS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDRjNmZjMDUmc2NvcGVkPXRydWUmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vVXNlclByb2ZpbGVNb2JpbGVNZW51LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vVXNlclByb2ZpbGVNb2JpbGVNZW51LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi9Vc2VyUHJvZmlsZU1vYmlsZU1lbnUudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NDRjNmZjMDUmc2NvcGVkPXRydWUmbGFuZz1zY3NzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCI0NGM2ZmMwNVwiLFxuICBudWxsXG4gIFxuKVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsInZhciByZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCdkaXYnLHthdHRyczp7XCJpZFwiOlwic2luZ2xlLXBhZ2VcIn19LFtfYygnZGl2Jyx7YXR0cnM6e1wiaWRcIjpcInBhZ2UtY29udGVudFwifX0sW19jKCdNb2JpbGVIZWFkZXInLHthdHRyczp7XCJ0aXRsZVwiOl92bS4kcm91dGVyLmN1cnJlbnRSb3V0ZS5tZXRhLnRpdGxlfX0pLF92bS5fdihcIiBcIiksX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiY29udGVudC1wYWdlXCJ9LFtfYygnbmF2Jyx7c3RhdGljQ2xhc3M6XCJtb2JpbGUtbmF2aWdhdGlvblwifSxbX2MoJ2InLHtzdGF0aWNDbGFzczpcIm1vYmlsZS1tZW51LWxhYmVsXCJ9LFtfdm0uX3YoX3ZtLl9zKF92bS4kdCgnZ2xvYmFsLm1lbnUnKSkpXSksX3ZtLl92KFwiIFwiKSxfYygnTWVudUl0ZW1MaXN0Jyx7YXR0cnM6e1wibmF2aWdhdGlvblwiOl92bS5Qcm9maWxlTmF2aWdhdGlvbn19KSxfdm0uX3YoXCIgXCIpLF9jKCdiJyx7c3RhdGljQ2xhc3M6XCJtb2JpbGUtbWVudS1sYWJlbFwifSxbX3ZtLl92KF92bS5fcyhfdm0uJHQoJ2dsb2JhbC5zdWJzY3JpcHRpb24nKSkpXSksX3ZtLl92KFwiIFwiKSxfYygnTWVudUl0ZW1MaXN0Jyx7YXR0cnM6e1wibmF2aWdhdGlvblwiOl92bS5TdWJzY3JpcHRpb25OYXZpZ2F0aW9ufX0pXSwxKV0pXSwxKV0pfVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCJpbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcbmltcG9ydCBSb3V0ZXIgZnJvbSAndnVlLXJvdXRlcidcbmltcG9ydCBpMThuIGZyb20gJ0AvaTE4bi9pbmRleCdcbmltcG9ydCBzdG9yZSBmcm9tICcuL3N0b3JlL2luZGV4J1xuXG5pbXBvcnQgQWRtaW5Nb2JpbGVNZW51IGZyb20gJy4vdmlld3MvTW9iaWxlL0FkbWluTW9iaWxlTWVudSdcbmltcG9ydCBVc2VyUHJvZmlsZU1vYmlsZU1lbnUgZnJvbSAnLi92aWV3cy9Nb2JpbGUvVXNlclByb2ZpbGVNb2JpbGVNZW51J1xuXG5WdWUudXNlKFJvdXRlcilcblxuY29uc3Qgcm91dGVzT2FzaXMgPSBbXG4gICAge1xuICAgICAgICBuYW1lOiAnU2lnblVwJyxcbiAgICAgICAgcGF0aDogJy9zaWduLXVwJyxcbiAgICAgICAgY29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwiY2h1bmtzL3NpZ24tdXBcIiAqLyAnLi9PYXNpcy9BdXRoL1NpZ25VcCcpLFxuICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICByZXF1aXJlc0F1dGg6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICAgIG5hbWU6ICdTZXRVcFBsYW4nLFxuICAgICAgICBwYXRoOiAnL25hc3RhdnRlLXBsYW4nLFxuICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJjaHVua3MvdXBncmFkZS1wbGFuXCIgKi8gJy4vT2FzaXMvT25ib2FyZGluZy9TZWxlY3RQbGFuJyksXG4gICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogdHJ1ZSxcbiAgICAgICAgICAgIHRpdGxlOiBpMThuLnQoJ3JvdXRlc190aXRsZS51cGdyYWRlX3BsYW4nKVxuICAgICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgICBuYW1lOiAnRmluaXNoUGF5bWVudCcsXG4gICAgICAgIHBhdGg6ICcvZG9rb25jZXRlLW9iamVkbmF2a3UnLFxuICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJjaHVua3MvdXBncmFkZS1iaWxsaW5nXCIgKi8gJy4vT2FzaXMvT25ib2FyZGluZy9QYXlGb3JQbGFuJyksXG4gICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogdHJ1ZSxcbiAgICAgICAgICAgIHRpdGxlOiBpMThuLnQoJ3JvdXRlc190aXRsZS51cGdyYWRlX2JpbGxpbmcnKVxuICAgICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgICBuYW1lOiAnU3Vic2NyaXB0aW9uUmVxdWVzdFBheW1lbnQnLFxuICAgICAgICBwYXRoOiAnL3BsYXRiYS86aWQnLFxuICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJjaHVua3Mvb2FzaXMvcGxhdGJhXCIgKi8gJy4vT2FzaXMvUGFnZXMvU3Vic2NyaXB0aW9uUmVxdWVzdFBheW1lbnQnKSxcbiAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgcmVxdWlyZXNBdXRoOiBmYWxzZSxcbiAgICAgICAgICAgIHRpdGxlOiAnUGxhdGJhJ1xuICAgICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgICBuYW1lOiAnQ3JlYXRlUGFzc3dvcmRBZnRlclBheW1lbnQnLFxuICAgICAgICBwYXRoOiAnL3Z5dHZvcml0LWhlc2xvLzppZCcsXG4gICAgICAgIGNvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy9vYXNpcy9wbGF0YmFcIiAqLyAnLi9PYXNpcy9QYWdlcy9DcmVhdGVQYXNzd29yZEFmdGVyUGF5bWVudCcpLFxuICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICByZXF1aXJlc0F1dGg6IGZhbHNlLFxuICAgICAgICAgICAgdGl0bGU6ICdWeXR2b3JpdCBIZXNsbydcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJ0FkbWluJyxcbiAgICAgICAgcGF0aDogJy9hZG1pbicsXG4gICAgICAgIGNvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy9hZG1pblwiICovICcuL3ZpZXdzL0FkbWluJyksXG4gICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogdHJ1ZSxcbiAgICAgICAgICAgIHRpdGxlOiAnQWRtaW4nXG4gICAgICAgIH0sXG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ1VzZXJzJyxcbiAgICAgICAgICAgICAgICBwYXRoOiAnL2FkbWluL3VzZXJzJyxcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy91c2Vyc1wiICovICcuL09hc2lzL0FkbWluL1VzZXJzJyksXG4gICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICByZXF1aXJlc0F1dGg6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpMThuLnQoJ3JvdXRlc190aXRsZS51c2Vyc19saXN0JylcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnQ3JlYXRlU3Vic2NyaXB0aW9uUmVxdWVzdCcsXG4gICAgICAgICAgICAgICAgcGF0aDogJy9hZG1pbi91c2VyL29yZGVyJyxcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy91c2VyLWNyZWF0ZVwiICovICcuL09hc2lzL0FkbWluL1VzZXJDcmVhdGVPcmRlcicpLFxuICAgICAgICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNBdXRoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaTE4bi50KCdyb3V0ZXNfdGl0bGUudXNlcl9jcmVhdGUnKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdVc2VyQ3JlYXRlJyxcbiAgICAgICAgICAgICAgICBwYXRoOiAnL2FkbWluL3VzZXIvY3JlYXRlJyxcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy91c2VyLWNyZWF0ZVwiICovICcuL09hc2lzL0FkbWluL1VzZXJDcmVhdGUnKSxcbiAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGkxOG4udCgncm91dGVzX3RpdGxlLnVzZXJfY3JlYXRlJylcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXVxuICAgIH0sXG5dXG5jb25zdCByb3V0ZXNBZG1pbiA9IFtcbiAgICB7XG4gICAgICAgIG5hbWU6ICdBZG1pbicsXG4gICAgICAgIHBhdGg6ICcvYWRtaW4nLFxuICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJjaHVua3MvYWRtaW5cIiAqLyAnLi92aWV3cy9BZG1pbicpLFxuICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICByZXF1aXJlc0F1dGg6IHRydWUsXG4gICAgICAgICAgICB0aXRsZTogJ0FkbWluJ1xuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdEYXNoYm9hcmQnLFxuICAgICAgICAgICAgICAgIHBhdGg6ICcvYWRtaW4vZGFzaGJvYXJkJyxcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy9kYXNoYm9hcmRcIiAqLyAnLi92aWV3cy9BZG1pbi9EYXNoYm9hcmQnKSxcbiAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGkxOG4udCgncm91dGVzX3RpdGxlLmRhc2hib2FyZCcpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0ludm9pY2VzJyxcbiAgICAgICAgICAgICAgICBwYXRoOiAnL2FkbWluL2ludm9pY2VzJyxcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy9pbnZvaWNlc1wiICovICcuL3ZpZXdzL0FkbWluL0ludm9pY2VzJyksXG4gICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICByZXF1aXJlc0F1dGg6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpMThuLnQoJ3JvdXRlc190aXRsZS5pbnZvaWNlcycpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ1BhZ2VzJyxcbiAgICAgICAgICAgICAgICBwYXRoOiAnL2FkbWluL3BhZ2VzJyxcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy9wYWdlc1wiICovICcuL3ZpZXdzL0FkbWluL1BhZ2VzJyksXG4gICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICByZXF1aXJlc0F1dGg6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpMThuLnQoJ3JvdXRlc190aXRsZS5wYWdlcycpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ1BhZ2VFZGl0JyxcbiAgICAgICAgICAgICAgICBwYXRoOiAnL2FkbWluL3BhZ2VzLzpzbHVnJyxcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy9wYWdlLWVkaXRcIiAqLyAnLi92aWV3cy9BZG1pbi9QYWdlcy9QYWdlRWRpdCcpLFxuICAgICAgICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNBdXRoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaTE4bi50KCdyb3V0ZXNfdGl0bGUucGFnZV9lZGl0JylcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnUGxhbnMnLFxuICAgICAgICAgICAgICAgIHBhdGg6ICcvYWRtaW4vcGxhbnMnLFxuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwiY2h1bmtzL3BsYW5zXCIgKi8gJy4vdmlld3MvQWRtaW4vUGxhbnMnKSxcbiAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGkxOG4udCgncm91dGVzX3RpdGxlLnByaWNpbmdfcGxhbnMnKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdVc2VycycsXG4gICAgICAgICAgICAgICAgcGF0aDogJy9hZG1pbi91c2VycycsXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJjaHVua3MvdXNlcnNcIiAqLyAnLi92aWV3cy9BZG1pbi9Vc2VycycpLFxuICAgICAgICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNBdXRoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaTE4bi50KCdyb3V0ZXNfdGl0bGUudXNlcnNfbGlzdCcpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ1VzZXJDcmVhdGUnLFxuICAgICAgICAgICAgICAgIHBhdGg6ICcvYWRtaW4vdXNlci9jcmVhdGUnLFxuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwiY2h1bmtzL3VzZXItY3JlYXRlXCIgKi8gJy4vdmlld3MvQWRtaW4vVXNlcnMvVXNlckNyZWF0ZScpLFxuICAgICAgICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNBdXRoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaTE4bi50KCdyb3V0ZXNfdGl0bGUudXNlcl9jcmVhdGUnKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdQbGFuQ3JlYXRlJyxcbiAgICAgICAgICAgICAgICBwYXRoOiAnL2FkbWluL3BsYW4vY3JlYXRlJyxcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy9wbGFuLWNyZWF0ZVwiICovICcuL3ZpZXdzL0FkbWluL1BsYW5zL1BsYW5DcmVhdGUnKSxcbiAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGkxOG4udCgncm91dGVzX3RpdGxlLnBsYW5fY3JlYXRlJylcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnVXNlcicsXG4gICAgICAgICAgICAgICAgcGF0aDogJy9hZG1pbi91c2VyLzppZCcsXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJjaHVua3MvdXNlclwiICovICcuL3ZpZXdzL0FkbWluL1VzZXJzL1VzZXInKSxcbiAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGkxOG4udCgncm91dGVzX3RpdGxlLnVzZXJzX3VzZXInKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ1VzZXJEZXRhaWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogJy9hZG1pbi91c2VyLzppZC9kZXRhaWxzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJjaHVua3MvdXNlci1kZXRhaWxcIiAqLyAnLi92aWV3cy9BZG1pbi9Vc2Vycy9Vc2VyVGFicy9Vc2VyRGV0YWlsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNBdXRoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpMThuLnQoJ3JvdXRlc190aXRsZS51c2Vyc19kZXRhaWwnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ1VzZXJTdG9yYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6ICcvYWRtaW4vdXNlci86aWQvc3RvcmFnZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwiY2h1bmtzL3VzZXItc3RvcmFnZVwiICovICcuL3ZpZXdzL0FkbWluL1VzZXJzL1VzZXJUYWJzL1VzZXJTdG9yYWdlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNBdXRoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpMThuLnQoJ3JvdXRlc190aXRsZS51c2Vyc19zdG9yYWdlX3VzYWdlJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdVc2VyU3Vic2NyaXB0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6ICcvYWRtaW4vdXNlci86aWQvc3Vic2NyaXB0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJjaHVua3MvdXNlci1zdWJzY3JpcHRpb25cIiAqLyAnLi92aWV3cy9BZG1pbi9Vc2Vycy9Vc2VyVGFicy9Vc2VyU3Vic2NyaXB0aW9uJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNBdXRoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpMThuLnQoJ3JvdXRlc190aXRsZS5zdWJzY3JpcHRpb24nKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ1VzZXJJbnZvaWNlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiAnL2FkbWluL3VzZXIvOmlkL2ludm9pY2VzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJjaHVua3MvdXNlci1pbnZvaWNlc1wiICovICcuL3ZpZXdzL0FkbWluL1VzZXJzL1VzZXJUYWJzL1VzZXJJbnZvaWNlcycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaTE4bi50KCdyb3V0ZXNfdGl0bGUuaW52b2ljZXMnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ1VzZXJQYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiAnL2FkbWluL3VzZXIvOmlkL3Bhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJjaHVua3MvdXNlci1wYXNzd29yZFwiICovICcuL3ZpZXdzL0FkbWluL1VzZXJzL1VzZXJUYWJzL1VzZXJQYXNzd29yZCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaTE4bi50KCdyb3V0ZXNfdGl0bGUudXNlcnNfcGFzc3dvcmQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ1VzZXJEZWxldGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogJy9hZG1pbi91c2VyLzppZC9kZWxldGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy91c2VyLWRlbGV0ZVwiICovICcuL3ZpZXdzL0FkbWluL1VzZXJzL1VzZXJUYWJzL1VzZXJEZWxldGUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlc0F1dGg6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGkxOG4udCgncm91dGVzX3RpdGxlLnVzZXJzX2RlbGV0ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ1BsYW4nLFxuICAgICAgICAgICAgICAgIHBhdGg6ICcvYWRtaW4vcGxhbi86aWQnLFxuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwiY2h1bmtzL3BsYW5cIiAqLyAnLi92aWV3cy9BZG1pbi9QbGFucy9QbGFuJyksXG4gICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICByZXF1aXJlc0F1dGg6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpMThuLnQoJ3JvdXRlc190aXRsZS5wbGFuJylcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdQbGFuU3Vic2NyaWJlcnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogJy9hZG1pbi9wbGFuLzppZC9zdWJzY3JpYmVycycsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwiY2h1bmtzL3BsYW4tc3Vic2NyaWJlcnNcIiAqLyAnLi92aWV3cy9BZG1pbi9QbGFucy9QbGFuVGFicy9QbGFuU3Vic2NyaWJlcnMnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlc0F1dGg6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGkxOG4udCgncm91dGVzX3RpdGxlLnN1YnNjcmliZXJzJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdQbGFuU2V0dGluZ3MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogJy9hZG1pbi9wbGFuLzppZC9zZXR0aW5ncycsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwiY2h1bmtzL3BsYW4tc2V0dGluZ3NcIiAqLyAnLi92aWV3cy9BZG1pbi9QbGFucy9QbGFuVGFicy9QbGFuU2V0dGluZ3MnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlc0F1dGg6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGkxOG4udCgncm91dGVzX3RpdGxlLnBsYW5fc2V0dGluZ3MnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdQbGFuRGVsZXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6ICcvYWRtaW4vcGxhbi86aWQvZGVsZXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJjaHVua3MvcGxhbi1kZWxldGVcIiAqLyAnLi92aWV3cy9BZG1pbi9QbGFucy9QbGFuVGFicy9QbGFuRGVsZXRlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNBdXRoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpMThuLnQoJ3JvdXRlc190aXRsZS5wbGFuX2RlbGV0ZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdBcHBTZXR0aW5ncycsXG4gICAgICAgICAgICAgICAgcGF0aDogJy9hZG1pbi9zZXR0aW5ncycsXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJjaHVua3MvYXBwLXNldHRpbmdzXCIgKi8gJy4vdmlld3MvQWRtaW4vQXBwU2V0dGluZ3MvQXBwU2V0dGluZ3MnKSxcbiAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGkxOG4udCgncm91dGVzX3RpdGxlLnNldHRpbmdzJylcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdBcHBBcHBlYXJhbmNlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6ICcvYWRtaW4vc2V0dGluZ3MvYXBwZWFyYW5jZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwiY2h1bmtzL2FwcC1hcHBlYXJhbmNlXCIgKi8gJy4vdmlld3MvQWRtaW4vQXBwU2V0dGluZ3MvQXBwU2V0dGluZ3NUYWJzL0FwcGVhcmFuY2UnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlc0F1dGg6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGkxOG4udCgncm91dGVzX3RpdGxlLmFwcGVhcmFuY2UnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0FwcEluZGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6ICcvYWRtaW4vc2V0dGluZ3MvaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy9hcHAtaW5kZXhcIiAqLyAnLi92aWV3cy9BZG1pbi9BcHBTZXR0aW5ncy9BcHBTZXR0aW5nc1RhYnMvSW5kZXgnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlc0F1dGg6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdJbmRleCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdBcHBCaWxsaW5ncycsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiAnL2FkbWluL3NldHRpbmdzL2JpbGxpbmdzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJjaHVua3MvYXBwLWJpbGxpbmdzXCIgKi8gJy4vdmlld3MvQWRtaW4vQXBwU2V0dGluZ3MvQXBwU2V0dGluZ3NUYWJzL0JpbGxpbmdzJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNBdXRoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpMThuLnQoJ3JvdXRlc190aXRsZS5iaWxsaW5ncycpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQXBwRW1haWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogJy9hZG1pbi9zZXR0aW5ncy9lbWFpbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwiY2h1bmtzL2FwcC1lbWFpbFwiICovICcuL3ZpZXdzL0FkbWluL0FwcFNldHRpbmdzL0FwcFNldHRpbmdzVGFicy9FbWFpbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaTE4bi50KCdyb3V0ZXNfdGl0bGUuZW1haWwnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0FwcFBheW1lbnRzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6ICcvYWRtaW4vc2V0dGluZ3MvcGF5bWVudHMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy9hcHAtcGF5bWVudHNcIiAqLyAnLi92aWV3cy9BZG1pbi9BcHBTZXR0aW5ncy9BcHBTZXR0aW5nc1RhYnMvUGF5bWVudHMnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlc0F1dGg6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGkxOG4udCgncm91dGVzX3RpdGxlLnBheW1lbnRzJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdBcHBPdGhlcnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogJy9hZG1pbi9zZXR0aW5ncy9vdGhlcnMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy9hcHAtb3RoZXJzXCIgKi8gJy4vdmlld3MvQWRtaW4vQXBwU2V0dGluZ3MvQXBwU2V0dGluZ3NUYWJzL090aGVycycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaTE4bi50KCdyb3V0ZXNfdGl0bGUub3RoZXJzJylcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgXVxuICAgIH0sXG4gICAge1xuICAgICAgICBuYW1lOiAnQWRtaW5Nb2JpbGVNZW51JyxcbiAgICAgICAgcGF0aDogJy9hZG1pbi1tZW51JyxcbiAgICAgICAgY29tcG9uZW50OiBBZG1pbk1vYmlsZU1lbnUsXG4gICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogdHJ1ZSxcbiAgICAgICAgICAgIHRpdGxlOiBpMThuLnQoJ3JvdXRlc190aXRsZS5zZXR0aW5nc19tb2JpbGUnKVxuICAgICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgICBuYW1lOiAnVXNlclByb2ZpbGVNb2JpbGVNZW51JyxcbiAgICAgICAgcGF0aDogJy91c2VyLW1lbnUnLFxuICAgICAgICBjb21wb25lbnQ6IFVzZXJQcm9maWxlTW9iaWxlTWVudSxcbiAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgcmVxdWlyZXNBdXRoOiB0cnVlLFxuICAgICAgICAgICAgdGl0bGU6IGkxOG4udCgncm91dGVzX3RpdGxlLnByb2ZpbGVfc2V0dGluZ3MnKVxuICAgICAgICB9LFxuICAgIH0sXG5dXG5jb25zdCByb3V0ZXNTaGFyZWQgPSBbXG4gICAge1xuICAgICAgICBuYW1lOiAnU2hhcmVkJyxcbiAgICAgICAgcGF0aDogJy9zaGFyZS86dG9rZW4nLFxuICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJjaHVua3Mvc2hhcmVkXCIgKi8gJy4vdmlld3MvU2hhcmVkJyksXG4gICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnU2hhcmVkRmlsZUJyb3dzZXInLFxuICAgICAgICAgICAgICAgIHBhdGg6ICcvc2hhcmUvOnRva2VuL2ZpbGVzJyxcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy9zaGFyZWQvZmlsZS1icm93c2VyXCIgKi8gJy4vdmlld3MvU2hhcmVkL1NoYXJlZEZpbGVCcm93c2VyJyksXG4gICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICByZXF1aXJlc0F1dGg6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ1NoYXJlZFNpbmdsZUZpbGUnLFxuICAgICAgICAgICAgICAgIHBhdGg6ICcvc2hhcmUvOnRva2VuL2ZpbGUnLFxuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwiY2h1bmtzL3NoYXJlZC9zaW5nbGUtZmlsZVwiICovICcuL3ZpZXdzL1NoYXJlZC9TaGFyZWRTaW5nbGVGaWxlJyksXG4gICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICByZXF1aXJlc0F1dGg6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ1NoYXJlZEF1dGhlbnRpY2F0aW9uJyxcbiAgICAgICAgICAgICAgICBwYXRoOiAnL3NoYXJlLzp0b2tlbi9hdXRoZW50aWNhdGUnLFxuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwiY2h1bmtzL3NoYXJlZC9hdXRoZW50aWNhdGVcIiAqLyAnLi92aWV3cy9TaGFyZWQvU2hhcmVkQXV0aGVudGljYXRpb24nKSxcbiAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogZmFsc2VcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXVxuICAgIH0sXG5dXG5jb25zdCByb3V0ZXNBdXRoID0gW1xuICAgIHtcbiAgICAgICAgbmFtZTogJ1NpZ25JbicsXG4gICAgICAgIHBhdGg6ICcvc2lnbi1pbicsXG4gICAgICAgIGNvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy9zaWduLWluXCIgKi8gJy4vdmlld3MvQXV0aC9TaWduSW4nKSxcbiAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgcmVxdWlyZXNBdXRoOiBmYWxzZVxuICAgICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgICBuYW1lOiAnU2lnblVwJyxcbiAgICAgICAgcGF0aDogJy9zaWduLXVwJyxcbiAgICAgICAgY29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwiY2h1bmtzL3NpZ24tdXBcIiAqLyAnLi92aWV3cy9BdXRoL1NpZ25VcCcpLFxuICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICByZXF1aXJlc0F1dGg6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICAgIG5hbWU6ICdGb3Jnb3R0ZW5QYXNzd29yZCcsXG4gICAgICAgIHBhdGg6ICcvZm9yZ290dGVuLXBhc3N3b3JkJyxcbiAgICAgICAgY29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwiY2h1bmtzL2ZvcmdvdHRlbi1wYXNzd29yZFwiICovICcuL3ZpZXdzL0F1dGgvRm9yZ290dGVuUGFzc3dvcmQnKSxcbiAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgcmVxdWlyZXNBdXRoOiBmYWxzZVxuICAgICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgICBuYW1lOiAnQ3JlYXRlTmV3UGFzc3dvcmQnLFxuICAgICAgICBwYXRoOiAnL2NyZWF0ZS1uZXctcGFzc3dvcmQnLFxuICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJjaHVua3MvY3JlYXRlLW5ldy1wYXNzd29yZFwiICovICcuL3ZpZXdzL0F1dGgvQ3JlYXRlTmV3UGFzc3dvcmQnKSxcbiAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgcmVxdWlyZXNBdXRoOiBmYWxzZVxuICAgICAgICB9LFxuICAgIH0sXG5dXG5jb25zdCByb3V0ZXNVc2VyID0gW1xuICAgIHtcbiAgICAgICAgcGF0aDogJy9wbGF0Zm9ybScsXG4gICAgICAgIG5hbWU6ICdQbGF0Zm9ybScsXG4gICAgICAgIGNvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy9wbGF0Zm9ybVwiICovICcuL3ZpZXdzL1BsYXRmb3JtJyksXG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0ZpbGVzJyxcbiAgICAgICAgICAgICAgICBwYXRoOiAnL3BsYXRmb3JtL2ZpbGVzJyxcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy9maWxlc1wiICovICcuL3ZpZXdzL0ZpbGVQYWdlcy9GaWxlcycpLFxuICAgICAgICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNBdXRoOiB0cnVlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ1NoYXJlZEZpbGVzJyxcbiAgICAgICAgICAgICAgICBwYXRoOiAnL3BsYXRmb3JtL3NoYXJlZC1maWxlcycsXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJjaHVua3Mvc2hhcmVkLWZpbGVzXCIgKi8gJy4vdmlld3MvRmlsZVBhZ2VzL1NoYXJlZEZpbGVzJyksXG4gICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICByZXF1aXJlc0F1dGg6IHRydWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnU2V0dGluZ3MnLFxuICAgICAgICAgICAgICAgIHBhdGg6ICcvcGxhdGZvcm0vc2V0dGluZ3MnLFxuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwiY2h1bmtzL3NldHRpbmdzXCIgKi8gJy4vdmlld3MvUHJvZmlsZScpLFxuICAgICAgICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNBdXRoOiB0cnVlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnUHJvZmlsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiAnL3BsYXRmb3JtL3Byb2ZpbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy9wcm9maWxlXCIgKi8gJy4vdmlld3MvVXNlci9TZXR0aW5ncycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaTE4bi50KCdyb3V0ZXNfdGl0bGUucHJvZmlsZScpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnUGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogJy9wbGF0Zm9ybS9zZXR0aW5ncy9wYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwiY2h1bmtzL3NldHRpbmdzLXBhc3N3b3JkXCIgKi8gJy4vdmlld3MvVXNlci9QYXNzd29yZCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaTE4bi50KCdyb3V0ZXNfdGl0bGUuc2V0dGluZ3NfcGFzc3dvcmQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ1N0b3JhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogJy9wbGF0Zm9ybS9zZXR0aW5ncy9zdG9yYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJjaHVua3Mvc2V0dGluZ3Mtc3RvcmFnZVwiICovICcuL3ZpZXdzL1VzZXIvU3RvcmFnZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaTE4bi50KCdyb3V0ZXNfdGl0bGUuc2V0dGluZ3Nfc3RvcmFnZScpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnSW52b2ljZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiAnL3BsYXRmb3JtL3NldHRpbmdzL2ludm9pY2VzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJjaHVua3Mvc2V0dGluZ3MtaW52b2ljZXNcIiAqLyAnLi92aWV3cy9Vc2VyL0ludm9pY2VzJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNBdXRoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpMThuLnQoJ3JvdXRlc190aXRsZS5pbnZvaWNlcycpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnU3Vic2NyaXB0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6ICcvcGxhdGZvcm0vc2V0dGluZ3Mvc3Vic2NyaXB0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJjaHVua3Mvc2V0dGluZ3Mtc3Vic2NyaXB0aW9uXCIgKi8gJy4vdmlld3MvVXNlci9TdWJzY3JpcHRpb24nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlc0F1dGg6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGkxOG4udCgncm91dGVzX3RpdGxlLnN1YnNjcmlwdGlvbicpXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnUGF5bWVudE1ldGhvZHMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogJy9wbGF0Zm9ybS9zZXR0aW5ncy9wYXltZW50LW1ldGhvZHMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy9zZXR0aW5ncy1wYXltZW50LW1ldGhvZHNcIiAqLyAnLi92aWV3cy9Vc2VyL1BheW1lbnRNZXRob2RzJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNBdXRoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpMThuLnQoJ3JvdXRlc190aXRsZS5wYXltZW50X21ldGhvZHMnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0NyZWF0ZVBheW1lbnRNZXRob2QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogJy9wbGF0Zm9ybS9zZXR0aW5ncy9jcmVhdGUtcGF5bWVudC1tZXRob2QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy9zZXR0aW5ncy1jcmVhdGUtcGF5bWVudC1tZXRob2RzXCIgKi8gJy4vdmlld3MvVXNlci9DcmVhdGVQYXltZW50TWV0aG9kJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNBdXRoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnQ3JlYXRlIFBheW1lbnQgTWV0aG9kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdVcGdyYWRlUGxhbicsXG4gICAgICAgICAgICAgICAgcGF0aDogJy9wbGF0Zm9ybS91cGdyYWRlL3BsYW4nLFxuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwiY2h1bmtzL3VwZ3JhZGUtcGxhblwiICovICcuL3ZpZXdzL1VwZ3JhZGUvVXBncmFkZVBsYW4nKSxcbiAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGkxOG4udCgncm91dGVzX3RpdGxlLnVwZ3JhZGVfcGxhbicpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ1VwZ3JhZGVCaWxsaW5nJyxcbiAgICAgICAgICAgICAgICBwYXRoOiAnL3BsYXRmb3JtL3VwZ3JhZGUvYmlsbGluZycsXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJjaHVua3MvdXBncmFkZS1iaWxsaW5nXCIgKi8gJy4vdmlld3MvVXBncmFkZS9VcGdyYWRlQmlsbGluZycpLFxuICAgICAgICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNBdXRoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaTE4bi50KCdyb3V0ZXNfdGl0bGUudXBncmFkZV9iaWxsaW5nJylcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXVxuICAgIH1cbl1cbmNvbnN0IHJvdXRlc01haW50ZW5hbmNlID0gW1xuICAgIHtcbiAgICAgICAgbmFtZTogJ1NldHVwV2l6YXJkJyxcbiAgICAgICAgcGF0aDogJy9pbnN0YWxsJyxcbiAgICAgICAgY29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwiY2h1bmtzL3NldHVwLXdpemFyZFwiICovICcuL3ZpZXdzL1NldHVwV2l6YXJkJyksXG4gICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnUHVyY2hhc2VDb2RlJyxcbiAgICAgICAgICAgICAgICBwYXRoOiAnL3NldHVwLXdpemFyZC9wdXJjaGFzZS1jb2RlJyxcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy9wdXJjaGFzZS1jb2RlXCIgKi8gJy4vdmlld3MvU2V0dXBXaXphcmQvUHVyY2hhc2VDb2RlJyksXG4gICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICByZXF1aXJlc0F1dGg6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdEYXRhYmFzZScsXG4gICAgICAgICAgICAgICAgcGF0aDogJy9zZXR1cC13aXphcmQvZGF0YWJhc2UnLFxuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwiY2h1bmtzL2RhdGFiYXNlXCIgKi8gJy4vdmlld3MvU2V0dXBXaXphcmQvRGF0YWJhc2UnKSxcbiAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0luc3RhbGxhdGlvbkRpc2NsYWltZXInLFxuICAgICAgICAgICAgICAgIHBhdGg6ICcvc2V0dXAtd2l6YXJkL2luc3RhbGxhdGlvbi1kaXNjbGFpbWVyJyxcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy9pbnN0YWxsYXRpb24tZGlzY2xhaW1lclwiICovICcuL3ZpZXdzL1NldHVwV2l6YXJkL0luc3RhbGxhdGlvbkRpc2NsYWltZXInKSxcbiAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ1N1YnNjcmlwdGlvblNlcnZpY2UnLFxuICAgICAgICAgICAgICAgIHBhdGg6ICcvc2V0dXAtd2l6YXJkL3N1YnNjcmlwdGlvbi1zZXJ2aWNlJyxcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy9zdWJzY3JpcHRpb24tc2VydmljZVwiICovICcuL3ZpZXdzL1NldHVwV2l6YXJkL1N1YnNjcmlwdGlvblNlcnZpY2UnKSxcbiAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ1N0cmlwZUNyZWRlbnRpYWxzJyxcbiAgICAgICAgICAgICAgICBwYXRoOiAnL3NldHVwLXdpemFyZC9zdHJpcGUtY3JlZGVudGlhbHMnLFxuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwiY2h1bmtzL3N0cmlwZS1jcmVkZW50aWFsc1wiICovICcuL3ZpZXdzL1NldHVwV2l6YXJkL1N0cmlwZUNyZWRlbnRpYWxzJyksXG4gICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICByZXF1aXJlc0F1dGg6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdCaWxsaW5nc0RldGFpbCcsXG4gICAgICAgICAgICAgICAgcGF0aDogJy9zZXR1cC13aXphcmQvc3RyaXBlLWJpbGxpbmdzJyxcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy9iaWxsaW5ncy1kZXRhaWxcIiAqLyAnLi92aWV3cy9TZXR1cFdpemFyZC9CaWxsaW5nc0RldGFpbCcpLFxuICAgICAgICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNBdXRoOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnU3Vic2NyaXB0aW9uUGxhbnMnLFxuICAgICAgICAgICAgICAgIHBhdGg6ICcvc2V0dXAtd2l6YXJkL3N0cmlwZS1wbGFucycsXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJjaHVua3Mvc3Vic2NyaXB0aW9uLXBsYW5zXCIgKi8gJy4vdmlld3MvU2V0dXBXaXphcmQvU3Vic2NyaXB0aW9uUGxhbnMnKSxcbiAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0Vudmlyb25tZW50U2V0dXAnLFxuICAgICAgICAgICAgICAgIHBhdGg6ICcvc2V0dXAtd2l6YXJkL2Vudmlyb25tZW50LXNldHVwJyxcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy9lbnZpcm9ubWVudC1zZXR1cFwiICovICcuL3ZpZXdzL1NldHVwV2l6YXJkL0Vudmlyb25tZW50U2V0dXAnKSxcbiAgICAgICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0FwcFNldHVwJyxcbiAgICAgICAgICAgICAgICBwYXRoOiAnL3NldHVwLXdpemFyZC9hcHAtc2V0dXAnLFxuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwiY2h1bmtzL2FwcC1zZXR1cFwiICovICcuL3ZpZXdzL1NldHVwV2l6YXJkL0FwcFNldHVwJyksXG4gICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICByZXF1aXJlc0F1dGg6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdBZG1pbkFjY291bnQnLFxuICAgICAgICAgICAgICAgIHBhdGg6ICcvc2V0dXAtd2l6YXJkL2FkbWluLXNldHVwJyxcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy9hZG1pbi1hY2NvdW50XCIgKi8gJy4vdmlld3MvU2V0dXBXaXphcmQvQWRtaW5BY2NvdW50JyksXG4gICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICByZXF1aXJlc0F1dGg6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgfSxcbl1cbmNvbnN0IHJvdXRlc0luZGV4ID0gW1xuICAgIHtcbiAgICAgICAgbmFtZTogJ0hvbWVwYWdlJyxcbiAgICAgICAgcGF0aDogJy8nLFxuICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJjaHVua3MvaG9tZXBhZ2VcIiAqLyAnLi92aWV3cy9Gcm9udHBhZ2UvSG9tZXBhZ2UnKSxcbiAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgcmVxdWlyZXNBdXRoOiBmYWxzZVxuICAgICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgICBuYW1lOiAnRHluYW1pY1BhZ2UnLFxuICAgICAgICBwYXRoOiAnL3BhZ2UvOnNsdWcnLFxuICAgICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJjaHVua3MvZHluYW1pYy1wYWdlXCIgKi8gJy4vdmlld3MvRnJvbnRwYWdlL0R5bmFtaWNQYWdlJyksXG4gICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgIHJlcXVpcmVzQXV0aDogZmFsc2VcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJ0NvbnRhY3RVcycsXG4gICAgICAgIHBhdGg6ICcvY29udGFjdC11cycsXG4gICAgICAgIGNvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICAgIGltcG9ydCgvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImNodW5rcy9jb250YWN0LXVzXCIgKi8gJy4vdmlld3MvRnJvbnRwYWdlL0NvbnRhY3RVcycpLFxuICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICByZXF1aXJlc0F1dGg6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICAgIG5hbWU6ICdOb3RGb3VuZCcsXG4gICAgICAgIHBhdGg6ICcvbm90LWZvdW5kJyxcbiAgICAgICAgY29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgaW1wb3J0KC8qIHdlYnBhY2tDaHVua05hbWU6IFwiY2h1bmtzL25vdC1mb3VuZC1zaGFyZWRcIiAqLyAnLi92aWV3cy9Ob3RGb3VuZCcpLFxuICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICByZXF1aXJlc0F1dGg6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgfSxcbl1cblxuY29uc3Qgcm91dGVyID0gbmV3IFJvdXRlcih7XG4gICAgbW9kZTogJ2hpc3RvcnknLFxuICAgIHJvdXRlczogW1xuICAgICAgICAuLi5yb3V0ZXNPYXNpcyxcbiAgICAgICAgLi4ucm91dGVzTWFpbnRlbmFuY2UsXG4gICAgICAgIC4uLnJvdXRlc1NoYXJlZCxcbiAgICAgICAgLi4ucm91dGVzQWRtaW4sXG4gICAgICAgIC4uLnJvdXRlc0luZGV4LFxuICAgICAgICAuLi5yb3V0ZXNBdXRoLFxuICAgICAgICAuLi5yb3V0ZXNVc2VyLFxuICAgIF0sXG4gICAgc2Nyb2xsQmVoYXZpb3IodG8sIGZyb20sIHNhdmVkUG9zaXRpb24pIHtcbiAgICAgICAgaWYgKHNhdmVkUG9zaXRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBzYXZlZFBvc2l0aW9uXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4ge3g6IDAsIHk6IDB9XG4gICAgICAgIH1cbiAgICB9LFxufSlcblxucm91dGVyLmJlZm9yZUVhY2goKHRvLCBmcm9tLCBuZXh0KSA9PiB7XG5cbiAgICBpZiAodG8ubWF0Y2hlZC5zb21lKHJlY29yZCA9PiByZWNvcmQubWV0YS5yZXF1aXJlc0F1dGgpKSB7XG4gICAgICAgIC8vIHRoaXMgcm91dGUgcmVxdWlyZXMgYXV0aCwgY2hlY2sgaWYgbG9nZ2VkIGluXG4gICAgICAgIC8vIGlmIG5vdCwgcmVkaXJlY3QgdG8gbG9naW4gcGFnZS5cblxuICAgICAgICBsZXQgaXNBdXRoZW50aWNhdGVkID0gc3RvcmUuZ2V0dGVycy5jb25maWdcbiAgICAgICAgICAgID8gc3RvcmUuZ2V0dGVycy5jb25maWcuaXNBdXRoZW50aWNhdGVkXG4gICAgICAgICAgICA6IGNvbmZpZy5pc0F1dGhlbnRpY2F0ZWQ7XG5cbiAgICAgICAgaWYgKCAhIGlzQXV0aGVudGljYXRlZCkge1xuICAgICAgICAgICAgbmV4dCh7XG4gICAgICAgICAgICAgICAgbmFtZTogJ1NpZ25JbicsXG4gICAgICAgICAgICAgICAgcXVlcnk6IHtyZWRpcmVjdDogdG8uZnVsbFBhdGh9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV4dCgpXG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBuZXh0KCkgLy8gbWFrZSBzdXJlIHRvIGFsd2F5cyBjYWxsIG5leHQoKSFcbiAgICB9XG59KVxuXG5leHBvcnQgZGVmYXVsdCByb3V0ZXJcbiIsImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P3JlZi0tNC0wIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVG9hc3RySXRlbS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P3JlZi0tNC0wIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVG9hc3RySXRlbS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCI8dGVtcGxhdGU+XG4gICAgPHRyYW5zaXRpb24gYXBwZWFyIG5hbWU9XCJmYWRlXCI+XG4gICAgICAgIDxsaSBjbGFzcz1cInRvYXN0ci1pdGVtXCIgOmNsYXNzPVwiaXRlbS50eXBlXCIgdi1zaG93PVwiaXNBY3RpdmVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b2FzdHItY29udGVudC13cmFwcGVyXCI+XG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwidG9hc3RyLWljb25cIj5cblx0XHRcdFx0XHQ8Y2hlY2staWNvbiB2LWlmPVwiaXRlbS50eXBlID09ICdzdWNjZXNzJ1wiIHNpemU9XCIyMlwiPjwvY2hlY2staWNvbj5cblx0XHRcdFx0XHQ8eC1pY29uIHYtaWY9XCJpdGVtLnR5cGUgPT0gJ2RhbmdlcidcIiBzaXplPVwiMjJcIj48L3gtaWNvbj5cblx0XHRcdFx0PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b2FzdHItY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRvYXN0ci1kZXNjcmlwdGlvblwiPnt7IGl0ZW0ubWVzc2FnZSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzYmFyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgPC90cmFuc2l0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgICBpbXBvcnQge1hJY29uLCBDaGVja0ljb259IGZyb20gJ3Z1ZS1mZWF0aGVyLWljb25zJ1xuXG4gICAgZXhwb3J0IGRlZmF1bHQge1xuICAgICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgICAgICBYSWNvbixcbiAgICAgICAgICAgIENoZWNrSWNvblxuICAgICAgICB9LFxuICAgICAgICBwcm9wczogWydpdGVtJ10sXG4gICAgICAgIGRhdGEoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGlzQWN0aXZlOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNyZWF0ZWQoKSB7XG4gICAgICAgICAgICB0aGlzLmlzQWN0aXZlID0gMVxuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLmlzQWN0aXZlID0gMCksIDUwMDApXG4gICAgICAgIH1cbiAgICB9XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgc2NvcGVkPlxuICAgIEBpbXBvcnQgJ0Bhc3NldHMvdnVlZmlsZW1hbmFnZXIvX3ZhcmlhYmxlcyc7XG4gICAgQGltcG9ydCAnQGFzc2V0cy92dWVmaWxlbWFuYWdlci9fbWl4aW5zJztcblxuICAgIC5mYWRlLWVudGVyLWFjdGl2ZSxcbiAgICAuZmFkZS1sZWF2ZS1hY3RpdmUge1xuICAgICAgICB0cmFuc2l0aW9uOiAwLjNzIGVhc2U7XG4gICAgfVxuXG4gICAgLmZhZGUtZW50ZXIsXG4gICAgLmZhZGUtbGVhdmUtdG8ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCgxMDAlKSk7XG4gICAgfVxuXG4gICAgLnRvYXN0ci1jb250ZW50LXdyYXBwZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAxNXB4O1xuICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggMzBweCByZ2JhKDAsIDAsIDAsIDAuNyk7XG4gICAgfVxuXG4gICAgLnByb2dyZXNzYmFyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBvcGFjaXR5OiAwLjM1O1xuXG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgICAgICBoZWlnaHQ6IDNweDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJHRoZW1lO1xuICAgICAgICAgICAgYW5pbWF0aW9uOiBwcm9ncmVzc2JhciA1cyBsaW5lYXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIHByb2dyZXNzYmFyIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgIH1cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC50b2FzdHItaXRlbSB7XG4gICAgICAgIG1heC13aWR0aDogMzIwcHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcblxuICAgICAgICAudG9hc3RyLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgxNSk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC50b2FzdHItaWNvbiB7XG4gICAgICAgICAgICBoZWlnaHQ6IDQycHg7XG4gICAgICAgICAgICB3aWR0aDogNDJweDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgICAgfVxuXG4gICAgICAgICYuc3VjY2VzcyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkdGhlbWVfbGlnaHQ7XG5cbiAgICAgICAgICAgIHBvbHlsaW5lIHtcbiAgICAgICAgICAgICAgICBzdHJva2U6ICR0aGVtZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnRvYXN0ci1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICR0aGVtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYuZGFuZ2VyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoJGRhbmdlciwgMC4xKTtcblxuICAgICAgICAgICAgcG9seWxpbmUge1xuICAgICAgICAgICAgICAgIHN0cm9rZTogJGRhbmdlcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnRvYXN0ci1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRkYW5nZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY5MHB4KSB7XG5cbiAgICAgICAgLnRvYXN0ci1pdGVtIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZhZGUtZW50ZXIsXG4gICAgICAgIC5mYWRlLWxlYXZlLXRvIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgxMDAlKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gICAgICAgIC50b2FzdHItaXRlbSB7XG5cbiAgICAgICAgICAgICYuc3VjY2VzcywgJi5kYW5nZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRkYXJrX21vZGVfZm9yZWdyb3VuZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9yZWYtLTQtMCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1RvYXN0cldyYXBwZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9yZWYtLTQtMCEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1RvYXN0cldyYXBwZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiPHRlbXBsYXRlPlxuICAgIDxkaXYgaWQ9XCJ0b2FzdHItd3JhcHBlclwiPlxuICAgICAgICA8VG9hc3RySXRlbSA6aXRlbT1cIml0ZW1cIiB2LWZvcj1cIihpdGVtLCBpKSBpbiBub3RpZmljYXRpb25zXCIgOmtleT1cImlcIi8+XG4gICAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuICAgIGltcG9ydCBUb2FzdHJJdGVtIGZyb20gJ0AvY29tcG9uZW50cy9PdGhlcnMvTm90aWZpY2F0aW9ucy9Ub2FzdHJJdGVtJ1xuICAgIGltcG9ydCB7ZXZlbnRzfSBmcm9tIFwiQC9idXNcIjtcblxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgVG9hc3RySXRlbSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF0YSgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uczogW11cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlZCgpIHtcbiAgICAgICAgICAgIGV2ZW50cy4kb24oJ3RvYXN0ZXInLCBub3RpZmljYXRpb24gPT4gdGhpcy5ub3RpZmljYXRpb25zLnB1c2gobm90aWZpY2F0aW9uKSlcbiAgICAgICAgfVxuICAgIH1cbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBzY29wZWQ+XG4gICAgQGltcG9ydCAnQGFzc2V0cy92dWVmaWxlbWFuYWdlci9fdmFyaWFibGVzJztcbiAgICBAaW1wb3J0ICdAYXNzZXRzL3Z1ZWZpbGVtYW5hZ2VyL19taXhpbnMnO1xuXG4gICAgLnRvYXN0ci1saXN0IHtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDVzIGVhc2U7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG5cbiAgICAudG9hc3RyLWxpc3QtZW50ZXIsXG4gICAgLnRvYXN0ci1saXN0LWxlYXZlLXRvIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTtcbiAgICB9XG5cbiAgICAudG9hc3RyLWxpc3QtbGVhdmUtYWN0aXZlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIH1cblxuICAgICN0b2FzdHItd3JhcHBlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDMwcHg7XG4gICAgICAgIHRvcDogMzBweDtcbiAgICAgICAgei1pbmRleDogMTA7XG4gICAgfVxuXG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2OTBweCkge1xuXG4gICAgICAgICN0b2FzdHItd3JhcHBlciB7XG4gICAgICAgICAgICB0b3A6IGluaXRpYWw7XG4gICAgICAgICAgICByaWdodDogMTVweDtcbiAgICAgICAgICAgIGxlZnQ6IDE1cHg7XG4gICAgICAgICAgICBib3R0b206IDE1cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL1RvYXN0ckl0ZW0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTM2YzM2N2ZlJnNjb3BlZD10cnVlJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RvYXN0ckl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9Ub2FzdHJJdGVtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi9Ub2FzdHJJdGVtLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTM2YzM2N2ZlJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIFwiMzZjMzY3ZmVcIixcbiAgbnVsbFxuICBcbilcblxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJ2YXIgcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiBfYygndHJhbnNpdGlvbicse2F0dHJzOntcImFwcGVhclwiOlwiXCIsXCJuYW1lXCI6XCJmYWRlXCJ9fSxbX2MoJ2xpJyx7ZGlyZWN0aXZlczpbe25hbWU6XCJzaG93XCIscmF3TmFtZTpcInYtc2hvd1wiLHZhbHVlOihfdm0uaXNBY3RpdmUpLGV4cHJlc3Npb246XCJpc0FjdGl2ZVwifV0sc3RhdGljQ2xhc3M6XCJ0b2FzdHItaXRlbVwiLGNsYXNzOl92bS5pdGVtLnR5cGV9LFtfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJ0b2FzdHItY29udGVudC13cmFwcGVyXCJ9LFtfYygnc3Bhbicse3N0YXRpY0NsYXNzOlwidG9hc3RyLWljb25cIn0sWyhfdm0uaXRlbS50eXBlID09ICdzdWNjZXNzJyk/X2MoJ2NoZWNrLWljb24nLHthdHRyczp7XCJzaXplXCI6XCIyMlwifX0pOl92bS5fZSgpLF92bS5fdihcIiBcIiksKF92bS5pdGVtLnR5cGUgPT0gJ2RhbmdlcicpP19jKCd4LWljb24nLHthdHRyczp7XCJzaXplXCI6XCIyMlwifX0pOl92bS5fZSgpXSwxKSxfdm0uX3YoXCIgXCIpLF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcInRvYXN0ci1jb250ZW50XCJ9LFtfYygncCcse3N0YXRpY0NsYXNzOlwidG9hc3RyLWRlc2NyaXB0aW9uXCJ9LFtfdm0uX3YoX3ZtLl9zKF92bS5pdGVtLm1lc3NhZ2UpKV0pXSldKSxfdm0uX3YoXCIgXCIpLF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcInByb2dyZXNzYmFyXCJ9LFtfYygnc3BhbicpXSldKV0pfVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL1RvYXN0cldyYXBwZXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFkNTQwYmViJnNjb3BlZD10cnVlJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL1RvYXN0cldyYXBwZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9Ub2FzdHJXcmFwcGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi9Ub2FzdHJXcmFwcGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTFkNTQwYmViJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIFwiMWQ1NDBiZWJcIixcbiAgbnVsbFxuICBcbilcblxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJ2YXIgcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiBfYygnZGl2Jyx7YXR0cnM6e1wiaWRcIjpcInRvYXN0ci13cmFwcGVyXCJ9fSxfdm0uX2woKF92bS5ub3RpZmljYXRpb25zKSxmdW5jdGlvbihpdGVtLGkpe3JldHVybiBfYygnVG9hc3RySXRlbScse2tleTppLGF0dHJzOntcIml0ZW1cIjppdGVtfX0pfSksMSl9XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSIsIjx0ZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwiY29va2llLXdyYXBwZXJcIiB2LWlmPVwiaXNWaXNpYmxlRGlzY2xhaW1lciAmJiBjb25maWcuaXNTYWFTXCI+XG4gICAgICAgIDxzcGFuIEBjbGljaz1cImNsb3NlRGlzY2xhaW1lclwiIGNsYXNzPVwiY2xvc2UtaWNvblwiPlxuICAgICAgICAgICAgPHgtaWNvbiBzaXplPVwiMTJcIj48L3gtaWNvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8aTE4biBwYXRoPVwiY29va2llX2Rpc2NsYWltZXIuZGVzY3JpcHRpb25cIiB0YWc9XCJwXCI+XG4gICAgICAgICAgICA8cm91dGVyLWxpbmsgOnRvPVwie25hbWU6ICdEeW5hbWljUGFnZScsIHBhcmFtczoge3NsdWc6ICdjb29raWUtcG9saWN5J319XCI+e3sgJHQoJ2Nvb2tpZV9kaXNjbGFpbWVyLmJ1dHRvbicpIH19PC9yb3V0ZXItbGluaz5cbiAgICAgICAgPC9pMThuPlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgICBpbXBvcnQge1hJY29ufSBmcm9tICd2dWUtZmVhdGhlci1pY29ucydcbiAgICBpbXBvcnQgeyBtYXBHZXR0ZXJzIH0gZnJvbSAndnVleCdcblxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgbmFtZTogJ0Nvb2tpZURpc2NsYWltZXInLFxuICAgICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgICAgICBYSWNvblxuICAgICAgICB9LFxuICAgICAgICBjb21wdXRlZDoge1xuICAgICAgICAgICAgLi4ubWFwR2V0dGVycyhbJ2NvbmZpZyddKSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF0YSgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaXNWaXNpYmxlRGlzY2xhaW1lcjogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWV0aG9kczoge1xuICAgICAgICAgICAgY2xvc2VEaXNjbGFpbWVyKCkge1xuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdpc0hpZGRlbkRpc2NsYWltZXInLCAndHJ1ZScpXG5cbiAgICAgICAgICAgICAgICB0aGlzLmlzVmlzaWJsZURpc2NsYWltZXIgPSBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjcmVhdGVkKCkge1xuICAgICAgICAgICAgdGhpcy5pc1Zpc2libGVEaXNjbGFpbWVyID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2lzSGlkZGVuRGlzY2xhaW1lcicpID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiIHNjb3BlZD5cbiAgICBAaW1wb3J0ICdAYXNzZXRzL3Z1ZWZpbGVtYW5hZ2VyL192YXJpYWJsZXMnO1xuICAgIEBpbXBvcnQgJ0Bhc3NldHMvdnVlZmlsZW1hbmFnZXIvX21peGlucyc7XG5cbiAgICAuY29va2llLXdyYXBwZXIge1xuICAgICAgICBAaW5jbHVkZSB3aWRnZXQtY2FyZDtcbiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICBsZWZ0OiAxMTVweDtcbiAgICAgICAgbWF4LXdpZHRoOiAyMjVweDtcbiAgICAgICAgei1pbmRleDogMztcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG5cbiAgICAgICAgLmNsb3NlLWljb24ge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgcmlnaHQ6IC00cHg7XG4gICAgICAgICAgICB0b3A6IC00cHg7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBwYWRkaW5nOiAxMnB4O1xuXG4gICAgICAgICAgICBsaW5lIHtcbiAgICAgICAgICAgICAgICBzdHJva2U6ICR0ZXh0LW11dGVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS42O1xuXG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICR0aGVtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjkwcHgpIHtcbiAgICAgICAgLmNvb2tpZS13cmFwcGVyIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMTVweDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAzMDBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgICAgICAgLmNvb2tpZS13cmFwcGVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRkYXJrX21vZGVfZm9yZWdyb3VuZDtcblxuICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRkYXJrX21vZGVfdGV4dF9wcmltYXJ5O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuY2xvc2UtaWNvbiB7XG5cbiAgICAgICAgICAgICAgICBsaW5lIHtcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiAkZGFya19tb2RlX3RleHRfcHJpbWFyeTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS00LTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Db29raWVEaXNjbGFpbWVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS00LTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Db29raWVEaXNjbGFpbWVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vQ29va2llRGlzY2xhaW1lci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9ODdjZGMxZjgmc2NvcGVkPXRydWUmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQ29va2llRGlzY2xhaW1lci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0Nvb2tpZURpc2NsYWltZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5pbXBvcnQgc3R5bGUwIGZyb20gXCIuL0Nvb2tpZURpc2NsYWltZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9ODdjZGMxZjgmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCI4N2NkYzFmOFwiLFxuICBudWxsXG4gIFxuKVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsInZhciByZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIChfdm0uaXNWaXNpYmxlRGlzY2xhaW1lciAmJiBfdm0uY29uZmlnLmlzU2FhUyk/X2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiY29va2llLXdyYXBwZXJcIn0sW19jKCdzcGFuJyx7c3RhdGljQ2xhc3M6XCJjbG9zZS1pY29uXCIsb246e1wiY2xpY2tcIjpfdm0uY2xvc2VEaXNjbGFpbWVyfX0sW19jKCd4LWljb24nLHthdHRyczp7XCJzaXplXCI6XCIxMlwifX0pXSwxKSxfdm0uX3YoXCIgXCIpLF9jKCdpMThuJyx7YXR0cnM6e1wicGF0aFwiOlwiY29va2llX2Rpc2NsYWltZXIuZGVzY3JpcHRpb25cIixcInRhZ1wiOlwicFwifX0sW19jKCdyb3V0ZXItbGluaycse2F0dHJzOntcInRvXCI6e25hbWU6ICdEeW5hbWljUGFnZScsIHBhcmFtczoge3NsdWc6ICdjb29raWUtcG9saWN5J319fX0sW192bS5fdihfdm0uX3MoX3ZtLiR0KCdjb29raWVfZGlzY2xhaW1lci5idXR0b24nKSkpXSldLDEpXSwxKTpfdm0uX2UoKX1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS00LTAhLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BcHAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9yZWYtLTQtMCEuLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FwcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCI8dGVtcGxhdGU+XG4gICAgPGRpdiBpZD1cInZ1ZWZpbGVtYW5hZ2VyXCIgQGNsaWNrPVwidW5DbGlja1wiIHYtY2xvYWs+XG4gICAgICAgIDxBbGVydCAvPlxuICAgICAgICA8VG9hc3RyV3JhcHBlciAvPlxuXG4gICAgICAgIDxyb3V0ZXItdmlldyAvPlxuXG4gICAgICAgIDxDb29raWVEaXNjbGFpbWVyIC8+XG4gICAgICAgIDxWaWduZXR0ZSAvPlxuICAgIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBUb2FzdHJXcmFwcGVyIGZyb20gJ0AvY29tcG9uZW50cy9PdGhlcnMvTm90aWZpY2F0aW9ucy9Ub2FzdHJXcmFwcGVyJ1xuaW1wb3J0IENvb2tpZURpc2NsYWltZXIgZnJvbSAnQC9jb21wb25lbnRzL090aGVycy9Db29raWVEaXNjbGFpbWVyJ1xuaW1wb3J0IFZpZ25ldHRlIGZyb20gJ0AvY29tcG9uZW50cy9PdGhlcnMvVmlnbmV0dGUnXG5pbXBvcnQgQWxlcnQgZnJvbSAnQC9jb21wb25lbnRzL0ZpbGVzVmlldy9BbGVydCdcbmltcG9ydCB7ZXZlbnRzfSBmcm9tICcuL2J1cydcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIG5hbWU6ICdhcHAnLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgQ29va2llRGlzY2xhaW1lcixcbiAgICAgICAgVG9hc3RyV3JhcHBlcixcbiAgICAgICAgVmlnbmV0dGUsXG4gICAgICAgIEFsZXJ0XG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICAgIHVuQ2xpY2soKSB7XG4gICAgICAgICAgICBldmVudHMuJGVtaXQoJ3VuQ2xpY2snKVxuICAgICAgICB9XG4gICAgfSxcbiAgICBiZWZvcmVNb3VudCgpIHtcblxuICAgICAgICAvLyBTdG9yZSBjb25maWcgdG8gdnVleFxuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoJ0lOSVQnLCB7XG4gICAgICAgICAgICBjb25maWc6IHRoaXMuJHJvb3QuJGRhdGEuY29uZmlnLFxuICAgICAgICAgICAgcm9vdERpcmVjdG9yeToge1xuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuJHQoJ2xvY2F0aW9ucy5ob21lJyksXG4gICAgICAgICAgICAgICAgbG9jYXRpb246ICdiYXNlJyxcbiAgICAgICAgICAgICAgICBpZDogdW5kZWZpbmVkXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgLy8gR2V0IGluc3RhbGxhdGlvbiBzdGF0ZVxuICAgICAgICBsZXQgaW5zdGFsbGF0aW9uID0gdGhpcy4kcm9vdC4kZGF0YS5jb25maWcuaW5zdGFsbGF0aW9uXG5cbiAgICAgICAgLy8gUmVkaXJlY3QgdG8gZGF0YWJhc2UgdmVyaWZ5IGNvZGVcbiAgICAgICAgaWYgKGluc3RhbGxhdGlvbiA9PT0gJ3NldHVwLWRhdGFiYXNlJylcbiAgICAgICAgICAgIHRoaXMuJHJvdXRlci5wdXNoKHtuYW1lOiAnUHVyY2hhc2VDb2RlJ30pXG5cbiAgICAgICAgLy8gUmVkaXJlY3QgdG8gc3RhcnRpbmcgaW5zdGFsbGF0aW9uIHByb2Nlc3NcbiAgICAgICAgaWYgKGluc3RhbGxhdGlvbiA9PT0gJ3NldHVwLWRpc2NsYWltZXInKVxuICAgICAgICAgICAgdGhpcy4kcm91dGVyLnB1c2goe25hbWU6ICdJbnN0YWxsYXRpb25EaXNjbGFpbWVyJ30pXG4gICAgfSxcbiAgICBtb3VudGVkKCkge1xuICAgICAgICB0aGlzLiRjaGVja09TKClcbiAgICB9XG59XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCI+XG5AaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1OdW5pdG86d2dodEAyMDA7MzAwOzQwMDs2MDA7NzAwOzgwMDs5MDAmZGlzcGxheT1zd2FwJyk7XG5AaW1wb3J0ICdAYXNzZXRzL3Z1ZWZpbGVtYW5hZ2VyL192YXJpYWJsZXMnO1xuQGltcG9ydCAnQGFzc2V0cy92dWVmaWxlbWFuYWdlci9fbWl4aW5zJztcblxuW3YtY2xvYWtdLFxuW3YtY2xvYWtdID4gKiB7XG4gICAgZGlzcGxheTogbm9uZVxufVxuXG4qIHtcbiAgICBvdXRsaW5lOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGZvbnQtZmFtaWx5OiAnTnVuaXRvJywgc2Fucy1zZXJpZjtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6ICR0ZXh0O1xufVxuXG4jYXV0aCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuXG4jdnVlZmlsZW1hbmFnZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDtcbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2OTBweCkge1xuXG4gICAgLmlzLXNjYWxlZC1kb3duIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHNjYWxlKDAuOTUpKTtcbiAgICB9XG59XG5cbi8vIERhcmsgbW9kZSBzdXBwb3J0XG5AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG5cbiAgICAqIHtcbiAgICAgICAgY29sb3I6ICRkYXJrX21vZGVfdGV4dF9wcmltYXJ5O1xuICAgIH1cblxuICAgIGJvZHksIGh0bWwge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkZGFya19tb2RlX2JhY2tncm91bmQ7XG4gICAgICAgIGNvbG9yOiAkZGFya19tb2RlX3RleHRfcHJpbWFyeTtcblxuICAgICAgICBpbWcge1xuICAgICAgICAgICAgb3BhY2l0eTogLjk1O1xuICAgICAgICB9XG4gICAgfVxufVxuPC9zdHlsZT5cbiIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vQXBwLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hYTdiOThkNCZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9BcHAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9BcHAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5pbXBvcnQgc3R5bGUwIGZyb20gXCIuL0FwcC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsInZhciByZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCdkaXYnLHthdHRyczp7XCJpZFwiOlwidnVlZmlsZW1hbmFnZXJcIn0sb246e1wiY2xpY2tcIjpfdm0udW5DbGlja319LFtfYygnQWxlcnQnKSxfdm0uX3YoXCIgXCIpLF9jKCdUb2FzdHJXcmFwcGVyJyksX3ZtLl92KFwiIFwiKSxfYygncm91dGVyLXZpZXcnKSxfdm0uX3YoXCIgXCIpLF9jKCdDb29raWVEaXNjbGFpbWVyJyksX3ZtLl92KFwiIFwiKSxfYygnVmlnbmV0dGUnKV0sMSl9XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSIsImltcG9ydCBpMThuIGZyb20gJ0AvaTE4bi9pbmRleCdcbmltcG9ydCBzdG9yZSBmcm9tICcuL3N0b3JlL2luZGV4J1xuaW1wb3J0IHtkZWJvdW5jZSwgaW5jbHVkZXN9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7ZXZlbnRzfSBmcm9tICcuL2J1cydcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcydcbmltcG9ydCByb3V0ZXIgZnJvbSAnQC9yb3V0ZXInXG5cbmNvbnN0IEhlbHBlcnMgPSB7XG4gICAgaW5zdGFsbChWdWUpIHtcblxuICAgICAgICBWdWUucHJvdG90eXBlLiR1cGRhdGVUZXh0ID0gZGVib3VuY2UoZnVuY3Rpb24gKHJvdXRlLCBuYW1lLCB2YWx1ZSkge1xuXG4gICAgICAgICAgICBsZXQgZW5hYmxlRW1wdHlJbnB1dCA9IFsnbWltZXR5cGVzX2JsYWNrbGlzdCcsICdnb29nbGVfYW5hbHl0aWNzJywgJ3VwbG9hZF9saW1pdCddXG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gJycgJiYgIWVuYWJsZUVtcHR5SW5wdXQuaW5jbHVkZXMobmFtZSkpIHJldHVyblxuXG4gICAgICAgICAgICBheGlvcy5wb3N0KHRoaXMuJHN0b3JlLmdldHRlcnMuYXBpICsgcm91dGUsIHtuYW1lLCB2YWx1ZSwgX21ldGhvZDogJ3BhdGNoJ30pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRzLiRlbWl0KCdhbGVydDpvcGVuJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMuJHQoJ3BvcHVwX2Vycm9yLnRpdGxlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLiR0KCdwb3B1cF9lcnJvci5tZXNzYWdlJyksXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgfSwgMTUwKVxuXG4gICAgICAgIFZ1ZS5wcm90b3R5cGUuJHVwZGF0ZUltYWdlID0gZnVuY3Rpb24gKHJvdXRlLCBuYW1lLCBpbWFnZSkge1xuXG4gICAgICAgICAgICAvLyBDcmVhdGUgZm9ybVxuICAgICAgICAgICAgbGV0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKClcblxuICAgICAgICAgICAgLy8gQWRkIGltYWdlIHRvIGZvcm1cbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnbmFtZScsIG5hbWUpXG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQobmFtZSwgaW1hZ2UpXG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ19tZXRob2QnLCAnUEFUQ0gnKVxuXG4gICAgICAgICAgICBheGlvcy5wb3N0KHRoaXMuJHN0b3JlLmdldHRlcnMuYXBpICsgcm91dGUsIGZvcm1EYXRhLCB7XG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ211bHRpcGFydC9mb3JtLWRhdGEnLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRzLiRlbWl0KCdhbGVydDpvcGVuJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMuJHQoJ3BvcHVwX2Vycm9yLnRpdGxlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLiR0KCdwb3B1cF9lcnJvci5tZXNzYWdlJyksXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIFZ1ZS5wcm90b3R5cGUuJHNjcm9sbFRvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndnVlZmlsZW1hbmFnZXInKVxuXG4gICAgICAgICAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLnNjcm9sbFRvcCA9IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIFZ1ZS5wcm90b3R5cGUuJGdldEltYWdlID0gZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZSA/IHRoaXMuJHN0b3JlLmdldHRlcnMuY29uZmlnLmhvc3QgKyAnLycgKyBzb3VyY2UgOiAnJ1xuICAgICAgICB9XG5cbiAgICAgICAgVnVlLnByb3RvdHlwZS4kZ2V0Q3JlZGl0Q2FyZEJyYW5kID0gZnVuY3Rpb24gKGJyYW5kKSB7XG4gICAgICAgICAgICByZXR1cm4gYC9hc3NldHMvaWNvbnMvJHticmFuZH0uc3ZnYFxuICAgICAgICB9XG5cbiAgICAgICAgVnVlLnByb3RvdHlwZS4kZ2V0SW52b2ljZUxpbmsgPSBmdW5jdGlvbiAoY3VzdG9tZXIsIGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gJy9pbnZvaWNlLycgKyBjdXN0b21lciArICcvJyArIGlkXG4gICAgICAgIH1cblxuICAgICAgICBWdWUucHJvdG90eXBlLiRvcGVuSW1hZ2VPbk5ld1RhYiA9IGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgICAgICAgIGxldCB3aW4gPSB3aW5kb3cub3Blbihzb3VyY2UsICdfYmxhbmsnKVxuXG4gICAgICAgICAgICB3aW4uZm9jdXMoKVxuICAgICAgICB9XG5cbiAgICAgICAgVnVlLnByb3RvdHlwZS4kY3JlYXRlRm9sZGVyID0gZnVuY3Rpb24gKGZvbGRlck5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdjcmVhdGVGb2xkZXInLCBmb2xkZXJOYW1lKVxuICAgICAgICB9XG5cbiAgICAgICAgVnVlLnByb3RvdHlwZS4kdXBsb2FkRmlsZXMgPSBhc3luYyBmdW5jdGlvbiAoZmlsZXMpIHtcblxuICAgICAgICAgICAgaWYgKGZpbGVzLmxlbmd0aCA9PSAwKSByZXR1cm5cblxuICAgICAgICAgICAgaWYgKCF0aGlzLiRjaGVja0ZpbGVNaW1ldHlwZShmaWxlcykgfHwgIXRoaXMuJGNoZWNrVXBsb2FkTGltaXQoZmlsZXMpKSByZXR1cm5cblxuICAgICAgICAgICAgLy8gUHVzaCBpdGVtcyB0byBmaWxlIHF1ZXVlXG4gICAgICAgICAgICBbLi4uZmlsZXNdLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoJ0FERF9GSUxFU19UT19RVUVVRScsIHtcbiAgICAgICAgICAgICAgICAgICAgZm9sZGVyX2lkOiBzdG9yZS5nZXR0ZXJzLmN1cnJlbnRGb2xkZXIuaWQgPyBzdG9yZS5nZXR0ZXJzLmN1cnJlbnRGb2xkZXIuaWQgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgZmlsZTogaXRlbSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIFN0YXJ0IHVwbG9hZGluZyBpZiB1cGxvYWRpbmcgcHJvY2VzcyBpc24ndCBydW5uaW5nXG4gICAgICAgICAgICBpZiAodGhpcy4kc3RvcmUuZ2V0dGVycy5maWxlc0luUXVldWVUb3RhbCA9PSAwKVxuICAgICAgICAgICAgICAgIHRoaXMuJGhhbmRsZVVwbG9hZGluZyhzdG9yZS5nZXR0ZXJzLmZpbGVRdWV1ZVswXSlcblxuICAgICAgICAgICAgLy8gSW5jcmVhc2UgdG90YWwgZmlsZXMgaW4gdXBsb2FkIGJhclxuICAgICAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KCdJTkNSRUFTRV9GSUxFU19JTl9RVUVVRVNfVE9UQUwnLCBmaWxlcy5sZW5ndGgpXG4gICAgICAgIH1cblxuICAgICAgICBWdWUucHJvdG90eXBlLiR1cGxvYWRFeHRlcm5hbEZpbGVzID0gYXN5bmMgZnVuY3Rpb24gKGV2ZW50LCBwYXJlbnRfaWQpIHtcblxuICAgICAgICAgICAgLy8gUHJldmVudCBzdWJtaXQgZW1wdHkgZmlsZXNcbiAgICAgICAgICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXIuaXRlbXMubGVuZ3RoID09PSAwKSByZXR1cm5cblxuICAgICAgICAgICAgLy8gUHVzaCBpdGVtcyB0byBmaWxlIHF1ZXVlXG4gICAgICAgICAgICBbLi4uZXZlbnQuZGF0YVRyYW5zZmVyLml0ZW1zXS5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KCdBRERfRklMRVNfVE9fUVVFVUUnLCB7XG4gICAgICAgICAgICAgICAgICAgIGZvbGRlcl9pZDogcGFyZW50X2lkID8gcGFyZW50X2lkIDogJycsXG4gICAgICAgICAgICAgICAgICAgIGZpbGU6IGl0ZW0uZ2V0QXNGaWxlKCksXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBTdGFydCB1cGxvYWRpbmcgaWYgdXBsb2FkaW5nIHByb2Nlc3MgaXNuJ3QgcnVubmluZ1xuICAgICAgICAgICAgaWYgKHRoaXMuJHN0b3JlLmdldHRlcnMuZmlsZXNJblF1ZXVlVG90YWwgPT0gMClcbiAgICAgICAgICAgICAgICB0aGlzLiRoYW5kbGVVcGxvYWRpbmcodGhpcy4kc3RvcmUuZ2V0dGVycy5maWxlUXVldWVbMF0pXG5cbiAgICAgICAgICAgIC8vIEluY3JlYXNlIHRvdGFsIGZpbGVzIGluIHVwbG9hZCBiYXJcbiAgICAgICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdCgnSU5DUkVBU0VfRklMRVNfSU5fUVVFVUVTX1RPVEFMJywgWy4uLmV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtc10ubGVuZ3RoKVxuICAgICAgICB9XG5cbiAgICAgICAgVnVlLnByb3RvdHlwZS4kaGFuZGxlVXBsb2FkaW5nID0gYXN5bmMgZnVuY3Rpb24gKGl0ZW0pIHtcblxuICAgICAgICAgICAgLy8gQ3JlYXRlIGNlaWxcbiAgICAgICAgICAgIGxldCBzaXplID0gc3RvcmUuZ2V0dGVycy5jb25maWcuY2h1bmtTaXplLFxuICAgICAgICAgICAgICAgIGNodW5rc0NlaWwgPSBNYXRoLmNlaWwoaXRlbS5maWxlLnNpemUgLyBzaXplKSxcbiAgICAgICAgICAgICAgICBjaHVua3MgPSBbXVxuXG4gICAgICAgICAgICAvLyBDcmVhdGUgY2h1bmtzXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNodW5rc0NlaWw7IGkrKykge1xuICAgICAgICAgICAgICAgIGNodW5rcy5wdXNoKGl0ZW0uZmlsZS5zbGljZShcbiAgICAgICAgICAgICAgICAgICAgaSAqIHNpemUsIE1hdGgubWluKGkgKiBzaXplICsgc2l6ZSwgaXRlbS5maWxlLnNpemUpLCBpdGVtLmZpbGUudHlwZVxuICAgICAgICAgICAgICAgICkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTZXQgRGF0YVxuICAgICAgICAgICAgbGV0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCksXG4gICAgICAgICAgICAgICAgdXBsb2FkZWRTaXplID0gMCxcbiAgICAgICAgICAgICAgICBpc05vdEdlbmVyYWxFcnJvciA9IHRydWUsXG4gICAgICAgICAgICAgICAgc3RyaXBlZF9uYW1lID0gaXRlbS5maWxlLm5hbWUucmVwbGFjZSgvW15BLVphLXogMC05IFxcLixcXD9cIlwiIUAjXFwkJVxcXiZcXCpcXChcXCktXz1cXCs7Ojw+XFwvXFxcXFxcfFxcfVxce1xcW1xcXWB+XSovZywgJycpLFxuICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gQXJyYXkoMTYpLmZpbGwoMCkubWFwKHggPT4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuY2hhckF0KDIpKS5qb2luKCcnKSArICctJyArIHN0cmlwZWRfbmFtZSArICcucGFydCdcblxuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIGxldCBpc0xhc3QgPSBjaHVua3MubGVuZ3RoID09PSAxLFxuICAgICAgICAgICAgICAgICAgICBjaHVuayA9IGNodW5rcy5zaGlmdCgpLFxuICAgICAgICAgICAgICAgICAgICBhdHRlbXB0cyA9IDBcblxuICAgICAgICAgICAgICAgIC8vIFNldCBmb3JtIGRhdGFcbiAgICAgICAgICAgICAgICBmb3JtRGF0YS5zZXQoJ2ZpbGUnLCBjaHVuaywgZmlsZW5hbWUpO1xuICAgICAgICAgICAgICAgIGZvcm1EYXRhLnNldCgnZm9sZGVyX2lkJywgaXRlbS5mb2xkZXJfaWQpXG4gICAgICAgICAgICAgICAgZm9ybURhdGEuc2V0KCdpc19sYXN0JywgaXNMYXN0KTtcblxuICAgICAgICAgICAgICAgIC8vIFVwbG9hZCBjaHVua3NcbiAgICAgICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHN0b3JlLmRpc3BhdGNoKCd1cGxvYWRGaWxlcycsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm06IGZvcm1EYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZVNpemU6IGl0ZW0uZmlsZS5zaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxVcGxvYWRlZFNpemU6IHVwbG9hZGVkU2l6ZVxuICAgICAgICAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZGVkU2l6ZSA9IHVwbG9hZGVkU2l6ZSArIGNodW5rLnNpemVcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvdW50IGF0dGVtcHRzXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRlbXB0cysrXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNob3cgRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRlbXB0cyA9PT0gMylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRpc1NvbWV0aGluZ1dyb25nKClcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQnJlYWsgdXBsb2FkaW5nIHByb2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChbNTAwLCA0MTVdLmluY2x1ZGVzKGVycm9yLnJlc3BvbnNlLnN0YXR1cykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOb3RHZW5lcmFsRXJyb3IgPSBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH0gd2hpbGUgKGlzTm90R2VuZXJhbEVycm9yICYmIGF0dGVtcHRzICE9PSAwICYmIGF0dGVtcHRzICE9PSAzKVxuXG4gICAgICAgICAgICB9IHdoaWxlIChpc05vdEdlbmVyYWxFcnJvciAmJiBjaHVua3MubGVuZ3RoICE9PSAwKVxuICAgICAgICB9XG5cbiAgICAgICAgVnVlLnByb3RvdHlwZS4kZG93bmxvYWRGaWxlID0gZnVuY3Rpb24gKHVybCwgZmlsZW5hbWUpIHtcbiAgICAgICAgICAgIHZhciBhbmNob3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJylcblxuICAgICAgICAgICAgYW5jaG9yLmhyZWYgPSB1cmxcblxuICAgICAgICAgICAgYW5jaG9yLmRvd25sb2FkID0gZmlsZW5hbWVcblxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhbmNob3IpXG5cbiAgICAgICAgICAgIGFuY2hvci5jbGljaygpXG4gICAgICAgIH1cblxuICAgICAgICBWdWUucHJvdG90eXBlLiRjbG9zZVBvcHVwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZXZlbnRzLiRlbWl0KCdwb3B1cDpjbG9zZScpXG4gICAgICAgIH1cblxuICAgICAgICBWdWUucHJvdG90eXBlLiRpc1RoaXNSb3V0ZSA9IGZ1bmN0aW9uIChyb3V0ZSwgbG9jYXRpb25zKSB7XG5cbiAgICAgICAgICAgIHJldHVybiBpbmNsdWRlcyhsb2NhdGlvbnMsIHJvdXRlLm5hbWUpXG4gICAgICAgIH1cblxuICAgICAgICBWdWUucHJvdG90eXBlLiRpc1RoaXNMb2NhdGlvbiA9IGZ1bmN0aW9uIChsb2NhdGlvbikge1xuXG4gICAgICAgICAgICAvLyBHZXQgY3VycmVudCBsb2NhdGlvblxuICAgICAgICAgICAgbGV0IGN1cnJlbnRMb2NhdGlvbiA9IHN0b3JlLmdldHRlcnMuY3VycmVudEZvbGRlciAmJiBzdG9yZS5nZXR0ZXJzLmN1cnJlbnRGb2xkZXIubG9jYXRpb24gPyBzdG9yZS5nZXR0ZXJzLmN1cnJlbnRGb2xkZXIubG9jYXRpb24gOiB1bmRlZmluZWRcblxuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdHlwZSBpcyBvYmplY3RcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbG9jYXRpb24gPT09ICdPYmplY3QnIHx8IGxvY2F0aW9uIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluY2x1ZGVzKGxvY2F0aW9uLCBjdXJyZW50TG9jYXRpb24pXG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRMb2NhdGlvbiA9PT0gbG9jYXRpb25cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIFZ1ZS5wcm90b3R5cGUuJGNoZWNrUGVybWlzc2lvbiA9IGZ1bmN0aW9uICh0eXBlKSB7XG5cbiAgICAgICAgICAgIGxldCBjdXJyZW50UGVybWlzc2lvbiA9IHN0b3JlLmdldHRlcnMucGVybWlzc2lvblxuXG4gICAgICAgICAgICAvLyBDaGVjayBpZiB0eXBlIGlzIG9iamVjdFxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0eXBlID09PSAnT2JqZWN0JyB8fCB0eXBlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluY2x1ZGVzKHR5cGUsIGN1cnJlbnRQZXJtaXNzaW9uKVxuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50UGVybWlzc2lvbiA9PT0gdHlwZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgVnVlLnByb3RvdHlwZS4kaXNNb2JpbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjb25zdCB0b01hdGNoID0gW1xuICAgICAgICAgICAgICAgIC9BbmRyb2lkL2ksXG4gICAgICAgICAgICAgICAgL3dlYk9TL2ksXG4gICAgICAgICAgICAgICAgL2lQaG9uZS9pLFxuICAgICAgICAgICAgICAgIC9pUGFkL2ksXG4gICAgICAgICAgICAgICAgL2lQb2QvaSxcbiAgICAgICAgICAgICAgICAvQmxhY2tCZXJyeS9pLFxuICAgICAgICAgICAgICAgIC9XaW5kb3dzIFBob25lL2lcbiAgICAgICAgICAgIF1cblxuICAgICAgICAgICAgcmV0dXJuIHRvTWF0Y2guc29tZSh0b01hdGNoSXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2godG9NYXRjaEl0ZW0pXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgVnVlLnByb3RvdHlwZS4kaXNNaW5pbWFsU2NhbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsZXQgc2l6ZVR5cGUgPSBzdG9yZS5nZXR0ZXJzLmZpbGVzVmlld1dpZHRoXG5cbiAgICAgICAgICAgIHJldHVybiBzaXplVHlwZSA9PT0gJ21pbmltYWwtc2NhbGUnXG4gICAgICAgIH1cblxuICAgICAgICBWdWUucHJvdG90eXBlLiRpc0NvbXBhY3RTY2FsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGxldCBzaXplVHlwZSA9IHN0b3JlLmdldHRlcnMuZmlsZXNWaWV3V2lkdGhcblxuICAgICAgICAgICAgcmV0dXJuIHNpemVUeXBlID09PSAnY29tcGFjdC1zY2FsZSdcbiAgICAgICAgfVxuXG4gICAgICAgIFZ1ZS5wcm90b3R5cGUuJGlzRnVsbFNjYWxlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgbGV0IHNpemVUeXBlID0gc3RvcmUuZ2V0dGVycy5maWxlc1ZpZXdXaWR0aFxuXG4gICAgICAgICAgICByZXR1cm4gc2l6ZVR5cGUgPT09ICdmdWxsLXNjYWxlJ1xuICAgICAgICB9XG5cbiAgICAgICAgVnVlLnByb3RvdHlwZS4kaXNTb21ldGhpbmdXcm9uZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGV2ZW50cy4kZW1pdCgnYWxlcnQ6b3BlbicsIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaTE4bi50KCdwb3B1cF9lcnJvci50aXRsZScpLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGkxOG4udCgncG9wdXBfZXJyb3IubWVzc2FnZScpXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgVnVlLnByb3RvdHlwZS4kY2hlY2tGaWxlTWltZXR5cGUgPSBmdW5jdGlvbiAoZmlsZXMpIHtcbiAgICAgICAgICAgIGxldCB2YWxpZGF0ZWQgPSB0cnVlXG4gICAgICAgICAgICBsZXQgbWltZXR5cGVzQmxhY2tsaXN0ID0gc3RvcmUuZ2V0dGVycy5jb25maWcubWltZXR5cGVzQmxhY2tsaXN0XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgZmlsZVR5cGUgPSBmaWxlc1tpXS50eXBlLnNwbGl0KCcvJylcblxuICAgICAgICAgICAgICAgIGlmICghZmlsZVR5cGVbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsZVR5cGVbMV0gPSBfLmxhc3QoZmlsZXNbaV0ubmFtZS5zcGxpdCgnLicpKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChtaW1ldHlwZXNCbGFja2xpc3QuaW5jbHVkZXMoZmlsZVR5cGVbMV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlZCA9IGZhbHNlXG5cbiAgICAgICAgICAgICAgICAgICAgZXZlbnRzLiRlbWl0KCdhbGVydDpvcGVuJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW1vamk6ICfwn5is8J+YrPCfmKwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGkxOG4udCgncG9wdXBfbWltZXR5cGVzX2JsYWNrbGlzdC50aXRsZScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogaTE4bi50KCdwb3B1cF9taW1ldHlwZXNfYmxhY2tsaXN0Lm1lc3NhZ2UnLCB7bWltZXR5cGU6IGZpbGVUeXBlWzFdfSlcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVkXG4gICAgICAgIH1cblxuICAgICAgICBWdWUucHJvdG90eXBlLiRjaGVja1VwbG9hZExpbWl0ID0gZnVuY3Rpb24gKGZpbGVzKSB7XG4gICAgICAgICAgICBsZXQgdXBsb2FkTGltaXQgPSBzdG9yZS5nZXR0ZXJzLmNvbmZpZy51cGxvYWRMaW1pdFxuICAgICAgICAgICAgbGV0IHZhbGlkYXRlID0gdHJ1ZVxuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHVwbG9hZExpbWl0ICE9IDAgJiYgZmlsZXNbaV0uc2l6ZSA+IHVwbG9hZExpbWl0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRzLiRlbWl0KCdhbGVydDpvcGVuJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW1vamk6ICfwn5if8J+Yn/CfmJ8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGkxOG4udCgncG9wdXBfdXBsb2FkX2xpbWl0LnRpdGxlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBpMThuLnQoJ3BvcHVwX3VwbG9hZF9saW1pdC5tZXNzYWdlJywge3VwbG9hZExpbWl0OiBzdG9yZS5nZXR0ZXJzLmNvbmZpZy51cGxvYWRMaW1pdEZvcm1hdHRlZH0pLFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZVxuICAgICAgICB9XG5cbiAgICAgICAgVnVlLnByb3RvdHlwZS4kZ2V0RGF0YUJ5TG9jYXRpb24gPSBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgIGxldCBmb2xkZXIgPSBzdG9yZS5nZXR0ZXJzLmN1cnJlbnRGb2xkZXJcblxuICAgICAgICAgICAgbGV0IGFjdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgJ2Jhc2UnOiBbJ2dldEZvbGRlcicsIFt7Zm9sZGVyOiBmb2xkZXIsIGJhY2s6IHRydWUsIGluaXQ6IGZhbHNlLCBzb3J0aW5nOiB0cnVlfV1dLFxuICAgICAgICAgICAgICAgICdwdWJsaWMnOiBbJ2Jyb3dzZVNoYXJlZCcsIFt7Zm9sZGVyOiBmb2xkZXIsIGJhY2s6IHRydWUsIGluaXQ6IGZhbHNlLCBzb3J0aW5nOiB0cnVlfV1dLFxuICAgICAgICAgICAgICAgICd0cmFzaCc6IFsnZ2V0Rm9sZGVyJywgW3tmb2xkZXI6IGZvbGRlciwgYmFjazogdHJ1ZSwgaW5pdDogZmFsc2UsIHNvcnRpbmc6IHRydWV9XV0sXG4gICAgICAgICAgICAgICAgJ3BhcnRpY2lwYW50X3VwbG9hZHMnOiBbJ2dldFBhcnRpY2lwYW50VXBsb2FkcyddLFxuICAgICAgICAgICAgICAgICd0cmFzaC1yb290JzogWydnZXRUcmFzaCddLFxuICAgICAgICAgICAgICAgICdsYXRlc3QnOiBbJ2dldExhdGVzdCddLFxuICAgICAgICAgICAgICAgICdzaGFyZWQnOiBbJ2dldFNoYXJlZCddXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKC4uLmFjdGlvbnNbZm9sZGVyLmxvY2F0aW9uXSlcblxuICAgICAgICAgICAgLy8gR2V0IGRhcmEgb2YgdXNlciB3aXRoIGZhdm91cml0ZXMgdHJlZVxuICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2dldEFwcERhdGEnKVxuXG4gICAgICAgICAgICAvLyBHZXQgZGF0YSBvZiBOYXZpZ2F0b3IgdHJlZVxuICAgICAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2dldEZvbGRlclRyZWUnKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGV0ZWN0IHdpbmRvd3NcbiAgICAgICAgVnVlLnByb3RvdHlwZS4kY2hlY2tPUyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ1dpbmRvd3MnKSAhPSAtMSkge1xuICAgICAgICAgICAgICAgIGxldCBib2R5ID0gZG9jdW1lbnQuYm9keVxuICAgICAgICAgICAgICAgIGJvZHkuY2xhc3NMaXN0LmFkZCgnd2luZG93cycpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBpZiBkZXZpY2UgaXMgQXBwbGVcbiAgICAgICAgVnVlLnByb3RvdHlwZS4kaXNBcHBsZSA9IGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgY29uc3QgdG9NYXRjaCA9IFtcbiAgICAgICAgICAgICAgICAvaVBob25lL2ksXG4gICAgICAgICAgICAgICAgL2lQYWQvaSxcbiAgICAgICAgICAgICAgICAvaVBvZC9pLFxuICAgICAgICAgICAgICAgIC9pT1MvaSxcbiAgICAgICAgICAgICAgICAvbWFjT1MvaSxcbiAgICAgICAgICAgICAgICAvTWFjaW50b3NoL2lcbiAgICAgICAgICAgIF1cblxuICAgICAgICAgICAgcmV0dXJuIHRvTWF0Y2guc29tZSh0b01hdGNoSXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2godG9NYXRjaEl0ZW0pXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBIZWxwZXJzXG4iLCJ2YXIgcHJlZml4ID0gXCJmYXNcIjtcbnZhciBmYUFkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FkJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNjQxXCIsIFwiTTE1Ny41MiAyNzJoMzYuOTZMMTc2IDIxOC43OCAxNTcuNTIgMjcyek0zNTIgMjU2Yy0xMy4yMyAwLTI0IDEwLjc3LTI0IDI0czEwLjc3IDI0IDI0IDI0IDI0LTEwLjc3IDI0LTI0LTEwLjc3LTI0LTI0LTI0ek00NjQgNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2Mjg4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTI1MC41OCAzNTJoLTE2Ljk0Yy02LjgxIDAtMTIuODgtNC4zMi0xNS4xMi0xMC43NUwyMTEuMTUgMzIwaC03MC4yOWwtNy4zOCAyMS4yNUExNiAxNiAwIDAgMSAxMTguMzYgMzUyaC0xNi45NGMtMTEuMDEgMC0xOC43My0xMC44NS0xNS4xMi0yMS4yNUwxNDAgMTc2LjEyQTIzLjk5NSAyMy45OTUgMCAwIDEgMTYyLjY3IDE2MGgyNi42NkEyMy45OSAyMy45OSAwIDAgMSAyMTIgMTc2LjEzbDUzLjY5IDE1NC42MmMzLjYxIDEwLjQtNC4xMSAyMS4yNS0xNS4xMSAyMS4yNXpNNDI0IDMzNmMwIDguODQtNy4xNiAxNi0xNiAxNmgtMTZjLTQuODUgMC05LjA0LTIuMjctMTEuOTgtNS42OC04LjYyIDMuNjYtMTguMDkgNS42OC0yOC4wMiA1LjY4LTM5LjcgMC03Mi0zMi4zLTcyLTcyczMyLjMtNzIgNzItNzJjOC40NiAwIDE2LjQ2IDEuNzMgMjQgNC40MlYxNzZjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMTZjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MTYwelwiXVxufTtcbnZhciBmYUFkZHJlc3NCb29rID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FkZHJlc3MtYm9vaycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjJiOVwiLCBcIk00MzYgMTYwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0yMFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDMyMGMyNi41IDAgNDgtMjEuNSA0OC00OHYtNDhoMjBjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTIwdi02NGgyMGM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtMjB2LTY0aDIwem0tMjI4LTMyYzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHptMTEyIDIzNi44YzAgMTAuNi0xMCAxOS4yLTIyLjQgMTkuMkgxMTguNEMxMDYgMzg0IDk2IDM3NS40IDk2IDM2NC44di0xOS4yYzAtMzEuOCAzMC4xLTU3LjYgNjcuMi01Ny42aDVjMTIuMyA1LjEgMjUuNyA4IDM5LjggOHMyNy42LTIuOSAzOS44LThoNWMzNy4xIDAgNjcuMiAyNS44IDY3LjIgNTcuNnYxOS4yelwiXVxufTtcbnZhciBmYUFkZHJlc3NDYXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FkZHJlc3MtY2FyZCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjJiYlwiLCBcIk01MjggMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tMzUyIDk2YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHptMTEyIDIzNi44YzAgMTAuNi0xMCAxOS4yLTIyLjQgMTkuMkg4Ni40Qzc0IDM4NCA2NCAzNzUuNCA2NCAzNjQuOHYtMTkuMmMwLTMxLjggMzAuMS01Ny42IDY3LjItNTcuNmg1YzEyLjMgNS4xIDI1LjcgOCAzOS44IDhzMjcuNi0yLjkgMzkuOC04aDVjMzcuMSAwIDY3LjIgMjUuOCA2Ny4yIDU3LjZ2MTkuMnpNNTEyIDMxMmMwIDQuNC0zLjYgOC04IDhIMzYwYy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxNDRjNC40IDAgOCAzLjYgOCA4djE2em0wLTY0YzAgNC40LTMuNiA4LTggOEgzNjBjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDE0NGM0LjQgMCA4IDMuNiA4IDh2MTZ6bTAtNjRjMCA0LjQtMy42IDgtOCA4SDM2MGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTQ0YzQuNCAwIDggMy42IDggOHYxNnpcIl1cbn07XG52YXIgZmFBZGp1c3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYWRqdXN0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDQyXCIsIFwiTTggMjU2YzAgMTM2Ljk2NiAxMTEuMDMzIDI0OCAyNDggMjQ4czI0OC0xMTEuMDM0IDI0OC0yNDhTMzkyLjk2NiA4IDI1NiA4IDggMTE5LjAzMyA4IDI1NnptMjQ4IDE4NFY3MmMxMDEuNzA1IDAgMTg0IDgyLjMxMSAxODQgMTg0IDAgMTAxLjcwNS04Mi4zMTEgMTg0LTE4NCAxODR6XCJdXG59O1xudmFyIGZhQWlyRnJlc2hlbmVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fpci1mcmVzaGVuZXInLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY1ZDBcIiwgXCJNMzc4Ljk0IDMyMS40MUwyODQuNyAyMjRoNDkuMjJjMTUuMyAwIDIzLjY2LTE2LjYgMTMuODYtMjcuNTNMMjM0LjQ1IDY5Ljk2YzMuNDMtNi42MSA1LjU1LTE0IDUuNTUtMjEuOTYgMC0yNi41MS0yMS40OS00OC00OC00OHMtNDggMjEuNDktNDggNDhjMCA3Ljk2IDIuMTIgMTUuMzUgNS41NSAyMS45NkwzNi4yMiAxOTYuNDdDMjYuNDIgMjA3LjQgMzQuNzggMjI0IDUwLjA4IDIyNEg5OS4zTDUuMDYgMzIxLjQxQy02LjY5IDMzMy41NiAzLjM0IDM1MiAyMS43IDM1MkgxNjB2MzJINDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djk2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDI4OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtOTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMjI0di0zMmgxMzguM2MxOC4zNiAwIDI4LjM5LTE4LjQ0IDE2LjY0LTMwLjU5ek0xOTIgMzEuOThjOC44NSAwIDE2LjAyIDcuMTcgMTYuMDIgMTYuMDIgMCA4Ljg0LTcuMTcgMTYuMDItMTYuMDIgMTYuMDJTMTc1Ljk4IDU2Ljg0IDE3NS45OCA0OGMwLTguODUgNy4xNy0xNi4wMiAxNi4wMi0xNi4wMnpNMzA0IDQzMnYzMkg4MHYtMzJoMjI0elwiXVxufTtcbnZhciBmYUFsaWduQ2VudGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FsaWduLWNlbnRlcicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjAzN1wiLCBcIk00MzIgMTYwSDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgMjU2SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6TTEwOC4xIDk2aDIzMS44MUExMi4wOSAxMi4wOSAwIDAgMCAzNTIgODMuOVY0NC4wOUExMi4wOSAxMi4wOSAwIDAgMCAzMzkuOTEgMzJIMTA4LjFBMTIuMDkgMTIuMDkgMCAwIDAgOTYgNDQuMDlWODMuOUExMi4xIDEyLjEgMCAwIDAgMTA4LjEgOTZ6bTIzMS44MSAyNTZBMTIuMDkgMTIuMDkgMCAwIDAgMzUyIDMzOS45di0zOS44MUExMi4wOSAxMi4wOSAwIDAgMCAzMzkuOTEgMjg4SDEwOC4xQTEyLjA5IDEyLjA5IDAgMCAwIDk2IDMwMC4wOXYzOS44MWExMi4xIDEyLjEgMCAwIDAgMTIuMSAxMi4xelwiXVxufTtcbnZhciBmYUFsaWduSnVzdGlmeSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhbGlnbi1qdXN0aWZ5JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDM5XCIsIFwiTTQzMiA0MTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xMjhIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xMjhIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xMjhIMTZBMTYgMTYgMCAwIDAgMCA0OHYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJdXG59O1xudmFyIGZhQWxpZ25MZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FsaWduLWxlZnQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwMzZcIiwgXCJNMTIuODMgMzUyaDI2Mi4zNEExMi44MiAxMi44MiAwIDAgMCAyODggMzM5LjE3di0zOC4zNEExMi44MiAxMi44MiAwIDAgMCAyNzUuMTcgMjg4SDEyLjgzQTEyLjgyIDEyLjgyIDAgMCAwIDAgMzAwLjgzdjM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDEyLjgzIDM1MnptMC0yNTZoMjYyLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDI4OCA4My4xN1Y0NC44M0ExMi44MiAxMi44MiAwIDAgMCAyNzUuMTcgMzJIMTIuODNBMTIuODIgMTIuODIgMCAwIDAgMCA0NC44M3YzOC4zNEExMi44MiAxMi44MiAwIDAgMCAxMi44MyA5NnpNNDMyIDE2MEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wIDI1NkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwiXVxufTtcbnZhciBmYUFsaWduUmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYWxpZ24tcmlnaHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwMzhcIiwgXCJNMTYgMjI0aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZ6bTQxNiAxOTJIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMy4xNy0zODRIMTcyLjgzQTEyLjgyIDEyLjgyIDAgMCAwIDE2MCA0NC44M3YzOC4zNEExMi44MiAxMi44MiAwIDAgMCAxNzIuODMgOTZoMjYyLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQ0OCA4My4xN1Y0NC44M0ExMi44MiAxMi44MiAwIDAgMCA0MzUuMTcgMzJ6bTAgMjU2SDE3Mi44M0ExMi44MiAxMi44MiAwIDAgMCAxNjAgMzAwLjgzdjM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDE3Mi44MyAzNTJoMjYyLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQ0OCAzMzkuMTd2LTM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQzNS4xNyAyODh6XCJdXG59O1xudmFyIGZhQWxsZXJnaWVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FsbGVyZ2llcycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjQ2MVwiLCBcIk00MTYgMTEyYy0xNy42IDAtMzIgMTQuNC0zMiAzMnY3MmMwIDQuNC0zLjYgOC04IDhoLTE2Yy00LjQgMC04LTMuNi04LThWNjRjMC0xNy42LTE0LjQtMzItMzItMzJzLTMyIDE0LjQtMzIgMzJ2MTUyYzAgNC40LTMuNiA4LTggOGgtMTZjLTQuNCAwLTgtMy42LTgtOFYzMmMwLTE3LjYtMTQuNC0zMi0zMi0zMnMtMzIgMTQuNC0zMiAzMnYxODRjMCA0LjQtMy42IDgtOCA4aC0xNmMtNC40IDAtOC0zLjYtOC04VjY0YzAtMTcuNi0xNC40LTMyLTMyLTMyUzk2IDQ2LjQgOTYgNjR2MjQxbC0yMy42LTMyLjVjLTEzLTE3LjktMzgtMjEuOC01NS45LTguOHMtMjEuOCAzOC04LjggNTUuOWwxMjUuNiAxNzIuN2M5IDEyLjQgMjMuNSAxOS44IDM4LjggMTkuOGgxOTcuNmMyMi4zIDAgNDEuNi0xNS4zIDQ2LjctMzdsMjYuNS0xMTIuN2MzLjItMTMuNyA0LjktMjguMyA1LjEtNDIuM1YxNDRjMC0xNy42LTE0LjQtMzItMzItMzJ6TTE3NiA0MTZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnptMC05NmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em02NCAxMjhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnptMC05NmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em02NCAzMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em0zMiA2NGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em0zMi0xMjhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnpcIl1cbn07XG52YXIgZmFBbWJ1bGFuY2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYW1idWxhbmNlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMGY5XCIsIFwiTTYyNCAzNTJoLTE2VjI0My45YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlMNDk0IDExMC4xYy05LTktMjEuMi0xNC4xLTMzLjktMTQuMUg0MTZWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djMyMGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgxNmMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2aDEyOGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2aDQ4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2ek0xNjAgNDY0Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHptMTQ0LTI0OGMwIDQuNC0zLjYgOC04IDhoLTU2djU2YzAgNC40LTMuNiA4LTggOGgtNDhjLTQuNCAwLTgtMy42LTgtOHYtNTZoLTU2Yy00LjQgMC04LTMuNi04LTh2LTQ4YzAtNC40IDMuNi04IDgtOGg1NnYtNTZjMC00LjQgMy42LTggOC04aDQ4YzQuNCAwIDggMy42IDggOHY1Nmg1NmM0LjQgMCA4IDMuNiA4IDh2NDh6bTE3NiAyNDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4em04MC0yMDhINDE2VjE0NGg0NC4xbDk5LjkgOTkuOVYyNTZ6XCJdXG59O1xudmFyIGZhQW1lcmljYW5TaWduTGFuZ3VhZ2VJbnRlcnByZXRpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYW1lcmljYW4tc2lnbi1sYW5ndWFnZS1pbnRlcnByZXRpbmcnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYyYTNcIiwgXCJNMjkwLjU0NyAxODkuMDM5Yy0yMC4yOTUtMTAuMTQ5LTQ0LjE0Ny0xMS4xOTktNjQuNzM5LTMuODkgNDIuNjA2IDAgNzEuMjA4IDIwLjQ3NSA4NS41NzggNTAuNTc2IDguNTc2IDE3Ljg5OS01LjE0OCAzOC4wNzEtMjMuNjE3IDM4LjA3MSAxOC40MjkgMCAzMi4yMTEgMjAuMTM2IDIzLjYxNyAzOC4wNzEtMTQuNzI1IDMwLjg0Ni00Ni4xMjMgNTAuODU0LTgwLjI5OCA1MC44NTQtLjU1NyAwLTk0LjQ3MS04LjYxNS05NC40NzEtOC42MTVsLTY2LjQwNiAzMy4zNDdjLTkuMzg0IDQuNjkzLTE5LjgxNS4zNzktMjMuODk1LTcuNzgxTDEuODYgMjkwLjc0N2MtNC4xNjctOC42MTUtMS4xMTEtMTguODk3IDYuOTQ2LTIzLjYyMWw1OC4wNzItMzMuMDY5TDEwOCAxNTkuODYxYzYuMzktNTcuMjQ1IDM0LjczMS0xMDkuNzY3IDc5Ljc0My0xNDYuNzI2IDExLjM5MS05LjQ0OCAyOC4zNDEtNy43ODEgMzcuNTEgMy42MTMgOS40NDYgMTEuMzk0IDcuNzggMjguMDY3LTMuNjEyIDM3LjUxNi0xMi41MDMgMTAuNTU5LTIzLjYxOCAyMi41MDktMzIuNTA5IDM1LjU3IDIxLjY3Mi0xNC43MjkgNDYuNjc5LTI0LjczMiA3NC4xODYtMjguMDY3IDE0LjcyNS0xLjk0NSAyOC4wNjMgOC4zMzYgMjkuNzMgMjMuMDY1IDEuOTQ1IDE0LjcyOC04LjMzNiAyOC4wNjctMjMuMDYyIDI5LjczNC0xNi4xMTYgMS45NDUtMzEuMTIgNy41MDMtNDQuMTc4IDE1LjI4NCAyNi4xMTQtNS43MTMgNTguNzEyLTMuMTM4IDg4LjA3OSAxMS4xMTUgMTMuMzM2IDYuNjY5IDE4Ljg5MyAyMi41MDkgMTIuMjI0IDM1Ljg0OC02LjM4OSAxMy4wNi0yMi41MDQgMTguNjE3LTM1LjU2NCAxMi4yMjZ6bS0yNy4yMjkgNjkuNDcyYy02LjExMi0xMi41MDUtMTguMzM4LTIwLjI4Ni0zMi4yMzEtMjAuMjg2YTM1LjQ2IDM1LjQ2IDAgMCAwLTM1LjU2NSAzNS41N2MwIDIxLjQyOCAxNy44MDggMzUuNTcgMzUuNTY1IDM1LjU3IDEzLjg5MyAwIDI2LjExOS03Ljc4MSAzMi4yMzEtMjAuMjg2IDQuNDQ2LTkuNDQ5IDEzLjYxNC0xNS4wMDYgMjMuMzM5LTE1LjI4NC05LjcyNS0uMjc3LTE4Ljg5My01LjgzNS0yMy4zMzktMTUuMjg0em0zNzQuODIxLTM3LjIzN2M0LjE2OCA4LjYxNSAxLjExMSAxOC44OTctNi45NDYgMjMuNjIxbC01OC4wNzEgMzMuMDY5TDUzMiAzNTIuMTZjLTYuMzkgNTcuMjQ1LTM0LjczMSAxMDkuNzY3LTc5Ljc0MyAxNDYuNzI2LTEwLjkzMiA5LjExMi0yNy43OTkgOC4xNDQtMzcuNTEtMy42MTMtOS40NDYtMTEuMzk0LTcuNzgtMjguMDY3IDMuNjEzLTM3LjUxNiAxMi41MDMtMTAuNTU5IDIzLjYxNy0yMi41MDkgMzIuNTA4LTM1LjU3LTIxLjY3MiAxNC43MjktNDYuNjc5IDI0LjczMi03NC4xODYgMjguMDY3LTEwLjAyMSAyLjUwNi0yNy41NTItNS42NDMtMjkuNzMtMjMuMDY1LTEuOTQ1LTE0LjcyOCA4LjMzNi0yOC4wNjcgMjMuMDYyLTI5LjczNCAxNi4xMTYtMS45NDYgMzEuMTItNy41MDMgNDQuMTc4LTE1LjI4NC0yNi4xMTQgNS43MTMtNTguNzEyIDMuMTM4LTg4LjA3OS0xMS4xMTUtMTMuMzM2LTYuNjY5LTE4Ljg5My0yMi41MDktMTIuMjI0LTM1Ljg0OCA2LjM4OS0xMy4wNjEgMjIuNTA1LTE4LjYxOSAzNS41NjUtMTIuMjI3IDIwLjI5NSAxMC4xNDkgNDQuMTQ3IDExLjE5OSA2NC43MzkgMy44OS00Mi42MDYgMC03MS4yMDgtMjAuNDc1LTg1LjU3OC01MC41NzYtOC41NzYtMTcuODk5IDUuMTQ4LTM4LjA3MSAyMy42MTctMzguMDcxLTE4LjQyOSAwLTMyLjIxMS0yMC4xMzYtMjMuNjE3LTM4LjA3MSAxNC4wMzMtMjkuMzk2IDQ0LjAzOS01MC44ODcgODEuOTY2LTUwLjg1NGw5Mi44MDMgOC42MTUgNjYuNDA2LTMzLjM0N2M5LjQwOC00LjcwNCAxOS44MjgtLjM1NCAyMy44OTQgNy43ODFsNDQuNDU1IDg4LjkyNnptLTIyOS4yMjctMTguNjE4Yy0xMy44OTMgMC0yNi4xMTkgNy43ODEtMzIuMjMxIDIwLjI4Ni00LjQ0NiA5LjQ0OS0xMy42MTQgMTUuMDA2LTIzLjMzOSAxNS4yODQgOS43MjUuMjc4IDE4Ljg5MyA1LjgzNiAyMy4zMzkgMTUuMjg0IDYuMTEyIDEyLjUwNSAxOC4zMzggMjAuMjg2IDMyLjIzMSAyMC4yODZhMzUuNDYgMzUuNDYgMCAwIDAgMzUuNTY1LTM1LjU3YzAtMjEuNDI5LTE3LjgwOC0zNS41Ny0zNS41NjUtMzUuNTd6XCJdXG59O1xudmFyIGZhQW5jaG9yID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FuY2hvcicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjEzZFwiLCBcIk0xMi45NzEgMzUyaDMyLjM5NEM2Ny4xNzIgNDU0LjczNSAxODEuOTQ0IDUxMiAyODggNTEyYzEwNi4yMjkgMCAyMjAuODUzLTU3LjM4IDI0Mi42MzUtMTYwaDMyLjM5NGMxMC42OTEgMCAxNi4wNDUtMTIuOTI2IDguNDg1LTIwLjQ4NWwtNjcuMDI5LTY3LjAyOWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwbC02Ny4wMjkgNjcuMDI5Yy03LjU2IDcuNTYtMi4yMDYgMjAuNDg1IDguNDg1IDIwLjQ4NWgzNS4xNDZjLTIwLjI5IDU0LjMxNy04NC45NjMgODYuNTg4LTE0NC4xMTcgOTQuMDE1VjI1Nmg1MmM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC01MnYtNS40N2MzNy4yODEtMTMuMTc4IDYzLjk5NS00OC43MjUgNjQtOTAuNTE4QzM4NC4wMDUgNDMuNzcyIDM0MS42MDUuNzM4IDI4OS4zNy4wMSAyMzUuNzIzLS43MzkgMTkyIDQyLjUyNSAxOTIgOTZjMCA0MS43OTggMjYuNzE2IDc3LjM1IDY0IDkwLjUzVjE5MmgtNTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg1MnYxOTAuMDE1Yy01OC45MzYtNy4zOTktMTIzLjgyLTM5LjY3OS0xNDQuMTE3LTk0LjAxNWgzNS4xNDZjMTAuNjkxIDAgMTYuMDQ1LTEyLjkyNiA4LjQ4NS0yMC40ODVsLTY3LjAyOS02Ny4wMjljLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMEw0LjQ4NSAzMzEuNTE1Qy0zLjA3NCAzMzkuMDc0IDIuMjggMzUyIDEyLjk3MSAzNTJ6TTI4OCA2NGMxNy42NDUgMCAzMiAxNC4zNTUgMzIgMzJzLTE0LjM1NSAzMi0zMiAzMi0zMi0xNC4zNTUtMzItMzIgMTQuMzU1LTMyIDMyLTMyelwiXVxufTtcbnZhciBmYUFuZ2xlRG91YmxlRG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhbmdsZS1kb3VibGUtZG93bicsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZjEwM1wiLCBcIk0xNDMgMjU2LjNMNyAxMjAuM2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsMjIuNi0yMi42YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDk2LjQgOTYuNCA5Ni40LTk2LjRjOS40LTkuNCAyNC42LTkuNCAzMy45IDBMMzEzIDg2LjNjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTEzNiAxMzZjLTkuNCA5LjUtMjQuNiA5LjUtMzQgLjF6bTM0IDE5MmwxMzYtMTM2YzkuNC05LjQgOS40LTI0LjYgMC0zMy45bC0yMi42LTIyLjZjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDE2MCAzNTIuMWwtOTYuNC05Ni40Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEw3IDI3OC4zYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWwxMzYgMTM2YzkuNCA5LjUgMjQuNiA5LjUgMzQgLjF6XCJdXG59O1xudmFyIGZhQW5nbGVEb3VibGVMZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FuZ2xlLWRvdWJsZS1sZWZ0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMTAwXCIsIFwiTTIyMy43IDIzOWwxMzYtMTM2YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDIyLjYgMjIuNmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOUwzMTkuOSAyNTZsOTYuNCA5Ni40YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45TDM5My43IDQwOWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTEzNi0xMzZjLTkuNS05LjQtOS41LTI0LjYtLjEtMzR6bS0xOTIgMzRsMTM2IDEzNmM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwyMi42LTIyLjZjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlMMTI3LjkgMjU2bDk2LjQtOTYuNGM5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyMDEuNyAxMDNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC0xMzYgMTM2Yy05LjUgOS40LTkuNSAyNC42LS4xIDM0elwiXVxufTtcbnZhciBmYUFuZ2xlRG91YmxlUmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYW5nbGUtZG91YmxlLXJpZ2h0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMTAxXCIsIFwiTTIyNC4zIDI3M2wtMTM2IDEzNmMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTIyLjYtMjIuNmMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsOTYuNC05Ni40LTk2LjQtOTYuNGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlMNTQuMyAxMDNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMTM2IDEzNmM5LjUgOS40IDkuNSAyNC42LjEgMzR6bTE5Mi0zNGwtMTM2LTEzNmMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTIyLjYgMjIuNmMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsOTYuNCA5Ni40LTk2LjQgOTYuNGMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsMjIuNiAyMi42YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDEzNi0xMzZjOS40LTkuMiA5LjQtMjQuNCAwLTMzLjh6XCJdXG59O1xudmFyIGZhQW5nbGVEb3VibGVVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhbmdsZS1kb3VibGUtdXAnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImYxMDJcIiwgXCJNMTc3IDI1NS43bDEzNiAxMzZjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTIyLjYgMjIuNmMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMTYwIDM1MS45bC05Ni40IDk2LjRjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDcgNDI1LjdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDEzNi0xMzZjOS40LTkuNSAyNC42LTkuNSAzNC0uMXptLTM0LTE5Mkw3IDE5OS43Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWwyMi42IDIyLjZjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsOTYuNC05Ni40IDk2LjQgOTYuNGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwyMi42LTIyLjZjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlsLTEzNi0xMzZjLTkuMi05LjQtMjQuNC05LjQtMzMuOCAwelwiXVxufTtcbnZhciBmYUFuZ2xlRG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhbmdsZS1kb3duJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJmMTA3XCIsIFwiTTE0MyAzNTIuM0w3IDIxNi4zYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWwyMi42LTIyLjZjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsOTYuNCA5Ni40IDk2LjQtOTYuNGM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwyMi42IDIyLjZjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTEzNiAxMzZjLTkuMiA5LjQtMjQuNCA5LjQtMzMuOCAwelwiXVxufTtcbnZhciBmYUFuZ2xlTGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhbmdsZS1sZWZ0JyxcbiAgaWNvbjogWzI1NiwgNTEyLCBbXSwgXCJmMTA0XCIsIFwiTTMxLjcgMjM5bDEzNi0xMzZjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMjIuNiAyMi42YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45TDEyNy45IDI1Nmw5Ni40IDk2LjRjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlMMjAxLjcgNDA5Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtMTM2LTEzNmMtOS41LTkuNC05LjUtMjQuNi0uMS0zNHpcIl1cbn07XG52YXIgZmFBbmdsZVJpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FuZ2xlLXJpZ2h0JyxcbiAgaWNvbjogWzI1NiwgNTEyLCBbXSwgXCJmMTA1XCIsIFwiTTIyNC4zIDI3M2wtMTM2IDEzNmMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTIyLjYtMjIuNmMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsOTYuNC05Ni40LTk2LjQtOTYuNGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlMNTQuMyAxMDNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMTM2IDEzNmM5LjUgOS40IDkuNSAyNC42LjEgMzR6XCJdXG59O1xudmFyIGZhQW5nbGVVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhbmdsZS11cCcsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZjEwNlwiLCBcIk0xNzcgMTU5LjdsMTM2IDEzNmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtMjIuNiAyMi42Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEwxNjAgMjU1LjlsLTk2LjQgOTYuNGMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMNyAzMjkuN2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsMTM2LTEzNmM5LjQtOS41IDI0LjYtOS41IDM0LS4xelwiXVxufTtcbnZhciBmYUFuZ3J5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FuZ3J5JyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNTU2XCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTEzNiAyNDBjMC05LjMgNC4xLTE3LjUgMTAuNS0yMy40bC0zMS05LjNjLTguNS0yLjUtMTMuMy0xMS41LTEwLjctMTkuOSAyLjUtOC41IDExLjQtMTMuMiAxOS45LTEwLjdsODAgMjRjOC41IDIuNSAxMy4zIDExLjUgMTAuNyAxOS45LTIuMSA2LjktOC40IDExLjQtMTUuMyAxMS40LS41IDAtMS4xLS4yLTEuNy0uMi43IDIuNyAxLjcgNS4zIDEuNyA4LjIgMCAxNy43LTE0LjMgMzItMzIgMzJTMTM2IDI1Ny43IDEzNiAyNDB6bTE2OCAxNTQuMmMtMjcuOC0zMy40LTg0LjItMzMuNC0xMTIuMSAwLTEzLjUgMTYuMy0zOC4yLTQuMi0yNC42LTIwLjUgMjAtMjQgNDkuNC0zNy44IDgwLjYtMzcuOHM2MC42IDEzLjggODAuNiAzNy44YzEzLjggMTYuNS0xMS4xIDM2LjYtMjQuNSAyMC41em03Ni42LTE4Ni45bC0zMSA5LjNjNi4zIDUuOCAxMC41IDE0LjEgMTAuNSAyMy40IDAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyYzAtMi45LjktNS42IDEuNy04LjItLjYuMS0xLjEuMi0xLjcuMi02LjkgMC0xMy4yLTQuNS0xNS4zLTExLjQtMi41LTguNSAyLjMtMTcuNCAxMC43LTE5LjlsODAtMjRjOC40LTIuNSAxNy40IDIuMyAxOS45IDEwLjcgMi41IDguNS0yLjMgMTcuNC0xMC44IDE5Ljl6XCJdXG59O1xudmFyIGZhQW5raCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhbmtoJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJmNjQ0XCIsIFwiTTI5NiAyNTZoLTQ0LjYyQzI3Mi40NiAyMjIuMDEgMjg4IDE4MS42NSAyODggMTQ0IDI4OCA1NS42MyAyMzAuNjkgMCAxNjAgMFMzMiA1NS42MyAzMiAxNDRjMCAzNy42NSAxNS41NCA3OC4wMSAzNi42MiAxMTJIMjRjLTEzLjI1IDAtMjQgMTAuNzQtMjQgMjR2MzJjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGg5NnYxNTJjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGgzMmMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0VjMzNmg5NmMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di0zMmMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0ek0xNjAgODBjMjkuNjEgMCA0OCAyNC41MiA0OCA2NCAwIDM0LjY2LTI3LjE0IDc4LjE0LTQ4IDEwMC44Ny0yMC44Ni0yMi43Mi00OC02Ni4yMS00OC0xMDAuODcgMC0zOS40OCAxOC4zOS02NCA0OC02NHpcIl1cbn07XG52YXIgZmFBcHBsZUFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcHBsZS1hbHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1ZDFcIiwgXCJNMzUwLjg1IDEyOWMyNS45NyA0LjY3IDQ3LjI3IDE4LjY3IDYzLjkyIDQyIDE0LjY1IDIwLjY3IDI0LjY0IDQ2LjY3IDI5Ljk2IDc4IDQuNjcgMjguNjcgNC4zMiA1Ny4zMy0xIDg2LTcuOTkgNDcuMzMtMjMuOTcgODctNDcuOTQgMTE5LTI4LjY0IDM4LjY3LTY0LjU5IDU4LTEwNy44NyA1OC0xMC42NiAwLTIyLjMtMy4zMy0zNC45Ni0xMC04LjY2LTUuMzMtMTguMzEtOC0yOC45Ny04cy0yMC4zIDIuNjctMjguOTcgOGMtMTIuNjYgNi42Ny0yNC4zIDEwLTM0Ljk2IDEwLTQzLjI4IDAtNzkuMjMtMTkuMzMtMTA3Ljg3LTU4LTIzLjk3LTMyLTM5Ljk1LTcxLjY3LTQ3Ljk0LTExOS01LjMyLTI4LjY3LTUuNjctNTcuMzMtMS04NiA1LjMyLTMxLjMzIDE1LjMxLTU3LjMzIDI5Ljk2LTc4IDE2LjY1LTIzLjMzIDM3Ljk1LTM3LjMzIDYzLjkyLTQyIDE1Ljk4LTIuNjcgMzcuOTUtLjMzIDY1LjkyIDcgMjMuOTcgNi42NyA0NC4yOCAxNC42NyA2MC45MyAyNCAxNi42NS05LjMzIDM2Ljk2LTE3LjMzIDYwLjkzLTI0IDI3Ljk4LTcuMzMgNDkuOTYtOS42NyA2NS45NC03em0tNTQuOTQtNDFjLTkuMzIgOC42Ny0yMS42NSAxNS0zNi45NiAxOS0xMC42NiAzLjMzLTIyLjMgNS0zNC45NiA1bC0xNC45OC0xYy0xLjMzLTkuMzMtMS4zMy0yMCAwLTMyIDIuNjctMjQgMTAuMzItNDIuMzMgMjIuOTctNTUgOS4zMi04LjY3IDIxLjY1LTE1IDM2Ljk2LTE5IDEwLjY2LTMuMzMgMjIuMy01IDM0Ljk2LTVsMTQuOTggMSAxIDE1YzAgMTIuNjctMS42NyAyNC4zMy00Ljk5IDM1LTMuOTkgMTUuMzMtMTAuMzEgMjcuNjctMTguOTggMzd6XCJdXG59O1xudmFyIGZhQXJjaGl2ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcmNoaXZlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMTg3XCIsIFwiTTMyIDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzODRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTYwSDMydjI4OHptMTYwLTIxMmMwLTYuNiA1LjQtMTIgMTItMTJoMTA0YzYuNiAwIDEyIDUuNCAxMiAxMnY4YzAgNi42LTUuNCAxMi0xMiAxMkgyMDRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtOHpNNDgwIDMySDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjR2NDhjMCA4LjggNy4yIDE2IDE2IDE2aDQ4MGM4LjggMCAxNi03LjIgMTYtMTZWNjRjMC0xNy43LTE0LjMtMzItMzItMzJ6XCJdXG59O1xudmFyIGZhQXJjaHdheSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcmNod2F5JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTU3XCIsIFwiTTU2MCA0NDhoLTE2Vjk2SDMydjM1MkgxNi4wMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZIMTc2YzguODQgMCAxNi03LjE2IDE2LTE2VjMyMGMwLTUzLjAyIDQyLjk4LTk2IDk2LTk2czk2IDQyLjk4IDk2IDk2bC4wMiAxNjB2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZINTYwYzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnptMC00NDhIMTZDNy4xNiAwIDAgNy4xNiAwIDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDU0NGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxNmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIl1cbn07XG52YXIgZmFBcnJvd0FsdENpcmNsZURvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctYWx0LWNpcmNsZS1kb3duJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMzU4XCIsIFwiTTUwNCAyNTZjMCAxMzctMTExIDI0OC0yNDggMjQ4UzggMzkzIDggMjU2IDExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OHpNMjEyIDE0MHYxMTZoLTcwLjljLTEwLjcgMC0xNi4xIDEzLTguNSAyMC41bDExNC45IDExNC4zYzQuNyA0LjcgMTIuMiA0LjcgMTYuOSAwbDExNC45LTExNC4zYzcuNi03LjYgMi4yLTIwLjUtOC41LTIwLjVIMzAwVjE0MGMwLTYuNi01LjQtMTItMTItMTJoLTY0Yy02LjYgMC0xMiA1LjQtMTIgMTJ6XCJdXG59O1xudmFyIGZhQXJyb3dBbHRDaXJjbGVMZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LWFsdC1jaXJjbGUtbGVmdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjM1OVwiLCBcIk0yNTYgNTA0QzExOSA1MDQgOCAzOTMgOCAyNTZTMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4LTExMSAyNDgtMjQ4IDI0OHptMTE2LTI5MkgyNTZ2LTcwLjljMC0xMC43LTEzLTE2LjEtMjAuNS04LjVMMTIxLjIgMjQ3LjVjLTQuNyA0LjctNC43IDEyLjIgMCAxNi45bDExNC4zIDExNC45YzcuNiA3LjYgMjAuNSAyLjIgMjAuNS04LjVWMzAwaDExNmM2LjYgMCAxMi01LjQgMTItMTJ2LTY0YzAtNi42LTUuNC0xMi0xMi0xMnpcIl1cbn07XG52YXIgZmFBcnJvd0FsdENpcmNsZVJpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LWFsdC1jaXJjbGUtcmlnaHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYzNWFcIiwgXCJNMjU2IDhjMTM3IDAgMjQ4IDExMSAyNDggMjQ4UzM5MyA1MDQgMjU2IDUwNCA4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHpNMTQwIDMwMGgxMTZ2NzAuOWMwIDEwLjcgMTMgMTYuMSAyMC41IDguNWwxMTQuMy0xMTQuOWM0LjctNC43IDQuNy0xMi4yIDAtMTYuOWwtMTE0LjMtMTE1Yy03LjYtNy42LTIwLjUtMi4yLTIwLjUgOC41VjIxMkgxNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY2NGMwIDYuNiA1LjQgMTIgMTIgMTJ6XCJdXG59O1xudmFyIGZhQXJyb3dBbHRDaXJjbGVVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1hbHQtY2lyY2xlLXVwJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMzViXCIsIFwiTTggMjU2QzggMTE5IDExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OC0xMTEgMjQ4LTI0OCAyNDhTOCAzOTMgOCAyNTZ6bTI5MiAxMTZWMjU2aDcwLjljMTAuNyAwIDE2LjEtMTMgOC41LTIwLjVMMjY0LjUgMTIxLjJjLTQuNy00LjctMTIuMi00LjctMTYuOSAwbC0xMTUgMTE0LjNjLTcuNiA3LjYtMi4yIDIwLjUgOC41IDIwLjVIMjEydjExNmMwIDYuNiA1LjQgMTIgMTIgMTJoNjRjNi42IDAgMTItNS40IDEyLTEyelwiXVxufTtcbnZhciBmYUFycm93Q2lyY2xlRG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1jaXJjbGUtZG93bicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjBhYlwiLCBcIk01MDQgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDh6bS0xNDMuNi0yOC45TDI4OCAzMDIuNlYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRoLTE2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYxODIuNmwtNzIuNC03NS41Yy05LjMtOS43LTI0LjgtOS45LTM0LjMtLjRsLTEwLjkgMTFjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45TDIzOSA0MDQuM2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwxMzIuNy0xMzIuN2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOWwtMTAuOS0xMWMtOS41LTkuNS0yNS05LjMtMzQuMy40elwiXVxufTtcbnZhciBmYUFycm93Q2lyY2xlTGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1jaXJjbGUtbGVmdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjBhOFwiLCBcIk0yNTYgNTA0QzExOSA1MDQgOCAzOTMgOCAyNTZTMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4LTExMSAyNDgtMjQ4IDI0OHptMjguOS0xNDMuNkwyMDkuNCAyODhIMzkyYzEzLjMgMCAyNC0xMC43IDI0LTI0di0xNmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgyMDkuNGw3NS41LTcyLjRjOS43LTkuMyA5LjktMjQuOC40LTM0LjNsLTExLTEwLjljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDEwNy43IDIzOWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsMTMyLjcgMTMyLjdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsMTEtMTAuOWM5LjUtOS41IDkuMy0yNS0uNC0zNC4zelwiXVxufTtcbnZhciBmYUFycm93Q2lyY2xlUmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctY2lyY2xlLXJpZ2h0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMGE5XCIsIFwiTTI1NiA4YzEzNyAwIDI0OCAxMTEgMjQ4IDI0OFMzOTMgNTA0IDI1NiA1MDQgOCAzOTMgOCAyNTYgMTE5IDggMjU2IDh6bS0yOC45IDE0My42bDc1LjUgNzIuNEgxMjBjLTEzLjMgMC0yNCAxMC43LTI0IDI0djE2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDE4Mi42bC03NS41IDcyLjRjLTkuNyA5LjMtOS45IDI0LjgtLjQgMzQuM2wxMSAxMC45YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDQwNC4zIDI3M2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyNzEuNiAxMDYuM2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTExIDEwLjljLTkuNSA5LjYtOS4zIDI1LjEuNCAzNC40elwiXVxufTtcbnZhciBmYUFycm93Q2lyY2xlVXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctY2lyY2xlLXVwJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMGFhXCIsIFwiTTggMjU2QzggMTE5IDExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OC0xMTEgMjQ4LTI0OCAyNDhTOCAzOTMgOCAyNTZ6bTE0My42IDI4LjlsNzIuNC03NS41VjM5MmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYyMDkuNGw3Mi40IDc1LjVjOS4zIDkuNyAyNC44IDkuOSAzNC4zLjRsMTAuOS0xMWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyNzMgMTA3LjdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDEwNi4zIDI0MC40Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWwxMC45IDExYzkuNiA5LjUgMjUuMSA5LjMgMzQuNC0uNHpcIl1cbn07XG52YXIgZmFBcnJvd0Rvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctZG93bicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjA2M1wiLCBcIk00MTMuMSAyMjIuNWwyMi4yIDIyLjJjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlMMjQxIDQ3M2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMTIuNyAyNzguNmMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsMjIuMi0yMi4yYzkuNS05LjUgMjUtOS4zIDM0LjMuNEwxODQgMzQzLjRWNTZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjR2Mjg3LjRsMTE0LjgtMTIwLjVjOS4zLTkuOCAyNC44LTEwIDM0LjMtLjR6XCJdXG59O1xudmFyIGZhQXJyb3dMZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LWxlZnQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwNjBcIiwgXCJNMjU3LjUgNDQ1LjFsLTIyLjIgMjIuMmMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMNyAyNzNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45TDIwMS40IDQ0LjdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMjIuMiAyMi4yYzkuNSA5LjUgOS4zIDI1LS40IDM0LjNMMTM2LjYgMjE2SDQyNGMxMy4zIDAgMjQgMTAuNyAyNCAyNHYzMmMwIDEzLjMtMTAuNyAyNC0yNCAyNEgxMzYuNmwxMjAuNSAxMTQuOGM5LjggOS4zIDEwIDI0LjguNCAzNC4zelwiXVxufTtcbnZhciBmYUFycm93UmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctcmlnaHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwNjFcIiwgXCJNMTkwLjUgNjYuOWwyMi4yLTIyLjJjOS40LTkuNCAyNC42LTkuNCAzMy45IDBMNDQxIDIzOWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOUwyNDYuNiA0NjcuM2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTIyLjItMjIuMmMtOS41LTkuNS05LjMtMjUgLjQtMzQuM0wzMTEuNCAyOTZIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0di0zMmMwLTEzLjMgMTAuNy0yNCAyNC0yNGgyODcuNEwxOTAuOSAxMDEuMmMtOS44LTkuMy0xMC0yNC44LS40LTM0LjN6XCJdXG59O1xudmFyIGZhQXJyb3dVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy11cCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjA2MlwiLCBcIk0zNC45IDI4OS41bC0yMi4yLTIyLjJjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45TDIwNyAzOWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwxOTQuMyAxOTQuM2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOUw0MTMgMjg5LjRjLTkuNSA5LjUtMjUgOS4zLTM0LjMtLjRMMjY0IDE2OC42VjQ1NmMwIDEzLjMtMTAuNyAyNC0yNCAyNGgtMzJjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjE2OC42TDY5LjIgMjg5LjFjLTkuMyA5LjgtMjQuOCAxMC0zNC4zLjR6XCJdXG59O1xudmFyIGZhQXJyb3dzQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93cy1hbHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwYjJcIiwgXCJNMzUyLjIwMSA0MjUuNzc1bC03OS4xOTYgNzkuMTk2Yy05LjM3MyA5LjM3My0yNC41NjggOS4zNzMtMzMuOTQxIDBsLTc5LjE5Ni03OS4xOTZjLTE1LjExOS0xNS4xMTktNC40MTEtNDAuOTcxIDE2Ljk3MS00MC45N2g1MS4xNjJMMjI4IDI4NEgxMjcuMTk2djUxLjE2MmMwIDIxLjM4Mi0yNS44NTEgMzIuMDktNDAuOTcxIDE2Ljk3MUw3LjAyOSAyNzIuOTM3Yy05LjM3My05LjM3My05LjM3My0yNC41NjkgMC0zMy45NDFMODYuMjI1IDE1OS44YzE1LjExOS0xNS4xMTkgNDAuOTcxLTQuNDExIDQwLjk3MSAxNi45NzFWMjI4SDIyOFYxMjcuMTk2aC01MS4yM2MtMjEuMzgyIDAtMzIuMDktMjUuODUxLTE2Ljk3MS00MC45NzFsNzkuMTk2LTc5LjE5NmM5LjM3My05LjM3MyAyNC41NjgtOS4zNzMgMzMuOTQxIDBsNzkuMTk2IDc5LjE5NmMxNS4xMTkgMTUuMTE5IDQuNDExIDQwLjk3MS0xNi45NzEgNDAuOTcxaC01MS4xNjJWMjI4aDEwMC44MDR2LTUxLjE2MmMwLTIxLjM4MiAyNS44NTEtMzIuMDkgNDAuOTctMTYuOTcxbDc5LjE5NiA3OS4xOTZjOS4zNzMgOS4zNzMgOS4zNzMgMjQuNTY5IDAgMzMuOTQxTDQyNS43NzMgMzUyLjJjLTE1LjExOSAxNS4xMTktNDAuOTcxIDQuNDExLTQwLjk3LTE2Ljk3MVYyODRIMjg0djEwMC44MDRoNTEuMjNjMjEuMzgyIDAgMzIuMDkgMjUuODUxIDE2Ljk3MSA0MC45NzF6XCJdXG59O1xudmFyIGZhQXJyb3dzQWx0SCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvd3MtYWx0LWgnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYzMzdcIiwgXCJNMzc3Ljk0MSAxNjkuOTQxVjIxNkgxMzQuMDU5di00Ni4wNTljMC0yMS4zODItMjUuODUxLTMyLjA5LTQwLjk3MS0xNi45NzFMNy4wMjkgMjM5LjAyOWMtOS4zNzMgOS4zNzMtOS4zNzMgMjQuNTY4IDAgMzMuOTQxbDg2LjA1OSA4Ni4wNTljMTUuMTE5IDE1LjExOSA0MC45NzEgNC40MTEgNDAuOTcxLTE2Ljk3MVYyOTZoMjQzLjg4MnY0Ni4wNTljMCAyMS4zODIgMjUuODUxIDMyLjA5IDQwLjk3MSAxNi45NzFsODYuMDU5LTg2LjA1OWM5LjM3My05LjM3MyA5LjM3My0yNC41NjggMC0zMy45NDFsLTg2LjA1OS04Ni4wNTljLTE1LjExOS0xNS4xMi00MC45NzEtNC40MTItNDAuOTcxIDE2Ljk3elwiXVxufTtcbnZhciBmYUFycm93c0FsdFYgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3dzLWFsdC12JyxcbiAgaWNvbjogWzI1NiwgNTEyLCBbXSwgXCJmMzM4XCIsIFwiTTIxNC4wNTkgMzc3Ljk0MUgxNjhWMTM0LjA1OWg0Ni4wNTljMjEuMzgyIDAgMzIuMDktMjUuODUxIDE2Ljk3MS00MC45NzFMMTQ0Ljk3MSA3LjAyOWMtOS4zNzMtOS4zNzMtMjQuNTY4LTkuMzczLTMzLjk0MSAwTDI0Ljk3MSA5My4wODhjLTE1LjExOSAxNS4xMTktNC40MTEgNDAuOTcxIDE2Ljk3MSA0MC45NzFIODh2MjQzLjg4Mkg0MS45NDFjLTIxLjM4MiAwLTMyLjA5IDI1Ljg1MS0xNi45NzEgNDAuOTcxbDg2LjA1OSA4Ni4wNTljOS4zNzMgOS4zNzMgMjQuNTY4IDkuMzczIDMzLjk0MSAwbDg2LjA1OS04Ni4wNTljMTUuMTItMTUuMTE5IDQuNDEyLTQwLjk3MS0xNi45Ny00MC45NzF6XCJdXG59O1xudmFyIGZhQXNzaXN0aXZlTGlzdGVuaW5nU3lzdGVtcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhc3Npc3RpdmUtbGlzdGVuaW5nLXN5c3RlbXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyYTJcIiwgXCJNMjE2IDI2MGMwIDE1LjQ2NC0xMi41MzYgMjgtMjggMjhzLTI4LTEyLjUzNi0yOC0yOGMwLTQ0LjExMiAzNS44ODgtODAgODAtODBzODAgMzUuODg4IDgwIDgwYzAgMTUuNDY0LTEyLjUzNiAyOC0yOCAyOHMtMjgtMTIuNTM2LTI4LTI4YzAtMTMuMjM0LTEwLjc2Ny0yNC0yNC0yNHMtMjQgMTAuNzY2LTI0IDI0em0yNC0xNzZjLTk3LjA0NyAwLTE3NiA3OC45NTMtMTc2IDE3NiAwIDE1LjQ2NCAxMi41MzYgMjggMjggMjhzMjgtMTIuNTM2IDI4LTI4YzAtNjYuMTY4IDUzLjgzMi0xMjAgMTIwLTEyMHMxMjAgNTMuODMyIDEyMCAxMjBjMCA3NS4xNjQtNzEuMDA5IDcwLjMxMS03MS45OTcgMTQzLjYyMkwyODggNDA0YzAgMjguNjczLTIzLjMyNyA1Mi01MiA1Mi0xNS40NjQgMC0yOCAxMi41MzYtMjggMjhzMTIuNTM2IDI4IDI4IDI4YzU5LjQ3NSAwIDEwNy44NzYtNDguMzI4IDEwOC0xMDcuNzc0LjU5NS0zNC40MjggNzItNDguMjQgNzItMTQ0LjIyNiAwLTk3LjA0Ny03OC45NTMtMTc2LTE3Ni0xNzZ6bS04MCAyMzZjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnpNMzIgNDQ4Yy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTQ4MC0xODcuOTkzYzAtMS41MTgtLjAxMi0zLjAyNS0uMDQ1LTQuNTMxQzUxMC4wNzYgMTQwLjUyNSA0MzYuMTU3IDM4LjQ3IDMyNy45OTQgMS41MTFjLTE0LjYzMy00Ljk5OC0zMC41NDkgMi44MDktMzUuNTUgMTcuNDQyLTUgMTQuNjMzIDIuODEgMzAuNTQ5IDE3LjQ0MiAzNS41NSA4NS45MDYgMjkuMzU0IDE0NC42MSAxMTAuNTEzIDE0Ni4wNzcgMjAxLjk1M2wuMDAzLjE4OGMuMDI2IDEuMTE4LjAzMyAyLjIzNi4wMzMgMy4zNjMgMCAxNS40NjQgMTIuNTM2IDI4IDI4IDI4czI4LjAwMS0xMi41MzYgMjguMDAxLTI4ek0xNTIuOTcxIDQzOS4wMjlsLTgwLTgwTDM5LjAzIDM5Mi45N2w4MCA4MCAzMy45NDEtMzMuOTQxelwiXVxufTtcbnZhciBmYUFzdGVyaXNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FzdGVyaXNrJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDY5XCIsIFwiTTQ3OC4yMSAzMzQuMDkzTDMzNiAyNTZsMTQyLjIxLTc4LjA5M2MxMS43OTUtNi40NzcgMTUuOTYxLTIxLjM4NCA5LjIzMi0zMy4wMzdsLTE5LjQ4LTMzLjc0MWMtNi43MjgtMTEuNjUzLTIxLjcyLTE1LjQ5OS0zMy4yMjctOC41MjNMMjk2IDE4Ni43MThsMy40NzUtMTYyLjIwNEMyOTkuNzYzIDExLjA2MSAyODguOTM3IDAgMjc1LjQ4IDBoLTM4Ljk2Yy0xMy40NTYgMC0yNC4yODMgMTEuMDYxLTIzLjk5NCAyNC41MTRMMjE2IDE4Ni43MTggNzcuMjY1IDEwMi42MDdjLTExLjUwNi02Ljk3Ni0yNi40OTktMy4xMy0zMy4yMjcgOC41MjNsLTE5LjQ4IDMzLjc0MWMtNi43MjggMTEuNjUzLTIuNTYyIDI2LjU2IDkuMjMzIDMzLjAzN0wxNzYgMjU2IDMzLjc5IDMzNC4wOTNjLTExLjc5NSA2LjQ3Ny0xNS45NjEgMjEuMzg0LTkuMjMyIDMzLjAzN2wxOS40OCAzMy43NDFjNi43MjggMTEuNjUzIDIxLjcyMSAxNS40OTkgMzMuMjI3IDguNTIzTDIxNiAzMjUuMjgybC0zLjQ3NSAxNjIuMjA0QzIxMi4yMzcgNTAwLjkzOSAyMjMuMDY0IDUxMiAyMzYuNTIgNTEyaDM4Ljk2MWMxMy40NTYgMCAyNC4yODMtMTEuMDYxIDIzLjk5NS0yNC41MTRMMjk2IDMyNS4yODJsMTM4LjczNSA4NC4xMTFjMTEuNTA2IDYuOTc2IDI2LjQ5OSAzLjEzIDMzLjIyNy04LjUyM2wxOS40OC0zMy43NDFjNi43MjgtMTEuNjUzIDIuNTYzLTI2LjU1OS05LjIzMi0zMy4wMzZ6XCJdXG59O1xudmFyIGZhQXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxZmFcIiwgXCJNMjU2IDhDMTE4Ljk0MSA4IDggMTE4LjkxOSA4IDI1NmMwIDEzNy4wNTkgMTEwLjkxOSAyNDggMjQ4IDI0OCA0OC4xNTQgMCA5NS4zNDItMTQuMTQgMTM1LjQwOC00MC4yMjMgMTIuMDA1LTcuODE1IDE0LjYyNS0yNC4yODggNS41NTItMzUuMzcybC0xMC4xNzctMTIuNDMzYy03LjY3MS05LjM3MS0yMS4xNzktMTEuNjY3LTMxLjM3My01LjEyOUMzMjUuOTIgNDI5Ljc1NyAyOTEuMzE0IDQ0MCAyNTYgNDQwYy0xMDEuNDU4IDAtMTg0LTgyLjU0Mi0xODQtMTg0UzE1NC41NDIgNzIgMjU2IDcyYzEwMC4xMzkgMCAxODQgNTcuNjE5IDE4NCAxNjAgMCAzOC43ODYtMjEuMDkzIDc5Ljc0Mi01OC4xNyA4My42OTMtMTcuMzQ5LS40NTQtMTYuOTEtMTIuODU3LTEzLjQ3Ni0zMC4wMjRsMjMuNDMzLTEyMS4xMUMzOTQuNjUzIDE0OS43NSAzODMuMzA4IDEzNiAzNjguMjI1IDEzNmgtNDQuOTgxYTEzLjUxOCAxMy41MTggMCAwIDAtMTMuNDMyIDExLjk5M2wtLjAxLjA5MmMtMTQuNjk3LTE3LjkwMS00MC40NDgtMjEuNzc1LTU5Ljk3MS0yMS43NzUtNzQuNTggMC0xMzcuODMxIDYyLjIzNC0xMzcuODMxIDE1MS40NiAwIDY1LjMwMyAzNi43ODUgMTA1Ljg3IDk2IDEwNS44NyAyNi45ODQgMCA1Ny4zNjktMTUuNjM3IDc0Ljk5MS0zOC4zMzMgOS41MjIgMzQuMTA0IDQwLjYxMyAzNC4xMDMgNzAuNzEgMzQuMTAzQzQ2Mi42MDkgMzc5LjQxIDUwNCAzMDcuNzk4IDUwNCAyMzIgNTA0IDk1LjY1MyAzOTQuMDIzIDggMjU2IDh6bS0yMS42OCAzMDQuNDNjLTIyLjI0OSAwLTM2LjA3LTE1LjYyMy0zNi4wNy00MC43NzEgMC00NC45OTMgMzAuNzc5LTcyLjcyOSA1OC42My03Mi43MjkgMjIuMjkyIDAgMzUuNjAxIDE1LjI0MSAzNS42MDEgNDAuNzcgMCA0NS4wNjEtMzMuODc1IDcyLjczLTU4LjE2MSA3Mi43M3pcIl1cbn07XG52YXIgZmFBdGxhcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhdGxhcycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjU1OFwiLCBcIk0zMTguMzggMjA4aC0zOS4wOWMtMS40OSAyNy4wMy02LjU0IDUxLjM1LTE0LjIxIDcwLjQxIDI3LjcxLTEzLjI0IDQ4LjAyLTM5LjE5IDUzLjMtNzAuNDF6bTAtMzJjLTUuMjktMzEuMjItMjUuNTktNTcuMTctNTMuMy03MC40MSA3LjY4IDE5LjA2IDEyLjcyIDQzLjM4IDE0LjIxIDcwLjQxaDM5LjA5ek0yMjQgOTcuMzFjLTcuNjkgNy40NS0yMC43NyAzNC40Mi0yMy40MyA3OC42OWg0Ni44N2MtMi42Ny00NC4yNi0xNS43NS03MS4yNC0yMy40NC03OC42OXptLTQxLjA4IDguMjhjLTI3LjcxIDEzLjI0LTQ4LjAyIDM5LjE5LTUzLjMgNzAuNDFoMzkuMDljMS40OS0yNy4wMyA2LjUzLTUxLjM1IDE0LjIxLTcwLjQxem0wIDE3Mi44MmMtNy42OC0xOS4wNi0xMi43Mi00My4zOC0xNC4yMS03MC40MWgtMzkuMDljNS4yOCAzMS4yMiAyNS41OSA1Ny4xNyA1My4zIDcwLjQxek0yNDcuNDMgMjA4aC00Ni44N2MyLjY2IDQ0LjI2IDE1Ljc0IDcxLjI0IDIzLjQzIDc4LjY5IDcuNy03LjQ1IDIwLjc4LTM0LjQzIDIzLjQ0LTc4LjY5ek00NDggMzU4LjRWMjUuNmMwLTE2LTkuNi0yNS42LTI1LjYtMjUuNkg5NkM0MS42IDAgMCA0MS42IDAgOTZ2MzIwYzAgNTQuNCA0MS42IDk2IDk2IDk2aDMyNi40YzEyLjggMCAyNS42LTkuNiAyNS42LTI1LjZ2LTE2YzAtNi40LTMuMi0xMi44LTkuNi0xOS4yLTMuMi0xNi0zLjItNjAuOCAwLTczLjYgNi40LTMuMiA5LjYtOS42IDkuNi0xOS4yek0yMjQgNjRjNzAuNjkgMCAxMjggNTcuMzEgMTI4IDEyOHMtNTcuMzEgMTI4LTEyOCAxMjhTOTYgMjYyLjY5IDk2IDE5MiAxNTMuMzEgNjQgMjI0IDY0em0xNjAgMzg0SDk2Yy0xOS4yIDAtMzItMTIuOC0zMi0zMnMxNi0zMiAzMi0zMmgyODh2NjR6XCJdXG59O1xudmFyIGZhQXRvbSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhdG9tJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNWQyXCIsIFwiTTIyMy45OTkwOCwyMjRhMzIsMzIsMCwxLDAsMzIuMDA3ODIsMzJBMzIuMDY0MzEsMzIuMDY0MzEsMCwwLDAsMjIzLjk5OTA4LDIyNFptMjE0LjE3Mi05NmMtMTAuODc3LTE5LjUtNDAuNTA5NzktNTAuNzUtMTE2LjI3NTQ0LTQxLjg3NUMzMDAuMzkxNjgsMzQuODc1LDI2Ny42MzM4NiwwLDIyMy45OTkwOCwwcy03Ni4zOTA2NiwzNC44NzUtOTcuODk2NTMsODYuMTI1QzUwLjMzNjksNzcuMzc1LDIwLjcwNiwxMDguNSw5LjgyOTA3LDEyOC02LjU0OTg0LDE1Ny4zNzUtNS4xNzQ4NCwyMDEuMTI1LDM0Ljk1OCwyNTYtNS4xNzQ4NCwzMTAuODc1LTYuNTQ5ODQsMzU0LjYyNSw5LjgyOTA3LDM4NGMyOS4xMzA4Nyw1Mi4zNzUsMTAxLjY0NjUyLDQzLjYyNSwxMTYuMjczNDgsNDEuODc1QzE0Ny42MDg0Miw0NzcuMTI1LDE4MC4zNjQyOSw1MTIsMjIzLjk5OTA4LDUxMnM3Ni4zOTI2LTM0Ljg3NSw5Ny44OTY1Mi04Ni4xMjVjMTQuNjI4OTEsMS43NSw4Ny4xNDQ1NiwxMC41LDExNi4yNzU0NC00MS44NzVDNDU0LjU1LDM1NC42MjUsNDUzLjE3NSwzMTAuODc1LDQxMy4wNDAxNywyNTYsNDUzLjE3NSwyMDEuMTI1LDQ1NC41NSwxNTcuMzc1LDQzOC4xNzEsMTI4Wk02My4zMzg4NiwzNTJjLTQtNy4yNS0uMTI1LTI0Ljc1LDE1LjAwMzkxLTQ4LjI1LDYuODc2OTUsNi41LDE0LjEyODkxLDEyLjg3NSwyMS44ODA4NywxOS4xMjUsMS42MjUsMTMuNzUsNCwyNy4xMjUsNi43NSw0MC4xMjVDODIuMzQ0NzIsMzYzLjg3NSw2Ny4wOTA4MSwzNTguNjI1LDYzLjMzODg2LDM1MlptMzYuODg0NzgtMTYyLjg3NWMtNy43NTIsNi4yNS0xNS4wMDM5MiwxMi42MjUtMjEuODgwODcsMTkuMTI1LTE1LjEyODkxLTIzLjUtMTkuMDAzOTItNDEtMTUuMDAzOTEtNDguMjUsMy4zNzctNi4xMjUsMTYuMzc4OTEtMTEuNSwzNy44ODQ3OC0xMS41LDEuNzUsMCwzLjg3NS4zNzUsNS43NS4zNzVDMTA0LjA5ODY0LDE2Mi4yNSwxMDEuODQ4NjQsMTc1LjYyNSwxMDAuMjIzNjQsMTg5LjEyNVpNMjIzLjk5OTA4LDY0YzkuNTAxOTUsMCwyMi4yNTU4NiwxMy41LDMzLjg4MjgyLDM3LjI1LTExLjI1MiwzLjc1LTIyLjUwMzkxLDgtMzMuODgyODIsMTIuODc1LTExLjM3Ny00Ljg3NS0yMi42Mjg5Mi05LjEyNS0zMy44ODI4My0xMi44NzVDMjAxLjc0NTE2LDc3LjUsMjE0LjQ5NzEyLDY0LDIyMy45OTkwOCw2NFptMCwzODRjLTkuNTAyLDAtMjIuMjUzOTItMTMuNS0zMy44ODI4My0zNy4yNSwxMS4yNTM5MS0zLjc1LDIyLjUwNTg3LTgsMzMuODgyODMtMTIuODc1QzIzNS4zNzgsNDAyLjc1LDI0Ni42Mjk5NCw0MDcsMjU3Ljg4MTksNDEwLjc1LDI0Ni4yNTQ5NCw0MzQuNSwyMzMuNTAxLDQ0OCwyMjMuOTk5MDgsNDQ4Wm0wLTExMmE4MCw4MCwwLDEsMSw4MC04MEE4MC4wMDAyMyw4MC4wMDAyMywwLDAsMSwyMjMuOTk5MDgsMzM2Wk0zODQuNjU5MywzNTJjLTMuNjI1LDYuNjI1LTE5LjAwMzkyLDExLjg3NS00My42MzQ3OSwxMSwyLjc1Mi0xMyw1LjEyNy0yNi4zNzUsNi43NTItNDAuMTI1LDcuNzUxOTUtNi4yNSwxNS4wMDM5MS0xMi42MjUsMjEuODc4OTEtMTkuMTI1QzM4NC43ODQzLDMyNy4yNSwzODguNjU5MywzNDQuNzUsMzg0LjY1OTMsMzUyWk0zNjkuNjU1MzgsMjA4LjI1Yy02Ljg3NS02LjUtMTQuMTI3LTEyLjg3NS0yMS44Nzg5MS0xOS4xMjUtMS42MjUtMTMuNS0zLjg3NS0yNi44NzUtNi43NTItNDAuMjUsMS44NzUsMCw0LjAwMi0uMzc1LDUuNzUyLS4zNzUsMjEuNTAzOTEsMCwzNC41MDc4Miw1LjM3NSwzNy44ODI4MywxMS41QzM4OC42NTkzLDE2Ny4yNSwzODQuNzg0MywxODQuNzUsMzY5LjY1NTM4LDIwOC4yNVpcIl1cbn07XG52YXIgZmFBdWRpb0Rlc2NyaXB0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2F1ZGlvLWRlc2NyaXB0aW9uJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMjllXCIsIFwiTTE2Mi45MjUgMjM4LjcwOWw4LjgyMiAzMC42NTVoLTI1LjYwNmw5LjA0MS0zMC42NTJjMS4yNzctNC40MjEgMi42NTEtOS45OTQgMy44NzItMTUuMjQ1IDEuMjIgNS4yNTEgMi41OTQgMTAuODIzIDMuODcxIDE1LjI0MnptMTY2LjQ3NC0zMi4wOTloLTE0LjUyM3Y5OC43ODFoMTQuNTIzYzI5Ljc3NiAwIDQ2LjE3NS0xNy42NzggNDYuMTc1LTQ5Ljc3NiAwLTMyLjIzOS0xNy40OS00OS4wMDUtNDYuMTc1LTQ5LjAwNXpNNTEyIDExMnYyODhjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxMTJjMC0yNi41MSAyMS40OS00OCA0OC00OGg0MTZjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHpNMjQ1LjQ1OSAzMzYuMTM5bC01Ny4wOTctMTY4QTEyLjAwMSAxMi4wMDEgMCAwIDAgMTc3IDE2MGgtMzUuODk0YTEyLjAwMSAxMi4wMDEgMCAwIDAtMTEuMzYyIDguMTM5bC01Ny4wOTcgMTY4QzcwLjAwMyAzNDMuOTIyIDc1Ljc4OSAzNTIgODQuMDA5IDM1MmgyOS4xMzNhMTIgMTIgMCAwIDAgMTEuNTM1LTguNjkzbDguNTc0LTI5LjkwNmg1MS4zNjdsOC43OTMgMjkuOTc3QTEyIDEyIDAgMCAwIDIwNC45MjYgMzUyaDI5LjE3MmM4LjIyIDAgMTQuMDA2LTguMDc4IDExLjM2MS0xNS44NjF6bTE4NC43MDEtODAuNTI1YzAtNTguOTc3LTM3LjkxOS05NS42MTQtOTguOTYtOTUuNjE0aC01Ny4zNjZjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MTY4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJIMzMxLjJjNjEuMDQxIDAgOTguOTYtMzYuOTMzIDk4Ljk2LTk2LjM4NnpcIl1cbn07XG52YXIgZmFBd2FyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhd2FyZCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjU1OVwiLCBcIk05Ny4xMiAzNjIuNjNjLTguNjktOC42OS00LjE2LTYuMjQtMjUuMTItMTEuODUtOS41MS0yLjU1LTE3Ljg3LTcuNDUtMjUuNDMtMTMuMzJMMS4yIDQ0OC43Yy00LjM5IDEwLjc3IDMuODEgMjIuNDcgMTUuNDMgMjIuMDNsNTIuNjktMi4wMUwxMDUuNTYgNTA3YzggOC40NCAyMi4wNCA1LjgxIDI2LjQzLTQuOTZsNTIuMDUtMTI3LjYyYy0xMC44NCA2LjA0LTIyLjg3IDkuNTgtMzUuMzEgOS41OC0xOS41IDAtMzcuODItNy41OS01MS42MS0yMS4zN3pNMzgyLjggNDQ4LjdsLTQ1LjM3LTExMS4yNGMtNy41NiA1Ljg4LTE1LjkyIDEwLjc3LTI1LjQzIDEzLjMyLTIxLjA3IDUuNjQtMTYuNDUgMy4xOC0yNS4xMiAxMS44NS0xMy43OSAxMy43OC0zMi4xMiAyMS4zNy01MS42MiAyMS4zNy0xMi40NCAwLTI0LjQ3LTMuNTUtMzUuMzEtOS41OEwyNTIgNTAyLjA0YzQuMzkgMTAuNzcgMTguNDQgMTMuNCAyNi40MyA0Ljk2bDM2LjI1LTM4LjI4IDUyLjY5IDIuMDFjMTEuNjIuNDQgMTkuODItMTEuMjcgMTUuNDMtMjIuMDN6TTI2MyAzNDBjMTUuMjgtMTUuNTUgMTcuMDMtMTQuMjEgMzguNzktMjAuMTQgMTMuODktMy43OSAyNC43NS0xNC44NCAyOC40Ny0yOC45OCA3LjQ4LTI4LjQgNS41NC0yNC45NyAyNS45NS00NS43NSAxMC4xNy0xMC4zNSAxNC4xNC0yNS40NCAxMC40Mi0zOS41OC03LjQ3LTI4LjM4LTcuNDgtMjQuNDIgMC01Mi44MyAzLjcyLTE0LjE0LS4yNS0yOS4yMy0xMC40Mi0zOS41OC0yMC40MS0yMC43OC0xOC40Ny0xNy4zNi0yNS45NS00NS43NS0zLjcyLTE0LjE0LTE0LjU4LTI1LjE5LTI4LjQ3LTI4Ljk4LTI3Ljg4LTcuNjEtMjQuNTItNS42Mi00NC45NS0yNi40MS0xMC4xNy0xMC4zNS0yNS0xNC40LTM4Ljg5LTEwLjYxLTI3Ljg3IDcuNi0yMy45OCA3LjYxLTUxLjkgMC0xMy44OS0zLjc5LTI4LjcyLjI1LTM4Ljg5IDEwLjYxLTIwLjQxIDIwLjc4LTE3LjA1IDE4LjgtNDQuOTQgMjYuNDEtMTMuODkgMy43OS0yNC43NSAxNC44NC0yOC40NyAyOC45OC03LjQ3IDI4LjM5LTUuNTQgMjQuOTctMjUuOTUgNDUuNzUtMTAuMTcgMTAuMzUtMTQuMTUgMjUuNDQtMTAuNDIgMzkuNTggNy40NyAyOC4zNiA3LjQ4IDI0LjQgMCA1Mi44Mi0zLjcyIDE0LjE0LjI1IDI5LjIzIDEwLjQyIDM5LjU5IDIwLjQxIDIwLjc4IDE4LjQ3IDE3LjM1IDI1Ljk1IDQ1Ljc1IDMuNzIgMTQuMTQgMTQuNTggMjUuMTkgMjguNDcgMjguOThDMTA0LjYgMzI1Ljk2IDEwNi4yNyAzMjUgMTIxIDM0MGMxMy4yMyAxMy40NyAzMy44NCAxNS44OCA0OS43NCA1LjgyYTM5LjY3NiAzOS42NzYgMCAwIDEgNDIuNTMgMGMxNS44OSAxMC4wNiAzNi41IDcuNjUgNDkuNzMtNS44MnpNOTcuNjYgMTc1Ljk2YzAtNTMuMDMgNDIuMjQtOTYuMDIgOTQuMzQtOTYuMDJzOTQuMzQgNDIuOTkgOTQuMzQgOTYuMDItNDIuMjQgOTYuMDItOTQuMzQgOTYuMDItOTQuMzQtNDIuOTktOTQuMzQtOTYuMDJ6XCJdXG59O1xudmFyIGZhQmFieSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYWJ5JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNzdjXCIsIFwiTTE5MiAxNjBjNDQuMiAwIDgwLTM1LjggODAtODBTMjM2LjIgMCAxOTIgMHMtODAgMzUuOC04MCA4MCAzNS44IDgwIDgwIDgwem0tNTMuNCAyNDguOGwyNS42LTMyLTYxLjUtNTEuMkw1Ni44IDM4M2MtMTEuNCAxNC4yLTExLjcgMzQuNC0uOCA0OWw0OCA2NGM3LjkgMTAuNSAxOS45IDE2IDMyIDE2IDguMyAwIDE2LjgtMi42IDI0LTggMTcuNy0xMy4yIDIxLjItMzguMyA4LTU2bC0yOS40LTM5LjJ6bTE0Mi43LTgzLjJsLTYxLjUgNTEuMiAyNS42IDMyTDIxNiA0NDhjLTEzLjIgMTcuNy05LjcgNDIuOCA4IDU2IDcuMiA1LjQgMTUuNiA4IDI0IDggMTIuMiAwIDI0LjItNS41IDMyLTE2bDQ4LTY0YzEwLjktMTQuNiAxMC42LTM0LjgtLjgtNDlsLTQ1LjktNTcuNHpNMzc2LjcgMTQ1Yy0xMi43LTE4LjEtMzcuNi0yMi40LTU1LjctOS44bC00MC42IDI4LjVjLTUyLjcgMzctMTI0LjIgMzctMTc2LjggMEw2MyAxMzUuM0M0NC45IDEyMi42IDIwIDEyNyA3LjMgMTQ1LTUuNCAxNjMuMS0xIDE4OCAxNyAyMDAuN2w0MC42IDI4LjVjMTcgMTEuOSAzNS40IDIwLjkgNTQuNCAyNy45VjI4OGgxNjB2LTMwLjhjMTktNyAzNy40LTE2IDU0LjQtMjcuOWw0MC42LTI4LjVjMTguMS0xMi44IDIyLjQtMzcuNyA5LjctNTUuOHpcIl1cbn07XG52YXIgZmFCYWJ5Q2FycmlhZ2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFieS1jYXJyaWFnZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjc3ZFwiLCBcIk0xNDQuOCAxN2MtMTEuMy0xNy44LTM3LjItMjIuOC01NC05LjRDMzUuMyA1MS45IDAgMTE4IDAgMTkyaDI1NkwxNDQuOCAxN3pNNDk2IDk2aC00OGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2NjRIMGMwIDUwLjYgMjMgOTYuNCA2MC4zIDEzMC43QzI1LjcgMzYzLjYgMCAzOTQuNyAwIDQzMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtOC45LTEuOC0xNy4yLTQuNC0yNS4yIDIxLjYgNS45IDQ0LjYgOS4yIDY4LjQgOS4yczQ2LjktMy4zIDY4LjQtOS4yYy0yLjcgOC00LjQgMTYuMy00LjQgMjUuMiAwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMzcuMy0yNS43LTY4LjQtNjAuMy03Ny4zQzQyNSAzMjAuNCA0NDggMjc0LjYgNDQ4IDIyNHYtNjRoNDhjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6TTgwIDQ2NGMtMTcuNiAwLTMyLTE0LjQtMzItMzJzMTQuNC0zMiAzMi0zMiAzMiAxNC40IDMyIDMyLTE0LjQgMzItMzIgMzJ6bTMyMC0zMmMwIDE3LjYtMTQuNCAzMi0zMiAzMnMtMzItMTQuNC0zMi0zMiAxNC40LTMyIDMyLTMyIDMyIDE0LjQgMzIgMzJ6XCJdXG59O1xudmFyIGZhQmFja3NwYWNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhY2tzcGFjZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjU1YVwiLCBcIk01NzYgNjRIMjA1LjI2QTYzLjk3IDYzLjk3IDAgMCAwIDE2MCA4Mi43NUw5LjM3IDIzMy4zN2MtMTIuNSAxMi41LTEyLjUgMzIuNzYgMCA0NS4yNUwxNjAgNDI5LjI1YzEyIDEyIDI4LjI4IDE4Ljc1IDQ1LjI1IDE4Ljc1SDU3NmMzNS4zNSAwIDY0LTI4LjY1IDY0LTY0VjEyOGMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0em0tODQuNjkgMjU0LjA2YzYuMjUgNi4yNSA2LjI1IDE2LjM4IDAgMjIuNjNsLTIyLjYyIDIyLjYyYy02LjI1IDYuMjUtMTYuMzggNi4yNS0yMi42MyAwTDM4NCAzMDEuMjVsLTYyLjA2IDYyLjA2Yy02LjI1IDYuMjUtMTYuMzggNi4yNS0yMi42MyAwbC0yMi42Mi0yMi42MmMtNi4yNS02LjI1LTYuMjUtMTYuMzggMC0yMi42M0wzMzguNzUgMjU2bC02Mi4wNi02Mi4wNmMtNi4yNS02LjI1LTYuMjUtMTYuMzggMC0yMi42M2wyMi42Mi0yMi42MmM2LjI1LTYuMjUgMTYuMzgtNi4yNSAyMi42MyAwTDM4NCAyMTAuNzVsNjIuMDYtNjIuMDZjNi4yNS02LjI1IDE2LjM4LTYuMjUgMjIuNjMgMGwyMi42MiAyMi42MmM2LjI1IDYuMjUgNi4yNSAxNi4zOCAwIDIyLjYzTDQyOS4yNSAyNTZsNjIuMDYgNjIuMDZ6XCJdXG59O1xudmFyIGZhQmFja3dhcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFja3dhcmQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwNGFcIiwgXCJNMTEuNSAyODAuNmwxOTIgMTYwYzIwLjYgMTcuMiA1Mi41IDIuOCA1Mi41LTI0LjZWOTZjMC0yNy40LTMxLjktNDEuOC01Mi41LTI0LjZsLTE5MiAxNjBjLTE1LjMgMTIuOC0xNS4zIDM2LjQgMCA0OS4yem0yNTYgMGwxOTIgMTYwYzIwLjYgMTcuMiA1Mi41IDIuOCA1Mi41LTI0LjZWOTZjMC0yNy40LTMxLjktNDEuOC01Mi41LTI0LjZsLTE5MiAxNjBjLTE1LjMgMTIuOC0xNS4zIDM2LjQgMCA0OS4yelwiXVxufTtcbnZhciBmYUJhY29uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhY29uJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmN2U1XCIsIFwiTTIxOC45MiAzMzYuMzljMzQuODktMzQuODkgNDQuMi01OS43IDU0LjA1LTg2IDEwLjYxLTI4LjI5IDIxLjU5LTU3LjU0IDYxLjM3LTk3LjM0czY5LjA1LTUwLjc3IDk3LjM1LTYxLjM4YzIzLjg4LTkgNDYuNjQtMTcuNjggNzYuNzktNDUuMzdMNDcwLjgxIDguOTFhMzEgMzEgMCAwIDAtNDAuMTgtMi44M2MtMTMuNjQgMTAuMS0yNS4xNSAxNC4zOS00MSAyMC4zQzI0NyA3OS41MiAyMDkuMjYgMTkxLjI5IDIwMC42NSAyMTQuMWMtMjkuNzUgNzguODMtODkuNTUgOTQuNjgtOTguNzIgOTguMDktMjQuODYgOS4yNi01NC43MyAyMC4zOC05MS4wNyA1MC4zNkMtMyAzNzQtMy42MyAzOTUgOS4wNyA0MDcuNjFsMzUuNzYgMzUuNTFDODAgNDEwLjUyIDEwNyA0MDAuMTUgMTMzIDM5MC4zOWMyNi4yNy05Ljg0IDUxLjA2LTE5LjEyIDg1LjkyLTU0em0zNDgtMjMybC0zNS43NS0zNS41MWMtMzUuMTkgMzIuNjMtNjIuMTggNDMtODguMjUgNTIuNzktMjYuMjYgOS44NS01MS4wNiAxOS4xNi04NS45NSA1NHMtNDQuMTkgNTkuNjktNTQgODZDMjkyLjMzIDI5MCAyODEuMzQgMzE5LjIyIDI0MS41NSAzNTlzLTY5IDUwLjczLTk3LjMgNjEuMzJjLTIzLjg2IDktNDYuNjEgMTcuNjYtNzYuNzIgNDUuMzNsMzcuNjggMzcuNDNhMzEgMzEgMCAwIDAgNDAuMTggMi44MmMxMy42LTEwLjA2IDI1LjA5LTE0LjM0IDQwLjk0LTIwLjI0IDE0Mi4yLTUzIDE4MC0xNjQuMSAxODguOTQtMTg3LjY5QzQwNSAyMTkuMTggNDY0LjggMjAzLjMgNDc0IDE5OS44NmMyNC44Ny05LjI3IDU0Ljc0LTIwLjQgOTEuMTEtNTAuNDEgMTMuODktMTEuNCAxNC41Mi0zMi40NSAxLjgyLTQ1LjA1elwiXVxufTtcbnZhciBmYUJhY3RlcmlhID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhY3RlcmlhJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlMDU5XCIsIFwiTTI3Mi4zNSwyMjYuNEExNy43MSwxNy43MSwwLDAsMCwyODEuNDYsMjAzbC00LTkuMDhhMTIxLjI5LDEyMS4yOSwwLDAsMSwxMi4zNi0zLjA4QTgzLjM0LDgzLjM0LDAsMCwwLDMyMy41NywxNzdsMTAsOWExNy43NiwxNy43NiwwLDEsMCwyMy45Mi0yNi4yN2wtOS43Mi04Ljc2YTgzLjEyLDgzLjEyLDAsMCwwLDExLjY1LTQ4LjE4bDExLjg1LTMuNTFhMTcuNzMsMTcuNzMsMCwxLDAtMTAuMTUtMzRsLTExLjM0LDMuMzZhODQsODQsMCwwLDAtMzYuMzgtMzUuNTdsMi44NC0xMC44NWExNy44LDE3LjgsMCwwLDAtMzQuNDctOC45M2wtMi44MiwxMC43OGE4My4yNSw4My4yNSwwLDAsMC0xNi43NCwxLjFDMjUwLjgzLDI3LDI0MCwzMC4yMiwyMjkuMSwzMy4zOWwtMy4zOC05LjQ2YTE3LjgsMTcuOCwwLDAsMC0zMy41NiwxMS44OWwzLjQ5LDkuOGEyODYuNzQsMjg2Ljc0LDAsMCwwLTQzLjk0LDIzLjU3bC02LjMyLTguNDNhMTcuOSwxNy45LDAsMCwwLTI0Ljk0LTMuNkExNy42OSwxNy42OSwwLDAsMCwxMTYuODQsODJsNi40NSw4LjYxYTI4Ni41OSwyODYuNTksMCwwLDAtMzQuOTUsMzUuMzNsLTguODItNi40MmExNy44NCwxNy44NCwwLDAsMC0yNC44OSwzLjg2LDE3LjY2LDE3LjY2LDAsMCwwLDMuODgsMjQuNzdsOC44OCw2LjQ3YTI4Ni42LDI4Ni42LDAsMCwwLTIzLDQzLjkxbC0xMC40OC0zLjU5YTE3LjczLDE3LjczLDAsMSwwLTExLjU5LDMzLjUyTDMyLjY3LDIzMmMtMi43OSwxMC01Ljc5LDE5Ljg0LTcuNTIsMzAuMjJhODMuMTYsODMuMTYsMCwwLDAtLjgyLDE5bC0xMS41OCwzLjQzYTE3LjczLDE3LjczLDAsMSwwLDEwLjEzLDM0bDExLjI3LTMuMzNhODMuNTEsODMuNTEsMCwwLDAsMzYuMzksMzUuNDNsLTIuODgsMTEuMDZhMTcuODEsMTcuODEsMCwwLDAsMzQuNDgsOC45MmwyLjg3LTExYzEsMCwyLjA3LjI2LDMuMS4yNmE4My4zOSw4My4zOSwwLDAsMCw0NS42NS0xMy44OGw4LjU5LDguOGExNy43NywxNy43NywwLDAsMCwyNS41Ni0yNC43bC05LjE0LTkuMzdhODMuNDEsODMuNDEsMCwwLDAsMTIuMDgtMzEuMDUsMTE5LjA4LDExOS4wOCwwLDAsMSwzLjg3LTE1LjUzbDksNC4yMmExNy43NCwxNy43NCwwLDEsMCwxNS4xNS0zMi4wOWwtOC44LTQuMTFjLjY3LTEsMS4yLTIuMDgsMS45LTMuMDVhMTE5Ljg5LDExOS44OSwwLDAsMSw3Ljg3LTkuNDEsMTIxLjczLDEyMS43MywwLDAsMSwxMS42NS0xMS40LDExOS40OSwxMTkuNDksMCwwLDEsOS45NC03LjgyYzEuMTItLjc3LDIuMzItMS40MiwzLjQ3LTIuMTVsMy45Miw4Ljg1YTE3Ljg2LDE3Ljg2LDAsMCwwLDE2LjMyLDEwLjU4QTE4LjE0LDE4LjE0LDAsMCwwLDI3Mi4zNSwyMjYuNFpNMTI4LDI1NmEzMiwzMiwwLDEsMSwzMi0zMkEzMiwzMiwwLDAsMSwxMjgsMjU2Wm04MC05NmExNiwxNiwwLDEsMSwxNi0xNkExNiwxNiwwLDAsMSwyMDgsMTYwWm00MzEuMjYsNDUuM2ExNy43OSwxNy43OSwwLDAsMC0xNy4wNi0xMi42OSwxNy41NSwxNy41NSwwLDAsMC01LjA4Ljc0bC0xMS4yNywzLjMzYTgzLjYxLDgzLjYxLDAsMCwwLTM2LjM5LTM1LjQzbDIuODgtMTEuMDZhMTcuODEsMTcuODEsMCwwLDAtMzQuNDgtOC45MWwtMi44NywxMWMtMSwwLTIuMDctLjI2LTMuMS0uMjZhODMuMzIsODMuMzIsMCwwLDAtNDUuNjUsMTMuODlsLTguNTktOC44MWExNy43NywxNy43NywwLDAsMC0yNS41NiwyNC43bDkuMTQsOS4zN2E4My4yOCw4My4yOCwwLDAsMC0xMi4wOCwzMS4wNiwxMTkuMzQsMTE5LjM0LDAsMCwxLTMuODcsMTUuNTJsLTktNC4yMmExNy43NCwxNy43NCwwLDEsMC0xNS4xNSwzMi4wOWw4LjgsNC4xMWMtLjY3LDEtMS4yLDIuMDgtMS44OSwzLjA1YTExNy43MSwxMTcuNzEsMCwwLDEtNy45NCw5LjQ3LDExOSwxMTksMCwwLDEtMTEuNTcsMTEuMzMsMTIxLjU5LDEyMS41OSwwLDAsMS0xMCw3LjgzYy0xLjEyLjc3LTIuMzIsMS40Mi0zLjQ3LDIuMTVsLTMuOTItOC44NWExNy44NiwxNy44NiwwLDAsMC0xNi4zMi0xMC41OCwxOC4xNCwxOC4xNCwwLDAsMC03LjE4LDEuNUExNy43MSwxNy43MSwwLDAsMCwzNTguNTQsMzA5bDQsOS4wOGExMTguNzEsMTE4LjcxLDAsMCwxLTEyLjM2LDMuMDgsODMuMzQsODMuMzQsMCwwLDAtMzMuNzcsMTMuOWwtMTAtOWExNy43NywxNy43NywwLDEsMC0yMy45MiwyNi4yOGw5LjcyLDguNzVhODMuMTIsODMuMTIsMCwwLDAtMTEuNjUsNDguMThsLTExLjg2LDMuNTFhMTcuNzMsMTcuNzMsMCwxLDAsMTAuMTYsMzRsMTEuMzQtMy4zNkE4NCw4NCwwLDAsMCwzMjYuNjEsNDc5bC0yLjg0LDEwLjg1YTE3LjgsMTcuOCwwLDAsMCwzNC40Nyw4LjkzTDM2MS4wNiw0ODhhODMuMyw4My4zLDAsMCwwLDE2Ljc0LTEuMWMxMS4zNy0xLjg5LDIyLjI0LTUuMDcsMzMuMS04LjI0bDMuMzgsOS40NmExNy44LDE3LjgsMCwwLDAsMzMuNTYtMTEuODlsLTMuNDktOS43OWEyODcuNjYsMjg3LjY2LDAsMCwwLDQzLjk0LTIzLjU4bDYuMzIsOC40M2ExNy44OCwxNy44OCwwLDAsMCwyNC45MywzLjZBMTcuNjcsMTcuNjcsMCwwLDAsNTIzLjE2LDQzMGwtNi40NS04LjYxYTI4Ny4zNywyODcuMzcsMCwwLDAsMzQuOTUtMzUuMzRsOC44Miw2LjQyYTE3Ljc2LDE3Ljc2LDAsMSwwLDIxLTI4LjYzbC04Ljg4LTYuNDZhMjg3LjE3LDI4Ny4xNywwLDAsMCwyMy00My45MmwxMC40OCwzLjU5YTE3LjczLDE3LjczLDAsMSwwLDExLjU5LTMzLjUyTDYwNy4zMywyODBjMi43OS0xMCw1Ljc5LTE5Ljg0LDcuNTItMzAuMjFhODMuMjcsODMuMjcsMCwwLDAsLjgyLTE5LjA1bDExLjU4LTMuNDNBMTcuNywxNy43LDAsMCwwLDYzOS4yNiwyMDUuM1pNNDE2LDQxNmEzMiwzMiwwLDEsMSwzMi0zMkEzMiwzMiwwLDAsMSw0MTYsNDE2WlwiXVxufTtcbnZhciBmYUJhY3Rlcml1bSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYWN0ZXJpdW0nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImUwNWFcIiwgXCJNNTExLDEwMi45M0EyMy43NiwyMy43NiwwLDAsMCw0ODEuNDcsODdsLTE1LjEyLDQuNDhhMTExLjg1LDExMS44NSwwLDAsMC00OC41LTQ3LjQybDMuNzktMTQuNDdhMjMuNzQsMjMuNzQsMCwwLDAtNDYtMTEuOTFsLTMuNzYsMTQuMzdhMTExLjk0LDExMS45NCwwLDAsMC0yMi4zMywxLjQ3LDM4Ni43NCwzODYuNzQsMCwwLDAtNDQuMzMsMTAuNDFsLTQuMy0xMmEyMy43NCwyMy43NCwwLDAsMC00NC43NSwxNS44NWw0LjMsMTIuMDVhMzgzLjQsMzgzLjQsMCwwLDAtNTguNjksMzEuODNsLTgtMTAuNjNhMjMuODUsMjMuODUsMCwwLDAtMzMuMjQtNC44LDIzLjU3LDIzLjU3LDAsMCwwLTQuODMsMzMuMDlsOCwxMC42M2EzODYuMTQsMzg2LjE0LDAsMCwwLTQ2LjcsNDcuNDRsLTExLThhMjMuNjgsMjMuNjgsMCwxLDAtMjgsMzguMTdsMTEuMDksOC4wNmEzODMuNDUsMzgzLjQ1LDAsMCwwLTMwLjkyLDU4Ljc1bC0xMi45My00LjQzYTIzLjY1LDIzLjY1LDAsMSwwLTE1LjQ3LDQ0LjY5bDEzLDQuNDhhMzg1LjgxLDM4NS44MSwwLDAsMC05LjMsNDAuNTNBMTExLjU4LDExMS41OCwwLDAsMCwzMi40NCwzNzVMMTcsMzc5LjU2YTIzLjY0LDIzLjY0LDAsMCwwLDEzLjUxLDQ1LjMxbDE1LTQuNDRhMTExLjQ5LDExMS40OSwwLDAsMCw0OC41Myw0Ny4yNGwtMy44NSwxNC43NWEyMy42NiwyMy42NiwwLDAsMCwxNywyOC44MywyNC43LDI0LjcsMCwwLDAsNiwuNzUsMjMuNzMsMjMuNzMsMCwwLDAsMjMtMTcuN0wxNDAsNDc5LjY3YzEuMzcuMDUsMi43Ny4zNSw0LjEzLjM1QTExMS4yMiwxMTEuMjIsMCwwLDAsMjA1LDQ2MS41bDExLjQ1LDExLjc0YTIzLjcsMjMuNywwLDAsMCwzNC4wOC0zMi45M2wtMTIuMTktMTIuNWExMTEsMTExLDAsMCwwLDE2LjExLTQxLjQsMTU4LjY5LDE1OC42OSwwLDAsMSw1LjE2LTIwLjcxbDEyLDUuNjRhMjMuNjYsMjMuNjYsMCwxLDAsMjAuMTktNDIuNzlsLTExLjcyLTUuNDljLjg5LTEuMzIsMS41OS0yLjc3LDIuNTItNC4wNmExNTcuODYsMTU3Ljg2LDAsMCwxLDEwLjQ2LTEyLjQ5LDE1OS41LDE1OS41LDAsMCwxLDE1LjU5LTE1LjI4LDE2Mi4xOCwxNjIuMTgsMCwwLDEsMTMuMjMtMTAuNGMxLjUtMSwzLjEtMS44OSw0LjYzLTIuODdsNS4yMywxMS44YTIzLjc0LDIzLjc0LDAsMCwwLDQzLjQ4LTE5LjA4bC01LjM2LTEyLjExYTE1OC44NywxNTguODcsMCwwLDEsMTYuNDktNC4xLDExMSwxMTEsMCwwLDAsNDUtMTguNTRsMTMuMzMsMTJhMjMuNjksMjMuNjksMCwxLDAsMzEuODgtMzVsLTEyLjk0LTExLjY3QTExMC44MywxMTAuODMsMCwwLDAsNDc5LjIxLDEzN0w0OTUsMTMyLjMyQTIzLjYxLDIzLjYxLDAsMCwwLDUxMSwxMDIuOTNaTTE2MCwzNjhhNDgsNDgsMCwxLDEsNDgtNDhBNDgsNDgsMCwwLDEsMTYwLDM2OFptODAtMTM2YTI0LDI0LDAsMSwxLDI0LTI0QTI0LDI0LDAsMCwxLDI0MCwyMzJaXCJdXG59O1xudmFyIGZhQmFoYWkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFoYWknLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY2NjZcIiwgXCJNNDk2LjI1IDIwMi41MmwtMTEwLTE1LjQ0IDQxLjgyLTEwNC4zNGM2LjY3LTE2LjY0LTExLjYtMzIuMTgtMjYuNTktMjIuNjNMMzA3LjQ0IDEyMCAyNzMuMzUgMTIuODJDMjcwLjY0IDQuMjcgMjYzLjMyIDAgMjU2IDBjLTcuMzIgMC0xNC42NCA0LjI3LTE3LjM1IDEyLjgybC0zNC4wOSAxMDcuMTktOTQuMDQtNTkuODljLTE0Ljk5LTkuNTUtMzMuMjUgNS45OS0yNi41OSAyMi42M2w0MS44MiAxMDQuMzQtMTEwIDE1LjQzYy0xNy41NCAyLjQ2LTIxLjY4IDI2LjI3LTYuMDMgMzQuNjdsOTguMTYgNTIuNjYtNzQuNDggODMuNTRjLTEwLjkyIDEyLjI1LTEuNzIgMzAuOTMgMTMuMjkgMzAuOTMgMS4zMSAwIDIuNjctLjE0IDQuMDctLjQ1bDEwOC41Ny0yMy42NS00LjExIDExMi41NWMtLjQzIDExLjY1IDguODcgMTkuMjIgMTguNDEgMTkuMjIgNS4xNSAwIDEwLjM5LTIuMjEgMTQuMi03LjE4bDY4LjE4LTg4LjkgNjguMTggODguOWMzLjgxIDQuOTcgOS4wNCA3LjE4IDE0LjIgNy4xOCA5LjU0IDAgMTguODQtNy41NyAxOC40MS0xOS4yMmwtNC4xMS0xMTIuNTUgMTA4LjU3IDIzLjY1YzE3LjM2IDMuNzYgMjkuMjEtMTcuMiAxNy4zNS0zMC40OWwtNzQuNDgtODMuNTQgOTguMTYtNTIuNjZjMTUuNjQtOC4zOSAxMS41LTMyLjItNi4wNC0zNC42NnpNMzM4LjUxIDMxMS42OGwtNTEuODktMTEuMyAxLjk3IDUzLjc5TDI1NiAzMTEuNjhsLTMyLjU5IDQyLjQ5IDEuOTYtNTMuNzktNTEuODkgMTEuMyAzNS42LTM5LjkzLTQ2LjkyLTI1LjE3IDUyLjU3LTcuMzgtMTkuOTktNDkuODcgNDQuOTUgMjguNjJMMjU2IDE2Ni43MmwxNi4yOSA1MS4yMyA0NC45NS0yOC42Mi0xOS45OSA0OS44NyA1Mi41NyA3LjM4LTQ2LjkyIDI1LjE3IDM1LjYxIDM5LjkzelwiXVxufTtcbnZhciBmYUJhbGFuY2VTY2FsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYWxhbmNlLXNjYWxlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMjRlXCIsIFwiTTI1NiAzMzZoLS4wMmMwLTE2LjE4IDEuMzQtOC43My04NS4wNS0xODEuNTEtMTcuNjUtMzUuMjktNjguMTktMzUuMzYtODUuODcgMEMtMi4wNiAzMjguNzUuMDIgMzIwLjMzLjAyIDMzNkgwYzAgNDQuMTggNTcuMzEgODAgMTI4IDgwczEyOC0zNS44MiAxMjgtODB6TTEyOCAxNzZsNzIgMTQ0SDU2bDcyLTE0NHptNTExLjk4IDE2MGMwLTE2LjE4IDEuMzQtOC43My04NS4wNS0xODEuNTEtMTcuNjUtMzUuMjktNjguMTktMzUuMzYtODUuODcgMC04Ny4xMiAxNzQuMjYtODUuMDQgMTY1Ljg0LTg1LjA0IDE4MS41MUgzODRjMCA0NC4xOCA1Ny4zMSA4MCAxMjggODBzMTI4LTM1LjgyIDEyOC04MGgtLjAyek00NDAgMzIwbDcyLTE0NCA3MiAxNDRINDQwem04OCAxMjhIMzUyVjE1My4yNWMyMy41MS0xMC4yOSA0MS4xNi0zMS40OCA0Ni4zOS01Ny4yNUg1MjhjOC44NCAwIDE2LTcuMTYgMTYtMTZWNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMzgzLjY0QzM2OS4wNCAxMi42OCAzNDYuMDkgMCAzMjAgMHMtNDkuMDQgMTIuNjgtNjMuNjQgMzJIMTEyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgxMjkuNjFjNS4yMyAyNS43NiAyMi44NyA0Ni45NiA0Ni4zOSA1Ny4yNVY0NDhIMTEyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0MTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2elwiXVxufTtcbnZhciBmYUJhbGFuY2VTY2FsZUxlZnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFsYW5jZS1zY2FsZS1sZWZ0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTE1XCIsIFwiTTUyOCA0NDhIMzUyVjE1My4yNWMyMC40Mi04Ljk0IDM2LjEtMjYuMjIgNDMuMzgtNDcuNDdsMTMyLTQ0LjI2YzguMzgtMi44MSAxMi44OS0xMS44OCAxMC4wOC0yMC4yNmwtMTAuMTctMzAuMzRDNTI0LjQ4IDIuNTQgNTE1LjQxLTEuOTcgNTA3LjAzLjg0TDM4OS4xMSA0MC4zN0MzNzUuMyAxNi4zNiAzNDkuNjkgMCAzMjAgMGMtNDQuMTggMC04MCAzNS44Mi04MCA4MCAwIDMuNDMuNTkgNi43MSAxLjAxIDEwLjAzbC0xMjguMzkgNDMuMDVjLTguMzggMi44MS0xMi44OSAxMS44OC0xMC4wOCAyMC4yNmwxMC4xNyAzMC4zNGMyLjgxIDguMzggMTEuODggMTIuODkgMjAuMjYgMTAuMDhsMTQyLjA1LTQ3LjYzYzQuMDcgMi43NyA4LjQzIDUuMTIgMTIuOTkgNy4xMlY0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMjI0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMtLjAxLTguODQtNy4xNy0xNi0xNi4wMS0xNnptMTExLjk4LTE0NGMwLTE2LjE4IDEuMzQtOC43My04NS4wNS0xODEuNTEtMTcuNjUtMzUuMjktNjguMTktMzUuMzYtODUuODcgMC04Ny4xMiAxNzQuMjYtODUuMDQgMTY1Ljg0LTg1LjA0IDE4MS41MUgzODRjMCA0NC4xOCA1Ny4zMSA4MCAxMjggODBzMTI4LTM1LjgyIDEyOC04MGgtLjAyek00NDAgMjg4bDcyLTE0NCA3MiAxNDRINDQwem0tMjY5LjA3LTM3LjUxYy0xNy42NS0zNS4yOS02OC4xOS0zNS4zNi04NS44NyAwQy0yLjA2IDQyNC43NS4wMiA0MTYuMzMuMDIgNDMySDBjMCA0NC4xOCA1Ny4zMSA4MCAxMjggODBzMTI4LTM1LjgyIDEyOC04MGgtLjAyYzAtMTYuMTggMS4zNC04LjczLTg1LjA1LTE4MS41MXpNNTYgNDE2bDcyLTE0NCA3MiAxNDRINTZ6XCJdXG59O1xudmFyIGZhQmFsYW5jZVNjYWxlUmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFsYW5jZS1zY2FsZS1yaWdodCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjUxNlwiLCBcIk05NiA0NjR2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMjI0YzguODQgMCAxNi03LjE2IDE2LTE2VjE1My4yNWM0LjU2LTIgOC45Mi00LjM1IDEyLjk5LTcuMTJsMTQyLjA1IDQ3LjYzYzguMzggMi44MSAxNy40NS0xLjcxIDIwLjI2LTEwLjA4bDEwLjE3LTMwLjM0YzIuODEtOC4zOC0xLjcxLTE3LjQ1LTEwLjA4LTIwLjI2bC0xMjguNC00My4wNWMuNDItMy4zMiAxLjAxLTYuNiAxLjAxLTEwLjAzIDAtNDQuMTgtMzUuODItODAtODAtODAtMjkuNjkgMC01NS4zIDE2LjM2LTY5LjExIDQwLjM3TDEzMi45Ni44M2MtOC4zOC0yLjgxLTE3LjQ1IDEuNzEtMjAuMjYgMTAuMDhsLTEwLjE3IDMwLjM0Yy0yLjgxIDguMzggMS43MSAxNy40NSAxMC4wOCAyMC4yNmwxMzIgNDQuMjZjNy4yOCAyMS4yNSAyMi45NiAzOC41NCA0My4zOCA0Ny40N1Y0NDhIMTEyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnpNMCAzMDRjMCA0NC4xOCA1Ny4zMSA4MCAxMjggODBzMTI4LTM1LjgyIDEyOC04MGgtLjAyYzAtMTUuNjcgMi4wOC03LjI1LTg1LjA1LTE4MS41MS0xNy42OC0zNS4zNi02OC4yMi0zNS4yOS04NS44NyAwQy0xLjMyIDI5NS4yNy4wMiAyODcuODIuMDIgMzA0SDB6bTU2LTE2bDcyLTE0NCA3MiAxNDRINTZ6bTMyOC4wMiAxNDRIMzg0YzAgNDQuMTggNTcuMzEgODAgMTI4IDgwczEyOC0zNS44MiAxMjgtODBoLS4wMmMwLTE1LjY3IDIuMDgtNy4yNS04NS4wNS0xODEuNTEtMTcuNjgtMzUuMzYtNjguMjItMzUuMjktODUuODcgMC04Ni4zOCAxNzIuNzgtODUuMDQgMTY1LjMzLTg1LjA0IDE4MS41MXpNNDQwIDQxNmw3Mi0xNDQgNzIgMTQ0SDQ0MHpcIl1cbn07XG52YXIgZmFCYW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFuJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDVlXCIsIFwiTTI1NiA4QzExOS4wMzQgOCA4IDExOS4wMzMgOCAyNTZzMTExLjAzNCAyNDggMjQ4IDI0OCAyNDgtMTExLjAzNCAyNDgtMjQ4UzM5Mi45NjcgOCAyNTYgOHptMTMwLjEwOCAxMTcuODkyYzY1LjQ0OCA2NS40NDggNzAgMTY1LjQ4MSAyMC42NzcgMjM1LjYzN0wxNTAuNDcgMTA1LjIxNmM3MC4yMDQtNDkuMzU2IDE3MC4yMjYtNDQuNzM1IDIzNS42MzggMjAuNjc2ek0xMjUuODkyIDM4Ni4xMDhjLTY1LjQ0OC02NS40NDgtNzAtMTY1LjQ4MS0yMC42NzctMjM1LjYzN0wzNjEuNTMgNDA2Ljc4NGMtNzAuMjAzIDQ5LjM1Ni0xNzAuMjI2IDQ0LjczNi0yMzUuNjM4LTIwLjY3NnpcIl1cbn07XG52YXIgZmFCYW5kQWlkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhbmQtYWlkJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNDYyXCIsIFwiTTAgMTYwdjE5MmMwIDM1LjMgMjguNyA2NCA2NCA2NGg5NlY5Nkg2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjR6bTU3Ni02NGgtOTZ2MzIwaDk2YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MGMwLTM1LjMtMjguNy02NC02NC02NHpNMTkyIDQxNmgyNTZWOTZIMTkydjMyMHptMTc2LTIzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNC0yNC0xMC43LTI0LTI0IDEwLjctMjQgMjQtMjR6bTAgOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjQtMjQtMTAuNy0yNC0yNCAxMC43LTI0IDI0LTI0em0tOTYtOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjQtMjQtMTAuNy0yNC0yNCAxMC43LTI0IDI0LTI0em0wIDk2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHpcIl1cbn07XG52YXIgZmFCYXJjb2RlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhcmNvZGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwMmFcIiwgXCJNMCA0NDhWNjRoMTh2Mzg0SDB6bTI2Ljg1Ny0uMjczVjY0SDM2djM4My43MjdoLTkuMTQzem0yNy4xNDMgMFY2NGg4Ljg1N3YzODMuNzI3SDU0em00NC44NTcgMFY2NGg4Ljg1N3YzODMuNzI3aC04Ljg1N3ptMzYgMFY2NGgxNy43MTR2MzgzLjcyN2gtMTcuNzE0em00NC44NTcgMFY2NGg4Ljg1N3YzODMuNzI3aC04Ljg1N3ptMTggMFY2NGg4Ljg1N3YzODMuNzI3aC04Ljg1N3ptMTggMFY2NGg4Ljg1N3YzODMuNzI3aC04Ljg1N3ptMzUuNzE1IDBWNjRoMTh2MzgzLjcyN2gtMTh6bTQ0Ljg1NyAwVjY0aDE4djM4My43MjdoLTE4em0zNS45OTkgMFY2NGgxOC4wMDF2MzgzLjcyN2gtMTguMDAxem0zNi4wMDEgMFY2NGgxOC4wMDF2MzgzLjcyN2gtMTguMDAxem0yNi44NTcgMFY2NGgxOHYzODMuNzI3aC0xOHptNDUuMTQzIDBWNjRoMjYuODU3djM4My43MjdoLTI2Ljg1N3ptMzUuNzE0IDBWNjRoOS4xNDN2MzgzLjcyN0g0NzZ6bTE4IC4yNzNWNjRoMTh2Mzg0aC0xOHpcIl1cbn07XG52YXIgZmFCYXJzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhcnMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwYzlcIiwgXCJNMTYgMTMyaDQxNmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2Vjc2YzAtOC44MzctNy4xNjMtMTYtMTYtMTZIMTZDNy4xNjMgNjAgMCA2Ny4xNjMgMCA3NnY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2em0wIDE2MGg0MTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtNDBjMC04LjgzNy03LjE2My0xNi0xNi0xNkgxNmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2em0wIDE2MGg0MTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtNDBjMC04LjgzNy03LjE2My0xNi0xNi0xNkgxNmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2elwiXVxufTtcbnZhciBmYUJhc2ViYWxsQmFsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYXNlYmFsbC1iYWxsJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNDMzXCIsIFwiTTM2OC41IDM2My45bDI4LjgtMTMuOWMxMS4xIDIyLjkgMjYgNDMuMiA0NC4xIDYwLjkgMzQtNDIuNSA1NC41LTk2LjMgNTQuNS0xNTQuOSAwLTU4LjUtMjAuNC0xMTIuMi01NC4yLTE1NC42LTE3LjggMTcuMy0zMi42IDM3LjEtNDMuNiA1OS41bC0yOC43LTE0LjFjMTIuOC0yNiAzMC00OSA1MC44LTY5QzM3NS42IDM0LjcgMzE1IDggMjQ4IDggMTgxLjEgOCAxMjAuNSAzNC42IDc1LjkgNzcuN2MyMC43IDE5LjkgMzcuOSA0Mi45IDUwLjcgNjguOGwtMjguNyAxNC4xYy0xMS0yMi4zLTI1LjctNDIuMS00My41LTU5LjRDMjAuNCAxNDMuNyAwIDE5Ny40IDAgMjU2YzAgNTguNiAyMC40IDExMi4zIDU0LjQgMTU0LjcgMTguMi0xNy43IDMzLjItMzggNDQuMy02MWwyOC44IDEzLjljLTEyLjkgMjYuNy0zMC4zIDUwLjMtNTEuNSA3MC43IDQ0LjUgNDMuMSAxMDUuMSA2OS43IDE3MiA2OS43IDY2LjggMCAxMjcuMy0yNi41IDE3MS45LTY5LjUtMjEuMS0yMC40LTM4LjUtNDMuOS01MS40LTcwLjZ6bS0yMjguMy0zMmwtMzAuNS05LjhjMTQuOS00Ni40IDEyLjctOTMuOC0uNi0xMzRsMzAuNC0xMGMxNSA0NS42IDE4IDk5LjkuNyAxNTMuOHptMjE2LjMtMTUzLjRsMzAuNCAxMGMtMTMuMiA0MC4xLTE1LjUgODcuNS0uNiAxMzRsLTMwLjUgOS44Yy0xNy4zLTU0LTE0LjMtMTA4LjMuNy0xNTMuOHpcIl1cbn07XG52YXIgZmFCYXNrZXRiYWxsQmFsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYXNrZXRiYWxsLWJhbGwnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY0MzRcIiwgXCJNMjEyLjMgMTAuM2MtNDMuOCA2LjMtODYuMiAyNC4xLTEyMi4yIDUzLjhsNzcuNCA3Ny40YzI3LjgtMzUuOCA0My4zLTgxLjIgNDQuOC0xMzEuMnpNMjQ4IDIyMkw0MDUuOSA2NC4xYy00Mi40LTM1LTkzLjYtNTMuNS0xNDUuNS01Ni4xLTEuMiA2My45LTIxLjUgMTIyLjMtNTguNyAxNjcuN0wyNDggMjIyek01Ni4xIDk4LjFjLTI5LjcgMzYtNDcuNSA3OC40LTUzLjggMTIyLjIgNTAtMS41IDk1LjUtMTcgMTMxLjItNDQuOEw1Ni4xIDk4LjF6bTI3Mi4yIDIwNC4yYzQ1LjMtMzcuMSAxMDMuNy01Ny40IDE2Ny43LTU4LjctMi42LTUxLjktMjEuMS0xMDMuMS01Ni4xLTE0NS41TDI4MiAyNTZsNDYuMyA0Ni4zek0yNDggMjkwTDkwLjEgNDQ3LjljNDIuNCAzNC45IDkzLjYgNTMuNSAxNDUuNSA1Ni4xIDEuMy02NCAyMS42LTEyMi40IDU4LjctMTY3LjdMMjQ4IDI5MHptMTkxLjkgMTIzLjljMjkuNy0zNiA0Ny41LTc4LjQgNTMuOC0xMjIuMi01MC4xIDEuNi05NS41IDE3LjEtMTMxLjIgNDQuOGw3Ny40IDc3LjR6TTE2Ny43IDIwOS43QzEyMi4zIDI0Ni45IDYzLjkgMjY3LjMgMCAyNjguNGMyLjYgNTEuOSAyMS4xIDEwMy4xIDU2LjEgMTQ1LjVMMjE0IDI1NmwtNDYuMy00Ni4zem0xMTYgMjkyYzQzLjgtNi4zIDg2LjItMjQuMSAxMjIuMi01My44bC03Ny40LTc3LjRjLTI3LjcgMzUuNy00My4yIDgxLjItNDQuOCAxMzEuMnpcIl1cbn07XG52YXIgZmFCYXRoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhdGgnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyY2RcIiwgXCJNMzIsMzg0YTk1LjQsOTUuNCwwLDAsMCwzMiw3MS4wOVY0OTZhMTYsMTYsMCwwLDAsMTYsMTZoMzJhMTYsMTYsMCwwLDAsMTYtMTZWNDgwSDM4NHYxNmExNiwxNiwwLDAsMCwxNiwxNmgzMmExNiwxNiwwLDAsMCwxNi0xNlY0NTUuMDlBOTUuNCw5NS40LDAsMCwwLDQ4MCwzODRWMzM2SDMyWk00OTYsMjU2SDgwVjY5LjI1YTIxLjI2LDIxLjI2LDAsMCwxLDM2LjI4LTE1bDE5LjI3LDE5LjI2Yy0xMy4xMywyOS44OC03LjYxLDU5LjExLDguNjIsNzkuNzNsLS4xNy4xN0ExNiwxNiwwLDAsMCwxNDQsMTc2bDExLjMxLDExLjMxYTE2LDE2LDAsMCwwLDIyLjYzLDBMMjgzLjMxLDgxLjk0YTE2LDE2LDAsMCwwLDAtMjIuNjNMMjcyLDQ4YTE2LDE2LDAsMCwwLTIyLjYyLDBsLS4xNy4xN2MtMjAuNjItMTYuMjMtNDkuODMtMjEuNzUtNzkuNzMtOC42MkwxNTAuMjIsMjAuMjhBNjkuMjUsNjkuMjUsMCwwLDAsMzIsNjkuMjVWMjU2SDE2QTE2LDE2LDAsMCwwLDAsMjcydjE2YTE2LDE2LDAsMCwwLDE2LDE2SDQ5NmExNiwxNiwwLDAsMCwxNi0xNlYyNzJBMTYsMTYsMCwwLDAsNDk2LDI1NlpcIl1cbn07XG52YXIgZmFCYXR0ZXJ5RW1wdHkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmF0dGVyeS1lbXB0eScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjI0NFwiLCBcIk01NDQgMTYwdjY0aDMydjY0aC0zMnY2NEg2NFYxNjBoNDgwbTE2LTY0SDQ4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djIyNGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDUxMmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4di0xNmg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYxODRjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0aC04di0xNmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4elwiXVxufTtcbnZhciBmYUJhdHRlcnlGdWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhdHRlcnktZnVsbCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjI0MFwiLCBcIk01NDQgMTYwdjY0aDMydjY0aC0zMnY2NEg2NFYxNjBoNDgwbTE2LTY0SDQ4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djIyNGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDUxMmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4di0xNmg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYxODRjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0aC04di0xNmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0tNDggOTZIOTZ2MTI4aDQxNlYxOTJ6XCJdXG59O1xudmFyIGZhQmF0dGVyeUhhbGYgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmF0dGVyeS1oYWxmJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMjQyXCIsIFwiTTU0NCAxNjB2NjRoMzJ2NjRoLTMydjY0SDY0VjE2MGg0ODBtMTYtNjRINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNTEyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTE2aDhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE4NGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTh2LTE2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS0yNDAgOTZIOTZ2MTI4aDIyNFYxOTJ6XCJdXG59O1xudmFyIGZhQmF0dGVyeVF1YXJ0ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmF0dGVyeS1xdWFydGVyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMjQzXCIsIFwiTTU0NCAxNjB2NjRoMzJ2NjRoLTMydjY0SDY0VjE2MGg0ODBtMTYtNjRINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNTEyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTE2aDhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE4NGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTh2LTE2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS0zMzYgOTZIOTZ2MTI4aDEyOFYxOTJ6XCJdXG59O1xudmFyIGZhQmF0dGVyeVRocmVlUXVhcnRlcnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmF0dGVyeS10aHJlZS1xdWFydGVycycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjI0MVwiLCBcIk01NDQgMTYwdjY0aDMydjY0aC0zMnY2NEg2NFYxNjBoNDgwbTE2LTY0SDQ4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djIyNGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDUxMmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4di0xNmg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYxODRjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0aC04di0xNmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0tMTQ0IDk2SDk2djEyOGgzMjBWMTkyelwiXVxufTtcbnZhciBmYUJlZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiZWQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYyMzZcIiwgXCJNMTc2IDI1NmM0NC4xMSAwIDgwLTM1Ljg5IDgwLTgwcy0zNS44OS04MC04MC04MC04MCAzNS44OS04MCA4MCAzNS44OSA4MCA4MCA4MHptMzUyLTEyOEgzMDRjLTguODQgMC0xNiA3LjE2LTE2IDE2djE0NEg2NFY4MGMwLTguODQtNy4xNi0xNi0xNi0xNkgxNkM3LjE2IDY0IDAgNzEuMTYgMCA4MHYzNTJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTQ4aDUxMnY0OGMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyNDBjMC02MS44Ni01MC4xNC0xMTItMTEyLTExMnpcIl1cbn07XG52YXIgZmFCZWVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JlZXInLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwZmNcIiwgXCJNMzY4IDk2aC00OFY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjRDMTAuNzQ1IDMyIDAgNDIuNzQ1IDAgNTZ2NDAwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgyNzJjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di00Mi4xMWw4MC42MDYtMzUuOTc3QzQyOS4zOTYgMzY1LjA2MyA0NDggMzM2LjM4OCA0NDggMzA0Ljg2VjE3NmMwLTQ0LjExMi0zNS44ODgtODAtODAtODB6bTE2IDIwOC44NmExNi4wMTggMTYuMDE4IDAgMCAxLTkuNDc5IDE0LjYxMUwzMjAgMzQzLjgwNVYxNjBoNDhjOC44MjIgMCAxNiA3LjE3OCAxNiAxNnYxMjguODZ6TTIwOCAzODRjLTguODM2IDAtMTYtNy4xNjQtMTYtMTZWMTQ0YzAtOC44MzYgNy4xNjQtMTYgMTYtMTZzMTYgNy4xNjQgMTYgMTZ2MjI0YzAgOC44MzYtNy4xNjQgMTYtMTYgMTZ6bS05NiAwYy04LjgzNiAwLTE2LTcuMTY0LTE2LTE2VjE0NGMwLTguODM2IDcuMTY0LTE2IDE2LTE2czE2IDcuMTY0IDE2IDE2djIyNGMwIDguODM2LTcuMTY0IDE2LTE2IDE2elwiXVxufTtcbnZhciBmYUJlbGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmVsbCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjBmM1wiLCBcIk0yMjQgNTEyYzM1LjMyIDAgNjMuOTctMjguNjUgNjMuOTctNjRIMTYwLjAzYzAgMzUuMzUgMjguNjUgNjQgNjMuOTcgNjR6bTIxNS4zOS0xNDkuNzFjLTE5LjMyLTIwLjc2LTU1LjQ3LTUxLjk5LTU1LjQ3LTE1NC4yOSAwLTc3LjctNTQuNDgtMTM5LjktMTI3Ljk0LTE1NS4xNlYzMmMwLTE3LjY3LTE0LjMyLTMyLTMxLjk4LTMycy0zMS45OCAxNC4zMy0zMS45OCAzMnYyMC44NEMxMTguNTYgNjguMSA2NC4wOCAxMzAuMyA2NC4wOCAyMDhjMCAxMDIuMy0zNi4xNSAxMzMuNTMtNTUuNDcgMTU0LjI5LTYgNi40NS04LjY2IDE0LjE2LTguNjEgMjEuNzEuMTEgMTYuNCAxMi45OCAzMiAzMi4xIDMyaDM4My44YzE5LjEyIDAgMzItMTUuNiAzMi4xLTMyIC4wNS03LjU1LTIuNjEtMTUuMjctOC42MS0yMS43MXpcIl1cbn07XG52YXIgZmFCZWxsU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmVsbC1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjFmNlwiLCBcIk02MzMuODIgNDU4LjFsLTkwLjYyLTcwLjA1Yy4xOS0xLjM4LjgtMi42Ni44LTQuMDYuMDUtNy41NS0yLjYxLTE1LjI3LTguNjEtMjEuNzEtMTkuMzItMjAuNzYtNTUuNDctNTEuOTktNTUuNDctMTU0LjI5IDAtNzcuNy01NC40OC0xMzkuOS0xMjcuOTQtMTU1LjE2VjMyYzAtMTcuNjctMTQuMzItMzItMzEuOTgtMzJzLTMxLjk4IDE0LjMzLTMxLjk4IDMydjIwLjg0Yy00MC4zMyA4LjM4LTc0LjY2IDMxLjA3LTk3LjU5IDYyLjU3TDQ1LjQ3IDMuMzdDMzguNDktMi4wNSAyOC40My0uOCAyMy4wMSA2LjE4TDMuMzcgMzEuNDVDLTIuMDUgMzguNDItLjggNDguNDcgNi4xOCA1My45bDU4OC4zNSA0NTQuNzNjNi45OCA1LjQzIDE3LjAzIDQuMTcgMjIuNDYtMi44MWwxOS42NC0yNS4yN2M1LjQyLTYuOTcgNC4xNy0xNy4wMi0yLjgxLTIyLjQ1ek0xNTcuMjMgMjUxLjU0Yy04LjYxIDY3Ljk2LTM2LjQxIDkzLjMzLTUyLjYyIDExMC43NS02IDYuNDUtOC42NiAxNC4xNi04LjYxIDIxLjcxLjExIDE2LjQgMTIuOTggMzIgMzIuMSAzMmgyNDEuOTJMMTU3LjIzIDI1MS41NHpNMzIwIDUxMmMzNS4zMiAwIDYzLjk3LTI4LjY1IDYzLjk3LTY0SDI1Ni4wM2MwIDM1LjM1IDI4LjY1IDY0IDYzLjk3IDY0elwiXVxufTtcbnZhciBmYUJlemllckN1cnZlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jlemllci1jdXJ2ZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjU1YlwiLCBcIk0zNjggMzJoLTk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY2NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek0yMDggODhoLTg0Ljc1QzExMy43NSA2NC41NiA5MC44NCA0OCA2NCA0OCAyOC42NiA0OCAwIDc2LjY1IDAgMTEyczI4LjY2IDY0IDY0IDY0YzI2Ljg0IDAgNDkuNzUtMTYuNTYgNTkuMjUtNDBoNzkuNzNjLTU1LjM3IDMyLjUyLTk1Ljg2IDg3LjMyLTEwOS41NCAxNTJoNDkuNGMxMS4zLTQxLjYxIDM2Ljc3LTc3LjIxIDcxLjA0LTEwMS41Ni0zLjctOC4wOC01Ljg4LTE2Ljk5LTUuODgtMjYuNDRWODh6bS00OCAyMzJINjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek01NzYgNDhjLTI2Ljg0IDAtNDkuNzUgMTYuNTYtNTkuMjUgNDBINDMydjcyYzAgOS40NS0yLjE5IDE4LjM2LTUuODggMjYuNDQgMzQuMjcgMjQuMzUgNTkuNzQgNTkuOTUgNzEuMDQgMTAxLjU2aDQ5LjRjLTEzLjY4LTY0LjY4LTU0LjE3LTExOS40OC0xMDkuNTQtMTUyaDc5LjczYzkuNSAyMy40NCAzMi40MSA0MCA1OS4yNSA0MCAzNS4zNCAwIDY0LTI4LjY1IDY0LTY0cy0yOC42Ni02NC02NC02NHptMCAyNzJoLTk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIl1cbn07XG52YXIgZmFCaWJsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiaWJsZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjY0N1wiLCBcIk00NDggMzU4LjRWMjUuNmMwLTE2LTkuNi0yNS42LTI1LjYtMjUuNkg5NkM0MS42IDAgMCA0MS42IDAgOTZ2MzIwYzAgNTQuNCA0MS42IDk2IDk2IDk2aDMyNi40YzEyLjggMCAyNS42LTkuNiAyNS42LTI1LjZ2LTE2YzAtNi40LTMuMi0xMi44LTkuNi0xOS4yLTMuMi0xNi0zLjItNjAuOCAwLTczLjYgNi40LTMuMiA5LjYtOS42IDkuNi0xOS4yek0xNDQgMTQ0YzAtOC44NCA3LjE2LTE2IDE2LTE2aDQ4VjgwYzAtOC44NCA3LjE2LTE2IDE2LTE2aDMyYzguODQgMCAxNiA3LjE2IDE2IDE2djQ4aDQ4YzguODQgMCAxNiA3LjE2IDE2IDE2djMyYzAgOC44NC03LjE2IDE2LTE2IDE2aC00OHYxMTJjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTMyYy04Ljg0IDAtMTYtNy4xNi0xNi0xNlYxOTJoLTQ4Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMzJ6bTIzNi44IDMwNEg5NmMtMTkuMiAwLTMyLTEyLjgtMzItMzJzMTYtMzIgMzItMzJoMjg0Ljh2NjR6XCJdXG59O1xudmFyIGZhQmljeWNsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiaWN5Y2xlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMjA2XCIsIFwiTTUxMi41MDkgMTkyLjAwMWMtMTYuMzczLS4wNjQtMzIuMDMgMi45NTUtNDYuNDM2IDguNDk1bC03Ny42OC0xMjUuMTUzQTI0IDI0IDAgMCAwIDM2OC4wMDEgNjRoLTY0Yy04LjgzNyAwLTE2IDcuMTYzLTE2IDE2djE2YzAgOC44MzcgNy4xNjMgMTYgMTYgMTZoNTAuNjQ5bDE0Ljg5NiAyNEgyNTYuMDAydi0xNmMwLTguODM3LTcuMTYzLTE2LTE2LTE2aC04Ny40NTljLTEzLjQ0MSAwLTI0Ljc3NyAxMC45OTktMjQuNTM2IDI0LjQzNy4yMzIgMTMuMDQ0IDEwLjg3NiAyMy41NjMgMjMuOTk1IDIzLjU2M2g0OC43MjZsLTI5LjQxNyA0Ny41MmMtMTMuNDMzLTQuODMtMjcuOTA0LTcuNDgzLTQyLjk5Mi03LjUyQzU4LjA5NCAxOTEuODMuNDEyIDI0OS4wMTIuMDAyIDMxOS4yMzYtLjQxMyAzOTAuMjc5IDU3LjA1NSA0NDggMTI4LjAwMiA0NDhjNTkuNjQyIDAgMTA5Ljc1OC00MC43OTMgMTIzLjk2Ny05Nmg1Mi4wMzNhMjQgMjQgMCAwIDAgMjAuNDA2LTExLjM2N0w0MTAuMzcgMjAxLjc3bDE0LjkzOCAyNC4wNjdjLTI1LjQ1NSAyMy40NDgtNDEuMzg1IDU3LjA4MS00MS4zMDcgOTQuNDM3LjE0NSA2OC44MzMgNTcuODk5IDEyNy4wNTEgMTI2LjcyOSAxMjcuNzE5IDcwLjYwNi42ODUgMTI4LjE4MS01NS44MDMgMTI5LjI1NS0xMjUuOTk2IDEuMDg2LTcwLjk0MS01Ni41MjYtMTI5LjcyLTEyNy40NzYtMTI5Ljk5NnpNMTg2Ljc1IDI2NS43NzJjOS43MjcgMTAuNTI5IDE2LjY3MyAyMy42NjEgMTkuNjQyIDM4LjIyOGgtNDMuMzA2bDIzLjY2NC0zOC4yMjh6TTEyOC4wMDIgNDAwYy00NC4xMTIgMC04MC0zNS44ODgtODAtODBzMzUuODg4LTgwIDgwLTgwYzUuODY5IDAgMTEuNTg2LjY1MyAxNy4wOTkgMS44NTlsLTQ1LjUwNSA3My41MDlDODkuNzE1IDMzMS4zMjcgMTAxLjIxMyAzNTIgMTIwLjAwMiAzNTJoODEuM2MtMTIuMzcgMjguMjI1LTQwLjU2MiA0OC03My4zIDQ4em0xNjIuNjMtOTZoLTM1LjYyNGMtMy45Ni0zMS43NTYtMTkuNTU2LTU5Ljg5NC00Mi4zODMtODAuMDI2TDIzNy4zNzEgMTg0aDEyNy41NDdsLTc0LjI4NiAxMjB6bTIxNy4wNTcgOTUuODg2Yy00MS4wMzYtMi4xNjUtNzQuMDQ5LTM1LjY5Mi03NS42MjctNzYuNzU1LS44MTItMjEuMTIxIDYuNjMzLTQwLjUxOCAxOS4zMzUtNTUuMjYzbDQ0LjQzMyA3MS41ODZjNC42NiA3LjUwOCAxNC41MjQgOS44MTYgMjIuMDMyIDUuMTU2bDEzLjU5NC04LjQzN2M3LjUwOC00LjY2IDkuODE3LTE0LjUyNCA1LjE1Ni0yMi4wMzJsLTQ0LjQ2OC03MS42NDNhNzkuOTAxIDc5LjkwMSAwIDAgMSAxOS44NTgtMi40OTdjNDQuMTEyIDAgODAgMzUuODg4IDgwIDgwLS4wMDEgNDUuNTQtMzguMjUyIDgyLjMxNi04NC4zMTMgNzkuODg1elwiXVxufTtcbnZhciBmYUJpa2luZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiaWtpbmcnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY4NGFcIiwgXCJNNDAwIDk2YTQ4IDQ4IDAgMSAwLTQ4LTQ4IDQ4IDQ4IDAgMCAwIDQ4IDQ4em0tNCAxMjFhMzEuOSAzMS45IDAgMCAwIDIwIDdoNjRhMzIgMzIgMCAwIDAgMC02NGgtNTIuNzhMMzU2IDEwM2EzMS45NCAzMS45NCAwIDAgMC00MC44MS42OGwtMTEyIDk2YTMyIDMyIDAgMCAwIDMuMDggNTAuOTJMMjg4IDMwNS4xMlY0MTZhMzIgMzIgMCAwIDAgNjQgMFYyODhhMzIgMzIgMCAwIDAtMTQuMjUtMjYuNjJsLTQxLjM2LTI3LjU3IDU4LjI1LTQ5Ljkyem0xMTYgMzlhMTI4IDEyOCAwIDEgMCAxMjggMTI4IDEyOCAxMjggMCAwIDAtMTI4LTEyOHptMCAxOTJhNjQgNjQgMCAxIDEgNjQtNjQgNjQgNjQgMCAwIDEtNjQgNjR6TTEyOCAyNTZhMTI4IDEyOCAwIDEgMCAxMjggMTI4IDEyOCAxMjggMCAwIDAtMTI4LTEyOHptMCAxOTJhNjQgNjQgMCAxIDEgNjQtNjQgNjQgNjQgMCAwIDEtNjQgNjR6XCJdXG59O1xudmFyIGZhQmlub2N1bGFycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiaW5vY3VsYXJzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMWU1XCIsIFwiTTQxNiA0OGMwLTguODQtNy4xNi0xNi0xNi0xNmgtNjRjLTguODQgMC0xNiA3LjE2LTE2IDE2djQ4aDk2VjQ4ek02My45MSAxNTkuOTlDNjEuNCAyNTMuODQgMy40NiAyNzQuMjIgMCA0MDR2NDRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjI4OGgzMlYxMjhIOTUuODRjLTE3LjYzIDAtMzEuNDUgMTQuMzctMzEuOTMgMzEuOTl6bTM4NC4xOCAwYy0uNDgtMTcuNjItMTQuMy0zMS45OS0zMS45My0zMS45OUgzMjB2MTYwaDMydjE2MGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTQ0Yy0zLjQ2LTEyOS43OC02MS40LTE1MC4xNi02My45MS0yNDQuMDF6TTE3NiAzMmgtNjRjLTguODQgMC0xNiA3LjE2LTE2IDE2djQ4aDk2VjQ4YzAtOC44NC03LjE2LTE2LTE2LTE2em00OCAyNTZoNjRWMTI4aC02NHYxNjB6XCJdXG59O1xudmFyIGZhQmlvaGF6YXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jpb2hhemFyZCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjc4MFwiLCBcIk0yODcuOSAxMTJjMTguNiAwIDM2LjIgMy44IDUyLjggOS42IDEzLjMtMTAuMyAyMy42LTI0LjMgMjkuNS00MC43LTI1LjItMTAuOS01My0xNy04Mi4yLTE3LTI5LjEgMC01Ni45IDYtODIuMSAxNi45IDUuOSAxNi40IDE2LjIgMzAuNCAyOS41IDQwLjcgMTYuNS01LjcgMzQtOS41IDUyLjUtOS41ek0xNjMuNiA0MzguN2MxMi0xMS44IDIwLjQtMjYuNCAyNC41LTQyLjQtMzIuOS0yNi40LTU0LjgtNjUuMy01OC45LTEwOS42LTguNS0yLjgtMTcuMi00LjYtMjYuNC00LjYtNy42IDAtMTUuMiAxLTIyLjUgMy4xIDQuMSA2Mi44IDM1LjggMTE4IDgzLjMgMTUzLjV6bTIyNC4yLTQyLjZjNC4xIDE2IDEyLjUgMzAuNyAyNC41IDQyLjUgNDcuNC0zNS41IDc5LjEtOTAuNyA4My0xNTMuNS03LjItMi0xNC43LTMtMjIuMi0zLTkuMiAwLTE4IDEuOS0yNi42IDQuNy00LjEgNDQuMi0yNiA4Mi45LTU4LjcgMTA5LjN6bTExMy41LTIwNWMtMTcuNi0xMC40LTM2LjMtMTYuNi01NS4zLTE5LjkgNi0xNy43IDEwLTM2LjQgMTAtNTYuMiAwLTQxLTE0LjUtODAuOC00MS0xMTIuMi0yLjUtMy02LjYtMy43LTEwLTEuOC0zLjMgMS45LTQuOCA2LTMuNiA5LjcgNC41IDEzLjggNi42IDI2LjMgNi42IDM4LjUgMCA2Ny44LTUzLjggMTIyLjktMTIwIDEyMi45UzE2OCAxMTcgMTY4IDQ5LjJjMC0xMi4xIDIuMi0yNC43IDYuNi0zOC41IDEuMi0zLjctLjMtNy44LTMuNi05LjctMy40LTEuOS03LjUtMS4yLTEwIDEuOEMxMzQuNiAzNC4yIDEyMCA3NCAxMjAgMTE1YzAgMTkuOCAzLjkgMzguNSAxMCA1Ni4yLTE4LjkgMy4zLTM3LjcgOS41LTU1LjMgMTkuOS0zNC42IDIwLjUtNjEgNTMuMy03NC4zIDkyLjQtMS4zIDMuNy4yIDcuNyAzLjUgOS44IDMuMyAyIDcuNSAxLjMgMTAtMS42IDkuNC0xMC44IDE5LTE5LjEgMjkuMi0yNS4xIDU3LjMtMzMuOSAxMzAuOC0xMy43IDE2My45IDQ1IDMzLjEgNTguNyAxMy40IDEzNC00My45IDE2Ny45LTEwLjIgNi4xLTIyIDEwLjQtMzUuOCAxMy40LTMuNy44LTYuNCA0LjItNi40IDguMS4xIDQgMi43IDcuMyA2LjUgOCAzOS43IDcuOCA4MC42LjggMTE1LjItMTkuNyAxOC0xMC42IDMyLjktMjQuNSA0NS4zLTQwLjEgMTIuNCAxNS42IDI3LjMgMjkuNSA0NS4zIDQwLjEgMzQuNiAyMC41IDc1LjUgMjcuNSAxMTUuMiAxOS43IDMuOC0uNyA2LjQtNCA2LjUtOCAwLTMuOS0yLjYtNy4zLTYuNC04LjEtMTMuOS0yLjktMjUuNi03LjMtMzUuOC0xMy40LTU3LjMtMzMuOS03Ny0xMDkuMi00My45LTE2Ny45czEwNi42LTc4LjkgMTYzLjktNDVjMTAuMiA2LjEgMTkuOCAxNC4zIDI5LjIgMjUuMSAyLjUgMi45IDYuNyAzLjYgMTAgMS42czQuOC02LjEgMy41LTkuOGMtMTMuMS0zOS4xLTM5LjUtNzItNzQuMS05Mi40em0tMjEzLjQgMTI5Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHpcIl1cbn07XG52YXIgZmFCaXJ0aGRheUNha2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmlydGhkYXktY2FrZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjFmZFwiLCBcIk00NDggMzg0Yy0yOC4wMiAwLTMxLjI2LTMyLTc0LjUtMzItNDMuNDMgMC00Ni44MjUgMzItNzQuNzUgMzItMjcuNjk1IDAtMzEuNDU0LTMyLTc0Ljc1LTMyLTQyLjg0MiAwLTQ3LjIxOCAzMi03NC41IDMyLTI4LjE0OCAwLTMxLjIwMi0zMi03NC43NS0zMi00My41NDcgMC00Ni42NTMgMzItNzQuNzUgMzJ2LTgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDE2VjExMmg2NHYxNDRoNjRWMTEyaDY0djE0NGg2NFYxMTJoNjR2MTQ0aDE2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djgwem0wIDEyOEgwdi05NmM0My4zNTYgMCA0Ni43NjctMzIgNzQuNzUtMzIgMjcuOTUxIDAgMzEuMjUzIDMyIDc0Ljc1IDMyIDQyLjg0MyAwIDQ3LjIxNy0zMiA3NC41LTMyIDI4LjE0OCAwIDMxLjIwMSAzMiA3NC43NSAzMiA0My4zNTcgMCA0Ni43NjctMzIgNzQuNzUtMzIgMjcuNDg4IDAgMzEuMjUyIDMyIDc0LjUgMzJ2OTZ6TTk2IDk2Yy0xNy43NSAwLTMyLTE0LjI1LTMyLTMyIDAtMzEgMzItMjMgMzItNjQgMTIgMCAzMiAyOS41IDMyIDU2cy0xNC4yNSA0MC0zMiA0MHptMTI4IDBjLTE3Ljc1IDAtMzItMTQuMjUtMzItMzIgMC0zMSAzMi0yMyAzMi02NCAxMiAwIDMyIDI5LjUgMzIgNTZzLTE0LjI1IDQwLTMyIDQwem0xMjggMGMtMTcuNzUgMC0zMi0xNC4yNS0zMi0zMiAwLTMxIDMyLTIzIDMyLTY0IDEyIDAgMzIgMjkuNSAzMiA1NnMtMTQuMjUgNDAtMzIgNDB6XCJdXG59O1xudmFyIGZhQmxlbmRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdibGVuZGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNTE3XCIsIFwiTTQxNiAzODRIMTYwYy0zNS4zNSAwLTY0IDI4LjY1LTY0IDY0djMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzIwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyYzAtMzUuMzUtMjguNjUtNjQtNjQtNjR6bS0xMjggOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTQwLTQxNmgxNjYuNTRMNTEyIDBINDhDMjEuNDkgMCAwIDIxLjQ5IDAgNDh2MTYwYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMTAzLjI3bDguNzMgOTZoMjU2bDE3LjQ2LTY0SDMyOGMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDExNC4xOGwxNy40Ni02NEgzMjhjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgxNDAuMzZsMTcuNDYtNjRIMzI4Yy00LjQyIDAtOC0zLjU4LTgtOFY3MmMwLTQuNDIgMy41OC04IDgtOHpNNjQgMTkyVjY0aDY5LjgybDExLjY0IDEyOEg2NHpcIl1cbn07XG52YXIgZmFCbGVuZGVyUGhvbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmxlbmRlci1waG9uZScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjZiNlwiLCBcIk0zOTIgNjRoMTY2LjU0TDU3NiAwSDE5MnYzNTJoMjg4bDE3LjQ2LTY0SDM5MmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDExNC4xOGwxNy40Ni02NEgzOTJjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgxNDAuMzZsMTcuNDYtNjRIMzkyYy00LjQyIDAtOC0zLjU4LTgtOFY3MmMwLTQuNDIgMy41OC04IDgtOHpNMTU4LjggMzM1LjAxbC0yNS43OC02My4yNmMtMi43OC02LjgxLTkuOC0xMC45OS0xNy4yNC0xMC4yNmwtNDUuMDMgNC40MmMtMTcuMjgtNDYuOTQtMTcuNjUtOTkuNzggMC0xNDcuNzJsNDUuMDMgNC40MmM3LjQzLjczIDE0LjQ2LTMuNDYgMTcuMjQtMTAuMjZsMjUuNzgtNjMuMjZjMy4wMi03LjM5LjItMTUuODUtNi42OC0yMC4wN2wtMzkuMjgtMjQuMUM5OC41MS0zLjg3IDgwLjA5LS41IDY4Ljk1IDExLjk3Yy05Mi41NyAxMDMuNi05MiAyNTkuNTUgMi4xIDM2Mi40OSA5Ljg3IDEwLjggMjkuMTIgMTIuNDggNDEuNjUgNC44bDM5LjQxLTI0LjE4YzYuODktNC4yMiA5LjctMTIuNjcgNi42OS0yMC4wN3pNNDgwIDM4NEgxOTJjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzNTJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJjMC0zNS4zNS0yOC42NS02NC02NC02NHptLTE0NCA5NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIl1cbn07XG52YXIgZmFCbGluZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdibGluZCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjI5ZFwiLCBcIk0zODAuMTUgNTEwLjgzN2E4IDggMCAwIDEtMTAuOTg5LTIuNjg3bC0xMjUuMzMtMjA2LjQyN2EzMS45MjMgMzEuOTIzIDAgMCAwIDEyLjk1OC05LjQ4NWwxMjYuMDQ4IDIwNy42MDhhOCA4IDAgMCAxLTIuNjg3IDEwLjk5MXpNMTQyLjgwMyAzMTQuMzM4bC0zMi41NCA4OS40ODUgMzYuMTIgODguMjg1YzYuNjkzIDE2LjM2IDI1LjM3NyAyNC4xOTIgNDEuNzMzIDE3LjUwMSAxNi4zNTctNi42OTIgMjQuMTkzLTI1LjM3NiAxNy41MDEtNDEuNzM0bC02Mi44MTQtMTUzLjUzN3pNOTYgODhjMjQuMzAxIDAgNDQtMTkuNjk5IDQ0LTQ0UzEyMC4zMDEgMCA5NiAwIDUyIDE5LjY5OSA1MiA0NHMxOS42OTkgNDQgNDQgNDR6bTE1NC44MzcgMTY5LjEyOGwtMTIwLTE1MmMtNC43MzMtNS45OTUtMTEuNzUtOS4xMDgtMTguODM3LTkuMTEyVjk2SDgwdi4wMjZjLTcuMTQ2LjAwMy0xNC4yMTcgMy4xNjEtMTguOTQ0IDkuMjRMMCAxODMuNzY2djk1LjY5NGMwIDEzLjQ1NSAxMS4wMTEgMjQuNzkxIDI0LjQ2NCAyNC41MzZDMzcuNTA1IDMwMy43NDggNDggMjkzLjEgNDggMjgwdi03OS43NjZsMTYtMjAuNTcxdjE0MC42OThMOS45MjcgNDY5LjA1NWMtNi4wNCAxNi42MDkgMi41MjggMzQuOTY5IDE5LjEzOCA0MS4wMDkgMTYuNjAyIDYuMDM5IDM0Ljk2OC0yLjUyNCA0MS4wMDktMTkuMTM4TDEzNiAzMDkuNjM4VjIwMi40NDFsLTMxLjQwNi0zOS44MTZhNCA0IDAgMSAxIDYuMjY5LTQuOTcxbDEwMi4zIDEyOS4yMTdjOS4xNDUgMTEuNTg0IDI0LjM2OCAxMS4zMzkgMzMuNzA4IDMuOTY1IDEwLjQxLTguMjE2IDEyLjE1OS0yMy4zMzQgMy45NjYtMzMuNzA4elwiXVxufTtcbnZhciBmYUJsb2cgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmxvZycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjc4MVwiLCBcIk0xNzIuMiAyMjYuOGMtMTQuNi0yLjktMjguMiA4LjktMjguMiAyMy44VjMwMWMwIDEwLjIgNy4xIDE4LjQgMTYuNyAyMiAxOC4yIDYuOCAzMS4zIDI0LjQgMzEuMyA0NSAwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OFYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRIMjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0djI0OGMwIDg5LjUgODIuMSAxNjAuMiAxNzUgMTQwLjcgNTQuNC0xMS40IDk4LjMtNTUuNCAxMDkuNy0xMDkuNyAxNy40LTgyLjktMzctMTU3LjItMTEyLjUtMTcyLjJ6TTIwOSAwYy05LjItLjUtMTcgNi44LTE3IDE2djMxLjZjMCA4LjUgNi42IDE1LjUgMTUgMTUuOSAxMjkuNCA3IDIzMy40IDExMiAyNDAuOSAyNDEuNS41IDguNCA3LjUgMTUgMTUuOSAxNWgzMi4xYzkuMiAwIDE2LjUtNy44IDE2LTE3QzUwMy40IDEzOS44IDM3Mi4yIDguNiAyMDkgMHptLjMgOTZjLTkuMy0uNy0xNy4zIDYuNy0xNy4zIDE2LjF2MzIuMWMwIDguNCA2LjUgMTUuMyAxNC44IDE1LjkgNzYuOCA2LjMgMTM4IDY4LjIgMTQ0LjkgMTQ1LjIuOCA4LjMgNy42IDE0LjcgMTUuOSAxNC43aDMyLjJjOS4zIDAgMTYuOC04IDE2LjEtMTcuMy04LjQtMTEwLjEtOTYuNS0xOTguMi0yMDYuNi0yMDYuN3pcIl1cbn07XG52YXIgZmFCb2xkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JvbGQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYwMzJcIiwgXCJNMzMzLjQ5IDIzOGExMjIgMTIyIDAgMCAwIDI3LTY1LjIxQzM2Ny44NyA5Ni40OSAzMDggMzIgMjMzLjQyIDMySDM0YTE2IDE2IDAgMCAwLTE2IDE2djQ4YTE2IDE2IDAgMCAwIDE2IDE2aDMxLjg3djI4OEgzNGExNiAxNiAwIDAgMC0xNiAxNnY0OGExNiAxNiAwIDAgMCAxNiAxNmgyMDkuMzJjNzAuOCAwIDEzNC4xNC01MS43NSAxNDEtMTIyLjQgNC43NC00OC40NS0xNi4zOS05Mi4wNi01MC44My0xMTkuNnpNMTQ1LjY2IDExMmg4Ny43NmE0OCA0OCAwIDAgMSAwIDk2aC04Ny43NnptODcuNzYgMjg4aC04Ny43NlYyODhoODcuNzZhNTYgNTYgMCAwIDEgMCAxMTJ6XCJdXG59O1xudmFyIGZhQm9sdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib2x0JyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJmMGU3XCIsIFwiTTI5NiAxNjBIMTgwLjZsNDIuNi0xMjkuOEMyMjcuMiAxNSAyMTUuNyAwIDIwMCAwSDU2QzQ0IDAgMzMuOCA4LjkgMzIuMiAyMC44bC0zMiAyNDBDLTEuNyAyNzUuMiA5LjUgMjg4IDI0IDI4OGgxMTguN0w5Ni42IDQ4Mi41Yy0zLjYgMTUuMiA4IDI5LjUgMjMuMyAyOS41IDguNCAwIDE2LjQtNC40IDIwLjgtMTJsMTc2LTMwNGM5LjMtMTUuOS0yLjItMzYtMjAuNy0zNnpcIl1cbn07XG52YXIgZmFCb21iID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JvbWInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxZTJcIiwgXCJNNDQwLjUgODguNWwtNTIgNTJMNDE1IDE2N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtMTcuNCAxNy40YzExLjggMjYuMSAxOC40IDU1LjEgMTguNCA4NS42IDAgMTE0LjktOTMuMSAyMDgtMjA4IDIwOFMwIDQxOC45IDAgMzA0IDkzLjEgOTYgMjA4IDk2YzMwLjUgMCA1OS41IDYuNiA4NS42IDE4LjRMMzExIDk3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDI2LjUgMjYuNSA1Mi01MiAxNy4xIDE3ek01MDAgNjBoLTI0Yy02LjYgMC0xMiA1LjQtMTIgMTJzNS40IDEyIDEyIDEyaDI0YzYuNiAwIDEyLTUuNCAxMi0xMnMtNS40LTEyLTEyLTEyek00NDAgMGMtNi42IDAtMTIgNS40LTEyIDEydjI0YzAgNi42IDUuNCAxMiAxMiAxMnMxMi01LjQgMTItMTJWMTJjMC02LjYtNS40LTEyLTEyLTEyem0zMy45IDU1bDE3LTE3YzQuNy00LjcgNC43LTEyLjMgMC0xNy00LjctNC43LTEyLjMtNC43LTE3IDBsLTE3IDE3Yy00LjcgNC43LTQuNyAxMi4zIDAgMTcgNC44IDQuNyAxMi40IDQuNyAxNyAwem0tNjcuOCAwYzQuNyA0LjcgMTIuMyA0LjcgMTcgMCA0LjctNC43IDQuNy0xMi4zIDAtMTdsLTE3LTE3Yy00LjctNC43LTEyLjMtNC43LTE3IDAtNC43IDQuNy00LjcgMTIuMyAwIDE3bDE3IDE3em02Ny44IDM0Yy00LjctNC43LTEyLjMtNC43LTE3IDAtNC43IDQuNy00LjcgMTIuMyAwIDE3bDE3IDE3YzQuNyA0LjcgMTIuMyA0LjcgMTcgMCA0LjctNC43IDQuNy0xMi4zIDAtMTdsLTE3LTE3ek0xMTIgMjcyYzAtMzUuMyAyOC43LTY0IDY0LTY0IDguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2Yy01Mi45IDAtOTYgNDMuMS05NiA5NiAwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2elwiXVxufTtcbnZhciBmYUJvbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9uZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjVkN1wiLCBcIk01OTguODggMjQ0LjU2YzI1LjItMTIuNiA0MS4xMi0zOC4zNiA0MS4xMi02Ni41M3YtNy42NEM2NDAgMTI5LjMgNjA2LjcgOTYgNTY1LjYxIDk2Yy0zMi4wMiAwLTYwLjQ0IDIwLjQ5LTcwLjU3IDUwLjg2LTcuNjggMjMuMDMtMTEuNiA0NS4xNC0zOC4xMSA0NS4xNEgxODMuMDZjLTI3LjM4IDAtMzEuNTgtMjUuNTQtMzguMTEtNDUuMTRDMTM0LjgzIDExNi40OSAxMDYuNCA5NiA3NC4zOSA5NiAzMy4zIDk2IDAgMTI5LjMgMCAxNzAuMzl2Ny42NGMwIDI4LjE3IDE1LjkyIDUzLjkzIDQxLjEyIDY2LjUzIDkuNDMgNC43MSA5LjQzIDE4LjE3IDAgMjIuODhDMTUuOTIgMjgwLjA0IDAgMzA1LjggMCAzMzMuOTd2Ny42NEMwIDM4Mi43IDMzLjMgNDE2IDc0LjM4IDQxNmMzMi4wMiAwIDYwLjQ0LTIwLjQ5IDcwLjU3LTUwLjg2IDcuNjgtMjMuMDMgMTEuNi00NS4xNCAzOC4xMS00NS4xNGgyNzMuODdjMjcuMzggMCAzMS41OCAyNS41NCAzOC4xMSA0NS4xNEM1MDUuMTcgMzk1LjUxIDUzMy42IDQxNiA1NjUuNjEgNDE2YzQxLjA4IDAgNzQuMzgtMzMuMyA3NC4zOC03NC4zOXYtNy42NGMwLTI4LjE4LTE1LjkyLTUzLjkzLTQxLjEyLTY2LjUzLTkuNDItNC43MS05LjQyLTE4LjE3LjAxLTIyLjg4elwiXVxufTtcbnZhciBmYUJvbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9uZycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjU1Y1wiLCBcIk0zMDIuNSA1MTJjMjMuMTggMCA0NC40My0xMi41OCA1Ni0zMi42NkMzNzQuNjkgNDUxLjI2IDM4NCA0MTguNzUgMzg0IDM4NGMwLTM2LjEyLTEwLjA4LTY5LjgxLTI3LjQ0LTk4LjYyTDQwMCAyNDEuOTRsOS4zOCA5LjM4YzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMTEuMy0xMS4zMmM2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzbC01Mi42OS01Mi42OWMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtMTEuMzEgMTEuMzFjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNsOS4zOCA5LjM4LTM5LjQxIDM5LjQxYy0xMS41Ni0xMS4zNy0yNC41My0yMS4zMy0zOC42NS0yOS41MVY2My43NGwxNS45Ny0uMDJjOC44Mi0uMDEgMTUuOTctNy4xNiAxNS45OC0xNS45OGwuMDQtMzEuNzJDMzIwIDcuMTcgMzEyLjgyLS4wMSAzMDMuOTcgMEw4MC4wMy4yNmMtOC44Mi4wMS0xNS45NyA3LjE2LTE1Ljk4IDE1Ljk4bC0uMDQgMzEuNzNjLS4wMSA4Ljg1IDcuMTcgMTYuMDIgMTYuMDIgMTYuMDFMOTYgNjMuOTZ2MTUzLjkzQzM4LjY3IDI1MS4xIDAgMzEyLjk3IDAgMzg0YzAgMzQuNzUgOS4zMSA2Ny4yNyAyNS41IDk1LjM0QzM3LjA4IDQ5OS40MiA1OC4zMyA1MTIgODEuNSA1MTJoMjIxek0xMjAuMDYgMjU5LjQzTDE0NCAyNDUuNTZWNjMuOTFsOTYtLjExdjE4MS43NmwyMy45NCAxMy44N2MyNC44MSAxNC4zNyA0NC4xMiAzNS43MyA1Ni41NiA2MC41N2gtMjU3YzEyLjQ1LTI0Ljg0IDMxLjc1LTQ2LjIgNTYuNTYtNjAuNTd6XCJdXG59O1xudmFyIGZhQm9vayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib29rJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDJkXCIsIFwiTTQ0OCAzNjBWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRIOTZDNDMgMCAwIDQzIDAgOTZ2MzIwYzAgNTMgNDMgOTYgOTYgOTZoMzI4YzEzLjMgMCAyNC0xMC43IDI0LTI0di0xNmMwLTcuNS0zLjUtMTQuMy04LjktMTguNy00LjItMTUuNC00LjItNTkuMyAwLTc0LjcgNS40LTQuMyA4LjktMTEuMSA4LjktMTguNnpNMTI4IDEzNGMwLTMuMyAyLjctNiA2LTZoMjEyYzMuMyAwIDYgMi43IDYgNnYyMGMwIDMuMy0yLjcgNi02IDZIMTM0Yy0zLjMgMC02LTIuNy02LTZ2LTIwem0wIDY0YzAtMy4zIDIuNy02IDYtNmgyMTJjMy4zIDAgNiAyLjcgNiA2djIwYzAgMy4zLTIuNyA2LTYgNkgxMzRjLTMuMyAwLTYtMi43LTYtNnYtMjB6bTI1My40IDI1MEg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzIgMC0xNy42IDE0LjQtMzIgMzItMzJoMjg1LjRjLTEuOSAxNy4xLTEuOSA0Ni45IDAgNjR6XCJdXG59O1xudmFyIGZhQm9va0RlYWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9vay1kZWFkJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNmI3XCIsIFwiTTI3MiAxMzZjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTYtMTYgNy4yLTE2IDE2IDcuMiAxNiAxNiAxNnptMTc2IDIyMi40VjI1LjZjMC0xNi05LjYtMjUuNi0yNS42LTI1LjZIOTZDNDEuNiAwIDAgNDEuNiAwIDk2djMyMGMwIDU0LjQgNDEuNiA5NiA5NiA5NmgzMjYuNGMxMi44IDAgMjUuNi05LjYgMjUuNi0yNS42di0xNmMwLTYuNC0zLjItMTIuOC05LjYtMTkuMi0zLjItMTYtMy4yLTYwLjggMC03My42IDYuNC0zLjIgOS42LTkuNiA5LjYtMTkuMnpNMjQwIDU2YzQ0LjIgMCA4MCAyOC43IDgwIDY0IDAgMjAuOS0xMi43IDM5LjItMzIgNTAuOVYxODRjMCA4LjgtNy4yIDE2LTE2IDE2aC02NGMtOC44IDAtMTYtNy4yLTE2LTE2di0xMy4xYy0xOS4zLTExLjctMzItMzAtMzItNTAuOSAwLTM1LjMgMzUuOC02NCA4MC02NHpNMTI0LjggMjIzLjNsNi4zLTE0LjdjMS43LTQuMSA2LjQtNS45IDEwLjUtNC4ybDk4LjMgNDIuMSA5OC40LTQyLjFjNC4xLTEuNyA4LjguMSAxMC41IDQuMmw2LjMgMTQuN2MxLjcgNC4xLS4xIDguOC00LjIgMTAuNUwyODAuNiAyNjRsNzAuMyAzMC4xYzQuMSAxLjcgNS45IDYuNCA0LjIgMTAuNWwtNi4zIDE0LjdjLTEuNyA0LjEtNi40IDUuOS0xMC41IDQuMkwyNDAgMjgxLjRsLTk4LjMgNDIuMmMtNC4xIDEuNy04LjgtLjEtMTAuNS00LjJsLTYuMy0xNC43Yy0xLjctNC4xLjEtOC44IDQuMi0xMC41bDcwLjQtMzAuMS03MC41LTMwLjNjLTQuMS0xLjctNS45LTYuNC00LjItMTAuNXptMjU2IDIyNC43SDk2Yy0xOS4yIDAtMzItMTIuOC0zMi0zMnMxNi0zMiAzMi0zMmgyODQuOHpNMjA4IDEzNmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNi0xNiA3LjItMTYgMTYgNy4yIDE2IDE2IDE2elwiXVxufTtcbnZhciBmYUJvb2tNZWRpY2FsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jvb2stbWVkaWNhbCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjdlNlwiLCBcIk00NDggMzU4LjRWMjUuNmMwLTE2LTkuNi0yNS42LTI1LjYtMjUuNkg5NkM0MS42IDAgMCA0MS42IDAgOTZ2MzIwYzAgNTQuNCA0MS42IDk2IDk2IDk2aDMyNi40YzEyLjggMCAyNS42LTkuNiAyNS42LTI1LjZ2LTE2cTAtOS42LTkuNi0xOS4yYy0zLjItMTYtMy4yLTYwLjggMC03My42cTkuNi00LjggOS42LTE5LjJ6TTE0NCAxNjhhOCA4IDAgMCAxIDgtOGg1NnYtNTZhOCA4IDAgMCAxIDgtOGg0OGE4IDggMCAwIDEgOCA4djU2aDU2YTggOCAwIDAgMSA4IDh2NDhhOCA4IDAgMCAxLTggOGgtNTZ2NTZhOCA4IDAgMCAxLTggOGgtNDhhOCA4IDAgMCAxLTgtOHYtNTZoLTU2YTggOCAwIDAgMS04LTh6bTIzNi44IDI4MEg5NmMtMTkuMiAwLTMyLTEyLjgtMzItMzJzMTYtMzIgMzItMzJoMjg0Ljh6XCJdXG59O1xudmFyIGZhQm9va09wZW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9vay1vcGVuJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTE4XCIsIFwiTTU0Mi4yMiAzMi4wNWMtNTQuOCAzLjExLTE2My43MiAxNC40My0yMzAuOTYgNTUuNTktNC42NCAyLjg0LTcuMjcgNy44OS03LjI3IDEzLjE3djM2My44N2MwIDExLjU1IDEyLjYzIDE4Ljg1IDIzLjI4IDEzLjQ5IDY5LjE4LTM0LjgyIDE2OS4yMy00NC4zMiAyMTguNy00Ni45MiAxNi44OS0uODkgMzAuMDItMTQuNDMgMzAuMDItMzAuNjZWNjIuNzVjLjAxLTE3LjcxLTE1LjM1LTMxLjc0LTMzLjc3LTMwLjd6TTI2NC43MyA4Ny42NEMxOTcuNSA0Ni40OCA4OC41OCAzNS4xNyAzMy43OCAzMi4wNSAxNS4zNiAzMS4wMSAwIDQ1LjA0IDAgNjIuNzVWNDAwLjZjMCAxNi4yNCAxMy4xMyAyOS43OCAzMC4wMiAzMC42NiA0OS40OSAyLjYgMTQ5LjU5IDEyLjExIDIxOC43NyA0Ni45NSAxMC42MiA1LjM1IDIzLjIxLTEuOTQgMjMuMjEtMTMuNDZWMTAwLjYzYzAtNS4yOS0yLjYyLTEwLjE0LTcuMjctMTIuOTl6XCJdXG59O1xudmFyIGZhQm9va1JlYWRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib29rLXJlYWRlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjVkYVwiLCBcIk0zNTIgOTZjMC01My4wMi00Mi45OC05Ni05Ni05NnMtOTYgNDIuOTgtOTYgOTYgNDIuOTggOTYgOTYgOTYgOTYtNDIuOTggOTYtOTZ6TTIzMy41OSAyNDEuMWMtNTkuMzMtMzYuMzItMTU1LjQzLTQ2LjMtMjAzLjc5LTQ5LjA1QzEzLjU1IDE5MS4xMyAwIDIwMy41MSAwIDIxOS4xNHYyMjIuOGMwIDE0LjMzIDExLjU5IDI2LjI4IDI2LjQ5IDI3LjA1IDQzLjY2IDIuMjkgMTMxLjk5IDEwLjY4IDE5My4wNCA0MS40MyA5LjM3IDQuNzIgMjAuNDgtMS43MSAyMC40OC0xMS44N1YyNTIuNTZjLS4wMS00LjY3LTIuMzItOC45NS02LjQyLTExLjQ2em0yNDguNjEtNDkuMDVjLTQ4LjM1IDIuNzQtMTQ0LjQ2IDEyLjczLTIwMy43OCA0OS4wNS00LjEgMi41MS02LjQxIDYuOTYtNi40MSAxMS42M3YyNDUuNzljMCAxMC4xOSAxMS4xNCAxNi42MyAyMC41NCAxMS45IDYxLjA0LTMwLjcyIDE0OS4zMi0zOS4xMSAxOTIuOTctNDEuNCAxNC45LS43OCAyNi40OS0xMi43MyAyNi40OS0yNy4wNlYyMTkuMTRjLS4wMS0xNS42My0xMy41Ni0yOC4wMS0yOS44MS0yNy4wOXpcIl1cbn07XG52YXIgZmFCb29rbWFyayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib29rbWFyaycsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjAyZVwiLCBcIk0wIDUxMlY0OEMwIDIxLjQ5IDIxLjQ5IDAgNDggMGgyODhjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHY0NjRMMTkyIDQwMCAwIDUxMnpcIl1cbn07XG52YXIgZmFCb3JkZXJBbGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9yZGVyLWFsbCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjg0Y1wiLCBcIk00MTYgMzJIMzJBMzIgMzIgMCAwIDAgMCA2NHYzODRhMzIgMzIgMCAwIDAgMzIgMzJoMzg0YTMyIDMyIDAgMCAwIDMyLTMyVjY0YTMyIDMyIDAgMCAwLTMyLTMyem0tMzIgNjR2MTI4SDI1NlY5NnptLTE5MiAwdjEyOEg2NFY5NnpNNjQgNDE2VjI4OGgxMjh2MTI4em0xOTIgMFYyODhoMTI4djEyOHpcIl1cbn07XG52YXIgZmFCb3JkZXJOb25lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JvcmRlci1ub25lJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmODUwXCIsIFwiTTI0MCAyMjRoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptOTYgMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bS0yODggMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em05NiAxOTJoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptOTYgMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAtOTZoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xOTJoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNMjQwIDMyMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTE5MmgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tOTYgMjg4aC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2LTM4NGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2IDBoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2em05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpNNDggMjI0SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMCAxOTJIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTk2SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xOTJIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTk2SDE2QTE2IDE2IDAgMCAwIDAgNDh2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2IDBoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2elwiXVxufTtcbnZhciBmYUJvcmRlclN0eWxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JvcmRlci1zdHlsZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjg1M1wiLCBcIk0yNDAgNDE2aC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bS05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTE5MiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2LTE5MmgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wIDk2aC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgOTZoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0yODhoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC05NkgzMkEzMiAzMiAwIDAgMCAwIDY0djQwMGExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlY5NmgzNjhhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJdXG59O1xudmFyIGZhQm93bGluZ0JhbGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm93bGluZy1iYWxsJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNDM2XCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTEyMCAxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem02NC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMnptNDggMTQ0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIl1cbn07XG52YXIgZmFCb3ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm94JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNDY2XCIsIFwiTTUwOS41IDE4NC42TDQ1OC45IDMyLjhDNDUyLjQgMTMuMiA0MzQuMSAwIDQxMy40IDBIMjcydjE5MmgyMzguN2MtLjQtMi41LS40LTUtMS4yLTcuNHpNMjQwIDBIOTguNmMtMjAuNyAwLTM5IDEzLjItNDUuNSAzMi44TDIuNSAxODQuNmMtLjggMi40LS44IDQuOS0xLjIgNy40SDI0MFYwek0wIDIyNHYyNDBjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjIyNEgwelwiXVxufTtcbnZhciBmYUJveE9wZW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm94LW9wZW4nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY0OWVcIiwgXCJNNDI1LjcgMjU2Yy0xNi45IDAtMzIuOC05LTQxLjQtMjMuNEwzMjAgMTI2bC02NC4yIDEwNi42Yy04LjcgMTQuNS0yNC42IDIzLjUtNDEuNSAyMy41LTQuNSAwLTktLjYtMTMuMy0xLjlMNjQgMjE1djE3OGMwIDE0LjcgMTAgMjcuNSAyNC4yIDMxbDIxNi4yIDU0LjFjMTAuMiAyLjUgMjAuOSAyLjUgMzEgMEw1NTEuOCA0MjRjMTQuMi0zLjYgMjQuMi0xNi40IDI0LjItMzFWMjE1bC0xMzcgMzkuMWMtNC4zIDEuMy04LjggMS45LTEzLjMgMS45em0yMTIuNi0xMTIuMkw1ODYuOCA0MWMtMy4xLTYuMi05LjgtOS44LTE2LjctOC45TDMyMCA2NGw5MS43IDE1Mi4xYzMuOCA2LjMgMTEuNCA5LjMgMTguNSA3LjNsMTk3LjktNTYuNWM5LjktMi45IDE0LjctMTMuOSAxMC4yLTIzLjF6TTUzLjIgNDFMMS43IDE0My44Yy00LjYgOS4yLjMgMjAuMiAxMC4xIDIzbDE5Ny45IDU2LjVjNy4xIDIgMTQuNy0xIDE4LjUtNy4zTDMyMCA2NCA2OS44IDMyLjFjLTYuOS0uOC0xMy41IDIuNy0xNi42IDguOXpcIl1cbn07XG52YXIgZmFCb3hUaXNzdWUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm94LXRpc3N1ZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTA1YlwiLCBcIk0zODMuODgsMjg3LjgybDY0LTE5MkgzMzguNDdhNzAuMiw3MC4yLDAsMCwxLTY2LjU5LTQ4LDcwLjIxLDcwLjIxLDAsMCwwLTY2LjYtNDhINjMuODhsNjQsMjg4Wm0tMzg0LDE5MmEzMiwzMiwwLDAsMCwzMiwzMmg0NDhhMzIsMzIsMCwwLDAsMzItMzJ2LTY0SC0uMTJabTQ4MC0yNTZINDM4Ljk0bC0yMS4zMyw2NGgxNC4yN2ExNiwxNiwwLDAsMSwwLDMyaC0zNTJhMTYsMTYsMCwxLDEsMC0zMkg5NS4wOWwtMTQuMjItNjRoLTQ5YTMyLDMyLDAsMCwwLTMyLDMydjEyOGg1MTJ2LTEyOEEzMiwzMiwwLDAsMCw0NzkuODgsMjIzLjgyWlwiXVxufTtcbnZhciBmYUJveGVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JveGVzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNDY4XCIsIFwiTTU2MCAyODhoLTgwdjk2bC0zMi0yMS4zLTMyIDIxLjN2LTk2aC04MGMtOC44IDAtMTYgNy4yLTE2IDE2djE5MmMwIDguOCA3LjIgMTYgMTYgMTZoMjI0YzguOCAwIDE2LTcuMiAxNi0xNlYzMDRjMC04LjgtNy4yLTE2LTE2LTE2em0tMzg0LTY0aDIyNGM4LjggMCAxNi03LjIgMTYtMTZWMTZjMC04LjgtNy4yLTE2LTE2LTE2aC04MHY5NmwtMzItMjEuM0wyNTYgOTZWMGgtODBjLTguOCAwLTE2IDcuMi0xNiAxNnYxOTJjMCA4LjggNy4yIDE2IDE2IDE2em02NCA2NGgtODB2OTZsLTMyLTIxLjNMOTYgMzg0di05NkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djE5MmMwIDguOCA3LjIgMTYgMTYgMTZoMjI0YzguOCAwIDE2LTcuMiAxNi0xNlYzMDRjMC04LjgtNy4yLTE2LTE2LTE2elwiXVxufTtcbnZhciBmYUJyYWlsbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnJhaWxsZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjJhMVwiLCBcIk0xMjggMjU2YzAgMzUuMzQ2LTI4LjY1NCA2NC02NCA2NFMwIDI5MS4zNDYgMCAyNTZzMjguNjU0LTY0IDY0LTY0IDY0IDI4LjY1NCA2NCA2NHpNNjQgMzg0Yy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTAtMzUyQzI4LjY1NCAzMiAwIDYwLjY1NCAwIDk2czI4LjY1NCA2NCA2NCA2NCA2NC0yOC42NTQgNjQtNjQtMjguNjU0LTY0LTY0LTY0em0xNjAgMTkyYy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTAgMTYwYy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTAtMzUyYy0zNS4zNDYgMC02NCAyOC42NTQtNjQgNjRzMjguNjU0IDY0IDY0IDY0IDY0LTI4LjY1NCA2NC02NC0yOC42NTQtNjQtNjQtNjR6bTIyNCAxOTJjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnptMCAxNjBjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnptMC0zNTJjLTM1LjM0NiAwLTY0IDI4LjY1NC02NCA2NHMyOC42NTQgNjQgNjQgNjQgNjQtMjguNjU0IDY0LTY0LTI4LjY1NC02NC02NC02NHptMTYwIDE5MmMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyem0wIDE2MGMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyem0wLTMyMGMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyelwiXVxufTtcbnZhciBmYUJyYWluID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JyYWluJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNWRjXCIsIFwiTTIwOCAwYy0yOS45IDAtNTQuNyAyMC41LTYxLjggNDguMi0uOCAwLTEuNC0uMi0yLjItLjItMzUuMyAwLTY0IDI4LjctNjQgNjQgMCA0LjguNiA5LjUgMS43IDE0QzUyLjUgMTM4IDMyIDE2Ni42IDMyIDIwMGMwIDEyLjYgMy4yIDI0LjMgOC4zIDM0LjlDMTYuMyAyNDguNyAwIDI3NC4zIDAgMzA0YzAgMzMuMyAyMC40IDYxLjkgNDkuNCA3My45LS45IDQuNi0xLjQgOS4zLTEuNCAxNC4xIDAgMzkuOCAzMi4yIDcyIDcyIDcyIDQuMSAwIDguMS0uNSAxMi0xLjIgOS42IDI4LjUgMzYuMiA0OS4yIDY4IDQ5LjIgMzkuOCAwIDcyLTMyLjIgNzItNzJWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjR6bTM2OCAzMDRjMC0yOS43LTE2LjMtNTUuMy00MC4zLTY5LjEgNS4yLTEwLjYgOC4zLTIyLjMgOC4zLTM0LjkgMC0zMy40LTIwLjUtNjItNDkuNy03NCAxLTQuNSAxLjctOS4yIDEuNy0xNCAwLTM1LjMtMjguNy02NC02NC02NC0uOCAwLTEuNS4yLTIuMi4yQzQyMi43IDIwLjUgMzk3LjkgMCAzNjggMGMtMzUuMyAwLTY0IDI4LjYtNjQgNjR2Mzc2YzAgMzkuOCAzMi4yIDcyIDcyIDcyIDMxLjggMCA1OC40LTIwLjcgNjgtNDkuMiAzLjkuNyA3LjkgMS4yIDEyIDEuMiAzOS44IDAgNzItMzIuMiA3Mi03MiAwLTQuOC0uNS05LjUtMS40LTE0LjEgMjktMTIgNDkuNC00MC42IDQ5LjQtNzMuOXpcIl1cbn07XG52YXIgZmFCcmVhZFNsaWNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JyZWFkLXNsaWNlJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmN2VjXCIsIFwiTTI4OCAwQzEwOCAwIDAgOTMuNCAwIDE2OS4xNCAwIDE5OS40NCAyNC4yNCAyMjQgNjQgMjI0djI1NmMwIDE3LjY3IDE2LjEyIDMyIDM2IDMyaDM3NmMxOS44OCAwIDM2LTE0LjMzIDM2LTMyVjIyNGMzOS43NiAwIDY0LTI0LjU2IDY0LTU0Ljg2QzU3NiA5My40IDQ2OCAwIDI4OCAwelwiXVxufTtcbnZhciBmYUJyaWVmY2FzZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdicmllZmNhc2UnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwYjFcIiwgXCJNMzIwIDMzNmMwIDguODQtNy4xNiAxNi0xNiAxNmgtOTZjLTguODQgMC0xNi03LjE2LTE2LTE2di00OEgwdjE0NGMwIDI1LjYgMjIuNCA0OCA0OCA0OGg0MTZjMjUuNiAwIDQ4LTIyLjQgNDgtNDhWMjg4SDMyMHY0OHptMTQ0LTIwOGgtODBWODBjMC0yNS42LTIyLjQtNDgtNDgtNDhIMTc2Yy0yNS42IDAtNDggMjIuNC00OCA0OHY0OEg0OGMtMjUuNiAwLTQ4IDIyLjQtNDggNDh2ODBoNTEydi04MGMwLTI1LjYtMjIuNC00OC00OC00OHptLTE0NCAwSDE5MlY5NmgxMjh2MzJ6XCJdXG59O1xudmFyIGZhQnJpZWZjYXNlTWVkaWNhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdicmllZmNhc2UtbWVkaWNhbCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjQ2OVwiLCBcIk00NjQgMTI4aC04MFY4MGMwLTI2LjUtMjEuNS00OC00OC00OEgxNzZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djQ4SDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OHYyODhjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjE3NmMwLTI2LjUtMjEuNS00OC00OC00OHpNMTkyIDk2aDEyOHYzMkgxOTJWOTZ6bTE2MCAyNDhjMCA0LjQtMy42IDgtOCA4aC01NnY1NmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LTh2LTU2aC01NmMtNC40IDAtOC0zLjYtOC04di00OGMwLTQuNCAzLjYtOCA4LThoNTZ2LTU2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2NTZoNTZjNC40IDAgOCAzLjYgOCA4djQ4elwiXVxufTtcbnZhciBmYUJyb2FkY2FzdFRvd2VyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jyb2FkY2FzdC10b3dlcicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjUxOVwiLCBcIk0xNTAuOTQgMTkyaDMzLjczYzExLjAxIDAgMTguNjEtMTAuODMgMTQuODYtMjEuMTgtNC45My0xMy41OC03LjU1LTI3Ljk4LTcuNTUtNDIuODJzMi42Mi0yOS4yNCA3LjU1LTQyLjgyQzIwMy4yOSA3NC44MyAxOTUuNjggNjQgMTg0LjY3IDY0aC0zMy43M2MtNy4wMSAwLTEzLjQ2IDQuNDktMTUuNDEgMTEuMjNDMTMwLjY0IDkyLjIxIDEyOCAxMDkuODggMTI4IDEyOGMwIDE4LjEyIDIuNjQgMzUuNzkgNy41NCA1Mi43NiAxLjk0IDYuNzQgOC4zOSAxMS4yNCAxNS40IDExLjI0ek04OS45MiAyMy4zNEM5NS41NiAxMi43MiA4Ny45NyAwIDc1Ljk2IDBINDAuNjNjLTYuMjcgMC0xMi4xNCAzLjU5LTE0Ljc0IDkuMzFDOS40IDQ1LjU0IDAgODUuNjUgMCAxMjhjMCAyNC43NSAzLjEyIDY4LjMzIDI2LjY5IDExOC44NiAyLjYyIDUuNjMgOC40MiA5LjE0IDE0LjYxIDkuMTRoMzQuODRjMTIuMDIgMCAxOS42MS0xMi43NCAxMy45NS0yMy4zNy00OS43OC05My4zMi0xNi43MS0xNzguMTUtLjE3LTIwOS4yOXpNNjE0LjA2IDkuMjlDNjExLjQ2IDMuNTggNjA1LjYgMCA1OTkuMzMgMGgtMzUuNDJjLTExLjk4IDAtMTkuNjYgMTIuNjYtMTQuMDIgMjMuMjUgMTguMjcgMzQuMjkgNDguNDIgMTE5LjQyLjI4IDIwOS4yMy01LjcyIDEwLjY4IDEuOCAyMy41MiAxMy45MSAyMy41MmgzNS4yM2M2LjI3IDAgMTIuMTMtMy41OCAxNC43My05LjI5QzYzMC41NyAyMTAuNDggNjQwIDE3MC4zNiA2NDAgMTI4cy05LjQyLTgyLjQ4LTI1Ljk0LTExOC43MXpNNDg5LjA2IDY0aC0zMy43M2MtMTEuMDEgMC0xOC42MSAxMC44My0xNC44NiAyMS4xOCA0LjkzIDEzLjU4IDcuNTUgMjcuOTggNy41NSA0Mi44MnMtMi42MiAyOS4yNC03LjU1IDQyLjgyYy0zLjc2IDEwLjM1IDMuODUgMjEuMTggMTQuODYgMjEuMThoMzMuNzNjNy4wMiAwIDEzLjQ2LTQuNDkgMTUuNDEtMTEuMjQgNC45LTE2Ljk3IDcuNTMtMzQuNjQgNy41My01Mi43NiAwLTE4LjEyLTIuNjQtMzUuNzktNy41NC01Mi43Ni0xLjk0LTYuNzUtOC4zOS0xMS4yNC0xNS40LTExLjI0em0tMTE2LjMgMTAwLjEyYzcuMDUtMTAuMjkgMTEuMi0yMi43MSAxMS4yLTM2LjEyIDAtMzUuMzUtMjguNjMtNjQtNjMuOTYtNjQtMzUuMzIgMC02My45NiAyOC42NS02My45NiA2NCAwIDEzLjQxIDQuMTUgMjUuODMgMTEuMiAzNi4xMmwtMTMwLjUgMzEzLjQxYy0zLjQgOC4xNS40NiAxNy41MiA4LjYxIDIwLjkybDI5LjUxIDEyLjMxYzguMTUgMy40IDE3LjUyLS40NiAyMC45MS04LjYxTDI0NC45NiAzODRoMTUwLjA3bDQ5LjIgMTE4LjE1YzMuNCA4LjE2IDEyLjc2IDEyLjAxIDIwLjkxIDguNjFsMjkuNTEtMTIuMzFjOC4xNS0zLjQgMTItMTIuNzcgOC42MS0yMC45MmwtMTMwLjUtMzEzLjQxek0yNzEuNjIgMzIwTDMyMCAyMDMuODEgMzY4LjM4IDMyMGgtOTYuNzZ6XCJdXG59O1xudmFyIGZhQnJvb20gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnJvb20nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1MWFcIiwgXCJNMjU2LjQ3IDIxNi43N2w4Ni43MyAxMDkuMThzLTE2LjYgMTAyLjM2LTc2LjU3IDE1MC4xMkMyMDYuNjYgNTIzLjg1IDAgNTEwLjE5IDAgNTEwLjE5czMuOC0yMy4xNCAxMS01NS40M2w5NC42Mi0xMTIuMTdjMy45Ny00LjctLjg3LTExLjYyLTYuNjUtOS41bC02MC40IDIyLjA5YzE0LjQ0LTQxLjY2IDMyLjcyLTgwLjA0IDU0LjYtOTcuNDcgNTkuOTctNDcuNzYgMTYzLjMtNDAuOTQgMTYzLjMtNDAuOTR6TTYzNi41MyAzMS4wM2wtMTkuODYtMjVjLTUuNDktNi45LTE1LjUyLTguMDUtMjIuNDEtMi41NmwtMjMyLjQ4IDE3Ny44LTM0LjE0LTQyLjk3Yy01LjA5LTYuNDEtMTUuMTQtNS4yMS0xOC41OSAyLjIxbC0yNS4zMyA1NC41NSA4Ni43MyAxMDkuMTggNTguOC0xMi40NWM4LTEuNjkgMTEuNDItMTEuMiA2LjM0LTE3LjZsLTM0LjA5LTQyLjkyIDIzMi40OC0xNzcuOGM2Ljg5LTUuNDggOC4wNC0xNS41MyAyLjU1LTIyLjQ0elwiXVxufTtcbnZhciBmYUJydXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JydXNoJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNTVkXCIsIFwiTTM1MiAwSDMyQzE0LjMzIDAgMCAxNC4zMyAwIDMydjIyNGgzODRWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNMCAzMjBjMCAzNS4zNSAyOC42NiA2NCA2NCA2NGg2NHY2NGMwIDM1LjM1IDI4LjY2IDY0IDY0IDY0czY0LTI4LjY1IDY0LTY0di02NGg2NGMzNS4zNCAwIDY0LTI4LjY1IDY0LTY0di0zMkgwdjMyem0xOTIgMTA0YzEzLjI1IDAgMjQgMTAuNzQgMjQgMjQgMCAxMy4yNS0xMC43NSAyNC0yNCAyNHMtMjQtMTAuNzUtMjQtMjRjMC0xMy4yNiAxMC43NS0yNCAyNC0yNHpcIl1cbn07XG52YXIgZmFCdWcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVnJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMTg4XCIsIFwiTTUxMS45ODggMjg4LjljLS40NzggMTcuNDMtMTUuMjE3IDMxLjEtMzIuNjUzIDMxLjFINDI0djE2YzAgMjEuODY0LTQuODgyIDQyLjU4NC0xMy42IDYxLjE0NWw2MC4yMjggNjAuMjI4YzEyLjQ5NiAxMi40OTcgMTIuNDk2IDMyLjc1OCAwIDQ1LjI1NS0xMi40OTggMTIuNDk3LTMyLjc1OSAxMi40OTYtNDUuMjU2IDBsLTU0LjczNi01NC43MzZDMzQ1Ljg4NiA0NjcuOTY1IDMxNC4zNTEgNDgwIDI4MCA0ODBWMjM2YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0NGMtMzQuMzUxIDAtNjUuODg2LTEyLjAzNS05MC42MzYtMzIuMTA4bC01NC43MzYgNTQuNzM2Yy0xMi40OTggMTIuNDk3LTMyLjc1OSAxMi40OTYtNDUuMjU2IDAtMTIuNDk2LTEyLjQ5Ny0xMi40OTYtMzIuNzU4IDAtNDUuMjU1bDYwLjIyOC02MC4yMjhDOTIuODgyIDM3OC41ODQgODggMzU3Ljg2NCA4OCAzMzZ2LTE2SDMyLjY2NkMxNS4yMyAzMjAgLjQ5MSAzMDYuMzMuMDEzIDI4OC45LS40ODQgMjcwLjgxNiAxNC4wMjggMjU2IDMyIDI1Nmg1NnYtNTguNzQ1bC00Ni42MjgtNDYuNjI4Yy0xMi40OTYtMTIuNDk3LTEyLjQ5Ni0zMi43NTggMC00NS4yNTUgMTIuNDk4LTEyLjQ5NyAzMi43NTgtMTIuNDk3IDQ1LjI1NiAwTDE0MS4yNTUgMTYwaDIyOS40ODlsNTQuNjI3LTU0LjYyN2MxMi40OTgtMTIuNDk3IDMyLjc1OC0xMi40OTcgNDUuMjU2IDAgMTIuNDk2IDEyLjQ5NyAxMi40OTYgMzIuNzU4IDAgNDUuMjU1TDQyNCAxOTcuMjU1VjI1Nmg1NmMxNy45NzIgMCAzMi40ODQgMTQuODE2IDMxLjk4OCAzMi45ek0yNTcgMGMtNjEuODU2IDAtMTEyIDUwLjE0NC0xMTIgMTEyaDIyNEMzNjkgNTAuMTQ0IDMxOC44NTYgMCAyNTcgMHpcIl1cbn07XG52YXIgZmFCdWlsZGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdidWlsZGluZycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjFhZFwiLCBcIk00MzYgNDgwaC0yMFYyNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRINTZDNDIuNzQ1IDAgMzIgMTAuNzQ1IDMyIDI0djQ1NkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyMGg0NDh2LTIwYzAtNi42MjctNS4zNzMtMTItMTItMTJ6TTEyOCA3NmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMmgtNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJWNzZ6bTAgOTZjMC02LjYyNyA1LjM3My0xMiAxMi0xMmg0MGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjQwYzAgNi42MjctNS4zNzMgMTItMTIgMTJoLTQwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi00MHptNTIgMTQ4aC00MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtNDBjMC02LjYyNyA1LjM3My0xMiAxMi0xMmg0MGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjQwYzAgNi42MjctNS4zNzMgMTItMTIgMTJ6bTc2IDE2MGgtNjR2LTg0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY4NHptNjQtMTcyYzAgNi42MjctNS4zNzMgMTItMTIgMTJoLTQwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi00MGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDB6bTAtOTZjMCA2LjYyNy01LjM3MyAxMi0xMiAxMmgtNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTQwYzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY0MHptMC05NmMwIDYuNjI3LTUuMzczIDEyLTEyIDEyaC00MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMlY3NmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDB6XCJdXG59O1xudmFyIGZhQnVsbGhvcm4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVsbGhvcm4nLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYwYTFcIiwgXCJNNTc2IDI0MGMwLTIzLjYzLTEyLjk1LTQ0LjA0LTMyLTU1LjEyVjMyLjAxQzU0NCAyMy4yNiA1MzcuMDIgMCA1MTIgMGMtNy4xMiAwLTE0LjE5IDIuMzgtMTkuOTggNy4wMmwtODUuMDMgNjguMDNDMzY0LjI4IDEwOS4xOSAzMTAuNjYgMTI4IDI1NiAxMjhINjRjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR2OTZjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMy43Yy0xLjM5IDEwLjQ4LTIuMTggMjEuMTQtMi4xOCAzMiAwIDM5Ljc3IDkuMjYgNzcuMzUgMjUuNTYgMTEwLjk0IDUuMTkgMTAuNjkgMTYuNTIgMTcuMDYgMjguNCAxNy4wNmg3NC4yOGMyNi4wNSAwIDQxLjY5LTI5Ljg0IDI1LjktNTAuNTYtMTYuNC0yMS41Mi0yNi4xNS00OC4zNi0yNi4xNS03Ny40NCAwLTExLjExIDEuNjItMjEuNzkgNC40MS0zMkgyNTZjNTQuNjYgMCAxMDguMjggMTguODEgMTUwLjk4IDUyLjk1bDg1LjAzIDY4LjAzYTMyLjAyMyAzMi4wMjMgMCAwIDAgMTkuOTggNy4wMmMyNC45MiAwIDMyLTIyLjc4IDMyLTMyVjI5NS4xM0M1NjMuMDUgMjg0LjA0IDU3NiAyNjMuNjMgNTc2IDI0MHptLTk2IDE0MS40MmwtMzMuMDUtMjYuNDRDMzkyLjk1IDMxMS43OCAzMjUuMTIgMjg4IDI1NiAyODh2LTk2YzY5LjEyIDAgMTM2Ljk1LTIzLjc4IDE5MC45NS02Ni45OEw0ODAgOTguNTh2MjgyLjg0elwiXVxufTtcbnZhciBmYUJ1bGxzZXllID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2J1bGxzZXllJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmMTQwXCIsIFwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTAgNDMyYy0xMDEuNjkgMC0xODQtODIuMjktMTg0LTE4NCAwLTEwMS42OSA4Mi4yOS0xODQgMTg0LTE4NCAxMDEuNjkgMCAxODQgODIuMjkgMTg0IDE4NCAwIDEwMS42OS04Mi4yOSAxODQtMTg0IDE4NHptMC0zMTJjLTcwLjY5IDAtMTI4IDU3LjMxLTEyOCAxMjhzNTcuMzEgMTI4IDEyOCAxMjggMTI4LTU3LjMxIDEyOC0xMjgtNTcuMzEtMTI4LTEyOC0xMjh6bTAgMTkyYy0zNS4yOSAwLTY0LTI4LjcxLTY0LTY0czI4LjcxLTY0IDY0LTY0IDY0IDI4LjcxIDY0IDY0LTI4LjcxIDY0LTY0IDY0elwiXVxufTtcbnZhciBmYUJ1cm4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVybicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjQ2YVwiLCBcIk0xOTIgMEM3OS43IDEwMS4zIDAgMjIwLjkgMCAzMDAuNSAwIDQyNSA3OSA1MTIgMTkyIDUxMnMxOTItODcgMTkyLTIxMS41YzAtNzkuOS04MC4yLTE5OS42LTE5Mi0zMDAuNXptMCA0NDhjLTU2LjUgMC05Ni0zOS05Ni05NC44IDAtMTMuNSA0LjYtNjEuNSA5Ni0xNjEuMiA5MS40IDk5LjcgOTYgMTQ3LjcgOTYgMTYxLjIgMCA1NS44LTM5LjUgOTQuOC05NiA5NC44elwiXVxufTtcbnZhciBmYUJ1cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdidXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyMDdcIiwgXCJNNDg4IDEyOGgtOFY4MGMwLTQ0LjgtOTkuMi04MC0yMjQtODBTMzIgMzUuMiAzMiA4MHY0OGgtOGMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHY4MGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDh2MTYwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmgxOTJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmg2LjRjMTYgMCAyNS42LTEyLjggMjUuNi0yNS42VjI1Nmg4YzEzLjI1IDAgMjQtMTAuNzUgMjQtMjR2LTgwYzAtMTMuMjYtMTAuNzUtMjQtMjQtMjR6TTExMiA0MDBjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTE2LTExMmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMlYxMjhjMC0xNy42NyAxNC4zMy0zMiAzMi0zMmgyNTZjMTcuNjcgMCAzMiAxNC4zMyAzMiAzMnYxMjhjMCAxNy42Ny0xNC4zMyAzMi0zMiAzMkgxMjh6bTI3MiAxMTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJdXG59O1xudmFyIGZhQnVzQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2J1cy1hbHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NWVcIiwgXCJNNDg4IDEyOGgtOFY4MGMwLTQ0LjgtOTkuMi04MC0yMjQtODBTMzIgMzUuMiAzMiA4MHY0OGgtOGMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHY4MGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDh2MTYwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmgxOTJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmg2LjRjMTYgMCAyNS42LTEyLjggMjUuNi0yNS42VjI1Nmg4YzEzLjI1IDAgMjQtMTAuNzUgMjQtMjR2LTgwYzAtMTMuMjYtMTAuNzUtMjQtMjQtMjR6TTE2MCA3MmMwLTQuNDIgMy41OC04IDgtOGgxNzZjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhIMTY4Yy00LjQyIDAtOC0zLjU4LTgtOFY3MnptLTQ4IDMyOGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMTI4LTExMkgxMjhjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJ2LTk2YzAtMTcuNjcgMTQuMzMtMzIgMzItMzJoMTEydjE2MHptMzIgMFYxMjhoMTEyYzE3LjY3IDAgMzIgMTQuMzMgMzIgMzJ2OTZjMCAxNy42Ny0xNC4zMyAzMi0zMiAzMkgyNzJ6bTEyOCAxMTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJdXG59O1xudmFyIGZhQnVzaW5lc3NUaW1lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2J1c2luZXNzLXRpbWUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY2NGFcIiwgXCJNNDk2IDIyNGMtNzkuNTkgMC0xNDQgNjQuNDEtMTQ0IDE0NHM2NC40MSAxNDQgMTQ0IDE0NCAxNDQtNjQuNDEgMTQ0LTE0NC02NC40MS0xNDQtMTQ0LTE0NHptNjQgMTUwLjI5YzAgNS4zNC00LjM3IDkuNzEtOS43MSA5LjcxaC02MC41N2MtNS4zNCAwLTkuNzEtNC4zNy05LjcxLTkuNzF2LTc2LjU3YzAtNS4zNCA0LjM3LTkuNzEgOS43MS05LjcxaDEyLjU3YzUuMzQgMCA5LjcxIDQuMzcgOS43MSA5LjcxVjM1MmgzOC4yOWM1LjM0IDAgOS43MSA0LjM3IDkuNzEgOS43MXYxMi41OHpNNDk2IDE5MmM1LjQgMCAxMC43Mi4zMyAxNiAuODFWMTQ0YzAtMjUuNi0yMi40LTQ4LTQ4LTQ4aC04MFY0OGMwLTI1LjYtMjIuNC00OC00OC00OEgxNzZjLTI1LjYgMC00OCAyMi40LTQ4IDQ4djQ4SDQ4Yy0yNS42IDAtNDggMjIuNC00OCA0OHY4MGgzOTUuMTJjMjguNi0yMC4wOSA2My4zNS0zMiAxMDAuODgtMzJ6TTMyMCA5NkgxOTJWNjRoMTI4djMyem02LjgyIDIyNEgyMDhjLTguODQgMC0xNi03LjE2LTE2LTE2di00OEgwdjE0NGMwIDI1LjYgMjIuNCA0OCA0OCA0OGgyOTEuNDNDMzI3LjEgNDIzLjk2IDMyMCAzOTYuODIgMzIwIDM2OGMwLTE2LjY2IDIuNDgtMzIuNzIgNi44Mi00OHpcIl1cbn07XG52YXIgZmFDYWxjdWxhdG9yID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhbGN1bGF0b3InLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxZWNcIiwgXCJNNDAwIDBINDhDMjIuNCAwIDAgMjIuNCAwIDQ4djQxNmMwIDI1LjYgMjIuNCA0OCA0OCA0OGgzNTJjMjUuNiAwIDQ4LTIyLjQgNDgtNDhWNDhjMC0yNS42LTIyLjQtNDgtNDgtNDh6TTEyOCA0MzUuMmMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhINzYuOGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGgzOC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40em0wLTEyOGMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhINzYuOGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGgzOC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40em0xMjggMTI4YzAgNi40LTYuNCAxMi44LTEyLjggMTIuOGgtMzguNGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGgzOC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40em0wLTEyOGMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhoLTM4LjRjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOHYtMzguNGMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MzguNHptMTI4IDEyOGMwIDYuNC02LjQgMTIuOC0xMi44IDEyLjhoLTM4LjRjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOFYyNjguOGMwLTYuNCA2LjQtMTIuOCAxMi44LTEyLjhoMzguNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MTY2LjR6bTAtMjU2YzAgNi40LTYuNCAxMi44LTEyLjggMTIuOEg3Ni44Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjhWNzYuOEM2NCA3MC40IDcwLjQgNjQgNzYuOCA2NGgyOTQuNGM2LjQgMCAxMi44IDYuNCAxMi44IDEyLjh2MTAyLjR6XCJdXG59O1xudmFyIGZhQ2FsZW5kYXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FsZW5kYXInLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxMzNcIiwgXCJNMTIgMTkyaDQyNGM2LjYgMCAxMiA1LjQgMTIgMTJ2MjYwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYyMDRjMC02LjYgNS40LTEyIDEyLTEyem00MzYtNDR2LTM2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4aC00OFYxMmMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NTJIMTYwVjEyYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY1Mkg0OEMyMS41IDY0IDAgODUuNSAwIDExMnYzNmMwIDYuNiA1LjQgMTIgMTIgMTJoNDI0YzYuNiAwIDEyLTUuNCAxMi0xMnpcIl1cbn07XG52YXIgZmFDYWxlbmRhckFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYWxlbmRhci1hbHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwNzNcIiwgXCJNMCA0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjE5MkgwdjI3MnptMzIwLTE5NmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDB6bTAgMTI4YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MHpNMTkyIDI2OGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDB6bTAgMTI4YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MHpNNjQgMjY4YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEySDc2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwem0wIDEyOGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMkg3NmMtNi42IDAtMTItNS40LTEyLTEydi00MHpNNDAwIDY0aC00OFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDhIMTYwVjE2YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEg0OEMyMS41IDY0IDAgODUuNSAwIDExMnY0OGg0NDh2LTQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwiXVxufTtcbnZhciBmYUNhbGVuZGFyQ2hlY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FsZW5kYXItY2hlY2snLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYyNzRcIiwgXCJNNDM2IDE2MEgxMmMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMzZjMC0yNi41MSAyMS40OS00OCA0OC00OGg0OFYxMmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NTJoMTI4VjEyYzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY1Mmg0OGMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djM2YzAgNi42MjctNS4zNzMgMTItMTIgMTJ6TTEyIDE5Mmg0MjRjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNjBjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYyMDRjMC02LjYyNyA1LjM3My0xMiAxMi0xMnptMzMzLjI5NiA5NS45NDdsLTI4LjE2OS0yOC4zOThjLTQuNjY3LTQuNzA1LTEyLjI2NS00LjczNi0xNi45Ny0uMDY4TDE5NC4xMiAzNjQuNjY1bC00NS45OC00Ni4zNTJjLTQuNjY3LTQuNzA1LTEyLjI2Ni00LjczNi0xNi45NzEtLjA2OGwtMjguMzk3IDI4LjE3Yy00LjcwNSA0LjY2Ny00LjczNiAxMi4yNjUtLjA2OCAxNi45N2w4Mi42MDEgODMuMjY5YzQuNjY3IDQuNzA1IDEyLjI2NSA0LjczNiAxNi45Ny4wNjhsMTQyLjk1My0xNDEuODA1YzQuNzA1LTQuNjY3IDQuNzM2LTEyLjI2NS4wNjgtMTYuOTd6XCJdXG59O1xudmFyIGZhQ2FsZW5kYXJEYXkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FsZW5kYXItZGF5JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNzgzXCIsIFwiTTAgNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYxOTJIMHYyNzJ6bTY0LTE5MmMwLTguOCA3LjItMTYgMTYtMTZoOTZjOC44IDAgMTYgNy4yIDE2IDE2djk2YzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2di05NnpNNDAwIDY0aC00OFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDhIMTYwVjE2YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEg0OEMyMS41IDY0IDAgODUuNSAwIDExMnY0OGg0NDh2LTQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwiXVxufTtcbnZhciBmYUNhbGVuZGFyTWludXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FsZW5kYXItbWludXMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYyNzJcIiwgXCJNNDM2IDE2MEgxMmMtNi42IDAtMTItNS40LTEyLTEydi0zNmMwLTI2LjUgMjEuNS00OCA0OC00OGg0OFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDEyOFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djM2YzAgNi42LTUuNCAxMi0xMiAxMnpNMTIgMTkyaDQyNGM2LjYgMCAxMiA1LjQgMTIgMTJ2MjYwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYyMDRjMC02LjYgNS40LTEyIDEyLTEyem0zMDQgMTkyYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEySDEzMmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmgxODR6XCJdXG59O1xudmFyIGZhQ2FsZW5kYXJQbHVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhbGVuZGFyLXBsdXMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYyNzFcIiwgXCJNNDM2IDE2MEgxMmMtNi42IDAtMTItNS40LTEyLTEydi0zNmMwLTI2LjUgMjEuNS00OCA0OC00OGg0OFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDEyOFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djM2YzAgNi42LTUuNCAxMi0xMiAxMnpNMTIgMTkyaDQyNGM2LjYgMCAxMiA1LjQgMTIgMTJ2MjYwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYyMDRjMC02LjYgNS40LTEyIDEyLTEyem0zMTYgMTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNjB2LTYwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY2MGgtNjBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoNjB2NjBjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNjBoNjBjNi42IDAgMTItNS40IDEyLTEydi00MHpcIl1cbn07XG52YXIgZmFDYWxlbmRhclRpbWVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhbGVuZGFyLXRpbWVzJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMjczXCIsIFwiTTQzNiAxNjBIMTJjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMzZjMC0yNi41IDIxLjUtNDggNDgtNDhoNDhWMTJjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY1MmgxMjhWMTJjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY1Mmg0OGMyNi41IDAgNDggMjEuNSA0OCA0OHYzNmMwIDYuNi01LjQgMTItMTIgMTJ6TTEyIDE5Mmg0MjRjNi42IDAgMTIgNS40IDEyIDEydjI2MGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMjA0YzAtNi42IDUuNC0xMiAxMi0xMnptMjU3LjMgMTYwbDQ4LjEtNDguMWM0LjctNC43IDQuNy0xMi4zIDAtMTdsLTI4LjMtMjguM2MtNC43LTQuNy0xMi4zLTQuNy0xNyAwTDIyNCAzMDYuN2wtNDguMS00OC4xYy00LjctNC43LTEyLjMtNC43LTE3IDBsLTI4LjMgMjguM2MtNC43IDQuNy00LjcgMTIuMyAwIDE3bDQ4LjEgNDguMS00OC4xIDQ4LjFjLTQuNyA0LjctNC43IDEyLjMgMCAxN2wyOC4zIDI4LjNjNC43IDQuNyAxMi4zIDQuNyAxNyAwbDQ4LjEtNDguMSA0OC4xIDQ4LjFjNC43IDQuNyAxMi4zIDQuNyAxNyAwbDI4LjMtMjguM2M0LjctNC43IDQuNy0xMi4zIDAtMTdMMjY5LjMgMzUyelwiXVxufTtcbnZhciBmYUNhbGVuZGFyV2VlayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYWxlbmRhci13ZWVrJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNzg0XCIsIFwiTTAgNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYxOTJIMHYyNzJ6bTY0LTE5MmMwLTguOCA3LjItMTYgMTYtMTZoMjg4YzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNnYtNjR6TTQwMCA2NGgtNDhWMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDE2MFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDhINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2NDhoNDQ4di00OGMwLTI2LjUtMjEuNS00OC00OC00OHpcIl1cbn07XG52YXIgZmFDYW1lcmEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FtZXJhJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDMwXCIsIFwiTTUxMiAxNDR2Mjg4YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxNDRjMC0yNi41IDIxLjUtNDggNDgtNDhoODhsMTIuMy0zMi45YzctMTguNyAyNC45LTMxLjEgNDQuOS0zMS4xaDEyNS41YzIwIDAgMzcuOSAxMi40IDQ0LjkgMzEuMUwzNzYgOTZoODhjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTM3NiAyODhjMC02Ni4yLTUzLjgtMTIwLTEyMC0xMjBzLTEyMCA1My44LTEyMCAxMjAgNTMuOCAxMjAgMTIwIDEyMCAxMjAtNTMuOCAxMjAtMTIwem0tMzIgMGMwIDQ4LjUtMzkuNSA4OC04OCA4OHMtODgtMzkuNS04OC04OCAzOS41LTg4IDg4LTg4IDg4IDM5LjUgODggODh6XCJdXG59O1xudmFyIGZhQ2FtZXJhUmV0cm8gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FtZXJhLXJldHJvJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDgzXCIsIFwiTTQ4IDMyQzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHptMCAzMmgxMDZjMy4zIDAgNiAyLjcgNiA2djIwYzAgMy4zLTIuNyA2LTYgNkgzOGMtMy4zIDAtNi0yLjctNi02VjgwYzAtOC44IDcuMi0xNiAxNi0xNnptNDI2IDk2SDM4Yy0zLjMgMC02LTIuNy02LTZ2LTM2YzAtMy4zIDIuNy02IDYtNmgxMzhsMzAuMi00NS4zYzEuMS0xLjcgMy0yLjcgNS0yLjdINDY0YzguOCAwIDE2IDcuMiAxNiAxNnY3NGMwIDMuMy0yLjcgNi02IDZ6TTI1NiA0MjRjLTY2LjIgMC0xMjAtNTMuOC0xMjAtMTIwczUzLjgtMTIwIDEyMC0xMjAgMTIwIDUzLjggMTIwIDEyMC01My44IDEyMC0xMjAgMTIwem0wLTIwOGMtNDguNSAwLTg4IDM5LjUtODggODhzMzkuNSA4OCA4OCA4OCA4OC0zOS41IDg4LTg4LTM5LjUtODgtODgtODh6bS00OCAxMDRjLTguOCAwLTE2LTcuMi0xNi0xNiAwLTM1LjMgMjguNy02NCA2NC02NCA4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmMtMTcuNiAwLTMyIDE0LjQtMzIgMzIgMCA4LjgtNy4yIDE2LTE2IDE2elwiXVxufTtcbnZhciBmYUNhbXBncm91bmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FtcGdyb3VuZCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjZiYlwiLCBcIk02MjQgNDQ4aC0yNC42OEwzNTkuNTQgMTE3Ljc1bDUzLjQxLTczLjU1YzUuMTktNy4xNSAzLjYxLTE3LjE2LTMuNTQtMjIuMzVsLTI1LjktMTguNzljLTcuMTUtNS4xOS0xNy4xNS0zLjYxLTIyLjM1IDMuNTVMMzIwIDYzLjMgMjc4LjgzIDYuNmMtNS4xOS03LjE1LTE1LjItOC43NC0yMi4zNS0zLjU1bC0yNS44OCAxOC44Yy03LjE1IDUuMTktOC43NCAxNS4yLTMuNTQgMjIuMzVsNTMuNDEgNzMuNTVMNDAuNjggNDQ4SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg2MDhjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2ek0zMjAgMjg4bDExNi4zNiAxNjBIMjAzLjY0TDMyMCAyODh6XCJdXG59O1xudmFyIGZhQ2FuZHlDYW5lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhbmR5LWNhbmUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3ODZcIiwgXCJNNDk3LjUgOTJDNDY5LjYgMzMuMSA0MTEuOCAwIDM1Mi40IDBjLTI3LjkgMC01Ni4yIDcuMy04MS44IDIyLjZMMjQzLjEgMzljLTE1LjIgOS4xLTIwLjEgMjguNy0xMSA0My45bDMyLjggNTQuOWM2IDEwIDE2LjYgMTUuNiAyNy41IDE1LjYgNS42IDAgMTEuMi0xLjUgMTYuNC00LjVsMjcuNS0xNi40YzUuMS0zLjEgMTAuOC00LjUgMTYuNC00LjUgMTAuOSAwIDIxLjUgNS42IDI3LjUgMTUuNiA5LjEgMTUuMSA0LjEgMzQuOC0xMSA0My45TDE1LjYgMzk3LjZjLTE1LjIgOS4xLTIwLjEgMjguNy0xMSA0My45bDMyLjggNTQuOWM2IDEwIDE2LjYgMTUuNiAyNy41IDE1LjYgNS42IDAgMTEuMi0xLjUgMTYuNC00LjVMNDI4LjYgMzAxYzcxLjctNDIuOSAxMDQuNi0xMzMuNSA2OC45LTIwOXptLTE3Ny43IDEzbC0yLjUgMS41TDI5Ni44IDQ1YzkuNy00LjcgMTkuOC04LjEgMzAuMy0xMC4ybDIwLjYgNjEuOGMtOS44LjgtMTkuNCAzLjMtMjcuOSA4LjR6TTE0NS45IDQzMS44bC02MC41LTM4LjUgMzAuOC0xOC4zIDYwLjUgMzguNS0zMC44IDE4LjN6bTEwNy41LTYzLjlsLTYwLjUtMzguNSAzMC44LTE4LjMgNjAuNSAzOC41LTMwLjggMTguM3pNMzY0LjMgMzAybC02MC41LTM4LjUgMzAuOC0xOC4zIDYwLjUgMzguNS0zMC44IDE4LjN6bTIwLjQtMTk3LjNsNDYtNDZjOC40IDYuNSAxNiAxNC4xIDIyLjYgMjIuNkw0MDcuNiAxMjdjLTUuNy05LjMtMTMuNy0xNi45LTIyLjktMjIuM3ptODIuMSAxMDcuOGwtNTkuNS0xOS44YzMuMi01LjMgNS44LTEwLjkgNy40LTE3LjEgMS4xLTQuNSAxLjctOS4xIDEuOC0xMy42bDYwLjQgMjAuMWMtMi4xIDEwLjQtNS41IDIwLjYtMTAuMSAzMC40elwiXVxufTtcbnZhciBmYUNhbm5hYmlzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nhbm5hYmlzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNTVmXCIsIFwiTTUwMy40NyAzNjAuMjVjLTEuNTYtLjgyLTMyLjM5LTE2Ljg5LTc2Ljc4LTI1LjgxIDY0LjI1LTc1LjEyIDg0LjA1LTE2MS42NyA4NC45My0xNjUuNjQgMS4xOC01LjMzLS40NC0xMC45LTQuMy0xNC43Ny0zLjAzLTMuMDQtNy4xMi00LjctMTEuMzItNC43LTEuMTQgMC0yLjI5LjEyLTMuNDQuMzgtMy44OC44NS04Ni41NCAxOS41OS0xNjAuNTggNzkuNzYuMDEtMS40Ni4wMS0yLjkzLjAxLTQuNCAwLTExOC43OS01OS45OC0yMTMuNzItNjIuNTMtMjE3LjdBMTUuOTczIDE1Ljk3MyAwIDAgMCAyNTYgMGMtNS40NSAwLTEwLjUzIDIuNzgtMTMuNDcgNy4zNy0yLjU1IDMuOTgtNjIuNTMgOTguOTEtNjIuNTMgMjE3LjcgMCAxLjQ3LjAxIDIuOTQuMDEgNC40LTc0LjAzLTYwLjE2LTE1Ni42OS03OC45LTE2MC41OC03OS43Ni0xLjE0LS4yNS0yLjI5LS4zOC0zLjQ0LS4zOC00LjIgMC04LjI5IDEuNjYtMTEuMzIgNC43QTE1Ljk4NiAxNS45ODYgMCAwIDAgLjM4IDE2OC44Yy44OCAzLjk3IDIwLjY4IDkwLjUyIDg0LjkzIDE2NS42NC00NC4zOSA4LjkyLTc1LjIxIDI0Ljk5LTc2Ljc4IDI1LjgxYTE2LjAwMyAxNi4wMDMgMCAwIDAtLjAyIDI4LjI5YzIuNDUgMS4yOSA2MC43NiAzMS43MiAxMzMuNDkgMzEuNzIgNi4xNCAwIDExLjk2LS4xIDE3LjUtLjMxLTExLjM3IDIyLjIzLTE2LjUyIDM4LjMxLTE2LjgxIDM5LjIyLTEuOCA1LjY4LS4yOSAxMS44OSAzLjkxIDE2LjExYTE2LjAxOSAxNi4wMTkgMCAwIDAgMTYuMSAzLjk5YzEuODMtLjU3IDM3LjcyLTExLjk5IDc3LjMtMzkuMjlWNTA0YzAgNC40MiAzLjU4IDggOCA4aDE2YzQuNDIgMCA4LTMuNTggOC04di02NC4wMWMzOS41OCAyNy4zIDc1LjQ3IDM4LjcxIDc3LjMgMzkuMjlhMTYuMDE5IDE2LjAxOSAwIDAgMCAxNi4xLTMuOTljNC4yLTQuMjIgNS43MS0xMC40MyAzLjkxLTE2LjExLS4yOS0uOTEtNS40NS0xNi45OS0xNi44MS0zOS4yMiA1LjU0LjIxIDExLjM3LjMxIDE3LjUuMzEgNzIuNzIgMCAxMzEuMDQtMzAuNDMgMTMzLjQ5LTMxLjcyIDUuMjQtMi43OCA4LjUyLTguMjIgOC41MS0xNC4xNS0uMDEtNS45NC0zLjI5LTExLjM5LTguNTMtMTQuMTV6XCJdXG59O1xudmFyIGZhQ2Fwc3VsZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2Fwc3VsZXMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY0NmJcIiwgXCJNNTU1LjMgMzAwLjFMNDI0LjIgMTEyLjhDNDAxLjkgODEgMzY2LjQgNjQgMzMwLjQgNjRjLTIyLjYgMC00NS41IDYuNy02NS41IDIwLjctMTkuNyAxMy44LTMzLjcgMzIuOC00MS41IDUzLjhDMjIwLjUgNzkuMiAxNzIgMzIgMTEyIDMyIDUwLjEgMzIgMCA4Mi4xIDAgMTQ0djIyNGMwIDYxLjkgNTAuMSAxMTIgMTEyIDExMnMxMTItNTAuMSAxMTItMTEyVjIxOC45YzMuMyA4LjYgNy4zIDE3LjEgMTIuOCAyNUwzNjggNDMxLjJjMjIuMiAzMS44IDU3LjcgNDguOCA5My44IDQ4LjggMjIuNyAwIDQ1LjUtNi43IDY1LjUtMjAuNyA1MS43LTM2LjIgNjQuMi0xMDcuNSAyOC0xNTkuMnpNMTYwIDI1Nkg2NFYxNDRjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHYxMTJ6bTE5NC44IDQ0LjlsLTY1LjYtOTMuN2MtNy43LTExLTEwLjctMjQuNC04LjMtMzcuNiAyLjMtMTMuMiA5LjctMjQuOCAyMC43LTMyLjUgOC41LTYgMTguNS05LjEgMjguOC05LjEgMTYuNSAwIDMxLjkgOCA0MS4zIDIxLjVsNjUuNiA5My43LTgyLjUgNTcuN3pcIl1cbn07XG52YXIgZmFDYXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMWI5XCIsIFwiTTQ5OS45OSAxNzZoLTU5Ljg3bC0xNi42NC00MS42QzQwNi4zOCA5MS42MyAzNjUuNTcgNjQgMzE5LjUgNjRoLTEyN2MtNDYuMDYgMC04Ni44OCAyNy42My0xMDMuOTkgNzAuNEw3MS44NyAxNzZIMTIuMDFDNC4yIDE3Ni0xLjUzIDE4My4zNC4zNyAxOTAuOTFsNiAyNEM3LjcgMjIwLjI1IDEyLjUgMjI0IDE4LjAxIDIyNGgyMC4wN0MyNC42NSAyMzUuNzMgMTYgMjUyLjc4IDE2IDI3MnY0OGMwIDE2LjEyIDYuMTYgMzAuNjcgMTYgNDEuOTNWNDE2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJoMjU2djMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNTQuMDdjOS44NC0xMS4yNSAxNi0yNS44IDE2LTQxLjkzdi00OGMwLTE5LjIyLTguNjUtMzYuMjctMjIuMDctNDhINDk0YzUuNTEgMCAxMC4zMS0zLjc1IDExLjY0LTkuMDlsNi0yNGMxLjg5LTcuNTctMy44NC0xNC45MS0xMS42NS0xNC45MXptLTM1Mi4wNi0xNy44M2M3LjI5LTE4LjIyIDI0Ljk0LTMwLjE3IDQ0LjU3LTMwLjE3aDEyN2MxOS42MyAwIDM3LjI4IDExLjk1IDQ0LjU3IDMwLjE3TDM4NCAyMDhIMTI4bDE5LjkzLTQ5Ljgzek05NiAzMTkuOGMtMTkuMiAwLTMyLTEyLjc2LTMyLTMxLjlTNzYuOCAyNTYgOTYgMjU2czQ4IDI4LjcxIDQ4IDQ3Ljg1LTI4LjggMTUuOTUtNDggMTUuOTV6bTMyMCAwYy0xOS4yIDAtNDggMy4xOS00OC0xNS45NVMzOTYuOCAyNTYgNDE2IDI1NnMzMiAxMi43NiAzMiAzMS45LTEyLjggMzEuOS0zMiAzMS45elwiXVxufTtcbnZhciBmYUNhckFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXItYWx0JyxcbiAgaWNvbjogWzQ4MCwgNTEyLCBbXSwgXCJmNWRlXCIsIFwiTTQzOC42NiAyMTIuMzNsLTExLjI0LTI4LjEtMTkuOTMtNDkuODNDMzkwLjM4IDkxLjYzIDM0OS41NyA2NCAzMDMuNSA2NGgtMTI3Yy00Ni4wNiAwLTg2Ljg4IDI3LjYzLTEwMy45OSA3MC40bC0xOS45MyA0OS44My0xMS4yNCAyOC4xQzE3LjIyIDIyMS41IDAgMjQ0LjY2IDAgMjcydjQ4YzAgMTYuMTIgNi4xNiAzMC42NyAxNiA0MS45M1Y0MTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmgyNTZ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi01NC4wN2M5Ljg0LTExLjI1IDE2LTI1LjggMTYtNDEuOTN2LTQ4YzAtMjcuMzQtMTcuMjItNTAuNS00MS4zNC01OS42N3ptLTMwNi43My01NC4xNmM3LjI5LTE4LjIyIDI0Ljk0LTMwLjE3IDQ0LjU3LTMwLjE3aDEyN2MxOS42MyAwIDM3LjI4IDExLjk1IDQ0LjU3IDMwLjE3TDM2OCAyMDhIMTEybDE5LjkzLTQ5Ljgzek04MCAzMTkuOGMtMTkuMiAwLTMyLTEyLjc2LTMyLTMxLjlTNjAuOCAyNTYgODAgMjU2czQ4IDI4LjcxIDQ4IDQ3Ljg1LTI4LjggMTUuOTUtNDggMTUuOTV6bTMyMCAwYy0xOS4yIDAtNDggMy4xOS00OC0xNS45NVMzODAuOCAyNTYgNDAwIDI1NnMzMiAxMi43NiAzMiAzMS45LTEyLjggMzEuOS0zMiAzMS45elwiXVxufTtcbnZhciBmYUNhckJhdHRlcnkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FyLWJhdHRlcnknLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1ZGZcIiwgXCJNNDgwIDEyOGgtMzJWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTk2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OEgxOTJWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZIODBjLTguODQgMC0xNiA3LjE2LTE2IDE2djQ4SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjI1NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDQ0OGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjE2MGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek0xOTIgMjY0YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTEyYzQuNDIgMCA4IDMuNTggOCA4djE2em0yNTYgMGMwIDQuNDItMy41OCA4LTggOGgtNDB2NDBjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtNDBoLTQwYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoNDB2LTQwYzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djQwaDQwYzQuNDIgMCA4IDMuNTggOCA4djE2elwiXVxufTtcbnZhciBmYUNhckNyYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nhci1jcmFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjVlMVwiLCBcIk0xNDMuMjUgMjIwLjgxbC0xMi40MiA0Ni4zN2MtMy4wMSAxMS4yNS0zLjYzIDIyLjg5LTIuNDEgMzQuMzlsLTM1LjIgMjguOThjLTYuNTcgNS40MS0xNi4zMS0uNDMtMTQuNjItOC43N2wxNS40NC03Ni42OGMxLjA2LTUuMjYtMi42Ni0xMC4yOC04LTEwLjc5bC03Ny44Ni03LjU1Yy04LjQ3LS44Mi0xMS4yMy0xMS44My00LjE0LTE2LjU0bDY1LjE1LTQzLjNjNC40Ni0yLjk3IDUuMzgtOS4xNSAxLjk4LTEzLjI5TDIxLjQ2IDkzLjIyYy01LjQxLTYuNTcuNDMtMTYuMyA4Ljc4LTE0LjYybDc2LjY4IDE1LjQ0YzUuMjYgMS4wNiAxMC4yOC0yLjY2IDEwLjgtOGw3LjU1LTc3Ljg2Yy44Mi04LjQ4IDExLjgzLTExLjIzIDE2LjU1LTQuMTRsNDMuMyA2NS4xNGMyLjk3IDQuNDYgOS4xNSA1LjM4IDEzLjI5IDEuOThsNjAuNC00OS43MWM2LjU3LTUuNDEgMTYuMy40MyAxNC42MiA4Ljc3TDI2Mi4xIDg2LjM4Yy0yLjcxIDMuMDUtNS40MyA2LjA5LTcuOTEgOS40bC0zMi4xNSA0Mi45Ny0xMC43MSAxNC4zMmMtMzIuNzMgOC43Ni01OS4xOCAzNC41My02OC4wOCA2Ny43NHptNDk0LjU3IDEzMi41MWwtMTIuNDIgNDYuMzZjLTMuMTMgMTEuNjgtOS4zOCAyMS42MS0xNy41NSAyOS4zNmE2Ni44NzYgNjYuODc2IDAgMCAxLTguNzYgN2wtMTMuOTkgNTIuMjNjLTEuMTQgNC4yNy0zLjEgOC4xLTUuNjUgMTEuMzgtNy42NyA5Ljg0LTIwLjc0IDE0LjY4LTMzLjU0IDExLjI1TDUxNSA1MDIuNjJjLTE3LjA3LTQuNTctMjcuMi0yMi4xMi0yMi42My0zOS4xOWw4LjI4LTMwLjkxLTI0Ny4yOC02Ni4yNi04LjI4IDMwLjkxYy00LjU3IDE3LjA3LTIyLjEyIDI3LjItMzkuMTkgMjIuNjNsLTMwLjkxLTguMjhjLTEyLjgtMy40My0yMS43LTE0LjE2LTIzLjQyLTI2LjUxLS41Ny00LjEyLS4zNS04LjQyLjc5LTEyLjY4bDEzLjk5LTUyLjIzYTY2LjYyIDY2LjYyIDAgMCAxLTQuMDktMTAuNDVjLTMuMi0xMC43OS0zLjY1LTIyLjUyLS41Mi0zNC4ybDEyLjQyLTQ2LjM3YzUuMzEtMTkuOCAxOS4zNi0zNC44MyAzNi44OS00Mi4yMWE2NC4zMzYgNjQuMzM2IDAgMCAxIDE4LjQ5LTQuNzJsMTguMTMtMjQuMjMgMzIuMTUtNDIuOTdjMy40NS00LjYxIDcuMTktOC45IDExLjItMTIuODQgOC03Ljg5IDE3LjAzLTE0LjQ0IDI2Ljc0LTE5LjUxIDQuODYtMi41NCA5Ljg5LTQuNzEgMTUuMDUtNi40OSAxMC4zMy0zLjU4IDIxLjE5LTUuNjMgMzIuMjQtNi4wNCAxMS4wNS0uNDEgMjIuMzEuODIgMzMuNDMgMy44bDEyMi42OCAzMi44N2MxMS4xMiAyLjk4IDIxLjQ4IDcuNTQgMzAuODUgMTMuNDNhMTExLjExIDExMS4xMSAwIDAgMSAzNC42OSAzNC41YzguODIgMTMuODggMTQuNjQgMjkuODQgMTYuNjggNDYuOTlsNi4zNiA1My4yOSAzLjU5IDMwLjA1YTY0LjQ5IDY0LjQ5IDAgMCAxIDIyLjc0IDI5LjkzYzQuMzkgMTEuODggNS4yOSAyNS4xOSAxLjc1IDM4LjM5ek0yNTUuNTggMjM0LjM0Yy0xOC41NS00Ljk3LTM0LjIxIDQuMDQtMzkuMTcgMjIuNTMtNC45NiAxOC40OSA0LjExIDM0LjEyIDIyLjY1IDM5LjA5IDE4LjU1IDQuOTcgNDUuNTQgMTUuNTEgNTAuNDktMi45OCA0Ljk2LTE4LjQ5LTE1LjQzLTUzLjY3LTMzLjk3LTU4LjY0em0yOTAuNjEgMjguMTdsLTYuMzYtNTMuMjljLS41OC00Ljg3LTEuODktOS41My0zLjgyLTEzLjg2LTUuOC0xMi45OS0xNy4yLTIzLjAxLTMxLjQyLTI2LjgybC0xMjIuNjgtMzIuODdhNDguMDA4IDQ4LjAwOCAwIDAgMC01MC44NiAxNy42MWwtMzIuMTUgNDIuOTcgMTcyIDQ2LjA4IDc1LjI5IDIwLjE4em0xOC40OSA1NC42NWMtMTguNTUtNC45Ny01My44IDE1LjMxLTU4Ljc1IDMzLjc5LTQuOTUgMTguNDkgMjMuNjkgMjIuODYgNDIuMjQgMjcuODMgMTguNTUgNC45NyAzNC4yMS00LjA0IDM5LjE3LTIyLjUzIDQuOTUtMTguNDgtNC4xMS0zNC4xMi0yMi42Ni0zOS4wOXpcIl1cbn07XG52YXIgZmFDYXJTaWRlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nhci1zaWRlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNWU0XCIsIFwiTTU0NCAxOTJoLTE2TDQxOS4yMiA1Ni4wMkE2NC4wMjUgNjQuMDI1IDAgMCAwIDM2OS4yNCAzMkgxNTUuMzNjLTI2LjE3IDAtNDkuNyAxNS45My01OS40MiA0MC4yM0w0OCAxOTQuMjZDMjAuNDQgMjAxLjQgMCAyMjYuMjEgMCAyNTZ2MTEyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4YzAgNTMuMDIgNDIuOTggOTYgOTYgOTZzOTYtNDIuOTggOTYtOTZoMTI4YzAgNTMuMDIgNDIuOTggOTYgOTYgOTZzOTYtNDIuOTggOTYtOTZoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTgwYzAtNTMuMDItNDIuOTgtOTYtOTYtOTZ6TTE2MCA0MzJjLTI2LjQ3IDAtNDgtMjEuNTMtNDgtNDhzMjEuNTMtNDggNDgtNDggNDggMjEuNTMgNDggNDgtMjEuNTMgNDgtNDggNDh6bTcyLTI0MEgxMTYuOTNsMzguNC05NkgyMzJ2OTZ6bTQ4IDBWOTZoODkuMjRsNzYuOCA5NkgyODB6bTIwMCAyNDBjLTI2LjQ3IDAtNDgtMjEuNTMtNDgtNDhzMjEuNTMtNDggNDgtNDggNDggMjEuNTMgNDggNDgtMjEuNTMgNDgtNDggNDh6XCJdXG59O1xudmFyIGZhQ2FyYXZhbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXJhdmFuJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmOGZmXCIsIFwiTTQxNiwyMDhhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsNDE2LDIwOFpNNjI0LDMyMEg1NzZWMTYwQTE2MCwxNjAsMCwwLDAsNDE2LDBINjRBNjQsNjQsMCwwLDAsMCw2NFYzMjBhNjQsNjQsMCwwLDAsNjQsNjRIOTZhOTYsOTYsMCwwLDAsMTkyLDBINjI0YTE2LDE2LDAsMCwwLDE2LTE2VjMzNkExNiwxNiwwLDAsMCw2MjQsMzIwWk0xOTIsNDMyYTQ4LDQ4LDAsMSwxLDQ4LTQ4QTQ4LjA1LDQ4LjA1LDAsMCwxLDE5Miw0MzJabTY0LTI0MGEzMiwzMiwwLDAsMS0zMiwzMkg5NmEzMiwzMiwwLDAsMS0zMi0zMlYxMjhBMzIsMzIsMCwwLDEsOTYsOTZIMjI0YTMyLDMyLDAsMCwxLDMyLDMyWk00NDgsMzIwSDMyMFYxMjhhMzIsMzIsMCwwLDEsMzItMzJoNjRhMzIsMzIsMCwwLDEsMzIsMzJaXCJdXG59O1xudmFyIGZhQ2FyZXREb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhcmV0LWRvd24nLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImYwZDdcIiwgXCJNMzEuMyAxOTJoMjU3LjNjMTcuOCAwIDI2LjcgMjEuNSAxNC4xIDM0LjFMMTc0LjEgMzU0LjhjLTcuOCA3LjgtMjAuNSA3LjgtMjguMyAwTDE3LjIgMjI2LjFDNC42IDIxMy41IDEzLjUgMTkyIDMxLjMgMTkyelwiXVxufTtcbnZhciBmYUNhcmV0TGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXJldC1sZWZ0JyxcbiAgaWNvbjogWzE5MiwgNTEyLCBbXSwgXCJmMGQ5XCIsIFwiTTE5MiAxMjcuMzM4djI1Ny4zMjRjMCAxNy44MTgtMjEuNTQzIDI2Ljc0MS0zNC4xNDIgMTQuMTQyTDI5LjE5NiAyNzAuMTQyYy03LjgxLTcuODEtNy44MS0yMC40NzQgMC0yOC4yODRsMTI4LjY2Mi0xMjguNjYyYzEyLjU5OS0xMi42IDM0LjE0Mi0zLjY3NiAzNC4xNDIgMTQuMTQyelwiXVxufTtcbnZhciBmYUNhcmV0UmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FyZXQtcmlnaHQnLFxuICBpY29uOiBbMTkyLCA1MTIsIFtdLCBcImYwZGFcIiwgXCJNMCAzODQuNjYyVjEyNy4zMzhjMC0xNy44MTggMjEuNTQzLTI2Ljc0MSAzNC4xNDItMTQuMTQybDEyOC42NjIgMTI4LjY2MmM3LjgxIDcuODEgNy44MSAyMC40NzQgMCAyOC4yODRMMzQuMTQyIDM5OC44MDRDMjEuNTQzIDQxMS40MDQgMCA0MDIuNDggMCAzODQuNjYyelwiXVxufTtcbnZhciBmYUNhcmV0U3F1YXJlRG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXJldC1zcXVhcmUtZG93bicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjE1MFwiLCBcIk00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTkyLjUgMjIwLjVsMTIzIDEyM2M0LjcgNC43IDEyLjMgNC43IDE3IDBsMTIzLTEyM2M3LjYtNy42IDIuMi0yMC41LTguNS0yMC41SDEwMWMtMTAuNyAwLTE2LjEgMTIuOS04LjUgMjAuNXpcIl1cbn07XG52YXIgZmFDYXJldFNxdWFyZUxlZnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FyZXQtc3F1YXJlLWxlZnQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxOTFcIiwgXCJNNDAwIDQ4MEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDM1MmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djM1MmMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4ek0yNTkuNTE1IDEyNC40ODVsLTEyMy4wMyAxMjMuMDNjLTQuNjg2IDQuNjg2LTQuNjg2IDEyLjI4NCAwIDE2Ljk3MWwxMjMuMDI5IDEyMy4wMjljNy41NiA3LjU2IDIwLjQ4NSAyLjIwNiAyMC40ODUtOC40ODVWMTMyLjk3MWMuMDAxLTEwLjY5MS0xMi45MjUtMTYuMDQ1LTIwLjQ4NC04LjQ4NnpcIl1cbn07XG52YXIgZmFDYXJldFNxdWFyZVJpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhcmV0LXNxdWFyZS1yaWdodCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjE1MlwiLCBcIk00OCAzMmgzNTJjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4em0xNDAuNDg1IDM1NS41MTVsMTIzLjAyOS0xMjMuMDI5YzQuNjg2LTQuNjg2IDQuNjg2LTEyLjI4NCAwLTE2Ljk3MWwtMTIzLjAyOS0xMjMuMDNjLTcuNTYtNy41Ni0yMC40ODUtMi4yMDYtMjAuNDg1IDguNDg1djI0Ni4wNTljMCAxMC42OTEgMTIuOTI2IDE2LjA0NSAyMC40ODUgOC40ODZ6XCJdXG59O1xudmFyIGZhQ2FyZXRTcXVhcmVVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXJldC1zcXVhcmUtdXAnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxNTFcIiwgXCJNMCA0MzJWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGgzNTJjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OHptMzU1LjUxNS0xNDAuNDg1bC0xMjMuMDMtMTIzLjAzYy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMOTIuNDg1IDI5MS41MTVjLTcuNTYgNy41Ni0yLjIwNiAyMC40ODUgOC40ODUgMjAuNDg1aDI0Ni4wNTljMTAuNjkxIDAgMTYuMDQ1LTEyLjkyNiA4LjQ4Ni0yMC40ODV6XCJdXG59O1xudmFyIGZhQ2FyZXRVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXJldC11cCcsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZjBkOFwiLCBcIk0yODguNjYyIDM1MkgzMS4zMzhjLTE3LjgxOCAwLTI2Ljc0MS0yMS41NDMtMTQuMTQyLTM0LjE0MmwxMjguNjYyLTEyOC42NjJjNy44MS03LjgxIDIwLjQ3NC03LjgxIDI4LjI4NCAwbDEyOC42NjIgMTI4LjY2MmMxMi42IDEyLjU5OSAzLjY3NiAzNC4xNDItMTQuMTQyIDM0LjE0MnpcIl1cbn07XG52YXIgZmFDYXJyb3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2Fycm90JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNzg3XCIsIFwiTTI5OC4yIDE1Ni42Yy01Mi43LTI1LjctMTE0LjUtMTAuNS0xNTAuMiAzMi44bDU1LjIgNTUuMmM2LjMgNi4zIDYuMyAxNi40IDAgMjIuNi0zLjEgMy4xLTcuMiA0LjctMTEuMyA0LjdzLTguMi0xLjYtMTEuMy00LjdMMTMwLjQgMjE3IDIuMyA0NzkuN2MtMi45IDYtMy4xIDEzLjMgMCAxOS43IDUuNCAxMS4xIDE4LjkgMTUuNyAzMCAxMC4zbDEzMy42LTY1LjItNDkuMi00OS4yYy02LjMtNi4yLTYuMy0xNi40IDAtMjIuNiA2LjMtNi4yIDE2LjQtNi4yIDIyLjYgMGw1NyA1NyAxMDItNDkuOGMyNC0xMS43IDQ0LjUtMzEuMyA1Ny4xLTU3LjEgMzAuMS02MS43IDQuNS0xMzYuMS01Ny4yLTE2Ni4yem05Mi4xLTM0LjlDNDA5LjggODEgMzk5LjcgMzIuOSAzNjAgMGMtNTAuMyA0MS43LTUyLjUgMTA3LjUtNy45IDE1MS45bDggOGM0NC40IDQ0LjYgMTEwLjMgNDIuNCAxNTEuOS03LjktMzIuOS0zOS43LTgxLTQ5LjgtMTIxLjctMzAuM3pcIl1cbn07XG52YXIgZmFDYXJ0QXJyb3dEb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhcnQtYXJyb3ctZG93bicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjIxOFwiLCBcIk01MDQuNzE3IDMyMEgyMTEuNTcybDYuNTQ1IDMyaDI2OC40MThjMTUuNDAxIDAgMjYuODE2IDE0LjMwMSAyMy40MDMgMjkuMzE5bC01LjUxNyAyNC4yNzZDNTIzLjExMiA0MTQuNjY4IDUzNiA0MzMuODI4IDUzNiA0NTZjMCAzMS4yMDItMjUuNTE5IDU2LjQ0NC01Ni44MjQgNTUuOTk0LTI5LjgyMy0uNDI5LTU0LjM1LTI0LjYzMS01NS4xNTUtNTQuNDQ3LS40NC0xNi4yODcgNi4wODUtMzEuMDQ5IDE2LjgwMy00MS41NDhIMjMxLjE3NkMyNDEuNTUzIDQyNi4xNjUgMjQ4IDQ0MC4zMjYgMjQ4IDQ1NmMwIDMxLjgxMy0yNi41MjggNTcuNDMxLTU4LjY3IDU1LjkzOC0yOC41NC0xLjMyNS01MS43NTEtMjQuMzg1LTUzLjI1MS01Mi45MTctMS4xNTgtMjIuMDM0IDEwLjQzNi00MS40NTUgMjguMDUxLTUxLjU4Nkw5My44ODMgNjRIMjRDMTAuNzQ1IDY0IDAgNTMuMjU1IDAgNDBWMjRDMCAxMC43NDUgMTAuNzQ1IDAgMjQgMGgxMDIuNTI5YzExLjQwMSAwIDIxLjIyOCA4LjAyMSAyMy41MTMgMTkuMTlMMTU5LjIwOCA2NEg1NTEuOTljMTUuNDAxIDAgMjYuODE2IDE0LjMwMSAyMy40MDMgMjkuMzE5bC00Ny4yNzMgMjA4QzUyNS42MzcgMzEyLjI0NiA1MTUuOTIzIDMyMCA1MDQuNzE3IDMyMHpNNDAzLjAyOSAxOTJIMzYwdi02MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yNGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY2MGgtNDMuMDI5Yy0xMC42OTEgMC0xNi4wNDUgMTIuOTI2LTguNDg1IDIwLjQ4NWw2Ny4wMjkgNjcuMDI5YzQuNjg2IDQuNjg2IDEyLjI4NCA0LjY4NiAxNi45NzEgMGw2Ny4wMjktNjcuMDI5YzcuNTU5LTcuNTU5IDIuMjA1LTIwLjQ4NS04LjQ4Ni0yMC40ODV6XCJdXG59O1xudmFyIGZhQ2FydFBsdXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FydC1wbHVzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMjE3XCIsIFwiTTUwNC43MTcgMzIwSDIxMS41NzJsNi41NDUgMzJoMjY4LjQxOGMxNS40MDEgMCAyNi44MTYgMTQuMzAxIDIzLjQwMyAyOS4zMTlsLTUuNTE3IDI0LjI3NkM1MjMuMTEyIDQxNC42NjggNTM2IDQzMy44MjggNTM2IDQ1NmMwIDMxLjIwMi0yNS41MTkgNTYuNDQ0LTU2LjgyNCA1NS45OTQtMjkuODIzLS40MjktNTQuMzUtMjQuNjMxLTU1LjE1NS01NC40NDctLjQ0LTE2LjI4NyA2LjA4NS0zMS4wNDkgMTYuODAzLTQxLjU0OEgyMzEuMTc2QzI0MS41NTMgNDI2LjE2NSAyNDggNDQwLjMyNiAyNDggNDU2YzAgMzEuODEzLTI2LjUyOCA1Ny40MzEtNTguNjcgNTUuOTM4LTI4LjU0LTEuMzI1LTUxLjc1MS0yNC4zODUtNTMuMjUxLTUyLjkxNy0xLjE1OC0yMi4wMzQgMTAuNDM2LTQxLjQ1NSAyOC4wNTEtNTEuNTg2TDkzLjg4MyA2NEgyNEMxMC43NDUgNjQgMCA1My4yNTUgMCA0MFYyNEMwIDEwLjc0NSAxMC43NDUgMCAyNCAwaDEwMi41MjljMTEuNDAxIDAgMjEuMjI4IDguMDIxIDIzLjUxMyAxOS4xOUwxNTkuMjA4IDY0SDU1MS45OWMxNS40MDEgMCAyNi44MTYgMTQuMzAxIDIzLjQwMyAyOS4zMTlsLTQ3LjI3MyAyMDhDNTI1LjYzNyAzMTIuMjQ2IDUxNS45MjMgMzIwIDUwNC43MTcgMzIwek00MDggMTY4aC00OHYtNDBjMC04LjgzNy03LjE2My0xNi0xNi0xNmgtMTZjLTguODM3IDAtMTYgNy4xNjMtMTYgMTZ2NDBoLTQ4Yy04LjgzNyAwLTE2IDcuMTYzLTE2IDE2djE2YzAgOC44MzcgNy4xNjMgMTYgMTYgMTZoNDh2NDBjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmgxNmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2di00MGg0OGM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2di0xNmMwLTguODM3LTcuMTYzLTE2LTE2LTE2elwiXVxufTtcbnZhciBmYUNhc2hSZWdpc3RlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXNoLXJlZ2lzdGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNzg4XCIsIFwiTTUxMS4xIDM3OC44bC0yNi43LTE2MGMtMi42LTE1LjQtMTUuOS0yNi43LTMxLjYtMjYuN0gyMDh2LTY0aDk2YzguOCAwIDE2LTcuMiAxNi0xNlYxNmMwLTguOC03LjItMTYtMTYtMTZINDhjLTguOCAwLTE2IDcuMi0xNiAxNnY5NmMwIDguOCA3LjIgMTYgMTYgMTZoOTZ2NjRINTkuMWMtMTUuNiAwLTI5IDExLjMtMzEuNiAyNi43TC44IDM3OC43Yy0uNiAzLjUtLjkgNy0uOSAxMC41VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg0NDhjMTcuNyAwIDMyLTE0LjMgMzItMzJ2LTkwLjdjLjEtMy41LS4yLTctLjgtMTAuNXpNMjgwIDI0OGMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNmgtMTZjLTguOCAwLTE2LTcuMi0xNi0xNnYtMTZ6bS0zMiA2NGgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2aC0xNmMtOC44IDAtMTYtNy4yLTE2LTE2di0xNmMwLTguOCA3LjItMTYgMTYtMTZ6bS0zMi04MGM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2aC0xNmMtOC44IDAtMTYtNy4yLTE2LTE2di0xNmMwLTguOCA3LjItMTYgMTYtMTZoMTZ6TTgwIDgwVjQ4aDE5MnYzMkg4MHptNDAgMjAwaC0xNmMtOC44IDAtMTYtNy4yLTE2LTE2di0xNmMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNnptMTYgNjR2LTE2YzAtOC44IDcuMi0xNiAxNi0xNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2aC0xNmMtOC44IDAtMTYtNy4yLTE2LTE2em0yMTYgMTEyYzAgNC40LTMuNiA4LTggOEgxNjhjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDE3NmM0LjQgMCA4IDMuNiA4IDh2MTZ6bTI0LTExMmMwIDguOC03LjIgMTYtMTYgMTZoLTE2Yy04LjggMC0xNi03LjItMTYtMTZ2LTE2YzAtOC44IDcuMi0xNiAxNi0xNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZ6bTQ4LTgwYzAgOC44LTcuMiAxNi0xNiAxNmgtMTZjLTguOCAwLTE2LTcuMi0xNi0xNnYtMTZjMC04LjggNy4yLTE2IDE2LTE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNnpcIl1cbn07XG52YXIgZmFDYXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2F0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNmJlXCIsIFwiTTI5MC41OSAxOTJjLTIwLjE4IDAtMTA2LjgyIDEuOTgtMTYyLjU5IDg1Ljk1VjE5MmMwLTUyLjk0LTQzLjA2LTk2LTk2LTk2LTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJzMTQuMzMgMzIgMzIgMzJjMTcuNjQgMCAzMiAxNC4zNiAzMiAzMnYyNTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRoMTc2YzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC0zMmwxMjgtOTZ2MTQ0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2VjI4OS44NmMtMTAuMjkgMi42Ny0yMC44OSA0LjU0LTMyIDQuNTQtNjEuODEgMC0xMTMuNTItNDQuMDUtMTI1LjQxLTEwMi40ek00NDggOTZoLTY0bC02NC02NHYxMzQuNGMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2czk2LTQyLjk4IDk2LTk2VjMybC02NCA2NHptLTcyIDgwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnM3LjE2LTE2IDE2LTE2IDE2IDcuMTYgMTYgMTYtNy4xNiAxNi0xNiAxNnptODAgMGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNiAxNiA3LjE2IDE2IDE2LTcuMTYgMTYtMTYgMTZ6XCJdXG59O1xudmFyIGZhQ2VydGlmaWNhdGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2VydGlmaWNhdGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwYTNcIiwgXCJNNDU4LjYyMiAyNTUuOTJsNDUuOTg1LTQ1LjAwNWMxMy43MDgtMTIuOTc3IDcuMzE2LTM2LjAzOS0xMC42NjQtNDAuMzM5bC02Mi42NS0xNS45OSAxNy42NjEtNjIuMDE1YzQuOTkxLTE3LjgzOC0xMS44MjktMzQuNjYzLTI5LjY2MS0yOS42NzFsLTYxLjk5NCAxNy42NjctMTUuOTg0LTYyLjY3MUMzMzcuMDg1LjE5NyAzMTMuNzY1LTYuMjc2IDMwMC45OSA3LjIyOEwyNTYgNTMuNTcgMjExLjAxMSA3LjIyOWMtMTIuNjMtMTMuMzUxLTM2LjA0Ny03LjIzNC00MC4zMjUgMTAuNjY4bC0xNS45ODQgNjIuNjcxLTYxLjk5NS0xNy42NjdDNzQuODcgNTcuOTA3IDU4LjA1NiA3NC43MzggNjMuMDQ2IDkyLjU3MmwxNy42NjEgNjIuMDE1LTYyLjY1IDE1Ljk5Qy4wNjkgMTc0Ljg3OC02LjMxIDE5Ny45NDQgNy4zOTIgMjEwLjkxNWw0NS45ODUgNDUuMDA1LTQ1Ljk4NSA0NS4wMDRjLTEzLjcwOCAxMi45NzctNy4zMTYgMzYuMDM5IDEwLjY2NCA0MC4zMzlsNjIuNjUgMTUuOTktMTcuNjYxIDYyLjAxNWMtNC45OTEgMTcuODM4IDExLjgyOSAzNC42NjMgMjkuNjYxIDI5LjY3MWw2MS45OTQtMTcuNjY3IDE1Ljk4NCA2Mi42NzFjNC40MzkgMTguNTc1IDI3LjY5NiAyNC4wMTggNDAuMzI1IDEwLjY2OEwyNTYgNDU4LjYxbDQ0Ljk4OSA0Ni4wMDFjMTIuNSAxMy40ODggMzUuOTg3IDcuNDg2IDQwLjMyNS0xMC42NjhsMTUuOTg0LTYyLjY3MSA2MS45OTQgMTcuNjY3YzE3LjgzNiA0Ljk5NCAzNC42NTEtMTEuODM3IDI5LjY2MS0yOS42NzFsLTE3LjY2MS02Mi4wMTUgNjIuNjUtMTUuOTljMTcuOTg3LTQuMzAyIDI0LjM2Ni0yNy4zNjcgMTAuNjY0LTQwLjMzOWwtNDUuOTg0LTQ1LjAwNHpcIl1cbn07XG52YXIgZmFDaGFpciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGFpcicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjZjMFwiLCBcIk0xMTIgMTI4YzAtMjkuNSAxNi4yLTU1IDQwLTY4LjlWMjU2aDQ4VjQ4aDQ4djIwOGg0OFY1OS4xYzIzLjggMTMuOSA0MCAzOS40IDQwIDY4Ljl2MTI4aDQ4VjEyOEMzODQgNTcuMyAzMjYuNyAwIDI1NiAwaC02NEMxMjEuMyAwIDY0IDU3LjMgNjQgMTI4djEyOGg0OHptMzM0LjMgMjEzLjlsLTEwLjctMzJjLTQuNC0xMy4xLTE2LjYtMjEuOS0zMC40LTIxLjlINDIuN2MtMTMuOCAwLTI2IDguOC0zMC40IDIxLjlsLTEwLjcgMzJDLTUuMiAzNjIuNiAxMC4yIDM4NCAzMiAzODR2MTEyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzg0aDI1NnYxMTJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzODRjMjEuOCAwIDM3LjItMjEuNCAzMC4zLTQyLjF6XCJdXG59O1xudmFyIGZhQ2hhbGtib2FyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGFsa2JvYXJkJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTFiXCIsIFwiTTk2IDY0aDQ0OHYzNTJoNjRWNDBjMC0yMi4wNi0xNy45NC00MC00MC00MEg3MkM0OS45NCAwIDMyIDE3Ljk0IDMyIDQwdjM3Nmg2NFY2NHptNTI4IDM4NEg0ODB2LTY0SDI4OHY2NEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNjA4YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIl1cbn07XG52YXIgZmFDaGFsa2JvYXJkVGVhY2hlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGFsa2JvYXJkLXRlYWNoZXInLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1MWNcIiwgXCJNMjA4IDM1MmMtMi4zOSAwLTQuNzguMzUtNy4wNiAxLjA5QzE4Ny45OCAzNTcuMyAxNzQuMzUgMzYwIDE2MCAzNjBjLTE0LjM1IDAtMjcuOTgtMi43LTQwLjk1LTYuOTEtMi4yOC0uNzQtNC42Ni0xLjA5LTcuMDUtMS4wOUM0OS45NCAzNTItLjMzIDQwMi40OCAwIDQ2NC42Mi4xNCA0OTAuODggMjEuNzMgNTEyIDQ4IDUxMmgyMjRjMjYuMjcgMCA0Ny44Ni0yMS4xMiA0OC00Ny4zOC4zMy02Mi4xNC00OS45NC0xMTIuNjItMTEyLTExMi42MnptLTQ4LTMyYzUzLjAyIDAgOTYtNDIuOTggOTYtOTZzLTQyLjk4LTk2LTk2LTk2LTk2IDQyLjk4LTk2IDk2IDQyLjk4IDk2IDk2IDk2ek01OTIgMEgyMDhjLTI2LjQ3IDAtNDggMjIuMjUtNDggNDkuNTlWOTZjMjMuNDIgMCA0NS4xIDYuNzggNjQgMTcuOFY2NGgzNTJ2Mjg4aC02NHYtNjRIMzg0djY0aC03Ni4yNGMxOS4xIDE2LjY5IDMzLjEyIDM4LjczIDM5LjY5IDY0SDU5MmMyNi40NyAwIDQ4LTIyLjI1IDQ4LTQ5LjU5VjQ5LjU5QzY0MCAyMi4yNSA2MTguNDcgMCA1OTIgMHpcIl1cbn07XG52YXIgZmFDaGFyZ2luZ1N0YXRpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hhcmdpbmctc3RhdGlvbicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjVlN1wiLCBcIk0zMzYgNDQ4SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMjBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2em0yMDgtMzIwVjgwYzAtOC44NC03LjE2LTE2LTE2LTE2cy0xNiA3LjE2LTE2IDE2djQ4aC0zMlY4MGMwLTguODQtNy4xNi0xNi0xNi0xNnMtMTYgNy4xNi0xNiAxNnY0OGgtMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgMzUuNzYgMjMuNjIgNjUuNjkgNTYgNzUuOTN2MTE4LjQ5YzAgMTMuOTUtOS41IDI2LjkyLTIzLjI2IDI5LjE5QzQzMS4yMiA0MDIuNSA0MTYgMzg4Ljk5IDQxNiAzNzJ2LTI4YzAtNDguNi0zOS40LTg4LTg4LTg4aC04VjY0YzAtMzUuMzUtMjguNjUtNjQtNjQtNjRIOTZDNjAuNjUgMCAzMiAyOC42NSAzMiA2NHYzNTJoMjg4VjMwNGg4YzIyLjA5IDAgNDAgMTcuOTEgNDAgNDB2MjQuNjFjMCAzOS42NyAyOC45MiA3NS4xNiA2OC40MSA3OS4wMUM0ODEuNzEgNDUyLjA1IDUyMCA0MTYuNDEgNTIwIDM3MlYyNTEuOTNjMzIuMzgtMTAuMjQgNTYtNDAuMTcgNTYtNzUuOTN2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2aC0xNnptLTI4My45MSA0Ny43NmwtOTMuNyAxMzljLTIuMiAzLjMzLTYuMjEgNS4yNC0xMC4zOSA1LjI0LTcuNjcgMC0xMy40Ny02LjI4LTExLjY3LTEyLjkyTDE2Ny4zNSAyMjRIMTA4Yy03LjI1IDAtMTIuODUtNS41OS0xMS44OS0xMS44OWwxNi0xMDdDMTEyLjkgOTkuOSAxMTcuOTggOTYgMTI0IDk2aDY4YzcuODggMCAxMy42MiA2LjU0IDExLjYgMTMuMjFMMTkyIDE2MGg1Ny43YzkuMjQgMCAxNS4wMSA4Ljc4IDEwLjM5IDE1Ljc2elwiXVxufTtcbnZhciBmYUNoYXJ0QXJlYSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGFydC1hcmVhJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMWZlXCIsIFwiTTUwMCAzODRjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMkgxMmMtNi42IDAtMTItNS40LTEyLTEyVjc2YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2MzA4aDQzNnpNMzcyLjcgMTU5LjVMMjg4IDIxNmwtODUuMy0xMTMuN2MtNS4xLTYuOC0xNS41LTYuMy0xOS45IDFMOTYgMjQ4djEwNGgzODRsLTg5LjktMTg3LjhjLTMuMi02LjUtMTEuNC04LjctMTcuNC00Ljd6XCJdXG59O1xudmFyIGZhQ2hhcnRCYXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hhcnQtYmFyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDgwXCIsIFwiTTMzMi44IDMyMGgzOC40YzYuNCAwIDEyLjgtNi40IDEyLjgtMTIuOFYxNzIuOGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTM4LjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHYxMzQuNGMwIDYuNCA2LjQgMTIuOCAxMi44IDEyLjh6bTk2IDBoMzguNGM2LjQgMCAxMi44LTYuNCAxMi44LTEyLjhWNzYuOGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTM4LjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHYyMzAuNGMwIDYuNCA2LjQgMTIuOCAxMi44IDEyLjh6bS0yODggMGgzOC40YzYuNCAwIDEyLjgtNi40IDEyLjgtMTIuOHYtNzAuNGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTM4LjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHY3MC40YzAgNi40IDYuNCAxMi44IDEyLjggMTIuOHptOTYgMGgzOC40YzYuNCAwIDEyLjgtNi40IDEyLjgtMTIuOFYxMDguOGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTM4LjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHYxOTguNGMwIDYuNCA2LjQgMTIuOCAxMi44IDEyLjh6TTQ5NiAzODRINjRWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiA2NCAwIDcxLjE2IDAgODB2MzM2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNDY0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIl1cbn07XG52YXIgZmFDaGFydExpbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hhcnQtbGluZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjIwMVwiLCBcIk00OTYgMzg0SDY0VjgwYzAtOC44NC03LjE2LTE2LTE2LTE2SDE2QzcuMTYgNjQgMCA3MS4xNiAwIDgwdjMzNmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDQ2NGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTQ2NCA5NkgzNDUuOTRjLTIxLjM4IDAtMzIuMDkgMjUuODUtMTYuOTcgNDAuOTdsMzIuNCAzMi40TDI4OCAyNDIuNzVsLTczLjM3LTczLjM3Yy0xMi41LTEyLjUtMzIuNzYtMTIuNS00NS4yNSAwbC02OC42OSA2OC42OWMtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wyMi42MiAyMi42MmM2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwTDE5MiAyMzcuMjVsNzMuMzcgNzMuMzdjMTIuNSAxMi41IDMyLjc2IDEyLjUgNDUuMjUgMGw5Ni05NiAzMi40IDMyLjRjMTUuMTIgMTUuMTIgNDAuOTcgNC40MSA0MC45Ny0xNi45N1YxMTJjLjAxLTguODQtNy4xNS0xNi0xNS45OS0xNnpcIl1cbn07XG52YXIgZmFDaGFydFBpZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGFydC1waWUnLFxuICBpY29uOiBbNTQ0LCA1MTIsIFtdLCBcImYyMDBcIiwgXCJNNTI3Ljc5IDI4OEgyOTAuNWwxNTguMDMgMTU4LjAzYzYuMDQgNi4wNCAxNS45OCA2LjUzIDIyLjE5LjY4IDM4LjctMzYuNDYgNjUuMzItODUuNjEgNzMuMTMtMTQwLjg2IDEuMzQtOS40Ni02LjUxLTE3Ljg1LTE2LjA2LTE3Ljg1em0tMTUuODMtNjQuOEM1MDMuNzIgMTAzLjc0IDQwOC4yNiA4LjI4IDI4OC44LjA0IDI3OS42OC0uNTkgMjcyIDcuMSAyNzIgMTYuMjRWMjQwaDIyMy43N2M5LjE0IDAgMTYuODItNy42OCAxNi4xOS0xNi44ek0yMjQgMjg4VjUwLjcxYzAtOS41NS04LjM5LTE3LjQtMTcuODQtMTYuMDZDODYuOTkgNTEuNDktNC4xIDE1NS42LjE0IDI4MC4zNyA0LjUgNDA4LjUxIDExNC44MyA1MTMuNTkgMjQzLjAzIDUxMS45OGM1MC40LS42MyA5Ni45Ny0xNi44NyAxMzUuMjYtNDQuMDMgNy45LTUuNiA4LjQyLTE3LjIzIDEuNTctMjQuMDhMMjI0IDI4OHpcIl1cbn07XG52YXIgZmFDaGVjayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGVjaycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAwY1wiLCBcIk0xNzMuODk4IDQzOS40MDRsLTE2Ni40LTE2Ni40Yy05Ljk5Ny05Ljk5Ny05Ljk5Ny0yNi4yMDYgMC0zNi4yMDRsMzYuMjAzLTM2LjIwNGM5Ljk5Ny05Ljk5OCAyNi4yMDctOS45OTggMzYuMjA0IDBMMTkyIDMxMi42OSA0MzIuMDk1IDcyLjU5NmM5Ljk5Ny05Ljk5NyAyNi4yMDctOS45OTcgMzYuMjA0IDBsMzYuMjAzIDM2LjIwNGM5Ljk5NyA5Ljk5NyA5Ljk5NyAyNi4yMDYgMCAzNi4yMDRsLTI5NC40IDI5NC40MDFjLTkuOTk4IDkuOTk3LTI2LjIwNyA5Ljk5Ny0zNi4yMDQtLjAwMXpcIl1cbn07XG52YXIgZmFDaGVja0NpcmNsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGVjay1jaXJjbGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwNThcIiwgXCJNNTA0IDI1NmMwIDEzNi45NjctMTExLjAzMyAyNDgtMjQ4IDI0OFM4IDM5Mi45NjcgOCAyNTYgMTE5LjAzMyA4IDI1NiA4czI0OCAxMTEuMDMzIDI0OCAyNDh6TTIyNy4zMTQgMzg3LjMxNGwxODQtMTg0YzYuMjQ4LTYuMjQ4IDYuMjQ4LTE2LjM3OSAwLTIyLjYyN2wtMjIuNjI3LTIyLjYyN2MtNi4yNDgtNi4yNDktMTYuMzc5LTYuMjQ5LTIyLjYyOCAwTDIxNiAzMDguMTE4bC03MC4wNTktNzAuMDU5Yy02LjI0OC02LjI0OC0xNi4zNzktNi4yNDgtMjIuNjI4IDBsLTIyLjYyNyAyMi42MjdjLTYuMjQ4IDYuMjQ4LTYuMjQ4IDE2LjM3OSAwIDIyLjYyN2wxMDQgMTA0YzYuMjQ5IDYuMjQ5IDE2LjM3OSA2LjI0OSAyMi42MjguMDAxelwiXVxufTtcbnZhciBmYUNoZWNrRG91YmxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoZWNrLWRvdWJsZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjU2MFwiLCBcIk01MDUgMTc0LjhsLTM5LjYtMzkuNmMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMMTkyIDM3NC43IDgwLjYgMjYzLjJjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDcgMzAyLjljLTkuNCA5LjQtOS40IDI0LjYgMCAzNEwxNzUgNTA1YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDI5Ni0yOTYuMmM5LjQtOS41IDkuNC0yNC43LjEtMzR6bS0zMjQuMyAxMDZjNi4yIDYuMyAxNi40IDYuMyAyMi42IDBsMjA4LTIwOC4yYzYuMi02LjMgNi4yLTE2LjQgMC0yMi42TDM2Ni4xIDQuN2MtNi4yLTYuMy0xNi40LTYuMy0yMi42IDBMMTkyIDE1Ni4ybC01NS40LTU1LjVjLTYuMi02LjMtMTYuNC02LjMtMjIuNiAwTDY4LjcgMTQ2Yy02LjIgNi4zLTYuMiAxNi40IDAgMjIuNmwxMTIgMTEyLjJ6XCJdXG59O1xudmFyIGZhQ2hlY2tTcXVhcmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hlY2stc3F1YXJlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMTRhXCIsIFwiTTQwMCA0ODBINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGgzNTJjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OHptLTIwNC42ODYtOTguMDU5bDE4NC0xODRjNi4yNDgtNi4yNDggNi4yNDgtMTYuMzc5IDAtMjIuNjI3bC0yMi42MjctMjIuNjI3Yy02LjI0OC02LjI0OC0xNi4zNzktNi4yNDktMjIuNjI4IDBMMTg0IDMwMi43NDVsLTcwLjA1OS03MC4wNTljLTYuMjQ4LTYuMjQ4LTE2LjM3OS02LjI0OC0yMi42MjggMGwtMjIuNjI3IDIyLjYyN2MtNi4yNDggNi4yNDgtNi4yNDggMTYuMzc5IDAgMjIuNjI3bDEwNCAxMDRjNi4yNDkgNi4yNSAxNi4zNzkgNi4yNSAyMi42MjguMDAxelwiXVxufTtcbnZhciBmYUNoZWVzZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGVlc2UnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3ZWZcIiwgXCJNMCAyODh2MTYwYTMyIDMyIDAgMCAwIDMyIDMyaDQ0OGEzMiAzMiAwIDAgMCAzMi0zMlYyODh6TTI5OS44MyAzMmEzMiAzMiAwIDAgMC0yMS4xMyA3TDAgMjU2aDUxMmMwLTExOS44OS05NC0yMTcuOC0yMTIuMTctMjI0elwiXVxufTtcbnZhciBmYUNoZXNzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoZXNzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNDM5XCIsIFwiTTc0IDIwOEg2NGExNiAxNiAwIDAgMC0xNiAxNnYxNmExNiAxNiAwIDAgMCAxNiAxNmgxNS45NEE1MzUuNzggNTM1Ljc4IDAgMCAxIDY0IDM4NGgxMjhhNTM1Ljc4IDUzNS43OCAwIDAgMS0xNS45NC0xMjhIMTkyYTE2IDE2IDAgMCAwIDE2LTE2di0xNmExNiAxNiAwIDAgMC0xNi0xNmgtMTBsMzMuODktOTAuMzhhMTYgMTYgMCAwIDAtMTUtMjEuNjJIMTQ0VjY0aDI0YTggOCAwIDAgMCA4LThWNDBhOCA4IDAgMCAwLTgtOGgtMjRWOGE4IDggMCAwIDAtOC04aC0xNmE4IDggMCAwIDAtOCA4djI0SDg4YTggOCAwIDAgMC04IDh2MTZhOCA4IDAgMCAwIDggOGgyNHYzMkg1NS4wOWExNiAxNiAwIDAgMC0xNSAyMS42MnptMTczLjE2IDI1MS41OEwyMjQgNDQ4di0xNmExNiAxNiAwIDAgMC0xNi0xNkg0OGExNiAxNiAwIDAgMC0xNiAxNnYxNkw4Ljg1IDQ1OS41OEExNiAxNiAwIDAgMCAwIDQ3My44OVY0OTZhMTYgMTYgMCAwIDAgMTYgMTZoMjI0YTE2IDE2IDAgMCAwIDE2LTE2di0yMi4xMWExNiAxNiAwIDAgMC04Ljg0LTE0LjMxem05Mi43Ny0xNTcuNzhsLTMuMjkgODIuMmgxMjYuNzJsLTMuMjktODIuMjEgMjQuNi0yMC43OUEzMiAzMiAwIDAgMCA0OTYgMjU2LjU0VjE5OGE2IDYgMCAwIDAtNi02aC0yNi4zOGE2IDYgMCAwIDAtNiA2djI2aC0yNC43MXYtMjZhNiA2IDAgMCAwLTYtNkgzNzMuMWE2IDYgMCAwIDAtNiA2djI2aC0yNC43MXYtMjZhNiA2IDAgMCAwLTYtNkgzMTBhNiA2IDAgMCAwLTYgNnY1OC42YTMyIDMyIDAgMCAwIDExLjM2IDI0LjR6TTM4NCAzMDRhMTYgMTYgMCAwIDEgMzIgMHYzMmgtMzJ6bTExOS4xNiAxNTUuNThMNDgwIDQ0OHYtMTZhMTYgMTYgMCAwIDAtMTYtMTZIMzM2YTE2IDE2IDAgMCAwLTE2IDE2djE2bC0yMy4xNSAxMS41OGExNiAxNiAwIDAgMC04Ljg1IDE0LjMxVjQ5NmExNiAxNiAwIDAgMCAxNiAxNmgxOTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTIyLjExYTE2IDE2IDAgMCAwLTguODQtMTQuMzF6XCJdXG59O1xudmFyIGZhQ2hlc3NCaXNob3AgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hlc3MtYmlzaG9wJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJmNDNhXCIsIFwiTTggMjg3Ljg4YzAgNTEuNjQgMjIuMTQgNzMuODMgNTYgODQuNlY0MTZoMTkydi00My41MmMzMy44Ni0xMC43NyA1Ni0zMyA1Ni04NC42IDAtMzAuNjEtMTAuNzMtNjcuMS0yNi42OS0xMDIuNTZMMTg1IDI4NS42NWE4IDggMCAwIDEtMTEuMzEgMGwtMTEuMzEtMTEuMzFhOCA4IDAgMCAxIDAtMTEuMzFMMjcwLjI3IDE1NS4xYy0yMC44LTM3LjkxLTQ2LjQ3LTcyLjEtNzAuODctOTIuNTlDMjEzLjQgNTkuMDkgMjI0IDQ3LjA1IDIyNCAzMmEzMiAzMiAwIDAgMC0zMi0zMmgtNjRhMzIgMzIgMCAwIDAtMzIgMzJjMCAxNSAxMC42IDI3LjA5IDI0LjYgMzAuNTFDNjcuODEgMTA2LjggOCAyMTQuNSA4IDI4Ny44OHpNMzA0IDQ0OEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgyODhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwiXVxufTtcbnZhciBmYUNoZXNzQm9hcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hlc3MtYm9hcmQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY0M2NcIiwgXCJNMjU1LjkuMmgtNjR2NjRoNjR6TTAgNjQuMTd2NjRoNjR2LTY0ek0xMjggLjJINjR2NjRoNjR6bTY0IDI1NS45djY0aDY0di02NHpNMCAxOTIuMTJ2NjRoNjR2LTY0ek0zODMuODUuMmgtNjR2NjRoNjR6bTEyOCAwaC02NHY2NGg2NHpNMTI4IDI1Ni4xSDY0djY0aDY0ek01MTEuOCA0NDh2LTY0aC02NHY2NHptMC0xMjh2LTY0aC02NHY2NHpNMzgzLjg1IDUxMmg2NHYtNjRoLTY0em0xMjgtMzE5Ljg4di02NGgtNjR2NjR6TTEyOCA1MTJoNjR2LTY0aC02NHpNMCA1MTJoNjR2LTY0SDB6bTI1NS45IDBoNjR2LTY0aC02NHpNMCAzMjAuMDd2NjRoNjR2LTY0em0zMTkuODgtMTkxLjkydi02NGgtNjR2NjR6bS02NCAxMjhoNjR2LTY0aC02NHptLTY0IDEyOHY2NGg2NHYtNjR6bTEyOC02NGg2NHYtNjRoLTY0em0wLTEyNy45NWg2NHYtNjRoLTY0em0wIDE5MS45M3Y2NGg2NHYtNjR6TTY0IDM4NC4wNXY2NGg2NHYtNjR6bTEyOC0yNTUuOXYtNjRoLTY0djY0em0xOTEuOTIgMjU1LjloNjR2LTY0aC02NHptLTEyOC0xOTEuOTN2LTY0aC02NHY2NHptMTI4LTEyNy45NXY2NGg2NHYtNjR6bS0xMjggMjU1Ljl2NjRoNjR2LTY0em0tNjQtMTI3Ljk1SDEyOHY2NGg2NHptMTkxLjkyIDY0aDY0di02NGgtNjR6TTEyOCAxMjguMTVINjR2NjRoNjR6bTAgMTkxLjkydjY0aDY0di02NHpcIl1cbn07XG52YXIgZmFDaGVzc0tpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hlc3Mta2luZycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjQzZlwiLCBcIk00MDAgNDQ4SDQ4YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDM1MmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTE2LTI4OEgyNTZ2LTQ4aDQwYTggOCAwIDAgMCA4LThWNTZhOCA4IDAgMCAwLTgtOGgtNDBWOGE4IDggMCAwIDAtOC04aC00OGE4IDggMCAwIDAtOCA4djQwaC00MGE4IDggMCAwIDAtOCA4djQ4YTggOCAwIDAgMCA4IDhoNDB2NDhIMzJhMzIgMzIgMCAwIDAtMzAuNTIgNDEuNTRMNzQuNTYgNDE2aDI5OC44OGw3My4wOC0yMTQuNDZBMzIgMzIgMCAwIDAgNDE2IDE2MHpcIl1cbn07XG52YXIgZmFDaGVzc0tuaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGVzcy1rbmlnaHQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY0NDFcIiwgXCJNMTkgMjcyLjQ3bDQwLjYzIDE4LjA2YTMyIDMyIDAgMCAwIDI0Ljg4LjQ3bDEyLjc4LTUuMTJhMzIgMzIgMCAwIDAgMTguNzYtMjAuNWw5LjIyLTMwLjY1YTI0IDI0IDAgMCAxIDEyLjU1LTE1LjY1TDE1OS45NCAyMDh2NTAuMzNhNDggNDggMCAwIDEtMjYuNTMgNDIuOTRsLTU3LjIyIDI4LjY1QTgwIDgwIDAgMCAwIDMyIDQwMS40OFY0MTZoMzE5Ljg2VjIyNGMwLTEwNi04NS45Mi0xOTItMTkxLjkyLTE5MkgxMkExMiAxMiAwIDAgMCAwIDQ0YTE2LjkgMTYuOSAwIDAgMCAxLjc5IDcuNThMMTYgODBsLTkgOWEyNCAyNCAwIDAgMC03IDE3djEzNy4yMWEzMiAzMiAwIDAgMCAxOSAyOS4yNnpNNTIgMTI4YTIwIDIwIDAgMSAxLTIwIDIwIDIwIDIwIDAgMCAxIDIwLTIwem0zMTYgMzIwSDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDM1MmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJdXG59O1xudmFyIGZhQ2hlc3NQYXduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoZXNzLXBhd24nLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImY0NDNcIiwgXCJNMTA1LjEgMjI0SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDE2djUuNDljMCA0NC00LjE0IDg2LjYtMjQgMTIyLjUxaDE3NmMtMTkuODktMzUuOTEtMjQtNzguNTEtMjQtMTIyLjUxVjI4OGgxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTI1LjFjMjkuMzktMTguMzggNDkuMS01MC43OCA0OS4xLTg4YTEwNCAxMDQgMCAwIDAtMjA4IDBjMCAzNy4yMiAxOS43MSA2OS42MiA0OS4xIDg4ek0zMDQgNDQ4SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDI4OGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJdXG59O1xudmFyIGZhQ2hlc3NRdWVlbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGVzcy1xdWVlbicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjQ0NVwiLCBcIk0yNTYgMTEyYTU2IDU2IDAgMSAwLTU2LTU2IDU2IDU2IDAgMCAwIDU2IDU2em0xNzYgMzM2SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDM1MmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTcyLjg3LTI2My44NGwtMjguNTEtMTUuOTJjLTcuNDQtNS0xNi45MS0yLjQ2LTIyLjI5IDQuNjhhNDcuNTkgNDcuNTkgMCAwIDEtNDcuMjMgMTguMjNDMzgzLjcgMTg2Ljg2IDM2OCAxNjQuOTMgMzY4IDE0MS40YTEzLjQgMTMuNCAwIDAgMC0xMy40LTEzLjRoLTM4Ljc3Yy02IDAtMTEuNjEgNC0xMi44NiA5LjkxYTQ4IDQ4IDAgMCAxLTkzLjk0IDBjLTEuMjUtNS45Mi02LjgyLTkuOTEtMTIuODYtOS45MUgxNTcuNGExMy40IDEzLjQgMCAwIDAtMTMuNCAxMy40YzAgMjUuNjktMTkgNDguNzUtNDQuNjcgNTAuNDlhNDcuNSA0Ny41IDAgMCAxLTQxLjU0LTE5LjE1Yy01LjI4LTcuMDktMTQuNzMtOS40NS0yMi4wOS00LjU0bC0yOC41NyAxNmExNiAxNiAwIDAgMC01LjQ0IDIwLjQ3TDEwNC4yNCA0MTZoMzAzLjUybDEwMi41NS0yMTEuMzdhMTYgMTYgMCAwIDAtNS40NC0yMC40N3pcIl1cbn07XG52YXIgZmFDaGVzc1Jvb2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hlc3Mtcm9vaycsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjQ0N1wiLCBcIk0zNjggMzJoLTU2YTE2IDE2IDAgMCAwLTE2IDE2djQ4aC00OFY0OGExNiAxNiAwIDAgMC0xNi0xNmgtODBhMTYgMTYgMCAwIDAtMTYgMTZ2NDhIODguMVY0OGExNiAxNiAwIDAgMC0xNi0xNkgxNkExNiAxNiAwIDAgMCAwIDQ4djE3Nmw2NCAzMmMwIDQ4LjMzLTEuNTQgOTUtMTMuMjEgMTYwaDI4Mi40MkMzMjEuNTQgMzUxIDMyMCAzMDMuNzIgMzIwIDI1Nmw2NC0zMlY0OGExNiAxNiAwIDAgMC0xNi0xNnpNMjI0IDMyMGgtNjR2LTY0YTMyIDMyIDAgMCAxIDY0IDB6bTE0NCAxMjhIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzUyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpcIl1cbn07XG52YXIgZmFDaGV2cm9uQ2lyY2xlRG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGV2cm9uLWNpcmNsZS1kb3duJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMTNhXCIsIFwiTTUwNCAyNTZjMCAxMzctMTExIDI0OC0yNDggMjQ4UzggMzkzIDggMjU2IDExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OHpNMjczIDM2OS45bDEzNS41LTEzNS41YzkuNC05LjQgOS40LTI0LjYgMC0zMy45bC0xNy0xN2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMMjU2IDI4NS4xIDE1NC40IDE4My41Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMGwtMTcgMTdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45TDIzOSAzNjkuOWM5LjQgOS40IDI0LjYgOS40IDM0IDB6XCJdXG59O1xudmFyIGZhQ2hldnJvbkNpcmNsZUxlZnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hldnJvbi1jaXJjbGUtbGVmdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjEzN1wiLCBcIk0yNTYgNTA0QzExOSA1MDQgOCAzOTMgOCAyNTZTMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4LTExMSAyNDgtMjQ4IDI0OHpNMTQyLjEgMjczbDEzNS41IDEzNS41YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDE3LTE3YzkuNC05LjQgOS40LTI0LjYgMC0zMy45TDIyNi45IDI1NmwxMDEuNi0xMDEuNmM5LjQtOS40IDkuNC0yNC42IDAtMzMuOWwtMTctMTdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDE0Mi4xIDIzOWMtOS40IDkuNC05LjQgMjQuNiAwIDM0elwiXVxufTtcbnZhciBmYUNoZXZyb25DaXJjbGVSaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGV2cm9uLWNpcmNsZS1yaWdodCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjEzOFwiLCBcIk0yNTYgOGMxMzcgMCAyNDggMTExIDI0OCAyNDhTMzkzIDUwNCAyNTYgNTA0IDggMzkzIDggMjU2IDExOSA4IDI1NiA4em0xMTMuOSAyMzFMMjM0LjQgMTAzLjVjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC0xNyAxN2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlMMjg1LjEgMjU2IDE4My41IDM1Ny42Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWwxNyAxN2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMEwzNjkuOSAyNzNjOS40LTkuNCA5LjQtMjQuNiAwLTM0elwiXVxufTtcbnZhciBmYUNoZXZyb25DaXJjbGVVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGV2cm9uLWNpcmNsZS11cCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjEzOVwiLCBcIk04IDI1NkM4IDExOSAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDgtMTExIDI0OC0yNDggMjQ4UzggMzkzIDggMjU2em0yMzEtMTEzLjlMMTAzLjUgMjc3LjZjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDE3IDE3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDI1NiAyMjYuOWwxMDEuNiAxMDEuNmM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwxNy0xN2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyNzMgMTQyLjFjLTkuNC05LjQtMjQuNi05LjQtMzQgMHpcIl1cbn07XG52YXIgZmFDaGV2cm9uRG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGV2cm9uLWRvd24nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwNzhcIiwgXCJNMjA3LjAyOSAzODEuNDc2TDEyLjY4NiAxODcuMTMyYy05LjM3My05LjM3My05LjM3My0yNC41NjkgMC0zMy45NDFsMjIuNjY3LTIyLjY2N2M5LjM1Ny05LjM1NyAyNC41MjItOS4zNzUgMzMuOTAxLS4wNEwyMjQgMjg0LjUwNWwxNTQuNzQ1LTE1NC4wMjFjOS4zNzktOS4zMzUgMjQuNTQ0LTkuMzE3IDMzLjkwMS4wNGwyMi42NjcgMjIuNjY3YzkuMzczIDkuMzczIDkuMzczIDI0LjU2OSAwIDMzLjk0MUwyNDAuOTcxIDM4MS40NzZjLTkuMzczIDkuMzcyLTI0LjU2OSA5LjM3Mi0zMy45NDIgMHpcIl1cbn07XG52YXIgZmFDaGV2cm9uTGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGV2cm9uLWxlZnQnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImYwNTNcIiwgXCJNMzQuNTIgMjM5LjAzTDIyOC44NyA0NC42OWM5LjM3LTkuMzcgMjQuNTctOS4zNyAzMy45NCAwbDIyLjY3IDIyLjY3YzkuMzYgOS4zNiA5LjM3IDI0LjUyLjA0IDMzLjlMMTMxLjQ5IDI1NmwxNTQuMDIgMTU0Ljc1YzkuMzQgOS4zOCA5LjMyIDI0LjU0LS4wNCAzMy45bC0yMi42NyAyMi42N2MtOS4zNyA5LjM3LTI0LjU3IDkuMzctMzMuOTQgMEwzNC41MiAyNzIuOTdjLTkuMzctOS4zNy05LjM3LTI0LjU3IDAtMzMuOTR6XCJdXG59O1xudmFyIGZhQ2hldnJvblJpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoZXZyb24tcmlnaHQnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImYwNTRcIiwgXCJNMjg1LjQ3NiAyNzIuOTcxTDkxLjEzMiA0NjcuMzE0Yy05LjM3MyA5LjM3My0yNC41NjkgOS4zNzMtMzMuOTQxIDBsLTIyLjY2Ny0yMi42NjdjLTkuMzU3LTkuMzU3LTkuMzc1LTI0LjUyMi0uMDQtMzMuOTAxTDE4OC41MDUgMjU2IDM0LjQ4NCAxMDEuMjU1Yy05LjMzNS05LjM3OS05LjMxNy0yNC41NDQuMDQtMzMuOTAxbDIyLjY2Ny0yMi42NjdjOS4zNzMtOS4zNzMgMjQuNTY5LTkuMzczIDMzLjk0MSAwTDI4NS40NzUgMjM5LjAzYzkuMzczIDkuMzcyIDkuMzczIDI0LjU2OC4wMDEgMzMuOTQxelwiXVxufTtcbnZhciBmYUNoZXZyb25VcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGV2cm9uLXVwJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDc3XCIsIFwiTTI0MC45NzEgMTMwLjUyNGwxOTQuMzQzIDE5NC4zNDNjOS4zNzMgOS4zNzMgOS4zNzMgMjQuNTY5IDAgMzMuOTQxbC0yMi42NjcgMjIuNjY3Yy05LjM1NyA5LjM1Ny0yNC41MjIgOS4zNzUtMzMuOTAxLjA0TDIyNCAyMjcuNDk1IDY5LjI1NSAzODEuNTE2Yy05LjM3OSA5LjMzNS0yNC41NDQgOS4zMTctMzMuOTAxLS4wNGwtMjIuNjY3LTIyLjY2N2MtOS4zNzMtOS4zNzMtOS4zNzMtMjQuNTY5IDAtMzMuOTQxTDIwNy4wMyAxMzAuNTI1YzkuMzcyLTkuMzczIDI0LjU2OC05LjM3MyAzMy45NDEtLjAwMXpcIl1cbn07XG52YXIgZmFDaGlsZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGlsZCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjFhZVwiLCBcIk0xMjAgNzJjMC0zOS43NjUgMzIuMjM1LTcyIDcyLTcyczcyIDMyLjIzNSA3MiA3MmMwIDM5Ljc2NC0zMi4yMzUgNzItNzIgNzJzLTcyLTMyLjIzNi03Mi03MnptMjU0LjYyNyAxLjM3M2MtMTIuNDk2LTEyLjQ5Ny0zMi43NTgtMTIuNDk3LTQ1LjI1NCAwTDI0Mi43NDUgMTYwSDE0MS4yNTRMNTQuNjI3IDczLjM3M2MtMTIuNDk2LTEyLjQ5Ny0zMi43NTgtMTIuNDk3LTQ1LjI1NCAwLTEyLjQ5NyAxMi40OTctMTIuNDk3IDMyLjc1OCAwIDQ1LjI1NUwxMDQgMjEzLjI1NFY0ODBjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMyaDE2YzE3LjY3MyAwIDMyLTE0LjMyNyAzMi0zMlYzNjhoMTZ2MTEyYzAgMTcuNjczIDE0LjMyNyAzMiAzMiAzMmgxNmMxNy42NzMgMCAzMi0xNC4zMjcgMzItMzJWMjEzLjI1NGw5NC42MjctOTQuNjI3YzEyLjQ5Ny0xMi40OTcgMTIuNDk3LTMyLjc1NyAwLTQ1LjI1NHpcIl1cbn07XG52YXIgZmFDaHVyY2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2h1cmNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTFkXCIsIFwiTTQ2NC40NiAyNDYuNjhMMzUyIDE3OS4yVjEyOGg0OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlY4MGMwLTguODQtNy4xNi0xNi0xNi0xNmgtNDhWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OGgtNDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4djUxLjJsLTExMi40NiA2Ny40OEEzMS45OTcgMzEuOTk3IDAgMCAwIDE2MCAyNzQuMTJWNTEyaDk2di05NmMwLTM1LjM1IDI4LjY1LTY0IDY0LTY0czY0IDI4LjY1IDY0IDY0djk2aDk2VjI3NC4xMmMwLTExLjI0LTUuOS0yMS42Ni0xNS41NC0yNy40NHpNMCAzOTUuOTZWNDk2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDExMlYzMjBMMTkuMzkgMzY2LjU0QTMyLjAyNCAzMi4wMjQgMCAwIDAgMCAzOTUuOTZ6bTYyMC42MS0yOS40Mkw1MTIgMzIwdjE5MmgxMTJjOC44NCAwIDE2LTcuMTYgMTYtMTZWMzk1Ljk2YzAtMTIuOC03LjYzLTI0LjM3LTE5LjM5LTI5LjQyelwiXVxufTtcbnZhciBmYUNpcmNsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaXJjbGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxMTFcIiwgXCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHpcIl1cbn07XG52YXIgZmFDaXJjbGVOb3RjaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaXJjbGUtbm90Y2gnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxY2VcIiwgXCJNMjg4IDM5LjA1NnYxNi42NTljMCAxMC44MDQgNy4yODEgMjAuMTU5IDE3LjY4NiAyMy4wNjZDMzgzLjIwNCAxMDAuNDM0IDQ0MCAxNzEuNTE4IDQ0MCAyNTZjMCAxMDEuNjg5LTgyLjI5NSAxODQtMTg0IDE4NC0xMDEuNjg5IDAtMTg0LTgyLjI5NS0xODQtMTg0IDAtODQuNDcgNTYuNzg2LTE1NS41NjQgMTM0LjMxMi0xNzcuMjE5QzIxNi43MTkgNzUuODc0IDIyNCA2Ni41MTcgMjI0IDU1LjcxMlYzOS4wNjRjMC0xNS43MDktMTQuODM0LTI3LjE1My0zMC4wNDYtMjMuMjM0Qzg2LjYwMyA0My40ODIgNy4zOTQgMTQxLjIwNiA4LjAwMyAyNTcuMzMyYy43MiAxMzcuMDUyIDExMS40NzcgMjQ2Ljk1NiAyNDguNTMxIDI0Ni42NjdDMzkzLjI1NSA1MDMuNzExIDUwNCAzOTIuNzg4IDUwNCAyNTZjMC0xMTUuNjMzLTc5LjE0LTIxMi43NzktMTg2LjIxMS0yNDAuMjM2QzMwMi42NzggMTEuODg5IDI4OCAyMy40NTYgMjg4IDM5LjA1NnpcIl1cbn07XG52YXIgZmFDaXR5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NpdHknLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY2NGZcIiwgXCJNNjE2IDE5Mkg0ODBWMjRjMC0xMy4yNi0xMC43NC0yNC0yNC0yNEgzMTJjLTEzLjI2IDAtMjQgMTAuNzQtMjQgMjR2NzJoLTY0VjE2YzAtOC44NC03LjE2LTE2LTE2LTE2aC0xNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2ODBoLTY0VjE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDgwYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY4MEgyNGMtMTMuMjYgMC0yNCAxMC43NC0yNCAyNHYzNjBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1NzZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYyMTZjMC0xMy4yNi0xMC43NS0yNC0yNC0yNHpNMTI4IDQwNGMwIDYuNjMtNS4zNyAxMi0xMiAxMkg3NmMtNi42MyAwLTEyLTUuMzctMTItMTJ2LTQwYzAtNi42MyA1LjM3LTEyIDEyLTEyaDQwYzYuNjMgMCAxMiA1LjM3IDEyIDEydjQwem0wLTk2YzAgNi42My01LjM3IDEyLTEyIDEySDc2Yy02LjYzIDAtMTItNS4zNy0xMi0xMnYtNDBjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6bTAtOTZjMCA2LjYzLTUuMzcgMTItMTIgMTJINzZjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMTI4IDE5MmMwIDYuNjMtNS4zNyAxMi0xMiAxMmgtNDBjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMC05NmMwIDYuNjMtNS4zNyAxMi0xMiAxMmgtNDBjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMC05NmMwIDYuNjMtNS4zNyAxMi0xMiAxMmgtNDBjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMTYwIDk2YzAgNi42My01LjM3IDEyLTEyIDEyaC00MGMtNi42MyAwLTEyLTUuMzctMTItMTJ2LTQwYzAtNi42MyA1LjM3LTEyIDEyLTEyaDQwYzYuNjMgMCAxMiA1LjM3IDEyIDEydjQwem0wLTk2YzAgNi42My01LjM3IDEyLTEyIDEyaC00MGMtNi42MyAwLTEyLTUuMzctMTItMTJ2LTQwYzAtNi42MyA1LjM3LTEyIDEyLTEyaDQwYzYuNjMgMCAxMiA1LjM3IDEyIDEydjQwem0wLTk2YzAgNi42My01LjM3IDEyLTEyIDEyaC00MGMtNi42MyAwLTEyLTUuMzctMTItMTJWNzZjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6bTE2MCAyODhjMCA2LjYzLTUuMzcgMTItMTIgMTJoLTQwYy02LjYzIDAtMTItNS4zNy0xMi0xMnYtNDBjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6bTAtOTZjMCA2LjYzLTUuMzcgMTItMTIgMTJoLTQwYy02LjYzIDAtMTItNS4zNy0xMi0xMnYtNDBjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6XCJdXG59O1xudmFyIGZhQ2xpbmljTWVkaWNhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbGluaWMtbWVkaWNhbCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjdmMlwiLCBcIk0yODggMTE1TDY5LjQ3IDMwNy43MWMtMS42MiAxLjQ2LTMuNjkgMi4xNC01LjQ3IDMuMzVWNDk2YTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlYzMTEuMWMtMS43LTEuMTYtMy43Mi0xLjgyLTUuMjYtMy4yem05NiAyNjFhOCA4IDAgMCAxLTggOGgtNTZ2NTZhOCA4IDAgMCAxLTggOGgtNDhhOCA4IDAgMCAxLTgtOHYtNTZoLTU2YTggOCAwIDAgMS04LTh2LTQ4YTggOCAwIDAgMSA4LThoNTZ2LTU2YTggOCAwIDAgMSA4LThoNDhhOCA4IDAgMCAxIDggOHY1Nmg1NmE4IDggMCAwIDEgOCA4em0xODYuNjktMTM5LjcybC0yNTUuOTQtMjI2YTM5Ljg1IDM5Ljg1IDAgMCAwLTUzLjQ1IDBsLTI1NiAyMjZhMTYgMTYgMCAwIDAtMS4yMSAyMi42TDI1LjUgMjgyLjdhMTYgMTYgMCAwIDAgMjIuNiAxLjIxTDI3Ny40MiA4MS42M2ExNiAxNiAwIDAgMSAyMS4xNyAwTDUyNy45MSAyODMuOWExNiAxNiAwIDAgMCAyMi42LTEuMjFsMjEuNC0yMy44MmExNiAxNiAwIDAgMC0xLjIyLTIyLjU5elwiXVxufTtcbnZhciBmYUNsaXBib2FyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbGlwYm9hcmQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYzMjhcIiwgXCJNMzg0IDExMnYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxMTJjMC0yNi41MSAyMS40OS00OCA0OC00OGg4MGMwLTM1LjI5IDI4LjcxLTY0IDY0LTY0czY0IDI4LjcxIDY0IDY0aDgwYzI2LjUxIDAgNDggMjEuNDkgNDggNDh6TTE5MiA0MGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0czEwLjc0NSAyNCAyNCAyNCAyNC0xMC43NDUgMjQtMjQtMTAuNzQ1LTI0LTI0LTI0bTk2IDExNHYtMjBhNiA2IDAgMCAwLTYtNkgxMDJhNiA2IDAgMCAwLTYgNnYyMGE2IDYgMCAwIDAgNiA2aDE4MGE2IDYgMCAwIDAgNi02elwiXVxufTtcbnZhciBmYUNsaXBib2FyZENoZWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NsaXBib2FyZC1jaGVjaycsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjQ2Y1wiLCBcIk0zMzYgNjRoLTgwYzAtMzUuMy0yOC43LTY0LTY0LTY0cy02NCAyOC43LTY0IDY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xOTIgNDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjQtMjQtMTAuNy0yNC0yNCAxMC43LTI0IDI0LTI0em0xMjEuMiAyMzEuOGwtMTQzIDE0MS44Yy00LjcgNC43LTEyLjMgNC42LTE3LS4xbC04Mi42LTgzLjNjLTQuNy00LjctNC42LTEyLjMuMS0xN0w5OS4xIDI4NWM0LjctNC43IDEyLjMtNC42IDE3IC4xbDQ2IDQ2LjQgMTA2LTEwNS4yYzQuNy00LjcgMTIuMy00LjYgMTcgLjFsMjguMiAyOC40YzQuNyA0LjggNC42IDEyLjMtLjEgMTd6XCJdXG59O1xudmFyIGZhQ2xpcGJvYXJkTGlzdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbGlwYm9hcmQtbGlzdCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjQ2ZFwiLCBcIk0zMzYgNjRoLTgwYzAtMzUuMy0yOC43LTY0LTY0LTY0cy02NCAyOC43LTY0IDY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek05NiA0MjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjQgMjQgMTAuNyAyNCAyNC0xMC43IDI0LTI0IDI0em0wLTk2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0IDI0IDEwLjcgMjQgMjQtMTAuNyAyNC0yNCAyNHptMC05NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNCAyNCAxMC43IDI0IDI0LTEwLjcgMjQtMjQgMjR6bTk2LTE5MmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNC0yNC0xMC43LTI0LTI0IDEwLjctMjQgMjQtMjR6bTEyOCAzNjhjMCA0LjQtMy42IDgtOCA4SDE2OGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTQ0YzQuNCAwIDggMy42IDggOHYxNnptMC05NmMwIDQuNC0zLjYgOC04IDhIMTY4Yy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxNDRjNC40IDAgOCAzLjYgOCA4djE2em0wLTk2YzAgNC40LTMuNiA4LTggOEgxNjhjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDE0NGM0LjQgMCA4IDMuNiA4IDh2MTZ6XCJdXG59O1xudmFyIGZhQ2xvY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xvY2snLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwMTdcIiwgXCJNMjU2LDhDMTE5LDgsOCwxMTksOCwyNTZTMTE5LDUwNCwyNTYsNTA0LDUwNCwzOTMsNTA0LDI1NiwzOTMsOCwyNTYsOFptOTIuNDksMzEzaDBsLTIwLDI1YTE2LDE2LDAsMCwxLTIyLjQ5LDIuNWgwbC02Ny00OS43MmE0MCw0MCwwLDAsMS0xNS0zMS4yM1YxMTJhMTYsMTYsMCwwLDEsMTYtMTZoMzJhMTYsMTYsMCwwLDEsMTYsMTZWMjU2bDU4LDQyLjVBMTYsMTYsMCwwLDEsMzQ4LjQ5LDMyMVpcIl1cbn07XG52YXIgZmFDbG9uZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbG9uZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjI0ZFwiLCBcIk00NjQgMGMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djI4OGMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDE3NmMtMjYuNTEgMC00OC0yMS40OS00OC00OFY0OGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDI4OE0xNzYgNDE2Yy00NC4xMTIgMC04MC0zNS44ODgtODAtODBWMTI4SDQ4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djI4OGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDI4OGMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4di00OEgxNzZ6XCJdXG59O1xudmFyIGZhQ2xvc2VkQ2FwdGlvbmluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbG9zZWQtY2FwdGlvbmluZycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjIwYVwiLCBcIk00NjQgNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2Mjg4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTIxOC4xIDI4Ny43YzIuOC0yLjUgNy4xLTIuMSA5LjIuOWwxOS41IDI3LjdjMS43IDIuNCAxLjUgNS42LS41IDcuNy01My42IDU2LjgtMTcyLjggMzIuMS0xNzIuOC02Ny45IDAtOTcuMyAxMjEuNy0xMTkuNSAxNzIuNS03MC4xIDIuMSAyIDIuNSAzLjIgMSA1LjdsLTE3LjUgMzAuNWMtMS45IDMuMS02LjIgNC05LjEgMS43LTQwLjgtMzItOTQuNi0xNC45LTk0LjYgMzEuMi4xIDQ4IDUxLjEgNzAuNSA5Mi4zIDMyLjZ6bTE5MC40IDBjMi44LTIuNSA3LjEtMi4xIDkuMi45bDE5LjUgMjcuN2MxLjcgMi40IDEuNSA1LjYtLjUgNy43LTUzLjUgNTYuOS0xNzIuNyAzMi4xLTE3Mi43LTY3LjkgMC05Ny4zIDEyMS43LTExOS41IDE3Mi41LTcwLjEgMi4xIDIgMi41IDMuMiAxIDUuN0w0MjAgMjIyLjJjLTEuOSAzLjEtNi4yIDQtOS4xIDEuNy00MC44LTMyLTk0LjYtMTQuOS05NC42IDMxLjIgMCA0OCA1MSA3MC41IDkyLjIgMzIuNnpcIl1cbn07XG52YXIgZmFDbG91ZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbG91ZCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjBjMlwiLCBcIk01MzcuNiAyMjYuNmM0LjEtMTAuNyA2LjQtMjIuNCA2LjQtMzQuNiAwLTUzLTQzLTk2LTk2LTk2LTE5LjcgMC0zOC4xIDYtNTMuMyAxNi4yQzM2NyA2NC4yIDMxNS4zIDMyIDI1NiAzMmMtODguNCAwLTE2MCA3MS42LTE2MCAxNjAgMCAyLjcuMSA1LjQuMiA4LjFDNDAuMiAyMTkuOCAwIDI3My4yIDAgMzM2YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0aDM2OGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOCAwLTYxLjktNDQtMTEzLjYtMTAyLjQtMTI1LjR6XCJdXG59O1xudmFyIGZhQ2xvdWREb3dubG9hZEFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbG91ZC1kb3dubG9hZC1hbHQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYzODFcIiwgXCJNNTM3LjYgMjI2LjZjNC4xLTEwLjcgNi40LTIyLjQgNi40LTM0LjYgMC01My00My05Ni05Ni05Ni0xOS43IDAtMzguMSA2LTUzLjMgMTYuMkMzNjcgNjQuMiAzMTUuMyAzMiAyNTYgMzJjLTg4LjQgMC0xNjAgNzEuNi0xNjAgMTYwIDAgMi43LjEgNS40LjIgOC4xQzQwLjIgMjE5LjggMCAyNzMuMiAwIDMzNmMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NGgzNjhjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjggMC02MS45LTQ0LTExMy42LTEwMi40LTEyNS40em0tMTMyLjkgODguN0wyOTkuMyA0MjAuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBMMTcxLjMgMzE1LjNjLTEwLjEtMTAuMS0yLjktMjcuMyAxMS4zLTI3LjNIMjQ4VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoNDhjOC44IDAgMTYgNy4yIDE2IDE2djExMmg2NS40YzE0LjIgMCAyMS40IDE3LjIgMTEuMyAyNy4zelwiXVxufTtcbnZhciBmYUNsb3VkTWVhdGJhbGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xvdWQtbWVhdGJhbGwnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3M2JcIiwgXCJNNDggMzUyYy0yNi41IDAtNDggMjEuNS00OCA0OHMyMS41IDQ4IDQ4IDQ4IDQ4LTIxLjUgNDgtNDgtMjEuNS00OC00OC00OHptNDE2IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4czIxLjUgNDggNDggNDggNDgtMjEuNSA0OC00OC0yMS41LTQ4LTQ4LTQ4em0tMTE5IDExLjFjNC42LTE0LjUgMS42LTMwLjgtOS44LTQyLjMtMTEuNS0xMS41LTI3LjgtMTQuNC00Mi4zLTkuOS03LTEzLjUtMjAuNy0yMy0zNi45LTIzcy0yOS45IDkuNS0zNi45IDIzYy0xNC41LTQuNi0zMC44LTEuNi00Mi4zIDkuOS0xMS41IDExLjUtMTQuNCAyNy44LTkuOSA0Mi4zLTEzLjUgNy0yMyAyMC43LTIzIDM2LjlzOS41IDI5LjkgMjMgMzYuOWMtNC42IDE0LjUtMS42IDMwLjggOS45IDQyLjMgOC4yIDguMiAxOC45IDEyLjMgMjkuNyAxMi4zIDQuMyAwIDguNS0xLjEgMTIuNi0yLjUgNyAxMy41IDIwLjcgMjMgMzYuOSAyM3MyOS45LTkuNSAzNi45LTIzYzQuMSAxLjMgOC4zIDIuNSAxMi42IDIuNSAxMC44IDAgMjEuNS00LjEgMjkuNy0xMi4zIDExLjUtMTEuNSAxNC40LTI3LjggOS44LTQyLjMgMTMuNS03IDIzLTIwLjcgMjMtMzYuOXMtOS41LTI5LjktMjMtMzYuOXpNNTEyIDIyNGMwLTUzLTQzLTk2LTk2LTk2LS42IDAtMS4xLjItMS42LjIgMS4xLTUuMiAxLjYtMTAuNiAxLjYtMTYuMiAwLTQ0LjItMzUuOC04MC04MC04MC0yNC42IDAtNDYuMyAxMS4zLTYxIDI4LjhDMjU2LjQgMjQuOCAyMTkuMyAwIDE3NiAwIDExNC4xIDAgNjQgNTAuMSA2NCAxMTJjMCA3LjMuOCAxNC4zIDIuMSAyMS4yQzI3LjggMTQ1LjggMCAxODEuNSAwIDIyNGMwIDUzIDQzIDk2IDk2IDk2aDQzLjRjMy42LTggOC40LTE1LjQgMTQuOC0yMS44IDEzLjUtMTMuNSAzMS41LTIxLjEgNTAuOC0yMS4zIDEzLjUtMTMuMiAzMS43LTIwLjkgNTEtMjAuOXMzNy41IDcuNyA1MSAyMC45YzE5LjMuMiAzNy4zIDcuOCA1MC44IDIxLjMgNi40IDYuNCAxMS4zIDEzLjggMTQuOCAyMS44SDQxNmM1MyAwIDk2LTQzIDk2LTk2elwiXVxufTtcbnZhciBmYUNsb3VkTW9vbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbG91ZC1tb29uJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNmMzXCIsIFwiTTM0Mi44IDM1Mi43YzUuNy05LjYgOS4yLTIwLjcgOS4yLTMyLjcgMC0zNS4zLTI4LjctNjQtNjQtNjQtMTcuMiAwLTMyLjggNi45LTQ0LjMgMTcuOS0xNi4zLTI5LjYtNDcuNS00OS45LTgzLjctNDkuOS01MyAwLTk2IDQzLTk2IDk2IDAgMiAuNSAzLjguNiA1LjdDMjcuMSAzMzguOCAwIDM3NC4xIDAgNDE2YzAgNTMgNDMgOTYgOTYgOTZoMjQwYzQ0LjIgMCA4MC0zNS44IDgwLTgwIDAtNDEuOS0zMi4zLTc1LjgtNzMuMi03OS4zem0yMjIuNS01NC4zYy05My4xIDE3LjctMTc4LjUtNTMuNy0xNzguNS0xNDcuNyAwLTU0LjIgMjktMTA0IDc2LjEtMTMwLjggNy4zLTQuMSA1LjQtMTUuMS0yLjgtMTYuN0M0NDguNCAxLjEgNDM2LjcgMCA0MjUgMCAzMTkuMSAwIDIzMy4xIDg1LjkgMjMzLjEgMTkyYzAgOC41LjcgMTYuOCAxLjggMjUgNS45IDQuMyAxMS42IDguOSAxNi43IDE0LjIgMTEuNC00LjcgMjMuNy03LjIgMzYuNC03LjIgNTIuOSAwIDk2IDQzLjEgOTYgOTYgMCAzLjYtLjIgNy4yLS42IDEwLjcgMjMuNiAxMC44IDQyLjQgMjkuNSA1My41IDUyLjYgNTQuNC0zLjQgMTAzLjctMjkuMyAxMzcuMS03MC40IDUuMy02LjUtLjUtMTYuMS04LjctMTQuNXpcIl1cbn07XG52YXIgZmFDbG91ZE1vb25SYWluID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nsb3VkLW1vb24tcmFpbicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjczY1wiLCBcIk0zNTAuNSAyMjUuNWMtNi45LTM3LjItMzkuMy02NS41LTc4LjUtNjUuNS0xMi4zIDAtMjMuOSAzLTM0LjMgOC0xNy40LTI0LjEtNDUuNi00MC03Ny43LTQwLTUzIDAtOTYgNDMtOTYgOTYgMCAuNS4yIDEuMS4yIDEuNkMyNy42IDIzMi45IDAgMjY1LjIgMCAzMDRjMCA0NC4yIDM1LjggODAgODAgODBoMjU2YzQ0LjIgMCA4MC0zNS44IDgwLTgwIDAtMzkuMi0yOC4yLTcxLjctNjUuNS03OC41em0yMTcuNC0xLjdjLTcwLjQgMTMuMy0xMzUtNDAuMy0xMzUtMTEwLjggMC00MC42IDIxLjktNzggNTcuNS05OC4xIDUuNS0zLjEgNC4xLTExLjQtMi4xLTEyLjVDNDc5LjYuOCA0NzAuNyAwIDQ2MS44IDBjLTc3LjkgMC0xNDEuMSA2MS4yLTE0NC40IDEzNy45IDI2LjcgMTEuOSA0OC4yIDMzLjggNTguOSA2MS43IDM3LjEgMTQuMyA2NCA0Ny40IDcwLjIgODYuOCA1LjEuNSAxMCAxLjUgMTUuMiAxLjUgNDQuNyAwIDg1LjYtMjAuMiAxMTIuNi01My4zIDQuMi00LjgtLjItMTItNi40LTEwLjh6TTM2NC41IDQxOC4xYy03LjYtNC4zLTE3LjQtMS44LTIxLjggNmwtMzYuNiA2NGMtNC40IDcuNy0xLjcgMTcuNCA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsMzYuNi02NGM0LjMtNy43IDEuNy0xNy40LTYtMjEuOHptLTk2IDBjLTcuNi00LjMtMTcuNC0xLjgtMjEuOCA2bC0zNi42IDY0Yy00LjQgNy43LTEuNyAxNy40IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWwzNi42LTY0YzQuMy03LjcgMS43LTE3LjQtNi0yMS44em0tOTYgMGMtNy42LTQuMy0xNy40LTEuOC0yMS44IDZsLTM2LjYgNjRjLTQuNCA3LjctMS43IDE3LjQgNiAyMS44IDIuNSAxLjQgNS4yIDIuMSA3LjkgMi4xIDUuNSAwIDEwLjktMi45IDEzLjktOC4xbDM2LjYtNjRjNC4zLTcuNyAxLjctMTcuNC02LTIxLjh6bS05NiAwYy03LjYtNC4zLTE3LjQtMS44LTIxLjggNmwtMzYuNiA2NGMtNC40IDcuNy0xLjcgMTcuNCA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsMzYuNi02NGM0LjMtNy43IDEuNy0xNy40LTYtMjEuOHpcIl1cbn07XG52YXIgZmFDbG91ZFJhaW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xvdWQtcmFpbicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjczZFwiLCBcIk00MTYgMTI4Yy0uNiAwLTEuMS4yLTEuNi4yIDEuMS01LjIgMS42LTEwLjYgMS42LTE2LjIgMC00NC4yLTM1LjgtODAtODAtODAtMjQuNiAwLTQ2LjMgMTEuMy02MSAyOC44QzI1Ni40IDI0LjggMjE5LjMgMCAxNzYgMCAxMTQuMSAwIDY0IDUwLjEgNjQgMTEyYzAgNy4zLjggMTQuMyAyLjEgMjEuMkMyNy44IDE0NS44IDAgMTgxLjUgMCAyMjRjMCA1MyA0MyA5NiA5NiA5NmgzMjBjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZ6TTg4IDM3NC4yYy0xMi44IDQ0LjQtNDAgNTYuNC00MCA4Ny43IDAgMjcuNyAyMS41IDUwLjEgNDggNTAuMXM0OC0yMi40IDQ4LTUwLjFjMC0zMS40LTI3LjItNDMuMS00MC04Ny43LTIuMi04LjEtMTMuNS04LjUtMTYgMHptMTYwIDBjLTEyLjggNDQuNC00MCA1Ni40LTQwIDg3LjcgMCAyNy43IDIxLjUgNTAuMSA0OCA1MC4xczQ4LTIyLjQgNDgtNTAuMWMwLTMxLjQtMjcuMi00My4xLTQwLTg3LjctMi4yLTguMS0xMy41LTguNS0xNiAwem0xNjAgMGMtMTIuOCA0NC40LTQwIDU2LjQtNDAgODcuNyAwIDI3LjcgMjEuNSA1MC4xIDQ4IDUwLjFzNDgtMjIuNCA0OC01MC4xYzAtMzEuNC0yNy4yLTQzLjEtNDAtODcuNy0yLjItOC4xLTEzLjUtOC41LTE2IDB6XCJdXG59O1xudmFyIGZhQ2xvdWRTaG93ZXJzSGVhdnkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xvdWQtc2hvd2Vycy1oZWF2eScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjc0MFwiLCBcIk0xODMuOSAzNzAuMWMtNy42LTQuNC0xNy40LTEuOC0yMS44IDZsLTY0IDExMmMtNC40IDcuNy0xLjcgMTcuNSA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsNjQtMTEyYzQuNC03LjYgMS43LTE3LjQtNi0yMS44em05NiAwYy03LjYtNC40LTE3LjQtMS44LTIxLjggNmwtNjQgMTEyYy00LjQgNy43LTEuNyAxNy41IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWw2NC0xMTJjNC40LTcuNiAxLjctMTcuNC02LTIxLjh6bS0xOTIgMGMtNy42LTQuNC0xNy40LTEuOC0yMS44IDZsLTY0IDExMmMtNC40IDcuNy0xLjcgMTcuNSA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsNjQtMTEyYzQuNC03LjYgMS43LTE3LjQtNi0yMS44em0zODQgMGMtNy42LTQuNC0xNy40LTEuOC0yMS44IDZsLTY0IDExMmMtNC40IDcuNy0xLjcgMTcuNSA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsNjQtMTEyYzQuNC03LjYgMS43LTE3LjQtNi0yMS44em0tOTYgMGMtNy42LTQuNC0xNy40LTEuOC0yMS44IDZsLTY0IDExMmMtNC40IDcuNy0xLjcgMTcuNSA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsNjQtMTEyYzQuNC03LjYgMS43LTE3LjQtNi0yMS44ek00MTYgMTI4Yy0uNiAwLTEuMS4yLTEuNi4yIDEuMS01LjIgMS42LTEwLjYgMS42LTE2LjIgMC00NC4yLTM1LjgtODAtODAtODAtMjQuNiAwLTQ2LjMgMTEuMy02MSAyOC44QzI1Ni40IDI0LjggMjE5LjMgMCAxNzYgMCAxMTQuMiAwIDY0IDUwLjEgNjQgMTEyYzAgNy4zLjggMTQuMyAyLjEgMjEuMkMyNy44IDE0NS44IDAgMTgxLjUgMCAyMjRjMCA1MyA0MyA5NiA5NiA5NmgzMjBjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZ6XCJdXG59O1xudmFyIGZhQ2xvdWRTdW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xvdWQtc3VuJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNmM0XCIsIFwiTTU3NS4yIDMyNS43Yy4yLTEuOS44LTMuNy44LTUuNiAwLTM1LjMtMjguNy02NC02NC02NC0xMi42IDAtMjQuMiAzLjgtMzQuMSAxMC0xNy42LTM4LjgtNTYuNS02Ni0xMDEuOS02Ni02MS44IDAtMTEyIDUwLjEtMTEyIDExMiAwIDMgLjcgNS44LjkgOC43LTQ5LjYgMy43LTg4LjkgNDQuNy04OC45IDk1LjMgMCA1MyA0MyA5NiA5NiA5NmgyNzJjNTMgMCA5Ni00MyA5Ni05NiAwLTQyLjEtMjcuMi03Ny40LTY0LjgtOTAuNHptLTQzMC40LTIyLjZjLTQzLjctNDMuNy00My43LTExNC43IDAtMTU4LjMgNDMuNy00My43IDExNC43LTQzLjcgMTU4LjQgMCA5LjcgOS43IDE2LjkgMjAuOSAyMi4zIDMyLjcgOS44LTMuNyAyMC4xLTYgMzAuNy03LjVMMzg2IDgxLjFjNC0xMS45LTcuMy0yMy4xLTE5LjItMTkuMkwyNzkgOTEuMiAyMzcuNSA4LjRDMjMyLTIuOCAyMTYtMi44IDIxMC40IDguNEwxNjkgOTEuMiA4MS4xIDYxLjlDNjkuMyA1OCA1OCA2OS4zIDYxLjkgODEuMWwyOS4zIDg3LjgtODIuOCA0MS41Yy0xMS4yIDUuNi0xMS4yIDIxLjUgMCAyNy4xbDgyLjggNDEuNC0yOS4zIDg3LjhjLTQgMTEuOSA3LjMgMjMuMSAxOS4yIDE5LjJsNzYuMS0yNS4zYzYuMS0xMi40IDE0LTIzLjcgMjMuNi0zMy41LTEzLjEtNS40LTI1LjQtMTMuNC0zNi0yNHptLTQuOC03OS4yYzAgNDAuOCAyOS4zIDc0LjggNjcuOSA4Mi4zIDgtNC43IDE2LjMtOC44IDI1LjItMTEuNyA1LjQtNDQuMyAzMS04Mi41IDY3LjQtMTA1QzI4Ny4zIDE2MC40IDI1OCAxNDAgMjI0IDE0MGMtNDYuMyAwLTg0IDM3LjYtODQgODMuOXpcIl1cbn07XG52YXIgZmFDbG91ZFN1blJhaW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xvdWQtc3VuLXJhaW4nLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY3NDNcIiwgXCJNNTEwLjUgMjI1LjVjLTYuOS0zNy4yLTM5LjMtNjUuNS03OC41LTY1LjUtMTIuMyAwLTIzLjkgMy0zNC4zIDgtMTcuNC0yNC4xLTQ1LjYtNDAtNzcuNy00MC01MyAwLTk2IDQzLTk2IDk2IDAgLjUuMiAxLjEuMiAxLjZDMTg3LjYgMjMzIDE2MCAyNjUuMiAxNjAgMzA0YzAgNDQuMiAzNS44IDgwIDgwIDgwaDI1NmM0NC4yIDAgODAtMzUuOCA4MC04MCAwLTM5LjItMjguMi03MS43LTY1LjUtNzguNXptLTM4Ni40IDM0LjRjLTM3LjQtMzcuNC0zNy40LTk4LjMgMC0xMzUuOCAzNC42LTM0LjYgODkuMS0zNi44IDEyNi43LTcuNCAyMC0xMi45IDQzLjYtMjAuNyA2OS4yLTIwLjcuNyAwIDEuMy4yIDIgLjJsOC45LTI2LjdjMy40LTEwLjItNi4zLTE5LjgtMTYuNS0xNi40bC03NS4zIDI1LjEtMzUuNS03MWMtNC44LTkuNi0xOC41LTkuNi0yMy4zIDBsLTM1LjUgNzEtNzUuMy0yNS4xYy0xMC4yLTMuNC0xOS44IDYuMy0xNi40IDE2LjVsMjUuMSA3NS4zLTcxIDM1LjVjLTkuNiA0LjgtOS42IDE4LjUgMCAyMy4zbDcxIDM1LjUtMjUuMSA3NS4zYy0zLjQgMTAuMiA2LjMgMTkuOCAxNi41IDE2LjVsNTkuMi0xOS43Yy0uMi0yLjQtLjctNC43LS43LTcuMiAwLTEyLjUgMi4zLTI0LjUgNi4yLTM1LjktMy42LTIuNy03LjEtNS4yLTEwLjItOC4zem02OS44LTU4YzQuMy0yNC41IDE1LjgtNDYuNCAzMS45LTY0LTkuOC02LjItMjEuNC05LjktMzMuOC05LjktMzUuMyAwLTY0IDI4LjctNjQgNjQgMCAxOC43IDguMiAzNS40IDIxLjEgNDcuMSAxMS4zLTE1LjkgMjYuNi0yOC45IDQ0LjgtMzcuMnptMzMwLjYgMjE2LjJjLTcuNi00LjMtMTcuNC0xLjgtMjEuOCA2bC0zNi42IDY0Yy00LjQgNy43LTEuNyAxNy40IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWwzNi42LTY0YzQuMy03LjcgMS43LTE3LjQtNi0yMS44em0tOTYgMGMtNy42LTQuMy0xNy40LTEuOC0yMS44IDZsLTM2LjYgNjRjLTQuNCA3LjctMS43IDE3LjQgNiAyMS44IDIuNSAxLjQgNS4yIDIuMSA3LjkgMi4xIDUuNSAwIDEwLjktMi45IDEzLjktOC4xbDM2LjYtNjRjNC4zLTcuNyAxLjctMTcuNC02LTIxLjh6bS05NiAwYy03LjYtNC4zLTE3LjQtMS44LTIxLjggNmwtMzYuNiA2NGMtNC40IDcuNy0xLjcgMTcuNCA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsMzYuNi02NGM0LjMtNy43IDEuNy0xNy40LTYtMjEuOHptLTk2IDBjLTcuNi00LjMtMTcuNC0xLjgtMjEuOCA2bC0zNi42IDY0Yy00LjQgNy43LTEuNyAxNy40IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWwzNi42LTY0YzQuMy03LjcgMS43LTE3LjQtNi0yMS44elwiXVxufTtcbnZhciBmYUNsb3VkVXBsb2FkQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nsb3VkLXVwbG9hZC1hbHQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYzODJcIiwgXCJNNTM3LjYgMjI2LjZjNC4xLTEwLjcgNi40LTIyLjQgNi40LTM0LjYgMC01My00My05Ni05Ni05Ni0xOS43IDAtMzguMSA2LTUzLjMgMTYuMkMzNjcgNjQuMiAzMTUuMyAzMiAyNTYgMzJjLTg4LjQgMC0xNjAgNzEuNi0xNjAgMTYwIDAgMi43LjEgNS40LjIgOC4xQzQwLjIgMjE5LjggMCAyNzMuMiAwIDMzNmMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NGgzNjhjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjggMC02MS45LTQ0LTExMy42LTEwMi40LTEyNS40ek0zOTMuNCAyODhIMzI4djExMmMwIDguOC03LjIgMTYtMTYgMTZoLTQ4Yy04LjggMC0xNi03LjItMTYtMTZWMjg4aC02NS40Yy0xNC4zIDAtMjEuNC0xNy4yLTExLjMtMjcuM2wxMDUuNC0xMDUuNGM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMGwxMDUuNCAxMDUuNGMxMC4xIDEwLjEgMi45IDI3LjMtMTEuMyAyNy4zelwiXVxufTtcbnZhciBmYUNvY2t0YWlsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvY2t0YWlsJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTYxXCIsIFwiTTI5NiA0NjRoLTU2VjMzOC43OGwxNjguNzQtMTY4LjczYzE1LjUyLTE1LjUyIDQuNTMtNDIuMDUtMTcuNDItNDIuMDVIMjQuNjhjLTIxLjk1IDAtMzIuOTQgMjYuNTMtMTcuNDIgNDIuMDVMMTc2IDMzOC43OFY0NjRoLTU2Yy0yMi4wOSAwLTQwIDE3LjkxLTQwIDQwIDAgNC40MiAzLjU4IDggOCA4aDI0MGM0LjQyIDAgOC0zLjU4IDgtOCAwLTIyLjA5LTE3LjkxLTQwLTQwLTQwek00MzIgMGMtNjIuNjEgMC0xMTUuMzUgNDAuMi0xMzUuMTggOTZoNTIuNTRjMTYuNjUtMjguNTUgNDcuMjctNDggODIuNjQtNDggNTIuOTMgMCA5NiA0My4wNiA5NiA5NnMtNDMuMDcgOTYtOTYgOTZjLTE0LjA0IDAtMjcuMjktMy4yLTM5LjMyLTguNjRsLTM1LjI2IDM1LjI2QzM3OS4yMyAyNzkuOTIgNDA0LjU5IDI4OCA0MzIgMjg4Yzc5LjUzIDAgMTQ0LTY0LjQ3IDE0NC0xNDRTNTExLjUzIDAgNDMyIDB6XCJdXG59O1xudmFyIGZhQ29kZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb2RlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMTIxXCIsIFwiTTI3OC45IDUxMS41bC02MS0xNy43Yy02LjQtMS44LTEwLTguNS04LjItMTQuOUwzNDYuMiA4LjdjMS44LTYuNCA4LjUtMTAgMTQuOS04LjJsNjEgMTcuN2M2LjQgMS44IDEwIDguNSA4LjIgMTQuOUwyOTMuOCA1MDMuM2MtMS45IDYuNC04LjUgMTAuMS0xNC45IDguMnptLTExNC0xMTIuMmw0My41LTQ2LjRjNC42LTQuOSA0LjMtMTIuNy0uOC0xNy4yTDExNyAyNTZsOTAuNi03OS43YzUuMS00LjUgNS41LTEyLjMuOC0xNy4ybC00My41LTQ2LjRjLTQuNS00LjgtMTIuMS01LjEtMTctLjVMMy44IDI0Ny4yYy01LjEgNC43LTUuMSAxMi44IDAgMTcuNWwxNDQuMSAxMzUuMWM0LjkgNC42IDEyLjUgNC40IDE3LS41em0zMjcuMi42bDE0NC4xLTEzNS4xYzUuMS00LjcgNS4xLTEyLjggMC0xNy41TDQ5Mi4xIDExMi4xYy00LjgtNC41LTEyLjQtNC4zLTE3IC41TDQzMS42IDE1OWMtNC42IDQuOS00LjMgMTIuNy44IDE3LjJMNTIzIDI1NmwtOTAuNiA3OS43Yy01LjEgNC41LTUuNSAxMi4zLS44IDE3LjJsNDMuNSA0Ni40YzQuNSA0LjkgMTIuMSA1LjEgMTcgLjZ6XCJdXG59O1xudmFyIGZhQ29kZUJyYW5jaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb2RlLWJyYW5jaCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjEyNlwiLCBcIk0zODQgMTQ0YzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwYzAgMzYuNCAyNC4zIDY3LjEgNTcuNSA3Ni44LS42IDE2LjEtNC4yIDI4LjUtMTEgMzYuOS0xNS40IDE5LjItNDkuMyAyMi40LTg1LjIgMjUuNy0yOC4yIDIuNi01Ny40IDUuNC04MS4zIDE2Ljl2LTE0NGMzMi41LTEwLjIgNTYtNDAuNSA1Ni03Ni4zIDAtNDQuMi0zNS44LTgwLTgwLTgwUzAgMzUuOCAwIDgwYzAgMzUuOCAyMy41IDY2LjEgNTYgNzYuM3YxOTkuM0MyMy41IDM2NS45IDAgMzk2LjIgMCA0MzJjMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MGMwLTM0LTIxLjItNjMuMS01MS4yLTc0LjYgMy4xLTUuMiA3LjgtOS44IDE0LjktMTMuNCAxNi4yLTguMiA0MC40LTEwLjQgNjYuMS0xMi44IDQyLjItMy45IDkwLTguNCAxMTguMi00My40IDE0LTE3LjQgMjEuMS0zOS44IDIxLjYtNjcuOSAzMS42LTEwLjggNTQuNC00MC43IDU0LjQtNzUuOXpNODAgNjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTYtMTYtNy4yLTE2LTE2IDcuMi0xNiAxNi0xNnptMCAzODRjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnptMjI0LTMyMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNi0xNi03LjItMTYtMTYgNy4yLTE2IDE2LTE2elwiXVxufTtcbnZhciBmYUNvZmZlZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb2ZmZWUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYwZjRcIiwgXCJNMTkyIDM4NGgxOTJjNTMgMCA5Ni00MyA5Ni05NmgzMmM3MC42IDAgMTI4LTU3LjQgMTI4LTEyOFM1ODIuNiAzMiA1MTIgMzJIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyMzJjMCA1MyA0MyA5NiA5NiA5NnpNNTEyIDk2YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0aC0zMlY5NmgzMnptNDcuNyAzODRINDguM2MtNDcuNiAwLTYxLTY0LTM2LTY0aDU4My4zYzI1IDAgMTEuOCA2NC0zNS45IDY0elwiXVxufTtcbnZhciBmYUNvZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb2cnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwMTNcIiwgXCJNNDg3LjQgMzE1LjdsLTQyLjYtMjQuNmM0LjMtMjMuMiA0LjMtNDcgMC03MC4ybDQyLjYtMjQuNmM0LjktMi44IDcuMS04LjYgNS41LTE0LTExLjEtMzUuNi0zMC02Ny44LTU0LjctOTQuNi0zLjgtNC4xLTEwLTUuMS0xNC44LTIuM0wzODAuOCAxMTBjLTE3LjktMTUuNC0zOC41LTI3LjMtNjAuOC0zNS4xVjI1LjhjMC01LjYtMy45LTEwLjUtOS40LTExLjctMzYuNy04LjItNzQuMy03LjgtMTA5LjIgMC01LjUgMS4yLTkuNCA2LjEtOS40IDExLjdWNzVjLTIyLjIgNy45LTQyLjggMTkuOC02MC44IDM1LjFMODguNyA4NS41Yy00LjktMi44LTExLTEuOS0xNC44IDIuMy0yNC43IDI2LjctNDMuNiA1OC45LTU0LjcgOTQuNi0xLjcgNS40LjYgMTEuMiA1LjUgMTRMNjcuMyAyMjFjLTQuMyAyMy4yLTQuMyA0NyAwIDcwLjJsLTQyLjYgMjQuNmMtNC45IDIuOC03LjEgOC42LTUuNSAxNCAxMS4xIDM1LjYgMzAgNjcuOCA1NC43IDk0LjYgMy44IDQuMSAxMCA1LjEgMTQuOCAyLjNsNDIuNi0yNC42YzE3LjkgMTUuNCAzOC41IDI3LjMgNjAuOCAzNS4xdjQ5LjJjMCA1LjYgMy45IDEwLjUgOS40IDExLjcgMzYuNyA4LjIgNzQuMyA3LjggMTA5LjIgMCA1LjUtMS4yIDkuNC02LjEgOS40LTExLjd2LTQ5LjJjMjIuMi03LjkgNDIuOC0xOS44IDYwLjgtMzUuMWw0Mi42IDI0LjZjNC45IDIuOCAxMSAxLjkgMTQuOC0yLjMgMjQuNy0yNi43IDQzLjYtNTguOSA1NC43LTk0LjYgMS41LTUuNS0uNy0xMS4zLTUuNi0xNC4xek0yNTYgMzM2Yy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHpcIl1cbn07XG52YXIgZmFDb2dzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvZ3MnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYwODVcIiwgXCJNNTEyLjEgMTkxbC04LjIgMTQuM2MtMyA1LjMtOS40IDcuNS0xNS4xIDUuNC0xMS44LTQuNC0yMi42LTEwLjctMzIuMS0xOC42LTQuNi0zLjgtNS44LTEwLjUtMi44LTE1LjdsOC4yLTE0LjNjLTYuOS04LTEyLjMtMTcuMy0xNS45LTI3LjRoLTE2LjVjLTYgMC0xMS4yLTQuMy0xMi4yLTEwLjMtMi0xMi0yLjEtMjQuNiAwLTM3LjEgMS02IDYuMi0xMC40IDEyLjItMTAuNGgxNi41YzMuNi0xMC4xIDktMTkuNCAxNS45LTI3LjRsLTguMi0xNC4zYy0zLTUuMi0xLjktMTEuOSAyLjgtMTUuNyA5LjUtNy45IDIwLjQtMTQuMiAzMi4xLTE4LjYgNS43LTIuMSAxMi4xLjEgMTUuMSA1LjRsOC4yIDE0LjNjMTAuNS0xLjkgMjEuMi0xLjkgMzEuNyAwTDU1MiA2LjNjMy01LjMgOS40LTcuNSAxNS4xLTUuNCAxMS44IDQuNCAyMi42IDEwLjcgMzIuMSAxOC42IDQuNiAzLjggNS44IDEwLjUgMi44IDE1LjdsLTguMiAxNC4zYzYuOSA4IDEyLjMgMTcuMyAxNS45IDI3LjRoMTYuNWM2IDAgMTEuMiA0LjMgMTIuMiAxMC4zIDIgMTIgMi4xIDI0LjYgMCAzNy4xLTEgNi02LjIgMTAuNC0xMi4yIDEwLjRoLTE2LjVjLTMuNiAxMC4xLTkgMTkuNC0xNS45IDI3LjRsOC4yIDE0LjNjMyA1LjIgMS45IDExLjktMi44IDE1LjctOS41IDcuOS0yMC40IDE0LjItMzIuMSAxOC42LTUuNyAyLjEtMTIuMS0uMS0xNS4xLTUuNGwtOC4yLTE0LjNjLTEwLjQgMS45LTIxLjIgMS45LTMxLjcgMHptLTEwLjUtNTguOGMzOC41IDI5LjYgODIuNC0xNC4zIDUyLjgtNTIuOC0zOC41LTI5LjctODIuNCAxNC4zLTUyLjggNTIuOHpNMzg2LjMgMjg2LjFsMzMuNyAxNi44YzEwLjEgNS44IDE0LjUgMTguMSAxMC41IDI5LjEtOC45IDI0LjItMjYuNCA0Ni40LTQyLjYgNjUuOC03LjQgOC45LTIwLjIgMTEuMS0zMC4zIDUuM2wtMjkuMS0xNi44Yy0xNiAxMy43LTM0LjYgMjQuNi01NC45IDMxLjd2MzMuNmMwIDExLjYtOC4zIDIxLjYtMTkuNyAyMy42LTI0LjYgNC4yLTUwLjQgNC40LTc1LjkgMC0xMS41LTItMjAtMTEuOS0yMC0yMy42VjQxOGMtMjAuMy03LjItMzguOS0xOC01NC45LTMxLjdMNzQgNDAzYy0xMCA1LjgtMjIuOSAzLjYtMzAuMy01LjMtMTYuMi0xOS40LTMzLjMtNDEuNi00Mi4yLTY1LjctNC0xMC45LjQtMjMuMiAxMC41LTI5LjFsMzMuMy0xNi44Yy0zLjktMjAuOS0zLjktNDIuNCAwLTYzLjRMMTIgMjA1LjhjLTEwLjEtNS44LTE0LjYtMTguMS0xMC41LTI5IDguOS0yNC4yIDI2LTQ2LjQgNDIuMi02NS44IDcuNC04LjkgMjAuMi0xMS4xIDMwLjMtNS4zbDI5LjEgMTYuOGMxNi0xMy43IDM0LjYtMjQuNiA1NC45LTMxLjdWNTcuMWMwLTExLjUgOC4yLTIxLjUgMTkuNi0yMy41IDI0LjYtNC4yIDUwLjUtNC40IDc2LS4xIDExLjUgMiAyMCAxMS45IDIwIDIzLjZ2MzMuNmMyMC4zIDcuMiAzOC45IDE4IDU0LjkgMzEuN2wyOS4xLTE2LjhjMTAtNS44IDIyLjktMy42IDMwLjMgNS4zIDE2LjIgMTkuNCAzMy4yIDQxLjYgNDIuMSA2NS44IDQgMTAuOS4xIDIzLjItMTAgMjkuMWwtMzMuNyAxNi44YzMuOSAyMSAzLjkgNDIuNSAwIDYzLjV6bS0xMTcuNiAyMS4xYzU5LjItNzctMjguNy0xNjQuOS0xMDUuNy0xMDUuNy01OS4yIDc3IDI4LjcgMTY0LjkgMTA1LjcgMTA1Ljd6bTI0My40IDE4Mi43bC04LjIgMTQuM2MtMyA1LjMtOS40IDcuNS0xNS4xIDUuNC0xMS44LTQuNC0yMi42LTEwLjctMzIuMS0xOC42LTQuNi0zLjgtNS44LTEwLjUtMi44LTE1LjdsOC4yLTE0LjNjLTYuOS04LTEyLjMtMTcuMy0xNS45LTI3LjRoLTE2LjVjLTYgMC0xMS4yLTQuMy0xMi4yLTEwLjMtMi0xMi0yLjEtMjQuNiAwLTM3LjEgMS02IDYuMi0xMC40IDEyLjItMTAuNGgxNi41YzMuNi0xMC4xIDktMTkuNCAxNS45LTI3LjRsLTguMi0xNC4zYy0zLTUuMi0xLjktMTEuOSAyLjgtMTUuNyA5LjUtNy45IDIwLjQtMTQuMiAzMi4xLTE4LjYgNS43LTIuMSAxMi4xLjEgMTUuMSA1LjRsOC4yIDE0LjNjMTAuNS0xLjkgMjEuMi0xLjkgMzEuNyAwbDguMi0xNC4zYzMtNS4zIDkuNC03LjUgMTUuMS01LjQgMTEuOCA0LjQgMjIuNiAxMC43IDMyLjEgMTguNiA0LjYgMy44IDUuOCAxMC41IDIuOCAxNS43bC04LjIgMTQuM2M2LjkgOCAxMi4zIDE3LjMgMTUuOSAyNy40aDE2LjVjNiAwIDExLjIgNC4zIDEyLjIgMTAuMyAyIDEyIDIuMSAyNC42IDAgMzcuMS0xIDYtNi4yIDEwLjQtMTIuMiAxMC40aC0xNi41Yy0zLjYgMTAuMS05IDE5LjQtMTUuOSAyNy40bDguMiAxNC4zYzMgNS4yIDEuOSAxMS45LTIuOCAxNS43LTkuNSA3LjktMjAuNCAxNC4yLTMyLjEgMTguNi01LjcgMi4xLTEyLjEtLjEtMTUuMS01LjRsLTguMi0xNC4zYy0xMC40IDEuOS0yMS4yIDEuOS0zMS43IDB6TTUwMS42IDQzMWMzOC41IDI5LjYgODIuNC0xNC4zIDUyLjgtNTIuOC0zOC41LTI5LjYtODIuNCAxNC4zLTUyLjggNTIuOHpcIl1cbn07XG52YXIgZmFDb2lucyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb2lucycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjUxZVwiLCBcIk0wIDQwNS4zVjQ0OGMwIDM1LjMgODYgNjQgMTkyIDY0czE5Mi0yOC43IDE5Mi02NHYtNDIuN0MzNDIuNyA0MzQuNCAyNjcuMiA0NDggMTkyIDQ0OFM0MS4zIDQzNC40IDAgNDA1LjN6TTMyMCAxMjhjMTA2IDAgMTkyLTI4LjcgMTkyLTY0UzQyNiAwIDMyMCAwIDEyOCAyOC43IDEyOCA2NHM4NiA2NCAxOTIgNjR6TTAgMzAwLjRWMzUyYzAgMzUuMyA4NiA2NCAxOTIgNjRzMTkyLTI4LjcgMTkyLTY0di01MS42Yy00MS4zIDM0LTExNi45IDUxLjYtMTkyIDUxLjZTNDEuMyAzMzQuNCAwIDMwMC40em00MTYgMTFjNTcuMy0xMS4xIDk2LTMxLjcgOTYtNTUuNHYtNDIuN2MtMjMuMiAxNi40LTU3LjMgMjcuNi05NiAzNC41djYzLjZ6TTE5MiAxNjBDODYgMTYwIDAgMTk1LjggMCAyNDBzODYgODAgMTkyIDgwIDE5Mi0zNS44IDE5Mi04MC04Ni04MC0xOTItODB6bTIxOS4zIDU2LjNjNjAtMTAuOCAxMDAuNy0zMiAxMDAuNy01Ni4zdi00Mi43Yy0zNS41IDI1LjEtOTYuNSAzOC42LTE2MC43IDQxLjggMjkuNSAxNC4zIDUxLjIgMzMuNSA2MCA1Ny4yelwiXVxufTtcbnZhciBmYUNvbHVtbnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29sdW1ucycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjBkYlwiLCBcIk00NjQgMzJINDhDMjEuNDkgMzIgMCA1My40OSAwIDgwdjM1MmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6TTIyNCA0MTZINjRWMTYwaDE2MHYyNTZ6bTIyNCAwSDI4OFYxNjBoMTYwdjI1NnpcIl1cbn07XG52YXIgZmFDb21tZW50ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvbW1lbnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwNzVcIiwgXCJNMjU2IDMyQzExNC42IDMyIDAgMTI1LjEgMCAyNDBjMCA0OS42IDIxLjQgOTUgNTcgMTMwLjdDNDQuNSA0MjEuMSAyLjcgNDY2IDIuMiA0NjYuNWMtMi4yIDIuMy0yLjggNS43LTEuNSA4LjdTNC44IDQ4MCA4IDQ4MGM2Ni4zIDAgMTE2LTMxLjggMTQwLjYtNTEuNCAzMi43IDEyLjMgNjkgMTkuNCAxMDcuNCAxOS40IDE0MS40IDAgMjU2LTkzLjEgMjU2LTIwOFMzOTcuNCAzMiAyNTYgMzJ6XCJdXG59O1xudmFyIGZhQ29tbWVudEFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb21tZW50LWFsdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjI3YVwiLCBcIk00NDggMEg2NEMyOC43IDAgMCAyOC43IDAgNjR2Mjg4YzAgMzUuMyAyOC43IDY0IDY0IDY0aDk2djg0YzAgOS44IDExLjIgMTUuNSAxOS4xIDkuN0wzMDQgNDE2aDE0NGMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NHpcIl1cbn07XG52YXIgZmFDb21tZW50RG9sbGFyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvbW1lbnQtZG9sbGFyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNjUxXCIsIFwiTTI1NiAzMkMxMTQuNjIgMzIgMCAxMjUuMTIgMCAyNDBjMCA0OS41NiAyMS40MSA5NS4wMSA1Ny4wMiAxMzAuNzRDNDQuNDYgNDIxLjA1IDIuNyA0NjUuOTcgMi4yIDQ2Ni41QTcuOTk1IDcuOTk1IDAgMCAwIDggNDgwYzY2LjI2IDAgMTE1Ljk5LTMxLjc1IDE0MC42LTUxLjM4QzE4MS4yOSA0NDAuOTMgMjE3LjU5IDQ0OCAyNTYgNDQ4YzE0MS4zOCAwIDI1Ni05My4xMiAyNTYtMjA4UzM5Ny4zOCAzMiAyNTYgMzJ6bTI0IDMwMi40NFYzNTJjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTE2Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMTcuNzNjLTExLjQyLTEuMzUtMjIuMjgtNS4xOS0zMS43OC0xMS40Ni02LjIyLTQuMTEtNi44Mi0xMy4xMS0xLjU1LTE4LjM4bDE3LjUyLTE3LjUyYzMuNzQtMy43NCA5LjMxLTQuMjQgMTQuMTEtMi4wMyAzLjE4IDEuNDYgNi42NiAyLjIyIDEwLjI2IDIuMjJoMzIuNzhjNC42NiAwIDguNDQtMy43OCA4LjQ0LTguNDIgMC0zLjc1LTIuNTItNy4wOC02LjEyLTguMTFsLTUwLjA3LTE0LjNjLTIyLjI1LTYuMzUtNDAuMDEtMjQuNzEtNDIuOTEtNDcuNjctNC4wNS0zMi4wNyAxOS4wMy01OS40MyA0OS4zMi02My4wNVYxMjhjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMTZjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MTcuNzNjMTEuNDIgMS4zNSAyMi4yOCA1LjE5IDMxLjc4IDExLjQ2IDYuMjIgNC4xMSA2LjgyIDEzLjExIDEuNTUgMTguMzhsLTE3LjUyIDE3LjUyYy0zLjc0IDMuNzQtOS4zMSA0LjI0LTE0LjExIDIuMDNhMjQuNTE2IDI0LjUxNiAwIDAgMC0xMC4yNi0yLjIyaC0zMi43OGMtNC42NiAwLTguNDQgMy43OC04LjQ0IDguNDIgMCAzLjc1IDIuNTIgNy4wOCA2LjEyIDguMTFsNTAuMDcgMTQuM2MyMi4yNSA2LjM2IDQwLjAxIDI0LjcxIDQyLjkxIDQ3LjY3IDQuMDUgMzIuMDYtMTkuMDMgNTkuNDItNDkuMzIgNjMuMDR6XCJdXG59O1xudmFyIGZhQ29tbWVudERvdHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29tbWVudC1kb3RzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNGFkXCIsIFwiTTI1NiAzMkMxMTQuNiAzMiAwIDEyNS4xIDAgMjQwYzAgNDkuNiAyMS40IDk1IDU3IDEzMC43QzQ0LjUgNDIxLjEgMi43IDQ2NiAyLjIgNDY2LjVjLTIuMiAyLjMtMi44IDUuNy0xLjUgOC43UzQuOCA0ODAgOCA0ODBjNjYuMyAwIDExNi0zMS44IDE0MC42LTUxLjQgMzIuNyAxMi4zIDY5IDE5LjQgMTA3LjQgMTkuNCAxNDEuNCAwIDI1Ni05My4xIDI1Ni0yMDhTMzk3LjQgMzIgMjU2IDMyek0xMjggMjcyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTI4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xMjggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJdXG59O1xudmFyIGZhQ29tbWVudE1lZGljYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29tbWVudC1tZWRpY2FsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmN2Y1XCIsIFwiTTI1NiAzMkMxMTQuNjIgMzIgMCAxMjUuMTIgMCAyNDBjMCA0OS41NiAyMS40MSA5NSA1NyAxMzAuNzRDNDQuNDYgNDIxLjA1IDIuNyA0NjYgMi4yIDQ2Ni41QTggOCAwIDAgMCA4IDQ4MGM2Ni4yNiAwIDExNi0zMS43NSAxNDAuNi01MS4zOEEzMDQuNjYgMzA0LjY2IDAgMCAwIDI1NiA0NDhjMTQxLjM5IDAgMjU2LTkzLjEyIDI1Ni0yMDhTMzk3LjM5IDMyIDI1NiAzMnptOTYgMjMyYTggOCAwIDAgMS04IDhoLTU2djU2YTggOCAwIDAgMS04IDhoLTQ4YTggOCAwIDAgMS04LTh2LTU2aC01NmE4IDggMCAwIDEtOC04di00OGE4IDggMCAwIDEgOC04aDU2di01NmE4IDggMCAwIDEgOC04aDQ4YTggOCAwIDAgMSA4IDh2NTZoNTZhOCA4IDAgMCAxIDggOHpcIl1cbn07XG52YXIgZmFDb21tZW50U2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29tbWVudC1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjRiM1wiLCBcIk02NCAyNDBjMCA0OS42IDIxLjQgOTUgNTcgMTMwLjctMTIuNiA1MC4zLTU0LjMgOTUuMi01NC44IDk1LjgtMi4yIDIuMy0yLjggNS43LTEuNSA4LjcgMS4zIDIuOSA0LjEgNC44IDcuMyA0LjggNjYuMyAwIDExNi0zMS44IDE0MC42LTUxLjQgMzIuNyAxMi4zIDY5IDE5LjQgMTA3LjQgMTkuNCAyNy40IDAgNTMuNy0zLjYgNzguNC0xMEw3Mi45IDE4Ni40Yy01LjYgMTcuMS04LjkgMzUtOC45IDUzLjZ6bTU2OS44IDIxOC4xbC0xMTQuNC04OC40QzU1NC42IDMzNC4xIDU3NiAyODkuMiA1NzYgMjQwYzAtMTE0LjktMTE0LjYtMjA4LTI1Ni0yMDgtNjUuMSAwLTEyNC4yIDIwLjEtMTY5LjQgNTIuN0w0NS41IDMuNEMzOC41LTIgMjguNS0uOCAyMyA2LjJMMy40IDMxLjRjLTUuNCA3LTQuMiAxNyAyLjggMjIuNGw1ODguNCA0NTQuN2M3IDUuNCAxNyA0LjIgMjIuNS0yLjhsMTkuNi0yNS4zYzUuNC02LjggNC4xLTE2LjktMi45LTIyLjN6XCJdXG59O1xudmFyIGZhQ29tbWVudHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29tbWVudHMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYwODZcIiwgXCJNNDE2IDE5MmMwLTg4LjQtOTMuMS0xNjAtMjA4LTE2MFMwIDEwMy42IDAgMTkyYzAgMzQuMyAxNC4xIDY1LjkgMzggOTItMTMuNCAzMC4yLTM1LjUgNTQuMi0zNS44IDU0LjUtMi4yIDIuMy0yLjggNS43LTEuNSA4LjdTNC44IDM1MiA4IDM1MmMzNi42IDAgNjYuOS0xMi4zIDg4LjctMjUgMzIuMiAxNS43IDcwLjMgMjUgMTExLjMgMjUgMTE0LjkgMCAyMDgtNzEuNiAyMDgtMTYwem0xMjIgMjIwYzIzLjktMjYgMzgtNTcuNyAzOC05MiAwLTY2LjktNTMuNS0xMjQuMi0xMjkuMy0xNDguMS45IDYuNiAxLjMgMTMuMyAxLjMgMjAuMSAwIDEwNS45LTEwNy43IDE5Mi0yNDAgMTkyLTEwLjggMC0yMS4zLS44LTMxLjctMS45QzIwNy44IDQzOS42IDI4MS44IDQ4MCAzNjggNDgwYzQxIDAgNzkuMS05LjIgMTExLjMtMjUgMjEuOCAxMi43IDUyLjEgMjUgODguNyAyNSAzLjIgMCA2LjEtMS45IDcuMy00LjggMS4zLTIuOS43LTYuMy0xLjUtOC43LS4zLS4zLTIyLjQtMjQuMi0zNS44LTU0LjV6XCJdXG59O1xudmFyIGZhQ29tbWVudHNEb2xsYXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29tbWVudHMtZG9sbGFyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNjUzXCIsIFwiTTQxNiAxOTJjMC04OC4zNy05My4xMi0xNjAtMjA4LTE2MFMwIDEwMy42MyAwIDE5MmMwIDM0LjI3IDE0LjEzIDY1Ljk1IDM3Ljk3IDkxLjk4QzI0LjYxIDMxNC4yMiAyLjUyIDMzOC4xNiAyLjIgMzM4LjVBNy45OTUgNy45OTUgMCAwIDAgOCAzNTJjMzYuNTggMCA2Ni45My0xMi4yNSA4OC43My0yNC45OEMxMjguOTMgMzQyLjc2IDE2Ny4wMiAzNTIgMjA4IDM1MmMxMTQuODggMCAyMDgtNzEuNjMgMjA4LTE2MHptLTIyNCA5NnYtMTYuMjljLTExLjI5LS41OC0yMi4yNy00LjUyLTMxLjM3LTExLjM1LTMuOS0yLjkzLTQuMS04Ljc3LS41Ny0xMi4xNGwxMS43NS0xMS4yMWMyLjc3LTIuNjQgNi44OS0yLjc2IDEwLjEzLS43MyAzLjg3IDIuNDIgOC4yNiAzLjcyIDEyLjgyIDMuNzJoMjguMTFjNi41IDAgMTEuOC01LjkyIDExLjgtMTMuMTkgMC01Ljk1LTMuNjEtMTEuMTktOC43Ny0xMi43M2wtNDUtMTMuNWMtMTguNTktNS41OC0zMS41OC0yMy40Mi0zMS41OC00My4zOSAwLTI0LjUyIDE5LjA1LTQ0LjQ0IDQyLjY3LTQ1LjA3Vjk2YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djE2LjI5YzExLjI5LjU4IDIyLjI3IDQuNTEgMzEuMzcgMTEuMzUgMy45IDIuOTMgNC4xIDguNzcuNTcgMTIuMTRsLTExLjc1IDExLjIxYy0yLjc3IDIuNjQtNi44OSAyLjc2LTEwLjEzLjczLTMuODctMi40My04LjI2LTMuNzItMTIuODItMy43MmgtMjguMTFjLTYuNSAwLTExLjggNS45Mi0xMS44IDEzLjE5IDAgNS45NSAzLjYxIDExLjE5IDguNzcgMTIuNzNsNDUgMTMuNWMxOC41OSA1LjU4IDMxLjU4IDIzLjQyIDMxLjU4IDQzLjM5IDAgMjQuNTMtMTkuMDUgNDQuNDQtNDIuNjcgNDUuMDdWMjg4YzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh6bTM0Ni4wMSAxMjMuOTlDNTYxLjg3IDM4NS45NiA1NzYgMzU0LjI3IDU3NiAzMjBjMC02Ni45NC01My40OS0xMjQuMi0xMjkuMzMtMTQ4LjA3Ljg2IDYuNiAxLjMzIDEzLjI5IDEuMzMgMjAuMDcgMCAxMDUuODctMTA3LjY2IDE5Mi0yNDAgMTkyLTEwLjc4IDAtMjEuMzItLjc3LTMxLjczLTEuODhDMjA3LjggNDM5LjYzIDI4MS43NyA0ODAgMzY4IDQ4MGM0MC45OCAwIDc5LjA3LTkuMjQgMTExLjI3LTI0Ljk4QzUwMS4wNyA0NjcuNzUgNTMxLjQyIDQ4MCA1NjggNDgwYzMuMiAwIDYuMDktMS45MSA3LjM0LTQuODQgMS4yNy0yLjk0LjY2LTYuMzQtMS41NS04LjY3LS4zMS0uMzMtMjIuNDItMjQuMjQtMzUuNzgtNTQuNXpcIl1cbn07XG52YXIgZmFDb21wYWN0RGlzYyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb21wYWN0LWRpc2MnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1MWZcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNODggMjU2SDU2YzAtMTA1LjkgODYuMS0xOTIgMTkyLTE5MnYzMmMtODguMiAwLTE2MCA3MS44LTE2MCAxNjB6bTE2MCA5NmMtNTMgMC05Ni00My05Ni05NnM0My05NiA5Ni05NiA5NiA0MyA5NiA5Ni00MyA5Ni05NiA5NnptMC0xMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyelwiXVxufTtcbnZhciBmYUNvbXBhc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29tcGFzcycsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjE0ZVwiLCBcIk0yMjUuMzggMjMzLjM3Yy0xMi41IDEyLjUtMTIuNSAzMi43NiAwIDQ1LjI1IDEyLjQ5IDEyLjUgMzIuNzYgMTIuNSA0NS4yNSAwIDEyLjUtMTIuNSAxMi41LTMyLjc2IDAtNDUuMjUtMTIuNS0xMi40OS0zMi43Ni0xMi40OS00NS4yNSAwek0yNDggOEMxMTEuMDMgOCAwIDExOS4wMyAwIDI1NnMxMTEuMDMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMyAyNDgtMjQ4UzM4NC45NyA4IDI0OCA4em0xMjYuMTQgMTQ4LjA1TDMwOC4xNyAzMDAuNGEzMS45MzggMzEuOTM4IDAgMCAxLTE1Ljc3IDE1Ljc3bC0xNDQuMzQgNjUuOTdjLTE2LjY1IDcuNjEtMzMuODEtOS41NS0yNi4yLTI2LjJsNjUuOTgtMTQ0LjM1YTMxLjkzOCAzMS45MzggMCAwIDEgMTUuNzctMTUuNzdsMTQ0LjM0LTY1Ljk3YzE2LjY1LTcuNiAzMy44IDkuNTUgMjYuMTkgMjYuMnpcIl1cbn07XG52YXIgZmFDb21wcmVzcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb21wcmVzcycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjA2NlwiLCBcIk00MzYgMTkySDMxMmMtMTMuMyAwLTI0LTEwLjctMjQtMjRWNDRjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY4NGg4NGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyem0tMjc2LTI0VjQ0YzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY4NEgxMmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmgxMjRjMTMuMyAwIDI0LTEwLjcgMjQtMjR6bTAgMzAwVjM0NGMwLTEzLjMtMTAuNy0yNC0yNC0yNEgxMmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmg4NHY4NGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEyem0xOTIgMHYtODRoODRjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJIMzEyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYxMjRjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnpcIl1cbn07XG52YXIgZmFDb21wcmVzc0FsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb21wcmVzcy1hbHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY0MjJcIiwgXCJNNC42ODYgNDI3LjMxNEwxMDQgMzI4bC0zMi45MjItMzEuMDI5QzU1Ljk1OCAyODEuODUxIDY2LjY2NiAyNTYgODguMDQ4IDI1NmgxMTJDMjEzLjMwMyAyNTYgMjI0IDI2Ni43NDUgMjI0IDI4MHYxMTJjMCAyMS4zODItMjUuODAzIDMyLjA5LTQwLjkyMiAxNi45NzFMMTUyIDM3NmwtOTkuMzE0IDk5LjMxNGMtNi4yNDggNi4yNDgtMTYuMzc5IDYuMjQ4LTIyLjYyNyAwTDQuNjg2IDQ0OS45NDFjLTYuMjQ4LTYuMjQ4LTYuMjQ4LTE2LjM3OSAwLTIyLjYyN3pNNDQzLjMxNCA4NC42ODZMMzQ0IDE4NGwzMi45MjIgMzEuMDI5YzE1LjEyIDE1LjEyIDQuNDEyIDQwLjk3MS0xNi45NyA0MC45NzFoLTExMkMyMzQuNjk3IDI1NiAyMjQgMjQ1LjI1NSAyMjQgMjMyVjEyMGMwLTIxLjM4MiAyNS44MDMtMzIuMDkgNDAuOTIyLTE2Ljk3MUwyOTYgMTM2bDk5LjMxNC05OS4zMTRjNi4yNDgtNi4yNDggMTYuMzc5LTYuMjQ4IDIyLjYyNyAwbDI1LjM3MyAyNS4zNzNjNi4yNDggNi4yNDggNi4yNDggMTYuMzc5IDAgMjIuNjI3elwiXVxufTtcbnZhciBmYUNvbXByZXNzQXJyb3dzQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvbXByZXNzLWFycm93cy1hbHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3OGNcIiwgXCJNMjAwIDI4OEg4OGMtMjEuNCAwLTMyLjEgMjUuOC0xNyA0MWwzMi45IDMxLTk5LjIgOTkuM2MtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZsMjUuNCAyNS40YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwTDE1MiA0MDhsMzEuMSAzM2MxNS4xIDE1LjEgNDAuOSA0LjQgNDAuOS0xN1YzMTJjMC0xMy4zLTEwLjctMjQtMjQtMjR6bTExMi02NGgxMTJjMjEuNCAwIDMyLjEtMjUuOSAxNy00MWwtMzMtMzEgOTkuMy05OS4zYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42TDQ4MS45IDQuN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBMMzYwIDEwNGwtMzEuMS0zM0MzMTMuOCA1NS45IDI4OCA2Ni42IDI4OCA4OHYxMTJjMCAxMy4zIDEwLjcgMjQgMjQgMjR6bTk2IDEzNmwzMy0zMS4xYzE1LjEtMTUuMSA0LjQtNDAuOS0xNy00MC45SDMxMmMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MTEyYzAgMjEuNCAyNS45IDMyLjEgNDEgMTdsMzEtMzIuOSA5OS4zIDk5LjNjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBsMjUuNC0yNS40YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42TDQwOCAzNjB6TTE4MyA3MS4xTDE1MiAxMDQgNTIuNyA0LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDQuNyAzMC4xYy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNkwxMDQgMTUybC0zMyAzMS4xQzU1LjkgMTk4LjIgNjYuNiAyMjQgODggMjI0aDExMmMxMy4zIDAgMjQtMTAuNyAyNC0yNFY4OGMwLTIxLjMtMjUuOS0zMi00MS0xNi45elwiXVxufTtcbnZhciBmYUNvbmNpZXJnZUJlbGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29uY2llcmdlLWJlbGwnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NjJcIiwgXCJNMjg4IDEzMC41NFYxMTJoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTk2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNnYxOC41NEMxMTUuNDkgMTQ2LjExIDMyIDIzOS4xOCAzMiAzNTJoNDQ4YzAtMTEyLjgyLTgzLjQ5LTIwNS44OS0xOTItMjIxLjQ2ek00OTYgMzg0SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0ODBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2elwiXVxufTtcbnZhciBmYUNvb2tpZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb29raWUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NjNcIiwgXCJNNTEwLjM3IDI1NC43OWwtMTIuMDgtNzYuMjZhMTMyLjQ5MyAxMzIuNDkzIDAgMCAwLTM3LjE2LTcyLjk1bC01NC43Ni01NC43NWMtMTkuNzMtMTkuNzItNDUuMTgtMzIuNy03Mi43MS0zNy4wNWwtNzYuNy0xMi4xNWMtMjcuNTEtNC4zNi01NS42OS4xMS04MC41MiAxMi43NkwxMDcuMzIgNDkuNmExMzIuMjUgMTMyLjI1IDAgMCAwLTU3Ljc5IDU3LjhsLTM1LjEgNjguODhhMTMyLjYwMiAxMzIuNjAyIDAgMCAwLTEyLjgyIDgwLjk0bDEyLjA4IDc2LjI3YTEzMi40OTMgMTMyLjQ5MyAwIDAgMCAzNy4xNiA3Mi45NWw1NC43NiA1NC43NWExMzIuMDg3IDEzMi4wODcgMCAwIDAgNzIuNzEgMzcuMDVsNzYuNyAxMi4xNGMyNy41MSA0LjM2IDU1LjY5LS4xMSA4MC41Mi0xMi43NWw2OS4xMi0zNS4yMWExMzIuMzAyIDEzMi4zMDIgMCAwIDAgNTcuNzktNTcuOGwzNS4xLTY4Ljg3YzEyLjcxLTI0Ljk2IDE3LjItNTMuMyAxMi44Mi04MC45NnpNMTc2IDM2OGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMzItMTYwYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0xNjAgMTI4Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYUNvb2tpZUJpdGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29va2llLWJpdGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NjRcIiwgXCJNNTEwLjUyIDI1NS44MmMtNjkuOTctLjg1LTEyNi40Ny01Ny42OS0xMjYuNDctMTI3Ljg2LTcwLjE3IDAtMTI3LTU2LjQ5LTEyNy44Ni0xMjYuNDUtMjcuMjYtNC4xNC01NS4xMy4zLTc5LjcyIDEyLjgybC02OS4xMyAzNS4yMmExMzIuMjIxIDEzMi4yMjEgMCAwIDAtNTcuNzkgNTcuODFsLTM1LjEgNjguODhhMTMyLjY0NSAxMzIuNjQ1IDAgMCAwLTEyLjgyIDgwLjk1bDEyLjA4IDc2LjI3YTEzMi41MjEgMTMyLjUyMSAwIDAgMCAzNy4xNiA3Mi45Nmw1NC43NyA1NC43NmExMzIuMDM2IDEzMi4wMzYgMCAwIDAgNzIuNzEgMzcuMDZsNzYuNzEgMTIuMTVjMjcuNTEgNC4zNiA1NS43LS4xMSA4MC41My0xMi43Nmw2OS4xMy0zNS4yMWExMzIuMjczIDEzMi4yNzMgMCAwIDAgNTcuNzktNTcuODFsMzUuMS02OC44OGMxMi41Ni0yNC42NCAxNy4wMS01Mi41OCAxMi45MS03OS45MXpNMTc2IDM2OGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMzItMTYwYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0xNjAgMTI4Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYUNvcHkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29weScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjBjNVwiLCBcIk0zMjAgNDQ4djQwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgyNGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0VjEyMGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoNzJ2Mjk2YzAgMzAuODc5IDI1LjEyMSA1NiA1NiA1NmgxNjh6bTAtMzQ0VjBIMTUyYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MzY4YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgyNzJjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjEyOEgzNDRjLTEzLjIgMC0yNC0xMC44LTI0LTI0em0xMjAuOTcxLTMxLjAyOUwzNzUuMDI5IDcuMDI5QTI0IDI0IDAgMCAwIDM1OC4wNTkgMEgzNTJ2OTZoOTZ2LTYuMDU5YTI0IDI0IDAgMCAwLTcuMDI5LTE2Ljk3elwiXVxufTtcbnZhciBmYUNvcHlyaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb3B5cmlnaHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxZjlcIiwgXCJNMjU2IDhDMTE5LjAzMyA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4em0xMTcuMTM0IDM0Ni43NTNjLTEuNTkyIDEuODY3LTM5Ljc3NiA0NS43MzEtMTA5Ljg1MSA0NS43MzEtODQuNjkyIDAtMTQ0LjQ4NC02My4yNi0xNDQuNDg0LTE0NS41NjcgMC04MS4zMDMgNjIuMDA0LTE0My40MDEgMTQzLjc2Mi0xNDMuNDAxIDY2Ljk1NyAwIDEwMS45NjUgMzcuMzE1IDEwMy40MjIgMzguOTA0YTEyIDEyIDAgMCAxIDEuMjM4IDE0LjYyM2wtMjIuMzggMzQuNjU1Yy00LjA0OSA2LjI2Ny0xMi43NzQgNy4zNTEtMTguMjM0IDIuMjk1LS4yMzMtLjIxNC0yNi41MjktMjMuODgtNjEuODgtMjMuODgtNDYuMTE2IDAtNzMuOTE2IDMzLjU3NS03My45MTYgNzYuMDgyIDAgMzkuNjAyIDI1LjUxNCA3OS42OTIgNzQuMjc3IDc5LjY5MiAzOC42OTcgMCA2NS4yOC0yOC4zMzggNjUuNTQ0LTI4LjYyNSA1LjEzMi01LjU2NSAxNC4wNTktNS4wMzMgMTguNTA4IDEuMDUzbDI0LjU0NyAzMy41NzJhMTIuMDAxIDEyLjAwMSAwIDAgMS0uNTUzIDE0Ljg2NnpcIl1cbn07XG52YXIgZmFDb3VjaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb3VjaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjRiOFwiLCBcIk0xNjAgMjI0djY0aDMyMHYtNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRoMzJjMC01My00My05Ni05Ni05NkgxNjBjLTUzIDAtOTYgNDMtOTYgOTZoMzJjMzUuMyAwIDY0IDI4LjcgNjQgNjR6bTQxNi0zMmgtMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2SDEyOHYtOTZjMC0xNy43LTE0LjMtMzItMzItMzJINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0IDAgMjMuNiAxMyA0NCAzMiA1NS4xVjQzMmMwIDguOCA3LjIgMTYgMTYgMTZoNjRjOC44IDAgMTYtNy4yIDE2LTE2di0xNmgzODR2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNlYzMTEuMWMxOS0xMS4xIDMyLTMxLjUgMzItNTUuMSAwLTM1LjMtMjguNy02NC02NC02NHpcIl1cbn07XG52YXIgZmFDcmVkaXRDYXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NyZWRpdC1jYXJkJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMDlkXCIsIFwiTTAgNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4MGMyNi41IDAgNDgtMjEuNSA0OC00OFYyNTZIMHYxNzZ6bTE5Mi02OGMwLTYuNiA1LjQtMTIgMTItMTJoMTM2YzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJIMjA0Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwem0tMTI4IDBjMC02LjYgNS40LTEyIDEyLTEyaDcyYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJINzZjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDB6TTU3NiA4MHY0OEgwVjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4MGMyNi41IDAgNDggMjEuNSA0OCA0OHpcIl1cbn07XG52YXIgZmFDcm9wID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nyb3AnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxMjVcIiwgXCJNNDg4IDM1MmgtNDBWMTA5LjI1bDU5LjMxLTU5LjMxYzYuMjUtNi4yNSA2LjI1LTE2LjM4IDAtMjIuNjNMNDg0LjY5IDQuNjljLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBMNDAyLjc1IDY0SDE5MnY5NmgxMTQuNzVMMTYwIDMwNi43NVYyNGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0SDg4Qzc0Ljc1IDAgNjQgMTAuNzQgNjQgMjR2NDBIMjRDMTAuNzUgNjQgMCA3NC43NCAwIDg4djQ4YzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoNDB2MjY0YzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoMjMydi05NkgyMDUuMjVMMzUyIDIwNS4yNVY0ODhjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGg0OGMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di00MGg0MGMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di00OGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0elwiXVxufTtcbnZhciBmYUNyb3BBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY3JvcC1hbHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NjVcIiwgXCJNNDg4IDM1MmgtNDBWOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkgxOTJ2OTZoMTYwdjMyOGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDQ4YzEzLjI1IDAgMjQtMTAuNzUgMjQtMjR2LTQwaDQwYzEzLjI1IDAgMjQtMTAuNzUgMjQtMjR2LTQ4YzAtMTMuMjYtMTAuNzUtMjQtMjQtMjR6TTE2MCAyNGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0SDg4Qzc0Ljc1IDAgNjQgMTAuNzQgNjQgMjR2NDBIMjRDMTAuNzUgNjQgMCA3NC43NCAwIDg4djQ4YzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoNDB2MjU2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMjI0di05NkgxNjBWMjR6XCJdXG59O1xudmFyIGZhQ3Jvc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY3Jvc3MnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY2NTRcIiwgXCJNMzUyIDEyOGgtOTZWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtNjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NnYyMjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjI1Nmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwiXVxufTtcbnZhciBmYUNyb3NzaGFpcnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY3Jvc3NoYWlycycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjA1YlwiLCBcIk01MDAgMjI0aC0zMC4zNjRDNDU1LjcyNCAxMzAuMzI1IDM4MS42NzUgNTYuMjc2IDI4OCA0Mi4zNjRWMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MzAuMzY0QzEzMC4zMjUgNTYuMjc2IDU2LjI3NiAxMzAuMzI1IDQyLjM2NCAyMjRIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgzMC4zNjRDNTYuMjc2IDM4MS42NzUgMTMwLjMyNSA0NTUuNzI0IDIyNCA0NjkuNjM2VjUwMGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTMwLjM2NEMzODEuNjc1IDQ1NS43MjQgNDU1LjcyNCAzODEuNjc1IDQ2OS42MzYgMjg4SDUwMGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyek0yODggNDA0LjYzNFYzNjRjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDAuNjM0QzE2NS44MjYgMzkyLjIzMiAxMTkuNzgzIDM0Ni4yNDMgMTA3LjM2NiAyODhIMTQ4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwLjYzNEMxMTkuNzY4IDE2NS44MjYgMTY1Ljc1NyAxMTkuNzgzIDIyNCAxMDcuMzY2VjE0OGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwLjYzNEMzNDYuMTc0IDExOS43NjggMzkyLjIxNyAxNjUuNzU3IDQwNC42MzQgMjI0SDM2NGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwLjYzNEMzOTIuMjMyIDM0Ni4xNzQgMzQ2LjI0MyAzOTIuMjE3IDI4OCA0MDQuNjM0ek0yODggMjU2YzAgMTcuNjczLTE0LjMyNyAzMi0zMiAzMnMtMzItMTQuMzI3LTMyLTMyYzAtMTcuNjczIDE0LjMyNy0zMiAzMi0zMnMzMiAxNC4zMjcgMzIgMzJ6XCJdXG59O1xudmFyIGZhQ3JvdyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjcm93JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTIwXCIsIFwiTTU0NCAzMmgtMTYuMzZDNTEzLjA0IDEyLjY4IDQ5MC4wOSAwIDQ2NCAwYy00NC4xOCAwLTgwIDM1LjgyLTgwIDgwdjIwLjk4TDEyLjA5IDM5My41N0EzMC4yMTYgMzAuMjE2IDAgMCAwIDAgNDE3Ljc0YzAgMjIuNDYgMjMuNjQgMzcuMDcgNDMuNzMgMjcuMDNMMTY1LjI3IDM4NGg5Ni40OWw0NC40MSAxMjAuMWMyLjI3IDYuMjMgOS4xNSA5LjQ0IDE1LjM4IDcuMTdsMjIuNTUtOC4yMWM2LjIzLTIuMjcgOS40NC05LjE1IDcuMTctMTUuMzhMMzEyLjk0IDM4NEgzNTJjMS45MSAwIDMuNzYtLjIzIDUuNjYtLjI5bDQ0LjUxIDEyMC4zOGMyLjI3IDYuMjMgOS4xNSA5LjQ0IDE1LjM4IDcuMTdsMjIuNTUtOC4yMWM2LjIzLTIuMjcgOS40NC05LjE1IDcuMTctMTUuMzhsLTQxLjI0LTExMS41M0M0ODUuNzQgMzUyLjggNTQ0IDI3OS4yNiA1NDQgMTkydi04MGw5Ni0xNmMwLTM1LjM1LTQyLjk4LTY0LTk2LTY0em0tODAgNzJjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0elwiXVxufTtcbnZhciBmYUNyb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nyb3duJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTIxXCIsIFwiTTUyOCA0NDhIMTEyYy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQxNmM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnptNjQtMzIwYy0yNi41IDAtNDggMjEuNS00OCA0OCAwIDcuMSAxLjYgMTMuNyA0LjQgMTkuOEw0NzYgMjM5LjJjLTE1LjQgOS4yLTM1LjMgNC00NC4yLTExLjZMMzUwLjMgODVDMzYxIDc2LjIgMzY4IDYzIDM2OCA0OGMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OGMwIDE1IDcgMjguMiAxNy43IDM3bC04MS41IDE0Mi42Yy04LjkgMTUuNi0yOC45IDIwLjgtNDQuMiAxMS42bC03Mi4zLTQzLjRjMi43LTYgNC40LTEyLjcgNC40LTE5LjggMC0yNi41LTIxLjUtNDgtNDgtNDhTMCAxNDkuNSAwIDE3NnMyMS41IDQ4IDQ4IDQ4YzIuNiAwIDUuMi0uNCA3LjctLjhMMTI4IDQxNmgzODRsNzIuMy0xOTIuOGMyLjUuNCA1LjEuOCA3LjcuOCAyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OHpcIl1cbn07XG52YXIgZmFDcnV0Y2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY3J1dGNoJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmN2Y3XCIsIFwiTTUwNy4zMSAxODUuNzFsLTE4MS0xODFhMTYgMTYgMCAwIDAtMjIuNjIgMEwyODEgMjcuMzFhMTYgMTYgMCAwIDAgMCAyMi42M2wxODEgMTgxYTE2IDE2IDAgMCAwIDIyLjYzIDBsMjIuNjItMjIuNjNhMTYgMTYgMCAwIDAgLjA2LTIyLjZ6bS0xNzkuNTQgNjYuNDFsLTY3Ljg5LTY3Ljg5IDU1LjEtNTUuMS00NS4yNS00NS4yNS0xMDkuNjcgMTA5LjY3YTk2LjA4IDk2LjA4IDAgMCAwLTI1LjY3IDQ2LjI5TDEwNi42NSAzNjAuMWwtMTAyIDEwMmExNiAxNiAwIDAgMCAwIDIyLjYzbDIyLjYyIDIyLjYyYTE2IDE2IDAgMCAwIDIyLjYzIDBsMTAyLTEwMiAxMjAuMjUtMjcuNzVhOTUuODggOTUuODggMCAwIDAgNDYuMjktMjUuNjVsMTA5LjY4LTEwOS42OEwzODIuODcgMTk3em0tNTQuNTcgNTQuNTdhMzIgMzIgMCAwIDEtMTUuNDUgOC41NGwtNzkuMyAxOC4zMiAxOC4zLTc5LjNhMzIuMjIgMzIuMjIgMCAwIDEgOC41Ni0xNS40NWw5LjMxLTkuMzEgNjcuODkgNjcuODl6XCJdXG59O1xudmFyIGZhQ3ViZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjdWJlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMWIyXCIsIFwiTTIzOS4xIDYuM2wtMjA4IDc4Yy0xOC43IDctMzEuMSAyNS0zMS4xIDQ1djIyNS4xYzAgMTguMiAxMC4zIDM0LjggMjYuNSA0Mi45bDIwOCAxMDRjMTMuNSA2LjggMjkuNCA2LjggNDIuOSAwbDIwOC0xMDRjMTYuMy04LjEgMjYuNS0yNC44IDI2LjUtNDIuOVYxMjkuM2MwLTIwLTEyLjQtMzcuOS0zMS4xLTQ0LjlsLTIwOC03OEMyNjIgMi4yIDI1MCAyLjIgMjM5LjEgNi4zek0yNTYgNjguNGwxOTIgNzJ2MS4xbC0xOTIgNzgtMTkyLTc4di0xLjFsMTkyLTcyem0zMiAzNTZWMjc1LjVsMTYwLTY1djEzMy45bC0xNjAgODB6XCJdXG59O1xudmFyIGZhQ3ViZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY3ViZXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxYjNcIiwgXCJNNDg4LjYgMjUwLjJMMzkyIDIxNFYxMDUuNWMwLTE1LTkuMy0yOC40LTIzLjQtMzMuN2wtMTAwLTM3LjVjLTguMS0zLjEtMTcuMS0zLjEtMjUuMyAwbC0xMDAgMzcuNWMtMTQuMSA1LjMtMjMuNCAxOC43LTIzLjQgMzMuN1YyMTRsLTk2LjYgMzYuMkM5LjMgMjU1LjUgMCAyNjguOSAwIDI4My45VjM5NGMwIDEzLjYgNy43IDI2LjEgMTkuOSAzMi4ybDEwMCA1MGMxMC4xIDUuMSAyMi4xIDUuMSAzMi4yIDBsMTAzLjktNTIgMTAzLjkgNTJjMTAuMSA1LjEgMjIuMSA1LjEgMzIuMiAwbDEwMC01MGMxMi4yLTYuMSAxOS45LTE4LjYgMTkuOS0zMi4yVjI4My45YzAtMTUtOS4zLTI4LjQtMjMuNC0zMy43ek0zNTggMjE0LjhsLTg1IDMxLjl2LTY4LjJsODUtMzd2NzMuM3pNMTU0IDEwNC4xbDEwMi0zOC4yIDEwMiAzOC4ydi42bC0xMDIgNDEuNC0xMDItNDEuNHYtLjZ6bTg0IDI5MS4xbC04NSA0Mi41di03OS4xbDg1LTM4Ljh2NzUuNHptMC0xMTJsLTEwMiA0MS40LTEwMi00MS40di0uNmwxMDItMzguMiAxMDIgMzguMnYuNnptMjQwIDExMmwtODUgNDIuNXYtNzkuMWw4NS0zOC44djc1LjR6bTAtMTEybC0xMDIgNDEuNC0xMDItNDEuNHYtLjZsMTAyLTM4LjIgMTAyIDM4LjJ2LjZ6XCJdXG59O1xudmFyIGZhQ3V0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2N1dCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjBjNFwiLCBcIk0yNzguMDYgMjU2TDQ0NC40OCA4OS41N2M0LjY5LTQuNjkgNC42OS0xMi4yOSAwLTE2Ljk3LTMyLjgtMzIuOC04NS45OS0zMi44LTExOC43OSAwTDIxMC4xOCAxODguMTJsLTI0Ljg2LTI0Ljg2YzQuMzEtMTAuOTIgNi42OC0yMi44MSA2LjY4LTM1LjI2IDAtNTMuMDItNDIuOTgtOTYtOTYtOTZTMCA3NC45OCAwIDEyOHM0Mi45OCA5NiA5NiA5NmM0LjU0IDAgOC45OS0uMzIgMTMuMzYtLjkzTDE0Mi4yOSAyNTZsLTMyLjkzIDMyLjkzYy00LjM3LS42MS04LjgzLS45My0xMy4zNi0uOTMtNTMuMDIgMC05NiA0Mi45OC05NiA5NnM0Mi45OCA5NiA5NiA5NiA5Ni00Mi45OCA5Ni05NmMwLTEyLjQ1LTIuMzctMjQuMzQtNi42OC0zNS4yNmwyNC44Ni0yNC44NkwzMjUuNjkgNDM5LjRjMzIuOCAzMi44IDg1Ljk5IDMyLjggMTE4Ljc5IDAgNC42OS00LjY4IDQuNjktMTIuMjggMC0xNi45N0wyNzguMDYgMjU2ek05NiAxNjBjLTE3LjY0IDAtMzItMTQuMzYtMzItMzJzMTQuMzYtMzIgMzItMzIgMzIgMTQuMzYgMzIgMzItMTQuMzYgMzItMzIgMzJ6bTAgMjU2Yy0xNy42NCAwLTMyLTE0LjM2LTMyLTMyczE0LjM2LTMyIDMyLTMyIDMyIDE0LjM2IDMyIDMyLTE0LjM2IDMyLTMyIDMyelwiXVxufTtcbnZhciBmYURhdGFiYXNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RhdGFiYXNlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMWMwXCIsIFwiTTQ0OCA3My4xNDN2NDUuNzE0QzQ0OCAxNTkuMTQzIDM0Ny42NjcgMTkyIDIyNCAxOTJTMCAxNTkuMTQzIDAgMTE4Ljg1N1Y3My4xNDNDMCAzMi44NTcgMTAwLjMzMyAwIDIyNCAwczIyNCAzMi44NTcgMjI0IDczLjE0M3pNNDQ4IDE3NnYxMDIuODU3QzQ0OCAzMTkuMTQzIDM0Ny42NjcgMzUyIDIyNCAzNTJTMCAzMTkuMTQzIDAgMjc4Ljg1N1YxNzZjNDguMTI1IDMzLjE0MyAxMzYuMjA4IDQ4LjU3MiAyMjQgNDguNTcyUzM5OS44NzQgMjA5LjE0MyA0NDggMTc2em0wIDE2MHYxMDIuODU3QzQ0OCA0NzkuMTQzIDM0Ny42NjcgNTEyIDIyNCA1MTJTMCA0NzkuMTQzIDAgNDM4Ljg1N1YzMzZjNDguMTI1IDMzLjE0MyAxMzYuMjA4IDQ4LjU3MiAyMjQgNDguNTcyUzM5OS44NzQgMzY5LjE0MyA0NDggMzM2elwiXVxufTtcbnZhciBmYURlYWYgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGVhZicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjJhNFwiLCBcIk0yMTYgMjYwYzAgMTUuNDY0LTEyLjUzNiAyOC0yOCAyOHMtMjgtMTIuNTM2LTI4LTI4YzAtNDQuMTEyIDM1Ljg4OC04MCA4MC04MHM4MCAzNS44ODggODAgODBjMCAxNS40NjQtMTIuNTM2IDI4LTI4IDI4cy0yOC0xMi41MzYtMjgtMjhjMC0xMy4yMzQtMTAuNzY3LTI0LTI0LTI0cy0yNCAxMC43NjYtMjQgMjR6bTI0LTE3NmMtOTcuMDQ3IDAtMTc2IDc4Ljk1My0xNzYgMTc2IDAgMTUuNDY0IDEyLjUzNiAyOCAyOCAyOHMyOC0xMi41MzYgMjgtMjhjMC02Ni4xNjggNTMuODMyLTEyMCAxMjAtMTIwczEyMCA1My44MzIgMTIwIDEyMGMwIDc1LjE2NC03MS4wMDkgNzAuMzExLTcxLjk5NyAxNDMuNjIyTDI4OCA0MDRjMCAyOC42NzMtMjMuMzI3IDUyLTUyIDUyLTE1LjQ2NCAwLTI4IDEyLjUzNi0yOCAyOHMxMi41MzYgMjggMjggMjhjNTkuNDc1IDAgMTA3Ljg3Ni00OC4zMjggMTA4LTEwNy43NzQuNTk1LTM0LjQyOCA3Mi00OC4yNCA3Mi0xNDQuMjI2IDAtOTcuMDQ3LTc4Ljk1My0xNzYtMTc2LTE3NnptMjY4LjQ4NS01Mi4yMDFMNDgwLjIgMy41MTVjLTQuNjg3LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMEwzNzYuMiA5MC41NDRjLTQuNjg2IDQuNjg2LTQuNjg2IDEyLjI4NCAwIDE2Ljk3MWwyOC4yODUgMjguMjg1YzQuNjg2IDQuNjg2IDEyLjI4NCA0LjY4NiAxNi45NyAwbDg3LjAzLTg3LjAyOWM0LjY4Ny00LjY4OCA0LjY4Ny0xMi4yODYgMC0xNi45NzJ6TTE2OC45NyAzMTQuNzQ1Yy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcgMEwzLjUxNSA0NjMuMjNjLTQuNjg2IDQuNjg2LTQuNjg2IDEyLjI4NCAwIDE2Ljk3MUwzMS44IDUwOC40ODVjNC42ODcgNC42ODYgMTIuMjg0IDQuNjg2IDE2Ljk3MSAwTDE5Ny4yNTYgMzYwYzQuNjg2LTQuNjg2IDQuNjg2LTEyLjI4NCAwLTE2Ljk3MWwtMjguMjg2LTI4LjI4NHpcIl1cbn07XG52YXIgZmFEZW1vY3JhdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkZW1vY3JhdCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjc0N1wiLCBcIk02MzcuMyAyNTYuOWwtMTkuNi0yOS40Yy0yOC4yLTQyLjMtNzUuMy02Ny41LTEyNi4xLTY3LjVIMjU2bC04MS4yLTgxLjJjMjAuMS0yMC4xIDIyLjYtNTEuMSA3LjUtNzMuOS0zLjQtNS4yLTEwLjgtNS45LTE1LjItMS41bC00MS44IDQxLjhMODIuNCAyLjRjLTMuNi0zLjYtOS42LTMtMTIuNCAxLjItMTIuMyAxOC42LTEwLjMgNDQgNi4xIDYwLjQgMy4zIDMuMyA3LjMgNS4zIDExLjMgNy41LTIuMiAxLjctNC43IDMuMS02LjQgNS40TDYuNCAxNzYuMmMtNy4zIDkuNy04LjQgMjIuNy0zIDMzLjVsMTQuMyAyOC42YzUuNCAxMC44IDE2LjUgMTcuNyAyOC42IDE3LjdoMzFjOC41IDAgMTYuNi0zLjQgMjIuNi05LjRMMTM4IDIxMmw1NCAxMDhoMzUydi03Ny44YzE2LjIgMTIuMiAxOC4zIDE3LjYgNDAuMSA1MC4zIDQuOSA3LjQgMTQuOCA5LjMgMjIuMiA0LjRsMjYuNi0xNy43YzcuMy01IDkuMy0xNC45IDQuNC0yMi4zem0tMzQxLjEtMTMuNmwtMTYuNSAxNi4xIDMuOSAyMi43Yy43IDQuMS0zLjYgNy4yLTcuMiA1LjNMMjU2IDI3Ni43bC0yMC40IDEwLjdjLTMuNiAxLjktNy45LTEuMi03LjItNS4zbDMuOS0yMi43LTE2LjUtMTYuMWMtMy0yLjktMS4zLTcuOSAyLjgtOC41bDIyLjgtMy4zIDEwLjItMjAuN2MxLjgtMy43IDcuMS0zLjcgOSAwbDEwLjIgMjAuNyAyMi44IDMuM2M0IC42IDUuNiA1LjYgMi42IDguNXptMTEyIDBsLTE2LjUgMTYuMSAzLjkgMjIuN2MuNyA0LjEtMy42IDcuMi03LjIgNS4zTDM2OCAyNzYuN2wtMjAuNCAxMC43Yy0zLjYgMS45LTcuOS0xLjItNy4yLTUuM2wzLjktMjIuNy0xNi41LTE2LjFjLTMtMi45LTEuMy03LjkgMi44LTguNWwyMi44LTMuMyAxMC4yLTIwLjdjMS44LTMuNyA3LjEtMy43IDkgMGwxMC4yIDIwLjcgMjIuOCAzLjNjNCAuNiA1LjYgNS42IDIuNiA4LjV6bTExMiAwbC0xNi41IDE2LjEgMy45IDIyLjdjLjcgNC4xLTMuNiA3LjItNy4yIDUuM0w0ODAgMjc2LjdsLTIwLjQgMTAuN2MtMy42IDEuOS03LjktMS4yLTcuMi01LjNsMy45LTIyLjctMTYuNS0xNi4xYy0zLTIuOS0xLjMtNy45IDIuOC04LjVsMjIuOC0zLjMgMTAuMi0yMC43YzEuOC0zLjcgNy4xLTMuNyA5IDBsMTAuMiAyMC43IDIyLjggMy4zYzQgLjYgNS42IDUuNiAyLjYgOC41ek0xOTIgNDk2YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZ2LTgwaDE2MHY4MGMwIDguOCA3LjIgMTYgMTYgMTZoNjRjOC44IDAgMTYtNy4yIDE2LTE2VjM1MkgxOTJ2MTQ0elwiXVxufTtcbnZhciBmYURlc2t0b3AgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGVza3RvcCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjEwOFwiLCBcIk01MjggMEg0OEMyMS41IDAgMCAyMS41IDAgNDh2MzIwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDE5MmwtMTYgNDhoLTcyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDI3MmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGgtNzJsLTE2LTQ4aDE5MmMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OHptLTE2IDM1Mkg2NFY2NGg0NDh2Mjg4elwiXVxufTtcbnZhciBmYURoYXJtYWNoYWtyYSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkaGFybWFjaGFrcmEnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY2NTVcIiwgXCJNNDk1IDIyNS4wNmwtMTcuMjIgMS4wOGMtNS4yNy0zOS40OS0yMC43OS03NS42NC00My44Ni0xMDUuODRsMTIuOTUtMTEuNDNjNi45Mi02LjExIDcuMjUtMTYuNzkuNzMtMjMuMzFMNDI2LjQ0IDY0LjRjLTYuNTMtNi41My0xNy4yMS02LjE5LTIzLjMxLjczTDM5MS43IDc4LjA3Yy0zMC4yLTIzLjA2LTY2LjM1LTM4LjU4LTEwNS44My00My44NkwyODYuOTQgMTdjLjU4LTkuMjEtNi43NC0xNy0xNS45Ny0xN2gtMjkuOTRjLTkuMjMgMC0xNi41NCA3Ljc5LTE1Ljk3IDE3bDEuMDggMTcuMjJjLTM5LjQ5IDUuMjctNzUuNjQgMjAuNzktMTA1LjgzIDQzLjg2bC0xMS40My0xMi45NWMtNi4xMS02LjkyLTE2Ljc5LTcuMjUtMjMuMzEtLjczTDY0LjQgODUuNTZjLTYuNTMgNi41My02LjE5IDE3LjIxLjczIDIzLjMxbDEyLjk1IDExLjQzYy0yMy4wNiAzMC4yLTM4LjU4IDY2LjM1LTQzLjg2IDEwNS44NEwxNyAyMjUuMDZjLTkuMjEtLjU4LTE3IDYuNzQtMTcgMTUuOTd2MjkuOTRjMCA5LjIzIDcuNzkgMTYuNTQgMTcgMTUuOTdsMTcuMjItMS4wOGM1LjI3IDM5LjQ5IDIwLjc5IDc1LjY0IDQzLjg2IDEwNS44M2wtMTIuOTUgMTEuNDNjLTYuOTIgNi4xMS03LjI1IDE2Ljc5LS43MyAyMy4zMWwyMS4xNyAyMS4xN2M2LjUzIDYuNTMgMTcuMjEgNi4xOSAyMy4zMS0uNzNsMTEuNDMtMTIuOTVjMzAuMiAyMy4wNiA2Ni4zNSAzOC41OCAxMDUuODQgNDMuODZMMjI1LjA2IDQ5NWMtLjU4IDkuMjEgNi43NCAxNyAxNS45NyAxN2gyOS45NGM5LjIzIDAgMTYuNTQtNy43OSAxNS45Ny0xN2wtMS4wOC0xNy4yMmMzOS40OS01LjI3IDc1LjY0LTIwLjc5IDEwNS44NC00My44NmwxMS40MyAxMi45NWM2LjExIDYuOTIgMTYuNzkgNy4yNSAyMy4zMS43M2wyMS4xNy0yMS4xN2M2LjUzLTYuNTMgNi4xOS0xNy4yMS0uNzMtMjMuMzFsLTEyLjk1LTExLjQzYzIzLjA2LTMwLjIgMzguNTgtNjYuMzUgNDMuODYtMTA1LjgzbDE3LjIyIDEuMDhjOS4yMS41OCAxNy02Ljc0IDE3LTE1Ljk3di0yOS45NGMtLjAxLTkuMjMtNy44LTE2LjU0LTE3LjAxLTE1Ljk3ek0yODEuODQgOTguNjFjMjQuODEgNC4wNyA0Ny42MyAxMy42NiA2Ny4yMyAyNy43OGwtNDIuNjIgNDguMjljLTguNzMtNS40NC0xOC4zMi05LjU0LTI4LjYyLTExLjk1bDQuMDEtNjQuMTJ6bS01MS42OCAwbDQuMDEgNjQuMTJjLTEwLjI5IDIuNDEtMTkuODkgNi41Mi0yOC42MiAxMS45NWwtNDIuNjItNDguMjljMTkuNi0xNC4xMiA0Mi40Mi0yMy43MSA2Ny4yMy0yNy43OHptLTEwMy43NyA2NC4zM2w0OC4zIDQyLjYxYy01LjQ0IDguNzMtOS41NCAxOC4zMy0xMS45NiAyOC42MmwtNjQuMTItNC4wMWM0LjA3LTI0LjgxIDEzLjY2LTQ3LjYyIDI3Ljc4LTY3LjIyem0tMjcuNzggMTE4LjlsNjQuMTItNC4wMWMyLjQxIDEwLjI5IDYuNTIgMTkuODkgMTEuOTUgMjguNjJsLTQ4LjI5IDQyLjYyYy0xNC4xMi0xOS42LTIzLjcxLTQyLjQyLTI3Ljc4LTY3LjIzem0xMzEuNTUgMTMxLjU1Yy0yNC44MS00LjA3LTQ3LjYzLTEzLjY2LTY3LjIzLTI3Ljc4bDQyLjYxLTQ4LjNjOC43MyA1LjQ0IDE4LjMzIDkuNTQgMjguNjIgMTEuOTZsLTQgNjQuMTJ6TTI1NiAyODhjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTI1Ljg0IDEyNS4zOWwtNC4wMS02NC4xMmMxMC4yOS0yLjQxIDE5Ljg5LTYuNTIgMjguNjItMTEuOTZsNDIuNjEgNDguM2MtMTkuNiAxNC4xMi00Mi40MSAyMy43MS02Ny4yMiAyNy43OHptMTAzLjc3LTY0LjMzbC00OC4yOS00Mi42MmM1LjQ0LTguNzMgOS41NC0xOC4zMiAxMS45NS0yOC42Mmw2NC4xMiA0LjAxYy00LjA3IDI0LjgyLTEzLjY2IDQ3LjY0LTI3Ljc4IDY3LjIzem0tMzYuMzQtMTE0Ljg5Yy0yLjQxLTEwLjI5LTYuNTItMTkuODktMTEuOTYtMjguNjJsNDguMy00Mi42MWMxNC4xMiAxOS42IDIzLjcxIDQyLjQyIDI3Ljc4IDY3LjIzbC02NC4xMiA0elwiXVxufTtcbnZhciBmYURpYWdub3NlcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkaWFnbm9zZXMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY0NzBcIiwgXCJNNDk2IDI1NmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNi0xNiA3LjItMTYgMTYgNy4yIDE2IDE2IDE2em0tMTc2LTgwYzQ4LjUgMCA4OC0zOS41IDg4LTg4UzM2OC41IDAgMzIwIDBzLTg4IDM5LjUtODggODggMzkuNSA4OCA4OCA4OHpNNTkuOCAzNjRjMTAuMiAxNS4zIDI5LjMgMTcuOCA0Mi45IDkuOCAxNi4yLTkuNiA1Ni4yLTMxLjcgMTA1LjMtNDguNlY0MTZoMjI0di05MC43YzQ5LjEgMTYuOCA4OS4xIDM5IDEwNS4zIDQ4LjYgMTMuNiA4IDMyLjcgNS4zIDQyLjktOS44bDE3LjgtMjYuN2M4LjgtMTMuMiA3LjYtMzQuNi0xMC00NS4xLTExLjktNy4xLTI5LjctMTctNTEuMS0yNy40LTI4LjEgNDYuMS05OS40IDE3LjgtODcuNy0zNS4xQzQwOS4zIDIxNy4yIDM2NS4xIDIwOCAzMjAgMjA4Yy01NyAwLTExMi45IDE0LjUtMTYwIDMyLjItLjIgNDAuMi00Ny42IDYzLjMtNzkuMiAzNi0xMS4yIDYtMjEuMyAxMS42LTI4LjcgMTYtMTcuNiAxMC41LTE4LjggMzEuOC0xMCA0NS4xTDU5LjggMzY0ek0zNjggMzQ0YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHptLTk2LTk2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHptLTE2MCA4YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2LTE2IDcuMi0xNiAxNiA3LjIgMTYgMTYgMTZ6bTUxMiAxOTJIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNjA4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2elwiXVxufTtcbnZhciBmYURpY2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGljZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjUyMlwiLCBcIk01OTIgMTkySDQ3My4yNmMxMi42OSAyOS41OSA3LjEyIDY1LjItMTcgODkuMzJMMzIwIDQxNy41OFY0NjRjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgyMjRjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYyNDBjMC0yNi41MS0yMS40OS00OC00OC00OHpNNDgwIDM3NmMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6bS00Ni4zNy0xODYuN0wyNTguNyAxNC4zN2MtMTkuMTYtMTkuMTYtNTAuMjMtMTkuMTYtNjkuMzkgMEwxNC4zNyAxODkuM2MtMTkuMTYgMTkuMTYtMTkuMTYgNTAuMjMgMCA2OS4zOUwxODkuMyA0MzMuNjNjMTkuMTYgMTkuMTYgNTAuMjMgMTkuMTYgNjkuMzkgMEw0MzMuNjMgMjU4LjdjMTkuMTYtMTkuMTcgMTkuMTYtNTAuMjQgMC02OS40ek05NiAyNDhjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0em0xMjggMTI4Yy0xMy4yNSAwLTI0LTEwLjc1LTI0LTI0IDAtMTMuMjYgMTAuNzUtMjQgMjQtMjRzMjQgMTAuNzQgMjQgMjRjMCAxMy4yNS0xMC43NSAyNC0yNCAyNHptMC0xMjhjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0em0wLTEyOGMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6bTEyOCAxMjhjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0elwiXVxufTtcbnZhciBmYURpY2VEMjAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGljZS1kMjAnLFxuICBpY29uOiBbNDgwLCA1MTIsIFtdLCBcImY2Y2ZcIiwgXCJNMTA2Ljc1IDIxNS4wNkwxLjIgMzcwLjk1Yy0zLjA4IDUgLjEgMTEuNSA1LjkzIDEyLjE0bDIwOC4yNiAyMi4wNy0xMDguNjQtMTkwLjF6TTcuNDEgMzE1LjQzTDgyLjcgMTkzLjA4IDYuMDYgMTQ3LjFjLTIuNjctMS42LTYuMDYuMzItNi4wNiAzLjQzdjE2Mi44MWMwIDQuMDMgNS4yOSA1LjUzIDcuNDEgMi4wOXpNMTguMjUgNDIzLjZsMTk0LjQgODcuNjZjNS4zIDIuNDUgMTEuMzUtMS40MyAxMS4zNS03LjI2di02NS42N2wtMjAzLjU1LTIyLjNjLTQuNDUtLjUtNi4yMyA1LjU5LTIuMiA3LjU3em04MS4yMi0yNTcuNzhMMTc5LjQgMjIuODhjNC4zNC03LjA2LTMuNTktMTUuMjUtMTAuNzgtMTEuMTRMMTcuODEgMTEwLjM1Yy0yLjQ3IDEuNjItMi4zOSA1LjI2LjEzIDYuNzhsODEuNTMgNDguNjl6TTI0MCAxNzZoMTA5LjIxTDI1My42MyA3LjYyQzI1MC41IDIuNTQgMjQ1LjI1IDAgMjQwIDBzLTEwLjUgMi41NC0xMy42MyA3LjYyTDEzMC43OSAxNzZIMjQwem0yMzMuOTQtMjguOWwtNzYuNjQgNDUuOTkgNzUuMjkgMTIyLjM1YzIuMTEgMy40NCA3LjQxIDEuOTQgNy40MS0yLjFWMTUwLjUzYzAtMy4xMS0zLjM5LTUuMDMtNi4wNi0zLjQzem0tOTMuNDEgMTguNzJsODEuNTMtNDguN2MyLjUzLTEuNTIgMi42LTUuMTYuMTMtNi43OGwtMTUwLjgxLTk4LjZjLTcuMTktNC4xMS0xNS4xMiA0LjA4LTEwLjc4IDExLjE0bDc5LjkzIDE0Mi45NHptNzkuMDIgMjUwLjIxTDI1NiA0MzguMzJ2NjUuNjdjMCA1Ljg0IDYuMDUgOS43MSAxMS4zNSA3LjI2bDE5NC40LTg3LjY2YzQuMDMtMS45NyAyLjI1LTguMDYtMi4yLTcuNTZ6bS04Ni4zLTIwMC45N2wtMTA4LjYzIDE5MC4xIDIwOC4yNi0yMi4wN2M1LjgzLS42NSA5LjAxLTcuMTQgNS45My0xMi4xNEwzNzMuMjUgMjE1LjA2ek0yNDAgMjA4SDEzOS41N0wyNDAgMzgzLjc1IDM0MC40MyAyMDhIMjQwelwiXVxufTtcbnZhciBmYURpY2VENiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkaWNlLWQ2JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNmQxXCIsIFwiTTQyMi4xOSAxMDkuOTVMMjU2LjIxIDkuMDdjLTE5LjkxLTEyLjEtNDQuNTItMTIuMS02NC40MyAwTDI1LjgxIDEwOS45NWMtNS4zMiAzLjIzLTUuMjkgMTEuMjcuMDYgMTQuNDZMMjI0IDI0Mi41NWwxOTguMTQtMTE4LjE0YzUuMzUtMy4xOSA1LjM4LTExLjIyLjA1LTE0LjQ2em0xMy44NCA0NC42M0wyNDAgMjcxLjQ2djIyMy44MmMwIDEyLjg4IDEzLjM5IDIwLjkxIDI0LjA1IDE0LjQzbDE1Mi4xNi05Mi40OGMxOS42OC0xMS45NiAzMS43OS0zMy45NCAzMS43OS01Ny43di0xOTcuN2MwLTYuNDEtNi42NC0xMC40My0xMS45Ny03LjI1ek0wIDE2MS44M3YxOTcuN2MwIDIzLjc3IDEyLjExIDQ1Ljc0IDMxLjc5IDU3LjdsMTUyLjE2IDkyLjQ3YzEwLjY3IDYuNDggMjQuMDUtMS41NCAyNC4wNS0xNC40M1YyNzEuNDZMMTEuOTcgMTU0LjU4QzYuNjQgMTUxLjQgMCAxNTUuNDIgMCAxNjEuODN6XCJdXG59O1xudmFyIGZhRGljZUZpdmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGljZS1maXZlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNTIzXCIsIFwiTTM4NCAzMkg2NEMyOC42NSAzMiAwIDYwLjY1IDAgOTZ2MzIwYzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzIwYzM1LjM1IDAgNjQtMjguNjUgNjQtNjRWOTZjMC0zNS4zNS0yOC42NS02NC02NC02NHpNMTI4IDM4NGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC0xOTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTk2IDk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem05NiA5NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC0xOTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJdXG59O1xudmFyIGZhRGljZUZvdXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGljZS1mb3VyJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNTI0XCIsIFwiTTM4NCAzMkg2NEMyOC42NSAzMiAwIDYwLjY1IDAgOTZ2MzIwYzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzIwYzM1LjM1IDAgNjQtMjguNjUgNjQtNjRWOTZjMC0zNS4zNS0yOC42NS02NC02NC02NHpNMTI4IDM4NGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC0xOTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTE5MiAxOTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTAtMTkyYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYURpY2VPbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGljZS1vbmUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1MjVcIiwgXCJNMzg0IDMySDY0QzI4LjY1IDMyIDAgNjAuNjUgMCA5NnYzMjBjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMjBjMzUuMzUgMCA2NC0yOC42NSA2NC02NFY5NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0ek0yMjQgMjg4Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYURpY2VTaXggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGljZS1zaXgnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1MjZcIiwgXCJNMzg0IDMySDY0QzI4LjY1IDMyIDAgNjAuNjUgMCA5NnYzMjBjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMjBjMzUuMzUgMCA2NC0yOC42NSA2NC02NFY5NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0ek0xMjggMzg0Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0xOTIgMTkyYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYURpY2VUaHJlZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkaWNlLXRocmVlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNTI3XCIsIFwiTTM4NCAzMkg2NEMyOC42NSAzMiAwIDYwLjY1IDAgOTZ2MzIwYzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzIwYzM1LjM1IDAgNjQtMjguNjUgNjQtNjRWOTZjMC0zNS4zNS0yOC42NS02NC02NC02NHpNMTI4IDE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptOTYgOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTk2IDk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYURpY2VUd28gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGljZS10d28nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1MjhcIiwgXCJNMzg0IDMySDY0QzI4LjY1IDMyIDAgNjAuNjUgMCA5NnYzMjBjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMjBjMzUuMzUgMCA2NC0yOC42NSA2NC02NFY5NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0ek0xMjggMTkyYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0xOTIgMTkyYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYURpZ2l0YWxUYWNob2dyYXBoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RpZ2l0YWwtdGFjaG9ncmFwaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjU2NlwiLCBcIk02MDggOTZIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MjU2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTc2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMTI4YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTMwNCAzNTJjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04di04YzAtNC40MiAzLjU4LTggOC04aDIyNGM0LjQyIDAgOCAzLjU4IDggOHY4ek03MiAyODh2LTE2YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDgwYy00LjQyIDAtOC0zLjU4LTgtOHptNjQgMHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHptNjQgMHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHptNjQgMHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHptNDAtNjRjMCA4Ljg0LTcuMTYgMTYtMTYgMTZIODBjLTguODQgMC0xNi03LjE2LTE2LTE2di00OGMwLTguODQgNy4xNi0xNiAxNi0xNmgyMDhjOC44NCAwIDE2IDcuMTYgMTYgMTZ2NDh6bTI3MiAxMjhjMCA0LjQyLTMuNTggOC04IDhIMzQ0Yy00LjQyIDAtOC0zLjU4LTgtOHYtOGMwLTQuNDIgMy41OC04IDgtOGgyMjRjNC40MiAwIDggMy41OCA4IDh2OHpcIl1cbn07XG52YXIgZmFEaXJlY3Rpb25zID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RpcmVjdGlvbnMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1ZWJcIiwgXCJNNTAyLjYxIDIzMy4zMkwyNzguNjggOS4zOWMtMTIuNTItMTIuNTItMzIuODMtMTIuNTItNDUuMzYgMEw5LjM5IDIzMy4zMmMtMTIuNTIgMTIuNTMtMTIuNTIgMzIuODMgMCA0NS4zNmwyMjMuOTMgMjIzLjkzYzEyLjUyIDEyLjUzIDMyLjgzIDEyLjUzIDQ1LjM2IDBsMjIzLjkzLTIyMy45M2MxMi41Mi0xMi41MyAxMi41Mi0zMi44MyAwLTQ1LjM2em0tMTAwLjk4IDEyLjU2bC04NC4yMSA3Ny43M2MtNS4xMiA0LjczLTEzLjQzIDEuMS0xMy40My01Ljg4VjI2NGgtOTZ2NjRjMCA0LjQyLTMuNTggOC04IDhoLTMyYy00LjQyIDAtOC0zLjU4LTgtOHYtODBjMC0xNy42NyAxNC4zMy0zMiAzMi0zMmgxMTJ2LTUzLjczYzAtNi45NyA4LjMtMTAuNjEgMTMuNDMtNS44OGw4NC4yMSA3Ny43M2MzLjQzIDMuMTcgMy40MyA4LjU5IDAgMTEuNzZ6XCJdXG59O1xudmFyIGZhRGlzZWFzZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkaXNlYXNlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmN2ZhXCIsIFwiTTQ3Mi4yOSAxOTUuOWwtNjcuMDYtMjNjLTE5LjI4LTYuNi0zMy41NC0yMC45Mi0zOC4xNC0zOC4zMWwtMTYtNjAuNDVjLTExLjU4LTQzLjc3LTc2LjU3LTU3LjEzLTExMC0yMi42MkwxOTUgOTkuMjRjLTEzLjI2IDEzLjcxLTMzLjU0IDIwLjkzLTU0LjIgMTkuMzFsLTcxLjktNS42MmMtNTItNC4wNy04Ni45MyA0NC44OS01OSA4Mi44NGwzOC41NCA1Mi40MmMxMS4wOCAxNS4wNyAxMi44MiAzMy44NiA0LjY0IDUwLjI0bC0yOC40MyA1N0M0IDM5Ni42NyA0Ny40NiA0NDAuMjkgOTguMTEgNDI5LjIzbDcwLTE1LjI4YzIwLjExLTQuMzkgNDEuNDUgMCA1Ny4wNyAxMS43M2w1NC4zMiA0MC44M2MzOS4zMiAyOS41NiAxMDEgNy41NyAxMDQuNDUtMzcuMjJsNC43LTYxLjg2YzEuMzUtMTcuOCAxMi44LTMzLjg3IDMwLjYzLTQzbDYyLTMxLjc0YzQ0Ljg0LTIyLjk2IDM5LjU1LTgwLjE3LTguOTktOTYuNzl6TTE2MCAyNTZhMzIgMzIgMCAxIDEgMzItMzIgMzIgMzIgMCAwIDEtMzIgMzJ6bTEyOCA5NmEzMiAzMiAwIDEgMSAzMi0zMiAzMiAzMiAwIDAgMS0zMiAzMnptMTYtMTI4YTE2IDE2IDAgMSAxIDE2LTE2IDE2IDE2IDAgMCAxLTE2IDE2elwiXVxufTtcbnZhciBmYURpdmlkZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkaXZpZGUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1MjlcIiwgXCJNMjI0IDM1MmMtMzUuMzUgMC02NCAyOC42NS02NCA2NHMyOC42NSA2NCA2NCA2NCA2NC0yOC42NSA2NC02NC0yOC42NS02NC02NC02NHptMC0xOTJjMzUuMzUgMCA2NC0yOC42NSA2NC02NHMtMjguNjUtNjQtNjQtNjQtNjQgMjguNjUtNjQgNjQgMjguNjUgNjQgNjQgNjR6bTE5MiA0OEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDM4NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwiXVxufTtcbnZhciBmYURpenp5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Rpenp5JyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNTY3XCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bS05NiAyMDYuNmwtMjguNyAyOC43Yy0xNC44IDE0LjgtMzcuOC03LjUtMjIuNi0yMi42bDI4LjctMjguNy0yOC43LTI4LjdjLTE1LTE1IDcuNy0zNy42IDIyLjYtMjIuNmwyOC43IDI4LjcgMjguNy0yOC43YzE1LTE1IDM3LjYgNy43IDIyLjYgMjIuNkwxNzQuNiAxOTJsMjguNyAyOC43YzE1LjIgMTUuMi03LjkgMzcuNC0yMi42IDIyLjZMMTUyIDIxNC42ek0yNDggNDE2Yy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0IDY0IDI4LjcgNjQgNjQtMjguNyA2NC02NCA2NHptMTQ3LjMtMTk1LjNjMTUuMiAxNS4yLTcuOSAzNy40LTIyLjYgMjIuNkwzNDQgMjE0LjZsLTI4LjcgMjguN2MtMTQuOCAxNC44LTM3LjgtNy41LTIyLjYtMjIuNmwyOC43LTI4LjctMjguNy0yOC43Yy0xNS0xNSA3LjctMzcuNiAyMi42LTIyLjZsMjguNyAyOC43IDI4LjctMjguN2MxNS0xNSAzNy42IDcuNyAyMi42IDIyLjZMMzY2LjYgMTkybDI4LjcgMjguN3pcIl1cbn07XG52YXIgZmFEbmEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZG5hJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNDcxXCIsIFwiTS4xIDQ5NC4xYy0xLjEgOS41IDYuMyAxNy44IDE1LjkgMTcuOGwzMi4zLjFjOC4xIDAgMTQuOS01LjkgMTYtMTMuOS43LTQuOSAxLjgtMTEuMSAzLjQtMTguMUgzODBjMS42IDYuOSAyLjkgMTMuMiAzLjUgMTguMSAxLjEgOCA3LjkgMTQgMTYgMTMuOWwzMi4zLS4xYzkuNiAwIDE3LjEtOC4zIDE1LjktMTcuOC00LjYtMzcuOS0yNS42LTEyOS0xMTguOS0yMDcuNy0xNy42IDEyLjQtMzcuMSAyNC4yLTU4LjUgMzUuNCA2LjIgNC42IDExLjQgOS40IDE3IDE0LjJIMTU5LjdjMjEuMy0xOC4xIDQ3LTM1LjYgNzguNy01MS40QzQxMC41IDE5OS4xIDQ0Mi4xIDY1LjggNDQ3LjkgMTcuOSA0NDkgOC40IDQ0MS42LjEgNDMyIC4xTDM5OS42IDBjLTguMSAwLTE0LjkgNS45LTE2IDEzLjktLjcgNC45LTEuOCAxMS4xLTMuNCAxOC4xSDY3LjhjLTEuNi03LTIuNy0xMy4xLTMuNC0xOC4xLTEuMS04LTcuOS0xNC0xNi0xMy45TDE2LjEuMUM2LjUuMS0xIDguNC4xIDE3LjkgNS4zIDYwLjggMzEuNCAxNzEuOCAxNjAgMjU2IDMxLjUgMzQwLjIgNS4zIDQ1MS4yLjEgNDk0LjF6TTIyNCAyMTkuNmMtMjUuMS0xMy43LTQ2LjQtMjguNC02NC4zLTQzLjZoMTI4LjVjLTE3LjggMTUuMi0zOS4xIDMwLTY0LjIgNDMuNnpNMzU1LjEgOTZjLTUuOCAxMC40LTEyLjggMjEuMS0yMSAzMkgxMTRjLTguMy0xMC45LTE1LjMtMjEuNi0yMS0zMmgyNjIuMXpNOTIuOSA0MTZjNS44LTEwLjQgMTIuOC0yMS4xIDIxLTMyaDIxOS40YzguMyAxMC45IDE1LjQgMjEuNiAyMS4yIDMySDkyLjl6XCJdXG59O1xudmFyIGZhRG9nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RvZycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjZkM1wiLCBcIk0yOTguMDYsMjI0LDQ0OCwyNzcuNTVWNDk2YTE2LDE2LDAsMCwxLTE2LDE2SDM2OGExNiwxNiwwLDAsMS0xNi0xNlYzODRIMTkyVjQ5NmExNiwxNiwwLDAsMS0xNiwxNkgxMTJhMTYsMTYsMCwwLDEtMTYtMTZWMjgyLjA5QzU4Ljg0LDI2OC44NCwzMiwyMzMuNjYsMzIsMTkyYTMyLDMyLDAsMCwxLDY0LDAsMzIuMDYsMzIuMDYsMCwwLDAsMzIsMzJaTTU0NCwxMTJ2MzJhNjQsNjQsMCwwLDEtNjQsNjRINDQ4djM1LjU4TDMyMCwxOTcuODdWNDhjMC0xNC4yNSwxNy4yMi0yMS4zOSwyNy4zMS0xMS4zMUwzNzQuNTksNjRoNTMuNjNjMTAuOTEsMCwyMy43NSw3LjkyLDI4LjYyLDE3LjY5TDQ2NCw5Nmg2NEExNiwxNiwwLDAsMSw1NDQsMTEyWm0tMTEyLDBhMTYsMTYsMCwxLDAtMTYsMTZBMTYsMTYsMCwwLDAsNDMyLDExMlpcIl1cbn07XG52YXIgZmFEb2xsYXJTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RvbGxhci1zaWduJyxcbiAgaWNvbjogWzI4OCwgNTEyLCBbXSwgXCJmMTU1XCIsIFwiTTIwOS4yIDIzMy40bC0xMDgtMzEuNkM4OC43IDE5OC4yIDgwIDE4Ni41IDgwIDE3My41YzAtMTYuMyAxMy4yLTI5LjUgMjkuNS0yOS41aDY2LjNjMTIuMiAwIDI0LjIgMy43IDM0LjIgMTAuNSA2LjEgNC4xIDE0LjMgMy4xIDE5LjUtMmwzNC44LTM0YzcuMS02LjkgNi4xLTE4LjQtMS44LTI0LjVDMjM4IDc0LjggMjA3LjQgNjQuMSAxNzYgNjRWMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4aC0yLjVDNDUuOCA2NC01LjQgMTE4LjcuNSAxODMuNmM0LjIgNDYuMSAzOS40IDgzLjYgODMuOCA5Ni42bDEwMi41IDMwYzEyLjUgMy43IDIxLjIgMTUuMyAyMS4yIDI4LjMgMCAxNi4zLTEzLjIgMjkuNS0yOS41IDI5LjVoLTY2LjNDMTAwIDM2OCA4OCAzNjQuMyA3OCAzNTcuNWMtNi4xLTQuMS0xNC4zLTMuMS0xOS41IDJsLTM0LjggMzRjLTcuMSA2LjktNi4xIDE4LjQgMS44IDI0LjUgMjQuNSAxOS4yIDU1LjEgMjkuOSA4Ni41IDMwdjQ4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ2LTQ4LjJjNDYuNi0uOSA5MC4zLTI4LjYgMTA1LjctNzIuNyAyMS41LTYxLjYtMTQuNi0xMjQuOC03Mi41LTE0MS43elwiXVxufTtcbnZhciBmYURvbGx5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RvbGx5JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNDcyXCIsIFwiTTI5NC4yIDI3Ny43YzE4IDUgMzQuNyAxMy40IDQ5LjUgMjQuN2wxNjEuNS01My44YzguNC0yLjggMTIuOS0xMS45IDEwLjEtMjAuMkw0NTQuOSA0Ny4yYy0yLjgtOC40LTExLjktMTIuOS0yMC4yLTEwLjFsLTYxLjEgMjAuNCAzMy4xIDk5LjRMMzQ2IDE3N2wtMzMuMS05OS40LTYxLjYgMjAuNWMtOC40IDIuOC0xMi45IDExLjktMTAuMSAyMC4ybDUzIDE1OS40em0yODEgNDguN0w1NjUgMjk2Yy0yLjgtOC40LTExLjktMTIuOS0yMC4yLTEwLjFsLTIxMy41IDcxLjJjLTE3LjItMjItNDMuNi0zNi40LTczLjUtMzdMMTU4LjQgMjEuOUMxNTQgOC44IDE0MS44IDAgMTI4IDBIMTZDNy4yIDAgMCA3LjIgMCAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoODguOWw5Mi4yIDI3Ni43Yy0yNi4xIDIwLjQtNDEuNyA1My42LTM2IDkwLjUgNi4xIDM5LjQgMzcuOSA3Mi4zIDc3LjMgNzkuMiA2MC4yIDEwLjcgMTEyLjMtMzQuOCAxMTMuNC05Mi42bDIxMy4zLTcxLjJjOC4zLTIuOCAxMi45LTExLjggMTAuMS0yMC4yek0yNTYgNDY0Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHpcIl1cbn07XG52YXIgZmFEb2xseUZsYXRiZWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZG9sbHktZmxhdGJlZCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjQ3NFwiLCBcIk0yMDggMzIwaDM4NGM4LjggMCAxNi03LjIgMTYtMTZWNDhjMC04LjgtNy4yLTE2LTE2LTE2SDQ0OHYxMjhsLTQ4LTMyLTQ4IDMyVjMySDIwOGMtOC44IDAtMTYgNy4yLTE2IDE2djI1NmMwIDguOCA3LjIgMTYgMTYgMTZ6bTQxNiA2NEgxMjhWMTZjMC04LjgtNy4yLTE2LTE2LTE2SDE2QzcuMiAwIDAgNy4yIDAgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djM2OGMwIDguOCA3LjIgMTYgMTYgMTZoODIuOWMtMS44IDUtMi45IDEwLjQtMi45IDE2IDAgMjYuNSAyMS41IDQ4IDQ4IDQ4czQ4LTIxLjUgNDgtNDhjMC01LjYtMS4yLTExLTIuOS0xNkg0NTFjLTEuOCA1LTIuOSAxMC40LTIuOSAxNiAwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4YzAtNS42LTEuMi0xMS0yLjktMTZINjI0YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2elwiXVxufTtcbnZhciBmYURvbmF0ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkb25hdGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY0YjlcIiwgXCJNMjU2IDQxNmMxMTQuOSAwIDIwOC05My4xIDIwOC0yMDhTMzcwLjkgMCAyNTYgMCA0OCA5My4xIDQ4IDIwOHM5My4xIDIwOCAyMDggMjA4ek0yMzMuOCA5Ny40VjgwLjZjMC05LjIgNy40LTE2LjYgMTYuNi0xNi42aDExLjFjOS4yIDAgMTYuNiA3LjQgMTYuNiAxNi42djE3YzE1LjUuOCAzMC41IDYuMSA0MyAxNS40IDUuNiA0LjEgNi4yIDEyLjMgMS4yIDE3LjFMMzA2IDE0NS42Yy0zLjggMy43LTkuNSAzLjgtMTQgMS01LjQtMy40LTExLjQtNS4xLTE3LjgtNS4xaC0zOC45Yy05IDAtMTYuMyA4LjItMTYuMyAxOC4zIDAgOC4yIDUgMTUuNSAxMi4xIDE3LjZsNjIuMyAxOC43YzI1LjcgNy43IDQzLjcgMzIuNCA0My43IDYwLjEgMCAzNC0yNi40IDYxLjUtNTkuMSA2Mi40djE2LjhjMCA5LjItNy40IDE2LjYtMTYuNiAxNi42aC0xMS4xYy05LjIgMC0xNi42LTcuNC0xNi42LTE2LjZ2LTE3Yy0xNS41LS44LTMwLjUtNi4xLTQzLTE1LjQtNS42LTQuMS02LjItMTIuMy0xLjItMTcuMWwxNi4zLTE1LjVjMy44LTMuNyA5LjUtMy44IDE0LTEgNS40IDMuNCAxMS40IDUuMSAxNy44IDUuMWgzOC45YzkgMCAxNi4zLTguMiAxNi4zLTE4LjMgMC04LjItNS0xNS41LTEyLjEtMTcuNmwtNjIuMy0xOC43Yy0yNS43LTcuNy00My43LTMyLjQtNDMuNy02MC4xLjEtMzQgMjYuNC02MS41IDU5LjEtNjIuNHpNNDgwIDM1MmgtMzIuNWMtMTkuNiAyNi00NC42IDQ3LjctNzMgNjRoNjMuOGM1LjMgMCA5LjYgMy42IDkuNiA4djE2YzAgNC40LTQuMyA4LTkuNiA4SDczLjZjLTUuMyAwLTkuNi0zLjYtOS42LTh2LTE2YzAtNC40IDQuMy04IDkuNi04aDYzLjhjLTI4LjQtMTYuMy01My4zLTM4LTczLTY0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg0NDhjMTcuNyAwIDMyLTE0LjMgMzItMzJ2LTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyelwiXVxufTtcbnZhciBmYURvb3JDbG9zZWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZG9vci1jbG9zZWQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1MmFcIiwgXCJNNjI0IDQ0OEg1MTJWNTAuOEM1MTIgMjIuNzggNDkwLjQ3IDAgNDY0IDBIMTc1Ljk5Yy0yNi40NyAwLTQ4IDIyLjc4LTQ4IDUwLjhWNDQ4SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg2MDhjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2ek00MTUuOTkgMjg4Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyYy4wMSAxNy42Ny0xNC4zMiAzMi0zMiAzMnpcIl1cbn07XG52YXIgZmFEb29yT3BlbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkb29yLW9wZW4nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1MmJcIiwgXCJNNjI0IDQ0OGgtODBWMTEzLjQ1QzU0NCA4Ni4xOSA1MjIuNDcgNjQgNDk2IDY0SDM4NHY2NGg5NnYzODRoMTQ0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpNMzEyLjI0IDEuMDFsLTE5MiA0OS43NEMxMDUuOTkgNTQuNDQgOTYgNjcuNyA5NiA4Mi45MlY0NDhIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDMzNlYzMy4xOGMwLTIxLjU4LTE5LjU2LTM3LjQxLTM5Ljc2LTMyLjE3ek0yNjQgMjg4Yy0xMy4yNSAwLTI0LTE0LjMzLTI0LTMyczEwLjc1LTMyIDI0LTMyIDI0IDE0LjMzIDI0IDMyLTEwLjc1IDMyLTI0IDMyelwiXVxufTtcbnZhciBmYURvdENpcmNsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkb3QtY2lyY2xlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMTkyXCIsIFwiTTI1NiA4QzExOS4wMzMgOCA4IDExOS4wMzMgOCAyNTZzMTExLjAzMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzMyAyNDgtMjQ4UzM5Mi45NjcgOCAyNTYgOHptODAgMjQ4YzAgNDQuMTEyLTM1Ljg4OCA4MC04MCA4MHMtODAtMzUuODg4LTgwLTgwIDM1Ljg4OC04MCA4MC04MCA4MCAzNS44ODggODAgODB6XCJdXG59O1xudmFyIGZhRG92ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkb3ZlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNGJhXCIsIFwiTTI4OCAxNjcuMnYtMjguMWMtMjguMi0zNi4zLTQ3LjEtNzkuMy01NC4xLTEyNS4yLTIuMS0xMy41LTE5LTE4LjgtMjcuOC04LjMtMjEuMSAyNC45LTM3LjcgNTQuMS00OC45IDg2LjUgMzQuMiAzOC4zIDgwIDY0LjYgMTMwLjggNzUuMXpNNDAwIDY0Yy00NC4yIDAtODAgMzUuOS04MCA4MC4xdjU5LjRDMjE1LjYgMTk3LjMgMTI3IDEzMyA4NyA0MS44Yy01LjUtMTIuNS0yMy4yLTEzLjItMjktLjlDNDEuNCA3NiAzMiAxMTUuMiAzMiAxNTYuNmMwIDcwLjggMzQuMSAxMzYuOSA4NS4xIDE4NS45IDEzLjIgMTIuNyAyNi4xIDIzLjIgMzguOSAzMi44bC0xNDMuOSAzNkMxLjQgNDE0LTMuNCA0MjYuNCAyLjYgNDM1LjcgMjAgNDYyLjYgNjMgNTA4LjIgMTU1LjggNTEyYzggLjMgMTYtMi42IDIyLjEtNy45bDY1LjItNTYuMUgzMjBjODguNCAwIDE2MC03MS41IDE2MC0xNTkuOVYxMjhsMzItNjRINDAwem0wIDk2LjFjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnpcIl1cbn07XG52YXIgZmFEb3dubG9hZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkb3dubG9hZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAxOVwiLCBcIk0yMTYgMGg4MGMxMy4zIDAgMjQgMTAuNyAyNCAyNHYxNjhoODcuN2MxNy44IDAgMjYuNyAyMS41IDE0LjEgMzQuMUwyNjkuNyAzNzguM2MtNy41IDcuNS0xOS44IDcuNS0yNy4zIDBMOTAuMSAyMjYuMWMtMTIuNi0xMi42LTMuNy0zNC4xIDE0LjEtMzQuMUgxOTJWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjR6bTI5NiAzNzZ2MTEyYzAgMTMuMy0xMC43IDI0LTI0IDI0SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYzNzZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTQ2LjdsNDkgNDljMjAuMSAyMC4xIDUyLjUgMjAuMSA3Mi42IDBsNDktNDlINDg4YzEzLjMgMCAyNCAxMC43IDI0IDI0em0tMTI0IDg4YzAtMTEtOS0yMC0yMC0yMHMtMjAgOS0yMCAyMCA5IDIwIDIwIDIwIDIwLTkgMjAtMjB6bTY0IDBjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwIDkgMjAgMjAgMjAgMjAtOSAyMC0yMHpcIl1cbn07XG52YXIgZmFEcmFmdGluZ0NvbXBhc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZHJhZnRpbmctY29tcGFzcycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjU2OFwiLCBcIk00NTcuMDEgMzQ0LjQyYy0yNS4wNSAyMC4zMy01Mi42MyAzNy4xOC04Mi41NCA0OS4wNWw1NC4zOCA5NC4xOSA1My45NSAyMy4wNGM5LjgxIDQuMTkgMjAuODktMi4yMSAyMi4xNy0xMi44bDcuMDItNTguMjUtNTQuOTgtOTUuMjN6bTQyLjQ5LTk0LjU2YzQuODYtNy42NyAxLjg5LTE3Ljk5LTYuMDUtMjIuMzlsLTI4LjA3LTE1LjU3Yy03LjQ4LTQuMTUtMTYuNjEtMS40Ni0yMS4yNiA1LjcyQzQwMy4wMSAyODEuMTUgMzMyLjI1IDMyMCAyNTYgMzIwYy0yMy45MyAwLTQ3LjIzLTQuMjUtNjkuNDEtMTEuNTNsNjcuMzYtMTE2LjY4Yy43LjAyIDEuMzQuMjEgMi4wNC4yMXMxLjM1LS4xOSAyLjA0LS4yMWw1MS4wOSA4OC41YzMxLjIzLTguOTYgNTkuNTYtMjUuNzUgODIuNjEtNDguOTJsLTUxLjc5LTg5LjcxQzM0Ny4zOSAxMjguMDMgMzUyIDExMi42MyAzNTIgOTZjMC01My4wMi00Mi45OC05Ni05Ni05NnMtOTYgNDIuOTgtOTYgOTZjMCAxNi42MyA0LjYxIDMyLjAzIDEyLjA1IDQ1LjY2bC02OC4zIDExOC4zMWMtMTIuNTUtMTEuNjEtMjMuOTYtMjQuNTktMzMuNjgtMzktNC43OS03LjEtMTMuOTctOS42Mi0yMS4zOC01LjMzbC0yNy43NSAxNi4wN2MtNy44NSA0LjU0LTEwLjYzIDE0LjktNS42NCAyMi40NyAxNS41NyAyMy42NCAzNC42OSA0NC4yMSA1NS45OCA2Mi4wMkwwIDQzOS42Nmw3LjAyIDU4LjI1YzEuMjggMTAuNTkgMTIuMzYgMTYuOTkgMjIuMTcgMTIuOGw1My45NS0yMy4wNCA3MC44LTEyMi42M0MxODYuMTMgMzc3LjI4IDIyMC42MiAzODQgMjU2IDM4NGM5OS4wNSAwIDE5MC44OC01MS4wMSAyNDMuNS0xMzQuMTR6TTI1NiA2NGMxNy42NyAwIDMyIDE0LjMzIDMyIDMycy0xNC4zMyAzMi0zMiAzMi0zMi0xNC4zMy0zMi0zMiAxNC4zMy0zMiAzMi0zMnpcIl1cbn07XG52YXIgZmFEcmFnb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZHJhZ29uJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNmQ1XCIsIFwiTTE4LjMyIDI1NS43OEwxOTIgMjIzLjk2bC05MS4yOCA2OC42OWMtMTAuMDggMTAuMDgtMi45NCAyNy4zMSAxMS4zMSAyNy4zMWgyMjIuN2MtOS40NC0yNi40LTE0LjczLTU0LjQ3LTE0LjczLTgzLjM4di00Mi4yN2wtMTE5LjczLTg3LjZjLTIzLjgyLTE1Ljg4LTU1LjI5LTE0LjAxLTc3LjA2IDQuNTlMNS44MSAyMjcuNjRjLTEyLjM4IDEwLjMzLTMuNDUgMzAuNDIgMTIuNTEgMjguMTR6bTU1Ni44NyAzNC4xbC0xMDAuNjYtNTAuMzFBNDcuOTkyIDQ3Ljk5MiAwIDAgMSA0NDggMTk2LjY1di0zNi42OWg2NGwyOC4wOSAyMi42M2M2IDYgMTQuMTQgOS4zNyAyMi42MyA5LjM3aDMwLjk3YTMyIDMyIDAgMCAwIDI4LjYyLTE3LjY5bDE0LjMxLTI4LjYyYTMyLjAwNSAzMi4wMDUgMCAwIDAtMy4wMi0zMy41MWwtNzQuNTMtOTkuMzhDNTUzLjAyIDQuNyA1NDMuNTQgMCA1MzMuNDcgMEgyOTYuMDJjLTcuMTMgMC0xMC43IDguNTctNS42NiAxMy42MUwzNTIgNjMuOTYgMjkyLjQyIDg4LjhjLTUuOSAyLjk1LTUuOSAxMS4zNiAwIDE0LjMxTDM1MiAxMjcuOTZ2MTA4LjYyYzAgNzIuMDggMzYuMDMgMTM5LjM5IDk2IDE3OS4zOC0xOTUuNTkgNi44MS0zNDQuNTYgNDEuMDEtNDM0LjEgNjAuOTFDNS43OCA0NzguNjcgMCA0ODUuODggMCA0OTQuMiAwIDUwNCA3Ljk1IDUxMiAxNy43NiA1MTJoNDk5LjA4YzYzLjI5LjAxIDExOS42MS00Ny41NiAxMjIuOTktMTEwLjc2IDIuNTItNDcuMjgtMjIuNzMtOTAuNC02NC42NC0xMTEuMzZ6TTQ4OS4xOCA2Ni4yNWw0NS42NSAxMS40MWMtMi43NSAxMC45MS0xMi40NyAxOC44OS0yNC4xMyAxOC4yNi0xMi45Ni0uNzEtMjUuODUtMTIuNTMtMjEuNTItMjkuNjd6XCJdXG59O1xudmFyIGZhRHJhd1BvbHlnb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZHJhdy1wb2x5Z29uJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNWVlXCIsIFwiTTM4NCAzNTJjLS4zNSAwLS42Ny4xLTEuMDIuMWwtMzkuMi02NS4zMmM1LjA3LTkuMTcgOC4yMi0xOS41NiA4LjIyLTMwLjc4cy0zLjE0LTIxLjYxLTguMjItMzAuNzhsMzkuMi02NS4zMmMuMzUuMDEuNjcuMSAxLjAyLjEgMzUuMzUgMCA2NC0yOC42NSA2NC02NHMtMjguNjUtNjQtNjQtNjRjLTIzLjYzIDAtNDQuMDQgMTIuOTUtNTUuMTIgMzJIMTE5LjEyQzEwOC4wNCA0NC45NSA4Ny42MyAzMiA2NCAzMiAyOC42NSAzMiAwIDYwLjY1IDAgOTZjMCAyMy42MyAxMi45NSA0NC4wNCAzMiA1NS4xMnYyMDkuNzVDMTIuOTUgMzcxLjk2IDAgMzkyLjM3IDAgNDE2YzAgMzUuMzUgMjguNjUgNjQgNjQgNjQgMjMuNjMgMCA0NC4wNC0xMi45NSA1NS4xMi0zMmgyMDkuNzVjMTEuMDkgMTkuMDUgMzEuNDkgMzIgNTUuMTIgMzIgMzUuMzUgMCA2NC0yOC42NSA2NC02NCAuMDEtMzUuMzUtMjguNjQtNjQtNjMuOTktNjR6bS0yODggOC44OFYxNTEuMTJBNjMuODI1IDYzLjgyNSAwIDAgMCAxMTkuMTIgMTI4aDIwOC4zNmwtMzguNDYgNjQuMWMtLjM1LS4wMS0uNjctLjEtMS4wMi0uMS0zNS4zNSAwLTY0IDI4LjY1LTY0IDY0czI4LjY1IDY0IDY0IDY0Yy4zNSAwIC42Ny0uMSAxLjAyLS4xbDM4LjQ2IDY0LjFIMTE5LjEyQTYzLjc0OCA2My43NDggMCAwIDAgOTYgMzYwLjg4ek0yNzIgMjU2YzAtOC44MiA3LjE4LTE2IDE2LTE2czE2IDcuMTggMTYgMTYtNy4xOCAxNi0xNiAxNi0xNi03LjE4LTE2LTE2ek00MDAgOTZjMCA4LjgyLTcuMTggMTYtMTYgMTZzLTE2LTcuMTgtMTYtMTYgNy4xOC0xNiAxNi0xNiAxNiA3LjE4IDE2IDE2ek02NCA4MGM4LjgyIDAgMTYgNy4xOCAxNiAxNnMtNy4xOCAxNi0xNiAxNi0xNi03LjE4LTE2LTE2IDcuMTgtMTYgMTYtMTZ6TTQ4IDQxNmMwLTguODIgNy4xOC0xNiAxNi0xNnMxNiA3LjE4IDE2IDE2LTcuMTggMTYtMTYgMTYtMTYtNy4xOC0xNi0xNnptMzM2IDE2Yy04LjgyIDAtMTYtNy4xOC0xNi0xNnM3LjE4LTE2IDE2LTE2IDE2IDcuMTggMTYgMTYtNy4xOCAxNi0xNiAxNnpcIl1cbn07XG52YXIgZmFEcnVtID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RydW0nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NjlcIiwgXCJNNDMxLjM0IDEyMi4wNWw3My41My00Ny40MmExNiAxNiAwIDAgMCA0LjQ0LTIyLjE5bC04Ljg3LTEzLjMxYTE2IDE2IDAgMCAwLTIyLjE5LTQuNDRsLTExMC4wNiA3MUMzMTguNDMgOTYuOTEgMjcxLjIyIDk2IDI1NiA5NiAyMTkuNTUgOTYgMCAxMDAuNTUgMCAyMDguMTV2MTYwLjIzYzAgMzAuMjcgMjcuNSA1Ny42OCA3MiA3Ny44NnYtMTAxLjlhMjQgMjQgMCAxIDEgNDggMHYxMTguOTNjMzMuMDUgOS4xMSA3MS4wNyAxNS4wNiAxMTIgMTYuNzNWMzc2LjM5YTI0IDI0IDAgMSAxIDQ4IDBWNDgwYzQwLjkzLTEuNjcgNzguOTUtNy42MiAxMTItMTYuNzNWMzQ0LjM0YTI0IDI0IDAgMSAxIDQ4IDB2MTAxLjljNDQuNS0yMC4xOCA3Mi00Ny41OSA3Mi03Ny44NlYyMDguMTVjMC00My4zMi0zNS43Ni02OS43Ni04MC42Ni04Ni4xek0yNTYgMjcyLjI0Yy0xMTQuODggMC0yMDgtMjguNjktMjA4LTY0LjA5czkzLjEyLTY0LjA4IDIwOC02NC4wOGMxNy4xNSAwIDMzLjczLjcxIDQ5LjY4IDEuOTFsLTcyLjgxIDQ3YTE2IDE2IDAgMCAwLTQuNDMgMjIuMTlsOC44NyAxMy4zMWExNiAxNiAwIDAgMCAyMi4xOSA0LjQ0bDExOC42NC03Ni41MkM0MzAuMDkgMTY4IDQ2NCAxODYuODQgNDY0IDIwOC4xNWMwIDM1LjQtOTMuMTMgNjQuMDktMjA4IDY0LjA5elwiXVxufTtcbnZhciBmYURydW1TdGVlbHBhbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkcnVtLXN0ZWVscGFuJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTZhXCIsIFwiTTI4OCAzMkMxMjguOTQgMzIgMCA4OS4zMSAwIDE2MHYxOTJjMCA3MC42OSAxMjguOTQgMTI4IDI4OCAxMjhzMjg4LTU3LjMxIDI4OC0xMjhWMTYwYzAtNzAuNjktMTI4Ljk0LTEyOC0yODgtMTI4em0tODIuOTkgMTU4LjM2Yy00LjQ1IDE2LjYxLTE0LjU0IDMwLjU3LTI4LjMxIDQwLjQ4QzEwMC4yMyAyMTcuNDYgNDggMTkwLjc4IDQ4IDE2MGMwLTMwLjE2IDUwLjExLTU2LjM5IDEyNC4wNC03MC4wM2wyNS42IDQ0LjM0YzkuODYgMTcuMDkgMTIuNDggMzYuOTkgNy4zNyA1Ni4wNXpNMjg4IDI0MGMtMjEuMDggMC00MS40MS0xLTYwLjg5LTIuNyA4LjA2LTI2LjEzIDMyLjE1LTQ1LjMgNjAuODktNDUuM3M1Mi44MyAxOS4xNyA2MC44OSA0NS4zQzMyOS40MSAyMzkgMzA5LjA4IDI0MCAyODggMjQwem02NC0xNDRjMCAzNS4yOS0yOC43MSA2NC02NCA2NHMtNjQtMjguNzEtNjQtNjRWODIuOTZjMjAuNC0xLjg4IDQxLjgtMi45NiA2NC0yLjk2czQzLjYgMS4wOCA2NCAyLjk2Vjk2em00Ni45MyAxMzQuOWMtMTMuODEtOS45MS0yMy45NC0yMy45LTI4LjQtNDAuNTQtNS4xMS0xOS4wNi0yLjQ5LTM4Ljk2IDcuMzgtNTYuMDRsMjUuNjUtNDQuNDJDNDc3LjcyIDEwMy41IDUyOCAxMjkuNzkgNTI4IDE2MGMwIDMwLjgzLTUyLjQgNTcuNTQtMTI5LjA3IDcwLjl6XCJdXG59O1xudmFyIGZhRHJ1bXN0aWNrQml0ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkcnVtc3RpY2stYml0ZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjZkN1wiLCBcIk00NjIuOCA0OS41N2ExNjkuNDQgMTY5LjQ0IDAgMCAwLTIzOS41IDBDMTg3LjgyIDg1IDE2MC4xMyAxMjggMTYwLjEzIDE5MnY4NS44M2wtNDAuNjIgNDAuNTljLTkuNyA5LjY5LTI0IDExLjA3LTM2Ljc4IDZhNjAuMzMgNjAuMzMgMCAwIDAtNjUgOTguNzJDMzMgNDM4LjM5IDU0LjI0IDQ0Mi43IDczLjg1IDQzOC4yMWMtNC41IDE5LjYtLjE4IDQwLjgzIDE1LjEgNTYuMWE2MC4zNSA2MC4zNSAwIDAgMCA5OC44LTY1Yy01LjA5LTEyLjczLTMuNzItMjcgNi0zNi43NUwyMzQuMzYgMzUyaDg1Ljg5YTE4Ny44NyAxODcuODcgMCAwIDAgNjEuODktMTBjLTM5LjY0LTQzLjg5LTM5LjgzLTExMC4yMyAxLjA1LTE1MS4wNyAzNC4zOC0zNC4zNiA4Ni43Ni0zOS40NiAxMjguNzQtMTYuOCAxLjMtNDQuOTYtMTQuODEtOTAuMjgtNDkuMTMtMTI0LjU2elwiXVxufTtcbnZhciBmYUR1bWJiZWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2R1bWJiZWxsJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNDRiXCIsIFwiTTEwNCA5Nkg1NmMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MTA0SDhjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDhoMjR2MTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNHptNTI4IDEyOGgtMjRWMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0aC00OGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MjcyYzAgMTMuMyAxMC43IDI0IDI0IDI0aDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjI4OGgyNGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHpNNDU2IDMyaC00OGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MTY4SDI1NlY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNGgtNDhjLTEzLjMgMC0yNCAxMC43LTI0IDI0djQwMGMwIDEzLjMgMTAuNyAyNCAyNCAyNGg0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYyODhoMTI4djE2OGMwIDEzLjMgMTAuNyAyNCAyNCAyNGg0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNFY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNHpcIl1cbn07XG52YXIgZmFEdW1wc3RlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkdW1wc3RlcicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjc5M1wiLCBcIk01NjAgMTYwYzEwLjQgMCAxOC05LjggMTUuNS0xOS45bC0yNC05NkM1NDkuNyAzNyA1NDMuMyAzMiA1MzYgMzJoLTk4LjlsMjUuNiAxMjhINTYwek0yNzIgMzJIMTcxLjVsLTI1LjYgMTI4SDI3MlYzMnptMTMyLjUgMEgzMDR2MTI4aDEyNi4xTDQwNC41IDMyek0xNiAxNjBoOTcuM2wyNS42LTEyOEg0MGMtNy4zIDAtMTMuNyA1LTE1LjUgMTIuMWwtMjQgOTZDLTIgMTUwLjIgNS42IDE2MCAxNiAxNjB6bTU0NCA2NGgtMjBsNC0zMkgzMmw0IDMySDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDI4bDIwIDE2MHYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di0xNmgzMjB2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnYtMTZsMjAtMTYwaDI4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2elwiXVxufTtcbnZhciBmYUR1bXBzdGVyRmlyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkdW1wc3Rlci1maXJlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNzk0XCIsIFwiTTQxOC43IDEwNC4xbC4yLS4yLTE0LjQtNzJIMzA0djEyOGg2MC44YzE2LjItMTkuMyAzNC4yLTM4LjIgNTMuOS01NS44ek0yNzIgMzJIMTcxLjVsLTI1LjYgMTI4SDI3MlYzMnptMTg5LjMgNzIuMWMxOC4yIDE2LjMgMzUuNSAzMy43IDUxLjEgNTEuNSA1LjctNS42IDExLjQtMTEuMSAxNy4zLTE2LjNsMjEuMy0xOSAyMS4zIDE5YzEuMS45IDIuMSAyLjEgMy4xIDMuMS0uMS0uOC4yLTEuNSAwLTIuM2wtMjQtOTZDNTQ5LjcgMzcgNTQzLjMgMzIgNTM2IDMyaC05OC45bDEyLjMgNjEuNSAxMS45IDEwLjZ6TTE2IDE2MGg5Ny4zbDI1LjYtMTI4SDQwYy03LjMgMC0xMy43IDUtMTUuNSAxMi4xbC0yNCA5NkMtMiAxNTAuMiA1LjYgMTYwIDE2IDE2MHptMzI0LjYgMzJIMzJsNCAzMkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgyOGwyMCAxNjB2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnYtMTZoMjA4LjhjLTMwLjItMzMuNy00OC44LTc3LjktNDguOC0xMjYuNCAwLTM1LjkgMTkuOS04Mi45IDUyLjYtMTI5LjZ6bTIxMC41LTI4LjhjLTE0LjkgMTMuMy0yOC4zIDI3LjItNDAuMiA0MS4yLTE5LjUtMjUuOC00My42LTUyLTcxLTc2LjQtNzAuMiA2Mi43LTEyMCAxNDQuMy0xMjAgMTkzLjYgMCA4Ny41IDcxLjYgMTU4LjQgMTYwIDE1OC40czE2MC03MC45IDE2MC0xNTguNGMuMS0zNi42LTM3LTExMi4yLTg4LjgtMTU4LjR6bS0xOC42IDIyOS40Yy0xNC43IDEwLjctMzIuOSAxNy01Mi41IDE3LTQ5IDAtODguOS0zMy41LTg4LjktODggMC0yNy4xIDE2LjUtNTEgNDkuNC05MS45IDQuNyA1LjYgNjcuMSA4OC4xIDY3LjEgODguMWwzOS44LTQ3YzIuOCA0LjggNS40IDkuNSA3LjcgMTQgMTguNiAzNi43IDEwLjggODMuNi0yMi42IDEwNy44elwiXVxufTtcbnZhciBmYUR1bmdlb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZHVuZ2VvbicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjZkOVwiLCBcIk0xMjguNzMgMTk1LjMybC04Mi44MS01MS43NmMtOC4wNC01LjAyLTE4Ljk5LTIuMTctMjIuOTMgNi40NUEyNTQuMTkgMjU0LjE5IDAgMCAwIC41NCAyMzkuMjhDLS4wNSAyNDguMzcgNy41OSAyNTYgMTYuNjkgMjU2aDk3LjEzYzcuOTYgMCAxNC4wOC02LjI1IDE1LjAxLTE0LjE2IDEuMDktOS4zMyAzLjI0LTE4LjMzIDYuMjQtMjYuOTQgMi41Ni03LjM0LjI1LTE1LjQ2LTYuMzQtMTkuNTh6TTMxOS4wMyA4QzI5OC44NiAyLjgyIDI3Ny43NyAwIDI1NiAwcy00Mi44NiAyLjgyLTYzLjAzIDhjLTkuMTcgMi4zNS0xMy45MSAxMi42LTEwLjM5IDIxLjM5bDM3LjQ3IDEwNC4wM0ExNi4wMDMgMTYuMDAzIDAgMCAwIDIzNS4xIDE0NGg0MS44YzYuNzUgMCAxMi43Ny00LjIzIDE1LjA1LTEwLjU4bDM3LjQ3LTEwNC4wM2MzLjUyLTguNzktMS4yMi0xOS4wMy0xMC4zOS0yMS4zOXpNMTEyIDI4OEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoOTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTY0YzAtOC44NC03LjE2LTE2LTE2LTE2em0wIDEyOEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoOTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTY0YzAtOC44NC03LjE2LTE2LTE2LTE2em03Ny4zMS0yODMuNjdsLTM2LjMyLTkwLjhjLTMuNTMtOC44My0xNC4xMy0xMi45OS0yMi40Mi04LjMxYTI1Ny4zMDggMjU3LjMwOCAwIDAgMC03MS42MSA1OS44OWMtNi4wNiA3LjMyLTMuODUgMTguNDggNC4yMiAyMy41Mmw4Mi45MyA1MS44M2M2LjUxIDQuMDcgMTQuNjYgMi42MiAyMC4xMS0yLjc5IDUuMTgtNS4xNSAxMC43OS05Ljg1IDE2Ljc5LTE0LjA1IDYuMjgtNC40MSA5LjE1LTEyLjE3IDYuMy0xOS4yOXpNMzk4LjE4IDI1Nmg5Ny4xM2M5LjEgMCAxNi43NC03LjYzIDE2LjE1LTE2LjcyYTI1NC4xMzUgMjU0LjEzNSAwIDAgMC0yMi40NS04OS4yN2MtMy45NC04LjYyLTE0Ljg5LTExLjQ3LTIyLjkzLTYuNDVsLTgyLjgxIDUxLjc2Yy02LjU5IDQuMTItOC45IDEyLjI0LTYuMzQgMTkuNTggMy4wMSA4LjYxIDUuMTUgMTcuNjIgNi4yNCAyNi45NC45MyA3LjkxIDcuMDUgMTQuMTYgMTUuMDEgMTQuMTZ6bTU0Ljg1LTE2Mi44OWEyNTcuMzA4IDI1Ny4zMDggMCAwIDAtNzEuNjEtNTkuODljLTguMjgtNC42OC0xOC44OC0uNTItMjIuNDIgOC4zMWwtMzYuMzIgOTAuOGMtMi44NSA3LjEyLjAyIDE0Ljg4IDYuMyAxOS4yOCA2IDQuMiAxMS42MSA4LjkgMTYuNzkgMTQuMDUgNS40NCA1LjQxIDEzLjYgNi44NiAyMC4xMSAyLjc5bDgyLjkzLTUxLjgzYzguMDctNS4wMyAxMC4yOS0xNi4xOSA0LjIyLTIzLjUxek00OTYgMjg4aC05NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoOTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTY0YzAtOC44NC03LjE2LTE2LTE2LTE2em0wIDEyOGgtOTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDk2YzguODQgMCAxNi03LjE2IDE2LTE2di02NGMwLTguODQtNy4xNi0xNi0xNi0xNnpNMjQwIDE3Ny42MlY0NzJjMCA0LjQyIDMuNTggOCA4IDhoMTZjNC40MiAwIDgtMy41OCA4LThWMTc3LjYyYy01LjIzLS44OS0xMC41Mi0xLjYyLTE2LTEuNjJzLTEwLjc3LjczLTE2IDEuNjJ6bS02NCA0MS41MVY0NzJjMCA0LjQyIDMuNTggOCA4IDhoMTZjNC40MiAwIDgtMy41OCA4LThWMTg5LjM2Yy0xMi43OCA3LjQ1LTIzLjg0IDE3LjQ3LTMyIDI5Ljc3em0xMjgtMjkuNzdWNDcyYzAgNC40MiAzLjU4IDggOCA4aDE2YzQuNDIgMCA4LTMuNTggOC04VjIxOS4xM2MtOC4xNi0xMi4zLTE5LjIyLTIyLjMyLTMyLTI5Ljc3elwiXVxufTtcbnZhciBmYUVkaXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZWRpdCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjA0NFwiLCBcIk00MDIuNiA4My4ybDkwLjIgOTAuMmMzLjggMy44IDMuOCAxMCAwIDEzLjhMMjc0LjQgNDA1LjZsLTkyLjggMTAuM2MtMTIuNCAxLjQtMjIuOS05LjEtMjEuNS0yMS41bDEwLjMtOTIuOEwzODguOCA4My4yYzMuOC0zLjggMTAtMy44IDEzLjggMHptMTYyLTIyLjlsLTQ4LjgtNDguOGMtMTUuMi0xNS4yLTM5LjktMTUuMi01NS4yIDBsLTM1LjQgMzUuNGMtMy44IDMuOC0zLjggMTAgMCAxMy44bDkwLjIgOTAuMmMzLjggMy44IDEwIDMuOCAxMy44IDBsMzUuNC0zNS40YzE1LjItMTUuMyAxNS4yLTQwIDAtNTUuMnpNMzg0IDM0Ni4yVjQ0OEg2NFYxMjhoMjI5LjhjMy4yIDAgNi4yLTEuMyA4LjUtMy41bDQwLTQwYzcuNi03LjYgMi4yLTIwLjUtOC41LTIwLjVINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYzMDYuMmMwLTEwLjctMTIuOS0xNi0yMC41LTguNWwtNDAgNDBjLTIuMiAyLjMtMy41IDUuMy0zLjUgOC41elwiXVxufTtcbnZhciBmYUVnZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdlZ2cnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY3ZmJcIiwgXCJNMTkyIDBDODYgMCAwIDIxNCAwIDMyMHM4NiAxOTIgMTkyIDE5MiAxOTItODYgMTkyLTE5MlMyOTggMCAxOTIgMHpcIl1cbn07XG52YXIgZmFFamVjdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdlamVjdCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjA1MlwiLCBcIk00NDggMzg0djY0YzAgMTcuNjczLTE0LjMyNyAzMi0zMiAzMkgzMmMtMTcuNjczIDAtMzItMTQuMzI3LTMyLTMydi02NGMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJoMzg0YzE3LjY3MyAwIDMyIDE0LjMyNyAzMiAzMnpNNDguMDUzIDMyMGgzNTEuODg2YzQxLjY1MSAwIDYzLjU4MS00OS42NzQgMzUuMzgzLTgwLjQzNUwyNTkuMzgzIDQ3LjU1OGMtMTkuMDE0LTIwLjc0My01MS43NTEtMjAuNzQ0LTcwLjc2NyAwTDEyLjY3IDIzOS41NjVDLTE1LjQ3NSAyNzAuMjY4IDYuMzI0IDMyMCA0OC4wNTMgMzIwelwiXVxufTtcbnZhciBmYUVsbGlwc2lzSCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdlbGxpcHNpcy1oJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMTQxXCIsIFwiTTMyOCAyNTZjMCAzOS44LTMyLjIgNzItNzIgNzJzLTcyLTMyLjItNzItNzIgMzIuMi03MiA3Mi03MiA3MiAzMi4yIDcyIDcyem0xMDQtNzJjLTM5LjggMC03MiAzMi4yLTcyIDcyczMyLjIgNzIgNzIgNzIgNzItMzIuMiA3Mi03Mi0zMi4yLTcyLTcyLTcyem0tMzUyIDBjLTM5LjggMC03MiAzMi4yLTcyIDcyczMyLjIgNzIgNzIgNzIgNzItMzIuMiA3Mi03Mi0zMi4yLTcyLTcyLTcyelwiXVxufTtcbnZhciBmYUVsbGlwc2lzViA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdlbGxpcHNpcy12JyxcbiAgaWNvbjogWzE5MiwgNTEyLCBbXSwgXCJmMTQyXCIsIFwiTTk2IDE4NGMzOS44IDAgNzIgMzIuMiA3MiA3MnMtMzIuMiA3Mi03MiA3Mi03Mi0zMi4yLTcyLTcyIDMyLjItNzIgNzItNzJ6TTI0IDgwYzAgMzkuOCAzMi4yIDcyIDcyIDcyczcyLTMyLjIgNzItNzJTMTM1LjggOCA5NiA4IDI0IDQwLjIgMjQgODB6bTAgMzUyYzAgMzkuOCAzMi4yIDcyIDcyIDcyczcyLTMyLjIgNzItNzItMzIuMi03Mi03Mi03Mi03MiAzMi4yLTcyIDcyelwiXVxufTtcbnZhciBmYUVudmVsb3BlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2VudmVsb3BlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMGUwXCIsIFwiTTUwMi4zIDE5MC44YzMuOS0zLjEgOS43LS4yIDkuNyA0LjdWNDAwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxOTUuNmMwLTUgNS43LTcuOCA5LjctNC43IDIyLjQgMTcuNCA1Mi4xIDM5LjUgMTU0LjEgMTEzLjYgMjEuMSAxNS40IDU2LjcgNDcuOCA5Mi4yIDQ3LjYgMzUuNy4zIDcyLTMyLjggOTIuMy00Ny42IDEwMi03NC4xIDEzMS42LTk2LjMgMTU0LTExMy43ek0yNTYgMzIwYzIzLjIuNCA1Ni42LTI5LjIgNzMuNC00MS40IDEzMi43LTk2LjMgMTQyLjgtMTA0LjcgMTczLjQtMTI4LjcgNS44LTQuNSA5LjItMTEuNSA5LjItMTguOXYtMTljMC0yNi41LTIxLjUtNDgtNDgtNDhINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2MTljMCA3LjQgMy40IDE0LjMgOS4yIDE4LjkgMzAuNiAyMy45IDQwLjcgMzIuNCAxNzMuNCAxMjguNyAxNi44IDEyLjIgNTAuMiA0MS44IDczLjQgNDEuNHpcIl1cbn07XG52YXIgZmFFbnZlbG9wZU9wZW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZW52ZWxvcGUtb3BlbicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjJiNlwiLCBcIk01MTIgNDY0YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWMjAwLjcyNGE0OCA0OCAwIDAgMSAxOC4zODctMzcuNzc2YzI0LjkxMy0xOS41MjkgNDUuNTAxLTM1LjM2NSAxNjQuMi0xMjEuNTExQzE5OS40MTIgMjkuMTcgMjMyLjc5Ny0uMzQ3IDI1NiAuMDAzYzIzLjE5OC0uMzU0IDU2LjU5NiAyOS4xNzIgNzMuNDEzIDQxLjQzMyAxMTguNjg3IDg2LjEzNyAxMzkuMzAzIDEwMS45OTUgMTY0LjIgMTIxLjUxMkE0OCA0OCAwIDAgMSA1MTIgMjAwLjcyNFY0NjR6bS02NS42NjYtMTk2LjYwNWMtMi41NjMtMy43MjgtNy43LTQuNTk1LTExLjMzOS0xLjkwNy0yMi44NDUgMTYuODczLTU1LjQ2MiA0MC43MDUtMTA1LjU4MiA3Ny4wNzktMTYuODI1IDEyLjI2Ni01MC4yMSA0MS43ODEtNzMuNDEzIDQxLjQzLTIzLjIxMS4zNDQtNTYuNTU5LTI5LjE0My03My40MTMtNDEuNDMtNTAuMTE0LTM2LjM3LTgyLjczNC02MC4yMDQtMTA1LjU4Mi03Ny4wNzktMy42MzktMi42ODgtOC43NzYtMS44MjEtMTEuMzM5IDEuOTA3bC05LjA3MiAxMy4xOTZhNy45OTggNy45OTggMCAwIDAgMS44MzkgMTAuOTY3YzIyLjg4NyAxNi44OTkgNTUuNDU0IDQwLjY5IDEwNS4zMDMgNzYuODY4IDIwLjI3NCAxNC43ODEgNTYuNTI0IDQ3LjgxMyA5Mi4yNjQgNDcuNTczIDM1LjcyNC4yNDIgNzEuOTYxLTMyLjc3MSA5Mi4yNjMtNDcuNTczIDQ5Ljg1LTM2LjE3OSA4Mi40MTgtNTkuOTcgMTA1LjMwMy03Ni44NjhhNy45OTggNy45OTggMCAwIDAgMS44MzktMTAuOTY3bC05LjA3MS0xMy4xOTZ6XCJdXG59O1xudmFyIGZhRW52ZWxvcGVPcGVuVGV4dCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdlbnZlbG9wZS1vcGVuLXRleHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY2NThcIiwgXCJNMTc2IDIxNmgxNjBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE3NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZ6bS0xNiA4MGMwIDguODQgNy4xNiAxNiAxNiAxNmgxNjBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE3NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZ6bTk2IDEyMS4xM2MtMTYuNDIgMC0zMi44NC01LjA2LTQ2Ljg2LTE1LjE5TDAgMjUwLjg2VjQ2NGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjI1MC44NkwzMDIuODYgNDAxLjk0Yy0xNC4wMiAxMC4xMi0zMC40NCAxNS4xOS00Ni44NiAxNS4xOXptMjM3LjYxLTI1NC4xOGMtOC44NS02Ljk0LTE3LjI0LTEzLjQ3LTI5LjYxLTIyLjgxVjk2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDhoLTc3LjU1Yy0zLjA0LTIuMi01Ljg3LTQuMjYtOS4wNC02LjU2QzMxMi42IDI5LjE3IDI3OS4yLS4zNSAyNTYgMGMtMjMuMi0uMzUtNTYuNTkgMjkuMTctNzMuNDEgNDEuNDQtMy4xNyAyLjMtNiA0LjM2LTkuMDQgNi41Nkg5NmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHY0NC4xNGMtMTIuMzcgOS4zMy0yMC43NiAxNS44Ny0yOS42MSAyMi44MUE0Ny45OTUgNDcuOTk1IDAgMCAwIDAgMjAwLjcydjEwLjY1bDk2IDY5LjM1Vjk2aDMyMHYxODQuNzJsOTYtNjkuMzV2LTEwLjY1YzAtMTQuNzQtNi43OC0yOC42Ny0xOC4zOS0zNy43N3pcIl1cbn07XG52YXIgZmFFbnZlbG9wZVNxdWFyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdlbnZlbG9wZS1zcXVhcmUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxOTlcIiwgXCJNNDAwIDMySDQ4QzIxLjQ5IDMyIDAgNTMuNDkgMCA4MHYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzNTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OFY4MGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4ek0xNzguMTE3IDI2Mi4xMDRDODcuNDI5IDE5Ni4yODcgODguMzUzIDE5Ni4xMjEgNjQgMTc3LjE2N1YxNTJjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDI3MmMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2MjUuMTY3Yy0yNC4zNzEgMTguOTY5LTIzLjQzNCAxOS4xMjQtMTE0LjExNyA4NC45MzgtMTAuNSA3LjY1NS0zMS4zOTIgMjYuMTItNDUuODgzIDI1Ljg5NC0xNC41MDMuMjE4LTM1LjM2Ny0xOC4yMjctNDUuODgzLTI1Ljg5NXpNMzg0IDIxNy43NzVWMzYwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEg4OGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0VjIxNy43NzVjMTMuOTU4IDEwLjc5NCAzMy4zMjkgMjUuMjM2IDk1LjMwMyA3MC4yMTQgMTQuMTYyIDEwLjM0MSAzNy45NzUgMzIuMTQ1IDY0LjY5NCAzMi4wMSAyNi44ODcuMTM0IDUxLjAzNy0yMi4wNDEgNjQuNzItMzIuMDI1IDYxLjk1OC00NC45NjUgODEuMzI1LTU5LjQwNiA5NS4yODMtNzAuMTk5elwiXVxufTtcbnZhciBmYUVxdWFscyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdlcXVhbHMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1MmNcIiwgXCJNNDE2IDMwNEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDM4NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0wLTE5MkgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDM4NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwiXVxufTtcbnZhciBmYUVyYXNlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdlcmFzZXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxMmRcIiwgXCJNNDk3Ljk0MSAyNzMuOTQxYzE4Ljc0NS0xOC43NDUgMTguNzQ1LTQ5LjEzNyAwLTY3Ljg4MmwtMTYwLTE2MGMtMTguNzQ1LTE4Ljc0NS00OS4xMzYtMTguNzQ2LTY3Ljg4MyAwbC0yNTYgMjU2Yy0xOC43NDUgMTguNzQ1LTE4Ljc0NSA0OS4xMzcgMCA2Ny44ODJsOTYgOTZBNDguMDA0IDQ4LjAwNCAwIDAgMCAxNDQgNDgwaDM1NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDM1NS44ODNsMTQyLjA1OC0xNDIuMDU5em0tMzAyLjYyNy02Mi42MjdsMTM3LjM3MyAxMzcuMzczTDI2NS4zNzMgNDE2SDE1MC42MjhsLTgwLTgwIDEyNC42ODYtMTI0LjY4NnpcIl1cbn07XG52YXIgZmFFdGhlcm5ldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdldGhlcm5ldCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjc5NlwiLCBcIk00OTYgMTkyaC00OHYtNDhjMC04LjgtNy4yLTE2LTE2LTE2aC00OFY4MGMwLTguOC03LjItMTYtMTYtMTZIMTQ0Yy04LjggMC0xNiA3LjItMTYgMTZ2NDhIODBjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djIyNGMwIDguOCA3LjIgMTYgMTYgMTZoODBWMzIwaDMydjEyOGg2NFYzMjBoMzJ2MTI4aDY0VjMyMGgzMnYxMjhoNjRWMzIwaDMydjEyOGg4MGM4LjggMCAxNi03LjIgMTYtMTZWMjA4YzAtOC44LTcuMi0xNi0xNi0xNnpcIl1cbn07XG52YXIgZmFFdXJvU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdldXJvLXNpZ24nLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImYxNTNcIiwgXCJNMzEwLjcwNiA0MTMuNzY1Yy0xLjMxNC02LjYzLTcuODM1LTEwLjg3Mi0xNC40MjQtOS4zNjktMTAuNjkyIDIuNDM5LTI3LjQyMiA1LjQxMy00NS40MjYgNS40MTMtNTYuNzYzIDAtMTAxLjkyOS0zNC43OS0xMjEuNDYxLTg1LjQ0OWgxMTMuNjg5YTEyIDEyIDAgMCAwIDExLjcwOC05LjM2OWw2LjM3My0yOC4zNmMxLjY4Ni03LjUwMi00LjAxOS0xNC42MzEtMTEuNzA4LTE0LjYzMUgxMTUuMjJjLTEuMjEtMTQuMzI4LTEuNDE0LTI4LjI4Ny4xMzctNDIuMjQ1SDI2MS45NWExMiAxMiAwIDAgMCAxMS43MjMtOS40MzRsNi41MTItMjkuNzU1YzEuNjM4LTcuNDg0LTQuMDYxLTE0LjU2Ni0xMS43MjMtMTQuNTY2SDEzMC4xODRjMjAuNjMzLTQ0Ljk5MSA2Mi42OS03NS4wMyAxMTcuNjE5LTc1LjAzIDE0LjQ4NiAwIDI4LjU2NCAyLjI1IDM3Ljg1MSA0LjE0NSA2LjIxNiAxLjI2OCAxMi4zNDctMi40OTggMTQuMDAyLTguNjIzbDExLjk5MS00NC4zNjhjMS44MjItNi43NDEtMi40NjUtMTMuNjE2LTkuMzI2LTE0LjkxN0MyOTAuMjE3IDM0LjkxMiAyNzAuNzEgMzIgMjQ5LjYzNSAzMiAxNTIuNDUxIDMyIDc0LjAzIDkyLjI1MiA0NS4wNzUgMTc2SDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI5Ljc1NWMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDIxLjU2OWMtMS4wMDkgMTMuNjA3LTEuMTgxIDI5LjI4Ny0uMTgxIDQyLjI0NUgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOC4zNmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDMwLjExNEM2Ny4xMzkgNDE0LjY5MiAxNDUuMjY0IDQ4MCAyNDkuNjM1IDQ4MGMyNi4zMDEgMCA0OC41NjItNC41NDQgNjEuMTAxLTcuNzg4IDYuMTY3LTEuNTk1IDEwLjAyNy03LjcwOCA4Ljc4OC0xMy45NTdsLTguODE4LTQ0LjQ5elwiXVxufTtcbnZhciBmYUV4Y2hhbmdlQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2V4Y2hhbmdlLWFsdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjM2MlwiLCBcIk0wIDE2OHYtMTZjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDM2MFY4MGMwLTIxLjM2NyAyNS44OTktMzIuMDQyIDQwLjk3MS0xNi45NzFsODAgODBjOS4zNzIgOS4zNzMgOS4zNzIgMjQuNTY5IDAgMzMuOTQxbC04MCA4MEM0MDkuOTU2IDI3MS45ODIgMzg0IDI2MS40NTYgMzg0IDI0MHYtNDhIMjRjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNHptNDg4IDE1MkgxMjh2LTQ4YzAtMjEuMzE0LTI1Ljg2Mi0zMi4wOC00MC45NzEtMTYuOTcxbC04MCA4MGMtOS4zNzIgOS4zNzMtOS4zNzIgMjQuNTY5IDAgMzMuOTQxbDgwIDgwQzEwMi4wNTcgNDYzLjk5NyAxMjggNDUzLjQzNyAxMjggNDMydi00OGgzNjBjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6XCJdXG59O1xudmFyIGZhRXhjbGFtYXRpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZXhjbGFtYXRpb24nLFxuICBpY29uOiBbMTkyLCA1MTIsIFtdLCBcImYxMmFcIiwgXCJNMTc2IDQzMmMwIDQ0LjExMi0zNS44ODggODAtODAgODBzLTgwLTM1Ljg4OC04MC04MCAzNS44ODgtODAgODAtODAgODAgMzUuODg4IDgwIDgwek0yNS4yNiAyNS4xOTlsMTMuNiAyNzJDMzkuNDk5IDMwOS45NzIgNTAuMDQxIDMyMCA2Mi44MyAzMjBoNjYuMzRjMTIuNzg5IDAgMjMuMzMxLTEwLjAyOCAyMy45Ny0yMi44MDFsMTMuNi0yNzJDMTY3LjQyNSAxMS40OSAxNTYuNDk2IDAgMTQyLjc3IDBINDkuMjNDMzUuNTA0IDAgMjQuNTc1IDExLjQ5IDI1LjI2IDI1LjE5OXpcIl1cbn07XG52YXIgZmFFeGNsYW1hdGlvbkNpcmNsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdleGNsYW1hdGlvbi1jaXJjbGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwNmFcIiwgXCJNNTA0IDI1NmMwIDEzNi45OTctMTExLjA0MyAyNDgtMjQ4IDI0OFM4IDM5Mi45OTcgOCAyNTZDOCAxMTkuMDgzIDExOS4wNDMgOCAyNTYgOHMyNDggMTExLjA4MyAyNDggMjQ4em0tMjQ4IDUwYy0yNS40MDUgMC00NiAyMC41OTUtNDYgNDZzMjAuNTk1IDQ2IDQ2IDQ2IDQ2LTIwLjU5NSA0Ni00Ni0yMC41OTUtNDYtNDYtNDZ6bS00My42NzMtMTY1LjM0Nmw3LjQxOCAxMzZjLjM0NyA2LjM2NCA1LjYwOSAxMS4zNDYgMTEuOTgyIDExLjM0Nmg0OC41NDZjNi4zNzMgMCAxMS42MzUtNC45ODIgMTEuOTgyLTExLjM0Nmw3LjQxOC0xMzZjLjM3NS02Ljg3NC01LjA5OC0xMi42NTQtMTEuOTgyLTEyLjY1NGgtNjMuMzgzYy02Ljg4NCAwLTEyLjM1NiA1Ljc4LTExLjk4MSAxMi42NTR6XCJdXG59O1xudmFyIGZhRXhjbGFtYXRpb25UcmlhbmdsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdleGNsYW1hdGlvbi10cmlhbmdsZScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjA3MVwiLCBcIk01NjkuNTE3IDQ0MC4wMTNDNTg3Ljk3NSA0NzIuMDA3IDU2NC44MDYgNTEyIDUyNy45NCA1MTJINDguMDU0Yy0zNi45MzcgMC01OS45OTktNDAuMDU1LTQxLjU3Ny03MS45ODdMMjQ2LjQyMyAyMy45ODVjMTguNDY3LTMyLjAwOSA2NC43Mi0zMS45NTEgODMuMTU0IDBsMjM5Ljk0IDQxNi4wMjh6TTI4OCAzNTRjLTI1LjQwNSAwLTQ2IDIwLjU5NS00NiA0NnMyMC41OTUgNDYgNDYgNDYgNDYtMjAuNTk1IDQ2LTQ2LTIwLjU5NS00Ni00Ni00NnptLTQzLjY3My0xNjUuMzQ2bDcuNDE4IDEzNmMuMzQ3IDYuMzY0IDUuNjA5IDExLjM0NiAxMS45ODIgMTEuMzQ2aDQ4LjU0NmM2LjM3MyAwIDExLjYzNS00Ljk4MiAxMS45ODItMTEuMzQ2bDcuNDE4LTEzNmMuMzc1LTYuODc0LTUuMDk4LTEyLjY1NC0xMS45ODItMTIuNjU0aC02My4zODNjLTYuODg0IDAtMTIuMzU2IDUuNzgtMTEuOTgxIDEyLjY1NHpcIl1cbn07XG52YXIgZmFFeHBhbmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZXhwYW5kJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDY1XCIsIFwiTTAgMTgwVjU2YzAtMTMuMyAxMC43LTI0IDI0LTI0aDEyNGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEySDY0djg0YzAgNi42LTUuNCAxMi0xMiAxMkgxMmMtNi42IDAtMTItNS40LTEyLTEyek0yODggNDR2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDg0djg0YzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJWNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRIMzAwYy02LjYgMC0xMiA1LjQtMTIgMTJ6bTE0OCAyNzZoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2ODRoLTg0Yy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDEyNGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYzMzJjMC02LjYtNS40LTEyLTEyLTEyek0xNjAgNDY4di00MGMwLTYuNi01LjQtMTItMTItMTJINjR2LTg0YzAtNi42LTUuNC0xMi0xMi0xMkgxMmMtNi42IDAtMTIgNS40LTEyIDEydjEyNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMjRjNi42IDAgMTItNS40IDEyLTEyelwiXVxufTtcbnZhciBmYUV4cGFuZEFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdleHBhbmQtYWx0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNDI0XCIsIFwiTTIxMi42ODYgMzE1LjMxNEwxMjAgNDA4bDMyLjkyMiAzMS4wMjljMTUuMTIgMTUuMTIgNC40MTIgNDAuOTcxLTE2Ljk3IDQwLjk3MWgtMTEyQzEwLjY5NyA0ODAgMCA0NjkuMjU1IDAgNDU2VjM0NGMwLTIxLjM4MiAyNS44MDMtMzIuMDkgNDAuOTIyLTE2Ljk3MUw3MiAzNjBsOTIuNjg2LTkyLjY4NmM2LjI0OC02LjI0OCAxNi4zNzktNi4yNDggMjIuNjI3IDBsMjUuMzczIDI1LjM3M2M2LjI0OSA2LjI0OCA2LjI0OSAxNi4zNzggMCAyMi42Mjd6bTIyLjYyOC0xMTguNjI4TDMyOCAxMDRsLTMyLjkyMi0zMS4wMjlDMjc5Ljk1OCA1Ny44NTEgMjkwLjY2NiAzMiAzMTIuMDQ4IDMyaDExMkM0MzcuMzAzIDMyIDQ0OCA0Mi43NDUgNDQ4IDU2djExMmMwIDIxLjM4Mi0yNS44MDMgMzIuMDktNDAuOTIyIDE2Ljk3MUwzNzYgMTUybC05Mi42ODYgOTIuNjg2Yy02LjI0OCA2LjI0OC0xNi4zNzkgNi4yNDgtMjIuNjI3IDBsLTI1LjM3My0yNS4zNzNjLTYuMjQ5LTYuMjQ4LTYuMjQ5LTE2LjM3OCAwLTIyLjYyN3pcIl1cbn07XG52YXIgZmFFeHBhbmRBcnJvd3NBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZXhwYW5kLWFycm93cy1hbHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYzMWVcIiwgXCJNNDQ4IDM0NHYxMTJhMjMuOTQgMjMuOTQgMCAwIDEtMjQgMjRIMzEyYy0yMS4zOSAwLTMyLjA5LTI1LjktMTctNDFsMzYuMi0zNi4yTDIyNCAyOTUuNiAxMTYuNzcgNDAyLjkgMTUzIDQzOWMxNS4wOSAxNS4xIDQuMzkgNDEtMTcgNDFIMjRhMjMuOTQgMjMuOTQgMCAwIDEtMjQtMjRWMzQ0YzAtMjEuNCAyNS44OS0zMi4xIDQxLTE3bDM2LjE5IDM2LjJMMTg0LjQ2IDI1NiA3Ny4xOCAxNDguNyA0MSAxODVjLTE1LjEgMTUuMS00MSA0LjQtNDEtMTdWNTZhMjMuOTQgMjMuOTQgMCAwIDEgMjQtMjRoMTEyYzIxLjM5IDAgMzIuMDkgMjUuOSAxNyA0MWwtMzYuMiAzNi4yTDIyNCAyMTYuNGwxMDcuMjMtMTA3LjNMMjk1IDczYy0xNS4wOS0xNS4xLTQuMzktNDEgMTctNDFoMTEyYTIzLjk0IDIzLjk0IDAgMCAxIDI0IDI0djExMmMwIDIxLjQtMjUuODkgMzIuMS00MSAxN2wtMzYuMTktMzYuMkwyNjMuNTQgMjU2bDEwNy4yOCAxMDcuM0w0MDcgMzI3LjFjMTUuMS0xNS4yIDQxLTQuNSA0MSAxNi45elwiXVxufTtcbnZhciBmYUV4dGVybmFsTGlua0FsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdleHRlcm5hbC1saW5rLWFsdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjM1ZFwiLCBcIk00MzIsMzIwSDQwMGExNiwxNiwwLDAsMC0xNiwxNlY0NDhINjRWMTI4SDIwOGExNiwxNiwwLDAsMCwxNi0xNlY4MGExNiwxNiwwLDAsMC0xNi0xNkg0OEE0OCw0OCwwLDAsMCwwLDExMlY0NjRhNDgsNDgsMCwwLDAsNDgsNDhINDAwYTQ4LDQ4LDAsMCwwLDQ4LTQ4VjMzNkExNiwxNiwwLDAsMCw0MzIsMzIwWk00ODgsMGgtMTI4Yy0yMS4zNywwLTMyLjA1LDI1LjkxLTE3LDQxbDM1LjczLDM1LjczTDEzNSwzMjAuMzdhMjQsMjQsMCwwLDAsMCwzNEwxNTcuNjcsMzc3YTI0LDI0LDAsMCwwLDM0LDBMNDM1LjI4LDEzMy4zMiw0NzEsMTY5YzE1LDE1LDQxLDQuNSw0MS0xN1YyNEEyNCwyNCwwLDAsMCw0ODgsMFpcIl1cbn07XG52YXIgZmFFeHRlcm5hbExpbmtTcXVhcmVBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZXh0ZXJuYWwtbGluay1zcXVhcmUtYWx0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMzYwXCIsIFwiTTQ0OCA4MHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDM1MmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4em0tODggMTZIMjQ4LjAyOWMtMjEuMzEzIDAtMzIuMDggMjUuODYxLTE2Ljk3MSA0MC45NzFsMzEuOTg0IDMxLjk4N0w2Ny41MTUgMzY0LjQ4NWMtNC42ODYgNC42ODYtNC42ODYgMTIuMjg0IDAgMTYuOTcxbDMxLjAyOSAzMS4wMjljNC42ODcgNC42ODYgMTIuMjg1IDQuNjg2IDE2Ljk3MSAwbDE5NS41MjYtMTk1LjUyNiAzMS45ODggMzEuOTkxQzM1OC4wNTggMjYzLjk3NyAzODQgMjUzLjQyNSAzODQgMjMxLjk3OVYxMjBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0elwiXVxufTtcbnZhciBmYUV5ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdleWUnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYwNmVcIiwgXCJNNTcyLjUyIDI0MS40QzUxOC4yOSAxMzUuNTkgNDEwLjkzIDY0IDI4OCA2NFM1Ny42OCAxMzUuNjQgMy40OCAyNDEuNDFhMzIuMzUgMzIuMzUgMCAwIDAgMCAyOS4xOUM1Ny43MSAzNzYuNDEgMTY1LjA3IDQ0OCAyODggNDQ4czIzMC4zMi03MS42NCAyODQuNTItMTc3LjQxYTMyLjM1IDMyLjM1IDAgMCAwIDAtMjkuMTl6TTI4OCA0MDBhMTQ0IDE0NCAwIDEgMSAxNDQtMTQ0IDE0My45MyAxNDMuOTMgMCAwIDEtMTQ0IDE0NHptMC0yNDBhOTUuMzEgOTUuMzEgMCAwIDAtMjUuMzEgMy43OSA0Ny44NSA0Ny44NSAwIDAgMS02Ni45IDY2LjlBOTUuNzggOTUuNzggMCAxIDAgMjg4IDE2MHpcIl1cbn07XG52YXIgZmFFeWVEcm9wcGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2V5ZS1kcm9wcGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMWZiXCIsIFwiTTUwLjc1IDMzMy4yNWMtMTIgMTItMTguNzUgMjguMjgtMTguNzUgNDUuMjZWNDI0TDAgNDgwbDMyIDMyIDU2LTMyaDQ1LjQ5YzE2Ljk3IDAgMzMuMjUtNi43NCA0NS4yNS0xOC43NGwxMjYuNjQtMTI2LjYyLTEyOC0xMjhMNTAuNzUgMzMzLjI1ek00ODMuODggMjguMTJjLTM3LjQ3LTM3LjUtOTguMjgtMzcuNS0xMzUuNzUgMGwtNzcuMDkgNzcuMDktMTMuMS0xMy4xYy05LjQ0LTkuNDQtMjQuNjUtOS4zMS0zMy45NCAwbC00MC45NyA0MC45N2MtOS4zNyA5LjM3LTkuMzcgMjQuNTcgMCAzMy45NGwxNjEuOTQgMTYxLjk0YzkuNDQgOS40NCAyNC42NSA5LjMxIDMzLjk0IDBMNDE5Ljg4IDI4OGM5LjM3LTkuMzcgOS4zNy0yNC41NyAwLTMzLjk0bC0xMy4xLTEzLjEgNzcuMDktNzcuMDljMzcuNTEtMzcuNDggMzcuNTEtOTguMjYuMDEtMTM1Ljc1elwiXVxufTtcbnZhciBmYUV5ZVNsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2V5ZS1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjA3MFwiLCBcIk0zMjAgNDAwYy03NS44NSAwLTEzNy4yNS01OC43MS0xNDIuOS0xMzMuMTFMNzIuMiAxODUuODJjLTEzLjc5IDE3LjMtMjYuNDggMzUuNTktMzYuNzIgNTUuNTlhMzIuMzUgMzIuMzUgMCAwIDAgMCAyOS4xOUM4OS43MSAzNzYuNDEgMTk3LjA3IDQ0OCAzMjAgNDQ4YzI2LjkxIDAgNTIuODctNCA3Ny44OS0xMC40NkwzNDYgMzk3LjM5YTE0NC4xMyAxNDQuMTMgMCAwIDEtMjYgMi42MXptMzEzLjgyIDU4LjFsLTExMC41NS04NS40NGEzMzEuMjUgMzMxLjI1IDAgMCAwIDgxLjI1LTEwMi4wNyAzMi4zNSAzMi4zNSAwIDAgMCAwLTI5LjE5QzU1MC4yOSAxMzUuNTkgNDQyLjkzIDY0IDMyMCA2NGEzMDguMTUgMzA4LjE1IDAgMCAwLTE0Ny4zMiAzNy43TDQ1LjQ2IDMuMzdBMTYgMTYgMCAwIDAgMjMgNi4xOEwzLjM3IDMxLjQ1QTE2IDE2IDAgMCAwIDYuMTggNTMuOWw1ODguMzYgNDU0LjczYTE2IDE2IDAgMCAwIDIyLjQ2LTIuODFsMTkuNjQtMjUuMjdhMTYgMTYgMCAwIDAtMi44Mi0yMi40NXptLTE4My43Mi0xNDJsLTM5LjMtMzAuMzhBOTQuNzUgOTQuNzUgMCAwIDAgNDE2IDI1NmE5NC43NiA5NC43NiAwIDAgMC0xMjEuMzEtOTIuMjFBNDcuNjUgNDcuNjUgMCAwIDEgMzA0IDE5MmE0Ni42NCA0Ni42NCAwIDAgMS0xLjU0IDEwbC03My42MS01Ni44OUExNDIuMzEgMTQyLjMxIDAgMCAxIDMyMCAxMTJhMTQzLjkyIDE0My45MiAwIDAgMSAxNDQgMTQ0YzAgMjEuNjMtNS4yOSA0MS43OS0xMy45IDYwLjExelwiXVxufTtcbnZhciBmYUZhbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYW4nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY4NjNcIiwgXCJNMzUyLjU3IDEyOGMtMjguMDkgMC01NC4wOSA0LjUyLTc3LjA2IDEyLjg2bDEyLjQxLTEyMy4xMUMyODkgNy4zMSAyNzkuODEtMS4xOCAyNjkuMzMuMTMgMTg5LjYzIDEwLjEzIDEyOCA3Ny42NCAxMjggMTU5LjQzYzAgMjguMDkgNC41MiA1NC4wOSAxMi44NiA3Ny4wNkwxNy43NSAyMjQuMDhDNy4zMSAyMjMtMS4xOCAyMzIuMTkuMTMgMjQyLjY3YzEwIDc5LjcgNzcuNTEgMTQxLjMzIDE1OS4zIDE0MS4zMyAyOC4wOSAwIDU0LjA5LTQuNTIgNzcuMDYtMTIuODZsLTEyLjQxIDEyMy4xMWMtMS4wNSAxMC40MyA4LjExIDE4LjkzIDE4LjU5IDE3LjYyIDc5LjctMTAgMTQxLjMzLTc3LjUxIDE0MS4zMy0xNTkuMyAwLTI4LjA5LTQuNTItNTQuMDktMTIuODYtNzcuMDZsMTIzLjExIDEyLjQxYzEwLjQ0IDEuMDUgMTguOTMtOC4xMSAxNy42Mi0xOC41OS0xMC03OS43LTc3LjUxLTE0MS4zMy0xNTkuMy0xNDEuMzN6TTI1NiAyODhhMzIgMzIgMCAxIDEgMzItMzIgMzIgMzIgMCAwIDEtMzIgMzJ6XCJdXG59O1xudmFyIGZhRmFzdEJhY2t3YXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Zhc3QtYmFja3dhcmQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwNDlcIiwgXCJNMCA0MzZWNzZjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnYxNTEuOUwyMzUuNSA3MS40QzI1Ni4xIDU0LjMgMjg4IDY4LjYgMjg4IDk2djEzMS45TDQ1OS41IDcxLjRDNDgwLjEgNTQuMyA1MTIgNjguNiA1MTIgOTZ2MzIwYzAgMjcuNC0zMS45IDQxLjctNTIuNSAyNC42TDI4OCAyODUuM1Y0MTZjMCAyNy40LTMxLjkgNDEuNy01Mi41IDI0LjZMNjQgMjg1LjNWNDM2YzAgNi42LTUuNCAxMi0xMiAxMkgxMmMtNi42IDAtMTItNS40LTEyLTEyelwiXVxufTtcbnZhciBmYUZhc3RGb3J3YXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Zhc3QtZm9yd2FyZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjA1MFwiLCBcIk01MTIgNzZ2MzYwYzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMlYyODQuMUwyNzYuNSA0NDAuNmMtMjAuNiAxNy4yLTUyLjUgMi44LTUyLjUtMjQuNlYyODQuMUw1Mi41IDQ0MC42QzMxLjkgNDU3LjggMCA0NDMuNCAwIDQxNlY5NmMwLTI3LjQgMzEuOS00MS43IDUyLjUtMjQuNkwyMjQgMjI2LjhWOTZjMC0yNy40IDMxLjktNDEuNyA1Mi41LTI0LjZMNDQ4IDIyNi44Vjc2YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ6XCJdXG59O1xudmFyIGZhRmF1Y2V0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhdWNldCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTAwNVwiLCBcIk0zNTIsMjU2SDMxMy4zOWMtMTUuNzEtMTMuNDQtMzUuNDYtMjMuMDctNTcuMzktMjhWMTgwLjQ0bC0zMi0zLjM4LTMyLDMuMzhWMjI4Yy0yMS45Myw1LTQxLjY4LDE0LjYtNTcuMzksMjhIMTZBMTYsMTYsMCwwLDAsMCwyNzJ2OTZhMTYsMTYsMCwwLDAsMTYsMTZoOTIuNzlDMTI5LjM4LDQyMS43MywxNzMsNDQ4LDIyNCw0NDhzOTQuNjItMjYuMjcsMTE1LjIxLTY0SDM1MmEzMiwzMiwwLDAsMSwzMiwzMiwzMiwzMiwwLDAsMCwzMiwzMmg2NGEzMiwzMiwwLDAsMCwzMi0zMkExNjAsMTYwLDAsMCwwLDM1MiwyNTZaTTgxLjU5LDE1OS45MWwxNDIuNDEtMTUsMTQyLjQxLDE1YzkuNDIsMSwxNy41OS02LjgxLDE3LjU5LTE2LjhWMTEyLjg5YzAtMTAtOC4xNy0xNy44LTE3LjU5LTE2LjgxTDI1NiwxMDcuNzRWODBhMTYsMTYsMCwwLDAtMTYtMTZIMjA4YTE2LDE2LDAsMCwwLTE2LDE2djI3Ljc0TDgxLjU5LDk2LjA4QzcyLjE3LDk1LjA5LDY0LDEwMi45LDY0LDExMi44OXYzMC4yMkM2NCwxNTMuMSw3Mi4xNywxNjAuOTEsODEuNTksMTU5LjkxWlwiXVxufTtcbnZhciBmYUZheCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYXgnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxYWNcIiwgXCJNNDgwIDE2MFY3Ny4yNWEzMiAzMiAwIDAgMC05LjM4LTIyLjYzTDQyNS4zNyA5LjM3QTMyIDMyIDAgMCAwIDQwMi43NSAwSDE2MGEzMiAzMiAwIDAgMC0zMiAzMnY0NDhhMzIgMzIgMCAwIDAgMzIgMzJoMzIwYTMyIDMyIDAgMCAwIDMyLTMyVjE5MmEzMiAzMiAwIDAgMC0zMi0zMnpNMjg4IDQzMmExNiAxNiAwIDAgMS0xNiAxNmgtMzJhMTYgMTYgMCAwIDEtMTYtMTZ2LTMyYTE2IDE2IDAgMCAxIDE2LTE2aDMyYTE2IDE2IDAgMCAxIDE2IDE2em0wLTEyOGExNiAxNiAwIDAgMS0xNiAxNmgtMzJhMTYgMTYgMCAwIDEtMTYtMTZ2LTMyYTE2IDE2IDAgMCAxIDE2LTE2aDMyYTE2IDE2IDAgMCAxIDE2IDE2em0xMjggMTI4YTE2IDE2IDAgMCAxLTE2IDE2aC0zMmExNiAxNiAwIDAgMS0xNi0xNnYtMzJhMTYgMTYgMCAwIDEgMTYtMTZoMzJhMTYgMTYgMCAwIDEgMTYgMTZ6bTAtMTI4YTE2IDE2IDAgMCAxLTE2IDE2aC0zMmExNiAxNiAwIDAgMS0xNi0xNnYtMzJhMTYgMTYgMCAwIDEgMTYtMTZoMzJhMTYgMTYgMCAwIDEgMTYgMTZ6bTAtMTEySDE5MlY2NGgxNjB2NDhhMTYgMTYgMCAwIDAgMTYgMTZoNDh6TTY0IDEyOEgzMmEzMiAzMiAwIDAgMC0zMiAzMnYzMjBhMzIgMzIgMCAwIDAgMzIgMzJoMzJhMzIgMzIgMCAwIDAgMzItMzJWMTYwYTMyIDMyIDAgMCAwLTMyLTMyelwiXVxufTtcbnZhciBmYUZlYXRoZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmVhdGhlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjUyZFwiLCBcIk00NjcuMTQgNDQuODRjLTYyLjU1LTYyLjQ4LTE2MS42Ny02NC43OC0yNTIuMjggMjUuNzMtNzguNjEgNzguNTItNjAuOTggNjAuOTItODUuNzUgODUuNjYtNjAuNDYgNjAuMzktNzAuMzkgMTUwLjgzLTYzLjY0IDIxMS4xN2wxNzguNDQtMTc4LjI1YzYuMjYtNi4yNSAxNi40LTYuMjUgMjIuNjUgMHM2LjI1IDE2LjM4IDAgMjIuNjNMNy4wNCA0NzEuMDNjLTkuMzggOS4zNy05LjM4IDI0LjU3IDAgMzMuOTQgOS4zOCA5LjM3IDI0LjYgOS4zNyAzMy45OCAwbDY2LjEtNjYuMDNDMTU5LjQyIDQ1NC42NSAyNzkgNDU3LjExIDM1My45NSAzODRoLTk4LjE5bDE0Ny41Ny00OS4xNGM0OS45OS00OS45MyAzNi4zOC0zNi4xOCA0Ni4zMS00Ni44NmgtOTcuNzhsMTMxLjU0LTQzLjhjNDUuNDQtNzQuNDYgMzQuMzEtMTQ4Ljg0LTE2LjI2LTE5OS4zNnpcIl1cbn07XG52YXIgZmFGZWF0aGVyQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZlYXRoZXItYWx0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNTZiXCIsIFwiTTUxMiAwQzQ2MC4yMiAzLjU2IDk2LjQ0IDM4LjIgNzEuMDEgMjg3LjYxYy0zLjA5IDI2LjY2LTQuODQgNTMuNDQtNS45OSA4MC4yNGwxNzguODctMTc4LjY5YzYuMjUtNi4yNSAxNi40LTYuMjUgMjIuNjUgMHM2LjI1IDE2LjM4IDAgMjIuNjNMNy4wNCA0NzEuMDNjLTkuMzggOS4zNy05LjM4IDI0LjU3IDAgMzMuOTQgOS4zOCA5LjM3IDI0LjU5IDkuMzcgMzMuOTggMGw1Ny4xMy01Ny4wN2M0Mi4wOS0uMTQgODQuMTUtMi41MyAxMjUuOTYtNy4zNiA1My40OC01LjQ0IDk3LjAyLTI2LjQ3IDEzMi41OC01Ni41NEgyNTUuNzRsMTQ2Ljc5LTQ4Ljg4YzExLjI1LTE0Ljg5IDIxLjM3LTMwLjcxIDMwLjQ1LTQ3LjEyaC04MS4xNGwxMDYuNTQtNTMuMjFDNTAwLjI5IDEzMi44NiA1MTAuMTkgMjYuMjYgNTEyIDB6XCJdXG59O1xudmFyIGZhRmVtYWxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZlbWFsZScsXG4gIGljb246IFsyNTYsIDUxMiwgW10sIFwiZjE4MlwiLCBcIk0xMjggMGMzNS4zNDYgMCA2NCAyOC42NTQgNjQgNjRzLTI4LjY1NCA2NC02NCA2NGMtMzUuMzQ2IDAtNjQtMjguNjU0LTY0LTY0UzkyLjY1NCAwIDEyOCAwbTExOS4yODMgMzU0LjE3OWwtNDgtMTkyQTI0IDI0IDAgMCAwIDE3NiAxNDRoLTExLjM2Yy0yMi43MTEgMTAuNDQzLTQ5LjU5IDEwLjg5NC03My4yOCAwSDgwYTI0IDI0IDAgMCAwLTIzLjI4MyAxOC4xNzlsLTQ4IDE5MkM0LjkzNSAzNjkuMzA1IDE2LjM4MyAzODQgMzIgMzg0aDU2djEwNGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzJjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjM4NGg1NmMxNS41OTEgMCAyNy4wNzEtMTQuNjcxIDIzLjI4My0yOS44MjF6XCJdXG59O1xudmFyIGZhRmlnaHRlckpldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWdodGVyLWpldCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjBmYlwiLCBcIk01NDQgMjI0bC0xMjgtMTYtNDgtMTZoLTI0TDIyNy4xNTggNDRoMzkuNTA5QzI3OC4zMzMgNDQgMjg4IDQxLjM3NSAyODggMzhzLTkuNjY3LTYtMjEuMzMzLTZIMTUydjEyaDE2djE2NGgtNDhsLTY2LjY2Ny04MEgxOC42NjdMOCAxMzguNjY3VjIwOGg4djE2aDQ4djIuNjY2bC02NCA4djQyLjY2N2w2NCA4VjI4OEgxNnYxNkg4djY5LjMzM0wxOC42NjcgMzg0aDM0LjY2N0wxMjAgMzA0aDQ4djE2NGgtMTZ2MTJoMTE0LjY2N2MxMS42NjcgMCAyMS4zMzMtMi42MjUgMjEuMzMzLTZzLTkuNjY3LTYtMjEuMzMzLTZoLTM5LjUwOUwzNDQgMzIwaDI0bDQ4LTE2IDEyOC0xNmM5Ni0yMS4zMzMgOTYtMjYuNTgzIDk2LTMyIDAtNS40MTcgMC0xMC42NjctOTYtMzJ6XCJdXG59O1xudmFyIGZhRmlsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxlJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmMTViXCIsIFwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptMTYwLTE0LjF2Ni4xSDI1NlYwaDYuMWM2LjQgMCAxMi41IDIuNSAxNyA3bDk3LjkgOThjNC41IDQuNSA3IDEwLjYgNyAxNi45elwiXVxufTtcbnZhciBmYUZpbGVBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1hbHQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYxNWNcIiwgXCJNMjI0IDEzNlYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em02NCAyMzZjMCA2LjYtNS40IDEyLTEyIDEySDEwOGMtNi42IDAtMTItNS40LTEyLTEydi04YzAtNi42IDUuNC0xMiAxMi0xMmgxNjhjNi42IDAgMTIgNS40IDEyIDEydjh6bTAtNjRjMCA2LjYtNS40IDEyLTEyIDEySDEwOGMtNi42IDAtMTItNS40LTEyLTEydi04YzAtNi42IDUuNC0xMiAxMi0xMmgxNjhjNi42IDAgMTIgNS40IDEyIDEydjh6bTAtNzJ2OGMwIDYuNi01LjQgMTItMTIgMTJIMTA4Yy02LjYgMC0xMi01LjQtMTItMTJ2LThjMC02LjYgNS40LTEyIDEyLTEyaDE2OGM2LjYgMCAxMiA1LjQgMTIgMTJ6bTk2LTExNC4xdjYuMUgyNTZWMGg2LjFjNi40IDAgMTIuNSAyLjUgMTcgN2w5Ny45IDk4YzQuNSA0LjUgNyAxMC42IDcgMTYuOXpcIl1cbn07XG52YXIgZmFGaWxlQXJjaGl2ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxlLWFyY2hpdmUnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYxYzZcIiwgXCJNMzc3IDEwNUwyNzkuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDI1NnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45ek0xMjguNCAzMzZjLTE3LjkgMC0zMi40IDEyLjEtMzIuNCAyNyAwIDE1IDE0LjYgMjcgMzIuNSAyN3MzMi40LTEyLjEgMzIuNC0yNy0xNC42LTI3LTMyLjUtMjd6TTIyNCAxMzZWMGgtNjMuNnYzMmgtMzJWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHpNOTUuOSAzMmgzMnYzMmgtMzJ6bTMyLjMgMzg0Yy0zMy4yIDAtNTgtMzAuNC01MS40LTYyLjlMOTYuNCAyNTZ2LTMyaDMydi0zMmgtMzJ2LTMyaDMydi0zMmgtMzJWOTZoMzJWNjRoMzJ2MzJoLTMydjMyaDMydjMyaC0zMnYzMmgzMnYzMmgtMzJ2MzJoMjIuMWM1LjcgMCAxMC43IDQuMSAxMS44IDkuN2wxNy4zIDg3LjdjNi40IDMyLjQtMTguNCA2Mi42LTUxLjQgNjIuNnpcIl1cbn07XG52YXIgZmFGaWxlQXVkaW8gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1hdWRpbycsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjFjN1wiLCBcIk0yMjQgMTM2VjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bS02NCAyNjhjMCAxMC43LTEyLjkgMTYtMjAuNSA4LjVMMTA0IDM3Nkg3NmMtNi42IDAtMTItNS40LTEyLTEydi01NmMwLTYuNiA1LjQtMTIgMTItMTJoMjhsMzUuNS0zNi41YzcuNi03LjYgMjAuNS0yLjIgMjAuNSA4LjV2MTM2em0zMy4yLTQ3LjZjOS4xLTkuMyA5LjEtMjQuMSAwLTMzLjQtMjIuMS0yMi44IDEyLjItNTYuMiAzNC40LTMzLjUgMjcuMiAyNy45IDI3LjIgNzIuNCAwIDEwMC40LTIxLjggMjIuMy01Ni45LTEwLjQtMzQuNC0zMy41em04Ni0xMTcuMWM1NC40IDU1LjkgNTQuNCAxNDQuOCAwIDIwMC44LTIxLjggMjIuNC01Ny0xMC4zLTM0LjQtMzMuNSAzNi4yLTM3LjIgMzYuMy05Ni41IDAtMTMzLjgtMjIuMS0yMi44IDEyLjMtNTYuMyAzNC40LTMzLjV6TTM4NCAxMjEuOXY2LjFIMjU2VjBoNi4xYzYuNCAwIDEyLjUgMi41IDE3IDdsOTcuOSA5OGM0LjUgNC41IDcgMTAuNiA3IDE2Ljl6XCJdXG59O1xudmFyIGZhRmlsZUNvZGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1jb2RlJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmMWM5XCIsIFwiTTM4NCAxMjEuOTQxVjEyOEgyNTZWMGg2LjA1OWM2LjM2NSAwIDEyLjQ3IDIuNTI5IDE2Ljk3MSA3LjAyOWw5Ny45NDEgOTcuOTQxQTI0LjAwNSAyNC4wMDUgMCAwIDEgMzg0IDEyMS45NDF6TTI0OCAxNjBjLTEzLjIgMC0yNC0xMC44LTI0LTI0VjBIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHY0NjRjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDMzNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTYwSDI0OHpNMTIzLjIwNiA0MDAuNTA1YTUuNCA1LjQgMCAwIDEtNy42MzMuMjQ2bC02NC44NjYtNjAuODEyYTUuNCA1LjQgMCAwIDEgMC03Ljg3OWw2NC44NjYtNjAuODEyYTUuNCA1LjQgMCAwIDEgNy42MzMuMjQ2bDE5LjU3OSAyMC44ODVhNS40IDUuNCAwIDAgMS0uMzcyIDcuNzQ3TDEwMS42NSAzMzZsNDAuNzYzIDM1Ljg3NGE1LjQgNS40IDAgMCAxIC4zNzIgNy43NDdsLTE5LjU3OSAyMC44ODR6bTUxLjI5NSA1MC40NzlsLTI3LjQ1My03Ljk3YTUuNDAyIDUuNDAyIDAgMCAxLTMuNjgxLTYuNjkybDYxLjQ0LTIxMS42MjZhNS40MDIgNS40MDIgMCAwIDEgNi42OTItMy42ODFsMjcuNDUyIDcuOTdhNS40IDUuNCAwIDAgMSAzLjY4IDYuNjkybC02MS40NCAyMTEuNjI2YTUuMzk3IDUuMzk3IDAgMCAxLTYuNjkgMy42ODF6bTE2MC43OTItMTExLjA0NWwtNjQuODY2IDYwLjgxMmE1LjQgNS40IDAgMCAxLTcuNjMzLS4yNDZsLTE5LjU4LTIwLjg4NWE1LjQgNS40IDAgMCAxIC4zNzItNy43NDdMMjg0LjM1IDMzNmwtNDAuNzYzLTM1Ljg3NGE1LjQgNS40IDAgMCAxLS4zNzItNy43NDdsMTkuNTgtMjAuODg1YTUuNCA1LjQgMCAwIDEgNy42MzMtLjI0Nmw2NC44NjYgNjAuODEyYTUuNCA1LjQgMCAwIDEtLjAwMSA3Ljg3OXpcIl1cbn07XG52YXIgZmFGaWxlQ29udHJhY3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1jb250cmFjdCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjU2Y1wiLCBcIk0yMjQgMTM2VjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6TTY0IDcyYzAtNC40MiAzLjU4LTggOC04aDgwYzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOFY3MnptMCA2NGMwLTQuNDIgMy41OC04IDgtOGg4MGM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LTh2LTE2em0xOTIuODEgMjQ4SDMwNGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnMtNy4xNiAxNi0xNiAxNmgtNDcuMTljLTE2LjQ1IDAtMzEuMjctOS4xNC0zOC42NC0yMy44Ni0yLjk1LTUuOTItOC4wOS02LjUyLTEwLjE3LTYuNTJzLTcuMjIuNTktMTAuMDIgNi4xOWwtNy42NyAxNS4zNGExNS45ODYgMTUuOTg2IDAgMCAxLTE0LjMxIDguODRjLS4zOCAwLS43NS0uMDItMS4xNC0uMDUtNi40NS0uNDUtMTItNC43NS0xNC4wMy0xMC44OUwxNDQgMzU0LjU5bC0xMC42MSAzMS44OGMtNS44OSAxNy42Ni0yMi4zOCAyOS41My00MSAyOS41M0g4MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNmgxMi4zOWM0LjgzIDAgOS4xMS0zLjA4IDEwLjY0LTcuNjZsMTguMTktNTQuNjRjMy4zLTkuODEgMTIuNDQtMTYuNDEgMjIuNzgtMTYuNDFzMTkuNDggNi41OSAyMi43NyAxNi40MWwxMy44OCA0MS42NGMxOS43Ny0xNi4xOSA1NC4wNS05LjcgNjYgMTQuMTYgMi4wMiA0LjA2IDUuOTYgNi41IDEwLjE2IDYuNXpNMzc3IDEwNUwyNzkuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDI1NnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45elwiXVxufTtcbnZhciBmYUZpbGVDc3YgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1jc3YnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY2ZGRcIiwgXCJNMjI0IDEzNlYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em0tOTYgMTQ0YzAgNC40Mi0zLjU4IDgtOCA4aC04Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg4YzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4aC04Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4di0zMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDhjNC40MiAwIDggMy41OCA4IDh2MTZ6bTQ0LjI3IDEwNEgxNjBjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgxMi4yN2M1Ljk1IDAgMTAuNDEtMy41IDEwLjQxLTYuNjIgMC0xLjMtLjc1LTIuNjYtMi4xMi0zLjg0bC0yMS44OS0xOC43N2MtOC40Ny03LjIyLTEzLjMzLTE3LjQ4LTEzLjMzLTI4LjE0IDAtMjEuMyAxOS4wMi0zOC42MiA0Mi40MS0zOC42MkgyMDBjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhoLTEyLjI3Yy01Ljk1IDAtMTAuNDEgMy41LTEwLjQxIDYuNjIgMCAxLjMuNzUgMi42NiAyLjEyIDMuODRsMjEuODkgMTguNzdjOC40NyA3LjIyIDEzLjMzIDE3LjQ4IDEzLjMzIDI4LjE0LjAxIDIxLjI5LTE5IDM4LjYyLTQyLjM5IDM4LjYyek0yNTYgMjY0djIwLjhjMCAyMC4yNyA1LjcgNDAuMTcgMTYgNTYuODggMTAuMy0xNi43IDE2LTM2LjYxIDE2LTU2Ljg4VjI2NGMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHYyMC44YzAgMzUuNDgtMTIuODggNjguODktMzYuMjggOTQuMDktMy4wMiAzLjI1LTcuMjcgNS4xMS0xMS43MiA1LjExcy04LjctMS44Ni0xMS43Mi01LjExYy0yMy40LTI1LjItMzYuMjgtNTguNjEtMzYuMjgtOTQuMDlWMjY0YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4em0xMjEtMTU5TDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6XCJdXG59O1xudmFyIGZhRmlsZURvd25sb2FkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtZG93bmxvYWQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY1NmRcIiwgXCJNMjI0IDEzNlYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em03Ni40NSAyMTEuMzZsLTk2LjQyIDk1LjdjLTYuNjUgNi42MS0xNy4zOSA2LjYxLTI0LjA0IDBsLTk2LjQyLTk1LjdDNzMuNDIgMzM3LjI5IDgwLjU0IDMyMCA5NC44MiAzMjBIMTYwdi04MGMwLTguODQgNy4xNi0xNiAxNi0xNmgzMmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnY4MGg2NS4xOGMxNC4yOCAwIDIxLjQgMTcuMjkgMTEuMjcgMjcuMzZ6TTM3NyAxMDVMMjc5LjEgN2MtNC41LTQuNS0xMC42LTctMTctN0gyNTZ2MTI4aDEyOHYtNi4xYzAtNi4zLTIuNS0xMi40LTctMTYuOXpcIl1cbn07XG52YXIgZmFGaWxlRXhjZWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1leGNlbCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjFjM1wiLCBcIk0yMjQgMTM2VjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bTYwLjEgMTA2LjVMMjI0IDMzNmw2MC4xIDkzLjVjNS4xIDgtLjYgMTguNS0xMC4xIDE4LjVoLTM0LjljLTQuNCAwLTguNS0yLjQtMTAuNi02LjNDMjA4LjkgNDA1LjUgMTkyIDM3MyAxOTIgMzczYy02LjQgMTQuOC0xMCAyMC0zNi42IDY4LjgtMi4xIDMuOS02LjEgNi4zLTEwLjUgNi4zSDExMGMtOS41IDAtMTUuMi0xMC41LTEwLjEtMTguNWw2MC4zLTkzLjUtNjAuMy05My41Yy01LjItOCAuNi0xOC41IDEwLjEtMTguNWgzNC44YzQuNCAwIDguNSAyLjQgMTAuNiA2LjMgMjYuMSA0OC44IDIwIDMzLjYgMzYuNiA2OC41IDAgMCA2LjEtMTEuNyAzNi42LTY4LjUgMi4xLTMuOSA2LjItNi4zIDEwLjYtNi4zSDI3NGM5LjUtLjEgMTUuMiAxMC40IDEwLjEgMTguNHpNMzg0IDEyMS45djYuMUgyNTZWMGg2LjFjNi40IDAgMTIuNSAyLjUgMTcgN2w5Ny45IDk4YzQuNSA0LjUgNyAxMC42IDcgMTYuOXpcIl1cbn07XG52YXIgZmFGaWxlRXhwb3J0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtZXhwb3J0JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTZlXCIsIFwiTTM4NCAxMjEuOWMwLTYuMy0yLjUtMTIuNC03LTE2LjlMMjc5LjEgN2MtNC41LTQuNS0xMC42LTctMTctN0gyNTZ2MTI4aDEyOHpNNTcxIDMwOGwtOTUuNy05Ni40Yy0xMC4xLTEwLjEtMjcuNC0zLTI3LjQgMTEuM1YyODhoLTY0djY0aDY0djY1LjJjMCAxNC4zIDE3LjMgMjEuNCAyNy40IDExLjNMNTcxIDMzMmM2LjYtNi42IDYuNi0xNy40IDAtMjR6bS0zNzkgMjh2LTMyYzAtOC44IDcuMi0xNiAxNi0xNmgxNzZWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjRWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYzNTJIMjA4Yy04LjggMC0xNi03LjItMTYtMTZ6XCJdXG59O1xudmFyIGZhRmlsZUltYWdlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtaW1hZ2UnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYxYzVcIiwgXCJNMzg0IDEyMS45NDFWMTI4SDI1NlYwaDYuMDU5YTI0IDI0IDAgMCAxIDE2Ljk3IDcuMDI5bDk3Ljk0MSA5Ny45NDFhMjQuMDAyIDI0LjAwMiAwIDAgMSA3LjAzIDE2Ljk3MXpNMjQ4IDE2MGMtMTMuMiAwLTI0LTEwLjgtMjQtMjRWMEgyNEMxMC43NDUgMCAwIDEwLjc0NSAwIDI0djQ2NGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzM2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYxNjBIMjQ4em0tMTM1LjQ1NSAxNmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4cy0yMS40OSA0OC00OCA0OC00OC0yMS40OS00OC00OCAyMS40OTEtNDggNDgtNDh6bTIwOCAyNDBoLTI1NmwuNDg1LTQ4LjQ4NUwxMDQuNTQ1IDMyOGM0LjY4Ni00LjY4NiAxMS43OTktNC4yMDEgMTYuNDg1LjQ4NUwxNjAuNTQ1IDM2OCAyNjQuMDYgMjY0LjQ4NWM0LjY4Ni00LjY4NiAxMi4yODQtNC42ODYgMTYuOTcxIDBMMzIwLjU0NSAzMDR2MTEyelwiXVxufTtcbnZhciBmYUZpbGVJbXBvcnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1pbXBvcnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NmZcIiwgXCJNMTYgMjg4Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDExMnYtNjR6bTQ4OS0xODNMNDA3LjEgN2MtNC41LTQuNS0xMC42LTctMTctN0gzODR2MTI4aDEyOHYtNi4xYzAtNi4zLTIuNS0xMi40LTctMTYuOXptLTE1MyAzMVYwSDE1MmMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MjY0aDEyOHYtNjUuMmMwLTE0LjMgMTcuMy0yMS40IDI3LjQtMTEuM0wzNzkgMzA4YzYuNiA2LjcgNi42IDE3LjQgMCAyNGwtOTUuNyA5Ni40Yy0xMC4xIDEwLjEtMjcuNCAzLTI3LjQtMTEuM1YzNTJIMTI4djEzNmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDM3NmMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6XCJdXG59O1xudmFyIGZhRmlsZUludm9pY2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1pbnZvaWNlJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNTcwXCIsIFwiTTI4OCAyNTZIOTZ2NjRoMTkydi02NHptODktMTUxTDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6bS0xNTMgMzFWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHpNNjQgNzJjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04Vjcyem0wIDY0YzAtNC40MiAzLjU4LTggOC04aDgwYzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZ6bTI1NiAzMDRjMCA0LjQyLTMuNTggOC04IDhoLTgwYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZ6bTAtMjAwdjk2YzAgOC44NC03LjE2IDE2LTE2IDE2SDgwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtOTZjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMjI0YzguODQgMCAxNiA3LjE2IDE2IDE2elwiXVxufTtcbnZhciBmYUZpbGVJbnZvaWNlRG9sbGFyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtaW52b2ljZS1kb2xsYXInLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY1NzFcIiwgXCJNMzc3IDEwNUwyNzkuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDI1NnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45em0tMTUzIDMxVjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6TTY0IDcyYzAtNC40MiAzLjU4LTggOC04aDgwYzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOFY3MnptMCA4MHYtMTZjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04em0xNDQgMjYzLjg4VjQ0MGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di0yNC4yOWMtMTEuMjktLjU4LTIyLjI3LTQuNTItMzEuMzctMTEuMzUtMy45LTIuOTMtNC4xLTguNzctLjU3LTEyLjE0bDExLjc1LTExLjIxYzIuNzctMi42NCA2Ljg5LTIuNzYgMTAuMTMtLjczIDMuODcgMi40MiA4LjI2IDMuNzIgMTIuODIgMy43MmgyOC4xMWM2LjUgMCAxMS44LTUuOTIgMTEuOC0xMy4xOSAwLTUuOTUtMy42MS0xMS4xOS04Ljc3LTEyLjczbC00NS0xMy41Yy0xOC41OS01LjU4LTMxLjU4LTIzLjQyLTMxLjU4LTQzLjM5IDAtMjQuNTIgMTkuMDUtNDQuNDQgNDIuNjctNDUuMDdWMjMyYzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djI0LjI5YzExLjI5LjU4IDIyLjI3IDQuNTEgMzEuMzcgMTEuMzUgMy45IDIuOTMgNC4xIDguNzcuNTcgMTIuMTRsLTExLjc1IDExLjIxYy0yLjc3IDIuNjQtNi44OSAyLjc2LTEwLjEzLjczLTMuODctMi40My04LjI2LTMuNzItMTIuODItMy43MmgtMjguMTFjLTYuNSAwLTExLjggNS45Mi0xMS44IDEzLjE5IDAgNS45NSAzLjYxIDExLjE5IDguNzcgMTIuNzNsNDUgMTMuNWMxOC41OSA1LjU4IDMxLjU4IDIzLjQyIDMxLjU4IDQzLjM5IDAgMjQuNTMtMTkuMDUgNDQuNDQtNDIuNjcgNDUuMDd6XCJdXG59O1xudmFyIGZhRmlsZU1lZGljYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1tZWRpY2FsJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNDc3XCIsIFwiTTM3NyAxMDVMMjc5LjEgN2MtNC41LTQuNS0xMC42LTctMTctN0gyNTZ2MTI4aDEyOHYtNi4xYzAtNi4zLTIuNS0xMi40LTctMTYuOXptLTE1MyAzMVYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em02NCAxNjB2NDhjMCA0LjQtMy42IDgtOCA4aC01NnY1NmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LTh2LTU2aC01NmMtNC40IDAtOC0zLjYtOC04di00OGMwLTQuNCAzLjYtOCA4LThoNTZ2LTU2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2NTZoNTZjNC40IDAgOCAzLjYgOCA4elwiXVxufTtcbnZhciBmYUZpbGVNZWRpY2FsQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtbWVkaWNhbC1hbHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY0NzhcIiwgXCJNMjg4IDEzNlYwSDg4Qzc0LjcgMCA2NCAxMC43IDY0IDI0djIzMkg4Yy00LjQgMC04IDMuNi04IDh2MTZjMCA0LjQgMy42IDggOCA4aDE0MC45YzMgMCA1LjggMS43IDcuMiA0LjRsMTkuOSAzOS44IDU2LjgtMTEzLjdjMi45LTUuOSAxMS40LTUuOSAxNC4zIDBsMzQuNyA2OS41SDM1MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmgtODkuOUwyNDAgMjc1LjhsLTU2LjggMTEzLjdjLTIuOSA1LjktMTEuNCA1LjktMTQuMyAwTDEzNC4xIDMyMEg2NHYxNjhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgzMTJjLTEzLjIgMC0yNC0xMC44LTI0LTI0em0xNTMtMzFMMzQzLjEgN2MtNC41LTQuNS0xMC42LTctMTctN0gzMjB2MTI4aDEyOHYtNi4xYzAtNi4zLTIuNS0xMi40LTctMTYuOXpcIl1cbn07XG52YXIgZmFGaWxlUGRmID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtcGRmJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmMWMxXCIsIFwiTTE4MS45IDI1Ni4xYy01LTE2LTQuOS00Ni45LTItNDYuOSA4LjQgMCA3LjYgMzYuOSAyIDQ2Ljl6bS0xLjcgNDcuMmMtNy43IDIwLjItMTcuMyA0My4zLTI4LjQgNjIuNyAxOC4zLTcgMzktMTcuMiA2Mi45LTIxLjktMTIuNy05LjYtMjQuOS0yMy40LTM0LjUtNDAuOHpNODYuMSA0MjguMWMwIC44IDEzLjItNS40IDM0LjktNDAuMi02LjcgNi4zLTI5LjEgMjQuNS0zNC45IDQwLjJ6TTI0OCAxNjBoMTM2djMyOGMwIDEzLjMtMTAuNyAyNC0yNCAyNEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMjRDMCAxMC43IDEwLjcgMCAyNCAwaDIwMHYxMzZjMCAxMy4yIDEwLjggMjQgMjQgMjR6bS04IDE3MS44Yy0yMC0xMi4yLTMzLjMtMjktNDIuNy01My44IDQuNS0xOC41IDExLjYtNDYuNiA2LjItNjQuMi00LjctMjkuNC00Mi40LTI2LjUtNDcuOC02LjgtNSAxOC4zLS40IDQ0LjEgOC4xIDc3LTExLjYgMjcuNi0yOC43IDY0LjYtNDAuOCA4NS44LS4xIDAtLjEuMS0uMi4xLTI3LjEgMTMuOS03My42IDQ0LjUtNTQuNSA2OCA1LjYgNi45IDE2IDEwIDIxLjUgMTAgMTcuOSAwIDM1LjctMTggNjEuMS02MS44IDI1LjgtOC41IDU0LjEtMTkuMSA3OS0yMy4yIDIxLjcgMTEuOCA0Ny4xIDE5LjUgNjQgMTkuNSAyOS4yIDAgMzEuMi0zMiAxOS43LTQzLjQtMTMuOS0xMy42LTU0LjMtOS43LTczLjYtNy4yek0zNzcgMTA1TDI3OSA3Yy00LjUtNC41LTEwLjYtNy0xNy03aC02djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6bS03NC4xIDI1NS4zYzQuMS0yLjctMi41LTExLjktNDIuOC05IDM3LjEgMTUuOCA0Mi44IDkgNDIuOCA5elwiXVxufTtcbnZhciBmYUZpbGVQb3dlcnBvaW50ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtcG93ZXJwb2ludCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjFjNFwiLCBcIk0xOTMuNyAyNzEuMmM4LjggMCAxNS41IDIuNyAyMC4zIDguMSA5LjYgMTAuOSA5LjggMzIuNy0uMiA0NC4xLTQuOSA1LjYtMTEuOSA4LjUtMjEuMSA4LjVoLTI2Ljl2LTYwLjdoMjcuOXpNMzc3IDEwNUwyNzkgN2MtNC41LTQuNS0xMC42LTctMTctN2gtNnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45em0tMTUzIDMxVjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bTUzIDE2NS4yYzAgOTAuMy04OC44IDc3LjYtMTExLjEgNzcuNlY0MzZjMCA2LjYtNS40IDEyLTEyIDEyaC0zMC44Yy02LjYgMC0xMi01LjQtMTItMTJWMjM2LjJjMC02LjYgNS40LTEyIDEyLTEyaDgxYzQ0LjUgMCA3Mi45IDMyLjggNzIuOSA3N3pcIl1cbn07XG52YXIgZmFGaWxlUHJlc2NyaXB0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtcHJlc2NyaXB0aW9uJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNTcyXCIsIFwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptNjguNTMgMTc5LjQ4bDExLjMxIDExLjMxYzYuMjUgNi4yNSA2LjI1IDE2LjM4IDAgMjIuNjNsLTI5LjkgMjkuOUwzMDQgNDA5LjM4YzYuMjUgNi4yNSA2LjI1IDE2LjM4IDAgMjIuNjNsLTExLjMxIDExLjMxYy02LjI1IDYuMjUtMTYuMzggNi4yNS0yMi42MyAwTDI0MCA0MTMuMjVsLTMwLjA2IDMwLjA2Yy02LjI1IDYuMjUtMTYuMzggNi4yNS0yMi42MyAwTDE3NiA0MzJjLTYuMjUtNi4yNS02LjI1LTE2LjM4IDAtMjIuNjNsMzAuMDYtMzAuMDZMMTQ2Ljc0IDMyMEgxMjh2NDhjMCA4Ljg0LTcuMTYgMTYtMTYgMTZIOTZjLTguODQgMC0xNi03LjE2LTE2LTE2VjIwOGMwLTguODQgNy4xNi0xNiAxNi0xNmg4MGMzNS4zNSAwIDY0IDI4LjY1IDY0IDY0IDAgMjQuMjItMTMuNjIgNDUuMDUtMzMuNDYgNTUuOTJMMjQwIDM0NS4zOGwyOS45LTI5LjljNi4yNS02LjI1IDE2LjM4LTYuMjUgMjIuNjMgMHpNMTc2IDI3MmgtNDh2LTMyaDQ4YzguODIgMCAxNiA3LjE4IDE2IDE2cy03LjE4IDE2LTE2IDE2em0yMDgtMTUwLjF2Ni4xSDI1NlYwaDYuMWM2LjQgMCAxMi41IDIuNSAxNyA3bDk3LjkgOThjNC41IDQuNSA3IDEwLjYgNyAxNi45elwiXVxufTtcbnZhciBmYUZpbGVTaWduYXR1cmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1zaWduYXR1cmUnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY1NzNcIiwgXCJNMjE4LjE3IDQyNC4xNGMtMi45NS01LjkyLTguMDktNi41Mi0xMC4xNy02LjUycy03LjIyLjU5LTEwLjAyIDYuMTlsLTcuNjcgMTUuMzRjLTYuMzcgMTIuNzgtMjUuMDMgMTEuMzctMjkuNDgtMi4wOUwxNDQgMzg2LjU5bC0xMC42MSAzMS44OGMtNS44OSAxNy42Ni0yMi4zOCAyOS41My00MSAyOS41M0g4MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNmgxMi4zOWM0LjgzIDAgOS4xMS0zLjA4IDEwLjY0LTcuNjZsMTguMTktNTQuNjRjMy4zLTkuODEgMTIuNDQtMTYuNDEgMjIuNzgtMTYuNDFzMTkuNDggNi41OSAyMi43NyAxNi40MWwxMy44OCA0MS42NGMxOS43NS0xNi4xOSA1NC4wNi05LjcgNjYgMTQuMTYgMS44OSAzLjc4IDUuNDkgNS45NSA5LjM2IDYuMjZ2LTgyLjEybDEyOC0xMjcuMDlWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjRWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtNDBsLTEyOC0uMTFjLTE2LjEyLS4zMS0zMC41OC05LjI4LTM3LjgzLTIzLjc1ek0zODQgMTIxLjljMC02LjMtMi41LTEyLjQtNy0xNi45TDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMXptLTk2IDIyNS4wNlY0MTZoNjguOTlsMTYxLjY4LTE2Mi43OC02Ny44OC02Ny44OEwyODggMzQ2Ljk2em0yODAuNTQtMTc5LjYzbC0zMS44Ny0zMS44N2MtOS45NC05Ljk0LTI2LjA3LTkuOTQtMzYuMDEgMGwtMjcuMjUgMjcuMjUgNjcuODggNjcuODggMjcuMjUtMjcuMjVjOS45NS05Ljk0IDkuOTUtMjYuMDcgMC0zNi4wMXpcIl1cbn07XG52YXIgZmFGaWxlVXBsb2FkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtdXBsb2FkJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNTc0XCIsIFwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptNjUuMTggMjE2LjAxSDIyNHY4MGMwIDguODQtNy4xNiAxNi0xNiAxNmgtMzJjLTguODQgMC0xNi03LjE2LTE2LTE2di04MEg5NC44MmMtMTQuMjggMC0yMS40MS0xNy4yOS0xMS4yNy0yNy4zNmw5Ni40Mi05NS43YzYuNjUtNi42MSAxNy4zOS02LjYxIDI0LjA0IDBsOTYuNDIgOTUuN2MxMC4xNSAxMC4wNyAzLjAzIDI3LjM2LTExLjI1IDI3LjM2ek0zNzcgMTA1TDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6XCJdXG59O1xudmFyIGZhRmlsZVZpZGVvID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtdmlkZW8nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYxYzhcIiwgXCJNMzg0IDEyMS45NDFWMTI4SDI1NlYwaDYuMDU5YzYuMzY1IDAgMTIuNDcgMi41MjkgMTYuOTcxIDcuMDI5bDk3Ljk0MSA5Ny45NDFBMjQuMDA1IDI0LjAwNSAwIDAgMSAzODQgMTIxLjk0MXpNMjI0IDEzNlYwSDI0QzEwLjc0NSAwIDAgMTAuNzQ1IDAgMjR2NDY0YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMzZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em05NiAxNDQuMDE2djExMS45NjNjMCAyMS40NDUtMjUuOTQzIDMxLjk5OC00MC45NzEgMTYuOTcxTDIyNCAzNTMuOTQxVjM5MmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIODhjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNFYyODBjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDExMmMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2MzguMDU5bDU1LjAyOS01NS4wMTNjMTUuMDExLTE1LjAxIDQwLjk3MS00LjQ5MSA0MC45NzEgMTYuOTd6XCJdXG59O1xudmFyIGZhRmlsZVdvcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS13b3JkJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmMWMyXCIsIFwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptNTcuMSAxMjBIMzA1YzcuNyAwIDEzLjQgNy4xIDExLjcgMTQuN2wtMzggMTY4Yy0xLjIgNS41LTYuMSA5LjMtMTEuNyA5LjNoLTM4Yy01LjUgMC0xMC4zLTMuOC0xMS42LTkuMS0yNS44LTEwMy41LTIwLjgtODEuMi0yNS42LTExMC41aC0uNWMtMS4xIDE0LjMtMi40IDE3LjQtMjUuNiAxMTAuNS0xLjMgNS4zLTYuMSA5LjEtMTEuNiA5LjFIMTE3Yy01LjYgMC0xMC41LTMuOS0xMS43LTkuNGwtMzcuOC0xNjhjLTEuNy03LjUgNC0xNC42IDExLjctMTQuNmgyNC41YzUuNyAwIDEwLjcgNCAxMS44IDkuNyAxNS42IDc4IDIwLjEgMTA5LjUgMjEgMTIyLjIgMS42LTEwLjIgNy4zLTMyLjcgMjkuNC0xMjIuNyAxLjMtNS40IDYuMS05LjEgMTEuNy05LjFoMjkuMWM1LjYgMCAxMC40IDMuOCAxMS43IDkuMiAyNCAxMDAuNCAyOC44IDEyNCAyOS42IDEyOS40LS4yLTExLjItMi42LTE3LjggMjEuNi0xMjkuMiAxLTUuNiA1LjktOS41IDExLjUtOS41ek0zODQgMTIxLjl2Ni4xSDI1NlYwaDYuMWM2LjQgMCAxMi41IDIuNSAxNyA3bDk3LjkgOThjNC41IDQuNSA3IDEwLjYgNyAxNi45elwiXVxufTtcbnZhciBmYUZpbGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsbCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjU3NVwiLCBcIk01MDIuNjMgMjE3LjA2TDI5NC45NCA5LjM3QzI4OC42OSAzLjEyIDI4MC41IDAgMjcyLjMxIDBzLTE2LjM4IDMuMTItMjIuNjIgOS4zN2wtODEuNTggODEuNThMODEuOTMgNC43N2MtNi4yNC02LjI1LTE2LjM4LTYuMjUtMjIuNjIgMEwzNi42OSAyNy4zOGMtNi4yNCA2LjI1LTYuMjQgMTYuMzggMCAyMi42M2w4Ni4xOSA4Ni4xOC05NC43NiA5NC43NmMtMzcuNDkgMzcuNDktMzcuNDkgOTguMjYgMCAxMzUuNzVsMTE3LjE5IDExNy4xOWMxOC43NSAxOC43NCA0My4zMSAyOC4xMiA2Ny44NyAyOC4xMiAyNC41NyAwIDQ5LjEzLTkuMzcgNjcuODgtMjguMTJsMjIxLjU3LTIyMS41N2MxMi40OS0xMi41IDEyLjQ5LTMyLjc2IDAtNDUuMjZ6bS0xMTYuMjIgNzAuOTdINjUuOTNjMS4zNi0zLjg0IDMuNTctNy45OCA3LjQzLTExLjgzbDEzLjE1LTEzLjE1IDgxLjYxLTgxLjYxIDU4LjYxIDU4LjZjMTIuNDkgMTIuNDkgMzIuNzUgMTIuNDkgNDUuMjQgMCAxMi40OS0xMi40OSAxMi40OS0zMi43NSAwLTQ1LjI0bC01OC42MS01OC42IDU4Ljk1LTU4Ljk1IDE2Mi40NSAxNjIuNDQtNDguMzUgNDguMzR6XCJdXG59O1xudmFyIGZhRmlsbERyaXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsbC1kcmlwJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTc2XCIsIFwiTTUxMiAzMjBzLTY0IDkyLjY1LTY0IDEyOGMwIDM1LjM1IDI4LjY2IDY0IDY0IDY0czY0LTI4LjY1IDY0LTY0LTY0LTEyOC02NC0xMjh6bS05LjM3LTEwMi45NEwyOTQuOTQgOS4zN0MyODguNjkgMy4xMiAyODAuNSAwIDI3Mi4zMSAwcy0xNi4zOCAzLjEyLTIyLjYyIDkuMzdsLTgxLjU4IDgxLjU4TDgxLjkzIDQuNzZjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYyIDBMMzYuNjkgMjcuMzhjLTYuMjQgNi4yNS02LjI0IDE2LjM4IDAgMjIuNjJsODYuMTkgODYuMTgtOTQuNzYgOTQuNzZjLTM3LjQ5IDM3LjQ4LTM3LjQ5IDk4LjI2IDAgMTM1Ljc1bDExNy4xOSAxMTcuMTljMTguNzQgMTguNzQgNDMuMzEgMjguMTIgNjcuODcgMjguMTIgMjQuNTcgMCA0OS4xMy05LjM3IDY3Ljg3LTI4LjEybDIyMS41Ny0yMjEuNTdjMTIuNS0xMi41IDEyLjUtMzIuNzUuMDEtNDUuMjV6bS0xMTYuMjIgNzAuOTdINjUuOTNjMS4zNi0zLjg0IDMuNTctNy45OCA3LjQzLTExLjgzbDEzLjE1LTEzLjE1IDgxLjYxLTgxLjYxIDU4LjYgNTguNmMxMi40OSAxMi40OSAzMi43NSAxMi40OSA0NS4yNCAwczEyLjQ5LTMyLjc1IDAtNDUuMjRsLTU4LjYtNTguNiA1OC45NS01OC45NSAxNjIuNDQgMTYyLjQ0LTQ4LjM0IDQ4LjM0elwiXVxufTtcbnZhciBmYUZpbG0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsbScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAwOFwiLCBcIk00ODggNjRoLTh2MjBjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEyVjY0SDk2djIwYzAgNi42LTUuNCAxMi0xMiAxMkg0NGMtNi42IDAtMTItNS40LTEyLTEyVjY0aC04QzEwLjcgNjQgMCA3NC43IDAgODh2MzM2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDh2LTIwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2MjBoMzIwdi0yMGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjIwaDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWODhjMC0xMy4zLTEwLjctMjQtMjQtMjR6TTk2IDM3MmMwIDYuNi01LjQgMTItMTIgMTJINDRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMC05NmMwIDYuNi01LjQgMTItMTIgMTJINDRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMC05NmMwIDYuNi01LjQgMTItMTIgMTJINDRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMjcyIDIwOGMwIDYuNi01LjQgMTItMTIgMTJIMTU2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTk2YzAtNi42IDUuNC0xMiAxMi0xMmgyMDBjNi42IDAgMTIgNS40IDEyIDEydjk2em0wLTE2OGMwIDYuNi01LjQgMTItMTIgMTJIMTU2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTk2YzAtNi42IDUuNC0xMiAxMi0xMmgyMDBjNi42IDAgMTIgNS40IDEyIDEydjk2em0xMTIgMTUyYzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMC05NmMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTAtOTZjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwelwiXVxufTtcbnZhciBmYUZpbHRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWx0ZXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwYjBcIiwgXCJNNDg3Ljk3NiAwSDI0LjAyOEMyLjcxIDAtOC4wNDcgMjUuODY2IDcuMDU4IDQwLjk3MUwxOTIgMjI1Ljk0MVY0MzJjMCA3LjgzMSAzLjgyMSAxNS4xNyAxMC4yMzcgMTkuNjYybDgwIDU1Ljk4QzI5OC4wMiA1MTguNjkgMzIwIDUwNy40OTMgMzIwIDQ4Ny45OFYyMjUuOTQxbDE4NC45NDctMTg0Ljk3QzUyMC4wMjEgMjUuODk2IDUwOS4zMzggMCA0ODcuOTc2IDB6XCJdXG59O1xudmFyIGZhRmluZ2VycHJpbnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmluZ2VycHJpbnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NzdcIiwgXCJNMjU2LjEyIDI0NS45NmMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNCAxLjE0IDcyLjI1LTguMTQgMTQxLjktMjcuNyAyMTEuNTUtMi43MyA5LjcyIDIuMTUgMzAuNDkgMjMuMTIgMzAuNDkgMTAuNDggMCAyMC4xMS02LjkyIDIzLjA5LTE3LjUyIDEzLjUzLTQ3LjkxIDMxLjA0LTEyNS40MSAyOS40OC0yMjQuNTIuMDEtMTMuMjUtMTAuNzMtMjQtMjMuOTktMjR6bS0uODYtODEuNzNDMTk0IDE2NC4xNiAxNTEuMjUgMjExLjMgMTUyLjEgMjY1LjMyYy43NSA0Ny45NC0zLjc1IDk1LjkxLTEzLjM3IDE0Mi41NS0yLjY5IDEyLjk4IDUuNjcgMjUuNjkgMTguNjQgMjguMzYgMTMuMDUgMi42NyAyNS42Ny01LjY2IDI4LjM2LTE4LjY0IDEwLjM0LTUwLjA5IDE1LjE3LTEwMS41OCAxNC4zNy0xNTMuMDItLjQxLTI1Ljk1IDE5LjkyLTUyLjQ5IDU0LjQ1LTUyLjM0IDMxLjMxLjQ3IDU3LjE1IDI1LjM0IDU3LjYyIDU1LjQ3Ljc3IDQ4LjA1LTIuODEgOTYuMzMtMTAuNjEgMTQzLjU1LTIuMTcgMTMuMDYgNi42OSAyNS40MiAxOS43NiAyNy41OCAxOS45NyAzLjMzIDI2LjgxLTE1LjEgMjcuNTgtMTkuNzcgOC4yOC01MC4wMyAxMi4wNi0xMDEuMjEgMTEuMjctMTUyLjExLS44OC01NS44LTQ3Ljk0LTEwMS44OC0xMDQuOTEtMTAyLjcyem0tMTEwLjY5LTE5Ljc4Yy0xMC4zLTguMzQtMjUuMzctNi44LTMzLjc2IDMuNDgtMjUuNjIgMzEuNS0zOS4zOSA3MS4yOC0zOC43NSAxMTIgLjU5IDM3LjU4LTIuNDcgNzUuMjctOS4xMSAxMTIuMDUtMi4zNCAxMy4wNSA2LjMxIDI1LjUzIDE5LjM2IDI3Ljg5IDIwLjExIDMuNSAyNy4wNy0xNC44MSAyNy44OS0xOS4zNiA3LjE5LTM5Ljg0IDEwLjUtODAuNjYgOS44Ni0xMjEuMzMtLjQ3LTI5Ljg4IDkuMi01Ny44OCAyOC04MC45NyA4LjM1LTEwLjI4IDYuNzktMjUuMzktMy40OS0zMy43NnptMTA5LjQ3LTYyLjMzYy0xNS40MS0uNDEtMzAuODcgMS40NC00NS43OCA0Ljk3LTEyLjg5IDMuMDYtMjAuODcgMTUuOTgtMTcuODMgMjguODkgMy4wNiAxMi44OSAxNiAyMC44MyAyOC44OSAxNy44MyAxMS4wNS0yLjYxIDIyLjQ3LTMuNzcgMzQtMy42OSA3NS40MyAxLjEzIDEzNy43MyA2MS41IDEzOC44OCAxMzQuNTguNTkgMzcuODgtMS4yOCA3Ni4xMS01LjU4IDExMy42My0xLjUgMTMuMTcgNy45NSAyNS4wOCAyMS4xMSAyNi41OCAxNi43MiAxLjk1IDI1LjUxLTExLjg4IDI2LjU4LTIxLjExYTkyOS4wNiA5MjkuMDYgMCAwIDAgNS44OS0xMTkuODVjLTEuNTYtOTguNzUtODUuMDctMTgwLjMzLTE4Ni4xNi0xODEuODN6bTI1Mi4wNyAxMjEuNDVjLTIuODYtMTIuOTItMTUuNTEtMjEuMi0yOC42MS0xOC4yNy0xMi45NCAyLjg2LTIxLjEyIDE1LjY2LTE4LjI2IDI4LjYxIDQuNzEgMjEuNDEgNC45MSAzNy40MSA0LjcgNjEuNi0uMTEgMTMuMjcgMTAuNTUgMjQuMDkgMjMuOCAyNC4yaC4yYzEzLjE3IDAgMjMuODktMTAuNjEgMjQtMjMuOC4xOC0yMi4xOC40LTQ0LjExLTUuODMtNzIuMzR6bS00MC4xMi05MC43MkM0MTcuMjkgNDMuNDYgMzM3LjYgMS4yOSAyNTIuODEuMDIgMTgzLjAyLS44MiAxMTguNDcgMjQuOTEgNzAuNDYgNzIuOTQgMjQuMDkgMTE5LjM3LS45IDE4MS4wNC4xNCAyNDYuNjVsLS4xMiAyMS40N2MtLjM5IDEzLjI1IDEwLjAzIDI0LjMxIDIzLjI4IDI0LjY5LjIzLjAyLjQ4LjAyLjcyLjAyIDEyLjkyIDAgMjMuNTktMTAuMyAyMy45Ny0yMy4zbC4xNi0yMy42NGMtLjgzLTUyLjUgMTkuMTYtMTAxLjg2IDU2LjI4LTEzOSAzOC43Ni0zOC44IDkxLjM0LTU5LjY3IDE0Ny42OC01OC44NiA2OS40NSAxLjAzIDEzNC43MyAzNS41NiAxNzQuNjIgOTIuMzkgNy42MSAxMC44NiAyMi41NiAxMy40NSAzMy40MiA1Ljg2IDEwLjg0LTcuNjIgMTMuNDYtMjIuNTkgNS44NC0zMy40M3pcIl1cbn07XG52YXIgZmFGaXJlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpcmUnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYwNmRcIiwgXCJNMjE2IDIzLjg2YzAtMjMuOC0zMC42NS0zMi43Ny00NC4xNS0xMy4wNEM0OCAxOTEuODUgMjI0IDIwMCAyMjQgMjg4YzAgMzUuNjMtMjkuMTEgNjQuNDYtNjQuODUgNjMuOTktMzUuMTctLjQ1LTYzLjE1LTI5Ljc3LTYzLjE1LTY0Ljk0di04NS41MWMwLTIxLjctMjYuNDctMzIuMjMtNDEuNDMtMTYuNUMyNy44IDIxMy4xNiAwIDI2MS4zMyAwIDMyMGMwIDEwNS44NyA4Ni4xMyAxOTIgMTkyIDE5MnMxOTItODYuMTMgMTkyLTE5MmMwLTE3MC4yOS0xNjgtMTkzLTE2OC0yOTYuMTR6XCJdXG59O1xudmFyIGZhRmlyZUFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaXJlLWFsdCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjdlNFwiLCBcIk0zMjMuNTYgNTEuMmMtMjAuOCAxOS4zLTM5LjU4IDM5LjU5LTU2LjIyIDU5Ljk3QzI0MC4wOCA3My42MiAyMDYuMjggMzUuNTMgMTY4IDAgNjkuNzQgOTEuMTcgMCAyMDkuOTYgMCAyODEuNiAwIDQwOC44NSAxMDAuMjkgNTEyIDIyNCA1MTJzMjI0LTEwMy4xNSAyMjQtMjMwLjRjMC01My4yNy01MS45OC0xNjMuMTQtMTI0LjQ0LTIzMC40em0tMTkuNDcgMzQwLjY1QzI4Mi40MyA0MDcuMDEgMjU1LjcyIDQxNiAyMjYuODYgNDE2IDE1NC43MSA0MTYgOTYgMzY4LjI2IDk2IDI5MC43NWMwLTM4LjYxIDI0LjMxLTcyLjYzIDcyLjc5LTEzMC43NSA2LjkzIDcuOTggOTguODMgMTI1LjM0IDk4LjgzIDEyNS4zNGw1OC42My02Ni44OGM0LjE0IDYuODUgNy45MSAxMy41NSAxMS4yNyAxOS45NyAyNy4zNSA1Mi4xOSAxNS44MSAxMTguOTctMzMuNDMgMTUzLjQyelwiXVxufTtcbnZhciBmYUZpcmVFeHRpbmd1aXNoZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlyZS1leHRpbmd1aXNoZXInLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxMzRcIiwgXCJNNDM0LjAyNyAyNi4zMjlsLTE2OCAyOEMyNTQuNjkzIDU2LjIxOCAyNTYgNjcuOCAyNTYgNzJoLTU4LjMzMkMyMDguMzUzIDM2LjEwOCAxODEuNDQ2IDAgMTQ0IDBjLTM5LjQzNSAwLTY2LjM2OCAzOS42NzYtNTIuMjI4IDc2LjIwMy01Mi4wMzkgMTMuMDUxLTc1LjM4MSA1NC4yMTMtOTAuMDQ5IDkwLjg4NC00LjkyMyAxMi4zMDcgMS4wNjMgMjYuMjc0IDEzLjM3IDMxLjE5NyAxMi4zMTcgNC45MjYgMjYuMjc5LTEuMDc1IDMxLjE5Ni0xMy4zN0M3NS4wNTggMTEyLjk5IDEwNi45NjQgMTIwIDE2OCAxMjB2MjcuMDc2Yy00MS41NDMgMTAuODYyLTcyIDQ5LjIzNS03MiA5NC4xMjlWNDg4YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxNDRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI0MGMwLTQ0LjczMS0zMC41OTYtODIuMzEyLTcyLTkyLjk3VjEyMGg0MGMwIDIuOTc0LTEuNzAzIDE1LjcxNiAxMC4wMjcgMTcuNjcxbDE2OCAyOEM0NDEuMzQyIDE2Ni44OSA0NDggMTYxLjI1IDQ0OCAxNTMuODM0VjM4LjE2NmMwLTcuNDE2LTYuNjU4LTEzLjA1Ni0xMy45NzMtMTEuODM3ek0xNDQgNzJjLTguODIyIDAtMTYtNy4xNzgtMTYtMTZzNy4xNzgtMTYgMTYtMTYgMTYgNy4xNzggMTYgMTYtNy4xNzggMTYtMTYgMTZ6XCJdXG59O1xudmFyIGZhRmlyc3RBaWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlyc3QtYWlkJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNDc5XCIsIFwiTTAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4VjMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB6bTEyOCA0MDBoMzIwVjMySDEyOHY0NDh6bTY0LTI0OGMwLTQuNCAzLjYtOCA4LThoNTZ2LTU2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2NTZoNTZjNC40IDAgOCAzLjYgOCA4djQ4YzAgNC40LTMuNiA4LTggOGgtNTZ2NTZjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04di01NmgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNDh6TTUyOCAzMmgtNDh2NDQ4aDQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwiXVxufTtcbnZhciBmYUZpc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlzaCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjU3OFwiLCBcIk0zMjcuMSA5NmMtODkuOTcgMC0xNjguNTQgNTQuNzctMjEyLjI3IDEwMS42M0wyNy41IDEzMS41OGMtMTIuMTMtOS4xOC0zMC4yNC42LTI3LjE0IDE0LjY2TDI0LjU0IDI1NiAuMzUgMzY1Ljc3Yy0zLjEgMTQuMDYgMTUuMDEgMjMuODMgMjcuMTQgMTQuNjZsODcuMzMtNjYuMDVDMTU4LjU1IDM2MS4yMyAyMzcuMTMgNDE2IDMyNy4xIDQxNiA0NjQuNTYgNDE2IDU3NiAyODggNTc2IDI1NlM0NjQuNTYgOTYgMzI3LjEgOTZ6bTg3LjQzIDE4NGMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0IDEzLjI2IDAgMjQgMTAuNzQgMjQgMjQgMCAxMy4yNS0xMC43NSAyNC0yNCAyNHpcIl1cbn07XG52YXIgZmFGaXN0UmFpc2VkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Zpc3QtcmFpc2VkJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNmRlXCIsIFwiTTI1NS45OCAxNjBWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNDYuOTNjNS4wMi0xLjc4IDEwLjM0LTIuOTMgMTUuOTctMi45M2g0OC4wM3ptMTI4IDk1Ljk5Yy0uMDEtMzUuMzQtMjguNjYtNjMuOTktNjMuOTktNjMuOTlIMjA3Ljg1Yy04Ljc4IDAtMTUuOSA3LjA3LTE1LjkgMTUuODV2LjU2YzAgMjYuMjcgMjEuMyA0Ny41OSA0Ny41NyA0Ny41OWgzNS4yNmM5LjY4IDAgMTMuMiAzLjU4IDEzLjIgOHYxNi4yYzAgNC4yOS0zLjU5IDcuNzgtNy44OCA4LTQ0LjUyIDIuMjgtNjQuMTYgMjQuNzEtOTYuMDUgNzIuNTVsLTYuMzEgOS40N2E3Ljk5NCA3Ljk5NCAwIDAgMS0xMS4wOSAyLjIybC0xMy4zMS04Ljg4YTcuOTk0IDcuOTk0IDAgMCAxLTIuMjItMTEuMDlsNi4zMS05LjQ3YzE1LjczLTIzLjYgMzAuMi00My4yNiA0Ny4zMS01OC4wOC0xNy4yNy01LjUxLTMxLjQtMTguMTItMzguODctMzQuNDUtNi41OSAzLjQxLTEzLjk2IDUuNTItMjEuODcgNS41MmgtMzJjLTEyLjM0IDAtMjMuNDktNC44MS0zMi0xMi40OEM3MS40OCAyNTEuMTkgNjAuMzMgMjU2IDQ4IDI1NkgxNmMtNS42NCAwLTEwLjk3LTEuMTUtMTYtMi45NXY3Ny45M2MwIDMzLjk1IDEzLjQ4IDY2LjUgMzcuNDkgOTAuNTFMNjMuOTkgNDQ4djY0aDI1NS45OHYtNjMuOTZsMzUuOTEtMzUuOTJBOTYuMDM1IDk2LjAzNSAwIDAgMCAzODQgMzQ0LjIxbC0uMDItODguMjJ6bS0zMi4wMS05MC4wOVY0OGMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djExMmgzMmMxMS4yOCAwIDIxLjk0IDIuMzEgMzIgNS45ek0xNiAyMjRoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiA2NCAwIDcxLjE2IDAgODB2MTI4YzAgOC44NCA3LjE2IDE2IDE2IDE2em05NS45OSAwaDMyYzguODQgMCAxNi03LjE2IDE2LTE2VjQ4YzAtOC44NC03LjE2LTE2LTE2LTE2aC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTYwYzAgOC44NCA3LjE2IDE2IDE2IDE2elwiXVxufTtcbnZhciBmYUZsYWcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmxhZycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAyNFwiLCBcIk0zNDkuNTY1IDk4Ljc4M0MyOTUuOTc4IDk4Ljc4MyAyNTEuNzIxIDY0IDE4NC4zNDggNjRjLTI0Ljk1NSAwLTQ3LjMwOSA0LjM4NC02OC4wNDUgMTIuMDEzYTU1Ljk0NyA1NS45NDcgMCAwIDAgMy41ODYtMjMuNTYyQzExOC4xMTcgMjQuMDE1IDk0LjgwNiAxLjIwNiA2Ni4zMzguMDQ4IDM0LjM0NS0xLjI1NCA4IDI0LjI5NiA4IDU2YzAgMTkuMDI2IDkuNDk3IDM1LjgyNSAyNCA0NS45NDVWNDg4YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTk0LjRjMjguMzExLTEyLjA2NCA2My41ODItMjIuMTIyIDExNC40MzUtMjIuMTIyIDUzLjU4OCAwIDk3Ljg0NCAzNC43ODMgMTY1LjIxNyAzNC43ODMgNDguMTY5IDAgODYuNjY3LTE2LjI5NCAxMjIuNTA1LTQwLjg1OEM1MDYuODQgMzU5LjQ1MiA1MTIgMzQ5LjU3MSA1MTIgMzM5LjA0NXYtMjQzLjFjMC0yMy4zOTMtMjQuMjY5LTM4Ljg3LTQ1LjQ4NS0yOS4wMTYtMzQuMzM4IDE1Ljk0OC03Ni40NTQgMzEuODU0LTExNi45NSAzMS44NTR6XCJdXG59O1xudmFyIGZhRmxhZ0NoZWNrZXJlZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmbGFnLWNoZWNrZXJlZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjExZVwiLCBcIk0yNDMuMiAxODkuOVYyNThjMjYuMSA1LjkgNDkuMyAxNS42IDczLjYgMjIuM3YtNjguMmMtMjYtNS44LTQ5LjQtMTUuNS03My42LTIyLjJ6bTIyMy4zLTEyM2MtMzQuMyAxNS45LTc2LjUgMzEuOS0xMTcgMzEuOUMyOTYgOTguOCAyNTEuNyA2NCAxODQuMyA2NGMtMjUgMC00Ny4zIDQuNC02OCAxMiAyLjgtNy4zIDQuMS0xNS4yIDMuNi0yMy42QzExOC4xIDI0IDk0LjggMS4yIDY2LjMgMCAzNC4zLTEuMyA4IDI0LjMgOCA1NmMwIDE5IDkuNSAzNS44IDI0IDQ1LjlWNDg4YzAgMTMuMyAxMC43IDI0IDI0IDI0aDE2YzEzLjMgMCAyNC0xMC43IDI0LTI0di05NC40YzI4LjMtMTIuMSA2My42LTIyLjEgMTE0LjQtMjIuMSA1My42IDAgOTcuOCAzNC44IDE2NS4yIDM0LjggNDguMiAwIDg2LjctMTYuMyAxMjIuNS00MC45IDguNy02IDEzLjgtMTUuOCAxMy44LTI2LjRWOTUuOWMuMS0yMy4zLTI0LjItMzguOC00NS40LTI5ek0xNjkuNiAzMjUuNWMtMjUuOCAyLjctNTAgOC4yLTczLjYgMTYuNnYtNzAuNWMyNi4yLTkuMyA0Ny41LTE1IDczLjYtMTcuNHpNNDY0IDE5MWMtMjMuNiA5LjgtNDYuMyAxOS41LTczLjYgMjMuOVYyODZjMjQuOC0zLjQgNTEuNC0xMS44IDczLjYtMjZ2NzAuNWMtMjUuMSAxNi4xLTQ4LjUgMjQuNy03My42IDI3LjFWMjg2Yy0yNyAzLjctNDcuOSAxLjUtNzMuNi01LjZ2NjcuNGMtMjMuOS03LjQtNDcuMy0xNi43LTczLjYtMjEuM1YyNThjLTE5LjctNC40LTQwLjgtNi44LTczLjYtMy44di03MGMtMjIuNCAzLjEtNDQuNiAxMC4yLTczLjYgMjAuOXYtNzAuNWMzMy4yLTEyLjIgNTAuMS0xOS44IDczLjYtMjJ2NzEuNmMyNy0zLjcgNDguNC0xLjMgNzMuNiA1Ljd2LTY3LjRjMjMuNyA3LjQgNDcuMiAxNi43IDczLjYgMjEuM3Y2OC40YzIzLjcgNS4zIDQ3LjYgNi45IDczLjYgMi43VjE0M2MyNy00LjggNTIuMy0xMy42IDczLjYtMjIuNXpcIl1cbn07XG52YXIgZmFGbGFnVXNhID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZsYWctdXNhJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNzRkXCIsIFwiTTMyIDBDMTQuMyAwIDAgMTQuMyAwIDMydjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyQzY0IDE0LjMgNDkuNyAwIDMyIDB6bTI2Ny45IDMwMy42Yy01Ny4yLTE1LjEtMTExLjctMjguOC0yMDMuOSAxMS4xVjM4NGMxODUuNy05Mi4yIDIyMS43IDUzLjMgMzk3LjUtMjMuMSAxMS40LTUgMTguNS0xNi41IDE4LjUtMjguOHYtMzZjLTQzLjYgMTcuMy04MC4yIDI0LjEtMTEyLjEgMjQuMS0zNy40LS4xLTY4LjktOC40LTEwMC0xNi42em0wLTk2Yy01Ny4yLTE1LjEtMTExLjctMjguOC0yMDMuOSAxMS4xdjYxLjVjOTQuOC0zNy42IDE1NC42LTIyLjcgMjEyLjEtNy42IDU3LjIgMTUuMSAxMTEuNyAyOC44IDIwMy45LTExLjFWMjAwYy00My42IDE3LjMtODAuMiAyNC4xLTExMi4xIDI0LjEtMzcuNCAwLTY4LjktOC4zLTEwMC0xNi41em05LjUtMTI1LjljNTEuOCAxNS42IDk3LjQgMjkgMjAyLjYtMjAuMVYzMC44YzAtMjUuMS0yNi44LTM4LjEtNDkuNC0yNi42QzI5MS4zIDkxLjUgMzA1LjQtNjIuMiA5NiAzMi40djE1MS45Yzk0LjgtMzcuNSAxNTQuNi0yMi43IDIxMi4xLTcuNiA1Ny4yIDE1IDExMS43IDI4LjcgMjAzLjktMTEuMVY5Ni43Yy01My42IDIzLjUtOTMuMyAzMS40LTEyNi4xIDMxLjRzLTU5LTcuOC04NS43LTE1LjljLTQtMS4yLTguMS0yLjQtMTIuMS0zLjVWNzUuNWM3LjIgMiAxNC4zIDQuMSAyMS4zIDYuMnpNMTYwIDEyOC4xYy04LjggMC0xNi03LjEtMTYtMTYgMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMSAxNiAxNi03LjIgMTYtMTYgMTZ6bTAtNTUuOGMtOC44IDAtMTYtNy4xLTE2LTE2IDAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjEgMTYgMTZjMCA4LjgtNy4yIDE2LTE2IDE2em02NCA0Ny45Yy04LjggMC0xNi03LjEtMTYtMTYgMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMSAxNiAxNmMwIDguOC03LjIgMTYtMTYgMTZ6bTAtNTUuOWMtOC44IDAtMTYtNy4xLTE2LTE2IDAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjEgMTYgMTZjMCA4LjgtNy4yIDE2LTE2IDE2elwiXVxufTtcbnZhciBmYUZsYXNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZsYXNrJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMGMzXCIsIFwiTTQzNy4yIDQwMy41TDMyMCAyMTVWNjRoOGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNEgxMjBjLTEzLjMgMC0yNCAxMC43LTI0IDI0djE2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDh2MTUxTDEwLjggNDAzLjVDLTE4LjUgNDUwLjYgMTUuMyA1MTIgNzAuOSA1MTJoMzA2LjJjNTUuNyAwIDg5LjQtNjEuNSA2MC4xLTEwOC41ek0xMzcuOSAzMjBsNDguMi03Ny42YzMuNy01LjIgNS44LTExLjYgNS44LTE4LjRWNjRoNjR2MTYwYzAgNi45IDIuMiAxMy4yIDUuOCAxOC40bDQ4LjIgNzcuNmgtMTcyelwiXVxufTtcbnZhciBmYUZsdXNoZWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmx1c2hlZCcsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjU3OVwiLCBcIk0zNDQgMjAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHptLTE5MiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHpNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNODAgMjI0YzAtMzkuOCAzMi4yLTcyIDcyLTcyczcyIDMyLjIgNzIgNzItMzIuMiA3Mi03MiA3Mi03Mi0zMi4yLTcyLTcyem0yMzIgMTc2SDE4NGMtMjEuMiAwLTIxLjItMzIgMC0zMmgxMjhjMjEuMiAwIDIxLjIgMzIgMCAzMnptMzItMTA0Yy0zOS44IDAtNzItMzIuMi03Mi03MnMzMi4yLTcyIDcyLTcyIDcyIDMyLjIgNzIgNzItMzIuMiA3Mi03MiA3MnpcIl1cbn07XG52YXIgZmFGb2xkZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZm9sZGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDdiXCIsIFwiTTQ2NCAxMjhIMjcybC02NC02NEg0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjI4OGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjE3NmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4elwiXVxufTtcbnZhciBmYUZvbGRlck1pbnVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZvbGRlci1taW51cycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjY1ZFwiLCBcIk00NjQgMTI4SDI3MmwtNjQtNjRINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYyODhjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0MTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxNzZjMC0yNi41MS0yMS40OS00OC00OC00OHptLTk2IDE2OGMwIDguODQtNy4xNiAxNi0xNiAxNkgxNjBjLTguODQgMC0xNi03LjE2LTE2LTE2di0xNmMwLTguODQgNy4xNi0xNiAxNi0xNmgxOTJjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MTZ6XCJdXG59O1xudmFyIGZhRm9sZGVyT3BlbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmb2xkZXItb3BlbicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjA3Y1wiLCBcIk01NzIuNjk0IDI5Mi4wOTNMNTAwLjI3IDQxNi4yNDhBNjMuOTk3IDYzLjk5NyAwIDAgMSA0NDQuOTg5IDQ0OEg0NS4wMjVjLTE4LjUyMyAwLTMwLjA2NC0yMC4wOTMtMjAuNzMxLTM2LjA5M2w3Mi40MjQtMTI0LjE1NUE2NCA2NCAwIDAgMSAxNTIgMjU2aDM5OS45NjRjMTguNTIzIDAgMzAuMDY0IDIwLjA5MyAyMC43MyAzNi4wOTN6TTE1MiAyMjRoMzI4di00OGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4SDI3MmwtNjQtNjRINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYyNzguMDQ2bDY5LjA3Ny0xMTguNDE4Qzg2LjIxNCAyNDIuMjUgMTE3Ljk4OSAyMjQgMTUyIDIyNHpcIl1cbn07XG52YXIgZmFGb2xkZXJQbHVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZvbGRlci1wbHVzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNjVlXCIsIFwiTTQ2NCwxMjhIMjcyTDIwOCw2NEg0OEE0OCw0OCwwLDAsMCwwLDExMlY0MDBhNDgsNDgsMCwwLDAsNDgsNDhINDY0YTQ4LDQ4LDAsMCwwLDQ4LTQ4VjE3NkE0OCw0OCwwLDAsMCw0NjQsMTI4Wk0zNTkuNSwyOTZhMTYsMTYsMCwwLDEtMTYsMTZoLTY0djY0YTE2LDE2LDAsMCwxLTE2LDE2aC0xNmExNiwxNiwwLDAsMS0xNi0xNlYzMTJoLTY0YTE2LDE2LDAsMCwxLTE2LTE2VjI4MGExNiwxNiwwLDAsMSwxNi0xNmg2NFYyMDBhMTYsMTYsMCwwLDEsMTYtMTZoMTZhMTYsMTYsMCwwLDEsMTYsMTZ2NjRoNjRhMTYsMTYsMCwwLDEsMTYsMTZaXCJdXG59O1xudmFyIGZhRm9udCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmb250JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDMxXCIsIFwiTTQzMiA0MTZoLTIzLjQxTDI3Ny44OCA1My42OUEzMiAzMiAwIDAgMCAyNDcuNTggMzJoLTQ3LjE2YTMyIDMyIDAgMCAwLTMwLjMgMjEuNjlMMzkuNDEgNDE2SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTE5LjU4bDIzLjMtNjRoMTUyLjU2bDIzLjMgNjRIMzA0YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6TTE3Ni44NSAyNzJMMjI0IDE0Mi41MSAyNzEuMTUgMjcyelwiXVxufTtcbnZhciBmYUZvbnRBd2Vzb21lTG9nb0Z1bGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZm9udC1hd2Vzb21lLWxvZ28tZnVsbCcsXG4gIGljb246IFszOTkyLCA1MTIsIFtcIkZvbnQgQXdlc29tZVwiXSwgXCJmNGU2XCIsIFwiTTQ1NC42IDBINTcuNEMyNS45IDAgMCAyNS45IDAgNTcuNHYzOTcuM0MwIDQ4Ni4xIDI1LjkgNTEyIDU3LjQgNTEyaDM5Ny4zYzMxLjQgMCA1Ny40LTI1LjkgNTcuNC01Ny40VjU3LjRDNTEyIDI1LjkgNDg2LjEgMCA0NTQuNiAwem0tNTguOSAzMjQuOWMwIDQuOC00LjEgNi45LTguOSA4LjktMTkuMiA4LjEtMzkuNyAxNS43LTYxLjUgMTUuNy00MC41IDAtNjguNy00NC44LTE2My4yIDIuNXY1MS44YzAgMzAuMy00NS43IDMwLjItNDUuNyAwdi0yNTBjLTktNy0xNS0xNy45LTE1LTMwLjMgMC0yMSAxNy4xLTM4LjIgMzguMi0zOC4yIDIxIDAgMzguMiAxNy4xIDM4LjIgMzguMiAwIDEyLjItNS44IDIzLjItMTQuOSAzMC4ydjIxYzM3LjEtMTIgNjUuNS0zNC40IDE0Ni4xLTMuNCAyNi42IDExLjQgNjguNy0xNS43IDc2LjUtMTUuNyA1LjUgMCAxMC4zIDQuMSAxMC4zIDguOXYxNjAuNHptNDMyLjktMTc0LjJoLTEzN3Y3MC4xSDgyNWMzOS44IDAgNDAuNCA2Mi4yIDAgNjIuMkg2OTEuNnYxMDUuNmMwIDQ1LjUtNzAuNyA0Ni40LTcwLjcgMFYxMjguM2MwLTIyIDE4LTM5LjggMzkuOC0zOS44aDE2Ny44YzM5LjYgMCA0MC41IDYyLjIuMSA2Mi4yem0xOTEuMSAyMy40Yy0xNjkuMyAwLTE2OS4xIDI1Mi40IDAgMjUyLjQgMTY5LjkgMCAxNjkuOS0yNTIuNCAwLTI1Mi40em0wIDE5Ni4xYy04MS42IDAtODIuMS0xMzkuOCAwLTEzOS44IDgyLjUgMCA4Mi40IDEzOS44IDAgMTM5Ljh6bTM3Mi40IDUzLjRjLTE3LjUgMC0zMS40LTEzLjktMzEuNC0zMS40di0xMTdjMC02Mi40LTcyLjYtNTIuNS05OS4xLTE2LjR2MTMzLjRjMCA0MS41LTYzLjMgNDEuOC02My4zIDBWMjA4YzAtNDAgNjMuMS00MS42IDYzLjEgMHYzLjRjNDMuMy01MS42IDE2Mi40LTYwLjQgMTYyLjQgMzkuM3YxNDEuNWMuMyAzMC40LTMxLjUgMzEuNC0zMS43IDMxLjR6bTE3OS43IDIuOWMtNDQuMyAwLTY4LjMtMjIuOS02OC4zLTY1LjhWMjM1LjJIMTQ4OGMtMzUuNiAwLTM2LjctNTUuMyAwLTU1LjNoMTUuNXYtMzcuM2MwLTQxLjMgNjMuOC00Mi4xIDYzLjggMHYzNy41aDI0LjljMzUuNCAwIDM1LjcgNTUuMyAwIDU1LjNoLTI0Ljl2MTA4LjVjMCAyOS42IDI2LjEgMjYuMyAyNy40IDI2LjMgMzEuNCAwIDUyLjYgNTYuMy0yMi45IDU2LjN6TTE5OTIgMTIzYy0xOS41LTUwLjItOTUuNS01MC0xMTQuNSAwLTEwNy4zIDI3NS43LTk5LjUgMjUyLjctOTkuNSAyNjIuOCAwIDQyLjggNTguMyA1MS4yIDcyLjEgMTQuNGwxMy41LTM1LjlIMjAwNmwxMyAzNS45YzE0LjIgMzcuNyA3Mi4xIDI3LjIgNzIuMS0xNC40IDAtMTAuMSA1LjMgNi44LTk5LjEtMjYyLjh6bS0xMDguOSAxNzkuMWw1MS43LTE0Mi45IDUxLjggMTQyLjloLTEwMy41em01OTEuMy04NS42bC01My43IDE3Ni4zYy0xMi40IDQxLjItNzIgNDEtODQgMGwtNDIuMy0xMzUuOS00Mi4zIDEzNS45Yy0xMi40IDQwLjktNzIgNDEuMi04NC41IDBsLTU0LjItMTc2LjNjLTEyLjUtMzkuNCA0OS44LTU2LjEgNjAuMi0xNi45TDIyMTMgMzQybDQ1LjMtMTM5LjVjMTAuOS0zMi43IDU5LjYtMzQuNyA3MS4yIDBsNDUuMyAxMzkuNSAzOS4zLTE0Mi40YzEwLjMtMzguMyA3Mi42LTIzLjggNjAuMyAxNi45em0yNzUuNCA3NS4xYzAtNDIuNC0zMy45LTExNy41LTExOS41LTExNy41LTczLjIgMC0xMjQuNCA1Ni4zLTEyNC40IDEyNiAwIDc3LjIgNTUuMyAxMjYuNCAxMjguNSAxMjYuNCAzMS43IDAgOTMtMTEuNSA5My0zOS44IDAtMTguMy0yMS4xLTMxLjUtMzkuMy0yMi40LTQ5LjQgMjYuMi0xMDkgOC40LTExNS45LTQzLjhoMTQ4LjNjMTYuMyAwIDI5LjMtMTMuNCAyOS4zLTI4Ljl6TTI1NzEgMjc3LjdjOS41LTczLjQgMTEzLjktNjguNiAxMTguNiAwSDI1NzF6bTMxNi43IDE0OC44Yy0zMS40IDAtODEuNi0xMC41LTk2LjYtMzEuOS0xMi40LTE3IDIuNS0zOS44IDIxLjgtMzkuOCAxNi4zIDAgMzYuOCAyMi45IDc3LjcgMjIuOSAyNy40IDAgNDAuNC0xMSA0MC40LTI1LjggMC0zOS44LTE0Mi45LTcuNC0xNDIuOS0xMDIgMC00MC40IDM1LjMtNzUuNyA5OC42LTc1LjcgMzEuNCAwIDc0LjEgOS45IDg3LjYgMjkuNCAxMC44IDE0LjgtMS40IDM2LjItMjAuOSAzNi4yLTE1LjEgMC0yNi43LTE3LjMtNjYuMi0xNy4zLTIyLjkgMC0zNy44IDEwLjUtMzcuOCAyMy44IDAgMzUuOSAxNDIuNCA2IDE0Mi40IDEwMy4xLS4xIDQzLjctMzcuNCA3Ny4xLTEwNC4xIDc3LjF6bTI2Ni44LTI1Mi40Yy0xNjkuMyAwLTE2OS4xIDI1Mi40IDAgMjUyLjQgMTcwLjEgMCAxNjkuNi0yNTIuNCAwLTI1Mi40em0wIDE5Ni4xYy04MS44IDAtODItMTM5LjggMC0xMzkuOCA4Mi41IDAgODIuNCAxMzkuOCAwIDEzOS44em00NzYuOSAyMlYyNjguN2MwLTUzLjgtNjEuNC00NS44LTg1LjctMTAuNXYxMzRjMCA0MS4zLTYzLjggNDIuMS02My44IDBWMjY4LjdjMC01Mi4xLTU5LjUtNDcuNC04NS43LTEwLjF2MTMzLjZjMCA0MS41LTYzLjMgNDEuOC02My4zIDBWMjA4YzAtNDAgNjMuMS00MS42IDYzLjEgMHYzLjRjOS45LTE0LjQgNDEuOC0zNy4zIDc4LjYtMzcuMyAzNS4zIDAgNTcuNyAxNi40IDY2LjcgNDMuOCAxMy45LTIxLjggNDUuOC00My44IDgyLjYtNDMuOCA0NC4zIDAgNzAuNyAyMy40IDcwLjcgNzIuN3YxNDUuM2MuNSAxNy4zLTEzLjUgMzEuNC0zMS45IDMxLjQgMy41LjEtMzEuMyAxLjEtMzEuMy0zMS4zek0zOTkyIDI5MS42YzAtNDIuNC0zMi40LTExNy41LTExNy45LTExNy41LTczLjIgMC0xMjcuNSA1Ni4zLTEyNy41IDEyNiAwIDc3LjIgNTguMyAxMjYuNCAxMzEuNiAxMjYuNCAzMS43IDAgOTEuNS0xMS41IDkxLjUtMzkuOCAwLTE4LjMtMjEuMS0zMS41LTM5LjMtMjIuNC00OS40IDI2LjItMTEwLjUgOC40LTExNy41LTQzLjhoMTQ5LjhjMTYuMyAwIDI5LjEtMTMuNCAyOS4zLTI4Ljl6bS0xODAuNS0xMy45YzkuNy03NC40IDExNS45LTY4LjMgMTIwLjEgMGgtMTIwLjF6XCJdXG59O1xudmFyIGZhRm9vdGJhbGxCYWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Zvb3RiYWxsLWJhbGwnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY0NGVcIiwgXCJNNDgxLjUgNjAuM2MtNC44LTE4LjItMTkuMS0zMi41LTM3LjMtMzcuNEM0MjAuMyAxNi41IDM4MyA4LjkgMzM5LjQgOEw0OTYgMTY0LjhjLS44LTQzLjUtOC4yLTgwLjYtMTQuNS0xMDQuNXptLTQ2NyAzOTEuNGM0LjggMTguMiAxOS4xIDMyLjUgMzcuMyAzNy40IDIzLjkgNi40IDYxLjIgMTQgMTA0LjggMTQuOUwwIDM0Ny4yYy44IDQzLjUgOC4yIDgwLjYgMTQuNSAxMDQuNXpNNC4yIDI4My40TDIyMC40IDUwMGMxMzIuNS0xOS40IDI0OC44LTExOC43IDI3MS41LTI3MS40TDI3NS42IDEyQzE0My4xIDMxLjQgMjYuOCAxMzAuNyA0LjIgMjgzLjR6bTMxNy4zLTEyMy42YzMuMS0zLjEgOC4yLTMuMSAxMS4zIDBsMTEuMyAxMS4zYzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTI4LjMgMjguMyAyOC4zIDI4LjNjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM2wtMTEuMyAxMS4zYy0zLjEgMy4xLTguMiAzLjEtMTEuMyAwbC0yOC4zLTI4LjMtMjIuNiAyMi43IDI4LjMgMjguM2MzLjEgMy4xIDMuMSA4LjIgMCAxMS4zbC0xMS4zIDExLjNjLTMuMSAzLjEtOC4yIDMuMS0xMS4zIDBMMjQ4IDI3OC42bC0yMi42IDIyLjYgMjguMyAyOC4zYzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTExLjMgMTEuM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMGwtMjguMy0yOC4zLTI4LjMgMjguM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMGwtMTEuMy0xMS4zYy0zLjEtMy4xLTMuMS04LjIgMC0xMS4zbDI4LjMtMjguMy0yOC4zLTI4LjJjLTMuMS0zLjEtMy4xLTguMiAwLTExLjNsMTEuMy0xMS4zYzMuMS0zLjEgOC4yLTMuMSAxMS4zIDBsMjguMyAyOC4zIDIyLjYtMjIuNi0yOC4zLTI4LjNjLTMuMS0zLjEtMy4xLTguMiAwLTExLjNsMTEuMy0xMS4zYzMuMS0zLjEgOC4yLTMuMSAxMS4zIDBsMjguMyAyOC4zIDIyLjYtMjIuNi0yOC4zLTI4LjNjLTMuMS0zLjEtMy4xLTguMiAwLTExLjNsMTEuMy0xMS4zYzMuMS0zLjEgOC4yLTMuMSAxMS4zIDBsMjguMyAyOC4zIDI4LjMtMjguNXpcIl1cbn07XG52YXIgZmFGb3J3YXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZvcndhcmQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwNGVcIiwgXCJNNTAwLjUgMjMxLjRsLTE5Mi0xNjBDMjg3LjkgNTQuMyAyNTYgNjguNiAyNTYgOTZ2MzIwYzAgMjcuNCAzMS45IDQxLjggNTIuNSAyNC42bDE5Mi0xNjBjMTUuMy0xMi44IDE1LjMtMzYuNCAwLTQ5LjJ6bS0yNTYgMGwtMTkyLTE2MEMzMS45IDU0LjMgMCA2OC42IDAgOTZ2MzIwYzAgMjcuNCAzMS45IDQxLjggNTIuNSAyNC42bDE5Mi0xNjBjMTUuMy0xMi44IDE1LjMtMzYuNCAwLTQ5LjJ6XCJdXG59O1xudmFyIGZhRnJvZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmcm9nJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTJlXCIsIFwiTTQ0Ni41MyA5Ny40M0M0MzkuNjcgNjAuMjMgNDA3LjE5IDMyIDM2OCAzMmMtMzkuMjMgMC03MS43MiAyOC4yOS03OC41NCA2NS41NEMxMjYuNzUgMTEyLjk2LS41IDI1MC4xMiAwIDQxNi45OC4xMSA0NTEuOSAyOS4wOCA0ODAgNjQgNDgwaDMwNGM4Ljg0IDAgMTYtNy4xNiAxNi0xNiAwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC03OS40OWwzNS44LTQ4LjMzYzI0LjE0LTM2LjIzIDEwLjM1LTg4LjI4LTMzLjcxLTEwNi42LTIzLjg5LTkuOTMtNTEuNTUtNC42NS03Mi4yNCAxMC44OGwtMzIuNzYgMjQuNTljLTcuMDYgNS4zMS0xNy4wOSAzLjkxLTIyLjQxLTMuMTktNS4zLTcuMDgtMy44OC0xNy4xMSAzLjE5LTIyLjQxbDM0Ljc4LTI2LjA5YzM2Ljg0LTI3LjY2IDg4LjI4LTI3LjYyIDEyNS4xMyAwIDEwLjg3IDguMTUgNDUuODcgMzkuMDYgNDAuOCA5My4yMUw0NjkuNjIgNDgwSDU2MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNiAwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC01My42M2wtOTguNTItMTA0LjY4IDE1NC40NC04Ni42NUE1OC4xNiA1OC4xNiAwIDAgMCA1NzYgMTg5Ljk0YzAtMjEuNC0xMS43Mi00MC45NS0zMC40OC01MS4yMy00MC41Ni0yMi4yMi05OC45OS00MS4yOC05OC45OS00MS4yOHpNMzY4IDEzNmMtMTMuMjYgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc0LTI0IDI0LTI0IDEzLjI1IDAgMjQgMTAuNzQgMjQgMjQgMCAxMy4yNS0xMC43NSAyNC0yNCAyNHpcIl1cbn07XG52YXIgZmFGcm93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmcm93bicsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjExOVwiLCBcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em04MCAxNjhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyem0tMTYwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyem0xNzAuMiAyMTguMkMzMTUuOCAzNjcuNCAyODIuOSAzNTIgMjQ4IDM1MnMtNjcuOCAxNS40LTkwLjIgNDIuMmMtMTMuNSAxNi4zLTM4LjEtNC4yLTI0LjYtMjAuNUMxNjEuNyAzMzkuNiAyMDMuNiAzMjAgMjQ4IDMyMHM4Ni4zIDE5LjYgMTE0LjcgNTMuOGMxMy42IDE2LjItMTEgMzYuNy0yNC41IDIwLjR6XCJdXG59O1xudmFyIGZhRnJvd25PcGVuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Zyb3duLW9wZW4nLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1N2FcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNMTM2IDIwOGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMnptMTg3LjMgMTgzLjNjLTMxLjItOS42LTU5LjQtMTUuMy03NS4zLTE1LjNzLTQ0LjEgNS43LTc1LjMgMTUuM2MtMTEuNSAzLjUtMjIuNS02LjMtMjAuNS0xOC4xIDctNDAgNjAuMS02MS4yIDk1LjgtNjEuMnM4OC44IDIxLjMgOTUuOCA2MS4yYzIgMTEuOS05LjEgMjEuNi0yMC41IDE4LjF6TTMyOCAyNDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYUZ1bm5lbERvbGxhciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmdW5uZWwtZG9sbGFyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNjYyXCIsIFwiTTQzMy40NiAxNjUuOTRsMTAxLjItMTExLjg3QzU1NC42MSAzNC4xMiA1NDAuNDggMCA1MTIuMjYgMEgzMS43NEMzLjUyIDAtMTAuNjEgMzQuMTIgOS4zNCA1NC4wN0wxOTIgMjU2djE1NS45MmMwIDEyLjU5IDUuOTMgMjQuNDQgMTYgMzJsNzkuOTkgNjBjMjAuODYgMTUuNjQgNDguNDcgNi45NyA1OS4yMi0xMy41N0MzMTAuOCA0NTUuMzggMjg4IDQwNi4zNSAyODggMzUyYzAtODkuNzkgNjIuMDUtMTY1LjE3IDE0NS40Ni0xODYuMDZ6TTQ4MCAxOTJjLTg4LjM3IDAtMTYwIDcxLjYzLTE2MCAxNjBzNzEuNjMgMTYwIDE2MCAxNjAgMTYwLTcxLjYzIDE2MC0xNjAtNzEuNjMtMTYwLTE2MC0xNjB6bTE2IDIzOS44OFY0NDhjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtMTYuMjljLTExLjI5LS41OC0yMi4yNy00LjUyLTMxLjM3LTExLjM1LTMuOS0yLjkzLTQuMS04Ljc3LS41Ny0xMi4xNGwxMS43NS0xMS4yMWMyLjc3LTIuNjQgNi44OS0yLjc2IDEwLjEzLS43MyAzLjg3IDIuNDIgOC4yNiAzLjcyIDEyLjgyIDMuNzJoMjguMTFjNi41IDAgMTEuOC01LjkyIDExLjgtMTMuMTkgMC01Ljk1LTMuNjEtMTEuMTktOC43Ny0xMi43M2wtNDUtMTMuNWMtMTguNTktNS41OC0zMS41OC0yMy40Mi0zMS41OC00My4zOSAwLTI0LjUyIDE5LjA1LTQ0LjQ0IDQyLjY3LTQ1LjA3VjI1NmMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHYxNi4yOWMxMS4yOS41OCAyMi4yNyA0LjUxIDMxLjM3IDExLjM1IDMuOSAyLjkzIDQuMSA4Ljc3LjU3IDEyLjE0bC0xMS43NSAxMS4yMWMtMi43NyAyLjY0LTYuODkgMi43Ni0xMC4xMy43My0zLjg3LTIuNDMtOC4yNi0zLjcyLTEyLjgyLTMuNzJoLTI4LjExYy02LjUgMC0xMS44IDUuOTItMTEuOCAxMy4xOSAwIDUuOTUgMy42MSAxMS4xOSA4Ljc3IDEyLjczbDQ1IDEzLjVjMTguNTkgNS41OCAzMS41OCAyMy40MiAzMS41OCA0My4zOSAwIDI0LjUzLTE5LjA0IDQ0LjQ0LTQyLjY3IDQ1LjA3elwiXVxufTtcbnZhciBmYUZ1dGJvbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmdXRib2wnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxZTNcIiwgXCJNNTA0IDI1NmMwIDEzNi45NjctMTExLjAzMyAyNDgtMjQ4IDI0OFM4IDM5Mi45NjcgOCAyNTYgMTE5LjAzMyA4IDI1NiA4czI0OCAxMTEuMDMzIDI0OCAyNDh6bS00OCAwbC0uMDAzLS4yODItMjYuMDY0IDIyLjc0MS02Mi42NzktNTguNSAxNi40NTQtODQuMzU1IDM0LjMwMyAzLjA3MmMtMjQuODg5LTM0LjIxNi02MC4wMDQtNjAuMDg5LTEwMC43MDktNzMuMTQxbDEzLjY1MSAzMS45MzlMMjU2IDEzOWwtNzQuOTUzLTQxLjUyNSAxMy42NTEtMzEuOTM5Yy00MC42MzEgMTMuMDI4LTc1Ljc4IDM4Ljg3LTEwMC43MDkgNzMuMTQxbDM0LjU2NS0zLjA3MyAxNi4xOTIgODQuMzU1LTYyLjY3OCA1OC41LTI2LjA2NC0yMi43NDEtLjAwMy4yODJjMCA0My4wMTUgMTMuNDk3IDgzLjk1MiAzOC40NzIgMTE3Ljk5MWw3LjcwNC0zMy44OTcgODUuMTM4IDEwLjQ0NyAzNi4zMDEgNzcuODI2LTI5LjkwMiAxNy43ODZjNDAuMjAyIDEzLjEyMiA4NC4yOSAxMy4xNDggMTI0LjU3MiAwbC0yOS45MDItMTcuNzg2IDM2LjMwMS03Ny44MjYgODUuMTM4LTEwLjQ0NyA3LjcwNCAzMy44OTdDNDQyLjUwMyAzMzkuOTUyIDQ1NiAyOTkuMDE1IDQ1NiAyNTZ6bS0yNDguMTAyIDY5LjU3MWwtMjkuODk0LTkxLjMxMkwyNTYgMTc3LjczMmw3Ny45OTYgNTYuNTI3LTI5LjYyMiA5MS4zMTJoLTk2LjQ3NnpcIl1cbn07XG52YXIgZmFHYW1lcGFkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dhbWVwYWQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYxMWJcIiwgXCJNNDgwLjA3IDk2SDE2MGExNjAgMTYwIDAgMSAwIDExNC4yNCAyNzJoOTEuNTJBMTYwIDE2MCAwIDEgMCA0ODAuMDcgOTZ6TTI0OCAyNjhhMTIgMTIgMCAwIDEtMTIgMTJoLTUydjUyYTEyIDEyIDAgMCAxLTEyIDEyaC0yNGExMiAxMiAwIDAgMS0xMi0xMnYtNTJIODRhMTIgMTIgMCAwIDEtMTItMTJ2LTI0YTEyIDEyIDAgMCAxIDEyLTEyaDUydi01MmExMiAxMiAwIDAgMSAxMi0xMmgyNGExMiAxMiAwIDAgMSAxMiAxMnY1Mmg1MmExMiAxMiAwIDAgMSAxMiAxMnptMjE2IDc2YTQwIDQwIDAgMSAxIDQwLTQwIDQwIDQwIDAgMCAxLTQwIDQwem02NC05NmE0MCA0MCAwIDEgMSA0MC00MCA0MCA0MCAwIDAgMS00MCA0MHpcIl1cbn07XG52YXIgZmFHYXNQdW1wID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dhcy1wdW1wJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNTJmXCIsIFwiTTMzNiA0NDhIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzIwYzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2em0xNTcuMi0zNDAuN2wtODEtODFjLTYuMi02LjItMTYuNC02LjItMjIuNiAwbC0xMS4zIDExLjNjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42TDQxNiA5Ny45VjE2MGMwIDI4LjEgMjAuOSA1MS4zIDQ4IDU1LjJWMzc2YzAgMTMuMi0xMC44IDI0LTI0IDI0cy0yNC0xMC44LTI0LTI0di0zMmMwLTQ4LjYtMzkuNC04OC04OC04OGgtOFY2NGMwLTM1LjMtMjguNy02NC02NC02NEg5NkM2MC43IDAgMzIgMjguNyAzMiA2NHYzNTJoMjg4VjMwNGg4YzIyLjEgMCA0MCAxNy45IDQwIDQwdjI3LjhjMCAzNy43IDI3IDcyIDY0LjUgNzUuOSA0MyA0LjMgNzkuNS0yOS41IDc5LjUtNzEuN1YxNTIuNmMwLTE3LTYuOC0zMy4zLTE4LjgtNDUuM3pNMjU2IDE5Mkg5NlY2NGgxNjB2MTI4elwiXVxufTtcbnZhciBmYUdhdmVsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dhdmVsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMGUzXCIsIFwiTTUwNC45NzEgMTk5LjM2MmwtMjIuNjI3LTIyLjYyN2MtOS4zNzMtOS4zNzMtMjQuNTY5LTkuMzczLTMzLjk0MSAwbC01LjY1NyA1LjY1N0wzMjkuNjA4IDY5LjI1NWw1LjY1Ny01LjY1N2M5LjM3My05LjM3MyA5LjM3My0yNC41NjkgMC0zMy45NDFMMzEyLjYzOCA3LjAyOWMtOS4zNzMtOS4zNzMtMjQuNTY5LTkuMzczLTMzLjk0MSAwTDE1NC4yNDYgMTMxLjQ4Yy05LjM3MyA5LjM3My05LjM3MyAyNC41NjkgMCAzMy45NDFsMjIuNjI3IDIyLjYyN2M5LjM3MyA5LjM3MyAyNC41NjkgOS4zNzMgMzMuOTQxIDBsNS42NTctNS42NTcgMzkuNTk4IDM5LjU5OC04MS4wNCA4MS4wNC01LjY1Ny01LjY1N2MtMTIuNDk3LTEyLjQ5Ny0zMi43NTgtMTIuNDk3LTQ1LjI1NSAwTDkuMzczIDQxMi4xMThjLTEyLjQ5NyAxMi40OTctMTIuNDk3IDMyLjc1OCAwIDQ1LjI1NWw0NS4yNTUgNDUuMjU1YzEyLjQ5NyAxMi40OTcgMzIuNzU4IDEyLjQ5NyA0NS4yNTUgMGwxMTQuNzQ1LTExNC43NDVjMTIuNDk3LTEyLjQ5NyAxMi40OTctMzIuNzU4IDAtNDUuMjU1bC01LjY1Ny01LjY1NyA4MS4wNC04MS4wNCAzOS41OTggMzkuNTk4LTUuNjU3IDUuNjU3Yy05LjM3MyA5LjM3My05LjM3MyAyNC41NjkgMCAzMy45NDFsMjIuNjI3IDIyLjYyN2M5LjM3MyA5LjM3MyAyNC41NjkgOS4zNzMgMzMuOTQxIDBsMTI0LjQ1MS0xMjQuNDUxYzkuMzcyLTkuMzcyIDkuMzcyLTI0LjU2OCAwLTMzLjk0MXpcIl1cbn07XG52YXIgZmFHZW0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2VtJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmM2E1XCIsIFwiTTQ4NS41IDBMNTc2IDE2MEg0NzQuOUw0MDUuNyAwaDc5Ljh6bS0xMjggMGw2OS4yIDE2MEgxNDkuM0wyMTguNSAwaDEzOXptLTI2NyAwaDc5LjhsLTY5LjIgMTYwSDBMOTAuNSAwek0wIDE5MmgxMDAuN2wxMjMgMjUxLjdjMS41IDMuMS0yLjcgNS45LTUgMy4zTDAgMTkyem0xNDguMiAwaDI3OS42bC0xMzcgMzE4LjJjLTEgMi40LTQuNSAyLjQtNS41IDBMMTQ4LjIgMTkyem0yMDQuMSAyNTEuN2wxMjMtMjUxLjdINTc2TDM1Ny4zIDQ0Ni45Yy0yLjMgMi43LTYuNS0uMS01LTMuMnpcIl1cbn07XG52YXIgZmFHZW5kZXJsZXNzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dlbmRlcmxlc3MnLFxuICBpY29uOiBbMjg4LCA1MTIsIFtdLCBcImYyMmRcIiwgXCJNMTQ0IDE3NmM0NC4xIDAgODAgMzUuOSA4MCA4MHMtMzUuOSA4MC04MCA4MC04MC0zNS45LTgwLTgwIDM1LjktODAgODAtODBtMC02NEM2NC41IDExMiAwIDE3Ni41IDAgMjU2czY0LjUgMTQ0IDE0NCAxNDQgMTQ0LTY0LjUgMTQ0LTE0NC02NC41LTE0NC0xNDQtMTQ0elwiXVxufTtcbnZhciBmYUdob3N0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dob3N0JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNmUyXCIsIFwiTTE4Ni4xLjA5QzgxLjAxIDMuMjQgMCA5NC45MiAwIDIwMC4wNXYyNjMuOTJjMCAxNC4yNiAxNy4yMyAyMS4zOSAyNy4zMSAxMS4zMWwyNC45Mi0xOC41M2M2LjY2LTQuOTUgMTYtMy45OSAyMS41MSAyLjIxbDQyLjk1IDQ4LjM1YzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsNDAuNzItNDUuODVjNi4zNy03LjE3IDE3LjU2LTcuMTcgMjMuOTIgMGw0MC43MiA0NS44NWM2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDQyLjk1LTQ4LjM1YzUuNTEtNi4yIDE0Ljg1LTcuMTcgMjEuNTEtMi4yMWwyNC45MiAxOC41M2MxMC4wOCAxMC4wOCAyNy4zMSAyLjk0IDI3LjMxLTExLjMxVjE5MkMzODQgODQgMjk0LjgzLTMuMTcgMTg2LjEuMDl6TTEyOCAyMjRjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTEyOCAwYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYUdpZnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2lmdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjA2YlwiLCBcIk0zMiA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJoMTYwVjMyMEgzMnYxMjh6bTI1NiAzMmgxNjBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzIwSDI4OHYxNjB6bTE5Mi0zMjBoLTQyLjFjNi4yLTEyLjEgMTAuMS0yNS41IDEwLjEtNDAgMC00OC41LTM5LjUtODgtODgtODgtNDEuNiAwLTY4LjUgMjEuMy0xMDMgNjguMy0zNC41LTQ3LTYxLjQtNjguMy0xMDMtNjguMy00OC41IDAtODggMzkuNS04OCA4OCAwIDE0LjUgMy44IDI3LjkgMTAuMSA0MEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2ODBjMCA4LjggNy4yIDE2IDE2IDE2aDQ4MGM4LjggMCAxNi03LjIgMTYtMTZ2LTgwYzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tMzI2LjEgMGMtMjIuMSAwLTQwLTE3LjktNDAtNDBzMTcuOS00MCA0MC00MGMxOS45IDAgMzQuNiAzLjMgODYuMSA4MGgtODYuMXptMjA2LjEgMGgtODYuMWM1MS40LTc2LjUgNjUuNy04MCA4Ni4xLTgwIDIyLjEgMCA0MCAxNy45IDQwIDQwcy0xNy45IDQwLTQwIDQwelwiXVxufTtcbnZhciBmYUdpZnRzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dpZnRzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNzljXCIsIFwiTTI0MC42IDE5NC4xYzEuOS0zMC44IDE3LjMtNjEuMiA0NC03OS44QzI3OS40IDEwMy41IDI2OC43IDk2IDI1NiA5NmgtMjkuNGwzMC43LTIyYzcuMi01LjEgOC45LTE1LjEgMy43LTIyLjNsLTkuMy0xM2MtNS4xLTcuMi0xNS4xLTguOS0yMi4zLTMuN2wtMzIgMjIuOSAxMS41LTMwLjZjMy4xLTguMy0xLjEtMTcuNS05LjQtMjAuNmwtMTUtNS42Yy04LjMtMy4xLTE3LjUgMS4xLTIwLjYgOS40bC0xOS45IDUzLTE5LjktNTMuMUMxMjEgMi4xIDExMS44LTIuMSAxMDMuNSAxbC0xNSA1LjZDODAuMiA5LjcgNzYgMTkgNzkuMiAyNy4ybDExLjUgMzAuNkw1OC42IDM1Yy03LjItNS4xLTE3LjItMy41LTIyLjMgMy43bC05LjMgMTNjLTUuMSA3LjItMy41IDE3LjIgMy43IDIyLjNsMzAuNyAyMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDE2OC45Yy01LjUtOS41LTguOS0yMC4zLTguOS0zMlYyNTZjMC0yOS45IDIwLjgtNTUgNDguNi02MS45ek0yMjQgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDE2MFYzODRIMjI0djk2em0yMjQgMzJoMTYwYzE3LjcgMCAzMi0xNC4zIDMyLTMydi05Nkg0NDh2MTI4em0xNjAtMjg4aC0yMC40YzIuNi03LjYgNC40LTE1LjUgNC40LTIzLjggMC0zNS41LTI3LTcyLjItNzIuMS03Mi4yLTQ4LjEgMC03NS45IDQ3LjctODcuOSA3NS4zLTEyLjEtMjcuNi0zOS45LTc1LjMtODcuOS03NS4zLTQ1LjEgMC03Mi4xIDM2LjctNzIuMSA3Mi4yIDAgOC4zIDEuNyAxNi4yIDQuNCAyMy44SDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZoMTkyVjIyNGgxNS4zbC43LS4yLjcuMkg0NDh2MTI4aDE5MnYtOTZjMC0xNy43LTE0LjMtMzItMzItMzJ6bS0yNzIgMGMtMi43LTEuNC01LjEtMy03LjItNC44LTcuMy02LjQtOC44LTEzLjgtOC44LTE5IDAtOS43IDYuNC0yNC4yIDI0LjEtMjQuMiAxOC43IDAgMzUuNiAyNy40IDQ0LjUgNDhIMzM2em0xOTkuMi00LjhjLTIuMSAxLjgtNC41IDMuNC03LjIgNC44aC01Mi42YzguOC0yMC4zIDI1LjgtNDggNDQuNS00OCAxNy43IDAgMjQuMSAxNC41IDI0LjEgMjQuMiAwIDUuMi0xLjUgMTIuNi04LjggMTl6XCJdXG59O1xudmFyIGZhR2xhc3NDaGVlcnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2xhc3MtY2hlZXJzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNzlmXCIsIFwiTTYzOS40IDQzMy42Yy04LjQtMjAuNC0zMS44LTMwLjEtNTIuMi0yMS42bC0yMi4xIDkuMi0zOC43LTEwMS45YzQ3LjktMzUgNjQuOC0xMDAuMyAzNC41LTE1Mi44TDQ3NC4zIDE2Yy04LTEzLjktMjUuMS0xOS43LTQwLTEzLjZMMzIwIDQ5LjggMjA1LjcgMi40Yy0xNC45LTYuMi0zMi0uMy00MCAxMy42TDc5LjEgMTY2LjVDNDguOSAyMTkgNjUuNyAyODQuMyAxMTMuNiAzMTkuMkw3NC45IDQyMS4xbC0yMi4xLTkuMmMtMjAuNC04LjUtNDMuNyAxLjItNTIuMiAyMS42LTEuNyA0LjEuMiA4LjggNC4zIDEwLjVsMTYyLjMgNjcuNGM0LjEgMS43IDguNy0uMiAxMC40LTQuMyA4LjQtMjAuNC0xLjItNDMuOC0yMS42LTUyLjNsLTIyLjEtOS4yTDE3My4zIDM0MmM0LjQuNSA4LjggMS4zIDEzLjEgMS4zIDUxLjcgMCA5OS40LTMzLjEgMTEzLjQtODUuM2wyMC4yLTc1LjQgMjAuMiA3NS40YzE0IDUyLjIgNjEuNyA4NS4zIDExMy40IDg1LjMgNC4zIDAgOC43LS44IDEzLjEtMS4zTDUwNiA0NDUuNmwtMjIuMSA5LjJjLTIwLjQgOC41LTMwLjEgMzEuOS0yMS42IDUyLjMgMS43IDQuMSA2LjQgNiAxMC40IDQuM0w2MzUuMSA0NDRjNC0xLjcgNi02LjMgNC4zLTEwLjR6TTI3NS45IDE2Mi4xbC0xMTIuMS00Ni41IDM2LjUtNjMuNCA5NC41IDM5LjItMTguOSA3MC43em04OC4yIDBsLTE4LjktNzAuNyA5NC41LTM5LjIgMzYuNSA2My40LTExMi4xIDQ2LjV6XCJdXG59O1xudmFyIGZhR2xhc3NNYXJ0aW5pID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dsYXNzLW1hcnRpbmknLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwMDBcIiwgXCJNNTAyLjA1IDU3LjZDNTIzLjMgMzYuMzQgNTA4LjI1IDAgNDc4LjIgMEgzMy44QzMuNzUgMC0xMS4zIDM2LjM0IDkuOTUgNTcuNkwyMjQgMjcxLjY0VjQ2NGgtNTZjLTIyLjA5IDAtNDAgMTcuOTEtNDAgNDAgMCA0LjQyIDMuNTggOCA4IDhoMjQwYzQuNDIgMCA4LTMuNTggOC04IDAtMjIuMDktMTcuOTEtNDAtNDAtNDBoLTU2VjI3MS42NEw1MDIuMDUgNTcuNnpcIl1cbn07XG52YXIgZmFHbGFzc01hcnRpbmlBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2xhc3MtbWFydGluaS1hbHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1N2JcIiwgXCJNNTAyLjA1IDU3LjZDNTIzLjMgMzYuMzQgNTA4LjI1IDAgNDc4LjIgMEgzMy44QzMuNzUgMC0xMS4zIDM2LjM0IDkuOTUgNTcuNkwyMjQgMjcxLjY0VjQ2NGgtNTZjLTIyLjA5IDAtNDAgMTcuOTEtNDAgNDAgMCA0LjQyIDMuNTggOCA4IDhoMjQwYzQuNDIgMCA4LTMuNTggOC04IDAtMjIuMDktMTcuOTEtNDAtNDAtNDBoLTU2VjI3MS42NEw1MDIuMDUgNTcuNnpNNDQzLjc3IDQ4bC00OCA0OEgxMTYuMjRsLTQ4LTQ4aDM3NS41M3pcIl1cbn07XG52YXIgZmFHbGFzc1doaXNrZXkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2xhc3Mtd2hpc2tleScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjdhMFwiLCBcIk00ODAgMzJIMzJDMTIuNSAzMi0yLjQgNDkuMi4zIDY4LjVsNTYgMzU2LjVjNC41IDMxLjUgMzEuNSA1NC45IDYzLjQgNTQuOWgyNzNjMzEuOCAwIDU4LjktMjMuNCA2My40LTU0LjlsNTUuNi0zNTYuNUM1MTQuNCA0OS4yIDQ5OS41IDMyIDQ4MCAzMnptLTM3LjQgNjRsLTMwIDE5MmgtMzEzTDY5LjQgOTZoMzczLjJ6XCJdXG59O1xudmFyIGZhR2xhc3NlcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdnbGFzc2VzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTMwXCIsIFwiTTU3NC4xIDI4MC4zN0w1MjguNzUgOTguNjZjLTUuOTEtMjMuNy0yMS41OS00NC4wNS00My01NS44MS0yMS40NC0xMS43My00Ni45Ny0xNC4xMS03MC4xOS02LjMzbC0xNS4yNSA1LjA4Yy04LjM5IDIuNzktMTIuOTIgMTEuODYtMTAuMTIgMjAuMjRsNS4wNiAxNS4xOGMyLjc5IDguMzggMTEuODUgMTIuOTEgMjAuMjMgMTAuMTJsMTMuMTgtNC4zOWMxMC44Ny0zLjYyIDIzLTMuNTcgMzMuMTYgMS43MyAxMC4yOSA1LjM3IDE3LjU3IDE0LjU2IDIwLjM3IDI1LjgybDM4LjQ2IDE1My44MmMtMjIuMTktNi44MS00OS43OS0xMi40Ni04MS4yLTEyLjQ2LTM0Ljc3IDAtNzMuOTggNy4wMi0xMTQuODUgMjYuNzRoLTczLjE4Yy00MC44Ny0xOS43NC04MC4wOC0yNi43NS0xMTQuODYtMjYuNzUtMzEuNDIgMC01OS4wMiA1LjY1LTgxLjIxIDEyLjQ2bDM4LjQ2LTE1My44M2MyLjc5LTExLjI1IDEwLjA5LTIwLjQ1IDIwLjM4LTI1LjgxIDEwLjE2LTUuMyAyMi4yOC01LjM1IDMzLjE1LTEuNzNsMTMuMTcgNC4zOWM4LjM4IDIuNzkgMTcuNDQtMS43NCAyMC4yMy0xMC4xMmw1LjA2LTE1LjE4YzIuOC04LjM4LTEuNzMtMTcuNDUtMTAuMTItMjAuMjRsLTE1LjI1LTUuMDhjLTIzLjIyLTcuNzgtNDguNzUtNS40MS03MC4xOSA2LjMzLTIxLjQxIDExLjc3LTM3LjA5IDMyLjExLTQzIDU1LjhMMS45IDI4MC4zN0E2NC4yMTggNjQuMjE4IDAgMCAwIDAgMjk1Ljg2djcwLjI1QzAgNDI5LjAxIDUxLjU4IDQ4MCAxMTUuMiA0ODBoMzcuMTJjNjAuMjggMCAxMTAuMzctNDUuOTQgMTE0Ljg4LTEwNS4zN2wyLjkzLTM4LjYzaDM1Ljc1bDIuOTMgMzguNjNDMzEzLjMxIDQzNC4wNiAzNjMuNCA0ODAgNDIzLjY4IDQ4MGgzNy4xMmM2My42MiAwIDExNS4yLTUwLjk5IDExNS4yLTExMy44OHYtNzAuMjVjMC01LjIzLS42NC0xMC40My0xLjktMTUuNXptLTM3MC43MiA4OS40MmMtMS45NyAyNS45MS0yNC40IDQ2LjIxLTUxLjA2IDQ2LjIxSDExNS4yQzg2Ljk3IDQxNiA2NCAzOTMuNjIgNjQgMzY2LjExdi0zNy41NGMxOC4xMi02LjQ5IDQzLjQyLTEyLjkyIDcyLjU4LTEyLjkyIDIzLjg2IDAgNDcuMjYgNC4zMyA2OS45MyAxMi45MmwtMy4xMyA0MS4yMnpNNTEyIDM2Ni4xMmMwIDI3LjUxLTIyLjk3IDQ5Ljg4LTUxLjIgNDkuODhoLTM3LjEyYy0yNi42NyAwLTQ5LjEtMjAuMy01MS4wNi00Ni4yMWwtMy4xMy00MS4yMmMyMi42Ny04LjU5IDQ2LjA4LTEyLjkyIDY5Ljk1LTEyLjkyIDI5LjEyIDAgNTQuNDMgNi40NCA3Mi41NSAxMi45M3YzNy41NHpcIl1cbn07XG52YXIgZmFHbG9iZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdnbG9iZScsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjBhY1wiLCBcIk0zMzYuNSAxNjBDMzIyIDcwLjcgMjg3LjggOCAyNDggOHMtNzQgNjIuNy04OC41IDE1MmgxNzd6TTE1MiAyNTZjMCAyMi4yIDEuMiA0My41IDMuMyA2NGgxODUuM2MyLjEtMjAuNSAzLjMtNDEuOCAzLjMtNjRzLTEuMi00My41LTMuMy02NEgxNTUuM2MtMi4xIDIwLjUtMy4zIDQxLjgtMy4zIDY0em0zMjQuNy05NmMtMjguNi02Ny45LTg2LjUtMTIwLjQtMTU4LTE0MS42IDI0LjQgMzMuOCA0MS4yIDg0LjcgNTAgMTQxLjZoMTA4ek0xNzcuMiAxOC40QzEwNS44IDM5LjYgNDcuOCA5Mi4xIDE5LjMgMTYwaDEwOGM4LjctNTYuOSAyNS41LTEwNy44IDQ5LjktMTQxLjZ6TTQ4Ny40IDE5MkgzNzIuN2MyLjEgMjEgMy4zIDQyLjUgMy4zIDY0cy0xLjIgNDMtMy4zIDY0aDExNC42YzUuNS0yMC41IDguNi00MS44IDguNi02NHMtMy4xLTQzLjUtOC41LTY0ek0xMjAgMjU2YzAtMjEuNSAxLjItNDMgMy4zLTY0SDguNkMzLjIgMjEyLjUgMCAyMzMuOCAwIDI1NnMzLjIgNDMuNSA4LjYgNjRoMTE0LjZjLTItMjEtMy4yLTQyLjUtMy4yLTY0em0zOS41IDk2YzE0LjUgODkuMyA0OC43IDE1MiA4OC41IDE1MnM3NC02Mi43IDg4LjUtMTUyaC0xNzd6bTE1OS4zIDE0MS42YzcxLjQtMjEuMiAxMjkuNC03My43IDE1OC0xNDEuNmgtMTA4Yy04LjggNTYuOS0yNS42IDEwNy44LTUwIDE0MS42ek0xOS4zIDM1MmMyOC42IDY3LjkgODYuNSAxMjAuNCAxNTggMTQxLjYtMjQuNC0zMy44LTQxLjItODQuNy01MC0xNDEuNmgtMTA4elwiXVxufTtcbnZhciBmYUdsb2JlQWZyaWNhID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dsb2JlLWFmcmljYScsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjU3Y1wiLCBcIk0yNDggOEMxMTEuMDMgOCAwIDExOS4wMyAwIDI1NnMxMTEuMDMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMyAyNDgtMjQ4UzM4NC45NyA4IDI0OCA4em0xNjAgMjE1LjV2Ni45M2MwIDUuODctMy4zMiAxMS4yNC04LjU3IDEzLjg2bC0xNS4zOSA3LjdhMTUuNDg1IDE1LjQ4NSAwIDAgMS0xNS41My0uOTdsLTE4LjIxLTEyLjE0YTE1LjUyIDE1LjUyIDAgMCAwLTEzLjUtMS44MWwtMi42NS44OGMtOS43IDMuMjMtMTMuNjYgMTQuNzktNy45OSAyMy4zbDEzLjI0IDE5Ljg2YzIuODcgNC4zMSA3LjcxIDYuOSAxMi44OSA2LjloOC4yMWM4LjU2IDAgMTUuNSA2Ljk0IDE1LjUgMTUuNXYxMS4zNGMwIDMuMzUtMS4wOSA2LjYyLTMuMSA5LjNsLTE4Ljc0IDI0Ljk4Yy0xLjQyIDEuOS0yLjM5IDQuMS0yLjgzIDYuNDNsLTQuMyAyMi44M2MtLjYyIDMuMjktMi4yOSA2LjI5LTQuNzYgOC41NmExNTkuNjA4IDE1OS42MDggMCAwIDAtMjUgMjkuMTZsLTEzLjAzIDE5LjU1YTI3Ljc1NiAyNy43NTYgMCAwIDEtMjMuMDkgMTIuMzZjLTEwLjUxIDAtMjAuMTItNS45NC0yNC44Mi0xNS4zNGE3OC45MDIgNzguOTAyIDAgMCAxLTguMzMtMzUuMjlWMzY3LjVjMC04LjU2LTYuOTQtMTUuNS0xNS41LTE1LjVoLTI1Ljg4Yy0xNC40OSAwLTI4LjM4LTUuNzYtMzguNjMtMTZhNTQuNjU5IDU0LjY1OSAwIDAgMS0xNi0zOC42M3YtMTQuMDZjMC0xNy4xOSA4LjEtMzMuMzggMjEuODUtNDMuN2wyNy41OC0yMC42OWE1NC42NjMgNTQuNjYzIDAgMCAxIDMyLjc4LTEwLjkzaC44OWM4LjQ4IDAgMTYuODUgMS45NyAyNC40MyA1Ljc3bDE0LjcyIDcuMzZjMy42OCAxLjg0IDcuOTMgMi4xNCAxMS44My44NGw0Ny4zMS0xNS43N2M2LjMzLTIuMTEgMTAuNi04LjAzIDEwLjYtMTQuNyAwLTguNTYtNi45NC0xNS41LTE1LjUtMTUuNWgtMTAuMDljLTQuMTEgMC04LjA1LTEuNjMtMTAuOTYtNC41NGwtNi45Mi02LjkyYTE1LjQ5MyAxNS40OTMgMCAwIDAtMTAuOTYtNC41NEgxOTkuNWMtOC41NiAwLTE1LjUtNi45NC0xNS41LTE1LjV2LTQuNGMwLTcuMTEgNC44NC0xMy4zMSAxMS43NC0xNS4wNGwxNC40NS0zLjYxYzMuNzQtLjk0IDctMy4yMyA5LjE0LTYuNDRsOC4wOC0xMi4xMWMyLjg3LTQuMzEgNy43MS02LjkgMTIuODktNi45aDI0LjIxYzguNTYgMCAxNS41LTYuOTQgMTUuNS0xNS41di0yMS43QzM1OS4yMyA3MS42MyA0MjIuODYgMTMxLjAyIDQ0MS45MyAyMDhINDIzLjVjLTguNTYgMC0xNS41IDYuOTQtMTUuNSAxNS41elwiXVxufTtcbnZhciBmYUdsb2JlQW1lcmljYXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2xvYmUtYW1lcmljYXMnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1N2RcIiwgXCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptODIuMjkgMzU3LjZjLTMuOSAzLjg4LTcuOTkgNy45NS0xMS4zMSAxMS4yOC0yLjk5IDMtNS4xIDYuNy02LjE3IDEwLjcxLTEuNTEgNS42Ni0yLjczIDExLjM4LTQuNzcgMTYuODdsLTE3LjM5IDQ2Ljg1Yy0xMy43NiAzLTI4IDQuNjktNDIuNjUgNC42OXYtMjcuMzhjMS42OS0xMi42Mi03LjY0LTM2LjI2LTIyLjYzLTUxLjI1LTYtNi05LjM3LTE0LjE0LTkuMzctMjIuNjN2LTMyLjAxYzAtMTEuNjQtNi4yNy0yMi4zNC0xNi40Ni0yNy45Ny0xNC4zNy03Ljk1LTM0LjgxLTE5LjA2LTQ4LjgxLTI2LjExLTExLjQ4LTUuNzgtMjIuMS0xMy4xNC0zMS42NS0yMS43NWwtLjgtLjcyYTExNC43OTIgMTE0Ljc5MiAwIDAgMS0xOC4wNi0yMC43NGMtOS4zOC0xMy43Ny0yNC42Ni0zNi40Mi0zNC41OS01MS4xNCAyMC40Ny00NS41IDU3LjM2LTgyLjA0IDEwMy4yLTEwMS44OWwyNC4wMSAxMi4wMUMyMDMuNDggODkuNzQgMjE2IDgyLjAxIDIxNiA3MC4xMXYtMTEuM2M3Ljk5LTEuMjkgMTYuMTItMi4xMSAyNC4zOS0yLjQybDI4LjMgMjguM2M2LjI1IDYuMjUgNi4yNSAxNi4zOCAwIDIyLjYzTDI2NCAxMTJsLTEwLjM0IDEwLjM0Yy0zLjEyIDMuMTItMy4xMiA4LjE5IDAgMTEuMzFsNC42OSA0LjY5YzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMWwtOCA4YTguMDA4IDguMDA4IDAgMCAxLTUuNjYgMi4zNGgtOC45OWMtMi4wOCAwLTQuMDguODEtNS41OCAyLjI3bC05LjkyIDkuNjVhOC4wMDggOC4wMDggMCAwIDAtMS41OCA5LjMxbDE1LjU5IDMxLjE5YzIuNjYgNS4zMi0xLjIxIDExLjU4LTcuMTUgMTEuNThoLTUuNjRjLTEuOTMgMC0zLjc5LS43LTUuMjQtMS45NmwtOS4yOC04LjA2YTE2LjAxNyAxNi4wMTcgMCAwIDAtMTUuNTUtMy4xbC0zMS4xNyAxMC4zOWExMS45NSAxMS45NSAwIDAgMC04LjE3IDExLjM0YzAgNC41MyAyLjU2IDguNjYgNi42MSAxMC42OWwxMS4wOCA1LjU0YzkuNDEgNC43MSAxOS43OSA3LjE2IDMwLjMxIDcuMTZzMjIuNTkgMjcuMjkgMzIgMzJoNjYuNzVjOC40OSAwIDE2LjYyIDMuMzcgMjIuNjMgOS4zN2wxMy42OSAxMy42OWEzMC41MDMgMzAuNTAzIDAgMCAxIDguOTMgMjEuNTcgNDYuNTM2IDQ2LjUzNiAwIDAgMS0xMy43MiAzMi45OHpNNDE3IDI3NC4yNWMtNS43OS0xLjQ1LTEwLjg0LTUtMTQuMTUtOS45N2wtMTcuOTgtMjYuOTdhMjMuOTcgMjMuOTcgMCAwIDEgMC0yNi42MmwxOS41OS0yOS4zOGMyLjMyLTMuNDcgNS41LTYuMjkgOS4yNC04LjE1bDEyLjk4LTYuNDlDNDQwLjIgMTkzLjU5IDQ0OCAyMjMuODcgNDQ4IDI1NmMwIDguNjctLjc0IDE3LjE2LTEuODIgMjUuNTRMNDE3IDI3NC4yNXpcIl1cbn07XG52YXIgZmFHbG9iZUFzaWEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2xvYmUtYXNpYScsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjU3ZVwiLCBcIk0yNDggOEMxMTEuMDMgOCAwIDExOS4wMyAwIDI1NnMxMTEuMDMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMyAyNDgtMjQ4UzM4NC45NyA4IDI0OCA4em0tMTEuMzQgMjQwLjIzYy0yLjg5IDQuODItOC4xIDcuNzctMTMuNzIgNy43N2gtLjMxYy00LjI0IDAtOC4zMSAxLjY5LTExLjMxIDQuNjlsLTUuNjYgNS42NmMtMy4xMiAzLjEyLTMuMTIgOC4xOSAwIDExLjMxbDUuNjYgNS42NmMzIDMgNC42OSA3LjA3IDQuNjkgMTEuMzFWMzA0YzAgOC44NC03LjE2IDE2LTE2IDE2aC02LjExYy02LjA2IDAtMTEuNi0zLjQyLTE0LjMxLTguODVsLTIyLjYyLTQ1LjIzYy0yLjQ0LTQuODgtOC45NS01Ljk0LTEyLjgxLTIuMDhsLTE5LjQ3IDE5LjQ2Yy0zIDMtNy4wNyA0LjY5LTExLjMxIDQuNjlINTAuODFDNDkuMTIgMjc3LjU1IDQ4IDI2Ni45MiA0OCAyNTZjMC0xMTAuMjggODkuNzItMjAwIDIwMC0yMDAgMjEuNTEgMCA0Mi4yIDMuNTEgNjEuNjMgOS44MmwtNTAuMTYgMzguNTNjLTUuMTEgMy40MS00LjYzIDExLjA2Ljg2IDEzLjgxbDEwLjgzIDUuNDFjNS40MiAyLjcxIDguODQgOC4yNSA4Ljg0IDE0LjMxVjIxNmMwIDQuNDItMy41OCA4LTggOGgtMy4wNmMtMy4wMyAwLTUuOC0xLjcxLTcuMTUtNC40Mi0xLjU2LTMuMTItNS45Ni0zLjI5LTcuNzYtLjNsLTE3LjM3IDI4Ljk1ek00MDggMzU4LjQzYzAgNC4yNC0xLjY5IDguMzEtNC42OSAxMS4zMWwtOS41NyA5LjU3Yy0zIDMtNy4wNyA0LjY5LTExLjMxIDQuNjloLTE1LjE2Yy00LjI0IDAtOC4zMS0xLjY5LTExLjMxLTQuNjlsLTEzLjAxLTEzLjAxYTI2Ljc2NyAyNi43NjcgMCAwIDAtMjUuNDItNy4wNGwtMjEuMjcgNS4zMmMtMS4yNy4zMi0yLjU3LjQ4LTMuODguNDhoLTEwLjM0Yy00LjI0IDAtOC4zMS0xLjY5LTExLjMxLTQuNjlsLTExLjkxLTExLjkxYTguMDA4IDguMDA4IDAgMCAxLTIuMzQtNS42NnYtMTAuMmMwLTMuMjcgMS45OS02LjIxIDUuMDMtNy40M2wzOS4zNC0xNS43NGMxLjk4LS43OSAzLjg2LTEuODIgNS41OS0zLjA1bDIzLjcxLTE2Ljg5YTcuOTc4IDcuOTc4IDAgMCAxIDQuNjQtMS40OGgxMi4wOWMzLjIzIDAgNi4xNSAxLjk0IDcuMzkgNC45M2w1LjM1IDEyLjg1YTQgNCAwIDAgMCAzLjY5IDIuNDZoMy44YzEuNzggMCAzLjM1LTEuMTggMy44NC0yLjg4bDQuMi0xNC40N2MuNS0xLjcxIDIuMDYtMi44OCAzLjg0LTIuODhoNi4wNmMyLjIxIDAgNCAxLjc5IDQgNHYxMi45M2MwIDIuMTIuODQgNC4xNiAyLjM0IDUuNjZsMTEuOTEgMTEuOTFjMyAzIDQuNjkgNy4wNyA0LjY5IDExLjMxdjI0LjZ6XCJdXG59O1xudmFyIGZhR2xvYmVFdXJvcGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2xvYmUtZXVyb3BlJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmN2EyXCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTIwMCAyNDhjMCAyMi41LTMuOSA0NC4yLTEwLjggNjQuNGgtMjAuM2MtNC4zIDAtOC40LTEuNy0xMS40LTQuOGwtMzItMzIuNmMtNC41LTQuNi00LjUtMTIuMS4xLTE2LjdsMTIuNS0xMi41di04LjdjMC0zLTEuMi01LjktMy4zLThsLTkuNC05LjRjLTIuMS0yLjEtNS0zLjMtOC0zLjNoLTE2Yy02LjIgMC0xMS4zLTUuMS0xMS4zLTExLjMgMC0zIDEuMi01LjkgMy4zLThsOS40LTkuNGMyLjEtMi4xIDUtMy4zIDgtMy4zaDMyYzYuMiAwIDExLjMtNS4xIDExLjMtMTEuM3YtOS40YzAtNi4yLTUuMS0xMS4zLTExLjMtMTEuM2gtMzYuN2MtOC44IDAtMTYgNy4yLTE2IDE2djQuNWMwIDYuOS00LjQgMTMtMTAuOSAxNS4ybC0zMS42IDEwLjVjLTMuMyAxLjEtNS41IDQuMS01LjUgNy42djIuMmMwIDQuNC0zLjYgOC04IDhoLTE2Yy00LjQgMC04LTMuNi04LThzLTMuNi04LTgtOEgyNDdjLTMgMC01LjggMS43LTcuMiA0LjRsLTkuNCAxOC43Yy0yLjcgNS40LTguMiA4LjgtMTQuMyA4LjhIMTk0Yy04LjggMC0xNi03LjItMTYtMTZWMTk5YzAtNC4yIDEuNy04LjMgNC43LTExLjNsMjAuMS0yMC4xYzQuNi00LjYgNy4yLTEwLjkgNy4yLTE3LjUgMC0zLjQgMi4yLTYuNSA1LjUtNy42bDQwLTEzLjNjMS43LS42IDMuMi0xLjUgNC40LTIuN2wyNi44LTI2LjhjMi4xLTIuMSAzLjMtNSAzLjMtOCAwLTYuMi01LjEtMTEuMy0xMS4zLTExLjNIMjU4bC0xNiAxNnY4YzAgNC40LTMuNiA4LTggOGgtMTZjLTQuNCAwLTgtMy42LTgtOHYtMjBjMC0yLjUgMS4yLTQuOSAzLjItNi40bDI4LjktMjEuN2MxLjktLjEgMy44LS4zIDUuNy0uM0MzNTguMyA1NiA0NDggMTQ1LjcgNDQ4IDI1NnpNMTMwLjEgMTQ5LjFjMC0zIDEuMi01LjkgMy4zLThsMjUuNC0yNS40YzIuMS0yLjEgNS0zLjMgOC0zLjMgNi4yIDAgMTEuMyA1LjEgMTEuMyAxMS4zdjE2YzAgMy0xLjIgNS45LTMuMyA4bC05LjQgOS40Yy0yLjEgMi4xLTUgMy4zLTggMy4zaC0xNmMtNi4yIDAtMTEuMy01LjEtMTEuMy0xMS4zem0xMjggMzA2LjR2LTcuMWMwLTguOC03LjItMTYtMTYtMTZoLTIwLjJjLTEwLjggMC0yNi43LTUuMy0zNS40LTExLjhsLTIyLjItMTYuN2MtMTEuNS04LjYtMTguMi0yMi4xLTE4LjItMzYuNHYtMjMuOWMwLTE2IDguNC0zMC44IDIyLjEtMzlsNDIuOS0yNS43YzcuMS00LjIgMTUuMi02LjUgMjMuNC02LjVoMzEuMmMxMC45IDAgMjEuNCAzLjkgMjkuNiAxMC45bDQzLjIgMzcuMWgxOC4zYzguNSAwIDE2LjYgMy40IDIyLjYgOS40bDE3LjMgMTcuM2MzLjQgMy40IDguMSA1LjMgMTIuOSA1LjNINDIzYy0zMi40IDU4LjktOTMuOCA5OS41LTE2NC45IDEwMy4xelwiXVxufTtcbnZhciBmYUdvbGZCYWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dvbGYtYmFsbCcsXG4gIGljb246IFs0MTYsIDUxMiwgW10sIFwiZjQ1MFwiLCBcIk05NiA0MTZoMjI0YzAgMTcuNy0xNC4zIDMyLTMyIDMyaC0xNmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MjBjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi0yMGMwLTE3LjctMTQuMy0zMi0zMi0zMmgtMTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyem0zMjAtMjA4YzAgNzQuMi0zOSAxMzkuMi05Ny41IDE3NmgtMjIxQzM5IDM0Ny4yIDAgMjgyLjIgMCAyMDggMCA5My4xIDkzLjEgMCAyMDggMHMyMDggOTMuMSAyMDggMjA4em0tMTgwLjEgNDMuOWMxOC4zIDAgMzMuMS0xNC44IDMzLjEtMzMuMSAwLTE0LjQtOS4zLTI2LjMtMjIuMS0zMC45IDkuNiAyNi44LTE1LjYgNTEuMy00MS45IDQxLjkgNC42IDEyLjggMTYuNSAyMi4xIDMwLjkgMjIuMXptNDkuMSA0Ni45YzAtMTQuNC05LjMtMjYuMy0yMi4xLTMwLjkgOS42IDI2LjgtMTUuNiA1MS4zLTQxLjkgNDEuOSA0LjYgMTIuOCAxNi41IDIyLjEgMzAuOSAyMi4xIDE4LjMgMCAzMy4xLTE0LjkgMzMuMS0zMy4xem02NC02NGMwLTE0LjQtOS4zLTI2LjMtMjIuMS0zMC45IDkuNiAyNi44LTE1LjYgNTEuMy00MS45IDQxLjkgNC42IDEyLjggMTYuNSAyMi4xIDMwLjkgMjIuMSAxOC4zIDAgMzMuMS0xNC45IDMzLjEtMzMuMXpcIl1cbn07XG52YXIgZmFHb3B1cmFtID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dvcHVyYW0nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY2NjRcIiwgXCJNNDk2IDM1MmgtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNmgtMTZ2LTgwYzAtOC44LTcuMi0xNi0xNi0xNmgtMTZWMTZjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2MTZoLTY0VjE2YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djE2aC02NFYxNmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnYxNmgtNjRWMTZjMC04LjgtNy4yLTE2LTE2LTE2Uzk2IDcuMiA5NiAxNnYxMTJIODBjLTguOCAwLTE2IDcuMi0xNiAxNnY4MEg0OGMtOC44IDAtMTYgNy4yLTE2IDE2djExMkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djEyOGMwIDguOCA3LjIgMTYgMTYgMTZoODBWMzUyaDMyVjIyNGgzMnYtOTZoMzJ2OTZoLTMydjEyOGgtMzJ2MTYwaDgwdi04MGMwLTguOCA3LjItMTYgMTYtMTZoNjRjOC44IDAgMTYgNy4yIDE2IDE2djgwaDgwVjM1MmgtMzJWMjI0aC0zMnYtOTZoMzJ2OTZoMzJ2MTI4aDMydjE2MGg4MGM4LjggMCAxNi03LjIgMTYtMTZWMzY4YzAtOC44LTcuMi0xNi0xNi0xNnpNMjMyIDE3NmMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djQ4aC00OHptNTYgMTc2aC02NHYtNjRjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnpcIl1cbn07XG52YXIgZmFHcmFkdWF0aW9uQ2FwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dyYWR1YXRpb24tY2FwJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMTlkXCIsIFwiTTYyMi4zNCAxNTMuMkwzNDMuNCA2Ny41Yy0xNS4yLTQuNjctMzEuNi00LjY3LTQ2Ljc5IDBMMTcuNjYgMTUzLjJjLTIzLjU0IDcuMjMtMjMuNTQgMzguMzYgMCA0NS41OWw0OC42MyAxNC45NGMtMTAuNjcgMTMuMTktMTcuMjMgMjkuMjgtMTcuODggNDYuOUMzOC43OCAyNjYuMTUgMzIgMjc2LjExIDMyIDI4OGMwIDEwLjc4IDUuNjggMTkuODUgMTMuODYgMjUuNjVMMjAuMzMgNDI4LjUzQzE4LjExIDQzOC41MiAyNS43MSA0NDggMzUuOTQgNDQ4aDU2LjExYzEwLjI0IDAgMTcuODQtOS40OCAxNS42Mi0xOS40N0w4Mi4xNCAzMTMuNjVDOTAuMzIgMzA3Ljg1IDk2IDI5OC43OCA5NiAyODhjMC0xMS41Ny02LjQ3LTIxLjI1LTE1LjY2LTI2Ljg3Ljc2LTE1LjAyIDguNDQtMjguMyAyMC42OS0zNi43MkwyOTYuNiAyODQuNWM5LjA2IDIuNzggMjYuNDQgNi4yNSA0Ni43OSAwbDI3OC45NS04NS43YzIzLjU1LTcuMjQgMjMuNTUtMzguMzYgMC00NS42ek0zNTIuNzkgMzE1LjA5Yy0yOC41MyA4Ljc2LTUyLjg0IDMuOTItNjUuNTkgMGwtMTQ1LjAyLTQ0LjU1TDEyOCAzODRjMCAzNS4zNSA4NS45NiA2NCAxOTIgNjRzMTkyLTI4LjY1IDE5Mi02NGwtMTQuMTgtMTEzLjQ3LTE0NS4wMyA0NC41NnpcIl1cbn07XG52YXIgZmFHcmVhdGVyVGhhbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdncmVhdGVyLXRoYW4nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY1MzFcIiwgXCJNMzY1LjUyIDIwOS44NUw1OS4yMiA2Ny4wMWMtMTYuMDYtNy40OS0zNS4xNS0uNTQtNDIuNjQgMTUuNTJMMy4wMSAxMTEuNjFjLTcuNDkgMTYuMDYtLjU0IDM1LjE1IDE1LjUyIDQyLjY0TDIzNi45NiAyNTYuMSAxOC40OSAzNTcuOTlDMi40NyAzNjUuNDYtNC40NiAzODQuNSAzLjAxIDQwMC41MmwxMy41MiAyOUMyNCA0NDUuNTQgNDMuMDQgNDUyLjQ3IDU5LjA2IDQ0NWwzMDYuNDctMTQyLjkxYTMyLjAwMyAzMi4wMDMgMCAwIDAgMTguNDgtMjl2LTM0LjIzYy0uMDEtMTIuNDUtNy4yMS0yMy43Ni0xOC40OS0yOS4wMXpcIl1cbn07XG52YXIgZmFHcmVhdGVyVGhhbkVxdWFsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dyZWF0ZXItdGhhbi1lcXVhbCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjUzMlwiLCBcIk01NS4yMiAxMDcuNjlsMTc1LjU2IDY4LjA5LTE3NS40NCA2OC4wNWMtMTguMzkgNi4wMy0yNy44OCAyNC4zOS0yMS4yIDQxbDEyLjA5IDMwLjA4YzYuNjggMTYuNjEgMjYuOTkgMjUuMTkgNDUuMzggMTkuMTVMMzkzLjAyIDIxNC4yYzEzLjc3LTQuNTIgMjIuOTgtMTYuNjEgMjIuOTgtMzAuMTd2LTE1Ljk2YzAtMTMuNTYtOS4yMS0yNS42NS0yMi45OC0zMC4xN0w5MS4zIDE3LjkyYy0xOC4yOS02LTM4LjUxIDIuNTMtNDUuMTUgMTkuMDZMMzQuMTIgNjYuOWMtNi42NCAxNi41MyAyLjgxIDM0Ljc5IDIxLjEgNDAuNzl6TTQyNCA0MDBIMjRjLTEzLjI1IDAtMjQgMTAuNzQtMjQgMjR2NDhjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGg0MDBjMTMuMjUgMCAyNC0xMC43NSAyNC0yNHYtNDhjMC0xMy4yNi0xMC43NS0yNC0yNC0yNHpcIl1cbn07XG52YXIgZmFHcmltYWNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dyaW1hY2UnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1N2ZcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNMTQ0IDQwMGgtOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ2LThoNDB2NDB6bTAtNTZoLTQwdi04YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDh2NDB6bS04LTEzNmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMnptNzIgMTkyaC00OHYtNDBoNDh2NDB6bTAtNTZoLTQ4di00MGg0OHY0MHptNjQgNTZoLTQ4di00MGg0OHY0MHptMC01NmgtNDh2LTQwaDQ4djQwem02NCA1NmgtNDh2LTQwaDQ4djQwem0wLTU2aC00OHYtNDBoNDh2NDB6bS04LTEwNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTY0IDEyOGMwIDE3LjctMTQuMyAzMi0zMiAzMmgtOHYtNDBoNDB2OHptMC0yNGgtNDB2LTQwaDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OHpcIl1cbn07XG52YXIgZmFHcmluID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dyaW4nLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1ODBcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptODAgMTY4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptLTE2MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptODAgMjU2Yy02MC42IDAtMTM0LjUtMzguMy0xNDMuOC05My4zLTItMTEuOCA5LjMtMjEuNiAyMC43LTE3LjlDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuMy0zLjcgMjIuNiA2LjEgMjAuNyAxNy45LTkuMyA1NS04My4yIDkzLjMtMTQzLjggOTMuM3pcIl1cbn07XG52YXIgZmFHcmluQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dyaW4tYWx0JyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNTgxXCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTYzLjcgMTI4LjdjNy42LTExLjQgMjQuNy0xMS43IDMyLjcgMCAxMi40IDE4LjQgMTUuMSAzNi45IDE1LjcgNTUuMy0uNSAxOC40LTMuMyAzNi45LTE1LjcgNTUuMy03LjYgMTEuNC0yNC43IDExLjctMzIuNyAwLTEyLjQtMTguNC0xNS4xLTM2LjktMTUuNy01NS4zLjUtMTguNCAzLjMtMzYuOSAxNS43LTU1LjN6bS0xNjAgMGM3LjYtMTEuNCAyNC43LTExLjcgMzIuNyAwIDEyLjQgMTguNCAxNS4xIDM2LjkgMTUuNyA1NS4zLS41IDE4LjQtMy4zIDM2LjktMTUuNyA1NS4zLTcuNiAxMS40LTI0LjcgMTEuNy0zMi43IDAtMTIuNC0xOC40LTE1LjEtMzYuOS0xNS43LTU1LjMuNS0xOC40IDMuMy0zNi45IDE1LjctNTUuM3pNMjQ4IDQzMmMtNjAuNiAwLTEzNC41LTM4LjMtMTQzLjgtOTMuMy0yLTExLjggOS4zLTIxLjYgMjAuNy0xNy45QzE1NS4xIDMzMC41IDIwMCAzMzYgMjQ4IDMzNnM5Mi45LTUuNSAxMjMuMS0xNS4yYzExLjQtMy43IDIyLjYgNi4xIDIwLjcgMTcuOS05LjMgNTUtODMuMiA5My4zLTE0My44IDkzLjN6XCJdXG59O1xudmFyIGZhR3JpbkJlYW0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ3Jpbi1iZWFtJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNTgyXCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTgwIDE0NGMyMy44IDAgNTIuNyAyOS4zIDU2IDcxLjQuNyA4LjYtMTAuOCAxMS45LTE0LjkgNC41bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjEgNy4zLTE1LjYgNC0xNC45LTQuNSAzLjEtNDIuMSAzMi03MS40IDU1LjgtNzEuNHptLTE2MCAwYzIzLjggMCA1Mi43IDI5LjMgNTYgNzEuNC43IDguNi0xMC44IDExLjktMTQuOSA0LjVsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMiA3LjQtMTUuNiA0LTE0LjktNC41IDMuMS00Mi4xIDMyLTcxLjQgNTUuOC03MS40em04MCAyODBjLTYwLjYgMC0xMzQuNS0zOC4zLTE0My44LTkzLjMtMi0xMS45IDkuNC0yMS42IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS40LTMuNyAyMi42IDYuMSAyMC43IDE3LjktOS4zIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zelwiXVxufTtcbnZhciBmYUdyaW5CZWFtU3dlYXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ3Jpbi1iZWFtLXN3ZWF0JyxcbiAgaWNvbjogWzUwNCwgNTEyLCBbXSwgXCJmNTgzXCIsIFwiTTQ1NiAxMjhjMjYuNSAwIDQ4LTIxIDQ4LTQ3IDAtMjAtMjguNS02MC40LTQxLjYtNzcuOC0zLjItNC4zLTkuNi00LjMtMTIuOCAwQzQzNi41IDIwLjYgNDA4IDYxIDQwOCA4MWMwIDI2IDIxLjUgNDcgNDggNDd6bTAgMzJjLTQ0LjEgMC04MC0zNS40LTgwLTc5IDAtNC40LjMtMTQuMiA4LjEtMzIuMkMzNDUgMjMuMSAyOTguMyA4IDI0OCA4IDExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhjMC0zNS4xLTcuNC02OC40LTIwLjUtOTguNi02LjMgMS41LTEyLjcgMi42LTE5LjUgMi42em0tMTI4LThjMjMuOCAwIDUyLjcgMjkuMyA1NiA3MS40LjcgOC42LTEwLjggMTItMTQuOSA0LjVsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMSA3LjQtMTUuNiA0LTE0LjktNC41IDMuMS00Mi4xIDMyLTcxLjQgNTUuOC03MS40em0tMTYwIDBjMjMuOCAwIDUyLjcgMjkuMyA1NiA3MS40LjcgOC42LTEwLjggMTItMTQuOSA0LjVsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMiA3LjQtMTUuNiA0LTE0LjktNC41IDMuMS00Mi4xIDMyLTcxLjQgNTUuOC03MS40em04MCAyODBjLTYwLjYgMC0xMzQuNS0zOC4zLTE0My44LTkzLjMtMi0xMS44IDkuMy0yMS42IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS41LTMuNyAyMi42IDYuMiAyMC43IDE3LjktOS4zIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zelwiXVxufTtcbnZhciBmYUdyaW5IZWFydHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ3Jpbi1oZWFydHMnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1ODRcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNOTAuNCAxODMuNmM2LjctMTcuNiAyNi43LTI2LjcgNDQuOS0yMS45bDcuMSAxLjkgMi03LjFjNS0xOC4xIDIyLjgtMzAuOSA0MS41LTI3LjkgMjEuNCAzLjQgMzQuNCAyNC4yIDI4LjggNDQuNUwxOTUuMyAyNDNjLTEuMiA0LjUtNS45IDcuMi0xMC41IDZsLTcwLjItMTguMmMtMjAuNC01LjQtMzEuOS0yNy0yNC4yLTQ3LjJ6TTI0OCA0MzJjLTYwLjYgMC0xMzQuNS0zOC4zLTE0My44LTkzLjMtMi0xMS44IDkuMi0yMS41IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS40LTMuNiAyMi42IDYuMSAyMC43IDE3LjktOS4zIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zem0xMzMuNC0yMDEuM2wtNzAuMiAxOC4yYy00LjUgMS4yLTkuMi0xLjUtMTAuNS02TDI4MS4zIDE3M2MtNS42LTIwLjMgNy40LTQxLjEgMjguOC00NC41IDE4LjYtMyAzNi40IDkuOCA0MS41IDI3LjlsMiA3LjEgNy4xLTEuOWMxOC4yLTQuNyAzOC4yIDQuMyA0NC45IDIxLjkgNy43IDIwLjMtMy44IDQxLjktMjQuMiA0Ny4yelwiXVxufTtcbnZhciBmYUdyaW5TcXVpbnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ3Jpbi1zcXVpbnQnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1ODVcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMzMuOCAxODkuN2w4MC00OGMxMS42LTYuOSAyNCA3LjcgMTUuNCAxOEwzNDMuNiAyMDhsMzMuNiA0MC4zYzguNyAxMC40LTMuOSAyNC44LTE1LjQgMThsLTgwLTQ4Yy03LjctNC43LTcuNy0xNS45IDAtMjAuNnptLTE2My0zMGMtOC42LTEwLjMgMy44LTI0LjkgMTUuNC0xOGw4MCA0OGM3LjggNC43IDcuOCAxNS45IDAgMjAuNmwtODAgNDhjLTExLjUgNi44LTI0LTcuNi0xNS40LTE4bDMzLjYtNDAuMy0zMy42LTQwLjN6TTI0OCA0MzJjLTYwLjYgMC0xMzQuNS0zOC4zLTE0My44LTkzLjMtMi0xMS45IDkuNC0yMS42IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS41LTMuNyAyMi42IDYuMiAyMC43IDE3LjktOS4zIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zelwiXVxufTtcbnZhciBmYUdyaW5TcXVpbnRUZWFycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdncmluLXNxdWludC10ZWFycycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjU4NlwiLCBcIk00MDkuNiAxMTEuOWMyMi42LTMuMiA3My41LTEyIDg4LjMtMjYuOCAxOS4yLTE5LjIgMTguOS01MC42LS43LTcwLjJTNDQ2LTUgNDI2LjkgMTQuMmMtMTQuOCAxNC44LTIzLjUgNjUuNy0yNi44IDg4LjMtLjggNS41IDMuOSAxMC4yIDkuNSA5LjR6TTEwMi40IDQwMC4xYy0yMi42IDMuMi03My41IDEyLTg4LjMgMjYuOC0xOS4xIDE5LjEtMTguOCA1MC42LjggNzAuMnM1MSAxOS45IDcwLjIuN2MxNC44LTE0LjggMjMuNS02NS43IDI2LjgtODguMy44LTUuNS0zLjktMTAuMi05LjUtOS40em0zMTEuNy0yNTYuNWMtMzMgMy45LTQ4LjYtMjUuMS00NS43LTQ1LjcgMy40LTI0IDcuNC00Mi4xIDExLjUtNTYuNUMyODUuMS0xMy40IDE2MS44LS41IDgwLjYgODAuNi0uNSAxNjEuNy0xMy40IDI4NSA0MS40IDM3OS45YzE0LjQtNC4xIDMyLjQtOCA1Ni41LTExLjUgMzMuMi0zLjkgNDguNiAyNS4yIDQ1LjcgNDUuNy0zLjQgMjQtNy40IDQyLjEtMTEuNSA1Ni41IDk0LjggNTQuOCAyMTguMSA0MS45IDI5OS4zLTM5LjJzOTQtMjA0LjQgMzkuMi0yOTkuM2MtMTQuNCA0LjEtMzIuNSA4LTU2LjUgMTEuNXpNMjU1LjcgMTA2YzMuMy0xMy4yIDIyLjQtMTEuNSAyMy42IDEuOGw0LjggNTIuMyA1Mi4zIDQuOGMxMy40IDEuMiAxNC45IDIwLjMgMS44IDIzLjZsLTkwLjUgMjIuNmMtOC45IDIuMi0xNi43LTUuOS0xNC41LTE0LjVsMjIuNS05MC42em0tOTAuOSAyMzAuM0wxNjAgMjg0bC01Mi4zLTQuOGMtMTMuNC0xLjItMTQuOS0yMC4zLTEuOC0yMy42bDkwLjUtMjIuNmM4LjgtMi4yIDE2LjcgNS44IDE0LjUgMTQuNUwxODguMyAzMzhjLTMuMSAxMy4yLTIyLjIgMTEuNy0yMy41LTEuN3ptMjE1LjcgNDQuMmMtMjkuMyAyOS4zLTc1LjcgNTAuNC0xMTYuNyA1MC40LTE4LjkgMC0zNi42LTQuNS01MS0xNC43LTkuOC02LjktOC43LTIxLjggMi0yNy4yIDI4LjMtMTQuNiA2My45LTQyLjQgOTcuOC03Ni4zczYxLjctNjkuNiA3Ni4zLTk3LjhjNS40LTEwLjUgMjAuMi0xMS45IDI3LjMtMiAzMi4zIDQ1LjMgNy4xIDEyNC43LTM1LjcgMTY3LjZ6XCJdXG59O1xudmFyIGZhR3JpblN0YXJzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dyaW4tc3RhcnMnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1ODdcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNOTQuNiAxNjguOWwzNC45LTUgMTUuNS0zMS42YzIuOS01LjggMTEtNS44IDEzLjkgMGwxNS41IDMxLjYgMzQuOSA1YzYuMiAxIDguOSA4LjYgNC4zIDEzLjJsLTI1LjQgMjQuNiA2IDM0LjljMSA2LjItNS4zIDExLTExIDcuOUwxNTIgMjMzLjNsLTMxLjMgMTYuM2MtNS43IDMuMS0xMi0xLjctMTEtNy45bDYtMzQuOS0yNS40LTI0LjZjLTQuNi00LjctMS45LTEyLjMgNC4zLTEzLjN6TTI0OCA0MzJjLTYwLjYgMC0xMzQuNS0zOC4zLTE0My44LTkzLjMtMi0xMS44IDkuMy0yMS41IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS41LTMuNyAyMi42IDYuMSAyMC43IDE3LjktOS4zIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zem0xNTcuNy0yNDkuOWwtMjUuNCAyNC42IDYgMzQuOWMxIDYuMi01LjMgMTEtMTEgNy45TDM0NCAyMzMuM2wtMzEuMyAxNi4zYy01LjcgMy4xLTEyLTEuNy0xMS03LjlsNi0zNC45LTI1LjQtMjQuNmMtNC41LTQuNi0xLjktMTIuMiA0LjMtMTMuMmwzNC45LTUgMTUuNS0zMS42YzIuOS01LjggMTEtNS44IDEzLjkgMGwxNS41IDMxLjYgMzQuOSA1YzYuMy45IDkgOC41IDQuNCAxMy4xelwiXVxufTtcbnZhciBmYUdyaW5UZWFycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdncmluLXRlYXJzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTg4XCIsIFwiTTEwMi40IDI1Ni4xYy0yMi42IDMuMi03My41IDEyLTg4LjMgMjYuOC0xOS4xIDE5LjEtMTguOCA1MC42LjggNzAuMnM1MSAxOS45IDcwLjIuN2MxNC44LTE0LjggMjMuNS02NS43IDI2LjgtODguMy44LTUuNS0zLjktMTAuMi05LjUtOS40em01MjMuNCAyNi44Yy0xNC44LTE0LjgtNjUuNy0yMy41LTg4LjMtMjYuOC01LjUtLjgtMTAuMyAzLjktOS41IDkuNSAzLjIgMjIuNiAxMiA3My41IDI2LjggODguMyAxOS4yIDE5LjIgNTAuNiAxOC45IDcwLjItLjdzMjAtNTEuMi44LTcwLjN6bS0xMjkuNC0xMi44Yy0zLjgtMjYuNiAxOS4xLTQ5LjUgNDUuNy00NS43IDguOSAxLjMgMTYuOCAyLjcgMjQuMyA0LjFDNTUyLjcgMTA0LjUgNDQ3LjcgOCAzMjAgOFM4Ny4zIDEwNC41IDczLjYgMjI4LjVjNy41LTEuNCAxNS40LTIuOCAyNC4zLTQuMSAzMy4yLTMuOSA0OC42IDI1LjMgNDUuNyA0NS43LTExLjggODIuMy0yOS45IDEwMC40LTM1LjggMTA2LjQtLjkuOS0yIDEuNi0zIDIuNSA0Mi43IDc0LjYgMTIzIDEyNSAyMTUuMiAxMjVzMTcyLjUtNTAuNCAyMTUuMi0xMjUuMWMtMS0uOS0yLjEtMS41LTMtMi41LTUuOS01LjktMjQtMjQtMzUuOC0xMDYuM3pNNDAwIDE1MmMyMy44IDAgNTIuNyAyOS4zIDU2IDcxLjQuNyA4LjYtMTAuOCAxMi0xNC45IDQuNWwtOS41LTE3Yy03LjctMTMuNy0xOS4yLTIxLjYtMzEuNS0yMS42cy0yMy44IDcuOS0zMS41IDIxLjZsLTkuNSAxN2MtNC4yIDcuNC0xNS42IDQtMTQuOS00LjUgMy4xLTQyLjEgMzItNzEuNCA1NS44LTcxLjR6bS0xNjAgMGMyMy44IDAgNTIuNyAyOS4zIDU2IDcxLjQuNyA4LjYtMTAuOCAxMi0xNC45IDQuNWwtOS41LTE3Yy03LjctMTMuNy0xOS4yLTIxLjYtMzEuNS0yMS42cy0yMy44IDcuOS0zMS41IDIxLjZsLTkuNSAxN2MtNC4yIDcuNC0xNS42IDQtMTQuOS00LjUgMy4xLTQyLjEgMzItNzEuNCA1NS44LTcxLjR6bTgwIDI4MGMtNjAuNiAwLTEzNC41LTM4LjMtMTQzLjgtOTMuMy0yLTExLjcgOS4yLTIxLjYgMjAuNy0xNy45QzIyNy4xIDMzMC41IDI3MiAzMzYgMzIwIDMzNnM5Mi45LTUuNSAxMjMuMS0xNS4yYzExLjQtMy43IDIyLjYgNi4xIDIwLjcgMTcuOS05LjMgNTUtODMuMiA5My4zLTE0My44IDkzLjN6XCJdXG59O1xudmFyIGZhR3JpblRvbmd1ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdncmluLXRvbmd1ZScsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjU4OVwiLCBcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NmMwIDEwNi4zIDY3IDE5Ni43IDE2MSAyMzItNS42LTEyLjItOS0yNS43LTktNDB2LTQ1LjVjLTI0LjctMTYuMi00My41LTM4LjEtNDcuOC02My44LTItMTEuOCA5LjMtMjEuNSAyMC43LTE3LjlDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuNC0zLjYgMjIuNiA2LjEgMjAuNyAxNy45LTQuMyAyNS43LTIzLjEgNDcuNi00Ny44IDYzLjhWNDQ4YzAgMTQuMy0zLjQgMjcuOC05IDQwIDk0LTM1LjMgMTYxLTEyNS43IDE2MS0yMzJDNDk2IDExOSAzODUgOCAyNDggOHptLTgwIDIzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTE2MCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptLTM0LjkgMTM0LjZjLTE0LjQtNi41LTMxLjEgMi4yLTM0LjYgMTcuNmwtMS44IDcuOGMtMi4xIDkuMi0xNS4yIDkuMi0xNy4zIDBsLTEuOC03LjhjLTMuNS0xNS40LTIwLjItMjQuMS0zNC42LTE3LjYtLjkuNC4zLS4yLTE4LjkgOS40djYzYzAgMzUuMiAyOCA2NC41IDYzLjEgNjQuOSAzNS43LjUgNjQuOS0yOC40IDY0LjktNjR2LTY0Yy0xOS41LTkuNi0xOC4yLTguOS0xOS05LjN6XCJdXG59O1xudmFyIGZhR3JpblRvbmd1ZVNxdWludCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdncmluLXRvbmd1ZS1zcXVpbnQnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1OGFcIiwgXCJNMjkzLjEgMzc0LjZjLTE0LjQtNi41LTMxLjEgMi4yLTM0LjYgMTcuNmwtMS44IDcuOGMtMi4xIDkuMi0xNS4yIDkuMi0xNy4zIDBsLTEuOC03LjhjLTMuNS0xNS40LTIwLjItMjQuMS0zNC42LTE3LjYtLjkuNC4zLS4yLTE4LjkgOS40djYzYzAgMzUuMiAyOCA2NC41IDYzLjEgNjQuOSAzNS43LjUgNjQuOS0yOC40IDY0LjktNjR2LTY0Yy0xOS41LTkuNi0xOC4yLTguOS0xOS05LjN6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2YzAgMTA2LjMgNjcgMTk2LjcgMTYxIDIzMi01LjYtMTIuMi05LTI1LjctOS00MHYtNDUuNWMtMjQuNy0xNi4yLTQzLjUtMzguMS00Ny44LTYzLjgtMi0xMS44IDkuMi0yMS41IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS40LTMuNyAyMi42IDYuMSAyMC43IDE3LjktNC4zIDI1LjctMjMuMSA0Ny42LTQ3LjggNjMuOFY0NDhjMCAxNC4zLTMuNCAyNy44LTkgNDAgOTQtMzUuMyAxNjEtMTI1LjcgMTYxLTIzMkM0OTYgMTE5IDM4NSA4IDI0OCA4em0tMzMuOCAyMTAuM2wtODAgNDhjLTExLjUgNi44LTI0LTcuNi0xNS40LTE4bDMzLjYtNDAuMy0zMy42LTQwLjNjLTguNi0xMC4zIDMuOC0yNC45IDE1LjQtMThsODAgNDhjNy43IDQuNyA3LjcgMTUuOSAwIDIwLjZ6bTE2MyAzMGM4LjcgMTAuNC0zLjkgMjQuOC0xNS40IDE4bC04MC00OGMtNy44LTQuNy03LjgtMTUuOSAwLTIwLjZsODAtNDhjMTEuNy02LjkgMjMuOSA3LjcgMTUuNCAxOEwzNDMuNiAyMDhsMzMuNiA0MC4zelwiXVxufTtcbnZhciBmYUdyaW5Ub25ndWVXaW5rID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dyaW4tdG9uZ3VlLXdpbmsnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1OGJcIiwgXCJNMzQ0IDE4NGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNCAyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjR6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2YzAgMTA2LjMgNjcgMTk2LjcgMTYxIDIzMi01LjYtMTIuMi05LTI1LjctOS00MHYtNDUuNWMtMjQuNy0xNi4yLTQzLjUtMzguMS00Ny44LTYzLjgtMi0xMS44IDkuMy0yMS41IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS41LTMuNyAyMi42IDYuMSAyMC43IDE3LjktNC4zIDI1LjctMjMuMSA0Ny42LTQ3LjggNjMuOFY0NDhjMCAxNC4zLTMuNCAyNy44LTkgNDAgOTQtMzUuMyAxNjEtMTI1LjcgMTYxLTIzMkM0OTYgMTE5IDM4NSA4IDI0OCA4em0tNTYgMjI1bC05LjUtOC41Yy0xNC44LTEzLjItNDYuMi0xMy4yLTYxIDBMMTEyIDIzM2MtOC41IDcuNC0yMS42LjMtMTkuOC0xMC44IDQtMjUuMiAzNC4yLTQyLjEgNTkuOS00Mi4xUzIwOCAxOTcgMjEyIDIyMi4yYzEuNiAxMS4xLTExLjYgMTguMi0yMCAxMC44em0xNTIgMzljLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjQgNjQgMjguNyA2NCA2NC0yOC43IDY0LTY0IDY0em0tNTAuOSAxMDIuNmMtMTQuNC02LjUtMzEuMSAyLjItMzQuNiAxNy42bC0xLjggNy44Yy0yLjEgOS4yLTE1LjIgOS4yLTE3LjMgMGwtMS44LTcuOGMtMy41LTE1LjQtMjAuMi0yNC4xLTM0LjYtMTcuNi0uOS40LjMtLjItMTguOSA5LjR2NjNjMCAzNS4yIDI4IDY0LjUgNjMuMSA2NC45IDM1LjcuNSA2NC45LTI4LjQgNjQuOS02NHYtNjRjLTE5LjUtOS42LTE4LjItOC45LTE5LTkuM3pcIl1cbn07XG52YXIgZmFHcmluV2luayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdncmluLXdpbmsnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1OGNcIiwgXCJNMCAyNTZjMCAxMzcgMTExIDI0OCAyNDggMjQ4czI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOCAwIDExOSAwIDI1NnptMjAwLTQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMnptMTY4IDI1bC05LjUtOC41Yy0xNC44LTEzLjItNDYuMi0xMy4yLTYxIDBMMjg4IDIzM2MtOC4zIDcuNC0yMS42LjQtMTkuOC0xMC44IDQtMjUuMiAzNC4yLTQyLjEgNTkuOS00Mi4xUzM4NCAxOTcgMzg4IDIyMi4yYzEuNiAxMS0xMS41IDE4LjItMjAgMTAuOHptLTI0My4xIDg3LjhDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuMy0zLjcgMjIuNiA2IDIwLjcgMTcuOS05LjIgNTUtODMuMiA5My4zLTE0My44IDkzLjNzLTEzNC41LTM4LjMtMTQzLjgtOTMuM2MtMi0xMS45IDkuMy0yMS42IDIwLjctMTcuOXpcIl1cbn07XG52YXIgZmFHcmlwSG9yaXpvbnRhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdncmlwLWhvcml6b250YWwnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1OGRcIiwgXCJNOTYgMjg4SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMTYwIDBoLTY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMTYwIDBoLTY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNOTYgOTZIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0xNjAgMGgtNjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0xNjAgMGgtNjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwiXVxufTtcbnZhciBmYUdyaXBMaW5lcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdncmlwLWxpbmVzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmN2E0XCIsIFwiTTQ5NiAyODhIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNDgwYzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2em0wLTEyOEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0ODBjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6XCJdXG59O1xudmFyIGZhR3JpcExpbmVzVmVydGljYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ3JpcC1saW5lcy12ZXJ0aWNhbCcsXG4gIGljb246IFsyNTYsIDUxMiwgW10sIFwiZjdhNVwiLCBcIk05NiA0OTZWMTZjMC04LjgtNy4yLTE2LTE2LTE2SDQ4Yy04LjggMC0xNiA3LjItMTYgMTZ2NDgwYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ6bTEyOCAwVjE2YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnY0ODBjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnpcIl1cbn07XG52YXIgZmFHcmlwVmVydGljYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ3JpcC12ZXJ0aWNhbCcsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZjU4ZVwiLCBcIk05NiAzMkgzMkMxNC4zMyAzMiAwIDQ2LjMzIDAgNjR2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTAgMTYwSDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMCAxNjBIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek0yODggMzJoLTY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY2NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0wIDE2MGgtNjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0wIDE2MGgtNjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2NjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwiXVxufTtcbnZhciBmYUd1aXRhciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdndWl0YXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3YTZcIiwgXCJNNTAyLjYzIDM5TDQ3MyA5LjM3YTMyIDMyIDAgMCAwLTQ1LjI2IDBMMzgxLjQ2IDU1LjdhMzUuMTQgMzUuMTQgMCAwIDAtOC41MyAxMy43OUwzNjAuNzcgMTA2bC03Ni4yNiA3Ni4yNmMtMTIuMTYtOC43Ni0yNS41LTE1Ljc0LTQwLjEtMTkuMTQtMzMuNDUtNy43OC02Ny0uODgtODkuODggMjJhODIuNDUgODIuNDUgMCAwIDAtMjAuMjQgMzMuNDdjLTYgMTguNTYtMjMuMjEgMzIuNjktNDIuMTUgMzQuNDYtMjMuNyAyLjI3LTQ1LjczIDExLjQ1LTYyLjYxIDI4LjQ0Qy0xNi4xMSAzMjctNy45IDQwOSA0Ny41OCA0NjQuNDVTMTg1IDUyOCAyMzAuNTYgNDgyLjUyYzE3LTE2Ljg4IDI2LjE2LTM4LjkgMjguNDUtNjIuNzEgMS43Ni0xOC44NSAxNS44OS0zNi4xMyAzNC40My00Mi4xNGE4Mi42IDgyLjYgMCAwIDAgMzMuNDgtMjAuMjVjMjIuODctMjIuODggMjkuNzQtNTYuMzYgMjItODkuNzUtMy4zOS0xNC42NC0xMC4zNy0yOC0xOS4xNi00MC4yTDQwNiAxNTEuMjNsMzYuNDgtMTIuMTZhMzUuMTQgMzUuMTQgMCAwIDAgMTMuNzktOC41M2w0Ni4zMy00Ni4zMmEzMiAzMiAwIDAgMCAuMDMtNDUuMjJ6TTIwOCAzNTJhNDggNDggMCAxIDEgNDgtNDggNDggNDggMCAwIDEtNDggNDh6XCJdXG59O1xudmFyIGZhSFNxdWFyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoLXNxdWFyZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjBmZFwiLCBcIk00NDggODB2MzUyYzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGgzNTJjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHptLTExMiA0OGgtMzJjLTguODM3IDAtMTYgNy4xNjMtMTYgMTZ2ODBIMTYwdi04MGMwLTguODM3LTcuMTYzLTE2LTE2LTE2aC0zMmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnYyMjRjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmgzMmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2di04MGgxMjh2ODBjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmgzMmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2VjE0NGMwLTguODM3LTcuMTYzLTE2LTE2LTE2elwiXVxufTtcbnZhciBmYUhhbWJ1cmdlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW1idXJnZXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY4MDVcIiwgXCJNNDY0IDI1Nkg0OGE0OCA0OCAwIDAgMCAwIDk2aDQxNmE0OCA0OCAwIDAgMCAwLTk2em0xNiAxMjhIMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MTZhNjQgNjQgMCAwIDAgNjQgNjRoMzUyYTY0IDY0IDAgMCAwIDY0LTY0di0xNmExNiAxNiAwIDAgMC0xNi0xNnpNNTguNjQgMjI0aDM5NC43MmMzNC41NyAwIDU0LjYyLTQzLjkgMzQuODItNzUuODhDNDQ4IDgzLjIgMzU5LjU1IDMyLjEgMjU2IDMyYy0xMDMuNTQuMS0xOTIgNTEuMi0yMzIuMTggMTE2LjExQzQgMTgwLjA5IDI0LjA3IDIyNCA1OC42NCAyMjR6TTM4NCAxMTJhMTYgMTYgMCAxIDEtMTYgMTYgMTYgMTYgMCAwIDEgMTYtMTZ6TTI1NiA4MGExNiAxNiAwIDEgMS0xNiAxNiAxNiAxNiAwIDAgMSAxNi0xNnptLTEyOCAzMmExNiAxNiAwIDEgMS0xNiAxNiAxNiAxNiAwIDAgMSAxNi0xNnpcIl1cbn07XG52YXIgZmFIYW1tZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFtbWVyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNmUzXCIsIFwiTTU3MS4zMSAxOTMuOTRsLTIyLjYzLTIyLjYzYy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwbC0xMS4zMSAxMS4zMS0yOC45LTI4LjljNS42My0yMS4zMS4zNi00NC45LTE2LjM1LTYxLjYxbC00NS4yNS00NS4yNWMtNjIuNDgtNjIuNDgtMTYzLjc5LTYyLjQ4LTIyNi4yOCAwbDkwLjUxIDQ1LjI1djE4Ljc1YzAgMTYuOTcgNi43NCAzMy4yNSAxOC43NSA0NS4yNWw0OS4xNCA0OS4xNGMxNi43MSAxNi43MSA0MC4zIDIxLjk4IDYxLjYxIDE2LjM1bDI4LjkgMjguOS0xMS4zMSAxMS4zMWMtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wyMi42MyAyMi42M2M2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDkwLjUxLTkwLjUxYzYuMjMtNi4yNCA2LjIzLTE2LjM3LS4wMi0yMi42MnptLTI4Ni43Mi0xNS4yYy0zLjctMy43LTYuODQtNy43OS05Ljg1LTExLjk1TDE5LjY0IDQwNC45NmMtMjUuNTcgMjMuODgtMjYuMjYgNjQuMTktMS41MyA4OC45M3M2NS4wNSAyNC4wNSA4OC45My0xLjUzbDIzOC4xMy0yNTUuMDdjLTMuOTYtMi45MS03LjktNS44Ny0xMS40NC05LjQxbC00OS4xNC00OS4xNHpcIl1cbn07XG52YXIgZmFIYW1zYSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW1zYScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjY2NVwiLCBcIk01MDkuMzQgMzA3LjI1QzUwNC4yOCAyOTUuNTYgNDkyLjc1IDI4OCA0ODAgMjg4aC02NFY4MGMwLTIyLTE4LTQwLTQwLTQwcy00MCAxOC00MCA0MHYxMzRjMCA1LjUyLTQuNDggMTAtMTAgMTBoLTIwYy01LjUyIDAtMTAtNC40OC0xMC0xMFY0MGMwLTIyLTE4LTQwLTQwLTQwcy00MCAxOC00MCA0MHYxNzRjMCA1LjUyLTQuNDggMTAtMTAgMTBoLTIwYy01LjUyIDAtMTAtNC40OC0xMC0xMFY4MGMwLTIyLTE4LTQwLTQwLTQwUzk2IDU4IDk2IDgwdjIwOEgzMmMtMTIuNzUgMC0yNC4yOCA3LjU2LTI5LjM0IDE5LjI1YTMxLjk2NiAzMS45NjYgMCAwIDAgNS45NCAzNC41OGwxMDIuNjkgMTEwLjAzQzE0Ni45NyA0OTAuMDggMTk5LjY5IDUxMiAyNTYgNTEyczEwOS4wMy0yMS45MiAxNDQuNzItNjAuMTRMNTAzLjQgMzQxLjgzYTMxLjk2NiAzMS45NjYgMCAwIDAgNS45NC0zNC41OHpNMjU2IDQxNmMtNTMuMDIgMC05Ni02NC05Ni02NHM0Mi45OC02NCA5Ni02NCA5NiA2NCA5NiA2NC00Mi45OCA2NC05NiA2NHptMC05NmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnMxNC4zMyAzMiAzMiAzMiAzMi0xNC4zMyAzMi0zMi0xNC4zMy0zMi0zMi0zMnpcIl1cbn07XG52YXIgZmFIYW5kSG9sZGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLWhvbGRpbmcnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY0YmRcIiwgXCJNNTY1LjMgMzI4LjFjLTExLjgtMTAuNy0zMC4yLTEwLTQyLjYgMEw0MzAuMyA0MDJjLTExLjMgOS4xLTI1LjQgMTQtNDAgMTRIMjcyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDc4LjNjMTUuOSAwIDMwLjctMTAuOSAzMy4zLTI2LjYgMy4zLTIwLTEyLjEtMzcuNC0zMS42LTM3LjRIMTkyYy0yNyAwLTUzLjEgOS4zLTc0LjEgMjYuM0w3MS40IDM4NEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNmgzNTYuOGMxNC41IDAgMjguNi00LjkgNDAtMTRMNTY0IDM3N2MxNS4yLTEyLjEgMTYuNC0zNS4zIDEuMy00OC45elwiXVxufTtcbnZhciBmYUhhbmRIb2xkaW5nSGVhcnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZC1ob2xkaW5nLWhlYXJ0JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNGJlXCIsIFwiTTI3NS4zIDI1MC41YzcgNy40IDE4LjQgNy40IDI1LjUgMGwxMDguOS0xMTQuMmMzMS42LTMzLjIgMjkuOC04OC4yLTUuNi0xMTguOC0zMC44LTI2LjctNzYuNy0yMS45LTEwNC45IDcuN0wyODggMzYuOWwtMTEuMS0xMS42QzI0OC43LTQuNCAyMDIuOC05LjIgMTcyIDE3LjVjLTM1LjMgMzAuNi0zNy4yIDg1LjYtNS42IDExOC44bDEwOC45IDExNC4yem0yOTAgNzcuNmMtMTEuOC0xMC43LTMwLjItMTAtNDIuNiAwTDQzMC4zIDQwMmMtMTEuMyA5LjEtMjUuNCAxNC00MCAxNEgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoNzguM2MxNS45IDAgMzAuNy0xMC45IDMzLjMtMjYuNiAzLjMtMjAtMTIuMS0zNy40LTMxLjYtMzcuNEgxOTJjLTI3IDAtNTMuMSA5LjMtNzQuMSAyNi4zTDcxLjQgMzg0SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2aDM1Ni44YzE0LjUgMCAyOC42LTQuOSA0MC0xNEw1NjQgMzc3YzE1LjItMTIuMSAxNi40LTM1LjMgMS4zLTQ4Ljl6XCJdXG59O1xudmFyIGZhSGFuZEhvbGRpbmdNZWRpY2FsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtaG9sZGluZy1tZWRpY2FsJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlMDVjXCIsIFwiTTE1OS44OCwxNzUuODJoNjR2NjRhMTYsMTYsMCwwLDAsMTYsMTZoNjRhMTYsMTYsMCwwLDAsMTYtMTZ2LTY0aDY0YTE2LDE2LDAsMCwwLDE2LTE2di02NGExNiwxNiwwLDAsMC0xNi0xNmgtNjR2LTY0YTE2LDE2LDAsMCwwLTE2LTE2aC02NGExNiwxNiwwLDAsMC0xNiwxNnY2NGgtNjRhMTYsMTYsMCwwLDAtMTYsMTZ2NjRBMTYsMTYsMCwwLDAsMTU5Ljg4LDE3NS44MlpNNTY4LjA3LDMzNi4xM2EzOS45MSwzOS45MSwwLDAsMC01NS45My04LjQ3TDM5Mi40Nyw0MTUuODRIMjcxLjg2YTE2LDE2LDAsMCwxLDAtMzJIMzUwLjFjMTYsMCwzMC43NS0xMC44NywzMy4zNy0yNi42MWEzMi4wNiwzMi4wNiwwLDAsMC0zMS42Mi0zNy4zOGgtMTYwYTExNy43LDExNy43LDAsMCwwLTc0LjEyLDI2LjI1bC00Ni41LDM3Ljc0SDE1Ljg3YTE2LjExLDE2LjExLDAsMCwwLTE2LDE2djk2YTE2LjExLDE2LjExLDAsMCwwLDE2LDE2aDM0N2ExMDQuOCwxMDQuOCwwLDAsMCw2MS43LTIwLjI3TDU1OS42LDM5MkE0MCw0MCwwLDAsMCw1NjguMDcsMzM2LjEzWlwiXVxufTtcbnZhciBmYUhhbmRIb2xkaW5nVXNkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtaG9sZGluZy11c2QnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY0YzBcIiwgXCJNMjcxLjA2LDE0NC4zbDU0LjI3LDE0LjNhOC41OSw4LjU5LDAsMCwxLDYuNjMsOC4xYzAsNC42LTQuMDksOC40LTkuMTIsOC40aC0zNS42YTMwLDMwLDAsMCwxLTExLjE5LTIuMmMtNS4yNC0yLjItMTEuMjgtMS43LTE1LjMsMmwtMTksMTcuNWExMS42OCwxMS42OCwwLDAsMC0yLjI1LDIuNjYsMTEuNDIsMTEuNDIsMCwwLDAsMy44OCwxNS43NCw4My43Nyw4My43NywwLDAsMCwzNC41MSwxMS41VjI0MGMwLDguOCw3LjgzLDE2LDE3LjM3LDE2aDE3LjM3YzkuNTUsMCwxNy4zOC03LjIsMTcuMzgtMTZWMjIyLjRjMzIuOTMtMy42LDU3Ljg0LTMxLDUzLjUtNjMtMy4xNS0yMy0yMi40Ni00MS4zLTQ2LjU2LTQ3LjdMMjgyLjY4LDk3LjRhOC41OSw4LjU5LDAsMCwxLTYuNjMtOC4xYzAtNC42LDQuMDktOC40LDkuMTItOC40aDM1LjZBMzAsMzAsMCwwLDEsMzMyLDgzLjFjNS4yMywyLjIsMTEuMjgsMS43LDE1LjMtMmwxOS0xNy41QTExLjMxLDExLjMxLDAsMCwwLDM2OC40Nyw2MWExMS40MywxMS40MywwLDAsMC0zLjg0LTE1Ljc4LDgzLjgyLDgzLjgyLDAsMCwwLTM0LjUyLTExLjVWMTZjMC04LjgtNy44Mi0xNi0xNy4zNy0xNkgyOTUuMzdDMjg1LjgyLDAsMjc4LDcuMiwyNzgsMTZWMzMuNmMtMzIuODksMy42LTU3Ljg1LDMxLTUzLjUxLDYzQzIyNy42MywxMTkuNiwyNDcsMTM3LjksMjcxLjA2LDE0NC4zWk01NjUuMjcsMzI4LjFjLTExLjgtMTAuNy0zMC4yLTEwLTQyLjYsMEw0MzAuMjcsNDAyYTYzLjY0LDYzLjY0LDAsMCwxLTQwLDE0SDI3MmExNiwxNiwwLDAsMSwwLTMyaDc4LjI5YzE1LjksMCwzMC43MS0xMC45LDMzLjI1LTI2LjZhMzEuMiwzMS4yLDAsMCwwLC40Ni01LjQ2QTMyLDMyLDAsMCwwLDM1MiwzMjBIMTkyYTExNy42NiwxMTcuNjYsMCwwLDAtNzQuMSwyNi4yOUw3MS40LDM4NEgxNkExNiwxNiwwLDAsMCwwLDQwMHY5NmExNiwxNiwwLDAsMCwxNiwxNkgzNzIuNzdhNjQsNjQsMCwwLDAsNDAtMTRMNTY0LDM3N2EzMiwzMiwwLDAsMCwxLjI4LTQ4LjlaXCJdXG59O1xudmFyIGZhSGFuZEhvbGRpbmdXYXRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLWhvbGRpbmctd2F0ZXInLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY0YzFcIiwgXCJNMjg4IDI1NmM1MyAwIDk2LTQyLjEgOTYtOTQgMC00MC01Ny4xLTEyMC43LTgzLjItMTU1LjYtNi40LTguNS0xOS4yLTguNS0yNS42IDBDMjQ5LjEgNDEuMyAxOTIgMTIyIDE5MiAxNjJjMCA1MS45IDQzIDk0IDk2IDk0em0yNzcuMyA3Mi4xYy0xMS44LTEwLjctMzAuMi0xMC00Mi42IDBMNDMwLjMgNDAyYy0xMS4zIDkuMS0yNS40IDE0LTQwIDE0SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg3OC4zYzE1LjkgMCAzMC43LTEwLjkgMzMuMy0yNi42IDMuMy0yMC0xMi4xLTM3LjQtMzEuNi0zNy40SDE5MmMtMjcgMC01My4xIDkuMy03NC4xIDI2LjNMNzEuNCAzODRIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnY5NmMwIDguOCA3LjIgMTYgMTYgMTZoMzU2LjhjMTQuNSAwIDI4LjYtNC45IDQwLTE0TDU2NCAzNzdjMTUuMi0xMi4xIDE2LjQtMzUuMyAxLjMtNDguOXpcIl1cbn07XG52YXIgZmFIYW5kTGl6YXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtbGl6YXJkJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMjU4XCIsIFwiTTM4NCA0ODBoMTkyVjM2My43NzhhOTUuOTk4IDk1Ljk5OCAwIDAgMC0xNC44MzMtNTEuMjYzTDM5OC4xMjcgNTQuMzY4QTQ4IDQ4IDAgMCAwIDM1Ny41NDQgMzJIMjRDMTAuNzQ1IDMyIDAgNDIuNzQ1IDAgNTZ2MTZjMCAzMC45MjggMjUuMDcyIDU2IDU2IDU2aDIyOS45ODFjMTIuODQ0IDAgMjEuNTU2IDEzLjA2NyAxNi42MTUgMjQuOTIzbC0yMS40MSA1MS4zODVBMzIgMzIgMCAwIDEgMjUxLjY0OCAyMjRIMTI4Yy0zNS4zNDYgMC02NCAyOC42NTQtNjQgNjR2OGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTQ3LjQwNmE0Ny45OTUgNDcuOTk1IDAgMCAxIDI1LjY5MiA3LjQ1NWwxMTEuNzQ4IDcwLjgxMUEyNC4wMDEgMjQuMDAxIDAgMCAxIDM4NCA0MTguNTM5VjQ4MHpcIl1cbn07XG52YXIgZmFIYW5kTWlkZGxlRmluZ2VyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtbWlkZGxlLWZpbmdlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjgwNlwiLCBcIk00NzkuOTMgMzE3LjEyYTM3LjMzIDM3LjMzIDAgMCAwLTI4LjI4LTM2LjE5TDQxNiAyNzJ2LTQ5LjU5YzAtMTEuNDQtOS42OS0yMS4yOS0yMy4xNS0yMy41NGwtMzguNC02LjRDMzM2LjYzIDE4OS41IDMyMCAyMDAuODYgMzIwIDIxNnYzMmE4IDggMCAwIDEtMTYgMFY1MGMwLTI2LjI4LTIwLjI1LTQ5LjItNDYuNTItNTBBNDggNDggMCAwIDAgMjA4IDQ4djIwMGE4IDggMCAwIDEtMTYgMHYtMzJjMC0xNS4xNS0xNi42My0yNi41MS0zNC40NS0yMy41NGwtMzAuNjggNS4xMmMtMTggMy0zMC44NyAxNi4xMi0zMC44NyAzMS4zOFYzNzZhOCA4IDAgMCAxLTE2IDB2LTc2bC0yNy4zNiAxNUEzNy4zNCAzNy4zNCAwIDAgMCAzMiAzNDguNHY3My40N2EzNy4zMSAzNy4zMSAwIDAgMCAxMC45MyAyNi4zOWwzMC45MyAzMC45M0ExMTIgMTEyIDAgMCAwIDE1My4wNSA1MTJoMjE1QTExMiAxMTIgMCAwIDAgNDgwIDQwMHpcIl1cbn07XG52YXIgZmFIYW5kUGFwZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZC1wYXBlcicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjI1NlwiLCBcIk00MDguNzgxIDEyOC4wMDdDMzg2LjM1NiAxMjcuNTc4IDM2OCAxNDYuMzYgMzY4IDE2OC43OVYyNTZoLThWNzkuNzljMC0yMi40My0xOC4zNTYtNDEuMjEyLTQwLjc4MS00MC43ODNDMjk3LjQ4OCAzOS40MjMgMjgwIDU3LjE2OSAyODAgNzl2MTc3aC04VjQwLjc5QzI3MiAxOC4zNiAyNTMuNjQ0LS40MjIgMjMxLjIxOS4wMDcgMjA5LjQ4OC40MjMgMTkyIDE4LjE2OSAxOTIgNDB2MjE2aC04VjgwLjc5YzAtMjIuNDMtMTguMzU2LTQxLjIxMi00MC43ODEtNDAuNzgzQzEyMS40ODggNDAuNDIzIDEwNCA1OC4xNjkgMTA0IDgwdjIzNS45OTJsLTMxLjY0OC00My41MTljLTEyLjk5My0xNy44NjYtMzguMDA5LTIxLjgxNy01NS44NzctOC44MjMtMTcuODY1IDEyLjk5NC0yMS44MTUgMzguMDEtOC44MjIgNTUuODc3bDEyNS42MDEgMTcyLjcwNUE0OCA0OCAwIDAgMCAxNzIuMDczIDUxMmgxOTcuNTljMjIuMjc0IDAgNDEuNjIyLTE1LjMyNCA0Ni43MjQtMzcuMDA2bDI2LjUwOC0xMTIuNjZhMTkyLjAxMSAxOTIuMDExIDAgMCAwIDUuMTA0LTQzLjk3NVYxNjhjLjAwMS0yMS44MzEtMTcuNDg3LTM5LjU3Ny0zOS4yMTgtMzkuOTkzelwiXVxufTtcbnZhciBmYUhhbmRQZWFjZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLXBlYWNlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMjViXCIsIFwiTTQwOCAyMTZjLTIyLjA5MiAwLTQwIDE3LjkwOS00MCA0MGgtOHYtMzJjMC0yMi4wOTEtMTcuOTA4LTQwLTQwLTQwcy00MCAxNy45MDktNDAgNDB2MzJoLThWNDhjMC0yNi41MS0yMS40OS00OC00OC00OHMtNDggMjEuNDktNDggNDh2MjA4aC0xMy41NzJMOTIuNjg4IDc4LjQ0OUM4Mi45OTQgNTMuNzc0IDU1LjEzNCA0MS42MyAzMC40NjEgNTEuMzI0IDUuNzg3IDYxLjAxNy02LjM1NiA4OC44NzcgMy4zMzcgMTEzLjU1MWw3NC43NjUgMTkwLjM0Mi0zMS4wOSAyNC44NzJjLTE1LjM4MSAxMi4zMDYtMTkuNTE1IDMzLjk3OC05Ljc0MSA1MS4wODFsNjQgMTEyQTM5Ljk5OCAzOS45OTggMCAwIDAgMTM2IDUxMmgyNDBjMTguNTYyIDAgMzQuNjg2LTEyLjc3IDM4LjkzNy0zMC44MzhsMzItMTM2QTM5Ljk3IDM5Ljk3IDAgMCAwIDQ0OCAzMzZ2LTgwYzAtMjIuMDkxLTE3LjkwOC00MC00MC00MHpcIl1cbn07XG52YXIgZmFIYW5kUG9pbnREb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtcG9pbnQtZG93bicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjBhN1wiLCBcIk05MS44MjYgNDY3LjJWMzE3Ljk2NmMtOC4yNDggNS44NDEtMTYuNTU4IDEwLjU3LTI0LjkxOCAxNC4xNTNDMzUuMDk4IDM0NS43NTItLjAxNCAzMjIuMjIyIDAgMjg4Yy4wMDgtMTguNjE2IDEwLjg5Ny0zMi4yMDMgMjkuMDkyLTQwIDI4LjI4Ni0xMi4xMjIgNjQuMzI5LTc4LjY0OCA3Ny4zMjMtMTA3LjUzNCA3Ljk1Ni0xNy44NTcgMjUuNDc5LTI4LjQ1MyA0My44NDUtMjguNDY0bC4wMDEtLjAwMmgxNzEuNTI2YzExLjgxMiAwIDIxLjg5NyA4LjU5NiAyMy43MDMgMjAuMjY5IDcuMjUgNDYuODM3IDM4LjQ4MyA2MS43NiAzOC4zMTUgMTIzLjczMS0uMDA3IDIuNzI0LjE5NSAxMy4yNTQuMTk1IDE2IDAgNTAuNjU0LTIyLjEyMiA4MS41NzQtNzEuMjYzIDcyLjYtOS4yOTcgMTguNTk3LTM5LjQ4NiAzMC43MzgtNjIuMzE1IDE2LjQ1LTIxLjE3NyAyNC42NDUtNTMuODk2IDIyLjYzOS03MC45NDQgNi4yOTlWNDY3LjJjMCAyNC4xNS0yMC4yMDEgNDQuOC00My44MjYgNDQuOC0yMy4yODMgMC00My44MjYtMjEuMzUtNDMuODI2LTQ0Ljh6TTExMiA3MlYyNGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoMTkyYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHY0OGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMTM2Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjR6bTIxMi0yNGMwLTExLjA0Ni04Ljk1NC0yMC0yMC0yMHMtMjAgOC45NTQtMjAgMjAgOC45NTQgMjAgMjAgMjAgMjAtOC45NTQgMjAtMjB6XCJdXG59O1xudmFyIGZhSGFuZFBvaW50TGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLXBvaW50LWxlZnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwYTVcIiwgXCJNNDQuOCAxNTUuODI2aDE0OS4yMzRjLTUuODQxLTguMjQ4LTEwLjU3LTE2LjU1OC0xNC4xNTMtMjQuOTE4QzE2Ni4yNDggOTkuMDk4IDE4OS43NzggNjMuOTg2IDIyNCA2NGMxOC42MTYuMDA4IDMyLjIwMyAxMC44OTcgNDAgMjkuMDkyIDEyLjEyMiAyOC4yODYgNzguNjQ4IDY0LjMyOSAxMDcuNTM0IDc3LjMyMyAxNy44NTcgNy45NTYgMjguNDUzIDI1LjQ3OSAyOC40NjQgNDMuODQ1bC4wMDIuMDAxdjE3MS41MjZjMCAxMS44MTItOC41OTYgMjEuODk3LTIwLjI2OSAyMy43MDMtNDYuODM3IDcuMjUtNjEuNzYgMzguNDgzLTEyMy43MzEgMzguMzE1LTIuNzI0LS4wMDctMTMuMjU0LjE5NS0xNiAuMTk1LTUwLjY1NCAwLTgxLjU3NC0yMi4xMjItNzIuNi03MS4yNjMtMTguNTk3LTkuMjk3LTMwLjczOC0zOS40ODYtMTYuNDUtNjIuMzE1LTI0LjY0NS0yMS4xNzctMjIuNjM5LTUzLjg5Ni02LjI5OS03MC45NDRINDQuOGMtMjQuMTUgMC00NC44LTIwLjIwMS00NC44LTQzLjgyNiAwLTIzLjI4MyAyMS4zNS00My44MjYgNDQuOC00My44MjZ6TTQ0MCAxNzZoNDhjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0djE5MmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRoLTQ4Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRWMjAwYzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNHptMjQgMjEyYzExLjA0NiAwIDIwLTguOTU0IDIwLTIwcy04Ljk1NC0yMC0yMC0yMC0yMCA4Ljk1NC0yMCAyMCA4Ljk1NCAyMCAyMCAyMHpcIl1cbn07XG52YXIgZmFIYW5kUG9pbnRSaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLXBvaW50LXJpZ2h0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMGE0XCIsIFwiTTUxMiAxOTkuNjUyYzAgMjMuNjI1LTIwLjY1IDQzLjgyNi00NC44IDQzLjgyNmgtOTkuODUxYzE2LjM0IDE3LjA0OCAxOC4zNDYgNDkuNzY2LTYuMjk5IDcwLjk0NCAxNC4yODggMjIuODI5IDIuMTQ3IDUzLjAxNy0xNi40NSA2Mi4zMTVDMzUzLjU3NCA0MjUuODc4IDMyMi42NTQgNDQ4IDI3MiA0NDhjLTIuNzQ2IDAtMTMuMjc2LS4yMDMtMTYtLjE5NS02MS45NzEuMTY4LTc2Ljg5NC0zMS4wNjUtMTIzLjczMS0zOC4zMTVDMTIwLjU5NiA0MDcuNjgzIDExMiAzOTcuNTk5IDExMiAzODUuNzg2VjIxNC4yNjFsLjAwMi0uMDAxYy4wMTEtMTguMzY2IDEwLjYwNy0zNS44ODkgMjguNDY0LTQzLjg0NSAyOC44ODYtMTIuOTk0IDk1LjQxMy00OS4wMzggMTA3LjUzNC03Ny4zMjMgNy43OTctMTguMTk0IDIxLjM4NC0yOS4wODQgNDAtMjkuMDkyIDM0LjIyMi0uMDE0IDU3Ljc1MiAzNS4wOTggNDQuMTE5IDY2LjkwOC0zLjU4MyA4LjM1OS04LjMxMiAxNi42Ny0xNC4xNTMgMjQuOTE4SDQ2Ny4yYzIzLjQ1IDAgNDQuOCAyMC41NDMgNDQuOCA0My44MjZ6TTk2IDIwMHYxOTJjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDI0Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRWMjAwYzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNGg0OGMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR6TTY4IDM2OGMwLTExLjA0Ni04Ljk1NC0yMC0yMC0yMHMtMjAgOC45NTQtMjAgMjAgOC45NTQgMjAgMjAgMjAgMjAtOC45NTQgMjAtMjB6XCJdXG59O1xudmFyIGZhSGFuZFBvaW50VXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZC1wb2ludC11cCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjBhNlwiLCBcIk0xMzUuNjUyIDBjMjMuNjI1IDAgNDMuODI2IDIwLjY1IDQzLjgyNiA0NC44djk5Ljg1MWMxNy4wNDgtMTYuMzQgNDkuNzY2LTE4LjM0NiA3MC45NDQgNi4yOTkgMjIuODI5LTE0LjI4OCA1My4wMTctMi4xNDcgNjIuMzE1IDE2LjQ1QzM2MS44NzggMTU4LjQyNiAzODQgMTg5LjM0NiAzODQgMjQwYzAgMi43NDYtLjIwMyAxMy4yNzYtLjE5NSAxNiAuMTY4IDYxLjk3MS0zMS4wNjUgNzYuODk0LTM4LjMxNSAxMjMuNzMxQzM0My42ODMgMzkxLjQwNCAzMzMuNTk5IDQwMCAzMjEuNzg2IDQwMEgxNTAuMjYxbC0uMDAxLS4wMDJjLTE4LjM2Ni0uMDExLTM1Ljg4OS0xMC42MDctNDMuODQ1LTI4LjQ2NEM5My40MjEgMzQyLjY0OCA1Ny4zNzcgMjc2LjEyMiAyOS4wOTIgMjY0IDEwLjg5NyAyNTYuMjAzLjAwOCAyNDIuNjE2IDAgMjI0Yy0uMDE0LTM0LjIyMiAzNS4wOTgtNTcuNzUyIDY2LjkwOC00NC4xMTkgOC4zNTkgMy41ODMgMTYuNjcgOC4zMTIgMjQuOTE4IDE0LjE1M1Y0NC44YzAtMjMuNDUgMjAuNTQzLTQ0LjggNDMuODI2LTQ0Ljh6TTEzNiA0MTZoMTkyYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHY0OGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMTM2Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjR2LTQ4YzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNHptMTY4IDI4Yy0xMS4wNDYgMC0yMCA4Ljk1NC0yMCAyMHM4Ljk1NCAyMCAyMCAyMCAyMC04Ljk1NCAyMC0yMC04Ljk1NC0yMC0yMC0yMHpcIl1cbn07XG52YXIgZmFIYW5kUG9pbnRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLXBvaW50ZXInLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYyNWFcIiwgXCJNNDQ4IDI0MHY5NmMwIDMuMDg0LS4zNTYgNi4xNTktMS4wNjMgOS4xNjJsLTMyIDEzNkM0MTAuNjg2IDQ5OS4yMyAzOTQuNTYyIDUxMiAzNzYgNTEySDE2OGE0MC4wMDQgNDAuMDA0IDAgMCAxLTMyLjM1LTE2LjQ3M2wtMTI3Ljk5Ny0xNzZjLTEyLjk5My0xNy44NjYtOS4wNDMtNDIuODgzIDguODIyLTU1Ljg3NiAxNy44NjctMTIuOTk0IDQyLjg4NC05LjA0MyA1NS44NzcgOC44MjNMMTA0IDMxNS45OTJWNDBjMC0yMi4wOTEgMTcuOTA4LTQwIDQwLTQwczQwIDE3LjkwOSA0MCA0MHYyMDBoOHYtNDBjMC0yMi4wOTEgMTcuOTA4LTQwIDQwLTQwczQwIDE3LjkwOSA0MCA0MHY0MGg4di0yNGMwLTIyLjA5MSAxNy45MDgtNDAgNDAtNDBzNDAgMTcuOTA5IDQwIDQwdjI0aDhjMC0yMi4wOTEgMTcuOTA4LTQwIDQwLTQwczQwIDE3LjkwOSA0MCA0MHptLTI1NiA4MGgtOHY5Nmg4di05NnptODggMGgtOHY5Nmg4di05NnptODggMGgtOHY5Nmg4di05NnpcIl1cbn07XG52YXIgZmFIYW5kUm9jayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLXJvY2snLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyNTVcIiwgXCJNNDY0LjggODBjLTI2LjktLjQtNDguOCAyMS4yLTQ4LjggNDhoLThWOTYuOGMwLTI2LjMtMjAuOS00OC4zLTQ3LjItNDguOC0yNi45LS40LTQ4LjggMjEuMi00OC44IDQ4djMyaC04VjgwLjhjMC0yNi4zLTIwLjktNDguMy00Ny4yLTQ4LjgtMjYuOS0uNC00OC44IDIxLjItNDguOCA0OHY0OGgtOFY5Ni44YzAtMjYuMy0yMC45LTQ4LjMtNDcuMi00OC44LTI2LjktLjQtNDguOCAyMS4yLTQ4LjggNDh2MTM2bC04LTcuMXYtNDguMWMwLTI2LjMtMjAuOS00OC4zLTQ3LjItNDguOEMyMS45IDEyNy42IDAgMTQ5LjIgMCAxNzZ2NjYuNGMwIDI3LjQgMTEuNyA1My41IDMyLjIgNzEuOGwxMTEuNyA5OS4zYzEwLjIgOS4xIDE2LjEgMjIuMiAxNi4xIDM1Ljl2Ni43YzAgMTMuMyAxMC43IDI0IDI0IDI0aDI0MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtMi45YzAtMTIuOCAyLjYtMjUuNSA3LjUtMzcuM2w0OS0xMTYuM2M1LTExLjggNy41LTI0LjUgNy41LTM3LjNWMTI4LjhjMC0yNi4zLTIwLjktNDguNC00Ny4yLTQ4Ljh6XCJdXG59O1xudmFyIGZhSGFuZFNjaXNzb3JzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtc2Npc3NvcnMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyNTdcIiwgXCJNMjE2IDQ0MGMwLTIyLjA5MiAxNy45MDktNDAgNDAtNDB2LThoLTMyYy0yMi4wOTEgMC00MC0xNy45MDgtNDAtNDBzMTcuOTA5LTQwIDQwLTQwaDMydi04SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4czIxLjQ5LTQ4IDQ4LTQ4aDIwOHYtMTMuNTcybC0xNzcuNTUxLTY5Ljc0Yy0yNC42NzQtOS42OTQtMzYuODE4LTM3LjU1NS0yNy4xMjUtNjIuMjI4IDkuNjkzLTI0LjY3NCAzNy41NTQtMzYuODE3IDYyLjIyOC0yNy4xMjRsMTkwLjM0MiA3NC43NjUgMjQuODcyLTMxLjA5YzEyLjMwNi0xNS4zODEgMzMuOTc4LTE5LjUxNSA1MS4wODEtOS43NDFsMTEyIDY0QTQwLjAwMiA0MC4wMDIgMCAwIDEgNTEyIDE2OHYyNDBjMCAxOC41NjItMTIuNzcgMzQuNjg2LTMwLjgzOCAzOC45MzdsLTEzNiAzMkEzOS45ODIgMzkuOTgyIDAgMCAxIDMzNiA0ODBoLTgwYy0yMi4wOTEgMC00MC0xNy45MDgtNDAtNDB6XCJdXG59O1xudmFyIGZhSGFuZFNwYXJrbGVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtc3BhcmtsZXMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImUwNWRcIiwgXCJNMTA2LjY2LDE3MC42NGwuMDksMCw0OS41NS0yMC42NWE3LjMyLDcuMzIsMCwwLDAsMy42OC02aDBhNy4yOSw3LjI5LDAsMCwwLTMuNjgtNmwtNDkuNTctMjAuNjctLjA3LDBMODYsNjcuNjhhNi42Niw2LjY2LDAsMCwwLTExLjkyLDBsLTIwLjcsNDkuNjMtLjA1LDBMMy43LDEzOEE3LjI5LDcuMjksMCwwLDAsMCwxNDRIMGE3LjMyLDcuMzIsMCwwLDAsMy42OCw2TDUzLjI3LDE3MC42bC4wNywwTDc0LDIyMC4yNmE2LjY1LDYuNjUsMCwwLDAsMTEuOTIsMGwyMC42OS00OS42MlpNNDcxLjM4LDQ2Ny40MWwtMS0uNDItMS0uNWEzOC42NywzOC42NywwLDAsMSwwLTY5LjE0bDEtLjQ5LDEtLjQzLDM3LjQ5LTE1LjYzLDE1LjYzLTM3LjQ4LjQxLTEsLjQ3LS45NWMzLjg1LTcuNzQsMTAuNTgtMTMuNjMsMTguMzUtMTcuMzQsMC0xLjMzLjI1LTIuNjkuMjctNFYxNDRhMzIsMzIsMCwwLDAtNjQsMHY3MmE4LDgsMCwwLDEtOCw4SDQ1NmE4LDgsMCwwLDEtOC04VjY0YTMyLDMyLDAsMCwwLTY0LDBWMjE2YTgsOCwwLDAsMS04LDhIMzYwYTgsOCwwLDAsMS04LThWMzJhMzIsMzIsMCwwLDAtNjQsMFYyMTZhOCw4LDAsMCwxLTgsOEgyNjRhOCw4LDAsMCwxLTgtOFY2NGEzMiwzMiwwLDAsMC02NCwwdjI0MWwtMjMuNTktMzIuNDlhNDAsNDAsMCwwLDAtNjQuNzEsNDcuMDlMMjI5LjMsNDkyLjIxQTQ4LjA3LDQ4LjA3LDAsMCwwLDI2OC4wOSw1MTJINDY1LjdjMTkuMjQsMCwzNS42NS0xMS43Myw0My4yNC0yOC43OWwtLjA3LS4xN1pNMzQ5Ljc5LDMzOS41MiwzMjAsMzUxLjkzbC0xMi40MiwyOS43OGE0LDQsMCwwLDEtNy4xNSwwTDI4OCwzNTEuOTNsLTI5Ljc5LTEyLjQxYTQsNCwwLDAsMSwwLTcuMTZMMjg4LDMxOS45NGwxMi40Mi0yOS43OGE0LDQsMCwwLDEsNy4xNSwwTDMyMCwzMTkuOTRsMjkuNzksMTIuNDJhNCw0LDAsMCwxLDAsNy4xNlpNNjQwLDQzMS45MWE3LjI4LDcuMjgsMCwwLDAtMy42OC02bC00OS41Ny0yMC42Ny0uMDcsMEw1NjYsMzU1LjYzYTYuNjYsNi42NiwwLDAsMC0xMS45MiwwbC0yMC43LDQ5LjYzLS4wNSwwTDQ4My43LDQyNmE3LjI4LDcuMjgsMCwwLDAtMy42OCw2aDBhNy4yOSw3LjI5LDAsMCwwLDMuNjgsNS45NWw0OS41NywyMC42Ny4wNywwTDU1NCw1MDguMjFhNi42NSw2LjY1LDAsMCwwLDExLjkyLDBsMjAuNjktNDkuNjJoMGwuMDksMCw0OS41NS0yMC42NmE3LjI5LDcuMjksMCwwLDAsMy42OC01Ljk1aDBaXCJdXG59O1xudmFyIGZhSGFuZFNwb2NrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtc3BvY2snLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyNTlcIiwgXCJNNTEwLjkwMDUsMTQ1LjI3MDI3LDQ0Mi42MDQsNDMyLjA5MzkxQTEwMy45OTUwNywxMDMuOTk1MDcsMCwwLDEsMzQxLjQzNzQ1LDUxMkgyMTQuMDc0YTEzNS45Njk2OCwxMzUuOTY5NjgsMCwwLDEtOTMuMTg0ODktMzYuOTUyOTFMMTIuNTkwNzIsMzczLjEyNzIzYTM5Ljk5MiwzOS45OTIsMCwwLDEsNTQuODEyMi01OC4yNDk4OGw2MC41OTM0Miw1Ny4wMjUyOHYwYTI4My4yNDg0OSwyODMuMjQ4NDksMCwwLDAtMTEuNjcwMy04MC40NjczNEw3My42MzcyNiwxNDcuMzYwMTFhNDAuMDA1NzUsNDAuMDA1NzUsMCwxLDEsNzYuNzE4MzMtMjIuNzE4N2wzNy4xNTQ1OCwxMjUuMzk0NzdhOC4zMzExMyw4LjMzMTEzLDAsMCwwLDE2LjA1NjU2LTQuNDQxNEwxNTMuMjYxODMsNDkuOTU0MDZBMzkuOTk2MzgsMzkuOTk2MzgsMCwxLDEsMjMwLjczMDE1LDMwLjAxNjZsNTYuMDk0OTEsMjE4LjE1ODI1YTEwLjQyMDQ3LDEwLjQyMDQ3LDAsMCwwLDIwLjMwMDE4LS41MDFMMzQ0LjgwNzY2LDYzLjk2OTY2YTQwLjA1Miw0MC4wNTIsMCwwLDEsNTEuMzAyNDUtMzAuMDg5M2MxOS44NjA3Myw2LjI5OTgsMzAuODYyNjIsMjcuNjczNzgsMjYuNjc1NjQsNDguMDg0ODdsLTMzLjgzODY5LDE2NC45NjZhNy41NTE3Miw3LjU1MTcyLDAsMCwwLDE0Ljc0NDA2LDMuMjY2NmwyOS4zOTczLTEyMy40NTg3NGEzOS45OTQxNCwzOS45OTQxNCwwLDEsMSw3Ny44MTIwOCwxOC41MzEyMVpcIl1cbn07XG52YXIgZmFIYW5kcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kcycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjRjMlwiLCBcIk0yMDQuOCAyMzAuNGMtMTAuNi0xNC4xLTMwLjctMTctNDQuOC02LjQtMTQuMSAxMC42LTE3IDMwLjctNi40IDQ0LjhsMzguMSA1MC44YzQuOCA2LjQgNC4xIDE1LjMtMS41IDIwLjlsLTEyLjggMTIuOGMtNi43IDYuNy0xNy42IDYuMi0yMy42LTEuMUw2NCAyNDQuNFY5NmMwLTE3LjctMTQuMy0zMi0zMi0zMlMwIDc4LjMgMCA5NnYyMTguNGMwIDEwLjkgMy43IDIxLjUgMTAuNSAzMGwxMDQuMSAxMzQuM2M1IDYuNSA4LjQgMTMuOSAxMC40IDIxLjcgMS44IDYuOSA4LjEgMTEuNiAxNS4zIDExLjZIMjcyYzguOCAwIDE2LTcuMiAxNi0xNlYzODRjMC0yNy43LTktNTQuNi0yNS42LTc2LjhsLTU3LjYtNzYuOHpNNjA4IDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYxNDguNGwtODkuOCAxMDcuOGMtNiA3LjItMTcgNy43LTIzLjYgMS4xbC0xMi44LTEyLjhjLTUuNi01LjYtNi4zLTE0LjUtMS41LTIwLjlsMzguMS01MC44YzEwLjYtMTQuMSA3LjctMzQuMi02LjQtNDQuOC0xNC4xLTEwLjYtMzQuMi03LjctNDQuOCA2LjRsLTU3LjYgNzYuOEMzNjEgMzI5LjQgMzUyIDM1Ni4zIDM1MiAzODR2MTEyYzAgOC44IDcuMiAxNiAxNiAxNmgxMzEuN2M3LjEgMCAxMy41LTQuNyAxNS4zLTExLjYgMi03LjggNS40LTE1LjIgMTAuNC0yMS43bDEwNC4xLTEzNC4zYzYuOC04LjUgMTAuNS0xOS4xIDEwLjUtMzBWOTZjMC0xNy43LTE0LjMtMzItMzItMzJ6XCJdXG59O1xudmFyIGZhSGFuZHNIZWxwaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmRzLWhlbHBpbmcnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY0YzRcIiwgXCJNNDg4IDE5MkgzMzZ2NTZjMCAzOS43LTMyLjMgNzItNzIgNzJzLTcyLTMyLjMtNzItNzJWMTI2LjRsLTY0LjkgMzlDMTA3LjggMTc2LjkgOTYgMTk3LjggOTYgMjIwLjJ2NDcuM2wtODAgNDYuMkMuNyAzMjIuNS00LjYgMzQyLjEgNC4zIDM1Ny40bDgwIDEzOC42YzguOCAxNS4zIDI4LjQgMjAuNSA0My43IDExLjdMMjMxLjQgNDQ4SDM2OGMzNS4zIDAgNjQtMjguNyA2NC02NGgxNmMxNy43IDAgMzItMTQuMyAzMi0zMnYtNjRoOGMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtNDhjMC0xMy4zLTEwLjctMjQtMjQtMjR6bTE0Ny43LTM3LjRMNTU1LjcgMTZDNTQ2LjkuNyA1MjcuMy00LjUgNTEyIDQuM0w0MDguNiA2NEgzMDYuNGMtMTIgMC0yMy43IDMuNC0zMy45IDkuN0wyMzkgOTQuNmMtOS40IDUuOC0xNSAxNi4xLTE1IDI3LjFWMjQ4YzAgMjIuMSAxNy45IDQwIDQwIDQwczQwLTE3LjkgNDAtNDB2LTg4aDE4NGMzMC45IDAgNTYgMjUuMSA1NiA1NnYyOC41bDgwLTQ2LjJjMTUuMy04LjkgMjAuNS0yOC40IDExLjctNDMuN3pcIl1cbn07XG52YXIgZmFIYW5kc1dhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZHMtd2FzaCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTA1ZVwiLCBcIk00OTYsMjI0YTQ4LDQ4LDAsMSwwLTQ4LTQ4QTQ4LDQ4LDAsMCwwLDQ5NiwyMjRaTTMxMS40NywxNzguNDVBNTYuNzcsNTYuNzcsMCwwLDEsMzI4LDE3NmE1Niw1NiwwLDAsMSwxOSwzLjQ5bDE1LjM1LTQ4LjYxQTI0LDI0LDAsMCwwLDM0Miw5OS43NGMtMTEuNTMtMS4zNS0yMi4yMSw2LjQ0LTI1LjcxLDE3LjUxbC0yMC45LDY2LjE3Wk05My42NSwzODYuMzNjLjgtLjE5LDEuNTQtLjU0LDIuMzUtLjcxVjM1OS45M2ExNTYsMTU2LDAsMCwxLDEwNy4wNi0xNDhsNzMuNy0yMi43NkwzMTAuOTIsODEuMDVhMjQsMjQsMCwwLDAtMjAuMzMtMzEuMTFjLTExLjUzLTEuMzQtMjIuMjIsNi40NS0yNS43MiwxNy41MkwyMzEuNDIsMTczLjg4YTgsOCwwLDAsMS0xNS4yNi00LjgzTDI1OS41MywzMS4yNkEyNCwyNCwwLDAsMCwyMzkuMi4xNUMyMjcuNjctMS4xOSwyMTcsNi42LDIxMy40OSwxNy42NkwxNjUuNTYsMTY5LjM3YTgsOCwwLDEsMS0xNS4yNi00LjgybDM4LjU2LTEyMmEyNCwyNCwwLDAsMC0yMC4zMy0zMS4xMUMxNTcsMTAsMTQ2LjMyLDE3LjgzLDE0Mi44MiwyOC45bC02MCwxODkuODVMODAuNzYsMTY4LjdBMjQsMjQsMCwwLDAsNTYuOSwxNDQuNTVjLTEzLjIzLS4wNS0yNC43MiwxMC41NC0yNC45LDIzLjg2VjI4MS4xNEExMjMuNjksMTIzLjY5LDAsMCwwLDkzLjY1LDM4Ni4zM1pNNTE5LjEsMzM2SDM2MGE4LDgsMCwwLDEsMC0xNkg0ODhhMjQsMjQsMCwwLDAsMjMuNTQtMjguNzZDNTA5LjM1LDI3OS44NCw0OTguNzEsMjcyLDQ4Ny4xLDI3MkgyODhsNDcuMDktMTcuMDZhMjQsMjQsMCwwLDAtMTQuMTgtNDUuODhMMjEzLjE5LDI0Mi4zMUExMjMuODgsMTIzLjg4LDAsMCwwLDEyOCwzNjB2MjUuNjVhNzkuNzgsNzkuNzgsMCwwLDEsNTgsMTA4LjYzQTExOC45LDExOC45LDAsMCwwLDI0OCw1MTJINDU2YTI0LDI0LDAsMCwwLDIzLjU0LTI4Ljc2QzQ3Ny4zNSw0NzEuODQsNDY2LjcxLDQ2NCw0NTUuMSw0NjRIMzYwYTgsOCwwLDAsMSwwLTE2SDQ4OGEyNCwyNCwwLDAsMCwyMy41NC0yOC43NkM1MDkuMzUsNDA3Ljg0LDQ5OC43MSw0MDAsNDg3LjEsNDAwSDM2MGE4LDgsMCwwLDEsMC0xNkg1MjBhMjQsMjQsMCwwLDAsMjMuNTQtMjguNzZDNTQxLjM1LDM0My44NCw1MzAuNzEsMzM2LDUxOS4xLDMzNlpNNDE2LDY0YTMyLDMyLDAsMSwwLTMyLTMyQTMyLDMyLDAsMCwwLDQxNiw2NFpNMTEyLDQxNmE0OCw0OCwwLDEsMCw0OCw0OEE0OCw0OCwwLDAsMCwxMTIsNDE2WlwiXVxufTtcbnZhciBmYUhhbmRzaGFrZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kc2hha2UnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYyYjVcIiwgXCJNNDM0LjcgNjRoLTg1LjljLTggMC0xNS43IDMtMjEuNiA4LjRsLTk4LjMgOTBjLS4xLjEtLjIuMy0uMy40LTE2LjYgMTUuNi0xNi4zIDQwLjUtMi4xIDU2IDEyLjcgMTMuOSAzOS40IDE3LjYgNTYuMSAyLjcuMS0uMS4zLS4xLjQtLjJsNzkuOS03My4yYzYuNS01LjkgMTYuNy01LjUgMjIuNiAxIDYgNi41IDUuNSAxNi42LTEgMjIuNmwtMjYuMSAyMy45TDUwNCAzMTMuOGMyLjkgMi40IDUuNSA1IDcuOSA3LjdWMTI4bC01NC42LTU0LjZjLTUuOS02LTE0LjEtOS40LTIyLjYtOS40ek01NDQgMTI4LjJ2MjIzLjljMCAxNy43IDE0LjMgMzIgMzIgMzJoNjRWMTI4LjJoLTk2em00OCAyMjMuOWMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2ek0wIDM4NGg2NGMxNy43IDAgMzItMTQuMyAzMi0zMlYxMjguMkgwVjM4NHptNDgtNjMuOWM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNi0xNi03LjItMTYtMTZjMC04LjkgNy4yLTE2IDE2LTE2em00MzUuOSAxOC42TDMzNC42IDIxNy41bC0zMCAyNy41Yy0yOS43IDI3LjEtNzUuMiAyNC41LTEwMS43LTQuNC0yNi45LTI5LjQtMjQuOC03NC45IDQuNC0xMDEuN0wyODkuMSA2NGgtODMuOGMtOC41IDAtMTYuNiAzLjQtMjIuNiA5LjRMMTI4IDEyOHYyMjMuOWgxOC4zbDkwLjUgODEuOWMyNy40IDIyLjMgNjcuNyAxOC4xIDkwLTkuM2wuMi0uMiAxNy45IDE1LjVjMTUuOSAxMyAzOS40IDEwLjUgNTIuMy01LjRsMzEuNC0zOC42IDUuNCA0LjRjMTMuNyAxMS4xIDMzLjkgOS4xIDQ1LTQuN2w5LjUtMTEuN2MxMS4yLTEzLjggOS4xLTMzLjktNC42LTQ1LjF6XCJdXG59O1xudmFyIGZhSGFuZHNoYWtlQWx0U2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZHNoYWtlLWFsdC1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTA1ZlwiLCBcIk0zNTguNTksMTk1LjYsNTA0LjIsMzEzLjhhNjMuNCw2My40LDAsMCwxLDIyLjIxLDM3LjkxSDYyNGExNi4wNSwxNi4wNSwwLDAsMCwxNi0xNlYxNDMuOTFBMTYsMTYsMCwwLDAsNjI0LDEyOEg1MTJMNDU3LjQxLDczLjQxQTMyLDMyLDAsMCwwLDQzNC44LDY0SDM0OC45MWEzMiwzMiwwLDAsMC0yMS42MSw4LjQxbC04OC4xMiw4MC42OC0yNS42OS0xOS44NUwyODkuMDksNjRIMjA1LjNhMzIsMzIsMCwwLDAtMjIuNiw5LjQxbC0yMC4zNCwyMC4zTDQ1LjQ3LDMuMzhBMTYsMTYsMCwwLDAsMjMsNi4xOUwzLjM4LDMxLjQ2QTE2LDE2LDAsMCwwLDYuMTksNTMuOTFMNTk0LjU0LDUwOC42M0ExNiwxNiwwLDAsMCw2MTcsNTA1LjgybDE5LjY0LTI1LjI3YTE2LDE2LDAsMCwwLTIuODEtMjIuNDVMMzAzLjQsMjAyLjcybDMyLjY5LTI5LjkyLDI3LTI0LjdhMTYsMTYsMCwwLDEsMjEuNjEsMjMuNjFaTTE2LDEyOEExNi4wNSwxNi4wNSwwLDAsMCwwLDE0NFYzMzUuOTFhMTYsMTYsMCwwLDAsMTYsMTZIMTQ2LjNsOTAuNSw4MS44OWE2NCw2NCwwLDAsMCw5MC05LjNsLjItLjIsMTcuOTEsMTUuNWEzNy4xNiwzNy4xNiwwLDAsMCw1Mi4yOS01LjM5bDguOC0xMC44MkwyMy41NiwxMjhaXCJdXG59O1xudmFyIGZhSGFuZHNoYWtlU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZHNoYWtlLXNsYXNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlMDYwXCIsIFwiTTAsMTI4LjIxVjM4NEg2NGEzMiwzMiwwLDAsMCwzMi0zMlYxODRMMjMuODMsMTI4LjIxWk00OCwzMjAuMWExNiwxNiwwLDEsMS0xNiwxNkExNiwxNiwwLDAsMSw0OCwzMjAuMVptODAsMzEuODFoMTguM2w5MC41LDgxLjg5YTY0LDY0LDAsMCwwLDkwLTkuM2wuMi0uMiwxNy45MSwxNS41YTM3LjE2LDM3LjE2LDAsMCwwLDUyLjI5LTUuMzlsOC44LTEwLjgyTDEyOCwyMDguNzJabTQxNi0yMjMuN1YzNTIuMWEzMiwzMiwwLDAsMCwzMiwzMmg2NFYxMjguMjFaTTU5MiwzNTIuMWExNiwxNiwwLDEsMSwxNi0xNkExNiwxNiwwLDAsMSw1OTIsMzUyLjFaTTMwMy4zMywyMDIuNjdsNTkuNTgtNTQuNTdhMTYsMTYsMCwwLDEsMjEuNTksMjMuNjFMMzU4LjQxLDE5NS42LDUwNCwzMTMuOGE3My4wOCw3My4wOCwwLDAsMSw3LjkxLDcuN1YxMjhMNDU3LjMsNzMuNDFBMzEuNzYsMzEuNzYsMCwwLDAsNDM0LjcsNjRIMzQ4LjhhMzEuOTMsMzEuOTMsMCwwLDAtMjEuNiw4LjQxbC04OC4wNyw4MC42NC0yNS42NC0xOS44MUwyODkuMDksNjRIMjA1LjNhMzIsMzIsMCwwLDAtMjIuNiw5LjQxTDE2Mi4zNiw5My43Miw0NS40NywzLjM4QTE2LDE2LDAsMCwwLDIzLDYuMTlMMy4zOCwzMS40NkExNiwxNiwwLDAsMCw2LjE5LDUzLjkxTDU5NC41Myw1MDguNjNBMTYsMTYsMCwwLDAsNjE3LDUwNS44MmwxOS42NS0yNS4yN2ExNiwxNiwwLDAsMC0yLjgyLTIyLjQ1WlwiXVxufTtcbnZhciBmYUhhbnVraWFoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbnVraWFoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNmU2XCIsIFwiTTIzMiAxNjBjLTQuNDIgMC04IDMuNTgtOCA4djEyMGgzMlYxNjhjMC00LjQyLTMuNTgtOC04LThoLTE2em0tNjQgMGMtNC40MiAwLTggMy41OC04IDh2MTIwaDMyVjE2OGMwLTQuNDItMy41OC04LTgtOGgtMTZ6bTIyNCAwYy00LjQyIDAtOCAzLjU4LTggOHYxMjBoMzJWMTY4YzAtNC40Mi0zLjU4LTgtOC04aC0xNnptNjQgMGMtNC40MiAwLTggMy41OC04IDh2MTIwaDMyVjE2OGMwLTQuNDItMy41OC04LTgtOGgtMTZ6bTg4IDhjMC00LjQyLTMuNTgtOC04LThoLTE2Yy00LjQyIDAtOCAzLjU4LTggOHYxMjBoMzJWMTY4em0tNDQwLThjLTQuNDIgMC04IDMuNTgtOCA4djEyMGgzMlYxNjhjMC00LjQyLTMuNTgtOC04LThoLTE2em01MjAgMGgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djExMmMwIDE3LjY3LTE0LjMzIDMyLTMyIDMySDM1MlYxMjhjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxOTJIOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJWMTc2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxMTJjMCA1My4wMiA0Mi45OCA5NiA5NiA5NmgxOTJ2NjRIMTEyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0MTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2SDM1MnYtNjRoMTkyYzUzLjAyIDAgOTYtNDIuOTggOTYtOTZWMTc2YzAtOC44NC03LjE2LTE2LTE2LTE2em0tMTYtMzJjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1M2MDggNDggNjA4IDQ4cy0yNCAzOC42MS0yNCA1My4zM1M1OTQuNzUgMTI4IDYwOCAxMjh6bS01NzYgMGMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzMyIDQ4IDMyIDQ4IDggODYuNjEgOCAxMDEuMzMgMTguNzUgMTI4IDMyIDEyOHptMjg4LTQ4YzEzLjI1IDAgMjQtMTEuOTQgMjQtMjYuNjdTMzIwIDAgMzIwIDBzLTI0IDM4LjYxLTI0IDUzLjMzUzMwNi43NSA4MCAzMjAgODB6bS0yMDggNDhjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1MxMTIgNDggMTEyIDQ4cy0yNCAzOC42MS0yNCA1My4zM1M5OC43NSAxMjggMTEyIDEyOHptNjQgMGMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzE3NiA0OCAxNzYgNDhzLTI0IDM4LjYxLTI0IDUzLjMzUzE2Mi43NSAxMjggMTc2IDEyOHptNjQgMGMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzI0MCA0OCAyNDAgNDhzLTI0IDM4LjYxLTI0IDUzLjMzUzIyNi43NSAxMjggMjQwIDEyOHptMTYwIDBjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1M0MDAgNDggNDAwIDQ4cy0yNCAzOC42MS0yNCA1My4zM1MzODYuNzUgMTI4IDQwMCAxMjh6bTY0IDBjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1M0NjQgNDggNDY0IDQ4cy0yNCAzOC42MS0yNCA1My4zM1M0NTAuNzUgMTI4IDQ2NCAxMjh6bTY0IDBjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1M1MjggNDggNTI4IDQ4cy0yNCAzOC42MS0yNCA1My4zM1M1MTQuNzUgMTI4IDUyOCAxMjh6XCJdXG59O1xudmFyIGZhSGFyZEhhdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYXJkLWhhdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjgwN1wiLCBcIk00ODAgMjg4YzAtODAuMjUtNDkuMjgtMTQ4LjkyLTExOS4xOS0xNzcuNjJMMzIwIDE5MlY4MGExNiAxNiAwIDAgMC0xNi0xNmgtOTZhMTYgMTYgMCAwIDAtMTYgMTZ2MTEybC00MC44MS04MS42MkM4MS4yOCAxMzkuMDggMzIgMjA3Ljc1IDMyIDI4OHY2NGg0NDh6bTE2IDk2SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQ4MGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJdXG59O1xudmFyIGZhSGFzaHRhZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYXNodGFnJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMjkyXCIsIFwiTTQ0MC42NjcgMTgyLjEwOWw3LjE0My00MGMxLjMxMy03LjM1NS00LjM0Mi0xNC4xMDktMTEuODEzLTE0LjEwOWgtNzQuODFsMTQuNjIzLTgxLjg5MUMzNzcuMTIzIDM4Ljc1NCAzNzEuNDY4IDMyIDM2My45OTcgMzJoLTQwLjYzMmExMiAxMiAwIDAgMC0xMS44MTMgOS44OTFMMjk2LjE3NSAxMjhIMTk3LjU0bDE0LjYyMy04MS44OTFDMjEzLjQ3NyAzOC43NTQgMjA3LjgyMiAzMiAyMDAuMzUgMzJoLTQwLjYzMmExMiAxMiAwIDAgMC0xMS44MTMgOS44OTFMMTMyLjUyOCAxMjhINTMuNDMyYTEyIDEyIDAgMCAwLTExLjgxMyA5Ljg5MWwtNy4xNDMgNDBDMzMuMTYzIDE4NS4yNDYgMzguODE4IDE5MiA0Ni4yODkgMTkyaDc0LjgxTDk4LjI0MiAzMjBIMTkuMTQ2YTEyIDEyIDAgMCAwLTExLjgxMyA5Ljg5MWwtNy4xNDMgNDBDLTEuMTIzIDM3Ny4yNDYgNC41MzIgMzg0IDEyLjAwMyAzODRoNzQuODFMNzIuMTkgNDY1Ljg5MUM3MC44NzcgNDczLjI0NiA3Ni41MzIgNDgwIDg0LjAwMyA0ODBoNDAuNjMyYTEyIDEyIDAgMCAwIDExLjgxMy05Ljg5MUwxNTEuODI2IDM4NGg5OC42MzRsLTE0LjYyMyA4MS44OTFDMjM0LjUyMyA0NzMuMjQ2IDI0MC4xNzggNDgwIDI0Ny42NSA0ODBoNDAuNjMyYTEyIDEyIDAgMCAwIDExLjgxMy05Ljg5MUwzMTUuNDcyIDM4NGg3OS4wOTZhMTIgMTIgMCAwIDAgMTEuODEzLTkuODkxbDcuMTQzLTQwYzEuMzEzLTcuMzU1LTQuMzQyLTE0LjEwOS0xMS44MTMtMTQuMTA5aC03NC44MWwyMi44NTctMTI4aDc5LjA5NmExMiAxMiAwIDAgMCAxMS44MTMtOS44OTF6TTI2MS44ODkgMzIwaC05OC42MzRsMjIuODU3LTEyOGg5OC42MzRsLTIyLjg1NyAxMjh6XCJdXG59O1xudmFyIGZhSGF0Q293Ym95ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhdC1jb3dib3knLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY4YzBcIiwgXCJNNDkwIDI5Ni45QzQ4MC41MSAyMzkuNTEgNDUwLjUxIDY0IDM5Mi4zIDY0Yy0xNCAwLTI2LjQ5IDUuOTMtMzcgMTRhNTguMjEgNTguMjEgMCAwIDEtNzAuNTggMGMtMTAuNTEtOC0yMy0xNC0zNy0xNC01OC4yIDAtODguMiAxNzUuNDctOTcuNzEgMjMyLjg4QzE4OC44MSAzMDkuNDcgMjQzLjczIDMyMCAzMjAgMzIwczEzMS4yMy0xMC41MSAxNzAtMjMuMXptMTQyLjktMzcuMThhMTYgMTYgMCAwIDAtMTkuNzUgMS41Yy0xIC45LTEwMS4yNyA5MC43OC0yOTMuMTYgOTAuNzgtMTkwLjgyIDAtMjkyLjIyLTg5Ljk0LTI5My4yNC05MC44NEExNiAxNiAwIDAgMCAxIDI3OC41M0MxLjczIDI4MC41NSA3OC4zMiA0ODAgMzIwIDQ4MHMzMTguMjctMTk5LjQ1IDMxOS0yMDEuNDdhMTYgMTYgMCAwIDAtNi4wOS0xOC44MXpcIl1cbn07XG52YXIgZmFIYXRDb3dib3lTaWRlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhdC1jb3dib3ktc2lkZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjhjMVwiLCBcIk0yNjAuOCAyOTEuMDZjLTI4LjYzLTIyLjk0LTYyLTM1LjA2LTk2LjQtMzUuMDZDODcgMjU2IDIxLjQ3IDMxOC43MiAxLjQzIDQxMi4wNmMtMy41NSAxNi42LS40MyAzMy44MyA4LjU3IDQ3LjNDMTguNzUgNDcyLjQ3IDMxLjgzIDQ4MCA0NS44OCA0ODBINTkyYy0xMDMuMjEgMC0xNTUtMzcuMDctMjMzLjE5LTEwNC40NnptMjM0LjY1LTE4LjI5TDQ2OC40IDExNi4yQTY0IDY0IDAgMCAwIDM5MiA2NC40MUwyMDAuODUgMTA1YTY0IDY0IDAgMCAwLTUwLjM1IDU1Ljc5TDE0My42MSAyMjZjNi45LS44MyAxMy43LTIgMjAuNzktMiA0MS43OSAwIDgyIDE0LjU1IDExNy4yOSA0Mi44Mmw5OCA4NC40OEM0NTAuNzYgNDEyLjU0IDQ5NC45IDQ0OCA1OTIgNDQ4YTQ4IDQ4IDAgMCAwIDQ4LTQ4YzAtMjUuMzktMjkuNi0xMTkuMzMtMTQ0LjU1LTEyNy4yM3pcIl1cbn07XG52YXIgZmFIYXRXaXphcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGF0LXdpemFyZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjZlOFwiLCBcIk00OTYgNDQ4SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0ODBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2em0tMzA0LTY0bC02NC0zMiA2NC0zMiAzMi02NCAzMiA2NCA2NCAzMi02NCAzMi0xNiAzMmgyMDhsLTg2LjQxLTIwMS42M2E2My45NTUgNjMuOTU1IDAgMCAxLTEuODktNDUuNDVMNDE2IDAgMjI4LjQyIDEwNy4xOWExMjcuOTg5IDEyNy45ODkgMCAwIDAtNTMuNDYgNTkuMTVMNjQgNDE2aDE0NGwtMTYtMzJ6bTY0LTIyNGwxNi0zMiAxNiAzMiAzMiAxNi0zMiAxNi0xNiAzMi0xNi0zMi0zMi0xNiAzMi0xNnpcIl1cbn07XG52YXIgZmFIZGQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGRkJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMGEwXCIsIFwiTTU3NiAzMDR2OTZjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OHYtOTZjMC0yNi41MSAyMS40OS00OCA0OC00OGg0ODBjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHptLTQ4LTgwYTc5LjU1NyA3OS41NTcgMCAwIDEgMzAuNzc3IDYuMTY1TDQ2Mi4yNSA4NS4zNzRBNDguMDAzIDQ4LjAwMyAwIDAgMCA0MjIuMzExIDY0SDE1My42ODlhNDggNDggMCAwIDAtMzkuOTM4IDIxLjM3NEwxNy4yMjMgMjMwLjE2NUE3OS41NTcgNzkuNTU3IDAgMCAxIDQ4IDIyNGg0ODB6bS00OCA5NmMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyem0tOTYgMGMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyelwiXVxufTtcbnZhciBmYUhlYWRTaWRlQ291Z2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGVhZC1zaWRlLWNvdWdoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlMDYxXCIsIFwiTTYxNiwzMDRhMjQsMjQsMCwxLDAtMjQtMjRBMjQsMjQsMCwwLDAsNjE2LDMwNFpNNTUyLDQxNmEyNCwyNCwwLDEsMCwyNCwyNEEyNCwyNCwwLDAsMCw1NTIsNDE2Wm0tNjQtNTZhMjQsMjQsMCwxLDAsMjQsMjRBMjQsMjQsMCwwLDAsNDg4LDM2MFpNNjE2LDQ2NGEyNCwyNCwwLDEsMCwyNCwyNEEyNCwyNCwwLDAsMCw2MTYsNDY0Wm0wLTEwNGEyNCwyNCwwLDEsMCwyNCwyNEEyNCwyNCwwLDAsMCw2MTYsMzYwWm0tNjQtNDBhMjQsMjQsMCwxLDAsMjQsMjRBMjQsMjQsMCwwLDAsNTUyLDMyMFptLTc0Ljc4LTQ1Yy0yMS00Ny4xMi00OC41LTE1MS43NS03My4xMi0xODYuNzVBMjA4LjEzLDIwOC4xMywwLDAsMCwyMzQuMSwwSDE5MkM4NiwwLDAsODYsMCwxOTJjMCw1Ni43NSwyNC43NSwxMDcuNjIsNjQsMTQyLjg4VjUxMkgyODhWNDgwaDY0YTY0LDY0LDAsMCwwLDY0LTY0SDMyMGEzMiwzMiwwLDAsMSwwLTY0aDk2VjMyMGgzMkEzMiwzMiwwLDAsMCw0NzcuMjIsMjc1Wk0yODgsMjI0YTMyLDMyLDAsMSwxLDMyLTMyQTMyLjA3LDMyLjA3LDAsMCwxLDI4OCwyMjRaXCJdXG59O1xudmFyIGZhSGVhZFNpZGVDb3VnaFNsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hlYWQtc2lkZS1jb3VnaC1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTA2MlwiLCBcIk00NTQuMTEsMzE5LjIxYzE5LjU2LTMuODEsMzEuNjItMjUsMjMuMTEtNDQuMjEtMjEtNDcuMTItNDguNS0xNTEuNzUtNzMuMTItMTg2Ljc1QTIwOC4xMywyMDguMTMsMCwwLDAsMjM0LjEsMEgxOTJBMTkwLjY0LDE5MC42NCwwLDAsMCw4NC4xOCwzMy4zTDQ1LjQ2LDMuMzhBMTYsMTYsMCwwLDAsMjMsNi4xOUwzLjM3LDMxLjQ2QTE2LDE2LDAsMCwwLDYuMTgsNTMuOTFMNTk0LjUzLDUwOC42M0ExNiwxNiwwLDAsMCw2MTcsNTA1LjgybDE5LjY0LTI1LjI3YTE2LDE2LDAsMCwwLTIuODEtMjIuNDVaTTMxMy4zOSwyMTAuNDUsMjYzLjYxLDE3MmM1Ljg4LTcuMTQsMTQuNDMtMTIsMjQuMzYtMTJhMzIuMDYsMzIuMDYsMCwwLDEsMzIsMzJDMzIwLDE5OSwzMTcuMjQsMjA1LjE3LDMxMy4zOSwyMTAuNDVaTTYxNiwzMDRhMjQsMjQsMCwxLDAtMjQtMjRBMjQsMjQsMCwwLDAsNjE2LDMwNFptLTY0LDY0YTI0LDI0LDAsMSwwLTI0LTI0QTI0LDI0LDAsMCwwLDU1MiwzNjhaTTI4OCwzODRhMzIsMzIsMCwwLDEsMzItMzJoMTkuNTRMMjAuNzMsMTA1LjU5QTE5MC44NiwxOTAuODYsMCwwLDAsMCwxOTJjMCw1Ni43NSwyNC43NSwxMDcuNjIsNjQsMTQyLjg4VjUxMkgyODhWNDgwaDY0YTY0LDY0LDAsMCwwLDY0LTY0SDMyMEEzMiwzMiwwLDAsMSwyODgsMzg0Wm0zMjgtMjRhMjQsMjQsMCwxLDAsMjQsMjRBMjQsMjQsMCwwLDAsNjE2LDM2MFpcIl1cbn07XG52YXIgZmFIZWFkU2lkZU1hc2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGVhZC1zaWRlLW1hc2snLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImUwNjNcIiwgXCJNLjE1LDE4NC40MkMtMi4xNywyNDQuMjEsMjMsMjk4LjA2LDY0LDMzNC44OFY1MTJIMjI0VjMxNi41MUwzLjY3LDE1Ni4yNUExODIuMjgsMTgyLjI4LDAsMCwwLC4xNSwxODQuNDJaTTUwOS4yMiwyNzVjLTIxLTQ3LjEyLTQ4LjUtMTUxLjc1LTczLjEyLTE4Ni43NUEyMDguMTEsMjA4LjExLDAsMCwwLDI2Ni4xMSwwSDIwMEMxMTcsMCw0Mi40OCw1MC41NywxMy4yNSwxMjMuNjVMMjM5LjIxLDI4OEg1MTEuNzZBMzEuMzUsMzEuMzUsMCwwLDAsNTA5LjIyLDI3NVpNMzIwLDIyNGEzMiwzMiwwLDEsMSwzMi0zMkEzMi4wNywzMi4wNywwLDAsMSwzMjAsMjI0Wm0xNiwxNDRINDk2bDE2LTQ4SDI1NlY1MTJINDAxLjg4YTY0LDY0LDAsMCwwLDYwLjcxLTQzLjc2TDQ2NCw0NjRIMzM2YTE2LDE2LDAsMCwxLDAtMzJINDc0LjY3bDEwLjY3LTMySDMzNmExNiwxNiwwLDAsMSwwLTMyWlwiXVxufTtcbnZhciBmYUhlYWRTaWRlVmlydXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGVhZC1zaWRlLXZpcnVzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlMDY0XCIsIFwiTTI3MiwyNDBhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMjcyLDI0MFptLTY0LTY0YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDIwOCwxNzZabTMwMS4yLDk5Yy0yMC45My00Ny4xMi00OC40My0xNTEuNzMtNzMuMDctMTg2Ljc1QTIwNy45LDIwNy45LDAsMCwwLDI2Ni4wOSwwSDE5MkM4NiwwLDAsODYsMCwxOTJBMTkxLjIzLDE5MS4yMywwLDAsMCw2NCwzMzQuODFWNTEySDMyMFY0NDhoNjRhNjQsNjQsMCwwLDAsNjQtNjRWMzIwSDQ4MEEzMiwzMiwwLDAsMCw1MDkuMiwyNzVaTTM2OCwyNDBIMzU1Ljg4Yy0yOC41MSwwLTQyLjc5LDM0LjQ3LTIyLjYzLDU0LjYzbDguNTgsOC41N2ExNiwxNiwwLDEsMS0yMi42MywyMi42M2wtOC41Ny04LjU4QzI5MC40NywyOTcuMDksMjU2LDMxMS4zNywyNTYsMzM5Ljg4VjM1MmExNiwxNiwwLDAsMS0zMiwwVjMzOS44OGMwLTI4LjUxLTM0LjQ3LTQyLjc5LTU0LjYzLTIyLjYzbC04LjU3LDguNThhMTYsMTYsMCwwLDEtMjIuNjMtMjIuNjNsOC41OC04LjU3YzIwLjE2LTIwLjE2LDUuODgtNTQuNjMtMjIuNjMtNTQuNjNIMTEyYTE2LDE2LDAsMCwxLDAtMzJoMTIuMTJjMjguNTEsMCw0Mi43OS0zNC40NywyMi42My01NC42M2wtOC41OC04LjU3YTE2LDE2LDAsMCwxLDIyLjYzLTIyLjYzbDguNTcsOC41OGMyMC4xNiwyMC4xNiw1NC42Myw1Ljg4LDU0LjYzLTIyLjYzVjk2YTE2LDE2LDAsMCwxLDMyLDB2MTIuMTJjMCwyOC41MSwzNC40Nyw0Mi43OSw1NC42MywyMi42M2w4LjU3LTguNThhMTYsMTYsMCwwLDEsMjIuNjMsMjIuNjNsLTguNTgsOC41N0MzMTMuMDksMTczLjUzLDMyNy4zNywyMDgsMzU1Ljg4LDIwOEgzNjhhMTYsMTYsMCwwLDEsMCwzMlpcIl1cbn07XG52YXIgZmFIZWFkaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hlYWRpbmcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxZGNcIiwgXCJNNDQ4IDk2djMyMGgzMmExNiAxNiAwIDAgMSAxNiAxNnYzMmExNiAxNiAwIDAgMS0xNiAxNkgzMjBhMTYgMTYgMCAwIDEtMTYtMTZ2LTMyYTE2IDE2IDAgMCAxIDE2LTE2aDMyVjI4OEgxNjB2MTI4aDMyYTE2IDE2IDAgMCAxIDE2IDE2djMyYTE2IDE2IDAgMCAxLTE2IDE2SDMyYTE2IDE2IDAgMCAxLTE2LTE2di0zMmExNiAxNiAwIDAgMSAxNi0xNmgzMlY5NkgzMmExNiAxNiAwIDAgMS0xNi0xNlY0OGExNiAxNiAwIDAgMSAxNi0xNmgxNjBhMTYgMTYgMCAwIDEgMTYgMTZ2MzJhMTYgMTYgMCAwIDEtMTYgMTZoLTMydjEyOGgxOTJWOTZoLTMyYTE2IDE2IDAgMCAxLTE2LTE2VjQ4YTE2IDE2IDAgMCAxIDE2LTE2aDE2MGExNiAxNiAwIDAgMSAxNiAxNnYzMmExNiAxNiAwIDAgMS0xNiAxNnpcIl1cbn07XG52YXIgZmFIZWFkcGhvbmVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hlYWRwaG9uZXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwMjVcIiwgXCJNMjU2IDMyQzExNC41MiAzMiAwIDE0Ni40OTYgMCAyODh2NDhhMzIgMzIgMCAwIDAgMTcuNjg5IDI4LjYyMmwxNC4zODMgNy4xOTFDMzQuMDgzIDQzMS45MDMgODMuNDIxIDQ4MCAxNDQgNDgwaDI0YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0aC0yNGMtMzEuMzQyIDAtNTkuNjcxIDEyLjg3OS04MCAzMy42MjdWMjg4YzAtMTA1Ljg2OSA4Ni4xMzEtMTkyIDE5Mi0xOTJzMTkyIDg2LjEzMSAxOTIgMTkydjEuNjI3QzQyNy42NzEgMjY4Ljg3OSAzOTkuMzQyIDI1NiAzNjggMjU2aC0yNGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djE3NmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMjRjNjAuNTc5IDAgMTA5LjkxNy00OC4wOTggMTExLjkyOC0xMDguMTg3bDE0LjM4Mi03LjE5MUEzMiAzMiAwIDAgMCA1MTIgMzM2di00OGMwLTE0MS40NzktMTE0LjQ5Ni0yNTYtMjU2LTI1NnpcIl1cbn07XG52YXIgZmFIZWFkcGhvbmVzQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hlYWRwaG9uZXMtYWx0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNThmXCIsIFwiTTE2MCAyODhoLTE2Yy0zNS4zNSAwLTY0IDI4LjctNjQgNjQuMTJ2NjMuNzZjMCAzNS40MSAyOC42NSA2NC4xMiA2NCA2NC4xMmgxNmMxNy42NyAwIDMyLTE0LjM2IDMyLTMyLjA2VjMyMC4wNmMwLTE3LjcxLTE0LjMzLTMyLjA2LTMyLTMyLjA2em0yMDggMGgtMTZjLTE3LjY3IDAtMzIgMTQuMzUtMzIgMzIuMDZ2MTI3Ljg4YzAgMTcuNyAxNC4zMyAzMi4wNiAzMiAzMi4wNmgxNmMzNS4zNSAwIDY0LTI4LjcxIDY0LTY0LjEydi02My43NmMwLTM1LjQxLTI4LjY1LTY0LjEyLTY0LTY0LjEyek0yNTYgMzJDMTEyLjkxIDMyIDQuNTcgMTUxLjEzIDAgMjg4djExMmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyODhjMC0xMTQuNjcgOTMuMzMtMjA3LjggMjA4LTIwNy44MiAxMTQuNjcuMDIgMjA4IDkzLjE1IDIwOCAyMDcuODJ2MTEyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzguODQgMCAxNi03LjE2IDE2LTE2VjI4OEM1MDcuNDMgMTUxLjEzIDM5OS4wOSAzMiAyNTYgMzJ6XCJdXG59O1xudmFyIGZhSGVhZHNldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoZWFkc2V0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNTkwXCIsIFwiTTE5MiAyMDhjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMTZjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR2NDhjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgxNmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjIwOHptMTc2IDE0NGMzNS4zNSAwIDY0LTI4LjY1IDY0LTY0di00OGMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0aC0xNmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxMTJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgxNnpNMjU2IDBDMTEzLjE4IDAgNC41OCAxMTguODMgMCAyNTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtMTE0LjY5IDkzLjMxLTIwOCAyMDgtMjA4czIwOCA5My4zMSAyMDggMjA4aC0uMTJjLjA4IDIuNDMuMTIgMTY1LjcyLjEyIDE2NS43MiAwIDIzLjM1LTE4LjkzIDQyLjI4LTQyLjI4IDQyLjI4SDMyMGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4aC0zMmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OGgxODEuNzJjNDkuODYgMCA5MC4yOC00MC40MiA5MC4yOC05MC4yOFYyNTZDNTA3LjQyIDExOC44MyAzOTguODIgMCAyNTYgMHpcIl1cbn07XG52YXIgZmFIZWFydCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoZWFydCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAwNFwiLCBcIk00NjIuMyA2Mi42QzQwNy41IDE1LjkgMzI2IDI0LjMgMjc1LjcgNzYuMkwyNTYgOTYuNWwtMTkuNy0yMC4zQzE4Ni4xIDI0LjMgMTA0LjUgMTUuOSA0OS43IDYyLjZjLTYyLjggNTMuNi02Ni4xIDE0OS44LTkuOSAyMDcuOWwxOTMuNSAxOTkuOGMxMi41IDEyLjkgMzIuOCAxMi45IDQ1LjMgMGwxOTMuNS0xOTkuOGM1Ni4zLTU4LjEgNTMtMTU0LjMtOS44LTIwNy45elwiXVxufTtcbnZhciBmYUhlYXJ0QnJva2VuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hlYXJ0LWJyb2tlbicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjdhOVwiLCBcIk00NzMuNyA3My44bC0yLjQtMi41Yy00Ni00Ny0xMTgtNTEuNy0xNjkuNi0xNC44TDMzNiAxNTkuOWwtOTYgNjQgNDggMTI4LTE0NC0xNDQgOTYtNjQtMjguNi04Ni41QzE1OS43IDE5LjYgODcgMjQgNDAuNyA3MS40bC0yLjQgMi40Qy0xMC40IDEyMy42LTEyLjUgMjAyLjkgMzEgMjU2bDIxMi4xIDIxOC42YzcuMSA3LjMgMTguNiA3LjMgMjUuNyAwTDQ4MSAyNTUuOWM0My41LTUzIDQxLjQtMTMyLjMtNy4zLTE4Mi4xelwiXVxufTtcbnZhciBmYUhlYXJ0YmVhdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoZWFydGJlYXQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyMWVcIiwgXCJNMzIwLjIgMjQzLjhsLTQ5LjcgOTkuNGMtNiAxMi4xLTIzLjQgMTEuNy0yOC45LS42bC01Ni45LTEyNi4zLTMwIDcxLjdINjAuNmwxODIuNSAxODYuNWM3LjEgNy4zIDE4LjYgNy4zIDI1LjcgMEw0NTEuNCAyODhIMzQyLjNsLTIyLjEtNDQuMnpNNDczLjcgNzMuOWwtMi40LTIuNWMtNTEuNS01Mi42LTEzNS44LTUyLjYtMTg3LjQgMEwyNTYgMTAwbC0yNy45LTI4LjVjLTUxLjUtNTIuNy0xMzUuOS01Mi43LTE4Ny40IDBsLTIuNCAyLjRDLTEwLjQgMTIzLjctMTIuNSAyMDMgMzEgMjU2aDEwMi40bDM1LjktODYuMmM1LjQtMTIuOSAyMy42LTEzLjIgMjkuNC0uNGw1OC4yIDEyOS4zIDQ5LTk3LjljNS45LTExLjggMjIuNy0xMS44IDI4LjYgMGwyNy42IDU1LjJINDgxYzQzLjUtNTMgNDEuNC0xMzIuMy03LjMtMTgyLjF6XCJdXG59O1xudmFyIGZhSGVsaWNvcHRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoZWxpY29wdGVyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTMzXCIsIFwiTTMwNCAzODRoMjcyYzE3LjY3IDAgMzItMTQuMzMgMzItMzIgMC0xMjMuNzEtMTAwLjI5LTIyNC0yMjQtMjI0VjY0aDE3NmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxNmMwLTguODQtNy4xNi0xNi0xNi0xNkgxNDRjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDE3NnY2NEgxMTJMNjguOCA3MC40QzY1Ljc4IDY2LjM3IDYxLjAzIDY0IDU2IDY0SDE2LjAxQzUuNiA2NC0yLjA0IDczLjc4LjQ5IDgzLjg4TDMyIDE5MmwxNjAgNjQgODYuNCAxMTUuMkEzMS45OTIgMzEuOTkyIDAgMCAwIDMwNCAzODR6bTExMi0xODguNDlDNDc4LjU1IDIwOC4zIDUyOC4wMyAyNTcuNDQgNTQwLjc5IDMyMEg0MTZWMTk1LjUxem0yMTkuMzcgMjYzLjNsLTIyLjE1LTIyLjJjLTYuMjUtNi4yNi0xNi4yNC02LjEtMjIuNjQuMDEtNy4wOSA2Ljc3LTEzLjg0IDExLjI1LTI0LjY0IDExLjI1SDI0MGMtOC44NCAwLTE2IDcuMTgtMTYgMTYuMDN2MzIuMDZjMCA4Ljg1IDcuMTYgMTYuMDMgMTYgMTYuMDNoMzI1Ljk0YzE0Ljg4IDAgMzUuMy0uNDcgNjguNDUtMjkuNTIgNy4wMi02LjE0IDcuNTctMTcuMDUuOTgtMjMuNjZ6XCJdXG59O1xudmFyIGZhSGlnaGxpZ2h0ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGlnaGxpZ2h0ZXInLFxuICBpY29uOiBbNTQ0LCA1MTIsIFtdLCBcImY1OTFcIiwgXCJNMCA0NzkuOThMOTkuOTIgNTEybDM1LjQ1LTM1LjQ1LTY3LjA0LTY3LjA0TDAgNDc5Ljk4em0xMjQuNjEtMjQwLjAxYTM2LjU5MiAzNi41OTIgMCAwIDAtMTAuNzkgMzguMWwxMy4wNSA0Mi44My01MC45MyA1MC45NCA5Ni4yMyA5Ni4yMyA1MC44Ni01MC44NiA0Mi43NCAxMy4wOGMxMy43MyA0LjIgMjguNjUtLjAxIDM4LjE1LTEwLjc4bDM1LjU1LTQxLjY0LTE3My4zNC0xNzMuMzQtNDEuNTIgMzUuNDR6bTQwMy4zMS0xNjAuN2wtNjMuMi02My4yYy0yMC40OS0yMC40OS01My4zOC0yMS41Mi03NS4xMi0yLjM1TDE5MC41NSAxODMuNjhsMTY5Ljc3IDE2OS43OEw1MzAuMjcgMTU0LjRjMTkuMTgtMjEuNzQgMTguMTUtNTQuNjMtMi4zNS03NS4xM3pcIl1cbn07XG52YXIgZmFIaWtpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGlraW5nJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNmVjXCIsIFwiTTgwLjk1IDQ3Mi4yM2MtNC4yOCAxNy4xNiA2LjE0IDM0LjUzIDIzLjI4IDM4LjgxIDIuNjEuNjYgNS4yMi45NSA3LjguOTUgMTQuMzMgMCAyNy4zNy05LjcgMzEuMDItMjQuMjNsMjUuMjQtMTAwLjk3LTUyLjc4LTUyLjc4LTM0LjU2IDEzOC4yMnptMTQuODktMTk2LjEyTDEzNyAxMTdjMi4xOS04LjQyLTMuMTQtMTYuOTUtMTEuOTItMTkuMDYtNDMuODgtMTAuNTItODguMzUgMTUuMDctOTkuMzIgNTcuMTdMLjQ5IDI1My4yNGMtMi4xOSA4LjQyIDMuMTQgMTYuOTUgMTEuOTIgMTkuMDZsNjMuNTYgMTUuMjVjOC43OSAyLjEgMTcuNjgtMy4wMiAxOS44Ny0xMS40NHpNMzY4IDE2MGgtMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djE2aC0zNC43NWwtNDYuNzgtNDYuNzhDMjQzLjM4IDEzNC4xMSAyMjguNjEgMTI4IDIxMi45MSAxMjhjLTI3LjAyIDAtNTAuNDcgMTguMy01Ny4wMyA0NC41MmwtMjYuOTIgMTA3LjcyYTMyLjAxMiAzMi4wMTIgMCAwIDAgOC40MiAzMC4zOUwyMjQgMzk3LjI1VjQ4MGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyczMyLTE0LjMzIDMyLTMydi04Mi43NWMwLTE3LjA5LTYuNjYtMzMuMTYtMTguNzUtNDUuMjVsLTQ2LjgyLTQ2LjgyYy4xNS0uNS40OS0uODkuNjItMS40MWwxOS44OS03OS41NyAyMi40MyAyMi40M2M2IDYgMTQuMTQgOS4zOCAyMi42MiA5LjM4aDQ4djI0MGMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxNzZjLjAxLTguODQtNy4xNS0xNi0xNS45OS0xNnpNMjQwIDk2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhTMjY2LjUxIDAgMjQwIDBzLTQ4IDIxLjQ5LTQ4IDQ4IDIxLjQ5IDQ4IDQ4IDQ4elwiXVxufTtcbnZhciBmYUhpcHBvID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hpcHBvJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNmVkXCIsIFwiTTU4MS4xMiA5Ni4yYy0yNy42Ny0uMTUtNTIuNSAxNy41OC03Ni42IDI2LjYyQzQ4OS45OCA4OC4yNyA0NTUuODMgNjQgNDE2IDY0Yy0xMS4yOCAwLTIxLjk1IDIuMy0zMiA1Ljg4VjU2YzAtMTMuMjYtMTAuNzUtMjQtMjQtMjRoLTE2Yy0xMy4yNSAwLTI0IDEwLjc0LTI0IDI0djQ4Ljk4QzI4Ni4wMSA3OS41OCAyNDEuMjQgNjQgMTkyIDY0IDg1Ljk2IDY0IDAgMTM1LjY0IDAgMjI0djI0MGMwIDguODQgNy4xNiAxNiAxNiAxNmg2NGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNzAuNzlDMTI4LjM1IDQwNy41NyAxNjYuNzIgNDE2IDIwOCA0MTZzNzkuNjUtOC40MyAxMTItMjIuNzlWNDY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDY0YzguODQgMCAxNi03LjE2IDE2LTE2VjI4OGgxMjh2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTkyLjAyYzAtMzQuMDktMjQuNzktNjcuNTktNTguODgtNjcuNzh6TTQ0OCAxNzZjLTguODQgMC0xNi03LjE2LTE2LTE2czcuMTYtMTYgMTYtMTYgMTYgNy4xNiAxNiAxNi03LjE2IDE2LTE2IDE2elwiXVxufTtcbnZhciBmYUhpc3RvcnkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGlzdG9yeScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjFkYVwiLCBcIk01MDQgMjU1LjUzMWMuMjUzIDEzNi42NC0xMTEuMTggMjQ4LjM3Mi0yNDcuODIgMjQ4LjQ2OC01OS4wMTUuMDQyLTExMy4yMjMtMjAuNTMtMTU1LjgyMi01NC45MTEtMTEuMDc3LTguOTQtMTEuOTA1LTI1LjU0MS0xLjgzOS0zNS42MDdsMTEuMjY3LTExLjI2N2M4LjYwOS04LjYwOSAyMi4zNTMtOS41NTEgMzEuODkxLTEuOTg0QzE3My4wNjIgNDI1LjEzNSAyMTIuNzgxIDQ0MCAyNTYgNDQwYzEwMS43MDUgMCAxODQtODIuMzExIDE4NC0xODQgMC0xMDEuNzA1LTgyLjMxMS0xODQtMTg0LTE4NC00OC44MTQgMC05My4xNDkgMTguOTY5LTEyNi4wNjggNDkuOTMybDUwLjc1NCA1MC43NTRjMTAuMDggMTAuMDggMi45NDEgMjcuMzE0LTExLjMxMyAyNy4zMTRIMjRjLTguODM3IDAtMTYtNy4xNjMtMTYtMTZWMzguNjI3YzAtMTQuMjU0IDE3LjIzNC0yMS4zOTMgMjcuMzE0LTExLjMxNGw0OS4zNzIgNDkuMzcyQzEyOS4yMDkgMzQuMTM2IDE4OS41NTIgOCAyNTYgOGMxMzYuODEgMCAyNDcuNzQ3IDExMC43OCAyNDggMjQ3LjUzMXptLTE4MC45MTIgNzguNzg0bDkuODIzLTEyLjYzYzguMTM4LTEwLjQ2MyA2LjI1My0yNS41NDItNC4yMS0zMy42NzlMMjg4IDI1Ni4zNDlWMTUyYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNGgtMTZjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxMzUuNjUxbDY1LjQwOSA1MC44NzRjMTAuNDYzIDguMTM3IDI1LjU0MSA2LjI1MyAzMy42NzktNC4yMXpcIl1cbn07XG52YXIgZmFIb2NrZXlQdWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvY2tleS1wdWNrJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNDUzXCIsIFwiTTAgMTYwYzAtNTMgMTE0LjYtOTYgMjU2LTk2czI1NiA0MyAyNTYgOTYtMTE0LjYgOTYtMjU2IDk2UzAgMjEzIDAgMTYwem0wIDgyLjJWMzUyYzAgNTMgMTE0LjYgOTYgMjU2IDk2czI1Ni00MyAyNTYtOTZWMjQyLjJjLTExMy40IDgyLjMtMzk4LjUgODIuNC01MTIgMHpcIl1cbn07XG52YXIgZmFIb2xseUJlcnJ5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvbGx5LWJlcnJ5JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmN2FhXCIsIFwiTTE0NCAxOTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDgtNDggMjEuNS00OCA0OCAyMS41IDQ4IDQ4IDQ4em0xMTItNDhjMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OC0yMS41LTQ4LTQ4LTQ4LTQ4IDIxLjUtNDggNDh6bS0zMi00OGMyNi41IDAgNDgtMjEuNSA0OC00OFMyNTAuNSAwIDIyNCAwcy00OCAyMS41LTQ4IDQ4IDIxLjUgNDggNDggNDh6bS0xNi4yIDEzOS4xYy4xLTEyLjQtMTMuMS0yMC4xLTIzLjgtMTMuNy0zNC4zIDIwLjMtNzEuNCAzMi43LTEwOC43IDM2LjItOS43LjktMTUuNiAxMS4zLTExLjYgMjAuMiA2LjIgMTMuOSAxMS4xIDI4LjYgMTQuNyA0My44IDMuNiAxNS4yLTUuMyAzMC42LTIwLjIgMzUuMS0xNC45IDQuNS0zMC4xIDcuNi00NS4zIDkuMS05LjcgMS0xNS43IDExLjMtMTEuNyAyMC4yIDE1IDMyLjggMjIuOSA2OS41IDIzIDEwNy43LjEgMTQuNCAxNS4yIDIzLjEgMjcuNiAxNiAzMy4yLTE5IDY4LjktMzAuNSAxMDQuOC0zMy45IDkuNy0uOSAxNS42LTExLjMgMTEuNi0yMC4yLTYuMi0xMy45LTExLjEtMjguNi0xNC43LTQzLjgtMy42LTE1LjIgNS4zLTMwLjYgMjAuMi0zNS4xIDE0LjktNC41IDMwLjEtNy42IDQ1LjMtOS4xIDkuNy0xIDE1LjctMTEuMyAxMS43LTIwLjItMTUuNS0zNC4yLTIzLjMtNzIuNS0yMi45LTExMi4zek00MzUgMzY1LjZjLTE1LjItMS42LTMwLjMtNC43LTQ1LjMtOS4xLTE0LjktNC41LTIzLjgtMTkuOS0yMC4yLTM1LjEgMy42LTE1LjIgOC41LTI5LjggMTQuNy00My44IDQtOC45LTEuOS0xOS4zLTExLjYtMjAuMi0zNy4zLTMuNS03NC40LTE1LjktMTA4LjctMzYuMi0xMC43LTYuMy0yMy45IDEuNC0yMy44IDEzLjcgMCAxLjYtLjIgMy4yLS4yIDQuOS4yIDMzLjMgNyA2NS43IDE5LjkgOTQgNS43IDEyLjQgNS4yIDI2LjYtLjYgMzguOSA0LjkgMS4yIDkuOSAyLjIgMTQuOCAzLjcgMTQuOSA0LjUgMjMuOCAxOS45IDIwLjIgMzUuMS0zLjYgMTUuMi04LjUgMjkuOC0xNC43IDQzLjgtNCA4LjkgMS45IDE5LjMgMTEuNiAyMC4yIDM1LjkgMy40IDcxLjYgMTQuOSAxMDQuOCAzMy45IDEyLjUgNy4xIDI3LjYtMS42IDI3LjYtMTYgLjItMzguMiA4LTc1IDIzLTEwNy43IDQuMy04LjctMS44LTE5LjEtMTEuNS0yMC4xelwiXVxufTtcbnZhciBmYUhvbWUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG9tZScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjAxNVwiLCBcIk0yODAuMzcgMTQ4LjI2TDk2IDMwMC4xMVY0NjRhMTYgMTYgMCAwIDAgMTYgMTZsMTEyLjA2LS4yOWExNiAxNiAwIDAgMCAxNS45Mi0xNlYzNjhhMTYgMTYgMCAwIDEgMTYtMTZoNjRhMTYgMTYgMCAwIDEgMTYgMTZ2OTUuNjRhMTYgMTYgMCAwIDAgMTYgMTYuMDVMNDY0IDQ4MGExNiAxNiAwIDAgMCAxNi0xNlYzMDBMMjk1LjY3IDE0OC4yNmExMi4xOSAxMi4xOSAwIDAgMC0xNS4zIDB6TTU3MS42IDI1MS40N0w0ODggMTgyLjU2VjQ0LjA1YTEyIDEyIDAgMCAwLTEyLTEyaC01NmExMiAxMiAwIDAgMC0xMiAxMnY3Mi42MUwzMTguNDcgNDNhNDggNDggMCAwIDAtNjEgMEw0LjM0IDI1MS40N2ExMiAxMiAwIDAgMC0xLjYgMTYuOWwyNS41IDMxQTEyIDEyIDAgMCAwIDQ1LjE1IDMwMWwyMzUuMjItMTkzLjc0YTEyLjE5IDEyLjE5IDAgMCAxIDE1LjMgMEw1MzAuOSAzMDFhMTIgMTIgMCAwIDAgMTYuOS0xLjZsMjUuNS0zMWExMiAxMiAwIDAgMC0xLjctMTYuOTN6XCJdXG59O1xudmFyIGZhSG9yc2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG9yc2UnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY2ZjBcIiwgXCJNNTc1LjkyIDc2LjZjLS4wMS04LjEzLTMuMDItMTUuODctOC41OC0yMS44LTMuNzgtNC4wMy04LjU4LTkuMTItMTMuNjktMTQuNSAxMS4wNi02Ljg0IDE5LjUtMTcuNDkgMjIuMTgtMzAuNjZDNTc2Ljg1IDQuNjggNTcyLjk2IDAgNTY3LjkgMEg0NDcuOTJjLTcwLjY5IDAtMTI4IDU3LjMxLTEyOCAxMjhIMTYwYy0yOC44NCAwLTU0LjQgMTIuOTgtNzIgMzMuMTFWMTYwYy00OC41MyAwLTg4IDM5LjQ3LTg4IDg4djU2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzguODQgMCAxNi03LjE2IDE2LTE2di01NmMwLTEzLjIyIDYuODctMjQuMzkgMTYuNzgtMzEuNjgtLjIxIDIuNTgtLjc4IDUuMDUtLjc4IDcuNjggMCAyNy42NCAxMS44NCA1Mi4zNiAzMC41NCA2OS44OGwtMjUuNzIgNjguNmE2My45NDUgNjMuOTQ1IDAgMCAwLTIuMTYgMzcuOTlsMjQuODUgOTkuNDFBMTUuOTgyIDE1Ljk4MiAwIDAgMCAxMDcuMDIgNTEyaDY1Ljk2YzEwLjQxIDAgMTguMDUtOS43OCAxNS41Mi0xOS44OGwtMjYuMzEtMTA1LjI2IDIzLjg0LTYzLjU5TDMyMCAzNDUuNlY0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNjRjOC44NCAwIDE2LTcuMTYgMTYtMTZWMzE4LjIyYzE5Ljc0LTIwLjE5IDMyLTQ3Ljc1IDMyLTc4LjIyIDAtLjIyLS4wNy0uNDItLjA4LS42NFYxMzYuODlsMTYgNy4xMSAxOC45IDM3LjdjNy40NSAxNC44NyAyNS4wNSAyMS41NSA0MC40OSAxNS4zN2wzMi41NS0xMy4wMmEzMS45OTcgMzEuOTk3IDAgMCAwIDIwLjEyLTI5Ljc0bC0uMDYtNzcuNzF6bS02NCAxOS40Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnM3LjE2LTE2IDE2LTE2IDE2IDcuMTYgMTYgMTYtNy4xNiAxNi0xNiAxNnpcIl1cbn07XG52YXIgZmFIb3JzZUhlYWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG9yc2UtaGVhZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjdhYlwiLCBcIk01MDkuOCAzMzIuNWwtNjkuOS0xNjQuM2MtMTQuOS00MS4yLTUwLjQtNzEtOTMtNzkuMiAxOC0xMC42IDQ2LjMtMzUuOSAzNC4yLTgyLjMtMS4zLTUtNy4xLTcuOS0xMi02LjFMMTY2LjkgNzYuM0MzNS45IDEyMy40IDAgMjM4LjkgMCAzOTguOFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoMjM2LjJjMjMuOCAwIDM5LjMtMjUgMjguNi00Ni4zTDI1NiAzODR2LS43Yy00NS42LTMuNS04NC42LTMwLjctMTA0LjMtNjkuNi0xLjYtMy4xLS45LTYuOSAxLjYtOS4zbDEyLjEtMTIuMWMzLjktMy45IDEwLjYtMi43IDEyLjkgMi40IDE0LjggMzMuNyA0OC4yIDU3LjQgODcuNCA1Ny40IDE3LjIgMCAzMy01LjEgNDYuOC0xMy4ybDQ2IDYzLjljNiA4LjQgMTUuNyAxMy4zIDI2IDEzLjNoNTAuM2M4LjUgMCAxNi42LTMuNCAyMi42LTkuNGw0NS4zLTM5LjhjOC45LTkuMSAxMS43LTIyLjYgNy4xLTM0LjR6TTMyOCAyMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjQgMjQgMTAuNyAyNCAyNC0xMC43IDI0LTI0IDI0elwiXVxufTtcbnZhciBmYUhvc3BpdGFsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvc3BpdGFsJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMGY4XCIsIFwiTTQ0OCA0OTJ2MjBIMHYtMjBjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgyMFYxMjBjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDg4VjI0YzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNGgxMTJjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0djcyaDg4YzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHYzNjBoMjBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnpNMzA4IDE5MmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyem0tMTY4IDY0aDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJ6bTEwNCAxMjhoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjg0aDY0di04NGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyem02NC05NmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyem0tMTE2IDEyYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDB6TTE4MiA5NmgyNnYyNmE2IDYgMCAwIDAgNiA2aDIwYTYgNiAwIDAgMCA2LTZWOTZoMjZhNiA2IDAgMCAwIDYtNlY3MGE2IDYgMCAwIDAtNi02aC0yNlYzOGE2IDYgMCAwIDAtNi02aC0yMGE2IDYgMCAwIDAtNiA2djI2aC0yNmE2IDYgMCAwIDAtNiA2djIwYTYgNiAwIDAgMCA2IDZ6XCJdXG59O1xudmFyIGZhSG9zcGl0YWxBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG9zcGl0YWwtYWx0JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNDdkXCIsIFwiTTU0NCA5Nkg0MTZWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzY4YzAgOC44IDcuMiAxNiAxNiAxNmg1NDRjOC44IDAgMTYtNy4yIDE2LTE2VjEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMTYwIDQzNmMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTAtMTI4YzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMTYwIDEyOGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTAtMTI4YzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMTYtMTcwYzAgMy4zLTIuNyA2LTYgNmgtMjZ2MjZjMCAzLjMtMi43IDYtNiA2aC0yMGMtMy4zIDAtNi0yLjctNi02di0yNmgtMjZjLTMuMyAwLTYtMi43LTYtNnYtMjBjMC0zLjMgMi43LTYgNi02aDI2Vjg2YzAtMy4zIDIuNy02IDYtNmgyMGMzLjMgMCA2IDIuNyA2IDZ2MjZoMjZjMy4zIDAgNiAyLjcgNiA2djIwem0xNDQgMjk4YzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMC0xMjhjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwelwiXVxufTtcbnZhciBmYUhvc3BpdGFsU3ltYm9sID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvc3BpdGFsLXN5bWJvbCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjQ3ZVwiLCBcIk0yNTYgMEMxMTQuNiAwIDAgMTE0LjYgMCAyNTZzMTE0LjYgMjU2IDI1NiAyNTYgMjU2LTExNC42IDI1Ni0yNTZTMzk3LjQgMCAyNTYgMHptMTEyIDM3NmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LTh2LTg4aC05NnY4OGMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LThWMTM2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2ODhoOTZ2LTg4YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2MjQwelwiXVxufTtcbnZhciBmYUhvc3BpdGFsVXNlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3NwaXRhbC11c2VyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmODBkXCIsIFwiTTQ4MCAzMjBhOTYgOTYgMCAxIDAtOTYtOTYgOTYgOTYgMCAwIDAgOTYgOTZ6bTQ4IDMyYTIyLjg4IDIyLjg4IDAgMCAwLTcuMDYgMS4wOSAxMjQuNzYgMTI0Ljc2IDAgMCAxLTgxLjg5IDBBMjIuODIgMjIuODIgMCAwIDAgNDMyIDM1MmExMTIgMTEyIDAgMCAwLTExMiAxMTIuNjJjLjE0IDI2LjI2IDIxLjczIDQ3LjM4IDQ4IDQ3LjM4aDIyNGMyNi4yNyAwIDQ3Ljg2LTIxLjEyIDQ4LTQ3LjM4QTExMiAxMTIgMCAwIDAgNTI4IDM1MnptLTE5OC4wOSAxMC40NUExNDUuMTkgMTQ1LjE5IDAgMCAxIDM1MiAzNDQuNjJWMTI4YTMyIDMyIDAgMCAwLTMyLTMyaC0zMlYzMmEzMiAzMiAwIDAgMC0zMi0zMkg5NmEzMiAzMiAwIDAgMC0zMiAzMnY2NEgzMmEzMiAzMiAwIDAgMC0zMiAzMnYzNjhhMTYgMTYgMCAwIDAgMTYgMTZoMjg4LjMxQTc4LjYyIDc4LjYyIDAgMCAxIDI4OCA0NjQuNzlhMTQzLjA2IDE0My4wNiAwIDAgMSA0MS45MS0xMDIuMzR6TTE0NCA0MDRhMTIgMTIgMCAwIDEtMTIgMTJIOTJhMTIgMTIgMCAwIDEtMTItMTJ2LTQwYTEyIDEyIDAgMCAxIDEyLTEyaDQwYTEyIDEyIDAgMCAxIDEyIDEyem0wLTEyOGExMiAxMiAwIDAgMS0xMiAxMkg5MmExMiAxMiAwIDAgMS0xMi0xMnYtNDBhMTIgMTIgMCAwIDEgMTItMTJoNDBhMTIgMTIgMCAwIDEgMTIgMTJ6bTQ4LTEyMmE2IDYgMCAwIDEtNiA2aC0yMGE2IDYgMCAwIDEtNi02di0yNmgtMjZhNiA2IDAgMCAxLTYtNnYtMjBhNiA2IDAgMCAxIDYtNmgyNlY3MGE2IDYgMCAwIDEgNi02aDIwYTYgNiAwIDAgMSA2IDZ2MjZoMjZhNiA2IDAgMCAxIDYgNnYyMGE2IDYgMCAwIDEtNiA2aC0yNnptODAgMjUwYTEyIDEyIDAgMCAxLTEyIDEyaC00MGExMiAxMiAwIDAgMS0xMi0xMnYtNDBhMTIgMTIgMCAwIDEgMTItMTJoNDBhMTIgMTIgMCAwIDEgMTIgMTJ6bTAtMTI4YTEyIDEyIDAgMCAxLTEyIDEyaC00MGExMiAxMiAwIDAgMS0xMi0xMnYtNDBhMTIgMTIgMCAwIDEgMTItMTJoNDBhMTIgMTIgMCAwIDEgMTIgMTJ6XCJdXG59O1xudmFyIGZhSG90VHViID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvdC10dWInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1OTNcIiwgXCJNNDE0LjIxIDE3Ny42NWMxLjAyIDguMjEgNy43NSAxNC4zNSAxNS43NSAxNC4zNWgxNi4xMmM5LjUxIDAgMTcuMDgtOC41NyAxNi0xOC4zNS00LjM0LTM5LjExLTIyLjQtNzQuNTMtNTAuMTMtOTcuMTYtMTcuMzctMTQuMTctMjguODItMzYuNzUtMzEuOTgtNjIuMTVDMzc4Ljk2IDYuMTQgMzcyLjIyIDAgMzY0LjIzIDBoLTE2LjEyYy05LjUxIDAtMTcuMDkgOC41Ny0xNiAxOC4zNSA0LjM0IDM5LjExIDIyLjQgNzQuNTMgNTAuMTMgOTcuMTYgMTcuMzYgMTQuMTcgMjguODIgMzYuNzUgMzEuOTcgNjIuMTR6bS0xMDggMGMxLjAyIDguMjEgNy43NSAxNC4zNSAxNS43NSAxNC4zNWgxNi4xMmM5LjUxIDAgMTcuMDgtOC41NyAxNi0xOC4zNS00LjM0LTM5LjExLTIyLjQtNzQuNTMtNTAuMTMtOTcuMTYtMTcuMzctMTQuMTctMjguODItMzYuNzUtMzEuOTgtNjIuMTVDMjcwLjk2IDYuMTQgMjY0LjIyIDAgMjU2LjIzIDBoLTE2LjEyYy05LjUxIDAtMTcuMDkgOC41Ny0xNiAxOC4zNSA0LjM0IDM5LjExIDIyLjQgNzQuNTMgNTAuMTMgOTcuMTYgMTcuMzYgMTQuMTcgMjguODIgMzYuNzUgMzEuOTcgNjIuMTR6TTQ4MCAyNTZIMjU2bC0xMTAuOTMtODMuMmE2My45OSA2My45OSAwIDAgMC0zOC40LTEyLjhINjRjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR2MjI0YzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzg0YzM1LjM1IDAgNjQtMjguNjUgNjQtNjRWMjg4YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTEyOCA0NDBjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOFYzMjhjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTEyem05NiAwYzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LThWMzI4YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djExMnptOTYgMGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04VjMyOGMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHYxMTJ6bTk2IDBjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOFYzMjhjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTEyek02NCAxMjhjMzUuMzUgMCA2NC0yOC42NSA2NC02NFM5OS4zNSAwIDY0IDAgMCAyOC42NSAwIDY0czI4LjY1IDY0IDY0IDY0elwiXVxufTtcbnZhciBmYUhvdGRvZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3Rkb2cnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY4MGZcIiwgXCJNNDg4LjU2IDIzLjQ0YTgwIDgwIDAgMCAwLTExMy4xMiAwbC0zNTIgMzUyYTgwIDgwIDAgMSAwIDExMy4xMiAxMTMuMTJsMzUyLTM1MmE4MCA4MCAwIDAgMCAwLTExMy4xMnptLTQ5LjkzIDk1LjE5Yy0xOS42IDE5LjU5LTM3LjUyIDIyLjY3LTUxLjkzIDI1LjE0QzM3My43NiAxNDYgMzY0LjQgMTQ3LjYgMzUyIDE2MHMtMTQgMjEuNzYtMTYuMjMgMzQuNzFjLTIuNDggMTQuNC01LjU1IDMyLjMzLTI1LjE1IDUxLjkycy0zNy41MiAyMi42Ny01MS45MiAyNS4xNUMyNDUuNzUgMjc0IDIzNi40IDI3NS42IDIyNCAyODhzLTE0IDIxLjc1LTE2LjIzIDM0LjdjLTIuNDcgMTQuNC01LjU0IDMyLjMzLTI1LjE0IDUxLjkycy0zNy41MyAyMi42OC01MS45MyAyNS4xNUMxMTcuNzYgNDAyIDEwOC40IDQwMy42IDk2IDQxNmExNiAxNiAwIDAgMS0yMi42My0yMi42M2MxOS42LTE5LjU5IDM3LjUyLTIyLjY3IDUxLjkyLTI1LjE0IDEzLTIuMjIgMjIuMy0zLjgyIDM0LjcxLTE2LjIzczE0LTIxLjc1IDE2LjIyLTM0LjdjMi40OC0xNC40IDUuNTUtMzIuMzMgMjUuMTUtNTEuOTJzMzcuNTItMjIuNjcgNTEuOTItMjUuMTRjMTMtMi4yMiAyMi4zLTMuODMgMzQuNy0xNi4yM3MxNC0yMS43NiAxNi4yNC0zNC43MWMyLjQ3LTE0LjQgNS41NC0zMi4zMyAyNS4xNC01MS45MnMzNy41Mi0yMi42OCA1MS45Mi0yNS4xNUMzOTQuMjQgMTEwIDQwMy41OSAxMDguNDEgNDE2IDk2YTE2IDE2IDAgMCAxIDIyLjYzIDIyLjYzek0zMS40NCAzMjIuMThMMzIyLjE4IDMxLjQ0bC0xMS41NC0xMS41NWMtMjUtMjUtNjMuODUtMjYuNjYtODYuNzktMy43MkwxNi4xNyAyMjMuODVjLTIyLjk0IDIyLjk0LTIxLjI3IDYxLjc5IDMuNzIgODYuNzh6bTQ0OS4xMi0xMzIuMzZMMTg5LjgyIDQ4MC41NmwxMS41NCAxMS41NWMyNSAyNSA2My44NSAyNi42NiA4Ni43OSAzLjcybDIwNy42OC0yMDcuNjhjMjIuOTQtMjIuOTQgMjEuMjctNjEuNzktMy43Mi04Ni43OXpcIl1cbn07XG52YXIgZmFIb3RlbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3RlbCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjU5NFwiLCBcIk01NjAgNjRjOC44NCAwIDE2LTcuMTYgMTYtMTZWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiAwIDAgNy4xNiAwIDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDE1Ljk4djM4NEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMjQwdi04MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djgwaDI0MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTE2VjY0aDE2em0tMzA0IDQ0LjhjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjRjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjR6bTAgOTZjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjRjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjR6bS0xMjgtOTZjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjRjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjR6TTE3OS4yIDI1NmgtMzguNGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGgzOC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40YzAgNi40LTYuNCAxMi44LTEyLjggMTIuOHpNMTkyIDM4NGMwLTUzLjAyIDQyLjk4LTk2IDk2LTk2czk2IDQyLjk4IDk2IDk2SDE5MnptMjU2LTE0MC44YzAgNi40LTYuNCAxMi44LTEyLjggMTIuOGgtMzguNGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGgzOC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40em0wLTk2YzAgNi40LTYuNCAxMi44LTEyLjggMTIuOGgtMzguNGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGgzOC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40elwiXVxufTtcbnZhciBmYUhvdXJnbGFzcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VyZ2xhc3MnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYyNTRcIiwgXCJNMzYwIDY0YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjQgMCA5MC45NjUgNTEuMDE2IDE2Ny43MzQgMTIwLjg0MiAxOTJDNzUuMDE2IDI4MC4yNjYgMjQgMzU3LjAzNSAyNCA0NDhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzM2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtMTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0IDAtOTAuOTY1LTUxLjAxNi0xNjcuNzM0LTEyMC44NDItMTkyQzMwOC45ODQgMjMxLjczNCAzNjAgMTU0Ljk2NSAzNjAgNjR6XCJdXG59O1xudmFyIGZhSG91cmdsYXNzRW5kID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvdXJnbGFzcy1lbmQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYyNTNcIiwgXCJNMzYwIDY0YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjQgMCA5MC45NjUgNTEuMDE2IDE2Ny43MzQgMTIwLjg0MiAxOTJDNzUuMDE2IDI4MC4yNjYgMjQgMzU3LjAzNSAyNCA0NDhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzM2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtMTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0IDAtOTAuOTY1LTUxLjAxNi0xNjcuNzM0LTEyMC44NDItMTkyQzMwOC45ODQgMjMxLjczNCAzNjAgMTU0Ljk2NSAzNjAgNjR6TTE5MiAyMDhjLTU3Ljc4NyAwLTEwNC02Ni41MTgtMTA0LTE0NGgyMDhjMCA3Ny45NDUtNDYuNTEgMTQ0LTEwNCAxNDR6XCJdXG59O1xudmFyIGZhSG91cmdsYXNzSGFsZiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VyZ2xhc3MtaGFsZicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjI1MlwiLCBcIk0zNjAgMEgyNEMxMC43NDUgMCAwIDEwLjc0NSAwIDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNCAwIDkwLjk2NSA1MS4wMTYgMTY3LjczNCAxMjAuODQyIDE5MkM3NS4wMTYgMjgwLjI2NiAyNCAzNTcuMDM1IDI0IDQ0OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMzZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjQgMC05MC45NjUtNTEuMDE2LTE2Ny43MzQtMTIwLjg0Mi0xOTJDMzA4Ljk4NCAyMzEuNzM0IDM2MCAxNTQuOTY1IDM2MCA2NGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMjRjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0em0tNzUuMDc4IDM4NEg5OS4wOGMxNy4wNTktNDYuNzk3IDUyLjA5Ni04MCA5Mi45Mi04MCA0MC44MjEgMCA3NS44NjIgMzMuMTk2IDkyLjkyMiA4MHptLjAxOS0yNTZIOTkuMDc4QzkxLjk4OCAxMDguNTQ4IDg4IDg2Ljc0OCA4OCA2NGgyMDhjMCAyMi44MDUtMy45ODcgNDQuNTg3LTExLjA1OSA2NHpcIl1cbn07XG52YXIgZmFIb3VyZ2xhc3NTdGFydCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VyZ2xhc3Mtc3RhcnQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYyNTFcIiwgXCJNMzYwIDBIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjQgMCA5MC45NjUgNTEuMDE2IDE2Ny43MzQgMTIwLjg0MiAxOTJDNzUuMDE2IDI4MC4yNjYgMjQgMzU3LjAzNSAyNCA0NDhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzM2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtMTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0IDAtOTAuOTY1LTUxLjAxNi0xNjcuNzM0LTEyMC44NDItMTkyQzMwOC45ODQgMjMxLjczNCAzNjAgMTU0Ljk2NSAzNjAgNjRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHptLTY0IDQ0OEg4OGMwLTc3LjQ1OCA0Ni4yMDQtMTQ0IDEwNC0xNDQgNTcuNzg2IDAgMTA0IDY2LjUxNyAxMDQgMTQ0elwiXVxufTtcbnZhciBmYUhvdXNlRGFtYWdlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvdXNlLWRhbWFnZScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjZmMVwiLCBcIk0yODggMTE0Ljk2TDY5LjQ3IDMwNy43MWMtMS42MiAxLjQ2LTMuNjkgMi4xNC01LjQ3IDMuMzVWNDk2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE0OS4yM0wxOTIgNDM5LjE5bDEwNC4xMS02NC02MC4xNi0xMTkuMjJMMzg0IDM5Mi43NWwtMTA0LjExIDY0TDMxOS44MSA1MTJINDk2YzguODQgMCAxNi03LjE2IDE2LTE2VjMxMS4xYy0xLjctMS4xNi0zLjcyLTEuODItNS4yNi0zLjJMMjg4IDExNC45NnptMjgyLjY5IDEyMS4zMkw1MTIgMTg0LjQ1VjQ4YzAtOC44NC03LjE2LTE2LTE2LTE2aC02NGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NTEuNjlMMzE0Ljc1IDEwLjMxQzMwNy4xMiAzLjQ1IDI5Ny41Ni4wMSAyODggMHMtMTkuMSAzLjQxLTI2LjcgMTAuMjdMNS4zMSAyMzYuMjhjLTYuNTcgNS45MS03LjEyIDE2LjAyLTEuMjEgMjIuNmwyMS40IDIzLjgyYzUuOSA2LjU3IDE2LjAyIDcuMTIgMjIuNiAxLjIxTDI3Ny40MiA4MS42M2M2LjA1LTUuMzMgMTUuMTItNS4zMyAyMS4xNyAwTDUyNy45MSAyODMuOWM2LjU3IDUuOSAxNi42OSA1LjM2IDIyLjYtMS4yMWwyMS40LTIzLjgyYzUuOS02LjU3IDUuMzYtMTYuNjktMS4yMi0yMi41OXpcIl1cbn07XG52YXIgZmFIb3VzZVVzZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG91c2UtdXNlcicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTA2NVwiLCBcIk01NzAuNjksMjM2LjI3LDUxMiwxODQuNDRWNDhhMTYsMTYsMCwwLDAtMTYtMTZINDMyYTE2LDE2LDAsMCwwLTE2LDE2Vjk5LjY3TDMxNC43OCwxMC4zQzMwOC41LDQuNjEsMjk2LjUzLDAsMjg4LDBzLTIwLjQ2LDQuNjEtMjYuNzQsMTAuM2wtMjU2LDIyNkExOC4yNywxOC4yNywwLDAsMCwwLDI0OC4yYTE4LjY0LDE4LjY0LDAsMCwwLDQuMDksMTAuNzFMMjUuNSwyODIuN2EyMS4xNCwyMS4xNCwwLDAsMCwxMiw1LjMsMjEuNjcsMjEuNjcsMCwwLDAsMTAuNjktNC4xMWwxNS45LTE0VjQ4MGEzMiwzMiwwLDAsMCwzMiwzMkg0ODBhMzIsMzIsMCwwLDAsMzItMzJWMjY5Ljg4bDE1LjkxLDE0QTIxLjk0LDIxLjk0LDAsMCwwLDUzOC42MywyODhhMjAuODksMjAuODksMCwwLDAsMTEuODctNS4zMWwyMS40MS0yMy44MUEyMS42NCwyMS42NCwwLDAsMCw1NzYsMjQ4LjE5LDIxLDIxLDAsMCwwLDU3MC42OSwyMzYuMjdaTTI4OCwxNzZhNjQsNjQsMCwxLDEtNjQsNjRBNjQsNjQsMCwwLDEsMjg4LDE3NlpNNDAwLDQ0OEgxNzZhMTYsMTYsMCwwLDEtMTYtMTYsOTYsOTYsMCwwLDEsOTYtOTZoNjRhOTYsOTYsMCwwLDEsOTYsOTZBMTYsMTYsMCwwLDEsNDAwLDQ0OFpcIl1cbn07XG52YXIgZmFIcnl2bmlhID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hyeXZuaWEnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY2ZjJcIiwgXCJNMzY4IDI0MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTQxLjg2YzEzLjQxLTI4LjYzIDEzLjc0LTYzLjMzLTQuMTMtOTQuMDVDMzAzLjM0IDQ5Ljg0IDI2Ny4xIDMyIDIyOS45NiAzMmgtNzguODJjLTI0LjMyIDAtNDcuODYgOC41My02Ni41NCAyNC4wOUw3Mi44MyA2NS45Yy0xMC4xOCA4LjQ5LTExLjU2IDIzLjYyLTMuMDcgMzMuOGwyMC40OSAyNC41OWM4LjQ5IDEwLjE5IDIzLjYyIDExLjU2IDMzLjgxIDMuMDdsMTEuNzMtOS43OGM0LjMyLTMuNiA5Ljc3LTUuNTcgMTUuMzktNS41N2g4My42MmMxMS42OSAwIDIxLjIgOS41MiAyMS4yIDIxLjIgMCA1LjkxLTIuNDggMTEuNTgtNi44MSAxNS41OEwyMTkuNyAxNzZIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDEzNC4zN2wtMzQuNjcgMzJIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQxLjg2Yy0xMy40MSAyOC42My0xMy43NCA2My4zMyA0LjEzIDk0LjA1QzgwLjY2IDQ2Mi4xNSAxMTYuOSA0ODAgMTU0LjA0IDQ4MGg3OC44MmMyNC4zMiAwIDQ3Ljg2LTguNTMgNjYuNTQtMjQuMDlsMTEuNzctOS44MWMxMC4xOC04LjQ5IDExLjU2LTIzLjYyIDMuMDctMzMuOGwtMjAuNDktMjQuNTljLTguNDktMTAuMTktMjMuNjItMTEuNTYtMzMuODEtMy4wN2wtMTEuNzUgOS44YTIzLjk5MiAyMy45OTIgMCAwIDEtMTUuMzYgNS41NkgxNDkuMmMtMTEuNjkgMC0yMS4yLTkuNTItMjEuMi0yMS4yIDAtNS45MSAyLjQ4LTExLjU4IDYuODEtMTUuNThMMTY0LjMgMzM2SDM2OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMjMzLjYzbDM0LjY3LTMySDM2OHpcIl1cbn07XG52YXIgZmFJQ3Vyc29yID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ktY3Vyc29yJyxcbiAgaWNvbjogWzI1NiwgNTEyLCBbXSwgXCJmMjQ2XCIsIFwiTTI1NiA1Mi4wNDhWMTIuMDY1QzI1NiA1LjQ5NiAyNTAuNzI2LjE0OCAyNDQuMTU4LjA2NiAyMTEuNjIxLS4zNDQgMTY2LjQ2OS4wMTEgMTI4IDM3Ljk1OSA5MC4yNjYuNzM2IDQ2Ljk3OS0uMTE0IDExLjkxMy4xMTQgNS4zMTguMTU3IDAgNS41MTkgMCAxMi4xMTR2MzkuNjQ1YzAgNi42ODcgNS40NTggMTIuMDc4IDEyLjE0NSAxMS45OThDMzguMTExIDYzLjQ0NyA5NiA2Ny4yNDMgOTYgMTEyLjE4MlYyMjRINjBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgzNnYxMTJjMCA0NC45MzItNTYuMDc1IDQ4LjAzMS04My45NSA0Ny45NTlDNS40MDQgNDQ3Ljk0MiAwIDQ1My4zMDYgMCA0NTkuOTUydjM5Ljk4M2MwIDYuNTY5IDUuMjc0IDExLjkxNyAxMS44NDIgMTEuOTk5IDMyLjUzNy40MDkgNzcuNjg5LjA1NCAxMTYuMTU4LTM3Ljg5NCAzNy43MzQgMzcuMjIzIDgxLjAyMSAzOC4wNzMgMTE2LjA4NyAzNy44NDUgNi41OTUtLjA0MyAxMS45MTMtNS40MDUgMTEuOTEzLTEyVjQ2MC4yNGMwLTYuNjg3LTUuNDU4LTEyLjA3OC0xMi4xNDUtMTEuOTk4QzIxNy44ODkgNDQ4LjU1MyAxNjAgNDQ0LjkzOSAxNjAgNDAwVjI4OGgzNmM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0zNlYxMTIuMTgyYzAtNDQuOTMyIDU2LjA3NS00OC4yMTMgODMuOTUtNDguMTQyIDYuNjQ2LjAxOCAxMi4wNS01LjM0NiAxMi4wNS0xMS45OTJ6XCJdXG59O1xudmFyIGZhSWNlQ3JlYW0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaWNlLWNyZWFtJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmODEwXCIsIFwiTTM2OCAxNjBoLS45NGExNDQgMTQ0IDAgMSAwLTI4Ni4xMiAwSDgwYTQ4IDQ4IDAgMCAwIDAgOTZoMjg4YTQ4IDQ4IDAgMCAwIDAtOTZ6TTE5NS4zOCA0OTMuNjlhMzEuNTIgMzEuNTIgMCAwIDAgNTcuMjQgMEwzNTIgMjg4SDk2elwiXVxufTtcbnZhciBmYUljaWNsZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaWNpY2xlcycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjdhZFwiLCBcIk01MTEuNCAzNy45QzUxNS4xIDE4LjIgNTAwIDAgNDgwIDBIMzJDMTAuNiAwLTQuOCAyMC43IDEuNCA0MS4ybDg3LjEgMjczLjRjMi41IDcuMiAxMi43IDcuMiAxNS4xIDBMMTQwIDE5MC41bDQ0LjIgMTg3LjNjMS45IDguMyAxMy43IDguMyAxNS42IDBsNDYuNS0xOTYuOSAzNC4xIDEzMy40YzIuMyA3LjYgMTMgNy42IDE1LjMgMGw0NS44LTE3Mi41IDY2LjcgMzYzLjhjMS43IDguNiAxNCA4LjYgMTUuNyAwbDg3LjUtNDY3Ljd6XCJdXG59O1xudmFyIGZhSWNvbnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaWNvbnMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY4NmRcIiwgXCJNMTE2LjY1IDIxOS4zNWExNS42OCAxNS42OCAwIDAgMCAyMi42NSAwbDk2Ljc1LTk5LjgzYzI4LjE1LTI5IDI2LjUtNzcuMS00LjkxLTEwMy44OEMyMDMuNzUtNy43IDE2My0zLjUgMTM3Ljg2IDIyLjQ0TDEyOCAzMi41OGwtOS44NS0xMC4xNEM5My4wNS0zLjUgNTIuMjUtNy43IDI0Ljg2IDE1LjY0Yy0zMS40MSAyNi43OC0zMyA3NC44NS01IDEwMy44OHptMTQzLjkyIDEwMC40OWgtNDhsLTcuMDgtMTQuMjRhMjcuMzkgMjcuMzkgMCAwIDAtMjUuNjYtMTcuNzhoLTcxLjcxYTI3LjM5IDI3LjM5IDAgMCAwLTI1LjY2IDE3Ljc4bC03IDE0LjI0aC00OEEyNy40NSAyNy40NSAwIDAgMCAwIDM0Ny4zdjEzNy4yNUEyNy40NCAyNy40NCAwIDAgMCAyNy40MyA1MTJoMjMzLjE0QTI3LjQ1IDI3LjQ1IDAgMCAwIDI4OCA0ODQuNTVWMzQ3LjNhMjcuNDUgMjcuNDUgMCAwIDAtMjcuNDMtMjcuNDZ6TTE0NCA0NjhhNTIgNTIgMCAxIDEgNTItNTIgNTIgNTIgMCAwIDEtNTIgNTJ6bTM1NS40LTExNS45aC02MC41OGwyMi4zNi01MC43NWMyLjEtNi42NS0zLjkzLTEzLjIxLTEyLjE4LTEzLjIxaC03NS41OWMtNi4zIDAtMTEuNjYgMy45LTEyLjUgOS4xbC0xNi44IDEwNi45M2MtMSA2LjMgNC44OCAxMS44OSAxMi41IDExLjg5aDYyLjMxbC0yNC4yIDgzYy0xLjg5IDYuNjUgNC4yIDEyLjkgMTIuMjMgMTIuOWExMy4yNiAxMy4yNiAwIDAgMCAxMC45Mi01LjI1bDkyLjQtMTM4LjkxYzQuODgtNi45MS0xLjE2LTE1LjctMTAuODctMTUuN3pNNDc4LjA4LjMzTDMyOS41MSAyMy4xN0MzMTQuODcgMjUuNDIgMzA0IDM4LjkyIDMwNCA1NC44M1YxNjEuNmE4My4yNSA4My4yNSAwIDAgMC0xNi0xLjdjLTM1LjM1IDAtNjQgMjEuNDgtNjQgNDhzMjguNjUgNDggNjQgNDhjMzUuMiAwIDYzLjczLTIxLjMyIDY0LTQ3LjY2Vjk5LjY2bDExMi0xNy4yMnY0Ny4xOGE4My4yNSA4My4yNSAwIDAgMC0xNi0xLjdjLTM1LjM1IDAtNjQgMjEuNDgtNjQgNDhzMjguNjUgNDggNjQgNDhjMzUuMiAwIDYzLjczLTIxLjMyIDY0LTQ3LjY2VjMyYzAtMTkuNDgtMTYtMzQuNDItMzMuOTItMzEuNjd6XCJdXG59O1xudmFyIGZhSWRCYWRnZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpZC1iYWRnZScsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjJjMVwiLCBcIk0zMzYgMEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTQ0IDMyaDk2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2aC05NmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptNDggMTI4YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHptMTEyIDIzNi44YzAgMTAuNi0xMCAxOS4yLTIyLjQgMTkuMkgxMDIuNEM5MCA0MTYgODAgNDA3LjQgODAgMzk2Ljh2LTE5LjJjMC0zMS44IDMwLjEtNTcuNiA2Ny4yLTU3LjZoNWMxMi4zIDUuMSAyNS43IDggMzkuOCA4czI3LjYtMi45IDM5LjgtOGg1YzM3LjEgMCA2Ny4yIDI1LjggNjcuMiA1Ny42djE5LjJ6XCJdXG59O1xudmFyIGZhSWRDYXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2lkLWNhcmQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYyYzJcIiwgXCJNNTI4IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MTZoNTc2VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0wIDQzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTI4SDB2MzA0em0zNTItMjMyYzAtNC40IDMuNi04IDgtOGgxNDRjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOEgzNjBjLTQuNCAwLTgtMy42LTgtOHYtMTZ6bTAgNjRjMC00LjQgMy42LTggOC04aDE0NGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDM2MGMtNC40IDAtOC0zLjYtOC04di0xNnptMCA2NGMwLTQuNCAzLjYtOCA4LThoMTQ0YzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhIMzYwYy00LjQgMC04LTMuNi04LTh2LTE2ek0xNzYgMTkyYzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHpNNjcuMSAzOTYuMkM3NS41IDM3MC41IDk5LjYgMzUyIDEyOCAzNTJoOC4yYzEyLjMgNS4xIDI1LjcgOCAzOS44IDhzMjcuNi0yLjkgMzkuOC04aDguMmMyOC40IDAgNTIuNSAxOC41IDYwLjkgNDQuMiAzLjIgOS45LTUuMiAxOS44LTE1LjYgMTkuOEg4Mi43Yy0xMC40IDAtMTguOC0xMC0xNS42LTE5Ljh6XCJdXG59O1xudmFyIGZhSWRDYXJkQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2lkLWNhcmQtYWx0JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNDdmXCIsIFwiTTUyOCA2NEgzODR2OTZIMTkyVjY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yODggMjI0YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHptOTMuMyAyMjRIMTk0LjdjLTEwLjQgMC0xOC44LTEwLTE1LjYtMTkuOCA4LjMtMjUuNiAzMi40LTQ0LjIgNjAuOS00NC4yaDguMmMxMi4zIDUuMSAyNS43IDggMzkuOCA4czI3LjYtMi45IDM5LjgtOGg4LjJjMjguNCAwIDUyLjUgMTguNSA2MC45IDQ0LjIgMy4yIDkuOC01LjIgMTkuOC0xNS42IDE5Ljh6TTM1MiAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMmgtNjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2aDEyOFYzMnpcIl1cbn07XG52YXIgZmFJZ2xvbyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpZ2xvbycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjdhZVwiLCBcIk0zMjAgMzMuOWMtMTAuNS0xLjItMjEuMi0xLjktMzItMS45LTk5LjggMC0xODcuOCA1MC44LTIzOS40IDEyOEgzMjBWMzMuOXpNOTYgMTkySDMwLjNDMTEuMSAyMzAuNiAwIDI3NCAwIDMyMGg5NlYxOTJ6TTM1MiAzOS40VjE2MGgxNzUuNEM0ODcuMiA5OS45IDQyNC44IDU1LjkgMzUyIDM5LjR6TTQ4MCAzMjBoOTZjMC00Ni0xMS4xLTg5LjQtMzAuMy0xMjhINDgwdjEyOHptLTY0IDY0djk2aDEyOGMxNy43IDAgMzItMTQuMyAzMi0zMnYtOTZINDExLjVjMi42IDEwLjMgNC41IDIwLjkgNC41IDMyem0zMi0xOTJIMTI4djEyOGg0OS44YzIyLjItMzguMSA2My02NCAxMTAuMi02NHM4OCAyNS45IDExMC4yIDY0SDQ0OFYxOTJ6TTAgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDEyOHYtOTZjMC0xMS4xIDEuOS0yMS43IDQuNS0zMkgwdjk2em0yODgtMTYwYy01MyAwLTk2IDQzLTk2IDk2djk2aDE5MnYtOTZjMC01My00My05Ni05Ni05NnpcIl1cbn07XG52YXIgZmFJbWFnZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpbWFnZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAzZVwiLCBcIk00NjQgNDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjExMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDQxNmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djI4OGMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4ek0xMTIgMTIwYy0zMC45MjggMC01NiAyNS4wNzItNTYgNTZzMjUuMDcyIDU2IDU2IDU2IDU2LTI1LjA3MiA1Ni01Ni0yNS4wNzItNTYtNTYtNTZ6TTY0IDM4NGgzODRWMjcybC04Ny41MTUtODcuNTE1Yy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMMjA4IDMyMGwtNTUuNTE1LTU1LjUxNWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDY0IDMzNnY0OHpcIl1cbn07XG52YXIgZmFJbWFnZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaW1hZ2VzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMzAyXCIsIFwiTTQ4MCA0MTZ2MTZjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxNzZjMC0yNi41MSAyMS40OS00OCA0OC00OGgxNnYyMDhjMCA0NC4xMTIgMzUuODg4IDgwIDgwIDgwaDMzNnptOTYtODBWODBjMC0yNi41MS0yMS40OS00OC00OC00OEgxNDRjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjU2YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMzg0YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh6TTI1NiAxMjhjMCAyNi41MS0yMS40OSA0OC00OCA0OHMtNDgtMjEuNDktNDgtNDggMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDh6bS05NiAxNDRsNTUuNTE1LTU1LjUxNWM0LjY4Ni00LjY4NiAxMi4yODQtNC42ODYgMTYuOTcxIDBMMjcyIDI1NmwxMzUuNTE1LTEzNS41MTVjNC42ODYtNC42ODYgMTIuMjg0LTQuNjg2IDE2Ljk3MSAwTDUxMiAyMDh2MTEySDE2MHYtNDh6XCJdXG59O1xudmFyIGZhSW5ib3ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaW5ib3gnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYwMWNcIiwgXCJNNTY3LjkzOCAyNDMuOTA4TDQ2Mi4yNSA4NS4zNzRBNDguMDAzIDQ4LjAwMyAwIDAgMCA0MjIuMzExIDY0SDE1My42ODlhNDggNDggMCAwIDAtMzkuOTM4IDIxLjM3NEw4LjA2MiAyNDMuOTA4QTQ3Ljk5NCA0Ny45OTQgMCAwIDAgMCAyNzAuNTMzVjQwMGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQ4MGMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjI3MC41MzNhNDcuOTk0IDQ3Ljk5NCAwIDAgMC04LjA2Mi0yNi42MjV6TTE2Mi4yNTIgMTI4aDI1MS40OTdsODUuMzMzIDEyOEgzNzZsLTMyIDY0SDIzMmwtMzItNjRINzYuOTE4bDg1LjMzNC0xMjh6XCJdXG59O1xudmFyIGZhSW5kZW50ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2luZGVudCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjAzY1wiLCBcIk0yNy4zMSAzNjMuM2w5Ni05NmExNiAxNiAwIDAgMCAwLTIyLjYybC05Ni05NkMxNy4yNyAxMzguNjYgMCAxNDUuNzggMCAxNjB2MTkyYzAgMTQuMzEgMTcuMzMgMjEuMyAyNy4zMSAxMS4zek00MzIgNDE2SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTMuMTctMTI4SDIwNC44M0ExMi44MiAxMi44MiAwIDAgMCAxOTIgMzAwLjgzdjM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDIwNC44MyAzNTJoMjMwLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQ0OCAzMzkuMTd2LTM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQzNS4xNyAyODh6bTAtMTI4SDIwNC44M0ExMi44MiAxMi44MiAwIDAgMCAxOTIgMTcyLjgzdjM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDIwNC44MyAyMjRoMjMwLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQ0OCAyMTEuMTd2LTM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQzNS4xNyAxNjB6TTQzMiAzMkgxNkExNiAxNiAwIDAgMCAwIDQ4djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIl1cbn07XG52YXIgZmFJbmR1c3RyeSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpbmR1c3RyeScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjI3NVwiLCBcIk00NzUuMTE1IDE2My43ODFMMzM2IDI1Mi4zMDl2LTY4LjI4YzAtMTguOTE2LTIwLjkzMS0zMC4zOTktMzYuODg1LTIwLjI0OEwxNjAgMjUyLjMwOVY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjRDMTAuNzQ1IDMyIDAgNDIuNzQ1IDAgNTZ2NDAwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGg0NjRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE4NC4wMjljMC0xOC45MTctMjAuOTMxLTMwLjM5OS0zNi44ODUtMjAuMjQ4elwiXVxufTtcbnZhciBmYUluZmluaXR5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2luZmluaXR5JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTM0XCIsIFwiTTQ3MS4xIDk2QzQwNSA5NiAzNTMuMyAxMzcuMyAzMjAgMTc0LjYgMjg2LjcgMTM3LjMgMjM1IDk2IDE2OC45IDk2IDc1LjggOTYgMCAxNjcuOCAwIDI1NnM3NS44IDE2MCAxNjguOSAxNjBjNjYuMSAwIDExNy44LTQxLjMgMTUxLjEtNzguNiAzMy4zIDM3LjMgODUgNzguNiAxNTEuMSA3OC42IDkzLjEgMCAxNjguOS03MS44IDE2OC45LTE2MFM1NjQuMiA5NiA0NzEuMSA5NnpNMTY4LjkgMzIwYy00MC4yIDAtNzIuOS0yOC43LTcyLjktNjRzMzIuNy02NCA3Mi45LTY0YzM4LjIgMCA3My40IDM2LjEgOTQgNjQtMjAuNCAyNy42LTU1LjkgNjQtOTQgNjR6bTMwMi4yIDBjLTM4LjIgMC03My40LTM2LjEtOTQtNjQgMjAuNC0yNy42IDU1LjktNjQgOTQtNjQgNDAuMiAwIDcyLjkgMjguNyA3Mi45IDY0cy0zMi43IDY0LTcyLjkgNjR6XCJdXG59O1xudmFyIGZhSW5mbyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpbmZvJyxcbiAgaWNvbjogWzE5MiwgNTEyLCBbXSwgXCJmMTI5XCIsIFwiTTIwIDQyNC4yMjloMjBWMjc5Ljc3MUgyMGMtMTEuMDQ2IDAtMjAtOC45NTQtMjAtMjBWMjEyYzAtMTEuMDQ2IDguOTU0LTIwIDIwLTIwaDExMmMxMS4wNDYgMCAyMCA4Ljk1NCAyMCAyMHYyMTIuMjI5aDIwYzExLjA0NiAwIDIwIDguOTU0IDIwIDIwVjQ5MmMwIDExLjA0Ni04Ljk1NCAyMC0yMCAyMEgyMGMtMTEuMDQ2IDAtMjAtOC45NTQtMjAtMjB2LTQ3Ljc3MWMwLTExLjA0NiA4Ljk1NC0yMCAyMC0yMHpNOTYgMEM1Ni4yMzUgMCAyNCAzMi4yMzUgMjQgNzJzMzIuMjM1IDcyIDcyIDcyIDcyLTMyLjIzNSA3Mi03MlMxMzUuNzY0IDAgOTYgMHpcIl1cbn07XG52YXIgZmFJbmZvQ2lyY2xlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2luZm8tY2lyY2xlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDVhXCIsIFwiTTI1NiA4QzExOS4wNDMgOCA4IDExOS4wODMgOCAyNTZjMCAxMzYuOTk3IDExMS4wNDMgMjQ4IDI0OCAyNDhzMjQ4LTExMS4wMDMgMjQ4LTI0OEM1MDQgMTE5LjA4MyAzOTIuOTU3IDggMjU2IDh6bTAgMTEwYzIzLjE5NiAwIDQyIDE4LjgwNCA0MiA0MnMtMTguODA0IDQyLTQyIDQyLTQyLTE4LjgwNC00Mi00MiAxOC44MDQtNDIgNDItNDJ6bTU2IDI1NGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyaC04OGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxMnYtNjRoLTEyYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDY0YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MTAwaDEyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjR6XCJdXG59O1xudmFyIGZhSXRhbGljID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2l0YWxpYycsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZjAzM1wiLCBcIk0zMjAgNDh2MzJhMTYgMTYgMCAwIDEtMTYgMTZoLTYyLjc2bC04MCAzMjBIMjA4YTE2IDE2IDAgMCAxIDE2IDE2djMyYTE2IDE2IDAgMCAxLTE2IDE2SDE2YTE2IDE2IDAgMCAxLTE2LTE2di0zMmExNiAxNiAwIDAgMSAxNi0xNmg2Mi43Nmw4MC0zMjBIMTEyYTE2IDE2IDAgMCAxLTE2LTE2VjQ4YTE2IDE2IDAgMCAxIDE2LTE2aDE5MmExNiAxNiAwIDAgMSAxNiAxNnpcIl1cbn07XG52YXIgZmFKZWRpID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2plZGknLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY2NjlcIiwgXCJNNTM1Ljk1MzA4LDM1MmMtNDIuNjQwNjksOTQuMTcxODgtMTM3LjY0MDg2LDE2MC0yNDcuOTg0OCwxNjBxLTYuMzk4NDQsMC0xMi44NDM3Ny0uMjk2ODhDMTcxLjE1NTU4LDUwNi45Mzc1LDgxLjI2NDgxLDQ0Mi4yMzQzOCw0MC4wMTQ3NCwzNTJINzkuOTM2NjhMMjEuMzI3MiwyOTMuNDA2MjVhMjY0LjgyNTIyLDI2NC44MjUyMiwwLDAsMS01LjEwOTM4LTM5LjQyMTg3LDI3My42NjUzLDI3My42NjUzLDAsMCwxLC41LTI5Ljk4NDM4SDYzLjkzNjY1TDIyLjU0NiwxODIuNjI1QTI2OS43OTc4MiwyNjkuNzk3ODIsMCwwLDEsMTMwLjUxNDg5LDIwLjU0Njg4YTE2LjA2MzkzLDE2LjA2MzkzLDAsMCwxLDkuMjgxMjctMywxNi4zNjMzMiwxNi4zNjMzMiwwLDAsMSwxMy41LDcuMjUsMTYuMDI3MzksMTYuMDI3MzksMCwwLDEsMS42MjUsMTUuMDkzNzQsMTM4LjM4NywxMzguMzg3LDAsMCwwLTkuODQzNzYsNTEuMjY1NjNjMCw0NS4xMDkzNywyMS4wNDY5MSw4Ni41NzgxMyw1Ny43MTg4NCwxMTMuNzM0MzdhMTYuMjk5ODksMTYuMjk5ODksMCwwLDEsMS4yMDMxMywyNS4zOTA2M2MtMjYuNTQ2OTIsMjMuOTg0MzctNDEuMTcxOTQsNTYuNS00MS4xNzE5NCw5MS41NzgxMywwLDYwLjAzMTI0LDQyLjk1MzE5LDExMC4yODEyNCw5OS44OTA3OSwxMjEuOTIxODdsMi41LTY1LjI2NTYzTDIzOC4wNjIsMzk3YTguMzM5MTEsOC4zMzkxMSwwLDAsMS0xMC0uNzUsOC4wMjUsOC4wMjUsMCwwLDEtMS4zOTA2My05LjkzNzVsMjAuMTI1LTMzLjc2NTYyLTQyLjA2MjU3LTguNzM0MzhhNy45ODk4LDcuOTg5OCwwLDAsMSwwLTE1LjY1NjI1bDQyLjA2MjU3LTguNzE4NzUtMjAuMTA5NDEtMzMuNzM0MzhhNy45OTEyMiw3Ljk5MTIyLDAsMCwxLDExLjM1OTM5LTEwLjcxODc0TDI2OC40MzcsMjk1LjY0MDYyLDI3OS45NTI2NSw3LjY3MTg4YTcuOTcxMzgsNy45NzEzOCwwLDAsMSw4LTcuNjcxODhoLjA0Njg3YTguMDIwNjQsOC4wMjA2NCwwLDAsMSw3Ljk1MzE0LDcuNzAzMTJMMzA3LjQ4Mzk0LDI5NS42MjVsMzAuMzkwNjgtMjAuNjcxODhhOC4wODMyNyw4LjA4MzI3LDAsMCwxLDEwLC44MTI1LDcuOTk4NjYsNy45OTg2NiwwLDAsMSwxLjM5MDYyLDkuOTA2MjZMMzI5LjEyNDYxLDMxOS40Mzc1bDQyLjA3ODE5LDguNzM0MzhhNy45OTM3Myw3Ljk5MzczLDAsMCwxLDAsMTUuNjU2MjRsLTQyLjA3ODE5LDguNzE4NzYsMjAuMTA5NCwzMy43MzQzN2E3Ljk3NzkxLDcuOTc3OTEsMCwwLDEtMS4zMjgxMiw5LjkyMTg3QTguMjU3MzksOC4yNTczOSwwLDAsMSwzMzcuODc0NjIsMzk3TDMxMC43MDI3LDM3OC41MzEyNWwyLjUsNjUuMzQzNzVjNDguNDg0NDYtOS40MDYyNSw4Ny41NzgyOC00OC4xNTYyNSw5Ny4zMTI2Ny05Ni41QTEyMy41MjY1MiwxMjMuNTI2NTIsMCwwLDAsMzcxLjk1MjgsMjMwLjI5Njg4YTE2LjMwNjM0LDE2LjMwNjM0LDAsMCwxLDEuMjAzMTMtMjUuNDIxODhjMzYuNjU2MzEtMjcuMTcxODgsNTcuNjg3Ni02OC42MDkzOCw1Ny42ODc2LTExMy43MzQzOGExMzguMDE2ODksMTM4LjAxNjg5LDAsMCwwLTkuODU5MzktNTEuMzEyNSwxNS45ODEzMiwxNS45ODEzMiwwLDAsMSwxLjYwOTM3LTE1LjA5Mzc0LDE2LjM2OTE0LDE2LjM2OTE0LDAsMCwxLDEzLjUtNy4yMzQzOCwxNi4wMjQ1MywxNi4wMjQ1MywwLDAsMSw5LjI1LDIuOTg0MzhBMjcxLjI2OTQ3LDI3MS4yNjk0NywwLDAsMSw1NTMuMjUsMTgyLjc2NTYyTDUxMS45OTk5MiwyMjRoNDYuOTUzMkM1NTkuMzEyNSwyMjkuNzY1NjIsNTYwLDIzNS40NTMxMiw1NjAsMjQxLjI2NTYyYTI3MC4wOTIsMjcwLjA5MiwwLDAsMS01LjEyNSw1MS44NTkzOEw0OTUuOTg0MjcsMzUyWlwiXVxufTtcbnZhciBmYUpvaW50ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2pvaW50JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTk1XCIsIFwiTTQ0NC4zNCAxODEuMWMyMi4zOCAxNS42OCAzNS42NiA0MS4xNiAzNS42NiA2OC41OVYyODBjMCA0LjQyIDMuNTggOCA4IDhoNDhjNC40MiAwIDgtMy41OCA4LTh2LTMwLjMxYzAtNDMuMjQtMjEuMDEtODMuNDEtNTYuMzQtMTA4LjA2QzQ2My44NSAxMjUuMDIgNDQ4IDk5LjM0IDQ0OCA3MC4zMVY4YzAtNC40Mi0zLjU4LTgtOC04aC00OGMtNC40MiAwLTggMy41OC04IDh2NjYuNGMwIDQzLjY5IDI0LjU2IDgxLjYzIDYwLjM0IDEwNi43ek0xOTQuOTcgMzU4Ljk4QzEyNi4wMyAzNzAuMDcgNTkuNjkgMzk0LjY5IDAgNDMyYzgzLjY1IDUyLjI4IDE4MC4zIDgwIDI3OC45NCA4MGg4OC41N0wyNTQuNzkgMzgwLjQ5Yy0xNC43NC0xNy4yLTM3LjQ1LTI1LjExLTU5LjgyLTIxLjUxek01NTMuMjggODcuMDljLTUuNjctMy44LTkuMjgtOS45Ni05LjI4LTE2Ljc4VjhjMC00LjQyLTMuNTgtOC04LThoLTQ4Yy00LjQyIDAtOCAzLjU4LTggOHY2Mi4zMWMwIDIyLjAyIDEwLjE3IDQzLjQxIDI4LjY0IDU1LjM5QzU1MC43OSAxNTMuMDQgNTc2IDE5OS41NCA1NzYgMjQ5LjY5VjI4MGMwIDQuNDIgMy41OCA4IDggOGg0OGM0LjQyIDAgOC0zLjU4IDgtOHYtMzAuMzFjMC02NS40NC0zMi40MS0xMjYuMTktODYuNzItMTYyLjZ6TTM2MC44OSAzNTIuMDVjLTM0LjQuMDYtODYuODEuMTUtODguMjEuMTdsMTE3LjggMTM3LjQzQTYzLjk4NyA2My45ODcgMCAwIDAgNDM5LjA3IDUxMmg4OC40NUw0MDkuNTcgMzc0LjRhNjMuOTU1IDYzLjk1NSAwIDAgMC00OC42OC0yMi4zNXpNNjE2IDM1Mkg0MzJsMTE3Ljk5IDEzNy42NUE2My45ODcgNjMuOTg3IDAgMCAwIDU5OC41OCA1MTJINjE2YzEzLjI1IDAgMjQtMTAuNzUgMjQtMjRWMzc2YzAtMTMuMjYtMTAuNzUtMjQtMjQtMjR6XCJdXG59O1xudmFyIGZhSm91cm5hbFdoaWxscyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdqb3VybmFsLXdoaWxscycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjY2YVwiLCBcIk00MzguNDA2MjUsMzc3LjU5Mzc1Yy0zLjIwMzEzLDEyLjgxMjUtMy4yMDMxMyw1Ny42MDkzNywwLDczLjYwOTM3UTQ0Ny45OTIyLDQ2MC43ODkwNyw0NDgsNDcwLjQwNjI1djE2YzAsMTYtMTIuNzk2ODgsMjUuNTkzNzUtMjUuNTkzNzUsMjUuNTkzNzVIOTZjLTU0LjQwNjI1LDAtOTYtNDEuNTkzNzUtOTYtOTZWOTZDMCw0MS41OTM3NSw0MS41OTM3NSwwLDk2LDBINDIyLjQwNjI1QzQzOC40MDYyNSwwLDQ0OCw5LjU5Mzc1LDQ0OCwyNS41OTM3NXYzMzIuODEyNVE0NDgsMzcyLjc5Njg4LDQzOC40MDYyNSwzNzcuNTkzNzVaTTM4MC43OTY4OCwzODRIOTZjLTE2LDAtMzIsMTIuNzk2ODgtMzIsMzJzMTIuNzk2ODgsMzIsMzIsMzJIMzgwLjc5Njg4Wk0xMjguMDE1NjIsMTc2LjAxNTYyYzAsLjUxNTYzLjE0MDYzLjk4NDM4LjE0MDYzLDEuNWwzNy4xMDkzNywzMi40Njg3NkE3Ljk5OTU0LDcuOTk5NTQsMCwwLDEsMTYwLDIyNGgtLjAxNTYyYTkuMTc2NzgsOS4xNzY3OCwwLDAsMS01LjI1LTEuOTg0MzhMMTMxLjE0MDYyLDIwMS4zNzVDMTQyLjY4NzUsMjUwLjk1MzEyLDE4Ni45MDYyNSwyODgsMjQwLDI4OHM5Ny4zMTI1LTM3LjA0Njg4LDEwOC44NzUtODYuNjI1bC0yMy41OTM3NSwyMC42NDA2MmE4LjAyNTE2LDguMDI1MTYsMCwwLDEtNS4yNjU2MywxLjk2ODc2SDMyMGE5LjE0NjQxLDkuMTQ2NDEsMCwwLDEtNi4wMTU2Mi0yLjcxODc2QTkuMjY1MDgsOS4yNjUwOCwwLDAsMSwzMTIsMjE2YTkuMDk3LDkuMDk3LDAsMCwxLDIuNzM0MzgtNi4wMTU2MmwzNy4xMDkzNy0zMi40Njg3NmMuMDE1NjMtLjUzMTI0LjE1NjI1LTEsLjE1NjI1LTEuNTE1NjIsMC0xMS4wNDY4OC0yLjA5Mzc1LTIxLjUxNTYyLTUuMDYyNTEtMzEuNTkzNzVsLTIxLjI2NTYyLDIxLjI1YTguMDA0NjcsOC4wMDQ2NywwLDAsMS0xMS4zMjgxMi0xMS4zMTI1bDI2LjQyMTg3LTI2LjQwNjI1YTExMS44MTUxNywxMTEuODE1MTcsMCwwLDAtNDYuMzU5MzctNDkuMjY1NjIsNjMuMDIzMzYsNjMuMDIzMzYsMCwwLDEtMTQuMDYyNSw4Mi42NDA2MkE1NS44Mzg0Niw1NS44Mzg0NiwwLDAsMSwyNTEuNjI1LDI1NC43MzQzOGwtMS40MjE4OC0zNC4yODEyNiwxMi42NzE4OCw4LjYyNWEzLjk2NywzLjk2NywwLDAsMCwyLjI1LjY4NzUsMy45ODA1OSwzLjk4MDU5LDAsMCwwLDMuNDM3NDktNi4wMzEyNGwtOC41MzEyNC0xNC4zMTI1LDE3LjkwNjI1LTMuNzE4NzZhNC4wMDY0Nyw0LjAwNjQ3LDAsMCwwLDAtNy44NDM3NGwtMTcuOTA2MjUtMy43MTg3Niw4LjUzMTI0LTE0LjMxMjVhMy45ODA1OSwzLjk4MDU5LDAsMCwwLTMuNDM3NDktNi4wMzEyNCw0LjcyNiw0LjcyNiwwLDAsMC0yLjI1LjY3MTg3TDI0OC42ODc1LDE4NC4xMjUsMjQ0LDcxLjgyODEyYTQuMDAzODYsNC4wMDM4NiwwLDAsMC04LDBsLTQuNjI1LDExMC44MTI1LTEyLTguMTU2MjRhNC4wMDMsNC4wMDMsMCwwLDAtNS42ODc1MSw1LjM1OTM3bDguNTMxMjYsMTQuMzEyNUwyMDQuMzEyNSwxOTcuODc1YTMuOTk2ODYsMy45OTY4NiwwLDAsMCwwLDcuODI4MTJsMTcuOTA2MjUsMy43MzQzOC04LjUzMTI2LDE0LjI5Njg4YTQuNzI0NjksNC43MjQ2OSwwLDAsMC0uNTYyNDksMi4wNDY4Nyw0LjU5NTQ3LDQuNTk1NDcsMCwwLDAsMS4yNSwyLjkwNjI1LDQuMDEwNTksNC4wMTA1OSwwLDAsMCwyLjc1LDEuMDkzNzUsNC4wOTAxNiw0LjA5MDE2LDAsMCwwLDIuMjUtLjY4NzVsMTAuMzU5MzctNy4wNDY4N0wyMjguMzc1LDI1NC43NjU2MmE1NS44NjQxNCw1NS44NjQxNCwwLDAsMS0yOC43MTg3NS05My40NTMxMiw2My4wMTExOSw2My4wMTExOSwwLDAsMS0xNC4wNDY4OC04Mi42NTYyNSwxMTEuOTMxNTgsMTExLjkzMTU4LDAsMCwwLTQ2LjM3NSw0OS4yNjU2M2wyNi40MjE4NywyNi40MjE4N2E3Ljk5OTE3LDcuOTk5MTcsMCwwLDEtMTEuMzEyNSwxMS4zMTI1bC0yMS4yNjU2My0yMS4yNjU2M0MxMzAuMDkzNzUsMTU0LjQ4NDM4LDEyOCwxNjQuOTUzMTIsMTI4LjAxNTYyLDE3Ni4wMTU2MlpcIl1cbn07XG52YXIgZmFLYWFiYSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdrYWFiYScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjY2YlwiLCBcIk01NTQuMTIgODMuNTFMMzE4LjM2IDQuOTNhOTUuOTYyIDk1Ljk2MiAwIDAgMC02MC43MSAwTDIxLjg4IDgzLjUxQTMyLjAwNiAzMi4wMDYgMCAwIDAgMCAxMTMuODd2NDkuMDFsMjY1LjAyLTc5LjUxYzE1LjAzLTQuNSAzMC45Mi00LjUgNDUuOTggMGwyNjUgNzkuNTF2LTQ5LjAxYzAtMTMuNzctOC44MS0yNi0yMS44OC0zMC4zNnptLTI3OS45IDMwLjUyTDAgMTk2LjN2MjI4LjM4YzAgMTUgMTAuNDIgMjcuOTggMjUuMDYgMzEuMjRsMjQyLjEyIDUzLjhhOTUuOTM3IDk1LjkzNyAwIDAgMCA0MS42NSAwbDI0Mi4xMi01My44YzE0LjY0LTMuMjUgMjUuMDYtMTYuMjQgMjUuMDYtMzEuMjRWMTk2LjI5bC0yNzQuMi04Mi4yNmMtOS4wNC0yLjcyLTE4LjU5LTIuNzItMjcuNTkgMHpNMTI4IDIzMC4xMWMwIDMuNjEtMi40MSA2Ljc3LTUuODkgNy43MmwtODAgMjEuODJDMzcuMDIgMjYxLjAzIDMyIDI1Ny4yIDMyIDI1MS45M3YtMTYuNThjMC0zLjYxIDIuNDEtNi43NyA1Ljg5LTcuNzJsODAtMjEuODJjNS4wOS0xLjM5IDEwLjExIDIuNDQgMTAuMTEgNy43MnYxNi41OHptMTQ0LTM5LjI4YzAgMy42MS0yLjQxIDYuNzctNS44OSA3LjcybC05NiAyNi4xOGMtNS4wOSAxLjM5LTEwLjExLTIuNDQtMTAuMTEtNy43MnYtMTYuNThjMC0zLjYxIDIuNDEtNi43NyA1Ljg5LTcuNzJsOTYtMjYuMThjNS4wOS0xLjM5IDEwLjExIDIuNDQgMTAuMTEgNy43MnYxNi41OHptMTc2IDIyLjdjMC01LjI4IDUuMDItOS4xMSAxMC4xMS03LjcybDgwIDIxLjgyYzMuNDguOTUgNS44OSA0LjExIDUuODkgNy43MnYxNi41OGMwIDUuMjgtNS4wMiA5LjExLTEwLjExIDcuNzJsLTgwLTIxLjgyYTcuOTk3IDcuOTk3IDAgMCAxLTUuODktNy43MnYtMTYuNTh6bS0xNDQtMzkuMjdjMC01LjI4IDUuMDItOS4xMSAxMC4xMS03LjcybDk2IDI2LjE4YzMuNDguOTUgNS44OSA0LjExIDUuODkgNy43MnYxNi41OGMwIDUuMjgtNS4wMiA5LjExLTEwLjExIDcuNzJsLTk2LTI2LjE4YTcuOTk3IDcuOTk3IDAgMCAxLTUuODktNy43MnYtMTYuNTh6XCJdXG59O1xudmFyIGZhS2V5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2tleScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjA4NFwiLCBcIk01MTIgMTc2LjAwMUM1MTIgMjczLjIwMyA0MzMuMjAyIDM1MiAzMzYgMzUyYy0xMS4yMiAwLTIyLjE5LTEuMDYyLTMyLjgyNy0zLjA2OWwtMjQuMDEyIDI3LjAxNEEyMy45OTkgMjMuOTk5IDAgMCAxIDI2MS4yMjMgMzg0SDIyNHY0MGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRoLTQwdjQwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgyNGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0di03OC4wNTljMC02LjM2NSAyLjUyOS0xMi40NyA3LjAyOS0xNi45NzFsMTYxLjgwMi0xNjEuODAyQzE2My4xMDggMjEzLjgxNCAxNjAgMTk1LjI3MSAxNjAgMTc2IDE2MCA3OC43OTggMjM4Ljc5Ny4wMDEgMzM1Ljk5OSAwIDQzMy40ODgtLjAwMSA1MTIgNzguNTExIDUxMiAxNzYuMDAxek0zMzYgMTI4YzAgMjYuNTEgMjEuNDkgNDggNDggNDhzNDgtMjEuNDkgNDgtNDgtMjEuNDktNDgtNDgtNDgtNDggMjEuNDktNDggNDh6XCJdXG59O1xudmFyIGZhS2V5Ym9hcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAna2V5Ym9hcmQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYxMWNcIiwgXCJNNTI4IDQ0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxMTJjMC0yNi41MSAyMS40OS00OCA0OC00OGg0ODBjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYyODhjMCAyNi41MS0yMS40OSA0OC00OCA0OHpNMTI4IDE4MHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMkg3NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptLTMzNiA5NnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0tMzM2IDk2di00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDc2Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMjg4IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJIMTcyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjMyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnpcIl1cbn07XG52YXIgZmFLaGFuZGEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAna2hhbmRhJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNjZkXCIsIFwiTTQxNS44MSA2NmMtNi4zNy0zLjUtMTQuMzctMi4zMy0xOS4zNiAzLjAyYTE1Ljk3NCAxNS45NzQgMCAwIDAtMS45MSAxOS41MmMxNi40OSAyNi4xNiAyNS4yIDU2LjM5IDI1LjIgODcuNDEtLjE5IDUzLjI1LTI2Ljc3IDEwMi42OS03MS4yNyAxMzIuNDFsLTc2LjYzIDUzLjM1di0yMC4xbDQ0LjA1LTM2LjA5YzMuOTItNC4yIDUtMTAuMDkgMi44MS0xNS4yOEwzMTAuODUgMjczYzMzLjg0LTE5LjI2IDU2Ljk0LTU1LjI1IDU2Ljk0LTk2Ljk5IDAtNDAuNzktMjIuMDItNzYuMTMtNTQuNTktOTUuNzFsNS4yMi0xMS40NGMyLjM0LTUuNTMuOTMtMTEuODMtMy41Ny0xNi4wNEwyNTUuODYgMGwtNTguOTkgNTIuODFjLTQuNSA0LjIxLTUuOSAxMC41MS0zLjU3IDE2LjA0bDUuMjIgMTEuNDRjLTMyLjU3IDE5LjU4LTU0LjU5IDU0LjkzLTU0LjU5IDk1LjcyIDAgNDEuNzUgMjMuMDkgNzcuNzMgNTYuOTQgOTYuOTlsLTcuODUgMTcuMjRjLTIuMTkgNS4xOC0xLjEgMTEuMDcgMi44MSAxNS4yOGw0NC4wNSAzNi4wOXYxOS45bC03Ni41OS01My4zM0MxMTkuMDIgMjc4LjYyIDkyLjQ0IDIyOS4xOSA5Mi4yNiAxNzZjMC0zMS4wOCA4LjcxLTYxLjMxIDI1LjItODcuNDcgMy44Ny02LjE2IDIuNC0xMy43Ny0yLjU5LTE5LjA4LTUtNS4zNC0xMy42OC02LjItMjAuMDItMi43QzE2LjMyIDEwOS42LTIyLjMgMjA1LjMgMTMuMzYgMjk1Ljk5YzcuMDcgMTcuOTkgMTcuODkgMzQuMzggMzAuNDYgNDkuMDZsNTUuOTcgNjUuMzZjNC44NyA1LjY5IDEzLjA0IDcuMjQgMTkuNjUgMy43Mmw3OS4zNS00Mi4yM0wyMjggMzkyLjIzbC00Ny4wOCAzMi43OGMtMS42Ny0uMzctMy4yMy0xLjAxLTUuMDEtMS4wMS0xMy4yNSAwLTIzLjk5IDEwLjc0LTIzLjk5IDI0IDAgMTMuMjUgMTAuNzQgMjQgMjMuOTkgMjQgMTIuMSAwIDIxLjY5LTkuMTEgMjMuMzMtMjAuNzZsNDAuNjMtMjguMjh2MjkuOTVjLTkuMzkgNS41Ny0xNS45OSAxNS4zOC0xNS45OSAyNy4xIDAgMTcuNjcgMTQuMzIgMzIgMzEuOTggMzJzMzEuOTgtMTQuMzMgMzEuOTgtMzJjMC0xMS43MS02LjYxLTIxLjUyLTE1Ljk5LTI3LjF2LTMwLjE1bDQwLjkxIDI4LjQ4QzMxNC40MSA0NjIuODkgMzI0IDQ3MiAzMzYuMDkgNDcyYzEzLjI1IDAgMjMuOTktMTAuNzUgMjMuOTktMjQgMC0xMy4yNi0xMC43NC0yNC0yMy45OS0yNC0xLjc4IDAtMy4zNC42NC01LjAxIDEuMDFMMjg0IDM5Mi4yM2wyOS4yMS0yMC4zNCA3OS4zNSA0Mi4yM2M2LjYxIDMuNTIgMTQuNzggMS45NyAxOS42NS0zLjcxbDUyLjUxLTYxLjMxYzE4Ljg3LTIyLjAyIDM0LTQ3LjUgNDEuMjUtNzUuNTkgMjEuNjItODMuNjYtMTYuNDUtMTY3LjI3LTkwLjE2LTIwNy41MXptLTk1Ljk5IDExMGMwIDIyLjMtMTEuNDkgNDEuOTItMjguODMgNTMuMzhsLTUuNjUtMTIuNDFjLTguNzUtMjQuNTItOC43NS01MS4wNCAwLTc1LjU2bDcuODMtMTcuMThjMTYuMDcgMTEuNjUgMjYuNjUgMzAuNDUgMjYuNjUgNTEuNzd6bS0xMjcuOTMgMGMwLTIxLjMyIDEwLjU4LTQwLjEyIDI2LjY2LTUxLjc2bDcuODMgMTcuMThjOC43NSAyNC41MiA4Ljc1IDUxLjAzIDAgNzUuNTZsLTUuNjUgMTIuNDFjLTE3LjM0LTExLjQ2LTI4Ljg0LTMxLjA5LTI4Ljg0LTUzLjM5elwiXVxufTtcbnZhciBmYUtpc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAna2lzcycsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjU5NlwiLCBcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0tODAgMjMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTM2IDE1NmMwIDE5LjItMjguNyA0MS41LTcxLjUgNDQtOC41LjgtMTIuMS0xMS44LTMuNi0xNS40bDE3LTcuMmMxMy01LjUgMjAuOC0xMy41IDIwLjgtMjEuNXMtNy44LTE2LTIwLjgtMjEuNWwtMTctNy4yYy02LTIuNS02LjEtMTIuMiAwLTE0LjhsMTctNy4yYzEzLTUuNSAyMC44LTEzLjUgMjAuOC0yMS41cy03LjgtMTYtMjAuOC0yMS41bC0xNy03LjJjLTguNi0zLjYtNC44LTE2LjUgMy42LTE1LjQgNDIuOCAyLjUgNzEuNSAyNC44IDcxLjUgNDQgMCAxMy0xMy40IDI3LjMtMzUuMiAzNkMyOTAuNiAzNjguNyAzMDQgMzgzIDMwNCAzOTZ6bTI0LTE1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJdXG59O1xudmFyIGZhS2lzc0JlYW0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAna2lzcy1iZWFtJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNTk3XCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bS0zOSAyMTkuOWwtOS41LTE3Yy03LjctMTMuNy0xOS4yLTIxLjYtMzEuNS0yMS42cy0yMy44IDcuOS0zMS41IDIxLjZsLTkuNSAxN2MtNC4yIDcuNC0xNS42IDQtMTQuOS00LjUgMy4zLTQyLjEgMzIuMi03MS40IDU2LTcxLjRzNTIuNyAyOS4zIDU2IDcxLjRjLjUgOC41LTEwLjkgMTItMTUuMSA0LjV6TTMwNCAzOTZjMCAxOS4yLTI4LjcgNDEuNS03MS41IDQ0LTguNS44LTEyLjEtMTEuOC0zLjYtMTUuNGwxNy03LjJjMTMtNS41IDIwLjgtMTMuNSAyMC44LTIxLjVzLTcuOC0xNi0yMC44LTIxLjVsLTE3LTcuMmMtNi0yLjUtNi4xLTEyLjIgMC0xNC44bDE3LTcuMmMxMy01LjUgMjAuOC0xMy41IDIwLjgtMjEuNXMtNy44LTE2LTIwLjgtMjEuNWwtMTctNy4yYy04LjYtMy42LTQuOC0xNi41IDMuNi0xNS40IDQyLjggMi41IDcxLjUgMjQuOCA3MS41IDQ0IDAgMTMtMTMuNCAyNy4zLTM1LjIgMzZDMjkwLjYgMzY4LjcgMzA0IDM4MyAzMDQgMzk2em02NS0xNjguMWwtOS41LTE3Yy03LjctMTMuNy0xOS4yLTIxLjYtMzEuNS0yMS42cy0yMy44IDcuOS0zMS41IDIxLjZsLTkuNSAxN2MtNC4xIDcuMy0xNS42IDQtMTQuOS00LjUgMy4zLTQyLjEgMzIuMi03MS40IDU2LTcxLjRzNTIuNyAyOS4zIDU2IDcxLjRjLjUgOC41LTEwLjkgMTItMTUuMSA0LjV6XCJdXG59O1xudmFyIGZhS2lzc1dpbmtIZWFydCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdraXNzLXdpbmstaGVhcnQnLFxuICBpY29uOiBbNTA0LCA1MTIsIFtdLCBcImY1OThcIiwgXCJNNTAxLjEgNDAyLjVjLTgtMjAuOC0zMS41LTMxLjUtNTMuMS0yNS45bC04LjQgMi4yLTIuMy04LjRjLTUuOS0yMS40LTI3LTM2LjUtNDktMzMtMjUuMiA0LTQwLjYgMjguNi0zNCA1Mi42bDIyLjkgODIuNmMxLjUgNS4zIDcgOC41IDEyLjQgNy4xbDgzLTIxLjVjMjQuMS02LjMgMzcuNy0zMS44IDI4LjUtNTUuN3ptLTE3Ny42LTRjLTUuNi0yMC4zLTIuMy00MiA5LTU5LjcgMjkuNy00Ni4zIDk4LjctNDUuNSAxMjcuOCA0LjMgNi40LjEgMTIuNiAxLjQgMTguNiAyLjkgMTAuOS0yNy45IDE3LjEtNTguMiAxNy4xLTkwQzQ5NiAxMTkgMzg1IDggMjQ4IDhTMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4YzM1LjQgMCA2OC45LTcuNSA5OS40LTIwLjktLjMtLjctMjMuOS04NC42LTIzLjktODQuNnpNMTY4IDI0MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTEyMCAxNTZjMCAxOS4yLTI4LjcgNDEuNS03MS41IDQ0LTguNS44LTEyLjEtMTEuOC0zLjYtMTUuNGwxNy03LjJjMTMtNS41IDIwLjgtMTMuNSAyMC44LTIxLjVzLTcuOC0xNi0yMC44LTIxLjVsLTE3LTcuMmMtNi0yLjUtNS43LTEyLjMgMC0xNC44bDE3LTcuMmMxMy01LjUgMjAuOC0xMy41IDIwLjgtMjEuNXMtNy44LTE2LTIwLjgtMjEuNWwtMTctNy4yYy04LjgtMy43LTQuNi0xNi42IDMuNi0xNS40IDQyLjggMi41IDcxLjUgMjQuOCA3MS41IDQ0IDAgMTMtMTMuNCAyNy4zLTM1LjIgMzZDMjc0LjYgMzY4LjcgMjg4IDM4MyAyODggMzk2em0xNi0xNzljLTguMyA3LjQtMjEuNi40LTE5LjgtMTAuOCA0LTI1LjIgMzQuMi00Mi4xIDU5LjktNDIuMVM0MDAgMTgxIDQwNCAyMDYuMmMxLjcgMTEuMS0xMS4zIDE4LjMtMTkuOCAxMC44bC05LjUtOC41Yy0xNC44LTEzLjItNDYuMi0xMy4yLTYxIDBMMzA0IDIxN3pcIl1cbn07XG52YXIgZmFLaXdpQmlyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdraXdpLWJpcmQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY1MzVcIiwgXCJNNTc1LjgxIDIxNy45OEM1NzIuNjQgMTU3LjQxIDUxOC4yOCAxMTIgNDU3LjYzIDExMmgtOS4zN2MtNTIuODIgMC0xMDQuMjUtMTYuMjUtMTQ3Ljc0LTQ2LjI0LTQxLjk5LTI4Ljk2LTk2LjA0LTQxLjYyLTE1My4yMS0yOC43QzEyOS4zIDQxLjEyLS4wOCA3OC4yNCAwIDIyNGMuMDQgNzAuOTUgMzguNjggMTMyLjggOTUuOTkgMTY2LjAxVjQ2NGMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNTQuMjZjMTUuMzYgMy45NiAzMS40IDYuMjYgNDggNi4yNiA1LjQ0IDAgMTAuNjgtLjczIDE2LTEuMThWNDY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzguODQgMCAxNi03LjE2IDE2LTE2di01OS40M2MxNC4yNC01LjA2IDI3Ljg4LTExLjM5IDQwLjM0LTE5LjUxQzM0Mi4wNyAzNTUuMjUgMzkzLjg2IDMzNiA0NDguNDYgMzM2YzI1LjQ4IDAgMTYuMDEtLjMxIDIzLjA1LS43OGw3NC40MSAxMzYuNDRjMi44NiA1LjIzIDguMyA4LjM0IDE0LjA1IDguMzQgMS4zMSAwIDIuNjQtLjE2IDMuOTUtLjUgNy4wOS0xLjggMTIuMDUtOC4xOSAxMi4wNS0xNS41IDAgMCAuMTQtMjQwLjI0LS4xNi0yNDYuMDJ6TTQ2My45NyAyNDhjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0em04MCAxNTMuMjVsLTM5Ljg2LTczLjA4YzE1LjEyLTUuODMgMjguNzMtMTQuNiAzOS44Ni0yNS45OHY5OS4wNnpcIl1cbn07XG52YXIgZmFMYW5kbWFyayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsYW5kbWFyaycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjY2ZlwiLCBcIk01MDEuNjIgOTIuMTFMMjY3LjI0IDIuMDRhMzEuOTU4IDMxLjk1OCAwIDAgMC0yMi40NyAwTDEwLjM4IDkyLjExQTE2LjAwMSAxNi4wMDEgMCAwIDAgMCAxMDcuMDlWMTQ0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzYuOTFjMC02LjY3LTQuMTQtMTIuNjQtMTAuMzgtMTQuOTh6TTY0IDE5MnYxNjBINDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djQ4aDQ0OHYtNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTE2VjE5MmgtNjR2MTYwaC05NlYxOTJoLTY0djE2MGgtOTZWMTkySDY0em00MzIgMjU2SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0ODBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2elwiXVxufTtcbnZhciBmYUxhbmd1YWdlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xhbmd1YWdlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMWFiXCIsIFwiTTE1Mi4xIDIzNi4yYy0zLjUtMTIuMS03LjgtMzMuMi03LjgtMzMuMmgtLjVzLTQuMyAyMS4xLTcuOCAzMy4ybC0xMS4xIDM3LjVIMTYzek02MTYgOTZIMzM2djMyMGgyODBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0em0tMjQgMTIwYzAgNi42LTUuNCAxMi0xMiAxMmgtMTEuNGMtNi45IDIzLjYtMjEuNyA0Ny40LTQyLjcgNjkuOSA4LjQgNi40IDE3LjEgMTIuNSAyNi4xIDE4IDUuNSAzLjQgNy4zIDEwLjUgNC4xIDE2LjJsLTcuOSAxMy45Yy0zLjQgNS45LTEwLjkgNy44LTE2LjcgNC4zLTEyLjYtNy44LTI0LjUtMTYuMS0zNS40LTI0LjktMTAuOSA4LjctMjIuNyAxNy4xLTM1LjQgMjQuOS01LjggMy41LTEzLjMgMS42LTE2LjctNC4zbC03LjktMTMuOWMtMy4yLTUuNi0xLjQtMTIuOCA0LjItMTYuMiA5LjMtNS43IDE4LTExLjcgMjYuMS0xOC03LjktOC40LTE0LjktMTctMjEtMjUuNy00LTUuNy0yLjItMTMuNiAzLjctMTcuMWw2LjUtMy45IDcuMy00LjNjNS40LTMuMiAxMi40LTEuNyAxNiAzLjQgNSA3IDEwLjggMTQgMTcuNCAyMC45IDEzLjUtMTQuMiAyMy44LTI4LjkgMzAtNDMuMkg0MTJjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMTZjMC02LjYgNS40LTEyIDEyLTEyaDY0di0xNmMwLTYuNiA1LjQtMTIgMTItMTJoMTZjNi42IDAgMTIgNS40IDEyIDEydjE2aDY0YzYuNiAwIDEyIDUuNCAxMiAxMnpNMCAxMjB2MjcyYzAgMTMuMyAxMC43IDI0IDI0IDI0aDI4MFY5NkgyNGMtMTMuMyAwLTI0IDEwLjctMjQgMjR6bTU4LjkgMjE2LjFMMTE2LjQgMTY3YzEuNy00LjkgNi4yLTguMSAxMS40LTguMWgzMi41YzUuMSAwIDkuNyAzLjMgMTEuNCA4LjFsNTcuNSAxNjkuMWMyLjYgNy44LTMuMSAxNS45LTExLjQgMTUuOWgtMjIuOWExMiAxMiAwIDAgMS0xMS41LTguNmwtOS40LTMxLjloLTYwLjJsLTkuMSAzMS44Yy0xLjUgNS4xLTYuMiA4LjctMTEuNSA4LjdINzAuM2MtOC4yIDAtMTQtOC4xLTExLjQtMTUuOXpcIl1cbn07XG52YXIgZmFMYXB0b3AgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGFwdG9wJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMTA5XCIsIFwiTTYyNCA0MTZIMzgxLjU0Yy0uNzQgMTkuODEtMTQuNzEgMzItMzIuNzQgMzJIMjg4Yy0xOC42OSAwLTMzLjAyLTE3LjQ3LTMyLjc3LTMySDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCAzNS4yIDI4LjggNjQgNjQgNjRoNTEyYzM1LjIgMCA2NC0yOC44IDY0LTY0di0xNmMwLTguOC03LjItMTYtMTYtMTZ6TTU3NiA0OGMwLTI2LjQtMjEuNi00OC00OC00OEgxMTJDODUuNiAwIDY0IDIxLjYgNjQgNDh2MzM2aDUxMlY0OHptLTY0IDI3MkgxMjhWNjRoMzg0djI1NnpcIl1cbn07XG52YXIgZmFMYXB0b3BDb2RlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xhcHRvcC1jb2RlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNWZjXCIsIFwiTTI1NS4wMyAyNjEuNjVjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGwxMS4zMS0xMS4zMWM2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzTDI1My4yNSAxOTJsMzUuNzEtMzUuNzJjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtMTEuMzEtMTEuMzFjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTU4LjM0IDU4LjM0Yy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDU4LjM1IDU4LjM0em05Ni4wMS0xMS4zbDExLjMxIDExLjMxYzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsNTguMzQtNTguMzRjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtNTguMzQtNTguMzRjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTExLjMxIDExLjMxYy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzTDM4Ni43NSAxOTJsLTM1LjcxIDM1LjcyYy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzek02MjQgNDE2SDM4MS41NGMtLjc0IDE5LjgxLTE0LjcxIDMyLTMyLjc0IDMySDI4OGMtMTguNjkgMC0zMy4wMi0xNy40Ny0zMi43Ny0zMkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgMzUuMiAyOC44IDY0IDY0IDY0aDUxMmMzNS4yIDAgNjQtMjguOCA2NC02NHYtMTZjMC04LjgtNy4yLTE2LTE2LTE2ek01NzYgNDhjMC0yNi40LTIxLjYtNDgtNDgtNDhIMTEyQzg1LjYgMCA2NCAyMS42IDY0IDQ4djMzNmg1MTJWNDh6bS02NCAyNzJIMTI4VjY0aDM4NHYyNTZ6XCJdXG59O1xudmFyIGZhTGFwdG9wSG91c2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGFwdG9wLWhvdXNlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlMDY2XCIsIFwiTTI3MiwyODhIMjA4YTE2LDE2LDAsMCwxLTE2LTE2VjIwOGExNiwxNiwwLDAsMSwxNi0xNmg2NGExNiwxNiwwLDAsMSwxNiwxNnYzNy4xMkMyOTkuMTEsMjMyLjI0LDMxNSwyMjQsMzMyLjgsMjI0SDQ2OS43NGw2LjY1LTcuNTNBMTYuNTEsMTYuNTEsMCwwLDAsNDgwLDIwN2ExNi4zMSwxNi4zMSwwLDAsMC00Ljc1LTEwLjYxTDQxNiwxNDRWNDhhMTYsMTYsMCwwLDAtMTYtMTZIMzY4YTE2LDE2LDAsMCwwLTE2LDE2Vjg3LjNMMjYzLjUsOC45MkMyNTgsNCwyNDcuNDUsMCwyNDAuMDUsMHMtMTcuOTMsNC0yMy40Nyw4LjkyTDQuNzgsMTk2LjQyQTE2LjE1LDE2LjE1LDAsMCwwLDAsMjA3YTE2LjQsMTYuNCwwLDAsMCwzLjU1LDkuMzlMMjIuMzQsMjM3LjdBMTYuMjIsMTYuMjIsMCwwLDAsMzMsMjQyLjQ4LDE2LjUxLDE2LjUxLDAsMCwwLDQyLjM0LDIzOUw2NCwyMTkuODhWMzg0YTMyLDMyLDAsMCwwLDMyLDMySDI3MlpNNjI5LjMzLDQ0OEg1OTJWMjg4YzAtMTcuNjctMTIuODktMzItMjguOC0zMkgzMzIuOGMtMTUuOTEsMC0yOC44LDE0LjMzLTI4LjgsMzJWNDQ4SDI2Ni42N0ExMC42NywxMC42NywwLDAsMCwyNTYsNDU4LjY3djEwLjY2QTQyLjgyLDQyLjgyLDAsMCwwLDI5OC42LDUxMkg1OTcuNEE0Mi44Miw0Mi44MiwwLDAsMCw2NDAsNDY5LjMzVjQ1OC42N0ExMC42NywxMC42NywwLDAsMCw2MjkuMzMsNDQ4Wk01NDQsNDQ4SDM1MlYzMDRINTQ0WlwiXVxufTtcbnZhciBmYUxhcHRvcE1lZGljYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGFwdG9wLW1lZGljYWwnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY4MTJcIiwgXCJNMjMyIDIyNGg1NnY1NmE4IDggMCAwIDAgOCA4aDQ4YTggOCAwIDAgMCA4LTh2LTU2aDU2YTggOCAwIDAgMCA4LTh2LTQ4YTggOCAwIDAgMC04LThoLTU2di01NmE4IDggMCAwIDAtOC04aC00OGE4IDggMCAwIDAtOCA4djU2aC01NmE4IDggMCAwIDAtOCA4djQ4YTggOCAwIDAgMCA4IDh6TTU3NiA0OGE0OC4xNCA0OC4xNCAwIDAgMC00OC00OEgxMTJhNDguMTQgNDguMTQgMCAwIDAtNDggNDh2MzM2aDUxMnptLTY0IDI3MkgxMjhWNjRoMzg0em0xMTIgOTZIMzgxLjU0Yy0uNzQgMTkuODEtMTQuNzEgMzItMzIuNzQgMzJIMjg4Yy0xOC42OSAwLTMzLTE3LjQ3LTMyLjc3LTMySDE2YTE2IDE2IDAgMCAwLTE2IDE2djE2YTY0LjE5IDY0LjE5IDAgMCAwIDY0IDY0aDUxMmE2NC4xOSA2NC4xOSAwIDAgMCA2NC02NHYtMTZhMTYgMTYgMCAwIDAtMTYtMTZ6XCJdXG59O1xudmFyIGZhTGF1Z2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGF1Z2gnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1OTlcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptODAgMTUyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptLTE2MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptODggMjcyaC0xNmMtNzMuNCAwLTEzNC01NS0xNDIuOS0xMjYtMS4yLTkuNSA2LjMtMTggMTUuOS0xOGgyNzBjOS42IDAgMTcuMSA4LjQgMTUuOSAxOC04LjkgNzEtNjkuNSAxMjYtMTQyLjkgMTI2elwiXVxufTtcbnZhciBmYUxhdWdoQmVhbSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsYXVnaC1iZWFtJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNTlhXCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTI0IDE5OS40YzMuMy00Mi4xIDMyLjItNzEuNCA1Ni03MS40czUyLjcgMjkuMyA1NiA3MS40Yy43IDguNi0xMC44IDExLjktMTQuOSA0LjVsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMiA3LjQtMTUuOCA0LjEtMTUuMS00LjV6bS0xNjAgMGMzLjMtNDIuMSAzMi4yLTcxLjQgNTYtNzEuNHM1Mi43IDI5LjMgNTYgNzEuNGMuNyA4LjYtMTAuOCAxMS45LTE0LjkgNC41bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjMgNy40LTE1LjggNC0xNS4xLTQuNXpNMzk4LjkgMzA2QzM5MCAzNzcgMzI5LjQgNDMyIDI1NiA0MzJoLTE2Yy03My40IDAtMTM0LTU1LTE0Mi45LTEyNi0xLjItOS41IDYuMy0xOCAxNS45LTE4aDI3MGM5LjYgMCAxNy4xIDguNCAxNS45IDE4elwiXVxufTtcbnZhciBmYUxhdWdoU3F1aW50ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xhdWdoLXNxdWludCcsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjU5YlwiLCBcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0zMy44IDE2MS43bDgwLTQ4YzExLjYtNi45IDI0IDcuNyAxNS40IDE4TDM0My42IDE4MGwzMy42IDQwLjNjOC43IDEwLjQtMy45IDI0LjgtMTUuNCAxOGwtODAtNDhjLTcuNy00LjctNy43LTE1LjkgMC0yMC42em0tMTYzLTMwYy04LjYtMTAuMyAzLjgtMjQuOSAxNS40LTE4bDgwIDQ4YzcuOCA0LjcgNy44IDE1LjkgMCAyMC42bC04MCA0OGMtMTEuNSA2LjgtMjQtNy42LTE1LjQtMThsMzMuNi00MC4zLTMzLjYtNDAuM3pNMzk4LjkgMzA2QzM5MCAzNzcgMzI5LjQgNDMyIDI1NiA0MzJoLTE2Yy03My40IDAtMTM0LTU1LTE0Mi45LTEyNi0xLjItOS41IDYuMy0xOCAxNS45LTE4aDI3MGM5LjYgMCAxNy4xIDguNCAxNS45IDE4elwiXVxufTtcbnZhciBmYUxhdWdoV2luayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsYXVnaC13aW5rJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNTljXCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTIwLjEgMTk4LjFjNC0yNS4yIDM0LjItNDIuMSA1OS45LTQyLjFzNTUuOSAxNi45IDU5LjkgNDIuMWMxLjcgMTEuMS0xMS40IDE4LjMtMTkuOCAxMC44bC05LjUtOC41Yy0xNC44LTEzLjItNDYuMi0xMy4yLTYxIDBMMjg4IDIxN2MtOC40IDcuNC0yMS42LjMtMTkuOS0xMC45ek0xNjggMTYwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptMjMwLjkgMTQ2QzM5MCAzNzcgMzI5LjQgNDMyIDI1NiA0MzJoLTE2Yy03My40IDAtMTM0LTU1LTE0Mi45LTEyNi0xLjItOS41IDYuMy0xOCAxNS45LTE4aDI3MGM5LjYgMCAxNy4xIDguNCAxNS45IDE4elwiXVxufTtcbnZhciBmYUxheWVyR3JvdXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGF5ZXItZ3JvdXAnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1ZmRcIiwgXCJNMTIuNDEgMTQ4LjAybDIzMi45NCAxMDUuNjdjNi44IDMuMDkgMTQuNDkgMy4wOSAyMS4yOSAwbDIzMi45NC0xMDUuNjdjMTYuNTUtNy41MSAxNi41NS0zMi41MiAwLTQwLjAzTDI2Ni42NSAyLjMxYTI1LjYwNyAyNS42MDcgMCAwIDAtMjEuMjkgMEwxMi40MSAxMDcuOThjLTE2LjU1IDcuNTEtMTYuNTUgMzIuNTMgMCA0MC4wNHptNDg3LjE4IDg4LjI4bC01OC4wOS0yNi4zMy0xNjEuNjQgNzMuMjdjLTcuNTYgMy40My0xNS41OSA1LjE3LTIzLjg2IDUuMTdzLTE2LjI5LTEuNzQtMjMuODYtNS4xN0w3MC41MSAyMDkuOTdsLTU4LjEgMjYuMzNjLTE2LjU1IDcuNS0xNi41NSAzMi41IDAgNDBsMjMyLjk0IDEwNS41OWM2LjggMy4wOCAxNC40OSAzLjA4IDIxLjI5IDBMNDk5LjU5IDI3Ni4zYzE2LjU1LTcuNSAxNi41NS0zMi41IDAtNDB6bTAgMTI3LjhsLTU3Ljg3LTI2LjIzLTE2MS44NiA3My4zN2MtNy41NiAzLjQzLTE1LjU5IDUuMTctMjMuODYgNS4xN3MtMTYuMjktMS43NC0yMy44Ni01LjE3TDcwLjI5IDMzNy44NyAxMi40MSAzNjQuMWMtMTYuNTUgNy41LTE2LjU1IDMyLjUgMCA0MGwyMzIuOTQgMTA1LjU5YzYuOCAzLjA4IDE0LjQ5IDMuMDggMjEuMjkgMEw0OTkuNTkgNDA0LjFjMTYuNTUtNy41IDE2LjU1LTMyLjUgMC00MHpcIl1cbn07XG52YXIgZmFMZWFmID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xlYWYnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYwNmNcIiwgXCJNNTQ2LjIgOS43Yy01LjYtMTIuNS0yMS42LTEzLTI4LjMtMS4yQzQ4Ni45IDYyLjQgNDMxLjQgOTYgMzY4IDk2aC04MEMxODIgOTYgOTYgMTgyIDk2IDI4OGMwIDcgLjggMTMuNyAxLjUgMjAuNUMxNjEuMyAyNjIuOCAyNTMuNCAyMjQgMzg0IDIyNGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkMxMzIuNiAyNTYgMjYgNDEwLjEgMi40IDQ2OGMtNi42IDE2LjMgMS4yIDM0LjkgMTcuNSA0MS42IDE2LjQgNi44IDM1LTEuMSA0MS44LTE3LjMgMS41LTMuNiAyMC45LTQ3LjkgNzEuOS05MC42IDMyLjQgNDMuOSA5NCA4NS44IDE3NC45IDc3LjJDNDY1LjUgNDY3LjUgNTc2IDMyNi43IDU3NiAxNTQuM2MwLTUwLjItMTAuOC0xMDIuMi0yOS44LTE0NC42elwiXVxufTtcbnZhciBmYUxlbW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xlbW9uJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDk0XCIsIFwiTTQ4OS4wMzggMjIuOTYzQzQ2NS45NDQtLjEzIDQzNC42NDgtNS45MyA0MTMuOTQ3IDYuMTI5Yy01OC45MDYgMzQuMzEyLTE4MS4yNS01My4wNzctMzIxLjA3MyA4Ni43NDZTNDAuNDQxIDM1NS4wNDEgNi4xMjkgNDEzLjk0NWMtMTIuMDU5IDIwLjcwMi02LjI2IDUxLjk5OSAxNi44MzMgNzUuMDkzIDIzLjA5NSAyMy4wOTUgNTQuMzkyIDI4Ljg5MSA3NS4wOTUgMTYuODMyIDU4LjkwMS0zNC4zMSAxODEuMjQ2IDUzLjA3OSAzMjEuMDY4LTg2Ljc0M1M0NzEuNTYgMTU2Ljk2IDUwNS44NzEgOTguMDU2YzEyLjA1OS0yMC43MDIgNi4yNjEtNTEuOTk5LTE2LjgzMy03NS4wOTN6TTI0My44ODEgOTUuNTIyYy01OC4xODkgMTQuNTQ3LTEzMy44MDggOTAuMTU1LTE0OC4zNTggMTQ4LjM1OC0xLjgxNyA3LjI3LTguMzQyIDEyLjEyNC0xNS41MTEgMTIuMTI0LTEuMjg0IDAtMi41OS0uMTU2LTMuODkzLS40ODEtOC41NzItMi4xNDQtMTMuNzg0LTEwLjgzLTExLjY0Mi0xOS40MDNDODEuOTAxIDE2Ni40MjcgMTY2LjMxNiA4MS45MyAyMzYuMTE5IDY0LjQ3OGM4LjU3NS0yLjE0MyAxNy4yNjEgMy4wNjkgMTkuNDAzIDExLjY0MnMtMy4wNjkgMTcuMjU5LTExLjY0MSAxOS40MDJ6XCJdXG59O1xudmFyIGZhTGVzc1RoYW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGVzcy10aGFuJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNTM2XCIsIFwiTTM2NS40NiAzNTcuNzRMMTQ3LjA0IDI1NS44OWwyMTguNDctMTAxLjg4YzE2LjAyLTcuNDcgMjIuOTUtMjYuNTEgMTUuNDgtNDIuNTNsLTEzLjUyLTI5QzM2MCA2Ni40NiAzNDAuOTYgNTkuNTMgMzI0Ljk0IDY3TDE4LjQ4IDIwOS45MWEzMi4wMTQgMzIuMDE0IDAgMCAwLTE4LjQ4IDI5djM0LjI0YzAgMTIuNDQgNy4yMSAyMy43NSAxOC40OCAyOWwzMDYuMzEgMTQyLjgzYzE2LjA2IDcuNDkgMzUuMTUuNTQgNDIuNjQtMTUuNTJsMTMuNTYtMjkuMDhjNy40OS0xNi4wNi41NC0zNS4xNS0xNS41My00Mi42NHpcIl1cbn07XG52YXIgZmFMZXNzVGhhbkVxdWFsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xlc3MtdGhhbi1lcXVhbCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjUzN1wiLCBcIk01NC45OCAyMTQuMmwzMDEuNDEgMTE5Ljg3YzE4LjM5IDYuMDMgMzguNzEtMi41NCA0NS4zOC0xOS4xNWwxMi4wOS0zMC4wOGM2LjY4LTE2LjYxLTIuODItMzQuOTctMjEuMjEtNDFsLTE3NS40NC02OC4wNSAxNzUuNTYtNjguMDljMTguMjktNiAyNy43NC0yNC4yNyAyMS4xLTQwLjc5bC0xMi4wMy0yOS45MmMtNi42NC0xNi41My0yNi44Ni0yNS4wNi00NS4xNS0xOS4wNkw1NC45OCAxMzcuODlDNDEuMjEgMTQyLjQxIDMyIDE1NC41IDMyIDE2OC4wN3YxNS45NmMwIDEzLjU2IDkuMjEgMjUuNjUgMjIuOTggMzAuMTd6TTQyNCA0MDBIMjRjLTEzLjI1IDAtMjQgMTAuNzQtMjQgMjR2NDhjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGg0MDBjMTMuMjUgMCAyNC0xMC43NSAyNC0yNHYtNDhjMC0xMy4yNi0xMC43NS0yNC0yNC0yNHpcIl1cbn07XG52YXIgZmFMZXZlbERvd25BbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGV2ZWwtZG93bi1hbHQnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImYzYmVcIiwgXCJNMzEzLjU1MyAzOTIuMzMxTDIwOS41ODcgNTA0LjMzNGMtOS40ODUgMTAuMjE0LTI1LjY3NiAxMC4yMjktMzUuMTc0IDBMNzAuNDM4IDM5Mi4zMzFDNTYuMjMyIDM3Ny4wMzEgNjcuMDYyIDM1MiA4OC4wMjUgMzUySDE1MlY4MEg2OC4wMjRhMTEuOTk2IDExLjk5NiAwIDAgMS04LjQ4NS0zLjUxNWwtNTYtNTZDLTQuMDIxIDEyLjkyNiAxLjMzMyAwIDEyLjAyNCAwSDIwOGMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2MzI4aDYzLjk2NmMyMC44NzggMCAzMS44NTEgMjQuOTY5IDE3LjU4NyA0MC4zMzF6XCJdXG59O1xudmFyIGZhTGV2ZWxVcEFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsZXZlbC11cC1hbHQnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImYzYmZcIiwgXCJNMzEzLjU1MyAxMTkuNjY5TDIwOS41ODcgNy42NjZjLTkuNDg1LTEwLjIxNC0yNS42NzYtMTAuMjI5LTM1LjE3NCAwTDcwLjQzOCAxMTkuNjY5QzU2LjIzMiAxMzQuOTY5IDY3LjA2MiAxNjAgODguMDI1IDE2MEgxNTJ2MjcySDY4LjAyNGExMS45OTYgMTEuOTk2IDAgMCAwLTguNDg1IDMuNTE1bC01NiA1NkMtNC4wMjEgNDk5LjA3NCAxLjMzMyA1MTIgMTIuMDI0IDUxMkgyMDhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE2MGg2My45NjZjMjAuODc4IDAgMzEuODUxLTI0Ljk2OSAxNy41ODctNDAuMzMxelwiXVxufTtcbnZhciBmYUxpZmVSaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xpZmUtcmluZycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjFjZFwiLCBcIk0yNTYgOEMxMTkuMDMzIDggOCAxMTkuMDMzIDggMjU2czExMS4wMzMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMzMgMjQ4LTI0OFMzOTIuOTY3IDggMjU2IDh6bTE3My42OTYgMTE5LjU1OWwtNjMuMzk5IDYzLjM5OWMtMTAuOTg3LTE4LjU1OS0yNi42Ny0zNC4yNTItNDUuMjU1LTQ1LjI1NWw2My4zOTktNjMuMzk5YTIxOC4zOTYgMjE4LjM5NiAwIDAgMSA0NS4yNTUgNDUuMjU1ek0yNTYgMzUyYy01My4wMTkgMC05Ni00Mi45ODEtOTYtOTZzNDIuOTgxLTk2IDk2LTk2IDk2IDQyLjk4MSA5NiA5Ni00Mi45ODEgOTYtOTYgOTZ6TTEyNy41NTkgODIuMzA0bDYzLjM5OSA2My4zOTljLTE4LjU1OSAxMC45ODctMzQuMjUyIDI2LjY3LTQ1LjI1NSA0NS4yNTVsLTYzLjM5OS02My4zOTlhMjE4LjM3MiAyMTguMzcyIDAgMCAxIDQ1LjI1NS00NS4yNTV6TTgyLjMwNCAzODQuNDQxbDYzLjM5OS02My4zOTljMTAuOTg3IDE4LjU1OSAyNi42NyAzNC4yNTIgNDUuMjU1IDQ1LjI1NWwtNjMuMzk5IDYzLjM5OWEyMTguMzk2IDIxOC4zOTYgMCAwIDEtNDUuMjU1LTQ1LjI1NXptMzAyLjEzNyA0NS4yNTVsLTYzLjM5OS02My4zOTljMTguNTU5LTEwLjk4NyAzNC4yNTItMjYuNjcgNDUuMjU1LTQ1LjI1NWw2My4zOTkgNjMuMzk5YTIxOC40MDMgMjE4LjQwMyAwIDAgMS00NS4yNTUgNDUuMjU1elwiXVxufTtcbnZhciBmYUxpZ2h0YnVsYiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsaWdodGJ1bGInLFxuICBpY29uOiBbMzUyLCA1MTIsIFtdLCBcImYwZWJcIiwgXCJNOTYuMDYgNDU0LjM1Yy4wMSA2LjI5IDEuODcgMTIuNDUgNS4zNiAxNy42OWwxNy4wOSAyNS42OWEzMS45OSAzMS45OSAwIDAgMCAyNi42NCAxNC4yOGg2MS43MWEzMS45OSAzMS45OSAwIDAgMCAyNi42NC0xNC4yOGwxNy4wOS0yNS42OWEzMS45ODkgMzEuOTg5IDAgMCAwIDUuMzYtMTcuNjlsLjA0LTM4LjM1SDk2LjAxbC4wNSAzOC4zNXpNMCAxNzZjMCA0NC4zNyAxNi40NSA4NC44NSA0My41NiAxMTUuNzggMTYuNTIgMTguODUgNDIuMzYgNTguMjMgNTIuMjEgOTEuNDUuMDQuMjYuMDcuNTIuMTEuNzhoMTYwLjI0Yy4wNC0uMjYuMDctLjUxLjExLS43OCA5Ljg1LTMzLjIyIDM1LjY5LTcyLjYgNTIuMjEtOTEuNDVDMzM1LjU1IDI2MC44NSAzNTIgMjIwLjM3IDM1MiAxNzYgMzUyIDc4LjYxIDI3Mi45MS0uMyAxNzUuNDUgMCA3My40NC4zMSAwIDgyLjk3IDAgMTc2em0xNzYtODBjLTQ0LjExIDAtODAgMzUuODktODAgODAgMCA4Ljg0LTcuMTYgMTYtMTYgMTZzLTE2LTcuMTYtMTYtMTZjMC02MS43NiA1MC4yNC0xMTIgMTEyLTExMiA4Ljg0IDAgMTYgNy4xNiAxNiAxNnMtNy4xNiAxNi0xNiAxNnpcIl1cbn07XG52YXIgZmFMaW5rID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xpbmsnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwYzFcIiwgXCJNMzI2LjYxMiAxODUuMzkxYzU5Ljc0NyA1OS44MDkgNTguOTI3IDE1NS42OTguMzYgMjE0LjU5LS4xMS4xMi0uMjQuMjUtLjM2LjM3bC02Ny4yIDY3LjJjLTU5LjI3IDU5LjI3LTE1NS42OTkgNTkuMjYyLTIxNC45NiAwLTU5LjI3LTU5LjI2LTU5LjI3LTE1NS43IDAtMjE0Ljk2bDM3LjEwNi0zNy4xMDZjOS44NC05Ljg0IDI2Ljc4Ni0zLjMgMjcuMjk0IDEwLjYwNi42NDggMTcuNzIyIDMuODI2IDM1LjUyNyA5LjY5IDUyLjcyMSAxLjk4NiA1LjgyMi41NjcgMTIuMjYyLTMuNzgzIDE2LjYxMmwtMTMuMDg3IDEzLjA4N2MtMjguMDI2IDI4LjAyNi0yOC45MDUgNzMuNjYtMS4xNTUgMTAxLjk2IDI4LjAyNCAyOC41NzkgNzQuMDg2IDI4Ljc0OSAxMDIuMzI1LjUxbDY3LjItNjcuMTljMjguMTkxLTI4LjE5MSAyOC4wNzMtNzMuNzU3IDAtMTAxLjgzLTMuNzAxLTMuNjk0LTcuNDI5LTYuNTY0LTEwLjM0MS04LjU2OWExNi4wMzcgMTYuMDM3IDAgMCAxLTYuOTQ3LTEyLjYwNmMtLjM5Ni0xMC41NjcgMy4zNDgtMjEuNDU2IDExLjY5OC0yOS44MDZsMjEuMDU0LTIxLjA1NWM1LjUyMS01LjUyMSAxNC4xODItNi4xOTkgMjAuNTg0LTEuNzMxYTE1Mi40ODIgMTUyLjQ4MiAwIDAgMSAyMC41MjIgMTcuMTk3ek00NjcuNTQ3IDQ0LjQ0OWMtNTkuMjYxLTU5LjI2Mi0xNTUuNjktNTkuMjctMjE0Ljk2IDBsLTY3LjIgNjcuMmMtLjEyLjEyLS4yNS4yNS0uMzYuMzctNTguNTY2IDU4Ljg5Mi01OS4zODcgMTU0Ljc4MS4zNiAyMTQuNTlhMTUyLjQ1NCAxNTIuNDU0IDAgMCAwIDIwLjUyMSAxNy4xOTZjNi40MDIgNC40NjggMTUuMDY0IDMuNzg5IDIwLjU4NC0xLjczMWwyMS4wNTQtMjEuMDU1YzguMzUtOC4zNSAxMi4wOTQtMTkuMjM5IDExLjY5OC0yOS44MDZhMTYuMDM3IDE2LjAzNyAwIDAgMC02Ljk0Ny0xMi42MDZjLTIuOTEyLTIuMDA1LTYuNjQtNC44NzUtMTAuMzQxLTguNTY5LTI4LjA3My0yOC4wNzMtMjguMTkxLTczLjYzOSAwLTEwMS44M2w2Ny4yLTY3LjE5YzI4LjIzOS0yOC4yMzkgNzQuMy0yOC4wNjkgMTAyLjMyNS41MSAyNy43NSAyOC4zIDI2Ljg3MiA3My45MzQtMS4xNTUgMTAxLjk2bC0xMy4wODcgMTMuMDg3Yy00LjM1IDQuMzUtNS43NjkgMTAuNzktMy43ODMgMTYuNjEyIDUuODY0IDE3LjE5NCA5LjA0MiAzNC45OTkgOS42OSA1Mi43MjEuNTA5IDEzLjkwNiAxNy40NTQgMjAuNDQ2IDI3LjI5NCAxMC42MDZsMzcuMTA2LTM3LjEwNmM1OS4yNzEtNTkuMjU5IDU5LjI3MS0xNTUuNjk5LjAwMS0yMTQuOTU5elwiXVxufTtcbnZhciBmYUxpcmFTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xpcmEtc2lnbicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjE5NVwiLCBcIk0zNzEuOTk0IDI1NmgtNDguMDE5QzMxNy42NCAyNTYgMzEyIDI2MC45MTIgMzEyIDI2Ny4yNDYgMzEyIDM2OCAyMzAuMTc5IDQxNiAxNDQgNDE2VjI1Ni43ODFsMTM0LjYwMy0yOS45MTJBMTIgMTIgMCAwIDAgMjg4IDIxNS4xNTV2LTQwLjk3NmMwLTcuNjc3LTcuMTA5LTEzLjM4LTE0LjYwMy0xMS43MTRMMTQ0IDE5MS4yMTlWMTYwLjc4bDEzNC42MDMtMjkuOTEyQTEyIDEyIDAgMCAwIDI4OCAxMTkuMTU0Vjc4LjE3OWMwLTcuNjc3LTcuMTA5LTEzLjM4LTE0LjYwMy0xMS43MTRMMTQ0IDk1LjIxOVY0NGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDc2Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjY4Ljk5N0w5LjM5NyAxMjUuMTMxQTEyIDEyIDAgMCAwIDAgMTM2Ljg0NXY0MC45NzZjMCA3LjY3NyA3LjEwOSAxMy4zOCAxNC42MDMgMTEuNzE0TDY0IDE3OC41NTh2MzAuNDM5TDkuMzk3IDIyMS4xMzFBMTIgMTIgMCAwIDAgMCAyMzIuODQ1djQwLjk3NmMwIDcuNjc3IDcuMTA5IDEzLjM4IDE0LjYwMyAxMS43MTRMNjQgMjc0LjU1OFY0NjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg3OS41ODNjMTM0LjA5MSAwIDIyMy4yNTUtNzcuODM0IDIyOC40MDgtMjExLjU5Mi4yNjEtNi43ODItNS4yMTEtMTIuNDA4LTExLjk5Ny0xMi40MDh6XCJdXG59O1xudmFyIGZhTGlzdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsaXN0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDNhXCIsIFwiTTgwIDM2OEgxNmExNiAxNiAwIDAgMC0xNiAxNnY2NGExNiAxNiAwIDAgMCAxNiAxNmg2NGExNiAxNiAwIDAgMCAxNi0xNnYtNjRhMTYgMTYgMCAwIDAtMTYtMTZ6bTAtMzIwSDE2QTE2IDE2IDAgMCAwIDAgNjR2NjRhMTYgMTYgMCAwIDAgMTYgMTZoNjRhMTYgMTYgMCAwIDAgMTYtMTZWNjRhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgMTYwSDE2YTE2IDE2IDAgMCAwLTE2IDE2djY0YTE2IDE2IDAgMCAwIDE2IDE2aDY0YTE2IDE2IDAgMCAwIDE2LTE2di02NGExNiAxNiAwIDAgMC0xNi0xNnptNDE2IDE3NkgxNzZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzIwYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0zMjBIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNlY4MGExNiAxNiAwIDAgMC0xNi0xNnptMCAxNjBIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJdXG59O1xudmFyIGZhTGlzdEFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsaXN0LWFsdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAyMlwiLCBcIk00NjQgNDgwSDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjgwYzAtMjYuNTEgMjEuNDktNDggNDgtNDhoNDE2YzI2LjUxIDAgNDggMjEuNDkgNDggNDh2MzUyYzAgMjYuNTEtMjEuNDkgNDgtNDggNDh6TTEyOCAxMjBjLTIyLjA5MSAwLTQwIDE3LjkwOS00MCA0MHMxNy45MDkgNDAgNDAgNDAgNDAtMTcuOTA5IDQwLTQwLTE3LjkwOS00MC00MC00MHptMCA5NmMtMjIuMDkxIDAtNDAgMTcuOTA5LTQwIDQwczE3LjkwOSA0MCA0MCA0MCA0MC0xNy45MDkgNDAtNDAtMTcuOTA5LTQwLTQwLTQwem0wIDk2Yy0yMi4wOTEgMC00MCAxNy45MDktNDAgNDBzMTcuOTA5IDQwIDQwIDQwIDQwLTE3LjkwOSA0MC00MC0xNy45MDktNDAtNDAtNDB6bTI4OC0xMzZ2LTMyYzAtNi42MjctNS4zNzMtMTItMTItMTJIMjA0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjMyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjAwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTAgOTZ2LTMyYzAtNi42MjctNS4zNzMtMTItMTItMTJIMjA0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjMyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjAwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTAgOTZ2LTMyYzAtNi42MjctNS4zNzMtMTItMTItMTJIMjA0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjMyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjAwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6XCJdXG59O1xudmFyIGZhTGlzdE9sID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xpc3Qtb2wnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwY2JcIiwgXCJNNjEuNzcgNDAxbDE3LjUtMjAuMTVhMTkuOTIgMTkuOTIgMCAwIDAgNS4wNy0xNC4xOXYtMy4zMUM4NC4zNCAzNTYgODAuNSAzNTIgNzMgMzUySDE2YTggOCAwIDAgMC04IDh2MTZhOCA4IDAgMCAwIDggOGgyMi44M2ExNTcuNDEgMTU3LjQxIDAgMCAwLTExIDEyLjMxbC01LjYxIDdjLTQgNS4wNy01LjI1IDEwLjEzLTIuOCAxNC44OGwxLjA1IDEuOTNjMyA1Ljc2IDYuMjkgNy44OCAxMi4yNSA3Ljg4aDQuNzNjMTAuMzMgMCAxNS45NCAyLjQ0IDE1Ljk0IDkuMDkgMCA0LjcyLTQuMiA4LjIyLTE0LjM2IDguMjJhNDEuNTQgNDEuNTQgMCAwIDEtMTUuNDctMy4xMmMtNi40OS0zLjg4LTExLjc0LTMuNS0xNS42IDMuMTJsLTUuNTkgOS4zMWMtMy43MiA2LjEzLTMuMTkgMTEuNzIgMi42MyAxNS45NCA3LjcxIDQuNjkgMjAuMzggOS40NCAzNyA5LjQ0IDM0LjE2IDAgNDguNS0yMi43NSA0OC41LTQ0LjEyLS4wMy0xNC4zOC05LjEyLTI5Ljc2LTI4LjczLTM0Ljg4ek00OTYgMjI0SDE3NmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMjBhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTE2MEgxNzZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzIwYTE2IDE2IDAgMCAwIDE2LTE2VjgwYTE2IDE2IDAgMCAwLTE2LTE2em0wIDMyMEgxNzZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzIwYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNMTYgMTYwaDY0YTggOCAwIDAgMCA4LTh2LTE2YTggOCAwIDAgMC04LThINjRWNDBhOCA4IDAgMCAwLTgtOEgzMmE4IDggMCAwIDAtNy4xNCA0LjQybC04IDE2QTggOCAwIDAgMCAyNCA2NGg4djY0SDE2YTggOCAwIDAgMC04IDh2MTZhOCA4IDAgMCAwIDggOHptLTMuOTEgMTYwSDgwYTggOCAwIDAgMCA4LTh2LTE2YTggOCAwIDAgMC04LThINDEuMzJjMy4yOS0xMC4yOSA0OC4zNC0xOC42OCA0OC4zNC01Ni40NCAwLTI5LjA2LTI1LTM5LjU2LTQ0LjQ3LTM5LjU2LTIxLjM2IDAtMzMuOCAxMC00MC40NiAxOC43NS00LjM3IDUuNTktMyAxMC44NCAyLjggMTUuMzdsOC41OCA2Ljg4YzUuNjEgNC41NiAxMSAyLjQ3IDE2LjEyLTIuNDRhMTMuNDQgMTMuNDQgMCAwIDEgOS40Ni0zLjg0YzMuMzMgMCA5LjI4IDEuNTYgOS4yOCA4Ljc1QzUxIDI0OC4xOSAwIDI1Ny4zMSAwIDMwNC41OXY0QzAgMzE2IDUuMDggMzIwIDEyLjA5IDMyMHpcIl1cbn07XG52YXIgZmFMaXN0VWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGlzdC11bCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjBjYVwiLCBcIk00OCA0OGE0OCA0OCAwIDEgMCA0OCA0OCA0OCA0OCAwIDAgMC00OC00OHptMCAxNjBhNDggNDggMCAxIDAgNDggNDggNDggNDggMCAwIDAtNDgtNDh6bTAgMTYwYTQ4IDQ4IDAgMSAwIDQ4IDQ4IDQ4IDQ4IDAgMCAwLTQ4LTQ4em00NDggMTZIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAtMzIwSDE3NmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMjBhMTYgMTYgMCAwIDAgMTYtMTZWODBhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgMTYwSDE3NmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMjBhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwiXVxufTtcbnZhciBmYUxvY2F0aW9uQXJyb3cgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbG9jYXRpb24tYXJyb3cnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxMjRcIiwgXCJNNDQ0LjUyIDMuNTJMMjguNzQgMTk1LjQyYy00Ny45NyAyMi4zOS0zMS45OCA5Mi43NSAxOS4xOSA5Mi43NWgxNzUuOTF2MTc1LjkxYzAgNTEuMTcgNzAuMzYgNjcuMTcgOTIuNzUgMTkuMTlsMTkxLjktNDE1Ljc4YzE1Ljk5LTM4LjM5LTI1LjU5LTc5Ljk3LTYzLjk3LTYzLjk3elwiXVxufTtcbnZhciBmYUxvY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbG9jaycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjAyM1wiLCBcIk00MDAgMjI0aC0yNHYtNzJDMzc2IDY4LjIgMzA3LjggMCAyMjQgMFM3MiA2OC4yIDcyIDE1MnY3Mkg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MTkyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYyNzJjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS0xMDQgMEgxNTJ2LTcyYzAtMzkuNyAzMi4zLTcyIDcyLTcyczcyIDMyLjMgNzIgNzJ2NzJ6XCJdXG59O1xudmFyIGZhTG9ja09wZW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbG9jay1vcGVuJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmM2MxXCIsIFwiTTQyMy41IDBDMzM5LjUuMyAyNzIgNjkuNSAyNzIgMTUzLjVWMjI0SDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OHYxOTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI3MmMwLTI2LjUtMjEuNS00OC00OC00OGgtNDh2LTcxLjFjMC0zOS42IDMxLjctNzIuNSA3MS4zLTcyLjkgNDAtLjQgNzIuNyAzMi4xIDcyLjcgNzJ2ODBjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjR2LTgwQzU3NiA2OCA1MDcuNS0uMyA0MjMuNSAwelwiXVxufTtcbnZhciBmYUxvbmdBcnJvd0FsdERvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbG9uZy1hcnJvdy1hbHQtZG93bicsXG4gIGljb246IFsyNTYsIDUxMiwgW10sIFwiZjMwOVwiLCBcIk0xNjggMzQ1Ljk0MVY0NGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC01NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYzMDEuOTQxSDQxLjk0MWMtMjEuMzgyIDAtMzIuMDkgMjUuODUxLTE2Ljk3MSA0MC45NzFsODYuMDU5IDg2LjA1OWM5LjM3MyA5LjM3MyAyNC41NjkgOS4zNzMgMzMuOTQxIDBsODYuMDU5LTg2LjA1OWMxNS4xMTktMTUuMTE5IDQuNDExLTQwLjk3MS0xNi45NzEtNDAuOTcxSDE2OHpcIl1cbn07XG52YXIgZmFMb25nQXJyb3dBbHRMZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xvbmctYXJyb3ctYWx0LWxlZnQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYzMGFcIiwgXCJNMTM0LjA1OSAyOTZINDM2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTU2YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTM0LjA1OXYtNDYuMDU5YzAtMjEuMzgyLTI1Ljg1MS0zMi4wOS00MC45NzEtMTYuOTcxTDcuMDI5IDIzOS4wMjljLTkuMzczIDkuMzczLTkuMzczIDI0LjU2OSAwIDMzLjk0MWw4Ni4wNTkgODYuMDU5YzE1LjExOSAxNS4xMTkgNDAuOTcxIDQuNDExIDQwLjk3MS0xNi45NzFWMjk2elwiXVxufTtcbnZhciBmYUxvbmdBcnJvd0FsdFJpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xvbmctYXJyb3ctYWx0LXJpZ2h0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMzBiXCIsIFwiTTMxMy45NDEgMjE2SDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjU2YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMzAxLjk0MXY0Ni4wNTljMCAyMS4zODIgMjUuODUxIDMyLjA5IDQwLjk3MSAxNi45NzFsODYuMDU5LTg2LjA1OWM5LjM3My05LjM3MyA5LjM3My0yNC41NjkgMC0zMy45NDFsLTg2LjA1OS04Ni4wNTljLTE1LjExOS0xNS4xMTktNDAuOTcxLTQuNDExLTQwLjk3MSAxNi45NzFWMjE2elwiXVxufTtcbnZhciBmYUxvbmdBcnJvd0FsdFVwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xvbmctYXJyb3ctYWx0LXVwJyxcbiAgaWNvbjogWzI1NiwgNTEyLCBbXSwgXCJmMzBjXCIsIFwiTTg4IDE2Ni4wNTlWNDY4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNTZjNi42MjcgMCAxMi01LjM3MyAxMi0xMlYxNjYuMDU5aDQ2LjA1OWMyMS4zODIgMCAzMi4wOS0yNS44NTEgMTYuOTcxLTQwLjk3MWwtODYuMDU5LTg2LjA1OWMtOS4zNzMtOS4zNzMtMjQuNTY5LTkuMzczLTMzLjk0MSAwbC04Ni4wNTkgODYuMDU5Yy0xNS4xMTkgMTUuMTE5LTQuNDExIDQwLjk3MSAxNi45NzEgNDAuOTcxSDg4elwiXVxufTtcbnZhciBmYUxvd1Zpc2lvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsb3ctdmlzaW9uJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMmE4XCIsIFwiTTU2OS4zNDQgMjMxLjYzMUM1MTIuOTYgMTM1Ljk0OSA0MDcuODEgNzIgMjg4IDcyYy0yOC40NjggMC01Ni4xMDIgMy42MTktODIuNDUxIDEwLjQwOUwxNTIuNzc4IDEwLjI0Yy03LjYwMS0xMC44NTgtMjIuNTY0LTEzLjUtMzMuNDIzLTUuOWwtMTMuMTE0IDkuMTc4Yy0xMC44NiA3LjYwMS0xMy41MDIgMjIuNTY2LTUuOSAzMy40MjZsNDMuMTMxIDU4LjM5NUM4OS40NDkgMTMxLjczIDQwLjIyOCAxNzQuNjgzIDYuNjgyIDIzMS41ODFjLS4wMS4wMTctLjAyMy4wMzMtLjAzNC4wNS04Ljc2NSAxNC44NzUtOC45NjQgMzMuNTI4IDAgNDguNzM5IDM4LjUgNjUuMzMyIDk5Ljc0MiAxMTUuODYyIDE3Mi44NTkgMTQxLjM0OUw1NS4zMTYgMjQ0LjMwMkEyNzIuMTk0IDI3Mi4xOTQgMCAwIDEgODMuNjEgMjA4LjM5bDExOS40IDE3MC41OGguMDFsNDAuNjMgNTguMDRhMzMwLjA1NSAzMzAuMDU1IDAgMCAwIDc4Ljk0IDEuMTdsLTE4OS45OC0yNzEuNGEyNzcuNjI4IDI3Ny42MjggMCAwIDEgMzguNzc3LTIxLjU2M2wyNTEuODM2IDM1Ni41NDRjNy42MDEgMTAuODU4IDIyLjU2NCAxMy40OTkgMzMuNDIzIDUuOWwxMy4xMTQtOS4xNzhjMTAuODYtNy42MDEgMTMuNTAyLTIyLjU2NyA1LjktMzMuNDI2bC00My4xMi01OC4zNzctLjAwNy0uMDA5YzU3LjE2MS0yNy45NzggMTA0LjgzNS03Mi4wNCAxMzYuODEtMTI2LjMwMWE0Ny45MzggNDcuOTM4IDAgMCAwIC4wMDEtNDguNzM5ek0zOTAuMDI2IDM0NS45NGwtMTkuMDY2LTI3LjIzYzI0LjY4Mi0zMi41NjcgMjcuNzExLTc2LjM1MyA4LjgtMTExLjY4di4wM2MwIDIzLjY1LTE5LjE3IDQyLjgyLTQyLjgyIDQyLjgyLTIzLjgyOCAwLTQyLjgyLTE5LjM0OS00Mi44Mi00Mi44MiAwLTIzLjY1IDE5LjE3LTQyLjgyIDQyLjgyLTQyLjgyaC4wM2MtMjQuNzUtMTMuMjQ5LTUzLjUyMi0xNS42NDMtNzkuNTEtNy42OGwtMTkuMDY4LTI3LjIzN0MyNTMuNzU4IDEyMy4zMDYgMjcwLjQ4OCAxMjAgMjg4IDEyMGM3NS4xNjIgMCAxMzYgNjAuODI2IDEzNiAxMzYgMCAzNC41MDQtMTIuODMzIDY1Ljk3NS0zMy45NzQgODkuOTR6XCJdXG59O1xudmFyIGZhTHVnZ2FnZUNhcnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbHVnZ2FnZS1jYXJ0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTlkXCIsIFwiTTIyNCAzMjBoMzJWOTZoLTMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjE2MGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyem0zNTItMzJWMTI4YzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTMydjIyNGgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyem00OCA5NkgxMjhWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiAwIDAgNy4xNiAwIDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4djM2OGMwIDguODQgNy4xNiAxNiAxNiAxNmg4Mi45NGMtMS43OSA1LjAzLTIuOTQgMTAuMzYtMi45NCAxNiAwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4czQ4LTIxLjQ5IDQ4LTQ4YzAtNS42NC0xLjE1LTEwLjk3LTIuOTQtMTZoMTk3Ljg4Yy0xLjc5IDUuMDMtMi45NCAxMC4zNi0yLjk0IDE2IDAgMjYuNTEgMjEuNDkgNDggNDggNDhzNDgtMjEuNDkgNDgtNDhjMC01LjY0LTEuMTUtMTAuOTctMi45NC0xNkg2MjRjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2ek00ODAgOTZWNDhjMC0yNi41MS0yMS40OS00OC00OC00OGgtOTZjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjcyaDE5MlY5NnptLTQ4IDBoLTk2VjQ4aDk2djQ4elwiXVxufTtcbnZhciBmYUx1bmdzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2x1bmdzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNjA0XCIsIFwiTTYzNi4xMSAzOTAuMTVDNjE0LjQ0IDMwOC44NSA1ODAuMDcgMjMxIDUzNC4xIDE1OS4xMyA1MTEuOTggMTI0LjU2IDQ5OC4wMyA5NiA0NTQuMDUgOTYgNDE1LjM2IDk2IDM4NCAxMjUuNDIgMzg0IDE2MS43MXY2MC4xMWwtMzIuODgtMjEuOTJhMTUuOTk2IDE1Ljk5NiAwIDAgMS03LjEyLTEzLjMxVjE2YzAtOC44NC03LjE2LTE2LTE2LTE2aC0xNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTcwLjU5YzAgNS4zNS0yLjY3IDEwLjM0LTcuMTIgMTMuMzFMMjU2IDIyMS44MnYtNjAuMTFDMjU2IDEyNS40MiAyMjQuNjQgOTYgMTg1Ljk1IDk2Yy00My45OCAwLTU3LjkzIDI4LjU2LTgwLjA1IDYzLjEzQzU5LjkzIDIzMSAyNS41NiAzMDguODUgMy44OSAzOTAuMTUgMS4zIDM5OS44NCAwIDQwOS43OSAwIDQxOS43OGMwIDYxLjIzIDYyLjQ4IDEwNS40NCAxMjUuMjQgODguNjJsNTkuNS0xNS45NWM0Mi4xOC0xMS4zIDcxLjI2LTQ3LjQ3IDcxLjI2LTg4LjYydi04Ny40OWwtODUuODQgNTcuMjNhNy45OTIgNy45OTIgMCAwIDEtMTEuMDktMi4yMmwtOC44OC0xMy4zMWE3Ljk5MiA3Ljk5MiAwIDAgMSAyLjIyLTExLjA5TDMyMCAyMzUuMjNsMTY3LjU5IDExMS43MmE3Ljk5NCA3Ljk5NCAwIDAgMSAyLjIyIDExLjA5bC04Ljg4IDEzLjMxYTcuOTk0IDcuOTk0IDAgMCAxLTExLjA5IDIuMjJMMzg0IDMxNi4zNHY4Ny40OWMwIDQxLjE1IDI5LjA4IDc3LjMxIDcxLjI2IDg4LjYybDU5LjUgMTUuOTVDNTc3LjUyIDUyNS4yMiA2NDAgNDgxLjAxIDY0MCA0MTkuNzhjMC05Ljk5LTEuMy0xOS45NC0zLjg5LTI5LjYzelwiXVxufTtcbnZhciBmYUx1bmdzVmlydXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbHVuZ3MtdmlydXMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImUwNjdcIiwgXCJNMzQ0LDE1MC42OFYxNkExNiwxNiwwLDAsMCwzMjgsMEgzMTJhMTYsMTYsMCwwLDAtMTYsMTZWMTUwLjY4YTQ2LjQ1LDQ2LjQ1LDAsMCwxLDQ4LDBaTTE5NS41NCw0NDQuNDZhNDguMDYsNDguMDYsMCwwLDEsMC02Ny44OGw4LjU4LTguNThIMTkyYTQ4LDQ4LDAsMCwxLDAtOTZoMTIuMTJsLTguNTgtOC41N2E0OCw0OCwwLDAsMSw2MC40Ni03NFYxNjEuNzVDMjU2LDEyNS4zOCwyMjQuNjIsOTYsMTg2LDk2Yy00NCwwLTU4LDI4LjUtODAuMTIsNjMuMTNhODE5LjUyLDgxOS41MiwwLDAsMC0xMDIsMjMxQTExMy4xNiwxMTMuMTYsMCwwLDAsMCw0MTkuNzVDMCw0ODEsNjIuNSw1MjUuMjYsMTI1LjI1LDUwOC4zOGw1OS41LTE1Ljg3YTk4LjUxLDk4LjUxLDAsMCwwLDUyLjUtMzQuNzUsNDYuNDksNDYuNDksMCwwLDEtNDEuNzEtMTMuM1ptMjI2LjI5LTIyLjYzYTE2LDE2LDAsMCwwLDAtMjIuNjJsLTguNTgtOC41OEMzOTMuMDksMzcwLjQ3LDQwNy4zNywzMzYsNDM1Ljg4LDMzNkg0NDhhMTYsMTYsMCwwLDAsMC0zMkg0MzUuODhjLTI4LjUxLDAtNDIuNzktMzQuNDctMjIuNjMtNTQuNjJsOC41OC04LjU4YTE2LDE2LDAsMCwwLTIyLjYzLTIyLjYzbC04LjU3LDguNThDMzcwLjQ3LDI0Ni45MSwzMzYsMjMyLjYzLDMzNiwyMDQuMTJWMTkyYTE2LDE2LDAsMCwwLTMyLDB2MTIuMTJjMCwyOC41MS0zNC40Nyw0Mi43OS01NC42MywyMi42M2wtOC41Ny04LjU4YTE2LDE2LDAsMCwwLTIyLjYzLDIyLjYzbDguNTgsOC41OGMyMC4xNiwyMC4xNSw1Ljg4LDU0LjYyLTIyLjYzLDU0LjYySDE5MmExNiwxNiwwLDAsMCwwLDMyaDEyLjEyYzI4LjUxLDAsNDIuNzksMzQuNDcsMjIuNjMsNTQuNjNsLTguNTgsOC41OGExNiwxNiwwLDEsMCwyMi42MywyMi42Mmw4LjU3LTguNTdDMjY5LjUzLDM5My4xLDMwNCw0MDcuMzgsMzA0LDQzNS44OFY0NDhhMTYsMTYsMCwwLDAsMzIsMFY0MzUuODhjMC0yOC41LDM0LjQ3LTQyLjc4LDU0LjYzLTIyLjYybDguNTcsOC41N2ExNiwxNiwwLDAsMCwyMi42MywwWk0yODgsMzA0YTE2LDE2LDAsMSwxLDE2LTE2QTE2LDE2LDAsMCwxLDI4OCwzMDRabTY0LDY0YTE2LDE2LDAsMSwxLDE2LTE2QTE2LDE2LDAsMCwxLDM1MiwzNjhabTI4NC4xMiwyMi4xM2E4MTkuNTIsODE5LjUyLDAsMCwwLTEwMi0yMzFDNTEyLDEyNC41LDQ5OCw5Niw0NTQsOTZjLTM4LjYyLDAtNzAsMjkuMzgtNzAsNjUuNzV2MjcuNzJhNDgsNDgsMCwwLDEsNjAuNDYsNzRMNDM1Ljg4LDI3Mkg0NDhhNDgsNDgsMCwwLDEsMCw5Nkg0MzUuODhsOC41OCw4LjU4YTQ3LjcsNDcuNywwLDAsMS00MS43MSw4MS4xOCw5OC41MSw5OC41MSwwLDAsMCw1Mi41LDM0Ljc1bDU5LjUsMTUuODdDNTc3LjUsNTI1LjI2LDY0MCw0ODEsNjQwLDQxOS43NUExMTMuMTYsMTEzLjE2LDAsMCwwLDYzNi4xMiwzOTAuMTNaXCJdXG59O1xudmFyIGZhTWFnaWMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFnaWMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwZDBcIiwgXCJNMjI0IDk2bDE2LTMyIDMyLTE2LTMyLTE2LTE2LTMyLTE2IDMyLTMyIDE2IDMyIDE2IDE2IDMyek04MCAxNjBsMjYuNjYtNTMuMzNMMTYwIDgwbC01My4zNC0yNi42N0w4MCAwIDUzLjM0IDUzLjMzIDAgODBsNTMuMzQgMjYuNjdMODAgMTYwem0zNTIgMTI4bC0yNi42NiA1My4zM0wzNTIgMzY4bDUzLjM0IDI2LjY3TDQzMiA0NDhsMjYuNjYtNTMuMzNMNTEyIDM2OGwtNTMuMzQtMjYuNjdMNDMyIDI4OHptNzAuNjItMTkzLjc3TDQxNy43NyA5LjM4QzQxMS41MyAzLjEyIDQwMy4zNCAwIDM5NS4xNSAwYy04LjE5IDAtMTYuMzggMy4xMi0yMi42MyA5LjM4TDkuMzggMzcyLjUyYy0xMi41IDEyLjUtMTIuNSAzMi43NiAwIDQ1LjI1bDg0Ljg1IDg0Ljg1YzYuMjUgNi4yNSAxNC40NCA5LjM3IDIyLjYyIDkuMzcgOC4xOSAwIDE2LjM4LTMuMTIgMjIuNjMtOS4zN2wzNjMuMTQtMzYzLjE1YzEyLjUtMTIuNDggMTIuNS0zMi43NSAwLTQ1LjI0ek0zNTkuNDUgMjAzLjQ2bC01MC45MS01MC45MSA4Ni42LTg2LjYgNTAuOTEgNTAuOTEtODYuNiA4Ni42elwiXVxufTtcbnZhciBmYU1hZ25ldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYWduZXQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwNzZcIiwgXCJNMTY0LjA3IDE0OC4xSDEyYTEyIDEyIDAgMCAxLTEyLTEydi04MGEzNiAzNiAwIDAgMSAzNi0zNmgxMDRhMzYgMzYgMCAwIDEgMzYgMzZ2ODBhMTEuODkgMTEuODkgMCAwIDEtMTEuOTMgMTJ6bTM0Ny45My0xMlY1NmEzNiAzNiAwIDAgMC0zNi0zNkgzNzJhMzYgMzYgMCAwIDAtMzYgMzZ2ODBhMTIgMTIgMCAwIDAgMTIgMTJoMTUyYTExLjg5IDExLjg5IDAgMCAwIDEyLTExLjl6bS0xNjQgNDRhMTIgMTIgMCAwIDAtMTIgMTJ2NTJjMCAxMjguMS0xNjAgMTI3LjktMTYwIDB2LTUyYTEyIDEyIDAgMCAwLTEyLTEySDEyLjFhMTIgMTIgMCAwIDAtMTIgMTIuMWMuMSAyMS40LjYgNDAuMyAwIDUzLjMgMCAxNTAuNiAxMzYuMTcgMjQ2LjYgMjU2Ljc1IDI0Ni42czI1NS05NiAyNTUtMjQ2LjdjLS42LTEyLjgtLjItMzMgMC01My4yYTEyIDEyIDAgMCAwLTEyLTEyLjF6XCJdXG59O1xudmFyIGZhTWFpbEJ1bGsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFpbC1idWxrJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNjc0XCIsIFwiTTE2MCA0NDhjLTI1LjYgMC01MS4yLTIyLjQtNjQtMzItNjQtNDQuOC04My4yLTYwLjgtOTYtNzAuNFY0ODBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgyNTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYzNDUuNmMtMTIuOCA5LjYtMzIgMjUuNi05NiA3MC40LTEyLjggOS42LTM4LjQgMzItNjQgMzJ6bTEyOC0xOTJIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTZjMjUuNiAxOS4yIDIyLjQgMTkuMiAxMTUuMiA4Ni40IDkuNiA2LjQgMjguOCAyNS42IDQ0LjggMjUuNnMzNS4yLTE5LjIgNDQuOC0yMi40YzkyLjgtNjcuMiA4OS42LTY3LjIgMTE1LjItODYuNFYyODhjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMjU2LTk2SDIyNGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmg5NmMzMy4yMSAwIDYwLjU5IDI1LjQyIDYzLjcxIDU3LjgybC4yOS0uMjJWNDE2aDE5MmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjE5MmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0tMzIgMTI4aC02NHYtNjRoNjR2NjR6bS0zNTItOTZjMC0zNS4yOSAyOC43MS02NCA2NC02NGgyMjRWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkg5NkM3OC4zMyAwIDY0IDE0LjMzIDY0IDMydjE5Mmg5NnYtMzJ6XCJdXG59O1xudmFyIGZhTWFsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYWxlJyxcbiAgaWNvbjogWzE5MiwgNTEyLCBbXSwgXCJmMTgzXCIsIFwiTTk2IDBjMzUuMzQ2IDAgNjQgMjguNjU0IDY0IDY0cy0yOC42NTQgNjQtNjQgNjQtNjQtMjguNjU0LTY0LTY0UzYwLjY1NCAwIDk2IDBtNDggMTQ0aC0xMS4zNmMtMjIuNzExIDEwLjQ0My00OS41OSAxMC44OTQtNzMuMjggMEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHYxMzZjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDE2djEzNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoNjRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjM1MmgxNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTkyYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6XCJdXG59O1xudmFyIGZhTWFwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hcCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjI3OVwiLCBcIk0wIDExNy42NnYzNDYuMzJjMCAxMS4zMiAxMS40MyAxOS4wNiAyMS45NCAxNC44NkwxNjAgNDE2VjMyTDIwLjEyIDg3Ljk1QTMyLjAwNiAzMi4wMDYgMCAwIDAgMCAxMTcuNjZ6TTE5MiA0MTZsMTkyIDY0Vjk2TDE5MiAzMnYzODR6TTU1NC4wNiAzMy4xNkw0MTYgOTZ2Mzg0bDEzOS44OC01NS45NUEzMS45OTYgMzEuOTk2IDAgMCAwIDU3NiAzOTQuMzRWNDguMDJjMC0xMS4zMi0xMS40My0xOS4wNi0yMS45NC0xNC44NnpcIl1cbn07XG52YXIgZmFNYXBNYXJrZWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFwLW1hcmtlZCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjU5ZlwiLCBcIk0yODggMGMtNjkuNTkgMC0xMjYgNTYuNDEtMTI2IDEyNiAwIDU2LjI2IDgyLjM1IDE1OC44IDExMy45IDE5Ni4wMiA2LjM5IDcuNTQgMTcuODIgNy41NCAyNC4yIDBDMzMxLjY1IDI4NC44IDQxNCAxODIuMjYgNDE0IDEyNiA0MTQgNTYuNDEgMzU3LjU5IDAgMjg4IDB6TTIwLjEyIDIxNS45NUEzMi4wMDYgMzIuMDA2IDAgMCAwIDAgMjQ1LjY2djI1MC4zMmMwIDExLjMyIDExLjQzIDE5LjA2IDIxLjk0IDE0Ljg2TDE2MCA0NDhWMjE0LjkyYy04Ljg0LTE1Ljk4LTE2LjA3LTMxLjU0LTIxLjI1LTQ2LjQyTDIwLjEyIDIxNS45NXpNMjg4IDM1OS42N2MtMTQuMDcgMC0yNy4zOC02LjE4LTM2LjUxLTE2Ljk2LTE5LjY2LTIzLjItNDAuNTctNDkuNjItNTkuNDktNzYuNzJ2MTgybDE5MiA2NFYyNjZjLTE4LjkyIDI3LjA5LTM5LjgyIDUzLjUyLTU5LjQ5IDc2LjcyLTkuMTMgMTAuNzctMjIuNDQgMTYuOTUtMzYuNTEgMTYuOTV6bTI2Ni4wNi0xOTguNTFMNDE2IDIyNHYyODhsMTM5Ljg4LTU1Ljk1QTMxLjk5NiAzMS45OTYgMCAwIDAgNTc2IDQyNi4zNFYxNzYuMDJjMC0xMS4zMi0xMS40My0xOS4wNi0yMS45NC0xNC44NnpcIl1cbn07XG52YXIgZmFNYXBNYXJrZWRBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFwLW1hcmtlZC1hbHQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY1YTBcIiwgXCJNMjg4IDBjLTY5LjU5IDAtMTI2IDU2LjQxLTEyNiAxMjYgMCA1Ni4yNiA4Mi4zNSAxNTguOCAxMTMuOSAxOTYuMDIgNi4zOSA3LjU0IDE3LjgyIDcuNTQgMjQuMiAwQzMzMS42NSAyODQuOCA0MTQgMTgyLjI2IDQxNCAxMjYgNDE0IDU2LjQxIDM1Ny41OSAwIDI4OCAwem0wIDE2OGMtMjMuMiAwLTQyLTE4LjgtNDItNDJzMTguOC00MiA0Mi00MiA0MiAxOC44IDQyIDQyLTE4LjggNDItNDIgNDJ6TTIwLjEyIDIxNS45NUEzMi4wMDYgMzIuMDA2IDAgMCAwIDAgMjQ1LjY2djI1MC4zMmMwIDExLjMyIDExLjQzIDE5LjA2IDIxLjk0IDE0Ljg2TDE2MCA0NDhWMjE0LjkyYy04Ljg0LTE1Ljk4LTE2LjA3LTMxLjU0LTIxLjI1LTQ2LjQyTDIwLjEyIDIxNS45NXpNMjg4IDM1OS42N2MtMTQuMDcgMC0yNy4zOC02LjE4LTM2LjUxLTE2Ljk2LTE5LjY2LTIzLjItNDAuNTctNDkuNjItNTkuNDktNzYuNzJ2MTgybDE5MiA2NFYyNjZjLTE4LjkyIDI3LjA5LTM5LjgyIDUzLjUyLTU5LjQ5IDc2LjcyLTkuMTMgMTAuNzctMjIuNDQgMTYuOTUtMzYuNTEgMTYuOTV6bTI2Ni4wNi0xOTguNTFMNDE2IDIyNHYyODhsMTM5Ljg4LTU1Ljk1QTMxLjk5NiAzMS45OTYgMCAwIDAgNTc2IDQyNi4zNFYxNzYuMDJjMC0xMS4zMi0xMS40My0xOS4wNi0yMS45NC0xNC44NnpcIl1cbn07XG52YXIgZmFNYXBNYXJrZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFwLW1hcmtlcicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjA0MVwiLCBcIk0xNzIuMjY4IDUwMS42N0MyNi45NyAyOTEuMDMxIDAgMjY5LjQxMyAwIDE5MiAwIDg1Ljk2MSA4NS45NjEgMCAxOTIgMHMxOTIgODUuOTYxIDE5MiAxOTJjMCA3Ny40MTMtMjYuOTcgOTkuMDMxLTE3Mi4yNjggMzA5LjY3LTkuNTM1IDEzLjc3NC0yOS45MyAxMy43NzMtMzkuNDY0IDB6XCJdXG59O1xudmFyIGZhTWFwTWFya2VyQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hcC1tYXJrZXItYWx0JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmM2M1XCIsIFwiTTE3Mi4yNjggNTAxLjY3QzI2Ljk3IDI5MS4wMzEgMCAyNjkuNDEzIDAgMTkyIDAgODUuOTYxIDg1Ljk2MSAwIDE5MiAwczE5MiA4NS45NjEgMTkyIDE5MmMwIDc3LjQxMy0yNi45NyA5OS4wMzEtMTcyLjI2OCAzMDkuNjctOS41MzUgMTMuNzc0LTI5LjkzIDEzLjc3My0zOS40NjQgMHpNMTkyIDI3MmM0NC4xODMgMCA4MC0zNS44MTcgODAtODBzLTM1LjgxNy04MC04MC04MC04MCAzNS44MTctODAgODAgMzUuODE3IDgwIDgwIDgwelwiXVxufTtcbnZhciBmYU1hcFBpbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYXAtcGluJyxcbiAgaWNvbjogWzI4OCwgNTEyLCBbXSwgXCJmMjc2XCIsIFwiTTExMiAzMTYuOTR2MTU2LjY5bDIyLjAyIDMzLjAyYzQuNzUgNy4xMiAxNS4yMiA3LjEyIDE5Ljk3IDBMMTc2IDQ3My42M1YzMTYuOTRjLTEwLjM5IDEuOTItMjEuMDYgMy4wNi0zMiAzLjA2cy0yMS42MS0xLjE0LTMyLTMuMDZ6TTE0NCAwQzY0LjQ3IDAgMCA2NC40NyAwIDE0NHM2NC40NyAxNDQgMTQ0IDE0NCAxNDQtNjQuNDcgMTQ0LTE0NFMyMjMuNTMgMCAxNDQgMHptMCA3NmMtMzcuNSAwLTY4IDMwLjUtNjggNjggMCA2LjYyLTUuMzggMTItMTIgMTJzLTEyLTUuMzgtMTItMTJjMC01MC43MyA0MS4yOC05MiA5Mi05MiA2LjYyIDAgMTIgNS4zOCAxMiAxMnMtNS4zOCAxMi0xMiAxMnpcIl1cbn07XG52YXIgZmFNYXBTaWducyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYXAtc2lnbnMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyNzdcIiwgXCJNNTA3LjMxIDg0LjY5TDQ2NCA0MS4zN2MtNi02LTE0LjE0LTkuMzctMjIuNjMtOS4zN0gyODhWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNkg1NmMtMTMuMjUgMC0yNCAxMC43NS0yNCAyNHY4MGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDM4NS4zN2M4LjQ5IDAgMTYuNjItMy4zNyAyMi42My05LjM3bDQzLjMxLTQzLjMxYzYuMjUtNi4yNiA2LjI1LTE2LjM4IDAtMjIuNjN6TTIyNCA0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZWMzg0aC02NHYxMTJ6bTIzMi0yNzJIMjg4di0zMmgtNjR2MzJINzAuNjNjLTguNDkgMC0xNi42MiAzLjM3LTIyLjYzIDkuMzdMNC42OSAyNzYuNjljLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNMNDggMzQyLjYzYzYgNiAxNC4xNCA5LjM3IDIyLjYzIDkuMzdINDU2YzEzLjI1IDAgMjQtMTAuNzUgMjQtMjR2LTgwYzAtMTMuMjUtMTAuNzUtMjQtMjQtMjR6XCJdXG59O1xudmFyIGZhTWFya2VyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hcmtlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjVhMVwiLCBcIk05My45NSAyOTAuMDNBMzI3LjAzOCAzMjcuMDM4IDAgMCAwIC4xNyA0ODUuMTFsLS4wMy4yM2MtMS43IDE1LjI4IDExLjIxIDI4LjIgMjYuNDkgMjYuNTFhMzI3LjAyIDMyNy4wMiAwIDAgMCAxOTUuMzQtOTMuOGw3NS40LTc1LjQtMTI4LjAyLTEyOC4wMi03NS40IDc1LjR6TTQ4NS40OSAyNi41MWMtMzUuMzUtMzUuMzUtOTIuNjctMzUuMzUtMTI4LjAyIDBsLTIxLjc2IDIxLjc2LTM2LjU2LTM2LjU1Yy0xNS42Mi0xNS42Mi00MC45NS0xNS42Mi01Ni41NiAwTDEzOC40NyAxMTUuODRjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNsMjIuNjIgMjIuNjJjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGw4Ny4xNS04Ny4xNSAxOS41OSAxOS41OUwxOTEuOTggMTkyIDMyMCAzMjAuMDJsMTY1LjQ5LTE2NS40OWMzNS4zNS0zNS4zNSAzNS4zNS05Mi42NiAwLTEyOC4wMnpcIl1cbn07XG52YXIgZmFNYXJzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hcnMnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYyMjJcIiwgXCJNMzcyIDY0aC03OWMtMTAuNyAwLTE2IDEyLjktOC41IDIwLjVsMTYuOSAxNi45LTgwLjcgODAuN2MtMjIuMi0xNC00OC41LTIyLjEtNzYuNy0yMi4xQzY0LjUgMTYwIDAgMjI0LjUgMCAzMDRzNjQuNSAxNDQgMTQ0IDE0NCAxNDQtNjQuNSAxNDQtMTQ0YzAtMjguMi04LjEtNTQuNS0yMi4xLTc2LjdsODAuNy04MC43IDE2LjkgMTYuOWM3LjYgNy42IDIwLjUgMi4yIDIwLjUtOC41Vjc2YzAtNi42LTUuNC0xMi0xMi0xMnpNMTQ0IDM4NGMtNDQuMSAwLTgwLTM1LjktODAtODBzMzUuOS04MCA4MC04MCA4MCAzNS45IDgwIDgwLTM1LjkgODAtODAgODB6XCJdXG59O1xudmFyIGZhTWFyc0RvdWJsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYXJzLWRvdWJsZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjIyN1wiLCBcIk0zNDAgMGgtNzljLTEwLjcgMC0xNiAxMi45LTguNSAyMC41bDE2LjkgMTYuOS00OC43IDQ4LjdDMTk4LjUgNzIuMSAxNzIuMiA2NCAxNDQgNjQgNjQuNSA2NCAwIDEyOC41IDAgMjA4czY0LjUgMTQ0IDE0NCAxNDQgMTQ0LTY0LjUgMTQ0LTE0NGMwLTI4LjItOC4xLTU0LjUtMjIuMS03Ni43bDQ4LjctNDguNyAxNi45IDE2LjljMi40IDIuNCA1LjUgMy41IDguNCAzLjUgNi4yIDAgMTIuMS00LjggMTIuMS0xMlYxMmMwLTYuNi01LjQtMTItMTItMTJ6TTE0NCAyODhjLTQ0LjEgMC04MC0zNS45LTgwLTgwczM1LjktODAgODAtODAgODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwem0zNTYtMTI4LjFoLTc5Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWwxNi45IDE2LjktNDguNyA0OC43Yy0xOC4yLTExLjQtMzktMTguOS02MS41LTIxLjMtMi4xIDIxLjgtOC4yIDQzLjMtMTguNCA2My4zIDEuMSAwIDIuMi0uMSAzLjItLjEgNDQuMSAwIDgwIDM1LjkgODAgODBzLTM1LjkgODAtODAgODAtODAtMzUuOS04MC04MGMwLTEuMSAwLTIuMi4xLTMuMi0yMCAxMC4yLTQxLjUgMTYuNC02My4zIDE4LjRDMTY4LjQgNDU1LjYgMjI5LjYgNTEyIDMwNCA1MTJjNzkuNSAwIDE0NC02NC41IDE0NC0xNDQgMC0yOC4yLTguMS01NC41LTIyLjEtNzYuN2w0OC43LTQ4LjcgMTYuOSAxNi45YzIuNCAyLjQgNS40IDMuNSA4LjQgMy41IDYuMiAwIDEyLjEtNC44IDEyLjEtMTJ2LTc5YzAtNi43LTUuNC0xMi4xLTEyLTEyLjF6XCJdXG59O1xudmFyIGZhTWFyc1N0cm9rZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYXJzLXN0cm9rZScsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjIyOVwiLCBcIk0zNzIgNjRoLTc5Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWwxNi45IDE2LjktMTcuNSAxNy41LTE0LjEtMTQuMWMtNC43LTQuNy0xMi4zLTQuNy0xNyAwTDIyNC41IDEzM2MtNC43IDQuNy00LjcgMTIuMyAwIDE3bDE0LjEgMTQuMS0xOCAxOGMtMjIuMi0xNC00OC41LTIyLjEtNzYuNy0yMi4xQzY0LjUgMTYwIDAgMjI0LjUgMCAzMDRzNjQuNSAxNDQgMTQ0IDE0NCAxNDQtNjQuNSAxNDQtMTQ0YzAtMjguMi04LjEtNTQuNS0yMi4xLTc2LjdsMTgtMTggMTQuMSAxNC4xYzQuNyA0LjcgMTIuMyA0LjcgMTcgMGwyOC4zLTI4LjNjNC43LTQuNyA0LjctMTIuMyAwLTE3TDMyOS4yIDE2NGwxNy41LTE3LjUgMTYuOSAxNi45YzcuNiA3LjYgMjAuNSAyLjIgMjAuNS04LjVWNzZjLS4xLTYuNi01LjUtMTItMTIuMS0xMnpNMTQ0IDM4NGMtNDQuMSAwLTgwLTM1LjktODAtODBzMzUuOS04MCA4MC04MCA4MCAzNS45IDgwIDgwLTM1LjkgODAtODAgODB6XCJdXG59O1xudmFyIGZhTWFyc1N0cm9rZUggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFycy1zdHJva2UtaCcsXG4gIGljb246IFs0ODAsIDUxMiwgW10sIFwiZjIyYlwiLCBcIk00NzYuMiAyNDcuNWwtNTUuOS01NS45Yy03LjYtNy42LTIwLjUtMi4yLTIwLjUgOC41VjIyNEgzNzZ2LTIwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnYyMGgtMjcuNmMtNS44LTI1LjYtMTguNy00OS45LTM4LjYtNjkuOEMxODkuNiA5OCA5OC40IDk4IDQyLjIgMTU0LjJjLTU2LjIgNTYuMi01Ni4yIDE0Ny40IDAgMjAzLjYgNTYuMiA1Ni4yIDE0Ny40IDU2LjIgMjAzLjYgMCAxOS45LTE5LjkgMzIuOC00NC4yIDM4LjYtNjkuOEgzMTJ2MjBjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtMjBoMjMuOXYyMy45YzAgMTAuNyAxMi45IDE2IDIwLjUgOC41bDU1LjktNTUuOWM0LjYtNC43IDQuNi0xMi4zLS4xLTE3em0tMjc1LjYgNjUuMWMtMzEuMiAzMS4yLTgxLjkgMzEuMi0xMTMuMSAwLTMxLjItMzEuMi0zMS4yLTgxLjkgMC0xMTMuMSAzMS4yLTMxLjIgODEuOS0zMS4yIDExMy4xIDAgMzEuMiAzMS4xIDMxLjIgODEuOSAwIDExMy4xelwiXVxufTtcbnZhciBmYU1hcnNTdHJva2VWID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hcnMtc3Ryb2tlLXYnLFxuICBpY29uOiBbMjg4LCA1MTIsIFtdLCBcImYyMmFcIiwgXCJNMjQ1LjggMjM0LjJjLTE5LjktMTkuOS00NC4yLTMyLjgtNjkuOC0zOC42di0yNS40aDIwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0yMFY4MS40aDIzLjljMTAuNyAwIDE2LTEyLjkgOC41LTIwLjVMMTUyLjUgNS4xYy00LjctNC43LTEyLjMtNC43LTE3IDBMNzkuNiA2MWMtNy42IDcuNi0yLjIgMjAuNSA4LjUgMjAuNUgxMTJ2MjQuN0g5MmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmgyMHYyNS40Yy0yNS42IDUuOC00OS45IDE4LjctNjkuOCAzOC42LTU2LjIgNTYuMi01Ni4yIDE0Ny40IDAgMjAzLjYgNTYuMiA1Ni4yIDE0Ny40IDU2LjIgMjAzLjYgMCA1Ni4zLTU2LjIgNTYuMy0xNDcuNCAwLTIwMy42em0tNDUuMiAxNTguNGMtMzEuMiAzMS4yLTgxLjkgMzEuMi0xMTMuMSAwLTMxLjItMzEuMi0zMS4yLTgxLjkgMC0xMTMuMSAzMS4yLTMxLjIgODEuOS0zMS4yIDExMy4xIDAgMzEuMiAzMS4xIDMxLjIgODEuOSAwIDExMy4xelwiXVxufTtcbnZhciBmYU1hc2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFzaycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjZmYVwiLCBcIk0zMjAuNjcgNjRjLTQ0Mi42IDAtMzU3LjU3IDM4NC0xNTguNDYgMzg0IDM5LjkgMCA3Ny40Ny0yMC42OSAxMDEuNDItNTUuODZsMjUuNzMtMzcuNzljMTUuNjYtMjIuOTkgNDYuOTctMjIuOTkgNjIuNjMgMGwyNS43MyAzNy43OUM0MDEuNjYgNDI3LjMxIDQzOS4yMyA0NDggNDc5LjEzIDQ0OGMxODkuODYgMCAyOTAuNjMtMzg0LTE1OC40Ni0zODR6TTE4NCAzMDguMzZjLTQxLjA2IDAtNjcuNzYtMjUuNjYtODAuMDgtNDEuMDUtNS4yMy02LjUzLTUuMjMtMTYuMDkgMC0yMi42MyAxMi4zMi0xNS40IDM5LjAxLTQxLjA1IDgwLjA4LTQxLjA1czY3Ljc2IDI1LjY2IDgwLjA4IDQxLjA1YzUuMjMgNi41MyA1LjIzIDE2LjA5IDAgMjIuNjMtMTIuMzIgMTUuNC0zOS4wMiA0MS4wNS04MC4wOCA0MS4wNXptMjcyIDBjLTQxLjA2IDAtNjcuNzYtMjUuNjYtODAuMDgtNDEuMDUtNS4yMy02LjUzLTUuMjMtMTYuMDkgMC0yMi42MyAxMi4zMi0xNS40IDM5LjAxLTQxLjA1IDgwLjA4LTQxLjA1czY3Ljc2IDI1LjY2IDgwLjA4IDQxLjA1YzUuMjMgNi41MyA1LjIzIDE2LjA5IDAgMjIuNjMtMTIuMzIgMTUuNC0zOS4wMiA0MS4wNS04MC4wOCA0MS4wNXpcIl1cbn07XG52YXIgZmFNZWRhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtZWRhbCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjVhMlwiLCBcIk0yMjMuNzUgMTMwLjc1TDE1NC42MiAxNS41NEEzMS45OTcgMzEuOTk3IDAgMCAwIDEyNy4xOCAwSDE2LjAzQzMuMDggMC00LjUgMTQuNTcgMi45MiAyNS4xOGwxMTEuMjcgMTU4Ljk2YzI5LjcyLTI3Ljc3IDY3LjUyLTQ2LjgzIDEwOS41Ni01My4zOXpNNDk1Ljk3IDBIMzg0LjgyYy0xMS4yNCAwLTIxLjY2IDUuOS0yNy40NCAxNS41NGwtNjkuMTMgMTE1LjIxYzQyLjA0IDYuNTYgNzkuODQgMjUuNjIgMTA5LjU2IDUzLjM4TDUwOS4wOCAyNS4xOEM1MTYuNSAxNC41NyA1MDguOTIgMCA0OTUuOTcgMHpNMjU2IDE2MGMtOTcuMiAwLTE3NiA3OC44LTE3NiAxNzZzNzguOCAxNzYgMTc2IDE3NiAxNzYtNzguOCAxNzYtMTc2LTc4LjgtMTc2LTE3Ni0xNzZ6bTkyLjUyIDE1Ny4yNmwtMzcuOTMgMzYuOTYgOC45NyA1Mi4yMmMxLjYgOS4zNi04LjI2IDE2LjUxLTE2LjY1IDEyLjA5TDI1NiAzOTMuODhsLTQ2LjkgMjQuNjVjLTguNCA0LjQ1LTE4LjI1LTIuNzQtMTYuNjUtMTIuMDlsOC45Ny01Mi4yMi0zNy45My0zNi45NmMtNi44Mi02LjY0LTMuMDUtMTguMjMgNi4zNS0xOS41OWw1Mi40My03LjY0IDIzLjQzLTQ3LjUyYzIuMTEtNC4yOCA2LjE5LTYuMzkgMTAuMjgtNi4zOSA0LjExIDAgOC4yMiAyLjE0IDEwLjMzIDYuMzlsMjMuNDMgNDcuNTIgNTIuNDMgNy42NGM5LjQgMS4zNiAxMy4xNyAxMi45NSA2LjM1IDE5LjU5elwiXVxufTtcbnZhciBmYU1lZGtpdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtZWRraXQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwZmFcIiwgXCJNOTYgNDgwaDMyMFYxMjhoLTMyVjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDhIMTc2Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djQ4SDk2djM1MnptOTYtMzg0aDEyOHYzMkgxOTJWOTZ6bTMyMCA4MHYyNTZjMCAyNi41MS0yMS40OSA0OC00OCA0OGgtMTZWMTI4aDE2YzI2LjUxIDAgNDggMjEuNDkgNDggNDh6TTY0IDQ4MEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxNzZjMC0yNi41MSAyMS40OS00OCA0OC00OGgxNnYzNTJ6bTI4OC0yMDh2MzJjMCA4LjgzNy03LjE2MyAxNi0xNiAxNmgtNDh2NDhjMCA4LjgzNy03LjE2MyAxNi0xNiAxNmgtMzJjLTguODM3IDAtMTYtNy4xNjMtMTYtMTZ2LTQ4aC00OGMtOC44MzcgMC0xNi03LjE2My0xNi0xNnYtMzJjMC04LjgzNyA3LjE2My0xNiAxNi0xNmg0OHYtNDhjMC04LjgzNyA3LjE2My0xNiAxNi0xNmgzMmM4LjgzNyAwIDE2IDcuMTYzIDE2IDE2djQ4aDQ4YzguODM3IDAgMTYgNy4xNjMgMTYgMTZ6XCJdXG59O1xudmFyIGZhTWVoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21laCcsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjExYVwiLCBcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0tODAgMTY4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptMTc2IDE5MkgxNTJjLTIxLjIgMC0yMS4yLTMyIDAtMzJoMTkyYzIxLjIgMCAyMS4yIDMyIDAgMzJ6bS0xNi0xMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYU1laEJsYW5rID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21laC1ibGFuaycsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjVhNFwiLCBcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0tODAgMjMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTYwIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYU1laFJvbGxpbmdFeWVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21laC1yb2xsaW5nLWV5ZXMnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1YTVcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNODggMjI0YzAtMjQuMyAxMy43LTQ1LjIgMzMuNi01Ni0uNyAyLjYtMS42IDUuMi0xLjYgOCAwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtMi44LS45LTUuNC0xLjYtOCAxOS45IDEwLjggMzMuNiAzMS43IDMzLjYgNTYgMCAzNS4zLTI4LjcgNjQtNjQgNjRzLTY0LTI4LjctNjQtNjR6bTIyNCAxNzZIMTg0Yy0yMS4yIDAtMjEuMi0zMiAwLTMyaDEyOGMyMS4yIDAgMjEuMiAzMiAwIDMyem0zMi0xMTJjLTM1LjMgMC02NC0yOC43LTY0LTY0IDAtMjQuMyAxMy43LTQ1LjIgMzMuNi01Ni0uNyAyLjYtMS42IDUuMi0xLjYgOCAwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtMi44LS45LTUuNC0xLjYtOCAxOS45IDEwLjggMzMuNiAzMS43IDMzLjYgNTYgMCAzNS4zLTI4LjcgNjQtNjQgNjR6XCJdXG59O1xudmFyIGZhTWVtb3J5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21lbW9yeScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjUzOFwiLCBcIk02NDAgMTMwLjk0Vjk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJIMzJDMTQuMzMgNjQgMCA3OC4zMyAwIDk2djM0Ljk0YzE4LjYgNi42MSAzMiAyNC4xOSAzMiA0NS4wNnMtMTMuNCAzOC40NS0zMiA0NS4wNlYzMjBoNjQwdi05OC45NGMtMTguNi02LjYxLTMyLTI0LjE5LTMyLTQ1LjA2czEzLjQtMzguNDUgMzItNDUuMDZ6TTIyNCAyNTZoLTY0VjEyOGg2NHYxMjh6bTEyOCAwaC02NFYxMjhoNjR2MTI4em0xMjggMGgtNjRWMTI4aDY0djEyOHpNMCA0NDhoNjR2LTI2LjY3YzAtOC44NCA3LjE2LTE2IDE2LTE2czE2IDcuMTYgMTYgMTZWNDQ4aDEyOHYtMjYuNjdjMC04Ljg0IDcuMTYtMTYgMTYtMTZzMTYgNy4xNiAxNiAxNlY0NDhoMTI4di0yNi42N2MwLTguODQgNy4xNi0xNiAxNi0xNnMxNiA3LjE2IDE2IDE2VjQ0OGgxMjh2LTI2LjY3YzAtOC44NCA3LjE2LTE2IDE2LTE2czE2IDcuMTYgMTYgMTZWNDQ4aDY0di05Nkgwdjk2elwiXVxufTtcbnZhciBmYU1lbm9yYWggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWVub3JhaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjY3NlwiLCBcIk0xNDQgMTI4aC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTQ0aDY0VjE0NGMwLTguODQtNy4xNi0xNi0xNi0xNnptOTYgMGgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djE0NGg2NFYxNDRjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bTE5MiAwaC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTQ0aDY0VjE0NGMwLTguODQtNy4xNi0xNi0xNi0xNnptOTYgMGgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djE0NGg2NFYxNDRjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bTgwLTMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJTNjA4IDAgNjA4IDBzLTMyIDQ2LjMzLTMyIDY0IDE0LjMzIDMyIDMyIDMyem0tOTYgMGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyUzUxMiAwIDUxMiAwcy0zMiA0Ni4zMy0zMiA2NCAxNC4zMyAzMiAzMiAzMnptLTk2IDBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlM0MTYgMCA0MTYgMHMtMzIgNDYuMzMtMzIgNjQgMTQuMzMgMzIgMzIgMzJ6bS05NiAwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJTMzIwIDAgMzIwIDBzLTMyIDQ2LjMzLTMyIDY0IDE0LjMzIDMyIDMyIDMyem0tOTYgMGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyUzIyNCAwIDIyNCAwcy0zMiA0Ni4zMy0zMiA2NCAxNC4zMyAzMiAzMiAzMnptLTk2IDBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlMxMjggMCAxMjggMCA5NiA0Ni4zMyA5NiA2NHMxNC4zMyAzMiAzMiAzMnptLTk2IDBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlMzMiAwIDMyIDAgMCA0Ni4zMyAwIDY0czE0LjMzIDMyIDMyIDMyem01NDQgMTkyYzAgMTcuNjctMTQuMzMgMzItMzIgMzJIMzUyVjE0NGMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djE3Nkg5NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMlYxNDRjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djE0NGMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2aDE5MnY2NEgxMTJjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMzUydi02NGgxOTJjNTMuMDIgMCA5Ni00Mi45OCA5Ni05NlYxNDRjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNDR6XCJdXG59O1xudmFyIGZhTWVyY3VyeSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtZXJjdXJ5JyxcbiAgaWNvbjogWzI4OCwgNTEyLCBbXSwgXCJmMjIzXCIsIFwiTTI4OCAyMDhjMC00NC4yLTE5LjktODMuNy01MS4yLTExMC4xIDIuNS0xLjggNC45LTMuOCA3LjItNS44IDI0LjctMjEuMiAzOS44LTQ4LjggNDMuMi03OC44LjktNy4xLTQuNy0xMy4zLTExLjktMTMuM2gtNDAuNUMyMjkgMCAyMjQuMSA0LjEgMjIzIDkuOGMtMi40IDEyLjUtOS42IDI0LjMtMjAuNyAzMy44QzE4NyA1Ni44IDE2Ni4zIDY0IDE0NCA2NHMtNDMtNy4yLTU4LjQtMjAuNEM3NC41IDM0LjEgNjcuNCAyMi4zIDY0LjkgOS44IDYzLjggNC4xIDU4LjkgMCA1My4yIDBIMTIuN0M1LjUgMC0uMSA2LjIuOCAxMy4zIDQuMiA0My40IDE5LjIgNzEgNDQgOTIuMmMyLjMgMiA0LjcgMy45IDcuMiA1LjhDMTkuOSAxMjQuMyAwIDE2My44IDAgMjA4YzAgNjguNSA0Ny45IDEyNS45IDExMiAxNDAuNFY0MDBINzZjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMzZ2MzZjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtMzZoMzZjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTM2di01MS42YzY0LjEtMTQuNSAxMTItNzEuOSAxMTItMTQwLjR6bS0yMjQgMGMwLTQ0LjEgMzUuOS04MCA4MC04MHM4MCAzNS45IDgwIDgwLTM1LjkgODAtODAgODAtODAtMzUuOS04MC04MHpcIl1cbn07XG52YXIgZmFNZXRlb3IgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWV0ZW9yJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNzUzXCIsIFwiTTUxMS4zMjgsMjAuODAyN2MtMTEuNjA3NTksMzguNzAyNjQtMzQuMzA3MjQsMTExLjcwMTczLTYxLjMwMzExLDE4Ny43MDA3Nyw2Ljk5ODkzLDIuMDkzNzIsMTMuNDA0Miw0LDE4LjYwNjUzLDUuNTkzNjhhMTYuMDYxNTgsMTYuMDYxNTgsMCwwLDEsOS40OTg1NCwyMi45MDZjLTIyLjEwNiw0Mi4yOTYzNS04Mi42OTA0NywxNTIuNzk1LTE0Mi40NzgxOSwyMTQuNDAzNTYtLjk5OTg0LDEuMDkzNzMtMS45OTk2OSwyLjUtMi45OTk1NCwzLjQ5OTk1QTE5NC44MzA0NiwxOTQuODMwNDYsMCwxLDEsNTcuMDg1LDE3OS40MTAwOWMuOTk5ODUtMSwyLjQwNTg4LTIsMy40OTk0Ny0zLDYxLjU5OTk0LTU5LjkwNTQ5LDE3MS45NzM2Ny0xMjAuNDA0NzMsMjE0LjM3MzQzLTE0Mi40OTgyYTE2LjA1OCwxNi4wNTgsMCwwLDEsMjIuOTAyNzQsOS40OTk4OGMxLjU5MzUxLDUuMDkzNjgsMy40OTk0NywxMS41OTM2LDUuNTkyOSwxOC41OTM1MUMzNzkuMzQ4MTgsMzUuMDA1NjUsNDUyLjQzMDc0LDEyLjMwMjgxLDQ5MS4xMjc5NC43MDkyMUExNi4xODMyNSwxNi4xODMyNSwwLDAsMSw1MTEuMzI4LDIwLjgwMjdaTTMxOS45NTEsMzIwLjAwMjA3QTEyNy45ODA0MSwxMjcuOTgwNDEsMCwxLDAsMTkxLjk3MDYxLDQ0OC4wMDA0NiwxMjcuOTc1NzMsMTI3Ljk3NTczLDAsMCwwLDMxOS45NTEsMzIwLjAwMjA3Wm0tMTI3Ljk4MDQxLTMxLjk5OTZhMzEuOTk1MSwzMS45OTUxLDAsMSwxLTMxLjk5NTEtMzEuOTk5NkEzMS45NTksMzEuOTU5LDAsMCwxLDE5MS45NzA2MSwyODguMDAyNDdabTMxLjk5NTEsNzkuOTk5YTE1Ljk5NzU1LDE1Ljk5NzU1LDAsMSwxLTE1Ljk5NzU1LTE1Ljk5OThBMTYuMDQ5NzUsMTYuMDQ5NzUsMCwwLDEsMjIzLjk2NTcxLDM2OC4wMDE0N1pcIl1cbn07XG52YXIgZmFNaWNyb2NoaXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWljcm9jaGlwJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMmRiXCIsIFwiTTQxNiA0OHY0MTZjMCAyNi41MS0yMS40OSA0OC00OCA0OEgxNDRjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWNDhjMC0yNi41MSAyMS40OS00OCA0OC00OGgyMjRjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHptOTYgNTh2MTJhNiA2IDAgMCAxLTYgNmgtMTh2NmE2IDYgMCAwIDEtNiA2aC00MlY4OGg0MmE2IDYgMCAwIDEgNiA2djZoMThhNiA2IDAgMCAxIDYgNnptMCA5NnYxMmE2IDYgMCAwIDEtNiA2aC0xOHY2YTYgNiAwIDAgMS02IDZoLTQydi00OGg0MmE2IDYgMCAwIDEgNiA2djZoMThhNiA2IDAgMCAxIDYgNnptMCA5NnYxMmE2IDYgMCAwIDEtNiA2aC0xOHY2YTYgNiAwIDAgMS02IDZoLTQydi00OGg0MmE2IDYgMCAwIDEgNiA2djZoMThhNiA2IDAgMCAxIDYgNnptMCA5NnYxMmE2IDYgMCAwIDEtNiA2aC0xOHY2YTYgNiAwIDAgMS02IDZoLTQydi00OGg0MmE2IDYgMCAwIDEgNiA2djZoMThhNiA2IDAgMCAxIDYgNnpNMzAgMzc2aDQydjQ4SDMwYTYgNiAwIDAgMS02LTZ2LTZINmE2IDYgMCAwIDEtNi02di0xMmE2IDYgMCAwIDEgNi02aDE4di02YTYgNiAwIDAgMSA2LTZ6bTAtOTZoNDJ2NDhIMzBhNiA2IDAgMCAxLTYtNnYtNkg2YTYgNiAwIDAgMS02LTZ2LTEyYTYgNiAwIDAgMSA2LTZoMTh2LTZhNiA2IDAgMCAxIDYtNnptMC05Nmg0MnY0OEgzMGE2IDYgMCAwIDEtNi02di02SDZhNiA2IDAgMCAxLTYtNnYtMTJhNiA2IDAgMCAxIDYtNmgxOHYtNmE2IDYgMCAwIDEgNi02em0wLTk2aDQydjQ4SDMwYTYgNiAwIDAgMS02LTZ2LTZINmE2IDYgMCAwIDEtNi02di0xMmE2IDYgMCAwIDEgNi02aDE4di02YTYgNiAwIDAgMSA2LTZ6XCJdXG59O1xudmFyIGZhTWljcm9waG9uZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtaWNyb3Bob25lJyxcbiAgaWNvbjogWzM1MiwgNTEyLCBbXSwgXCJmMTMwXCIsIFwiTTE3NiAzNTJjNTMuMDIgMCA5Ni00Mi45OCA5Ni05NlY5NmMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2UzgwIDQyLjk4IDgwIDk2djE2MGMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2em0xNjAtMTYwaC0xNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDhjMCA3NC44LTY0LjQ5IDEzNC44Mi0xNDAuNzkgMTI3LjM4Qzk2LjcxIDM3Ni44OSA0OCAzMTcuMTEgNDggMjUwLjNWMjA4YzAtOC44NC03LjE2LTE2LTE2LTE2SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0MC4xNmMwIDg5LjY0IDYzLjk3IDE2OS41NSAxNTIgMTgxLjY5VjQ2NEg5NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTYwYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTguODQtNy4xNi0xNi0xNi0xNmgtNTZ2LTMzLjc3QzI4NS43MSA0MTguNDcgMzUyIDM0NC45IDM1MiAyNTZ2LTQ4YzAtOC44NC03LjE2LTE2LTE2LTE2elwiXVxufTtcbnZhciBmYU1pY3JvcGhvbmVBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWljcm9waG9uZS1hbHQnLFxuICBpY29uOiBbMzUyLCA1MTIsIFtdLCBcImYzYzlcIiwgXCJNMzM2IDE5MmgtMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djQ4YzAgNzQuOC02NC40OSAxMzQuODItMTQwLjc5IDEyNy4zOEM5Ni43MSAzNzYuODkgNDggMzE3LjExIDQ4IDI1MC4zVjIwOGMwLTguODQtNy4xNi0xNi0xNi0xNkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDAuMTZjMCA4OS42NCA2My45NyAxNjkuNTUgMTUyIDE4MS42OVY0NjRIOTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djE2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTU2di0zMy43N0MyODUuNzEgNDE4LjQ3IDM1MiAzNDQuOSAzNTIgMjU2di00OGMwLTguODQtNy4xNi0xNi0xNi0xNnpNMTc2IDM1MmM1My4wMiAwIDk2LTQyLjk4IDk2LTk2aC04NS4zM2MtNS44OSAwLTEwLjY3LTMuNTgtMTAuNjctOHYtMTZjMC00LjQyIDQuNzgtOCAxMC42Ny04SDI3MnYtMzJoLTg1LjMzYy01Ljg5IDAtMTAuNjctMy41OC0xMC42Ny04di0xNmMwLTQuNDIgNC43OC04IDEwLjY3LThIMjcydi0zMmgtODUuMzNjLTUuODkgMC0xMC42Ny0zLjU4LTEwLjY3LTh2LTE2YzAtNC40MiA0Ljc4LTggMTAuNjctOEgyNzJjMC01My4wMi00Mi45OC05Ni05Ni05NlM4MCA0Mi45OCA4MCA5NnYxNjBjMCA1My4wMiA0Mi45OCA5NiA5NiA5NnpcIl1cbn07XG52YXIgZmFNaWNyb3Bob25lQWx0U2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWljcm9waG9uZS1hbHQtc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1MzlcIiwgXCJNNjMzLjgyIDQ1OC4xTDQ3Ni4yNiAzMzYuMzNDNDg4Ljc0IDMxMi4yMSA0OTYgMjg0Ljk4IDQ5NiAyNTZ2LTQ4YzAtOC44NC03LjE2LTE2LTE2LTE2aC0xNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDhjMCAxNy45Mi0zLjk2IDM0LjgtMTAuNzIgNTAuMmwtMjYuNTUtMjAuNTJjMy4xLTkuNCA1LjI4LTE5LjIyIDUuMjgtMjkuNjdoLTQzLjY3bC00MS40LTMySDQxNnYtMzJoLTg1LjMzYy01Ljg5IDAtMTAuNjctMy41OC0xMC42Ny04di0xNmMwLTQuNDIgNC43OC04IDEwLjY3LThINDE2di0zMmgtODUuMzNjLTUuODkgMC0xMC42Ny0zLjU4LTEwLjY3LTh2LTE2YzAtNC40MiA0Ljc4LTggMTAuNjctOEg0MTZjMC01My4wMi00Mi45OC05Ni05Ni05NnMtOTYgNDIuOTgtOTYgOTZ2NDUuMzZMNDUuNDcgMy4zN0MzOC40OS0yLjA1IDI4LjQzLS44IDIzLjAxIDYuMThMMy4zNyAzMS40NUMtMi4wNSAzOC40Mi0uOCA0OC40NyA2LjE4IDUzLjlsNTg4LjM2IDQ1NC43M2M2Ljk4IDUuNDMgMTcuMDMgNC4xNyAyMi40Ni0yLjgxbDE5LjY0LTI1LjI3YzUuNDEtNi45NyA0LjE2LTE3LjAyLTIuODItMjIuNDV6TTQwMCA0NjRoLTU2di0zMy43OGMxMS43MS0xLjYyIDIzLjEtNC4yOCAzMy45Ni04LjA4bC01MC40LTM4Ljk2Yy02LjcxLjQtMTMuNDEuODctMjAuMzUuMi01NS44NS01LjQ1LTk4Ljc0LTQ4LjYzLTExMS4xOC0xMDEuODVMMTQ0IDI0MS4zMXY2Ljg1YzAgODkuNjQgNjMuOTcgMTY5LjU1IDE1MiAxODEuNjlWNDY0aC01NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTYwYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIl1cbn07XG52YXIgZmFNaWNyb3Bob25lU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWljcm9waG9uZS1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjEzMVwiLCBcIk02MzMuODIgNDU4LjFsLTE1Ny44LTEyMS45NkM0ODguNjEgMzEyLjEzIDQ5NiAyODUuMDEgNDk2IDI1NnYtNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OGMwIDE3LjkyLTMuOTYgMzQuOC0xMC43MiA1MC4ybC0yNi41NS0yMC41MmMzLjEtOS40IDUuMjgtMTkuMjIgNS4yOC0yOS42N1Y5NmMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2cy05NiA0Mi45OC05NiA5NnY0NS4zNkw0NS40NyAzLjM3QzM4LjQ5LTIuMDUgMjguNDMtLjggMjMuMDEgNi4xOEwzLjM3IDMxLjQ1Qy0yLjA1IDM4LjQyLS44IDQ4LjQ3IDYuMTggNTMuOWw1ODguMzYgNDU0LjczYzYuOTggNS40MyAxNy4wMyA0LjE3IDIyLjQ2LTIuODFsMTkuNjQtMjUuMjdjNS40MS02Ljk3IDQuMTYtMTcuMDItMi44Mi0yMi40NXpNNDAwIDQ2NGgtNTZ2LTMzLjc3YzExLjY2LTEuNiAyMi44NS00LjU0IDMzLjY3LTguMzFsLTUwLjExLTM4LjczYy02LjcxLjQtMTMuNDEuODctMjAuMzUuMi01NS44NS01LjQ1LTk4Ljc0LTQ4LjYzLTExMS4xOC0xMDEuODVMMTQ0IDI0MS4zMXY2Ljg1YzAgODkuNjQgNjMuOTcgMTY5LjU1IDE1MiAxODEuNjlWNDY0aC01NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTYwYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIl1cbn07XG52YXIgZmFNaWNyb3Njb3BlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21pY3Jvc2NvcGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY2MTBcIiwgXCJNMTYwIDMyMGgxMnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmg0MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZoMTJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY2NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyVjE2YzAtOC44NC03LjE2LTE2LTE2LTE2aC02NGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MjI0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJ6bTMwNCAxMjhoLTEuMjlDNDkzLjI0IDQxMy45OSA1MTIgMzY5LjIgNTEyIDMyMGMwLTEwNS44OC04Ni4xMi0xOTItMTkyLTE5MnY2NGM3MC41OCAwIDEyOCA1Ny40MiAxMjggMTI4cy01Ny40MiAxMjgtMTI4IDEyOEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OCAwIDguODQgNy4xNiAxNiAxNiAxNmg0ODBjOC44NCAwIDE2LTcuMTYgMTYtMTYgMC0yNi41MS0yMS40OS00OC00OC00OHptLTM2MC0zMmgyMDhjNC40MiAwIDgtMy41OCA4LTh2LTE2YzAtNC40Mi0zLjU4LTgtOC04SDEwNGMtNC40MiAwLTggMy41OC04IDh2MTZjMCA0LjQyIDMuNTggOCA4IDh6XCJdXG59O1xudmFyIGZhTWludXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWludXMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwNjhcIiwgXCJNNDE2IDIwOEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDM4NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwiXVxufTtcbnZhciBmYU1pbnVzQ2lyY2xlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21pbnVzLWNpcmNsZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjA1NlwiLCBcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4ek0xMjQgMjk2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTU2YzAtNi42IDUuNC0xMiAxMi0xMmgyNjRjNi42IDAgMTIgNS40IDEyIDEydjU2YzAgNi42LTUuNCAxMi0xMiAxMkgxMjR6XCJdXG59O1xudmFyIGZhTWludXNTcXVhcmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWludXMtc3F1YXJlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMTQ2XCIsIFwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTkyIDI5NmMtNi42IDAtMTItNS40LTEyLTEydi01NmMwLTYuNiA1LjQtMTIgMTItMTJoMjY0YzYuNiAwIDEyIDUuNCAxMiAxMnY1NmMwIDYuNi01LjQgMTItMTIgMTJIOTJ6XCJdXG59O1xudmFyIGZhTWl0dGVuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21pdHRlbicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjdiNVwiLCBcIk0zNjggNDE2SDQ4Yy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyMGM4LjggMCAxNi03LjIgMTYtMTZ2LTY0YzAtOC44LTcuMi0xNi0xNi0xNnptNTctMjA5LjFjLTI3LjItMjIuNi02Ny41LTE5LTkwLjEgOC4ybC0yMC45IDI1LTI5LjYtMTI4LjRjLTE4LTc3LjUtOTUuNC0xMjUuOS0xNzIuOC0xMDhDMzQuMiAyMS42LTE0LjIgOTguOSAzLjcgMTc2LjRMNTEuNiAzODRoMzA5bDcyLjUtODdjMjIuNy0yNy4yIDE5LTY3LjUtOC4xLTkwLjF6XCJdXG59O1xudmFyIGZhTW9iaWxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vYmlsZScsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZjEwYlwiLCBcIk0yNzIgMEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDIyNGMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTYwIDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJdXG59O1xudmFyIGZhTW9iaWxlQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vYmlsZS1hbHQnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImYzY2RcIiwgXCJNMjcyIDBINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyMjRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE2MCA0ODBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xMTItMTA4YzAgNi42LTUuNCAxMi0xMiAxMkg2MGMtNi42IDAtMTItNS40LTEyLTEyVjYwYzAtNi42IDUuNC0xMiAxMi0xMmgyMDBjNi42IDAgMTIgNS40IDEyIDEydjMxMnpcIl1cbn07XG52YXIgZmFNb25leUJpbGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbW9uZXktYmlsbCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjBkNlwiLCBcIk02MDggNjRIMzJDMTQuMzMgNjQgMCA3OC4zMyAwIDk2djMyMGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDU3NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTQ4IDQwMHYtNjRjMzUuMzUgMCA2NCAyOC42NSA2NCA2NEg0OHptMC0yMjR2LTY0aDY0YzAgMzUuMzUtMjguNjUgNjQtNjQgNjR6bTI3MiAxNzZjLTQ0LjE5IDAtODAtNDIuOTktODAtOTYgMC01My4wMiAzNS44Mi05NiA4MC05NnM4MCA0Mi45OCA4MCA5NmMwIDUzLjAzLTM1LjgzIDk2LTgwIDk2em0yNzIgNDhoLTY0YzAtMzUuMzUgMjguNjUtNjQgNjQtNjR2NjR6bTAtMjI0Yy0zNS4zNSAwLTY0LTI4LjY1LTY0LTY0aDY0djY0elwiXVxufTtcbnZhciBmYU1vbmV5QmlsbEFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb25leS1iaWxsLWFsdCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjNkMVwiLCBcIk0zNTIgMjg4aC0xNnYtODhjMC00LjQyLTMuNTgtOC04LThoLTEzLjU4Yy00Ljc0IDAtOS4zNyAxLjQtMTMuMzEgNC4wM2wtMTUuMzMgMTAuMjJhNy45OTQgNy45OTQgMCAwIDAtMi4yMiAxMS4wOWw4Ljg4IDEzLjMxYTcuOTk0IDcuOTk0IDAgMCAwIDExLjA5IDIuMjJsLjQ3LS4zMVYyODhoLTE2Yy00LjQyIDAtOCAzLjU4LTggOHYxNmMwIDQuNDIgMy41OCA4IDggOGg2NGM0LjQyIDAgOC0zLjU4IDgtOHYtMTZjMC00LjQyLTMuNTgtOC04LTh6TTYwOCA2NEgzMkMxNC4zMyA2NCAwIDc4LjMzIDAgOTZ2MzIwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTc2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNNDggNDAwdi02NGMzNS4zNSAwIDY0IDI4LjY1IDY0IDY0SDQ4em0wLTIyNHYtNjRoNjRjMCAzNS4zNS0yOC42NSA2NC02NCA2NHptMjcyIDE5MmMtNTMuMDIgMC05Ni01MC4xNS05Ni0xMTIgMC02MS44NiA0Mi45OC0xMTIgOTYtMTEyczk2IDUwLjE0IDk2IDExMmMwIDYxLjg3LTQzIDExMi05NiAxMTJ6bTI3MiAzMmgtNjRjMC0zNS4zNSAyOC42NS02NCA2NC02NHY2NHptMC0yMjRjLTM1LjM1IDAtNjQtMjguNjUtNjQtNjRoNjR2NjR6XCJdXG59O1xudmFyIGZhTW9uZXlCaWxsV2F2ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb25leS1iaWxsLXdhdmUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1M2FcIiwgXCJNNjIxLjE2IDU0LjQ2QzU4Mi4zNyAzOC4xOSA1NDMuNTUgMzIgNTA0Ljc1IDMyYy0xMjMuMTctLjAxLTI0Ni4zMyA2Mi4zNC0zNjkuNSA2Mi4zNC0zMC44OSAwLTYxLjc2LTMuOTItOTIuNjUtMTMuNzItMy40Ny0xLjEtNi45NS0xLjYyLTEwLjM1LTEuNjJDMTUuMDQgNzkgMCA5Mi4zMiAwIDExMC44MXYzMTcuMjZjMCAxMi42MyA3LjIzIDI0LjYgMTguODQgMjkuNDZDNTcuNjMgNDczLjgxIDk2LjQ1IDQ4MCAxMzUuMjUgNDgwYzEyMy4xNyAwIDI0Ni4zNC02Mi4zNSAzNjkuNTEtNjIuMzUgMzAuODkgMCA2MS43NiAzLjkyIDkyLjY1IDEzLjcyIDMuNDcgMS4xIDYuOTUgMS42MiAxMC4zNSAxLjYyIDE3LjIxIDAgMzIuMjUtMTMuMzIgMzIuMjUtMzEuODFWODMuOTNjLS4wMS0xMi42NC03LjI0LTI0LjYtMTguODUtMjkuNDd6TTQ4IDEzMi4yMmMyMC4xMiA1LjA0IDQxLjEyIDcuNTcgNjIuNzIgOC45M0MxMDQuODQgMTcwLjU0IDc5IDE5Mi42OSA0OCAxOTIuNjl2LTYwLjQ3em0wIDI4NXYtNDcuNzhjMzQuMzcgMCA2Mi4xOCAyNy4yNyA2My43MSA2MS40LTIyLjUzLTEuODEtNDMuNTktNi4zMS02My43MS0xMy42MnpNMzIwIDM1MmMtNDQuMTkgMC04MC00Mi45OS04MC05NiAwLTUzLjAyIDM1LjgyLTk2IDgwLTk2czgwIDQyLjk4IDgwIDk2YzAgNTMuMDMtMzUuODMgOTYtODAgOTZ6bTI3MiAyNy43OGMtMTcuNTItNC4zOS0zNS43MS02Ljg1LTU0LjMyLTguNDQgNS44Ny0yNi4wOCAyNy41LTQ1Ljg4IDU0LjMyLTQ5LjI4djU3Ljcyem0wLTIzNi4xMWMtMzAuODktMy45MS01NC44Ni0yOS43LTU1LjgxLTYxLjU1IDE5LjU0IDIuMTcgMzguMDkgNi4yMyA1NS44MSAxMi42NnY0OC44OXpcIl1cbn07XG52YXIgZmFNb25leUJpbGxXYXZlQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vbmV5LWJpbGwtd2F2ZS1hbHQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1M2JcIiwgXCJNNjIxLjE2IDU0LjQ2QzU4Mi4zNyAzOC4xOSA1NDMuNTUgMzIgNTA0Ljc1IDMyYy0xMjMuMTctLjAxLTI0Ni4zMyA2Mi4zNC0zNjkuNSA2Mi4zNC0zMC44OSAwLTYxLjc2LTMuOTItOTIuNjUtMTMuNzItMy40Ny0xLjEtNi45NS0xLjYyLTEwLjM1LTEuNjJDMTUuMDQgNzkgMCA5Mi4zMiAwIDExMC44MXYzMTcuMjZjMCAxMi42MyA3LjIzIDI0LjYgMTguODQgMjkuNDZDNTcuNjMgNDczLjgxIDk2LjQ1IDQ4MCAxMzUuMjUgNDgwYzEyMy4xNyAwIDI0Ni4zNC02Mi4zNSAzNjkuNTEtNjIuMzUgMzAuODkgMCA2MS43NiAzLjkyIDkyLjY1IDEzLjcyIDMuNDcgMS4xIDYuOTUgMS42MiAxMC4zNSAxLjYyIDE3LjIxIDAgMzIuMjUtMTMuMzIgMzIuMjUtMzEuODFWODMuOTNjLS4wMS0xMi42NC03LjI0LTI0LjYtMTguODUtMjkuNDd6TTMyMCAzNTJjLTQ0LjE5IDAtODAtNDIuOTktODAtOTYgMC01My4wMiAzNS44Mi05NiA4MC05NnM4MCA0Mi45OCA4MCA5NmMwIDUzLjAzLTM1LjgzIDk2LTgwIDk2elwiXVxufTtcbnZhciBmYU1vbmV5Q2hlY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbW9uZXktY2hlY2snLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1M2NcIiwgXCJNMCA0NDhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1NzZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYxMjhIMHYzMjB6bTQ0OC0yMDhjMC04Ljg0IDcuMTYtMTYgMTYtMTZoOTZjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MzJjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTk2Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMzJ6bTAgMTIwYzAtNC40MiAzLjU4LTggOC04aDExMmM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOEg0NTZjLTQuNDIgMC04LTMuNTgtOC04di0xNnpNNjQgMjY0YzAtNC40MiAzLjU4LTggOC04aDMwNGM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LTh2LTE2em0wIDk2YzAtNC40MiAzLjU4LTggOC04aDE3NmM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LTh2LTE2ek02MjQgMzJIMTZDNy4xNiAzMiAwIDM5LjE2IDAgNDh2NDhoNjQwVjQ4YzAtOC44NC03LjE2LTE2LTE2LTE2elwiXVxufTtcbnZhciBmYU1vbmV5Q2hlY2tBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbW9uZXktY2hlY2stYWx0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTNkXCIsIFwiTTYwOCAzMkgzMkMxNC4zMyAzMiAwIDQ2LjMzIDAgNjR2Mzg0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTc2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNMTc2IDMyNy44OFYzNDRjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtMTYuMjljLTExLjI5LS41OC0yMi4yNy00LjUyLTMxLjM3LTExLjM1LTMuOS0yLjkzLTQuMS04Ljc3LS41Ny0xMi4xNGwxMS43NS0xMS4yMWMyLjc3LTIuNjQgNi44OS0yLjc2IDEwLjEzLS43MyAzLjg3IDIuNDIgOC4yNiAzLjcyIDEyLjgyIDMuNzJoMjguMTFjNi41IDAgMTEuOC01LjkyIDExLjgtMTMuMTkgMC01Ljk1LTMuNjEtMTEuMTktOC43Ny0xMi43M2wtNDUtMTMuNWMtMTguNTktNS41OC0zMS41OC0yMy40Mi0zMS41OC00My4zOSAwLTI0LjUyIDE5LjA1LTQ0LjQ0IDQyLjY3LTQ1LjA3VjE1MmMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHYxNi4yOWMxMS4yOS41OCAyMi4yNyA0LjUxIDMxLjM3IDExLjM1IDMuOSAyLjkzIDQuMSA4Ljc3LjU3IDEyLjE0bC0xMS43NSAxMS4yMWMtMi43NyAyLjY0LTYuODkgMi43Ni0xMC4xMy43My0zLjg3LTIuNDMtOC4yNi0zLjcyLTEyLjgyLTMuNzJoLTI4LjExYy02LjUgMC0xMS44IDUuOTItMTEuOCAxMy4xOSAwIDUuOTUgMy42MSAxMS4xOSA4Ljc3IDEyLjczbDQ1IDEzLjVjMTguNTkgNS41OCAzMS41OCAyMy40MiAzMS41OCA0My4zOSAwIDI0LjUzLTE5LjA1IDQ0LjQ0LTQyLjY3IDQ1LjA3ek00MTYgMzEyYzAgNC40Mi0zLjU4IDgtOCA4SDI5NmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDExMmM0LjQyIDAgOCAzLjU4IDggOHYxNnptMTYwIDBjMCA0LjQyLTMuNTggOC04IDhoLTgwYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZ6bTAtOTZjMCA0LjQyLTMuNTggOC04IDhIMjk2Yy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMjcyYzQuNDIgMCA4IDMuNTggOCA4djE2elwiXVxufTtcbnZhciBmYU1vbnVtZW50ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vbnVtZW50JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNWE2XCIsIFwiTTM2OCA0NDhIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDM1MmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bS03OC44Ni0zNDcuMjZhMzEuOTcgMzEuOTcgMCAwIDAtOS4yMS0xOS40NEwyMDMuMzEgNC42OWMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtNzYuNiA3Ni42MWEzMS45NyAzMS45NyAwIDAgMC05LjIxIDE5LjQ0TDY0IDQxNmgyNTZsLTMwLjg2LTMxNS4yNnpNMjQwIDMwNy4yYzAgNi40LTYuNCAxMi44LTEyLjggMTIuOGgtNzAuNGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGg3MC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40elwiXVxufTtcbnZhciBmYU1vb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbW9vbicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjE4NlwiLCBcIk0yODMuMjExIDUxMmM3OC45NjIgMCAxNTEuMDc5LTM1LjkyNSAxOTguODU3LTk0Ljc5MiA3LjA2OC04LjcwOC0uNjM5LTIxLjQzLTExLjU2Mi0xOS4zNS0xMjQuMjAzIDIzLjY1NC0yMzguMjYyLTcxLjU3Ni0yMzguMjYyLTE5Ni45NTQgMC03Mi4yMjIgMzguNjYyLTEzOC42MzUgMTAxLjQ5OC0xNzQuMzk0IDkuNjg2LTUuNTEyIDcuMjUtMjAuMTk3LTMuNzU2LTIyLjIzQTI1OC4xNTYgMjU4LjE1NiAwIDAgMCAyODMuMjExIDBjLTE0MS4zMDkgMC0yNTYgMTE0LjUxMS0yNTYgMjU2IDAgMTQxLjMwOSAxMTQuNTExIDI1NiAyNTYgMjU2elwiXVxufTtcbnZhciBmYU1vcnRhclBlc3RsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb3J0YXItcGVzdGxlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNWE3XCIsIFwiTTUwMS41NCA2MC45MWMxNy4yMi0xNy4yMiAxMi41MS00Ni4yNS05LjI3LTU3LjE0YTM1LjY5NiAzNS42OTYgMCAwIDAtMzcuMzcgMy4zN0wyNTEuMDkgMTYwaDE1MS4zN2w5OS4wOC05OS4wOXpNNDk2IDE5MkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjMCA4MC45OCA1MC4yIDE1MC4xMSAxMjEuMTMgMTc4LjMyLTEyLjc2IDE2Ljg3LTIxLjcyIDM2LjgtMjQuOTUgNTguNjktMS40NiA5LjkyIDYuMDQgMTguOTggMTYuMDcgMTguOThoMjIzLjVjMTAuMDMgMCAxNy41My05LjA2IDE2LjA3LTE4Ljk4LTMuMjItMjEuODktMTIuMTgtNDEuODItMjQuOTUtNTguNjlDNDI5LjggNDA2LjExIDQ4MCAzMzYuOTggNDgwIDI1NmgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJdXG59O1xudmFyIGZhTW9zcXVlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vc3F1ZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjY3OFwiLCBcIk0wIDQ4MGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMTYwSDB2MzIwem01NzkuMTYtMTkyYzE3Ljg2LTE3LjM5IDI4Ljg0LTM3LjM0IDI4Ljg0LTU4LjkxIDAtNTIuODYtNDEuNzktOTMuNzktODcuOTItMTIyLjktNDEuOTQtMjYuNDctODAuNjMtNTcuNzctMTExLjk2LTk2LjIyTDQwMCAwbC04LjEyIDkuOTdjLTMxLjMzIDM4LjQ1LTcwLjAxIDY5Ljc2LTExMS45NiA5Ni4yMkMyMzMuNzkgMTM1LjMgMTkyIDE3Ni4yMyAxOTIgMjI5LjA5YzAgMjEuNTcgMTAuOTggNDEuNTIgMjguODQgNTguOTFoMzU4LjMyek02MDggMzIwSDE5MmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxMjhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMnYtNjRjMC0xNy42NyAxNC4zMy0zMiAzMi0zMnMzMiAxNC4zMyAzMiAzMnY2NGg2NHYtNzJjMC00OCA0OC03MiA0OC03MnM0OCAyNCA0OCA3MnY3Mmg2NHYtNjRjMC0xNy42NyAxNC4zMy0zMiAzMi0zMnMzMiAxNC4zMyAzMiAzMnY2NGgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjM1MmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek02NCAwUzAgMzIgMCA5NnYzMmgxMjhWOTZjMC02NC02NC05Ni02NC05NnpcIl1cbn07XG52YXIgZmFNb3RvcmN5Y2xlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vdG9yY3ljbGUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYyMWNcIiwgXCJNNTEyLjkgMTkyYy0xNC45LS4xLTI5LjEgMi4zLTQyLjQgNi45TDQzNy42IDE0NEg1MjBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWODhjMC0xMy4zLTEwLjctMjQtMjQtMjRoLTQ1LjNjLTYuOCAwLTEzLjMgMi45LTE3LjggNy45bC0zNy41IDQxLjctMjIuOC0zOEMzOTIuMiA2OC40IDM4NC40IDY0IDM3NiA2NGgtODBjLTguOCAwLTE2IDcuMi0xNiAxNnYxNmMwIDguOCA3LjIgMTYgMTYgMTZoNjYuNGwxOS4yIDMySDIyNy45Yy0xNy43LTIzLjEtNDQuOS00MC05OS45LTQwSDcyLjVDNTkgMTA0IDQ3LjcgMTE1IDQ4IDEyOC41Yy4yIDEzIDEwLjkgMjMuNSAyNCAyMy41aDU2YzI0LjUgMCAzOC43IDEwLjkgNDcuOCAyNC44bC0xMS4zIDIwLjVjLTEzLTMuOS0yNi45LTUuNy00MS4zLTUuMkM1NS45IDE5NC41IDEuNiAyNDkuNiAwIDMxN2MtMS42IDcyLjEgNTYuMyAxMzEgMTI4IDEzMSA1OS42IDAgMTA5LjctNDAuOCAxMjQtOTZoODQuMmMxMy43IDAgMjQuNi0xMS40IDI0LTI1LjEtMi4xLTQ3LjEgMTcuNS05My43IDU2LjItMTI1bDEyLjUgMjAuOGMtMjcuNiAyMy43LTQ1LjEgNTguOS00NC44IDk4LjIuNSA2OS42IDU3LjIgMTI2LjUgMTI2LjggMTI3LjEgNzEuNi43IDEyOS44LTU3LjUgMTI5LjItMTI5LjEtLjctNjkuNi01Ny42LTEyNi40LTEyNy4yLTEyNi45ek0xMjggNDAwYy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwYzQuMiAwIDguNC4zIDEyLjUgMUw5OSAzMTYuNGMtOC44IDE2IDIuOCAzNS42IDIxIDM1LjZoODEuM2MtMTIuNCAyOC4yLTQwLjYgNDgtNzMuMyA0OHptNDYzLjktNzUuNmMtMi4yIDQwLjYtMzUgNzMuNC03NS41IDc1LjUtNDYuMSAyLjUtODQuNC0zNC4zLTg0LjQtNzkuOSAwLTIxLjQgOC40LTQwLjggMjIuMS01NS4xbDQ5LjQgODIuNGM0LjUgNy42IDE0LjQgMTAgMjIgNS41bDEzLjctOC4yYzcuNi00LjUgMTAtMTQuNCA1LjUtMjJsLTQ4LjYtODAuOWM1LjItMS4xIDEwLjUtMS42IDE1LjktMS42IDQ1LjYtLjEgODIuMyAzOC4yIDc5LjkgODQuM3pcIl1cbn07XG52YXIgZmFNb3VudGFpbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb3VudGFpbicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjZmY1wiLCBcIk02MzQuOTIgNDYyLjdsLTI4OC00NDhDMzQxLjAzIDUuNTQgMzMwLjg5IDAgMzIwIDBzLTIxLjAzIDUuNTQtMjYuOTIgMTQuN2wtMjg4IDQ0OGEzMi4wMDEgMzIuMDAxIDAgMCAwLTEuMTcgMzIuNjRBMzIuMDA0IDMyLjAwNCAwIDAgMCAzMiA1MTJoNTc2YzExLjcxIDAgMjIuNDgtNi4zOSAyOC4wOS0xNi42N2EzMS45ODMgMzEuOTgzIDAgMCAwLTEuMTctMzIuNjN6TTMyMCA5MS4xOEw0MDUuMzkgMjI0SDMyMGwtNjQgNjQtMzguMDYtMzguMDZMMzIwIDkxLjE4elwiXVxufTtcbnZhciBmYU1vdXNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vdXNlJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmOGNjXCIsIFwiTTAgMzUyYTE2MCAxNjAgMCAwIDAgMTYwIDE2MGg2NGExNjAgMTYwIDAgMCAwIDE2MC0xNjBWMjI0SDB6TTE3NiAwaC0xNkExNjAgMTYwIDAgMCAwIDAgMTYwdjMyaDE3NnptNDggMGgtMTZ2MTkyaDE3NnYtMzJBMTYwIDE2MCAwIDAgMCAyMjQgMHpcIl1cbn07XG52YXIgZmFNb3VzZVBvaW50ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbW91c2UtcG9pbnRlcicsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZjI0NVwiLCBcIk0zMDIuMTg5IDMyOS4xMjZIMTk2LjEwNWw1NS44MzEgMTM1Ljk5M2MzLjg4OSA5LjQyOC0uNTU1IDE5Ljk5OS05LjQ0NCAyMy45OTlsLTQ5LjE2NSAyMS40MjdjLTkuMTY1IDQtMTkuNDQzLS41NzEtMjMuMzMyLTkuNzE0bC01My4wNTMtMTI5LjEzNi04Ni42NjQgODkuMTM4QzE4LjcyOSA0NzIuNzEgMCA0NjMuNTU0IDAgNDQ3Ljk3N1YxOC4yOTlDMCAxLjg5OSAxOS45MjEtNi4wOTYgMzAuMjc3IDUuNDQzbDI4NC40MTIgMjkyLjU0MmMxMS40NzIgMTEuMTc5IDMuMDA3IDMxLjE0MS0xMi41IDMxLjE0MXpcIl1cbn07XG52YXIgZmFNdWdIb3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbXVnLWhvdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjdiNlwiLCBcIk0xMjcuMSAxNDYuNWMxLjMgNy43IDggMTMuNSAxNiAxMy41aDE2LjVjOS44IDAgMTcuNi04LjUgMTYuMy0xOC0zLjgtMjguMi0xNi40LTU0LjItMzYuNi03NC43LTE0LjQtMTQuNy0yMy42LTMzLjMtMjYuNC01My41QzExMS44IDUuOSAxMDUgMCA5Ni44IDBIODAuNEM3MC42IDAgNjMgOC41IDY0LjEgMThjMy45IDMxLjkgMTggNjEuMyA0MC42IDg0LjQgMTIgMTIuMiAxOS43IDI3LjUgMjIuNCA0NC4xem0xMTIgMGMxLjMgNy43IDggMTMuNSAxNiAxMy41aDE2LjVjOS44IDAgMTcuNi04LjUgMTYuMy0xOC0zLjgtMjguMi0xNi40LTU0LjItMzYuNi03NC43LTE0LjQtMTQuNy0yMy42LTMzLjMtMjYuNC01My41QzIyMy44IDUuOSAyMTcgMCAyMDguOCAwaC0xNi40Yy05LjggMC0xNy41IDguNS0xNi4zIDE4IDMuOSAzMS45IDE4IDYxLjMgNDAuNiA4NC40IDEyIDEyLjIgMTkuNyAyNy41IDIyLjQgNDQuMXpNNDAwIDE5MkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MTkyYzAgNTMgNDMgOTYgOTYgOTZoMTkyYzUzIDAgOTYtNDMgOTYtOTZoMTZjNjEuOCAwIDExMi01MC4yIDExMi0xMTJzLTUwLjItMTEyLTExMi0xMTJ6bTAgMTYwaC0xNnYtOTZoMTZjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDh6XCJdXG59O1xudmFyIGZhTXVzaWMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbXVzaWMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwMDFcIiwgXCJNNDcwLjM4IDEuNTFMMTUwLjQxIDk2QTMyIDMyIDAgMCAwIDEyOCAxMjYuNTF2MjYxLjQxQTEzOSAxMzkgMCAwIDAgOTYgMzg0Yy01MyAwLTk2IDI4LjY2LTk2IDY0czQzIDY0IDk2IDY0IDk2LTI4LjY2IDk2LTY0VjIxNC4zMmwyNTYtNzV2MTg0LjYxYTEzOC40IDEzOC40IDAgMCAwLTMyLTMuOTNjLTUzIDAtOTYgMjguNjYtOTYgNjRzNDMgNjQgOTYgNjQgOTYtMjguNjUgOTYtNjRWMzJhMzIgMzIgMCAwIDAtNDEuNjItMzAuNDl6XCJdXG59O1xudmFyIGZhTmV0d29ya1dpcmVkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ25ldHdvcmstd2lyZWQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY2ZmZcIiwgXCJNNjQwIDI2NHYtMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMzQ0di00MGg3MmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJIMjI0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjEyOGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDcydjQwSDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgxMDR2NDBINjRjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTI4YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTYwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzUyYzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTU2di00MGgzMDR2NDBoLTU2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjEyOGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDE2MGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjM1MmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC01NnYtNDBoMTA0YzguODQgMCAxNi03LjE2IDE2LTE2ek0yNTYgMTI4VjY0aDEyOHY2NEgyNTZ6bS02NCAzMjBIOTZ2LTY0aDk2djY0em0zNTIgMGgtOTZ2LTY0aDk2djY0elwiXVxufTtcbnZhciBmYU5ldXRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICduZXV0ZXInLFxuICBpY29uOiBbMjg4LCA1MTIsIFtdLCBcImYyMmNcIiwgXCJNMjg4IDE3NmMwLTc5LjUtNjQuNS0xNDQtMTQ0LTE0NFMwIDk2LjUgMCAxNzZjMCA2OC41IDQ3LjkgMTI1LjkgMTEyIDE0MC40VjQ2OGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEyVjMxNi40YzY0LjEtMTQuNSAxMTItNzEuOSAxMTItMTQwLjR6bS0xNDQgODBjLTQ0LjEgMC04MC0zNS45LTgwLTgwczM1LjktODAgODAtODAgODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwelwiXVxufTtcbnZhciBmYU5ld3NwYXBlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICduZXdzcGFwZXInLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYxZWFcIiwgXCJNNTUyIDY0SDg4Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2OEgyNGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djI3MmMwIDMwLjkyOCAyNS4wNzIgNTYgNTYgNTZoNDcyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWODhjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0ek01NiA0MDBhOCA4IDAgMCAxLTgtOFYxNDRoMTZ2MjQ4YTggOCAwIDAgMS04IDh6bTIzNi0xNkgxNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LThjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNTJjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY4YzAgNi42MjctNS4zNzMgMTItMTIgMTJ6bTIwOCAwSDM0OGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtOGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE1MmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjhjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnptLTIwOC05NkgxNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LThjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNTJjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY4YzAgNi42MjctNS4zNzMgMTItMTIgMTJ6bTIwOCAwSDM0OGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtOGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE1MmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjhjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnptMC05NkgxNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTQwYzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMzYwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnpcIl1cbn07XG52YXIgZmFOb3RFcXVhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdub3QtZXF1YWwnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1M2VcIiwgXCJNNDE2IDIwOGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC0yMy44OGw1MS44Ny02Ni44MWM1LjM3LTcuMDIgNC4wNC0xNy4wNi0yLjk3LTIyLjQzTDQxNS42MSAzLjNjLTcuMDItNS4zOC0xNy4wNi00LjA0LTIyLjQ0IDIuOTdMMzExLjA5IDExMkgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDIwNC41NmwtNzQuNTMgOTZIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1NS40OWwtNTEuODcgNjYuODFjLTUuMzcgNy4wMS00LjA0IDE3LjA1IDIuOTcgMjIuNDNMNjQgNTA4LjdjNy4wMiA1LjM4IDE3LjA2IDQuMDQgMjIuNDMtMi45N0wxNjguNTIgNDAwSDQxNmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDI0My4wNWw3NC41My05Nkg0MTZ6XCJdXG59O1xudmFyIGZhTm90ZXNNZWRpY2FsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ25vdGVzLW1lZGljYWwnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY0ODFcIiwgXCJNMzM2IDY0aC04MGMwLTM1LjMtMjguNy02NC02NC02NHMtNjQgMjguNy02NCA2NEg0OEMyMS41IDY0IDAgODUuNSAwIDExMnYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjExMmMwLTI2LjUtMjEuNS00OC00OC00OHpNMTkyIDQwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHptOTYgMzA0YzAgNC40LTMuNiA4LTggOGgtNTZ2NTZjMCA0LjQtMy42IDgtOCA4aC00OGMtNC40IDAtOC0zLjYtOC04di01NmgtNTZjLTQuNCAwLTgtMy42LTgtOHYtNDhjMC00LjQgMy42LTggOC04aDU2di01NmMwLTQuNCAzLjYtOCA4LThoNDhjNC40IDAgOCAzLjYgOCA4djU2aDU2YzQuNCAwIDggMy42IDggOHY0OHptMC0xOTJjMCA0LjQtMy42IDgtOCA4SDEwNGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTc2YzQuNCAwIDggMy42IDggOHYxNnpcIl1cbn07XG52YXIgZmFPYmplY3RHcm91cCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdvYmplY3QtZ3JvdXAnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyNDdcIiwgXCJNNDgwIDEyOFY5NmgyMGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyVjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjIwSDY0VjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTJDNS4zNzMgMzIgMCAzNy4zNzMgMCA0NHY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDIwdjMyMEgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTIwaDM4NHYyMGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTIwVjEyOHpNOTYgMjc2VjE0MGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE2OGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjEzNmMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDEwOGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnptMzIwIDk2YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMjM2Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi01Mmg3MmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTcyaDg0YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MTM2elwiXVxufTtcbnZhciBmYU9iamVjdFVuZ3JvdXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnb2JqZWN0LXVuZ3JvdXAnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYyNDhcIiwgXCJNNjQgMzIwdjI2YTYgNiAwIDAgMS02IDZINmE2IDYgMCAwIDEtNi02di01MmE2IDYgMCAwIDEgNi02aDI2Vjk2SDZhNiA2IDAgMCAxLTYtNlYzOGE2IDYgMCAwIDEgNi02aDUyYTYgNiAwIDAgMSA2IDZ2MjZoMjg4VjM4YTYgNiAwIDAgMSA2LTZoNTJhNiA2IDAgMCAxIDYgNnY1MmE2IDYgMCAwIDEtNiA2aC0yNnYxOTJoMjZhNiA2IDAgMCAxIDYgNnY1MmE2IDYgMCAwIDEtNiA2aC01MmE2IDYgMCAwIDEtNi02di0yNkg2NHptNDgwLTY0di0zMmgyNmE2IDYgMCAwIDAgNi02di01MmE2IDYgMCAwIDAtNi02aC01MmE2IDYgMCAwIDAtNiA2djI2SDQwOHY3Mmg4YzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHY2NGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRoLTY0Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjR2LThIMTkydjcyaC0yNmE2IDYgMCAwIDAtNiA2djUyYTYgNiAwIDAgMCA2IDZoNTJhNiA2IDAgMCAwIDYtNnYtMjZoMjg4djI2YTYgNiAwIDAgMCA2IDZoNTJhNiA2IDAgMCAwIDYtNnYtNTJhNiA2IDAgMCAwLTYtNmgtMjZWMjU2elwiXVxufTtcbnZhciBmYU9pbENhbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdvaWwtY2FuJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNjEzXCIsIFwiTTYyOS44IDE2MC4zMUw0MTYgMjI0bC01MC40OS0yNS4yNGE2NC4wNyA2NC4wNyAwIDAgMC0yOC42Mi02Ljc2SDI4MHYtNDhoNTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE3NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNTZ2NDhoLTU2TDM3LjcyIDE2Ni44NmEzMS45IDMxLjkgMCAwIDAtNS43OS0uNTNDMTQuNjcgMTY2LjMzIDAgMTgwLjM2IDAgMTk4LjM0djk0Ljk1YzAgMTUuNDYgMTEuMDYgMjguNzIgMjYuMjggMzEuNDhMOTYgMzM3LjQ2VjM4NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDI3NC42M2M4LjU1IDAgMTYuNzUtMy40MiAyMi43Ni05LjUxbDIxMi4yNi0yMTQuNzVjMS41LTEuNSAyLjM0LTMuNTQgMi4zNC01LjY2VjE2OGMuMDEtNS4zMS01LjA4LTkuMTUtMTAuMTktNy42OXpNOTYgMjg4LjY3bC00OC04Ljczdi02Mi40M2w0OCA4LjczdjYyLjQzem00NTMuMzMgODQuNjZjMCAyMy41NiAxOS4xIDQyLjY3IDQyLjY3IDQyLjY3czQyLjY3LTE5LjEgNDIuNjctNDIuNjdTNTkyIDI4OCA1OTIgMjg4cy00Mi42NyA2MS43Ny00Mi42NyA4NS4zM3pcIl1cbn07XG52YXIgZmFPbSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdvbScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjY3OVwiLCBcIk0zNjAuNiA2MC45NGExMC40MyAxMC40MyAwIDAgMCAxNC43NiAwbDIxLjU3LTIxLjU2YTEwLjQzIDEwLjQzIDAgMCAwIDAtMTQuNzZMMzc1LjM1IDMuMDZjLTQuMDgtNC4wNy0xMC42OC00LjA3LTE0Ljc2IDBsLTIxLjU3IDIxLjU2YTEwLjQzIDEwLjQzIDAgMCAwIDAgMTQuNzZsMjEuNTggMjEuNTZ6TTQxMi4xMSAxOTJjLTI2LjY5IDAtNTEuNzcgMTAuMzktNzAuNjQgMjkuMjVsLTI0LjI1IDI0LjI1Yy02Ljc4IDYuNzctMTUuNzggMTAuNS0yNS4zOCAxMC41SDI0NWMxMC41NC0yMi4xIDE0LjE3LTQ4LjExIDcuNzMtNzUuMjMtMTAuMS00Mi41NS00Ni4zNi03Ni4xMS04OS41Mi04My4xOS0zNi4xNS01LjkzLTcwLjkgNS4wNC05Ni4wMSAyOC43OC03LjM2IDYuOTYtNi45NyAxOC44NSAxLjEyIDI0LjkzbDI2LjE1IDE5LjYzYzUuNzIgNC4zIDEzLjY2IDQuMzIgMTkuMi0uMjEgOC40NS02LjkgMTkuMDItMTAuNzEgMzAuMjctMTAuNzEgMjYuNDcgMCA0OC4wMSAyMS41MyA0OC4wMSA0OHMtMjEuNTQgNDgtNDguMDEgNDhoLTMxLjljLTExLjk2IDAtMTkuNzQgMTIuNTgtMTQuMzkgMjMuMjhsMTYuMDkgMzIuMTdjMi41MyA1LjA2IDcuNiA4LjEgMTMuMTcgOC41NWgzMy4wM2MzNS4zIDAgNjQuMDEgMjguNyA2NC4wMSA2NHMtMjguNzEgNjQtNjQuMDEgNjRjLTk2LjAyIDAtMTIyLjM1LTU0LjAyLTE0NS4xNS05Mi4wMy00LjUzLTcuNTUtMTQuNzctMy41OC0xNC43OSA1LjIyQy0uMDkgNDE2IDQxLjEzIDUxMiAxNTkuOTQgNTEyYzcwLjU5IDAgMTI4LjAyLTU3LjQyIDEyOC4wMi0xMjggMC0yMy40Mi02Ljc4LTQ1LjEtMTcuODEtNjRoMjEuNjljMjYuNjkgMCA1MS43Ny0xMC4zOSA3MC42NC0yOS4yNWwyNC4yNS0yNC4yNWM2Ljc4LTYuNzcgMTUuNzgtMTAuNSAyNS4zOC0xMC41IDE5Ljc4IDAgMzUuODggMTYuMDkgMzUuODggMzUuODhWMzkyYzAgMTMuMjMtMTguNzcgMjQtMzIuMDEgMjQtMzkuNCAwLTY2LjY3LTI0LjI0LTgxLjgyLTQyLjg5LTQuNzctNS44Ny0xNC4yLTIuNTQtMTQuMiA1LjAyVjQxNnMwIDY0IDk2LjAyIDY0YzQ4LjU0IDAgOTYuMDItMzkuNDcgOTYuMDItODhWMjkxLjg4YzAtNTUuMDgtNDQuOC05OS44OC05OS44OS05OS44OHptNDIuMTgtMTI0LjczYy04NS41NSA2NS4xMi0xNjkuMDUgMi43NS0xNzIuNTguMDUtNi4wMi00LjYyLTE0LjQ0LTQuMzgtMjAuMTQuNTUtNS43NCA0LjkyLTcuMjcgMTMuMTctMy42NiAxOS44IDEuNjEgMi45NSA0MC4zNyA3Mi4zNCAxMTguOCA3Mi4zNCA3OS45MiAwIDk4Ljc4LTMxLjM2IDEwMS43NS0zNy42NiAxLjAyLTIuMTIgMS41My00LjQ3IDEuNTMtNi44M1Y4MGMwLTEzLjIyLTE1LjE0LTIwLjY5LTI1LjctMTIuNzN6XCJdXG59O1xudmFyIGZhT3R0ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnb3R0ZXInLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY3MDBcIiwgXCJNNjA4IDMyaC0zMmwtMTMuMjUtMTMuMjVBNjMuOTcgNjMuOTcgMCAwIDAgNTE3LjQ5IDBINDk3Yy0xMS4xNCAwLTIyLjA4IDIuOTEtMzEuNzUgOC40M0wzMTIgOTZoLTU2QzE0OS45NiA5NiA2NCAxODEuOTYgNjQgMjg4djEuNjFjMCAzMi43NS0xNiA2Mi4xNC0zOS41NiA4NC44OS0xOC4xOSAxNy41OC0yOC4xIDQzLjY4LTIzLjE5IDcxLjggNi43NiAzOC44IDQyLjkgNjUuNyA4Mi4yOCA2NS43SDE5MmMxNy42NyAwIDMyLTE0LjMzIDMyLTMycy0xNC4zMy0zMi0zMi0zMkg4MGMtOC44MyAwLTE2LTcuMTctMTYtMTZzNy4xNy0xNiAxNi0xNmgyMjRjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTY0bDE0OS40OS04MC41TDQ0OCA0MTZoODBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTI4LjIybC01NS4xMS0xMTAuMjFMNTIxLjE0IDE5Mkg1NDRjNTMuMDIgMCA5Ni00Mi45OCA5Ni05NlY2NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0tOTYgMTZjOC44NCAwIDE2IDcuMTYgMTYgMTZzLTcuMTYgMTYtMTYgMTYtMTYtNy4xNi0xNi0xNiA3LjE2LTE2IDE2LTE2em0zMiA5NmgtMzQuOTZMNDA3LjIgMTk4Ljg0bC0xMy43Ny0yNy41NUw1MTIgMTEyaDc3LjA1Yy02LjYyIDE4LjU4LTI0LjIyIDMyLTQ1LjA1IDMyelwiXVxufTtcbnZhciBmYU91dGRlbnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnb3V0ZGVudCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjAzYlwiLCBcIk0xMDAuNjkgMzYzLjI5YzEwIDEwIDI3LjMxIDIuOTMgMjcuMzEtMTEuMzFWMTYwYzAtMTQuMzItMTcuMzMtMjEuMzEtMjcuMzEtMTEuMzFsLTk2IDk2YTE2IDE2IDAgMCAwIDAgMjIuNjJ6TTQzMiA0MTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMy4xNy0xMjhIMjA0LjgzQTEyLjgyIDEyLjgyIDAgMCAwIDE5MiAzMDAuODN2MzguMzRBMTIuODIgMTIuODIgMCAwIDAgMjA0LjgzIDM1MmgyMzAuMzRBMTIuODIgMTIuODIgMCAwIDAgNDQ4IDMzOS4xN3YtMzguMzRBMTIuODIgMTIuODIgMCAwIDAgNDM1LjE3IDI4OHptMC0xMjhIMjA0LjgzQTEyLjgyIDEyLjgyIDAgMCAwIDE5MiAxNzIuODN2MzguMzRBMTIuODIgMTIuODIgMCAwIDAgMjA0LjgzIDIyNGgyMzAuMzRBMTIuODIgMTIuODIgMCAwIDAgNDQ4IDIxMS4xN3YtMzguMzRBMTIuODIgMTIuODIgMCAwIDAgNDM1LjE3IDE2MHpNNDMyIDMySDE2QTE2IDE2IDAgMCAwIDAgNDh2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2elwiXVxufTtcbnZhciBmYVBhZ2VyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BhZ2VyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmODE1XCIsIFwiTTQ0OCA2NEg2NGE2NCA2NCAwIDAgMC02NCA2NHYyNTZhNjQgNjQgMCAwIDAgNjQgNjRoMzg0YTY0IDY0IDAgMCAwIDY0LTY0VjEyOGE2NCA2NCAwIDAgMC02NC02NHpNMTYwIDM2OEg4MGExNiAxNiAwIDAgMS0xNi0xNnYtMTZhMTYgMTYgMCAwIDEgMTYtMTZoODB6bTEyOC0xNmExNiAxNiAwIDAgMS0xNiAxNmgtODB2LTQ4aDgwYTE2IDE2IDAgMCAxIDE2IDE2em0xNjAtMTI4YTMyIDMyIDAgMCAxLTMyIDMySDk2YTMyIDMyIDAgMCAxLTMyLTMydi02NGEzMiAzMiAwIDAgMSAzMi0zMmgzMjBhMzIgMzIgMCAwIDEgMzIgMzJ6XCJdXG59O1xudmFyIGZhUGFpbnRCcnVzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYWludC1icnVzaCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjFmY1wiLCBcIk0xNjcuMDIgMzA5LjM0Yy00MC4xMiAyLjU4LTc2LjUzIDE3Ljg2LTk3LjE5IDcyLjMtMi4zNSA2LjIxLTggOS45OC0xNC41OSA5Ljk4LTExLjExIDAtNDUuNDYtMjcuNjctNTUuMjUtMzQuMzVDMCA0MzkuNjIgMzcuOTMgNTEyIDEyOCA1MTJjNzUuODYgMCAxMjgtNDMuNzcgMTI4LTEyMC4xOSAwLTMuMTEtLjY1LTYuMDgtLjk3LTkuMTNsLTg4LjAxLTczLjM0ek00NTcuODkgMGMtMTUuMTYgMC0yOS4zNyA2LjcxLTQwLjIxIDE2LjQ1QzIxMy4yNyAxOTkuMDUgMTkyIDIwMy4zNCAxOTIgMjU3LjA5YzAgMTMuNyAzLjI1IDI2Ljc2IDguNzMgMzguN2w2My44MiA1My4xOGM3LjIxIDEuOCAxNC42NCAzLjAzIDIyLjM5IDMuMDMgNjIuMTEgMCA5OC4xMS00NS40NyAyMTEuMTYtMjU2LjQ2IDcuMzgtMTQuMzUgMTMuOS0yOS44NSAxMy45LTQ1Ljk5QzUxMiAyMC42NCA0ODYgMCA0NTcuODkgMHpcIl1cbn07XG52YXIgZmFQYWludFJvbGxlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYWludC1yb2xsZXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1YWFcIiwgXCJNNDE2IDEyOFYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDMyQzE0LjMzIDAgMCAxNC4zMyAwIDMydjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzUyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ6bTMyLTY0djEyOGMwIDE3LjY3LTE0LjMzIDMyLTMyIDMySDI1NmMtMzUuMzUgMC02NCAyOC42NS02NCA2NHYzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxMjhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjM1MmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMydi0zMmgxNjBjNTMuMDIgMCA5Ni00Mi45OCA5Ni05NnYtNjRjMC0zNS4zNS0yOC42NS02NC02NC02NHpcIl1cbn07XG52YXIgZmFQYWxldHRlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BhbGV0dGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1M2ZcIiwgXCJNMjA0LjMgNUMxMDQuOSAyNC40IDI0LjggMTA0LjMgNS4yIDIwMy40Yy0zNyAxODcgMTMxLjcgMzI2LjQgMjU4LjggMzA2LjcgNDEuMi02LjQgNjEuNC01NC42IDQyLjUtOTEuNy0yMy4xLTQ1LjQgOS45LTk4LjQgNjAuOS05OC40aDc5LjdjMzUuOCAwIDY0LjgtMjkuNiA2NC45LTY1LjNDNTExLjUgOTcuMSAzNjguMS0yNi45IDIwNC4zIDV6TTk2IDMyMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTMyLTEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTEyOC02NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTEyOCA2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJdXG59O1xudmFyIGZhUGFsbGV0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BhbGxldCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjQ4MlwiLCBcIk0xNDQgMjU2aDM1MmM4LjggMCAxNi03LjIgMTYtMTZWMTZjMC04LjgtNy4yLTE2LTE2LTE2SDM4NHYxMjhsLTY0LTMyLTY0IDMyVjBIMTQ0Yy04LjggMC0xNiA3LjItMTYgMTZ2MjI0YzAgOC44IDcuMiAxNiAxNiAxNnptNDgwIDEyOGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHY2NEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg2MDhjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZoLTQ4di02NGg0OHptLTMzNiA2NEgxMjh2LTY0aDE2MHY2NHptMjI0IDBIMzUydi02NGgxNjB2NjR6XCJdXG59O1xudmFyIGZhUGFwZXJQbGFuZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYXBlci1wbGFuZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjFkOFwiLCBcIk00NzYgMy4yTDEyLjUgMjcwLjZjLTE4LjEgMTAuNC0xNS44IDM1LjYgMi4yIDQzLjJMMTIxIDM1OC40bDI4Ny4zLTI1My4yYzUuNS00LjkgMTMuMyAyLjYgOC42IDguM0wxNzYgNDA3djgwLjVjMCAyMy42IDI4LjUgMzIuOSA0Mi41IDE1LjhMMjgyIDQyNmwxMjQuNiA1Mi4yYzE0LjIgNiAzMC40LTIuOSAzMy0xOC4ybDcyLTQzMkM1MTUgNy44IDQ5My4zLTYuOCA0NzYgMy4yelwiXVxufTtcbnZhciBmYVBhcGVyY2xpcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYXBlcmNsaXAnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwYzZcIiwgXCJNNDMuMjQ2IDQ2Ni4xNDJjLTU4LjQzLTYwLjI4OS01Ny4zNDEtMTU3LjUxMSAxLjM4Ni0yMTcuNTgxTDI1NC4zOTIgMzRjNDQuMzE2LTQ1LjMzMiAxMTYuMzUxLTQ1LjMzNiAxNjAuNjcxIDAgNDMuODkgNDQuODk0IDQzLjk0MyAxMTcuMzI5IDAgMTYyLjI3NkwyMzIuMjE0IDM4My4xMjhjLTI5Ljg1NSAzMC41MzctNzguNjMzIDMwLjExMS0xMDcuOTgyLS45OTgtMjguMjc1LTI5Ljk3LTI3LjM2OC03Ny40NzMgMS40NTItMTA2Ljk1M2wxNDMuNzQzLTE0Ni44MzVjNi4xODItNi4zMTQgMTYuMzEyLTYuNDIyIDIyLjYyNi0uMjQxbDIyLjg2MSAyMi4zNzljNi4zMTUgNi4xODIgNi40MjIgMTYuMzEyLjI0MSAyMi42MjZMMTcxLjQyNyAzMTkuOTI3Yy00LjkzMiA1LjA0NS01LjIzNiAxMy40MjgtLjY0OCAxOC4yOTIgNC4zNzIgNC42MzQgMTEuMjQ1IDQuNzExIDE1LjY4OC4xNjVsMTgyLjg0OS0xODYuODUxYzE5LjYxMy0yMC4wNjIgMTkuNjEzLTUyLjcyNS0uMDExLTcyLjc5OC0xOS4xODktMTkuNjI3LTQ5Ljk1Ny0xOS42MzctNjkuMTU0IDBMOTAuMzkgMjkzLjI5NWMtMzQuNzYzIDM1LjU2LTM1LjI5OSA5My4xMi0xLjE5MSAxMjguMzEzIDM0LjAxIDM1LjA5MyA4OC45ODUgMzUuMTM3IDEyMy4wNTguMjg2bDE3Mi4wNi0xNzUuOTk5YzYuMTc3LTYuMzE5IDE2LjMwNy02LjQzMyAyMi42MjYtLjI1NmwyMi44NzcgMjIuMzY0YzYuMzE5IDYuMTc3IDYuNDM0IDE2LjMwNy4yNTYgMjIuNjI2bC0xNzIuMDYgMTc1Ljk5OGMtNTkuNTc2IDYwLjkzOC0xNTUuOTQzIDYwLjIxNi0yMTQuNzctLjQ4NXpcIl1cbn07XG52YXIgZmFQYXJhY2h1dGVCb3ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGFyYWNodXRlLWJveCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjRjZFwiLCBcIk01MTEuOSAxNzVjLTkuMS03NS42LTc4LjQtMTMyLjQtMTU4LjMtMTU4LjdDMzkwIDU1LjcgNDE2IDExNi45IDQxNiAxOTJoMjguMUwzMjcuNSAzMjEuNWMtMi41LS42LTQuOC0xLjUtNy41LTEuNWgtNDhWMTkyaDExMkMzODQgNzYuOCAzMTUuMSAwIDI1NiAwUzEyOCA3Ni44IDEyOCAxOTJoMTEydjEyOGgtNDhjLTIuNyAwLTUgLjktNy41IDEuNUw2Ny45IDE5Mkg5NmMwLTc1LjEgMjYtMTM2LjMgNjIuNC0xNzUuN0M3OC41IDQyLjcgOS4yIDk5LjUuMSAxNzVjLTEuMSA5LjEgNi44IDE3IDE2IDE3aDguN2wxMzYuNyAxNTEuOWMtLjcgMi42LTEuNiA1LjItMS42IDguMXYxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJoMTI4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM1MmMwLTIuOS0uOS01LjQtMS42LTguMUw0ODcuMSAxOTJoOC43YzkuMyAwIDE3LjItNy44IDE2LjEtMTd6XCJdXG59O1xudmFyIGZhUGFyYWdyYXBoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BhcmFncmFwaCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjFkZFwiLCBcIk00NDggNDh2MzJhMTYgMTYgMCAwIDEtMTYgMTZoLTQ4djM2OGExNiAxNiAwIDAgMS0xNiAxNmgtMzJhMTYgMTYgMCAwIDEtMTYtMTZWOTZoLTMydjM2OGExNiAxNiAwIDAgMS0xNiAxNmgtMzJhMTYgMTYgMCAwIDEtMTYtMTZWMzUyaC0zMmExNjAgMTYwIDAgMCAxIDAtMzIwaDI0MGExNiAxNiAwIDAgMSAxNiAxNnpcIl1cbn07XG52YXIgZmFQYXJraW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BhcmtpbmcnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1NDBcIiwgXCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMjQwIDMyMGgtNDh2NDhjMCA4LjgtNy4yIDE2LTE2IDE2aC0zMmMtOC44IDAtMTYtNy4yLTE2LTE2VjE0NGMwLTguOCA3LjItMTYgMTYtMTZoOTZjNTIuOSAwIDk2IDQzLjEgOTYgOTZzLTQzLjEgOTYtOTYgOTZ6bTAtMTI4aC00OHY2NGg0OGMxNy42IDAgMzItMTQuNCAzMi0zMnMtMTQuNC0zMi0zMi0zMnpcIl1cbn07XG52YXIgZmFQYXNzcG9ydCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYXNzcG9ydCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjVhYlwiLCBcIk0xMjkuNjIgMTc2aDM5LjA5YzEuNDktMjcuMDMgNi41NC01MS4zNSAxNC4yMS03MC40MS0yNy43MSAxMy4yNC00OC4wMiAzOS4xOS01My4zIDcwLjQxem0wIDMyYzUuMjkgMzEuMjIgMjUuNTkgNTcuMTcgNTMuMyA3MC40MS03LjY4LTE5LjA2LTEyLjcyLTQzLjM4LTE0LjIxLTcwLjQxaC0zOS4wOXpNMjI0IDI4Ni42OWM3LjY5LTcuNDUgMjAuNzctMzQuNDIgMjMuNDMtNzguNjloLTQ2Ljg3YzIuNjcgNDQuMjYgMTUuNzUgNzEuMjQgMjMuNDQgNzguNjl6TTIwMC41NyAxNzZoNDYuODdjLTIuNjYtNDQuMjYtMTUuNzQtNzEuMjQtMjMuNDMtNzguNjktNy43IDcuNDUtMjAuNzggMzQuNDMtMjMuNDQgNzguNjl6bTY0LjUxIDEwMi40MWMyNy43MS0xMy4yNCA0OC4wMi0zOS4xOSA1My4zLTcwLjQxaC0zOS4wOWMtMS40OSAyNy4wMy02LjUzIDUxLjM1LTE0LjIxIDcwLjQxek00MTYgMEg2NEMyOC42NSAwIDAgMjguNjUgMCA2NHYzODRjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzNTJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0tODAgNDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmgyMjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZ6bS0xMTItOTZjLTcwLjY5IDAtMTI4LTU3LjMxLTEyOC0xMjhTMTUzLjMxIDY0IDIyNCA2NHMxMjggNTcuMzEgMTI4IDEyOC01Ny4zMSAxMjgtMTI4IDEyOHptNDEuMDgtMjE0LjQxYzcuNjggMTkuMDYgMTIuNzIgNDMuMzggMTQuMjEgNzAuNDFoMzkuMDljLTUuMjgtMzEuMjItMjUuNTktNTcuMTctNTMuMy03MC40MXpcIl1cbn07XG52YXIgZmFQYXN0YWZhcmlhbmlzbSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYXN0YWZhcmlhbmlzbScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjY3YlwiLCBcIk02MjQuNTQgMzQ3LjY3Yy0zMi43LTEyLjUyLTU3LjM2IDQuMjUtNzUuMzcgMTYuNDUtMTcuMDYgMTEuNTMtMjMuMjUgMTQuNDItMzEuNDEgMTEuMzYtOC4xMi0zLjA5LTEwLjgzLTkuMzgtMTUuODktMjkuMzgtMy4zMy0xMy4xNS03LjQ0LTI5LjMyLTE3Ljk1LTQyLjY1IDIuMjQtMi45MSA0LjQzLTUuNzkgNi4zOC04LjU3QzUwMC40NyAzMDQuNDUgNTEzLjcxIDMxMiA1MzIgMzEyYzMzLjk1IDAgNTAuODctMjUuNzggNjIuMDYtNDIuODMgMTAuNTktMTYuMTQgMTUtMjEuMTcgMjEuOTQtMjEuMTcgMTMuMjUgMCAyNC0xMC43NSAyNC0yNHMtMTAuNzUtMjQtMjQtMjRjLTMzLjk1IDAtNTAuODcgMjUuNzgtNjIuMDYgNDIuODMtMTAuNiAxNi4xNC0xNSAyMS4xNy0yMS45NCAyMS4xNy0xNy4zMSAwLTM3LjQ4LTYxLjQzLTk3LjI2LTEwMS45MWwxNy4yNS0zNC41QzQ4NS40MyAxMjUuNSA1MTIgOTcuOTggNTEyIDY0YzAtMzUuMzUtMjguNjUtNjQtNjQtNjRzLTY0IDI4LjY1LTY0IDY0YzAgMTMuMDIgMy45NCAyNS4xIDEwLjYyIDM1LjIxbC0xOC4xNSAzNi4zYy0xNi45OC00LjYtMzUuNi03LjUxLTU2LjQ2LTcuNTFzLTM5LjQ5IDIuOTEtNTYuNDYgNy41MWwtMTguMTUtMzYuM0MyNTIuMDYgODkuMSAyNTYgNzcuMDIgMjU2IDY0YzAtMzUuMzUtMjguNjUtNjQtNjQtNjRzLTY0IDI4LjY1LTY0IDY0YzAgMzMuOTggMjYuNTYgNjEuNSA2MC4wMiA2My42bDE3LjI1IDM0LjVDMTQ1LjY4IDIwMi40NCAxMjUuMTUgMjY0IDEwOCAyNjRjLTYuOTQgMC0xMS4zNC01LjAzLTIxLjk0LTIxLjE3Qzc0Ljg4IDIyNS43OCA1Ny45NiAyMDAgMjQgMjAwYy0xMy4yNSAwLTI0IDEwLjc1LTI0IDI0czEwLjc1IDI0IDI0IDI0YzYuOTQgMCAxMS4zNCA1LjAzIDIxLjk0IDIxLjE3QzU3LjEzIDI4Ni4yMiA3NC4wNSAzMTIgMTA4IDMxMmMxOC4yOSAwIDMxLjUzLTcuNTUgNDEuNy0xNy4xMSAxLjk1IDIuNzkgNC4xNCA1LjY2IDYuMzggOC41Ny0xMC41MSAxMy4zMy0xNC42MiAyOS41LTE3Ljk1IDQyLjY1LTUuMDYgMjAtNy43NyAyNi4yOC0xNS44OSAyOS4zOC04LjExIDMuMDYtMTQuMzMuMTctMzEuNDEtMTEuMzYtMTguMDMtMTIuMi00Mi43Mi0yOC45Mi03NS4zNy0xNi40NS0xMi4zOSA0LjcyLTE4LjU5IDE4LjU4LTEzLjg3IDMwLjk3IDQuNzIgMTIuNDEgMTguNjEgMTguNjEgMzAuOTcgMTMuODggOC4xNi0zLjA5IDE0LjM0LS4xOSAzMS4zOSAxMS4zNiAxMy41NSA5LjE2IDMwLjgzIDIwLjg2IDUyLjQyIDIwLjg0IDcuMTcgMCAxNC44My0xLjI4IDIyLjk3LTQuMzkgMzIuNjYtMTIuNDQgMzkuOTgtNDEuMzMgNDUuMzMtNjIuNDQgMi4yMS04LjcyIDMuOTktMTQuNDkgNS45NS0xOC44NyAxNi42MiAxMy42MSAzNi45NSAyNS44OCA2MS42NCAzNC4xNy05Ljk2IDM3LTMyLjE4IDkwLjgtNjAuMjYgOTAuOC0xMy4yNSAwLTI0IDEwLjc1LTI0IDI0czEwLjc1IDI0IDI0IDI0YzY2Ljc0IDAgOTcuMDUtODguNjMgMTA3LjQyLTEyOS4xNCA2LjY5LjYgMTMuNDIgMS4xNCAyMC41OCAxLjE0czEzLjg5LS41NCAyMC41OC0xLjE0QzM1MC45NSA0MjMuMzcgMzgxLjI2IDUxMiA0NDggNTEyYzEzLjI1IDAgMjQtMTAuNzUgMjQtMjRzLTEwLjc1LTI0LTI0LTI0Yy0yNy45NCAwLTUwLjIxLTUzLjgxLTYwLjIyLTkwLjgxIDI0LjY5LTguMjkgNDUtMjAuNTYgNjEuNjItMzQuMTYgMS45NiA0LjM4IDMuNzQgMTAuMTUgNS45NSAxOC44NyA1LjM0IDIxLjExIDEyLjY3IDUwIDQ1LjMzIDYyLjQ0IDguMTQgMy4xMSAxNS44IDQuMzkgMjIuOTcgNC4zOSAyMS41OSAwIDM4Ljg3LTExLjY5IDUyLjQyLTIwLjg0IDE3LjA1LTExLjU1IDIzLjI4LTE0LjQ1IDMxLjM5LTExLjM2IDEyLjM5IDQuNzUgMjYuMjctMS40NyAzMC45Ny0xMy44OCA0LjcxLTEyLjQtMS40OS0yNi4yNi0xMy44OS0zMC45OHpNNDQ4IDQ4YzguODIgMCAxNiA3LjE4IDE2IDE2cy03LjE4IDE2LTE2IDE2LTE2LTcuMTgtMTYtMTYgNy4xOC0xNiAxNi0xNnptLTI1NiAwYzguODIgMCAxNiA3LjE4IDE2IDE2cy03LjE4IDE2LTE2IDE2LTE2LTcuMTgtMTYtMTYgNy4xOC0xNiAxNi0xNnpcIl1cbn07XG52YXIgZmFQYXN0ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYXN0ZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjBlYVwiLCBcIk0xMjggMTg0YzAtMzAuODc5IDI1LjEyMi01NiA1Ni01NmgxMzZWNTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0aC04MC42MUMyMDQuMzA2IDEyLjg5IDE4My42MzcgMCAxNjAgMHMtNDQuMzA2IDEyLjg5LTU1LjM5IDMySDI0QzEwLjc0NSAzMiAwIDQyLjc0NSAwIDU2djMzNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTA0VjE4NHptMzItMTQ0YzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHMtMTAuNzQ1IDI0LTI0IDI0LTI0LTEwLjc0NS0yNC0yNCAxMC43NDUtMjQgMjQtMjR6bTE4NCAyNDhoMTA0djIwMGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMTg0Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRWMTg0YzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNGgxMzZ2MTA0YzAgMTMuMiAxMC44IDI0IDI0IDI0em0xMDQtMzguMDU5VjI1NmgtOTZ2LTk2aDYuMDU5YTI0IDI0IDAgMCAxIDE2Ljk3IDcuMDI5bDY1Ljk0MSA2NS45NDFhMjQuMDAyIDI0LjAwMiAwIDAgMSA3LjAzIDE2Ljk3MXpcIl1cbn07XG52YXIgZmFQYXVzZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYXVzZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjA0Y1wiLCBcIk0xNDQgNDc5SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY3OWMwLTI2LjUgMjEuNS00OCA0OC00OGg5NmMyNi41IDAgNDggMjEuNSA0OCA0OHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDh6bTMwNC00OFY3OWMwLTI2LjUtMjEuNS00OC00OC00OGgtOTZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg5NmMyNi41IDAgNDgtMjEuNSA0OC00OHpcIl1cbn07XG52YXIgZmFQYXVzZUNpcmNsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYXVzZS1jaXJjbGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyOGJcIiwgXCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptLTE2IDMyOGMwIDguOC03LjIgMTYtMTYgMTZoLTQ4Yy04LjggMC0xNi03LjItMTYtMTZWMTc2YzAtOC44IDcuMi0xNiAxNi0xNmg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2MTYwem0xMTIgMGMwIDguOC03LjIgMTYtMTYgMTZoLTQ4Yy04LjggMC0xNi03LjItMTYtMTZWMTc2YzAtOC44IDcuMi0xNiAxNi0xNmg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2MTYwelwiXVxufTtcbnZhciBmYVBhdyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYXcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxYjBcIiwgXCJNMjU2IDIyNGMtNzkuNDEgMC0xOTIgMTIyLjc2LTE5MiAyMDAuMjUgMCAzNC45IDI2LjgxIDU1Ljc1IDcxLjc0IDU1Ljc1IDQ4Ljg0IDAgODEuMDktMjUuMDggMTIwLjI2LTI1LjA4IDM5LjUxIDAgNzEuODUgMjUuMDggMTIwLjI2IDI1LjA4IDQ0LjkzIDAgNzEuNzQtMjAuODUgNzEuNzQtNTUuNzVDNDQ4IDM0Ni43NiAzMzUuNDEgMjI0IDI1NiAyMjR6bS0xNDcuMjgtMTIuNjFjLTEwLjQtMzQuNjUtNDIuNDQtNTcuMDktNzEuNTYtNTAuMTMtMjkuMTIgNi45Ni00NC4yOSA0MC42OS0zMy44OSA3NS4zNCAxMC40IDM0LjY1IDQyLjQ0IDU3LjA5IDcxLjU2IDUwLjEzIDI5LjEyLTYuOTYgNDQuMjktNDAuNjkgMzMuODktNzUuMzR6bTg0LjcyLTIwLjc4YzMwLjk0LTguMTQgNDYuNDItNDkuOTQgMzQuNTgtOTMuMzZzLTQ2LjUyLTcyLjAxLTc3LjQ2LTYzLjg3LTQ2LjQyIDQ5Ljk0LTM0LjU4IDkzLjM2YzExLjg0IDQzLjQyIDQ2LjUzIDcyLjAyIDc3LjQ2IDYzLjg3em0yODEuMzktMjkuMzRjLTI5LjEyLTYuOTYtNjEuMTUgMTUuNDgtNzEuNTYgNTAuMTMtMTAuNCAzNC42NSA0Ljc3IDY4LjM4IDMzLjg5IDc1LjM0IDI5LjEyIDYuOTYgNjEuMTUtMTUuNDggNzEuNTYtNTAuMTMgMTAuNC0zNC42NS00Ljc3LTY4LjM4LTMzLjg5LTc1LjM0em0tMTU2LjI3IDI5LjM0YzMwLjk0IDguMTQgNjUuNjItMjAuNDUgNzcuNDYtNjMuODcgMTEuODQtNDMuNDItMy42NC04NS4yMS0zNC41OC05My4zNnMtNjUuNjIgMjAuNDUtNzcuNDYgNjMuODdjLTExLjg0IDQzLjQyIDMuNjQgODUuMjIgMzQuNTggOTMuMzZ6XCJdXG59O1xudmFyIGZhUGVhY2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVhY2UnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY2N2NcIiwgXCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMTg0IDI0OGMwIDMxLjkzLTguMiA2MS45Ny0yMi41NyA4OC4xN0wyODAgMjQwLjYzVjc0Ljk3Yzg2LjIzIDE1LjIxIDE1MiA5MC41IDE1MiAxODEuMDN6TTIxNiA0MzcuMDNjLTMzLjg2LTUuOTctNjQuNDktMjEuMi04OS4yOS00My4wMkwyMTYgMzIyLjU3djExNC40NnptNjQtMTE0LjQ2TDM2OS4yOSAzOTRjLTI0LjggMjEuODItNTUuNDMgMzcuMDUtODkuMjkgNDMuMDJWMzIyLjU3em0tNjQtMjQ3LjZ2MTY1LjY2TDg2LjU3IDM0NC4xN0M3Mi4yIDMxNy45NyA2NCAyODcuOTMgNjQgMjU2YzAtOTAuNTMgNjUuNzctMTY1LjgyIDE1Mi0xODEuMDN6XCJdXG59O1xudmFyIGZhUGVuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlbicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjMwNFwiLCBcIk0yOTAuNzQgOTMuMjRsMTI4LjAyIDEyOC4wMi0yNzcuOTkgMjc3Ljk5LTExNC4xNCAxMi42QzExLjM1IDUxMy41NC0xLjU2IDUwMC42Mi4xNCA0ODUuMzRsMTIuNy0xMTQuMjIgMjc3LjktMjc3Ljg4em0yMDcuMi0xOS4wNmwtNjAuMTEtNjAuMTFjLTE4Ljc1LTE4Ljc1LTQ5LjE2LTE4Ljc1LTY3LjkxIDBsLTU2LjU1IDU2LjU1IDEyOC4wMiAxMjguMDIgNTYuNTUtNTYuNTVjMTguNzUtMTguNzYgMTguNzUtNDkuMTYgMC02Ny45MXpcIl1cbn07XG52YXIgZmFQZW5BbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVuLWFsdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjMwNVwiLCBcIk00OTcuOTQgNzQuMTdsLTYwLjExLTYwLjExYy0xOC43NS0xOC43NS00OS4xNi0xOC43NS02Ny45MSAwbC01Ni41NSA1Ni41NSAxMjguMDIgMTI4LjAyIDU2LjU1LTU2LjU1YzE4Ljc1LTE4Ljc1IDE4Ljc1LTQ5LjE1IDAtNjcuOTF6bS0yNDYuOC0yMC41M2MtMTUuNjItMTUuNjItNDAuOTQtMTUuNjItNTYuNTYgMEw3NS44IDE3Mi40M2MtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42MmwyMi42MyAyMi42M2M2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDEwMS44Mi0xMDEuODIgMjIuNjMgMjIuNjJMOTMuOTUgMjkwLjAzQTMyNy4wMzggMzI3LjAzOCAwIDAgMCAuMTcgNDg1LjExbC0uMDMuMjNjLTEuNyAxNS4yOCAxMS4yMSAyOC4yIDI2LjQ5IDI2LjUxYTMyNy4wMiAzMjcuMDIgMCAwIDAgMTk1LjM0LTkzLjhsMTk2Ljc5LTE5Ni43OS04Mi43Ny04Mi43Ny04NC44NS04NC44NXpcIl1cbn07XG52YXIgZmFQZW5GYW5jeSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZW4tZmFuY3knLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1YWNcIiwgXCJNNzkuMTggMjgyLjk0YTMyLjAwNSAzMi4wMDUgMCAwIDAtMjAuMjQgMjAuMjRMMCA0ODBsNC42OSA0LjY5IDkyLjg5LTkyLjg5Yy0uNjYtMi41Ni0xLjU3LTUuMDMtMS41Ny03LjggMC0xNy42NyAxNC4zMy0zMiAzMi0zMnMzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMmMtMi43NyAwLTUuMjQtLjkxLTcuOC0xLjU3bC05Mi44OSA5Mi44OUwzMiA1MTJsMTc2LjgyLTU4Ljk0YTMxLjk4MyAzMS45ODMgMCAwIDAgMjAuMjQtMjAuMjRsMzMuMDctODQuMDctOTguODgtOTguODgtODQuMDcgMzMuMDd6TTM2OS4yNSAyOC4zMkwxODYuMTQgMjI3LjgxbDk3Ljg1IDk3Ljg1IDE5OS40OS0xODMuMTFDNTY4LjQgNjcuNDggNDQzLjczLTU1Ljk0IDM2OS4yNSAyOC4zMnpcIl1cbn07XG52YXIgZmFQZW5OaWIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVuLW5pYicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjVhZFwiLCBcIk0xMzYuNiAxMzguNzlhNjQuMDAzIDY0LjAwMyAwIDAgMC00My4zMSA0MS4zNUwwIDQ2MGwxNC42OSAxNC42OUwxNjQuOCAzMjQuNThjLTIuOTktNi4yNi00LjgtMTMuMTgtNC44LTIwLjU4IDAtMjYuNTEgMjEuNDktNDggNDgtNDhzNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDhjLTcuNCAwLTE0LjMyLTEuODEtMjAuNTgtNC44TDM3LjMxIDQ5Ny4zMSA1MiA1MTJsMjc5Ljg2LTkzLjI5YTY0LjAwMyA2NC4wMDMgMCAwIDAgNDEuMzUtNDMuMzFMNDE2IDIyNCAyODggOTZsLTE1MS40IDQyLjc5em0zNjEuMzQtNjQuNjJsLTYwLjExLTYwLjExYy0xOC43NS0xOC43NS00OS4xNi0xOC43NS02Ny45MSAwbC01Ni41NSA1Ni41NSAxMjguMDIgMTI4LjAyIDU2LjU1LTU2LjU1YzE4Ljc1LTE4Ljc1IDE4Ljc1LTQ5LjE1IDAtNjcuOTF6XCJdXG59O1xudmFyIGZhUGVuU3F1YXJlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Blbi1zcXVhcmUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxNGJcIiwgXCJNNDAwIDQ4MEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4djM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OHpNMjM4LjEgMTc3LjlMMTAyLjQgMzEzLjZsLTYuMyA1Ny4xYy0uOCA3LjYgNS42IDE0LjEgMTMuMyAxMy4zbDU3LjEtNi4zTDMwMi4yIDI0MmMyLjMtMi4zIDIuMy02LjEgMC04LjVMMjQ2LjcgMTc4Yy0yLjUtMi40LTYuMy0yLjQtOC42LS4xek0zNDUgMTY1LjFMMzE0LjkgMTM1Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMGwtMjMuMSAyMy4xYy0yLjMgMi4zLTIuMyA2LjEgMCA4LjVsNTUuNSA1NS41YzIuMyAyLjMgNi4xIDIuMyA4LjUgMEwzNDUgMTk5YzkuMy05LjMgOS4zLTI0LjUgMC0zMy45elwiXVxufTtcbnZhciBmYVBlbmNpbEFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZW5jaWwtYWx0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMzAzXCIsIFwiTTQ5Ny45IDE0Mi4xbC00Ni4xIDQ2LjFjLTQuNyA0LjctMTIuMyA0LjctMTcgMGwtMTExLTExMWMtNC43LTQuNy00LjctMTIuMyAwLTE3bDQ2LjEtNDYuMWMxOC43LTE4LjcgNDkuMS0xOC43IDY3LjkgMGw2MC4xIDYwLjFjMTguOCAxOC43IDE4LjggNDkuMSAwIDY3Ljl6TTI4NC4yIDk5LjhMMjEuNiAzNjIuNC40IDQ4My45Yy0yLjkgMTYuNCAxMS40IDMwLjYgMjcuOCAyNy44bDEyMS41LTIxLjMgMjYyLjYtMjYyLjZjNC43LTQuNyA0LjctMTIuMyAwLTE3bC0xMTEtMTExYy00LjgtNC43LTEyLjQtNC43LTE3LjEgMHpNMTI0LjEgMzM5LjljLTUuNS01LjUtNS41LTE0LjMgMC0xOS44bDE1NC0xNTRjNS41LTUuNSAxNC4zLTUuNSAxOS44IDBzNS41IDE0LjMgMCAxOS44bC0xNTQgMTU0Yy01LjUgNS41LTE0LjMgNS41LTE5LjggMHpNODggNDI0aDQ4djM2LjNsLTY0LjUgMTEuMy0zMS4xLTMxLjFMNTEuNyAzNzZIODh2NDh6XCJdXG59O1xudmFyIGZhUGVuY2lsUnVsZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVuY2lsLXJ1bGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNWFlXCIsIFwiTTEwOS40NiAyNDQuMDRsMTM0LjU4LTEzNC41Ni00NC4xMi00NC4xMi02MS42OCA2MS42OGE3LjkxOSA3LjkxOSAwIDAgMS0xMS4yMSAwbC0xMS4yMS0xMS4yMWMtMy4xLTMuMS0zLjEtOC4xMiAwLTExLjIxbDYxLjY4LTYxLjY4LTMzLjY0LTMzLjY1QzEzMS40Ny0zLjEgMTExLjM5LTMuMSA5OSA5LjI5TDkuMjkgOTljLTEyLjM4IDEyLjM5LTEyLjM5IDMyLjQ3IDAgNDQuODZsMTAwLjE3IDEwMC4xOHptMzg4LjQ3LTExNi44YzE4Ljc2LTE4Ljc2IDE4Ljc1LTQ5LjE3IDAtNjcuOTNsLTQ1LjI1LTQ1LjI1Yy0xOC43Ni0xOC43Ni00OS4xOC0xOC43Ni02Ny45NSAwbC00Ni4wMiA0Ni4wMSAxMTMuMiAxMTMuMiA0Ni4wMi00Ni4wM3pNMzE2LjA4IDgyLjcxbC0yOTcgMjk2Ljk2TC4zMiA0ODcuMTFjLTIuNTMgMTQuNDkgMTAuMDkgMjcuMTEgMjQuNTkgMjQuNTZsMTA3LjQ1LTE4Ljg0TDQyOS4yOCAxOTUuOSAzMTYuMDggODIuNzF6bTE4Ni42MyAyODUuNDNsLTMzLjY0LTMzLjY0LTYxLjY4IDYxLjY4Yy0zLjEgMy4xLTguMTIgMy4xLTExLjIxIDBsLTExLjIxLTExLjIxYy0zLjA5LTMuMS0zLjA5LTguMTIgMC0xMS4yMWw2MS42OC02MS42OC00NC4xNC00NC4xNEwyNjcuOTMgNDAyLjVsMTAwLjIxIDEwMC4yYzEyLjM5IDEyLjM5IDMyLjQ3IDEyLjM5IDQ0Ljg2IDBsODkuNzEtODkuN2MxMi4zOS0xMi4zOSAxMi4zOS0zMi40NyAwLTQ0Ljg2elwiXVxufTtcbnZhciBmYVBlb3BsZUFycm93cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZW9wbGUtYXJyb3dzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlMDY4XCIsIFwiTTk2LDEyOEE2NCw2NCwwLDEsMCwzMiw2NCw2NCw2NCwwLDAsMCw5NiwxMjhabTAsMTc2LjA4YTQ0LjExLDQ0LjExLDAsMCwxLDEzLjY0LTMyTDE4MS43NywyMDRjMS42NS0xLjU1LDMuNzctMi4zMSw1LjYxLTMuNTdBNjMuOTEsNjMuOTEsMCwwLDAsMTI4LDE2MEg2NEE2NCw2NCwwLDAsMCwwLDIyNHY5NmEzMiwzMiwwLDAsMCwzMiwzMlY0ODBhMzIsMzIsMCwwLDAsMzIsMzJoNjRhMzIsMzIsMCwwLDAsMzItMzJWMzgzLjYxbC01MC4zNi00Ny41M0E0NC4wOCw0NC4wOCwwLDAsMSw5NiwzMDQuMDhaTTQ4MCwxMjhhNjQsNjQsMCwxLDAtNjQtNjRBNjQsNjQsMCwwLDAsNDgwLDEyOFptMzIsMzJINDQ4YTYzLjkxLDYzLjkxLDAsMCwwLTU5LjM4LDQwLjQyYzEuODQsMS4yNyw0LDIsNS42MiwzLjU5bDcyLjEyLDY4LjA2YTQ0LjM3LDQ0LjM3LDAsMCwxLDAsNjRMNDE2LDM4My42MlY0ODBhMzIsMzIsMCwwLDAsMzIsMzJoNjRhMzIsMzIsMCwwLDAsMzItMzJWMzUyYTMyLDMyLDAsMCwwLDMyLTMyVjIyNEE2NCw2NCwwLDAsMCw1MTIsMTYwWk00NDQuNCwyOTUuMzRsLTcyLjEyLTY4LjA2QTEyLDEyLDAsMCwwLDM1MiwyMzZ2MzZIMjI0VjIzNmExMiwxMiwwLDAsMC0yMC4yOC04LjczTDEzMS42LDI5NS4zNGExMi40LDEyLjQsMCwwLDAsMCwxNy40N2w3Mi4xMiw2OC4wN0ExMiwxMiwwLDAsMCwyMjQsMzcyLjE0VjMzNkgzNTJ2MzYuMTRhMTIsMTIsMCwwLDAsMjAuMjgsOC43NGw3Mi4xMi02OC4wN0ExMi40LDEyLjQsMCwwLDAsNDQ0LjQsMjk1LjM0WlwiXVxufTtcbnZhciBmYVBlb3BsZUNhcnJ5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Blb3BsZS1jYXJyeScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjRjZVwiLCBcIk0xMjggOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhTMTU0LjUgMCAxMjggMCA4MCAyMS41IDgwIDQ4czIxLjUgNDggNDggNDh6bTM4NCAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4UzUzOC41IDAgNTEyIDBzLTQ4IDIxLjUtNDggNDggMjEuNSA0OCA0OCA0OHptMTI1LjcgMzcyLjFsLTQ0LTExMC00MS4xIDQ2LjQtMiAxOC4yIDI3LjcgNjkuMmM1IDEyLjUgMTcgMjAuMSAyOS43IDIwLjEgNCAwIDgtLjcgMTEuOS0yLjMgMTYuNC02LjYgMjQuNC0yNS4yIDE3LjgtNDEuNnptLTM0LjItMjA5LjhMNTg1IDE3OC4xYy00LjYtMjAtMTguNi0zNi44LTM3LjUtNDQuOS0xOC41LTgtMzktNi43LTU2LjEgMy4zLTIyLjcgMTMuNC0zOS43IDM0LjUtNDguMSA1OS40TDQzMiAyMjkuOCA0MTYgMjQwdi05NmMwLTguOC03LjItMTYtMTYtMTZIMjQwYy04LjggMC0xNiA3LjItMTYgMTZ2OTZsLTE2LjEtMTAuMi0xMS4zLTMzLjljLTguMy0yNS0yNS40LTQ2LTQ4LjEtNTkuNC0xNy4yLTEwLTM3LjYtMTEuMy01Ni4xLTMuMy0xOC45IDguMS0zMi45IDI0LjktMzcuNSA0NC45bC0xOC40IDgwLjJjLTQuNiAyMCAuNyA0MS4yIDE0LjQgNTYuN2w2Ny4yIDc1LjkgMTAuMSA5Mi42QzEzMCA0OTkuOCAxNDMuOCA1MTIgMTYwIDUxMmMxLjIgMCAyLjMtLjEgMy41LS4yIDE3LjYtMS45IDMwLjItMTcuNyAyOC4zLTM1LjNsLTEwLjEtOTIuOGMtMS41LTEzLTYuOS0yNS4xLTE1LjYtMzVsLTQzLjMtNDkgMTcuNi03MC4zIDYuOCAyMC40YzQuMSAxMi41IDExLjkgMjMuNCAyNC41IDMyLjZsNTEuMSAzMi41YzQuNiAyLjkgMTIuMSA0LjYgMTcuMiA1aDE2MGM1LjEtLjQgMTIuNi0yLjEgMTcuMi01bDUxLjEtMzIuNWMxMi42LTkuMiAyMC40LTIwIDI0LjUtMzIuNmw2LjgtMjAuNCAxNy42IDcwLjMtNDMuMyA0OWMtOC43IDkuOS0xNC4xIDIyLTE1LjYgMzVsLTEwLjEgOTIuOGMtMS45IDE3LjYgMTAuOCAzMy40IDI4LjMgMzUuMyAxLjIuMSAyLjMuMiAzLjUuMiAxNi4xIDAgMzAtMTIuMSAzMS44LTI4LjVsMTAuMS05Mi42IDY3LjItNzUuOWMxMy42LTE1LjUgMTktMzYuNyAxNC40LTU2Ljd6TTQ2LjMgMzU4LjFsLTQ0IDExMGMtNi42IDE2LjQgMS40IDM1IDE3LjggNDEuNiAxNi44IDYuNiAzNS4xLTEuNyA0MS42LTE3LjhsMjcuNy02OS4yLTItMTguMi00MS4xLTQ2LjR6XCJdXG59O1xudmFyIGZhUGVwcGVySG90ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcHBlci1ob3QnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY4MTZcIiwgXCJNMzMwLjY3IDI2My4xMlYxNzMuNGwtNTIuNzUtMjQuMjJDMjE5LjQ0IDIxOC43NiAxOTcuNTggNDAwIDU2IDQwMGE1NiA1NiAwIDAgMCAwIDExMmMyMTIuNjQgMCAzNzAuNjUtMTIyLjg3IDQxOS4xOC0yMTAuMzRsLTM3LjA1LTM4LjU0em0xMzEuMDktMTI4LjM3QzQ5My45MiA3NC45MSA0NzcuMTggMjYuNDggNDU4LjYyIDNhOCA4IDAgMCAwLTExLjkzLS41OWwtMjIuOSAyM2E4LjA2IDguMDYgMCAwIDAtLjg5IDEwLjIzYzYuODYgMTAuMzYgMTcuMDUgMzUuMS0xLjQgNzIuMzJBMTQyLjg1IDE0Mi44NSAwIDAgMCAzNjQuMzQgOTZjLTI4IDAtNTQgOC41NC03Ni4zNCAyMi41OWw3NC42NyAzNC4yOXY3OC4yNGg4OS4wOUw1MDYuNDQgMjg4YzMuMjYtMTIuNjIgNS41Ni0yNS42MyA1LjU2LTM5LjMxYTE1NCAxNTQgMCAwIDAtNTAuMjQtMTEzLjk0elwiXVxufTtcbnZhciBmYVBlcmNlbnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyY2VudCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjI5NVwiLCBcIk0xMTIgMjI0YzYxLjkgMCAxMTItNTAuMSAxMTItMTEyUzE3My45IDAgMTEyIDAgMCA1MC4xIDAgMTEyczUwLjEgMTEyIDExMiAxMTJ6bTAtMTYwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4LTQ4LTIxLjUtNDgtNDggMjEuNS00OCA0OC00OHptMjI0IDIyNGMtNjEuOSAwLTExMiA1MC4xLTExMiAxMTJzNTAuMSAxMTIgMTEyIDExMiAxMTItNTAuMSAxMTItMTEyLTUwLjEtMTEyLTExMi0xMTJ6bTAgMTYwYy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHpNMzkyLjMuMmwzMS42LS4xYzE5LjQtLjEgMzAuOSAyMS44IDE5LjcgMzcuOEw3Ny40IDUwMS42YTIzLjk1IDIzLjk1IDAgMCAxLTE5LjYgMTAuMmwtMzMuNC4xYy0xOS41IDAtMzAuOS0yMS45LTE5LjctMzcuOGwzNjgtNDYzLjdDMzc3LjIgNCAzODQuNS4yIDM5Mi4zLjJ6XCJdXG59O1xudmFyIGZhUGVyY2VudGFnZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJjZW50YWdlJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNTQxXCIsIFwiTTEwOS4yNSAxNzMuMjVjMjQuOTktMjQuOTkgMjQuOTktNjUuNTIgMC05MC41MS0yNC45OS0yNC45OS02NS41Mi0yNC45OS05MC41MSAwLTI0Ljk5IDI0Ljk5LTI0Ljk5IDY1LjUyIDAgOTAuNTEgMjUgMjUgNjUuNTIgMjUgOTAuNTEgMHptMjU2IDE2NS40OWMtMjQuOTktMjQuOTktNjUuNTItMjQuOTktOTAuNTEgMC0yNC45OSAyNC45OS0yNC45OSA2NS41MiAwIDkwLjUxIDI0Ljk5IDI0Ljk5IDY1LjUyIDI0Ljk5IDkwLjUxIDAgMjUtMjQuOTkgMjUtNjUuNTEgMC05MC41MXptLTEuOTQtMjMxLjQzbC0yMi42Mi0yMi42MmMtMTIuNS0xMi41LTMyLjc2LTEyLjUtNDUuMjUgMEwyMC42OSAzNTkuNDRjLTEyLjUgMTIuNS0xMi41IDMyLjc2IDAgNDUuMjVsMjIuNjIgMjIuNjJjMTIuNSAxMi41IDMyLjc2IDEyLjUgNDUuMjUgMGwyNzQuNzUtMjc0Ljc1YzEyLjUtMTIuNDkgMTIuNS0zMi43NSAwLTQ1LjI1elwiXVxufTtcbnZhciBmYVBlcnNvbkJvb3RoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1ib290aCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjc1NlwiLCBcIk0xOTIgNDk2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwaC02NHYxNzZ6bTMyLTI3MmgtNTAuOWwtNDUuMi00NS4zQzExNS44IDE2Ni42IDk5LjcgMTYwIDgyLjcgMTYwSDY0Yy0xNy4xIDAtMzMuMiA2LjctNDUuMyAxOC44QzYuNyAxOTAuOSAwIDIwNyAwIDIyNC4xTC4yIDMyMCAwIDQ4MGMwIDE3LjcgMTQuMyAzMiAzMS45IDMyIDE3LjYgMCAzMi0xNC4zIDMyLTMybC4xLTEwMC43Yy45LjUgMS42IDEuMyAyLjUgMS43bDI5LjEgNDN2NTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMnYtNTYuNWMwLTkuOS0yLjMtMTkuOC02LjctMjguNmwtNDEuMi02MS4zVjI1M2wyMC45IDIwLjljOS4xIDkuMSAyMS4xIDE0LjEgMzMuOSAxNC4xSDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMnpNNjQgMTI4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4UzkwLjUgMzIgNjQgMzIgMTYgNTMuNSAxNiA4MHMyMS41IDQ4IDQ4IDQ4em0yMjQtOTZsMzEuNSAyMjMuMS0zMC45IDE1NC42Yy00LjMgMjEuNiAxMyAzOC4zIDMxLjQgMzguMyAxNS4yIDAgMjgtOS4xIDMyLjMtMzAuNC45IDE2LjkgMTQuNiAzMC40IDMxLjcgMzAuNCAxNy43IDAgMzItMTQuMyAzMi0zMiAwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjBIMjg4djMyem0tOTYgMHYxNjBoNjRWMGgtMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek01NDQgMGgtMzJ2NDk2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6XCJdXG59O1xudmFyIGZhUGhvbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGhvbmUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwOTVcIiwgXCJNNDkzLjQgMjQuNmwtMTA0LTI0Yy0xMS4zLTIuNi0yMi45IDMuMy0yNy41IDEzLjlsLTQ4IDExMmMtNC4yIDkuOC0xLjQgMjEuMyA2LjkgMjhsNjAuNiA0OS42Yy0zNiA3Ni43LTk4LjkgMTQwLjUtMTc3LjIgMTc3LjJsLTQ5LjYtNjAuNmMtNi44LTguMy0xOC4yLTExLjEtMjgtNi45bC0xMTIgNDhDMy45IDM2Ni41LTIgMzc4LjEuNiAzODkuNGwyNCAxMDRDMjcuMSA1MDQuMiAzNi43IDUxMiA0OCA1MTJjMjU2LjEgMCA0NjQtMjA3LjUgNDY0LTQ2NCAwLTExLjItNy43LTIwLjktMTguNi0yMy40elwiXVxufTtcbnZhciBmYVBob25lQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Bob25lLWFsdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjg3OVwiLCBcIk00OTcuMzkgMzYxLjhsLTExMi00OGEyNCAyNCAwIDAgMC0yOCA2LjlsLTQ5LjYgNjAuNkEzNzAuNjYgMzcwLjY2IDAgMCAxIDEzMC42IDIwNC4xMWw2MC42LTQ5LjZhMjMuOTQgMjMuOTQgMCAwIDAgNi45LTI4bC00OC0xMTJBMjQuMTYgMjQuMTYgMCAwIDAgMTIyLjYuNjFsLTEwNCAyNEEyNCAyNCAwIDAgMCAwIDQ4YzAgMjU2LjUgMjA3LjkgNDY0IDQ2NCA0NjRhMjQgMjQgMCAwIDAgMjMuNC0xOC42bDI0LTEwNGEyNC4yOSAyNC4yOSAwIDAgMC0xNC4wMS0yNy42elwiXVxufTtcbnZhciBmYVBob25lU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGhvbmUtc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYzZGRcIiwgXCJNMjY4LjIgMzgxLjRsLTQ5LjYtNjAuNmMtNi44LTguMy0xOC4yLTExLjEtMjgtNi45bC0xMTIgNDhjLTEwLjcgNC42LTE2LjUgMTYuMS0xMy45IDI3LjVsMjQgMTA0YzIuNSAxMC44IDEyLjEgMTguNiAyMy40IDE4LjYgMTAwLjcgMCAxOTMuNy0zMi40IDI2OS43LTg2LjlsLTgwLTYxLjhjLTEwLjkgNi41LTIyLjEgMTIuNy0zMy42IDE4LjF6bTM2NS42IDc2LjdMNDc1LjEgMzM1LjVDNTM3LjkgMjU2LjQgNTc2IDE1Ni45IDU3NiA0OGMwLTExLjItNy43LTIwLjktMTguNi0yMy40bC0xMDQtMjRjLTExLjMtMi42LTIyLjkgMy4zLTI3LjUgMTMuOWwtNDggMTEyYy00LjIgOS44LTEuNCAyMS4zIDYuOSAyOGw2MC42IDQ5LjZjLTEyLjIgMjYuMS0yNy45IDUwLjMtNDYgNzIuOEw0NS41IDMuNEMzOC41LTIgMjguNS0uOCAyMyA2LjJMMy40IDMxLjRjLTUuNCA3LTQuMiAxNyAyLjggMjIuNGw1ODguNCA0NTQuN2M3IDUuNCAxNyA0LjIgMjIuNS0yLjhsMTkuNi0yNS4zYzUuNC02LjggNC4xLTE2LjktMi45LTIyLjN6XCJdXG59O1xudmFyIGZhUGhvbmVTcXVhcmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGhvbmUtc3F1YXJlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDk4XCIsIFwiTTQwMCAzMkg0OEMyMS40OSAzMiAwIDUzLjQ5IDAgODB2MzUyYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMzUyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWODBjMC0yNi41MS0yMS40OS00OC00OC00OHpNOTQgNDE2Yy03LjAzMyAwLTEzLjA1Ny00Ljg3My0xNC42MTYtMTEuNjI3bC0xNC45OTgtNjVhMTUgMTUgMCAwIDEgOC43MDctMTcuMTZsNjkuOTk4LTI5Ljk5OWExNSAxNSAwIDAgMSAxNy41MTggNC4yODlsMzAuOTk3IDM3Ljg4NWM0OC45NDQtMjIuOTYzIDg4LjI5Ny02Mi44NTggMTEwLjc4MS0xMTAuNzhsLTM3Ljg4Ni0zMC45OTdhMTUuMDAxIDE1LjAwMSAwIDAgMS00LjI4OS0xNy41MThsMzAtNjkuOTk4YTE1IDE1IDAgMCAxIDE3LjE2LTguNzA3bDY1IDE0Ljk5OEExNC45OTcgMTQuOTk3IDAgMCAxIDM4NCAxMjZjMCAxNjAuMjkyLTEyOS45NDUgMjkwLTI5MCAyOTB6XCJdXG59O1xudmFyIGZhUGhvbmVTcXVhcmVBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGhvbmUtc3F1YXJlLWFsdCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjg3YlwiLCBcIk00MDAgMzJINDhBNDggNDggMCAwIDAgMCA4MHYzNTJhNDggNDggMCAwIDAgNDggNDhoMzUyYTQ4IDQ4IDAgMCAwIDQ4LTQ4VjgwYTQ4IDQ4IDAgMCAwLTQ4LTQ4em0tMTYuMzkgMzA3LjM3bC0xNSA2NUExNSAxNSAwIDAgMSAzNTQgNDE2QzE5NCA0MTYgNjQgMjg2LjI5IDY0IDEyNmExNS43IDE1LjcgMCAwIDEgMTEuNjMtMTQuNjFsNjUtMTVBMTguMjMgMTguMjMgMCAwIDEgMTQ0IDk2YTE2LjI3IDE2LjI3IDAgMCAxIDEzLjc5IDkuMDlsMzAgNzBBMTcuOSAxNy45IDAgMCAxIDE4OSAxODFhMTcgMTcgMCAwIDEtNS41IDExLjYxbC0zNy44OSAzMWEyMzEuOTEgMjMxLjkxIDAgMCAwIDExMC43OCAxMTAuNzhsMzEtMzcuODlBMTcgMTcgMCAwIDEgMjk5IDI5MWExNy44NSAxNy44NSAwIDAgMSA1LjkxIDEuMjFsNzAgMzBBMTYuMjUgMTYuMjUgMCAwIDEgMzg0IDMzNmExNy40MSAxNy40MSAwIDAgMS0uMzkgMy4zN3pcIl1cbn07XG52YXIgZmFQaG9uZVZvbHVtZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwaG9uZS12b2x1bWUnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYyYTBcIiwgXCJNOTcuMzMzIDUwNi45NjZjLTEyOS44NzQtMTI5Ljg3NC0xMjkuNjgxLTM0MC4yNTIgMC00NjkuOTMzIDUuNjk4LTUuNjk4IDE0LjUyNy02LjYzMiAyMS4yNjMtMi40MjJsNjQuODE3IDQwLjUxM2ExNy4xODcgMTcuMTg3IDAgMCAxIDYuODQ5IDIwLjk1OGwtMzIuNDA4IDgxLjAyMWExNy4xODggMTcuMTg4IDAgMCAxLTE3LjY2OSAxMC43MTlsLTU1LjgxLTUuNThjLTIxLjA1MSA1OC4yNjEtMjAuNjEyIDEyMi40NzEgMCAxNzkuNTE1bDU1LjgxMS01LjU4MWExNy4xODggMTcuMTg4IDAgMCAxIDE3LjY2OSAxMC43MTlsMzIuNDA4IDgxLjAyMmExNy4xODggMTcuMTg4IDAgMCAxLTYuODQ5IDIwLjk1OGwtNjQuODE3IDQwLjUxM2ExNy4xOSAxNy4xOSAwIDAgMS0yMS4yNjQtMi40MjJ6TTI0Ny4xMjYgOTUuNDczYzExLjgzMiAyMC4wNDcgMTEuODMyIDQ1LjAwOCAwIDY1LjA1NS0zLjk1IDYuNjkzLTEzLjEwOCA3Ljk1OS0xOC43MTggMi41ODFsLTUuOTc1LTUuNzI2Yy0zLjkxMS0zLjc0OC00Ljc5My05LjYyMi0yLjI2MS0xNC40MWEzMi4wNjMgMzIuMDYzIDAgMCAwIDAtMjkuOTQ1Yy0yLjUzMy00Ljc4OC0xLjY1LTEwLjY2MiAyLjI2MS0xNC40MWw1Ljk3NS01LjcyNmM1LjYxLTUuMzc4IDE0Ljc2OC00LjExMiAxOC43MTggMi41ODF6bTkxLjc4Ny05MS4xODdjNjAuMTQgNzEuNjA0IDYwLjA5MiAxNzUuODgyIDAgMjQ3LjQyOC00LjQ3NCA1LjMyNy0xMi41MyA1Ljc0Ni0xNy41NTIuOTMzbC01Ljc5OC01LjU1N2MtNC41Ni00LjM3MS00Ljk3Ny0xMS41MjktLjkzLTE2LjM3OSA0OS42ODctNTkuNTM4IDQ5LjY0Ni0xNDUuOTMzIDAtMjA1LjQyMi00LjA0Ny00Ljg1LTMuNjMxLTEyLjAwOC45My0xNi4zNzlsNS43OTgtNS41NTdjNS4wMjItNC44MTMgMTMuMDc4LTQuMzk0IDE3LjU1Mi45MzN6bS00NS45NzIgNDQuOTQxYzM2LjA1IDQ2LjMyMiAzNi4xMDggMTExLjE0OSAwIDE1Ny41NDYtNC4zOSA1LjY0MS0xMi42OTcgNi4yNTEtMTcuODU2IDEuMzA0bC01LjgxOC01LjU3OWMtNC40LTQuMjE5LTQuOTk4LTExLjA5NS0xLjI4NS0xNS45MzEgMjYuNTM2LTM0LjU2NCAyNi41MzQtODIuNTcyIDAtMTE3LjEzNC0zLjcxMy00LjgzNi0zLjExNS0xMS43MTEgMS4yODUtMTUuOTMxbDUuODE4LTUuNTc5YzUuMTU5LTQuOTQ3IDEzLjQ2Ni00LjMzNyAxNy44NTYgMS4zMDR6XCJdXG59O1xudmFyIGZhUGhvdG9WaWRlbyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwaG90by12aWRlbycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjg3Y1wiLCBcIk02MDggMEgxNjBhMzIgMzIgMCAwIDAtMzIgMzJ2OTZoMTYwVjY0aDE5MnYzMjBoMTI4YTMyIDMyIDAgMCAwIDMyLTMyVjMyYTMyIDMyIDAgMCAwLTMyLTMyek0yMzIgMTAzYTkgOSAwIDAgMS05IDloLTMwYTkgOSAwIDAgMS05LTlWNzNhOSA5IDAgMCAxIDktOWgzMGE5IDkgMCAwIDEgOSA5em0zNTIgMjA4YTkgOSAwIDAgMS05IDloLTMwYTkgOSAwIDAgMS05LTl2LTMwYTkgOSAwIDAgMSA5LTloMzBhOSA5IDAgMCAxIDkgOXptMC0xMDRhOSA5IDAgMCAxLTkgOWgtMzBhOSA5IDAgMCAxLTktOXYtMzBhOSA5IDAgMCAxIDktOWgzMGE5IDkgMCAwIDEgOSA5em0wLTEwNGE5IDkgMCAwIDEtOSA5aC0zMGE5IDkgMCAwIDEtOS05VjczYTkgOSAwIDAgMSA5LTloMzBhOSA5IDAgMCAxIDkgOXptLTE2OCA1N0gzMmEzMiAzMiAwIDAgMC0zMiAzMnYyODhhMzIgMzIgMCAwIDAgMzIgMzJoMzg0YTMyIDMyIDAgMCAwIDMyLTMyVjE5MmEzMiAzMiAwIDAgMC0zMi0zMnpNOTYgMjI0YTMyIDMyIDAgMSAxLTMyIDMyIDMyIDMyIDAgMCAxIDMyLTMyem0yODggMjI0SDY0di0zMmw2NC02NCAzMiAzMiAxMjgtMTI4IDk2IDk2elwiXVxufTtcbnZhciBmYVBpZ2d5QmFuayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwaWdneS1iYW5rJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNGQzXCIsIFwiTTU2MCAyMjRoLTI5LjVjLTguOC0yMC0yMS42LTM3LjctMzcuNC01Mi41TDUxMiA5NmgtMzJjLTI5LjQgMC01NS40IDEzLjUtNzMgMzQuMy03LjYtMS4xLTE1LjEtMi4zLTIzLTIuM0gyNTZjLTc3LjQgMC0xNDEuOSA1NS0xNTYuOCAxMjhINTZjLTE0LjggMC0yNi41LTEzLjUtMjMuNS0yOC44QzM0LjcgMjE1LjggNDUuNCAyMDggNTcgMjA4aDFjMy4zIDAgNi0yLjcgNi02di0yMGMwLTMuMy0yLjctNi02LTYtMjguNSAwLTUzLjkgMjAuNC01Ny41IDQ4LjZDLTMuOSAyNTguOCAyMi43IDI4OCA1NiAyODhoNDBjMCA1Mi4yIDI1LjQgOTguMSA2NCAxMjcuM1Y0OTZjMCA4LjggNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNnYtNDhoMTI4djQ4YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZ2LTgwLjdjMTEuOC04LjkgMjIuMy0xOS40IDMxLjMtMzEuM0g1NjBjOC44IDAgMTYtNy4yIDE2LTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZ6bS0xMjggNjRjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnpNMjU2IDk2aDEyOGM1LjQgMCAxMC43LjQgMTUuOS44IDAtLjMuMS0uNS4xLS44IDAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgMi4xLjUgNC4xLjYgNi4yIDE1LjItMy45IDMxLTYuMiA0Ny40LTYuMnpcIl1cbn07XG52YXIgZmFQaWxscyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwaWxscycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjQ4NFwiLCBcIk0xMTIgMzJDNTAuMSAzMiAwIDgyLjEgMCAxNDR2MjI0YzAgNjEuOSA1MC4xIDExMiAxMTIgMTEyczExMi01MC4xIDExMi0xMTJWMTQ0YzAtNjEuOS01MC4xLTExMi0xMTItMTEyem00OCAyMjRINjRWMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2MTEyem0xMzkuNy0yOS43Yy0zLjUtMy41LTkuNC0zLjEtMTIuMy44LTQ1LjMgNjIuNS00MC40IDE1MC4xIDE1LjkgMjA2LjQgNTYuMyA1Ni4zIDE0My45IDYxLjIgMjA2LjQgMTUuOSA0LTIuOSA0LjMtOC44LjgtMTIuM0wyOTkuNyAyMjYuM3ptMjI5LjgtMTljLTU2LjMtNTYuMy0xNDMuOS02MS4yLTIwNi40LTE1LjktNCAyLjktNC4zIDguOC0uOCAxMi4zbDIxMC44IDIxMC44YzMuNSAzLjUgOS40IDMuMSAxMi4zLS44IDQ1LjMtNjIuNiA0MC41LTE1MC4xLTE1LjktMjA2LjR6XCJdXG59O1xudmFyIGZhUGl6emFTbGljZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwaXp6YS1zbGljZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjgxOFwiLCBcIk0xNTguODcuMTVjLTE2LjE2LTEuNTItMzEuMiA4LjQyLTM1LjMzIDI0LjEybC0xNC44MSA1Ni4yN2MxODcuNjIgNS40OSAzMTQuNTQgMTMwLjYxIDMyMi40OCAzMTdsNTYuOTQtMTUuNzhjMTUuNzItNC4zNiAyNS40OS0xOS42OCAyMy42Mi0zNS45QzQ5MC44OSAxNjUuMDggMzQwLjc4IDE3LjMyIDE1OC44Ny4xNXptLTU4LjQ3IDExMkwuNTUgNDkxLjY0YTE2LjIxIDE2LjIxIDAgMCAwIDIwIDE5Ljc1bDM3OS0xMDUuMWMtNC4yNy0xNzQuODktMTIzLjA4LTI5Mi4xNC0yOTkuMTUtMjk0LjF6TTEyOCA0MTZhMzIgMzIgMCAxIDEgMzItMzIgMzIgMzIgMCAwIDEtMzIgMzJ6bTQ4LTE1MmEzMiAzMiAwIDEgMSAzMi0zMiAzMiAzMiAwIDAgMS0zMiAzMnptMTA0IDEwNGEzMiAzMiAwIDEgMSAzMi0zMiAzMiAzMiAwIDAgMS0zMiAzMnpcIl1cbn07XG52YXIgZmFQbGFjZU9mV29yc2hpcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwbGFjZS1vZi13b3JzaGlwJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNjdmXCIsIFwiTTYyMC42MSAzNjYuNTVMNTEyIDMyMHYxOTJoMTEyYzguODQgMCAxNi03LjE2IDE2LTE2VjM5NS45NmEzMiAzMiAwIDAgMC0xOS4zOS0yOS40MXpNMCAzOTUuOTZWNDk2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDExMlYzMjBMMTkuMzkgMzY2LjU1QTMyIDMyIDAgMCAwIDAgMzk1Ljk2em00NjQuNDYtMTQ5LjI4TDQxNiAyMTcuNlYxMDIuNjNjMC04LjQ5LTMuMzctMTYuNjItOS4zOC0yMi42M0wzMzEuMzEgNC42OWMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjIgMEwyMzMuMzggODBjLTYgNi05LjM4IDE0LjE0LTkuMzggMjIuNjNWMjE3LjZsLTQ4LjQ2IDI5LjA4QTMxLjk5NyAzMS45OTcgMCAwIDAgMTYwIDI3NC4xMlY1MTJoOTZ2LTk2YzAtMzUuMzUgMjguNjYtNjQgNjQtNjRzNjQgMjguNjUgNjQgNjR2OTZoOTZWMjc0LjEyYzAtMTEuMjQtNS45LTIxLjY2LTE1LjU0LTI3LjQ0elwiXVxufTtcbnZhciBmYVBsYW5lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BsYW5lJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMDcyXCIsIFwiTTQ4MCAxOTJIMzY1LjcxTDI2MC42MSA4LjA2QTE2LjAxNCAxNi4wMTQgMCAwIDAgMjQ2LjcxIDBoLTY1LjVjLTEwLjYzIDAtMTguMyAxMC4xNy0xNS4zOCAyMC4zOUwyMTQuODYgMTkySDExMmwtNDMuMi01Ny42Yy0zLjAyLTQuMDMtNy43Ny02LjQtMTIuOC02LjRIMTYuMDFDNS42IDEyOC0yLjA0IDEzNy43OC40OSAxNDcuODhMMzIgMjU2IC40OSAzNjQuMTJDLTIuMDQgMzc0LjIyIDUuNiAzODQgMTYuMDEgMzg0SDU2YzUuMDQgMCA5Ljc4LTIuMzcgMTIuOC02LjRMMTEyIDMyMGgxMDIuODZsLTQ5LjAzIDE3MS42Yy0yLjkyIDEwLjIyIDQuNzUgMjAuNCAxNS4zOCAyMC40aDY1LjVjNS43NCAwIDExLjA0LTMuMDggMTMuODktOC4wNkwzNjUuNzEgMzIwSDQ4MGMzNS4zNSAwIDk2LTI4LjY1IDk2LTY0cy02MC42NS02NC05Ni02NHpcIl1cbn07XG52YXIgZmFQbGFuZUFycml2YWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGxhbmUtYXJyaXZhbCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjVhZlwiLCBcIk02MjQgNDQ4SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg2MDhjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2ek00NC44MSAyMDUuNjZsODguNzQgODBhNjIuNjA3IDYyLjYwNyAwIDAgMCAyNS40NyAxMy45M2wyODcuNiA3OC4zNWMyNi40OCA3LjIxIDU0LjU2IDguNzIgODEgMS4zNiAyOS42Ny04LjI3IDQzLjQ0LTIxLjIxIDQ3LjI1LTM1LjcxIDMuODMtMTQuNS0xLjczLTMyLjcxLTIzLjM3LTU0Ljk2LTE5LjI4LTE5LjgyLTQ0LjM1LTMyLjc5LTcwLjgzLTQwbC05Ny41MS0yNi41NkwyODIuOCAzMC4yMmMtMS41MS01LjgxLTUuOTUtMTAuMzUtMTEuNjYtMTEuOTFMMjA2LjA1LjU4Yy0xMC41Ni0yLjg4LTIwLjkgNS4zMi0yMC43MSAxNi40NGw0Ny45MiAxNjQuMjEtMTAyLjItMjcuODQtMjcuNTktNjcuODhjLTEuOTMtNC44OS02LjAxLTguNTctMTEuMDItOS45M0w1Mi43MiA2NC43NWMtMTAuMzQtMi44Mi0yMC41MyA1LTIwLjcyIDE1Ljg4bC4yMyAxMDEuNzhjLjE5IDguOTEgNi4wMyAxNy4zNCAxMi41OCAyMy4yNXpcIl1cbn07XG52YXIgZmFQbGFuZURlcGFydHVyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwbGFuZS1kZXBhcnR1cmUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1YjBcIiwgXCJNNjI0IDQ0OEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNjA4YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpNODAuNTUgMzQxLjI3YzYuMjggNi44NCAxNS4xIDEwLjcyIDI0LjMzIDEwLjcxbDEzMC41NC0uMThhNjUuNjIgNjUuNjIgMCAwIDAgMjkuNjQtNy4xMmwyOTAuOTYtMTQ3LjY1YzI2Ljc0LTEzLjU3IDUwLjcxLTMyLjk0IDY3LjAyLTU4LjMxIDE4LjMxLTI4LjQ4IDIwLjMtNDkuMDkgMTMuMDctNjMuNjUtNy4yMS0xNC41Ny0yNC43NC0yNS4yNy01OC4yNS0yNy40NS0yOS44NS0xLjk0LTU5LjU0IDUuOTItODYuMjggMTkuNDhsLTk4LjUxIDQ5Ljk5LTIxOC43LTgyLjA2YTE3Ljc5OSAxNy43OTkgMCAwIDAtMTgtMS4xMUw5MC42MiA2Ny4yOWMtMTAuNjcgNS40MS0xMy4yNSAxOS42NS01LjE3IDI4LjUzbDE1Ni4yMiA5OC4xLTEwMy4yMSA1Mi4zOC03Mi4zNS0zNi40N2ExNy44MDQgMTcuODA0IDAgMCAwLTE2LjA3LjAyTDkuOTEgMjMwLjIyYy0xMC40NCA1LjMtMTMuMTkgMTkuMTItNS41NyAyOC4wOGw3Ni4yMSA4Mi45N3pcIl1cbn07XG52YXIgZmFQbGFuZVNsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BsYW5lLXNsYXNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlMDY5XCIsIFwiTTMyLjQ4LDE0Ny44OCw2NCwyNTYsMzIuNDgsMzY0LjEzQTE2LDE2LDAsMCwwLDQ4LDM4NEg4OGExNiwxNiwwLDAsMCwxMi44LTYuNDFMMTQ0LDMyMEgyNDYuODVsLTQ5LDE3MS41OUExNiwxNiwwLDAsMCwyMTMuMiw1MTJoNjUuNWExNiwxNiwwLDAsMCwxMy44OS04LjA2bDY2LjYtMTE2LjU0TDM0LjM1LDEzNi4zNEExNS40NywxNS40NywwLDAsMCwzMi40OCwxNDcuODhaTTYzMy44Miw0NTguMDksNDU1LjE0LDMyMEg1MTJjMzUuMzQsMCw5Ni0yOC42Niw5Ni02NHMtNjAuNjYtNjQtOTYtNjRIMzk3LjdMMjkyLjYxLDguMDZDMjkwLjA2LDMuNjEsMjgzLjg0LDAsMjc4LjcxLDBIMjEzLjJhMTYsMTYsMCwwLDAtMTUuMzgsMjAuMzlsMzYuOTQsMTI5LjI5TDQ1LjQ2LDMuMzhBMTYsMTYsMCwwLDAsMjMsNi4xOUwzLjM3LDMxLjQ1QTE2LDE2LDAsMCwwLDYuMTgsNTMuOTFMNTk0LjU0LDUwOC42M0ExNiwxNiwwLDAsMCw2MTcsNTA1LjgxbDE5LjY0LTI1LjI2QTE2LDE2LDAsMCwwLDYzMy44Miw0NTguMDlaXCJdXG59O1xudmFyIGZhUGxheSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwbGF5JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDRiXCIsIFwiTTQyNC40IDIxNC43TDcyLjQgNi42QzQzLjgtMTAuMyAwIDYuMSAwIDQ3LjlWNDY0YzAgMzcuNSA0MC43IDYwLjEgNzIuNCA0MS4zbDM1Mi0yMDhjMzEuNC0xOC41IDMxLjUtNjQuMSAwLTgyLjZ6XCJdXG59O1xudmFyIGZhUGxheUNpcmNsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwbGF5LWNpcmNsZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjE0NFwiLCBcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0xMTUuNyAyNzJsLTE3NiAxMDFjLTE1LjggOC44LTM1LjctMi41LTM1LjctMjFWMTUyYzAtMTguNCAxOS44LTI5LjggMzUuNy0yMWwxNzYgMTA3YzE2LjQgOS4yIDE2LjQgMzIuOSAwIDQyelwiXVxufTtcbnZhciBmYVBsdWcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGx1ZycsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjFlNlwiLCBcIk0zMjAsMzJhMzIsMzIsMCwwLDAtNjQsMHY5Nmg2NFptNDgsMTI4SDE2QTE2LDE2LDAsMCwwLDAsMTc2djMyYTE2LDE2LDAsMCwwLDE2LDE2SDMydjMyQTE2MC4wNywxNjAuMDcsMCwwLDAsMTYwLDQxMi44VjUxMmg2NFY0MTIuOEExNjAuMDcsMTYwLjA3LDAsMCwwLDM1MiwyNTZWMjI0aDE2YTE2LDE2LDAsMCwwLDE2LTE2VjE3NkExNiwxNiwwLDAsMCwzNjgsMTYwWk0xMjgsMzJhMzIsMzIsMCwwLDAtNjQsMHY5Nmg2NFpcIl1cbn07XG52YXIgZmFQbHVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BsdXMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwNjdcIiwgXCJNNDE2IDIwOEgyNzJWNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTQ0SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTQ0djE0NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzA0aDE0NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwiXVxufTtcbnZhciBmYVBsdXNDaXJjbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGx1cy1jaXJjbGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwNTVcIiwgXCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptMTQ0IDI3NmMwIDYuNi01LjQgMTItMTIgMTJoLTkydjkyYzAgNi42LTUuNCAxMi0xMiAxMmgtNTZjLTYuNiAwLTEyLTUuNC0xMi0xMnYtOTJoLTkyYy02LjYgMC0xMi01LjQtMTItMTJ2LTU2YzAtNi42IDUuNC0xMiAxMi0xMmg5MnYtOTJjMC02LjYgNS40LTEyIDEyLTEyaDU2YzYuNiAwIDEyIDUuNCAxMiAxMnY5Mmg5MmM2LjYgMCAxMiA1LjQgMTIgMTJ2NTZ6XCJdXG59O1xudmFyIGZhUGx1c1NxdWFyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwbHVzLXNxdWFyZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjBmZVwiLCBcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tMzIgMjUyYzAgNi42LTUuNCAxMi0xMiAxMmgtOTJ2OTJjMCA2LjYtNS40IDEyLTEyIDEyaC01NmMtNi42IDAtMTItNS40LTEyLTEydi05Mkg5MmMtNi42IDAtMTItNS40LTEyLTEydi01NmMwLTYuNiA1LjQtMTIgMTItMTJoOTJ2LTkyYzAtNi42IDUuNC0xMiAxMi0xMmg1NmM2LjYgMCAxMiA1LjQgMTIgMTJ2OTJoOTJjNi42IDAgMTIgNS40IDEyIDEydjU2elwiXVxufTtcbnZhciBmYVBvZGNhc3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncG9kY2FzdCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjJjZVwiLCBcIk0yNjcuNDI5IDQ4OC41NjNDMjYyLjI4NiA1MDcuNTczIDI0Mi44NTggNTEyIDIyNCA1MTJjLTE4Ljg1NyAwLTM4LjI4Ni00LjQyNy00My40MjgtMjMuNDM3QzE3Mi45MjcgNDYwLjEzNCAxNjAgMzg4Ljg5OCAxNjAgMzU1Ljc1YzAtMzUuMTU2IDMxLjE0Mi00My43NSA2NC00My43NXM2NCA4LjU5NCA2NCA0My43NWMwIDMyLjk0OS0xMi44NzEgMTA0LjE3OS0yMC41NzEgMTMyLjgxM3pNMTU2Ljg2NyAyODguNTU0Yy0xOC42OTMtMTguMzA4LTI5Ljk1OC00NC4xNzMtMjguNzg0LTcyLjU5OSAyLjA1NC00OS43MjQgNDIuMzk1LTg5Ljk1NiA5Mi4xMjQtOTEuODgxQzI3NC44NjIgMTIxLjk1OCAzMjAgMTY1LjgwNyAzMjAgMjIwYzAgMjYuODI3LTExLjA2NCA1MS4xMTYtMjguODY2IDY4LjU1Mi0yLjY3NSAyLjYyLTIuNDAxIDYuOTg2LjYyOCA5LjE4NyA5LjMxMiA2Ljc2NSAxNi40NiAxNS4zNDMgMjEuMjM0IDI1LjM2MyAxLjc0MSAzLjY1NCA2LjQ5NyA0LjY2IDkuNDQ5IDEuODkxIDI4LjgyNi0yNy4wNDMgNDYuNTUzLTY1Ljc4MyA0NS41MTEtMTA4LjU2NS0xLjg1NS03Ni4yMDYtNjMuNTk1LTEzOC4yMDgtMTM5Ljc5My0xNDAuMzY5QzE0Ni44NjkgNzMuNzUzIDgwIDEzOS4yMTUgODAgMjIwYzAgNDEuMzYxIDE3LjUzMiA3OC43IDQ1LjU1IDEwNC45ODkgMi45NTMgMi43NzEgNy43MTEgMS43NyA5LjQ1My0xLjg4NyA0Ljc3NC0xMC4wMjEgMTEuOTIzLTE4LjU5OCAyMS4yMzUtMjUuMzYzIDMuMDI5LTIuMiAzLjMwNC02LjU2Ni42MjktOS4xODV6TTIyNCAwQzEwMC4yMDQgMCAwIDEwMC4xODUgMCAyMjRjMCA4OS45OTIgNTIuNjAyIDE2NS42NDcgMTI1LjczOSAyMDEuNDA4IDQuMzMzIDIuMTE4IDkuMjY3LTEuNTQ0IDguNTM1LTYuMzEtMi4zODItMTUuNTEyLTQuMzQyLTMwLjk0Ni01LjQwNi00NC4zMzktLjE0Ni0xLjgzNi0xLjE0OS0zLjQ4Ni0yLjY3OC00LjUxMi00Ny40LTMxLjgwNi03OC41NjQtODYuMDE2LTc4LjE4Ny0xNDcuMzQ3LjU5Mi05Ni4yMzcgNzkuMjktMTc0LjY0OCAxNzUuNTI5LTE3NC44OTlDMzIwLjc5MyA0Ny43NDcgNDAwIDEyNi43OTcgNDAwIDIyNGMwIDYxLjkzMi0zMi4xNTggMTE2LjQ5LTgwLjY1IDE0Ny44NjctLjk5OSAxNC4wMzctMy4wNjkgMzAuNTg4LTUuNjI0IDQ3LjIzLS43MzIgNC43NjcgNC4yMDMgOC40MjkgOC41MzUgNi4zMUMzOTUuMjI3IDM4OS43MjcgNDQ4IDMxNC4xODcgNDQ4IDIyNCA0NDggMTAwLjIwNSAzNDcuODE1IDAgMjI0IDB6bTAgMTYwYy0zNS4zNDYgMC02NCAyOC42NTQtNjQgNjRzMjguNjU0IDY0IDY0IDY0IDY0LTI4LjY1NCA2NC02NC0yOC42NTQtNjQtNjQtNjR6XCJdXG59O1xudmFyIGZhUG9sbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwb2xsJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNjgxXCIsIFwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE2MCAzNjhjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTMyYy04Ljg0IDAtMTYtNy4xNi0xNi0xNlYyNDBjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMzJjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MTI4em05NiAwYzAgOC44NC03LjE2IDE2LTE2IDE2aC0zMmMtOC44NCAwLTE2LTcuMTYtMTYtMTZWMTQ0YzAtOC44NCA3LjE2LTE2IDE2LTE2aDMyYzguODQgMCAxNiA3LjE2IDE2IDE2djIyNHptOTYgMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtMzJjLTguODQgMC0xNi03LjE2LTE2LTE2di02NGMwLTguODQgNy4xNi0xNiAxNi0xNmgzMmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnY2NHpcIl1cbn07XG52YXIgZmFQb2xsSCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwb2xsLWgnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY2ODJcIiwgXCJNNDQ4IDQzMlY4MGMwLTI2LjUtMjEuNS00OC00OC00OEg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh6TTExMiAxOTJjLTguODQgMC0xNi03LjE2LTE2LTE2di0zMmMwLTguODQgNy4xNi0xNiAxNi0xNmgxMjhjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MzJjMCA4Ljg0LTcuMTYgMTYtMTYgMTZIMTEyem0wIDk2Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMzJjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMjI0YzguODQgMCAxNiA3LjE2IDE2IDE2djMyYzAgOC44NC03LjE2IDE2LTE2IDE2SDExMnptMCA5NmMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTMyYzAtOC44NCA3LjE2LTE2IDE2LTE2aDY0YzguODQgMCAxNiA3LjE2IDE2IDE2djMyYzAgOC44NC03LjE2IDE2LTE2IDE2aC02NHpcIl1cbn07XG52YXIgZmFQb28gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncG9vJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMmZlXCIsIFwiTTQ1MS40IDM2OS4xQzQ2OC43IDM1NiA0ODAgMzM1LjQgNDgwIDMxMmMwLTM5LjgtMzIuMi03Mi03Mi03MmgtMTQuMWMxMy40LTExLjcgMjIuMS0yOC44IDIyLjEtNDggMC0zNS4zLTI4LjctNjQtNjQtNjRoLTUuOWMzLjYtMTAuMSA1LjktMjAuNyA1LjktMzIgMC01My00My05Ni05Ni05Ni01LjIgMC0xMC4yLjctMTUuMSAxLjVDMjUwLjMgMTQuNiAyNTYgMzAuNiAyNTYgNDhjMCA0NC4yLTM1LjggODAtODAgODBoLTE2Yy0zNS4zIDAtNjQgMjguNy02NCA2NCAwIDE5LjIgOC43IDM2LjMgMjIuMSA0OEgxMDRjLTM5LjggMC03MiAzMi4yLTcyIDcyIDAgMjMuNCAxMS4zIDQ0IDI4LjYgNTcuMUMyNi4zIDM3NC42IDAgNDA0LjEgMCA0NDBjMCAzOS44IDMyLjIgNzIgNzIgNzJoMzY4YzM5LjggMCA3Mi0zMi4yIDcyLTcyIDAtMzUuOS0yNi4zLTY1LjQtNjAuNi03MC45ek0xOTIgMjU2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptMTU5LjUgMTM5QzM0MSA0MjIuOSAyOTMgNDQ4IDI1NiA0NDhzLTg1LTI1LjEtOTUuNS01M2MtMi01LjMgMi0xMSA3LjgtMTFoMTc1LjRjNS44IDAgOS44IDUuNyA3LjggMTF6TTMyMCAzMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYVBvb1N0b3JtID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Bvby1zdG9ybScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjc1YVwiLCBcIk0zMDggMzM2aC01Ny43bDE3LjMtNjQuOWMyLTcuNi0zLjctMTUuMS0xMS42LTE1LjFoLTY4Yy02IDAtMTEuMSA0LjUtMTEuOSAxMC40bC0xNiAxMjBjLTEgNy4yIDQuNiAxMy42IDExLjkgMTMuNmg1OS4zbC0yMyA5Ny4yYy0xLjggNy42IDQgMTQuOCAxMS43IDE0LjggNC4yIDAgOC4yLTIuMiAxMC40LTZsODgtMTUyYzQuNi04LTEuMi0xOC0xMC40LTE4em02Ni40LTExMS4zYzUuOS05LjYgOS42LTIwLjYgOS42LTMyLjcgMC0zNS4zLTI4LjctNjQtNjQtNjRoLTUuOWMzLjYtMTAuMSA1LjktMjAuNyA1LjktMzIgMC01My00My05Ni05Ni05Ni01LjIgMC0xMC4yLjctMTUuMSAxLjVDMjE4LjMgMTQuNiAyMjQgMzAuNiAyMjQgNDhjMCA0NC4yLTM1LjggODAtODAgODBoLTE2Yy0zNS4zIDAtNjQgMjguNy02NCA2NCAwIDEyLjEgMy43IDIzLjEgOS42IDMyLjdDMzIuNiAyMjggMCAyNjIuMiAwIDMwNGMwIDQ0IDM2IDgwIDgwIDgwaDQ4LjNjLjEtLjYgMC0xLjIgMC0xLjhsMTYtMTIwYzMtMjEuOCAyMS43LTM4LjIgNDMuNy0zOC4yaDY4YzEzLjggMCAyNi41IDYuMyAzNC45IDE3LjJzMTEuMiAyNC44IDcuNiAzOC4xbC02LjYgMjQuN2gxNmMxNS43IDAgMzAuMyA4LjQgMzguMSAyMiA3LjggMTMuNiA3LjggMzAuNSAwIDQ0bC04LjEgMTRoMzBjNDQgMCA4MC0zNiA4MC04MCAuMS00MS44LTMyLjUtNzYtNzMuNS03OS4zelwiXVxufTtcbnZhciBmYVBvb3AgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncG9vcCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjYxOVwiLCBcIk00NTEuMzYgMzY5LjE0QzQ2OC42NiAzNTUuOTkgNDgwIDMzNS40MSA0ODAgMzEyYzAtMzkuNzctMzIuMjQtNzItNzItNzJoLTE0LjA3YzEzLjQyLTExLjczIDIyLjA3LTI4Ljc4IDIyLjA3LTQ4IDAtMzUuMzUtMjguNjUtNjQtNjQtNjRoLTUuODhjMy41Ny0xMC4wNSA1Ljg4LTIwLjcyIDUuODgtMzIgMC01My4wMi00Mi45OC05Ni05Ni05Ni01LjE3IDAtMTAuMTUuNzQtMTUuMTEgMS41MkMyNTAuMzEgMTQuNjQgMjU2IDMwLjYyIDI1NiA0OGMwIDQ0LjE4LTM1LjgyIDgwLTgwIDgwaC0xNmMtMzUuMzUgMC02NCAyOC42NS02NCA2NCAwIDE5LjIyIDguNjUgMzYuMjcgMjIuMDcgNDhIMTA0Yy0zOS43NiAwLTcyIDMyLjIzLTcyIDcyIDAgMjMuNDEgMTEuMzQgNDMuOTkgMjguNjQgNTcuMTRDMjYuMzEgMzc0LjYyIDAgNDA0LjEyIDAgNDQwYzAgMzkuNzYgMzIuMjQgNzIgNzIgNzJoMzY4YzM5Ljc2IDAgNzItMzIuMjQgNzItNzIgMC0zNS44OC0yNi4zMS02NS4zOC02MC42NC03MC44NnpcIl1cbn07XG52YXIgZmFQb3J0cmFpdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwb3J0cmFpdCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjNlMFwiLCBcIk0zMzYgMEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTkyIDEyOGMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NC02NC0yOC43LTY0LTY0IDI4LjctNjQgNjQtNjR6bTExMiAyMzYuOGMwIDEwLjYtMTAgMTkuMi0yMi40IDE5LjJIMTAyLjRDOTAgMzg0IDgwIDM3NS40IDgwIDM2NC44di0xOS4yYzAtMzEuOCAzMC4xLTU3LjYgNjcuMi01Ny42aDVjMTIuMyA1LjEgMjUuNyA4IDM5LjggOHMyNy42LTIuOSAzOS44LThoNWMzNy4xIDAgNjcuMiAyNS44IDY3LjIgNTcuNnYxOS4yelwiXVxufTtcbnZhciBmYVBvdW5kU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwb3VuZC1zaWduJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJmMTU0XCIsIFwiTTMwOCAzNTJoLTQ1LjQ5NWMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY1MC44NDhIMTI4VjI4OGg4NGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC04NHYtNjMuNTU2YzAtMzIuMjY2IDI0LjU2Mi01Ny4wODYgNjEuNzkyLTU3LjA4NiAyMy42NTggMCA0NS44NzggMTEuNTA1IDU3LjY1MiAxOC44NDkgNS4xNTEgMy4yMTMgMTEuODg4IDIuMDUxIDE1LjY4OC0yLjY4NWwyOC40OTMtMzUuNTEzYzQuMjMzLTUuMjc2IDMuMjc5LTEzLjAwNS0yLjExOS0xNy4wODFDMjczLjEyNCA1NC41NiAyMzYuNTc2IDMyIDE4Ny45MzEgMzIgMTA2LjAyNiAzMiA0OCA4NC43NDIgNDggMTU3Ljk2MVYyMjRIMjBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOHYxMjhIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOTZjNi42MjcgMCAxMi01LjM3MyAxMi0xMlYzNjRjMC02LjYyNy01LjM3My0xMi0xMi0xMnpcIl1cbn07XG52YXIgZmFQb3dlck9mZiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwb3dlci1vZmYnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwMTFcIiwgXCJNNDAwIDU0LjFjNjMgNDUgMTA0IDExOC42IDEwNCAyMDEuOSAwIDEzNi44LTExMC44IDI0Ny43LTI0Ny41IDI0OEMxMjAgNTA0LjMgOC4yIDM5MyA4IDI1Ni40IDcuOSAxNzMuMSA0OC45IDk5LjMgMTExLjggNTQuMmMxMS43LTguMyAyOC00LjggMzUgNy43TDE2Mi42IDkwYzUuOSAxMC41IDMuMSAyMy44LTYuNiAzMS00MS41IDMwLjgtNjggNzkuNi02OCAxMzQuOS0uMSA5Mi4zIDc0LjUgMTY4LjEgMTY4IDE2OC4xIDkxLjYgMCAxNjguNi03NC4yIDE2OC0xNjkuMS0uMy01MS44LTI0LjctMTAxLjgtNjguMS0xMzQtOS43LTcuMi0xMi40LTIwLjUtNi41LTMwLjlsMTUuOC0yOC4xYzctMTIuNCAyMy4yLTE2LjEgMzQuOC03Ljh6TTI5NiAyNjRWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRoLTMyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyNDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjR6XCJdXG59O1xudmFyIGZhUHJheSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwcmF5JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNjgzXCIsIFwiTTI1NiAxMjhjMzUuMzUgMCA2NC0yOC42NSA2NC02NFMyOTEuMzUgMCAyNTYgMHMtNjQgMjguNjUtNjQgNjQgMjguNjUgNjQgNjQgNjR6bS0zMC42MyAxNjkuNzVjMTQuMDYgMTYuNzIgMzkgMTkuMDkgNTUuOTcgNS4yMmw4OC03Mi4wMmMxNy4wOS0xMy45OCAxOS41OS0zOS4xOSA1LjYyLTU2LjI4LTEzLjk3LTE3LjExLTM5LjE5LTE5LjU5LTU2LjMxLTUuNjJsLTU3LjQ0IDQ3LTM4LjkxLTQ2LjMxYy0xNS40NC0xOC4zOS0zOS4yMi0yNy45Mi02NC0yNS4zMy0yNC4xOSAyLjQ4LTQ1LjI1IDE2LjI3LTU2LjM3IDM2LjkybC00OS4zNyA5Mi4wM2MtMjMuNCA0My42NC04LjY5IDk2LjM3IDM0LjE5IDEyMy43NUwxMzEuNTYgNDMySDQwYy0yMi4wOSAwLTQwIDE3LjkxLTQwIDQwczE3LjkxIDQwIDQwIDQwaDIwOGMzNC4wOCAwIDUzLjc3LTQyLjc5IDI4LjI4LTY4LjI4TDE2Ni40MiAzMzMuODZsMzQuOC02NC44NyAyNC4xNSAyOC43NnpcIl1cbn07XG52YXIgZmFQcmF5aW5nSGFuZHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncHJheWluZy1oYW5kcycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjY4NFwiLCBcIk0yNzIgMTkxLjkxYy0xNy42IDAtMzIgMTQuNC0zMiAzMnY4MGMwIDguODQtNy4xNiAxNi0xNiAxNnMtMTYtNy4xNi0xNi0xNnYtNzYuNTVjMC0xNy4zOSA0LjcyLTM0LjQ3IDEzLjY5LTQ5LjM5bDc3Ljc1LTEyOS41OWM5LjA5LTE1LjE2IDQuMTktMzQuODEtMTAuOTctNDMuOTEtMTQuNDUtOC42Ny0zMi43Mi00LjMtNDIuMyA5LjIxLS4yLjIzLS42Mi4yMS0uNzkuNDhsLTExNy4yNiAxNzUuOUMxMTcuNTYgMjA1LjkgMTEyIDIyNC4zMSAxMTIgMjQzLjI5djgwLjIzbC05MC4xMiAzMC4wNEEzMS45NzQgMzEuOTc0IDAgMCAwIDAgMzgzLjkxdjk2YzAgMTAuODIgOC41MiAzMiAzMiAzMiAyLjY5IDAgNS40MS0uMzQgOC4wNi0xLjAzbDE3OS4xOS00Ni42MkMyNjkuMTYgNDQ5Ljk5IDMwNCA0MDMuOCAzMDQgMzUxLjkxdi0xMjhjMC0xNy42LTE0LjQtMzItMzItMzJ6bTM0Ni4xMiAxNjEuNzNMNTI4IDMyMy42di04MC4yM2MwLTE4Ljk4LTUuNTYtMzcuMzktMTYuMTItNTMuMjNMMzk0LjYyIDE0LjI1Yy0uMTgtLjI3LS41OS0uMjQtLjc5LS40OC05LjU4LTEzLjUxLTI3Ljg1LTE3Ljg4LTQyLjMtOS4yMS0xNS4xNiA5LjA5LTIwLjA2IDI4Ljc1LTEwLjk3IDQzLjkxbDc3Ljc1IDEyOS41OWM4Ljk3IDE0LjkyIDEzLjY5IDMyIDEzLjY5IDQ5LjM5VjMwNGMwIDguODQtNy4xNiAxNi0xNiAxNnMtMTYtNy4xNi0xNi0xNnYtODBjMC0xNy42LTE0LjQtMzItMzItMzJzLTMyIDE0LjQtMzIgMzJ2MTI4YzAgNTEuODkgMzQuODQgOTguMDggODQuNzUgMTEyLjM0bDE3OS4xOSA0Ni42MmMyLjY2LjY5IDUuMzggMS4wMyA4LjA2IDEuMDMgMjMuNDggMCAzMi0yMS4xOCAzMi0zMnYtOTZjMC0xMy43Ny04LjgxLTI1Ljk5LTIxLjg4LTMwLjM1elwiXVxufTtcbnZhciBmYVByZXNjcmlwdGlvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwcmVzY3JpcHRpb24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY1YjFcIiwgXCJNMzAxLjI2IDM1Mmw3OC4wNi03OC4wNmM2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzbC0yMi42My0yMi42M2MtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMEwyNTYgMzA2Ljc0bC04My45Ni04My45NkMyMTkuMzEgMjE2LjggMjU2IDE3Ni44OSAyNTYgMTI4YzAtNTMuMDItNDIuOTgtOTYtOTYtOTZIMTZDNy4xNiAzMiAwIDM5LjE2IDAgNDh2MjU2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di04MGgxOC43NWwxMjggMTI4LTc4LjA2IDc4LjA2Yy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDIyLjYzIDIyLjYzYzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBMMjU2IDM5Ny4yNWw3OC4wNiA3OC4wNmM2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDIyLjYzLTIyLjYzYzYuMjUtNi4yNSA2LjI1LTE2LjM4IDAtMjIuNjNMMzAxLjI2IDM1MnpNNjQgOTZoOTZjMTcuNjQgMCAzMiAxNC4zNiAzMiAzMnMtMTQuMzYgMzItMzIgMzJINjRWOTZ6XCJdXG59O1xudmFyIGZhUHJlc2NyaXB0aW9uQm90dGxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ByZXNjcmlwdGlvbi1ib3R0bGUnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY0ODVcIiwgXCJNMzIgMTkyaDEyMGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDMydjY0aDEyMGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDMydjY0aDEyMGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDMydjY0YzAgMTcuNiAxNC40IDMyIDMyIDMyaDI1NmMxNy42IDAgMzItMTQuNCAzMi0zMlYxMjhIMzJ2NjR6TTM2MCAwSDI0QzEwLjggMCAwIDEwLjggMCAyNHY0OGMwIDEzLjIgMTAuOCAyNCAyNCAyNGgzMzZjMTMuMiAwIDI0LTEwLjggMjQtMjRWMjRjMC0xMy4yLTEwLjgtMjQtMjQtMjR6XCJdXG59O1xudmFyIGZhUHJlc2NyaXB0aW9uQm90dGxlQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ByZXNjcmlwdGlvbi1ib3R0bGUtYWx0JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNDg2XCIsIFwiTTM2MCAwSDI0QzEwLjggMCAwIDEwLjggMCAyNHY0OGMwIDEzLjIgMTAuOCAyNCAyNCAyNGgzMzZjMTMuMiAwIDI0LTEwLjggMjQtMjRWMjRjMC0xMy4yLTEwLjgtMjQtMjQtMjR6TTMyIDQ4MGMwIDE3LjYgMTQuNCAzMiAzMiAzMmgyNTZjMTcuNiAwIDMyLTE0LjQgMzItMzJWMTI4SDMydjM1MnptNjQtMTg0YzAtNC40IDMuNi04IDgtOGg1NnYtNTZjMC00LjQgMy42LTggOC04aDQ4YzQuNCAwIDggMy42IDggOHY1Nmg1NmM0LjQgMCA4IDMuNiA4IDh2NDhjMCA0LjQtMy42IDgtOCA4aC01NnY1NmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LTh2LTU2aC01NmMtNC40IDAtOC0zLjYtOC04di00OHpcIl1cbn07XG52YXIgZmFQcmludCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwcmludCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAyZlwiLCBcIk00NDggMTkyVjc3LjI1YzAtOC40OS0zLjM3LTE2LjYyLTkuMzctMjIuNjNMMzkzLjM3IDkuMzdjLTYtNi0xNC4xNC05LjM3LTIyLjYzLTkuMzdIOTZDNzguMzMgMCA2NCAxNC4zMyA2NCAzMnYxNjBjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR2MTEyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4djk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzIwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2VjI1NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0em0tNjQgMjU2SDEyOHYtOTZoMjU2djk2em0wLTIyNEgxMjhWNjRoMTkydjQ4YzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4djk2em00OCA3MmMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6XCJdXG59O1xudmFyIGZhUHJvY2VkdXJlcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwcm9jZWR1cmVzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNDg3XCIsIFwiTTUyOCAyMjRIMjcyYy04LjggMC0xNiA3LjItMTYgMTZ2MTQ0SDY0VjE0NGMwLTguOC03LjItMTYtMTYtMTZIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzNTJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnYtNDhoNTEydjQ4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzM2YzAtNjEuOS01MC4xLTExMi0xMTItMTEyek0xMzYgOTZoMTI2LjFsMjcuNiA1NS4yYzUuOSAxMS44IDIyLjcgMTEuOCAyOC42IDBMMzY4IDUxLjggMzkwLjEgOTZINTEyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDQwOS45TDM4Mi4zIDguOEMzNzYuNC0zIDM1OS42LTMgMzUzLjcgOC44TDMwNCAxMDguMmwtMTkuOS0zOS44Yy0xLjQtMi43LTQuMS00LjQtNy4yLTQuNEgxMzZjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDh6bTI0IDI1NmMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NC02NCAyOC43LTY0IDY0IDI4LjcgNjQgNjQgNjR6XCJdXG59O1xudmFyIGZhUHJvamVjdERpYWdyYW0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncHJvamVjdC1kaWFncmFtJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTQyXCIsIFwiTTM4NCAzMjBIMjU2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjEyOGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDEyOGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjM1MmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek0xOTIgMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkgzMkMxNC4zMyAwIDAgMTQuMzMgMCAzMnYxMjhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NS43Mmw3My4xNiAxMjguMDRDMjExLjk4IDMwMC45OCAyMzIuNCAyODggMjU2IDI4OGguMjhMMTkyIDE3NS41MVYxMjhoMjI0VjY0SDE5MlYzMnpNNjA4IDBINDgwYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjEyOGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDEyOGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6XCJdXG59O1xudmFyIGZhUHVtcE1lZGljYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncHVtcC1tZWRpY2FsJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJlMDZhXCIsIFwiTTIzNS41MSwxNTkuODJIODQuMjRBNjQsNjQsMCwwLDAsMjAuNTEsMjE4TC4xNCw0NDJhNjQsNjQsMCwwLDAsNjMuNzQsNjkuOGgxOTJBNjQsNjQsMCwwLDAsMzE5LjYxLDQ0MkwyOTkuMjQsMjE4QTY0LDY0LDAsMCwwLDIzNS41MSwxNTkuODJabTQuMzcsMTczLjMzYTEzLjM1LDEzLjM1LDAsMCwxLTEzLjM0LDEzLjM0aC00MHY0MGExMy4zMywxMy4zMywwLDAsMS0xMy4zMywxMy4zM0gxNDYuNTRhMTMuMzMsMTMuMzMsMCwwLDEtMTMuMzMtMTMuMzN2LTQwaC00MGExMy4zNCwxMy4zNCwwLDAsMS0xMy4zMy0xMy4zNFYzMDYuNDlhMTMuMzMsMTMuMzMsMCwwLDEsMTMuMzMtMTMuMzRoNDB2LTQwYTEzLjMzLDEzLjMzLDAsMCwxLDEzLjMzLTEzLjMzaDI2LjY3YTEzLjMzLDEzLjMzLDAsMCwxLDEzLjMzLDEzLjMzdjQwaDQwYTEzLjM0LDEzLjM0LDAsMCwxLDEzLjM0LDEzLjM0Wk0zNzkuMTksOTMuODgsMzM1Ljg3LDUwLjU2YTY0LDY0LDAsMCwwLTQ1LjI0LTE4Ljc0SDIyMy44OGEzMiwzMiwwLDAsMC0zMi0zMmgtNjRhMzIsMzIsMCwwLDAtMzIsMzJ2OTZoMTI4di0zMmg2Ni43NWw0My4zMSw0My4zMWExNiwxNiwwLDAsMCwyMi42MywwbDIyLjYyLTIyLjYyQTE2LDE2LDAsMCwwLDM3OS4xOSw5My44OFpcIl1cbn07XG52YXIgZmFQdW1wU29hcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwdW1wLXNvYXAnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImUwNmJcIiwgXCJNMjM1LjYzLDE2MEg4NC4zN2E2NCw2NCwwLDAsMC02My43NCw1OC4yMUwuMjcsNDQyLjIxQTY0LDY0LDAsMCwwLDY0LDUxMkgyNTZhNjQsNjQsMCwwLDAsNjMuNzQtNjkuNzlsLTIwLjM2LTIyNEE2NCw2NCwwLDAsMCwyMzUuNjMsMTYwWk0xNjAsNDE2Yy0zMy4xMiwwLTYwLTI2LjMzLTYwLTU4Ljc1LDAtMjUsMzUuNy03NS40Nyw1Mi05Ny4yN0ExMCwxMCwwLDAsMSwxNjgsMjYwYzE2LjMzLDIxLjgsNTIsNzIuMjcsNTIsOTcuMjdDMjIwLDM4OS42NywxOTMuMTIsNDE2LDE2MCw0MTZaTTM3OS4zMSw5NC4wNiwzMzYsNTAuNzRBNjQsNjQsMCwwLDAsMjkwLjc1LDMySDIyNEEzMiwzMiwwLDAsMCwxOTIsMEgxMjhBMzIsMzIsMCwwLDAsOTYsMzJ2OTZIMjI0Vjk2aDY2Ljc1bDQzLjMxLDQzLjMxYTE2LDE2LDAsMCwwLDIyLjYzLDBsMjIuNjItMjIuNjJBMTYsMTYsMCwwLDAsMzc5LjMxLDk0LjA2WlwiXVxufTtcbnZhciBmYVB1enpsZVBpZWNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3B1enpsZS1waWVjZScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjEyZVwiLCBcIk01MTkuNDQyIDI4OC42NTFjLTQxLjUxOSAwLTU5LjUgMzEuNTkzLTgyLjA1OCAzMS41OTNDMzc3LjQwOSAzMjAuMjQ0IDQzMiAxNDQgNDMyIDE0NHMtMTk2LjI4OCA4MC0xOTYuMjg4LTMuMjk3YzAtMzUuODI3IDM2LjI4OC00Ni4yNSAzNi4yODgtODUuOTg1QzI3MiAxOS4yMTYgMjQzLjg4NSAwIDIxMC41MzkgMGMtMzQuNjU0IDAtNjYuMzY2IDE4Ljg5MS02Ni4zNjYgNTYuMzQ2IDAgNDEuMzY0IDMxLjcxMSA1OS4yNzcgMzEuNzExIDgxLjc1QzE3NS44ODUgMjA3LjcxOSAwIDE2Ni43NTggMCAxNjYuNzU4djMzMy4yMzdzMTc4LjYzNSA0MS4wNDcgMTc4LjYzNS0yOC42NjJjMC0yMi40NzMtNDAtNDAuMTA3LTQwLTgxLjQ3MSAwLTM3LjQ1NiAyOS4yNS01Ni4zNDYgNjMuNTc3LTU2LjM0NiAzMy42NzMgMCA2MS43ODggMTkuMjE2IDYxLjc4OCA1NC43MTcgMCAzOS43MzUtMzYuMjg4IDUwLjE1OC0zNi4yODggODUuOTg1IDAgNjAuODAzIDEyOS42NzUgMjUuNzMgMTgxLjIzIDI1LjczIDAgMC0zNC43MjUtMTIwLjEwMSAyNS44MjctMTIwLjEwMSAzNS45NjIgMCA0Ni40MjMgMzYuMTUyIDg2LjMwOCAzNi4xNTJDNTU2LjcxMiA0MTYgNTc2IDM4Ny45OSA1NzYgMzU0LjQ0M2MwLTM0LjE5OS0xOC45NjItNjUuNzkyLTU2LjU1OC02NS43OTJ6XCJdXG59O1xudmFyIGZhUXJjb2RlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3FyY29kZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjAyOVwiLCBcIk0wIDIyNGgxOTJWMzJIMHYxOTJ6TTY0IDk2aDY0djY0SDY0Vjk2em0xOTItNjR2MTkyaDE5MlYzMkgyNTZ6bTEyOCAxMjhoLTY0Vjk2aDY0djY0ek0wIDQ4MGgxOTJWMjg4SDB2MTkyem02NC0xMjhoNjR2NjRINjR2LTY0em0zNTItNjRoMzJ2MTI4aC05NnYtMzJoLTMydjk2aC02NFYyODhoOTZ2MzJoNjR2LTMyem0wIDE2MGgzMnYzMmgtMzJ2LTMyem0tNjQgMGgzMnYzMmgtMzJ2LTMyelwiXVxufTtcbnZhciBmYVF1ZXN0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3F1ZXN0aW9uJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmMTI4XCIsIFwiTTIwMi4wMjEgMEMxMjIuMjAyIDAgNzAuNTAzIDMyLjcwMyAyOS45MTQgOTEuMDI2Yy03LjM2MyAxMC41OC01LjA5MyAyNS4wODYgNS4xNzggMzIuODc0bDQzLjEzOCAzMi43MDljMTAuMzczIDcuODY1IDI1LjEzMiA2LjAyNiAzMy4yNTMtNC4xNDggMjUuMDQ5LTMxLjM4MSA0My42My00OS40NDkgODIuNzU3LTQ5LjQ0OSAzMC43NjQgMCA2OC44MTYgMTkuNzk5IDY4LjgxNiA0OS42MzEgMCAyMi41NTItMTguNjE3IDM0LjEzNC00OC45OTMgNTEuMTY0LTM1LjQyMyAxOS44Ni04Mi4yOTkgNDQuNTc2LTgyLjI5OSAxMDYuNDA1VjMyMGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoNzIuNDcxYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtNS43NzNjMC00Mi44NiAxMjUuMjY4LTQ0LjY0NSAxMjUuMjY4LTE2MC42MjdDMzc3LjUwNCA2Ni4yNTYgMjg2LjkwMiAwIDIwMi4wMjEgMHpNMTkyIDM3My40NTljLTM4LjE5NiAwLTY5LjI3MSAzMS4wNzUtNjkuMjcxIDY5LjI3MSAwIDM4LjE5NSAzMS4wNzUgNjkuMjcgNjkuMjcxIDY5LjI3czY5LjI3MS0zMS4wNzUgNjkuMjcxLTY5LjI3MS0zMS4wNzUtNjkuMjctNjkuMjcxLTY5LjI3elwiXVxufTtcbnZhciBmYVF1ZXN0aW9uQ2lyY2xlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3F1ZXN0aW9uLWNpcmNsZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjA1OVwiLCBcIk01MDQgMjU2YzAgMTM2Ljk5Ny0xMTEuMDQzIDI0OC0yNDggMjQ4UzggMzkyLjk5NyA4IDI1NkM4IDExOS4wODMgMTE5LjA0MyA4IDI1NiA4czI0OCAxMTEuMDgzIDI0OCAyNDh6TTI2Mi42NTUgOTBjLTU0LjQ5NyAwLTg5LjI1NSAyMi45NTctMTE2LjU0OSA2My43NTgtMy41MzYgNS4yODYtMi4zNTMgMTIuNDE1IDIuNzE1IDE2LjI1OGwzNC42OTkgMjYuMzFjNS4yMDUgMy45NDcgMTIuNjIxIDMuMDA4IDE2LjY2NS0yLjEyMiAxNy44NjQtMjIuNjU4IDMwLjExMy0zNS43OTcgNTcuMzAzLTM1Ljc5NyAyMC40MjkgMCA0NS42OTggMTMuMTQ4IDQ1LjY5OCAzMi45NTggMCAxNC45NzYtMTIuMzYzIDIyLjY2Ny0zMi41MzQgMzMuOTc2QzI0Ny4xMjggMjM4LjUyOCAyMTYgMjU0Ljk0MSAyMTYgMjk2djRjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg1NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi0xLjMzM2MwLTI4LjQ2MiA4My4xODYtMjkuNjQ3IDgzLjE4Ni0xMDYuNjY3IDAtNTguMDAyLTYwLjE2NS0xMDItMTE2LjUzMS0xMDJ6TTI1NiAzMzhjLTI1LjM2NSAwLTQ2IDIwLjYzNS00NiA0NiAwIDI1LjM2NCAyMC42MzUgNDYgNDYgNDZzNDYtMjAuNjM2IDQ2LTQ2YzAtMjUuMzY1LTIwLjYzNS00Ni00Ni00NnpcIl1cbn07XG52YXIgZmFRdWlkZGl0Y2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncXVpZGRpdGNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNDU4XCIsIFwiTTI1Ni41IDIxNi44TDM0My4yIDMyNnMtMTYuNiAxMDIuNC03Ni42IDE1MC4xQzIwNi43IDUyMy44IDAgNTEwLjIgMCA1MTAuMnMzLjgtMjMuMSAxMS01NS40bDk0LjYtMTEyLjJjNC00LjctLjktMTEuNi02LjYtOS41bC02MC40IDIyLjFjMTQuNC00MS43IDMyLjctODAgNTQuNi05Ny41IDU5LjktNDcuOCAxNjMuMy00MC45IDE2My4zLTQwLjl6bTIzOCAxMzVjLTQ0IDAtNzkuOCAzNS44LTc5LjggNzkuOSAwIDQ0LjEgMzUuNyA3OS45IDc5LjggNzkuOSA0NC4xIDAgNzkuOC0zNS44IDc5LjgtNzkuOSAwLTQ0LjItMzUuOC03OS45LTc5LjgtNzkuOXpNNjM2LjUgMzFMNjE2LjcgNmMtNS41LTYuOS0xNS41LTgtMjIuNC0yLjZMMzYxLjggMTgxLjNsLTM0LjEtNDNjLTUuMS02LjQtMTUuMS01LjItMTguNiAyLjJsLTI1LjMgNTQuNiA4Ni43IDEwOS4yIDU4LjgtMTIuNGM4LTEuNyAxMS40LTExLjIgNi4zLTE3LjZsLTM0LjEtNDIuOUw2MzQgNTMuNWM2LjktNS41IDgtMTUuNiAyLjUtMjIuNXpcIl1cbn07XG52YXIgZmFRdW90ZUxlZnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncXVvdGUtbGVmdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjEwZFwiLCBcIk00NjQgMjU2aC04MHYtNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRoOGMxMy4zIDAgMjQtMTAuNyAyNC0yNFY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNGgtOGMtODguNCAwLTE2MCA3MS42LTE2MCAxNjB2MjQwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDEyOGMyNi41IDAgNDgtMjEuNSA0OC00OFYzMDRjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS0yODggMEg5NnYtNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRoOGMxMy4zIDAgMjQtMTAuNyAyNC0yNFY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNGgtOEM3MS42IDMyIDAgMTAzLjYgMCAxOTJ2MjQwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDEyOGMyNi41IDAgNDgtMjEuNSA0OC00OFYzMDRjMC0yNi41LTIxLjUtNDgtNDgtNDh6XCJdXG59O1xudmFyIGZhUXVvdGVSaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdxdW90ZS1yaWdodCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjEwZVwiLCBcIk00NjQgMzJIMzM2Yy0yNi41IDAtNDggMjEuNS00OCA0OHYxMjhjMCAyNi41IDIxLjUgNDggNDggNDhoODB2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRoLThjLTEzLjMgMC0yNCAxMC43LTI0IDI0djQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0aDhjODguNCAwIDE2MC03MS42IDE2MC0xNjBWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS0yODggMEg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjEyOGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg4MHY2NGMwIDM1LjMtMjguNyA2NC02NCA2NGgtOGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoOGM4OC40IDAgMTYwLTcxLjYgMTYwLTE2MFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpcIl1cbn07XG52YXIgZmFRdXJhbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdxdXJhbicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjY4N1wiLCBcIk00NDggMzU4LjRWMjUuNmMwLTE2LTkuNi0yNS42LTI1LjYtMjUuNkg5NkM0MS42IDAgMCA0MS42IDAgOTZ2MzIwYzAgNTQuNCA0MS42IDk2IDk2IDk2aDMyNi40YzEyLjggMCAyNS42LTkuNiAyNS42LTI1LjZ2LTE2YzAtNi40LTMuMi0xMi44LTkuNi0xOS4yLTMuMi0xNi0zLjItNjAuOCAwLTczLjYgNi40LTMuMiA5LjYtOS42IDkuNi0xOS4yek0zMDEuMDggMTQ1LjgyYy42LTEuMjEgMS43Ni0xLjgyIDIuOTItMS44MnMyLjMyLjYxIDIuOTIgMS44MmwxMS4xOCAyMi42NSAyNSAzLjYzYzIuNjcuMzkgMy43NCAzLjY3IDEuODEgNS41NmwtMTguMDkgMTcuNjMgNC4yNyAyNC44OWMuMzYgMi4xMS0xLjMxIDMuODItMy4yMSAzLjgyLS41IDAtMS4wMi0uMTItMS41Mi0uMzhMMzA0IDIxMS44N2wtMjIuMzYgMTEuNzVjLS41LjI2LTEuMDIuMzgtMS41Mi4zOC0xLjkgMC0zLjU3LTEuNzEtMy4yMS0zLjgybDQuMjctMjQuODktMTguMDktMTcuNjNjLTEuOTQtMS44OS0uODctNS4xNyAxLjgxLTUuNTZsMjQuOTktMy42MyAxMS4xOS0yMi42NXptLTU3Ljg5LTY5LjAxYzEzLjY3IDAgMjcuMjYgMi40OSA0MC4zOCA3LjQxYTYuNzc1IDYuNzc1IDAgMSAxLTIuMzggMTMuMTJjLS42NyAwLTMuMDktLjIxLTQuMTMtLjIxLTUyLjMxIDAtOTQuODYgNDIuNTUtOTQuODYgOTQuODYgMCA1Mi4zIDQyLjU1IDk0Ljg2IDk0Ljg2IDk0Ljg2IDEuMDMgMCAzLjQ4LS4yMSA0LjEzLS4yMSAzLjkzIDAgNi44IDMuMTQgNi44IDYuNzggMCAyLjk4LTEuOTQgNS41MS00LjYyIDYuNDItMTMuMDcgNC44Ny0yNi41OSA3LjM0LTQwLjE5IDcuMzRDMTc5LjY3IDMwNy4xOSAxMjggMjU1LjUxIDEyOCAxOTJjMC02My41MiA1MS42Ny0xMTUuMTkgMTE1LjE5LTExNS4xOXpNMzgwLjggNDQ4SDk2Yy0xOS4yIDAtMzItMTIuOC0zMi0zMnMxNi0zMiAzMi0zMmgyODQuOHY2NHpcIl1cbn07XG52YXIgZmFSYWRpYXRpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmFkaWF0aW9uJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmN2I5XCIsIFwiTTMyOC4yIDI1NS44aDE1MS42YzkuMSAwIDE2LjgtNy43IDE2LjItMTYuOC01LjEtNzUuOC00NC40LTE0Mi4yLTEwMi41LTE4NC4yLTcuNC01LjMtMTcuOS0yLjktMjIuNyA0LjhMMjkwLjQgMTg4YzIyLjYgMTQuMyAzNy44IDM5LjIgMzcuOCA2Ny44em0tMzcuOCA2Ny43Yy0xMi4zIDcuNy0yNi44IDEyLjQtNDIuNCAxMi40LTE1LjYgMC0zMC00LjctNDIuNC0xMi40TDEyNS4yIDQ1MmMtNC44IDcuNy0yLjQgMTguMSA1LjYgMjIuNEMxNjUuNyA0OTMuMiAyMDUuNiA1MDQgMjQ4IDUwNHM4Mi4zLTEwLjggMTE3LjItMjkuNmM4LTQuMyAxMC40LTE0LjggNS42LTIyLjRsLTgwLjQtMTI4LjV6TTI0OCAzMDMuOGMyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OC00OCAyMS41LTQ4IDQ4IDIxLjUgNDggNDggNDh6bS0yMzEuOC00OGgxNTEuNmMwLTI4LjYgMTUuMi01My41IDM3LjgtNjcuN0wxMjUuMiA1OS43Yy00LjgtNy43LTE1LjMtMTAuMi0yMi43LTQuOEM0NC40IDk2LjkgNS4xIDE2My4zIDAgMjM5LjFjLS42IDkgNy4xIDE2LjcgMTYuMiAxNi43elwiXVxufTtcbnZhciBmYVJhZGlhdGlvbkFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyYWRpYXRpb24tYWx0JyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmN2JhXCIsIFwiTTMxMiAyNTZoNzkuMWM5LjIgMCAxNi45LTcuNyAxNi0xNi44LTQuNi00My42LTI3LTgxLjgtNTkuNS0xMDcuOC03LjYtNi4xLTE4LjgtNC41LTI0IDMuOEwyODEuOSAyMDJjMTggMTEuMiAzMC4xIDMxLjIgMzAuMSA1NHptLTk3LjggNTQuMUwxNzIuNCAzNzdjLTQuOSA3LjgtMi40IDE4LjQgNS44IDIyLjUgMjEuMSAxMC40IDQ0LjcgMTYuNSA2OS44IDE2LjVzNDguNy02LjEgNjkuOS0xNi41YzguMi00LjEgMTAuNi0xNC43IDUuOC0yMi41bC00MS44LTY2LjljLTkuOCA2LjItMjEuNCA5LjktMzMuOCA5LjlzLTI0LjEtMy43LTMzLjktOS45ek0xMDQuOSAyNTZIMTg0YzAtMjIuOCAxMi4xLTQyLjggMzAuMi01NC4xbC00MS43LTY2LjhjLTUuMi04LjMtMTYuNC05LjktMjQtMy44LTMyLjYgMjYtNTQuOSA2NC4yLTU5LjUgMTA3LjgtMS4xIDkuMiA2LjcgMTYuOSAxNS45IDE2Ljl6TTI0OCA1MDRjMTM3IDAgMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OHptMC00MzJjMTAxLjUgMCAxODQgODIuNSAxODQgMTg0cy04Mi41IDE4NC0xODQgMTg0UzY0IDM1Ny41IDY0IDI1NiAxNDYuNSA3MiAyNDggNzJ6bTAgMjE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnpcIl1cbn07XG52YXIgZmFSYWluYm93ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JhaW5ib3cnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY3NWJcIiwgXCJNMjY4LjMgMzIuN0MxMTUuNCA0Mi45IDAgMTc2LjkgMCAzMzAuMlY0NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzMjBDNjQgMTg2LjggMTgwLjkgODAuMyAzMTcuNSA5Ny45IDQzMC40IDExMi40IDUxMiAyMTQgNTEyIDMyNy44VjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyMGMwLTE2NS4zLTE0MC0yOTguNi0zMDcuNy0yODcuM3ptLTUuNiA5Ni45QzE2NiAxNDIgOTYgMjI5LjEgOTYgMzI2LjdWNDY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwYzAtNzQuOCA2NC41LTEzNC44IDE0MC44LTEyNy40IDY2LjUgNi41IDExNS4yIDY2LjIgMTE1LjIgMTMzLjFWNDY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwYzAtMTE0LjItMTAwLjItMjA1LjQtMjE3LjMtMTkwLjR6bTYuMiA5Ni4zYy00NS42IDguOS03Ni45IDUxLjUtNzYuOSA5Ny45VjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyMGMwLTE3LjYgMTQuMy0zMiAzMi0zMnMzMiAxNC40IDMyIDMydjE0NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyMGMwLTU5LjItNTMuOC0xMDYtMTE1LjEtOTQuMXpcIl1cbn07XG52YXIgZmFSYW5kb20gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmFuZG9tJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDc0XCIsIFwiTTUwNC45NzEgMzU5LjAyOWM5LjM3MyA5LjM3MyA5LjM3MyAyNC41NjkgMCAzMy45NDFsLTgwIDc5Ljk4NGMtMTUuMDEgMTUuMDEtNDAuOTcxIDQuNDktNDAuOTcxLTE2Ljk3MVY0MTZoLTU4Ljc4NWExMi4wMDQgMTIuMDA0IDAgMCAxLTguNzczLTMuODEybC03MC41NTYtNzUuNTk2IDUzLjMzMy01Ny4xNDNMMzUyIDMzNmgzMnYtMzkuOTgxYzAtMjEuNDM4IDI1Ljk0My0zMS45OTggNDAuOTcxLTE2Ljk3MWw4MCA3OS45ODF6TTEyIDE3Nmg4NGw1Mi43ODEgNTYuNTUxIDUzLjMzMy01Ny4xNDMtNzAuNTU2LTc1LjU5NkExMS45OTkgMTEuOTk5IDAgMCAwIDEyMi43ODUgOTZIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NTZjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMnptMzcyIDB2MzkuOTg0YzAgMjEuNDYgMjUuOTYxIDMxLjk4IDQwLjk3MSAxNi45NzFsODAtNzkuOTg0YzkuMzczLTkuMzczIDkuMzczLTI0LjU2OSAwLTMzLjk0MWwtODAtNzkuOTgxQzQwOS45NDMgMjQuMDIxIDM4NCAzNC41ODIgMzg0IDU2LjAxOVY5NmgtNTguNzg1YTEyLjAwNCAxMi4wMDQgMCAwIDAtOC43NzMgMy44MTJMOTYgMzM2SDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjU2YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTEwLjc4NWMzLjMyNiAwIDYuNTAzLTEuMzgxIDguNzczLTMuODEyTDM1MiAxNzZoMzJ6XCJdXG59O1xudmFyIGZhUmVjZWlwdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyZWNlaXB0JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNTQzXCIsIFwiTTM1OC40IDMuMkwzMjAgNDggMjY1LjYgMy4yYTE1LjkgMTUuOSAwIDAgMC0xOS4yIDBMMTkyIDQ4IDEzNy42IDMuMmExNS45IDE1LjkgMCAwIDAtMTkuMiAwTDY0IDQ4IDI1LjYgMy4yQzE1LTQuNyAwIDIuOCAwIDE2djQ4MGMwIDEzLjIgMTUgMjAuNyAyNS42IDEyLjhMNjQgNDY0bDU0LjQgNDQuOGExNS45IDE1LjkgMCAwIDAgMTkuMiAwTDE5MiA0NjRsNTQuNCA0NC44YTE1LjkgMTUuOSAwIDAgMCAxOS4yIDBMMzIwIDQ2NGwzOC40IDQ0LjhjMTAuNSA3LjkgMjUuNi40IDI1LjYtMTIuOFYxNmMwLTEzLjItMTUtMjAuNy0yNS42LTEyLjh6TTMyMCAzNjBjMCA0LjQtMy42IDgtOCA4SDcyYy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgyNDBjNC40IDAgOCAzLjYgOCA4djE2em0wLTk2YzAgNC40LTMuNiA4LTggOEg3MmMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMjQwYzQuNCAwIDggMy42IDggOHYxNnptMC05NmMwIDQuNC0zLjYgOC04IDhINzJjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDI0MGM0LjQgMCA4IDMuNiA4IDh2MTZ6XCJdXG59O1xudmFyIGZhUmVjb3JkVmlueWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmVjb3JkLXZpbnlsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmOGQ5XCIsIFwiTTI1NiAxNTJhMTA0IDEwNCAwIDEgMCAxMDQgMTA0IDEwNCAxMDQgMCAwIDAtMTA0LTEwNHptMCAxMjhhMjQgMjQgMCAxIDEgMjQtMjQgMjQgMjQgMCAwIDEtMjQgMjR6bTAtMjcyQzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTAgMzc2YTEyOCAxMjggMCAxIDEgMTI4LTEyOCAxMjggMTI4IDAgMCAxLTEyOCAxMjh6XCJdXG59O1xudmFyIGZhUmVjeWNsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyZWN5Y2xlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMWI4XCIsIFwiTTE4NC41NjEgMjYxLjkwM2MzLjIzMiAxMy45OTctMTIuMTIzIDI0LjYzNS0yNC4wNjggMTcuMTY4bC00MC43MzYtMjUuNDU1LTUwLjg2NyA4MS40MDJDNTUuNjA2IDM1Ni4yNzMgNzAuOTYgMzg0IDk2LjAxMiAzODRIMTQ4YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkg5Ni4xMTVjLTc1LjMzNCAwLTEyMS4zMDItODMuMDQ4LTgxLjQwOC0xNDYuODhsNTAuODIyLTgxLjM4OC00MC43MjUtMjUuNDQ4Yy0xMi4wODEtNy41NDctOC45NjYtMjUuOTYxIDQuODc5LTI5LjE1OGwxMTAuMjM3LTI1LjQ1YzguNjExLTEuOTg4IDE3LjIwMSAzLjM4MSAxOS4xODkgMTEuOTlsMjUuNDUyIDExMC4yMzd6bTk4LjU2MS0xODIuOTE1bDQxLjI4OSA2Ni4wNzYtNDAuNzQgMjUuNDU3Yy0xMi4wNTEgNy41MjgtOSAyNS45NTMgNC44NzkgMjkuMTU4bDExMC4yMzcgMjUuNDVjOC42NzIgMS45OTkgMTcuMjE1LTMuNDM4IDE5LjE4OS0xMS45OWwyNS40NS0xMTAuMjM3YzMuMTk3LTEzLjg0NC0xMS45OS0yNC43MTktMjQuMDY4LTE3LjE2OGwtNDAuNjg3IDI1LjQyNC00MS4yNjMtNjYuMDgyYy0zNy41MjEtNjAuMDMzLTEyNS4yMDktNjAuMTcxLTE2Mi44MTYgMGwtMTcuOTYzIDI4Ljc2NmMtMy41MSA1LjYyLTEuOCAxMy4wMjEgMy44MiAxNi41MzNsMzMuOTE5IDIxLjE5NWM1LjYyIDMuNTEyIDEzLjAyNCAxLjgwMyAxNi41MzYtMy44MTdsMTcuOTYxLTI4Ljc0M2MxMi43MTItMjAuMzQxIDQxLjk3My0xOS42NzYgNTQuMjU3LS4wMjJ6TTQ5Ny4yODggMzAxLjEybC0yNy41MTUtNDQuMDY1Yy0zLjUxMS01LjYyMy0xMC45MTYtNy4zMzQtMTYuNTM4LTMuODIxbC0zMy44NjEgMjEuMTU5Yy01LjYyIDMuNTEyLTcuMzMgMTAuOTE1LTMuODE4IDE2LjUzNmwyNy41NjQgNDQuMTEyYzEzLjI1NyAyMS4yMTEtMi4wNTcgNDguOTYtMjcuMTM2IDQ4Ljk2SDMyMFYzMzYuMDJjMC0xNC4yMTMtMTcuMjQyLTIxLjM4My0yNy4zMTMtMTEuMzEzbC04MCA3OS45ODFjLTYuMjQ5IDYuMjQ4LTYuMjQ5IDE2LjM3OSAwIDIyLjYyN2w4MCA3OS45ODlDMzAyLjY4OSA1MTcuMzA4IDMyMCA1MTAuMyAzMjAgNDk1Ljk4OVY0NDhoOTUuODhjNzUuMjc0IDAgMTIxLjMzNS04Mi45OTcgODEuNDA4LTE0Ni44OHpcIl1cbn07XG52YXIgZmFSZWRvID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JlZG8nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwMWVcIiwgXCJNNTAwLjMzIDBoLTQ3LjQxYTEyIDEyIDAgMCAwLTEyIDEyLjU3bDQgODIuNzZBMjQ3LjQyIDI0Ny40MiAwIDAgMCAyNTYgOEMxMTkuMzQgOCA3LjkgMTE5LjUzIDggMjU2LjE5IDguMSAzOTMuMDcgMTE5LjEgNTA0IDI1NiA1MDRhMjQ3LjEgMjQ3LjEgMCAwIDAgMTY2LjE4LTYzLjkxIDEyIDEyIDAgMCAwIC40OC0xNy40M2wtMzQtMzRhMTIgMTIgMCAwIDAtMTYuMzgtLjU1QTE3NiAxNzYgMCAxIDEgNDAyLjEgMTU3LjhsLTEwMS41My00Ljg3YTEyIDEyIDAgMCAwLTEyLjU3IDEydjQ3LjQxYTEyIDEyIDAgMCAwIDEyIDEyaDIwMC4zM2ExMiAxMiAwIDAgMCAxMi0xMlYxMmExMiAxMiAwIDAgMC0xMi0xMnpcIl1cbn07XG52YXIgZmFSZWRvQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JlZG8tYWx0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMmY5XCIsIFwiTTI1Ni40NTUgOGM2Ni4yNjkuMTE5IDEyNi40MzcgMjYuMjMzIDE3MC44NTkgNjguNjg1bDM1LjcxNS0zNS43MTVDNDc4LjE0OSAyNS44NTEgNTA0IDM2LjU1OSA1MDQgNTcuOTQxVjE5MmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMzQ1Ljk0MWMtMjEuMzgyIDAtMzIuMDktMjUuODUxLTE2Ljk3MS00MC45NzFsNDEuNzUtNDEuNzVjLTMwLjg2NC0yOC44OTktNzAuODAxLTQ0LjkwNy0xMTMuMjMtNDUuMjczLTkyLjM5OC0uNzk4LTE3MC4yODMgNzMuOTc3LTE2OS40ODQgMTY5LjQ0MkM4OC43NjQgMzQ4LjAwOSAxNjIuMTg0IDQyNCAyNTYgNDI0YzQxLjEyNyAwIDc5Ljk5Ny0xNC42NzggMTEwLjYyOS00MS41NTYgNC43NDMtNC4xNjEgMTEuOTA2LTMuOTA4IDE2LjM2OC41NTNsMzkuNjYyIDM5LjY2MmM0Ljg3MiA0Ljg3MiA0LjYzMSAxMi44MTUtLjQ4MiAxNy40MzNDMzc4LjIwMiA0NzkuODEzIDMxOS45MjYgNTA0IDI1NiA1MDQgMTE5LjAzNCA1MDQgOC4wMDEgMzkyLjk2NyA4IDI1Ni4wMDIgNy45OTkgMTE5LjE5MyAxMTkuNjQ2IDcuNzU1IDI1Ni40NTUgOHpcIl1cbn07XG52YXIgZmFSZWdpc3RlcmVkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JlZ2lzdGVyZWQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyNWRcIiwgXCJNMjg1LjM2MyAyMDcuNDc1YzAgMTguNi05LjgzMSAyOC40MzEtMjguNDMxIDI4LjQzMWgtMjkuODc2di01Ni4xNGgyMy4zNzhjMjguNjY4IDAgMzQuOTI5IDguNzczIDM0LjkyOSAyNy43MDl6TTUwNCAyNTZjMCAxMzYuOTY3LTExMS4wMzMgMjQ4LTI0OCAyNDhTOCAzOTIuOTY3IDggMjU2IDExOS4wMzMgOCAyNTYgOHMyNDggMTExLjAzMyAyNDggMjQ4ek0zNjMuNDExIDM2MC40MTRjLTQ2LjcyOS04NC44MjUtNDMuMjk5LTc4LjYzNi00NC43MDItODAuOTggMjMuNDMyLTE1LjE3MiAzNy45NDUtNDIuOTc5IDM3Ljk0NS03NC40ODYgMC01NC4yNDQtMzEuNS04OS4yNTItMTA1LjQ5OC04OS4yNTJoLTcwLjY2N2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0VjM3MmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMjIuNTY3YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtNzEuNjYzaDI1LjU1Nmw0NC4xMjkgODIuOTM3YTI0LjAwMSAyNC4wMDEgMCAwIDAgMjEuMTg4IDEyLjcyN2gyNC40NjRjMTguMjYxLS4wMDEgMjkuODI5LTE5LjU5MSAyMS4wMTgtMzUuNTg3elwiXVxufTtcbnZhciBmYVJlbW92ZUZvcm1hdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyZW1vdmUtZm9ybWF0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmODdkXCIsIFwiTTMzNiA0MTZoLTExLjE3bDkuMjYtMjcuNzdMMjY3IDMzNi40IDI0MC40OSA0MTZIMjA4YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTI5Ny44MiA0Mi4xTDM3NyAyNTkuNTkgNDI2LjE3IDExMkg1NDR2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djQzLjlMNDUuNDYgMy4zOEExNiAxNiAwIDAgMCAyMyA2LjE5TDMuMzcgMzEuNDZhMTYgMTYgMCAwIDAgMi44MSAyMi40NWw1ODguMzYgNDU0LjcyYTE2IDE2IDAgMCAwIDIyLjQ2LTIuODFsMTkuNjQtMjUuMjdhMTYgMTYgMCAwIDAtMi44Mi0yMi40NXpNMzA5LjkxIDIwNy43NkwyMjQgMTQxLjM2VjExMmgxMTcuODN6XCJdXG59O1xudmFyIGZhUmVwbHkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmVwbHknLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYzZTVcIiwgXCJNOC4zMDkgMTg5LjgzNkwxODQuMzEzIDM3Ljg1MUMxOTkuNzE5IDI0LjU0NiAyMjQgMzUuMzQ3IDIyNCA1Ni4wMTV2ODAuMDUzYzE2MC42MjkgMS44MzkgMjg4IDM0LjAzMiAyODggMTg2LjI1OCAwIDYxLjQ0MS0zOS41ODEgMTIyLjMwOS04My4zMzMgMTU0LjEzMi0xMy42NTMgOS45MzEtMzMuMTExLTIuNTMzLTI4LjA3Ny0xOC42MzEgNDUuMzQ0LTE0NS4wMTItMjEuNTA3LTE4My41MS0xNzYuNTktMTg1Ljc0MlYzNjBjMCAyMC43LTI0LjMgMzEuNDUzLTM5LjY4NyAxOC4xNjRsLTE3Ni4wMDQtMTUyYy0xMS4wNzEtOS41NjItMTEuMDg2LTI2Ljc1MyAwLTM2LjMyOHpcIl1cbn07XG52YXIgZmFSZXBseUFsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyZXBseS1hbGwnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYxMjJcIiwgXCJNMTM2LjMwOSAxODkuODM2TDMxMi4zMTMgMzcuODUxQzMyNy43MiAyNC41NDYgMzUyIDM1LjM0OCAzNTIgNTYuMDE1djgyLjc2M2MxMjkuMTgyIDEwLjIzMSAyMjQgNTIuMjEyIDIyNCAxODMuNTQ4IDAgNjEuNDQxLTM5LjU4MiAxMjIuMzA5LTgzLjMzMyAxNTQuMTMyLTEzLjY1MyA5LjkzMS0zMy4xMTEtMi41MzMtMjguMDc3LTE4LjYzMSAzOC41MTItMTIzLjE2Mi0zLjkyMi0xNjkuNDgyLTExMi41OS0xODIuMDE1djg0LjE3NWMwIDIwLjcwMS0yNC4zIDMxLjQ1My0zOS42ODcgMTguMTY0TDEzNi4zMDkgMjI2LjE2NGMtMTEuMDcxLTkuNTYxLTExLjA4Ni0yNi43NTMgMC0zNi4zMjh6bS0xMjggMzYuMzI4TDE4NC4zMTMgMzc4LjE1QzE5OS43IDM5MS40MzkgMjI0IDM4MC42ODcgMjI0IDM1OS45ODZ2LTE1LjgxOGwtMTA4LjYwNi05My43ODVBNTUuOTYgNTUuOTYgMCAwIDEgOTYgMjA3Ljk5OGE1NS45NTMgNTUuOTUzIDAgMCAxIDE5LjM5My00Mi4zOEwyMjQgNzEuODMyVjU2LjAxNWMwLTIwLjY2Ny0yNC4yOC0zMS40NjktMzkuNjg3LTE4LjE2NEw4LjMwOSAxODkuODM2Yy0xMS4wODYgOS41NzUtMTEuMDcxIDI2Ljc2NyAwIDM2LjMyOHpcIl1cbn07XG52YXIgZmFSZXB1YmxpY2FuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JlcHVibGljYW4nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY3NWVcIiwgXCJNNTQ0IDE5MmMwLTg4LjQtNzEuNi0xNjAtMTYwLTE2MEgxNjBDNzEuNiAzMiAwIDEwMy42IDAgMTkydjY0aDU0NHYtNjR6bS0zNjcuNy0yMS42bC0xOS44IDE5LjMgNC43IDI3LjNjLjggNC45LTQuMyA4LjYtOC43IDYuM0wxMjggMjEwLjRsLTI0LjUgMTIuOWMtNC4zIDIuMy05LjUtMS40LTguNy02LjNsNC43LTI3LjMtMTkuOC0xOS4zYy0zLjYtMy41LTEuNi05LjUgMy4zLTEwLjJsMjcuNC00IDEyLjItMjQuOGMyLjItNC41IDguNi00LjQgMTAuNyAwbDEyLjIgMjQuOCAyNy40IDRjNSAuNyA2LjkgNi43IDMuNCAxMC4yem0xNDQgMGwtMTkuOCAxOS4zIDQuNyAyNy4zYy44IDQuOS00LjMgOC42LTguNyA2LjNMMjcyIDIxMC40bC0yNC41IDEyLjljLTQuMyAyLjMtOS41LTEuNC04LjctNi4zbDQuNy0yNy4zLTE5LjgtMTkuM2MtMy42LTMuNS0xLjYtOS41IDMuMy0xMC4ybDI3LjQtNCAxMi4yLTI0LjhjMi4yLTQuNSA4LjYtNC40IDEwLjcgMGwxMi4yIDI0LjggMjcuNCA0YzUgLjcgNi45IDYuNyAzLjQgMTAuMnptMTQ0IDBsLTE5LjggMTkuMyA0LjcgMjcuM2MuOCA0LjktNC4zIDguNi04LjcgNi4zTDQxNiAyMTAuNGwtMjQuNSAxMi45Yy00LjMgMi4zLTkuNS0xLjQtOC43LTYuM2w0LjctMjcuMy0xOS44LTE5LjNjLTMuNi0zLjUtMS42LTkuNSAzLjMtMTAuMmwyNy40LTQgMTIuMi0yNC44YzIuMi00LjUgOC42LTQuNCAxMC43IDBsMTIuMiAyNC44IDI3LjQgNGM1IC43IDYuOSA2LjcgMy40IDEwLjJ6TTYyNCAzMjBoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjg4SDB2MTc2YzAgOC44IDcuMiAxNiAxNiAxNmg5NmM4LjggMCAxNi03LjIgMTYtMTZ2LTgwaDE5MnY4MGMwIDguOCA3LjIgMTYgMTYgMTZoOTZjOC44IDAgMTYtNy4yIDE2LTE2VjM1MmgzMnY0My4zYzAgNDEuOCAzMCA4MC4xIDcxLjYgODQuMyA0Ny44IDQuOSA4OC40LTMyLjcgODguNC03OS42di02NGMwLTguOC03LjItMTYtMTYtMTZ6XCJdXG59O1xudmFyIGZhUmVzdHJvb20gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmVzdHJvb20nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY3YmRcIiwgXCJNMTI4IDEyOGMzNS4zIDAgNjQtMjguNyA2NC02NFMxNjMuMyAwIDEyOCAwIDY0IDI4LjcgNjQgNjRzMjguNyA2NCA2NCA2NHptMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRTNTQ3LjMgMCA1MTIgMHMtNjQgMjguNy02NCA2NCAyOC43IDY0IDY0IDY0em0xMjcuMyAyMjYuNWwtNDUuNi0xODUuOGMtMy4zLTEzLjUtMTUuNS0yMy0yOS44LTI0LjItMTUgOS43LTMyLjggMTUuNS01MiAxNS41LTE5LjIgMC0zNy01LjgtNTItMTUuNS0xNC4zIDEuMi0yNi41IDEwLjctMjkuOCAyNC4ybC00NS42IDE4NS44QzM4MSAzNjkuNiAzOTMgMzg0IDQwOS4yIDM4NEg0NjR2MTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjM4NGg1NC44YzE2LjIgMCAyOC4yLTE0LjQgMjQuNS0yOS41ek0zMzYgMGgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnY0ODBjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxNmMwLTguOC03LjItMTYtMTYtMTZ6TTE4MC4xIDE0NC40Yy0xNSA5LjgtMzIuOSAxNS42LTUyLjEgMTUuNi0xOS4yIDAtMzcuMS01LjgtNTIuMS0xNS42QzUxLjMgMTQ2LjUgMzIgMTY2LjkgMzIgMTkydjEzNmMwIDEzLjMgMTAuNyAyNCAyNCAyNGg4djEzNmMwIDEzLjMgMTAuNyAyNCAyNCAyNGg4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYzNTJoOGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxOTJjMC0yNS4xLTE5LjMtNDUuNS00My45LTQ3LjZ6XCJdXG59O1xudmFyIGZhUmV0d2VldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyZXR3ZWV0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMDc5XCIsIFwiTTYyOS42NTcgMzQzLjU5OEw1MjguOTcxIDQ0NC4yODRjLTkuMzczIDkuMzcyLTI0LjU2OCA5LjM3Mi0zMy45NDEgMEwzOTQuMzQzIDM0My41OThjLTkuMzczLTkuMzczLTkuMzczLTI0LjU2OSAwLTMzLjk0MWwxMC44MjMtMTAuODIzYzkuNTYyLTkuNTYyIDI1LjEzMy05LjM0IDM0LjQxOS40OTJMNDgwIDM0Mi4xMThWMTYwSDI5Mi40NTFhMjQuMDA1IDI0LjAwNSAwIDAgMS0xNi45NzEtNy4wMjlsLTE2LTE2QzI0NC4zNjEgMTIxLjg1MSAyNTUuMDY5IDk2IDI3Ni40NTEgOTZINTIwYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHYyMjIuMTE4bDQwLjQxNi00Mi43OTJjOS4yODUtOS44MzEgMjQuODU2LTEwLjA1NCAzNC40MTktLjQ5MmwxMC44MjMgMTAuODIzYzkuMzcyIDkuMzcyIDkuMzcyIDI0LjU2OS0uMDAxIDMzLjk0MXptLTI2NS4xMzggMTUuNDMxQTIzLjk5OSAyMy45OTkgMCAwIDAgMzQ3LjU0OCAzNTJIMTYwVjE2OS44ODFsNDAuNDE2IDQyLjc5MmM5LjI4NiA5LjgzMSAyNC44NTYgMTAuMDU0IDM0LjQxOS40OTFsMTAuODIyLTEwLjgyMmM5LjM3My05LjM3MyA5LjM3My0yNC41NjkgMC0zMy45NDFMMTQ0Ljk3MSA2Ny43MTZjLTkuMzczLTkuMzczLTI0LjU2OS05LjM3My0zMy45NDEgMEwxMC4zNDMgMTY4LjQwMmMtOS4zNzMgOS4zNzMtOS4zNzMgMjQuNTY5IDAgMzMuOTQxbDEwLjgyMiAxMC44MjJjOS41NjIgOS41NjIgMjUuMTMzIDkuMzQgMzQuNDE5LS40OTFMOTYgMTY5Ljg4MVYzOTJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDI0My41NDljMjEuMzgyIDAgMzIuMDktMjUuODUxIDE2Ljk3MS00MC45NzFsLTE2LjAwMS0xNnpcIl1cbn07XG52YXIgZmFSaWJib24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmliYm9uJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNGQ2XCIsIFwiTTYuMSA0NDQuM2MtOS42IDEwLjgtNy41IDI3LjYgNC41IDM1LjdsNjguOCAyNy45YzkuOSA2LjcgMjMuMyA1IDMxLjMtMy44bDkxLjgtMTAxLjktNzkuMi04Ny45LTExNy4yIDEzMHptNDM1LjggMHMtMjkyLTMyNC42LTI5NS40LTMzMC4xYzE1LjQtOC40IDQwLjItMTcuOSA3Ny41LTE3LjlzNjIuMSA5LjUgNzcuNSAxNy45Yy0zLjMgNS42LTU2IDY0LjYtNTYgNjQuNmw3OS4xIDg3LjcgMzQuMi0zOGMyOC43LTMxLjkgMzMuMy03OC42IDExLjQtMTE1LjVsLTQzLjctNzMuNWMtNC4zLTcuMi05LjktMTMuMy0xNi44LTE4LTQwLjctMjcuNi0xMjcuNC0yOS43LTE3MS40IDAtNi45IDQuNy0xMi41IDEwLjgtMTYuOCAxOGwtNDMuNiA3My4yYy0xLjUgMi41LTM3LjEgNjIuMiAxMS41IDExNkwzMzcuNSA1MDRjOCA4LjkgMjEuNCAxMC41IDMxLjMgMy44bDY4LjgtMjcuOWMxMS45LTggMTQtMjQuOCA0LjMtMzUuNnpcIl1cbn07XG52YXIgZmFSaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JpbmcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3MGJcIiwgXCJNMjU2IDY0QzExMC4wNiA2NCAwIDEyNS45MSAwIDIwOHY5OC4xM0MwIDM4NC40OCAxMTQuNjIgNDQ4IDI1NiA0NDhzMjU2LTYzLjUyIDI1Ni0xNDEuODdWMjA4YzAtODIuMDktMTEwLjA2LTE0NC0yNTYtMTQ0em0wIDY0YzEwNi4wNCAwIDE5MiAzNS44MiAxOTIgODAgMCA5LjI2LTMuOTcgMTguMTItMTAuOTEgMjYuMzlDMzkyLjE1IDIwOC4yMSAzMjguMjMgMTkyIDI1NiAxOTJzLTEzNi4xNSAxNi4yMS0xODEuMDkgNDIuMzlDNjcuOTcgMjI2LjEyIDY0IDIxNy4yNiA2NCAyMDhjMC00NC4xOCA4NS45Ni04MCAxOTItODB6TTEyMC40MyAyNjQuNjRDMTU1LjA0IDI0OS45MyAyMDEuNjQgMjQwIDI1NiAyNDBzMTAwLjk2IDkuOTMgMTM1LjU3IDI0LjY0QzM1Ni44NCAyNzkuMDcgMzA4LjkzIDI4OCAyNTYgMjg4cy0xMDAuODQtOC45My0xMzUuNTctMjMuMzZ6XCJdXG59O1xudmFyIGZhUm9hZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyb2FkJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMDE4XCIsIFwiTTU3My4xOSA0MDIuNjdsLTEzOS43OS0zMjBDNDI4LjQzIDcxLjI5IDQxNy42IDY0IDQwNS42OCA2NGgtOTcuNTlsMi40NSAyMy4xNmMuNSA0LjcyLTMuMjEgOC44NC03Ljk2IDguODRoLTI5LjE2Yy00Ljc1IDAtOC40Ni00LjEyLTcuOTYtOC44NEwyNjcuOTEgNjRoLTk3LjU5Yy0xMS45MyAwLTIyLjc2IDcuMjktMjcuNzMgMTguNjdMMi44IDQwMi42N0MtNi40NSA0MjMuODYgOC4zMSA0NDggMzAuNTQgNDQ4aDE5Ni44NGwxMC4zMS05Ny42OGMuODYtOC4xNCA3LjcyLTE0LjMyIDE1LjkxLTE0LjMyaDY4LjhjOC4xOSAwIDE1LjA1IDYuMTggMTUuOTEgMTQuMzJMMzQ4LjYyIDQ0OGgxOTYuODRjMjIuMjMgMCAzNi45OS0yNC4xNCAyNy43My00NS4zM3pNMjYwLjQgMTM1LjE2YTggOCAwIDAgMSA3Ljk2LTcuMTZoMzkuMjljNC4wOSAwIDcuNTMgMy4wOSA3Ljk2IDcuMTZsNC42IDQzLjU4Yy43NSA3LjA5LTQuODEgMTMuMjYtMTEuOTMgMTMuMjZoLTQwLjU0Yy03LjEzIDAtMTIuNjgtNi4xNy0xMS45My0xMy4yNmw0LjU5LTQzLjU4ek0zMTUuNjQgMzA0aC01NS4yOWMtOS41IDAtMTYuOTEtOC4yMy0xNS45MS0xNy42OGw1LjA3LTQ4Yy44Ni04LjE0IDcuNzItMTQuMzIgMTUuOTEtMTQuMzJoNDUuMTVjOC4xOSAwIDE1LjA1IDYuMTggMTUuOTEgMTQuMzJsNS4wNyA0OGMxIDkuNDUtNi40MSAxNy42OC0xNS45MSAxNy42OHpcIl1cbn07XG52YXIgZmFSb2JvdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyb2JvdCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjU0NFwiLCBcIk0zMiwyMjRINjRWNDE2SDMyQTMxLjk2MTY2LDMxLjk2MTY2LDAsMCwxLDAsMzg0VjI1NkEzMS45NjE2NiwzMS45NjE2NiwwLDAsMSwzMiwyMjRabTUxMi00OFY0NDhhNjQuMDYzMjgsNjQuMDYzMjgsMCwwLDEtNjQsNjRIMTYwYTY0LjA2MzI4LDY0LjA2MzI4LDAsMCwxLTY0LTY0VjE3NmE3OS45NzQsNzkuOTc0LDAsMCwxLDgwLTgwSDI4OFYzMmEzMiwzMiwwLDAsMSw2NCwwVjk2SDQ2NEE3OS45NzQsNzkuOTc0LDAsMCwxLDU0NCwxNzZaTTI2NCwyNTZhNDAsNDAsMCwxLDAtNDAsNDBBMzkuOTk3LDM5Ljk5NywwLDAsMCwyNjQsMjU2Wm0tOCwxMjhIMTkydjMyaDY0Wm05NiwwSDI4OHYzMmg2NFpNNDU2LDI1NmE0MCw0MCwwLDEsMC00MCw0MEEzOS45OTcsMzkuOTk3LDAsMCwwLDQ1NiwyNTZabS04LDEyOEgzODR2MzJoNjRaTTY0MCwyNTZWMzg0YTMxLjk2MTY2LDMxLjk2MTY2LDAsMCwxLTMyLDMySDU3NlYyMjRoMzJBMzEuOTYxNjYsMzEuOTYxNjYsMCwwLDEsNjQwLDI1NlpcIl1cbn07XG52YXIgZmFSb2NrZXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncm9ja2V0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMTM1XCIsIFwiTTUwNS4xMjAxOSwxOS4wOTM3NWMtMS4xODk0NS01LjUzMTI1LTYuNjU4MTktMTEtMTIuMjA3LTEyLjE4NzVDNDYwLjcxNiwwLDQzNS41MDcsMCw0MTAuNDA3NDcsMCwzMDcuMTc1MjMsMCwyNDUuMjY5MDksNTUuMjAzMTIsMTk5LjA1MjM4LDEyOEg5NC44Mzc3MmMtMTYuMzQ3NjMuMDE1NjItMzUuNTU2NTgsMTEuODc1LTQyLjg4NjY0LDI2LjQ4NDM4TDIuNTE1NjIsMjUzLjI5Njg4QTI4LjQsMjguNCwwLDAsMCwwLDI2NGEyNC4wMDg2NywyNC4wMDg2NywwLDAsMCwyNC4wMDU4MiwyNEgxMjcuODE2MThsLTIyLjQ3NDU3LDIyLjQ2ODc1Yy0xMS4zNjUyMSwxMS4zNjEzMy0xMi45OTYwNywzMi4yNTc4MSwwLDQ1LjI1TDE1Ni4yNDU4Miw0MDYuNjI1YzExLjE1NjIzLDExLjE4NzUsMzIuMTU2MTksMTMuMTU2MjUsNDUuMjc3MjYsMGwyMi40NzQ1Ny0yMi40Njg3NVY0ODhhMjQuMDA4NjcsMjQuMDA4NjcsMCwwLDAsMjQuMDA1ODEsMjQsMjguNTU5MzQsMjguNTU5MzQsMCwwLDAsMTAuNzA3LTIuNTE1NjJsOTguNzI4MzQtNDkuMzkwNjNjMTQuNjI4ODgtNy4yOTY4NywyNi41MDc3Ni0yNi41LDI2LjUwNzc2LTQyLjg1OTM3VjMxMi43OTY4OGM3Mi41OTc1My00Ni4zMTI1LDEyOC4wMzQ5My0xMDguNDA2MjYsMTI4LjAzNDkzLTIxMS4wOTM3NkM1MTIuMDc1MjYsNzYuNSw1MTIuMDc1MjYsNTEuMjk2ODgsNTA1LjEyMDE5LDE5LjA5Mzc1Wk0zODQuMDQwMzMsMTY4QTQwLDQwLDAsMSwxLDQyNC4wNSwxMjgsNDAuMDIzMjIsNDAuMDIzMjIsMCwwLDEsMzg0LjA0MDMzLDE2OFpcIl1cbn07XG52YXIgZmFSb3V0ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyb3V0ZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjRkN1wiLCBcIk00MTYgMzIwaC05NmMtMTcuNiAwLTMyLTE0LjQtMzItMzJzMTQuNC0zMiAzMi0zMmg5NnM5Ni0xMDcgOTYtMTYwLTQzLTk2LTk2LTk2LTk2IDQzLTk2IDk2YzAgMjUuNSAyMi4yIDYzLjQgNDUuMyA5NkgzMjBjLTUyLjkgMC05NiA0My4xLTk2IDk2czQzLjEgOTYgOTYgOTZoOTZjMTcuNiAwIDMyIDE0LjQgMzIgMzJzLTE0LjQgMzItMzIgMzJIMTg1LjVjLTE2IDI0LjgtMzMuOCA0Ny43LTQ3LjMgNjRINDE2YzUyLjkgMCA5Ni00My4xIDk2LTk2cy00My4xLTk2LTk2LTk2em0wLTI1NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6TTk2IDI1NmMtNTMgMC05NiA0My05NiA5NnM5NiAxNjAgOTYgMTYwIDk2LTEwNyA5Ni0xNjAtNDMtOTYtOTYtOTZ6bTAgMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIl1cbn07XG52YXIgZmFSc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncnNzJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDllXCIsIFwiTTEyOC4wODEgNDE1Ljk1OWMwIDM1LjM2OS0yOC42NzIgNjQuMDQxLTY0LjA0MSA2NC4wNDFTMCA0NTEuMzI4IDAgNDE1Ljk1OXMyOC42NzItNjQuMDQxIDY0LjA0MS02NC4wNDEgNjQuMDQgMjguNjczIDY0LjA0IDY0LjA0MXptMTc1LjY2IDQ3LjI1Yy04LjM1NC0xNTQuNi0xMzIuMTg1LTI3OC41ODctMjg2Ljk1LTI4Ni45NUM3LjY1NiAxNzUuNzY1IDAgMTgzLjEwNSAwIDE5Mi4yNTN2NDguMDY5YzAgOC40MTUgNi40OSAxNS40NzIgMTQuODg3IDE2LjAxOCAxMTEuODMyIDcuMjg0IDIwMS40NzMgOTYuNzAyIDIwOC43NzIgMjA4Ljc3Mi41NDcgOC4zOTcgNy42MDQgMTQuODg3IDE2LjAxOCAxNC44ODdoNDguMDY5YzkuMTQ5LjAwMSAxNi40ODktNy42NTUgMTUuOTk1LTE2Ljc5em0xNDQuMjQ5LjI4OEM0MzkuNTk2IDIyOS42NzcgMjUxLjQ2NSA0MC40NDUgMTYuNTAzIDMyLjAxIDcuNDczIDMxLjY4NiAwIDM4Ljk4MSAwIDQ4LjAxNnY0OC4wNjhjMCA4LjYyNSA2LjgzNSAxNS42NDUgMTUuNDUzIDE1Ljk5OSAxOTEuMTc5IDcuODM5IDM0NC42MjcgMTYxLjMxNiAzNTIuNDY1IDM1Mi40NjUuMzUzIDguNjE4IDcuMzczIDE1LjQ1MyAxNS45OTkgMTUuNDUzaDQ4LjA2OGM5LjAzNC0uMDAxIDE2LjMyOS03LjQ3NCAxNi4wMDUtMTYuNTA0elwiXVxufTtcbnZhciBmYVJzc1NxdWFyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyc3Mtc3F1YXJlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMTQzXCIsIFwiTTQwMCAzMkg0OEMyMS40OSAzMiAwIDUzLjQ5IDAgODB2MzUyYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMzUyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWODBjMC0yNi41MS0yMS40OS00OC00OC00OHpNMTEyIDQxNmMtMjYuNTEgMC00OC0yMS40OS00OC00OHMyMS40OS00OCA0OC00OCA0OCAyMS40OSA0OCA0OC0yMS40OSA0OC00OCA0OHptMTU3LjUzMyAwaC0zNC4zMzVjLTYuMDExIDAtMTEuMDUxLTQuNjM2LTExLjQ0Mi0xMC42MzQtNS4yMTQtODAuMDUtNjkuMjQzLTE0My45Mi0xNDkuMTIzLTE0OS4xMjMtNS45OTctLjM5LTEwLjYzMy01LjQzMS0xMC42MzMtMTEuNDQxdi0zNC4zMzVjMC02LjUzNSA1LjQ2OC0xMS43NzcgMTEuOTk0LTExLjQyNSAxMTAuNTQ2IDUuOTc0IDE5OC45OTcgOTQuNTM2IDIwNC45NjQgMjA0Ljk2NC4zNTIgNi41MjYtNC44OSAxMS45OTQtMTEuNDI1IDExLjk5NHptMTAzLjAyNyAwaC0zNC4zMzRjLTYuMTYxIDAtMTEuMTc1LTQuODgyLTExLjQyNy0xMS4wMzgtNS41OTgtMTM2LjUzNS0xMTUuMjA0LTI0Ni4xNjEtMjUxLjc2LTI1MS43NkM2OC44ODIgMTUyLjk0OSA2NCAxNDcuOTM1IDY0IDE0MS43NzRWMTA3LjQ0YzAtNi40NTQgNS4zMzgtMTEuNjY0IDExLjc4Ny0xMS40MzIgMTY3LjgzIDYuMDI1IDMwMi4yMSAxNDEuMTkxIDMwOC4yMDUgMzA4LjIwNS4yMzIgNi40NDktNC45NzggMTEuNzg3LTExLjQzMiAxMS43ODd6XCJdXG59O1xudmFyIGZhUnVibGVTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3J1YmxlLXNpZ24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYxNThcIiwgXCJNMjM5LjM2IDMyMEMzMjQuNDggMzIwIDM4NCAyNjAuNTQyIDM4NCAxNzUuMDcxUzMyNC40OCAzMiAyMzkuMzYgMzJINzZjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjA2LjYzMkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMlYzMDhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg1MnYzMkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDUydjUyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNTguNTZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNTJIMzA4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJIMTQ2LjU2di0zMmg5Mi44em0tOTIuOC0yMTkuMjUyaDc4LjcyYzQ2LjcyIDAgNzQuODggMjkuMTEgNzQuODggNzQuMzIzIDAgNDUuODMyLTI4LjE2IDc1LjU2MS03Ni4xNiA3NS41NjFoLTc3LjQ0VjEwMC43NDh6XCJdXG59O1xudmFyIGZhUnVsZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncnVsZXInLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1NDVcIiwgXCJNNjM1LjcgMTY3LjJMNTU2LjEgMzEuN2MtOC44LTE1LTI4LjMtMjAuMS00My41LTExLjVsLTY5IDM5LjFMNTAzLjMgMTYxYzIuMiAzLjguOSA4LjUtMi45IDEwLjdsLTEzLjggNy44Yy0zLjggMi4yLTguNy45LTEwLjktMi45TDQxNiA3NWwtNTUuMiAzMS4zIDI3LjkgNDcuNGMyLjIgMy44LjkgOC41LTIuOSAxMC43bC0xMy44IDcuOGMtMy44IDIuMi04LjcuOS0xMC45LTIuOUwzMzMuMiAxMjIgMjc4IDE1My4zIDMzNy44IDI1NWMyLjIgMy43LjkgOC41LTIuOSAxMC43bC0xMy44IDcuOGMtMy44IDIuMi04LjcuOS0xMC45LTIuOWwtNTkuNy0xMDEuNy01NS4yIDMxLjMgMjcuOSA0Ny40YzIuMiAzLjguOSA4LjUtMi45IDEwLjdsLTEzLjggNy44Yy0zLjggMi4yLTguNy45LTEwLjktMi45bC0yNy45LTQ3LjUtNTUuMiAzMS4zIDU5LjcgMTAxLjdjMi4yIDMuNy45IDguNS0yLjkgMTAuN2wtMTMuOCA3LjhjLTMuOCAyLjItOC43LjktMTAuOS0yLjlMODQuOSAyNjIuOWwtNjkgMzkuMUMuNyAzMTAuNy00LjYgMzI5LjggNC4yIDM0NC44bDc5LjYgMTM1LjZjOC44IDE1IDI4LjMgMjAuMSA0My41IDExLjVMNjI0LjEgMjEwYzE1LjItOC42IDIwLjQtMjcuOCAxMS42LTQyLjh6XCJdXG59O1xudmFyIGZhUnVsZXJDb21iaW5lZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdydWxlci1jb21iaW5lZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjU0NlwiLCBcIk0xNjAgMjg4aC01NmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDU2di02NGgtNTZjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGg1NlY5NmgtNTZjLTQuNDIgMC04LTMuNTgtOC04VjcyYzAtNC40MiAzLjU4LTggOC04aDU2VjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJIMzJDMTQuMzMgMCAwIDE0LjMzIDAgMzJ2NDQ4YzAgMi43Ny45MSA1LjI0IDEuNTcgNy44TDE2MCAzMjkuMzhWMjg4em0zMjAgNjRoLTMydjU2YzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh2LTU2aC02NHY1NmMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di01NmgtNjR2NTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtNTZoLTQxLjM3TDI0LjIgNTEwLjQzYzIuNTYuNjYgNS4wNCAxLjU3IDcuOCAxLjU3aDQ0OGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwiXVxufTtcbnZhciBmYVJ1bGVySG9yaXpvbnRhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdydWxlci1ob3Jpem9udGFsJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTQ3XCIsIFwiTTU0NCAxMjhoLTQ4djg4YzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh2LTg4aC02NHY4OGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di04OGgtNjR2ODhjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtODhoLTY0djg4YzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh2LTg4aC02NHY4OGMwIDQuNDItMy41OCA4LTggOEg4OGMtNC40MiAwLTgtMy41OC04LTh2LTg4SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjE5MmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDUxMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjE2MGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwiXVxufTtcbnZhciBmYVJ1bGVyVmVydGljYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncnVsZXItdmVydGljYWwnLFxuICBpY29uOiBbMjU2LCA1MTIsIFtdLCBcImY1NDhcIiwgXCJNMTY4IDQxNmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDg4di02NGgtODhjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGg4OHYtNjRoLTg4Yy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoODh2LTY0aC04OGMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDg4VjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJIMzJDMTQuMzMgMCAwIDE0LjMzIDAgMzJ2NDQ4YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTkyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0aC04OHpcIl1cbn07XG52YXIgZmFSdW5uaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3J1bm5pbmcnLFxuICBpY29uOiBbNDE2LCA1MTIsIFtdLCBcImY3MGNcIiwgXCJNMjcyIDk2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhTMjk4LjUxIDAgMjcyIDBzLTQ4IDIxLjQ5LTQ4IDQ4IDIxLjQ5IDQ4IDQ4IDQ4ek0xMTMuNjkgMzE3LjQ3bC0xNC44IDM0LjUySDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyaDc3LjQ1YzE5LjI1IDAgMzYuNTgtMTEuNDQgNDQuMTEtMjkuMDlsOC43OS0yMC41Mi0xMC42Ny02LjNjLTE3LjMyLTEwLjIzLTMwLjA2LTI1LjM3LTM3Ljk5LTQyLjYxek0zODQgMjIzLjk5aC00NC4wM2wtMjYuMDYtNTMuMjVjLTEyLjUtMjUuNTUtMzUuNDUtNDQuMjMtNjEuNzgtNTAuOTRsLTcxLjA4LTIxLjE0Yy0yOC4zLTYuOC01Ny43Ny0uNTUtODAuODQgMTcuMTRsLTM5LjY3IDMwLjQxYy0xNC4wMyAxMC43NS0xNi42OSAzMC44My01LjkyIDQ0Ljg2czMwLjg0IDE2LjY2IDQ0Ljg2IDUuOTJsMzkuNjktMzAuNDFjNy42Ny01Ljg5IDE3LjQ0LTggMjUuMjctNi4xNGwxNC43IDQuMzctMzcuNDYgODcuMzljLTEyLjYyIDI5LjQ4LTEuMzEgNjQuMDEgMjYuMyA4MC4zMWw4NC45OCA1MC4xNy0yNy40NyA4Ny43M2MtNS4yOCAxNi44NiA0LjExIDM0LjgxIDIwLjk3IDQwLjA5IDMuMTkgMSA2LjQxIDEuNDggOS41OCAxLjQ4IDEzLjYxIDAgMjYuMjMtOC43NyAzMC41Mi0yMi40NWwzMS42NC0xMDEuMDZjNS45MS0yMC43Ny0yLjg5LTQzLjA4LTIxLjY0LTU0LjM5bC02MS4yNC0zNi4xNCAzMS4zMS03OC4yOCAyMC4yNyA0MS40M2M4IDE2LjM0IDI0LjkyIDI2Ljg5IDQzLjExIDI2Ljg5SDM4NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMycy0xNC4zMy0zMS45OS0zMi0zMS45OXpcIl1cbn07XG52YXIgZmFSdXBlZVNpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncnVwZWUtc2lnbicsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZjE1NlwiLCBcIk0zMDggOTZjNi42MjcgMCAxMi01LjM3MyAxMi0xMlY0NGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDEyQzUuMzczIDMyIDAgMzcuMzczIDAgNDR2NDQuNzQ4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoODUuMjhjMjcuMzA4IDAgNDguMjYxIDkuOTU4IDYwLjk3IDI3LjI1MkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDE1OC43NTdjLTYuMjE3IDM2LjA4Ni0zMi45NjEgNTguNjMyLTc0Ljc1NyA1OC42MzJIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NTMuMDEyYzAgMy4zNDkgMS40IDYuNTQ2IDMuODYxIDguODE4bDE2NS4wNTIgMTUyLjM1NmExMi4wMDEgMTIuMDAxIDAgMCAwIDguMTM5IDMuMTgyaDgyLjU2MmMxMC45MjQgMCAxNi4xNjYtMTMuNDA4IDguMTM5LTIwLjgxOEwxMTYuODcxIDMxOS45MDZjNzYuNDk5LTIuMzQgMTMxLjE0NC01My4zOTUgMTM4LjMxOC0xMjcuOTA2SDMwOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC01OC42OWMtMy40ODYtMTEuNTQxLTguMjgtMjIuMjQ2LTE0LjI1Mi0zMkgzMDh6XCJdXG59O1xudmFyIGZhU2FkQ3J5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NhZC1jcnknLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1YjNcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZjMCA5MC4xIDQ4LjIgMTY4LjcgMTIwIDIxMi4xVjI4OGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djE5Ni43YzI5LjUgMTIuNCA2MiAxOS4zIDk2IDE5LjNzNjYuNS02LjkgOTYtMTkuM1YyODhjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnYxODAuMUM0NDcuOCA0MjQuNyA0OTYgMzQ2IDQ5NiAyNTYgNDk2IDExOSAzODUgOCAyNDggOHptLTY1LjUgMjE2LjVjLTE0LjgtMTMuMi00Ni4yLTEzLjItNjEgMEwxMTIgMjMzYy0zLjggMy4zLTkuMyA0LTEzLjcgMS42LTQuNC0yLjQtNi45LTcuNC02LjEtMTIuNCA0LTI1LjIgMzQuMi00Mi4xIDU5LjktNDIuMVMyMDggMTk3IDIxMiAyMjIuMmMuOCA1LTEuNyAxMC02LjEgMTIuNC01LjggMy4xLTExLjIuNy0xMy43LTEuNmwtOS43LTguNXpNMjQ4IDQxNmMtMjYuNSAwLTQ4LTI4LjctNDgtNjRzMjEuNS02NCA0OC02NCA0OCAyOC43IDQ4IDY0LTIxLjUgNjQtNDggNjR6bTE0OS44LTE4MS41Yy01LjggMy4xLTExLjIuNy0xMy43LTEuNmwtOS41LTguNWMtMTQuOC0xMy4yLTQ2LjItMTMuMi02MSAwTDMwNCAyMzNjLTMuOCAzLjMtOS4zIDQtMTMuNyAxLjYtNC40LTIuNC02LjktNy40LTYuMS0xMi40IDQtMjUuMiAzNC4yLTQyLjEgNTkuOS00Mi4xUzQwMCAxOTcgNDA0IDIyMi4yYy42IDQuOS0xLjggOS45LTYuMiAxMi4zelwiXVxufTtcbnZhciBmYVNhZFRlYXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2FkLXRlYXInLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImY1YjRcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptODAgMTY4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnpNMTUyIDQxNmMtMjYuNSAwLTQ4LTIxLTQ4LTQ3IDAtMjAgMjguNS02MC40IDQxLjYtNzcuOCAzLjItNC4zIDkuNi00LjMgMTIuOCAwQzE3MS41IDMwOC42IDIwMCAzNDkgMjAwIDM2OWMwIDI2LTIxLjUgNDctNDggNDd6bTE2LTE3NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTE3MC4yIDE1NC4yQzMxNS44IDM2Ny40IDI4Mi45IDM1MiAyNDggMzUyYy0yMS4yIDAtMjEuMi0zMiAwLTMyIDQ0LjQgMCA4Ni4zIDE5LjYgMTE0LjcgNTMuOCAxMy44IDE2LjQtMTEuMiAzNi41LTI0LjUgMjAuNHpcIl1cbn07XG52YXIgZmFTYXRlbGxpdGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2F0ZWxsaXRlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmN2JmXCIsIFwiTTUwMi42MDk2OSwzMTAuMDQyMDZsLTk2LjcwMzkzLDk2LjcxNjI1YTMxLjg4MTUxLDMxLjg4MTUxLDAsMCwxLTQ1LjAwNzY1LDBMMjgwLjU3MiwzMjYuMzQxMTVsLTkuODkyMzEsOS45MDc1OWExOTAuNTYzNDMsMTkwLjU2MzQzLDAsMCwxLTUuNDA3MTYsMTY4LjUyMjg3Yy00LjUwMDc3LDguNTAxMTUtMTYuMzkzNDIsOS41OTUwNS0yMy4yMDcwNywyLjc5NzI1TDEzNC41NDcxNSw0MDAuMDU0MjhsLTE3Ljc5OTksMTcuNzk5MjljLjcwMzI0LDIuNjA5NzIsMS42MDk2NSw1LjAwMDY3LDEuNjA5NjUsNy43OTc5M2EzMi4wMDU0NCwzMi4wMDU0NCwwLDEsMS0zMi4wMDU0NC0zMi4wMDQzNGMyLjc5NzM1LDAsNS4xODgzOC45MDYzNyw3Ljc5ODIsMS42MDk1OWwxNy43OTk5LTE3Ljc5OTI5TDQuNDMxMjksMjY5Ljk0Mjg3Yy02Ljc5OC02LjgxMzQyLTUuNzA0MDktMTguNjExOSwyLjc5NzM1LTIzLjIwNjI3YTE5MC41ODE2MSwxOTAuNTgxNjEsMCwwLDEsMTY4LjUyODY0LTUuNDA3bDkuNzk4NTQtOS43OTgyMS04MC4zMTA1My04MC40MTcxNmEzMi4wMDIsMzIuMDAyLDAsMCwxLDAtNDUuMDk5ODdMMjAxLjk2NDc0LDkuMjk4MTRBMzEuNjI2MzksMzEuNjI2MzksMCwwLDEsMjI0LjQ2ODY4LDBhMzEuOTk5NTEsMzEuOTk5NTEsMCwwLDEsMjIuNTk3NTksOS4yOTgxNGw4MC4zMjYxNSw4MC4zMDc3Nyw0Ny44MDUtNDcuODk3MTNhMzMuNjA3NSwzMy42MDc1LDAsMCwxLDQ3LjUwODA4LDBsNDcuNTA4MDcsNDcuNTA2NDVhMzMuNjMzMDgsMzMuNjMzMDgsMCwwLDEsMCw0Ny41MDY0NGwtNDcuODA1LDQ3Ljg5NzEzTDUwMi43MTkwOCwyNjUuMDM2QTMxLjc4OTM4LDMxLjc4OTM4LDAsMCwxLDUwMi42MDk2OSwzMTAuMDQyMDZaTTIxOS41NjE1OSwxOTcuNDMzbDczLjgyNTA1LTczLjgyMjUyLTY4LjkxOC02OC45LTczLjgwOTQyLDczLjgwNjg5Wm0yMzcuNzQzNTIsOTAuMTA2LTY4LjkwMjMzLTY4LjkxNTYtNzMuODI1LDczLjgyMjUyLDY4LjkxOCw2OC45WlwiXVxufTtcbnZhciBmYVNhdGVsbGl0ZURpc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2F0ZWxsaXRlLWRpc2gnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3YzBcIiwgXCJNMzA1LjQ0OTU0LDQ2Mi41OWM3LjM5MTU3LDcuMjk3OTIsNi4xODgyOSwyMC4wOTY2MS0zLjAwMDM4LDI1LjAwMzU2LTc3LjcxMyw0MS44MDI4MS0xNzYuNzI1NTksMjkuOTEwNS0yNDIuMzQzMzEtMzUuNzA4MkMtNS40OTYyNCwzODYuMjgyMjctMTcuNDA0LDI4Ny4zNjIsMjQuNDEzODEsMjA5LjU1NGM0Ljg5MTI1LTkuMDk1LDE3LjY4OTc1LTEwLjI5ODM0LDI1LjAwMzE4LTMuMDAwNDNMMTY2LjIyODcyLDMyMy4zNjcwOGwyNy4zOTQxMS0yNy4zOTQ1MmMtLjY4NzU5LTIuNjA5NzQtMS41OTQtNS4wMDA3MS0xLjU5NC03LjgxMzYxYTMyLjAwNDA3LDMyLjAwNDA3LDAsMSwxLDMyLjAwNDA3LDMyLjAwNDU1Yy0yLjc5NzIzLDAtNS4yMDM3OC0uODkwNzUtNy43OTc4Ni0xLjU5NGwtMjcuNDA5NzQsMjcuNDEwMTVaTTUxMS45NzU4LDMwMy4wNjczMmExNi4xMDMzNiwxNi4xMDMzNiwwLDAsMS0xNi4wMDIsMTcuMDAyNDJINDYzLjg2MDMxYTE1Ljk2OTU2LDE1Ljk2OTU2LDAsMCwxLTE1Ljg5MjY1LTE1LjAwMjEzQzQ0MC40NjY3MSwxNzUuNTQ5MiwzMzYuNDUzNDgsNzAuNTM0MjcsMjA3LjAzMDc4LDYzLjUzMzI4YTE1Ljg0NDg2LDE1Ljg0NDg2LDAsMCwxLTE1LjAwMTkxLTE1LjkwODUyVjE2LjAyNjUyQTE2LjA5Mzg5LDE2LjA5Mzg5LDAsMCwxLDIwOS4wMzEuMDI0MjVDMzcyLjI1NDkxLDguNjE5MjIsNTAzLjQ3NDcyLDEzOS44NDEsNTExLjk3NTgsMzAzLjA2NzMyWm0tOTYuMDEyMjEtLjI5NjkyYTE2LjIxMDkzLDE2LjIxMDkzLDAsMCwxLTE2LjExMTQyLDE3LjI5OTM0SDM2Ny42NDVhMTYuMDY4NjIsMTYuMDY4NjIsMCwwLDEtMTUuODkyNjUtMTQuNzA1MjJjLTYuOTA3MTItNzcuMDEwOTQtNjguMTE4LTEzOC45MTAzNy0xNDQuOTI0NjctMTQ1LjIyMzc2YTE1Ljk0LDE1Ljk0LDAsMCwxLTE0Ljc5ODc2LTE1Ljg5Mjg5VjExMi4xMzM5M2ExNi4xMzQsMTYuMTM0LDAsMCwxLDE3LjI5OTA4LTE2LjA5NkMzMTkuNDUxMzIsMTA0LjUzOTEsNDA3LjU1NjI3LDE5Mi42NDUzOCw0MTUuOTYzNTksMzAyLjc3MDRaXCJdXG59O1xudmFyIGZhU2F2ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzYXZlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMGM3XCIsIFwiTTQzMy45NDEgMTI5Ljk0MWwtODMuODgyLTgzLjg4MkE0OCA0OCAwIDAgMCAzMTYuMTE4IDMySDQ4QzIxLjQ5IDMyIDAgNTMuNDkgMCA4MHYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzNTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxNjMuODgyYTQ4IDQ4IDAgMCAwLTE0LjA1OS0zMy45NDF6TTIyNCA0MTZjLTM1LjM0NiAwLTY0LTI4LjY1NC02NC02NCAwLTM1LjM0NiAyOC42NTQtNjQgNjQtNjRzNjQgMjguNjU0IDY0IDY0YzAgMzUuMzQ2LTI4LjY1NCA2NC02NCA2NHptOTYtMzA0LjUyVjIxMmMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDc2Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEyVjEwOGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDIyOC41MmMzLjE4MyAwIDYuMjM1IDEuMjY0IDguNDg1IDMuNTE1bDMuNDggMy40OEExMS45OTYgMTEuOTk2IDAgMCAxIDMyMCAxMTEuNDh6XCJdXG59O1xudmFyIGZhU2Nob29sID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NjaG9vbCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjU0OVwiLCBcIk0wIDIyNHYyNzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoODBWMTkySDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyem0zNjAtNDhoLTI0di00MGMwLTQuNDItMy41OC04LTgtOGgtMTZjLTQuNDIgMC04IDMuNTgtOCA4djY0YzAgNC40MiAzLjU4IDggOCA4aDQ4YzQuNDIgMCA4LTMuNTggOC04di0xNmMwLTQuNDItMy41OC04LTgtOHptMTM3Ljc1LTYzLjk2bC0xNjAtMTA2LjY3YTMyLjAyIDMyLjAyIDAgMCAwLTM1LjUgMGwtMTYwIDEwNi42N0EzMi4wMDIgMzIuMDAyIDAgMCAwIDEyOCAxMzguNjZWNTEyaDEyOFYzNjhjMC04Ljg0IDcuMTYtMTYgMTYtMTZoOTZjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MTQ0aDEyOFYxMzguNjdjMC0xMC43LTUuMzUtMjAuNy0xNC4yNS0yNi42M3pNMzIwIDI1NmMtNDQuMTggMC04MC0zNS44Mi04MC04MHMzNS44Mi04MCA4MC04MCA4MCAzNS44MiA4MCA4MC0zNS44MiA4MC04MCA4MHptMjg4LTY0aC02NHYzMjBoODBjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjI0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6XCJdXG59O1xudmFyIGZhU2NyZXdkcml2ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2NyZXdkcml2ZXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NGFcIiwgXCJNNDQ4IDBMMzIwIDk2djYyLjA2bC04My4wMyA4My4wM2M2Ljc5IDQuMjUgMTMuMjcgOS4wNiAxOS4wNyAxNC44NyA1LjggNS44IDEwLjYyIDEyLjI4IDE0Ljg3IDE5LjA3TDM1My45NCAxOTJINDE2bDk2LTEyOC02NC02NHpNMTI4IDI3OC41OUwxMC45MiAzOTUuNjdjLTE0LjU1IDE0LjU1LTE0LjU1IDM4LjE1IDAgNTIuNzFsNTIuNyA1Mi43YzE0LjU2IDE0LjU2IDM4LjE1IDE0LjU2IDUyLjcxIDBMMjMzLjQxIDM4NGMyOS4xMS0yOS4xMSAyOS4xMS03Ni4zIDAtMTA1LjQxcy03Ni4zLTI5LjExLTEwNS40MSAwelwiXVxufTtcbnZhciBmYVNjcm9sbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzY3JvbGwnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY3MGVcIiwgXCJNNDggMEMyMS41MyAwIDAgMjEuNTMgMCA0OHY2NGMwIDguODQgNy4xNiAxNiAxNiAxNmg4MFY0OEM5NiAyMS41MyA3NC40NyAwIDQ4IDB6bTIwOCA0MTIuNTdWMzUyaDI4OFY5NmMwLTUyLjk0LTQzLjA2LTk2LTk2LTk2SDExMS41OUMxMjEuNzQgMTMuNDEgMTI4IDI5LjkyIDEyOCA0OHYzNjhjMCAzOC44NyAzNC42NSA2OS42NSA3NC43NSA2My4xMkMyMzQuMjIgNDc0IDI1NiA0NDQuNDYgMjU2IDQxMi41N3pNMjg4IDM4NHYzMmMwIDUyLjkzLTQzLjA2IDk2LTk2IDk2aDMzNmM2MS44NiAwIDExMi01MC4xNCAxMTItMTEyIDAtOC44NC03LjE2LTE2LTE2LTE2SDI4OHpcIl1cbn07XG52YXIgZmFTZENhcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2QtY2FyZCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjdjMlwiLCBcIk0zMjAgMEgxMjhMMCAxMjh2MzIwYzAgMzUuMyAyOC43IDY0IDY0IDY0aDI1NmMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NHpNMTYwIDE2MGgtNDhWNjRoNDh2OTZ6bTgwIDBoLTQ4VjY0aDQ4djk2em04MCAwaC00OFY2NGg0OHY5NnpcIl1cbn07XG52YXIgZmFTZWFyY2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2VhcmNoJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDAyXCIsIFwiTTUwNSA0NDIuN0w0MDUuMyAzNDNjLTQuNS00LjUtMTAuNi03LTE3LTdIMzcyYzI3LjYtMzUuMyA0NC03OS43IDQ0LTEyOEM0MTYgOTMuMSAzMjIuOSAwIDIwOCAwUzAgOTMuMSAwIDIwOHM5My4xIDIwOCAyMDggMjA4YzQ4LjMgMCA5Mi43LTE2LjQgMTI4LTQ0djE2LjNjMCA2LjQgMi41IDEyLjUgNyAxN2w5OS43IDk5LjdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsMjguMy0yOC4zYzkuNC05LjQgOS40LTI0LjYuMS0zNHpNMjA4IDMzNmMtNzAuNyAwLTEyOC01Ny4yLTEyOC0xMjggMC03MC43IDU3LjItMTI4IDEyOC0xMjggNzAuNyAwIDEyOCA1Ny4yIDEyOCAxMjggMCA3MC43LTU3LjIgMTI4LTEyOCAxMjh6XCJdXG59O1xudmFyIGZhU2VhcmNoRG9sbGFyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NlYXJjaC1kb2xsYXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY2ODhcIiwgXCJNNTA1LjA0IDQ0Mi42NmwtOTkuNzEtOTkuNjljLTQuNS00LjUtMTAuNi03LTE3LTdoLTE2LjNjMjcuNi0zNS4zIDQ0LTc5LjY5IDQ0LTEyNy45OUM0MTYuMDMgOTMuMDkgMzIyLjkyIDAgMjA4LjAyIDBTMCA5My4wOSAwIDIwNy45OHM5My4xMSAyMDcuOTggMjA4LjAyIDIwNy45OGM0OC4zIDAgOTIuNzEtMTYuNCAxMjguMDEtNDR2MTYuM2MwIDYuNCAyLjUgMTIuNSA3IDE3bDk5LjcxIDk5LjY5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDI4LjMtMjguM2M5LjQtOS40IDkuNC0yNC41OS4xLTMzLjk5em0tMjk3LjAyLTkwLjdjLTc5LjU0IDAtMTQ0LTY0LjM0LTE0NC0xNDMuOTggMC03OS41MyA2NC4zNS0xNDMuOTggMTQ0LTE0My45OCA3OS41NCAwIDE0NCA2NC4zNCAxNDQgMTQzLjk4IDAgNzkuNTMtNjQuMzUgMTQzLjk4LTE0NCAxNDMuOTh6bTI3LjExLTE1Mi41NGwtNDUuMDEtMTMuNWMtNS4xNi0xLjU1LTguNzctNi43OC04Ljc3LTEyLjczIDAtNy4yNyA1LjMtMTMuMTkgMTEuOC0xMy4xOWgyOC4xMWM0LjU2IDAgOC45NiAxLjI5IDEyLjgyIDMuNzIgMy4yNCAyLjAzIDcuMzYgMS45MSAxMC4xMy0uNzNsMTEuNzUtMTEuMjFjMy41My0zLjM3IDMuMzMtOS4yMS0uNTctMTIuMTQtOS4xLTYuODMtMjAuMDgtMTAuNzctMzEuMzctMTEuMzVWMTEyYzAtNC40Mi0zLjU4LTgtOC04aC0xNmMtNC40MiAwLTggMy41OC04IDh2MTYuMTJjLTIzLjYzLjYzLTQyLjY4IDIwLjU1LTQyLjY4IDQ1LjA3IDAgMTkuOTcgMTIuOTkgMzcuODEgMzEuNTggNDMuMzlsNDUuMDEgMTMuNWM1LjE2IDEuNTUgOC43NyA2Ljc4IDguNzcgMTIuNzMgMCA3LjI3LTUuMyAxMy4xOS0xMS44IDEzLjE5aC0yOC4xYy00LjU2IDAtOC45Ni0xLjI5LTEyLjgyLTMuNzItMy4yNC0yLjAzLTcuMzYtMS45MS0xMC4xMy43M2wtMTEuNzUgMTEuMjFjLTMuNTMgMy4zNy0zLjMzIDkuMjEuNTcgMTIuMTQgOS4xIDYuODMgMjAuMDggMTAuNzcgMzEuMzcgMTEuMzVWMzA0YzAgNC40MiAzLjU4IDggOCA4aDE2YzQuNDIgMCA4LTMuNTggOC04di0xNi4xMmMyMy42My0uNjMgNDIuNjgtMjAuNTQgNDIuNjgtNDUuMDcgMC0xOS45Ny0xMi45OS0zNy44MS0zMS41OS00My4zOXpcIl1cbn07XG52YXIgZmFTZWFyY2hMb2NhdGlvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzZWFyY2gtbG9jYXRpb24nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY2ODlcIiwgXCJNNTA1LjA0IDQ0Mi42NmwtOTkuNzEtOTkuNjljLTQuNS00LjUtMTAuNi03LTE3LTdoLTE2LjNjMjcuNi0zNS4zIDQ0LTc5LjY5IDQ0LTEyNy45OUM0MTYuMDMgOTMuMDkgMzIyLjkyIDAgMjA4LjAyIDBTMCA5My4wOSAwIDIwNy45OHM5My4xMSAyMDcuOTggMjA4LjAyIDIwNy45OGM0OC4zIDAgOTIuNzEtMTYuNCAxMjguMDEtNDR2MTYuM2MwIDYuNCAyLjUgMTIuNSA3IDE3bDk5LjcxIDk5LjY5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDI4LjMtMjguM2M5LjQtOS40IDkuNC0yNC41OS4xLTMzLjk5em0tMjk3LjAyLTkwLjdjLTc5LjU0IDAtMTQ0LTY0LjM0LTE0NC0xNDMuOTggMC03OS41MyA2NC4zNS0xNDMuOTggMTQ0LTE0My45OCA3OS41NCAwIDE0NCA2NC4zNCAxNDQgMTQzLjk4IDAgNzkuNTMtNjQuMzUgMTQzLjk4LTE0NCAxNDMuOTh6bS4wMi0yMzkuOTZjLTQwLjc4IDAtNzMuODQgMzMuMDUtNzMuODQgNzMuODMgMCAzMi45NiA0OC4yNiA5My4wNSA2Ni43NSAxMTQuODZhOS4yNCA5LjI0IDAgMCAwIDE0LjE4IDBjMTguNDktMjEuODEgNjYuNzUtODEuODkgNjYuNzUtMTE0Ljg2IDAtNDAuNzgtMzMuMDYtNzMuODMtNzMuODQtNzMuODN6bTAgOTZjLTEzLjI2IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0elwiXVxufTtcbnZhciBmYVNlYXJjaE1pbnVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NlYXJjaC1taW51cycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAxMFwiLCBcIk0zMDQgMTkydjMyYzAgNi42LTUuNCAxMi0xMiAxMkgxMjRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMzJjMC02LjYgNS40LTEyIDEyLTEyaDE2OGM2LjYgMCAxMiA1LjQgMTIgMTJ6bTIwMSAyODQuN0w0NzYuNyA1MDVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDM0MyA0MDUuM2MtNC41LTQuNS03LTEwLjYtNy0xN1YzNzJjLTM1LjMgMjcuNi03OS43IDQ0LTEyOCA0NEM5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMHMyMDggOTMuMSAyMDggMjA4YzAgNDguMy0xNi40IDkyLjctNDQgMTI4aDE2LjNjNi40IDAgMTIuNSAyLjUgMTcgN2w5OS43IDk5LjdjOS4zIDkuNCA5LjMgMjQuNiAwIDM0ek0zNDQgMjA4YzAtNzUuMi02MC44LTEzNi0xMzYtMTM2UzcyIDEzMi44IDcyIDIwOHM2MC44IDEzNiAxMzYgMTM2IDEzNi02MC44IDEzNi0xMzZ6XCJdXG59O1xudmFyIGZhU2VhcmNoUGx1cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzZWFyY2gtcGx1cycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAwZVwiLCBcIk0zMDQgMTkydjMyYzAgNi42LTUuNCAxMi0xMiAxMmgtNTZ2NTZjMCA2LjYtNS40IDEyLTEyIDEyaC0zMmMtNi42IDAtMTItNS40LTEyLTEydi01NmgtNTZjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMzJjMC02LjYgNS40LTEyIDEyLTEyaDU2di01NmMwLTYuNiA1LjQtMTIgMTItMTJoMzJjNi42IDAgMTIgNS40IDEyIDEydjU2aDU2YzYuNiAwIDEyIDUuNCAxMiAxMnptMjAxIDI4NC43TDQ3Ni43IDUwNWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMzQzIDQwNS4zYy00LjUtNC41LTctMTAuNi03LTE3VjM3MmMtMzUuMyAyNy42LTc5LjcgNDQtMTI4IDQ0QzkzLjEgNDE2IDAgMzIyLjkgMCAyMDhTOTMuMSAwIDIwOCAwczIwOCA5My4xIDIwOCAyMDhjMCA0OC4zLTE2LjQgOTIuNy00NCAxMjhoMTYuM2M2LjQgMCAxMi41IDIuNSAxNyA3bDk5LjcgOTkuN2M5LjMgOS40IDkuMyAyNC42IDAgMzR6TTM0NCAyMDhjMC03NS4yLTYwLjgtMTM2LTEzNi0xMzZTNzIgMTMyLjggNzIgMjA4czYwLjggMTM2IDEzNiAxMzYgMTM2LTYwLjggMTM2LTEzNnpcIl1cbn07XG52YXIgZmFTZWVkbGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzZWVkbGluZycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjRkOFwiLCBcIk02NCA5NkgwYzAgMTIzLjcgMTAwLjMgMjI0IDIyNCAyMjR2MTQ0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwQzI4OCAxOTYuMyAxODcuNyA5NiA2NCA5NnptMzg0LTY0Yy04NC4yIDAtMTU3LjQgNDYuNS0xOTUuNyAxMTUuMiAyNy43IDMwLjIgNDguMiA2Ni45IDU5IDEwNy42QzQyNCAyNDMuMSA1MTIgMTQ3LjkgNTEyIDMyaC02NHpcIl1cbn07XG52YXIgZmFTZXJ2ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2VydmVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMjMzXCIsIFwiTTQ4MCAxNjBIMzJjLTE3LjY3MyAwLTMyLTE0LjMyNy0zMi0zMlY2NGMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJoNDQ4YzE3LjY3MyAwIDMyIDE0LjMyNyAzMiAzMnY2NGMwIDE3LjY3My0xNC4zMjcgMzItMzIgMzJ6bS00OC04OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0czEwLjc0NSAyNCAyNCAyNCAyNC0xMC43NDUgMjQtMjQtMTAuNzQ1LTI0LTI0LTI0em0tNjQgMGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0czEwLjc0NSAyNCAyNCAyNCAyNC0xMC43NDUgMjQtMjQtMTAuNzQ1LTI0LTI0LTI0em0xMTIgMjQ4SDMyYy0xNy42NzMgMC0zMi0xNC4zMjctMzItMzJ2LTY0YzAtMTcuNjczIDE0LjMyNy0zMiAzMi0zMmg0NDhjMTcuNjczIDAgMzIgMTQuMzI3IDMyIDMydjY0YzAgMTcuNjczLTE0LjMyNyAzMi0zMiAzMnptLTQ4LTg4Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjRzMTAuNzQ1IDI0IDI0IDI0IDI0LTEwLjc0NSAyNC0yNC0xMC43NDUtMjQtMjQtMjR6bS02NCAwYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjRzMTAuNzQ1IDI0IDI0IDI0IDI0LTEwLjc0NSAyNC0yNC0xMC43NDUtMjQtMjQtMjR6bTExMiAyNDhIMzJjLTE3LjY3MyAwLTMyLTE0LjMyNy0zMi0zMnYtNjRjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyaDQ0OGMxNy42NzMgMCAzMiAxNC4zMjcgMzIgMzJ2NjRjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMyem0tNDgtODhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHMxMC43NDUgMjQgMjQgMjQgMjQtMTAuNzQ1IDI0LTI0LTEwLjc0NS0yNC0yNC0yNHptLTY0IDBjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHMxMC43NDUgMjQgMjQgMjQgMjQtMTAuNzQ1IDI0LTI0LTEwLjc0NS0yNC0yNC0yNHpcIl1cbn07XG52YXIgZmFTaGFwZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2hhcGVzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNjFmXCIsIFwiTTEyOCwyNTZBMTI4LDEyOCwwLDEsMCwyNTYsMzg0LDEyOCwxMjgsMCwwLDAsMTI4LDI1NlptMzc5LTU0Ljg2TDQwMC4wNywxOC4yOWEzNy4yNiwzNy4yNiwwLDAsMC02NC4xNCwwTDIyOSwyMDEuMTRDMjE0Ljc2LDIyNS41MiwyMzIuNTgsMjU2LDI2MS4wOSwyNTZINDc0LjkxQzUwMy40MiwyNTYsNTIxLjI0LDIyNS41Miw1MDcsMjAxLjE0Wk00ODAsMjg4SDMyMGEzMiwzMiwwLDAsMC0zMiwzMlY0ODBhMzIsMzIsMCwwLDAsMzIsMzJINDgwYTMyLDMyLDAsMCwwLDMyLTMyVjMyMEEzMiwzMiwwLDAsMCw0ODAsMjg4WlwiXVxufTtcbnZhciBmYVNoYXJlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NoYXJlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDY0XCIsIFwiTTUwMy42OTEgMTg5LjgzNkwzMjcuNjg3IDM3Ljg1MUMzMTIuMjgxIDI0LjU0NiAyODggMzUuMzQ3IDI4OCA1Ni4wMTV2ODAuMDUzQzEyNy4zNzEgMTM3LjkwNyAwIDE3MC4xIDAgMzIyLjMyNmMwIDYxLjQ0MSAzOS41ODEgMTIyLjMwOSA4My4zMzMgMTU0LjEzMiAxMy42NTMgOS45MzEgMzMuMTExLTIuNTMzIDI4LjA3Ny0xOC42MzFDNjYuMDY2IDMxMi44MTQgMTMyLjkxNyAyNzQuMzE2IDI4OCAyNzIuMDg1VjM2MGMwIDIwLjcgMjQuMyAzMS40NTMgMzkuNjg3IDE4LjE2NGwxNzYuMDA0LTE1MmMxMS4wNzEtOS41NjIgMTEuMDg2LTI2Ljc1MyAwLTM2LjMyOHpcIl1cbn07XG52YXIgZmFTaGFyZUFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaGFyZS1hbHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxZTBcIiwgXCJNMzUyIDMyMGMtMjIuNjA4IDAtNDMuMzg3IDcuODE5LTU5Ljc5IDIwLjg5NWwtMTAyLjQ4Ni02NC4wNTRhOTYuNTUxIDk2LjU1MSAwIDAgMCAwLTQxLjY4M2wxMDIuNDg2LTY0LjA1NEMzMDguNjEzIDE4NC4xODEgMzI5LjM5MiAxOTIgMzUyIDE5MmM1My4wMTkgMCA5Ni00Mi45ODEgOTYtOTZTNDA1LjAxOSAwIDM1MiAwcy05NiA0Mi45ODEtOTYgOTZjMCA3LjE1OC43OSAxNC4xMyAyLjI3NiAyMC44NDFMMTU1Ljc5IDE4MC44OTVDMTM5LjM4NyAxNjcuODE5IDExOC42MDggMTYwIDk2IDE2MGMtNTMuMDE5IDAtOTYgNDIuOTgxLTk2IDk2czQyLjk4MSA5NiA5NiA5NmMyMi42MDggMCA0My4zODctNy44MTkgNTkuNzktMjAuODk1bDEwMi40ODYgNjQuMDU0QTk2LjMwMSA5Ni4zMDEgMCAwIDAgMjU2IDQxNmMwIDUzLjAxOSA0Mi45ODEgOTYgOTYgOTZzOTYtNDIuOTgxIDk2LTk2LTQyLjk4MS05Ni05Ni05NnpcIl1cbn07XG52YXIgZmFTaGFyZUFsdFNxdWFyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaGFyZS1hbHQtc3F1YXJlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMWUxXCIsIFwiTTQ0OCA4MHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDM1MmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4ek0zMDQgMjk2Yy0xNC41NjIgMC0yNy44MjMgNS41NjEtMzcuNzgzIDE0LjY3MWwtNjcuOTU4LTQwLjc3NWE1Ni4zMzkgNTYuMzM5IDAgMCAwIDAtMjcuNzkzbDY3Ljk1OC00MC43NzVDMjc2LjE3NyAyMTAuNDM5IDI4OS40MzggMjE2IDMwNCAyMTZjMzAuOTI4IDAgNTYtMjUuMDcyIDU2LTU2cy0yNS4wNzItNTYtNTYtNTYtNTYgMjUuMDcyLTU2IDU2YzAgNC43OTcuNjA1IDkuNDUzIDEuNzQgMTMuODk3bC02Ny45NTggNDAuNzc1QzE3MS44MjMgMjA1LjU2MSAxNTguNTYyIDIwMCAxNDQgMjAwYy0zMC45MjggMC01NiAyNS4wNzItNTYgNTZzMjUuMDcyIDU2IDU2IDU2YzE0LjU2MiAwIDI3LjgyMy01LjU2MSAzNy43ODMtMTQuNjcxbDY3Ljk1OCA0MC43NzVhNTYuMDg4IDU2LjA4OCAwIDAgMC0xLjc0IDEzLjg5N2MwIDMwLjkyOCAyNS4wNzIgNTYgNTYgNTZzNTYtMjUuMDcyIDU2LTU2QzM2MCAzMjEuMDcyIDMzNC45MjggMjk2IDMwNCAyOTZ6XCJdXG59O1xudmFyIGZhU2hhcmVTcXVhcmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2hhcmUtc3F1YXJlJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMTRkXCIsIFwiTTU2OC40ODIgMTc3LjQ0OEw0MjQuNDc5IDMxMy40MzNDNDA5LjMgMzI3Ljc2OCAzODQgMzE3LjE0IDM4NCAyOTUuOTg1di03MS45NjNjLTE0NC41NzUuOTctMjA1LjU2NiAzNS4xMTMtMTY0Ljc3NSAxNzEuMzUzIDQuNDgzIDE0Ljk3My0xMi44NDYgMjYuNTY3LTI1LjAwNiAxNy4zM0MxNTUuMjUyIDM4My4xMDUgMTIwIDMyNi40ODggMTIwIDI2OS4zMzljMC0xNDMuOTM3IDExNy41OTktMTcyLjUgMjY0LTE3My4zMTJWMjQuMDEyYzAtMjEuMTc0IDI1LjMxNy0zMS43NjggNDAuNDc5LTE3LjQ0OGwxNDQuMDAzIDEzNS45ODhjMTAuMDIgOS40NjMgMTAuMDI4IDI1LjQyNSAwIDM0Ljg5NnpNMzg0IDM3OS4xMjhWNDQ4SDY0VjEyOGg1MC45MTZhMTEuOTkgMTEuOTkgMCAwIDAgOC42NDgtMy42OTNjMTQuOTUzLTE1LjU2OCAzMi4yMzctMjcuODkgNTEuMDE0LTM3LjY3NkMxODUuNzA4IDgwLjgzIDE4MS41ODQgNjQgMTY5LjAzMyA2NEg0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjM1MmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDM1MmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4di04OC44MDZjMC04LjI4OC04LjE5Ny0xNC4wNjYtMTYuMDExLTExLjMwMmE3MS44MyA3MS44MyAwIDAgMS0zNC4xODkgMy4zNzdjLTcuMjctMS4wNDYtMTMuOCA0LjUxNC0xMy44IDExLjg1OXpcIl1cbn07XG52YXIgZmFTaGVrZWxTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NoZWtlbC1zaWduJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMjBiXCIsIFwiTTI0OCAxNjh2MTY4YzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2VjE2OGMwLTc1LjExLTYwLjg5LTEzNi0xMzYtMTM2SDI0QzEwLjc1IDMyIDAgNDIuNzQgMCA1NnY0MDhjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZWMTEyaDExMmMzMC45MyAwIDU2IDI1LjA3IDU2IDU2ek00MzIgMzJoLTQ4Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYyOTZjMCAzMC45My0yNS4wNyA1Ni01NiA1NkgyMDBWMTc2YzAtOC44NC03LjE2LTE2LTE2LTE2aC00OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MjgwYzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoMTY4Yzc1LjExIDAgMTM2LTYwLjg5IDEzNi0xMzZWNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJdXG59O1xudmFyIGZhU2hpZWxkQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NoaWVsZC1hbHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYzZWRcIiwgXCJNNDY2LjUgODMuN2wtMTkyLTgwYTQ4LjE1IDQ4LjE1IDAgMCAwLTM2LjkgMGwtMTkyIDgwQzI3LjcgOTEuMSAxNiAxMDguNiAxNiAxMjhjMCAxOTguNSAxMTQuNSAzMzUuNyAyMjEuNSAzODAuMyAxMS44IDQuOSAyNS4xIDQuOSAzNi45IDBDMzYwLjEgNDcyLjYgNDk2IDM0OS4zIDQ5NiAxMjhjMC0xOS40LTExLjctMzYuOS0yOS41LTQ0LjN6TTI1Ni4xIDQ0Ni4zbC0uMS0zODEgMTc1LjkgNzMuM2MtMy4zIDE1MS40LTgyLjEgMjYxLjEtMTc1LjggMzA3Ljd6XCJdXG59O1xudmFyIGZhU2hpZWxkVmlydXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2hpZWxkLXZpcnVzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlMDZjXCIsIFwiTTIyNCwxOTJhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMjI0LDE5MlpNNDY2LjUsODMuNjhsLTE5Mi04MEE1Ny40LDU3LjQsMCwwLDAsMjU2LjA1LDBhNTcuNCw1Ny40LDAsMCwwLTE4LjQ2LDMuNjdsLTE5Miw4MEE0Ny45Myw0Ny45MywwLDAsMCwxNiwxMjhDMTYsMzI2LjUsMTMwLjUsNDYzLjcyLDIzNy41LDUwOC4zMmE0OC4wOSw0OC4wOSwwLDAsMCwzNi45MSwwQzM2MC4wOSw0NzIuNjEsNDk2LDM0OS4zLDQ5NiwxMjhBNDgsNDgsMCwwLDAsNDY2LjUsODMuNjhaTTM4NCwyNTZIMzcxLjg4Yy0yOC41MSwwLTQyLjc5LDM0LjQ3LTIyLjYzLDU0LjYzbDguNTgsOC41N2ExNiwxNiwwLDEsMS0yMi42MywyMi42M2wtOC41Ny04LjU4QzMwNi40NywzMTMuMDksMjcyLDMyNy4zNywyNzIsMzU1Ljg4VjM2OGExNiwxNiwwLDAsMS0zMiwwVjM1NS44OGMwLTI4LjUxLTM0LjQ3LTQyLjc5LTU0LjYzLTIyLjYzbC04LjU3LDguNThhMTYsMTYsMCwwLDEtMjIuNjMtMjIuNjNsOC41OC04LjU3YzIwLjE2LTIwLjE2LDUuODgtNTQuNjMtMjIuNjMtNTQuNjNIMTI4YTE2LDE2LDAsMCwxLDAtMzJoMTIuMTJjMjguNTEsMCw0Mi43OS0zNC40NywyMi42My01NC42M2wtOC41OC04LjU3YTE2LDE2LDAsMCwxLDIyLjYzLTIyLjYzbDguNTcsOC41OGMyMC4xNiwyMC4xNiw1NC42Myw1Ljg4LDU0LjYzLTIyLjYzVjExMmExNiwxNiwwLDAsMSwzMiwwdjEyLjEyYzAsMjguNTEsMzQuNDcsNDIuNzksNTQuNjMsMjIuNjNsOC41Ny04LjU4YTE2LDE2LDAsMCwxLDIyLjYzLDIyLjYzbC04LjU4LDguNTdDMzI5LjA5LDE4OS41MywzNDMuMzcsMjI0LDM3MS44OCwyMjRIMzg0YTE2LDE2LDAsMCwxLDAsMzJabS05NiwwYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDI4OCwyNTZaXCJdXG59O1xudmFyIGZhU2hpcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaGlwJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMjFhXCIsIFwiTTQ5Ni42MTYgMzcyLjYzOWw3MC4wMTItNzAuMDEyYzE2Ljg5OS0xNi45IDkuOTQyLTQ1Ljc3MS0xMi44MzYtNTMuMDkyTDUxMiAyMzYuMTAyVjk2YzAtMTcuNjczLTE0LjMyNy0zMi0zMi0zMmgtNjRWMjRjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI0OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djQwaC02NGMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMydjE0MC4xMDJsLTQxLjc5MiAxMy40MzNjLTIyLjc1MyA3LjMxMy0yOS43NTQgMzYuMTczLTEyLjgzNiA1My4wOTJsNzAuMDEyIDcwLjAxMkMxMjUuODI4IDQxNi4yODcgODUuNTg3IDQ0OCAyNCA0NDhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjQgNjEuMDIzIDAgMTA3LjQ5OS0yMC42MSAxNDMuMjU4LTU5LjM5NkMxODEuNjc3IDQ4Ny40MzIgMjE2LjAyMSA1MTIgMjU2IDUxMmgxMjhjMzkuOTc5IDAgNzQuMzIzLTI0LjU2OCA4OC43NDItNTkuMzk2QzUwOC40OTUgNDkxLjM4NCA1NTQuOTY4IDUxMiA2MTYgNTEyYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtMTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0LTYwLjgxNyAwLTEwMS41NDItMzEuMDAxLTExOS4zODQtNzUuMzYxek0xOTIgMTI4aDI1NnY4Ny41MzFsLTExOC4yMDgtMzcuOTk1YTMxLjk5NSAzMS45OTUgMCAwIDAtMTkuNTg0IDBMMTkyIDIxNS41MzFWMTI4elwiXVxufTtcbnZhciBmYVNoaXBwaW5nRmFzdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaGlwcGluZy1mYXN0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNDhiXCIsIFwiTTYyNCAzNTJoLTE2VjI0My45YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlMNDk0IDExMC4xYy05LTktMjEuMi0xNC4xLTMzLjktMTQuMUg0MTZWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhIMTEyQzg1LjUgMCA2NCAyMS41IDY0IDQ4djQ4SDhjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDhoMjcyYzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhINDBjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDhoMjA4YzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhIOGMtNC40IDAtOCAzLjYtOCA4djE2YzAgNC40IDMuNiA4IDggOGgyMDhjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOEg2NHYxMjhjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NmgxMjhjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05Nmg0OGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnpNMTYwIDQ2NGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6bTMyMCAwYy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHptODAtMjA4SDQxNlYxNDRoNDQuMWw5OS45IDk5LjlWMjU2elwiXVxufTtcbnZhciBmYVNob2VQcmludHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2hvZS1wcmludHMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1NGJcIiwgXCJNMTkyIDE2MGgzMlYzMmgtMzJjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjRzMjguNjUgNjQgNjQgNjR6TTAgNDE2YzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzJWMzUySDY0Yy0zNS4zNSAwLTY0IDI4LjY1LTY0IDY0em0zMzcuNDYtMTI4Yy0zNC45MSAwLTc2LjE2IDEzLjEyLTEwNC43MyAzMi0yNC43OSAxNi4zOC00NC41MiAzMi0xMDQuNzMgMzJ2MTI4bDU3LjUzIDE1Ljk3YzI2LjIxIDcuMjggNTMuMDEgMTMuMTIgODAuMzEgMTUuMDUgMzIuNjkgMi4zMSA2NS42LjY3IDk3LjU4LTYuMkM0NzIuOSA0ODEuMyA1MTIgNDI5LjIyIDUxMiAzODRjMC02NC04NC4xOC05Ni0xNzQuNTQtOTZ6TTQ5MS40MiA3LjE5QzQ1OS40NC4zMiA0MjYuNTMtMS4zMyAzOTMuODQuOTljLTI3LjMgMS45My01NC4xIDcuNzctODAuMzEgMTUuMDRMMjU2IDMydjEyOGM2MC4yIDAgNzkuOTQgMTUuNjIgMTA0LjczIDMyIDI4LjU3IDE4Ljg4IDY5LjgyIDMyIDEwNC43MyAzMkM1NTUuODIgMjI0IDY0MCAxOTIgNjQwIDEyOGMwLTQ1LjIyLTM5LjEtOTcuMy0xNDguNTgtMTIwLjgxelwiXVxufTtcbnZhciBmYVNob3BwaW5nQmFnID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Nob3BwaW5nLWJhZycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjI5MFwiLCBcIk0zNTIgMTYwdi0zMkMzNTIgNTcuNDIgMjk0LjU3OSAwIDIyNCAwIDE1My40MiAwIDk2IDU3LjQyIDk2IDEyOHYzMkgwdjI3MmMwIDQ0LjE4MyAzNS44MTcgODAgODAgODBoMjg4YzQ0LjE4MyAwIDgwLTM1LjgxNyA4MC04MFYxNjBoLTk2em0tMTkyLTMyYzAtMzUuMjkgMjguNzEtNjQgNjQtNjRzNjQgMjguNzEgNjQgNjR2MzJIMTYwdi0zMnptMTYwIDEyMGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0czEwLjc0NS0yNCAyNC0yNCAyNCAxMC43NDUgMjQgMjQtMTAuNzQ1IDI0LTI0IDI0em0tMTkyIDBjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNHMxMC43NDUtMjQgMjQtMjQgMjQgMTAuNzQ1IDI0IDI0LTEwLjc0NSAyNC0yNCAyNHpcIl1cbn07XG52YXIgZmFTaG9wcGluZ0Jhc2tldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaG9wcGluZy1iYXNrZXQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYyOTFcIiwgXCJNNTc2IDIxNnYxNmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRoLThsLTI2LjExMyAxODIuNzg4QzUxNC41MDkgNDYyLjQzNSA0OTQuMjU3IDQ4MCA0NzAuMzcgNDgwSDEwNS42M2MtMjMuODg3IDAtNDQuMTM5LTE3LjU2NS00Ny41MTgtNDEuMjEyTDMyIDI1NmgtOGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0di0xNmMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoNjcuMzQxbDEwNi43OC0xNDYuODIxYzEwLjM5NS0xNC4yOTIgMzAuNDA3LTE3LjQ1MyA0NC43MDEtNy4wNTggMTQuMjkzIDEwLjM5NSAxNy40NTMgMzAuNDA4IDcuMDU4IDQ0LjcwMUwxNzAuNDc3IDE5MmgyMzUuMDQ2TDMyNi4xMiA4Mi44MjFjLTEwLjM5NS0xNC4yOTItNy4yMzQtMzQuMzA2IDcuMDU5LTQ0LjcwMSAxNC4yOTEtMTAuMzk1IDM0LjMwNi03LjIzNSA0NC43MDEgNy4wNThMNDg0LjY1OSAxOTJINTUyYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHpNMzEyIDM5MlYyODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0cy0yNCAxMC43NDUtMjQgMjR2MTEyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNHMyNC0xMC43NDUgMjQtMjR6bTExMiAwVjI4MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRzLTI0IDEwLjc0NS0yNCAyNHYxMTJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0czI0LTEwLjc0NSAyNC0yNHptLTIyNCAwVjI4MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRzLTI0IDEwLjc0NS0yNCAyNHYxMTJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0czI0LTEwLjc0NSAyNC0yNHpcIl1cbn07XG52YXIgZmFTaG9wcGluZ0NhcnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2hvcHBpbmctY2FydCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjA3YVwiLCBcIk01MjguMTIgMzAxLjMxOWw0Ny4yNzMtMjA4QzU3OC44MDYgNzguMzAxIDU2Ny4zOTEgNjQgNTUxLjk5IDY0SDE1OS4yMDhsLTkuMTY2LTQ0LjgxQzE0Ny43NTggOC4wMjEgMTM3LjkzIDAgMTI2LjUyOSAwSDI0QzEwLjc0NSAwIDAgMTAuNzQ1IDAgMjR2MTZjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDY5Ljg4M2w3MC4yNDggMzQzLjQzNUMxNDcuMzI1IDQxNy4xIDEzNiA0MzUuMjIyIDEzNiA0NTZjMCAzMC45MjggMjUuMDcyIDU2IDU2IDU2czU2LTI1LjA3MiA1Ni01NmMwLTE1LjY3NC02LjQ0Ny0yOS44MzUtMTYuODI0LTQwaDIwOS42NDdDNDMwLjQ0NyA0MjYuMTY1IDQyNCA0NDAuMzI2IDQyNCA0NTZjMCAzMC45MjggMjUuMDcyIDU2IDU2IDU2czU2LTI1LjA3MiA1Ni01NmMwLTIyLjE3Mi0xMi44ODgtNDEuMzMyLTMxLjU3OS01MC40MDVsNS41MTctMjQuMjc2YzMuNDEzLTE1LjAxOC04LjAwMi0yOS4zMTktMjMuNDAzLTI5LjMxOUgyMTguMTE3bC02LjU0NS0zMmgyOTMuMTQ1YzExLjIwNiAwIDIwLjkyLTcuNzU0IDIzLjQwMy0xOC42ODF6XCJdXG59O1xudmFyIGZhU2hvd2VyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Nob3dlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjJjY1wiLCBcIk0zMDQsMzIwYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDMwNCwzMjBabTMyLTk2YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDMzNiwyMjRabTMyLDY0YTE2LDE2LDAsMSwwLTE2LTE2QTE2LDE2LDAsMCwwLDM2OCwyODhabS0zMiwzMmExNiwxNiwwLDEsMC0xNi0xNkExNiwxNiwwLDAsMCwzMzYsMzIwWm0tMzItNjRhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMzA0LDI1NlptMTI4LTMyYTE2LDE2LDAsMSwwLTE2LTE2QTE2LDE2LDAsMCwwLDQzMiwyMjRabS00OCwxNmExNiwxNiwwLDEsMCwxNi0xNkExNiwxNiwwLDAsMCwzODQsMjQwWm0tMTYtNDhhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMzY4LDE5MlptOTYsMzJhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsNDY0LDIyNFptMzItMzJhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsNDk2LDE5MlptLTY0LDY0YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDQzMiwyNTZabS0zMiwzMmExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCw0MDAsMjg4Wm0tNjQsNjRhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMzM2LDM1MlptLTMyLDMyYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDMwNCwzODRabTY0LTY0YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDM2OCwzMjBabTIxLjY1LTIxOC4zNS0xMS4zLTExLjMxYTE2LDE2LDAsMCwwLTIyLjYzLDBMMzUwLjA1LDk2QTExMS4xOSwxMTEuMTksMCwwLDAsMjcyLDY0Yy0xOS4yNCwwLTM3LjA4LDUuMy01Mi45LDEzLjg1bC0xMC0xMEExMjEuNzIsMTIxLjcyLDAsMCwwLDEyMy40NCwzMkM1NS40OSwzMS41LDAsOTIuOTEsMCwxNjAuODVWNDY0YTE2LDE2LDAsMCwwLDE2LDE2SDQ4YTE2LDE2LDAsMCwwLDE2LTE2VjE1OC40YzAtMzAuMTUsMjEtNTguMiw1MS02MS45M2E1OC4zOCw1OC4zOCwwLDAsMSw0OC45MywxNi42N2wxMCwxMEMxNjUuMywxMzguOTIsMTYwLDE1Ni43NiwxNjAsMTc2YTExMS4yMywxMTEuMjMsMCwwLDAsMzIsNzguMDVsLTUuNjYsNS42N2ExNiwxNiwwLDAsMCwwLDIyLjYybDExLjMsMTEuMzFhMTYsMTYsMCwwLDAsMjIuNjMsMEwzODkuNjUsMTI0LjI4QTE2LDE2LDAsMCwwLDM4OS42NSwxMDEuNjVaXCJdXG59O1xudmFyIGZhU2h1dHRsZVZhbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaHV0dGxlLXZhbicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjViNlwiLCBcIk02MjguODggMjEwLjY1TDQ5NC4zOSA0OS4yN0E0OC4wMSA0OC4wMSAwIDAgMCA0NTcuNTIgMzJIMzJDMTQuMzMgMzIgMCA0Ni4zMyAwIDY0djI4OGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzAgNTMuMDIgNDIuOTggOTYgOTYgOTZzOTYtNDIuOTggOTYtOTZoMTI4YzAgNTMuMDIgNDIuOTggOTYgOTYgOTZzOTYtNDIuOTggOTYtOTZoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYyNDEuMzhjMC0xMS4yMy0zLjk0LTIyLjEtMTEuMTItMzAuNzN6TTY0IDE5MlY5Nmg5NnY5Nkg2NHptOTYgMjQwYy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4czIxLjQ5LTQ4IDQ4LTQ4IDQ4IDIxLjQ5IDQ4IDQ4LTIxLjQ5IDQ4LTQ4IDQ4em0xNjAtMjQwaC05NlY5Nmg5NnY5NnptMTYwIDI0MGMtMjYuNTEgMC00OC0yMS40OS00OC00OHMyMS40OS00OCA0OC00OCA0OCAyMS40OSA0OCA0OC0yMS40OSA0OC00OCA0OHptLTk2LTI0MFY5Nmg2Ni4wMmw4MCA5NkgzODR6XCJdXG59O1xudmFyIGZhU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaWduJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNGQ5XCIsIFwiTTQ5NiA2NEgxMjhWMTZjMC04LjgtNy4yLTE2LTE2LTE2SDgwYy04LjggMC0xNiA3LjItMTYgMTZ2NDhIMTZDNy4yIDY0IDAgNzEuMiAwIDgwdjMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHYzNjhjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxMjhoMzY4YzguOCAwIDE2LTcuMiAxNi0xNlY4MGMwLTguOC03LjItMTYtMTYtMTZ6TTE2MCAzODRoMzIwVjE2MEgxNjB2MjI0elwiXVxufTtcbnZhciBmYVNpZ25JbkFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaWduLWluLWFsdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjJmNlwiLCBcIk00MTYgNDQ4aC04NGMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoODRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMyaC04NGMtNi42IDAtMTItNS40LTEyLTEyVjc2YzAtNi42IDUuNC0xMiAxMi0xMmg4NGM1MyAwIDk2IDQzIDk2IDk2djE5MmMwIDUzLTQzIDk2LTk2IDk2em0tNDctMjAxTDIwMSA3OWMtMTUtMTUtNDEtNC41LTQxIDE3djk2SDI0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHY5NmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMzZ2OTZjMCAyMS41IDI2IDMyIDQxIDE3bDE2OC0xNjhjOS4zLTkuNCA5LjMtMjQuNiAwLTM0elwiXVxufTtcbnZhciBmYVNpZ25MYW5ndWFnZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaWduLWxhbmd1YWdlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMmE3XCIsIFwiTTkxLjQzNCA0ODMuOTg3Yy0uMzA3LTE2LjAxOCAxMy4xMDktMjkuMTI5IDI5LjEzLTI5LjEyOWg2Mi4yOTN2LTUuNzE0SDU2Ljk5M2MtMTYuMDIxIDAtMjkuNDM3LTEzLjExMS0yOS4xMy0yOS4xMjlDMjguMTYgNDA0LjQ5MSA0MC44MzUgMzkyIDU2LjQyOCAzOTJoMTI2LjQyOXYtNS43MTRIMjkuMTM2Yy0xNi4wMjEgMC0yOS40MzctMTMuMTExLTI5LjEzLTI5LjEyOS4yOTctMTUuNTIyIDEyLjk3My0yOC4wMTMgMjguNTY2LTI4LjAxM2gxNTQuMjg2di01LjcxNEg1Ny43MDdjLTE2LjAyMSAwLTI5LjQzNy0xMy4xMTEtMjkuMTMtMjkuMTI5LjI5Ny0xNS41MjIgMTIuOTczLTI4LjAxMyAyOC41NjYtMjguMDEzaDE2OC41NjZsLTMxLjA4NS0yMi42MDZjLTEyLjc2Mi05LjI4MS0xNS41ODMtMjcuMTQ5LTYuMzAyLTM5LjkxMiA5LjI4MS0xMi43NjEgMjcuMTUtMTUuNTgyIDM5LjkxMi02LjMwMmwxMjMuMzYxIDg5LjcxNWEzNC4yODcgMzQuMjg3IDAgMCAxIDE0LjEyIDI3LjcyOHYxNDEuMTM2YzAgMTUuOTEtMTAuOTQ2IDI5LjczLTI2LjQzMyAzMy4zNzRsLTgwLjQ3MSAxOC45MzRhMTM3LjE2IDEzNy4xNiAwIDAgMS0zMS40MTEgMy42NDZIMTIwYy0xNS41OTMtLjAwMS0yOC4yNjktMTIuNDkyLTI4LjU2Ni0yOC4wMTR6bTczLjI0OS0yMjUuNzAxaDM2LjQyM2wtMTEuMTg3LTguMTM2Yy0xOC41NzktMTMuNTExLTIwLjMxMy00MC44ODctMy4xNy01Ni41MzZsLTEzLjAwNC0xNi43Yy05Ljg0My0xMi42NDEtMjguNDMtMTUuMTcxLTQwLjg4LTUuMDg4LTEyLjA2NSA5Ljc3MS0xNC4xMzMgMjcuNDQ3LTQuNTUzIDM5Ljc1bDM2LjM3MSA0Ni43MXptMjgzLjI5OC0yLjEwM2wtNS4wMDMtMTUyLjQ1MmMtLjUxOC0xNS43NzEtMTMuNzIyLTI4LjEzNi0yOS40OTMtMjcuNjE5LTE1Ljc3My41MTgtMjguMTM3IDEzLjcyMi0yNy42MTkgMjkuNDkzbDEuMjYyIDM4LjQxNUwyODMuNTY1IDExLjAxOWMtOS41OC0xMi4zMDMtMjcuMjIzLTE0LjYzLTM5LjY1My01LjMyOC0xMi44MjcgOS41OTktMTQuOTI5IDI4LjI0LTUuMDg2IDQwLjg4MWw3Ni44ODkgOTguNzQ1LTQuNTA5IDMuNTExLTk0Ljc5LTEyMS43MzRjLTkuNTgtMTIuMzAzLTI3LjIyMy0xNC42My0zOS42NTMtNS4zMjgtMTIuODI3IDkuNTk5LTE0LjkyOSAyOC4yNC01LjA4NiA0MC44ODFsOTQuNDQzIDEyMS4yODgtNC41MDkgMy41MTEtNzcuNjc1LTk5Ljc1NGMtOS41OC0xMi4zMDMtMjcuMjIzLTE0LjYzLTM5LjY1My01LjMyOC0xMi44MjcgOS41OTktMTQuOTI5IDI4LjI0LTUuMDg2IDQwLjg4MWw1Mi4wNTMgNjYuODQ5YzEyLjQ5Ny04LjI1NyAyOS4wNTUtOC4yODUgNDEuNjkuOTA0bDEyMy4zNiA4OS43MTRjMTAuOTA0IDcuOTMgMTcuNDE1IDIwLjcxNSAxNy40MTUgMzQuMTk4djE2Ljk5OWw2MS4wNjQtNDcuNTQ5YTM0LjI4NSAzNC4yODUgMCAwIDAgMTMuMjAyLTI4LjE3N3pcIl1cbn07XG52YXIgZmFTaWduT3V0QWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NpZ24tb3V0LWFsdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjJmNVwiLCBcIk00OTcgMjczTDMyOSA0NDFjLTE1IDE1LTQxIDQuNS00MS0xN3YtOTZIMTUyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHYtOTZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTM2Vjg4YzAtMjEuNCAyNS45LTMyIDQxLTE3bDE2OCAxNjhjOS4zIDkuNCA5LjMgMjQuNiAwIDM0ek0xOTIgNDM2di00MGMwLTYuNi01LjQtMTItMTItMTJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg4NGM2LjYgMCAxMi01LjQgMTItMTJWNzZjMC02LjYtNS40LTEyLTEyLTEySDk2Yy01MyAwLTk2IDQzLTk2IDk2djE5MmMwIDUzIDQzIDk2IDk2IDk2aDg0YzYuNiAwIDEyLTUuNCAxMi0xMnpcIl1cbn07XG52YXIgZmFTaWduYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2lnbmFsJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMDEyXCIsIFwiTTIxNiAyODhoLTQ4Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxOTJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZWMzA0YzAtOC44NC03LjE2LTE2LTE2LTE2ek04OCAzODRINDBjLTguODQgMC0xNiA3LjE2LTE2IDE2djk2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2di05NmMwLTguODQtNy4xNi0xNi0xNi0xNnptMjU2LTE5MmgtNDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djI4OGMwIDguODQgNy4xNiAxNiAxNiAxNmg0OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyMDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bTEyOC05NmgtNDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djM4NGMwIDguODQgNy4xNiAxNiAxNiAxNmg0OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxMTJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTYwMCAwaC00OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDgwYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2VjE2YzAtOC44NC03LjE2LTE2LTE2LTE2elwiXVxufTtcbnZhciBmYVNpZ25hdHVyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaWduYXR1cmUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1YjdcIiwgXCJNNjIzLjIgMTkyYy01MS44IDMuNS0xMjUuNyA1NC43LTE2My4xIDcxLjUtMjkuMSAxMy4xLTU0LjIgMjQuNC03Ni4xIDI0LjQtMjIuNiAwLTI2LTE2LjItMjEuMy01MS45IDEuMS04IDExLjctNzkuMi00Mi43LTc2LjEtMjUuMSAxLjUtNjQuMyAyNC44LTE2OS41IDEyNkwxOTIgMTgyLjJjMzAuNC03NS45LTUzLjItMTUxLjUtMTI5LjctMTAyLjhMNy40IDExNi4zQzAgMTIxLTIuMiAxMzAuOSAyLjUgMTM4LjRsMTcuMiAyN2M0LjcgNy41IDE0LjYgOS43IDIyLjEgNC45bDU4LTM4LjljMTguNC0xMS43IDQwLjcgNy4yIDMyLjcgMjcuMUwzNC4zIDQwNC4xQzI3LjUgNDIxIDM3IDQ0OCA2NCA0NDhjOC4zIDAgMTYuNS0zLjIgMjIuNi05LjQgNDIuMi00Mi4yIDE1NC43LTE1MC43IDIxMS4yLTE5NS44LTIuMiAyOC41LTIuMSA1OC45IDIwLjYgODMuOCAxNS4zIDE2LjggMzcuMyAyNS4zIDY1LjUgMjUuMyAzNS42IDAgNjgtMTQuNiAxMDIuMy0zMCAzMy0xNC44IDk5LTYyLjYgMTM4LjQtNjUuOCA4LjUtLjcgMTUuMi03LjMgMTUuMi0xNS44di0zMi4xYy4yLTkuMS03LjUtMTYuOC0xNi42LTE2LjJ6XCJdXG59O1xudmFyIGZhU2ltQ2FyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaW0tY2FyZCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjdjNFwiLCBcIk0wIDY0djM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NGgyNTZjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4TDI1NiAwSDY0QzI4LjcgMCAwIDI4LjcgMCA2NHptMjI0IDE5MmgtNjR2LTY0aDY0djY0em05NiAwaC02NHYtNjRoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2MzJ6bS02NCAxMjhoNjR2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJoLTMydi02NHptLTk2IDBoNjR2NjRoLTY0di02NHptLTk2IDBoNjR2NjRIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMydi0zMnptMC05NmgyNTZ2NjRINjR2LTY0em0wLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDMydjY0SDY0di0zMnpcIl1cbn07XG52YXIgZmFTaW5rID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NpbmsnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImUwNmRcIiwgXCJNMzIsNDE2YTk2LDk2LDAsMCwwLDk2LDk2SDM4NGE5Niw5NiwwLDAsMCw5Ni05NlYzODRIMzJaTTQ5NiwyODhINDAwVjI1Nmg2NGExNiwxNiwwLDAsMCwxNi0xNlYyMjRhMTYsMTYsMCwwLDAtMTYtMTZIMzg0YTMyLDMyLDAsMCwwLTMyLDMydjQ4SDI4OFY5NmEzMiwzMiwwLDAsMSw2NCwwdjE2YTE2LDE2LDAsMCwwLDE2LDE2aDMyYTE2LDE2LDAsMCwwLDE2LTE2Vjk2QTk2LjE2LDk2LjE2LDAsMCwwLDMwMC44NywxLjg2QzI1NS4yOSwxMC43MSwyMjQsNTMuMzYsMjI0LDk5Ljc5VjI4OEgxNjBWMjQwYTMyLDMyLDAsMCwwLTMyLTMySDQ4YTE2LDE2LDAsMCwwLTE2LDE2djE2YTE2LDE2LDAsMCwwLDE2LDE2aDY0djMySDE2QTE2LDE2LDAsMCwwLDAsMzA0djMyYTE2LDE2LDAsMCwwLDE2LDE2SDQ5NmExNiwxNiwwLDAsMCwxNi0xNlYzMDRBMTYsMTYsMCwwLDAsNDk2LDI4OFpcIl1cbn07XG52YXIgZmFTaXRlbWFwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NpdGVtYXAnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYwZThcIiwgXCJNMTI4IDM1MkgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bS0yNC04MGgxOTJ2NDhoNDh2LTQ4aDE5MnY0OGg0OHYtNTcuNTljMC0yMS4xNy0xNy4yMy0zOC40MS0zOC40MS0zOC40MUgzNDR2LTY0aDQwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkgyNTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg0MHY2NEg5NC40MUM3My4yMyAyMjQgNTYgMjQxLjIzIDU2IDI2Mi40MVYzMjBoNDh2LTQ4em0yNjQgODBoLTk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMjQwIDBoLTk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIl1cbn07XG52YXIgZmFTa2F0aW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NrYXRpbmcnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY3YzVcIiwgXCJNNDAwIDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4czIxLjUgNDggNDggNDggNDgtMjEuNSA0OC00OC0yMS41LTQ4LTQ4LTQ4em0wIDQ0OGMtOC44IDAtMTYgNy4yLTE2IDE2cy03LjIgMTYtMTYgMTZoLTk2Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4IDAtOC44LTcuMi0xNi0xNi0xNnptLTI4Mi4yIDguNmMtNi4yIDYuMi0xNi40IDYuMy0yMi42IDBsLTY3LjktNjcuOWMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNmw2Ny45IDY3LjljOS40IDkuNCAyMS43IDE0IDM0IDE0czI0LjYtNC43IDMzLjktMTRjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZzLTE2LjQtNi4zLTIyLjcgMHptNTYuMS0xNzkuOGwtOTMuNyA5My43Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuMiA2LjIgNi4yIDE0LjQgOS40IDIyLjYgOS40czE2LjQtMy4xIDIyLjYtOS40bDkxLjktOTEuOS0zMC4yLTMwLjJjLTUtNS05LjQtMTAuNy0xMy4yLTE2Ljh6TTEyOCAxNjBoMTA1LjVsLTIwLjEgMTcuMmMtMTMuNSAxMS41LTIxLjYgMjguNC0yMi4zIDQ2LjEtLjcgMTcuOCA2LjEgMzUuMiAxOC43IDQ3LjdsNzguMiA3OC4yVjQzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMydi04OS40YzAtMTIuNi01LjEtMjUtMTQuMS0zMy45bC02MS02MWMuNS0uNCAxLjItLjYgMS43LTEuMWw4Mi4zLTgyLjNjMTEuNS0xMS41IDE0LjktMjguNiA4LjctNDMuNi02LjItMTUtMjAuNy0yNC43LTM3LTI0LjdIMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyelwiXVxufTtcbnZhciBmYVNraWluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdza2lpbmcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3YzlcIiwgXCJNNDMyIDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4UzQ1OC41IDAgNDMyIDBzLTQ4IDIxLjUtNDggNDggMjEuNSA0OCA0OCA0OHptNzMgMzU2LjFjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwLTEyLjEgMTIuMS0zMC41IDE1LjQtNDUuMSA4LjdsLTEzNS44LTcwLjIgNDkuMi03My44YzEyLjctMTkgMTAuMi00NC41LTYtNjAuNkwyOTMgMjE1LjdsLTEwNy01My4xYy0yLjkgMTkuOSAzLjQgNDAgMTcuNyA1NC40bDc1LjEgNzUuMi00NS45IDY4LjhMMzUgMjU4LjdjLTExLjctNi0yNi4yLTEuNS0zMi4zIDEwLjMtNi4xIDExLjgtMS41IDI2LjMgMTAuMyAzMi4zbDM5MS45IDIwMi41YzExLjkgNS41IDI0LjUgOC4xIDM3LjEgOC4xIDIzLjIgMCA0Ni05IDYzLTI2IDkuMy05LjMgOS4zLTI0LjUgMC0zMy44ek0xMjAgOTEuNmwtMTEuNSAyMi41YzE0LjQgNy4zIDMxLjIgNC45IDQyLjgtNC44bDQ3LjIgMjMuNGMtLjEuMS0uMS4yLS4yLjNsMTE0LjUgNTYuOCAzMi40LTEzIDYuNCAxOS4xYzQgMTIuMSAxMi42IDIyIDI0IDI3LjdsNTguMSAyOWMxNS45IDcuOSAzNSAxLjUgNDIuOS0xNC4zIDcuOS0xNS44IDEuNS0zNS0xNC4zLTQyLjlsLTUyLjEtMjYuMS0xNy4xLTUxLjJjLTguMS0yNC4yLTQwLjktNTYuNi04NC41LTM5LjJsLTgxLjIgMzIuNS02Mi41LTMxYy4zLTE0LjUtNy4yLTI4LjYtMjAuOS0zNS42bC0xMS4xIDIxLjdoLS4ybC0zNC40LTdjLTEuOC0uNC0zLjcuMi01IDEuNy0xLjkgMi4yLTEuNyA1LjUuNSA3LjRsMjYuMiAyM3pcIl1cbn07XG52YXIgZmFTa2lpbmdOb3JkaWMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2tpaW5nLW5vcmRpYycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjdjYVwiLCBcIk0zMzYgOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhTMzYyLjUgMCAzMzYgMHMtNDggMjEuNS00OCA0OCAyMS41IDQ4IDQ4IDQ4em0yMTYgMzIwYy0xMy4yIDAtMjQgMTAuNy0yNCAyNCAwIDEzLjItMTAuOCAyNC0yNCAyNGgtNjkuNUw0NjAgMjg1LjZjMTEuNy00LjcgMjAuMS0xNi4yIDIwLjEtMjkuNiAwLTE3LjctMTQuMy0zMi0zMi0zMmgtNDRMMzc4IDE3MC44Yy0xMi41LTI1LjUtMzUuNS00NC4yLTYxLjgtNTAuOUwyNDUgOTguN2MtMjguMy02LjgtNTcuOC0uNS04MC44IDE3LjFsLTM5LjcgMzAuNGMtMTQgMTAuNy0xNi43IDMwLjgtNS45IDQ0LjkuNy45IDEuNyAxLjMgMi40IDIuMUw2Ni45IDQ2NEgyNGMtMTMuMiAwLTI0IDEwLjctMjQgMjRzMTAuOCAyNCAyNCAyNGg0ODBjMzkuNyAwIDcyLTMyLjMgNzItNzIgMC0xMy4yLTEwLjgtMjQtMjQtMjR6bS0yNjAuNSA0OGgtOTYuOWw0My4xLTkxLTIyLTEzYy0xMi4xLTcuMi0yMS45LTE2LjktMjkuNS0yNy44TDEyMy43IDQ2NEg5OS41bDUyLjMtMjYxLjRjNC4xLTEgOC4xLTIuOSAxMS43LTUuNmwzOS43LTMwLjRjNy43LTUuOSAxNy40LTggMjUuMy02LjFsMTQuNyA0LjQtMzcuNSA4Ny40Yy0xMi42IDI5LjUtMS4zIDY0IDI2LjMgODAuM2w4NSA1MC4yLTI1LjUgODEuMnptMTEwLjYgMGgtNDMuNmwyMy42LTc1LjVjNS45LTIwLjgtMi45LTQzLjEtMjEuNi01NC40TDI5OS4zIDI5OGwzMS4zLTc4LjMgMjAuMyA0MS40YzggMTYuMyAyNC45IDI2LjkgNDMuMSAyNi45aDMzLjNsLTI1LjIgMTc2elwiXVxufTtcbnZhciBmYVNrdWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NrdWxsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNTRjXCIsIFwiTTI1NiAwQzExNC42IDAgMCAxMDAuMyAwIDIyNGMwIDcwLjEgMzYuOSAxMzIuNiA5NC41IDE3My43IDkuNiA2LjkgMTUuMiAxOC4xIDEzLjUgMjkuOWwtOS40IDY2LjJjLTEuNCA5LjYgNiAxOC4yIDE1LjcgMTguMkgxOTJ2LTU2YzAtNC40IDMuNi04IDgtOGgxNmM0LjQgMCA4IDMuNiA4IDh2NTZoNjR2LTU2YzAtNC40IDMuNi04IDgtOGgxNmM0LjQgMCA4IDMuNiA4IDh2NTZoNzcuN2M5LjcgMCAxNy4xLTguNiAxNS43LTE4LjJsLTkuNC02Ni4yYy0xLjctMTEuNyAzLjgtMjMgMTMuNS0yOS45QzQ3NS4xIDM1Ni42IDUxMiAyOTQuMSA1MTIgMjI0IDUxMiAxMDAuMyAzOTcuNCAwIDI1NiAwem0tOTYgMzIwYy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0IDY0IDI4LjcgNjQgNjQtMjguNyA2NC02NCA2NHptMTkyIDBjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjQgNjQgMjguNyA2NCA2NC0yOC43IDY0LTY0IDY0elwiXVxufTtcbnZhciBmYVNrdWxsQ3Jvc3Nib25lcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdza3VsbC1jcm9zc2JvbmVzJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNzE0XCIsIFwiTTQzOS4xNSA0NTMuMDZMMjk3LjE3IDM4NGwxNDEuOTktNjkuMDZjNy45LTMuOTUgMTEuMTEtMTMuNTYgNy4xNS0yMS40Nkw0MzIgMjY0Ljg1Yy0zLjk1LTcuOS0xMy41Ni0xMS4xMS0yMS40Ny03LjE2TDIyNCAzNDguNDEgMzcuNDcgMjU3LjY5Yy03LjktMy45NS0xNy41MS0uNzUtMjEuNDcgNy4xNkwxLjY5IDI5My40OGMtMy45NSA3LjktLjc1IDE3LjUxIDcuMTUgMjEuNDZMMTUwLjgzIDM4NCA4Ljg1IDQ1My4wNmMtNy45IDMuOTUtMTEuMTEgMTMuNTYtNy4xNSAyMS40N2wxNC4zMSAyOC42M2MzLjk1IDcuOSAxMy41NiAxMS4xMSAyMS40NyA3LjE1TDIyNCA0MTkuNTlsMTg2LjUzIDkwLjcyYzcuOSAzLjk1IDE3LjUxLjc1IDIxLjQ3LTcuMTVsMTQuMzEtMjguNjNjMy45NS03LjkxLjc0LTE3LjUyLTcuMTYtMjEuNDd6TTE1MCAyMzcuMjhsLTUuNDggMjUuODdjLTIuNjcgMTIuNjIgNS40MiAyNC44NSAxNi40NSAyNC44NWgxMjYuMDhjMTEuMDMgMCAxOS4xMi0xMi4yMyAxNi40NS0yNC44NWwtNS41LTI1Ljg3YzQxLjc4LTIyLjQxIDcwLTYyLjc1IDcwLTEwOS4yOEMzNjggNTcuMzEgMzAzLjUzIDAgMjI0IDBTODAgNTcuMzEgODAgMTI4YzAgNDYuNTMgMjguMjIgODYuODcgNzAgMTA5LjI4ek0yODAgMTEyYzE3LjY1IDAgMzIgMTQuMzUgMzIgMzJzLTE0LjM1IDMyLTMyIDMyLTMyLTE0LjM1LTMyLTMyIDE0LjM1LTMyIDMyLTMyem0tMTEyIDBjMTcuNjUgMCAzMiAxNC4zNSAzMiAzMnMtMTQuMzUgMzItMzIgMzItMzItMTQuMzUtMzItMzIgMTQuMzUtMzIgMzItMzJ6XCJdXG59O1xudmFyIGZhU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY3MTVcIiwgXCJNNTk0LjUzIDUwOC42M0w2LjE4IDUzLjljLTYuOTctNS40Mi04LjIzLTE1LjQ3LTIuODEtMjIuNDVMMjMuMDEgNi4xOEMyOC40My0uOCAzOC40OS0yLjA2IDQ1LjQ3IDMuMzdMNjMzLjgyIDQ1OC4xYzYuOTcgNS40MiA4LjIzIDE1LjQ3IDIuODEgMjIuNDVsLTE5LjY0IDI1LjI3Yy01LjQyIDYuOTgtMTUuNDggOC4yMy0yMi40NiAyLjgxelwiXVxufTtcbnZhciBmYVNsZWlnaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzbGVpZ2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY3Y2NcIiwgXCJNNjEyLjcgMzUwLjdsLTkuMy03LjRjLTYuOS01LjUtMTctNC40LTIyLjUgMi41bC0xMCAxMi41Yy01LjUgNi45LTQuNCAxNyAyLjUgMjIuNWw5LjMgNy40YzUuOSA0LjcgOS4yIDExLjcgOS4yIDE5LjIgMCAxMy42LTExIDI0LjYtMjQuNiAyNC42SDQ4Yy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDUxNmMzOSAwIDczLjctMjkuMyA3NS45LTY4LjMgMS40LTIzLjgtOC43LTQ2LjMtMjcuMi02MXpNMzIgMjI0YzAgNTkuNiA0MC45IDEwOS4yIDk2IDEyMy41VjQwMGg2NHYtNDhoMTkydjQ4aDY0di00OGM1MyAwIDk2LTQzIDk2LTk2di05NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmgtOTZ2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRoLTIwLjdjLTY1LjggMC0xMjUuOS0zNy4yLTE1NS4zLTk2LTI5LjQtNTguOC04OS42LTk2LTE1NS4zLTk2SDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRzMTQuMyAzMiAzMiAzMnYxMjh6XCJdXG59O1xudmFyIGZhU2xpZGVyc0ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2xpZGVycy1oJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMWRlXCIsIFwiTTQ5NiAzODRIMTYwdi0xNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2MTZIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoODB2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnYtMTZoMzM2YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2em0wLTE2MGgtODB2LTE2YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnYxNkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMzZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnYtMTZoODBjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6bTAtMTYwSDI4OFY0OGMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2MTZIMTZDNy4yIDY0IDAgNzEuMiAwIDgwdjMyYzAgOC44IDcuMiAxNiAxNiAxNmgyMDh2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnYtMTZoMjA4YzguOCAwIDE2LTcuMiAxNi0xNlY4MGMwLTguOC03LjItMTYtMTYtMTZ6XCJdXG59O1xudmFyIGZhU21pbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc21pbGUnLFxuICBpY29uOiBbNDk2LCA1MTIsIFtdLCBcImYxMThcIiwgXCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptODAgMTY4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptLTE2MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptMTk0LjggMTcwLjJDMzM0LjMgMzgwLjQgMjkyLjUgNDAwIDI0OCA0MDBzLTg2LjMtMTkuNi0xMTQuOC01My44Yy0xMy42LTE2LjMgMTEtMzYuNyAyNC42LTIwLjUgMjIuNCAyNi45IDU1LjIgNDIuMiA5MC4yIDQyLjJzNjcuOC0xNS40IDkwLjItNDIuMmMxMy40LTE2LjIgMzguMSA0LjIgMjQuNiAyMC41elwiXVxufTtcbnZhciBmYVNtaWxlQmVhbSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzbWlsZS1iZWFtJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNWI4XCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTExMiAyMjMuNGMzLjMtNDIuMSAzMi4yLTcxLjQgNTYtNzEuNHM1Mi43IDI5LjMgNTYgNzEuNGMuNyA4LjYtMTAuOCAxMS45LTE0LjkgNC41bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjMgNy40LTE1LjggNC0xNS4xLTQuNXptMjUwLjggMTIyLjhDMzM0LjMgMzgwLjQgMjkyLjUgNDAwIDI0OCA0MDBzLTg2LjMtMTkuNi0xMTQuOC01My44Yy0xMy41LTE2LjMgMTEtMzYuNyAyNC42LTIwLjUgMjIuNCAyNi45IDU1LjIgNDIuMiA5MC4yIDQyLjJzNjcuOC0xNS40IDkwLjItNDIuMmMxMy42LTE2LjIgMzguMSA0LjMgMjQuNiAyMC41em02LjItMTE4LjNsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMSA3LjMtMTUuNiA0LTE0LjktNC41IDMuMy00Mi4xIDMyLjItNzEuNCA1Ni03MS40czUyLjcgMjkuMyA1NiA3MS40Yy42IDguNi0xMSAxMS45LTE1LjEgNC41elwiXVxufTtcbnZhciBmYVNtaWxlV2luayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzbWlsZS13aW5rJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNGRhXCIsIFwiTTAgMjU2YzAgMTM3IDExMSAyNDggMjQ4IDI0OHMyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDggMCAxMTkgMCAyNTZ6bTIwMC00OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzJ6bTE1OC41IDE2LjVjLTE0LjgtMTMuMi00Ni4yLTEzLjItNjEgMEwyODggMjMzYy04LjMgNy40LTIxLjYuNC0xOS44LTEwLjggNC0yNS4yIDM0LjItNDIuMSA1OS45LTQyLjFTMzg0IDE5NyAzODggMjIyLjJjMS43IDExLjEtMTEuNCAxOC4zLTE5LjggMTAuOGwtOS43LTguNXpNMTU3LjggMzI1LjhDMTgwLjIgMzUyLjcgMjEzIDM2OCAyNDggMzY4czY3LjgtMTUuNCA5MC4yLTQyLjJjMTMuNi0xNi4yIDM4LjEgNC4yIDI0LjYgMjAuNUMzMzQuMyAzODAuNCAyOTIuNSA0MDAgMjQ4IDQwMHMtODYuMy0xOS42LTExNC44LTUzLjhjLTEzLjUtMTYuMyAxMS4yLTM2LjcgMjQuNi0yMC40elwiXVxufTtcbnZhciBmYVNtb2cgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc21vZycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjc1ZlwiLCBcIk02MjQgMzY4SDgwYy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDU0NGM4LjggMCAxNi03LjIgMTYtMTZ2LTE2YzAtOC44LTcuMi0xNi0xNi0xNnptLTQ4MCA5NkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgOC44IDcuMiAxNiAxNiAxNmgxMjhjOC44IDAgMTYtNy4yIDE2LTE2di0xNmMwLTguOC03LjItMTYtMTYtMTZ6bTQxNiAwSDIyNGMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgOC44IDcuMiAxNiAxNiAxNmgzMzZjOC44IDAgMTYtNy4yIDE2LTE2di0xNmMwLTguOC03LjItMTYtMTYtMTZ6TTE0NCAyODhoMTU2LjFjMjIuNSAxOS43IDUxLjYgMzIgODMuOSAzMnM2MS4zLTEyLjMgODMuOS0zMkg1MjhjNjEuOSAwIDExMi01MC4xIDExMi0xMTJTNTg5LjkgNjQgNTI4IDY0Yy0xOCAwLTM0LjcgNC42LTQ5LjcgMTIuMUM0NTQgMzEgNDA2LjggMCAzNTIgMGMtNDEgMC03Ny44IDE3LjMtMTA0IDQ0LjhDMjIxLjggMTcuMyAxODUgMCAxNDQgMCA2NC41IDAgMCA2NC41IDAgMTQ0czY0LjUgMTQ0IDE0NCAxNDR6XCJdXG59O1xudmFyIGZhU21va2luZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzbW9raW5nJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNDhkXCIsIFwiTTYzMiAzNTJoLTQ4Yy00LjQgMC04IDMuNi04IDh2MTQ0YzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LThWMzYwYzAtNC40LTMuNi04LTgtOHpNNTUzLjMgODcuMWMtNS43LTMuOC05LjMtMTAtOS4zLTE2LjhWOGMwLTQuNC0zLjYtOC04LThoLTQ4Yy00LjQgMC04IDMuNi04IDh2NjIuM2MwIDIyIDEwLjIgNDMuNCAyOC42IDU1LjQgNDIuMiAyNy4zIDY3LjQgNzMuOCA2Ny40IDEyNFYyODBjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOHYtMzAuM2MwLTY1LjUtMzIuNC0xMjYuMi04Ni43LTE2Mi42ek00MzIgMzUySDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OHY2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzODRjOC44IDAgMTYtNy4yIDE2LTE2VjM2OGMwLTguOC03LjItMTYtMTYtMTZ6bS0zMiAxMTJIMjI0di02NGgxNzZ2NjR6bTg3LjctMzIyLjRDNDYzLjggMTI1IDQ0OCA5OS4zIDQ0OCA3MC4zVjhjMC00LjQtMy42LTgtOC04aC00OGMtNC40IDAtOCAzLjYtOCA4djY2LjRjMCA0My43IDI0LjYgODEuNiA2MC4zIDEwNi43IDIyLjQgMTUuNyAzNS43IDQxLjIgMzUuNyA2OC42VjI4MGMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04di0zMC4zYzAtNDMuMy0yMS04My40LTU2LjMtMTA4LjF6TTUzNiAzNTJoLTQ4Yy00LjQgMC04IDMuNi04IDh2MTQ0YzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LThWMzYwYzAtNC40LTMuNi04LTgtOHpcIl1cbn07XG52YXIgZmFTbW9raW5nQmFuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Ntb2tpbmctYmFuJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNTRkXCIsIFwiTTk2IDMwNGMwIDguOCA3LjIgMTYgMTYgMTZoMTE3LjVsLTk2LTk2SDExMmMtOC44IDAtMTYgNy4yLTE2IDE2djY0ek0yNTYgMEMxMTQuNiAwIDAgMTE0LjYgMCAyNTZzMTE0LjYgMjU2IDI1NiAyNTYgMjU2LTExNC42IDI1Ni0yNTZTMzk3LjQgMCAyNTYgMHptMCA0NDhjLTEwNS45IDAtMTkyLTg2LjEtMTkyLTE5MiAwLTQxLjQgMTMuMy03OS43IDM1LjctMTExLjFsMjY3LjQgMjY3LjRDMzM1LjcgNDM0LjcgMjk3LjQgNDQ4IDI1NiA0NDh6bTQ1LjItMTkySDM4NHYzMmgtNTAuOGwtMzItMzJ6bTExMS4xIDExMS4xTDM2NS4yIDMyMEg0MDBjOC44IDAgMTYtNy4yIDE2LTE2di02NGMwLTguOC03LjItMTYtMTYtMTZIMjY5LjJMMTQ0LjkgOTkuN0MxNzYuMyA3Ny4zIDIxNC42IDY0IDI1NiA2NGMxMDUuOSAwIDE5MiA4Ni4xIDE5MiAxOTIgMCA0MS40LTEzLjMgNzkuNy0zNS43IDExMS4xek0zMjAuNiAxMjhjLTE1LjYgMC0yOC42LTExLjItMzEuNC0yNS45LS43LTMuNi00LTYuMS03LjctNi4xaC0xNi4yYy01IDAtOC43IDQuNS04IDkuNCA0LjYgMzAuOSAzMS4yIDU0LjYgNjMuMyA1NC42IDE1LjYgMCAyOC42IDExLjIgMzEuNCAyNS45LjcgMy42IDQgNi4xIDcuNyA2LjFoMTYuMmM1IDAgOC43LTQuNSA4LTkuNC00LjYtMzAuOS0zMS4yLTU0LjYtNjMuMy01NC42elwiXVxufTtcbnZhciBmYVNtcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzbXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3Y2RcIiwgXCJNMjU2IDMyQzExNC42IDMyIDAgMTI1LjEgMCAyNDBjMCA0OS42IDIxLjQgOTUgNTcgMTMwLjdDNDQuNSA0MjEuMSAyLjcgNDY2IDIuMiA0NjYuNWMtMi4yIDIuMy0yLjggNS43LTEuNSA4LjcgMS4zIDMgNC4xIDQuOCA3LjMgNC44IDY2LjMgMCAxMTYtMzEuOCAxNDAuNi01MS40IDMyLjcgMTIuMyA2OSAxOS40IDEwNy40IDE5LjQgMTQxLjQgMCAyNTYtOTMuMSAyNTYtMjA4UzM5Ny40IDMyIDI1NiAzMnpNMTI4LjIgMzA0SDExNmMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTIuM2M2IDAgMTAuNC0zLjUgMTAuNC02LjYgMC0xLjMtLjgtMi43LTIuMS0zLjhsLTIxLjktMTguOGMtOC41LTcuMi0xMy4zLTE3LjUtMTMuMy0yOC4xIDAtMjEuMyAxOS0zOC42IDQyLjQtMzguNkgxNTZjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOGgtMTIuM2MtNiAwLTEwLjQgMy41LTEwLjQgNi42IDAgMS4zLjggMi43IDIuMSAzLjhsMjEuOSAxOC44YzguNSA3LjIgMTMuMyAxNy41IDEzLjMgMjguMS4xIDIxLjMtMTkgMzguNi00Mi40IDM4LjZ6bTE5MS44LThjMCA0LjQtMy42IDgtOCA4aC0xNmMtNC40IDAtOC0zLjYtOC04di02OC4ybC0yNC44IDU1LjhjLTIuOSA1LjktMTEuNCA1LjktMTQuMyAwTDIyNCAyMjcuOFYyOTZjMCA0LjQtMy42IDgtOCA4aC0xNmMtNC40IDAtOC0zLjYtOC04VjE5MmMwLTguOCA3LjItMTYgMTYtMTZoMTZjNi4xIDAgMTEuNiAzLjQgMTQuMyA4LjhsMTcuNyAzNS40IDE3LjctMzUuNGMyLjctNS40IDguMy04LjggMTQuMy04LjhoMTZjOC44IDAgMTYgNy4yIDE2IDE2djEwNHptNDguMyA4SDM1NmMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTIuM2M2IDAgMTAuNC0zLjUgMTAuNC02LjYgMC0xLjMtLjgtMi43LTIuMS0zLjhsLTIxLjktMTguOGMtOC41LTcuMi0xMy4zLTE3LjUtMTMuMy0yOC4xIDAtMjEuMyAxOS0zOC42IDQyLjQtMzguNkgzOTZjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOGgtMTIuM2MtNiAwLTEwLjQgMy41LTEwLjQgNi42IDAgMS4zLjggMi43IDIuMSAzLjhsMjEuOSAxOC44YzguNSA3LjIgMTMuMyAxNy41IDEzLjMgMjguMS4xIDIxLjMtMTguOSAzOC42LTQyLjMgMzguNnpcIl1cbn07XG52YXIgZmFTbm93Ym9hcmRpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc25vd2JvYXJkaW5nJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmN2NlXCIsIFwiTTQzMiA5NmMyNi41IDAgNDgtMjEuNSA0OC00OFM0NTguNSAwIDQzMiAwcy00OCAyMS41LTQ4IDQ4IDIxLjUgNDggNDggNDh6bTI4LjggMTUzLjZjNS44IDQuMyAxMi41IDYuNCAxOS4yIDYuNCA5LjcgMCAxOS4zLTQuNCAyNS42LTEyLjggMTAuNi0xNC4xIDcuOC0zNC4yLTYuNC00NC44bC0xMTEuNC04My41Yy0xMy44LTEwLjMtMjkuMS0xOC40LTQ1LjQtMjMuOGwtNjMuNy0yMS4yLTI2LjEtNTIuMUMyNDQuNyAyIDIyNS41LTQuNCAyMDkuNyAzLjVjLTE1LjggNy45LTIyLjIgMjcuMS0xNC4zIDQyLjlsMjkuMSA1OC4xYzUuNyAxMS40IDE1LjYgMTkuOSAyNy43IDI0bDE2LjQgNS41LTQxLjIgMjAuNmMtMjEuOCAxMC45LTM1LjQgMzIuOC0zNS40IDU3LjJ2NTMuMWwtNzQuMSAyNC43Yy0xNi44IDUuNi0yNS44IDIzLjctMjAuMiA0MC41IDEuNyA1LjIgNC45IDkuNCA4LjcgMTIuOWwtMzguNy0xNC4xYy05LjctMy41LTE3LjQtMTAuNi0yMS44LTIwLTUuNi0xMi0xOS45LTE3LjItMzEuOS0xMS42cy0xNy4yIDE5LjktMTEuNiAzMS45YzkuOCAyMSAyNy4xIDM2LjkgNDguOSA0NC44bDM2NC44IDEzMi43YzkuNyAzLjUgMTkuNyA1LjMgMjkuNyA1LjMgMTIuNSAwIDI0LjktMi43IDM2LjUtOC4yIDEyLTUuNiAxNy4yLTE5LjkgMTEuNi0zMS45UzQ3NCA0NTQuNyA0NjIgNDYwLjNjLTkuMyA0LjQtMTkuOCA0LjgtMjkuNSAxLjNsLTkwLjgtMzMuMWM4LjctNC4xIDE1LjYtMTEuOCAxNy44LTIxLjlsMjEuOS0xMDJjMy45LTE4LjItMy4yLTM3LjItMTguMS00OC40bC01Mi0zOSA2Ni0zMC41IDgzLjUgNjIuOXptLTE0NC40IDUxLjdsLTE5LjcgOTJjLTEuNSA3LjEtLjEgMTMuOSAyLjggMjBsLTE2OS40LTYxLjZjMi43LS4yIDUuNC0uNCA4LTEuM2w4NS0yOC40YzE5LjYtNi41IDMyLjgtMjQuOCAzMi44LTQ1LjVWMjU2bDYwLjUgNDUuM3pcIl1cbn07XG52YXIgZmFTbm93Zmxha2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc25vd2ZsYWtlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMmRjXCIsIFwiTTQ0MC4zIDM0NS4ybC0zMy44LTE5LjUgMjYtN2M4LjItMi4yIDEzLjEtMTAuNyAxMC45LTE4LjlsLTQtMTQuOWMtMi4yLTguMi0xMC43LTEzLjEtMTguOS0xMC45bC03MC44IDE5LTYzLjktMzcgNjMuOC0zNi45IDcwLjggMTljOC4yIDIuMiAxNi43LTIuNyAxOC45LTEwLjlsNC0xNC45YzIuMi04LjItMi43LTE2LjctMTAuOS0xOC45bC0yNi03IDMzLjgtMTkuNWM3LjQtNC4zIDkuOS0xMy43IDUuNy0yMS4xTDQzMC40IDExOWMtNC4zLTcuNC0xMy43LTkuOS0yMS4xLTUuN2wtMzMuOCAxOS41IDctMjZjMi4yLTguMi0yLjctMTYuNy0xMC45LTE4LjlsLTE0LjktNGMtOC4yLTIuMi0xNi43IDIuNy0xOC45IDEwLjlsLTE5IDcwLjgtNjIuOCAzNi4ydi03Ny41bDUzLjctNTMuN2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtMTEuMy0xMS4zYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEwyNTYgNTYuNFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDAuNGwtMTkuNy0xOS43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEwxMzguMyA0OGMtNi4zIDYuMi02LjMgMTYuNCAwIDIyLjZsNTMuNyA1My43djc3LjVsLTYyLjgtMzYuMi0xOS03MC44Yy0yLjItOC4yLTEwLjctMTMuMS0xOC45LTEwLjlsLTE0LjkgNGMtOC4yIDIuMi0xMy4xIDEwLjctMTAuOSAxOC45bDcgMjYtMzMuOC0xOS41Yy03LjQtNC4zLTE2LjgtMS43LTIxLjEgNS43TDIuMSAxNDUuN2MtNC4zIDcuNC0xLjcgMTYuOCA1LjcgMjEuMWwzMy44IDE5LjUtMjYgN2MtOC4zIDIuMi0xMy4yIDEwLjctMTEgMTlsNCAxNC45YzIuMiA4LjIgMTAuNyAxMy4xIDE4LjkgMTAuOWw3MC44LTE5IDYzLjggMzYuOS02My44IDM2LjktNzAuOC0xOWMtOC4yLTIuMi0xNi43IDIuNy0xOC45IDEwLjlsLTQgMTQuOWMtMi4yIDguMiAyLjcgMTYuNyAxMC45IDE4LjlsMjYgNy0zMy44IDE5LjZjLTcuNCA0LjMtOS45IDEzLjctNS43IDIxLjFsMTUuNSAyNi44YzQuMyA3LjQgMTMuNyA5LjkgMjEuMSA1LjdsMzMuOC0xOS41LTcgMjZjLTIuMiA4LjIgMi43IDE2LjcgMTAuOSAxOC45bDE0LjkgNGM4LjIgMi4yIDE2LjctMi43IDE4LjktMTAuOWwxOS03MC44IDYyLjgtMzYuMnY3Ny41bC01My43IDUzLjdjLTYuMyA2LjItNi4zIDE2LjQgMCAyMi42bDExLjMgMTEuM2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGwxOS43LTE5LjdWNDk2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ2LTQwLjRsMTkuNyAxOS43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDExLjMtMTEuM2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNkwyNTYgMzg3Ljd2LTc3LjVsNjIuOCAzNi4yIDE5IDcwLjhjMi4yIDguMiAxMC43IDEzLjEgMTguOSAxMC45bDE0LjktNGM4LjItMi4yIDEzLjEtMTAuNyAxMC45LTE4LjlsLTctMjYgMzMuOCAxOS41YzcuNCA0LjMgMTYuOCAxLjcgMjEuMS01LjdsMTUuNS0yNi44YzQuMy03LjMgMS44LTE2LjgtNS42LTIxelwiXVxufTtcbnZhciBmYVNub3dtYW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc25vd21hbicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjdkMFwiLCBcIk01MTAuOSAxNTIuM2wtNS45LTE0LjVjLTMuMy04LTEyLjYtMTEuOS0yMC44LTguN0w0NTYgMTQwLjZ2LTI5YzAtOC42LTcuMi0xNS42LTE2LTE1LjZoLTE2Yy04LjggMC0xNiA3LTE2IDE1LjZ2NDYuOWMwIC41LjMgMSAuMyAxLjVsLTU2LjQgMjNjLTUuOS0xMC0xMy4zLTE4LjktMjItMjYuNiAxMy42LTE2LjYgMjItMzcuNCAyMi02MC41IDAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgMjMuMSA4LjUgNDMuOSAyMiA2MC41LTguNyA3LjctMTYgMTYuNi0yMiAyNi42bC01Ni40LTIzYy4xLS41LjMtMSAuMy0xLjV2LTQ2LjlDMTA0IDEwMyA5Ni44IDk2IDg4IDk2SDcyYy04LjggMC0xNiA3LTE2IDE1LjZ2MjlsLTI4LjEtMTEuNWMtOC4yLTMuMi0xNy41LjctMjAuOCA4LjdsLTUuOSAxNC41Yy0zLjMgOCAuNyAxNy4xIDguOSAyMC4zbDEzNS4yIDU1LjJjLS40IDQtMS4yIDgtMS4yIDEyLjIgMCAxMC4xIDEuNyAxOS42IDQuMiAyOC45QzEyMC45IDI5Ni40IDEwNCAzMzQuMiAxMDQgMzc2YzAgNTQgMjguNCAxMDAuOSA3MC44IDEyNy44IDkuMyA1LjkgMjAuMyA4LjIgMzEuMyA4LjJoOTkuMmMxMy4zIDAgMjYuMy00LjEgMzcuMi0xMS43IDQ2LjUtMzIuMyA3NC40LTg5LjQgNjIuOS0xNTIuNi01LjUtMzAuMi0yMC41LTU3LjYtNDEuNi03OSAyLjUtOS4yIDQuMi0xOC43IDQuMi0yOC43IDAtNC4yLS44LTguMS0xLjItMTIuMkw1MDIgMTcyLjZjOC4xLTMuMSAxMi4xLTEyLjIgOC45LTIwLjN6TTIyNCA5NmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em0zMiAyNzJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnptMC02NGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em0wLTY0Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6bTAtODhzLTE2LTIzLjItMTYtMzIgNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi0xNiAzMi0xNiAzMnptMzItNTZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnpcIl1cbn07XG52YXIgZmFTbm93cGxvdyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzbm93cGxvdycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjdkMlwiLCBcIk0xMjAgMzc2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHptODAgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNCAyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjR6bTgwIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjQgMjQtMTAuNyAyNC0yNC0xMC43LTI0LTI0LTI0em04MCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHptMjM4LjYgNDkuNGMtMTQuNS0xNC41LTIyLjYtMzQuMS0yMi42LTU0LjZWMjY5LjJjMC0yMC41IDguMS00MC4xIDIyLjYtNTQuNmwzNi43LTM2LjdjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTIyLjYtMjIuNmMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBsLTM2LjcgMzYuN2MtMjYuNSAyNi41LTQxLjQgNjIuNC00MS40IDk5LjlWMjg4aC02NHYtNTAuOWMwLTguNy0xLjgtMTcuMi01LjItMjUuMkwzNjQuNSAyOS4xQzM1Ni45IDExLjQgMzM5LjYgMCAzMjAuMyAwSDE3NmMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MTEyaC0xNmMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2OTEuMkMyNi4zIDMxNy4yIDAgMzU1LjQgMCA0MDBjMCA2MS45IDUwLjEgMTEyIDExMiAxMTJoMjU2YzYxLjkgMCAxMTItNTAuMSAxMTItMTEyIDAtMTcuMy00LjItMzMuNC0xMS4yLTQ4SDUxMnYxOC43YzAgMzcuNSAxNC45IDczLjQgNDEuNCA5OS45bDM2LjcgMzYuN2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGwyMi42LTIyLjZjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTM2LjctMzYuN3pNMTkyIDY0aDExNy44bDY4LjYgMTYwSDI1NmwtNjQtNjRWNjR6bTE3NiAzODRIMTEyYy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4aDI1NmMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OHpcIl1cbn07XG52YXIgZmFTb2FwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NvYXAnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImUwNmVcIiwgXCJNNDE2LDE5MmE5NS40Miw5NS40MiwwLDAsMS0zMC45NCw3MC4yMUE5NS44LDk1LjgsMCwwLDEsMzUyLDQ0OEgxNjBhOTYsOTYsMCwwLDEsMC0xOTJoODguOTFBOTUuMyw5NS4zLDAsMCwxLDIyNCwxOTJIOTZBOTYsOTYsMCwwLDAsMCwyODhWNDE2YTk2LDk2LDAsMCwwLDk2LDk2SDQxNmE5Niw5NiwwLDAsMCw5Ni05NlYyODhBOTYsOTYsMCwwLDAsNDE2LDE5MlptLTk2LDY0YTY0LDY0LDAsMSwwLTY0LTY0QTY0LDY0LDAsMCwwLDMyMCwyNTZaTTIwOCw5NmE0OCw0OCwwLDEsMC00OC00OEE0OCw0OCwwLDAsMCwyMDgsOTZaTTM4NCw2NGEzMiwzMiwwLDEsMC0zMi0zMkEzMiwzMiwwLDAsMCwzODQsNjRaTTE2MCwyODhhNjQsNjQsMCwwLDAsMCwxMjhIMzUyYTY0LDY0LDAsMCwwLDAtMTI4WlwiXVxufTtcbnZhciBmYVNvY2tzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NvY2tzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNjk2XCIsIFwiTTIxNC42NiAzMTEuMDFMMjg4IDI1NlY5NkgxMjh2MTc2bC04Ni42NSA2NC42MWMtMzkuNCAyOS41Ni01My44NiA4NC40Mi0yOS4yMSAxMjcuMDZDMzAuMzkgNDk1LjI1IDYzLjI3IDUxMiA5Ni4wOCA1MTJjMjAuMDMgMCA0MC4yNS02LjI1IDU3LjUyLTE5LjJsMjEuODYtMTYuMzljLTI5Ljg1LTU1LjM4LTEzLjU0LTEyNS44NCAzOS4yLTE2NS40ek0yODggMzJjMC0xMS4wNSAzLjA3LTIxLjMgOC4wMi0zMC4zOEMyOTMuNC45MiAyOTAuODUgMCAyODggMEgxNjBjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJoMTYwVjMyek00ODAgMEgzNTJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJoMTkyVjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTMyMCAyNzJsLTg2LjEzIDY0LjYxYy0zOS40IDI5LjU2LTUzLjg2IDg0LjQyLTI5LjIxIDEyNy4wNiAxOC4yNSAzMS41OCA1MC42MSA0OC4zMyA4My40MiA0OC4zMyAyMC4wMyAwIDQwLjI1LTYuMjUgNTcuNTItMTkuMmwxMTUuMi04Ni40QTEyNy45OTcgMTI3Ljk5NyAwIDAgMCA1MTIgMzA0Vjk2SDMyMHYxNzZ6XCJdXG59O1xudmFyIGZhU29sYXJQYW5lbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzb2xhci1wYW5lbCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjViYVwiLCBcIk00MzEuOTggNDQ4LjAxbC00Ny45Ny4wNVY0MTZoLTEyOHYzMi4yMWwtNDcuOTguMDVjLTguODIuMDEtMTUuOTcgNy4xNi0xNS45OCAxNS45OWwtLjA1IDMxLjczYy0uMDEgOC44NSA3LjE3IDE2LjAzIDE2LjAyIDE2LjAybDIyMy45Ni0uMjZjOC44Mi0uMDEgMTUuOTctNy4xNiAxNS45OC0xNS45OGwuMDQtMzEuNzNjLjAxLTguODUtNy4xNy0xNi4wMy0xNi4wMi0xNi4wMnpNNTg1LjIgMjYuNzRDNTgyLjU4IDExLjMxIDU2OC45OSAwIDU1My4wNiAwSDg2LjkzQzcxIDAgNTcuNDEgMTEuMzEgNTQuNzkgMjYuNzQtMy4zMiAzNjkuMTYuMDQgMzQ4LjA4LjAzIDM1MmMtLjAzIDE3LjMyIDE0LjI5IDMyIDMyLjYgMzJoNTc0Ljc0YzE4LjIzIDAgMzIuNTEtMTQuNTYgMzIuNTktMzEuNzkuMDItNC4wOCAzLjM1IDE2Ljk1LTU0Ljc2LTMyNS40N3pNMjU5LjgzIDY0aDEyMC4zM2w5Ljc3IDk2SDI1MC4wNmw5Ljc3LTk2em0tNzUuMTcgMjU2SDcxLjA5TDkwLjEgMjA4aDEwNS45N2wtMTEuNDEgMTEyem0xNi4yOS0xNjBIOTguMjRsMTYuMjktOTZoOTYuMTlsLTkuNzcgOTZ6bTMyLjgyIDE2MGwxMS40LTExMmgxNDkuNjVsMTEuNCAxMTJIMjMzLjc3em0xOTUuNS0yNTZoOTYuMTlsMTYuMjkgOTZINDM5LjA0bC05Ljc3LTk2em0yNi4wNiAyNTZsLTExLjQtMTEySDU0OS45bDE5LjAxIDExMkg0NTUuMzN6XCJdXG59O1xudmFyIGZhU29ydCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzb3J0JyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJmMGRjXCIsIFwiTTQxIDI4OGgyMzhjMjEuNCAwIDMyLjEgMjUuOSAxNyA0MUwxNzcgNDQ4Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEwyNCAzMjljLTE1LjEtMTUuMS00LjQtNDEgMTctNDF6bTI1NS0xMDVMMTc3IDY0Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEwyNCAxODNjLTE1LjEgMTUuMS00LjQgNDEgMTcgNDFoMjM4YzIxLjQgMCAzMi4xLTI1LjkgMTctNDF6XCJdXG59O1xudmFyIGZhU29ydEFscGhhRG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzb3J0LWFscGhhLWRvd24nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxNWRcIiwgXCJNMTc2IDM1MmgtNDhWNDhhMTYgMTYgMCAwIDAtMTYtMTZIODBhMTYgMTYgMCAwIDAtMTYgMTZ2MzA0SDE2Yy0xNC4xOSAwLTIxLjM2IDE3LjI0LTExLjI5IDI3LjMxbDgwIDk2YTE2IDE2IDAgMCAwIDIyLjYyIDBsODAtOTZDMTk3LjM1IDM2OS4yNiAxOTAuMjIgMzUyIDE3NiAzNTJ6bTI0MC02NEgyODhhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNTZsLTYxLjI2IDcwLjQ1QTMyIDMyIDAgMCAwIDI3MiA0NDYuMzdWNDY0YTE2IDE2IDAgMCAwIDE2IDE2aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTU2bDYxLjI2LTcwLjQ1QTMyIDMyIDAgMCAwIDQzMiAzMjEuNjNWMzA0YTE2IDE2IDAgMCAwLTE2LTE2em0zMS4wNi04NS4zOGwtNTkuMjctMTYwQTE2IDE2IDAgMCAwIDM3Mi43MiAzMmgtNDEuNDRhMTYgMTYgMCAwIDAtMTUuMDcgMTAuNjJsLTU5LjI3IDE2MEExNiAxNiAwIDAgMCAyNzIgMjI0aDI0LjgzYTE2IDE2IDAgMCAwIDE1LjIzLTExLjA4bDQuNDItMTIuOTJoNzFsNC40MSAxMi45MkExNiAxNiAwIDAgMCA0MDcuMTYgMjI0SDQzMmExNiAxNiAwIDAgMCAxNS4wNi0yMS4zOHpNMzM1LjYxIDE0NEwzNTIgOTZsMTYuMzkgNDh6XCJdXG59O1xudmFyIGZhU29ydEFscGhhRG93bkFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzb3J0LWFscGhhLWRvd24tYWx0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmODgxXCIsIFwiTTE3NiAzNTJoLTQ4VjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMwNEgxNmMtMTQuMTkgMC0yMS4zNiAxNy4yNC0xMS4yOSAyNy4zMWw4MCA5NmExNiAxNiAwIDAgMCAyMi42MiAwbDgwLTk2QzE5Ny4zNSAzNjkuMjYgMTkwLjIyIDM1MiAxNzYgMzUyem0xMTItMTI4aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTU2bDYxLjI2LTcwLjQ1QTMyIDMyIDAgMCAwIDQzMiA2NS42M1Y0OGExNiAxNiAwIDAgMC0xNi0xNkgyODhhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNTZsLTYxLjI2IDcwLjQ1QTMyIDMyIDAgMCAwIDI3MiAxOTAuMzdWMjA4YTE2IDE2IDAgMCAwIDE2IDE2em0xNTkuMDYgMjM0LjYybC01OS4yNy0xNjBBMTYgMTYgMCAwIDAgMzcyLjcyIDI4OGgtNDEuNDRhMTYgMTYgMCAwIDAtMTUuMDcgMTAuNjJsLTU5LjI3IDE2MEExNiAxNiAwIDAgMCAyNzIgNDgwaDI0LjgzYTE2IDE2IDAgMCAwIDE1LjIzLTExLjA4bDQuNDItMTIuOTJoNzFsNC40MSAxMi45MkExNiAxNiAwIDAgMCA0MDcuMTYgNDgwSDQzMmExNiAxNiAwIDAgMCAxNS4wNi0yMS4zOHpNMzM1LjYxIDQwMEwzNTIgMzUybDE2LjM5IDQ4elwiXVxufTtcbnZhciBmYVNvcnRBbHBoYVVwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NvcnQtYWxwaGEtdXAnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxNWVcIiwgXCJNMTYgMTYwaDQ4djMwNGExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlYxNjBoNDhjMTQuMjEgMCAyMS4zOC0xNy4yNCAxMS4zMS0yNy4zMWwtODAtOTZhMTYgMTYgMCAwIDAtMjIuNjIgMGwtODAgOTZDLTUuMzUgMTQyLjc0IDEuNzggMTYwIDE2IDE2MHptNDAwIDEyOEgyODhhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNTZsLTYxLjI2IDcwLjQ1QTMyIDMyIDAgMCAwIDI3MiA0NDYuMzdWNDY0YTE2IDE2IDAgMCAwIDE2IDE2aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTU2bDYxLjI2LTcwLjQ1QTMyIDMyIDAgMCAwIDQzMiAzMjEuNjNWMzA0YTE2IDE2IDAgMCAwLTE2LTE2em0zMS4wNi04NS4zOGwtNTkuMjctMTYwQTE2IDE2IDAgMCAwIDM3Mi43MiAzMmgtNDEuNDRhMTYgMTYgMCAwIDAtMTUuMDcgMTAuNjJsLTU5LjI3IDE2MEExNiAxNiAwIDAgMCAyNzIgMjI0aDI0LjgzYTE2IDE2IDAgMCAwIDE1LjIzLTExLjA4bDQuNDItMTIuOTJoNzFsNC40MSAxMi45MkExNiAxNiAwIDAgMCA0MDcuMTYgMjI0SDQzMmExNiAxNiAwIDAgMCAxNS4wNi0yMS4zOHpNMzM1LjYxIDE0NEwzNTIgOTZsMTYuMzkgNDh6XCJdXG59O1xudmFyIGZhU29ydEFscGhhVXBBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc29ydC1hbHBoYS11cC1hbHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY4ODJcIiwgXCJNMTYgMTYwaDQ4djMwNGExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlYxNjBoNDhjMTQuMjEgMCAyMS4zOC0xNy4yNCAxMS4zMS0yNy4zMWwtODAtOTZhMTYgMTYgMCAwIDAtMjIuNjIgMGwtODAgOTZDLTUuMzUgMTQyLjc0IDEuNzggMTYwIDE2IDE2MHptMjcyIDY0aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTU2bDYxLjI2LTcwLjQ1QTMyIDMyIDAgMCAwIDQzMiA2NS42M1Y0OGExNiAxNiAwIDAgMC0xNi0xNkgyODhhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNTZsLTYxLjI2IDcwLjQ1QTMyIDMyIDAgMCAwIDI3MiAxOTAuMzdWMjA4YTE2IDE2IDAgMCAwIDE2IDE2em0xNTkuMDYgMjM0LjYybC01OS4yNy0xNjBBMTYgMTYgMCAwIDAgMzcyLjcyIDI4OGgtNDEuNDRhMTYgMTYgMCAwIDAtMTUuMDcgMTAuNjJsLTU5LjI3IDE2MEExNiAxNiAwIDAgMCAyNzIgNDgwaDI0LjgzYTE2IDE2IDAgMCAwIDE1LjIzLTExLjA4bDQuNDItMTIuOTJoNzFsNC40MSAxMi45MkExNiAxNiAwIDAgMCA0MDcuMTYgNDgwSDQzMmExNiAxNiAwIDAgMCAxNS4wNi0yMS4zOHpNMzM1LjYxIDQwMEwzNTIgMzUybDE2LjM5IDQ4elwiXVxufTtcbnZhciBmYVNvcnRBbW91bnREb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NvcnQtYW1vdW50LWRvd24nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxNjBcIiwgXCJNMzA0IDQxNmgtNjRhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNjRhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tMTI4LTY0aC00OFY0OGExNiAxNiAwIDAgMC0xNi0xNkg4MGExNiAxNiAwIDAgMC0xNiAxNnYzMDRIMTZjLTE0LjE5IDAtMjEuMzcgMTcuMjQtMTEuMjkgMjcuMzFsODAgOTZhMTYgMTYgMCAwIDAgMjIuNjIgMGw4MC05NkMxOTcuMzUgMzY5LjI2IDE5MC4yMiAzNTIgMTc2IDM1MnptMjU2LTE5MkgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTkyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptLTY0IDEyOEgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTI4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNNDk2IDMySDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgyNTZhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJdXG59O1xudmFyIGZhU29ydEFtb3VudERvd25BbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc29ydC1hbW91bnQtZG93bi1hbHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY4ODRcIiwgXCJNMjQwIDk2aDY0YTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2aC02NGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNnptMCAxMjhoMTI4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNkgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZ6bTI1NiAxOTJIMjQwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDI1NmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bS0yNTYtNjRoMTkyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNkgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZ6bS02NCAwaC00OFY0OGExNiAxNiAwIDAgMC0xNi0xNkg4MGExNiAxNiAwIDAgMC0xNiAxNnYzMDRIMTZjLTE0LjE5IDAtMjEuMzcgMTcuMjQtMTEuMjkgMjcuMzFsODAgOTZhMTYgMTYgMCAwIDAgMjIuNjIgMGw4MC05NkMxOTcuMzUgMzY5LjI2IDE5MC4yMiAzNTIgMTc2IDM1MnpcIl1cbn07XG52YXIgZmFTb3J0QW1vdW50VXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc29ydC1hbW91bnQtdXAnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxNjFcIiwgXCJNMzA0IDQxNmgtNjRhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNjRhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek0xNiAxNjBoNDh2MzA0YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2MGg0OGMxNC4yMSAwIDIxLjM4LTE3LjI0IDExLjMxLTI3LjMxbC04MC05NmExNiAxNiAwIDAgMC0yMi42MiAwbC04MCA5NkMtNS4zNSAxNDIuNzQgMS43NyAxNjAgMTYgMTYwem00MTYgMEgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTkyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptLTY0IDEyOEgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTI4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNNDk2IDMySDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgyNTZhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJdXG59O1xudmFyIGZhU29ydEFtb3VudFVwQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NvcnQtYW1vdW50LXVwLWFsdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjg4NVwiLCBcIk0yNDAgOTZoNjRhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZoLTY0YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2em0wIDEyOGgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2SDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNnptMjU2IDE5MkgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMjU2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptLTI1Ni02NGgxOTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2SDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNnpNMTYgMTYwaDQ4djMwNGExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlYxNjBoNDhjMTQuMjEgMCAyMS4zOS0xNy4yNCAxMS4zMS0yNy4zMWwtODAtOTZhMTYgMTYgMCAwIDAtMjIuNjIgMGwtODAgOTZDLTUuMzUgMTQyLjc0IDEuNzggMTYwIDE2IDE2MHpcIl1cbn07XG52YXIgZmFTb3J0RG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzb3J0LWRvd24nLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImYwZGRcIiwgXCJNNDEgMjg4aDIzOGMyMS40IDAgMzIuMSAyNS45IDE3IDQxTDE3NyA0NDhjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDI0IDMyOWMtMTUuMS0xNS4xLTQuNC00MSAxNy00MXpcIl1cbn07XG52YXIgZmFTb3J0TnVtZXJpY0Rvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc29ydC1udW1lcmljLWRvd24nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxNjJcIiwgXCJNMzA0IDk2aDE2djY0aC0xNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg5NmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2aC00OGExNiAxNiAwIDAgMC0xNC4yOSA4LjgzbC0xNiAzMkExNiAxNiAwIDAgMCAzMDQgOTZ6bTI2LjE1IDE2Mi45MWE3OSA3OSAwIDAgMC01NSA1NC4xN2MtMTQuMjUgNTEuMDUgMjEuMjEgOTcuNzcgNjguODUgMTAyLjUzYTg0LjA3IDg0LjA3IDAgMCAxLTIwLjg1IDEyLjkxYy03LjU3IDMuNC0xMC44IDEyLjQ3LTguMTggMjAuMzRsOS45IDIwYzIuODcgOC42MyAxMi41MyAxMy40OSAyMC45IDkuOTEgNTgtMjQuNzYgODYuMjUtNjEuNjEgODYuMjUtMTMyVjMzNmMtLjAyLTUxLjIxLTQ4LjQtOTEuMzQtMTAxLjg1LTc3LjA5ek0zNTIgMzU2YTIwIDIwIDAgMSAxIDIwLTIwIDIwIDIwIDAgMCAxLTIwIDIwem0tMTc2LTRoLTQ4VjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMwNEgxNmMtMTQuMTkgMC0yMS4zNiAxNy4yNC0xMS4yOSAyNy4zMWw4MCA5NmExNiAxNiAwIDAgMCAyMi42MiAwbDgwLTk2QzE5Ny4zNSAzNjkuMjYgMTkwLjIyIDM1MiAxNzYgMzUyelwiXVxufTtcbnZhciBmYVNvcnROdW1lcmljRG93bkFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzb3J0LW51bWVyaWMtZG93bi1hbHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY4ODZcIiwgXCJNMTc2IDM1MmgtNDhWNDhhMTYgMTYgMCAwIDAtMTYtMTZIODBhMTYgMTYgMCAwIDAtMTYgMTZ2MzA0SDE2Yy0xNC4xOSAwLTIxLjM2IDE3LjI0LTExLjI5IDI3LjMxbDgwIDk2YTE2IDE2IDAgMCAwIDIyLjYyIDBsODAtOTZDMTk3LjM1IDM2OS4yNiAxOTAuMjIgMzUyIDE3NiAzNTJ6bTIyNCA2NGgtMTZWMzA0YTE2IDE2IDAgMCAwLTE2LTE2aC00OGExNiAxNiAwIDAgMC0xNC4yOSA4LjgzbC0xNiAzMkExNiAxNiAwIDAgMCAzMDQgMzUyaDE2djY0aC0xNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg5NmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6TTMzMC4xNyAzNC45MWE3OSA3OSAwIDAgMC01NSA1NC4xN2MtMTQuMjcgNTEuMDUgMjEuMTkgOTcuNzcgNjguODMgMTAyLjUzYTg0LjA3IDg0LjA3IDAgMCAxLTIwLjg1IDEyLjkxYy03LjU3IDMuNC0xMC44IDEyLjQ3LTguMTggMjAuMzRsOS45IDIwYzIuODcgOC42MyAxMi41MyAxMy40OSAyMC45IDkuOTEgNTgtMjQuNzcgODYuMjUtNjEuNjEgODYuMjUtMTMyVjExMmMtLjAyLTUxLjIxLTQ4LjQtOTEuMzQtMTAxLjg1LTc3LjA5ek0zNTIgMTMyYTIwIDIwIDAgMSAxIDIwLTIwIDIwIDIwIDAgMCAxLTIwIDIwelwiXVxufTtcbnZhciBmYVNvcnROdW1lcmljVXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc29ydC1udW1lcmljLXVwJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMTYzXCIsIFwiTTMzMC4xNyAyNTguOTFhNzkgNzkgMCAwIDAtNTUgNTQuMTdjLTE0LjI3IDUxLjA1IDIxLjE5IDk3Ljc3IDY4LjgzIDEwMi41M2E4NC4wNyA4NC4wNyAwIDAgMS0yMC44NSAxMi45MWMtNy41NyAzLjQtMTAuOCAxMi40Ny04LjE4IDIwLjM0bDkuOSAyMGMyLjg3IDguNjMgMTIuNTMgMTMuNDkgMjAuOSA5LjkxIDU4LTI0Ljc2IDg2LjI1LTYxLjYxIDg2LjI1LTEzMlYzMzZjLS4wMi01MS4yMS00OC40LTkxLjM0LTEwMS44NS03Ny4wOXpNMzUyIDM1NmEyMCAyMCAwIDEgMSAyMC0yMCAyMCAyMCAwIDAgMS0yMCAyMHpNMzA0IDk2aDE2djY0aC0xNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg5NmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2aC00OGExNiAxNiAwIDAgMC0xNC4yOSA4LjgzbC0xNiAzMkExNiAxNiAwIDAgMCAzMDQgOTZ6TTEwNy4zMSAzNi42OWExNiAxNiAwIDAgMC0yMi42MiAwbC04MCA5NkMtNS4zNSAxNDIuNzQgMS43OCAxNjAgMTYgMTYwaDQ4djMwNGExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlYxNjBoNDhjMTQuMjEgMCAyMS4zOC0xNy4yNCAxMS4zMS0yNy4zMXpcIl1cbn07XG52YXIgZmFTb3J0TnVtZXJpY1VwQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NvcnQtbnVtZXJpYy11cC1hbHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY4ODdcIiwgXCJNMTA3LjMxIDM2LjY5YTE2IDE2IDAgMCAwLTIyLjYyIDBsLTgwIDk2Qy01LjM1IDE0Mi43NCAxLjc4IDE2MCAxNiAxNjBoNDh2MzA0YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2MGg0OGMxNC4yMSAwIDIxLjM4LTE3LjI0IDExLjMxLTI3LjMxek00MDAgNDE2aC0xNlYzMDRhMTYgMTYgMCAwIDAtMTYtMTZoLTQ4YTE2IDE2IDAgMCAwLTE0LjI5IDguODNsLTE2IDMyQTE2IDE2IDAgMCAwIDMwNCAzNTJoMTZ2NjRoLTE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDk2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNMzMwLjE3IDM0LjkxYTc5IDc5IDAgMCAwLTU1IDU0LjE3Yy0xNC4yNyA1MS4wNSAyMS4xOSA5Ny43NyA2OC44MyAxMDIuNTNhODQuMDcgODQuMDcgMCAwIDEtMjAuODUgMTIuOTFjLTcuNTcgMy40LTEwLjggMTIuNDctOC4xOCAyMC4zNGw5LjkgMjBjMi44NyA4LjYzIDEyLjUzIDEzLjQ5IDIwLjkgOS45MSA1OC0yNC43NyA4Ni4yNS02MS42MSA4Ni4yNS0xMzJWMTEyYy0uMDItNTEuMjEtNDguNC05MS4zNC0xMDEuODUtNzcuMDl6TTM1MiAxMzJhMjAgMjAgMCAxIDEgMjAtMjAgMjAgMjAgMCAwIDEtMjAgMjB6XCJdXG59O1xudmFyIGZhU29ydFVwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NvcnQtdXAnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImYwZGVcIiwgXCJNMjc5IDIyNEg0MWMtMjEuNCAwLTMyLjEtMjUuOS0xNy00MUwxNDMgNjRjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMTE5IDExOWMxNS4yIDE1LjEgNC41IDQxLTE2LjkgNDF6XCJdXG59O1xudmFyIGZhU3BhID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NwYScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjViYlwiLCBcIk01NjguMjUgMTkyYy0yOS4wNC4xMy0xMzUuMDEgNi4xNi0yMTMuODQgODMtMzMuMTIgMjkuNjMtNTMuMzYgNjMuMy02Ni40MSA5NC44Ni0xMy4wNS0zMS41Ni0zMy4yOS02NS4yMy02Ni40MS05NC44Ni03OC44My03Ni44NC0xODQuOC04Mi44Ny0yMTMuODQtODMtNC40MS0uMDItNy43OSAzLjQtNy43NSA3LjgyLjIzIDI3LjkyIDcuMTQgMTI2LjE0IDg4Ljc3IDE5OS4zQzE3Mi43OSA0ODAuOTQgMjU2IDQ4MCAyODggNDgwczExNS4xOS45NSAxOTkuMjMtODAuODhjODEuNjQtNzMuMTcgODguNTQtMTcxLjM4IDg4Ljc3LTE5OS4zLjA0LTQuNDItMy4zNC03Ljg0LTcuNzUtNy44MnpNMjg3Ljk4IDMwMi42YzEyLjgyLTE4Ljg1IDI3LjYtMzUuNzggNDQuMDktNTAuNTIgMTkuMDktMTguNjEgMzkuNTgtMzMuMyA2MC4yNi00NS4xOC0xNi40NC03MC41LTUxLjcyLTEzMy4wNS05Ni43My0xNzIuMjItNC4xMS0zLjU4LTExLjAyLTMuNTgtMTUuMTQgMC00NC45OSAzOS4xNC04MC4yNyAxMDEuNjMtOTYuNzQgMTcyLjA3IDIwLjM3IDExLjcgNDAuNSAyNi4xNCA1OS4yMiA0NC4zOWEyODIuNzY4IDI4Mi43NjggMCAwIDEgNDUuMDQgNTEuNDZ6XCJdXG59O1xudmFyIGZhU3BhY2VTaHV0dGxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NwYWNlLXNodXR0bGUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYxOTdcIiwgXCJNNTkyLjYwNCAyMDguMjQ0QzU1OS43MzUgMTkyLjgzNiA1MTUuNzc3IDE4NCA0NzIgMTg0SDE4Ni4zMjdjLTQuOTUyLTYuNTU1LTEwLjU4NS0xMS45NzgtMTYuNzItMTZIMzc2QzIyOS4xNTcgMTM3Ljc0NyAyMTkuNDAzIDMyIDk2LjAwMyAzMkg5NnYxMjhIODBWMzJjLTI2LjUxIDAtNDggMjguNjU0LTQ4IDY0djY0Yy0yMy4xOTcgMC0zMiAxMC4wMzItMzIgMjR2NDBjMCAxMy45ODMgOC44MTkgMjQgMzIgMjR2MTZjLTIzLjE5NyAwLTMyIDEwLjAzMi0zMiAyNHY0MGMwIDEzLjk4MyA4LjgxOSAyNCAzMiAyNHY2NGMwIDM1LjM0NiAyMS40OSA2NCA0OCA2NFYzNTJoMTZ2MTI4aC4wMDNjMTIzLjQgMCAxMzMuMTU0LTEwNS43NDcgMjc5Ljk5Ny0xMzZIMTY5LjYwNmM2LjEzNS00LjAyMiAxMS43NjgtOS40NDUgMTYuNzItMTZINDcyYzQzLjc3NyAwIDg3LjczNS04LjgzNiAxMjAuNjA0LTI0LjI0NEM2MjIuMjgyIDI4OS44NDUgNjQwIDI3MS45OTIgNjQwIDI1NnMtMTcuNzE4LTMzLjg0NS00Ny4zOTYtNDcuNzU2ek00ODggMjk2YTggOCAwIDAgMS04LTh2LTY0YTggOCAwIDAgMSA4LThjMzEuOTA5IDAgMzEuOTQyIDgwIDAgODB6XCJdXG59O1xudmFyIGZhU3BlbGxDaGVjayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcGVsbC1jaGVjaycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjg5MVwiLCBcIk0yNzIgMjU2aDkxLjM2YzQzLjIgMCA4Mi0zMi4yIDg0LjUxLTc1LjM0YTc5LjgyIDc5LjgyIDAgMCAwLTI1LjI2LTYzLjA3IDc5LjgxIDc5LjgxIDAgMCAwIDkuMDYtNDQuOTFDNDI3LjkgMzAuNTcgMzg5LjMgMCAzNDcgMGgtNzVhMTYgMTYgMCAwIDAtMTYgMTZ2MjI0YTE2IDE2IDAgMCAwIDE2IDE2em00MC0yMDBoNDBhMjQgMjQgMCAwIDEgMCA0OGgtNDB6bTAgOTZoNTZhMjQgMjQgMCAwIDEgMCA0OGgtNTZ6TTE1NS4xMiAyMi4yNUEzMiAzMiAwIDAgMCAxMjQuNjQgMEg5OS4zNmEzMiAzMiAwIDAgMC0zMC40OCAyMi4yNUwuNTkgMjM1LjczQTE2IDE2IDAgMCAwIDE2IDI1NmgyNC45M2ExNiAxNiAwIDAgMCAxNS40Mi0xMS43M0w2OC4yOSAyMDhoODcuNDJsMTEuOTQgMzYuMjdBMTYgMTYgMCAwIDAgMTgzLjA3IDI1NkgyMDhhMTYgMTYgMCAwIDAgMTUuNDItMjAuMjd6TTg5LjM3IDE0NEwxMTIgNzUuM2wyMi42MyA2OC43em00ODIgMTMyLjQ4bC00NS4yMS00NS4zYTE1Ljg4IDE1Ljg4IDAgMCAwLTIyLjU5IDBsLTE1MS41IDE1MS41LTU1LjQxLTU1LjVhMTUuODggMTUuODggMCAwIDAtMjIuNTkgMGwtNDUuMyA0NS4zYTE2IDE2IDAgMCAwIDAgMjIuNTlsMTEyIDExMi4yMWExNS44OSAxNS44OSAwIDAgMCAyMi42IDBsMjA4LTIwOC4yMWExNiAxNiAwIDAgMC0uMDItMjIuNTl6XCJdXG59O1xudmFyIGZhU3BpZGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NwaWRlcicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjcxN1wiLCBcIk0xNTEuMTcgMTY3LjM1TDE3Ny4xIDE3Nmg0LjY3bDUuMjItMjYuMTJjLjcyLTMuNTggMS44LTcuNTggMy4yMS0xMS43OWwtMjAuMjktNDAuNTggMjMuOC03MS4zOWMyLjc5LTguMzgtMS43My0xNy40NC0xMC4xMi0yMC4yNEwxNjguNDIuODJjLTguMzgtMi44LTE3LjQ1IDEuNzMtMjAuMjQgMTAuMTJsLTI1Ljg5IDc3LjY4YTMyLjA0IDMyLjA0IDAgMCAwIDEuNzMgMjQuNDNsMjcuMTUgNTQuM3ptNDIyLjE0IDE4Mi4wM2wtNTIuNzUtNzkuMTJhMzIuMDAyIDMyLjAwMiAwIDAgMC0yNi42Mi0xNC4yNUg0MTZsNjguOTktMjQuMzZhMzIuMDMgMzIuMDMgMCAwIDAgMTYuNTEtMTIuNjFsNTMuNi04MC40MWM0LjktNy4zNSAyLjkxLTE3LjI5LTQuNDQtMjIuMTlsLTEzLjMxLTguODhjLTcuMzUtNC45LTE3LjI5LTIuOTEtMjIuMTkgNC40NGwtNTAuNTYgNzUuODNMNDA0LjEgMjA4SDM2OGwtMTAuMzctNTEuODVDMzU1LjQ0IDE0NS4xOCAzNDAuMjYgOTYgMjg4IDk2Yy01Mi4yNiAwLTY3LjQ0IDQ5LjE4LTY5LjYzIDYwLjE1TDIwOCAyMDhoLTM2LjFsLTYwLjQ5LTIwLjE3TDYwLjg0IDExMmMtNC45LTcuMzUtMTQuODMtOS4zNC0yMi4xOS00LjQ0bC0xMy4zMSA4Ljg4Yy03LjM1IDQuOS05LjM0IDE0LjgzLTQuNDQgMjIuMTlsNTMuNiA4MC40MWEzMi4wMyAzMi4wMyAwIDAgMCAxNi41MSAxMi42MUwxNjAgMjU2SDgyLjA2YTMyLjAyIDMyLjAyIDAgMCAwLTI2LjYzIDE0LjI1TDIuNjkgMzQ5LjM4Yy00LjkgNy4zNS0yLjkyIDE3LjI5IDQuNDQgMjIuMTlsMTMuMzEgOC44OGM3LjM1IDQuOSAxNy4yOSAyLjkxIDIyLjE5LTQuNDRsNDgtNzJoNDcuMDZsLTYwLjgzIDk3LjMzQTMxLjk4OCAzMS45ODggMCAwIDAgNzIgNDE4LjNWNDk2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzguODQgMCAxNi03LjE2IDE2LTE2di03My4xMWw3NC4wOC0xMTguNTNjLTEuMDEgMTQuMDUtMi4wOCAyOC4xMS0yLjA4IDQyLjIxQzE5MiAzOTkuNjQgMjMyLjc2IDQ0OCAyODggNDQ4czk2LTQ4LjM2IDk2LTEwMS40M2MwLTE0LjEtMS4wOC0yOC4xNi0yLjA4LTQyLjIxTDQ1NiA0MjIuODlWNDk2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzguODQgMCAxNi03LjE2IDE2LTE2di03Ny43MWMwLTYtMS42OS0xMS44OC00Ljg2LTE2Ljk2TDQzOC4zMSAzMDRoNDcuMDZsNDggNzJjNC45IDcuMzUgMTQuODQgOS4zNCAyMi4xOSA0LjQ0bDEzLjMxLTguODhjNy4zNi00LjkgOS4zNC0xNC44MyA0LjQ0LTIyLjE4ek00MDYuMDkgOTcuNTFsLTIwLjI5IDQwLjU4YzEuNDEgNC4yMSAyLjQ5IDguMjEgMy4yMSAxMS43OWw1LjIyIDI2LjEyaDQuNjdsMjUuOTMtOC42NSAyNy4xNS01NC4zYTMxLjk5NSAzMS45OTUgMCAwIDAgMS43My0yNC40M2wtMjUuODktNzcuNjhDNDI1LjAzIDIuNTYgNDE1Ljk2LTEuOTggNDA3LjU4LjgybC0xNS4xNyA1LjA2Yy04LjM4IDIuOC0xMi45MSAxMS44Ni0xMC4xMiAyMC4yNGwyMy44IDcxLjM5elwiXVxufTtcbnZhciBmYVNwaW5uZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3Bpbm5lcicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjExMFwiLCBcIk0zMDQgNDhjMCAyNi41MS0yMS40OSA0OC00OCA0OHMtNDgtMjEuNDktNDgtNDggMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDh6bS00OCAzNjhjLTI2LjUxIDAtNDggMjEuNDktNDggNDhzMjEuNDkgNDggNDggNDggNDgtMjEuNDkgNDgtNDgtMjEuNDktNDgtNDgtNDh6bTIwOC0yMDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDhzMjEuNDkgNDggNDggNDggNDgtMjEuNDkgNDgtNDgtMjEuNDktNDgtNDgtNDh6TTk2IDI1NmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4UzAgMjI5LjQ5IDAgMjU2czIxLjQ5IDQ4IDQ4IDQ4IDQ4LTIxLjQ5IDQ4LTQ4em0xMi45MjIgOTkuMDc4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4czIxLjQ5IDQ4IDQ4IDQ4IDQ4LTIxLjQ5IDQ4LTQ4YzAtMjYuNTA5LTIxLjQ5MS00OC00OC00OHptMjk0LjE1NiAwYy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4czIxLjQ5IDQ4IDQ4IDQ4IDQ4LTIxLjQ5IDQ4LTQ4YzAtMjYuNTA5LTIxLjQ5LTQ4LTQ4LTQ4ek0xMDguOTIyIDYwLjkyMmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OCA0OC0yMS40OSA0OC00OC0yMS40OTEtNDgtNDgtNDh6XCJdXG59O1xudmFyIGZhU3Bsb3RjaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcGxvdGNoJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNWJjXCIsIFwiTTQ3Mi4yOSAxOTUuODlsLTY3LjA2LTIyLjk1Yy0xOS4yOC02LjYtMzMuNTQtMjAuOTItMzguMTQtMzguM0wzNTEuMSA3NC4xOWMtMTEuNTgtNDMuNzctNzYuNTctNTcuMTMtMTA5Ljk4LTIyLjYybC00Ni4xNCA0Ny42N2MtMTMuMjYgMTMuNzEtMzMuNTQgMjAuOTMtNTQuMiAxOS4zMWwtNzEuODgtNS42MmMtNTIuMDUtNC4wNy04Ni45MyA0NC44OC01OS4wMyA4Mi44M2wzOC41NCA1Mi40MmMxMS4wOCAxNS4wNyAxMi44MiAzMy44NiA0LjY0IDUwLjI0TDI0LjYyIDM1NS40Yy0yMC41OSA0MS4yNSAyMi44NCA4NC44NyA3My40OSA3My44MWw2OS45Ni0xNS4yOGMyMC4xMS00LjM5IDQxLjQ1IDAgNTcuMDcgMTEuNzNsNTQuMzIgNDAuODNjMzkuMzIgMjkuNTYgMTAxLjA0IDcuNTcgMTA0LjQ1LTM3LjIybDQuNy02MS44NmMxLjM1LTE3Ljc5IDEyLjgtMzMuODYgMzAuNjMtNDIuOTlsNjItMzEuNzRjNDQuODgtMjIuOTYgMzkuNTktODAuMTctOC45NS05Ni43OXpcIl1cbn07XG52YXIgZmFTcHJheUNhbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcHJheS1jYW4nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1YmRcIiwgXCJNMjI0IDMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2aDEyOFYzMnptMjU2IDk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyIDMyLTE0LjMzIDMyLTMyLTE0LjMzLTMyLTMyLTMyem0tMjU2IDMySDk2Yy01My4wMiAwLTk2IDQyLjk4LTk2IDk2djIyNGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDI1NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjI1NmMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2em0tNjQgMjU2Yy00NC4xOCAwLTgwLTM1LjgyLTgwLTgwczM1LjgyLTgwIDgwLTgwIDgwIDM1LjgyIDgwIDgwLTM1LjgyIDgwLTgwIDgwek00ODAgOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnMtMTQuMzMtMzItMzItMzItMzIgMTQuMzMtMzIgMzIgMTQuMzMgMzIgMzIgMzJ6bS05NiAzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnMxNC4zMyAzMiAzMiAzMiAzMi0xNC4zMyAzMi0zMi0xNC4zMy0zMi0zMi0zMnptLTk2LTk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyIDMyLTE0LjMzIDMyLTMyLTE0LjMzLTMyLTMyLTMyem05NiAwYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyIDMyLTE0LjMzIDMyLTMyLTE0LjMzLTMyLTMyLTMyem05NiAxOTJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJzMTQuMzMgMzIgMzIgMzIgMzItMTQuMzMgMzItMzItMTQuMzMtMzItMzItMzJ6XCJdXG59O1xudmFyIGZhU3F1YXJlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjBjOFwiLCBcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwiXVxufTtcbnZhciBmYVNxdWFyZUZ1bGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3F1YXJlLWZ1bGwnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY0NWNcIiwgXCJNNTEyIDUxMkgwVjBoNTEydjUxMnpcIl1cbn07XG52YXIgZmFTcXVhcmVSb290QWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS1yb290LWFsdCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjY5OFwiLCBcIk01NzEuMzEgMjUxLjMxbC0yMi42Mi0yMi42MmMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMEw0ODAgMjc0Ljc1bC00Ni4wNi00Ni4wNmMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtMjIuNjIgMjIuNjJjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNMNDM0Ljc1IDMyMGwtNDYuMDYgNDYuMDZjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNsMjIuNjIgMjIuNjJjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMEw0ODAgMzY1LjI1bDQ2LjA2IDQ2LjA2YzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMjIuNjItMjIuNjJjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M0w1MjUuMjUgMzIwbDQ2LjA2LTQ2LjA2YzYuMjUtNi4yNSA2LjI1LTE2LjM4IDAtMjIuNjN6TTU1MiAwSDMwNy42NWMtMTQuNTQgMC0yNy4yNiA5LjgtMzAuOTUgMjMuODdsLTg0Ljc5IDMyMi44LTU4LjQxLTEwNi4xQTMyLjAwOCAzMi4wMDggMCAwIDAgMTA1LjQ3IDIyNEgyNGMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHY0OGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDQzLjYybDg4Ljg4IDE2My43M0MxNjguOTkgNTAzLjUgMTg2LjMgNTEyIDIwNC45NCA1MTJjMTcuMjcgMCA0NC40NC05IDU0LjI4LTQxLjQ4TDM1Ny4wMyA5Nkg1NTJjMTMuMjUgMCAyNC0xMC43NSAyNC0yNFYyNGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0elwiXVxufTtcbnZhciBmYVN0YW1wID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0YW1wJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNWJmXCIsIFwiTTMyIDUxMmg0NDh2LTY0SDMydjY0em0zODQtMjU2aC02Ni41NmMtMTYuMjYgMC0yOS40NC0xMy4xOC0yOS40NC0yOS40NHYtOS40NmMwLTI3LjM3IDguODgtNTMuNDEgMjEuNDYtNzcuNzIgOS4xMS0xNy42MSAxMi45LTM4LjM5IDkuMDUtNjAuNDItNi43Ny0zOC43OC0zOC40Ny03MC43LTc3LjI2LTc3LjQ1QzIxMi42Mi05LjA0IDE2MCAzNy4zMyAxNjAgOTZjMCAxNC4xNiAzLjEyIDI3LjU0IDguNjkgMzkuNThDMTgyLjAyIDE2NC40MyAxOTIgMTk0LjcgMTkyIDIyNi40OXYuMDdjMCAxNi4yNi0xMy4xOCAyOS40NC0yOS40NCAyOS40NEg5NmMtNTMuMDIgMC05NiA0Mi45OC05NiA5NnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDQ0OGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2elwiXVxufTtcbnZhciBmYVN0YXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RhcicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjAwNVwiLCBcIk0yNTkuMyAxNy44TDE5NCAxNTAuMiA0Ny45IDE3MS41Yy0yNi4yIDMuOC0zNi43IDM2LjEtMTcuNyA1NC42bDEwNS43IDEwMy0yNSAxNDUuNWMtNC41IDI2LjMgMjMuMiA0NiA0Ni40IDMzLjdMMjg4IDQzOS42bDEzMC43IDY4LjdjMjMuMiAxMi4yIDUwLjktNy40IDQ2LjQtMzMuN2wtMjUtMTQ1LjUgMTA1LjctMTAzYzE5LTE4LjUgOC41LTUwLjgtMTcuNy01NC42TDM4MiAxNTAuMiAzMTYuNyAxNy44Yy0xMS43LTIzLjYtNDUuNi0yMy45LTU3LjQgMHpcIl1cbn07XG52YXIgZmFTdGFyQW5kQ3Jlc2NlbnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3Rhci1hbmQtY3Jlc2NlbnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY2OTlcIiwgXCJNMzQwLjQ3IDQ2Ni4zNmMtMS40NSAwLTYuODkuNDYtOS4xOC40Ni0xMTYuMjUgMC0yMTAuODItOTQuNTctMjEwLjgyLTIxMC44MlMyMTUuMDQgNDUuMTggMzMxLjI5IDQ1LjE4YzIuMzIgMCA3LjcuNDYgOS4xOC40NiA3LjEzIDAgMTMuMzMtNS4wMyAxNC43NS0xMi4wNyAxLjQ2LTcuMjUtMi41NS0xNC40OS05LjQ3LTE3LjA5QzMxNi41OCA1LjU0IDI4Ni4zOSAwIDI1NiAwIDExNC44NCAwIDAgMTE0Ljg0IDAgMjU2czExNC44NCAyNTYgMjU2IDI1NmMzMC4yMyAwIDYwLjI4LTUuNDkgODkuMzItMTYuMzIgNS45Ni0yLjAyIDEwLjI4LTcuNjQgMTAuMjgtMTQuMjYgMC04LjA5LTYuMzktMTUuMDYtMTUuMTMtMTUuMDZ6bTE2Mi45OS0yNTIuNWwtNzYuMzgtMTEuMS0zNC4xNi02OS4yMWMtMS44My0zLjctNS4zOC01LjU1LTguOTMtNS41NXMtNy4xIDEuODUtOC45MyA1LjU1bC0zNC4xNiA2OS4yMS03Ni4zOCAxMS4xYy04LjE3IDEuMTgtMTEuNDMgMTEuMjItNS41MiAxNi45OWw1NS4yNyA1My44Ny0xMy4wNSA3Ni4wN2MtMS4xMSA2LjQ0IDQuMDEgMTEuNjYgOS44MSAxMS42NiAxLjUzIDAgMy4xMS0uMzYgNC42NC0xLjE3TDM4NCAzMzUuMzdsNjguMzEgMzUuOTFjMS41My44IDMuMTEgMS4xNyA0LjY0IDEuMTcgNS44IDAgMTAuOTItNS4yMyA5LjgxLTExLjY2bC0xMy4wNS03Ni4wNyA1NS4yNy01My44N2M1LjkxLTUuNzcgMi42NS0xNS44MS01LjUyLTE2Ljk5elwiXVxufTtcbnZhciBmYVN0YXJIYWxmID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0YXItaGFsZicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjA4OVwiLCBcIk0yODggMGMtMTEuNCAwLTIyLjggNS45LTI4LjcgMTcuOEwxOTQgMTUwLjIgNDcuOSAxNzEuNGMtMjYuMiAzLjgtMzYuNyAzNi4xLTE3LjcgNTQuNmwxMDUuNyAxMDMtMjUgMTQ1LjVjLTQuNSAyNi4xIDIzIDQ2IDQ2LjQgMzMuN0wyODggNDM5LjZWMHpcIl1cbn07XG52YXIgZmFTdGFySGFsZkFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdGFyLWhhbGYtYWx0JyxcbiAgaWNvbjogWzUzNiwgNTEyLCBbXSwgXCJmNWMwXCIsIFwiTTUwOC41NSAxNzEuNTFMMzYyLjE4IDE1MC4yIDI5Ni43NyAxNy44MUMyOTAuODkgNS45OCAyNzkuNDIgMCAyNjcuOTUgMGMtMTEuNCAwLTIyLjc5IDUuOS0yOC42OSAxNy44MWwtNjUuNDMgMTMyLjM4LTE0Ni4zOCAyMS4yOWMtMjYuMjUgMy44LTM2Ljc3IDM2LjA5LTE3Ljc0IDU0LjU5bDEwNS44OSAxMDMtMjUuMDYgMTQ1LjQ4Qzg2Ljk4IDQ5NS4zMyAxMDMuNTcgNTEyIDEyMi4xNSA1MTJjNC45MyAwIDEwLTEuMTcgMTQuODctMy43NWwxMzAuOTUtNjguNjggMTMwLjk0IDY4LjdjNC44NiAyLjU1IDkuOTIgMy43MSAxNC44MyAzLjcxIDE4LjYgMCAzNS4yMi0xNi42MSAzMS42Ni0zNy40bC0yNS4wMy0xNDUuNDkgMTA1LjkxLTEwMi45OGMxOS4wNC0xOC41IDguNTItNTAuOC0xNy43My01NC42em0tMTIxLjc0IDEyMy4ybC0xOC4xMiAxNy42MiA0LjI4IDI0Ljg4IDE5LjUyIDExMy40NS0xMDIuMTMtNTMuNTktMjIuMzgtMTEuNzQuMDMtMzE3LjE5IDUxLjAzIDEwMy4yOSAxMS4xOCAyMi42MyAyNS4wMSAzLjY0IDExNC4yMyAxNi42My04Mi42NSA4MC4zOHpcIl1cbn07XG52YXIgZmFTdGFyT2ZEYXZpZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdGFyLW9mLWRhdmlkJyxcbiAgaWNvbjogWzQ2NCwgNTEyLCBbXSwgXCJmNjlhXCIsIFwiTTQwNS42OCAyNTZsNTMuMjEtODkuMzlDNDczLjMgMTQyLjQgNDU1LjQ4IDExMiA0MjYuODggMTEySDMxOS45NmwtNTUuOTUtOTMuOThDMjU2Ljg2IDYuMDEgMjQ0LjQzIDAgMjMyIDBzLTI0Ljg2IDYuMDEtMzIuMDEgMTguMDJMMTQ0LjA0IDExMkgzNy4xMWMtMjguNiAwLTQ2LjQyIDMwLjQtMzIuMDEgNTQuNjFMNTguMzIgMjU2IDUuMSAzNDUuMzlDLTkuMzEgMzY5LjYgOC41MSA0MDAgMzcuMTEgNDAwaDEwNi45M2w1NS45NSA5My45OEMyMDcuMTQgNTA1Ljk5IDIxOS41NyA1MTIgMjMyIDUxMnMyNC44Ni02LjAxIDMyLjAxLTE4LjAyTDMxOS45NiA0MDBoMTA2LjkzYzI4LjYgMCA0Ni40Mi0zMC40IDMyLjAxLTU0LjYxTDQwNS42OCAyNTZ6bS0xMi43OC04OGwtMTkuOCAzMy4yNkwzNTMuMyAxNjhoMzkuNnptLTUyLjM5IDg4bC01Mi4zOSA4OEgxNzUuODhsLTUyLjM5LTg4IDUyLjM4LTg4aDExMi4yNWw1Mi4zOSA4OHpNMjMyIDczLjcyTDI1NC43OSAxMTJoLTQ1LjU3TDIzMiA3My43MnpNNzEuMSAxNjhoMzkuNmwtMTkuOCAzMy4yNkw3MS4xIDE2OHptMCAxNzZsMTkuOC0zMy4yNkwxMTAuNyAzNDRINzEuMXpNMjMyIDQzOC4yOEwyMDkuMjEgNDAwaDQ1LjU3TDIzMiA0MzguMjh6TTM1My4yOSAzNDRsMTkuOC0zMy4yNkwzOTIuOSAzNDRoLTM5LjYxelwiXVxufTtcbnZhciBmYVN0YXJPZkxpZmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3Rhci1vZi1saWZlJyxcbiAgaWNvbjogWzQ4MCwgNTEyLCBbXSwgXCJmNjIxXCIsIFwiTTQ3MS45OSAzMzQuNDNMMzM2LjA2IDI1NmwxMzUuOTMtNzguNDNjNy42Ni00LjQyIDEwLjI4LTE0LjIgNS44Ni0yMS44NmwtMzIuMDItNTUuNDNjLTQuNDItNy42NS0xNC4yMS0xMC4yOC0yMS44Ny01Ljg2bC0xMzUuOTMgNzguNDNWMTZjMC04Ljg0LTcuMTctMTYtMTYuMDEtMTZoLTY0LjA0Yy04Ljg0IDAtMTYuMDEgNy4xNi0xNi4wMSAxNnYxNTYuODZMNTYuMDQgOTQuNDNjLTcuNjYtNC40Mi0xNy40NS0xLjc5LTIxLjg3IDUuODZMMi4xNSAxNTUuNzFjLTQuNDIgNy42NS0xLjggMTcuNDQgNS44NiAyMS44NkwxNDMuOTQgMjU2IDguMDEgMzM0LjQzYy03LjY2IDQuNDItMTAuMjggMTQuMjEtNS44NiAyMS44NmwzMi4wMiA1NS40M2M0LjQyIDcuNjUgMTQuMjEgMTAuMjcgMjEuODcgNS44NmwxMzUuOTMtNzguNDNWNDk2YzAgOC44NCA3LjE3IDE2IDE2LjAxIDE2aDY0LjA0YzguODQgMCAxNi4wMS03LjE2IDE2LjAxLTE2VjMzOS4xNGwxMzUuOTMgNzguNDNjNy42NiA0LjQyIDE3LjQ1IDEuOCAyMS44Ny01Ljg2bDMyLjAyLTU1LjQzYzQuNDItNy42NSAxLjgtMTcuNDMtNS44Ni0yMS44NXpcIl1cbn07XG52YXIgZmFTdGVwQmFja3dhcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RlcC1iYWNrd2FyZCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjA0OFwiLCBcIk02NCA0NjhWNDRjMC02LjYgNS40LTEyIDEyLTEyaDQ4YzYuNiAwIDEyIDUuNCAxMiAxMnYxNzYuNGwxOTUuNS0xODFDMzUyLjEgMjIuMyAzODQgMzYuNiAzODQgNjR2Mzg0YzAgMjcuNC0zMS45IDQxLjctNTIuNSAyNC42TDEzNiAyOTIuN1Y0NjhjMCA2LjYtNS40IDEyLTEyIDEySDc2Yy02LjYgMC0xMi01LjQtMTItMTJ6XCJdXG59O1xudmFyIGZhU3RlcEZvcndhcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RlcC1mb3J3YXJkJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDUxXCIsIFwiTTM4NCA0NHY0MjRjMCA2LjYtNS40IDEyLTEyIDEyaC00OGMtNi42IDAtMTItNS40LTEyLTEyVjI5MS42bC0xOTUuNSAxODFDOTUuOSA0ODkuNyA2NCA0NzUuNCA2NCA0NDhWNjRjMC0yNy40IDMxLjktNDEuNyA1Mi41LTI0LjZMMzEyIDIxOS4zVjQ0YzAtNi42IDUuNC0xMiAxMi0xMmg0OGM2LjYgMCAxMiA1LjQgMTIgMTJ6XCJdXG59O1xudmFyIGZhU3RldGhvc2NvcGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RldGhvc2NvcGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwZjFcIiwgXCJNNDQ3LjEgMTEyYy0zNC4yLjUtNjIuMyAyOC40LTYzIDYyLjYtLjUgMjQuMyAxMi41IDQ1LjYgMzIgNTYuOFYzNDRjMCA1Ny4zLTUwLjIgMTA0LTExMiAxMDQtNjAgMC0xMDkuMi00NC4xLTExMS45LTk5LjJDMjY1IDMzMy44IDMyMCAyNjkuMiAzMjAgMTkyVjM2LjZjMC0xMS40LTguMS0yMS4zLTE5LjMtMjMuNUwyMzcuOC41Yy0xMy0yLjYtMjUuNiA1LjgtMjguMiAxOC44TDIwNi40IDM1Yy0yLjYgMTMgNS44IDI1LjYgMTguOCAyOC4ybDMwLjcgNi4xdjEyMS40YzAgNTIuOS00Mi4yIDk2LjctOTUuMSA5Ny4yLTUzLjQuNS05Ni45LTQyLjctOTYuOS05NlY2OS40bDMwLjctNi4xYzEzLTIuNiAyMS40LTE1LjIgMTguOC0yOC4ybC0zLjEtMTUuN0MxMDcuNyA2LjQgOTUuMS0yIDgyLjEuNkwxOS4zIDEzQzguMSAxNS4zIDAgMjUuMSAwIDM2LjZWMTkyYzAgNzcuMyA1NS4xIDE0MiAxMjguMSAxNTYuOEMxMzAuNyA0MzkuMiAyMDguNiA1MTIgMzA0IDUxMmM5NyAwIDE3Ni03NS40IDE3Ni0xNjhWMjMxLjRjMTkuMS0xMS4xIDMyLTMxLjcgMzItNTUuNCAwLTM1LjctMjkuMi02NC41LTY0LjktNjR6bS45IDgwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6XCJdXG59O1xudmFyIGZhU3RpY2t5Tm90ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdGlja3ktbm90ZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjI0OVwiLCBcIk0zMTIgMzIwaDEzNlY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgyNEMxMC43IDMyIDAgNDIuNyAwIDU2djQwMGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgyNjRWMzQ0YzAtMTMuMiAxMC44LTI0IDI0LTI0em0xMjkgNTVsLTk4IDk4Yy00LjUgNC41LTEwLjYgNy0xNyA3aC02VjM1MmgxMjh2Ni4xYzAgNi4zLTIuNSAxMi40LTcgMTYuOXpcIl1cbn07XG52YXIgZmFTdG9wID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0b3AnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwNGRcIiwgXCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpcIl1cbn07XG52YXIgZmFTdG9wQ2lyY2xlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0b3AtY2lyY2xlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMjhkXCIsIFwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTk2IDMyOGMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMTc2YzAtOC44IDcuMi0xNiAxNi0xNmgxNjBjOC44IDAgMTYgNy4yIDE2IDE2djE2MHpcIl1cbn07XG52YXIgZmFTdG9wd2F0Y2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RvcHdhdGNoJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMmYyXCIsIFwiTTQzMiAzMDRjMCAxMTQuOS05My4xIDIwOC0yMDggMjA4UzE2IDQxOC45IDE2IDMwNGMwLTEwNCA3Ni4zLTE5MC4yIDE3Ni0yMDUuNVY2NGgtMjhjLTYuNiAwLTEyLTUuNC0xMi0xMlYxMmMwLTYuNiA1LjQtMTIgMTItMTJoMTIwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJoLTI4djM0LjVjMzcuNSA1LjggNzEuNyAyMS42IDk5LjcgNDQuNmwyNy41LTI3LjVjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDI4LjMgMjguM2M0LjcgNC43IDQuNyAxMi4zIDAgMTdsLTI5LjQgMjkuNC0uNi42QzQxOS43IDIyMy4zIDQzMiAyNjIuMiA0MzIgMzA0em0tMTc2IDM2VjE4OC41YzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMlYzNDBjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnpcIl1cbn07XG52YXIgZmFTdG9wd2F0Y2gyMCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdG9wd2F0Y2gtMjAnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImUwNmZcIiwgXCJNMzk4LjUsMTkwLjkxbC41OS0uNjEsMjYuNTktMjYuNThhMTYsMTYsMCwwLDAsMC0yMi42M0w0MDMsMTE4LjQxYTE2LDE2LDAsMCwwLTIyLjYzLDBsLTI0LjY4LDI0LjY4QTIwNi42OCwyMDYuNjgsMCwwLDAsMjU2LDk4LjVWNjRoMzJhMTYsMTYsMCwwLDAsMTYtMTZWMTZBMTYsMTYsMCwwLDAsMjg4LDBIMTYwYTE2LjA1LDE2LjA1LDAsMCwwLTE2LDE2VjQ4YTE2LjA1LDE2LjA1LDAsMCwwLDE2LDE2aDMyVjk4LjVBMjA3LjkyLDIwNy45MiwwLDAsMCwxNi4wOSwyOTcuNTdDMTIuNjQsNDExLjUsMTA2Ljc2LDUxMC4yMiwyMjAuNzIsNTEyLDMzNy4xMyw1MTMuNzcsNDMyLDQyMCw0MzIsMzA0QTIwNiwyMDYsMCwwLDAsMzk4LjUsMTkwLjkxWk0yMDQuMzcsMzc3LjU1YTguMiw4LjIsMCwwLDEsOC4zMiw4LjA3djIyLjMxYTguMiw4LjIsMCwwLDEtOC4zMiw4LjA3SDEyMS41MmExNi40NiwxNi40NiwwLDAsMS0xNi42MS0xNy42MmMyLjc4LTM1LjIyLDE0LjY3LTU3LjQxLDM4LjQ1LTkxLjM3LDIwLjQyLTI5LjE5LDI3LjEtMzcuMzIsMjcuMS02Mi4zNCwwLTE2LjkyLTEuNzktMjQuMjctMTIuMjEtMjQuMjctOS4zOSwwLTEyLjY5LDcuNC0xMi42OSwyMi42OHY1LjIzYTguMiw4LjIsMCwwLDEtOC4zMyw4LjA3aC0yNC45YTguMiw4LjIsMCwwLDEtOC4zMy04LjA3di00LjA3YzAtMjcuMyw4LjQ4LTYwLjI0LDU2LjQzLTYwLjI0LDQzLDAsNTUuNTcsMjUuODUsNTUuNTcsNjEsMCwzNS41OC0xMi40NCw1MS4yMS0zNC4zNSw4MS4zMS0xMS41NiwxNS0yNC42MSwzNS41Ny0yNi40MSw1MS4yWk0zNDQsMzUyLjMyYzAsMzUuMTYtMTIuMyw2My42OC01Ny4yMyw2My42OEMyNDMuMTksNDE2LDIzMiwzODYuNDgsMjMyLDM1Mi41NVYyNDcuMjJjMC00MC43MywxOS41OC02My4yMiw1Ni4yLTYzLjIyQzMyNSwxODQsMzQ0LDIwNi42NCwzNDQsMjQ1LjNaTTI4Ny44NywyMjEuNzNjLTkuNDEsMC0xMy4yMyw3LjUtMTMuMjMsMjBWMzU3LjY4YzAsMTMuMTEsMy41OSwyMC41OSwxMy4yMywyMC41OXMxMy04LDEzLTIxLjI3VjI0MS4wNkMzMDAuODksMjI5Ljc5LDI5Ny44OCwyMjEuNzMsMjg3Ljg3LDIyMS43M1pcIl1cbn07XG52YXIgZmFTdG9yZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdG9yZScsXG4gIGljb246IFs2MTYsIDUxMiwgW10sIFwiZjU0ZVwiLCBcIk02MDIgMTE4LjZMNTM3LjEgMTVDNTMxLjMgNS43IDUyMSAwIDUxMCAwSDEwNkM5NSAwIDg0LjcgNS43IDc4LjkgMTVMMTQgMTE4LjZjLTMzLjUgNTMuNS0zLjggMTI3LjkgNTguOCAxMzYuNCA0LjUuNiA5LjEuOSAxMy43LjkgMjkuNiAwIDU1LjgtMTMgNzMuOC0zMy4xIDE4IDIwLjEgNDQuMyAzMy4xIDczLjggMzMuMSAyOS42IDAgNTUuOC0xMyA3My44LTMzLjEgMTggMjAuMSA0NC4zIDMzLjEgNzMuOCAzMy4xIDI5LjYgMCA1NS44LTEzIDczLjgtMzMuMSAxOC4xIDIwLjEgNDQuMyAzMy4xIDczLjggMzMuMSA0LjcgMCA5LjItLjMgMTMuNy0uOSA2Mi44LTguNCA5Mi42LTgyLjggNTktMTM2LjR6TTUyOS41IDI4OGMtMTAgMC0xOS45LTEuNS0yOS41LTMuOFYzODRIMTE2di05OS44Yy05LjYgMi4yLTE5LjUgMy44LTI5LjUgMy44LTYgMC0xMi4xLS40LTE4LTEuMi01LjYtLjgtMTEuMS0yLjEtMTYuNC0zLjZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDQ0OGMxNy43IDAgMzItMTQuMyAzMi0zMlYyODMuMmMtNS40IDEuNi0xMC44IDIuOS0xNi40IDMuNi02LjEuOC0xMi4xIDEuMi0xOC4yIDEuMnpcIl1cbn07XG52YXIgZmFTdG9yZUFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdG9yZS1hbHQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1NGZcIiwgXCJNMzIwIDM4NEgxMjhWMjI0SDY0djI1NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmgyNTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0aC02NHYxNjB6bTMxNC42LTI0MS44bC04NS4zLTEyOGMtNi04LjktMTYtMTQuMi0yNi43LTE0LjJIMTE3LjRjLTEwLjcgMC0yMC43IDUuMy0yNi42IDE0LjJsLTg1LjMgMTI4Yy0xNC4yIDIxLjMgMSA0OS44IDI2LjYgNDkuOEg2MDhjMjUuNSAwIDQwLjctMjguNSAyNi42LTQ5Ljh6TTUxMiA0OTZjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyMjRoLTY0djI3MnpcIl1cbn07XG52YXIgZmFTdG9yZUFsdFNsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0b3JlLWFsdC1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTA3MFwiLCBcIk0xNy44OSwxMjMuNjIsNS41MSwxNDIuMmMtMTQuMiwyMS4zLDEsNDkuOCwyNi41OSw0OS44aDc0LjI2Wk01NzYsNDEzLjQyVjIyNEg1MTJWMzY0TDM4NCwyNjVWMjI0SDMzMC45MmwtNDEuNC0zMkg2MDhjMjUuNSwwLDQwLjctMjguNSwyNi41OS00OS44bC04NS4yOS0xMjhBMzIuMTgsMzIuMTgsMCwwLDAsNTIyLjYsMEgxMTcuNDJBMzEuODcsMzEuODcsMCwwLDAsOTAuODEsMTQuMmwtMTAuNjYsMTZMNDUuNDYsMy4zOEExNiwxNiwwLDAsMCwyMyw2LjE5TDMuMzcsMzEuNDZBMTYsMTYsMCwwLDAsNi4xOCw1My45MUw1OTQuNTMsNTA4LjYzQTE2LDE2LDAsMCwwLDYxNyw1MDUuODFsMTkuNjQtMjUuMjZhMTYsMTYsMCwwLDAtMi44MS0yMi40NVpNMzIwLDM4NEgxMjhWMjI0SDY0VjQ4MGEzMiwzMiwwLDAsMCwzMiwzMkgzNTJhMzIsMzIsMCwwLDAsMzItMzJWNDA2LjU5bC02NC00OS40N1pcIl1cbn07XG52YXIgZmFTdG9yZVNsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0b3JlLXNsYXNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlMDcxXCIsIFwiTTEyMS41MSwzODRWMjg0LjJhMTE5LjQzLDExOS40MywwLDAsMS0yOCwzLjgsMTIzLjQ2LDEyMy40NiwwLDAsMS0xNy4xLTEuMiwxMTQuODgsMTE0Ljg4LDAsMCwxLTE1LjU4LTMuNlY0ODBjMCwxNy43LDEzLjU5LDMyLDMwLjQsMzJINTA1Ljc1TDM0OC40MiwzODRabS0yOC0xMjguMDljMjUuMSwwLDQ3LjI5LTEwLjcyLDY0LTI3LjI0TDI0LDEyMC4wNWMtMzAuNTIsNTMuMzktMi40NSwxMjYuNTMsNTYuNDksMTM1QTk1LjY4LDk1LjY4LDAsMCwwLDkzLjQ4LDI1NS45MVpNNjAyLjEzLDQ1OC4wOSw1NDcuMiw0MTMuNDFWMjgzLjJhOTMuNSw5My41LDAsMCwxLTE1LjU3LDMuNiwxMjcuMzEsMTI3LjMxLDAsMCwxLTE3LjI5LDEuMiwxMTQuODksMTE0Ljg5LDAsMCwxLTI4LTMuOHY3OS42OEwzNDguNTIsMjUxLjc3YTg4LjA2LDg4LjA2LDAsMCwwLDI1LjQxLDQuMTRjMjguMTEsMCw1My0xMyw3MC4xMS0zMy4xMSwxNy4xOSwyMC4xMSw0Mi4wOCwzMy4xMSw3MC4xMSwzMy4xMWE5NC4zMSw5NC4zMSwwLDAsMCwxMy0uOTFjNTkuNjYtOC40MSw4OC04Mi44LDU2LjA2LTEzNi40TDUyMS41NSwxNUEzMC4xLDMwLjEsMCwwLDAsNDk1LjgxLDBIMTEyQTMwLjExLDMwLjExLDAsMCwwLDg2LjI3LDE1TDc2Ljg4LDMwLjc4LDQzLjE5LDMuMzhBMTQuNjgsMTQuNjgsMCwwLDAsMjEuODYsNi4xOUwzLjIsMzEuNDVBMTYuNTgsMTYuNTgsMCwwLDAsNS44Nyw1My45MUw1NjQuODEsNTA4LjYzYTE0LjY5LDE0LjY5LDAsMCwwLDIxLjMzLTIuODJsMTguNjYtMjUuMjZBMTYuNTgsMTYuNTgsMCwwLDAsNjAyLjEzLDQ1OC4wOVpcIl1cbn07XG52YXIgZmFTdHJlYW0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RyZWFtJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNTUwXCIsIFwiTTE2IDEyOGg0MTZjOC44NCAwIDE2LTcuMTYgMTYtMTZWNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiAzMiAwIDM5LjE2IDAgNDh2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZ6bTQ4MCA4MEg4MGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDE2YzguODQgMCAxNi03LjE2IDE2LTE2di02NGMwLTguODQtNy4xNi0xNi0xNi0xNnptLTY0IDE3NkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDE2YzguODQgMCAxNi03LjE2IDE2LTE2di02NGMwLTguODQtNy4xNi0xNi0xNi0xNnpcIl1cbn07XG52YXIgZmFTdHJlZXRWaWV3ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0cmVldC12aWV3JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMjFkXCIsIFwiTTM2Ny45IDMyOS43NmMtNC42MiA1LjMtOS43OCAxMC4xLTE1LjkgMTMuNjV2MjIuOTRjNjYuNTIgOS4zNCAxMTIgMjguMDUgMTEyIDQ5LjY1IDAgMzAuOTMtOTMuMTIgNTYtMjA4IDU2UzQ4IDQ0Ni45MyA0OCA0MTZjMC0yMS42IDQ1LjQ4LTQwLjMgMTEyLTQ5LjY1di0yMi45NGMtNi4xMi0zLjU1LTExLjI4LTguMzUtMTUuOS0xMy42NUM1OC44NyAzNDUuMzQgMCAzNzguMDUgMCA0MTZjMCA1My4wMiAxMTQuNjIgOTYgMjU2IDk2czI1Ni00Mi45OCAyNTYtOTZjMC0zNy45NS01OC44Ny03MC42Ni0xNDQuMS04Ni4yNHpNMjU2IDEyOGMzNS4zNSAwIDY0LTI4LjY1IDY0LTY0UzI5MS4zNSAwIDI1NiAwcy02NCAyOC42NS02NCA2NCAyOC42NSA2NCA2NCA2NHptLTY0IDE5MnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDhoLTExLjhjLTExLjA3IDUuMDMtMjMuMjYgOC0zNi4yIDhzLTI1LjEzLTIuOTctMzYuMi04SDIwOGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyelwiXVxufTtcbnZhciBmYVN0cmlrZXRocm91Z2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RyaWtldGhyb3VnaCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjBjY1wiLCBcIk00OTYgMjI0SDI5My45bC04Ny4xNy0yNi44M0E0My41NSA0My41NSAwIDAgMSAyMTkuNTUgMTEyaDY2Ljc5QTQ5Ljg5IDQ5Ljg5IDAgMCAxIDMzMSAxMzkuNThhMTYgMTYgMCAwIDAgMjEuNDYgNy4xNWw0Mi45NC0yMS40N2ExNiAxNiAwIDAgMCA3LjE2LTIxLjQ2bC0uNTMtMUExMjggMTI4IDAgMCAwIDI4Ny41MSAzMmgtNjhhMTIzLjY4IDEyMy42OCAwIDAgMC0xMjMgMTM1LjY0YzIgMjAuODkgMTAuMSAzOS44MyAyMS43OCA1Ni4zNkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0ODBhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tMTgwLjI0IDk2QTQzIDQzIDAgMCAxIDMzNiAzNTYuNDUgNDMuNTkgNDMuNTkgMCAwIDEgMjkyLjQ1IDQwMGgtNjYuNzlBNDkuODkgNDkuODkgMCAwIDEgMTgxIDM3Mi40MmExNiAxNiAwIDAgMC0yMS40Ni03LjE1bC00Mi45NCAyMS40N2ExNiAxNiAwIDAgMC03LjE2IDIxLjQ2bC41MyAxQTEyOCAxMjggMCAwIDAgMjI0LjQ5IDQ4MGg2OGExMjMuNjggMTIzLjY4IDAgMCAwIDEyMy0xMzUuNjQgMTE0LjI1IDExNC4yNSAwIDAgMC01LjM0LTI0LjM2elwiXVxufTtcbnZhciBmYVN0cm9vcHdhZmVsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0cm9vcHdhZmVsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNTUxXCIsIFwiTTE4OC4xMiAyMTAuNzRMMTQyLjg2IDI1Nmw0NS4yNSA0NS4yNUwyMzMuMzcgMjU2bC00NS4yNS00NS4yNnptMTEzLjEzLTIyLjYyTDI1NiAxNDIuODZsLTQ1LjI1IDQ1LjI1TDI1NiAyMzMuMzdsNDUuMjUtNDUuMjV6bS05MC41IDEzNS43NkwyNTYgMzY5LjE0bDQ1LjI2LTQ1LjI2TDI1NiAyNzguNjNsLTQ1LjI1IDQ1LjI1ek0yNTYgMEMxMTQuNjIgMCAwIDExNC42MiAwIDI1NnMxMTQuNjIgMjU2IDI1NiAyNTYgMjU2LTExNC42MiAyNTYtMjU2UzM5Ny4zOCAwIDI1NiAwem0xODYuNjggMjk1LjZsLTExLjMxIDExLjMxYy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBsLTI4LjI5LTI4LjI5LTQ1LjI1IDQ1LjI1IDMzLjk0IDMzLjk0IDE2Ljk3LTE2Ljk3YzMuMTItMy4xMiA4LjE5LTMuMTIgMTEuMzEgMGwxMS4zMSAxMS4zMWMzLjEyIDMuMTIgMy4xMiA4LjE5IDAgMTEuMzFsLTE2Ljk3IDE2Ljk3IDE2Ljk3IDE2Ljk3YzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMWwtMTEuMzEgMTEuMzFjLTMuMTIgMy4xMi04LjE5IDMuMTItMTEuMzEgMGwtMTYuOTctMTYuOTctMTYuOTcgMTYuOTdjLTMuMTIgMy4xMi04LjE5IDMuMTItMTEuMzEgMGwtMTEuMzEtMTEuMzFjLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwxNi45Ny0xNi45Ny0zMy45NC0zMy45NC00NS4yNiA0NS4yNiAyOC4yOSAyOC4yOWMzLjEyIDMuMTIgMy4xMiA4LjE5IDAgMTEuMzFsLTExLjMxIDExLjMxYy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBMMjU2IDQxNC4zOWwtMjguMjkgMjguMjljLTMuMTIgMy4xMi04LjE5IDMuMTItMTEuMzEgMGwtMTEuMzEtMTEuMzFjLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwyOC4yOS0yOC4yOS00NS4yNS00NS4yNi0zMy45NCAzMy45NCAxNi45NyAxNi45N2MzLjEyIDMuMTIgMy4xMiA4LjE5IDAgMTEuMzFsLTExLjMxIDExLjMxYy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBsLTE2Ljk3LTE2Ljk3LTE2Ljk3IDE2Ljk3Yy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBsLTExLjMxLTExLjMxYy0zLjEyLTMuMTItMy4xMi04LjE5IDAtMTEuMzFsMTYuOTctMTYuOTctMTYuOTctMTYuOTdjLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwxMS4zMS0xMS4zMWMzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBsMTYuOTcgMTYuOTcgMzMuOTQtMzMuOTQtNDUuMjUtNDUuMjUtMjguMjkgMjguMjljLTMuMTIgMy4xMi04LjE5IDMuMTItMTEuMzEgMEw2OS4zMiAyOTUuNmMtMy4xMi0zLjEyLTMuMTItOC4xOSAwLTExLjMxTDk3LjYxIDI1NmwtMjguMjktMjguMjljLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwxMS4zMS0xMS4zMWMzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBsMjguMjkgMjguMjkgNDUuMjUtNDUuMjYtMzMuOTQtMzMuOTQtMTYuOTcgMTYuOTdjLTMuMTIgMy4xMi04LjE5IDMuMTItMTEuMzEgMGwtMTEuMzEtMTEuMzFjLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwxNi45Ny0xNi45Ny0xNi45Ny0xNi45N2MtMy4xMi0zLjEyLTMuMTItOC4xOSAwLTExLjMxbDExLjMxLTExLjMxYzMuMTItMy4xMiA4LjE5LTMuMTIgMTEuMzEgMGwxNi45NyAxNi45NyAxNi45Ny0xNi45N2MzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBsMTEuMzEgMTEuMzFjMy4xMiAzLjEyIDMuMTIgOC4xOSAwIDExLjMxbC0xNi45NyAxNi45NyAzMy45NCAzMy45NCA0NS4yNi00NS4yNS0yOC4yOS0yOC4yOWMtMy4xMi0zLjEyLTMuMTItOC4xOSAwLTExLjMxbDExLjMxLTExLjMxYzMuMTItMy4xMiA4LjE5LTMuMTIgMTEuMzEgMEwyNTYgOTcuNjFsMjguMjktMjguMjljMy4xMi0zLjEyIDguMTktMy4xMiAxMS4zMSAwbDExLjMxIDExLjMxYzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMWwtMjguMjkgMjguMjkgNDUuMjYgNDUuMjUgMzMuOTQtMzMuOTQtMTYuOTctMTYuOTdjLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwxMS4zMS0xMS4zMWMzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBsMTYuOTcgMTYuOTcgMTYuOTctMTYuOTdjMy4xMi0zLjEyIDguMTktMy4xMiAxMS4zMSAwbDExLjMxIDExLjMxYzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMWwtMTYuOTcgMTYuOTcgMTYuOTcgMTYuOTdjMy4xMiAzLjEyIDMuMTIgOC4xOSAwIDExLjMxbC0xMS4zMSAxMS4zMWMtMy4xMiAzLjEyLTguMTkgMy4xMi0xMS4zMSAwbC0xNi45Ny0xNi45Ny0zMy45NCAzMy45NCA0NS4yNSA0NS4yNiAyOC4yOS0yOC4yOWMzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBsMTEuMzEgMTEuMzFjMy4xMiAzLjEyIDMuMTIgOC4xOSAwIDExLjMxTDQxNC4zOSAyNTZsMjguMjkgMjguMjhhOC4wMTUgOC4wMTUgMCAwIDEgMCAxMS4zMnpNMjc4LjYzIDI1Nmw0NS4yNiA0NS4yNUwzNjkuMTQgMjU2bC00NS4yNS00NS4yNkwyNzguNjMgMjU2elwiXVxufTtcbnZhciBmYVN1YnNjcmlwdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdWJzY3JpcHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxMmNcIiwgXCJNNDk2IDQ0OGgtMTZWMzA0YTE2IDE2IDAgMCAwLTE2LTE2aC00OGExNiAxNiAwIDAgMC0xNC4yOSA4LjgzbC0xNiAzMkExNiAxNiAwIDAgMCA0MDAgMzUyaDE2djk2aC0xNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg5NmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6TTMzNiA2NGgtNjdhMTYgMTYgMCAwIDAtMTMuMTQgNi44N2wtNzkuOSAxMTUtNzkuOS0xMTVBMTYgMTYgMCAwIDAgODMgNjRIMTZBMTYgMTYgMCAwIDAgMCA4MHY0OGExNiAxNiAwIDAgMCAxNiAxNmgzMy40OGw3Ny44MSAxMTItNzcuODEgMTEySDE2YTE2IDE2IDAgMCAwLTE2IDE2djQ4YTE2IDE2IDAgMCAwIDE2IDE2aDY3YTE2IDE2IDAgMCAwIDEzLjE0LTYuODdsNzkuOS0xMTUgNzkuOSAxMTVBMTYgMTYgMCAwIDAgMjY5IDQ0OGg2N2ExNiAxNiAwIDAgMCAxNi0xNnYtNDhhMTYgMTYgMCAwIDAtMTYtMTZoLTMzLjQ4bC03Ny44MS0xMTIgNzcuODEtMTEySDMzNmExNiAxNiAwIDAgMCAxNi0xNlY4MGExNiAxNiAwIDAgMC0xNi0xNnpcIl1cbn07XG52YXIgZmFTdWJ3YXkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3Vid2F5JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMjM5XCIsIFwiTTQ0OCA5NnYyNTZjMCA1MS44MTUtNjEuNjI0IDk2LTEzMC4wMjIgOTZsNjIuOTggNDkuNzIxQzM4Ni45MDUgNTAyLjQxNyAzODMuNTYyIDUxMiAzNzYgNTEySDcyYy03LjU3OCAwLTEwLjg5Mi05LjU5NC00Ljk1Ny0xNC4yNzlMMTMwLjAyMiA0NDhDNjEuODIgNDQ4IDAgNDAzLjk1NCAwIDM1MlY5NkMwIDQyLjk4MSA2NCAwIDEyOCAwaDE5MmM2NSAwIDEyOCA0Mi45ODEgMTI4IDk2ek0yMDAgMjMyVjEyMGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRINzJjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxMTJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwNGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR6bTIwMCAwVjEyMGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjcyYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTEyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0em0tNDggNTZjLTI2LjUxIDAtNDggMjEuNDktNDggNDhzMjEuNDkgNDggNDggNDggNDgtMjEuNDkgNDgtNDgtMjEuNDktNDgtNDgtNDh6bS0yNTYgMGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OCA0OC0yMS40OSA0OC00OC0yMS40OS00OC00OC00OHpcIl1cbn07XG52YXIgZmFTdWl0Y2FzZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdWl0Y2FzZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjBmMlwiLCBcIk0xMjggNDgwaDI1NlY4MGMwLTI2LjUtMjEuNS00OC00OC00OEgxNzZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djQwMHptNjQtMzg0aDEyOHYzMkgxOTJWOTZ6bTMyMCA4MHYyNTZjMCAyNi41LTIxLjUgNDgtNDggNDhoLTQ4VjEyOGg0OGMyNi41IDAgNDggMjEuNSA0OCA0OHpNOTYgNDgwSDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxNzZjMC0yNi41IDIxLjUtNDggNDgtNDhoNDh2MzUyelwiXVxufTtcbnZhciBmYVN1aXRjYXNlUm9sbGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdWl0Y2FzZS1yb2xsaW5nJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNWMxXCIsIFwiTTMzNiAxNjBINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2aDEyOHYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZoMTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYyMDhjMC0yNi41MS0yMS40OS00OC00OC00OHptLTE2IDIxNmMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDI0MGM0LjQyIDAgOCAzLjU4IDggOHYxNnptMC05NmMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDI0MGM0LjQyIDAgOCAzLjU4IDggOHYxNnpNMTQ0IDQ4aDk2djgwaDQ4VjQ4YzAtMjYuNTEtMjEuNDktNDgtNDgtNDhoLTk2Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djgwaDQ4VjQ4elwiXVxufTtcbnZhciBmYVN1biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdW4nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxODVcIiwgXCJNMjU2IDE2MGMtNTIuOSAwLTk2IDQzLjEtOTYgOTZzNDMuMSA5NiA5NiA5NiA5Ni00My4xIDk2LTk2LTQzLjEtOTYtOTYtOTZ6bTI0Ni40IDgwLjVsLTk0LjctNDcuMyAzMy41LTEwMC40YzQuNS0xMy42LTguNC0yNi41LTIxLjktMjEuOWwtMTAwLjQgMzMuNS00Ny40LTk0LjhjLTYuNC0xMi44LTI0LjYtMTIuOC0zMSAwbC00Ny4zIDk0LjdMOTIuNyA3MC44Yy0xMy42LTQuNS0yNi41IDguNC0yMS45IDIxLjlsMzMuNSAxMDAuNC05NC43IDQ3LjRjLTEyLjggNi40LTEyLjggMjQuNiAwIDMxbDk0LjcgNDcuMy0zMy41IDEwMC41Yy00LjUgMTMuNiA4LjQgMjYuNSAyMS45IDIxLjlsMTAwLjQtMzMuNSA0Ny4zIDk0LjdjNi40IDEyLjggMjQuNiAxMi44IDMxIDBsNDcuMy05NC43IDEwMC40IDMzLjVjMTMuNiA0LjUgMjYuNS04LjQgMjEuOS0yMS45bC0zMy41LTEwMC40IDk0LjctNDcuM2MxMy02LjUgMTMtMjQuNy4yLTMxLjF6bS0xNTUuOSAxMDZjLTQ5LjkgNDkuOS0xMzEuMSA0OS45LTE4MSAwLTQ5LjktNDkuOS00OS45LTEzMS4xIDAtMTgxIDQ5LjktNDkuOSAxMzEuMS00OS45IDE4MSAwIDQ5LjkgNDkuOSA0OS45IDEzMS4xIDAgMTgxelwiXVxufTtcbnZhciBmYVN1cGVyc2NyaXB0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N1cGVyc2NyaXB0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMTJiXCIsIFwiTTQ5NiAxNjBoLTE2VjE2YTE2IDE2IDAgMCAwLTE2LTE2aC00OGExNiAxNiAwIDAgMC0xNC4yOSA4LjgzbC0xNiAzMkExNiAxNiAwIDAgMCA0MDAgNjRoMTZ2OTZoLTE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDk2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNMzM2IDY0aC02N2ExNiAxNiAwIDAgMC0xMy4xNCA2Ljg3bC03OS45IDExNS03OS45LTExNUExNiAxNiAwIDAgMCA4MyA2NEgxNkExNiAxNiAwIDAgMCAwIDgwdjQ4YTE2IDE2IDAgMCAwIDE2IDE2aDMzLjQ4bDc3LjgxIDExMi03Ny44MSAxMTJIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2NDhhMTYgMTYgMCAwIDAgMTYgMTZoNjdhMTYgMTYgMCAwIDAgMTMuMTQtNi44N2w3OS45LTExNSA3OS45IDExNUExNiAxNiAwIDAgMCAyNjkgNDQ4aDY3YTE2IDE2IDAgMCAwIDE2LTE2di00OGExNiAxNiAwIDAgMC0xNi0xNmgtMzMuNDhsLTc3LjgxLTExMiA3Ny44MS0xMTJIMzM2YTE2IDE2IDAgMCAwIDE2LTE2VjgwYTE2IDE2IDAgMCAwLTE2LTE2elwiXVxufTtcbnZhciBmYVN1cnByaXNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N1cnByaXNlJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmNWMyXCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTEzNiAyMDhjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzJ6bTExMiAyMDhjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjQgNjQgMjguNyA2NCA2NC0yOC43IDY0LTY0IDY0em04MC0xNzZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYVN3YXRjaGJvb2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3dhdGNoYm9vaycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjVjM1wiLCBcIk00MzQuNjYsMTY3LjcxaDBMMzQ0LjUsNzcuMzZhMzEuODMsMzEuODMsMCwwLDAtNDUtLjA3aDBsLS4wNy4wN0wyMjQsMTUyLjg4VjQyNEw0MzQuNjYsMjEyLjlBMzIsMzIsMCwwLDAsNDM0LjY2LDE2Ny43MVpNNDgwLDMyMEgzNzMuMDlMMTg2LjY4LDUwNi41MWMtMi4wNiwyLjA3LTQuNSwzLjU4LTYuNjgsNS40OUg0ODBhMzIsMzIsMCwwLDAsMzItMzJWMzUyQTMyLDMyLDAsMCwwLDQ4MCwzMjBaTTE5MiwzMkEzMiwzMiwwLDAsMCwxNjAsMEgzMkEzMiwzMiwwLDAsMCwwLDMyVjQxNmE5Niw5NiwwLDAsMCwxOTIsMFpNOTYsNDQwYTI0LDI0LDAsMSwxLDI0LTI0QTI0LDI0LDAsMCwxLDk2LDQ0MFptMzItMTg0SDY0VjE5Mmg2NFptMC0xMjhINjRWNjRoNjRaXCJdXG59O1xudmFyIGZhU3dpbW1lciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzd2ltbWVyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNWM0XCIsIFwiTTE4OS42MSAzMTAuNThjMy41NCAzLjI2IDE1LjI3IDkuNDIgMzQuMzkgOS40MnMzMC44Ni02LjE2IDM0LjM5LTkuNDJjMTYuMDItMTQuNzcgMzQuNS0yMi41OCA1My40Ni0yMi41OGgxNi4zYzE4Ljk2IDAgMzcuNDUgNy44MSA1My40NiAyMi41OCAzLjU0IDMuMjYgMTUuMjcgOS40MiAzNC4zOSA5LjQyczMwLjg2LTYuMTYgMzQuMzktOS40MmMxNC44Ni0xMy43MSAzMS44OC0yMS4xMiA0OS4zOS0yMi4xNmwtMTEyLjg0LTgwLjYgMTgtMTIuODZjMy42NC0yLjU4IDguMjgtMy41MiAxMi42Mi0yLjYxbDEwMC4zNSAyMS41M2MyNS45MSA1LjUzIDUxLjQ0LTEwLjk3IDU3LTM2Ljg4IDUuNTUtMjUuOTItMTAuOTUtNTEuNDQtMzYuODgtNTdMNDM3LjY4IDk4LjQ3Yy0zMC43My02LjU4LTYzLjAyLjEyLTg4LjU2IDE4LjM4bC04MC4wMiA1Ny4xN2MtMTAuMzggNy4zOS0xOS4zNiAxNi40NC0yNi43MiAyNi45NEwxNzMuNzUgMjk5YzUuNDcgMy4yMyAxMC44MiA2LjkzIDE1Ljg2IDExLjU4ek02MjQgMzUyaC0xNmMtMjYuMDQgMC00NS44LTguNDItNTYuMDktMTcuOS04LjktOC4yMS0xOS42Ni0xNC4xLTMxLjc3LTE0LjFoLTE2LjNjLTEyLjExIDAtMjIuODcgNS44OS0zMS43NyAxNC4xQzQ2MS44IDM0My41OCA0NDIuMDQgMzUyIDQxNiAzNTJzLTQ1LjgtOC40Mi01Ni4wOS0xNy45Yy04LjktOC4yMS0xOS42Ni0xNC4xLTMxLjc3LTE0LjFoLTE2LjNjLTEyLjExIDAtMjIuODcgNS44OS0zMS43NyAxNC4xQzI2OS44IDM0My41OCAyNTAuMDQgMzUyIDIyNCAzNTJzLTQ1LjgtOC40Mi01Ni4wOS0xNy45Yy04LjktOC4yMS0xOS42Ni0xNC4xLTMxLjc3LTE0LjFoLTE2LjNjLTEyLjExIDAtMjIuODcgNS44OS0zMS43NyAxNC4xQzc3LjggMzQzLjU4IDU4LjA0IDM1MiAzMiAzNTJIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzM4LjYyIDAgNzIuNzItMTIuMTkgOTYtMzEuODQgMjMuMjggMTkuNjYgNTcuMzggMzEuODQgOTYgMzEuODRzNzIuNzItMTIuMTkgOTYtMzEuODRjMjMuMjggMTkuNjYgNTcuMzggMzEuODQgOTYgMzEuODRzNzIuNzItMTIuMTkgOTYtMzEuODRjMjMuMjggMTkuNjYgNTcuMzggMzEuODQgOTYgMzEuODRoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2em0tNTEyLTk2YzQ0LjE4IDAgODAtMzUuODIgODAtODBzLTM1LjgyLTgwLTgwLTgwLTgwIDM1LjgyLTgwIDgwIDM1LjgyIDgwIDgwIDgwelwiXVxufTtcbnZhciBmYVN3aW1taW5nUG9vbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzd2ltbWluZy1wb29sJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNWM1XCIsIFwiTTYyNCA0MTZoLTE2Yy0yNi4wNCAwLTQ1LjgtOC40Mi01Ni4wOS0xNy45LTguOS04LjIxLTE5LjY2LTE0LjEtMzEuNzctMTQuMWgtMTYuM2MtMTIuMTEgMC0yMi44NyA1Ljg5LTMxLjc3IDE0LjFDNDYxLjggNDA3LjU4IDQ0Mi4wNCA0MTYgNDE2IDQxNnMtNDUuOC04LjQyLTU2LjA5LTE3LjljLTguOS04LjIxLTE5LjY2LTE0LjEtMzEuNzctMTQuMWgtMTYuM2MtMTIuMTEgMC0yMi44NyA1Ljg5LTMxLjc3IDE0LjFDMjY5LjggNDA3LjU4IDI1MC4wNCA0MTYgMjI0IDQxNnMtNDUuOC04LjQyLTU2LjA5LTE3LjljLTguOS04LjIxLTE5LjY2LTE0LjEtMzEuNzctMTQuMWgtMTYuM2MtMTIuMTEgMC0yMi44NyA1Ljg5LTMxLjc3IDE0LjFDNzcuOCA0MDcuNTggNTguMDQgNDE2IDMyIDQxNkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjMzguNjIgMCA3Mi43Mi0xMi4xOSA5Ni0zMS44NCAyMy4yOCAxOS42NiA1Ny4zOCAzMS44NCA5NiAzMS44NHM3Mi43Mi0xMi4xOSA5Ni0zMS44NGMyMy4yOCAxOS42NiA1Ny4zOCAzMS44NCA5NiAzMS44NHM3Mi43Mi0xMi4xOSA5Ni0zMS44NGMyMy4yOCAxOS42NiA1Ny4zOCAzMS44NCA5NiAzMS44NGgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bS00MDAtMzJ2LTk2aDE5MnY5NmMxOS4xMiAwIDMwLjg2LTYuMTYgMzQuMzktOS40MiA5LjE3LTguNDYgMTkuMi0xNC4zNCAyOS42MS0xOC4wN1YxMjhjMC0xNy42NCAxNC4zNi0zMiAzMi0zMnMzMiAxNC4zNiAzMiAzMnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC01Mi45NC00My4wNi05Ni05Ni05NnMtOTYgNDMuMDYtOTYgOTZ2OTZIMjI0di05NmMwLTE3LjY0IDE0LjM2LTMyIDMyLTMyczMyIDE0LjM2IDMyIDMydjE2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTUyLjk0LTQzLjA2LTk2LTk2LTk2cy05NiA0My4wNi05NiA5NnYyMjguNWMxMC40MSAzLjczIDIwLjQ0IDkuNjIgMjkuNjEgMTguMDcgMy41MyAzLjI3IDE1LjI3IDkuNDMgMzQuMzkgOS40M3pcIl1cbn07XG52YXIgZmFTeW5hZ29ndWUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3luYWdvZ3VlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNjliXCIsIFwiTTcwIDE5Ni41MUw2LjY3IDI2OC4yOUEyNi42NDMgMjYuNjQzIDAgMCAwIDAgMjg1LjkzVjUxMmgxMjhWMjM5LjU4bC0zOC00My4wN2MtNS4zMS02LjAxLTE0LjY5LTYuMDEtMjAgMHptNTYzLjMzIDcxLjc4TDU3MCAxOTYuNTFjLTUuMzEtNi4wMi0xNC42OS02LjAyLTIwIDBsLTM4IDQzLjA3VjUxMmgxMjhWMjg1LjkzYzAtNi41LTIuMzctMTIuNzctNi42Ny0xNy42NHpNMzM5Ljk5IDcuMDFjLTExLjY5LTkuMzUtMjguMjktOS4zNS0zOS45OCAwbC0xMjggMTAyLjRBMzIuMDA1IDMyLjAwNSAwIDAgMCAxNjAgMTM0LjRWNTEyaDk2di05Mi41N2MwLTMxLjg4IDIxLjc4LTYxLjQzIDUzLjI1LTY2LjU1QzM0OS4zNCAzNDYuMzUgMzg0IDM3Ny4xMyAzODQgNDE2djk2aDk2VjEzNC40YzAtOS43Mi00LjQyLTE4LjkyLTEyLjAxLTI0Ljk5bC0xMjgtMTAyLjR6bTUyLjA3IDIxNS41NWMxLjk4IDMuMTUtLjI5IDcuMjQtNCA3LjI0aC0zOC45NEwzMjQgMjY5Ljc5Yy0xLjg1IDIuOTUtNi4xNSAyLjk1LTggMGwtMjUuMTItMzkuOThoLTM4Ljk0Yy0zLjcyIDAtNS45OC00LjA5LTQtNy4yNGwxOS4yLTMwLjU2LTE5LjItMzAuNTZjLTEuOTgtMy4xNS4yOS03LjI0IDQtNy4yNGgzOC45NGwyNS4xMi00MGMxLjg1LTIuOTUgNi4xNS0yLjk1IDggMGwyNS4xMiAzOS45OGgzOC45NWMzLjcxIDAgNS45OCA0LjA5IDQgNy4yNEwzNzIuODcgMTkybDE5LjE5IDMwLjU2elwiXVxufTtcbnZhciBmYVN5bmMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3luYycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAyMVwiLCBcIk00NDAuNjUgMTIuNTdsNCA4Mi43N0EyNDcuMTYgMjQ3LjE2IDAgMCAwIDI1NS44MyA4QzEzNC43MyA4IDMzLjkxIDk0LjkyIDEyLjI5IDIwOS44MkExMiAxMiAwIDAgMCAyNC4wOSAyMjRoNDkuMDVhMTIgMTIgMCAwIDAgMTEuNjctOS4yNiAxNzUuOTEgMTc1LjkxIDAgMCAxIDMxNy01Ni45NGwtMTAxLjQ2LTQuODZhMTIgMTIgMCAwIDAtMTIuNTcgMTJ2NDcuNDFhMTIgMTIgMCAwIDAgMTIgMTJINTAwYTEyIDEyIDAgMCAwIDEyLTEyVjEyYTEyIDEyIDAgMCAwLTEyLTEyaC00Ny4zN2ExMiAxMiAwIDAgMC0xMS45OCAxMi41N3pNMjU1LjgzIDQzMmExNzUuNjEgMTc1LjYxIDAgMCAxLTE0Ni03Ny44bDEwMS44IDQuODdhMTIgMTIgMCAwIDAgMTIuNTctMTJ2LTQ3LjRhMTIgMTIgMCAwIDAtMTItMTJIMTJhMTIgMTIgMCAwIDAtMTIgMTJWNTAwYTEyIDEyIDAgMCAwIDEyIDEyaDQ3LjM1YTEyIDEyIDAgMCAwIDEyLTEyLjZsLTQuMTUtODIuNTdBMjQ3LjE3IDI0Ny4xNyAwIDAgMCAyNTUuODMgNTA0YzEyMS4xMSAwIDIyMS45My04Ni45MiAyNDMuNTUtMjAxLjgyYTEyIDEyIDAgMCAwLTExLjgtMTQuMThoLTQ5LjA1YTEyIDEyIDAgMCAwLTExLjY3IDkuMjZBMTc1Ljg2IDE3NS44NiAwIDAgMSAyNTUuODMgNDMyelwiXVxufTtcbnZhciBmYVN5bmNBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3luYy1hbHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyZjFcIiwgXCJNMzcwLjcyIDEzMy4yOEMzMzkuNDU4IDEwNC4wMDggMjk4Ljg4OCA4Ny45NjIgMjU1Ljg0OCA4OGMtNzcuNDU4LjA2OC0xNDQuMzI4IDUzLjE3OC0xNjIuNzkxIDEyNi44NS0xLjM0NCA1LjM2My02LjEyMiA5LjE1LTExLjY1MSA5LjE1SDI0LjEwM2MtNy40OTggMC0xMy4xOTQtNi44MDctMTEuODA3LTE0LjE3NkMzMy45MzMgOTQuOTI0IDEzNC44MTMgOCAyNTYgOGM2Ni40NDggMCAxMjYuNzkxIDI2LjEzNiAxNzEuMzE1IDY4LjY4NUw0NjMuMDMgNDAuOTdDNDc4LjE0OSAyNS44NTEgNTA0IDM2LjU1OSA1MDQgNTcuOTQxVjE5MmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMzQ1Ljk0MWMtMjEuMzgyIDAtMzIuMDktMjUuODUxLTE2Ljk3MS00MC45NzFsNDEuNzUtNDEuNzQ5ek0zMiAyOTZoMTM0LjA1OWMyMS4zODIgMCAzMi4wOSAyNS44NTEgMTYuOTcxIDQwLjk3MWwtNDEuNzUgNDEuNzVjMzEuMjYyIDI5LjI3MyA3MS44MzUgNDUuMzE5IDExNC44NzYgNDUuMjggNzcuNDE4LS4wNyAxNDQuMzE1LTUzLjE0NCAxNjIuNzg3LTEyNi44NDkgMS4zNDQtNS4zNjMgNi4xMjItOS4xNSAxMS42NTEtOS4xNWg1Ny4zMDRjNy40OTggMCAxMy4xOTQgNi44MDcgMTEuODA3IDE0LjE3NkM0NzguMDY3IDQxNy4wNzYgMzc3LjE4NyA1MDQgMjU2IDUwNGMtNjYuNDQ4IDAtMTI2Ljc5MS0yNi4xMzYtMTcxLjMxNS02OC42ODVMNDguOTcgNDcxLjAzQzMzLjg1MSA0ODYuMTQ5IDggNDc1LjQ0MSA4IDQ1NC4wNTlWMzIwYzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNHpcIl1cbn07XG52YXIgZmFTeXJpbmdlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N5cmluZ2UnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY0OGVcIiwgXCJNMjAxLjUgMTc0LjhsNTUuNyA1NS44YzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTExLjMgMTEuM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMGwtNTUuNy01NS44LTQ1LjMgNDUuMyA1NS44IDU1LjhjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM2wtMTEuMyAxMS4zYy0zLjEgMy4xLTguMiAzLjEtMTEuMyAwTDExMSAyNjUuMmwtMjYuNCAyNi40Yy0xNy4zIDE3LjMtMjUuNiA0MS4xLTIzIDY1LjRsNy4xIDYzLjZMMi4zIDQ4N2MtMy4xIDMuMS0zLjEgOC4yIDAgMTEuM2wxMS4zIDExLjNjMy4xIDMuMSA4LjIgMy4xIDExLjMgMGw2Ni4zLTY2LjMgNjMuNiA3LjFjMjMuOSAyLjYgNDcuOS01LjQgNjUuNC0yM2wxODEuOS0xODEuOS0xMzUuNy0xMzUuNy02NC45IDY1em0zMDguMi05My4zTDQzMC41IDIuM2MtMy4xLTMuMS04LjItMy4xLTExLjMgMGwtMTEuMyAxMS4zYy0zLjEgMy4xLTMuMSA4LjIgMCAxMS4zbDI4LjMgMjguMy00NS4zIDQ1LjMtNTYuNi01Ni42LTE3LTE3Yy0zLjEtMy4xLTguMi0zLjEtMTEuMyAwbC0zMy45IDMzLjljLTMuMSAzLjEtMy4xIDguMiAwIDExLjNsMTcgMTdMNDI0LjggMjIzbDE3IDE3YzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsMzMuOS0zNGMzLjEtMy4xIDMuMS04LjIgMC0xMS4zbC03My41LTczLjUgNDUuMy00NS4zIDI4LjMgMjguM2MzLjEgMy4xIDguMiAzLjEgMTEuMyAwbDExLjMtMTEuM2MzLjEtMy4yIDMuMS04LjIgMC0xMS40elwiXVxufTtcbnZhciBmYVRhYmxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RhYmxlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMGNlXCIsIFwiTTQ2NCAzMkg0OEMyMS40OSAzMiAwIDUzLjQ5IDAgODB2MzUyYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWODBjMC0yNi41MS0yMS40OS00OC00OC00OHpNMjI0IDQxNkg2NHYtOTZoMTYwdjk2em0wLTE2MEg2NHYtOTZoMTYwdjk2em0yMjQgMTYwSDI4OHYtOTZoMTYwdjk2em0wLTE2MEgyODh2LTk2aDE2MHY5NnpcIl1cbn07XG52YXIgZmFUYWJsZVRlbm5pcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0YWJsZS10ZW5uaXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY0NWRcIiwgXCJNNDk2LjIgMjk2LjVDNTI3LjcgMjE4LjcgNTEyIDEyNi4yIDQ0OSA2My4xIDM2NS4xLTIxIDIyOS0yMSAxNDUuMSA2My4xbC01NiA1Ni4xIDIxMS41IDIxMS41YzQ2LjEtNjIuMSAxMzEuNS03Ny40IDE5NS42LTM0LjJ6bS0yMTcuOSA3OS43TDU3LjkgMTU1LjljLTI3LjMgNDUuMy0yMS43IDEwNSAxNy4zIDE0NC4xbDM0LjUgMzQuNkw2LjcgNDI0Yy04LjYgNy41LTkuMSAyMC43LTEgMjguOGw1My40IDUzLjVjOCA4LjEgMjEuMiA3LjYgMjguNy0xTDE3Ny4xIDQwMmwzNS43IDM1LjdjMTkuNyAxOS43IDQ0LjYgMzAuNSA3MC4zIDMzLjMtNy4xLTE3LTExLTM1LjYtMTEtNTUuMS0uMS0xMy44IDIuNS0yNyA2LjItMzkuN3pNNDE2IDMyMGMtNTMgMC05NiA0My05NiA5NnM0MyA5NiA5NiA5NiA5Ni00MyA5Ni05Ni00My05Ni05Ni05NnpcIl1cbn07XG52YXIgZmFUYWJsZXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGFibGV0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMTBhXCIsIFwiTTQwMCAwSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yMjQgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIl1cbn07XG52YXIgZmFUYWJsZXRBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGFibGV0LWFsdCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjNmYVwiLCBcIk00MDAgMEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OHpNMjI0IDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTE3Ni0xMDhjMCA2LjYtNS40IDEyLTEyIDEySDYwYy02LjYgMC0xMi01LjQtMTItMTJWNjBjMC02LjYgNS40LTEyIDEyLTEyaDMyOGM2LjYgMCAxMiA1LjQgMTIgMTJ2MzEyelwiXVxufTtcbnZhciBmYVRhYmxldHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGFibGV0cycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjQ5MFwiLCBcIk0xNjAgMTkyQzc4LjkgMTkyIDEyLjUgMjUwLjUuMSAzMjYuN2MtLjggNC44IDMuMyA5LjMgOC4zIDkuM2gzMDMuM2M1IDAgOS4xLTQuNSA4LjMtOS4zQzMwNy41IDI1MC41IDI0MS4xIDE5MiAxNjAgMTkyem0xNTEuNiAxNzZIOC40Yy01IDAtOS4xIDQuNS04LjMgOS4zQzEyLjUgNDUzLjUgNzguOSA1MTIgMTYwIDUxMnMxNDcuNS01OC41IDE1OS45LTEzNC43Yy44LTQuOC0zLjMtOS4zLTguMy05LjN6TTU5My40IDQ2LjZjLTU2LjUtNTYuNS0xNDQuMi02MS40LTIwNi45LTE2LTQgMi45LTQuMyA4LjktLjggMTIuM0w1OTcgMjU0LjNjMy41IDMuNSA5LjUgMy4yIDEyLjMtLjggNDUuNS02Mi43IDQwLjYtMTUwLjQtMTUuOS0yMDYuOXpNMzYzIDY1LjdjLTMuNS0zLjUtOS41LTMuMi0xMi4zLjgtNDUuNCA2Mi43LTQwLjUgMTUwLjQgMTUuOSAyMDYuOSA1Ni41IDU2LjUgMTQ0LjIgNjEuNCAyMDYuOSAxNS45IDQtMi45IDQuMy04LjkuOC0xMi4zTDM2MyA2NS43elwiXVxufTtcbnZhciBmYVRhY2hvbWV0ZXJBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGFjaG9tZXRlci1hbHQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYzZmRcIiwgXCJNMjg4IDMyQzEyOC45NCAzMiAwIDE2MC45NCAwIDMyMGMwIDUyLjggMTQuMjUgMTAyLjI2IDM5LjA2IDE0NC44IDUuNjEgOS42MiAxNi4zIDE1LjIgMjcuNDQgMTUuMmg0NDNjMTEuMTQgMCAyMS44My01LjU4IDI3LjQ0LTE1LjJDNTYxLjc1IDQyMi4yNiA1NzYgMzcyLjggNTc2IDMyMGMwLTE1OS4wNi0xMjguOTQtMjg4LTI4OC0yODh6bTAgNjRjMTQuNzEgMCAyNi41OCAxMC4xMyAzMC4zMiAyMy42NS0xLjExIDIuMjYtMi42NCA0LjIzLTMuNDUgNi42N2wtOS4yMiAyNy42N2MtNS4xMyAzLjQ5LTEwLjk3IDYuMDEtMTcuNjQgNi4wMS0xNy42NyAwLTMyLTE0LjMzLTMyLTMyUzI3MC4zMyA5NiAyODggOTZ6TTk2IDM4NGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptNDgtMTYwYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0yNDYuNzctNzIuNDFsLTYxLjMzIDE4NEMzNDMuMTMgMzQ3LjMzIDM1MiAzNjQuNTQgMzUyIDM4NGMwIDExLjcyLTMuMzggMjIuNTUtOC44OCAzMkgyMzIuODhjLTUuNS05LjQ1LTguODgtMjAuMjgtOC44OC0zMiAwLTMzLjk0IDI2LjUtNjEuNDMgNTkuOS02My41OWw2MS4zNC0xODQuMDFjNC4xNy0xMi41NiAxNy43My0xOS40NSAzMC4zNi0xNS4xNyAxMi41NyA0LjE5IDE5LjM1IDE3Ljc5IDE1LjE3IDMwLjM2em0xNC42NiA1Ny4ybDE1LjUyLTQ2LjU1YzMuNDctMS4yOSA3LjEzLTIuMjMgMTEuMDUtMi4yMyAxNy42NyAwIDMyIDE0LjMzIDMyIDMycy0xNC4zMyAzMi0zMiAzMmMtMTEuMzgtLjAxLTIwLjg5LTYuMjgtMjYuNTctMTUuMjJ6TTQ4MCAzODRjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJdXG59O1xudmFyIGZhVGFnID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RhZycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAyYlwiLCBcIk0wIDI1Mi4xMThWNDhDMCAyMS40OSAyMS40OSAwIDQ4IDBoMjA0LjExOGE0OCA0OCAwIDAgMSAzMy45NDEgMTQuMDU5bDIxMS44ODIgMjExLjg4MmMxOC43NDUgMTguNzQ1IDE4Ljc0NSA0OS4xMzcgMCA2Ny44ODJMMjkzLjgyMyA0OTcuOTQxYy0xOC43NDUgMTguNzQ1LTQ5LjEzNyAxOC43NDUtNjcuODgyIDBMMTQuMDU5IDI4Ni4wNTlBNDggNDggMCAwIDEgMCAyNTIuMTE4ek0xMTIgNjRjLTI2LjUxIDAtNDggMjEuNDktNDggNDhzMjEuNDkgNDggNDggNDggNDgtMjEuNDkgNDgtNDgtMjEuNDktNDgtNDgtNDh6XCJdXG59O1xudmFyIGZhVGFncyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0YWdzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMDJjXCIsIFwiTTQ5Ny45NDEgMjI1Ljk0MUwyODYuMDU5IDE0LjA1OUE0OCA0OCAwIDAgMCAyNTIuMTE4IDBINDhDMjEuNDkgMCAwIDIxLjQ5IDAgNDh2MjA0LjExOGE0OCA0OCAwIDAgMCAxNC4wNTkgMzMuOTQxbDIxMS44ODIgMjExLjg4MmMxOC43NDQgMTguNzQ1IDQ5LjEzNiAxOC43NDYgNjcuODgyIDBsMjA0LjExOC0yMDQuMTE4YzE4Ljc0NS0xOC43NDUgMTguNzQ1LTQ5LjEzNyAwLTY3Ljg4MnpNMTEyIDE2MGMtMjYuNTEgMC00OC0yMS40OS00OC00OHMyMS40OS00OCA0OC00OCA0OCAyMS40OSA0OCA0OC0yMS40OSA0OC00OCA0OHptNTEzLjk0MSAxMzMuODIzTDQyMS44MjMgNDk3Ljk0MWMtMTguNzQ1IDE4Ljc0NS00OS4xMzcgMTguNzQ1LTY3Ljg4MiAwbC0uMzYtLjM2TDUyNy42NCAzMjMuNTIyYzE2Ljk5OS0xNi45OTkgMjYuMzYtMzkuNiAyNi4zNi02My42NHMtOS4zNjItNDYuNjQxLTI2LjM2LTYzLjY0TDMzMS4zOTcgMGg0OC43MjFhNDggNDggMCAwIDEgMzMuOTQxIDE0LjA1OWwyMTEuODgyIDIxMS44ODJjMTguNzQ1IDE4Ljc0NSAxOC43NDUgNDkuMTM3IDAgNjcuODgyelwiXVxufTtcbnZhciBmYVRhcGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGFwZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjRkYlwiLCBcIk0yMjQgMTkyYy0zNS4zIDAtNjQgMjguNy02NCA2NHMyOC43IDY0IDY0IDY0IDY0LTI4LjcgNjQtNjQtMjguNy02NC02NC02NHptNDAwIDIyNEgzODAuNmM0MS41LTQwLjcgNjcuNC05Ny4zIDY3LjQtMTYwIDAtMTIzLjctMTAwLjMtMjI0LTIyNC0yMjRTMCAxMzIuMyAwIDI1NnMxMDAuMyAyMjQgMjI0IDIyNGg0MDBjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6bS00MDAtNjRjLTUzIDAtOTYtNDMtOTYtOTZzNDMtOTYgOTYtOTYgOTYgNDMgOTYgOTYtNDMgOTYtOTYgOTZ6XCJdXG59O1xudmFyIGZhVGFza3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGFza3MnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwYWVcIiwgXCJNMTM5LjYxIDM1LjVhMTIgMTIgMCAwIDAtMTcgMEw1OC45MyA5OC44MWwtMjIuNy0yMi4xMmExMiAxMiAwIDAgMC0xNyAwTDMuNTMgOTIuNDFhMTIgMTIgMCAwIDAgMCAxN2w0Ny41OSA0Ny40YTEyLjc4IDEyLjc4IDAgMCAwIDE3LjYxIDBsMTUuNTktMTUuNjJMMTU2LjUyIDY5YTEyLjA5IDEyLjA5IDAgMCAwIC4wOS0xN3ptMCAxNTkuMTlhMTIgMTIgMCAwIDAtMTcgMGwtNjMuNjggNjMuNzItMjIuNy0yMi4xYTEyIDEyIDAgMCAwLTE3IDBMMy41MyAyNTJhMTIgMTIgMCAwIDAgMCAxN0w1MSAzMTYuNWExMi43NyAxMi43NyAwIDAgMCAxNy42IDBsMTUuNy0xNS42OSA3Mi4yLTcyLjIyYTEyIDEyIDAgMCAwIC4wOS0xNi45ek02NCAzNjhjLTI2LjQ5IDAtNDguNTkgMjEuNS00OC41OSA0OFMzNy41MyA0NjQgNjQgNDY0YTQ4IDQ4IDAgMCAwIDAtOTZ6bTQzMiAxNkgyMDhhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMjg4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0zMjBIMjA4YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDI4OGExNiAxNiAwIDAgMCAxNi0xNlY4MGExNiAxNiAwIDAgMC0xNi0xNnptMCAxNjBIMjA4YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDI4OGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJdXG59O1xudmFyIGZhVGF4aSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0YXhpJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMWJhXCIsIFwiTTQ2MiAyNDEuNjRsLTIyLTg0Ljg0Yy05LjYtMzUuMi00MS42LTYwLjgtNzYuOC02MC44SDM1MlY2NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDE5MmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmgtMTEuMmMtMzUuMiAwLTY3LjIgMjUuNi03Ni44IDYwLjhsLTIyIDg0Ljg0QzIxLjQxIDI0OC4wNCAwIDI3My40NyAwIDMwNHY0OGMwIDIzLjYzIDEyLjk1IDQ0LjA0IDMyIDU1LjEyVjQ0OGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyaDI1NnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTQwLjg4YzE5LjA1LTExLjA5IDMyLTMxLjUgMzItNTUuMTJ2LTQ4YzAtMzAuNTMtMjEuNDEtNTUuOTYtNTAtNjIuMzZ6TTk2IDM1MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMjAuNTUtMTEybDE3LjItNjYuMzZjMi4yMy04LjE2IDkuNTktMTMuNjQgMTUuMDYtMTMuNjRoMjE0LjRjNS40NyAwIDEyLjgzIDUuNDggMTQuODUgMTIuODZMMzk1LjQ1IDI0MGgtMjc4Ljl6TTQxNiAzNTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJdXG59O1xudmFyIGZhVGVldGggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGVldGgnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY2MmVcIiwgXCJNNTQ0IDBIOTZDNDIuOTggMCAwIDQyLjk4IDAgOTZ2MzIwYzAgNTMuMDIgNDIuOTggOTYgOTYgOTZoNDQ4YzUzLjAyIDAgOTYtNDIuOTggOTYtOTZWOTZjMC01My4wMi00Mi45OC05Ni05Ni05NnpNMTYwIDM2OGMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4cy00OC0yMS40OS00OC00OHYtNjRjMC04Ljg0IDcuMTYtMTYgMTYtMTZoNjRjOC44NCAwIDE2IDcuMTYgMTYgMTZ2NjR6bTAtMTI4YzAgOC44NC03LjE2IDE2LTE2IDE2SDgwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtNjRjMC0yNi41MSAyMS40OS00OCA0OC00OHM0OCAyMS40OSA0OCA0OHY2NHptMTQ0IDEyMGMwIDMwLjkzLTI1LjA3IDU2LTU2IDU2cy01Ni0yNS4wNy01Ni01NnYtNTZjMC04Ljg0IDcuMTYtMTYgMTYtMTZoODBjOC44NCAwIDE2IDcuMTYgMTYgMTZ2NTZ6bTAtMTIwYzAgOC44NC03LjE2IDE2LTE2IDE2aC04MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTg4YzAtMzAuOTMgMjUuMDctNTYgNTYtNTZzNTYgMjUuMDcgNTYgNTZ2ODh6bTE0NCAxMjBjMCAzMC45My0yNS4wNyA1Ni01NiA1NnMtNTYtMjUuMDctNTYtNTZ2LTU2YzAtOC44NCA3LjE2LTE2IDE2LTE2aDgwYzguODQgMCAxNiA3LjE2IDE2IDE2djU2em0wLTEyMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtODBjLTguODQgMC0xNi03LjE2LTE2LTE2di04OGMwLTMwLjkzIDI1LjA3LTU2IDU2LTU2czU2IDI1LjA3IDU2IDU2djg4em0xMjggMTI4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhzLTQ4LTIxLjQ5LTQ4LTQ4di02NGMwLTguODQgNy4xNi0xNiAxNi0xNmg2NGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnY2NHptMC0xMjhjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTY0Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtNjRjMC0yNi41MSAyMS40OS00OCA0OC00OHM0OCAyMS40OSA0OCA0OHY2NHpcIl1cbn07XG52YXIgZmFUZWV0aE9wZW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGVldGgtb3BlbicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjYyZlwiLCBcIk01NDQgMEg5NkM0Mi45OCAwIDAgNDIuOTggMCA5NnY2NGMwIDM1LjM1IDI4LjY2IDY0IDY0IDY0aDUxMmMzNS4zNCAwIDY0LTI4LjY1IDY0LTY0Vjk2YzAtNTMuMDItNDIuOTgtOTYtOTYtOTZ6TTE2MCAxNzZjMCA4Ljg0LTcuMTYgMTYtMTYgMTZIODBjLTguODQgMC0xNi03LjE2LTE2LTE2di0zMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4czQ4IDIxLjQ5IDQ4IDQ4djMyem0xNDQgMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtODBjLTguODQgMC0xNi03LjE2LTE2LTE2di01NmMwLTMwLjkzIDI1LjA3LTU2IDU2LTU2czU2IDI1LjA3IDU2IDU2djU2em0xNDQgMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtODBjLTguODQgMC0xNi03LjE2LTE2LTE2di01NmMwLTMwLjkzIDI1LjA3LTU2IDU2LTU2czU2IDI1LjA3IDU2IDU2djU2em0xMjggMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtNjRjLTguODQgMC0xNi03LjE2LTE2LTE2di0zMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4czQ4IDIxLjQ5IDQ4IDQ4djMyem0wIDE0NEg2NGMtMzUuMzQgMC02NCAyOC42NS02NCA2NHYzMmMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2aDQ0OGM1My4wMiAwIDk2LTQyLjk4IDk2LTk2di0zMmMwLTM1LjM1LTI4LjY2LTY0LTY0LTY0em0tNDE2IDgwYzAgMjYuNTEtMjEuNDkgNDgtNDggNDhzLTQ4LTIxLjQ5LTQ4LTQ4di0zMmMwLTguODQgNy4xNi0xNiAxNi0xNmg2NGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYzMnptMTQ0LThjMCAzMC45My0yNS4wNyA1Ni01NiA1NnMtNTYtMjUuMDctNTYtNTZ2LTI0YzAtOC44NCA3LjE2LTE2IDE2LTE2aDgwYzguODQgMCAxNiA3LjE2IDE2IDE2djI0em0xNDQgMGMwIDMwLjkzLTI1LjA3IDU2LTU2IDU2cy01Ni0yNS4wNy01Ni01NnYtMjRjMC04Ljg0IDcuMTYtMTYgMTYtMTZoODBjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MjR6bTEyOCA4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhzLTQ4LTIxLjQ5LTQ4LTQ4di0zMmMwLTguODQgNy4xNi0xNiAxNi0xNmg2NGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYzMnpcIl1cbn07XG52YXIgZmFUZW1wZXJhdHVyZUhpZ2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGVtcGVyYXR1cmUtaGlnaCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjc2OVwiLCBcIk00MTYgMGMtNTIuOSAwLTk2IDQzLjEtOTYgOTZzNDMuMSA5NiA5NiA5NiA5Ni00My4xIDk2LTk2LTQzLjEtOTYtOTYtOTZ6bTAgMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptLTE2MC0xNkMyNTYgNTAuMSAyMDUuOSAwIDE0NCAwUzMyIDUwLjEgMzIgMTEydjE2Ni41QzEyLjMgMzAzLjIgMCAzMzQgMCAzNjhjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRzMTQ0LTY0LjUgMTQ0LTE0NGMwLTM0LTEyLjMtNjQuOS0zMi04OS41VjExMnpNMTQ0IDQ0OGMtNDQuMSAwLTgwLTM1LjktODAtODAgMC0yNS41IDEyLjItNDguOSAzMi02My44VjExMmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djE5Mi4yYzE5LjggMTQuOCAzMiAzOC4zIDMyIDYzLjggMCA0NC4xLTM1LjkgODAtODAgODB6bTE2LTEyNS4xVjExMmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnYyMTAuOWMtMTguNiA2LjYtMzIgMjQuMi0zMiA0NS4xIDAgMjYuNSAyMS41IDQ4IDQ4IDQ4czQ4LTIxLjUgNDgtNDhjMC0yMC45LTEzLjQtMzguNS0zMi00NS4xelwiXVxufTtcbnZhciBmYVRlbXBlcmF0dXJlTG93ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RlbXBlcmF0dXJlLWxvdycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjc2YlwiLCBcIk00MTYgMGMtNTIuOSAwLTk2IDQzLjEtOTYgOTZzNDMuMSA5NiA5NiA5NiA5Ni00My4xIDk2LTk2LTQzLjEtOTYtOTYtOTZ6bTAgMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptLTE2MC0xNkMyNTYgNTAuMSAyMDUuOSAwIDE0NCAwUzMyIDUwLjEgMzIgMTEydjE2Ni41QzEyLjMgMzAzLjIgMCAzMzQgMCAzNjhjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRzMTQ0LTY0LjUgMTQ0LTE0NGMwLTM0LTEyLjMtNjQuOS0zMi04OS41VjExMnpNMTQ0IDQ0OGMtNDQuMSAwLTgwLTM1LjktODAtODAgMC0yNS41IDEyLjItNDguOSAzMi02My44VjExMmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djE5Mi4yYzE5LjggMTQuOCAzMiAzOC4zIDMyIDYzLjggMCA0NC4xLTM1LjkgODAtODAgODB6bTE2LTEyNS4xVjMwNGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnYxOC45Yy0xOC42IDYuNi0zMiAyNC4yLTMyIDQ1LjEgMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OGMwLTIwLjktMTMuNC0zOC41LTMyLTQ1LjF6XCJdXG59O1xudmFyIGZhVGVuZ2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGVuZ2UnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY3ZDdcIiwgXCJNMzcyIDE2MEgxMmMtNi42IDAtMTIgNS40LTEyIDEydjU2YzAgNi42IDUuNCAxMiAxMiAxMmgxNDB2MjI4YzAgNi42IDUuNCAxMiAxMiAxMmg1NmM2LjYgMCAxMi01LjQgMTItMTJWMjQwaDE0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTU2YzAtNi42LTUuNC0xMi0xMi0xMnptMC0xMjhIMTJDNS40IDMyIDAgMzcuNCAwIDQ0djU2YzAgNi42IDUuNCAxMiAxMiAxMmgzNjBjNi42IDAgMTItNS40IDEyLTEyVjQ0YzAtNi42LTUuNC0xMi0xMi0xMnpcIl1cbn07XG52YXIgZmFUZXJtaW5hbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0ZXJtaW5hbCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjEyMFwiLCBcIk0yNTcuOTgxIDI3Mi45NzFMNjMuNjM4IDQ2Ny4zMTRjLTkuMzczIDkuMzczLTI0LjU2OSA5LjM3My0zMy45NDEgMEw3LjAyOSA0NDQuNjQ3Yy05LjM1Ny05LjM1Ny05LjM3NS0yNC41MjItLjA0LTMzLjkwMUwxNjEuMDExIDI1NiA2Ljk5IDEwMS4yNTVjLTkuMzM1LTkuMzc5LTkuMzE3LTI0LjU0NC4wNC0zMy45MDFsMjIuNjY3LTIyLjY2N2M5LjM3My05LjM3MyAyNC41NjktOS4zNzMgMzMuOTQxIDBMMjU3Ljk4MSAyMzkuMDNjOS4zNzMgOS4zNzIgOS4zNzMgMjQuNTY4IDAgMzMuOTQxek02NDAgNDU2di0zMmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMzEyYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MzJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDMwNGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR6XCJdXG59O1xudmFyIGZhVGV4dEhlaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0ZXh0LWhlaWdodCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjAzNFwiLCBcIk0zMDQgMzJIMTZBMTYgMTYgMCAwIDAgMCA0OHY5NmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJoNTZ2MzA0SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDE2MGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTQwVjExMmg1NnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnptMjU2IDMzNmgtNDhWMTQ0aDQ4YzE0LjMxIDAgMjEuMzMtMTcuMzEgMTEuMzEtMjcuMzFsLTgwLTgwYTE2IDE2IDAgMCAwLTIyLjYyIDBsLTgwIDgwQzM3OS4zNiAxMjYgMzg0LjM2IDE0NCA0MDAgMTQ0aDQ4djIyNGgtNDhjLTE0LjMxIDAtMjEuMzIgMTcuMzEtMTEuMzEgMjcuMzFsODAgODBhMTYgMTYgMCAwIDAgMjIuNjIgMGw4MC04MEM1ODAuNjQgMzg2IDU3NS42NCAzNjggNTYwIDM2OHpcIl1cbn07XG52YXIgZmFUZXh0V2lkdGggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGV4dC13aWR0aCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjAzNVwiLCBcIk00MzIgMzJIMTZBMTYgMTYgMCAwIDAgMCA0OHY4MGExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMTZoMTIwdjExMmgtMjRhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTI4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNmgtMjRWMTEyaDEyMHYxNmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnptLTY4LjY5IDI2MC42OUMzNTQgMjgzLjM2IDMzNiAyODguMzYgMzM2IDMwNHY0OEgxMTJ2LTQ4YzAtMTQuMzEtMTcuMzEtMjEuMzItMjcuMzEtMTEuMzFsLTgwIDgwYTE2IDE2IDAgMCAwIDAgMjIuNjJsODAgODBDOTQgNDg0LjY0IDExMiA0NzkuNjQgMTEyIDQ2NHYtNDhoMjI0djQ4YzAgMTQuMzEgMTcuMzEgMjEuMzMgMjcuMzEgMTEuMzFsODAtODBhMTYgMTYgMCAwIDAgMC0yMi42MnpcIl1cbn07XG52YXIgZmFUaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0aCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAwYVwiLCBcIk0xNDkuMzMzIDU2djgwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgyNGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0VjU2YzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNGgxMDEuMzMzYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHptMTgxLjMzNCAyNDB2LTgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyMDUuMzMzYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2ODBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwMS4zMzNjMTMuMjU2IDAgMjQuMDAxLTEwLjc0NSAyNC4wMDEtMjR6bTMyLTI0MHY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRINDg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMzg2LjY2N2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0em0tMzIgODBWNTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDIwNS4zMzNjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTAxLjMzM2MxMy4yNTYgMCAyNC4wMDEtMTAuNzQ1IDI0LjAwMS0yNHptLTIwNS4zMzQgNTZIMjRjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTAxLjMzM2MxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHpNMCAzNzZ2ODBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwMS4zMzNjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di04MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjRjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHptMzg2LjY2Ny01Nkg0ODhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di04MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMzg2LjY2N2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNHptMCAxNjBINDg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDM4Ni42NjdjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjR6TTE4MS4zMzMgMzc2djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDEuMzMzYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDIwNS4zMzNjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHpcIl1cbn07XG52YXIgZmFUaExhcmdlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RoLWxhcmdlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDA5XCIsIFwiTTI5NiAzMmgxOTJjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0djE2MGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMjk2Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRWNTZjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0em0tODAgMEgyNEMxMC43NDUgMzIgMCA0Mi43NDUgMCA1NnYxNjBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDE5MmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWNTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0ek0wIDI5NnYxNjBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDE5MmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMjk2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyNGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0em0yOTYgMTg0aDE5MmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMjk2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyOTZjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxNjBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0elwiXVxufTtcbnZhciBmYVRoTGlzdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0aC1saXN0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDBiXCIsIFwiTTE0OS4zMzMgMjE2djgwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgyNGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0di04MGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoMTAxLjMzM2MxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR6TTAgMzc2djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDEuMzMzYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI0Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR6TTEyNS4zMzMgMzJIMjRDMTAuNzQ1IDMyIDAgNDIuNzQ1IDAgNTZ2ODBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwMS4zMzNjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjU2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHptODAgNDQ4SDQ4OGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyMDUuMzMzYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2ODBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0em0tMjQtNDI0djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNEg0ODhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjU2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyMDUuMzMzYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR6bTI0IDI2NEg0ODhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di04MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjA1LjMzM2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNHpcIl1cbn07XG52YXIgZmFUaGVhdGVyTWFza3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGhlYXRlci1tYXNrcycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjYzMFwiLCBcIk0yMDYuODYgMjQ1LjE1Yy0zNS44OCAxMC40NS01OS45NSA0MS4yLTU3LjUzIDc0LjEgMTEuNC0xMi43MiAyOC44MS0yMy43IDQ5LjktMzAuOTJsNy42My00My4xOHpNOTUuODEgMjk1TDY0LjA4IDExNS40OWMtLjI5LTEuNjIuMjgtMi42Mi4yNC0yLjY1IDU3Ljc2LTMyLjA2IDEyMy4xMi00OS4wMSAxODkuMDEtNDkuMDEgMS42MSAwIDMuMjMuMTcgNC44NS4xOSAxMy45NS0xMy40NyAzMS43My0yMi44MyA1MS41OS0yNiAxOC44OS0zLjAyIDM4LjA1LTQuNTUgNTcuMTgtNS4zMi05Ljk5LTEzLjk1LTI0LjQ4LTI0LjIzLTQxLjc3LTI3QzMwMS4yNyAxLjg5IDI3Ny4yNCAwIDI1My4zMiAwIDE3Ni42NiAwIDEwMS4wMiAxOS40MiAzMy4yIDU3LjA2IDkuMDMgNzAuNDgtMy45MiA5OC40OCAxLjA1IDEyNi41OGwzMS43MyAxNzkuNTFjMTQuMjMgODAuNTIgMTM2LjMzIDE0Mi4wOCAyMDQuNDUgMTQyLjA4IDMuNTkgMCA2Ljc1LS40NiAxMC4wMS0uOC0xMy41Mi0xNy4wOC0yOC45NC00MC40OC0zOS41LTY3LjU4LTQ3LjYxLTEyLjk4LTEwNi4wNi01MS42Mi0xMTEuOTMtODQuNzl6bTk3LjU1LTEzNy40NmMtLjczLTQuMTItMi4yMy03Ljg3LTQuMDctMTEuNC04LjI1IDguOTEtMjAuNjcgMTUuNzUtMzUuMzIgMTguMzItMTQuNjUgMi41OC0yOC42Ny40LTM5LjQ4LTUuMTctLjUyIDMuOTQtLjY0IDcuOTguMDkgMTIuMSAzLjg0IDIxLjcgMjQuNTggMzYuMTkgNDYuMzQgMzIuMzcgMjEuNzUtMy44MiAzNi4yOC0yNC41MiAzMi40NC00Ni4yMnpNNjA2LjggMTIwLjljLTg4Ljk4LTQ5LjM4LTE5MS40My02Ny40MS0yOTEuOTgtNTEuMzUtMjcuMzEgNC4zNi00OS4wOCAyNi4yNi01NC4wNCA1NC4zNmwtMzEuNzMgMTc5LjUxYy0xNS4zOSA4Ny4wNSA5NS4yOCAxOTYuMjcgMTU4LjMxIDIwNy4zNSA2My4wMyAxMS4wOSAyMDQuNDctNTMuNzkgMjE5Ljg2LTE0MC44NGwzMS43My0xNzkuNTFjNC45Ny0yOC4xMS03Ljk4LTU2LjExLTMyLjE1LTY5LjUyem0tMjczLjI0IDk2LjhjMy44NC0yMS43IDI0LjU4LTM2LjE5IDQ2LjM0LTMyLjM2IDIxLjc2IDMuODMgMzYuMjggMjQuNTIgMzIuNDUgNDYuMjItLjczIDQuMTItMi4yMyA3Ljg3LTQuMDcgMTEuNC04LjI1LTguOTEtMjAuNjctMTUuNzUtMzUuMzItMTguMzItMTQuNjUtMi41OC0yOC42Ny0uNC0zOS40OCA1LjE3LS41My0zLjk1LS42NS03Ljk5LjA4LTEyLjExem03MC40NyAxOTguNzZjLTU1LjY4LTkuNzktOTMuNTItNTkuMjctODkuMDQtMTEyLjkgMjAuNiAyNS41NCA1Ni4yMSA0Ni4xNyA5OS40OSA1My43OCA0My4yOCA3LjYxIDgzLjgyLjM3IDExMS45My0xNi42LTE0LjE4IDUxLjk0LTY2LjcxIDg1LjUxLTEyMi4zOCA3NS43MnptMTMwLjMtMTUxLjM0Yy04LjI1LTguOTEtMjAuNjgtMTUuNzUtMzUuMzMtMTguMzItMTQuNjUtMi41OC0yOC42Ny0uNC0zOS40OCA1LjE3LS41Mi0zLjk0LS42NC03Ljk4LjA5LTEyLjEgMy44NC0yMS43IDI0LjU4LTM2LjE5IDQ2LjM0LTMyLjM3IDIxLjc1IDMuODMgMzYuMjggMjQuNTIgMzIuNDUgNDYuMjItLjczIDQuMTMtMi4yMyA3Ljg4LTQuMDcgMTEuNHpcIl1cbn07XG52YXIgZmFUaGVybW9tZXRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0aGVybW9tZXRlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjQ5MVwiLCBcIk00NzYuOCAyMC40Yy0zNy41LTMwLjctOTUuNS0yNi4zLTEzMS45IDEwLjJsLTQ1LjcgNDYgNTAuNSA1MC41YzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTExLjMgMTEuM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMGwtNTAuNC01MC41LTQ1LjEgNDUuNCA1MC4zIDUwLjRjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM2wtMTEuMyAxMS4zYy0zLjEgMy4xLTguMiAzLjEtMTEuMyAwTDIwOSAxNjcuNGwtNDUuMSA0NS40TDIxNCAyNjNjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM2wtMTEuMyAxMS4zYy0zLjEgMy4xLTguMiAzLjEtMTEuMyAwbC01MC4xLTUwLjJMOTYgMjgxLjFWMzgyTDcgNDcxYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOSA5LjQgOS40IDI0LjYgOS40IDMzLjkgMGw4OS04OWg5OS45TDQ4NCAxNjIuNmMzNC45LTM0LjkgNDIuMi0xMDEuNS03LjItMTQyLjJ6XCJdXG59O1xudmFyIGZhVGhlcm1vbWV0ZXJFbXB0eSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0aGVybW9tZXRlci1lbXB0eScsXG4gIGljb246IFsyNTYsIDUxMiwgW10sIFwiZjJjYlwiLCBcIk0xOTIgMzg0YzAgMzUuMzQ2LTI4LjY1NCA2NC02NCA2NHMtNjQtMjguNjU0LTY0LTY0YzAtMzUuMzQ2IDI4LjY1NC02NCA2NC02NHM2NCAyOC42NTQgNjQgNjR6bTMyLTg0LjY1M2MxOS45MTIgMjIuNTYzIDMyIDUyLjE5NCAzMiA4NC42NTMgMCA3MC42OTYtNTcuMzAzIDEyOC0xMjggMTI4LS4yOTkgMC0uNjA5LS4wMDEtLjkwOS0uMDAzQzU2Ljc4OSA1MTEuNTA5LS4zNTcgNDUzLjYzNi4wMDIgMzgzLjMzMy4xNjYgMzUxLjEzNSAxMi4yMjUgMzIxLjc1NSAzMiAyOTkuMzQ3Vjk2YzAtNTMuMDE5IDQyLjk4MS05NiA5Ni05NnM5NiA0Mi45ODEgOTYgOTZ2MjAzLjM0N3pNMjA4IDM4NGMwLTM0LjMzOS0xOS4zNy01Mi4xOS0zMi02Ni41MDJWOTZjMC0yNi40NjctMjEuNTMzLTQ4LTQ4LTQ4UzgwIDY5LjUzMyA4MCA5NnYyMjEuNDk4Yy0xMi43MzIgMTQuNDI4LTMxLjgyNSAzMi4xLTMxLjk5OSA2Ni4wOC0uMjI0IDQzLjg3NiAzNS41NjMgODAuMTE2IDc5LjQyMyA4MC40MkwxMjggNDY0YzQ0LjExMiAwIDgwLTM1Ljg4OCA4MC04MHpcIl1cbn07XG52YXIgZmFUaGVybW9tZXRlckZ1bGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGhlcm1vbWV0ZXItZnVsbCcsXG4gIGljb246IFsyNTYsIDUxMiwgW10sIFwiZjJjN1wiLCBcIk0yMjQgOTZjMC01My4wMTktNDIuOTgxLTk2LTk2LTk2UzMyIDQyLjk4MSAzMiA5NnYyMDMuMzQ3QzEyLjIyNSAzMjEuNzU2LjE2NiAzNTEuMTM2LjAwMiAzODMuMzMzYy0uMzU5IDcwLjMwMyA1Ni43ODcgMTI4LjE3NiAxMjcuMDg5IDEyOC42NjQuMjk5LjAwMi42MS4wMDMuOTA5LjAwMyA3MC42OTggMCAxMjgtNTcuMzA0IDEyOC0xMjggMC0zMi40NTktMTIuMDg4LTYyLjA5LTMyLTg0LjY1M1Y5NnptLTk2IDM2OGwtLjU3Ni0uMDAyYy00My44Ni0uMzA0LTc5LjY0Ny0zNi41NDQtNzkuNDIzLTgwLjQyLjE3My0zMy45OCAxOS4yNjYtNTEuNjUyIDMxLjk5OS02Ni4wOFY5NmMwLTI2LjQ2NyAyMS41MzMtNDggNDgtNDhzNDggMjEuNTMzIDQ4IDQ4djIyMS40OThjMTIuNjMgMTQuMzEyIDMyIDMyLjE2NCAzMiA2Ni41MDIgMCA0NC4xMTItMzUuODg4IDgwLTgwIDgwem02NC04MGMwIDM1LjM0Ni0yOC42NTQgNjQtNjQgNjRzLTY0LTI4LjY1NC02NC02NGMwLTIzLjY4NSAxMi44NzYtNDQuMzQ5IDMyLTU1LjQxN1Y5NmMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJzMzIgMTQuMzI3IDMyIDMydjIzMi41ODNjMTkuMTI0IDExLjA2OCAzMiAzMS43MzIgMzIgNTUuNDE3elwiXVxufTtcbnZhciBmYVRoZXJtb21ldGVySGFsZiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0aGVybW9tZXRlci1oYWxmJyxcbiAgaWNvbjogWzI1NiwgNTEyLCBbXSwgXCJmMmM5XCIsIFwiTTE5MiAzODRjMCAzNS4zNDYtMjguNjU0IDY0LTY0IDY0cy02NC0yOC42NTQtNjQtNjRjMC0yMy42ODUgMTIuODc2LTQ0LjM0OSAzMi01NS40MTdWMjI0YzAtMTcuNjczIDE0LjMyNy0zMiAzMi0zMnMzMiAxNC4zMjcgMzIgMzJ2MTA0LjU4M2MxOS4xMjQgMTEuMDY4IDMyIDMxLjczMiAzMiA1NS40MTd6bTMyLTg0LjY1M2MxOS45MTIgMjIuNTYzIDMyIDUyLjE5NCAzMiA4NC42NTMgMCA3MC42OTYtNTcuMzAzIDEyOC0xMjggMTI4LS4yOTkgMC0uNjA5LS4wMDEtLjkwOS0uMDAzQzU2Ljc4OSA1MTEuNTA5LS4zNTcgNDUzLjYzNi4wMDIgMzgzLjMzMy4xNjYgMzUxLjEzNSAxMi4yMjUgMzIxLjc1NSAzMiAyOTkuMzQ3Vjk2YzAtNTMuMDE5IDQyLjk4MS05NiA5Ni05NnM5NiA0Mi45ODEgOTYgOTZ2MjAzLjM0N3pNMjA4IDM4NGMwLTM0LjMzOS0xOS4zNy01Mi4xOS0zMi02Ni41MDJWOTZjMC0yNi40NjctMjEuNTMzLTQ4LTQ4LTQ4UzgwIDY5LjUzMyA4MCA5NnYyMjEuNDk4Yy0xMi43MzIgMTQuNDI4LTMxLjgyNSAzMi4xLTMxLjk5OSA2Ni4wOC0uMjI0IDQzLjg3NiAzNS41NjMgODAuMTE2IDc5LjQyMyA4MC40MkwxMjggNDY0YzQ0LjExMiAwIDgwLTM1Ljg4OCA4MC04MHpcIl1cbn07XG52YXIgZmFUaGVybW9tZXRlclF1YXJ0ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGhlcm1vbWV0ZXItcXVhcnRlcicsXG4gIGljb246IFsyNTYsIDUxMiwgW10sIFwiZjJjYVwiLCBcIk0xOTIgMzg0YzAgMzUuMzQ2LTI4LjY1NCA2NC02NCA2NHMtNjQtMjguNjU0LTY0LTY0YzAtMjMuNjg1IDEyLjg3Ni00NC4zNDkgMzItNTUuNDE3VjI4OGMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJzMzIgMTQuMzI3IDMyIDMydjQwLjU4M2MxOS4xMjQgMTEuMDY4IDMyIDMxLjczMiAzMiA1NS40MTd6bTMyLTg0LjY1M2MxOS45MTIgMjIuNTYzIDMyIDUyLjE5NCAzMiA4NC42NTMgMCA3MC42OTYtNTcuMzAzIDEyOC0xMjggMTI4LS4yOTkgMC0uNjA5LS4wMDEtLjkwOS0uMDAzQzU2Ljc4OSA1MTEuNTA5LS4zNTcgNDUzLjYzNi4wMDIgMzgzLjMzMy4xNjYgMzUxLjEzNSAxMi4yMjUgMzIxLjc1NSAzMiAyOTkuMzQ3Vjk2YzAtNTMuMDE5IDQyLjk4MS05NiA5Ni05NnM5NiA0Mi45ODEgOTYgOTZ2MjAzLjM0N3pNMjA4IDM4NGMwLTM0LjMzOS0xOS4zNy01Mi4xOS0zMi02Ni41MDJWOTZjMC0yNi40NjctMjEuNTMzLTQ4LTQ4LTQ4UzgwIDY5LjUzMyA4MCA5NnYyMjEuNDk4Yy0xMi43MzIgMTQuNDI4LTMxLjgyNSAzMi4xLTMxLjk5OSA2Ni4wOC0uMjI0IDQzLjg3NiAzNS41NjMgODAuMTE2IDc5LjQyMyA4MC40MkwxMjggNDY0YzQ0LjExMiAwIDgwLTM1Ljg4OCA4MC04MHpcIl1cbn07XG52YXIgZmFUaGVybW9tZXRlclRocmVlUXVhcnRlcnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGhlcm1vbWV0ZXItdGhyZWUtcXVhcnRlcnMnLFxuICBpY29uOiBbMjU2LCA1MTIsIFtdLCBcImYyYzhcIiwgXCJNMTkyIDM4NGMwIDM1LjM0Ni0yOC42NTQgNjQtNjQgNjQtMzUuMzQ2IDAtNjQtMjguNjU0LTY0LTY0IDAtMjMuNjg1IDEyLjg3Ni00NC4zNDkgMzItNTUuNDE3VjE2MGMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJzMzIgMTQuMzI3IDMyIDMydjE2OC41ODNjMTkuMTI0IDExLjA2OCAzMiAzMS43MzIgMzIgNTUuNDE3em0zMi04NC42NTNjMTkuOTEyIDIyLjU2MyAzMiA1Mi4xOTQgMzIgODQuNjUzIDAgNzAuNjk2LTU3LjMwMyAxMjgtMTI4IDEyOC0uMjk5IDAtLjYwOS0uMDAxLS45MDktLjAwM0M1Ni43ODkgNTExLjUwOS0uMzU3IDQ1My42MzYuMDAyIDM4My4zMzMuMTY2IDM1MS4xMzUgMTIuMjI1IDMyMS43NTUgMzIgMjk5LjM0N1Y5NmMwLTUzLjAxOSA0Mi45ODEtOTYgOTYtOTZzOTYgNDIuOTgxIDk2IDk2djIwMy4zNDd6TTIwOCAzODRjMC0zNC4zMzktMTkuMzctNTIuMTktMzItNjYuNTAyVjk2YzAtMjYuNDY3LTIxLjUzMy00OC00OC00OFM4MCA2OS41MzMgODAgOTZ2MjIxLjQ5OGMtMTIuNzMyIDE0LjQyOC0zMS44MjUgMzIuMS0zMS45OTkgNjYuMDgtLjIyNCA0My44NzYgMzUuNTYzIDgwLjExNiA3OS40MjMgODAuNDJMMTI4IDQ2NGM0NC4xMTIgMCA4MC0zNS44ODggODAtODB6XCJdXG59O1xudmFyIGZhVGh1bWJzRG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0aHVtYnMtZG93bicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjE2NVwiLCBcIk0wIDU2djI0MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoODBjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjU2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyNEMxMC43NDUgMzIgMCA0Mi43NDUgMCA1NnptNDAgMjAwYzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNHMyNCAxMC43NDUgMjQgMjQtMTAuNzQ1IDI0LTI0IDI0LTI0LTEwLjc0NS0yNC0yNHptMjcyIDI1NmMtMjAuMTgzIDAtMjkuNDg1LTM5LjI5My0zMy45MzEtNTcuNzk1LTUuMjA2LTIxLjY2Ni0xMC41ODktNDQuMDctMjUuMzkzLTU4LjkwMi0zMi40NjktMzIuNTI0LTQ5LjUwMy03My45NjctODkuMTE3LTExMy4xMTFhMTEuOTggMTEuOTggMCAwIDEtMy41NTgtOC41MjFWNTkuOTAxYzAtNi41NDEgNS4yNDMtMTEuODc4IDExLjc4My0xMS45OTggMTUuODMxLS4yOSAzNi42OTQtOS4wNzkgNTIuNjUxLTE2LjE3OEMyNTYuMTg5IDE3LjU5OCAyOTUuNzA5LjAxNyAzNDMuOTk1IDBoMi44NDRjNDIuNzc3IDAgOTMuMzYzLjQxMyAxMTMuNzc0IDI5LjczNyA4LjM5MiAxMi4wNTcgMTAuNDQ2IDI3LjAzNCA2LjE0OCA0NC42MzIgMTYuMzEyIDE3LjA1MyAyNS4wNjMgNDguODYzIDE2LjM4MiA3NC43NTcgMTcuNTQ0IDIzLjQzMiAxOS4xNDMgNTYuMTMyIDkuMzA4IDc5LjQ2OWwuMTEuMTFjMTEuODkzIDExLjk0OSAxOS41MjMgMzEuMjU5IDE5LjQzOSA0OS4xOTctLjE1NiAzMC4zNTItMjYuMTU3IDU4LjA5OC01OS41NTMgNTguMDk4SDM1MC43MjNDMzU4LjAzIDM2NC4zNCAzODQgMzg4LjEzMiAzODQgNDMwLjU0OCAzODQgNTA0IDMzNiA1MTIgMzEyIDUxMnpcIl1cbn07XG52YXIgZmFUaHVtYnNVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0aHVtYnMtdXAnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxNjRcIiwgXCJNMTA0IDIyNEgyNGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djI0MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoODBjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI0OGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6TTY0IDQ3MmMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0czEwLjc0NS0yNCAyNC0yNCAyNCAxMC43NDUgMjQgMjQtMTAuNzQ1IDI0LTI0IDI0ek0zODQgODEuNDUyYzAgNDIuNDE2LTI1Ljk3IDY2LjIwOC0zMy4yNzcgOTQuNTQ4aDEwMS43MjNjMzMuMzk3IDAgNTkuMzk3IDI3Ljc0NiA1OS41NTMgNTguMDk4LjA4NCAxNy45MzgtNy41NDYgMzcuMjQ5LTE5LjQzOSA0OS4xOTdsLS4xMS4xMWM5LjgzNiAyMy4zMzcgOC4yMzcgNTYuMDM3LTkuMzA4IDc5LjQ2OSA4LjY4MSAyNS44OTUtLjA2OSA1Ny43MDQtMTYuMzgyIDc0Ljc1NyA0LjI5OCAxNy41OTggMi4yNDQgMzIuNTc1LTYuMTQ4IDQ0LjYzMkM0NDAuMjAyIDUxMS41ODcgMzg5LjYxNiA1MTIgMzQ2LjgzOSA1MTJsLTIuODQ1LS4wMDFjLTQ4LjI4Ny0uMDE3LTg3LjgwNi0xNy41OTgtMTE5LjU2LTMxLjcyNS0xNS45NTctNy4wOTktMzYuODIxLTE1Ljg4Ny01Mi42NTEtMTYuMTc4LTYuNTQtLjEyLTExLjc4My01LjQ1Ny0xMS43ODMtMTEuOTk4di0yMTMuNzdjMC0zLjIgMS4yODItNi4yNzEgMy41NTgtOC41MjEgMzkuNjE0LTM5LjE0NCA1Ni42NDgtODAuNTg3IDg5LjExNy0xMTMuMTExIDE0LjgwNC0xNC44MzIgMjAuMTg4LTM3LjIzNiAyNS4zOTMtNTguOTAyQzI4Mi41MTUgMzkuMjkzIDI5MS44MTcgMCAzMTIgMGMyNCAwIDcyIDggNzIgODEuNDUyelwiXVxufTtcbnZhciBmYVRodW1idGFjayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0aHVtYnRhY2snLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYwOGRcIiwgXCJNMjk4LjAyOCAyMTQuMjY3TDI4NS43OTMgOTZIMzI4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRINTZDNDIuNzQ1IDAgMzIgMTAuNzQ1IDMyIDI0djQ4YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGg0Mi4yMDdMODUuOTcyIDIxNC4yNjdDMzcuNDY1IDIzNi44MiAwIDI3Ny4yNjEgMCAzMjhjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEzNnYxMDQuMDA3YzAgMS4yNDIuMjg5IDIuNDY3Ljg0NSAzLjU3OGwyNCA0OGMyLjk0MSA1Ljg4MiAxMS4zNjQgNS44OTMgMTQuMzExIDBsMjQtNDhhOC4wMDggOC4wMDggMCAwIDAgLjg0NS0zLjU3OFYzNTJoMTM2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNC0uMDAxLTUxLjE4My0zNy45ODMtOTEuNDItODUuOTczLTExMy43MzN6XCJdXG59O1xudmFyIGZhVGlja2V0QWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RpY2tldC1hbHQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYzZmZcIiwgXCJNMTI4IDE2MGgzMjB2MTkySDEyOFYxNjB6bTQwMCA5NmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4djk2YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDh2LTk2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhzLTIxLjQ5LTQ4LTQ4LTQ4di05NmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDQ4MGMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djk2Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4em0tNDgtMTA0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgxMjBjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYyMDhjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDMzNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTUyelwiXVxufTtcbnZhciBmYVRpbWVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RpbWVzJyxcbiAgaWNvbjogWzM1MiwgNTEyLCBbXSwgXCJmMDBkXCIsIFwiTTI0Mi43MiAyNTZsMTAwLjA3LTEwMC4wN2MxMi4yOC0xMi4yOCAxMi4yOC0zMi4xOSAwLTQ0LjQ4bC0yMi4yNC0yMi4yNGMtMTIuMjgtMTIuMjgtMzIuMTktMTIuMjgtNDQuNDggMEwxNzYgMTg5LjI4IDc1LjkzIDg5LjIxYy0xMi4yOC0xMi4yOC0zMi4xOS0xMi4yOC00NC40OCAwTDkuMjEgMTExLjQ1Yy0xMi4yOCAxMi4yOC0xMi4yOCAzMi4xOSAwIDQ0LjQ4TDEwOS4yOCAyNTYgOS4yMSAzNTYuMDdjLTEyLjI4IDEyLjI4LTEyLjI4IDMyLjE5IDAgNDQuNDhsMjIuMjQgMjIuMjRjMTIuMjggMTIuMjggMzIuMiAxMi4yOCA0NC40OCAwTDE3NiAzMjIuNzJsMTAwLjA3IDEwMC4wN2MxMi4yOCAxMi4yOCAzMi4yIDEyLjI4IDQ0LjQ4IDBsMjIuMjQtMjIuMjRjMTIuMjgtMTIuMjggMTIuMjgtMzIuMTkgMC00NC40OEwyNDIuNzIgMjU2elwiXVxufTtcbnZhciBmYVRpbWVzQ2lyY2xlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RpbWVzLWNpcmNsZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjA1N1wiLCBcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0xMjEuNiAzMTMuMWM0LjcgNC43IDQuNyAxMi4zIDAgMTdMMzM4IDM3Ny42Yy00LjcgNC43LTEyLjMgNC43LTE3IDBMMjU2IDMxMmwtNjUuMSA2NS42Yy00LjcgNC43LTEyLjMgNC43LTE3IDBMMTM0LjQgMzM4Yy00LjctNC43LTQuNy0xMi4zIDAtMTdsNjUuNi02NS02NS42LTY1LjFjLTQuNy00LjctNC43LTEyLjMgMC0xN2wzOS42LTM5LjZjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDY1IDY1LjcgNjUuMS02NS42YzQuNy00LjcgMTIuMy00LjcgMTcgMGwzOS42IDM5LjZjNC43IDQuNyA0LjcgMTIuMyAwIDE3TDMxMiAyNTZsNjUuNiA2NS4xelwiXVxufTtcbnZhciBmYVRpbnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGludCcsXG4gIGljb246IFszNTIsIDUxMiwgW10sIFwiZjA0M1wiLCBcIk0yMDUuMjIgMjIuMDljLTcuOTQtMjguNzgtNDkuNDQtMzAuMTItNTguNDQgMEMxMDAuMDEgMTc5Ljg1IDAgMjIyLjcyIDAgMzMzLjkxIDAgNDMyLjM1IDc4LjcyIDUxMiAxNzYgNTEyczE3Ni03OS42NSAxNzYtMTc4LjA5YzAtMTExLjc1LTk5Ljc5LTE1My4zNC0xNDYuNzgtMzExLjgyek0xNzYgNDQ4Yy02MS43NSAwLTExMi01MC4yNS0xMTItMTEyIDAtOC44NCA3LjE2LTE2IDE2LTE2czE2IDcuMTYgMTYgMTZjMCA0NC4xMSAzNS44OSA4MCA4MCA4MCA4Ljg0IDAgMTYgNy4xNiAxNiAxNnMtNy4xNiAxNi0xNiAxNnpcIl1cbn07XG52YXIgZmFUaW50U2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGludC1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjVjN1wiLCBcIk02MzMuODIgNDU4LjFMNDk0Ljk3IDM1MC43OGMuNTItNS41NyAxLjAzLTExLjE2IDEuMDMtMTYuODcgMC0xMTEuNzYtOTkuNzktMTUzLjM0LTE0Ni43OC0zMTEuODItNy45NC0yOC43OC00OS40NC0zMC4xMi01OC40NCAwLTE1LjUyIDUyLjM0LTM2Ljg3IDkxLjk2LTU4LjQ5IDEyNS42OEw0NS40NyAzLjM3QzM4LjQ5LTIuMDUgMjguNDMtLjggMjMuMDEgNi4xOEwzLjM3IDMxLjQ1Qy0yLjA1IDM4LjQyLS44IDQ4LjQ3IDYuMTggNTMuOWw1ODguMzYgNDU0LjczYzYuOTggNS40MyAxNy4wMyA0LjE3IDIyLjQ2LTIuODFsMTkuNjQtMjUuMjdjNS40MS02Ljk3IDQuMTYtMTcuMDItMi44Mi0yMi40NXpNMTQ0IDMzMy45MUMxNDQgNDMyLjM1IDIyMi43MiA1MTIgMzIwIDUxMmM0NC43MSAwIDg1LjM3LTE2Ljk2IDExNi40LTQ0LjdMMTYyLjcyIDI1NS43OGMtMTEuNDEgMjMuNS0xOC43MiA0OC4zNS0xOC43MiA3OC4xM3pcIl1cbn07XG52YXIgZmFUaXJlZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0aXJlZCcsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjVjOFwiLCBcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0zMy44IDE4OS43bDgwLTQ4YzExLjYtNi45IDI0IDcuNyAxNS40IDE4TDM0My42IDIwOGwzMy42IDQwLjNjOC43IDEwLjQtMy45IDI0LjgtMTUuNCAxOGwtODAtNDhjLTcuNy00LjctNy43LTE1LjkgMC0yMC42em0tMTYzLTMwYy04LjYtMTAuMyAzLjgtMjQuOSAxNS40LTE4bDgwIDQ4YzcuOCA0LjcgNy44IDE1LjkgMCAyMC42bC04MCA0OGMtMTEuNSA2LjgtMjQtNy42LTE1LjQtMThsMzMuNi00MC4zLTMzLjYtNDAuM3pNMjQ4IDI4OGM1MS45IDAgMTE1LjMgNDMuOCAxMjMuMiAxMDYuNyAxLjcgMTMuNi04IDI0LjYtMTcuNyAyMC40LTI1LjktMTEuMS02NC40LTE3LjQtMTA1LjUtMTcuNHMtNzkuNiA2LjMtMTA1LjUgMTcuNGMtOS44IDQuMi0xOS40LTctMTcuNy0yMC40QzEzMi43IDMzMS44IDE5Ni4xIDI4OCAyNDggMjg4elwiXVxufTtcbnZhciBmYVRvZ2dsZU9mZiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0b2dnbGUtb2ZmJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMjA0XCIsIFwiTTM4NCA2NEgxOTJDODUuOTYxIDY0IDAgMTQ5Ljk2MSAwIDI1NnM4NS45NjEgMTkyIDE5MiAxOTJoMTkyYzEwNi4wMzkgMCAxOTItODUuOTYxIDE5Mi0xOTJTNDkwLjAzOSA2NCAzODQgNjR6TTY0IDI1NmMwLTcwLjc0MSA1Ny4yNDktMTI4IDEyOC0xMjggNzAuNzQxIDAgMTI4IDU3LjI0OSAxMjggMTI4IDAgNzAuNzQxLTU3LjI0OSAxMjgtMTI4IDEyOC03MC43NDEgMC0xMjgtNTcuMjQ5LTEyOC0xMjh6bTMyMCAxMjhoLTQ4LjkwNWM2NS4yMTctNzIuODU4IDY1LjIzNi0xODMuMTIgMC0yNTZIMzg0YzcwLjc0MSAwIDEyOCA1Ny4yNDkgMTI4IDEyOCAwIDcwLjc0LTU3LjI0OSAxMjgtMTI4IDEyOHpcIl1cbn07XG52YXIgZmFUb2dnbGVPbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0b2dnbGUtb24nLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYyMDVcIiwgXCJNMzg0IDY0SDE5MkM4NiA2NCAwIDE1MCAwIDI1NnM4NiAxOTIgMTkyIDE5MmgxOTJjMTA2IDAgMTkyLTg2IDE5Mi0xOTJTNDkwIDY0IDM4NCA2NHptMCAzMjBjLTcwLjggMC0xMjgtNTcuMy0xMjgtMTI4IDAtNzAuOCA1Ny4zLTEyOCAxMjgtMTI4IDcwLjggMCAxMjggNTcuMyAxMjggMTI4IDAgNzAuOC01Ny4zIDEyOC0xMjggMTI4elwiXVxufTtcbnZhciBmYVRvaWxldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0b2lsZXQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY3ZDhcIiwgXCJNMzY4IDQ4YzguOCAwIDE2LTcuMiAxNi0xNlYxNmMwLTguOC03LjItMTYtMTYtMTZIMTZDNy4yIDAgMCA3LjIgMCAxNnYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMTZ2MTU2LjdDMTEuOCAyMTQuOCAwIDIyNi45IDAgMjQwYzAgNjcuMiAzNC42IDEyNi4yIDg2LjggMTYwLjVsLTIxLjQgNzAuMkM1OS4xIDQ5MS4yIDc0LjUgNTEyIDk2IDUxMmgxOTJjMjEuNSAwIDM2LjktMjAuOCAzMC42LTQxLjNsLTIxLjQtNzAuMkMzNDkuNCAzNjYuMiAzODQgMzA3LjIgMzg0IDI0MGMwLTEzLjEtMTEuOC0yNS4yLTMyLTM1LjNWNDhoMTZ6TTgwIDcyYzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDg4Yy00LjQgMC04LTMuNi04LThWNzJ6bTExMiAyMDBjLTc3LjEgMC0xMzkuNi0xNC4zLTEzOS42LTMyczYyLjUtMzIgMTM5LjYtMzIgMTM5LjYgMTQuMyAxMzkuNiAzMi02Mi41IDMyLTEzOS42IDMyelwiXVxufTtcbnZhciBmYVRvaWxldFBhcGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RvaWxldC1wYXBlcicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjcxZVwiLCBcIk0xMjggMEM3NC45OCAwIDMyIDg1Ljk2IDMyIDE5MnYxNzIuMDdjMCA0MS4xMi05LjggNjIuNzctMzEuMTcgMTI2Ljg3Qy0yLjYyIDUwMS4zIDUuMDkgNTEyIDE2LjAxIDUxMmgyODAuOTJjMTMuNzcgMCAyNi04LjgxIDMwLjM2LTIxLjg4IDEyLjgzLTM4LjQ4IDI0LjcxLTcyLjQgMjQuNzEtMTI2LjA1VjE5MmMwLTgzLjYgMjMuNjctMTUzLjUyIDYwLjQ0LTE5MkgxMjh6TTk2IDIyNGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNiAxNiA3LjE2IDE2IDE2LTcuMTYgMTYtMTYgMTZ6bTY0IDBjLTguODQgMC0xNi03LjE2LTE2LTE2czcuMTYtMTYgMTYtMTYgMTYgNy4xNiAxNiAxNi03LjE2IDE2LTE2IDE2em02NCAwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnM3LjE2LTE2IDE2LTE2IDE2IDcuMTYgMTYgMTYtNy4xNiAxNi0xNiAxNnptNjQgMGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNiAxNiA3LjE2IDE2IDE2LTcuMTYgMTYtMTYgMTZ6TTQ4MCAwYy01My4wMiAwLTk2IDg1Ljk2LTk2IDE5MnM0Mi45OCAxOTIgOTYgMTkyIDk2LTg1Ljk2IDk2LTE5MlM1MzMuMDIgMCA0ODAgMHptMCAyNTZjLTE3LjY3IDAtMzItMjguNjUtMzItNjRzMTQuMzMtNjQgMzItNjQgMzIgMjguNjUgMzIgNjQtMTQuMzMgNjQtMzIgNjR6XCJdXG59O1xudmFyIGZhVG9pbGV0UGFwZXJTbGFzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0b2lsZXQtcGFwZXItc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImUwNzJcIiwgXCJNNjQsMTkyVjM2NC4xM2MwLDQxLjEyLTkuNzUsNjIuNzUtMzEuMTIsMTI2Ljg3QTE2LDE2LDAsMCwwLDQ4LDUxMkgzMjguODZhMzEuODcsMzEuODcsMCwwLDAsMzAuMzgtMjEuODdjOS4zMS0yNy44MywxOC01My4zNSwyMi4xOC04NS41NWwtMzE2LTI0NC4yNUM2NC41MywxNzAuNjYsNjQsMTgxLjE5LDY0LDE5MlpNNjMzLjgyLDQ1OC4wOWwtMTAyLTc4LjgxQzU3NS4yOCwzNjAuOTEsNjA4LDI4NC4zMiw2MDgsMTkyLDYwOCw4Niw1NjUsMCw1MTIsMHMtOTYsODYtOTYsMTkyYzAsNDIsNyw4MC40LDE4LjQzLDExMkwzODQsMjY1VjE5MmMwLTgzLjYyLDIzLjYzLTE1My41LDYwLjUtMTkySDE2MGMtMjMuMzMsMC00NC42MywxNi44My02MS4yNiw0NC41M0w0NS40NiwzLjM4QTE2LDE2LDAsMCwwLDIzLDYuMTlMMy4zNywzMS40NUExNiwxNiwwLDAsMCw2LjE4LDUzLjkxTDU5NC41NCw1MDguNjNBMTYsMTYsMCwwLDAsNjE3LDUwNS44MWwxOS42NC0yNS4yNkExNiwxNiwwLDAsMCw2MzMuODIsNDU4LjA5Wk01MTIsMjU2Yy0xNy42MywwLTMyLTI4LjYyLTMyLTY0czE0LjM3LTY0LDMyLTY0LDMyLDI4LjYzLDMyLDY0UzUyOS42MiwyNTYsNTEyLDI1NlpcIl1cbn07XG52YXIgZmFUb29sYm94ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Rvb2xib3gnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NTJcIiwgXCJNNTAyLjYzIDIxNC42M2wtNDUuMjUtNDUuMjVjLTYtNi0xNC4xNC05LjM3LTIyLjYzLTkuMzdIMzg0VjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDhIMTc2Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djgwSDc3LjI1Yy04LjQ5IDAtMTYuNjIgMy4zNy0yMi42MyA5LjM3TDkuMzcgMjE0LjYzYy02IDYtOS4zNyAxNC4xNC05LjM3IDIyLjYzVjMyMGgxMjh2LTE2YzAtOC44NCA3LjE2LTE2IDE2LTE2aDMyYzguODQgMCAxNiA3LjE2IDE2IDE2djE2aDEyOHYtMTZjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMzJjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MTZoMTI4di04Mi43NWMwLTguNDgtMy4zNy0xNi42Mi05LjM3LTIyLjYyek0zMjAgMTYwSDE5MlY5NmgxMjh2NjR6bTY0IDIwOGMwIDguODQtNy4xNiAxNi0xNiAxNmgtMzJjLTguODQgMC0xNi03LjE2LTE2LTE2di0xNkgxOTJ2MTZjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTMyYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMTZIMHY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDQ0OGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NkgzODR2MTZ6XCJdXG59O1xudmFyIGZhVG9vbHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndG9vbHMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3ZDlcIiwgXCJNNTAxLjEgMzk1LjdMMzg0IDI3OC42Yy0yMy4xLTIzLjEtNTcuNi0yNy42LTg1LjQtMTMuOUwxOTIgMTU4LjFWOTZMNjQgMCAwIDY0bDk2IDEyOGg2Mi4xbDEwNi42IDEwNi42Yy0xMy42IDI3LjgtOS4yIDYyLjMgMTMuOSA4NS40bDExNy4xIDExNy4xYzE0LjYgMTQuNiAzOC4yIDE0LjYgNTIuNyAwbDUyLjctNTIuN2MxNC41LTE0LjYgMTQuNS0zOC4yIDAtNTIuN3pNMzMxLjcgMjI1YzI4LjMgMCA1NC45IDExIDc0LjkgMzFsMTkuNCAxOS40YzE1LjgtNi45IDMwLjgtMTYuNSA0My44LTI5LjUgMzcuMS0zNy4xIDQ5LjctODkuMyAzNy45LTEzNi43LTIuMi05LTEzLjUtMTIuMS0yMC4xLTUuNWwtNzQuNCA3NC40LTY3LjktMTEuM0wzMzQgOTguOWw3NC40LTc0LjRjNi42LTYuNiAzLjQtMTcuOS01LjctMjAuMi00Ny40LTExLjctOTkuNi45LTEzNi42IDM3LjktMjguNSAyOC41LTQxLjkgNjYuMS00MS4yIDEwMy42bDgyLjEgODIuMWM4LjEtMS45IDE2LjUtMi45IDI0LjctMi45em0tMTAzLjkgODJsLTU2LjctNTYuN0wxOC43IDQwMi44Yy0yNSAyNS0yNSA2NS41IDAgOTAuNXM2NS41IDI1IDkwLjUgMGwxMjMuNi0xMjMuNmMtNy42LTE5LjktOS45LTQxLjYtNS02Mi43ek02NCA0NzJjLTEzLjIgMC0yNC0xMC44LTI0LTI0IDAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRjMCAxMy4yLTEwLjcgMjQtMjQgMjR6XCJdXG59O1xudmFyIGZhVG9vdGggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndG9vdGgnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1YzlcIiwgXCJNNDQzLjk4IDk2LjI1Yy0xMS4wMS00NS4yMi00Ny4xMS04Mi4wNi05Mi4wMS05My43Mi0zMi4xOS04LjM2LTYzIDUuMS04OS4xNCAyNC4zMy0zLjI1IDIuMzktNi45NiAzLjczLTEwLjUgNS40OGwyOC4zMiAxOC4yMWM3LjQyIDQuNzcgOS41OCAxNC42NyA0LjggMjIuMTEtNC40NiA2Ljk1LTE0LjI3IDkuODYtMjIuMTEgNC44TDE2Mi44MyAxMi44NGMtMjAuNy0xMC44NS00My4zOC0xNi40LTY2LjgxLTEwLjMxLTQ0LjkgMTEuNjctODEgNDguNS05Mi4wMSA5My43Mi0xMC4xMyA0MS42Mi0uNDIgODAuODEgMjEuNSAxMTAuNDMgMjMuMzYgMzEuNTcgMzIuNjggNjguNjYgMzYuMjkgMTA3LjM1IDQuNCA0Ny4xNiAxMC4zMyA5NC4xNiAyMC45NCAxNDAuMzJsNy44IDMzLjk1YzMuMTkgMTMuODcgMTUuNDkgMjMuNyAyOS42NyAyMy43IDEzLjk3IDAgMjYuMTUtOS41NSAyOS41NC0yMy4xNmwzNC40Ny0xMzguNDJjNC41Ni0xOC4zMiAyMC45Ni0zMS4xNiAzOS43Ni0zMS4xNnMzNS4yIDEyLjg1IDM5Ljc2IDMxLjE2bDM0LjQ3IDEzOC40MmMzLjM5IDEzLjYxIDE1LjU3IDIzLjE2IDI5LjU0IDIzLjE2IDE0LjE4IDAgMjYuNDgtOS44MyAyOS42Ny0yMy43bDcuOC0zMy45NWMxMC42MS00Ni4xNSAxNi41My05My4xNiAyMC45NC0xNDAuMzIgMy42MS0zOC43IDEyLjkzLTc1Ljc4IDM2LjI5LTEwNy4zNSAyMS45NS0yOS42MSAzMS42Ni02OC44IDIxLjUzLTExMC40M3pcIl1cbn07XG52YXIgZmFUb3JhaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0b3JhaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjZhMFwiLCBcIk0zMjAuMDUgMzY2LjQ4bDE3LjcyLTI5LjY0aC0zNS40NnptOTkuMjEtMTY2SDM4Mi40bDE4LjQ2IDMwLjgyek00OCAwQzIxLjQ5IDAgMCAxNC4zMyAwIDMydjQ0OGMwIDE3LjY3IDIxLjQ5IDMyIDQ4IDMyczQ4LTE0LjMzIDQ4LTMyVjMyQzk2IDE0LjMzIDc0LjUxIDAgNDggMHptMTcyLjc0IDMxMS41aDM2Ljg1bC0xOC40Ni0zMC44MnptMTYxLjcxIDBoMzYuODZsLTE4LjQ1LTMwLjh6TTEyOCA0NjRoMzg0VjQ4SDEyOHptNjYuNzctMjc4LjEzYTIxLjIyIDIxLjIyIDAgMCAxIDE4LjQ4LTEwLjcxaDU5LjQ1bDI5LjEzLTQ4LjcxYTIxLjEzIDIxLjEzIDAgMCAxIDE4LjIyLTEwLjM3QTIwLjc2IDIwLjc2IDAgMCAxIDMzOCAxMjYuMjlsMjkuMjUgNDguODZoNTkuNTJhMjEuMTIgMjEuMTIgMCAwIDEgMTguMSAzMkw0MTUuNjMgMjU2IDQ0NSAzMDVhMjAuNjkgMjAuNjkgMCAwIDEgLjI0IDIxLjEyIDIxLjI1IDIxLjI1IDAgMCAxLTE4LjQ4IDEwLjcyaC01OS40N2wtMjkuMTMgNDguN2EyMS4xMyAyMS4xMyAwIDAgMS0xOC4xNiAxMC40IDIwLjc5IDIwLjc5IDAgMCAxLTE4LTEwLjIybC0yOS4yNS00OC44OGgtNTkuNWEyMS4xMSAyMS4xMSAwIDAgMS0xOC4xLTMyTDIyNC4zNiAyNTYgMTk1IDIwN2EyMC43IDIwLjcgMCAwIDEtLjIzLTIxLjEzek01OTIgMGMtMjYuNTEgMC00OCAxNC4zMy00OCAzMnY0NDhjMCAxNy42NyAyMS40OSAzMiA0OCAzMnM0OC0xNC4zMyA0OC0zMlYzMmMwLTE3LjY3LTIxLjQ5LTMyLTQ4LTMyek0zMjAgMTQ1LjUzbC0xNy43OCAyOS42MmgzNS40NnptLTYyLjQ1IDU1aC0zNi44MWwxOC40NCAzMC44em0yOS41OCAxMTFoNjUuNzlMMzg2LjA5IDI1NmwtMzMuMjMtNTUuNTJoLTY1Ljc5TDI1My45IDI1NnpcIl1cbn07XG52YXIgZmFUb3JpaUdhdGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndG9yaWktZ2F0ZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjZhMVwiLCBcIk0zNzYuNDUgMzJoLTI0MC45QTMwMy4xNyAzMDMuMTcgMCAwIDEgMCAwdjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJ2NjRIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4djI0MGMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyNTZoMjU2djI0MGMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyNTZoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2aC00OHYtNjRoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYwYTMwMy4xNyAzMDMuMTcgMCAwIDEtMTM1LjU1IDMyek0xMjggMTI4aDk2djY0aC05NnYtNjR6bTI1NiA2NGgtOTZ2LTY0aDk2djY0elwiXVxufTtcbnZhciBmYVRyYWN0b3IgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJhY3RvcicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjcyMlwiLCBcIk01MjggMzM2Yy00OC42IDAtODggMzkuNC04OCA4OHMzOS40IDg4IDg4IDg4IDg4LTM5LjQgODgtODgtMzkuNC04OC04OC04OHptMCAxMTJjLTEzLjIzIDAtMjQtMTAuNzctMjQtMjRzMTAuNzctMjQgMjQtMjQgMjQgMTAuNzcgMjQgMjQtMTAuNzcgMjQtMjQgMjR6bTgwLTI4OGgtNjR2LTQwLjJjMC0xNC4xMiA0LjctMjcuNzYgMTMuMTUtMzguODQgNC40Mi01LjggMy41NS0xNC4wNi0xLjMyLTE5LjQ5TDUzNC4yIDM3LjNjLTYuNjYtNy40NS0xOC4zMi02LjkyLTI0LjcuNzhDNDkwLjU4IDYwLjkgNDgwIDg5LjgxIDQ4MCAxMTkuOFYxNjBIMzc3LjY3TDMyMS41OCAyOS4xNEE0Ny45MTQgNDcuOTE0IDAgMCAwIDI3Ny40NSAwSDE0NGMtMjYuNDcgMC00OCAyMS41My00OCA0OHYxNDYuNTJjLTguNjMtNi43My0yMC45Ni02LjQ2LTI4Ljg5IDEuNDdMMzYgMjI3LjFjLTguNTkgOC41OS04LjU5IDIyLjUyIDAgMzEuMTFsNS4wNiA1LjA2Yy00Ljk5IDkuMjYtOC45NiAxOC44Mi0xMS45MSAyOC43MkgyMmMtMTIuMTUgMC0yMiA5Ljg1LTIyIDIydjQ0YzAgMTIuMTUgOS44NSAyMiAyMiAyMmg3LjE0YzIuOTYgOS45MSA2LjkyIDE5LjQ2IDExLjkxIDI4LjczbC01LjA2IDUuMDZjLTguNTkgOC41OS04LjU5IDIyLjUyIDAgMzEuMTFMNjcuMSA0NzZjOC41OSA4LjU5IDIyLjUyIDguNTkgMzEuMTEgMGw1LjA2LTUuMDZjOS4yNiA0Ljk5IDE4LjgyIDguOTYgMjguNzIgMTEuOTFWNDkwYzAgMTIuMTUgOS44NSAyMiAyMiAyMmg0NGMxMi4xNSAwIDIyLTkuODUgMjItMjJ2LTcuMTRjOS45LTIuOTUgMTkuNDYtNi45MiAyOC43Mi0xMS45MWw1LjA2IDUuMDZjOC41OSA4LjU5IDIyLjUyIDguNTkgMzEuMTEgMGwzMS4xMS0zMS4xMWM4LjU5LTguNTkgOC41OS0yMi41MiAwLTMxLjExbC01LjA2LTUuMDZjNC45OS05LjI2IDguOTYtMTguODIgMTEuOTEtMjguNzJIMzMwYzEyLjE1IDAgMjItOS44NSAyMi0yMnYtNmg4MC41NGMyMS45MS0yOC45OSA1Ni4zMi00OCA5NS40Ni00OCAxOC42NCAwIDM2LjA3IDQuNjEgNTEuOCAxMi4ybDUwLjgyLTUwLjgyYzYtNiA5LjM3LTE0LjE0IDkuMzctMjIuNjNWMTkyYy4wMS0xNy42Ny0xNC4zMi0zMi0zMS45OS0zMnpNMTc2IDQxNmMtNDQuMTggMC04MC0zNS44Mi04MC04MHMzNS44Mi04MCA4MC04MCA4MCAzNS44MiA4MCA4MC0zNS44MiA4MC04MCA4MHptMjItMjU2aC0zOFY2NGgxMDYuODlsNDEuMTUgOTZIMTk4elwiXVxufTtcbnZhciBmYVRyYWRlbWFyayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cmFkZW1hcmsnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYyNWNcIiwgXCJNMjYwLjYgOTZIMTJjLTYuNiAwLTEyIDUuNC0xMiAxMnY0My4xYzAgNi42IDUuNCAxMiAxMiAxMmg4NS4xVjQwNGMwIDYuNiA1LjQgMTIgMTIgMTJoNTQuM2M2LjYgMCAxMi01LjQgMTItMTJWMTYzLjFoODUuMWM2LjYgMCAxMi01LjQgMTItMTJWMTA4Yy4xLTYuNi01LjMtMTItMTEuOS0xMnpNNjQwIDQwM2wtMjQtMjk2Yy0uNS02LjItNS43LTExLTEyLTExaC02NS40Yy01LjEgMC05LjcgMy4zLTExLjMgOC4xbC00My44IDEyNy4xYy03LjIgMjAuNi0xNi4xIDUyLjgtMTYuMSA1Mi44aC0uOXMtOC45LTMyLjItMTYuMS01Mi44bC00My44LTEyNy4xYy0xLjctNC44LTYuMi04LjEtMTEuMy04LjFoLTY1LjRjLTYuMiAwLTExLjQgNC44LTEyIDExbC0yNC40IDI5NmMtLjYgNyA0LjkgMTMgMTIgMTNIMzYwYzYuMyAwIDExLjUtNC45IDEyLTExLjJsOS4xLTEzMi45YzEuOC0yNC4yIDAtNTMuNyAwLTUzLjdoLjlzMTAuNyAzMy42IDE3LjkgNTMuN2wzMC43IDg0LjdjMS43IDQuNyA2LjIgNy45IDExLjMgNy45aDUwLjNjNS4xIDAgOS42LTMuMiAxMS4zLTcuOWwzMC43LTg0LjdjNy4yLTIwLjEgMTcuOS01My43IDE3LjktNTMuN2guOXMtMS44IDI5LjUgMCA1My43bDkuMSAxMzIuOWMuNCA2LjMgNS43IDExLjIgMTIgMTEuMkg2MjhjNyAwIDEyLjUtNiAxMi0xM3pcIl1cbn07XG52YXIgZmFUcmFmZmljTGlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJhZmZpYy1saWdodCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjYzN1wiLCBcIk0zODQgMTkyaC02NHYtMzcuODhjMzcuMi0xMy4yMiA2NC00OC4zOCA2NC05MC4xMmgtNjRWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkg5NkM3OC4zMyAwIDY0IDE0LjMzIDY0IDMydjMySDBjMCA0MS43NCAyNi44IDc2LjkgNjQgOTAuMTJWMTkySDBjMCA0MS43NCAyNi44IDc2LjkgNjQgOTAuMTJWMzIwSDBjMCA0Mi44NCAyOC4yNSA3OC42OSA2Ni45OSA5MS4wNUM3OS40MiA0NjguNzIgMTMwLjYgNTEyIDE5MiA1MTJzMTEyLjU4LTQzLjI4IDEyNS4wMS0xMDAuOTVDMzU1Ljc1IDM5OC42OSAzODQgMzYyLjg0IDM4NCAzMjBoLTY0di0zNy44OGMzNy4yLTEzLjIyIDY0LTQ4LjM4IDY0LTkwLjEyek0xOTIgNDE2Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4czIxLjQ5LTQ4IDQ4LTQ4IDQ4IDIxLjQ5IDQ4IDQ4LTIxLjQ5IDQ4LTQ4IDQ4em0wLTEyOGMtMjYuNTEgMC00OC0yMS40OS00OC00OHMyMS40OS00OCA0OC00OCA0OCAyMS40OSA0OCA0OC0yMS40OSA0OC00OCA0OHptMC0xMjhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6XCJdXG59O1xudmFyIGZhVHJhaWxlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cmFpbGVyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlMDQxXCIsIFwiTTYyNCwzMjBINTQ0VjgwYTE2LDE2LDAsMCwwLTE2LTE2SDE2QTE2LDE2LDAsMCwwLDAsODBWMzY4YTE2LDE2LDAsMCwwLDE2LDE2SDY1LjYxYzcuODMtNTQuMjEsNTQtOTYsMTEwLjM5LTk2czEwMi41Niw0MS43OSwxMTAuMzksOTZINjI0YTE2LDE2LDAsMCwwLDE2LTE2VjMzNkExNiwxNiwwLDAsMCw2MjQsMzIwWk05NiwyNDMuNjhhMTc2LjI5LDE3Ni4yOSwwLDAsMC0zMiwyMC43MVYxMzZhOCw4LDAsMCwxLDgtOEg4OGE4LDgsMCwwLDEsOCw4Wm05Ni0xOC41NGMtNS4zMS0uNDktMTAuNTctMS4xNC0xNi0xLjE0cy0xMC42OS42NS0xNiwxLjE0VjEzNmE4LDgsMCwwLDEsOC04aDE2YTgsOCwwLDAsMSw4LDhabTk2LDM5LjI1YTE3Ni4yOSwxNzYuMjksMCwwLDAtMzItMjAuNzFWMTM2YTgsOCwwLDAsMSw4LThoMTZhOCw4LDAsMCwxLDgsOFpNMzg0LDMyMEgzNTJWMTM2YTgsOCwwLDAsMSw4LThoMTZhOCw4LDAsMCwxLDgsOFptOTYsMEg0NDhWMTM2YTgsOCwwLDAsMSw4LThoMTZhOCw4LDAsMCwxLDgsOFptLTMwNCwwYTgwLDgwLDAsMSwwLDgwLDgwQTgwLDgwLDAsMCwwLDE3NiwzMjBabTAsMTEyYTMyLDMyLDAsMSwxLDMyLTMyQTMyLDMyLDAsMCwxLDE3Niw0MzJaXCJdXG59O1xudmFyIGZhVHJhaW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJhaW4nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYyMzhcIiwgXCJNNDQ4IDk2djI1NmMwIDUxLjgxNS02MS42MjQgOTYtMTMwLjAyMiA5Nmw2Mi45OCA0OS43MjFDMzg2LjkwNSA1MDIuNDE3IDM4My41NjIgNTEyIDM3NiA1MTJINzJjLTcuNTc4IDAtMTAuODkyLTkuNTk0LTQuOTU3LTE0LjI3OUwxMzAuMDIyIDQ0OEM2MS44MiA0NDggMCA0MDMuOTU0IDAgMzUyVjk2QzAgNDIuOTgxIDY0IDAgMTI4IDBoMTkyYzY1IDAgMTI4IDQyLjk4MSAxMjggOTZ6bS00OCAxMzZWMTIwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEg3MmMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djExMmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzA0YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHptLTE3NiA2NGMtMzAuOTI4IDAtNTYgMjUuMDcyLTU2IDU2czI1LjA3MiA1NiA1NiA1NiA1Ni0yNS4wNzIgNTYtNTYtMjUuMDcyLTU2LTU2LTU2elwiXVxufTtcbnZhciBmYVRyYW0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJhbScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjdkYVwiLCBcIk0yODggNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJTMzA1LjcgMCAyODggMHMtMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem0yMjMuNS0xMi4xYy0yLjMtOC42LTExLTEzLjYtMTkuNi0xMS4zbC00ODAgMTI4Yy04LjUgMi4zLTEzLjYgMTEtMTEuMyAxOS42QzIuNSAxOTUuMyA4LjkgMjAwIDE2IDIwMGMxLjQgMCAyLjgtLjIgNC4xLS41TDI0MCAxNDAuOFYyMjRINjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjIyNGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzODRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjU2YzAtMTcuNy0xNC4zLTMyLTMyLTMySDI3MnYtOTEuN2wyMjguMS02MC44YzguNi0yLjMgMTMuNi0xMS4xIDExLjQtMTkuNnpNMTc2IDM4NEg4MHYtOTZoOTZ2OTZ6bTE2MC05Nmg5NnY5NmgtOTZ2LTk2em0tMzIgMHY5NmgtOTZ2LTk2aDk2ek0xOTIgOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyelwiXVxufTtcbnZhciBmYVRyYW5zZ2VuZGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RyYW5zZ2VuZGVyJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmMjI0XCIsIFwiTTM3MiAwaC03OWMtMTAuNyAwLTE2IDEyLjktOC41IDIwLjVsMTYuOSAxNi45LTgwLjcgODAuN0MxOTguNSAxMDQuMSAxNzIuMiA5NiAxNDQgOTYgNjQuNSA5NiAwIDE2MC41IDAgMjQwYzAgNjguNSA0Ny45IDEyNS45IDExMiAxNDAuNFY0MDhINzZjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMzZ2MjhjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtMjhoMzZjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTM2di0yNy42YzY0LjEtMTQuNiAxMTItNzEuOSAxMTItMTQwLjQgMC0yOC4yLTguMS01NC41LTIyLjEtNzYuN2w4MC43LTgwLjcgMTYuOSAxNi45YzcuNiA3LjYgMjAuNSAyLjIgMjAuNS04LjVWMTJjMC02LjYtNS40LTEyLTEyLTEyek0xNDQgMzIwYy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHpcIl1cbn07XG52YXIgZmFUcmFuc2dlbmRlckFsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cmFuc2dlbmRlci1hbHQnLFxuICBpY29uOiBbNDgwLCA1MTIsIFtdLCBcImYyMjVcIiwgXCJNNDY4IDBoLTc5Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWwxNi45IDE2LjktODAuNyA4MC43QzI5NC41IDEwNC4xIDI2OC4yIDk2IDI0MCA5NmMtMjguMiAwLTU0LjUgOC4xLTc2LjcgMjIuMWwtMTYuNS0xNi41IDE5LjgtMTkuOGM0LjctNC43IDQuNy0xMi4zIDAtMTdsLTI4LjMtMjguM2MtNC43LTQuNy0xMi4zLTQuNy0xNyAwbC0xOS44IDE5LjgtMTktMTkgMTYuOS0xNi45QzEwNy4xIDEyLjkgMTAxLjcgMCA5MSAwSDEyQzUuNCAwIDAgNS40IDAgMTJ2NzljMCAxMC43IDEyLjkgMTYgMjAuNSA4LjVsMTYuOS0xNi45IDE5IDE5LTE5LjggMTkuOGMtNC43IDQuNy00LjcgMTIuMyAwIDE3bDI4LjMgMjguM2M0LjcgNC43IDEyLjMgNC43IDE3IDBsMTkuOC0xOS44IDE2LjUgMTYuNUMxMDQuMSAxODUuNSA5NiAyMTEuOCA5NiAyNDBjMCA2OC41IDQ3LjkgMTI1LjkgMTEyIDE0MC40VjQwOGgtMzZjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMzZ2MjhjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtMjhoMzZjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTM2di0yNy42YzY0LjEtMTQuNiAxMTItNzEuOSAxMTItMTQwLjQgMC0yOC4yLTguMS01NC41LTIyLjEtNzYuN2w4MC43LTgwLjcgMTYuOSAxNi45YzcuNiA3LjYgMjAuNSAyLjIgMjAuNS04LjVWMTJjMC02LjYtNS40LTEyLTEyLTEyek0yNDAgMzIwYy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHpcIl1cbn07XG52YXIgZmFUcmFzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cmFzaCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjFmOFwiLCBcIk00MzIgMzJIMzEybC05LjQtMTguN0EyNCAyNCAwIDAgMCAyODEuMSAwSDE2Ni44YTIzLjcyIDIzLjcyIDAgMCAwLTIxLjQgMTMuM0wxMzYgMzJIMTZBMTYgMTYgMCAwIDAgMCA0OHYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6TTUzLjIgNDY3YTQ4IDQ4IDAgMCAwIDQ3LjkgNDVoMjQ1LjhhNDggNDggMCAwIDAgNDcuOS00NUw0MTYgMTI4SDMyelwiXVxufTtcbnZhciBmYVRyYXNoQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RyYXNoLWFsdCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjJlZFwiLCBcIk0zMiA0NjRhNDggNDggMCAwIDAgNDggNDhoMjg4YTQ4IDQ4IDAgMCAwIDQ4LTQ4VjEyOEgzMnptMjcyLTI1NmExNiAxNiAwIDAgMSAzMiAwdjIyNGExNiAxNiAwIDAgMS0zMiAwem0tOTYgMGExNiAxNiAwIDAgMSAzMiAwdjIyNGExNiAxNiAwIDAgMS0zMiAwem0tOTYgMGExNiAxNiAwIDAgMSAzMiAwdjIyNGExNiAxNiAwIDAgMS0zMiAwek00MzIgMzJIMzEybC05LjQtMTguN0EyNCAyNCAwIDAgMCAyODEuMSAwSDE2Ni44YTIzLjcyIDIzLjcyIDAgMCAwLTIxLjQgMTMuM0wxMzYgMzJIMTZBMTYgMTYgMCAwIDAgMCA0OHYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJdXG59O1xudmFyIGZhVHJhc2hSZXN0b3JlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RyYXNoLXJlc3RvcmUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY4MjlcIiwgXCJNNTMuMiA0NjdhNDggNDggMCAwIDAgNDcuOSA0NWgyNDUuOGE0OCA0OCAwIDAgMCA0Ny45LTQ1TDQxNiAxMjhIMzJ6bTcwLjExLTE3NS44bDg5LjM4LTk0LjI2YTE1LjQxIDE1LjQxIDAgMCAxIDIyLjYyIDBsODkuMzggOTQuMjZjMTAuMDggMTAuNjIgMi45NCAyOC44LTExLjMyIDI4LjhIMjU2djExMmExNiAxNiAwIDAgMS0xNiAxNmgtMzJhMTYgMTYgMCAwIDEtMTYtMTZWMzIwaC01Ny4zN2MtMTQuMjYgMC0yMS40LTE4LjE4LTExLjMyLTI4Ljh6TTQzMiAzMkgzMTJsLTkuNC0xOC43QTI0IDI0IDAgMCAwIDI4MS4xIDBIMTY2LjhhMjMuNzIgMjMuNzIgMCAwIDAtMjEuNCAxMy4zTDEzNiAzMkgxNkExNiAxNiAwIDAgMCAwIDQ4djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIl1cbn07XG52YXIgZmFUcmFzaFJlc3RvcmVBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJhc2gtcmVzdG9yZS1hbHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY4MmFcIiwgXCJNMzIgNDY0YTQ4IDQ4IDAgMCAwIDQ4IDQ4aDI4OGE0OCA0OCAwIDAgMCA0OC00OFYxMjhIMzJ6bTkxLjMxLTE3Mi44bDg5LjM4LTk0LjI2YTE1LjQxIDE1LjQxIDAgMCAxIDIyLjYyIDBsODkuMzggOTQuMjZjMTAuMDggMTAuNjIgMi45NCAyOC44LTExLjMyIDI4LjhIMjU2djExMmExNiAxNiAwIDAgMS0xNiAxNmgtMzJhMTYgMTYgMCAwIDEtMTYtMTZWMzIwaC01Ny4zN2MtMTQuMjYgMC0yMS40LTE4LjE4LTExLjMyLTI4Ljh6TTQzMiAzMkgzMTJsLTkuNC0xOC43QTI0IDI0IDAgMCAwIDI4MS4xIDBIMTY2LjhhMjMuNzIgMjMuNzIgMCAwIDAtMjEuNCAxMy4zTDEzNiAzMkgxNkExNiAxNiAwIDAgMCAwIDQ4djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIl1cbn07XG52YXIgZmFUcmVlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RyZWUnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYxYmJcIiwgXCJNMzc4LjMxIDM3OC40OUwyOTguNDIgMjg4aDMwLjYzYzkuMDEgMCAxNi45OC01IDIwLjc4LTEzLjA2IDMuOC04LjA0IDIuNTUtMTcuMjYtMy4yOC0yNC4wNUwyNjguNDIgMTYwaDI4Ljg5YzkuMSAwIDE3LjMtNS4zNSAyMC44Ni0xMy42MSAzLjUyLTguMTMgMS44Ni0xNy41OS00LjI0LTI0LjA4TDIwMy42NiA0LjgzYy02LjAzLTYuNDUtMTcuMjgtNi40NS0yMy4zMiAwTDcwLjA2IDEyMi4zMWMtNi4xIDYuNDktNy43NSAxNS45NS00LjI0IDI0LjA4QzY5LjM4IDE1NC42NSA3Ny41OSAxNjAgODYuNjkgMTYwaDI4Ljg5bC03OC4xNCA5MC45MWMtNS44MSA2Ljc4LTcuMDYgMTUuOTktMy4yNyAyNC4wNEMzNy45NyAyODMgNDUuOTMgMjg4IDU0Ljk1IDI4OGgzMC42M0w1LjY5IDM3OC40OWMtNiA2Ljc5LTcuMzYgMTYuMDktMy41NiAyNC4yNiAzLjc1IDguMDUgMTIgMTMuMjUgMjEuMDEgMTMuMjVIMTYwdjI0LjQ1bC0zMC4yOSA0OC40Yy01LjMyIDEwLjY0IDIuNDIgMjMuMTYgMTQuMzEgMjMuMTZoOTUuOTZjMTEuODkgMCAxOS42My0xMi41MiAxNC4zMS0yMy4xNkwyMjQgNDQwLjQ1VjQxNmgxMzYuODZjOS4wMSAwIDE3LjI2LTUuMiAyMS4wMS0xMy4yNSAzLjgtOC4xNyAyLjQ0LTE3LjQ3LTMuNTYtMjQuMjZ6XCJdXG59O1xudmFyIGZhVHJvcGh5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Ryb3BoeScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjA5MVwiLCBcIk01NTIgNjRINDQ4VjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0SDE1MmMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDBIMjRDMTAuNyA2NCAwIDc0LjcgMCA4OHY1NmMwIDM1LjcgMjIuNSA3Mi40IDYxLjkgMTAwLjcgMzEuNSAyMi43IDY5LjggMzcuMSAxMTAgNDEuN0MyMDMuMyAzMzguNSAyNDAgMzYwIDI0MCAzNjB2NzJoLTQ4Yy0zNS4zIDAtNjQgMjAuNy02NCA1NnYxMmMwIDYuNiA1LjQgMTIgMTIgMTJoMjk2YzYuNiAwIDEyLTUuNCAxMi0xMnYtMTJjMC0zNS4zLTI4LjctNTYtNjQtNTZoLTQ4di03MnMzNi43LTIxLjUgNjguMS03My42YzQwLjMtNC42IDc4LjYtMTkgMTEwLTQxLjcgMzkuMy0yOC4zIDYxLjktNjUgNjEuOS0xMDAuN1Y4OGMwLTEzLjMtMTAuNy0yNC0yNC0yNHpNOTkuMyAxOTIuOEM3NC45IDE3NS4yIDY0IDE1NS42IDY0IDE0NHYtMTZoNjQuMmMxIDMyLjYgNS44IDYxLjIgMTIuOCA4Ni4yLTE1LjEtNS4yLTI5LjItMTIuNC00MS43LTIxLjR6TTUxMiAxNDRjMCAxNi4xLTE3LjcgMzYuMS0zNS4zIDQ4LjgtMTIuNSA5LTI2LjcgMTYuMi00MS44IDIxLjQgNy0yNSAxMS44LTUzLjYgMTIuOC04Ni4ySDUxMnYxNnpcIl1cbn07XG52YXIgZmFUcnVjayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cnVjaycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjBkMVwiLCBcIk02MjQgMzUyaC0xNlYyNDMuOWMwLTEyLjctNS4xLTI0LjktMTQuMS0zMy45TDQ5NCAxMTAuMWMtOS05LTIxLjItMTQuMS0zMy45LTE0LjFINDE2VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHYzMjBjMCAyNi41IDIxLjUgNDggNDggNDhoMTZjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NmgxMjhjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05Nmg0OGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnpNMTYwIDQ2NGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6bTMyMCAwYy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHptODAtMjA4SDQxNlYxNDRoNDQuMWw5OS45IDk5LjlWMjU2elwiXVxufTtcbnZhciBmYVRydWNrTG9hZGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cnVjay1sb2FkaW5nJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNGRlXCIsIFwiTTUwLjIgMzc1LjZjMi4zIDguNSAxMS4xIDEzLjYgMTkuNiAxMS4zbDIxNi40LTU4YzguNS0yLjMgMTMuNi0xMS4xIDExLjMtMTkuNmwtNDkuNy0xODUuNWMtMi4zLTguNS0xMS4xLTEzLjYtMTkuNi0xMS4zTDE1MSAxMzMuM2wyNC44IDkyLjctNjEuOCAxNi41LTI0LjgtOTIuNy03Ny4zIDIwLjdDMy40IDE3Mi44LTEuNyAxODEuNi42IDE5MC4xbDQ5LjYgMTg1LjV6TTM4NCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzMjMuNkw1LjkgNDUwYy00LjMgMS4yLTYuOCA1LjYtNS42IDkuOGwxMi42IDQ2LjNjMS4yIDQuMyA1LjYgNi44IDkuOCA1LjZsMzkzLjctMTA3LjRDNDE4LjggNDY0LjEgNDY3LjYgNTEyIDUyOCA1MTJjNjEuOSAwIDExMi01MC4xIDExMi0xMTJWMEgzODR6bTE0NCA0NDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4elwiXVxufTtcbnZhciBmYVRydWNrTW9uc3RlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cnVjay1tb25zdGVyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNjNiXCIsIFwiTTYyNCAyMjRoLTE2di02NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC03My42TDQxOS4yMiAyNC4wMkE2NC4wMjUgNjQuMDI1IDAgMCAwIDM2OS4yNCAwSDI1NmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY5Nkg0OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2ODBIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2LjcyYzI5LjIxLTM4LjY1IDc1LjEtNjQgMTI3LjI4LTY0czk4LjA3IDI1LjM1IDEyNy4yOCA2NGg2NS40NWMyOS4yMS0zOC42NSA3NS4xLTY0IDEyNy4yOC02NHM5OC4wNyAyNS4zNSAxMjcuMjggNjRINjI0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnptLTMzNi05NlY2NGg4MS4yNGw1MS4yIDY0SDI4OHptMzA0IDIyNGgtNS4yYy0yLjItNy4zMy01LjA3LTE0LjI4LTguNjUtMjAuODlsMy42Ny0zLjY3YzYuMjUtNi4yNSA2LjI1LTE2LjM4IDAtMjIuNjNsLTIyLjYzLTIyLjYzYy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwbC0zLjY3IDMuNjdBMTEwLjg1IDExMC44NSAwIDAgMCA1MTIgMjc3LjJWMjcyYzAtOC44NC03LjE2LTE2LTE2LTE2aC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NS4yYy03LjMzIDIuMi0xNC4yOCA1LjA3LTIwLjg5IDguNjVsLTMuNjctMy42N2MtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtMjIuNjMgMjIuNjNjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNsMy42NyAzLjY3QTExMC44NSAxMTAuODUgMCAwIDAgMzczLjIgMzUySDM2OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNS4yYzIuMiA3LjMzIDUuMDcgMTQuMjggOC42NSAyMC44OWwtMy42NyAzLjY3Yy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDIyLjYzIDIyLjYzYzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMy42Ny0zLjY3YzYuNjEgMy41NyAxMy41NyA2LjQ1IDIwLjkgOC42NXY1LjJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTUuMmM3LjMzLTIuMiAxNC4yOC01LjA3IDIwLjktOC42NWwzLjY3IDMuNjdjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGwyMi42My0yMi42M2M2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzbC0zLjY3LTMuNjdhMTEwLjg1IDExMC44NSAwIDAgMCA4LjY1LTIwLjg5aDUuMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjLS4wMi04Ljg0LTcuMTgtMTYtMTYuMDItMTZ6bS0xMTIgODBjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6bS0yMDgtODBoLTUuMmMtMi4yLTcuMzMtNS4wNy0xNC4yOC04LjY1LTIwLjg5bDMuNjctMy42N2M2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzbC0yMi42My0yMi42M2MtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtMy42NyAzLjY3QTExMC44NSAxMTAuODUgMCAwIDAgMTkyIDI3Ny4yVjI3MmMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djUuMmMtNy4zMyAyLjItMTQuMjggNS4wNy0yMC44OSA4LjY1bC0zLjY3LTMuNjdjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBMNTguMTggMzA0LjhjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNsMy42NyAzLjY3YTExMC44NSAxMTAuODUgMCAwIDAtOC42NSAyMC44OUg0OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNS4yYzIuMiA3LjMzIDUuMDcgMTQuMjggOC42NSAyMC44OWwtMy42NyAzLjY3Yy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDIyLjYzIDIyLjYzYzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMy42Ny0zLjY3YzYuNjEgMy41NyAxMy41NyA2LjQ1IDIwLjkgOC42NXY1LjJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTUuMmM3LjMzLTIuMiAxNC4yOC01LjA3IDIwLjktOC42NWwzLjY3IDMuNjdjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGwyMi42My0yMi42M2M2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzbC0zLjY3LTMuNjdhMTEwLjg1IDExMC44NSAwIDAgMCA4LjY1LTIwLjg5aDUuMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJDMjg4IDM1OS4xNiAyODAuODQgMzUyIDI3MiAzNTJ6bS0xMTIgODBjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6XCJdXG59O1xudmFyIGZhVHJ1Y2tNb3ZpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJ1Y2stbW92aW5nJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNGRmXCIsIFwiTTYyMS4zIDIzNy4zbC01OC41LTU4LjVjLTEyLTEyLTI4LjMtMTguNy00NS4zLTE4LjdINDgwVjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjR2MzM2YzAgNDQuMiAzNS44IDgwIDgwIDgwIDI2LjMgMCA0OS40LTEyLjkgNjQtMzIuNCAxNC42IDE5LjYgMzcuNyAzMi40IDY0IDMyLjQgNDQuMiAwIDgwLTM1LjggODAtODAgMC01LjUtLjYtMTAuOC0xLjYtMTZoMTYzLjJjLTEuMSA1LjItMS42IDEwLjUtMS42IDE2IDAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC01LjUtLjYtMTAuOC0xLjYtMTZINjI0YzguOCAwIDE2LTcuMiAxNi0xNnYtODUuNWMwLTE3LTYuNy0zMy4yLTE4LjctNDUuMnpNODAgNDMyYy0xNy42IDAtMzItMTQuNC0zMi0zMnMxNC40LTMyIDMyLTMyIDMyIDE0LjQgMzIgMzItMTQuNCAzMi0zMiAzMnptMTI4IDBjLTE3LjYgMC0zMi0xNC40LTMyLTMyczE0LjQtMzIgMzItMzIgMzIgMTQuNCAzMiAzMi0xNC40IDMyLTMyIDMyem0yNzItMjI0aDM3LjVjNC4zIDAgOC4zIDEuNyAxMS4zIDQuN2w0My4zIDQzLjNINDgwdi00OHptNDggMjI0Yy0xNy42IDAtMzItMTQuNC0zMi0zMnMxNC40LTMyIDMyLTMyIDMyIDE0LjQgMzIgMzItMTQuNCAzMi0zMiAzMnpcIl1cbn07XG52YXIgZmFUcnVja1BpY2t1cCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cnVjay1waWNrdXAnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY2M2NcIiwgXCJNNjI0IDI4OGgtMTZ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTQ4TDQxOS4yMiA1Ni4wMkE2NC4wMjUgNjQuMDI1IDAgMCAwIDM2OS4yNCAzMkgyNTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTI4SDY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0OS42MWMtLjc2IDUuMjctMS42MSAxMC41Mi0xLjYxIDE2IDAgNjEuODYgNTAuMTQgMTEyIDExMiAxMTJzMTEyLTUwLjE0IDExMi0xMTJjMC01LjQ4LS44NS0xMC43My0xLjYxLTE2aDY3LjIzYy0uNzYgNS4yNy0xLjYxIDEwLjUyLTEuNjEgMTYgMCA2MS44NiA1MC4xNCAxMTIgMTEyIDExMnMxMTItNTAuMTQgMTEyLTExMmMwLTUuNDgtLjg1LTEwLjczLTEuNjEtMTZINjI0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpNMjg4IDk2aDgxLjI0bDc2LjggOTZIMjg4Vjk2ek0xNzYgNDE2Yy0yNi40NyAwLTQ4LTIxLjUzLTQ4LTQ4czIxLjUzLTQ4IDQ4LTQ4IDQ4IDIxLjUzIDQ4IDQ4LTIxLjUzIDQ4LTQ4IDQ4em0yODggMGMtMjYuNDcgMC00OC0yMS41My00OC00OHMyMS41My00OCA0OC00OCA0OCAyMS41MyA0OCA0OC0yMS41MyA0OC00OCA0OHpcIl1cbn07XG52YXIgZmFUc2hpcnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHNoaXJ0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTUzXCIsIFwiTTYzMS4yIDk2LjVMNDM2LjUgMEM0MTYuNCAyNy44IDM3MS45IDQ3LjIgMzIwIDQ3LjJTMjIzLjYgMjcuOCAyMDMuNSAwTDguOCA5Ni41Yy03LjkgNC0xMS4xIDEzLjYtNy4yIDIxLjVsNTcuMiAxMTQuNWM0IDcuOSAxMy42IDExLjEgMjEuNSA3LjJsNTYuNi0yNy43YzEwLjYtNS4yIDIzIDIuNSAyMyAxNC40VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgyNTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI2LjNjMC0xMS44IDEyLjQtMTkuNiAyMy0xNC40bDU2LjYgMjcuN2M3LjkgNCAxNy41LjggMjEuNS03LjJMNjM4LjMgMTE4YzQtNy45LjgtMTcuNi03LjEtMjEuNXpcIl1cbn07XG52YXIgZmFUdHkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHR5JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMWU0XCIsIFwiTTUuMzcgMTAzLjgyMmMxMzguNTMyLTEzOC41MzIgMzYyLjkzNi0xMzguMzI2IDUwMS4yNjIgMCA2LjA3OCA2LjA3OCA3LjA3NCAxNS40OTYgMi41ODMgMjIuNjgxbC00My4yMTQgNjkuMTM4YTE4LjMzMiAxOC4zMzIgMCAwIDEtMjIuMzU2IDcuMzA1bC04Ni40MjItMzQuNTY5YTE4LjMzNSAxOC4zMzUgMCAwIDEtMTEuNDM0LTE4Ljg0NkwzNTEuNzQxIDkwYy02Mi4xNDUtMjIuNDU0LTEzMC42MzYtMjEuOTg2LTE5MS40ODMgMGw1Ljk1MyA1OS41MzJhMTguMzMxIDE4LjMzMSAwIDAgMS0xMS40MzQgMTguODQ2bC04Ni40MjMgMzQuNTY4YTE4LjMzNCAxOC4zMzQgMCAwIDEtMjIuMzU2LTcuMzA1TDIuNzg3IDEyNi41MDJhMTguMzMzIDE4LjMzMyAwIDAgMSAyLjU4My0yMi42OHpNOTYgMzA4di00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDQ0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0tMzM2IDk2di00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDkyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnpNOTYgNTAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDQ0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMjg4IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJIMTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjMyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnpcIl1cbn07XG52YXIgZmFUdiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0dicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjI2Y1wiLCBcIk01OTIgMEg0OEE0OCA0OCAwIDAgMCAwIDQ4djMyMGE0OCA0OCAwIDAgMCA0OCA0OGgyNDB2MzJIMTEyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZIMzUydi0zMmgyNDBhNDggNDggMCAwIDAgNDgtNDhWNDhhNDggNDggMCAwIDAtNDgtNDh6bS0xNiAzNTJINjRWNjRoNTEyelwiXVxufTtcbnZhciBmYVVtYnJlbGxhID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VtYnJlbGxhJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMGU5XCIsIFwiTTU3NS43IDI4MC44QzU0Ny4xIDE0NC41IDQzNy4zIDYyLjYgMzIwIDQ5LjlWMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2MTcuOUMxMzguMyA2Mi42IDI5LjUgMTQ0LjUuMyAyODAuOGMtMi4yIDEwLjEgOC41IDIxLjMgMTguNyAxMS40IDUyLTU1IDEwNy43LTUyLjQgMTU4LjYgMzcgNS4zIDkuNSAxNC45IDguNiAxOS43IDAgMjAuMi0zNS40IDQ0LjktNzMuMiA5MC43LTczLjIgNTguNSAwIDg4LjIgNjguOCA5MC43IDczLjIgNC44IDguNiAxNC40IDkuNSAxOS43IDAgNTEtODkuNSAxMDcuMS05MS40IDE1OC42LTM3IDEwLjMgMTAgMjAuOS0xLjMgMTguNy0xMS40ek0yNTYgMzAxLjdWNDMyYzAgOC44LTcuMiAxNi0xNiAxNi03LjggMC0xMy4yLTUuMy0xNS4xLTEwLjctNS45LTE2LjctMjQuMS0yNS40LTQwLjgtMTkuNS0xNi43IDUuOS0yNS40IDI0LjItMTkuNSA0MC44IDExLjIgMzEuOSA0MS42IDUzLjMgNzUuNCA1My4zIDQ0LjEgMCA4MC0zNS45IDgwLTgwVjMwMS42Yy05LjEtNy45LTE5LjgtMTMuNi0zMi0xMy42LTEyLjMuMS0yMi40IDQuOC0zMiAxMy43elwiXVxufTtcbnZhciBmYVVtYnJlbGxhQmVhY2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndW1icmVsbGEtYmVhY2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1Y2FcIiwgXCJNMTE1LjM4IDEzNi45bDEwMi4xMSAzNy4xOGMzNS4xOS04MS41NCA4Ni4yMS0xNDQuMjkgMTM5LTE3My43LTk1Ljg4LTQuODktMTg4Ljc4IDM2Ljk2LTI0OC41MyAxMTEuOC02LjY5IDguNC0yLjY2IDIxLjA1IDcuNDIgMjQuNzJ6bTEzMi4yNSA0OC4xNmwyMzguNDggODYuODNjMzUuNzYtMTIxLjM4IDE4LjctMjMxLjY2LTQyLjYzLTI1My45OC03LjQtMi43LTE1LjEzLTQtMjMuMDktNC01OC4wMi4wMS0xMjguMjcgNjkuMTctMTcyLjc2IDE3MS4xNXpNNTIxLjQ4IDYwLjVjNi4yMiAxNi4zIDEwLjgzIDM0LjYgMTMuMiA1NS4xOSA1Ljc0IDQ5Ljg5LTEuNDIgMTA4LjIzLTE4Ljk1IDE2Ni45OGwxMDIuNjIgMzcuMzZjMTAuMDkgMy42NyAyMS4zMS0zLjQzIDIxLjU3LTE0LjE3IDIuMzItOTUuNjktNDEuOTEtMTg3LjQ0LTExOC40NC0yNDUuMzZ6TTU2MCA0NDcuOThIMzIxLjA2TDM4NiAyNjkuNWwtNjAuMTQtMjEuOS03Mi45IDIwMC4zN0gxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTYuMDF2MzIuMDFDMCA1MDQuODMgNy4xNiA1MTIgMTYgNTEyaDU0NGM4Ljg0IDAgMTYtNy4xNyAxNi0xNi4wMXYtMzIuMDFjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJdXG59O1xudmFyIGZhVW5kZXJsaW5lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VuZGVybGluZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjBjZFwiLCBcIk0zMiA2NGgzMnYxNjBjMCA4OC4yMiA3MS43OCAxNjAgMTYwIDE2MHMxNjAtNzEuNzggMTYwLTE2MFY2NGgzMmExNiAxNiAwIDAgMCAxNi0xNlYxNmExNiAxNiAwIDAgMC0xNi0xNkgyNzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJ2MTYwYTgwIDgwIDAgMCAxLTE2MCAwVjY0aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2YTE2IDE2IDAgMCAwLTE2LTE2SDMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2em00MDAgMzg0SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJdXG59O1xudmFyIGZhVW5kbyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1bmRvJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMGUyXCIsIFwiTTIxMi4zMzMgMjI0LjMzM0gxMmMtNi42MjcgMC0xMi01LjM3My0xMi0xMlYxMkMwIDUuMzczIDUuMzczIDAgMTIgMGg0OGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjc4LjExMkMxMTcuNzczIDM5LjI3OSAxODQuMjYgNy40NyAyNTguMTc1IDguMDA3YzEzNi45MDYuOTk0IDI0Ni40NDggMTExLjYyMyAyNDYuMTU3IDI0OC41MzJDNTA0LjA0MSAzOTMuMjU4IDM5My4xMiA1MDQgMjU2LjMzMyA1MDRjLTY0LjA4OSAwLTEyMi40OTYtMjQuMzEzLTE2Ni41MS02NC4yMTUtNS4wOTktNC42MjItNS4zMzQtMTIuNTU0LS40NjctMTcuNDJsMzMuOTY3LTMzLjk2N2M0LjQ3NC00LjQ3NCAxMS42NjItNC43MTcgMTYuNDAxLS41MjVDMTcwLjc2IDQxNS4zMzYgMjExLjU4IDQzMiAyNTYuMzMzIDQzMmM5Ny4yNjggMCAxNzYtNzguNzE2IDE3Ni0xNzYgMC05Ny4yNjctNzguNzE2LTE3Ni0xNzYtMTc2LTU4LjQ5NiAwLTExMC4yOCAyOC40NzYtMTQyLjI3NCA3Mi4zMzNoOTguMjc0YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDhjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnpcIl1cbn07XG52YXIgZmFVbmRvQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VuZG8tYWx0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMmVhXCIsIFwiTTI1NS41NDUgOGMtNjYuMjY5LjExOS0xMjYuNDM4IDI2LjIzMy0xNzAuODYgNjguNjg1TDQ4Ljk3MSA0MC45NzFDMzMuODUxIDI1Ljg1MSA4IDM2LjU1OSA4IDU3Ljk0MVYxOTJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEzNC4wNTljMjEuMzgyIDAgMzIuMDktMjUuODUxIDE2Ljk3MS00MC45NzFsLTQxLjc1LTQxLjc1YzMwLjg2NC0yOC44OTkgNzAuODAxLTQ0LjkwNyAxMTMuMjMtNDUuMjczIDkyLjM5OC0uNzk4IDE3MC4yODMgNzMuOTc3IDE2OS40ODQgMTY5LjQ0MkM0MjMuMjM2IDM0OC4wMDkgMzQ5LjgxNiA0MjQgMjU2IDQyNGMtNDEuMTI3IDAtNzkuOTk3LTE0LjY3OC0xMTAuNjMtNDEuNTU2LTQuNzQzLTQuMTYxLTExLjkwNi0zLjkwOC0xNi4zNjguNTUzTDg5LjM0IDQyMi42NTljLTQuODcyIDQuODcyLTQuNjMxIDEyLjgxNS40ODIgMTcuNDMzQzEzMy43OTggNDc5LjgxMyAxOTIuMDc0IDUwNCAyNTYgNTA0YzEzNi45NjYgMCAyNDcuOTk5LTExMS4wMzMgMjQ4LTI0Ny45OThDNTA0LjAwMSAxMTkuMTkzIDM5Mi4zNTQgNy43NTUgMjU1LjU0NSA4elwiXVxufTtcbnZhciBmYVVuaXZlcnNhbEFjY2VzcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1bml2ZXJzYWwtYWNjZXNzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMjlhXCIsIFwiTTI1NiA0OGMxMTQuOTUzIDAgMjA4IDkzLjAyOSAyMDggMjA4IDAgMTE0Ljk1My05My4wMjkgMjA4LTIwOCAyMDgtMTE0Ljk1MyAwLTIwOC05My4wMjktMjA4LTIwOCAwLTExNC45NTMgOTMuMDI5LTIwOCAyMDgtMjA4bTAtNDBDMTE5LjAzMyA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4em0wIDU2QzE0OS45NjEgNjQgNjQgMTQ5Ljk2MSA2NCAyNTZzODUuOTYxIDE5MiAxOTIgMTkyIDE5Mi04NS45NjEgMTkyLTE5MlMzNjIuMDM5IDY0IDI1NiA2NHptMCA0NGMxOS44ODIgMCAzNiAxNi4xMTggMzYgMzZzLTE2LjExOCAzNi0zNiAzNi0zNi0xNi4xMTgtMzYtMzYgMTYuMTE4LTM2IDM2LTM2em0xMTcuNzQxIDk4LjAyM2MtMjguNzEyIDYuNzc5LTU1LjUxMSAxMi43NDgtODIuMTQgMTUuODA3Ljg1MSAxMDEuMDIzIDEyLjMwNiAxMjMuMDUyIDI1LjAzNyAxNTUuNjIxIDMuNjE3IDkuMjYtLjk1NyAxOS42OTgtMTAuMjE3IDIzLjMxNS05LjI2MSAzLjYxNy0xOS42OTktLjk1Ny0yMy4zMTYtMTAuMjE3LTguNzA1LTIyLjMwOC0xNy4wODYtNDAuNjM2LTIyLjI2MS03OC41NDloLTkuNjg2Yy01LjE2NyAzNy44NTEtMTMuNTM0IDU2LjIwOC0yMi4yNjIgNzguNTQ5LTMuNjE1IDkuMjU1LTE0LjA1IDEzLjgzNi0yMy4zMTUgMTAuMjE3LTkuMjYtMy42MTctMTMuODM0LTE0LjA1Ni0xMC4yMTctMjMuMzE1IDEyLjcxMy0zMi41NDEgMjQuMTg1LTU0LjU0MSAyNS4wMzctMTU1LjYyMS0yNi42MjktMy4wNTgtNTMuNDI4LTkuMDI3LTgyLjE0MS0xNS44MDctOC42LTIuMDMxLTEzLjkyNi0xMC42NDgtMTEuODk1LTE5LjI0OXMxMC42NDctMTMuOTI2IDE5LjI0OS0xMS44OTVjOTYuNjg2IDIyLjgyOSAxMjQuMjgzIDIyLjc4MyAyMjAuNzc1IDAgOC41OTktMi4wMyAxNy4yMTggMy4yOTQgMTkuMjQ5IDExLjg5NSAyLjAyOSA4LjYwMS0zLjI5NyAxNy4yMTktMTEuODk3IDE5LjI0OXpcIl1cbn07XG52YXIgZmFVbml2ZXJzaXR5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VuaXZlcnNpdHknLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxOWNcIiwgXCJNNDk2IDEyOHYxNmE4IDggMCAwIDEtOCA4aC0yNHYxMmMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDYwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi0xMkgyNGE4IDggMCAwIDEtOC04di0xNmE4IDggMCAwIDEgNC45NDEtNy4zOTJsMjMyLTg4YTcuOTk2IDcuOTk2IDAgMCAxIDYuMTE4IDBsMjMyIDg4QTggOCAwIDAgMSA0OTYgMTI4em0tMjQgMzA0SDQwYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTZhOCA4IDAgMCAwIDggOGg0NjRhOCA4IDAgMCAwIDgtOHYtMTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0ek05NiAxOTJ2MTkySDYwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjIwaDQxNnYtMjBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMzZWMTkyaC02NHYxOTJoLTY0VjE5MmgtNjR2MTkyaC02NFYxOTJIOTZ6XCJdXG59O1xudmFyIGZhVW5saW5rID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VubGluaycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjEyN1wiLCBcIk0zMDQuMDgzIDQwNS45MDdjNC42ODYgNC42ODYgNC42ODYgMTIuMjg0IDAgMTYuOTcxbC00NC42NzQgNDQuNjc0Yy01OS4yNjMgNTkuMjYyLTE1NS42OTMgNTkuMjY2LTIxNC45NjEgMC01OS4yNjQtNTkuMjY1LTU5LjI2NC0xNTUuNjk2IDAtMjE0Ljk2bDQ0LjY3NS00NC42NzVjNC42ODYtNC42ODYgMTIuMjg0LTQuNjg2IDE2Ljk3MSAwbDM5LjU5OCAzOS41OThjNC42ODYgNC42ODYgNC42ODYgMTIuMjg0IDAgMTYuOTcxbC00NC42NzUgNDQuNjc0Yy0yOC4wNzIgMjguMDczLTI4LjA3MiA3My43NSAwIDEwMS44MjMgMjguMDcyIDI4LjA3MiA3My43NSAyOC4wNzMgMTAxLjgyNCAwbDQ0LjY3NC00NC42NzRjNC42ODYtNC42ODYgMTIuMjg0LTQuNjg2IDE2Ljk3MSAwbDM5LjU5NyAzOS41OTh6bS01Ni41NjgtMjYwLjIxNmM0LjY4NiA0LjY4NiAxMi4yODQgNC42ODYgMTYuOTcxIDBsNDQuNjc0LTQ0LjY3NGMyOC4wNzItMjguMDc1IDczLjc1LTI4LjA3MyAxMDEuODI0IDAgMjguMDcyIDI4LjA3MyAyOC4wNzIgNzMuNzUgMCAxMDEuODIzbC00NC42NzUgNDQuNjc0Yy00LjY4NiA0LjY4Ni00LjY4NiAxMi4yODQgMCAxNi45NzFsMzkuNTk4IDM5LjU5OGM0LjY4NiA0LjY4NiAxMi4yODQgNC42ODYgMTYuOTcxIDBsNDQuNjc1LTQ0LjY3NWM1OS4yNjUtNTkuMjY1IDU5LjI2NS0xNTUuNjk1IDAtMjE0Ljk2LTU5LjI2Ni01OS4yNjQtMTU1LjY5NS01OS4yNjQtMjE0Ljk2MSAwbC00NC42NzQgNDQuNjc0Yy00LjY4NiA0LjY4Ni00LjY4NiAxMi4yODQgMCAxNi45NzFsMzkuNTk3IDM5LjU5OHptMjM0LjgyOCAzNTkuMjhsMjIuNjI3LTIyLjYyN2M5LjM3My05LjM3MyA5LjM3My0yNC41NjkgMC0zMy45NDFMNjMuNTk4IDcuMDI5Yy05LjM3My05LjM3My0yNC41NjktOS4zNzMtMzMuOTQxIDBMNy4wMjkgMjkuNjU3Yy05LjM3MyA5LjM3My05LjM3MyAyNC41NjkgMCAzMy45NDFsNDQxLjM3MyA0NDEuMzczYzkuMzczIDkuMzcyIDI0LjU2OSA5LjM3MiAzMy45NDEgMHpcIl1cbn07XG52YXIgZmFVbmxvY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndW5sb2NrJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDljXCIsIFwiTTQwMCAyNTZIMTUyVjE1Mi45YzAtMzkuNiAzMS43LTcyLjUgNzEuMy03Mi45IDQwLS40IDcyLjcgMzIuMSA3Mi43IDcydjE2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMyYzEzLjMgMCAyNC0xMC43IDI0LTI0di0xNkMzNzYgNjggMzA3LjUtLjMgMjIzLjUgMCAxMzkuNS4zIDcyIDY5LjUgNzIgMTUzLjVWMjU2SDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OHYxNjBjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjMwNGMwLTI2LjUtMjEuNS00OC00OC00OHpcIl1cbn07XG52YXIgZmFVbmxvY2tBbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndW5sb2NrLWFsdCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjEzZVwiLCBcIk00MDAgMjU2SDE1MlYxNTIuOWMwLTM5LjYgMzEuNy03Mi41IDcxLjMtNzIuOSA0MC0uNCA3Mi43IDMyLjEgNzIuNyA3MnYxNmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMmMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtMTZDMzc2IDY4IDMwNy41LS4zIDIyMy41IDAgMTM5LjUuMyA3MiA2OS41IDcyIDE1My41VjI1Nkg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MTYwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYzMDRjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTI2NCA0MDhjMCAyMi4xLTE3LjkgNDAtNDAgNDBzLTQwLTE3LjktNDAtNDB2LTQ4YzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDB2NDh6XCJdXG59O1xudmFyIGZhVXBsb2FkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VwbG9hZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjA5M1wiLCBcIk0yOTYgMzg0aC04MGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMTkyaC04Ny43Yy0xNy44IDAtMjYuNy0yMS41LTE0LjEtMzQuMUwyNDIuMyA1LjdjNy41LTcuNSAxOS44LTcuNSAyNy4zIDBsMTUyLjIgMTUyLjJjMTIuNiAxMi42IDMuNyAzNC4xLTE0LjEgMzQuMUgzMjB2MTY4YzAgMTMuMy0xMC43IDI0LTI0IDI0em0yMTYtOHYxMTJjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjM3NmMwLTEzLjMgMTAuNy0yNCAyNC0yNGgxMzZ2OGMwIDMwLjkgMjUuMSA1NiA1NiA1Nmg4MGMzMC45IDAgNTYtMjUuMSA1Ni01NnYtOGgxMzZjMTMuMyAwIDI0IDEwLjcgMjQgMjR6bS0xMjQgODhjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwIDkgMjAgMjAgMjAgMjAtOSAyMC0yMHptNjQgMGMwLTExLTktMjAtMjAtMjBzLTIwIDktMjAgMjAgOSAyMCAyMCAyMCAyMC05IDIwLTIwelwiXVxufTtcbnZhciBmYVVzZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlcicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjAwN1wiLCBcIk0yMjQgMjU2YzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4UzI5NC43IDAgMjI0IDAgOTYgNTcuMyA5NiAxMjhzNTcuMyAxMjggMTI4IDEyOHptODkuNiAzMmgtMTYuN2MtMjIuMiAxMC4yLTQ2LjkgMTYtNzIuOSAxNnMtNTAuNi01LjgtNzIuOS0xNmgtMTYuN0M2MC4yIDI4OCAwIDM0OC4yIDAgNDIyLjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OHYtNDEuNmMwLTc0LjItNjAuMi0xMzQuNC0xMzQuNC0xMzQuNHpcIl1cbn07XG52YXIgZmFVc2VyQWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItYWx0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNDA2XCIsIFwiTTI1NiAyODhjNzkuNSAwIDE0NC02NC41IDE0NC0xNDRTMzM1LjUgMCAyNTYgMCAxMTIgNjQuNSAxMTIgMTQ0czY0LjUgMTQ0IDE0NCAxNDR6bTEyOCAzMmgtNTUuMWMtMjIuMiAxMC4yLTQ2LjkgMTYtNzIuOSAxNnMtNTAuNi01LjgtNzIuOS0xNkgxMjhDNTcuMyAzMjAgMCAzNzcuMyAwIDQ0OHYxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTE2YzAtNzAuNy01Ny4zLTEyOC0xMjgtMTI4elwiXVxufTtcbnZhciBmYVVzZXJBbHRTbGFzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLWFsdC1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjRmYVwiLCBcIk02MzMuOCA0NTguMUwzODkuNiAyNjkuM0M0MzMuOCAyNDQuNyA0NjQgMTk4LjEgNDY0IDE0NCA0NjQgNjQuNSAzOTkuNSAwIDMyMCAwYy02Ny4xIDAtMTIzIDQ2LjEtMTM5IDEwOC4yTDQ1LjUgMy40QzM4LjUtMiAyOC41LS44IDIzIDYuMkwzLjQgMzEuNGMtNS40IDctNC4yIDE3IDIuOCAyMi40bDU4OC40IDQ1NC43YzcgNS40IDE3IDQuMiAyMi41LTIuOGwxOS42LTI1LjNjNS40LTYuOCA0LjEtMTYuOS0yLjktMjIuM3pNMTk4LjQgMzIwQzEyNC4yIDMyMCA2NCAzODAuMiA2NCA0NTQuNHY5LjZjMCAyNi41IDIxLjUgNDggNDggNDhoMzgyLjJMMjQ1LjggMzIwaC00Ny40elwiXVxufTtcbnZhciBmYVVzZXJBc3Ryb25hdXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci1hc3Ryb25hdXQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY0ZmJcIiwgXCJNNjQgMjI0aDEzLjVjMjQuNyA1Ni41IDgwLjkgOTYgMTQ2LjUgOTZzMTIxLjgtMzkuNSAxNDYuNS05NkgzODRjOC44IDAgMTYtNy4yIDE2LTE2di05NmMwLTguOC03LjItMTYtMTYtMTZoLTEzLjVDMzQ1LjggMzkuNSAyODkuNiAwIDIyNCAwUzEwMi4yIDM5LjUgNzcuNSA5Nkg2NGMtOC44IDAtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNnptNDAtODhjMC0yMi4xIDIxLjUtNDAgNDgtNDBoMTQ0YzI2LjUgMCA0OCAxNy45IDQ4IDQwdjI0YzAgNTMtNDMgOTYtOTYgOTZoLTQ4Yy01MyAwLTk2LTQzLTk2LTk2di0yNHptNzIgNzJsMTItMzYgMzYtMTItMzYtMTItMTItMzYtMTIgMzYtMzYgMTIgMzYgMTIgMTIgMzZ6bTE1MS42IDExMy40QzI5Ny43IDM0MC43IDI2Mi4yIDM1MiAyMjQgMzUycy03My43LTExLjMtMTAzLjYtMzAuNkM1Mi45IDMyOC41IDAgMzg1IDAgNDU0LjR2OS42YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDgwdi02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmgxMjhjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRoODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTkuNmMwLTY5LjQtNTIuOS0xMjUuOS0xMjAuNC0xMzN6TTI3MiA0NDhjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTYgMTYtNy4yIDE2LTE2LTcuMi0xNi0xNi0xNnptLTk2IDBjLTguOCAwLTE2IDcuMi0xNiAxNnY0OGgzMnYtNDhjMC04LjgtNy4yLTE2LTE2LTE2elwiXVxufTtcbnZhciBmYVVzZXJDaGVjayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLWNoZWNrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNGZjXCIsIFwiTTIyNCAyNTZjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMCA5NiA1Ny4zIDk2IDEyOHM1Ny4zIDEyOCAxMjggMTI4em04OS42IDMyaC0xNi43Yy0yMi4yIDEwLjItNDYuOSAxNi03Mi45IDE2cy01MC42LTUuOC03Mi45LTE2aC0xNi43QzYwLjIgMjg4IDAgMzQ4LjIgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di00MS42YzAtNzQuMi02MC4yLTEzNC40LTEzNC40LTEzNC40em0zMjMtMTI4LjRsLTI3LjgtMjguMWMtNC42LTQuNy0xMi4xLTQuNy0xNi44LS4xbC0xMDQuOCAxMDQtNDUuNS00NS44Yy00LjYtNC43LTEyLjEtNC43LTE2LjgtLjFsLTI4LjEgMjcuOWMtNC43IDQuNi00LjcgMTIuMS0uMSAxNi44bDgxLjcgODIuM2M0LjYgNC43IDEyLjEgNC43IDE2LjguMWwxNDEuMy0xNDAuMmM0LjYtNC43IDQuNy0xMi4yLjEtMTYuOHpcIl1cbn07XG52YXIgZmFVc2VyQ2lyY2xlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItY2lyY2xlJyxcbiAgaWNvbjogWzQ5NiwgNTEyLCBbXSwgXCJmMmJkXCIsIFwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgOTZjNDguNiAwIDg4IDM5LjQgODggODhzLTM5LjQgODgtODggODgtODgtMzkuNC04OC04OCAzOS40LTg4IDg4LTg4em0wIDM0NGMtNTguNyAwLTExMS4zLTI2LjYtMTQ2LjUtNjguMiAxOC44LTM1LjQgNTUuNi01OS44IDk4LjUtNTkuOCAyLjQgMCA0LjguNCA3LjEgMS4xIDEzIDQuMiAyNi42IDYuOSA0MC45IDYuOSAxNC4zIDAgMjgtMi43IDQwLjktNi45IDIuMy0uNyA0LjctMS4xIDcuMS0xLjEgNDIuOSAwIDc5LjcgMjQuNCA5OC41IDU5LjhDMzU5LjMgNDIxLjQgMzA2LjcgNDQ4IDI0OCA0NDh6XCJdXG59O1xudmFyIGZhVXNlckNsb2NrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItY2xvY2snLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY0ZmRcIiwgXCJNNDk2IDIyNGMtNzkuNiAwLTE0NCA2NC40LTE0NCAxNDRzNjQuNCAxNDQgMTQ0IDE0NCAxNDQtNjQuNCAxNDQtMTQ0LTY0LjQtMTQ0LTE0NC0xNDR6bTY0IDE1MC4zYzAgNS4zLTQuNCA5LjctOS43IDkuN2gtNjAuNmMtNS4zIDAtOS43LTQuNC05LjctOS43di03Ni42YzAtNS4zIDQuNC05LjcgOS43LTkuN2gxMi42YzUuMyAwIDkuNyA0LjQgOS43IDkuN1YzNTJoMzguM2M1LjMgMCA5LjcgNC40IDkuNyA5Ljd2MTIuNnpNMzIwIDM2OGMwLTI3LjggNi43LTU0LjEgMTguMi03Ny41LTgtMS41LTE2LjItMi41LTI0LjYtMi41aC0xNi43Yy0yMi4yIDEwLjItNDYuOSAxNi03Mi45IDE2cy01MC42LTUuOC03Mi45LTE2aC0xNi43QzYwLjIgMjg4IDAgMzQ4LjIgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzQ3LjFjLTQ1LjMtMzEuOS03NS4xLTg0LjUtNzUuMS0xNDR6bS05Ni0xMTJjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMCA5NiA1Ny4zIDk2IDEyOHM1Ny4zIDEyOCAxMjggMTI4elwiXVxufTtcbnZhciBmYVVzZXJDb2cgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci1jb2cnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY0ZmVcIiwgXCJNNjEwLjUgMzczLjNjMi42LTE0LjEgMi42LTI4LjUgMC00Mi42bDI1LjgtMTQuOWMzLTEuNyA0LjMtNS4yIDMuMy04LjUtNi43LTIxLjYtMTguMi00MS4yLTMzLjItNTcuNC0yLjMtMi41LTYtMy4xLTktMS40bC0yNS44IDE0LjljLTEwLjktOS4zLTIzLjQtMTYuNS0zNi45LTIxLjN2LTI5LjhjMC0zLjQtMi40LTYuNC01LjctNy4xLTIyLjMtNS00NS00LjgtNjYuMiAwLTMuMy43LTUuNyAzLjctNS43IDcuMXYyOS44Yy0xMy41IDQuOC0yNiAxMi0zNi45IDIxLjNsLTI1LjgtMTQuOWMtMi45LTEuNy02LjctMS4xLTkgMS40LTE1IDE2LjItMjYuNSAzNS44LTMzLjIgNTcuNC0xIDMuMy40IDYuOCAzLjMgOC41bDI1LjggMTQuOWMtMi42IDE0LjEtMi42IDI4LjUgMCA0Mi42bC0yNS44IDE0LjljLTMgMS43LTQuMyA1LjItMy4zIDguNSA2LjcgMjEuNiAxOC4yIDQxLjEgMzMuMiA1Ny40IDIuMyAyLjUgNiAzLjEgOSAxLjRsMjUuOC0xNC45YzEwLjkgOS4zIDIzLjQgMTYuNSAzNi45IDIxLjN2MjkuOGMwIDMuNCAyLjQgNi40IDUuNyA3LjEgMjIuMyA1IDQ1IDQuOCA2Ni4yIDAgMy4zLS43IDUuNy0zLjcgNS43LTcuMXYtMjkuOGMxMy41LTQuOCAyNi0xMiAzNi45LTIxLjNsMjUuOCAxNC45YzIuOSAxLjcgNi43IDEuMSA5LTEuNCAxNS0xNi4yIDI2LjUtMzUuOCAzMy4yLTU3LjQgMS0zLjMtLjQtNi44LTMuMy04LjVsLTI1LjgtMTQuOXpNNDk2IDQwMC41Yy0yNi44IDAtNDguNS0yMS44LTQ4LjUtNDguNXMyMS44LTQ4LjUgNDguNS00OC41IDQ4LjUgMjEuOCA0OC41IDQ4LjUtMjEuNyA0OC41LTQ4LjUgNDguNXpNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTIwMS4yIDIyNi41Yy0yLjMtMS4yLTQuNi0yLjYtNi44LTMuOWwtNy45IDQuNmMtNiAzLjQtMTIuOCA1LjMtMTkuNiA1LjMtMTAuOSAwLTIxLjQtNC42LTI4LjktMTIuNi0xOC4zLTE5LjgtMzIuMy00My45LTQwLjItNjkuNi01LjUtMTcuNyAxLjktMzYuNCAxNy45LTQ1LjdsNy45LTQuNmMtLjEtMi42LS4xLTUuMiAwLTcuOGwtNy45LTQuNmMtMTYtOS4yLTIzLjQtMjgtMTcuOS00NS43LjktMi45IDIuMi01LjggMy4yLTguNy0zLjgtLjMtNy41LTEuMi0xMS40LTEuMmgtMTYuN2MtMjIuMiAxMC4yLTQ2LjkgMTYtNzIuOSAxNnMtNTAuNi01LjgtNzIuOS0xNmgtMTYuN0M2MC4yIDI4OCAwIDM0OC4yIDAgNDIyLjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMxMC4xIDAgMTkuNS0zLjIgMjcuMi04LjUtMS4yLTMuOC0yLTcuNy0yLTExLjh2LTkuMnpcIl1cbn07XG52YXIgZmFVc2VyRWRpdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLWVkaXQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY0ZmZcIiwgXCJNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTg5LjYgMzJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyNzQuOWMtMi40LTYuOC0zLjQtMTQtMi42LTIxLjNsNi44LTYwLjkgMS4yLTExLjEgNy45LTcuOSA3Ny4zLTc3LjNjLTI0LjUtMjcuNy02MC00NS41LTk5LjktNDUuNXptNDUuMyAxNDUuM2wtNi44IDYxYy0xLjEgMTAuMiA3LjUgMTguOCAxNy42IDE3LjZsNjAuOS02LjggMTM3LjktMTM3LjktNzEuNy03MS43LTEzNy45IDEzNy44ek02MzMgMjY4LjlMNTk1LjEgMjMxYy05LjMtOS4zLTI0LjUtOS4zLTMzLjggMGwtMzcuOCAzNy44LTQuMSA0LjEgNzEuOCA3MS43IDQxLjgtNDEuOGM5LjMtOS40IDkuMy0yNC41IDAtMzMuOXpcIl1cbn07XG52YXIgZmFVc2VyRnJpZW5kcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLWZyaWVuZHMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1MDBcIiwgXCJNMTkyIDI1NmM2MS45IDAgMTEyLTUwLjEgMTEyLTExMlMyNTMuOSAzMiAxOTIgMzIgODAgODIuMSA4MCAxNDRzNTAuMSAxMTIgMTEyIDExMnptNzYuOCAzMmgtOC4zYy0yMC44IDEwLTQzLjkgMTYtNjguNSAxNnMtNDcuNi02LTY4LjUtMTZoLTguM0M1MS42IDI4OCAwIDMzOS42IDAgNDAzLjJWNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OHYtMjguOGMwLTYzLjYtNTEuNi0xMTUuMi0xMTUuMi0xMTUuMnpNNDgwIDI1NmM1MyAwIDk2LTQzIDk2LTk2cy00My05Ni05Ni05Ni05NiA0My05NiA5NiA0MyA5NiA5NiA5NnptNDggMzJoLTMuOGMtMTMuOSA0LjgtMjguNiA4LTQ0LjIgOHMtMzAuMy0zLjItNDQuMi04SDQzMmMtMjAuNCAwLTM5LjIgNS45LTU1LjcgMTUuNCAyNC40IDI2LjMgMzkuNyA2MS4yIDM5LjcgOTkuOHYzOC40YzAgMi4yLS41IDQuMy0uNiA2LjRINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4IDAtNjEuOS01MC4xLTExMi0xMTItMTEyelwiXVxufTtcbnZhciBmYVVzZXJHcmFkdWF0ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLWdyYWR1YXRlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNTAxXCIsIFwiTTMxOS40IDMyMC42TDIyNCA0MTZsLTk1LjQtOTUuNEM1Ny4xIDMyMy43IDAgMzgyLjIgMCA0NTQuNHY5LjZjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di05LjZjMC03Mi4yLTU3LjEtMTMwLjctMTI4LjYtMTMzLjh6TTEzLjYgNzkuOGw2LjQgMS41djU4LjRjLTcgNC4yLTEyIDExLjUtMTIgMjAuMyAwIDguNCA0LjYgMTUuNCAxMS4xIDE5LjdMMy41IDI0MmMtMS43IDYuOSAyLjEgMTQgNy42IDE0aDQxLjhjNS41IDAgOS4zLTcuMSA3LjYtMTRsLTE1LjYtNjIuM0M1MS40IDE3NS40IDU2IDE2OC40IDU2IDE2MGMwLTguOC01LTE2LjEtMTItMjAuM1Y4Ny4xbDY2IDE1LjljLTguNiAxNy4yLTE0IDM2LjQtMTQgNTcgMCA3MC43IDU3LjMgMTI4IDEyOCAxMjhzMTI4LTU3LjMgMTI4LTEyOGMwLTIwLjYtNS4zLTM5LjgtMTQtNTdsOTYuMy0yMy4yYzE4LjItNC40IDE4LjItMjcuMSAwLTMxLjVsLTE5MC40LTQ2Yy0xMy0zLjEtMjYuNy0zLjEtMzkuNyAwTDEzLjYgNDguMmMtMTguMSA0LjQtMTguMSAyNy4yIDAgMzEuNnpcIl1cbn07XG52YXIgZmFVc2VySW5qdXJlZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLWluanVyZWQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY3MjhcIiwgXCJNMjc3LjM3IDExLjk4QzI2MS4wOCA0LjQ3IDI0My4xMSAwIDIyNCAwYy01My42OSAwLTk5LjUgMzMuMTMtMTE4LjUxIDgwaDgxLjE5bDkwLjY5LTY4LjAyek0zNDIuNTEgODBjLTcuOS0xOS40Ny0yMC42Ny0zNi4yLTM2LjQ5LTQ5LjUyTDIzOS45OSA4MGgxMDIuNTJ6TTIyNCAyNTZjNzAuNjkgMCAxMjgtNTcuMzEgMTI4LTEyOCAwLTUuNDgtLjk1LTEwLjctMS42MS0xNkg5Ny42MWMtLjY3IDUuMy0xLjYxIDEwLjUyLTEuNjEgMTYgMCA3MC42OSA1Ny4zMSAxMjggMTI4IDEyOHpNODAgMjk5LjdWNTEyaDEyOC4yNmwtOTguNDUtMjIxLjUyQTEzMi44MzUgMTMyLjgzNSAwIDAgMCA4MCAyOTkuN3pNMCA0NjRjMCAyNi41MSAyMS40OSA0OCA0OCA0OFYzMjAuMjRDMTguODggMzQ0Ljg5IDAgMzgxLjI2IDAgNDIyLjRWNDY0em0yNTYtNDhoLTU1LjM4bDQyLjY3IDk2SDI1NmMyNi40NyAwIDQ4LTIxLjUzIDQ4LTQ4cy0yMS41My00OC00OC00OHptNTcuNi0xMjhoLTE2LjcxYy0yMi4yNCAxMC4xOC00Ni44OCAxNi03Mi44OSAxNnMtNTAuNjUtNS44Mi03Mi44OS0xNmgtNy4zN2w0Mi42NyA5NkgyNTZjNDQuMTEgMCA4MCAzNS44OSA4MCA4MCAwIDE4LjA4LTYuMjYgMzQuNTktMTYuNDEgNDhINDAwYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTQxLjZjMC03NC4yMy02MC4xNy0xMzQuNC0xMzQuNC0xMzQuNHpcIl1cbn07XG52YXIgZmFVc2VyTG9jayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLWxvY2snLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1MDJcIiwgXCJNMjI0IDI1NkExMjggMTI4IDAgMSAwIDk2IDEyOGExMjggMTI4IDAgMCAwIDEyOCAxMjh6bTk2IDY0YTYzLjA4IDYzLjA4IDAgMCAxIDguMS0zMC41Yy00LjgtLjUtOS41LTEuNS0xNC41LTEuNWgtMTYuN2ExNzQuMDggMTc0LjA4IDAgMCAxLTE0NS44IDBoLTE2LjdBMTM0LjQzIDEzNC40MyAwIDAgMCAwIDQyMi40VjQ2NGE0OCA0OCAwIDAgMCA0OCA0OGgyODAuOWE2My41NCA2My41NCAwIDAgMS04LjktMzJ6bTI4OC0zMmgtMzJ2LTgwYTgwIDgwIDAgMCAwLTE2MCAwdjgwaC0zMmEzMiAzMiAwIDAgMC0zMiAzMnYxNjBhMzIgMzIgMCAwIDAgMzIgMzJoMjI0YTMyIDMyIDAgMCAwIDMyLTMyVjMyMGEzMiAzMiAwIDAgMC0zMi0zMnpNNDk2IDQzMmEzMiAzMiAwIDEgMSAzMi0zMiAzMiAzMiAwIDAgMS0zMiAzMnptMzItMTQ0aC02NHYtODBhMzIgMzIgMCAwIDEgNjQgMHpcIl1cbn07XG52YXIgZmFVc2VyTWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci1tZCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjBmMFwiLCBcIk0yMjQgMjU2YzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4UzI5NC43IDAgMjI0IDAgOTYgNTcuMyA5NiAxMjhzNTcuMyAxMjggMTI4IDEyOHpNMTA0IDQyNGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjQtMjQgMTAuNy0yNCAyNHptMjE2LTEzNS40djQ5YzM2LjUgNy40IDY0IDM5LjggNjQgNzguNHY0MS43YzAgNy42LTUuNCAxNC4yLTEyLjkgMTUuN2wtMzIuMiA2LjRjLTQuMy45LTguNS0xLjktOS40LTYuM2wtMy4xLTE1LjdjLS45LTQuMyAxLjktOC42IDYuMy05LjRsMTkuMy0zLjlWNDE2YzAtNjIuOC05Ni02NS4xLTk2IDEuOXYyNi43bDE5LjMgMy45YzQuMy45IDcuMSA1LjEgNi4zIDkuNGwtMy4xIDE1LjdjLS45IDQuMy01LjEgNy4xLTkuNCA2LjNsLTMxLjItNC4yYy03LjktMS4xLTEzLjgtNy44LTEzLjgtMTUuOVY0MTZjMC0zOC42IDI3LjUtNzAuOSA2NC03OC40di00NS4yYy0yLjIuNy00LjQgMS4xLTYuNiAxLjktMTggNi4zLTM3LjMgOS44LTU3LjQgOS44cy0zOS40LTMuNS01Ny40LTkuOGMtNy40LTIuNi0xNC45LTQuMi0yMi42LTUuMnY4MS42YzIzLjEgNi45IDQwIDI4LjEgNDAgNTMuNCAwIDMwLjktMjUuMSA1Ni01NiA1NnMtNTYtMjUuMS01Ni01NmMwLTI1LjMgMTYuOS00Ni41IDQwLTUzLjR2LTgwLjRDNDguNSAzMDEgMCAzNTUuOCAwIDQyMi40djQ0LjhDMCA0OTEuOSAyMC4xIDUxMiA0NC44IDUxMmgzNTguNGMyNC43IDAgNDQuOC0yMC4xIDQ0LjgtNDQuOHYtNDQuOGMwLTcyLTU2LjgtMTMwLjMtMTI4LTEzMy44elwiXVxufTtcbnZhciBmYVVzZXJNaW51cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLW1pbnVzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTAzXCIsIFwiTTYyNCAyMDhINDMyYy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDE5MmM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnptLTQwMCA0OGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTg5LjYgMzJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTQxLjZjMC03NC4yLTYwLjItMTM0LjQtMTM0LjQtMTM0LjR6XCJdXG59O1xudmFyIGZhVXNlck5pbmphID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItbmluamEnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1MDRcIiwgXCJNMzI1LjQgMjg5LjJMMjI0IDM5MC42IDEyMi42IDI4OS4yQzU0IDI5NS4zIDAgMzUyLjIgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di00MS42YzAtNzAuMi01NC0xMjcuMS0xMjIuNi0xMzMuMnpNMzIgMTkyYzI3LjMgMCA1MS44LTExLjUgNjkuMi0yOS43IDE1LjEgNTMuOSA2NCA5My43IDEyMi44IDkzLjcgNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMGMtNTAuNCAwLTkzLjYgMjkuNC0xMTQuNSA3MS44QzkyLjEgNDcuOCA2NCAzMiAzMiAzMmMwIDMzLjQgMTcuMSA2Mi44IDQzLjEgODAtMjYgMTcuMi00My4xIDQ2LjYtNDMuMSA4MHptMTQ0LTk2aDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMySDE0NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIl1cbn07XG52YXIgZmFVc2VyTnVyc2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci1udXJzZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjgyZlwiLCBcIk0zMTkuNDEsMzIwLDIyNCw0MTUuMzksMTI4LjU5LDMyMEM1Ny4xLDMyMy4xLDAsMzgxLjYsMCw0NTMuNzlBNTguMjEsNTguMjEsMCwwLDAsNTguMjEsNTEySDM4OS43OUE1OC4yMSw1OC4yMSwwLDAsMCw0NDgsNDUzLjc5QzQ0OCwzODEuNiwzOTAuOSwzMjMuMSwzMTkuNDEsMzIwWk0yMjQsMzA0QTEyOCwxMjgsMCwwLDAsMzUyLDE3NlY2NS44MmEzMiwzMiwwLDAsMC0yMC43Ni0zMEwyNDYuNDcsNC4wN2E2NCw2NCwwLDAsMC00NC45NCwwTDExNi43NiwzNS44NkEzMiwzMiwwLDAsMCw5Niw2NS44MlYxNzZBMTI4LDEyOCwwLDAsMCwyMjQsMzA0Wk0xODQsNzEuNjdhNSw1LDAsMCwxLDUtNWgyMS42N1Y0NWE1LDUsMCwwLDEsNS01aDE2LjY2YTUsNSwwLDAsMSw1LDVWNjYuNjdIMjU5YTUsNSwwLDAsMSw1LDVWODguMzNhNSw1LDAsMCwxLTUsNUgyMzcuMzNWMTE1YTUsNSwwLDAsMS01LDVIMjE1LjY3YTUsNSwwLDAsMS01LTVWOTMuMzNIMTg5YTUsNSwwLDAsMS01LTVaTTE0NCwxNjBIMzA0djE2YTgwLDgwLDAsMCwxLTE2MCwwWlwiXVxufTtcbnZhciBmYVVzZXJQbHVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItcGx1cycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjIzNFwiLCBcIk02MjQgMjA4aC02NHYtNjRjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djY0aC02NGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg2NHY2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di02NGg2NGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnptLTQwMCA0OGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTg5LjYgMzJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTQxLjZjMC03NC4yLTYwLjItMTM0LjQtMTM0LjQtMTM0LjR6XCJdXG59O1xudmFyIGZhVXNlclNlY3JldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLXNlY3JldCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjIxYlwiLCBcIk0zODMuOSAzMDguM2wyMy45LTYyLjZjNC0xMC41LTMuNy0yMS43LTE1LTIxLjdoLTU4LjVjMTEtMTguOSAxNy44LTQwLjYgMTcuOC02NHYtLjNjMzkuMi03LjggNjQtMTkuMSA2NC0zMS43IDAtMTMuMy0yNy4zLTI1LjEtNzAuMS0zMy05LjItMzIuOC0yNy02NS44LTQwLjYtODIuOC05LjUtMTEuOS0yNS45LTE1LjYtMzkuNS04LjhsLTI3LjYgMTMuOGMtOSA0LjUtMTkuNiA0LjUtMjguNiAwTDE4Mi4xIDMuNGMtMTMuNi02LjgtMzAtMy4xLTM5LjUgOC44LTEzLjUgMTctMzEuNCA1MC00MC42IDgyLjgtNDIuNyA3LjktNzAgMTkuNy03MCAzMyAwIDEyLjYgMjQuOCAyMy45IDY0IDMxLjd2LjNjMCAyMy40IDYuOCA0NS4xIDE3LjggNjRINTYuM2MtMTEuNSAwLTE5LjIgMTEuNy0xNC43IDIyLjNsMjUuOCA2MC4yQzI3LjMgMzI5LjggMCAzNzIuNyAwIDQyMi40djQ0LjhDMCA0OTEuOSAyMC4xIDUxMiA0NC44IDUxMmgzNTguNGMyNC43IDAgNDQuOC0yMC4xIDQ0LjgtNDQuOHYtNDQuOGMwLTQ4LjQtMjUuOC05MC40LTY0LjEtMTE0LjF6TTE3NiA0ODBsLTQxLjYtMTkyIDQ5LjYgMzIgMjQgNDAtMzIgMTIwem05NiAwbC0zMi0xMjAgMjQtNDAgNDkuNi0zMkwyNzIgNDgwem00MS43LTI5OC41Yy0zLjkgMTEuOS03IDI0LjYtMTYuNSAzMy40LTEwLjEgOS4zLTQ4IDIyLjQtNjQtMjUtMi44LTguNC0xNS40LTguNC0xOC4zIDAtMTcgNTAuMi01NiAzMi40LTY0IDI1LTkuNS04LjgtMTIuNy0yMS41LTE2LjUtMzMuNC0uOC0yLjUtNi4zLTUuNy02LjMtNS44di0xMC44YzI4LjMgMy42IDYxIDUuOCA5NiA1LjhzNjcuNy0yLjEgOTYtNS44djEwLjhjLS4xLjEtNS42IDMuMi02LjQgNS44elwiXVxufTtcbnZhciBmYVVzZXJTaGllbGQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci1zaGllbGQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1MDVcIiwgXCJNNjIyLjMgMjcxLjFsLTExNS4yLTQ1Yy00LjEtMS42LTEyLjYtMy43LTIyLjIgMGwtMTE1LjIgNDVjLTEwLjcgNC4yLTE3LjcgMTQtMTcuNyAyNC45IDAgMTExLjYgNjguNyAxODguOCAxMzIuOSAyMTMuOSA5LjYgMy43IDE4IDEuNiAyMi4yIDBDNTU4LjQgNDg5LjkgNjQwIDQyMC41IDY0MCAyOTZjMC0xMC45LTctMjAuNy0xNy43LTI0Ljl6TTQ5NiA0NjIuNFYyNzMuM2w5NS41IDM3LjNjLTUuNiA4Ny4xLTYwLjkgMTM1LjQtOTUuNSAxNTEuOHpNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTk2IDQwYzAtMi41LjgtNC44IDEuMS03LjItMi41LS4xLTQuOS0uOC03LjUtLjhoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjNi44IDAgMTMuMy0xLjUgMTkuMi00LTU0LTQyLjktOTkuMi0xMTYuNy05OS4yLTIxMnpcIl1cbn07XG52YXIgZmFVc2VyU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjUwNlwiLCBcIk02MzMuOCA0NTguMUwzNjIuMyAyNDguM0M0MTIuMSAyMzAuNyA0NDggMTgzLjggNDQ4IDEyOCA0NDggNTcuMyAzOTAuNyAwIDMyMCAwYy02Ny4xIDAtMTIxLjUgNTEuOC0xMjYuOSAxMTcuNEw0NS41IDMuNEMzOC41LTIgMjguNS0uOCAyMyA2LjJMMy40IDMxLjRjLTUuNCA3LTQuMiAxNyAyLjggMjIuNGw1ODguNCA0NTQuN2M3IDUuNCAxNyA0LjIgMjIuNS0yLjhsMTkuNi0yNS4zYzUuNC02LjggNC4xLTE2LjktMi45LTIyLjN6TTk2IDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTAuMkwyMDcuNCAyOTAuM0MxNDQuMiAzMDEuMyA5NiAzNTYgOTYgNDIyLjR6XCJdXG59O1xudmFyIGZhVXNlclRhZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLXRhZycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjUwN1wiLCBcIk02MzAuNiAzNjQuOWwtOTAuMy05MC4yYy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43aC03OS4zYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3OS4yYzAgMTcgNi43IDMzLjIgMTguNyA0NS4ybDkwLjMgOTAuMmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw5Mi41LTkyLjVjMTIuNi0xMi41IDEyLjYtMzIuNy4xLTQ1LjJ6bS0xODIuOC0yMWMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNCAyNCAxMC43IDI0IDI0YzAgMTMuMi0xMC43IDI0LTI0IDI0em0tMjIzLjgtODhjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhDMzUyIDU3LjMgMjk0LjcgMCAyMjQgMFM5NiA1Ny4zIDk2IDEyOGMwIDcwLjYgNTcuMyAxMjcuOSAxMjggMTI3Ljl6bTEyNy44IDExMS4yVjI5NGMtMTIuMi0zLjYtMjQuOS02LjItMzguMi02LjJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODcuOSAwIDM0OC4xIDAgNDIyLjN2NDEuNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMTUuNSAwIDI5LjEtNy41IDM3LjktMTguOWwtNTgtNThjLTE4LjEtMTguMS0yOC4xLTQyLjItMjguMS02Ny45elwiXVxufTtcbnZhciBmYVVzZXJUaWUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci10aWUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1MDhcIiwgXCJNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTk1LjggMzIuNkwyNzIgNDgwbC0zMi0xMzYgMzItNTZoLTk2bDMyIDU2LTMyIDEzNi00Ny44LTE5MS40QzU2LjkgMjkyIDAgMzUwLjMgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di00MS42YzAtNzIuMS01Ni45LTEzMC40LTEyOC4yLTEzMy44elwiXVxufTtcbnZhciBmYVVzZXJUaW1lcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLXRpbWVzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMjM1XCIsIFwiTTU4OS42IDI0MGw0NS42LTQ1LjZjNi4zLTYuMyA2LjMtMTYuNSAwLTIyLjhsLTIyLjgtMjIuOGMtNi4zLTYuMy0xNi41LTYuMy0yMi44IDBMNTQ0IDE5NC40bC00NS42LTQ1LjZjLTYuMy02LjMtMTYuNS02LjMtMjIuOCAwbC0yMi44IDIyLjhjLTYuMyA2LjMtNi4zIDE2LjUgMCAyMi44bDQ1LjYgNDUuNi00NS42IDQ1LjZjLTYuMyA2LjMtNi4zIDE2LjUgMCAyMi44bDIyLjggMjIuOGM2LjMgNi4zIDE2LjUgNi4zIDIyLjggMGw0NS42LTQ1LjYgNDUuNiA0NS42YzYuMyA2LjMgMTYuNSA2LjMgMjIuOCAwbDIyLjgtMjIuOGM2LjMtNi4zIDYuMy0xNi41IDAtMjIuOEw1ODkuNiAyNDB6TTIyNCAyNTZjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMCA5NiA1Ny4zIDk2IDEyOHM1Ny4zIDEyOCAxMjggMTI4em04OS42IDMyaC0xNi43Yy0yMi4yIDEwLjItNDYuOSAxNi03Mi45IDE2cy01MC42LTUuOC03Mi45LTE2aC0xNi43QzYwLjIgMjg4IDAgMzQ4LjIgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di00MS42YzAtNzQuMi02MC4yLTEzNC40LTEzNC40LTEzNC40elwiXVxufTtcbnZhciBmYVVzZXJzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXJzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMGMwXCIsIFwiTTk2IDIyNGMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NC02NCAyOC43LTY0IDY0IDI4LjcgNjQgNjQgNjR6bTQ0OCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0LTY0IDI4LjctNjQgNjQgMjguNyA2NCA2NCA2NHptMzIgMzJoLTY0Yy0xNy42IDAtMzMuNSA3LjEtNDUuMSAxOC42IDQwLjMgMjIuMSA2OC45IDYyIDc1LjEgMTA5LjRoNjZjMTcuNyAwIDMyLTE0LjMgMzItMzJ2LTMyYzAtMzUuMy0yOC43LTY0LTY0LTY0em0tMjU2IDBjNjEuOSAwIDExMi01MC4xIDExMi0xMTJTMzgxLjkgMzIgMzIwIDMyIDIwOCA4Mi4xIDIwOCAxNDRzNTAuMSAxMTIgMTEyIDExMnptNzYuOCAzMmgtOC4zYy0yMC44IDEwLTQzLjkgMTYtNjguNSAxNnMtNDcuNi02LTY4LjUtMTZoLTguM0MxNzkuNiAyODggMTI4IDMzOS42IDEyOCA0MDMuMlY0MzJjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4di0yOC44YzAtNjMuNi01MS42LTExNS4yLTExNS4yLTExNS4yem0tMjIzLjctMTMuNEMxNjEuNSAyNjMuMSAxNDUuNiAyNTYgMTI4IDI1Nkg2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjUuOWM2LjMtNDcuNCAzNC45LTg3LjMgNzUuMi0xMDkuNHpcIl1cbn07XG52YXIgZmFVc2Vyc0NvZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2Vycy1jb2cnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1MDlcIiwgXCJNNjEwLjUgMzQxLjNjMi42LTE0LjEgMi42LTI4LjUgMC00Mi42bDI1LjgtMTQuOWMzLTEuNyA0LjMtNS4yIDMuMy04LjUtNi43LTIxLjYtMTguMi00MS4yLTMzLjItNTcuNC0yLjMtMi41LTYtMy4xLTktMS40bC0yNS44IDE0LjljLTEwLjktOS4zLTIzLjQtMTYuNS0zNi45LTIxLjN2LTI5LjhjMC0zLjQtMi40LTYuNC01LjctNy4xLTIyLjMtNS00NS00LjgtNjYuMiAwLTMuMy43LTUuNyAzLjctNS43IDcuMXYyOS44Yy0xMy41IDQuOC0yNiAxMi0zNi45IDIxLjNsLTI1LjgtMTQuOWMtMi45LTEuNy02LjctMS4xLTkgMS40LTE1IDE2LjItMjYuNSAzNS44LTMzLjIgNTcuNC0xIDMuMy40IDYuOCAzLjMgOC41bDI1LjggMTQuOWMtMi42IDE0LjEtMi42IDI4LjUgMCA0Mi42bC0yNS44IDE0LjljLTMgMS43LTQuMyA1LjItMy4zIDguNSA2LjcgMjEuNiAxOC4yIDQxLjEgMzMuMiA1Ny40IDIuMyAyLjUgNiAzLjEgOSAxLjRsMjUuOC0xNC45YzEwLjkgOS4zIDIzLjQgMTYuNSAzNi45IDIxLjN2MjkuOGMwIDMuNCAyLjQgNi40IDUuNyA3LjEgMjIuMyA1IDQ1IDQuOCA2Ni4yIDAgMy4zLS43IDUuNy0zLjcgNS43LTcuMXYtMjkuOGMxMy41LTQuOCAyNi0xMiAzNi45LTIxLjNsMjUuOCAxNC45YzIuOSAxLjcgNi43IDEuMSA5LTEuNCAxNS0xNi4yIDI2LjUtMzUuOCAzMy4yLTU3LjQgMS0zLjMtLjQtNi44LTMuMy04LjVsLTI1LjgtMTQuOXpNNDk2IDM2OC41Yy0yNi44IDAtNDguNS0yMS44LTQ4LjUtNDguNXMyMS44LTQ4LjUgNDguNS00OC41IDQ4LjUgMjEuOCA0OC41IDQ4LjUtMjEuNyA0OC41LTQ4LjUgNDguNXpNOTYgMjI0YzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0LTY0IDI4LjctNjQgNjQgMjguNyA2NCA2NCA2NHptMjI0IDMyYzEuOSAwIDMuNy0uNSA1LjYtLjYgOC4zLTIxLjcgMjAuNS00Mi4xIDM2LjMtNTkuMiA3LjQtOCAxNy45LTEyLjYgMjguOS0xMi42IDYuOSAwIDEzLjcgMS44IDE5LjYgNS4zbDcuOSA0LjZjLjgtLjUgMS42LS45IDIuNC0xLjQgNy0xNC42IDExLjItMzAuOCAxMS4yLTQ4IDAtNjEuOS01MC4xLTExMi0xMTItMTEyUzIwOCA4Mi4xIDIwOCAxNDRjMCA2MS45IDUwLjEgMTEyIDExMiAxMTJ6bTEwNS4yIDE5NC41Yy0yLjMtMS4yLTQuNi0yLjYtNi44LTMuOS04LjIgNC44LTE1LjMgOS44LTI3LjUgOS44LTEwLjkgMC0yMS40LTQuNi0yOC45LTEyLjYtMTguMy0xOS44LTMyLjMtNDMuOS00MC4yLTY5LjYtMTAuNy0zNC41IDI0LjktNDkuNyAyNS44LTUwLjMtLjEtMi42LS4xLTUuMiAwLTcuOGwtNy45LTQuNmMtMy44LTIuMi03LTUtOS44LTguMS0zLjMuMi02LjUuNi05LjguNi0yNC42IDAtNDcuNi02LTY4LjUtMTZoLTguM0MxNzkuNiAyODggMTI4IDMzOS42IDEyOCA0MDMuMlY0MzJjMCAyNi41IDIxLjUgNDggNDggNDhoMjU1LjRjLTMuNy02LTYuMi0xMi44LTYuMi0yMC4zdi05LjJ6TTE3My4xIDI3NC42QzE2MS41IDI2My4xIDE0NS42IDI1NiAxMjggMjU2SDY0Yy0zNS4zIDAtNjQgMjguNy02NCA2NHYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NS45YzYuMy00Ny40IDM0LjktODcuMyA3NS4yLTEwOS40elwiXVxufTtcbnZhciBmYVVzZXJzU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlcnMtc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImUwNzNcIiwgXCJNMTMyLjY1LDIxMi4zMiwzNi4yMSwxMzcuNzhBNjMuNCw2My40LDAsMCwwLDMyLDE2MGE2My44NCw2My44NCwwLDAsMCwxMDAuNjUsNTIuMzJabTQwLjQ0LDYyLjI4QTYzLjc5LDYzLjc5LDAsMCwwLDEyOCwyNTZINjRBNjQuMDYsNjQuMDYsMCwwLDAsMCwzMjB2MzJhMzIsMzIsMCwwLDAsMzIsMzJIOTcuOTFBMTQ2LjYyLDE0Ni42MiwwLDAsMSwxNzMuMDksMjc0LjZaTTU0NCwyMjRhNjQsNjQsMCwxLDAtNjQtNjRBNjQuMDYsNjQuMDYsMCwwLDAsNTQ0LDIyNFpNNTAwLjU2LDM1NS4xMWExMTQuMjQsMTE0LjI0LDAsMCwwLTg0LjQ3LTY1LjI4TDM2MSwyNDcuMjNjNDEuNDYtMTYuMyw3MS01NS45Miw3MS0xMDMuMjNBMTExLjkzLDExMS45MywwLDAsMCwzMjAsMzJjLTU3LjE0LDAtMTAzLjY5LDQyLjgzLTExMC42LDk4LjA4TDQ1LjQ2LDMuMzhBMTYsMTYsMCwwLDAsMjMsNi4xOUwzLjM3LDMxLjQ2QTE2LDE2LDAsMCwwLDYuMTgsNTMuOTFMNTk0LjUzLDUwOC42M0ExNiwxNiwwLDAsMCw2MTcsNTA1LjgybDE5LjY0LTI1LjI3YTE2LDE2LDAsMCwwLTIuODEtMjIuNDVaTTEyOCw0MDMuMjFWNDMyYTQ4LDQ4LDAsMCwwLDQ4LDQ4SDQ2NGE0Ny40NSw0Ny40NSwwLDAsMCwxMi41Ny0xLjg3TDIzMiwyODkuMTNDMTczLjc0LDI5NC44MywxMjgsMzQzLjQyLDEyOCw0MDMuMjFaTTU3NiwyNTZINTEyYTYzLjc5LDYzLjc5LDAsMCwwLTQ1LjA5LDE4LjZBMTQ2LjI5LDE0Ni4yOSwwLDAsMSw1NDIsMzg0aDY2YTMyLDMyLDAsMCwwLDMyLTMyVjMyMEE2NC4wNiw2NC4wNiwwLDAsMCw1NzYsMjU2WlwiXVxufTtcbnZhciBmYVV0ZW5zaWxTcG9vbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1dGVuc2lsLXNwb29uJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMmU1XCIsIFwiTTQ4MC4xIDMxLjljLTU1LTU1LjEtMTY0LjktMzQuNS0yMjcuOCAyOC41LTQ5LjMgNDkuMy01NS4xIDExMC0yOC44IDE2MC40TDkgNDEzLjJjLTExLjYgMTAuNS0xMi4xIDI4LjUtMSAzOS41TDU5LjMgNTA0YzExIDExIDI5LjEgMTAuNSAzOS41LTEuMWwxOTIuNC0yMTQuNGM1MC40IDI2LjMgMTExLjEgMjAuNSAxNjAuNC0yOC44IDYzLTYyLjkgODMuNi0xNzIuOCAyOC41LTIyNy44elwiXVxufTtcbnZhciBmYVV0ZW5zaWxzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3V0ZW5zaWxzJyxcbiAgaWNvbjogWzQxNiwgNTEyLCBbXSwgXCJmMmU3XCIsIFwiTTIwNy45IDE1LjJjLjggNC43IDE2LjEgOTQuNSAxNi4xIDEyOC44IDAgNTIuMy0yNy44IDg5LjYtNjguOSAxMDQuNkwxNjggNDg2LjdjLjcgMTMuNy0xMC4yIDI1LjMtMjQgMjUuM0g4MGMtMTMuNyAwLTI0LjctMTEuNS0yNC0yNS4zbDEyLjktMjM4LjFDMjcuNyAyMzMuNiAwIDE5Ni4yIDAgMTQ0IDAgMTA5LjYgMTUuMyAxOS45IDE2LjEgMTUuMiAxOS4zLTUuMSA2MS40LTUuNCA2NCAxNi4zdjE0MS4yYzEuMyAzLjQgMTUuMSAzLjIgMTYgMCAxLjQtMjUuMyA3LjktMTM5LjIgOC0xNDEuOCAzLjMtMjAuOCA0NC43LTIwLjggNDcuOSAwIC4yIDIuNyA2LjYgMTE2LjUgOCAxNDEuOC45IDMuMiAxNC44IDMuNCAxNiAwVjE2LjNjMi42LTIxLjYgNDQuOC0yMS40IDQ4LTEuMXptMTE5LjIgMjg1LjdsLTE1IDE4NS4xYy0xLjIgMTQgOS45IDI2IDIzLjkgMjZoNTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjRjMC0xMy4yLTEwLjctMjQtMjQtMjQtODIuNSAwLTIyMS40IDE3OC41LTY0LjkgMzAwLjl6XCJdXG59O1xudmFyIGZhVmVjdG9yU3F1YXJlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZlY3Rvci1zcXVhcmUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1Y2JcIiwgXCJNNTEyIDEyOFYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC05NmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMkgxNjBjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkgzMkMxNC4zMyAwIDAgMTQuMzMgMCAzMnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMydjE5MmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJoMTkyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMlYxNjBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnptLTk2LTY0aDMydjMyaC0zMlY2NHpNNjQgNjRoMzJ2MzJINjRWNjR6bTMyIDM4NEg2NHYtMzJoMzJ2MzJ6bTM1MiAwaC0zMnYtMzJoMzJ2MzJ6bS0zMi05NmgtMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJIMTYwdi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDk2VjE2MGgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjk2aDE5MnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMydjE5MnpcIl1cbn07XG52YXIgZmFWZW51cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2ZW51cycsXG4gIGljb246IFsyODgsIDUxMiwgW10sIFwiZjIyMVwiLCBcIk0yODggMTc2YzAtNzkuNS02NC41LTE0NC0xNDQtMTQ0UzAgOTYuNSAwIDE3NmMwIDY4LjUgNDcuOSAxMjUuOSAxMTIgMTQwLjRWMzY4SDc2Yy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDM2djM2YzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTM2aDM2YzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0zNnYtNTEuNmM2NC4xLTE0LjUgMTEyLTcxLjkgMTEyLTE0MC40em0tMjI0IDBjMC00NC4xIDM1LjktODAgODAtODBzODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwLTgwLTM1LjktODAtODB6XCJdXG59O1xudmFyIGZhVmVudXNEb3VibGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndmVudXMtZG91YmxlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMjI2XCIsIFwiTTI4OCAxNzZjMC03OS41LTY0LjUtMTQ0LTE0NC0xNDRTMCA5Ni41IDAgMTc2YzAgNjguNSA0Ny45IDEyNS45IDExMiAxNDAuNFYzNjhINzZjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMzZ2MzZjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtMzZoMzZjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTM2di01MS42YzY0LjEtMTQuNSAxMTItNzEuOSAxMTItMTQwLjR6bS0yMjQgMGMwLTQ0LjEgMzUuOS04MCA4MC04MHM4MCAzNS45IDgwIDgwLTM1LjkgODAtODAgODAtODAtMzUuOS04MC04MHptMzM2IDE0MC40VjM2OGgzNmM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC0zNnYzNmMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTM2aC0zNmMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoMzZ2LTUxLjZjLTIxLjItNC44LTQwLjYtMTQuMy01Ny4yLTI3LjMgMTQtMTYuNyAyNS0zNiAzMi4xLTU3LjEgMTQuNSAxNC44IDM0LjcgMjQgNTcuMSAyNCA0NC4xIDAgODAtMzUuOSA4MC04MHMtMzUuOS04MC04MC04MGMtMjIuMyAwLTQyLjYgOS4yLTU3LjEgMjQtNy4xLTIxLjEtMTgtNDAuNC0zMi4xLTU3LjFDMzAzLjQgNDMuNiAzMzQuMyAzMiAzNjggMzJjNzkuNSAwIDE0NCA2NC41IDE0NCAxNDQgMCA2OC41LTQ3LjkgMTI1LjktMTEyIDE0MC40elwiXVxufTtcbnZhciBmYVZlbnVzTWFycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2ZW51cy1tYXJzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMjI4XCIsIFwiTTU2NCAwaC03OWMtMTAuNyAwLTE2IDEyLjktOC41IDIwLjVsMTYuOSAxNi45LTQ4LjcgNDguN0M0MjIuNSA3Mi4xIDM5Ni4yIDY0IDM2OCA2NGMtMzMuNyAwLTY0LjYgMTEuNi04OS4yIDMwLjkgMTQgMTYuNyAyNSAzNiAzMi4xIDU3LjEgMTQuNS0xNC44IDM0LjctMjQgNTcuMS0yNCA0NC4xIDAgODAgMzUuOSA4MCA4MHMtMzUuOSA4MC04MCA4MGMtMjIuMyAwLTQyLjYtOS4yLTU3LjEtMjQtNy4xIDIxLjEtMTggNDAuNC0zMi4xIDU3LjEgMjQuNSAxOS40IDU1LjUgMzAuOSA4OS4yIDMwLjkgNzkuNSAwIDE0NC02NC41IDE0NC0xNDQgMC0yOC4yLTguMS01NC41LTIyLjEtNzYuN2w0OC43LTQ4LjcgMTYuOSAxNi45YzIuNCAyLjQgNS40IDMuNSA4LjQgMy41IDYuMiAwIDEyLjEtNC44IDEyLjEtMTJWMTJjMC02LjYtNS40LTEyLTEyLTEyek0xNDQgNjRDNjQuNSA2NCAwIDEyOC41IDAgMjA4YzAgNjguNSA0Ny45IDEyNS45IDExMiAxNDAuNFY0MDBINzZjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMzZ2MzZjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtMzZoMzZjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTM2di01MS42YzY0LjEtMTQuNiAxMTItNzEuOSAxMTItMTQwLjQgMC03OS41LTY0LjUtMTQ0LTE0NC0xNDR6bTAgMjI0Yy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHpcIl1cbn07XG52YXIgZmFWaWFsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZpYWwnLFxuICBpY29uOiBbNDgwLCA1MTIsIFtdLCBcImY0OTJcIiwgXCJNNDc3LjcgMTg2LjFMMzA5LjUgMTguM2MtMy4xLTMuMS04LjItMy4xLTExLjMgMGwtMzQgMzMuOWMtMy4xIDMuMS0zLjEgOC4yIDAgMTEuM2wxMS4yIDExLjFMMzMgMzE2LjVjLTM4LjggMzguNy00NS4xIDEwMi05LjQgMTQzLjUgMjAuNiAyNCA0OS41IDM2IDc4LjQgMzUuOSAyNi40IDAgNTIuOC0xMCA3Mi45LTMwLjFsMjQ2LjMtMjQ1LjcgMTEuMiAxMS4xYzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsMzQtMzMuOWMzLjEtMyAzLjEtOC4xIDAtMTEuMnpNMzE4IDI1NkgxNjFsMTQ4LTE0Ny43IDc4LjUgNzguM0wzMTggMjU2elwiXVxufTtcbnZhciBmYVZpYWxzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZpYWxzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNDkzXCIsIFwiTTcyIDY0aDI0djI0MGMwIDQ0LjEgMzUuOSA4MCA4MCA4MHM4MC0zNS45IDgwLTgwVjY0aDI0YzQuNCAwIDgtMy42IDgtOFY4YzAtNC40LTMuNi04LTgtOEg3MmMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOHptNzIgMGg2NHY5NmgtNjRWNjR6bTQ4MCAzODRIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNjA4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2ek0zNjAgNjRoMjR2MjQwYzAgNDQuMSAzNS45IDgwIDgwIDgwczgwLTM1LjkgODAtODBWNjRoMjRjNC40IDAgOC0zLjYgOC04VjhjMC00LjQtMy42LTgtOC04SDM2MGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOHptNzIgMGg2NHY5NmgtNjRWNjR6XCJdXG59O1xudmFyIGZhVmlkZW8gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndmlkZW8nLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYwM2RcIiwgXCJNMzM2LjIgNjRINDcuOEMyMS40IDY0IDAgODUuNCAwIDExMS44djI4OC40QzAgNDI2LjYgMjEuNCA0NDggNDcuOCA0NDhoMjg4LjRjMjYuNCAwIDQ3LjgtMjEuNCA0Ny44LTQ3LjhWMTExLjhjMC0yNi40LTIxLjQtNDcuOC00Ny44LTQ3Ljh6bTE4OS40IDM3LjdMNDE2IDE3Ny4zdjE1Ny40bDEwOS42IDc1LjVjMjEuMiAxNC42IDUwLjQtLjMgNTAuNC0yNS44VjEyNy41YzAtMjUuNC0yOS4xLTQwLjQtNTAuNC0yNS44elwiXVxufTtcbnZhciBmYVZpZGVvU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndmlkZW8tc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY0ZTJcIiwgXCJNNjMzLjggNDU4LjFsLTU1LTQyLjVjMTUuNC0xLjQgMjkuMi0xMy43IDI5LjItMzEuMXYtMjU3YzAtMjUuNS0yOS4xLTQwLjQtNTAuNC0yNS44TDQ0OCAxNzcuM3YxMzcuMmwtMzItMjQuN3YtMTc4YzAtMjYuNC0yMS40LTQ3LjgtNDcuOC00Ny44SDEyMy45TDQ1LjUgMy40QzM4LjUtMiAyOC41LS44IDIzIDYuMkwzLjQgMzEuNGMtNS40IDctNC4yIDE3IDIuOCAyMi40TDQyLjcgODIgNDE2IDM3MC42bDE3OC41IDEzOGM3IDUuNCAxNyA0LjIgMjIuNS0yLjhsMTkuNi0yNS4zYzUuNS02LjkgNC4yLTE3LTIuOC0yMi40ek0zMiA0MDAuMmMwIDI2LjQgMjEuNCA0Ny44IDQ3LjggNDcuOGgyODguNGMxMS4yIDAgMjEuNC00IDI5LjYtMTAuNUwzMiAxNTQuN3YyNDUuNXpcIl1cbn07XG52YXIgZmFWaWhhcmEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndmloYXJhJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNmE3XCIsIFwiTTYzMi44OCA0MDAuNzFMNTQ0IDM1MnYtNjRsNTUuMTYtMTcuNjljMTEuNzktNS45IDExLjc5LTIyLjcyIDAtMjguNjJMNDgwIDE5MnYtNjRsMjcuMzEtMTYuM2M3LjcyLTcuNzIgNS42MS0yMC43NC00LjE2LTI1LjYyTDMyMCAwIDEzNi44NSA4Ni4wN2MtOS43NyA0Ljg4LTExLjg4IDE3LjktNC4xNiAyNS42MkwxNjAgMTI4djY0TDQwLjg0IDI0MS42OWMtMTEuNzkgNS45LTExLjc5IDIyLjcyIDAgMjguNjJMOTYgMjg4djY0TDcuMTIgNDAwLjcxYy01LjQyIDMuNjItNy43IDkuNjMtNyAxNS4yOS42MiA1LjAxIDMuNTcgOS43NSA4LjcyIDEyLjMzTDY0IDQ0OHY0OGMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNDhoMTYwdjQ4YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di00OGgxNjB2NDhjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTQ4bDU1LjE1LTE5LjY3YzUuMTYtMi41OCA4LjEtNy4zMiA4LjcyLTEyLjMzLjcxLTUuNjctMS41Ny0xMS42OC02Ljk5LTE1LjI5ek0yMjQgMTI4aDE5MnY2NEgyMjR2LTY0em0tNjQgMjI0di02NGgzMjB2NjRIMTYwelwiXVxufTtcbnZhciBmYVZpcnVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZpcnVzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlMDc0XCIsIFwiTTQ4My41NSwyMjcuNTVINDYyYy01MC42OCwwLTc2LjA3LTYxLjI3LTQwLjIzLTk3LjExTDQzNywxMTUuMTlBMjguNDQsMjguNDQsMCwwLDAsMzk2LjgsNzVMMzgxLjU2LDkwLjIyYy0zNS44NCwzNS44My05Ny4xMSwxMC40NS05Ny4xMS00MC4yM1YyOC40NGEyOC40NSwyOC40NSwwLDAsMC01Ni45LDBWNTBjMCw1MC42OC02MS4yNyw3Ni4wNi05Ny4xMSw0MC4yM0wxMTUuMiw3NUEyOC40NCwyOC40NCwwLDAsMCw3NSwxMTUuMTlsMTUuMjUsMTUuMjVjMzUuODQsMzUuODQsMTAuNDUsOTcuMTEtNDAuMjMsOTcuMTFIMjguNDVhMjguNDUsMjguNDUsMCwxLDAsMCw1Ni44OUg1MGM1MC42OCwwLDc2LjA3LDYxLjI4LDQwLjIzLDk3LjEyTDc1LDM5Ni44QTI4LjQ1LDI4LjQ1LDAsMCwwLDExNS4yLDQzN2wxNS4yNC0xNS4yNWMzNS44NC0zNS44NCw5Ny4xMS0xMC40NSw5Ny4xMSw0MC4yM3YyMS41NGEyOC40NSwyOC40NSwwLDAsMCw1Ni45LDBWNDYyYzAtNTAuNjgsNjEuMjctNzYuMDcsOTcuMTEtNDAuMjNMMzk2LjgsNDM3QTI4LjQ1LDI4LjQ1LDAsMCwwLDQzNywzOTYuOGwtMTUuMjUtMTUuMjRjLTM1Ljg0LTM1Ljg0LTEwLjQ1LTk3LjEyLDQwLjIzLTk3LjEyaDIxLjU0YTI4LjQ1LDI4LjQ1LDAsMSwwLDAtNTYuODlaTTIyNCwyNzJhNDgsNDgsMCwxLDEsNDgtNDhBNDgsNDgsMCwwLDEsMjI0LDI3MlptODAsNTZhMjQsMjQsMCwxLDEsMjQtMjRBMjQsMjQsMCwwLDEsMzA0LDMyOFpcIl1cbn07XG52YXIgZmFWaXJ1c1NsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZpcnVzLXNsYXNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlMDc1XCIsIFwiTTExNCwyMjcuNkg5Mi40Qzc2LjcsMjI3LjYsNjQsMjQwLjMsNjQsMjU2czEyLjcsMjguNCwyOC40LDI4LjRIMTE0YzUwLjcsMCw3Ni4xLDYxLjMsNDAuMiw5Ny4xTDEzOSwzOTYuOCBjLTExLjUsMTAuNy0xMi4yLDI4LjctMS42LDQwLjJzMjguNywxMi4yLDQwLjIsMS42YzAuNS0wLjUsMS4xLTEsMS42LTEuNmwxNS4yLTE1LjJjMzUuOC0zNS44LDk3LjEtMTAuNSw5Ny4xLDQwLjJ2MjEuNSBjMCwxNS43LDEyLjgsMjguNCwyOC41LDI4LjRjMTUuNywwLDI4LjQtMTIuNywyOC40LTI4LjRWNDYyYzAtMjYuNiwxNy00NS45LDM4LjItNTMuNGwtMjQ0LjUtMTg5IEMxMzMuNywyMjQuNywxMjMuOSwyMjcuNSwxMTQsMjI3LjZ6IE02MTcsNTA1LjhsMTkuNi0yNS4zYzUuNC03LDQuMi0xNy0yLjgtMjIuNUw0NzAuNiwzMzJjNC4yLTI1LjQsMjQuOS00Ny41LDU1LjQtNDcuNWgyMS41IGMxNS43LDAsMjguNC0xMi43LDI4LjQtMjguNHMtMTIuNy0yOC40LTI4LjQtMjguNEg1MjZjLTUwLjcsMC03Ni4xLTYxLjMtNDAuMi05Ny4xbDE1LjItMTUuM2MxMC43LTExLjUsMTAtMjkuNS0xLjYtNDAuMiBjLTEwLjktMTAuMS0yNy43LTEwLjEtMzguNiwwbC0xNS4yLDE1LjJjLTM1LjgsMzUuOC05Ny4xLDEwLjUtOTcuMS00MC4yVjI4LjVDMzQ4LjQsMTIuNywzMzUuNywwLDMyMCwwIGMtMTUuNywwLTI4LjQsMTIuNy0yOC40LDI4LjRWNTBjMCw1MC43LTYxLjMsNzYuMS05Ny4xLDQwLjJMMTc5LjIsNzVjLTExLjEtMTEuMS0yOS40LTEwLjYtNDAuNSwwLjVMNDUuNSwzLjQgYy03LTUuNC0xNy00LjItMjIuNSwyLjhMMy40LDMxLjVjLTUuNCw3LTQuMiwxNywyLjgsMjIuNWw1ODguNCw0NTQuN0M2MDEuNSw1MTQuMSw2MTEuNiw1MTIuOCw2MTcsNTA1Ljh6IE0zMzUuNCwyMjcuNWwtNjIuOS00OC42IGM0LjktMS44LDEwLjItMi44LDE1LjQtMi45YzI2LjUsMCw0OCwyMS41LDQ4LDQ4QzMzNiwyMjUuMiwzMzUuNSwyMjYuMywzMzUuNCwyMjcuNXpcIl1cbn07XG52YXIgZmFWaXJ1c2VzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZpcnVzZXMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImUwNzZcIiwgXCJNNjI0LDM1Mkg2MTEuODhjLTI4LjUxLDAtNDIuNzktMzQuNDctMjIuNjMtNTQuNjNsOC41OC04LjU3YTE2LDE2LDAsMSwwLTIyLjYzLTIyLjYzbC04LjU3LDguNThDNTQ2LjQ3LDI5NC45MSw1MTIsMjgwLjYzLDUxMiwyNTIuMTJWMjQwYTE2LDE2LDAsMCwwLTMyLDB2MTIuMTJjMCwyOC41MS0zNC40Nyw0Mi43OS01NC42MywyMi42M2wtOC41Ny04LjU4YTE2LDE2LDAsMCwwLTIyLjYzLDIyLjYzbDguNTgsOC41N2MyMC4xNiwyMC4xNiw1Ljg4LDU0LjYzLTIyLjYzLDU0LjYzSDM2OGExNiwxNiwwLDAsMCwwLDMyaDEyLjEyYzI4LjUxLDAsNDIuNzksMzQuNDcsMjIuNjMsNTQuNjNsLTguNTgsOC41N2ExNiwxNiwwLDEsMCwyMi42MywyMi42M2w4LjU3LTguNThjMjAuMTYtMjAuMTYsNTQuNjMtNS44OCw1NC42MywyMi42M1Y0OTZhMTYsMTYsMCwwLDAsMzIsMFY0ODMuODhjMC0yOC41MSwzNC40Ny00Mi43OSw1NC42My0yMi42M2w4LjU3LDguNThhMTYsMTYsMCwxLDAsMjIuNjMtMjIuNjNsLTguNTgtOC41N0M1NjkuMDksNDE4LjQ3LDU4My4zNywzODQsNjExLjg4LDM4NEg2MjRhMTYsMTYsMCwwLDAsMC0zMlpNNDgwLDM4NGEzMiwzMiwwLDEsMSwzMi0zMkEzMiwzMiwwLDAsMSw0ODAsMzg0Wk0zNDYuNTEsMjEzLjMzaDE2LjE2YTIxLjMzLDIxLjMzLDAsMCwwLDAtNDIuNjZIMzQ2LjUxYy0zOCwwLTU3LjA1LTQ2LTMwLjE3LTcyLjg0bDExLjQzLTExLjQ0QTIxLjMzLDIxLjMzLDAsMCwwLDI5Ny42LDU2LjIzTDI4Ni4xNyw2Ny42NmMtMjYuODgsMjYuODgtNzIuODQsNy44NS03Mi44NC0zMC4xN1YyMS4zM2EyMS4zMywyMS4zMywwLDAsMC00Mi42NiwwVjM3LjQ5YzAsMzgtNDYsNTcuMDUtNzIuODQsMzAuMTdMODYuNCw1Ni4yM0EyMS4zMywyMS4zMywwLDAsMCw1Ni4yMyw4Ni4zOUw2Ny42Niw5Ny44M2MyNi44OCwyNi44OCw3Ljg1LDcyLjg0LTMwLjE3LDcyLjg0SDIxLjMzYTIxLjMzLDIxLjMzLDAsMCwwLDAsNDIuNjZIMzcuNDljMzgsMCw1Ny4wNSw0NiwzMC4xNyw3Mi44NEw1Ni4yMywyOTcuNkEyMS4zMywyMS4zMywwLDEsMCw4Ni40LDMyNy43N2wxMS40My0xMS40M2MyNi44OC0yNi44OCw3Mi44NC03Ljg1LDcyLjg0LDMwLjE3djE2LjE2YTIxLjMzLDIxLjMzLDAsMCwwLDQyLjY2LDBWMzQ2LjUxYzAtMzgsNDYtNTcuMDUsNzIuODQtMzAuMTdsMTEuNDMsMTEuNDNhMjEuMzMsMjEuMzMsMCwwLDAsMzAuMTctMzAuMTdsLTExLjQzLTExLjQzQzI4OS40NiwyNTkuMjksMzA4LjQ5LDIxMy4zMywzNDYuNTEsMjEzLjMzWk0xNjAsMTkyYTMyLDMyLDAsMSwxLDMyLTMyQTMyLDMyLDAsMCwxLDE2MCwxOTJabTgwLDMyYTE2LDE2LDAsMSwxLDE2LTE2QTE2LDE2LDAsMCwxLDI0MCwyMjRaXCJdXG59O1xudmFyIGZhVm9pY2VtYWlsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZvaWNlbWFpbCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjg5N1wiLCBcIk00OTYgMTI4YTE0NCAxNDQgMCAwIDAtMTE5Ljc0IDIyNEgyNjMuNzRBMTQ0IDE0NCAwIDEgMCAxNDQgNDE2aDM1MmExNDQgMTQ0IDAgMCAwIDAtMjg4ek02NCAyNzJhODAgODAgMCAxIDEgODAgODAgODAgODAgMCAwIDEtODAtODB6bTQzMiA4MGE4MCA4MCAwIDEgMSA4MC04MCA4MCA4MCAwIDAgMS04MCA4MHpcIl1cbn07XG52YXIgZmFWb2xsZXliYWxsQmFsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2b2xsZXliYWxsLWJhbGwnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY0NWZcIiwgXCJNMjMxLjM5IDI0My40OGEyODUuNTYgMjg1LjU2IDAgMCAwLTIyLjctMTA1LjdjLTkwLjggNDIuNC0xNTcuNSAxMjIuNC0xODAuMyAyMTYuOGEyNDkgMjQ5IDAgMCAwIDU2LjkgODEuMSAzMzMuODcgMzMzLjg3IDAgMCAxIDE0Ni4xLTE5Mi4yem0tMzYuOS0xMzQuNGEyODQuMjMgMjg0LjIzIDAgMCAwLTU3LjQtNzAuN2MtOTEgNDkuOC0xNDQuOCAxNTIuOS0xMjUgMjYyLjIgMzMuNC04My4xIDk4LjQtMTUyIDE4Mi40LTE5MS41em0xODcuNiAxNjUuMWM4LjYtOTkuOC0yNy4zLTE5Ny41LTk3LjUtMjY0LjQtMTQuNy0xLjctNTEuNi01LjUtOTguOSA4LjVBMzMzLjg3IDMzMy44NyAwIDAgMSAyNzkuMTkgMjQxYTI4NSAyODUgMCAwIDAgMTAyLjkgMzMuMTh6bS0xMjQuNyA5LjVhMjg2LjMzIDI4Ni4zMyAwIDAgMC04MC4yIDcyLjZjODIgNTcuMyAxODQuNSA3NS4xIDI3Ny41IDQ3LjhhMjQ3LjE1IDI0Ny4xNSAwIDAgMCA0Mi4yLTg5LjkgMzM2LjEgMzM2LjEgMCAwIDEtODAuOSAxMC40Yy01NC42LS4xLTEwOC45LTE0LjEtMTU4LjYtNDAuOXptLTk4LjMgOTkuN2MtMTUuMiAyNi0yNS43IDU0LjQtMzIuMSA4NC4yYTI0Ny4wNyAyNDcuMDcgMCAwIDAgMjg5LTIyLjFjLTExMi45IDE2LjEtMjAzLjMtMjQuOC0yNTYuOS02Mi4xem0xODAuMy0zNjAuNmM1NS4zIDcwLjQgODIuNSAxNjEuMiA3NC42IDI1My42YTI4Ni41OSAyODYuNTkgMCAwIDAgODkuNy0xNC4yYzAtMiAuMy00IC4zLTYgMC0xMDcuOC02OC43LTE5OS4xLTE2NC42LTIzMy40elwiXVxufTtcbnZhciBmYVZvbHVtZURvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndm9sdW1lLWRvd24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYwMjdcIiwgXCJNMjE1LjAzIDcyLjA0TDEyNi4wNiAxNjFIMjRjLTEzLjI2IDAtMjQgMTAuNzQtMjQgMjR2MTQ0YzAgMTMuMjUgMTAuNzQgMjQgMjQgMjRoMTAyLjA2bDg4Ljk3IDg4Ljk1YzE1LjAzIDE1LjAzIDQwLjk3IDQuNDcgNDAuOTctMTYuOTdWODkuMDJjMC0yMS40Ny0yNS45Ni0zMS45OC00MC45Ny0xNi45OHptMTIzLjIgMTA4LjA4Yy0xMS41OC02LjMzLTI2LjE5LTIuMTYtMzIuNjEgOS40NS02LjM5IDExLjYxLTIuMTYgMjYuMiA5LjQ1IDMyLjYxQzMyNy45OCAyMjkuMjggMzM2IDI0Mi42MiAzMzYgMjU3YzAgMTQuMzgtOC4wMiAyNy43Mi0yMC45MiAzNC44MS0xMS42MSA2LjQxLTE1Ljg0IDIxLTkuNDUgMzIuNjEgNi40MyAxMS42NiAyMS4wNSAxNS44IDMyLjYxIDkuNDUgMjguMjMtMTUuNTUgNDUuNzctNDUgNDUuNzctNzYuODhzLTE3LjU0LTYxLjMyLTQ1Ljc4LTc2Ljg3elwiXVxufTtcbnZhciBmYVZvbHVtZU11dGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndm9sdW1lLW11dGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY2YTlcIiwgXCJNMjE1LjAzIDcxLjA1TDEyNi4wNiAxNjBIMjRjLTEzLjI2IDAtMjQgMTAuNzQtMjQgMjR2MTQ0YzAgMTMuMjUgMTAuNzQgMjQgMjQgMjRoMTAyLjA2bDg4Ljk3IDg4Ljk1YzE1LjAzIDE1LjAzIDQwLjk3IDQuNDcgNDAuOTctMTYuOTdWODguMDJjMC0yMS40Ni0yNS45Ni0zMS45OC00MC45Ny0xNi45N3pNNDYxLjY0IDI1Nmw0NS42NC00NS42NGM2LjMtNi4zIDYuMy0xNi41MiAwLTIyLjgybC0yMi44Mi0yMi44MmMtNi4zLTYuMy0xNi41Mi02LjMtMjIuODIgMEw0MTYgMjEwLjM2bC00NS42NC00NS42NGMtNi4zLTYuMy0xNi41Mi02LjMtMjIuODIgMGwtMjIuODIgMjIuODJjLTYuMyA2LjMtNi4zIDE2LjUyIDAgMjIuODJMMzcwLjM2IDI1NmwtNDUuNjMgNDUuNjNjLTYuMyA2LjMtNi4zIDE2LjUyIDAgMjIuODJsMjIuODIgMjIuODJjNi4zIDYuMyAxNi41MiA2LjMgMjIuODIgMEw0MTYgMzAxLjY0bDQ1LjY0IDQ1LjY0YzYuMyA2LjMgMTYuNTIgNi4zIDIyLjgyIDBsMjIuODItMjIuODJjNi4zLTYuMyA2LjMtMTYuNTIgMC0yMi44Mkw0NjEuNjQgMjU2elwiXVxufTtcbnZhciBmYVZvbHVtZU9mZiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2b2x1bWUtb2ZmJyxcbiAgaWNvbjogWzI1NiwgNTEyLCBbXSwgXCJmMDI2XCIsIFwiTTIxNSA3MWwtODkgODlIMjRhMjQgMjQgMCAwIDAtMjQgMjR2MTQ0YTI0IDI0IDAgMCAwIDI0IDI0aDEwMi4wNkwyMTUgNDQxYzE1IDE1IDQxIDQuNDcgNDEtMTdWODhjMC0yMS40Ny0yNi0zMi00MS0xN3pcIl1cbn07XG52YXIgZmFWb2x1bWVVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2b2x1bWUtdXAnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYwMjhcIiwgXCJNMjE1LjAzIDcxLjA1TDEyNi4wNiAxNjBIMjRjLTEzLjI2IDAtMjQgMTAuNzQtMjQgMjR2MTQ0YzAgMTMuMjUgMTAuNzQgMjQgMjQgMjRoMTAyLjA2bDg4Ljk3IDg4Ljk1YzE1LjAzIDE1LjAzIDQwLjk3IDQuNDcgNDAuOTctMTYuOTdWODguMDJjMC0yMS40Ni0yNS45Ni0zMS45OC00MC45Ny0xNi45N3ptMjMzLjMyLTUxLjA4Yy0xMS4xNy03LjMzLTI2LjE4LTQuMjQtMzMuNTEgNi45NS03LjM0IDExLjE3LTQuMjIgMjYuMTggNi45NSAzMy41MSA2Ni4yNyA0My40OSAxMDUuODIgMTE2LjYgMTA1LjgyIDE5NS41OCAwIDc4Ljk4LTM5LjU1IDE1Mi4wOS0xMDUuODIgMTk1LjU4LTExLjE3IDcuMzItMTQuMjkgMjIuMzQtNi45NSAzMy41IDcuMDQgMTAuNzEgMjEuOTMgMTQuNTYgMzMuNTEgNi45NUM1MjguMjcgNDM5LjU4IDU3NiAzNTEuMzMgNTc2IDI1NlM1MjguMjcgNzIuNDMgNDQ4LjM1IDE5Ljk3ek00ODAgMjU2YzAtNjMuNTMtMzIuMDYtMTIxLjk0LTg1Ljc3LTE1Ni4yNC0xMS4xOS03LjE0LTI2LjAzLTMuODItMzMuMTIgNy40NnMtMy43OCAyNi4yMSA3LjQxIDMzLjM2QzQwOC4yNyAxNjUuOTcgNDMyIDIwOS4xMSA0MzIgMjU2cy0yMy43MyA5MC4wMy02My40OCAxMTUuNDJjLTExLjE5IDcuMTQtMTQuNSAyMi4wNy03LjQxIDMzLjM2IDYuNTEgMTAuMzYgMjEuMTIgMTUuMTQgMzMuMTIgNy40NkM0NDcuOTQgMzc3Ljk0IDQ4MCAzMTkuNTQgNDgwIDI1NnptLTE0MS43Ny03Ni44N2MtMTEuNTgtNi4zMy0yNi4xOS0yLjE2LTMyLjYxIDkuNDUtNi4zOSAxMS42MS0yLjE2IDI2LjIgOS40NSAzMi42MUMzMjcuOTggMjI4LjI4IDMzNiAyNDEuNjMgMzM2IDI1NmMwIDE0LjM4LTguMDIgMjcuNzItMjAuOTIgMzQuODEtMTEuNjEgNi40MS0xNS44NCAyMS05LjQ1IDMyLjYxIDYuNDMgMTEuNjYgMjEuMDUgMTUuOCAzMi42MSA5LjQ1IDI4LjIzLTE1LjU1IDQ1Ljc3LTQ1IDQ1Ljc3LTc2Ljg4cy0xNy41NC02MS4zMi00NS43OC03Ni44NnpcIl1cbn07XG52YXIgZmFWb3RlWWVhID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZvdGUteWVhJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNzcyXCIsIFwiTTYwOCAzMjBoLTY0djY0aDIyLjRjNS4zIDAgOS42IDMuNiA5LjYgOHYxNmMwIDQuNC00LjMgOC05LjYgOEg3My42Yy01LjMgMC05LjYtMy42LTkuNi04di0xNmMwLTQuNCA0LjMtOCA5LjYtOEg5NnYtNjRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDU3NmMxNy43IDAgMzItMTQuMyAzMi0zMnYtOTZjMC0xNy43LTE0LjMtMzItMzItMzJ6bS05NiA2NFY2NC4zYzAtMTcuOS0xNC41LTMyLjMtMzIuMy0zMi4zSDE2MC40QzE0Mi41IDMyIDEyOCA0Ni41IDEyOCA2NC4zVjM4NGgzODR6TTIxMS4yIDIwMmwyNS41LTI1LjNjNC4yLTQuMiAxMS00LjIgMTUuMi4xbDQxLjMgNDEuNiA5NS4yLTk0LjRjNC4yLTQuMiAxMS00LjIgMTUuMi4xbDI1LjMgMjUuNWM0LjIgNC4yIDQuMiAxMS0uMSAxNS4yTDMwMC41IDI5MmMtNC4yIDQuMi0xMSA0LjItMTUuMi0uMWwtNzQuMS03NC43Yy00LjMtNC4yLTQuMi0xMSAwLTE1LjJ6XCJdXG59O1xudmFyIGZhVnJDYXJkYm9hcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndnItY2FyZGJvYXJkJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNzI5XCIsIFwiTTYwOCA2NEgzMkMxNC4zMyA2NCAwIDc4LjMzIDAgOTZ2MzIwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTYwLjIyYzI1LjE5IDAgNDguMDMtMTQuNzcgNTguMzYtMzcuNzRsMjcuNzQtNjEuNjRDMjg2LjIxIDMzMS4wOCAzMDIuMzUgMzIwIDMyMCAzMjBzMzMuNzkgMTEuMDggNDEuNjggMjguNjJsMjcuNzQgNjEuNjRDMzk5Ljc1IDQzMy4yMyA0MjIuNiA0NDggNDQ3Ljc4IDQ0OEg2MDhjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY5NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek0xNjAgMzA0Yy0zNS4zNSAwLTY0LTI4LjY1LTY0LTY0czI4LjY1LTY0IDY0LTY0IDY0IDI4LjY1IDY0IDY0LTI4LjY1IDY0LTY0IDY0em0zMjAgMGMtMzUuMzUgMC02NC0yOC42NS02NC02NHMyOC42NS02NCA2NC02NCA2NCAyOC42NSA2NCA2NC0yOC42NSA2NC02NCA2NHpcIl1cbn07XG52YXIgZmFXYWxraW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dhbGtpbmcnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImY1NTRcIiwgXCJNMjA4IDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4UzIzNC41IDAgMjA4IDBzLTQ4IDIxLjUtNDggNDggMjEuNSA0OCA0OCA0OHptOTQuNSAxNDkuMWwtMjMuMy0xMS44LTkuNy0yOS40Yy0xNC43LTQ0LjYtNTUuNy03NS44LTEwMi4yLTc1LjktMzYtLjEtNTUuOSAxMC4xLTkzLjMgMjUuMi0yMS42IDguNy0zOS4zIDI1LjItNDkuNyA0Ni4yTDE3LjYgMjEzYy03LjggMTUuOC0xLjUgMzUgMTQuMiA0Mi45IDE1LjYgNy45IDM0LjYgMS41IDQyLjUtMTQuM0w4MSAyMjhjMy41LTcgOS4zLTEyLjUgMTYuNS0xNS40bDI2LjgtMTAuOC0xNS4yIDYwLjdjLTUuMiAyMC44LjQgNDIuOSAxNC45IDU4LjhsNTkuOSA2NS40YzcuMiA3LjkgMTIuMyAxNy40IDE0LjkgMjcuN2wxOC4zIDczLjNjNC4zIDE3LjEgMjEuNyAyNy42IDM4LjggMjMuMyAxNy4xLTQuMyAyNy42LTIxLjcgMjMuMy0zOC44bC0yMi4yLTg5Yy0yLjYtMTAuMy03LjctMTkuOS0xNC45LTI3LjdsLTQ1LjUtNDkuNyAxNy4yLTY4LjcgNS41IDE2LjVjNS4zIDE2LjEgMTYuNyAyOS40IDMxLjcgMzdsMjMuMyAxMS44YzE1LjYgNy45IDM0LjYgMS41IDQyLjUtMTQuMyA3LjctMTUuNyAxLjQtMzUuMS0xNC4zLTQzek03My42IDM4NS44Yy0zLjIgOC4xLTggMTUuNC0xNC4yIDIxLjVsLTUwIDUwLjFjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjcgMTIuNSA0NS4yIDBsNTkuNC01OS40YzYuMS02LjEgMTAuOS0xMy40IDE0LjItMjEuNWwxMy41LTMzLjhjLTU1LjMtNjAuMy0zOC43LTQxLjgtNDcuNC01My43bC0yMC43IDUxLjV6XCJdXG59O1xudmFyIGZhV2FsbGV0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dhbGxldCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjU1NVwiLCBcIk00NjEuMiAxMjhIODBjLTguODQgMC0xNi03LjE2LTE2LTE2czcuMTYtMTYgMTYtMTZoMzg0YzguODQgMCAxNi03LjE2IDE2LTE2IDAtMjYuNTEtMjEuNDktNDgtNDgtNDhINjRDMjguNjUgMzIgMCA2MC42NSAwIDk2djMyMGMwIDM1LjM1IDI4LjY1IDY0IDY0IDY0aDM5Ny4yYzI4LjAyIDAgNTAuOC0yMS41MyA1MC44LTQ4VjE3NmMwLTI2LjQ3LTIyLjc4LTQ4LTUwLjgtNDh6TTQxNiAzMzZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJdXG59O1xudmFyIGZhV2FyZWhvdXNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dhcmVob3VzZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjQ5NFwiLCBcIk01MDQgMzUySDEzNi40Yy00LjQgMC04IDMuNi04IDhsLS4xIDQ4YzAgNC40IDMuNiA4IDggOEg1MDRjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LTh6bTAgOTZIMTM2LjFjLTQuNCAwLTggMy42LTggOGwtLjEgNDhjMCA0LjQgMy42IDggOCA4aDM2OGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHptMC0xOTJIMTM2LjZjLTQuNCAwLTggMy42LTggOGwtLjEgNDhjMCA0LjQgMy42IDggOCA4SDUwNGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHptMTA2LjUtMTM5TDMzOC40IDMuN2E0OC4xNSA0OC4xNSAwIDAgMC0zNi45IDBMMjkuNSAxMTdDMTEuNyAxMjQuNSAwIDE0MS45IDAgMTYxLjNWNTA0YzAgNC40IDMuNiA4IDggOGg4MGM0LjQgMCA4LTMuNiA4LThWMjU2YzAtMTcuNiAxNC42LTMyIDMyLjYtMzJoMzgyLjhjMTggMCAzMi42IDE0LjQgMzIuNiAzMnYyNDhjMCA0LjQgMy42IDggOCA4aDgwYzQuNCAwIDgtMy42IDgtOFYxNjEuM2MwLTE5LjQtMTEuNy0zNi44LTI5LjUtNDQuM3pcIl1cbn07XG52YXIgZmFXYXRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3YXRlcicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjc3M1wiLCBcIk01NjIuMSAzODMuOWMtMjEuNS0yLjQtNDIuMS0xMC41LTU3LjktMjIuOS0xNC4xLTExLjEtMzQuMi0xMS4zLTQ4LjIgMC0zNy45IDMwLjQtMTA3LjIgMzAuNC0xNDUuNy0xLjUtMTMuNS0xMS4yLTMzLTkuMS00Ni43IDEuOC0zOCAzMC4xLTEwNi45IDMwLTE0NS4yLTEuNy0xMy41LTExLjItMzMuMy04LjktNDcuMSAyLTE1LjUgMTIuMi0zNiAyMC4xLTU3LjcgMjIuNC03LjkuOC0xMy42IDcuOC0xMy42IDE1Ljd2MzIuMmMwIDkuMSA3LjYgMTYuOCAxNi43IDE2IDI4LjgtMi41IDU2LjEtMTEuNCA3OS40LTI1LjkgNTYuNSAzNC42IDEzNyAzNC4xIDE5MiAwIDU2LjUgMzQuNiAxMzcgMzQuMSAxOTIgMCAyMy4zIDE0LjIgNTAuOSAyMy4zIDc5LjEgMjUuOCA5LjEuOCAxNi43LTYuOSAxNi43LTE2di0zMS42Yy4xLTgtNS43LTE1LjQtMTMuOC0xNi4zem0wLTE0NGMtMjEuNS0yLjQtNDIuMS0xMC41LTU3LjktMjIuOS0xNC4xLTExLjEtMzQuMi0xMS4zLTQ4LjIgMC0zNy45IDMwLjQtMTA3LjIgMzAuNC0xNDUuNy0xLjUtMTMuNS0xMS4yLTMzLTkuMS00Ni43IDEuOC0zOCAzMC4xLTEwNi45IDMwLTE0NS4yLTEuNy0xMy41LTExLjItMzMuMy04LjktNDcuMSAyLTE1LjUgMTIuMi0zNiAyMC4xLTU3LjcgMjIuNC03LjkuOC0xMy42IDcuOC0xMy42IDE1Ljd2MzIuMmMwIDkuMSA3LjYgMTYuOCAxNi43IDE2IDI4LjgtMi41IDU2LjEtMTEuNCA3OS40LTI1LjkgNTYuNSAzNC42IDEzNyAzNC4xIDE5MiAwIDU2LjUgMzQuNiAxMzcgMzQuMSAxOTIgMCAyMy4zIDE0LjIgNTAuOSAyMy4zIDc5LjEgMjUuOCA5LjEuOCAxNi43LTYuOSAxNi43LTE2di0zMS42Yy4xLTgtNS43LTE1LjQtMTMuOC0xNi4zem0wLTE0NEM1NDAuNiA5My40IDUyMCA4NS40IDUwNC4yIDczIDQ5MC4xIDYxLjkgNDcwIDYxLjcgNDU2IDczYy0zNy45IDMwLjQtMTA3LjIgMzAuNC0xNDUuNy0xLjUtMTMuNS0xMS4yLTMzLTkuMS00Ni43IDEuOC0zOCAzMC4xLTEwNi45IDMwLTE0NS4yLTEuNy0xMy41LTExLjItMzMuMy04LjktNDcuMSAyLTE1LjUgMTIuMi0zNiAyMC4xLTU3LjcgMjIuNC03LjkuOC0xMy42IDcuOC0xMy42IDE1Ljd2MzIuMmMwIDkuMSA3LjYgMTYuOCAxNi43IDE2IDI4LjgtMi41IDU2LjEtMTEuNCA3OS40LTI1LjkgNTYuNSAzNC42IDEzNyAzNC4xIDE5MiAwIDU2LjUgMzQuNiAxMzcgMzQuMSAxOTIgMCAyMy4zIDE0LjIgNTAuOSAyMy4zIDc5LjEgMjUuOCA5LjEuOCAxNi43LTYuOSAxNi43LTE2di0zMS42Yy4xLTgtNS43LTE1LjQtMTMuOC0xNi4zelwiXVxufTtcbnZhciBmYVdhdmVTcXVhcmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2F2ZS1zcXVhcmUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY4M2VcIiwgXCJNNDc2IDQ4MEgzMjRhMzYgMzYgMCAwIDEtMzYtMzZWOTZoLTk2djE1NmEzNiAzNiAwIDAgMS0zNiAzNkgxNmExNiAxNiAwIDAgMS0xNi0xNnYtMzJhMTYgMTYgMCAwIDEgMTYtMTZoMTEyVjY4YTM2IDM2IDAgMCAxIDM2LTM2aDE1MmEzNiAzNiAwIDAgMSAzNiAzNnYzNDhoOTZWMjYwYTM2IDM2IDAgMCAxIDM2LTM2aDE0MGExNiAxNiAwIDAgMSAxNiAxNnYzMmExNiAxNiAwIDAgMS0xNiAxNkg1MTJ2MTU2YTM2IDM2IDAgMCAxLTM2IDM2elwiXVxufTtcbnZhciBmYVdlaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3ZWlnaHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY0OTZcIiwgXCJNNDQ4IDY0aC0yNS45OEM0MzguNDQgOTIuMjggNDQ4IDEyNS4wMSA0NDggMTYwYzAgMTA1Ljg3LTg2LjEzIDE5Mi0xOTIgMTkyUzY0IDI2NS44NyA2NCAxNjBjMC0zNC45OSA5LjU2LTY3LjcyIDI1Ljk4LTk2SDY0QzI4LjcxIDY0IDAgOTIuNzEgMCAxMjh2MzIwYzAgMzUuMjkgMjguNzEgNjQgNjQgNjRoMzg0YzM1LjI5IDAgNjQtMjguNzEgNjQtNjRWMTI4YzAtMzUuMjktMjguNzEtNjQtNjQtNjR6TTI1NiAzMjBjODguMzcgMCAxNjAtNzEuNjMgMTYwLTE2MFMzNDQuMzcgMCAyNTYgMCA5NiA3MS42MyA5NiAxNjBzNzEuNjMgMTYwIDE2MCAxNjB6bS0uMy0xNTEuOTRsMzMuNTgtNzguMzZjMy41LTguMTcgMTIuOTQtMTEuOTIgMjEuMDMtOC40MSA4LjEyIDMuNDggMTEuODggMTIuODkgOC40MSAyMWwtMzMuNjcgNzguNTVDMjkxLjczIDE4OCAyOTYgMTk3LjQ1IDI5NiAyMDhjMCAyMi4wOS0xNy45MSA0MC00MCA0MHMtNDAtMTcuOTEtNDAtNDBjMC0yMS45OCAxNy43Ni0zOS43NyAzOS43LTM5Ljk0elwiXVxufTtcbnZhciBmYVdlaWdodEhhbmdpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2VpZ2h0LWhhbmdpbmcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1Y2RcIiwgXCJNNTEwLjI4IDQ0NS44NmwtNzMuMDMtMjkyLjEzYy0zLjgtMTUuMTktMTYuNDQtMjUuNzItMzAuODctMjUuNzJoLTYwLjI1YzMuNTctMTAuMDUgNS44OC0yMC43MiA1Ljg4LTMyIDAtNTMuMDItNDIuOTgtOTYtOTYtOTZzLTk2IDQyLjk4LTk2IDk2YzAgMTEuMjggMi4zIDIxLjk1IDUuODggMzJoLTYwLjI1Yy0xNC40MyAwLTI3LjA4IDEwLjU0LTMwLjg3IDI1LjcyTDEuNzIgNDQ1Ljg2Qy02LjYxIDQ3OS4xNyAxNi4zOCA1MTIgNDguMDMgNTEyaDQxNS45NWMzMS42NCAwIDU0LjYzLTMyLjgzIDQ2LjMtNjYuMTR6TTI1NiAxMjhjLTE3LjY0IDAtMzItMTQuMzYtMzItMzJzMTQuMzYtMzIgMzItMzIgMzIgMTQuMzYgMzIgMzItMTQuMzYgMzItMzIgMzJ6XCJdXG59O1xudmFyIGZhV2hlZWxjaGFpciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3aGVlbGNoYWlyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMTkzXCIsIFwiTTQ5Ni4xMDEgMzg1LjY2OWwxNC4yMjcgMjguNjYzYzMuOTI5IDcuOTE1LjY5NyAxNy41MTYtNy4yMTggMjEuNDQ1bC02NS40NjUgMzIuODg2Yy0xNi4wNDkgNy45NjctMzUuNTU2IDEuMTk0LTQzLjE4OS0xNS4wNTVMMzMxLjY3OSAzMjBIMTkyYy0xNS45MjUgMC0yOS40MjYtMTEuNzEtMzEuNjc5LTI3LjQ3NUMxMjYuNDMzIDU1LjMwOCAxMjguMzggNzAuMDQ0IDEyOCA2NGMwLTM2LjM1OCAzMC4zMTgtNjUuNjM1IDY3LjA1Mi02My45MjkgMzMuMjcxIDEuNTQ1IDYwLjA0OCAyOC45MDUgNjAuOTI1IDYyLjIwMS44NjggMzIuOTMzLTIzLjE1MiA2MC40MjMtNTQuNjA4IDY1LjAzOWw0LjY3IDMyLjY5SDMzNmM4LjgzNyAwIDE2IDcuMTYzIDE2IDE2djMyYzAgOC44MzctNy4xNjMgMTYtMTYgMTZIMjE1LjE4Mmw0LjU3MiAzMkgzNTJhMzIgMzIgMCAwIDEgMjguOTYyIDE4LjM5Mkw0MzguNDc3IDM5Ni44bDM2LjE3OC0xOC4zNDljNy45MTUtMy45MjkgMTcuNTE3LS42OTcgMjEuNDQ2IDcuMjE4ek0zMTEuMzU4IDM1MmgtMjQuNTA2Yy03Ljc4OCA1NC4yMDQtNTQuNTI4IDk2LTExMC44NTIgOTYtNjEuNzU3IDAtMTEyLTUwLjI0My0xMTItMTEyIDAtNDEuNTA1IDIyLjY5NC03Ny44MDkgNTYuMzI0LTk3LjE1Ni0zLjcxMi0yNS45NjUtNi44NDQtNDcuODYtOS40ODgtNjYuMzMzQzQ1Ljk1NiAxOTguNDY0IDAgMjYxLjk2MyAwIDMzNmMwIDk3LjA0NyA3OC45NTMgMTc2IDE3NiAxNzYgNzEuODcgMCAxMzMuODA2LTQzLjMwOCAxNjEuMTEtMTA1LjE5MkwzMTEuMzU4IDM1MnpcIl1cbn07XG52YXIgZmFXaWZpID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dpZmknLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYxZWJcIiwgXCJNNjM0LjkxIDE1NC44OEM0NTcuNzQtOC45OSAxODIuMTktOC45MyA1LjA5IDE1NC44OGMtNi42NiA2LjE2LTYuNzkgMTYuNTktLjM1IDIyLjk4bDM0LjI0IDMzLjk3YzYuMTQgNi4xIDE2LjAyIDYuMjMgMjIuNC4zOCAxNDUuOTItMTMzLjY4IDM3MS4zLTEzMy43MSA1MTcuMjUgMCA2LjM4IDUuODUgMTYuMjYgNS43MSAyMi40LS4zOGwzNC4yNC0zMy45N2M2LjQzLTYuMzkgNi4zLTE2LjgyLS4zNi0yMi45OHpNMzIwIDM1MmMtMzUuMzUgMC02NCAyOC42NS02NCA2NHMyOC42NSA2NCA2NCA2NCA2NC0yOC42NSA2NC02NC0yOC42NS02NC02NC02NHptMjAyLjY3LTgzLjU5Yy0xMTUuMjYtMTAxLjkzLTI5MC4yMS0xMDEuODItNDA1LjM0IDAtNi45IDYuMS03LjEyIDE2LjY5LS41NyAyMy4xNWwzNC40NCAzMy45OWM2IDUuOTIgMTUuNjYgNi4zMiAyMi4wNS44IDgzLjk1LTcyLjU3IDIwOS43NC03Mi40MSAyOTMuNDkgMCA2LjM5IDUuNTIgMTYuMDUgNS4xMyAyMi4wNS0uOGwzNC40NC0zMy45OWM2LjU2LTYuNDYgNi4zMy0xNy4wNi0uNTYtMjMuMTV6XCJdXG59O1xudmFyIGZhV2luZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3aW5kJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNzJlXCIsIFwiTTE1Ni43IDI1NkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgxNDIuMmMxNS45IDAgMzAuOCAxMC45IDMzLjQgMjYuNiAzLjMgMjAtMTIuMSAzNy40LTMxLjYgMzcuNC0xNC4xIDAtMjYuMS05LjItMzAuNC0yMS45LTIuMS02LjMtOC42LTEwLjEtMTUuMi0xMC4xSDgxLjZjLTkuOCAwLTE3LjcgOC44LTE1LjkgMTguNCA4LjYgNDQuMSA0Ny42IDc3LjYgOTQuMiA3Ny42IDU3LjEgMCAxMDIuNy01MC4xIDk1LjItMTA4LjZDMjQ5IDI5MSAyMDUuNCAyNTYgMTU2LjcgMjU2ek0xNiAyMjRoMzM2YzU5LjcgMCAxMDYuOC01NC44IDkzLjgtMTE2LjctNy42LTM2LjItMzYuOS02NS41LTczLjEtNzMuMS01NS40LTExLjYtMTA1LjEgMjQuOS0xMTQuOSA3NS41LTEuOSA5LjYgNi4xIDE4LjMgMTUuOCAxOC4zaDMyLjhjNi43IDAgMTMuMS0zLjggMTUuMi0xMC4xQzMyNS45IDEwNS4yIDMzNy45IDk2IDM1MiA5NmMxOS40IDAgMzQuOSAxNy40IDMxLjYgMzcuNC0yLjYgMTUuNy0xNy40IDI2LjYtMzMuNCAyNi42SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2em0zODQgMzJIMjQzLjdjMTkuMyAxNi42IDMzLjIgMzguOCAzOS44IDY0SDQwMGMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OGMtMTcuOSAwLTMzLjMtOS45LTQxLjYtMjQuNC0yLjktNS04LjctNy42LTE0LjUtNy42aC0zMy44Yy0xMC45IDAtMTkgMTAuOC0xNS4zIDIxLjEgMTcuOCA1MC42IDcwLjUgODQuOCAxMjkuNCA3Mi4zIDQxLjItOC43IDc1LjEtNDEuNiA4NC43LTgyLjdDNTI2IDMyMS41IDQ3MC41IDI1NiA0MDAgMjU2elwiXVxufTtcbnZhciBmYVdpbmRvd0Nsb3NlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dpbmRvdy1jbG9zZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjQxMFwiLCBcIk00NjQgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tODMuNiAyOTAuNWM0LjggNC44IDQuOCAxMi42IDAgMTcuNGwtNDAuNSA0MC41Yy00LjggNC44LTEyLjYgNC44LTE3LjQgMEwyNTYgMzEzLjNsLTY2LjUgNjcuMWMtNC44IDQuOC0xMi42IDQuOC0xNy40IDBsLTQwLjUtNDAuNWMtNC44LTQuOC00LjgtMTIuNiAwLTE3LjRsNjcuMS02Ni41LTY3LjEtNjYuNWMtNC44LTQuOC00LjgtMTIuNiAwLTE3LjRsNDAuNS00MC41YzQuOC00LjggMTIuNi00LjggMTcuNCAwbDY2LjUgNjcuMSA2Ni41LTY3LjFjNC44LTQuOCAxMi42LTQuOCAxNy40IDBsNDAuNSA0MC41YzQuOCA0LjggNC44IDEyLjYgMCAxNy40TDMxMy4zIDI1Nmw2Ny4xIDY2LjV6XCJdXG59O1xudmFyIGZhV2luZG93TWF4aW1pemUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2luZG93LW1heGltaXplJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMmQwXCIsIFwiTTQ2NCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS0xNiAxNjBINjR2LTg0YzAtNi42IDUuNC0xMiAxMi0xMmgzNjBjNi42IDAgMTIgNS40IDEyIDEydjg0elwiXVxufTtcbnZhciBmYVdpbmRvd01pbmltaXplID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dpbmRvdy1taW5pbWl6ZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjJkMVwiLCBcIk00NjQgMzUySDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OHYzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTMyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwiXVxufTtcbnZhciBmYVdpbmRvd1Jlc3RvcmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2luZG93LXJlc3RvcmUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyZDJcIiwgXCJNNTEyIDQ4djI4OGMwIDI2LjUtMjEuNSA0OC00OCA0OGgtNDhWMTc2YzAtNDQuMS0zNS45LTgwLTgwLTgwSDEyOFY0OGMwLTI2LjUgMjEuNS00OCA0OC00OGgyODhjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTM4NCAxNzZ2Mjg4YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxNzZjMC0yNi41IDIxLjUtNDggNDgtNDhoMjg4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNjggMjhjMC02LjYtNS40LTEyLTEyLTEySDc2Yy02LjYgMC0xMiA1LjQtMTIgMTJ2NTJoMjUydi01MnpcIl1cbn07XG52YXIgZmFXaW5lQm90dGxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dpbmUtYm90dGxlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNzJmXCIsIFwiTTUwNy4zMSA3Mi41N0w0MzkuNDMgNC42OWMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtMjIuNjMgMjIuNjNjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNsLTc2LjY3IDc2LjY3Yy00Ni41OC0xOS43LTEwMi40LTEwLjczLTE0MC4zNyAyNy4yM0wxOC43NSAzMTIuMjNjLTI0Ljk5IDI0Ljk5LTI0Ljk5IDY1LjUyIDAgOTAuNTFsOTAuNTEgOTAuNTFjMjQuOTkgMjQuOTkgNjUuNTIgMjQuOTkgOTAuNTEgMGwxNTguMzktMTU4LjM5YzM3Ljk2LTM3Ljk2IDQ2LjkzLTkzLjc5IDI3LjIzLTE0MC4zN2w3Ni42Ny03Ni42N2M2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDIyLjYzLTIyLjYzYzYuMjQtNi4yNCA2LjI0LTE2LjM3LS4wMS0yMi42MnpNMTc5LjIyIDQyMy4yOWwtOTAuNTEtOTAuNTEgMTIyLjA0LTEyMi4wNCA5MC41MSA5MC41MS0xMjIuMDQgMTIyLjA0elwiXVxufTtcbnZhciBmYVdpbmVHbGFzcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3aW5lLWdsYXNzJyxcbiAgaWNvbjogWzI4OCwgNTEyLCBbXSwgXCJmNGUzXCIsIFwiTTIxNiA0NjRoLTQwVjM0Ni44MWM2OC40Ny0xNS44OSAxMTguMDUtNzkuOTEgMTExLjQtMTU0LjE2bC0xNS45NS0xNzguMUMyNzAuNzEgNi4zMSAyNjMuOSAwIDI1NS43NCAwSDMyLjI2Yy04LjE1IDAtMTQuOTcgNi4zMS0xNS43IDE0LjU1TC42IDE5Mi42NkMtNi4wNSAyNjYuOTEgNDMuNTMgMzMwLjkzIDExMiAzNDYuODJWNDY0SDcyYy0yMi4wOSAwLTQwIDE3LjkxLTQwIDQwIDAgNC40MiAzLjU4IDggOCA4aDIwOGM0LjQyIDAgOC0zLjU4IDgtOCAwLTIyLjA5LTE3LjkxLTQwLTQwLTQwelwiXVxufTtcbnZhciBmYVdpbmVHbGFzc0FsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3aW5lLWdsYXNzLWFsdCcsXG4gIGljb246IFsyODgsIDUxMiwgW10sIFwiZjVjZVwiLCBcIk0yMTYgNDY0aC00MFYzNDYuODFjNjguNDctMTUuODkgMTE4LjA1LTc5LjkxIDExMS40LTE1NC4xNmwtMTUuOTUtMTc4LjFDMjcwLjcxIDYuMzEgMjYzLjkgMCAyNTUuNzQgMEgzMi4yNmMtOC4xNSAwLTE0Ljk3IDYuMzEtMTUuNyAxNC41NUwuNiAxOTIuNjZDLTYuMDUgMjY2LjkxIDQzLjUzIDMzMC45MyAxMTIgMzQ2LjgyVjQ2NEg3MmMtMjIuMDkgMC00MCAxNy45MS00MCA0MCAwIDQuNDIgMy41OCA4IDggOGgyMDhjNC40MiAwIDgtMy41OCA4LTggMC0yMi4wOS0xNy45MS00MC00MC00MHpNNjEuNzUgNDhoMTY0LjVsNy4xNyA4MEg1NC41OGw3LjE3LTgwelwiXVxufTtcbnZhciBmYVdvblNpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd29uLXNpZ24nLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYxNTlcIiwgXCJNNTY0IDE5MmM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDhsMTguNi04MC42YzEuNy03LjUtNC0xNC43LTExLjctMTQuN2gtNDYuMWMtNS43IDAtMTAuNiA0LTExLjcgOS41TDQ1MC43IDEyOEgzNDAuOGwtMTkuNy04NmMtMS4zLTUuNS02LjEtOS4zLTExLjctOS4zaC00NGMtNS42IDAtMTAuNCAzLjgtMTEuNyA5LjNsLTIwIDg2SDEyNWwtMTcuNS04NS43Yy0xLjEtNS42LTYuMS05LjYtMTEuOC05LjZINTMuNmMtNy43IDAtMTMuNCA3LjEtMTEuNyAxNC42TDYwIDEyOEgxMmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmg2Mi4zbDcuMiAzMkgxMmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmg4My45bDQwLjkgMTgyLjZjMS4yIDUuNSA2LjEgOS40IDExLjcgOS40aDU2LjhjNS42IDAgMTAuNC0zLjkgMTEuNy05LjNMMjU5LjMgMjg4aDU1LjFsNDIuNCAxODIuN2MxLjMgNS40IDYuMSA5LjMgMTEuNyA5LjNoNTYuOGM1LjYgMCAxMC40LTMuOSAxMS43LTkuM0w0NzkuMSAyODhINTY0YzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC03MC4xbDcuNC0zMnpNMTgzLjggMzQyYy02LjIgMjUuOC02LjggNDcuMi03LjMgNDcuMmgtMS4xcy0xLjctMjItNi44LTQ3LjJsLTExLTU0aDM4Ljh6bTI3LjUtMTE4aC02Ni44bC02LjUtMzJoODAuOHptNjIuOSAwbDItOC42YzEuOS04IDMuNS0xNiA0LjgtMjMuNGgxMS44YzEuMyA3LjQgMi45IDE1LjQgNC44IDIzLjRsMiA4LjZ6bTEzMC45IDExOGMtNS4xIDI1LjItNi44IDQ3LjItNi44IDQ3LjJoLTEuMWMtLjYgMC0xLjEtMjEuNC03LjMtNDcuMmwtMTIuNC01NGgzOS4xem0yNS4yLTExOGgtNjcuNGwtNy4zLTMyaDgxLjZ6XCJdXG59O1xudmFyIGZhV3JlbmNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dyZW5jaCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjBhZFwiLCBcIk01MDcuNzMgMTA5LjFjLTIuMjQtOS4wMy0xMy41NC0xMi4wOS0yMC4xMi01LjUxbC03NC4zNiA3NC4zNi02Ny44OC0xMS4zMS0xMS4zMS02Ny44OCA3NC4zNi03NC4zNmM2LjYyLTYuNjIgMy40My0xNy45LTUuNjYtMjAuMTYtNDcuMzgtMTEuNzQtOTkuNTUuOTEtMTM2LjU4IDM3LjkzLTM5LjY0IDM5LjY0LTUwLjU1IDk3LjEtMzQuMDUgMTQ3LjJMMTguNzQgNDAyLjc2Yy0yNC45OSAyNC45OS0yNC45OSA2NS41MSAwIDkwLjUgMjQuOTkgMjQuOTkgNjUuNTEgMjQuOTkgOTAuNSAwbDIxMy4yMS0yMTMuMjFjNTAuMTIgMTYuNzEgMTA3LjQ3IDUuNjggMTQ3LjM3LTM0LjIyIDM3LjA3LTM3LjA3IDQ5LjctODkuMzIgMzcuOTEtMTM2Ljczek02NCA0NzJjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0elwiXVxufTtcbnZhciBmYVhSYXkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAneC1yYXknLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY0OTdcIiwgXCJNMjQwIDM4NGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNiAxNi03LjIgMTYtMTYtNy4yLTE2LTE2LTE2em0xNjAgMzJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTYtMTYgNy4yLTE2IDE2IDcuMiAxNiAxNiAxNnpNNjI0IDBIMTZDNy4yIDAgMCA3LjIgMCAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNjA4YzguOCAwIDE2LTcuMiAxNi0xNlYxNmMwLTguOC03LjItMTYtMTYtMTZ6bTAgNDQ4aC00OFY5Nkg2NHYzNTJIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNjA4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2ek00ODAgMjQ4YzAgNC40LTMuNiA4LTggOEgzMzZ2MzJoMTA0YzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhIMzM2djMyaDY0YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4LTQ4LTIxLjUtNDgtNDh2LTE2aC02NHYxNmMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OCAyMS41LTQ4IDQ4LTQ4aDY0di0zMkgyMDBjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDEwNHYtMzJIMTY4Yy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxMzZ2LTMySDIwMGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTA0di0yNGMwLTQuNCAzLjYtOCA4LThoMTZjNC40IDAgOCAzLjYgOCA4djI0aDEwNGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDMzNnYzMmgxMzZjNC40IDAgOCAzLjYgOCA4djE2elwiXVxufTtcbnZhciBmYVllblNpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAneWVuLXNpZ24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYxNTdcIiwgXCJNMzUxLjIgMzJoLTY1LjNjLTQuNiAwLTguOCAyLjYtMTAuOCA2LjdsLTU1LjQgMTEzLjJjLTE0LjUgMzQuNy0yNy4xIDcxLjktMjcuMSA3MS45aC0xLjNzLTEyLjYtMzcuMi0yNy4xLTcxLjlMMTA4LjggMzguN2MtMi00LjEtNi4yLTYuNy0xMC44LTYuN0gzMi44Yy05LjEgMC0xNC44IDkuNy0xMC42IDE3LjZMMTAyLjMgMjAwSDQ0Yy02LjYgMC0xMiA1LjQtMTIgMTJ2MzJjMCA2LjYgNS40IDEyIDEyIDEyaDg4LjJsMTkuOCAzNy4yVjMyMEg0NGMtNi42IDAtMTIgNS40LTEyIDEydjMyYzAgNi42IDUuNCAxMiAxMiAxMmgxMDh2OTJjMCA2LjYgNS40IDEyIDEyIDEyaDU2YzYuNiAwIDEyLTUuNCAxMi0xMnYtOTJoMTA4YzYuNiAwIDEyLTUuNCAxMi0xMnYtMzJjMC02LjYtNS40LTEyLTEyLTEySDIzMnYtMjYuOGwxOS44LTM3LjJIMzQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtMzJjMC02LjYtNS40LTEyLTEyLTEyaC01OC4zbDgwLjEtMTUwLjRjNC4zLTcuOS0xLjUtMTcuNi0xMC42LTE3LjZ6XCJdXG59O1xudmFyIGZhWWluWWFuZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd5aW4teWFuZycsXG4gIGljb246IFs0OTYsIDUxMiwgW10sIFwiZjZhZFwiLCBcIk0yNDggOEMxMTEuMDMgOCAwIDExOS4wMyAwIDI1NnMxMTEuMDMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMyAyNDgtMjQ4UzM4NC45NyA4IDI0OCA4em0wIDM3NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC0xMjhjLTUzLjAyIDAtOTYgNDIuOTgtOTYgOTZzNDIuOTggOTYgOTYgOTZjLTEwNi4wNCAwLTE5Mi04NS45Ni0xOTItMTkyUzE0MS45NiA2NCAyNDggNjRjNTMuMDIgMCA5NiA0Mi45OCA5NiA5NnMtNDIuOTggOTYtOTYgOTZ6bTAtMTI4Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyIDMyLTE0LjMzIDMyLTMyLTE0LjMzLTMyLTMyLTMyelwiXVxufTtcbnZhciBfaWNvbnNDYWNoZSA9IHtcbiAgZmFBZDogZmFBZCxcbiAgZmFBZGRyZXNzQm9vazogZmFBZGRyZXNzQm9vayxcbiAgZmFBZGRyZXNzQ2FyZDogZmFBZGRyZXNzQ2FyZCxcbiAgZmFBZGp1c3Q6IGZhQWRqdXN0LFxuICBmYUFpckZyZXNoZW5lcjogZmFBaXJGcmVzaGVuZXIsXG4gIGZhQWxpZ25DZW50ZXI6IGZhQWxpZ25DZW50ZXIsXG4gIGZhQWxpZ25KdXN0aWZ5OiBmYUFsaWduSnVzdGlmeSxcbiAgZmFBbGlnbkxlZnQ6IGZhQWxpZ25MZWZ0LFxuICBmYUFsaWduUmlnaHQ6IGZhQWxpZ25SaWdodCxcbiAgZmFBbGxlcmdpZXM6IGZhQWxsZXJnaWVzLFxuICBmYUFtYnVsYW5jZTogZmFBbWJ1bGFuY2UsXG4gIGZhQW1lcmljYW5TaWduTGFuZ3VhZ2VJbnRlcnByZXRpbmc6IGZhQW1lcmljYW5TaWduTGFuZ3VhZ2VJbnRlcnByZXRpbmcsXG4gIGZhQW5jaG9yOiBmYUFuY2hvcixcbiAgZmFBbmdsZURvdWJsZURvd246IGZhQW5nbGVEb3VibGVEb3duLFxuICBmYUFuZ2xlRG91YmxlTGVmdDogZmFBbmdsZURvdWJsZUxlZnQsXG4gIGZhQW5nbGVEb3VibGVSaWdodDogZmFBbmdsZURvdWJsZVJpZ2h0LFxuICBmYUFuZ2xlRG91YmxlVXA6IGZhQW5nbGVEb3VibGVVcCxcbiAgZmFBbmdsZURvd246IGZhQW5nbGVEb3duLFxuICBmYUFuZ2xlTGVmdDogZmFBbmdsZUxlZnQsXG4gIGZhQW5nbGVSaWdodDogZmFBbmdsZVJpZ2h0LFxuICBmYUFuZ2xlVXA6IGZhQW5nbGVVcCxcbiAgZmFBbmdyeTogZmFBbmdyeSxcbiAgZmFBbmtoOiBmYUFua2gsXG4gIGZhQXBwbGVBbHQ6IGZhQXBwbGVBbHQsXG4gIGZhQXJjaGl2ZTogZmFBcmNoaXZlLFxuICBmYUFyY2h3YXk6IGZhQXJjaHdheSxcbiAgZmFBcnJvd0FsdENpcmNsZURvd246IGZhQXJyb3dBbHRDaXJjbGVEb3duLFxuICBmYUFycm93QWx0Q2lyY2xlTGVmdDogZmFBcnJvd0FsdENpcmNsZUxlZnQsXG4gIGZhQXJyb3dBbHRDaXJjbGVSaWdodDogZmFBcnJvd0FsdENpcmNsZVJpZ2h0LFxuICBmYUFycm93QWx0Q2lyY2xlVXA6IGZhQXJyb3dBbHRDaXJjbGVVcCxcbiAgZmFBcnJvd0NpcmNsZURvd246IGZhQXJyb3dDaXJjbGVEb3duLFxuICBmYUFycm93Q2lyY2xlTGVmdDogZmFBcnJvd0NpcmNsZUxlZnQsXG4gIGZhQXJyb3dDaXJjbGVSaWdodDogZmFBcnJvd0NpcmNsZVJpZ2h0LFxuICBmYUFycm93Q2lyY2xlVXA6IGZhQXJyb3dDaXJjbGVVcCxcbiAgZmFBcnJvd0Rvd246IGZhQXJyb3dEb3duLFxuICBmYUFycm93TGVmdDogZmFBcnJvd0xlZnQsXG4gIGZhQXJyb3dSaWdodDogZmFBcnJvd1JpZ2h0LFxuICBmYUFycm93VXA6IGZhQXJyb3dVcCxcbiAgZmFBcnJvd3NBbHQ6IGZhQXJyb3dzQWx0LFxuICBmYUFycm93c0FsdEg6IGZhQXJyb3dzQWx0SCxcbiAgZmFBcnJvd3NBbHRWOiBmYUFycm93c0FsdFYsXG4gIGZhQXNzaXN0aXZlTGlzdGVuaW5nU3lzdGVtczogZmFBc3Npc3RpdmVMaXN0ZW5pbmdTeXN0ZW1zLFxuICBmYUFzdGVyaXNrOiBmYUFzdGVyaXNrLFxuICBmYUF0OiBmYUF0LFxuICBmYUF0bGFzOiBmYUF0bGFzLFxuICBmYUF0b206IGZhQXRvbSxcbiAgZmFBdWRpb0Rlc2NyaXB0aW9uOiBmYUF1ZGlvRGVzY3JpcHRpb24sXG4gIGZhQXdhcmQ6IGZhQXdhcmQsXG4gIGZhQmFieTogZmFCYWJ5LFxuICBmYUJhYnlDYXJyaWFnZTogZmFCYWJ5Q2FycmlhZ2UsXG4gIGZhQmFja3NwYWNlOiBmYUJhY2tzcGFjZSxcbiAgZmFCYWNrd2FyZDogZmFCYWNrd2FyZCxcbiAgZmFCYWNvbjogZmFCYWNvbixcbiAgZmFCYWN0ZXJpYTogZmFCYWN0ZXJpYSxcbiAgZmFCYWN0ZXJpdW06IGZhQmFjdGVyaXVtLFxuICBmYUJhaGFpOiBmYUJhaGFpLFxuICBmYUJhbGFuY2VTY2FsZTogZmFCYWxhbmNlU2NhbGUsXG4gIGZhQmFsYW5jZVNjYWxlTGVmdDogZmFCYWxhbmNlU2NhbGVMZWZ0LFxuICBmYUJhbGFuY2VTY2FsZVJpZ2h0OiBmYUJhbGFuY2VTY2FsZVJpZ2h0LFxuICBmYUJhbjogZmFCYW4sXG4gIGZhQmFuZEFpZDogZmFCYW5kQWlkLFxuICBmYUJhcmNvZGU6IGZhQmFyY29kZSxcbiAgZmFCYXJzOiBmYUJhcnMsXG4gIGZhQmFzZWJhbGxCYWxsOiBmYUJhc2ViYWxsQmFsbCxcbiAgZmFCYXNrZXRiYWxsQmFsbDogZmFCYXNrZXRiYWxsQmFsbCxcbiAgZmFCYXRoOiBmYUJhdGgsXG4gIGZhQmF0dGVyeUVtcHR5OiBmYUJhdHRlcnlFbXB0eSxcbiAgZmFCYXR0ZXJ5RnVsbDogZmFCYXR0ZXJ5RnVsbCxcbiAgZmFCYXR0ZXJ5SGFsZjogZmFCYXR0ZXJ5SGFsZixcbiAgZmFCYXR0ZXJ5UXVhcnRlcjogZmFCYXR0ZXJ5UXVhcnRlcixcbiAgZmFCYXR0ZXJ5VGhyZWVRdWFydGVyczogZmFCYXR0ZXJ5VGhyZWVRdWFydGVycyxcbiAgZmFCZWQ6IGZhQmVkLFxuICBmYUJlZXI6IGZhQmVlcixcbiAgZmFCZWxsOiBmYUJlbGwsXG4gIGZhQmVsbFNsYXNoOiBmYUJlbGxTbGFzaCxcbiAgZmFCZXppZXJDdXJ2ZTogZmFCZXppZXJDdXJ2ZSxcbiAgZmFCaWJsZTogZmFCaWJsZSxcbiAgZmFCaWN5Y2xlOiBmYUJpY3ljbGUsXG4gIGZhQmlraW5nOiBmYUJpa2luZyxcbiAgZmFCaW5vY3VsYXJzOiBmYUJpbm9jdWxhcnMsXG4gIGZhQmlvaGF6YXJkOiBmYUJpb2hhemFyZCxcbiAgZmFCaXJ0aGRheUNha2U6IGZhQmlydGhkYXlDYWtlLFxuICBmYUJsZW5kZXI6IGZhQmxlbmRlcixcbiAgZmFCbGVuZGVyUGhvbmU6IGZhQmxlbmRlclBob25lLFxuICBmYUJsaW5kOiBmYUJsaW5kLFxuICBmYUJsb2c6IGZhQmxvZyxcbiAgZmFCb2xkOiBmYUJvbGQsXG4gIGZhQm9sdDogZmFCb2x0LFxuICBmYUJvbWI6IGZhQm9tYixcbiAgZmFCb25lOiBmYUJvbmUsXG4gIGZhQm9uZzogZmFCb25nLFxuICBmYUJvb2s6IGZhQm9vayxcbiAgZmFCb29rRGVhZDogZmFCb29rRGVhZCxcbiAgZmFCb29rTWVkaWNhbDogZmFCb29rTWVkaWNhbCxcbiAgZmFCb29rT3BlbjogZmFCb29rT3BlbixcbiAgZmFCb29rUmVhZGVyOiBmYUJvb2tSZWFkZXIsXG4gIGZhQm9va21hcms6IGZhQm9va21hcmssXG4gIGZhQm9yZGVyQWxsOiBmYUJvcmRlckFsbCxcbiAgZmFCb3JkZXJOb25lOiBmYUJvcmRlck5vbmUsXG4gIGZhQm9yZGVyU3R5bGU6IGZhQm9yZGVyU3R5bGUsXG4gIGZhQm93bGluZ0JhbGw6IGZhQm93bGluZ0JhbGwsXG4gIGZhQm94OiBmYUJveCxcbiAgZmFCb3hPcGVuOiBmYUJveE9wZW4sXG4gIGZhQm94VGlzc3VlOiBmYUJveFRpc3N1ZSxcbiAgZmFCb3hlczogZmFCb3hlcyxcbiAgZmFCcmFpbGxlOiBmYUJyYWlsbGUsXG4gIGZhQnJhaW46IGZhQnJhaW4sXG4gIGZhQnJlYWRTbGljZTogZmFCcmVhZFNsaWNlLFxuICBmYUJyaWVmY2FzZTogZmFCcmllZmNhc2UsXG4gIGZhQnJpZWZjYXNlTWVkaWNhbDogZmFCcmllZmNhc2VNZWRpY2FsLFxuICBmYUJyb2FkY2FzdFRvd2VyOiBmYUJyb2FkY2FzdFRvd2VyLFxuICBmYUJyb29tOiBmYUJyb29tLFxuICBmYUJydXNoOiBmYUJydXNoLFxuICBmYUJ1ZzogZmFCdWcsXG4gIGZhQnVpbGRpbmc6IGZhQnVpbGRpbmcsXG4gIGZhQnVsbGhvcm46IGZhQnVsbGhvcm4sXG4gIGZhQnVsbHNleWU6IGZhQnVsbHNleWUsXG4gIGZhQnVybjogZmFCdXJuLFxuICBmYUJ1czogZmFCdXMsXG4gIGZhQnVzQWx0OiBmYUJ1c0FsdCxcbiAgZmFCdXNpbmVzc1RpbWU6IGZhQnVzaW5lc3NUaW1lLFxuICBmYUNhbGN1bGF0b3I6IGZhQ2FsY3VsYXRvcixcbiAgZmFDYWxlbmRhcjogZmFDYWxlbmRhcixcbiAgZmFDYWxlbmRhckFsdDogZmFDYWxlbmRhckFsdCxcbiAgZmFDYWxlbmRhckNoZWNrOiBmYUNhbGVuZGFyQ2hlY2ssXG4gIGZhQ2FsZW5kYXJEYXk6IGZhQ2FsZW5kYXJEYXksXG4gIGZhQ2FsZW5kYXJNaW51czogZmFDYWxlbmRhck1pbnVzLFxuICBmYUNhbGVuZGFyUGx1czogZmFDYWxlbmRhclBsdXMsXG4gIGZhQ2FsZW5kYXJUaW1lczogZmFDYWxlbmRhclRpbWVzLFxuICBmYUNhbGVuZGFyV2VlazogZmFDYWxlbmRhcldlZWssXG4gIGZhQ2FtZXJhOiBmYUNhbWVyYSxcbiAgZmFDYW1lcmFSZXRybzogZmFDYW1lcmFSZXRybyxcbiAgZmFDYW1wZ3JvdW5kOiBmYUNhbXBncm91bmQsXG4gIGZhQ2FuZHlDYW5lOiBmYUNhbmR5Q2FuZSxcbiAgZmFDYW5uYWJpczogZmFDYW5uYWJpcyxcbiAgZmFDYXBzdWxlczogZmFDYXBzdWxlcyxcbiAgZmFDYXI6IGZhQ2FyLFxuICBmYUNhckFsdDogZmFDYXJBbHQsXG4gIGZhQ2FyQmF0dGVyeTogZmFDYXJCYXR0ZXJ5LFxuICBmYUNhckNyYXNoOiBmYUNhckNyYXNoLFxuICBmYUNhclNpZGU6IGZhQ2FyU2lkZSxcbiAgZmFDYXJhdmFuOiBmYUNhcmF2YW4sXG4gIGZhQ2FyZXREb3duOiBmYUNhcmV0RG93bixcbiAgZmFDYXJldExlZnQ6IGZhQ2FyZXRMZWZ0LFxuICBmYUNhcmV0UmlnaHQ6IGZhQ2FyZXRSaWdodCxcbiAgZmFDYXJldFNxdWFyZURvd246IGZhQ2FyZXRTcXVhcmVEb3duLFxuICBmYUNhcmV0U3F1YXJlTGVmdDogZmFDYXJldFNxdWFyZUxlZnQsXG4gIGZhQ2FyZXRTcXVhcmVSaWdodDogZmFDYXJldFNxdWFyZVJpZ2h0LFxuICBmYUNhcmV0U3F1YXJlVXA6IGZhQ2FyZXRTcXVhcmVVcCxcbiAgZmFDYXJldFVwOiBmYUNhcmV0VXAsXG4gIGZhQ2Fycm90OiBmYUNhcnJvdCxcbiAgZmFDYXJ0QXJyb3dEb3duOiBmYUNhcnRBcnJvd0Rvd24sXG4gIGZhQ2FydFBsdXM6IGZhQ2FydFBsdXMsXG4gIGZhQ2FzaFJlZ2lzdGVyOiBmYUNhc2hSZWdpc3RlcixcbiAgZmFDYXQ6IGZhQ2F0LFxuICBmYUNlcnRpZmljYXRlOiBmYUNlcnRpZmljYXRlLFxuICBmYUNoYWlyOiBmYUNoYWlyLFxuICBmYUNoYWxrYm9hcmQ6IGZhQ2hhbGtib2FyZCxcbiAgZmFDaGFsa2JvYXJkVGVhY2hlcjogZmFDaGFsa2JvYXJkVGVhY2hlcixcbiAgZmFDaGFyZ2luZ1N0YXRpb246IGZhQ2hhcmdpbmdTdGF0aW9uLFxuICBmYUNoYXJ0QXJlYTogZmFDaGFydEFyZWEsXG4gIGZhQ2hhcnRCYXI6IGZhQ2hhcnRCYXIsXG4gIGZhQ2hhcnRMaW5lOiBmYUNoYXJ0TGluZSxcbiAgZmFDaGFydFBpZTogZmFDaGFydFBpZSxcbiAgZmFDaGVjazogZmFDaGVjayxcbiAgZmFDaGVja0NpcmNsZTogZmFDaGVja0NpcmNsZSxcbiAgZmFDaGVja0RvdWJsZTogZmFDaGVja0RvdWJsZSxcbiAgZmFDaGVja1NxdWFyZTogZmFDaGVja1NxdWFyZSxcbiAgZmFDaGVlc2U6IGZhQ2hlZXNlLFxuICBmYUNoZXNzOiBmYUNoZXNzLFxuICBmYUNoZXNzQmlzaG9wOiBmYUNoZXNzQmlzaG9wLFxuICBmYUNoZXNzQm9hcmQ6IGZhQ2hlc3NCb2FyZCxcbiAgZmFDaGVzc0tpbmc6IGZhQ2hlc3NLaW5nLFxuICBmYUNoZXNzS25pZ2h0OiBmYUNoZXNzS25pZ2h0LFxuICBmYUNoZXNzUGF3bjogZmFDaGVzc1Bhd24sXG4gIGZhQ2hlc3NRdWVlbjogZmFDaGVzc1F1ZWVuLFxuICBmYUNoZXNzUm9vazogZmFDaGVzc1Jvb2ssXG4gIGZhQ2hldnJvbkNpcmNsZURvd246IGZhQ2hldnJvbkNpcmNsZURvd24sXG4gIGZhQ2hldnJvbkNpcmNsZUxlZnQ6IGZhQ2hldnJvbkNpcmNsZUxlZnQsXG4gIGZhQ2hldnJvbkNpcmNsZVJpZ2h0OiBmYUNoZXZyb25DaXJjbGVSaWdodCxcbiAgZmFDaGV2cm9uQ2lyY2xlVXA6IGZhQ2hldnJvbkNpcmNsZVVwLFxuICBmYUNoZXZyb25Eb3duOiBmYUNoZXZyb25Eb3duLFxuICBmYUNoZXZyb25MZWZ0OiBmYUNoZXZyb25MZWZ0LFxuICBmYUNoZXZyb25SaWdodDogZmFDaGV2cm9uUmlnaHQsXG4gIGZhQ2hldnJvblVwOiBmYUNoZXZyb25VcCxcbiAgZmFDaGlsZDogZmFDaGlsZCxcbiAgZmFDaHVyY2g6IGZhQ2h1cmNoLFxuICBmYUNpcmNsZTogZmFDaXJjbGUsXG4gIGZhQ2lyY2xlTm90Y2g6IGZhQ2lyY2xlTm90Y2gsXG4gIGZhQ2l0eTogZmFDaXR5LFxuICBmYUNsaW5pY01lZGljYWw6IGZhQ2xpbmljTWVkaWNhbCxcbiAgZmFDbGlwYm9hcmQ6IGZhQ2xpcGJvYXJkLFxuICBmYUNsaXBib2FyZENoZWNrOiBmYUNsaXBib2FyZENoZWNrLFxuICBmYUNsaXBib2FyZExpc3Q6IGZhQ2xpcGJvYXJkTGlzdCxcbiAgZmFDbG9jazogZmFDbG9jayxcbiAgZmFDbG9uZTogZmFDbG9uZSxcbiAgZmFDbG9zZWRDYXB0aW9uaW5nOiBmYUNsb3NlZENhcHRpb25pbmcsXG4gIGZhQ2xvdWQ6IGZhQ2xvdWQsXG4gIGZhQ2xvdWREb3dubG9hZEFsdDogZmFDbG91ZERvd25sb2FkQWx0LFxuICBmYUNsb3VkTWVhdGJhbGw6IGZhQ2xvdWRNZWF0YmFsbCxcbiAgZmFDbG91ZE1vb246IGZhQ2xvdWRNb29uLFxuICBmYUNsb3VkTW9vblJhaW46IGZhQ2xvdWRNb29uUmFpbixcbiAgZmFDbG91ZFJhaW46IGZhQ2xvdWRSYWluLFxuICBmYUNsb3VkU2hvd2Vyc0hlYXZ5OiBmYUNsb3VkU2hvd2Vyc0hlYXZ5LFxuICBmYUNsb3VkU3VuOiBmYUNsb3VkU3VuLFxuICBmYUNsb3VkU3VuUmFpbjogZmFDbG91ZFN1blJhaW4sXG4gIGZhQ2xvdWRVcGxvYWRBbHQ6IGZhQ2xvdWRVcGxvYWRBbHQsXG4gIGZhQ29ja3RhaWw6IGZhQ29ja3RhaWwsXG4gIGZhQ29kZTogZmFDb2RlLFxuICBmYUNvZGVCcmFuY2g6IGZhQ29kZUJyYW5jaCxcbiAgZmFDb2ZmZWU6IGZhQ29mZmVlLFxuICBmYUNvZzogZmFDb2csXG4gIGZhQ29nczogZmFDb2dzLFxuICBmYUNvaW5zOiBmYUNvaW5zLFxuICBmYUNvbHVtbnM6IGZhQ29sdW1ucyxcbiAgZmFDb21tZW50OiBmYUNvbW1lbnQsXG4gIGZhQ29tbWVudEFsdDogZmFDb21tZW50QWx0LFxuICBmYUNvbW1lbnREb2xsYXI6IGZhQ29tbWVudERvbGxhcixcbiAgZmFDb21tZW50RG90czogZmFDb21tZW50RG90cyxcbiAgZmFDb21tZW50TWVkaWNhbDogZmFDb21tZW50TWVkaWNhbCxcbiAgZmFDb21tZW50U2xhc2g6IGZhQ29tbWVudFNsYXNoLFxuICBmYUNvbW1lbnRzOiBmYUNvbW1lbnRzLFxuICBmYUNvbW1lbnRzRG9sbGFyOiBmYUNvbW1lbnRzRG9sbGFyLFxuICBmYUNvbXBhY3REaXNjOiBmYUNvbXBhY3REaXNjLFxuICBmYUNvbXBhc3M6IGZhQ29tcGFzcyxcbiAgZmFDb21wcmVzczogZmFDb21wcmVzcyxcbiAgZmFDb21wcmVzc0FsdDogZmFDb21wcmVzc0FsdCxcbiAgZmFDb21wcmVzc0Fycm93c0FsdDogZmFDb21wcmVzc0Fycm93c0FsdCxcbiAgZmFDb25jaWVyZ2VCZWxsOiBmYUNvbmNpZXJnZUJlbGwsXG4gIGZhQ29va2llOiBmYUNvb2tpZSxcbiAgZmFDb29raWVCaXRlOiBmYUNvb2tpZUJpdGUsXG4gIGZhQ29weTogZmFDb3B5LFxuICBmYUNvcHlyaWdodDogZmFDb3B5cmlnaHQsXG4gIGZhQ291Y2g6IGZhQ291Y2gsXG4gIGZhQ3JlZGl0Q2FyZDogZmFDcmVkaXRDYXJkLFxuICBmYUNyb3A6IGZhQ3JvcCxcbiAgZmFDcm9wQWx0OiBmYUNyb3BBbHQsXG4gIGZhQ3Jvc3M6IGZhQ3Jvc3MsXG4gIGZhQ3Jvc3NoYWlyczogZmFDcm9zc2hhaXJzLFxuICBmYUNyb3c6IGZhQ3JvdyxcbiAgZmFDcm93bjogZmFDcm93bixcbiAgZmFDcnV0Y2g6IGZhQ3J1dGNoLFxuICBmYUN1YmU6IGZhQ3ViZSxcbiAgZmFDdWJlczogZmFDdWJlcyxcbiAgZmFDdXQ6IGZhQ3V0LFxuICBmYURhdGFiYXNlOiBmYURhdGFiYXNlLFxuICBmYURlYWY6IGZhRGVhZixcbiAgZmFEZW1vY3JhdDogZmFEZW1vY3JhdCxcbiAgZmFEZXNrdG9wOiBmYURlc2t0b3AsXG4gIGZhRGhhcm1hY2hha3JhOiBmYURoYXJtYWNoYWtyYSxcbiAgZmFEaWFnbm9zZXM6IGZhRGlhZ25vc2VzLFxuICBmYURpY2U6IGZhRGljZSxcbiAgZmFEaWNlRDIwOiBmYURpY2VEMjAsXG4gIGZhRGljZUQ2OiBmYURpY2VENixcbiAgZmFEaWNlRml2ZTogZmFEaWNlRml2ZSxcbiAgZmFEaWNlRm91cjogZmFEaWNlRm91cixcbiAgZmFEaWNlT25lOiBmYURpY2VPbmUsXG4gIGZhRGljZVNpeDogZmFEaWNlU2l4LFxuICBmYURpY2VUaHJlZTogZmFEaWNlVGhyZWUsXG4gIGZhRGljZVR3bzogZmFEaWNlVHdvLFxuICBmYURpZ2l0YWxUYWNob2dyYXBoOiBmYURpZ2l0YWxUYWNob2dyYXBoLFxuICBmYURpcmVjdGlvbnM6IGZhRGlyZWN0aW9ucyxcbiAgZmFEaXNlYXNlOiBmYURpc2Vhc2UsXG4gIGZhRGl2aWRlOiBmYURpdmlkZSxcbiAgZmFEaXp6eTogZmFEaXp6eSxcbiAgZmFEbmE6IGZhRG5hLFxuICBmYURvZzogZmFEb2csXG4gIGZhRG9sbGFyU2lnbjogZmFEb2xsYXJTaWduLFxuICBmYURvbGx5OiBmYURvbGx5LFxuICBmYURvbGx5RmxhdGJlZDogZmFEb2xseUZsYXRiZWQsXG4gIGZhRG9uYXRlOiBmYURvbmF0ZSxcbiAgZmFEb29yQ2xvc2VkOiBmYURvb3JDbG9zZWQsXG4gIGZhRG9vck9wZW46IGZhRG9vck9wZW4sXG4gIGZhRG90Q2lyY2xlOiBmYURvdENpcmNsZSxcbiAgZmFEb3ZlOiBmYURvdmUsXG4gIGZhRG93bmxvYWQ6IGZhRG93bmxvYWQsXG4gIGZhRHJhZnRpbmdDb21wYXNzOiBmYURyYWZ0aW5nQ29tcGFzcyxcbiAgZmFEcmFnb246IGZhRHJhZ29uLFxuICBmYURyYXdQb2x5Z29uOiBmYURyYXdQb2x5Z29uLFxuICBmYURydW06IGZhRHJ1bSxcbiAgZmFEcnVtU3RlZWxwYW46IGZhRHJ1bVN0ZWVscGFuLFxuICBmYURydW1zdGlja0JpdGU6IGZhRHJ1bXN0aWNrQml0ZSxcbiAgZmFEdW1iYmVsbDogZmFEdW1iYmVsbCxcbiAgZmFEdW1wc3RlcjogZmFEdW1wc3RlcixcbiAgZmFEdW1wc3RlckZpcmU6IGZhRHVtcHN0ZXJGaXJlLFxuICBmYUR1bmdlb246IGZhRHVuZ2VvbixcbiAgZmFFZGl0OiBmYUVkaXQsXG4gIGZhRWdnOiBmYUVnZyxcbiAgZmFFamVjdDogZmFFamVjdCxcbiAgZmFFbGxpcHNpc0g6IGZhRWxsaXBzaXNILFxuICBmYUVsbGlwc2lzVjogZmFFbGxpcHNpc1YsXG4gIGZhRW52ZWxvcGU6IGZhRW52ZWxvcGUsXG4gIGZhRW52ZWxvcGVPcGVuOiBmYUVudmVsb3BlT3BlbixcbiAgZmFFbnZlbG9wZU9wZW5UZXh0OiBmYUVudmVsb3BlT3BlblRleHQsXG4gIGZhRW52ZWxvcGVTcXVhcmU6IGZhRW52ZWxvcGVTcXVhcmUsXG4gIGZhRXF1YWxzOiBmYUVxdWFscyxcbiAgZmFFcmFzZXI6IGZhRXJhc2VyLFxuICBmYUV0aGVybmV0OiBmYUV0aGVybmV0LFxuICBmYUV1cm9TaWduOiBmYUV1cm9TaWduLFxuICBmYUV4Y2hhbmdlQWx0OiBmYUV4Y2hhbmdlQWx0LFxuICBmYUV4Y2xhbWF0aW9uOiBmYUV4Y2xhbWF0aW9uLFxuICBmYUV4Y2xhbWF0aW9uQ2lyY2xlOiBmYUV4Y2xhbWF0aW9uQ2lyY2xlLFxuICBmYUV4Y2xhbWF0aW9uVHJpYW5nbGU6IGZhRXhjbGFtYXRpb25UcmlhbmdsZSxcbiAgZmFFeHBhbmQ6IGZhRXhwYW5kLFxuICBmYUV4cGFuZEFsdDogZmFFeHBhbmRBbHQsXG4gIGZhRXhwYW5kQXJyb3dzQWx0OiBmYUV4cGFuZEFycm93c0FsdCxcbiAgZmFFeHRlcm5hbExpbmtBbHQ6IGZhRXh0ZXJuYWxMaW5rQWx0LFxuICBmYUV4dGVybmFsTGlua1NxdWFyZUFsdDogZmFFeHRlcm5hbExpbmtTcXVhcmVBbHQsXG4gIGZhRXllOiBmYUV5ZSxcbiAgZmFFeWVEcm9wcGVyOiBmYUV5ZURyb3BwZXIsXG4gIGZhRXllU2xhc2g6IGZhRXllU2xhc2gsXG4gIGZhRmFuOiBmYUZhbixcbiAgZmFGYXN0QmFja3dhcmQ6IGZhRmFzdEJhY2t3YXJkLFxuICBmYUZhc3RGb3J3YXJkOiBmYUZhc3RGb3J3YXJkLFxuICBmYUZhdWNldDogZmFGYXVjZXQsXG4gIGZhRmF4OiBmYUZheCxcbiAgZmFGZWF0aGVyOiBmYUZlYXRoZXIsXG4gIGZhRmVhdGhlckFsdDogZmFGZWF0aGVyQWx0LFxuICBmYUZlbWFsZTogZmFGZW1hbGUsXG4gIGZhRmlnaHRlckpldDogZmFGaWdodGVySmV0LFxuICBmYUZpbGU6IGZhRmlsZSxcbiAgZmFGaWxlQWx0OiBmYUZpbGVBbHQsXG4gIGZhRmlsZUFyY2hpdmU6IGZhRmlsZUFyY2hpdmUsXG4gIGZhRmlsZUF1ZGlvOiBmYUZpbGVBdWRpbyxcbiAgZmFGaWxlQ29kZTogZmFGaWxlQ29kZSxcbiAgZmFGaWxlQ29udHJhY3Q6IGZhRmlsZUNvbnRyYWN0LFxuICBmYUZpbGVDc3Y6IGZhRmlsZUNzdixcbiAgZmFGaWxlRG93bmxvYWQ6IGZhRmlsZURvd25sb2FkLFxuICBmYUZpbGVFeGNlbDogZmFGaWxlRXhjZWwsXG4gIGZhRmlsZUV4cG9ydDogZmFGaWxlRXhwb3J0LFxuICBmYUZpbGVJbWFnZTogZmFGaWxlSW1hZ2UsXG4gIGZhRmlsZUltcG9ydDogZmFGaWxlSW1wb3J0LFxuICBmYUZpbGVJbnZvaWNlOiBmYUZpbGVJbnZvaWNlLFxuICBmYUZpbGVJbnZvaWNlRG9sbGFyOiBmYUZpbGVJbnZvaWNlRG9sbGFyLFxuICBmYUZpbGVNZWRpY2FsOiBmYUZpbGVNZWRpY2FsLFxuICBmYUZpbGVNZWRpY2FsQWx0OiBmYUZpbGVNZWRpY2FsQWx0LFxuICBmYUZpbGVQZGY6IGZhRmlsZVBkZixcbiAgZmFGaWxlUG93ZXJwb2ludDogZmFGaWxlUG93ZXJwb2ludCxcbiAgZmFGaWxlUHJlc2NyaXB0aW9uOiBmYUZpbGVQcmVzY3JpcHRpb24sXG4gIGZhRmlsZVNpZ25hdHVyZTogZmFGaWxlU2lnbmF0dXJlLFxuICBmYUZpbGVVcGxvYWQ6IGZhRmlsZVVwbG9hZCxcbiAgZmFGaWxlVmlkZW86IGZhRmlsZVZpZGVvLFxuICBmYUZpbGVXb3JkOiBmYUZpbGVXb3JkLFxuICBmYUZpbGw6IGZhRmlsbCxcbiAgZmFGaWxsRHJpcDogZmFGaWxsRHJpcCxcbiAgZmFGaWxtOiBmYUZpbG0sXG4gIGZhRmlsdGVyOiBmYUZpbHRlcixcbiAgZmFGaW5nZXJwcmludDogZmFGaW5nZXJwcmludCxcbiAgZmFGaXJlOiBmYUZpcmUsXG4gIGZhRmlyZUFsdDogZmFGaXJlQWx0LFxuICBmYUZpcmVFeHRpbmd1aXNoZXI6IGZhRmlyZUV4dGluZ3Vpc2hlcixcbiAgZmFGaXJzdEFpZDogZmFGaXJzdEFpZCxcbiAgZmFGaXNoOiBmYUZpc2gsXG4gIGZhRmlzdFJhaXNlZDogZmFGaXN0UmFpc2VkLFxuICBmYUZsYWc6IGZhRmxhZyxcbiAgZmFGbGFnQ2hlY2tlcmVkOiBmYUZsYWdDaGVja2VyZWQsXG4gIGZhRmxhZ1VzYTogZmFGbGFnVXNhLFxuICBmYUZsYXNrOiBmYUZsYXNrLFxuICBmYUZsdXNoZWQ6IGZhRmx1c2hlZCxcbiAgZmFGb2xkZXI6IGZhRm9sZGVyLFxuICBmYUZvbGRlck1pbnVzOiBmYUZvbGRlck1pbnVzLFxuICBmYUZvbGRlck9wZW46IGZhRm9sZGVyT3BlbixcbiAgZmFGb2xkZXJQbHVzOiBmYUZvbGRlclBsdXMsXG4gIGZhRm9udDogZmFGb250LFxuICBmYUZvbnRBd2Vzb21lTG9nb0Z1bGw6IGZhRm9udEF3ZXNvbWVMb2dvRnVsbCxcbiAgZmFGb290YmFsbEJhbGw6IGZhRm9vdGJhbGxCYWxsLFxuICBmYUZvcndhcmQ6IGZhRm9yd2FyZCxcbiAgZmFGcm9nOiBmYUZyb2csXG4gIGZhRnJvd246IGZhRnJvd24sXG4gIGZhRnJvd25PcGVuOiBmYUZyb3duT3BlbixcbiAgZmFGdW5uZWxEb2xsYXI6IGZhRnVubmVsRG9sbGFyLFxuICBmYUZ1dGJvbDogZmFGdXRib2wsXG4gIGZhR2FtZXBhZDogZmFHYW1lcGFkLFxuICBmYUdhc1B1bXA6IGZhR2FzUHVtcCxcbiAgZmFHYXZlbDogZmFHYXZlbCxcbiAgZmFHZW06IGZhR2VtLFxuICBmYUdlbmRlcmxlc3M6IGZhR2VuZGVybGVzcyxcbiAgZmFHaG9zdDogZmFHaG9zdCxcbiAgZmFHaWZ0OiBmYUdpZnQsXG4gIGZhR2lmdHM6IGZhR2lmdHMsXG4gIGZhR2xhc3NDaGVlcnM6IGZhR2xhc3NDaGVlcnMsXG4gIGZhR2xhc3NNYXJ0aW5pOiBmYUdsYXNzTWFydGluaSxcbiAgZmFHbGFzc01hcnRpbmlBbHQ6IGZhR2xhc3NNYXJ0aW5pQWx0LFxuICBmYUdsYXNzV2hpc2tleTogZmFHbGFzc1doaXNrZXksXG4gIGZhR2xhc3NlczogZmFHbGFzc2VzLFxuICBmYUdsb2JlOiBmYUdsb2JlLFxuICBmYUdsb2JlQWZyaWNhOiBmYUdsb2JlQWZyaWNhLFxuICBmYUdsb2JlQW1lcmljYXM6IGZhR2xvYmVBbWVyaWNhcyxcbiAgZmFHbG9iZUFzaWE6IGZhR2xvYmVBc2lhLFxuICBmYUdsb2JlRXVyb3BlOiBmYUdsb2JlRXVyb3BlLFxuICBmYUdvbGZCYWxsOiBmYUdvbGZCYWxsLFxuICBmYUdvcHVyYW06IGZhR29wdXJhbSxcbiAgZmFHcmFkdWF0aW9uQ2FwOiBmYUdyYWR1YXRpb25DYXAsXG4gIGZhR3JlYXRlclRoYW46IGZhR3JlYXRlclRoYW4sXG4gIGZhR3JlYXRlclRoYW5FcXVhbDogZmFHcmVhdGVyVGhhbkVxdWFsLFxuICBmYUdyaW1hY2U6IGZhR3JpbWFjZSxcbiAgZmFHcmluOiBmYUdyaW4sXG4gIGZhR3JpbkFsdDogZmFHcmluQWx0LFxuICBmYUdyaW5CZWFtOiBmYUdyaW5CZWFtLFxuICBmYUdyaW5CZWFtU3dlYXQ6IGZhR3JpbkJlYW1Td2VhdCxcbiAgZmFHcmluSGVhcnRzOiBmYUdyaW5IZWFydHMsXG4gIGZhR3JpblNxdWludDogZmFHcmluU3F1aW50LFxuICBmYUdyaW5TcXVpbnRUZWFyczogZmFHcmluU3F1aW50VGVhcnMsXG4gIGZhR3JpblN0YXJzOiBmYUdyaW5TdGFycyxcbiAgZmFHcmluVGVhcnM6IGZhR3JpblRlYXJzLFxuICBmYUdyaW5Ub25ndWU6IGZhR3JpblRvbmd1ZSxcbiAgZmFHcmluVG9uZ3VlU3F1aW50OiBmYUdyaW5Ub25ndWVTcXVpbnQsXG4gIGZhR3JpblRvbmd1ZVdpbms6IGZhR3JpblRvbmd1ZVdpbmssXG4gIGZhR3Jpbldpbms6IGZhR3JpbldpbmssXG4gIGZhR3JpcEhvcml6b250YWw6IGZhR3JpcEhvcml6b250YWwsXG4gIGZhR3JpcExpbmVzOiBmYUdyaXBMaW5lcyxcbiAgZmFHcmlwTGluZXNWZXJ0aWNhbDogZmFHcmlwTGluZXNWZXJ0aWNhbCxcbiAgZmFHcmlwVmVydGljYWw6IGZhR3JpcFZlcnRpY2FsLFxuICBmYUd1aXRhcjogZmFHdWl0YXIsXG4gIGZhSFNxdWFyZTogZmFIU3F1YXJlLFxuICBmYUhhbWJ1cmdlcjogZmFIYW1idXJnZXIsXG4gIGZhSGFtbWVyOiBmYUhhbW1lcixcbiAgZmFIYW1zYTogZmFIYW1zYSxcbiAgZmFIYW5kSG9sZGluZzogZmFIYW5kSG9sZGluZyxcbiAgZmFIYW5kSG9sZGluZ0hlYXJ0OiBmYUhhbmRIb2xkaW5nSGVhcnQsXG4gIGZhSGFuZEhvbGRpbmdNZWRpY2FsOiBmYUhhbmRIb2xkaW5nTWVkaWNhbCxcbiAgZmFIYW5kSG9sZGluZ1VzZDogZmFIYW5kSG9sZGluZ1VzZCxcbiAgZmFIYW5kSG9sZGluZ1dhdGVyOiBmYUhhbmRIb2xkaW5nV2F0ZXIsXG4gIGZhSGFuZExpemFyZDogZmFIYW5kTGl6YXJkLFxuICBmYUhhbmRNaWRkbGVGaW5nZXI6IGZhSGFuZE1pZGRsZUZpbmdlcixcbiAgZmFIYW5kUGFwZXI6IGZhSGFuZFBhcGVyLFxuICBmYUhhbmRQZWFjZTogZmFIYW5kUGVhY2UsXG4gIGZhSGFuZFBvaW50RG93bjogZmFIYW5kUG9pbnREb3duLFxuICBmYUhhbmRQb2ludExlZnQ6IGZhSGFuZFBvaW50TGVmdCxcbiAgZmFIYW5kUG9pbnRSaWdodDogZmFIYW5kUG9pbnRSaWdodCxcbiAgZmFIYW5kUG9pbnRVcDogZmFIYW5kUG9pbnRVcCxcbiAgZmFIYW5kUG9pbnRlcjogZmFIYW5kUG9pbnRlcixcbiAgZmFIYW5kUm9jazogZmFIYW5kUm9jayxcbiAgZmFIYW5kU2Npc3NvcnM6IGZhSGFuZFNjaXNzb3JzLFxuICBmYUhhbmRTcGFya2xlczogZmFIYW5kU3BhcmtsZXMsXG4gIGZhSGFuZFNwb2NrOiBmYUhhbmRTcG9jayxcbiAgZmFIYW5kczogZmFIYW5kcyxcbiAgZmFIYW5kc0hlbHBpbmc6IGZhSGFuZHNIZWxwaW5nLFxuICBmYUhhbmRzV2FzaDogZmFIYW5kc1dhc2gsXG4gIGZhSGFuZHNoYWtlOiBmYUhhbmRzaGFrZSxcbiAgZmFIYW5kc2hha2VBbHRTbGFzaDogZmFIYW5kc2hha2VBbHRTbGFzaCxcbiAgZmFIYW5kc2hha2VTbGFzaDogZmFIYW5kc2hha2VTbGFzaCxcbiAgZmFIYW51a2lhaDogZmFIYW51a2lhaCxcbiAgZmFIYXJkSGF0OiBmYUhhcmRIYXQsXG4gIGZhSGFzaHRhZzogZmFIYXNodGFnLFxuICBmYUhhdENvd2JveTogZmFIYXRDb3dib3ksXG4gIGZhSGF0Q293Ym95U2lkZTogZmFIYXRDb3dib3lTaWRlLFxuICBmYUhhdFdpemFyZDogZmFIYXRXaXphcmQsXG4gIGZhSGRkOiBmYUhkZCxcbiAgZmFIZWFkU2lkZUNvdWdoOiBmYUhlYWRTaWRlQ291Z2gsXG4gIGZhSGVhZFNpZGVDb3VnaFNsYXNoOiBmYUhlYWRTaWRlQ291Z2hTbGFzaCxcbiAgZmFIZWFkU2lkZU1hc2s6IGZhSGVhZFNpZGVNYXNrLFxuICBmYUhlYWRTaWRlVmlydXM6IGZhSGVhZFNpZGVWaXJ1cyxcbiAgZmFIZWFkaW5nOiBmYUhlYWRpbmcsXG4gIGZhSGVhZHBob25lczogZmFIZWFkcGhvbmVzLFxuICBmYUhlYWRwaG9uZXNBbHQ6IGZhSGVhZHBob25lc0FsdCxcbiAgZmFIZWFkc2V0OiBmYUhlYWRzZXQsXG4gIGZhSGVhcnQ6IGZhSGVhcnQsXG4gIGZhSGVhcnRCcm9rZW46IGZhSGVhcnRCcm9rZW4sXG4gIGZhSGVhcnRiZWF0OiBmYUhlYXJ0YmVhdCxcbiAgZmFIZWxpY29wdGVyOiBmYUhlbGljb3B0ZXIsXG4gIGZhSGlnaGxpZ2h0ZXI6IGZhSGlnaGxpZ2h0ZXIsXG4gIGZhSGlraW5nOiBmYUhpa2luZyxcbiAgZmFIaXBwbzogZmFIaXBwbyxcbiAgZmFIaXN0b3J5OiBmYUhpc3RvcnksXG4gIGZhSG9ja2V5UHVjazogZmFIb2NrZXlQdWNrLFxuICBmYUhvbGx5QmVycnk6IGZhSG9sbHlCZXJyeSxcbiAgZmFIb21lOiBmYUhvbWUsXG4gIGZhSG9yc2U6IGZhSG9yc2UsXG4gIGZhSG9yc2VIZWFkOiBmYUhvcnNlSGVhZCxcbiAgZmFIb3NwaXRhbDogZmFIb3NwaXRhbCxcbiAgZmFIb3NwaXRhbEFsdDogZmFIb3NwaXRhbEFsdCxcbiAgZmFIb3NwaXRhbFN5bWJvbDogZmFIb3NwaXRhbFN5bWJvbCxcbiAgZmFIb3NwaXRhbFVzZXI6IGZhSG9zcGl0YWxVc2VyLFxuICBmYUhvdFR1YjogZmFIb3RUdWIsXG4gIGZhSG90ZG9nOiBmYUhvdGRvZyxcbiAgZmFIb3RlbDogZmFIb3RlbCxcbiAgZmFIb3VyZ2xhc3M6IGZhSG91cmdsYXNzLFxuICBmYUhvdXJnbGFzc0VuZDogZmFIb3VyZ2xhc3NFbmQsXG4gIGZhSG91cmdsYXNzSGFsZjogZmFIb3VyZ2xhc3NIYWxmLFxuICBmYUhvdXJnbGFzc1N0YXJ0OiBmYUhvdXJnbGFzc1N0YXJ0LFxuICBmYUhvdXNlRGFtYWdlOiBmYUhvdXNlRGFtYWdlLFxuICBmYUhvdXNlVXNlcjogZmFIb3VzZVVzZXIsXG4gIGZhSHJ5dm5pYTogZmFIcnl2bmlhLFxuICBmYUlDdXJzb3I6IGZhSUN1cnNvcixcbiAgZmFJY2VDcmVhbTogZmFJY2VDcmVhbSxcbiAgZmFJY2ljbGVzOiBmYUljaWNsZXMsXG4gIGZhSWNvbnM6IGZhSWNvbnMsXG4gIGZhSWRCYWRnZTogZmFJZEJhZGdlLFxuICBmYUlkQ2FyZDogZmFJZENhcmQsXG4gIGZhSWRDYXJkQWx0OiBmYUlkQ2FyZEFsdCxcbiAgZmFJZ2xvbzogZmFJZ2xvbyxcbiAgZmFJbWFnZTogZmFJbWFnZSxcbiAgZmFJbWFnZXM6IGZhSW1hZ2VzLFxuICBmYUluYm94OiBmYUluYm94LFxuICBmYUluZGVudDogZmFJbmRlbnQsXG4gIGZhSW5kdXN0cnk6IGZhSW5kdXN0cnksXG4gIGZhSW5maW5pdHk6IGZhSW5maW5pdHksXG4gIGZhSW5mbzogZmFJbmZvLFxuICBmYUluZm9DaXJjbGU6IGZhSW5mb0NpcmNsZSxcbiAgZmFJdGFsaWM6IGZhSXRhbGljLFxuICBmYUplZGk6IGZhSmVkaSxcbiAgZmFKb2ludDogZmFKb2ludCxcbiAgZmFKb3VybmFsV2hpbGxzOiBmYUpvdXJuYWxXaGlsbHMsXG4gIGZhS2FhYmE6IGZhS2FhYmEsXG4gIGZhS2V5OiBmYUtleSxcbiAgZmFLZXlib2FyZDogZmFLZXlib2FyZCxcbiAgZmFLaGFuZGE6IGZhS2hhbmRhLFxuICBmYUtpc3M6IGZhS2lzcyxcbiAgZmFLaXNzQmVhbTogZmFLaXNzQmVhbSxcbiAgZmFLaXNzV2lua0hlYXJ0OiBmYUtpc3NXaW5rSGVhcnQsXG4gIGZhS2l3aUJpcmQ6IGZhS2l3aUJpcmQsXG4gIGZhTGFuZG1hcms6IGZhTGFuZG1hcmssXG4gIGZhTGFuZ3VhZ2U6IGZhTGFuZ3VhZ2UsXG4gIGZhTGFwdG9wOiBmYUxhcHRvcCxcbiAgZmFMYXB0b3BDb2RlOiBmYUxhcHRvcENvZGUsXG4gIGZhTGFwdG9wSG91c2U6IGZhTGFwdG9wSG91c2UsXG4gIGZhTGFwdG9wTWVkaWNhbDogZmFMYXB0b3BNZWRpY2FsLFxuICBmYUxhdWdoOiBmYUxhdWdoLFxuICBmYUxhdWdoQmVhbTogZmFMYXVnaEJlYW0sXG4gIGZhTGF1Z2hTcXVpbnQ6IGZhTGF1Z2hTcXVpbnQsXG4gIGZhTGF1Z2hXaW5rOiBmYUxhdWdoV2luayxcbiAgZmFMYXllckdyb3VwOiBmYUxheWVyR3JvdXAsXG4gIGZhTGVhZjogZmFMZWFmLFxuICBmYUxlbW9uOiBmYUxlbW9uLFxuICBmYUxlc3NUaGFuOiBmYUxlc3NUaGFuLFxuICBmYUxlc3NUaGFuRXF1YWw6IGZhTGVzc1RoYW5FcXVhbCxcbiAgZmFMZXZlbERvd25BbHQ6IGZhTGV2ZWxEb3duQWx0LFxuICBmYUxldmVsVXBBbHQ6IGZhTGV2ZWxVcEFsdCxcbiAgZmFMaWZlUmluZzogZmFMaWZlUmluZyxcbiAgZmFMaWdodGJ1bGI6IGZhTGlnaHRidWxiLFxuICBmYUxpbms6IGZhTGluayxcbiAgZmFMaXJhU2lnbjogZmFMaXJhU2lnbixcbiAgZmFMaXN0OiBmYUxpc3QsXG4gIGZhTGlzdEFsdDogZmFMaXN0QWx0LFxuICBmYUxpc3RPbDogZmFMaXN0T2wsXG4gIGZhTGlzdFVsOiBmYUxpc3RVbCxcbiAgZmFMb2NhdGlvbkFycm93OiBmYUxvY2F0aW9uQXJyb3csXG4gIGZhTG9jazogZmFMb2NrLFxuICBmYUxvY2tPcGVuOiBmYUxvY2tPcGVuLFxuICBmYUxvbmdBcnJvd0FsdERvd246IGZhTG9uZ0Fycm93QWx0RG93bixcbiAgZmFMb25nQXJyb3dBbHRMZWZ0OiBmYUxvbmdBcnJvd0FsdExlZnQsXG4gIGZhTG9uZ0Fycm93QWx0UmlnaHQ6IGZhTG9uZ0Fycm93QWx0UmlnaHQsXG4gIGZhTG9uZ0Fycm93QWx0VXA6IGZhTG9uZ0Fycm93QWx0VXAsXG4gIGZhTG93VmlzaW9uOiBmYUxvd1Zpc2lvbixcbiAgZmFMdWdnYWdlQ2FydDogZmFMdWdnYWdlQ2FydCxcbiAgZmFMdW5nczogZmFMdW5ncyxcbiAgZmFMdW5nc1ZpcnVzOiBmYUx1bmdzVmlydXMsXG4gIGZhTWFnaWM6IGZhTWFnaWMsXG4gIGZhTWFnbmV0OiBmYU1hZ25ldCxcbiAgZmFNYWlsQnVsazogZmFNYWlsQnVsayxcbiAgZmFNYWxlOiBmYU1hbGUsXG4gIGZhTWFwOiBmYU1hcCxcbiAgZmFNYXBNYXJrZWQ6IGZhTWFwTWFya2VkLFxuICBmYU1hcE1hcmtlZEFsdDogZmFNYXBNYXJrZWRBbHQsXG4gIGZhTWFwTWFya2VyOiBmYU1hcE1hcmtlcixcbiAgZmFNYXBNYXJrZXJBbHQ6IGZhTWFwTWFya2VyQWx0LFxuICBmYU1hcFBpbjogZmFNYXBQaW4sXG4gIGZhTWFwU2lnbnM6IGZhTWFwU2lnbnMsXG4gIGZhTWFya2VyOiBmYU1hcmtlcixcbiAgZmFNYXJzOiBmYU1hcnMsXG4gIGZhTWFyc0RvdWJsZTogZmFNYXJzRG91YmxlLFxuICBmYU1hcnNTdHJva2U6IGZhTWFyc1N0cm9rZSxcbiAgZmFNYXJzU3Ryb2tlSDogZmFNYXJzU3Ryb2tlSCxcbiAgZmFNYXJzU3Ryb2tlVjogZmFNYXJzU3Ryb2tlVixcbiAgZmFNYXNrOiBmYU1hc2ssXG4gIGZhTWVkYWw6IGZhTWVkYWwsXG4gIGZhTWVka2l0OiBmYU1lZGtpdCxcbiAgZmFNZWg6IGZhTWVoLFxuICBmYU1laEJsYW5rOiBmYU1laEJsYW5rLFxuICBmYU1laFJvbGxpbmdFeWVzOiBmYU1laFJvbGxpbmdFeWVzLFxuICBmYU1lbW9yeTogZmFNZW1vcnksXG4gIGZhTWVub3JhaDogZmFNZW5vcmFoLFxuICBmYU1lcmN1cnk6IGZhTWVyY3VyeSxcbiAgZmFNZXRlb3I6IGZhTWV0ZW9yLFxuICBmYU1pY3JvY2hpcDogZmFNaWNyb2NoaXAsXG4gIGZhTWljcm9waG9uZTogZmFNaWNyb3Bob25lLFxuICBmYU1pY3JvcGhvbmVBbHQ6IGZhTWljcm9waG9uZUFsdCxcbiAgZmFNaWNyb3Bob25lQWx0U2xhc2g6IGZhTWljcm9waG9uZUFsdFNsYXNoLFxuICBmYU1pY3JvcGhvbmVTbGFzaDogZmFNaWNyb3Bob25lU2xhc2gsXG4gIGZhTWljcm9zY29wZTogZmFNaWNyb3Njb3BlLFxuICBmYU1pbnVzOiBmYU1pbnVzLFxuICBmYU1pbnVzQ2lyY2xlOiBmYU1pbnVzQ2lyY2xlLFxuICBmYU1pbnVzU3F1YXJlOiBmYU1pbnVzU3F1YXJlLFxuICBmYU1pdHRlbjogZmFNaXR0ZW4sXG4gIGZhTW9iaWxlOiBmYU1vYmlsZSxcbiAgZmFNb2JpbGVBbHQ6IGZhTW9iaWxlQWx0LFxuICBmYU1vbmV5QmlsbDogZmFNb25leUJpbGwsXG4gIGZhTW9uZXlCaWxsQWx0OiBmYU1vbmV5QmlsbEFsdCxcbiAgZmFNb25leUJpbGxXYXZlOiBmYU1vbmV5QmlsbFdhdmUsXG4gIGZhTW9uZXlCaWxsV2F2ZUFsdDogZmFNb25leUJpbGxXYXZlQWx0LFxuICBmYU1vbmV5Q2hlY2s6IGZhTW9uZXlDaGVjayxcbiAgZmFNb25leUNoZWNrQWx0OiBmYU1vbmV5Q2hlY2tBbHQsXG4gIGZhTW9udW1lbnQ6IGZhTW9udW1lbnQsXG4gIGZhTW9vbjogZmFNb29uLFxuICBmYU1vcnRhclBlc3RsZTogZmFNb3J0YXJQZXN0bGUsXG4gIGZhTW9zcXVlOiBmYU1vc3F1ZSxcbiAgZmFNb3RvcmN5Y2xlOiBmYU1vdG9yY3ljbGUsXG4gIGZhTW91bnRhaW46IGZhTW91bnRhaW4sXG4gIGZhTW91c2U6IGZhTW91c2UsXG4gIGZhTW91c2VQb2ludGVyOiBmYU1vdXNlUG9pbnRlcixcbiAgZmFNdWdIb3Q6IGZhTXVnSG90LFxuICBmYU11c2ljOiBmYU11c2ljLFxuICBmYU5ldHdvcmtXaXJlZDogZmFOZXR3b3JrV2lyZWQsXG4gIGZhTmV1dGVyOiBmYU5ldXRlcixcbiAgZmFOZXdzcGFwZXI6IGZhTmV3c3BhcGVyLFxuICBmYU5vdEVxdWFsOiBmYU5vdEVxdWFsLFxuICBmYU5vdGVzTWVkaWNhbDogZmFOb3Rlc01lZGljYWwsXG4gIGZhT2JqZWN0R3JvdXA6IGZhT2JqZWN0R3JvdXAsXG4gIGZhT2JqZWN0VW5ncm91cDogZmFPYmplY3RVbmdyb3VwLFxuICBmYU9pbENhbjogZmFPaWxDYW4sXG4gIGZhT206IGZhT20sXG4gIGZhT3R0ZXI6IGZhT3R0ZXIsXG4gIGZhT3V0ZGVudDogZmFPdXRkZW50LFxuICBmYVBhZ2VyOiBmYVBhZ2VyLFxuICBmYVBhaW50QnJ1c2g6IGZhUGFpbnRCcnVzaCxcbiAgZmFQYWludFJvbGxlcjogZmFQYWludFJvbGxlcixcbiAgZmFQYWxldHRlOiBmYVBhbGV0dGUsXG4gIGZhUGFsbGV0OiBmYVBhbGxldCxcbiAgZmFQYXBlclBsYW5lOiBmYVBhcGVyUGxhbmUsXG4gIGZhUGFwZXJjbGlwOiBmYVBhcGVyY2xpcCxcbiAgZmFQYXJhY2h1dGVCb3g6IGZhUGFyYWNodXRlQm94LFxuICBmYVBhcmFncmFwaDogZmFQYXJhZ3JhcGgsXG4gIGZhUGFya2luZzogZmFQYXJraW5nLFxuICBmYVBhc3Nwb3J0OiBmYVBhc3Nwb3J0LFxuICBmYVBhc3RhZmFyaWFuaXNtOiBmYVBhc3RhZmFyaWFuaXNtLFxuICBmYVBhc3RlOiBmYVBhc3RlLFxuICBmYVBhdXNlOiBmYVBhdXNlLFxuICBmYVBhdXNlQ2lyY2xlOiBmYVBhdXNlQ2lyY2xlLFxuICBmYVBhdzogZmFQYXcsXG4gIGZhUGVhY2U6IGZhUGVhY2UsXG4gIGZhUGVuOiBmYVBlbixcbiAgZmFQZW5BbHQ6IGZhUGVuQWx0LFxuICBmYVBlbkZhbmN5OiBmYVBlbkZhbmN5LFxuICBmYVBlbk5pYjogZmFQZW5OaWIsXG4gIGZhUGVuU3F1YXJlOiBmYVBlblNxdWFyZSxcbiAgZmFQZW5jaWxBbHQ6IGZhUGVuY2lsQWx0LFxuICBmYVBlbmNpbFJ1bGVyOiBmYVBlbmNpbFJ1bGVyLFxuICBmYVBlb3BsZUFycm93czogZmFQZW9wbGVBcnJvd3MsXG4gIGZhUGVvcGxlQ2Fycnk6IGZhUGVvcGxlQ2FycnksXG4gIGZhUGVwcGVySG90OiBmYVBlcHBlckhvdCxcbiAgZmFQZXJjZW50OiBmYVBlcmNlbnQsXG4gIGZhUGVyY2VudGFnZTogZmFQZXJjZW50YWdlLFxuICBmYVBlcnNvbkJvb3RoOiBmYVBlcnNvbkJvb3RoLFxuICBmYVBob25lOiBmYVBob25lLFxuICBmYVBob25lQWx0OiBmYVBob25lQWx0LFxuICBmYVBob25lU2xhc2g6IGZhUGhvbmVTbGFzaCxcbiAgZmFQaG9uZVNxdWFyZTogZmFQaG9uZVNxdWFyZSxcbiAgZmFQaG9uZVNxdWFyZUFsdDogZmFQaG9uZVNxdWFyZUFsdCxcbiAgZmFQaG9uZVZvbHVtZTogZmFQaG9uZVZvbHVtZSxcbiAgZmFQaG90b1ZpZGVvOiBmYVBob3RvVmlkZW8sXG4gIGZhUGlnZ3lCYW5rOiBmYVBpZ2d5QmFuayxcbiAgZmFQaWxsczogZmFQaWxscyxcbiAgZmFQaXp6YVNsaWNlOiBmYVBpenphU2xpY2UsXG4gIGZhUGxhY2VPZldvcnNoaXA6IGZhUGxhY2VPZldvcnNoaXAsXG4gIGZhUGxhbmU6IGZhUGxhbmUsXG4gIGZhUGxhbmVBcnJpdmFsOiBmYVBsYW5lQXJyaXZhbCxcbiAgZmFQbGFuZURlcGFydHVyZTogZmFQbGFuZURlcGFydHVyZSxcbiAgZmFQbGFuZVNsYXNoOiBmYVBsYW5lU2xhc2gsXG4gIGZhUGxheTogZmFQbGF5LFxuICBmYVBsYXlDaXJjbGU6IGZhUGxheUNpcmNsZSxcbiAgZmFQbHVnOiBmYVBsdWcsXG4gIGZhUGx1czogZmFQbHVzLFxuICBmYVBsdXNDaXJjbGU6IGZhUGx1c0NpcmNsZSxcbiAgZmFQbHVzU3F1YXJlOiBmYVBsdXNTcXVhcmUsXG4gIGZhUG9kY2FzdDogZmFQb2RjYXN0LFxuICBmYVBvbGw6IGZhUG9sbCxcbiAgZmFQb2xsSDogZmFQb2xsSCxcbiAgZmFQb286IGZhUG9vLFxuICBmYVBvb1N0b3JtOiBmYVBvb1N0b3JtLFxuICBmYVBvb3A6IGZhUG9vcCxcbiAgZmFQb3J0cmFpdDogZmFQb3J0cmFpdCxcbiAgZmFQb3VuZFNpZ246IGZhUG91bmRTaWduLFxuICBmYVBvd2VyT2ZmOiBmYVBvd2VyT2ZmLFxuICBmYVByYXk6IGZhUHJheSxcbiAgZmFQcmF5aW5nSGFuZHM6IGZhUHJheWluZ0hhbmRzLFxuICBmYVByZXNjcmlwdGlvbjogZmFQcmVzY3JpcHRpb24sXG4gIGZhUHJlc2NyaXB0aW9uQm90dGxlOiBmYVByZXNjcmlwdGlvbkJvdHRsZSxcbiAgZmFQcmVzY3JpcHRpb25Cb3R0bGVBbHQ6IGZhUHJlc2NyaXB0aW9uQm90dGxlQWx0LFxuICBmYVByaW50OiBmYVByaW50LFxuICBmYVByb2NlZHVyZXM6IGZhUHJvY2VkdXJlcyxcbiAgZmFQcm9qZWN0RGlhZ3JhbTogZmFQcm9qZWN0RGlhZ3JhbSxcbiAgZmFQdW1wTWVkaWNhbDogZmFQdW1wTWVkaWNhbCxcbiAgZmFQdW1wU29hcDogZmFQdW1wU29hcCxcbiAgZmFQdXp6bGVQaWVjZTogZmFQdXp6bGVQaWVjZSxcbiAgZmFRcmNvZGU6IGZhUXJjb2RlLFxuICBmYVF1ZXN0aW9uOiBmYVF1ZXN0aW9uLFxuICBmYVF1ZXN0aW9uQ2lyY2xlOiBmYVF1ZXN0aW9uQ2lyY2xlLFxuICBmYVF1aWRkaXRjaDogZmFRdWlkZGl0Y2gsXG4gIGZhUXVvdGVMZWZ0OiBmYVF1b3RlTGVmdCxcbiAgZmFRdW90ZVJpZ2h0OiBmYVF1b3RlUmlnaHQsXG4gIGZhUXVyYW46IGZhUXVyYW4sXG4gIGZhUmFkaWF0aW9uOiBmYVJhZGlhdGlvbixcbiAgZmFSYWRpYXRpb25BbHQ6IGZhUmFkaWF0aW9uQWx0LFxuICBmYVJhaW5ib3c6IGZhUmFpbmJvdyxcbiAgZmFSYW5kb206IGZhUmFuZG9tLFxuICBmYVJlY2VpcHQ6IGZhUmVjZWlwdCxcbiAgZmFSZWNvcmRWaW55bDogZmFSZWNvcmRWaW55bCxcbiAgZmFSZWN5Y2xlOiBmYVJlY3ljbGUsXG4gIGZhUmVkbzogZmFSZWRvLFxuICBmYVJlZG9BbHQ6IGZhUmVkb0FsdCxcbiAgZmFSZWdpc3RlcmVkOiBmYVJlZ2lzdGVyZWQsXG4gIGZhUmVtb3ZlRm9ybWF0OiBmYVJlbW92ZUZvcm1hdCxcbiAgZmFSZXBseTogZmFSZXBseSxcbiAgZmFSZXBseUFsbDogZmFSZXBseUFsbCxcbiAgZmFSZXB1YmxpY2FuOiBmYVJlcHVibGljYW4sXG4gIGZhUmVzdHJvb206IGZhUmVzdHJvb20sXG4gIGZhUmV0d2VldDogZmFSZXR3ZWV0LFxuICBmYVJpYmJvbjogZmFSaWJib24sXG4gIGZhUmluZzogZmFSaW5nLFxuICBmYVJvYWQ6IGZhUm9hZCxcbiAgZmFSb2JvdDogZmFSb2JvdCxcbiAgZmFSb2NrZXQ6IGZhUm9ja2V0LFxuICBmYVJvdXRlOiBmYVJvdXRlLFxuICBmYVJzczogZmFSc3MsXG4gIGZhUnNzU3F1YXJlOiBmYVJzc1NxdWFyZSxcbiAgZmFSdWJsZVNpZ246IGZhUnVibGVTaWduLFxuICBmYVJ1bGVyOiBmYVJ1bGVyLFxuICBmYVJ1bGVyQ29tYmluZWQ6IGZhUnVsZXJDb21iaW5lZCxcbiAgZmFSdWxlckhvcml6b250YWw6IGZhUnVsZXJIb3Jpem9udGFsLFxuICBmYVJ1bGVyVmVydGljYWw6IGZhUnVsZXJWZXJ0aWNhbCxcbiAgZmFSdW5uaW5nOiBmYVJ1bm5pbmcsXG4gIGZhUnVwZWVTaWduOiBmYVJ1cGVlU2lnbixcbiAgZmFTYWRDcnk6IGZhU2FkQ3J5LFxuICBmYVNhZFRlYXI6IGZhU2FkVGVhcixcbiAgZmFTYXRlbGxpdGU6IGZhU2F0ZWxsaXRlLFxuICBmYVNhdGVsbGl0ZURpc2g6IGZhU2F0ZWxsaXRlRGlzaCxcbiAgZmFTYXZlOiBmYVNhdmUsXG4gIGZhU2Nob29sOiBmYVNjaG9vbCxcbiAgZmFTY3Jld2RyaXZlcjogZmFTY3Jld2RyaXZlcixcbiAgZmFTY3JvbGw6IGZhU2Nyb2xsLFxuICBmYVNkQ2FyZDogZmFTZENhcmQsXG4gIGZhU2VhcmNoOiBmYVNlYXJjaCxcbiAgZmFTZWFyY2hEb2xsYXI6IGZhU2VhcmNoRG9sbGFyLFxuICBmYVNlYXJjaExvY2F0aW9uOiBmYVNlYXJjaExvY2F0aW9uLFxuICBmYVNlYXJjaE1pbnVzOiBmYVNlYXJjaE1pbnVzLFxuICBmYVNlYXJjaFBsdXM6IGZhU2VhcmNoUGx1cyxcbiAgZmFTZWVkbGluZzogZmFTZWVkbGluZyxcbiAgZmFTZXJ2ZXI6IGZhU2VydmVyLFxuICBmYVNoYXBlczogZmFTaGFwZXMsXG4gIGZhU2hhcmU6IGZhU2hhcmUsXG4gIGZhU2hhcmVBbHQ6IGZhU2hhcmVBbHQsXG4gIGZhU2hhcmVBbHRTcXVhcmU6IGZhU2hhcmVBbHRTcXVhcmUsXG4gIGZhU2hhcmVTcXVhcmU6IGZhU2hhcmVTcXVhcmUsXG4gIGZhU2hla2VsU2lnbjogZmFTaGVrZWxTaWduLFxuICBmYVNoaWVsZEFsdDogZmFTaGllbGRBbHQsXG4gIGZhU2hpZWxkVmlydXM6IGZhU2hpZWxkVmlydXMsXG4gIGZhU2hpcDogZmFTaGlwLFxuICBmYVNoaXBwaW5nRmFzdDogZmFTaGlwcGluZ0Zhc3QsXG4gIGZhU2hvZVByaW50czogZmFTaG9lUHJpbnRzLFxuICBmYVNob3BwaW5nQmFnOiBmYVNob3BwaW5nQmFnLFxuICBmYVNob3BwaW5nQmFza2V0OiBmYVNob3BwaW5nQmFza2V0LFxuICBmYVNob3BwaW5nQ2FydDogZmFTaG9wcGluZ0NhcnQsXG4gIGZhU2hvd2VyOiBmYVNob3dlcixcbiAgZmFTaHV0dGxlVmFuOiBmYVNodXR0bGVWYW4sXG4gIGZhU2lnbjogZmFTaWduLFxuICBmYVNpZ25JbkFsdDogZmFTaWduSW5BbHQsXG4gIGZhU2lnbkxhbmd1YWdlOiBmYVNpZ25MYW5ndWFnZSxcbiAgZmFTaWduT3V0QWx0OiBmYVNpZ25PdXRBbHQsXG4gIGZhU2lnbmFsOiBmYVNpZ25hbCxcbiAgZmFTaWduYXR1cmU6IGZhU2lnbmF0dXJlLFxuICBmYVNpbUNhcmQ6IGZhU2ltQ2FyZCxcbiAgZmFTaW5rOiBmYVNpbmssXG4gIGZhU2l0ZW1hcDogZmFTaXRlbWFwLFxuICBmYVNrYXRpbmc6IGZhU2thdGluZyxcbiAgZmFTa2lpbmc6IGZhU2tpaW5nLFxuICBmYVNraWluZ05vcmRpYzogZmFTa2lpbmdOb3JkaWMsXG4gIGZhU2t1bGw6IGZhU2t1bGwsXG4gIGZhU2t1bGxDcm9zc2JvbmVzOiBmYVNrdWxsQ3Jvc3Nib25lcyxcbiAgZmFTbGFzaDogZmFTbGFzaCxcbiAgZmFTbGVpZ2g6IGZhU2xlaWdoLFxuICBmYVNsaWRlcnNIOiBmYVNsaWRlcnNILFxuICBmYVNtaWxlOiBmYVNtaWxlLFxuICBmYVNtaWxlQmVhbTogZmFTbWlsZUJlYW0sXG4gIGZhU21pbGVXaW5rOiBmYVNtaWxlV2luayxcbiAgZmFTbW9nOiBmYVNtb2csXG4gIGZhU21va2luZzogZmFTbW9raW5nLFxuICBmYVNtb2tpbmdCYW46IGZhU21va2luZ0JhbixcbiAgZmFTbXM6IGZhU21zLFxuICBmYVNub3dib2FyZGluZzogZmFTbm93Ym9hcmRpbmcsXG4gIGZhU25vd2ZsYWtlOiBmYVNub3dmbGFrZSxcbiAgZmFTbm93bWFuOiBmYVNub3dtYW4sXG4gIGZhU25vd3Bsb3c6IGZhU25vd3Bsb3csXG4gIGZhU29hcDogZmFTb2FwLFxuICBmYVNvY2tzOiBmYVNvY2tzLFxuICBmYVNvbGFyUGFuZWw6IGZhU29sYXJQYW5lbCxcbiAgZmFTb3J0OiBmYVNvcnQsXG4gIGZhU29ydEFscGhhRG93bjogZmFTb3J0QWxwaGFEb3duLFxuICBmYVNvcnRBbHBoYURvd25BbHQ6IGZhU29ydEFscGhhRG93bkFsdCxcbiAgZmFTb3J0QWxwaGFVcDogZmFTb3J0QWxwaGFVcCxcbiAgZmFTb3J0QWxwaGFVcEFsdDogZmFTb3J0QWxwaGFVcEFsdCxcbiAgZmFTb3J0QW1vdW50RG93bjogZmFTb3J0QW1vdW50RG93bixcbiAgZmFTb3J0QW1vdW50RG93bkFsdDogZmFTb3J0QW1vdW50RG93bkFsdCxcbiAgZmFTb3J0QW1vdW50VXA6IGZhU29ydEFtb3VudFVwLFxuICBmYVNvcnRBbW91bnRVcEFsdDogZmFTb3J0QW1vdW50VXBBbHQsXG4gIGZhU29ydERvd246IGZhU29ydERvd24sXG4gIGZhU29ydE51bWVyaWNEb3duOiBmYVNvcnROdW1lcmljRG93bixcbiAgZmFTb3J0TnVtZXJpY0Rvd25BbHQ6IGZhU29ydE51bWVyaWNEb3duQWx0LFxuICBmYVNvcnROdW1lcmljVXA6IGZhU29ydE51bWVyaWNVcCxcbiAgZmFTb3J0TnVtZXJpY1VwQWx0OiBmYVNvcnROdW1lcmljVXBBbHQsXG4gIGZhU29ydFVwOiBmYVNvcnRVcCxcbiAgZmFTcGE6IGZhU3BhLFxuICBmYVNwYWNlU2h1dHRsZTogZmFTcGFjZVNodXR0bGUsXG4gIGZhU3BlbGxDaGVjazogZmFTcGVsbENoZWNrLFxuICBmYVNwaWRlcjogZmFTcGlkZXIsXG4gIGZhU3Bpbm5lcjogZmFTcGlubmVyLFxuICBmYVNwbG90Y2g6IGZhU3Bsb3RjaCxcbiAgZmFTcHJheUNhbjogZmFTcHJheUNhbixcbiAgZmFTcXVhcmU6IGZhU3F1YXJlLFxuICBmYVNxdWFyZUZ1bGw6IGZhU3F1YXJlRnVsbCxcbiAgZmFTcXVhcmVSb290QWx0OiBmYVNxdWFyZVJvb3RBbHQsXG4gIGZhU3RhbXA6IGZhU3RhbXAsXG4gIGZhU3RhcjogZmFTdGFyLFxuICBmYVN0YXJBbmRDcmVzY2VudDogZmFTdGFyQW5kQ3Jlc2NlbnQsXG4gIGZhU3RhckhhbGY6IGZhU3RhckhhbGYsXG4gIGZhU3RhckhhbGZBbHQ6IGZhU3RhckhhbGZBbHQsXG4gIGZhU3Rhck9mRGF2aWQ6IGZhU3Rhck9mRGF2aWQsXG4gIGZhU3Rhck9mTGlmZTogZmFTdGFyT2ZMaWZlLFxuICBmYVN0ZXBCYWNrd2FyZDogZmFTdGVwQmFja3dhcmQsXG4gIGZhU3RlcEZvcndhcmQ6IGZhU3RlcEZvcndhcmQsXG4gIGZhU3RldGhvc2NvcGU6IGZhU3RldGhvc2NvcGUsXG4gIGZhU3RpY2t5Tm90ZTogZmFTdGlja3lOb3RlLFxuICBmYVN0b3A6IGZhU3RvcCxcbiAgZmFTdG9wQ2lyY2xlOiBmYVN0b3BDaXJjbGUsXG4gIGZhU3RvcHdhdGNoOiBmYVN0b3B3YXRjaCxcbiAgZmFTdG9wd2F0Y2gyMDogZmFTdG9wd2F0Y2gyMCxcbiAgZmFTdG9yZTogZmFTdG9yZSxcbiAgZmFTdG9yZUFsdDogZmFTdG9yZUFsdCxcbiAgZmFTdG9yZUFsdFNsYXNoOiBmYVN0b3JlQWx0U2xhc2gsXG4gIGZhU3RvcmVTbGFzaDogZmFTdG9yZVNsYXNoLFxuICBmYVN0cmVhbTogZmFTdHJlYW0sXG4gIGZhU3RyZWV0VmlldzogZmFTdHJlZXRWaWV3LFxuICBmYVN0cmlrZXRocm91Z2g6IGZhU3RyaWtldGhyb3VnaCxcbiAgZmFTdHJvb3B3YWZlbDogZmFTdHJvb3B3YWZlbCxcbiAgZmFTdWJzY3JpcHQ6IGZhU3Vic2NyaXB0LFxuICBmYVN1YndheTogZmFTdWJ3YXksXG4gIGZhU3VpdGNhc2U6IGZhU3VpdGNhc2UsXG4gIGZhU3VpdGNhc2VSb2xsaW5nOiBmYVN1aXRjYXNlUm9sbGluZyxcbiAgZmFTdW46IGZhU3VuLFxuICBmYVN1cGVyc2NyaXB0OiBmYVN1cGVyc2NyaXB0LFxuICBmYVN1cnByaXNlOiBmYVN1cnByaXNlLFxuICBmYVN3YXRjaGJvb2s6IGZhU3dhdGNoYm9vayxcbiAgZmFTd2ltbWVyOiBmYVN3aW1tZXIsXG4gIGZhU3dpbW1pbmdQb29sOiBmYVN3aW1taW5nUG9vbCxcbiAgZmFTeW5hZ29ndWU6IGZhU3luYWdvZ3VlLFxuICBmYVN5bmM6IGZhU3luYyxcbiAgZmFTeW5jQWx0OiBmYVN5bmNBbHQsXG4gIGZhU3lyaW5nZTogZmFTeXJpbmdlLFxuICBmYVRhYmxlOiBmYVRhYmxlLFxuICBmYVRhYmxlVGVubmlzOiBmYVRhYmxlVGVubmlzLFxuICBmYVRhYmxldDogZmFUYWJsZXQsXG4gIGZhVGFibGV0QWx0OiBmYVRhYmxldEFsdCxcbiAgZmFUYWJsZXRzOiBmYVRhYmxldHMsXG4gIGZhVGFjaG9tZXRlckFsdDogZmFUYWNob21ldGVyQWx0LFxuICBmYVRhZzogZmFUYWcsXG4gIGZhVGFnczogZmFUYWdzLFxuICBmYVRhcGU6IGZhVGFwZSxcbiAgZmFUYXNrczogZmFUYXNrcyxcbiAgZmFUYXhpOiBmYVRheGksXG4gIGZhVGVldGg6IGZhVGVldGgsXG4gIGZhVGVldGhPcGVuOiBmYVRlZXRoT3BlbixcbiAgZmFUZW1wZXJhdHVyZUhpZ2g6IGZhVGVtcGVyYXR1cmVIaWdoLFxuICBmYVRlbXBlcmF0dXJlTG93OiBmYVRlbXBlcmF0dXJlTG93LFxuICBmYVRlbmdlOiBmYVRlbmdlLFxuICBmYVRlcm1pbmFsOiBmYVRlcm1pbmFsLFxuICBmYVRleHRIZWlnaHQ6IGZhVGV4dEhlaWdodCxcbiAgZmFUZXh0V2lkdGg6IGZhVGV4dFdpZHRoLFxuICBmYVRoOiBmYVRoLFxuICBmYVRoTGFyZ2U6IGZhVGhMYXJnZSxcbiAgZmFUaExpc3Q6IGZhVGhMaXN0LFxuICBmYVRoZWF0ZXJNYXNrczogZmFUaGVhdGVyTWFza3MsXG4gIGZhVGhlcm1vbWV0ZXI6IGZhVGhlcm1vbWV0ZXIsXG4gIGZhVGhlcm1vbWV0ZXJFbXB0eTogZmFUaGVybW9tZXRlckVtcHR5LFxuICBmYVRoZXJtb21ldGVyRnVsbDogZmFUaGVybW9tZXRlckZ1bGwsXG4gIGZhVGhlcm1vbWV0ZXJIYWxmOiBmYVRoZXJtb21ldGVySGFsZixcbiAgZmFUaGVybW9tZXRlclF1YXJ0ZXI6IGZhVGhlcm1vbWV0ZXJRdWFydGVyLFxuICBmYVRoZXJtb21ldGVyVGhyZWVRdWFydGVyczogZmFUaGVybW9tZXRlclRocmVlUXVhcnRlcnMsXG4gIGZhVGh1bWJzRG93bjogZmFUaHVtYnNEb3duLFxuICBmYVRodW1ic1VwOiBmYVRodW1ic1VwLFxuICBmYVRodW1idGFjazogZmFUaHVtYnRhY2ssXG4gIGZhVGlja2V0QWx0OiBmYVRpY2tldEFsdCxcbiAgZmFUaW1lczogZmFUaW1lcyxcbiAgZmFUaW1lc0NpcmNsZTogZmFUaW1lc0NpcmNsZSxcbiAgZmFUaW50OiBmYVRpbnQsXG4gIGZhVGludFNsYXNoOiBmYVRpbnRTbGFzaCxcbiAgZmFUaXJlZDogZmFUaXJlZCxcbiAgZmFUb2dnbGVPZmY6IGZhVG9nZ2xlT2ZmLFxuICBmYVRvZ2dsZU9uOiBmYVRvZ2dsZU9uLFxuICBmYVRvaWxldDogZmFUb2lsZXQsXG4gIGZhVG9pbGV0UGFwZXI6IGZhVG9pbGV0UGFwZXIsXG4gIGZhVG9pbGV0UGFwZXJTbGFzaDogZmFUb2lsZXRQYXBlclNsYXNoLFxuICBmYVRvb2xib3g6IGZhVG9vbGJveCxcbiAgZmFUb29sczogZmFUb29scyxcbiAgZmFUb290aDogZmFUb290aCxcbiAgZmFUb3JhaDogZmFUb3JhaCxcbiAgZmFUb3JpaUdhdGU6IGZhVG9yaWlHYXRlLFxuICBmYVRyYWN0b3I6IGZhVHJhY3RvcixcbiAgZmFUcmFkZW1hcms6IGZhVHJhZGVtYXJrLFxuICBmYVRyYWZmaWNMaWdodDogZmFUcmFmZmljTGlnaHQsXG4gIGZhVHJhaWxlcjogZmFUcmFpbGVyLFxuICBmYVRyYWluOiBmYVRyYWluLFxuICBmYVRyYW06IGZhVHJhbSxcbiAgZmFUcmFuc2dlbmRlcjogZmFUcmFuc2dlbmRlcixcbiAgZmFUcmFuc2dlbmRlckFsdDogZmFUcmFuc2dlbmRlckFsdCxcbiAgZmFUcmFzaDogZmFUcmFzaCxcbiAgZmFUcmFzaEFsdDogZmFUcmFzaEFsdCxcbiAgZmFUcmFzaFJlc3RvcmU6IGZhVHJhc2hSZXN0b3JlLFxuICBmYVRyYXNoUmVzdG9yZUFsdDogZmFUcmFzaFJlc3RvcmVBbHQsXG4gIGZhVHJlZTogZmFUcmVlLFxuICBmYVRyb3BoeTogZmFUcm9waHksXG4gIGZhVHJ1Y2s6IGZhVHJ1Y2ssXG4gIGZhVHJ1Y2tMb2FkaW5nOiBmYVRydWNrTG9hZGluZyxcbiAgZmFUcnVja01vbnN0ZXI6IGZhVHJ1Y2tNb25zdGVyLFxuICBmYVRydWNrTW92aW5nOiBmYVRydWNrTW92aW5nLFxuICBmYVRydWNrUGlja3VwOiBmYVRydWNrUGlja3VwLFxuICBmYVRzaGlydDogZmFUc2hpcnQsXG4gIGZhVHR5OiBmYVR0eSxcbiAgZmFUdjogZmFUdixcbiAgZmFVbWJyZWxsYTogZmFVbWJyZWxsYSxcbiAgZmFVbWJyZWxsYUJlYWNoOiBmYVVtYnJlbGxhQmVhY2gsXG4gIGZhVW5kZXJsaW5lOiBmYVVuZGVybGluZSxcbiAgZmFVbmRvOiBmYVVuZG8sXG4gIGZhVW5kb0FsdDogZmFVbmRvQWx0LFxuICBmYVVuaXZlcnNhbEFjY2VzczogZmFVbml2ZXJzYWxBY2Nlc3MsXG4gIGZhVW5pdmVyc2l0eTogZmFVbml2ZXJzaXR5LFxuICBmYVVubGluazogZmFVbmxpbmssXG4gIGZhVW5sb2NrOiBmYVVubG9jayxcbiAgZmFVbmxvY2tBbHQ6IGZhVW5sb2NrQWx0LFxuICBmYVVwbG9hZDogZmFVcGxvYWQsXG4gIGZhVXNlcjogZmFVc2VyLFxuICBmYVVzZXJBbHQ6IGZhVXNlckFsdCxcbiAgZmFVc2VyQWx0U2xhc2g6IGZhVXNlckFsdFNsYXNoLFxuICBmYVVzZXJBc3Ryb25hdXQ6IGZhVXNlckFzdHJvbmF1dCxcbiAgZmFVc2VyQ2hlY2s6IGZhVXNlckNoZWNrLFxuICBmYVVzZXJDaXJjbGU6IGZhVXNlckNpcmNsZSxcbiAgZmFVc2VyQ2xvY2s6IGZhVXNlckNsb2NrLFxuICBmYVVzZXJDb2c6IGZhVXNlckNvZyxcbiAgZmFVc2VyRWRpdDogZmFVc2VyRWRpdCxcbiAgZmFVc2VyRnJpZW5kczogZmFVc2VyRnJpZW5kcyxcbiAgZmFVc2VyR3JhZHVhdGU6IGZhVXNlckdyYWR1YXRlLFxuICBmYVVzZXJJbmp1cmVkOiBmYVVzZXJJbmp1cmVkLFxuICBmYVVzZXJMb2NrOiBmYVVzZXJMb2NrLFxuICBmYVVzZXJNZDogZmFVc2VyTWQsXG4gIGZhVXNlck1pbnVzOiBmYVVzZXJNaW51cyxcbiAgZmFVc2VyTmluamE6IGZhVXNlck5pbmphLFxuICBmYVVzZXJOdXJzZTogZmFVc2VyTnVyc2UsXG4gIGZhVXNlclBsdXM6IGZhVXNlclBsdXMsXG4gIGZhVXNlclNlY3JldDogZmFVc2VyU2VjcmV0LFxuICBmYVVzZXJTaGllbGQ6IGZhVXNlclNoaWVsZCxcbiAgZmFVc2VyU2xhc2g6IGZhVXNlclNsYXNoLFxuICBmYVVzZXJUYWc6IGZhVXNlclRhZyxcbiAgZmFVc2VyVGllOiBmYVVzZXJUaWUsXG4gIGZhVXNlclRpbWVzOiBmYVVzZXJUaW1lcyxcbiAgZmFVc2VyczogZmFVc2VycyxcbiAgZmFVc2Vyc0NvZzogZmFVc2Vyc0NvZyxcbiAgZmFVc2Vyc1NsYXNoOiBmYVVzZXJzU2xhc2gsXG4gIGZhVXRlbnNpbFNwb29uOiBmYVV0ZW5zaWxTcG9vbixcbiAgZmFVdGVuc2lsczogZmFVdGVuc2lscyxcbiAgZmFWZWN0b3JTcXVhcmU6IGZhVmVjdG9yU3F1YXJlLFxuICBmYVZlbnVzOiBmYVZlbnVzLFxuICBmYVZlbnVzRG91YmxlOiBmYVZlbnVzRG91YmxlLFxuICBmYVZlbnVzTWFyczogZmFWZW51c01hcnMsXG4gIGZhVmlhbDogZmFWaWFsLFxuICBmYVZpYWxzOiBmYVZpYWxzLFxuICBmYVZpZGVvOiBmYVZpZGVvLFxuICBmYVZpZGVvU2xhc2g6IGZhVmlkZW9TbGFzaCxcbiAgZmFWaWhhcmE6IGZhVmloYXJhLFxuICBmYVZpcnVzOiBmYVZpcnVzLFxuICBmYVZpcnVzU2xhc2g6IGZhVmlydXNTbGFzaCxcbiAgZmFWaXJ1c2VzOiBmYVZpcnVzZXMsXG4gIGZhVm9pY2VtYWlsOiBmYVZvaWNlbWFpbCxcbiAgZmFWb2xsZXliYWxsQmFsbDogZmFWb2xsZXliYWxsQmFsbCxcbiAgZmFWb2x1bWVEb3duOiBmYVZvbHVtZURvd24sXG4gIGZhVm9sdW1lTXV0ZTogZmFWb2x1bWVNdXRlLFxuICBmYVZvbHVtZU9mZjogZmFWb2x1bWVPZmYsXG4gIGZhVm9sdW1lVXA6IGZhVm9sdW1lVXAsXG4gIGZhVm90ZVllYTogZmFWb3RlWWVhLFxuICBmYVZyQ2FyZGJvYXJkOiBmYVZyQ2FyZGJvYXJkLFxuICBmYVdhbGtpbmc6IGZhV2Fsa2luZyxcbiAgZmFXYWxsZXQ6IGZhV2FsbGV0LFxuICBmYVdhcmVob3VzZTogZmFXYXJlaG91c2UsXG4gIGZhV2F0ZXI6IGZhV2F0ZXIsXG4gIGZhV2F2ZVNxdWFyZTogZmFXYXZlU3F1YXJlLFxuICBmYVdlaWdodDogZmFXZWlnaHQsXG4gIGZhV2VpZ2h0SGFuZ2luZzogZmFXZWlnaHRIYW5naW5nLFxuICBmYVdoZWVsY2hhaXI6IGZhV2hlZWxjaGFpcixcbiAgZmFXaWZpOiBmYVdpZmksXG4gIGZhV2luZDogZmFXaW5kLFxuICBmYVdpbmRvd0Nsb3NlOiBmYVdpbmRvd0Nsb3NlLFxuICBmYVdpbmRvd01heGltaXplOiBmYVdpbmRvd01heGltaXplLFxuICBmYVdpbmRvd01pbmltaXplOiBmYVdpbmRvd01pbmltaXplLFxuICBmYVdpbmRvd1Jlc3RvcmU6IGZhV2luZG93UmVzdG9yZSxcbiAgZmFXaW5lQm90dGxlOiBmYVdpbmVCb3R0bGUsXG4gIGZhV2luZUdsYXNzOiBmYVdpbmVHbGFzcyxcbiAgZmFXaW5lR2xhc3NBbHQ6IGZhV2luZUdsYXNzQWx0LFxuICBmYVdvblNpZ246IGZhV29uU2lnbixcbiAgZmFXcmVuY2g6IGZhV3JlbmNoLFxuICBmYVhSYXk6IGZhWFJheSxcbiAgZmFZZW5TaWduOiBmYVllblNpZ24sXG4gIGZhWWluWWFuZzogZmFZaW5ZYW5nXG59O1xuXG5leHBvcnQgeyBfaWNvbnNDYWNoZSBhcyBmYXMsIHByZWZpeCwgZmFBZCwgZmFBZGRyZXNzQm9vaywgZmFBZGRyZXNzQ2FyZCwgZmFBZGp1c3QsIGZhQWlyRnJlc2hlbmVyLCBmYUFsaWduQ2VudGVyLCBmYUFsaWduSnVzdGlmeSwgZmFBbGlnbkxlZnQsIGZhQWxpZ25SaWdodCwgZmFBbGxlcmdpZXMsIGZhQW1idWxhbmNlLCBmYUFtZXJpY2FuU2lnbkxhbmd1YWdlSW50ZXJwcmV0aW5nLCBmYUFuY2hvciwgZmFBbmdsZURvdWJsZURvd24sIGZhQW5nbGVEb3VibGVMZWZ0LCBmYUFuZ2xlRG91YmxlUmlnaHQsIGZhQW5nbGVEb3VibGVVcCwgZmFBbmdsZURvd24sIGZhQW5nbGVMZWZ0LCBmYUFuZ2xlUmlnaHQsIGZhQW5nbGVVcCwgZmFBbmdyeSwgZmFBbmtoLCBmYUFwcGxlQWx0LCBmYUFyY2hpdmUsIGZhQXJjaHdheSwgZmFBcnJvd0FsdENpcmNsZURvd24sIGZhQXJyb3dBbHRDaXJjbGVMZWZ0LCBmYUFycm93QWx0Q2lyY2xlUmlnaHQsIGZhQXJyb3dBbHRDaXJjbGVVcCwgZmFBcnJvd0NpcmNsZURvd24sIGZhQXJyb3dDaXJjbGVMZWZ0LCBmYUFycm93Q2lyY2xlUmlnaHQsIGZhQXJyb3dDaXJjbGVVcCwgZmFBcnJvd0Rvd24sIGZhQXJyb3dMZWZ0LCBmYUFycm93UmlnaHQsIGZhQXJyb3dVcCwgZmFBcnJvd3NBbHQsIGZhQXJyb3dzQWx0SCwgZmFBcnJvd3NBbHRWLCBmYUFzc2lzdGl2ZUxpc3RlbmluZ1N5c3RlbXMsIGZhQXN0ZXJpc2ssIGZhQXQsIGZhQXRsYXMsIGZhQXRvbSwgZmFBdWRpb0Rlc2NyaXB0aW9uLCBmYUF3YXJkLCBmYUJhYnksIGZhQmFieUNhcnJpYWdlLCBmYUJhY2tzcGFjZSwgZmFCYWNrd2FyZCwgZmFCYWNvbiwgZmFCYWN0ZXJpYSwgZmFCYWN0ZXJpdW0sIGZhQmFoYWksIGZhQmFsYW5jZVNjYWxlLCBmYUJhbGFuY2VTY2FsZUxlZnQsIGZhQmFsYW5jZVNjYWxlUmlnaHQsIGZhQmFuLCBmYUJhbmRBaWQsIGZhQmFyY29kZSwgZmFCYXJzLCBmYUJhc2ViYWxsQmFsbCwgZmFCYXNrZXRiYWxsQmFsbCwgZmFCYXRoLCBmYUJhdHRlcnlFbXB0eSwgZmFCYXR0ZXJ5RnVsbCwgZmFCYXR0ZXJ5SGFsZiwgZmFCYXR0ZXJ5UXVhcnRlciwgZmFCYXR0ZXJ5VGhyZWVRdWFydGVycywgZmFCZWQsIGZhQmVlciwgZmFCZWxsLCBmYUJlbGxTbGFzaCwgZmFCZXppZXJDdXJ2ZSwgZmFCaWJsZSwgZmFCaWN5Y2xlLCBmYUJpa2luZywgZmFCaW5vY3VsYXJzLCBmYUJpb2hhemFyZCwgZmFCaXJ0aGRheUNha2UsIGZhQmxlbmRlciwgZmFCbGVuZGVyUGhvbmUsIGZhQmxpbmQsIGZhQmxvZywgZmFCb2xkLCBmYUJvbHQsIGZhQm9tYiwgZmFCb25lLCBmYUJvbmcsIGZhQm9vaywgZmFCb29rRGVhZCwgZmFCb29rTWVkaWNhbCwgZmFCb29rT3BlbiwgZmFCb29rUmVhZGVyLCBmYUJvb2ttYXJrLCBmYUJvcmRlckFsbCwgZmFCb3JkZXJOb25lLCBmYUJvcmRlclN0eWxlLCBmYUJvd2xpbmdCYWxsLCBmYUJveCwgZmFCb3hPcGVuLCBmYUJveFRpc3N1ZSwgZmFCb3hlcywgZmFCcmFpbGxlLCBmYUJyYWluLCBmYUJyZWFkU2xpY2UsIGZhQnJpZWZjYXNlLCBmYUJyaWVmY2FzZU1lZGljYWwsIGZhQnJvYWRjYXN0VG93ZXIsIGZhQnJvb20sIGZhQnJ1c2gsIGZhQnVnLCBmYUJ1aWxkaW5nLCBmYUJ1bGxob3JuLCBmYUJ1bGxzZXllLCBmYUJ1cm4sIGZhQnVzLCBmYUJ1c0FsdCwgZmFCdXNpbmVzc1RpbWUsIGZhQ2FsY3VsYXRvciwgZmFDYWxlbmRhciwgZmFDYWxlbmRhckFsdCwgZmFDYWxlbmRhckNoZWNrLCBmYUNhbGVuZGFyRGF5LCBmYUNhbGVuZGFyTWludXMsIGZhQ2FsZW5kYXJQbHVzLCBmYUNhbGVuZGFyVGltZXMsIGZhQ2FsZW5kYXJXZWVrLCBmYUNhbWVyYSwgZmFDYW1lcmFSZXRybywgZmFDYW1wZ3JvdW5kLCBmYUNhbmR5Q2FuZSwgZmFDYW5uYWJpcywgZmFDYXBzdWxlcywgZmFDYXIsIGZhQ2FyQWx0LCBmYUNhckJhdHRlcnksIGZhQ2FyQ3Jhc2gsIGZhQ2FyU2lkZSwgZmFDYXJhdmFuLCBmYUNhcmV0RG93biwgZmFDYXJldExlZnQsIGZhQ2FyZXRSaWdodCwgZmFDYXJldFNxdWFyZURvd24sIGZhQ2FyZXRTcXVhcmVMZWZ0LCBmYUNhcmV0U3F1YXJlUmlnaHQsIGZhQ2FyZXRTcXVhcmVVcCwgZmFDYXJldFVwLCBmYUNhcnJvdCwgZmFDYXJ0QXJyb3dEb3duLCBmYUNhcnRQbHVzLCBmYUNhc2hSZWdpc3RlciwgZmFDYXQsIGZhQ2VydGlmaWNhdGUsIGZhQ2hhaXIsIGZhQ2hhbGtib2FyZCwgZmFDaGFsa2JvYXJkVGVhY2hlciwgZmFDaGFyZ2luZ1N0YXRpb24sIGZhQ2hhcnRBcmVhLCBmYUNoYXJ0QmFyLCBmYUNoYXJ0TGluZSwgZmFDaGFydFBpZSwgZmFDaGVjaywgZmFDaGVja0NpcmNsZSwgZmFDaGVja0RvdWJsZSwgZmFDaGVja1NxdWFyZSwgZmFDaGVlc2UsIGZhQ2hlc3MsIGZhQ2hlc3NCaXNob3AsIGZhQ2hlc3NCb2FyZCwgZmFDaGVzc0tpbmcsIGZhQ2hlc3NLbmlnaHQsIGZhQ2hlc3NQYXduLCBmYUNoZXNzUXVlZW4sIGZhQ2hlc3NSb29rLCBmYUNoZXZyb25DaXJjbGVEb3duLCBmYUNoZXZyb25DaXJjbGVMZWZ0LCBmYUNoZXZyb25DaXJjbGVSaWdodCwgZmFDaGV2cm9uQ2lyY2xlVXAsIGZhQ2hldnJvbkRvd24sIGZhQ2hldnJvbkxlZnQsIGZhQ2hldnJvblJpZ2h0LCBmYUNoZXZyb25VcCwgZmFDaGlsZCwgZmFDaHVyY2gsIGZhQ2lyY2xlLCBmYUNpcmNsZU5vdGNoLCBmYUNpdHksIGZhQ2xpbmljTWVkaWNhbCwgZmFDbGlwYm9hcmQsIGZhQ2xpcGJvYXJkQ2hlY2ssIGZhQ2xpcGJvYXJkTGlzdCwgZmFDbG9jaywgZmFDbG9uZSwgZmFDbG9zZWRDYXB0aW9uaW5nLCBmYUNsb3VkLCBmYUNsb3VkRG93bmxvYWRBbHQsIGZhQ2xvdWRNZWF0YmFsbCwgZmFDbG91ZE1vb24sIGZhQ2xvdWRNb29uUmFpbiwgZmFDbG91ZFJhaW4sIGZhQ2xvdWRTaG93ZXJzSGVhdnksIGZhQ2xvdWRTdW4sIGZhQ2xvdWRTdW5SYWluLCBmYUNsb3VkVXBsb2FkQWx0LCBmYUNvY2t0YWlsLCBmYUNvZGUsIGZhQ29kZUJyYW5jaCwgZmFDb2ZmZWUsIGZhQ29nLCBmYUNvZ3MsIGZhQ29pbnMsIGZhQ29sdW1ucywgZmFDb21tZW50LCBmYUNvbW1lbnRBbHQsIGZhQ29tbWVudERvbGxhciwgZmFDb21tZW50RG90cywgZmFDb21tZW50TWVkaWNhbCwgZmFDb21tZW50U2xhc2gsIGZhQ29tbWVudHMsIGZhQ29tbWVudHNEb2xsYXIsIGZhQ29tcGFjdERpc2MsIGZhQ29tcGFzcywgZmFDb21wcmVzcywgZmFDb21wcmVzc0FsdCwgZmFDb21wcmVzc0Fycm93c0FsdCwgZmFDb25jaWVyZ2VCZWxsLCBmYUNvb2tpZSwgZmFDb29raWVCaXRlLCBmYUNvcHksIGZhQ29weXJpZ2h0LCBmYUNvdWNoLCBmYUNyZWRpdENhcmQsIGZhQ3JvcCwgZmFDcm9wQWx0LCBmYUNyb3NzLCBmYUNyb3NzaGFpcnMsIGZhQ3JvdywgZmFDcm93biwgZmFDcnV0Y2gsIGZhQ3ViZSwgZmFDdWJlcywgZmFDdXQsIGZhRGF0YWJhc2UsIGZhRGVhZiwgZmFEZW1vY3JhdCwgZmFEZXNrdG9wLCBmYURoYXJtYWNoYWtyYSwgZmFEaWFnbm9zZXMsIGZhRGljZSwgZmFEaWNlRDIwLCBmYURpY2VENiwgZmFEaWNlRml2ZSwgZmFEaWNlRm91ciwgZmFEaWNlT25lLCBmYURpY2VTaXgsIGZhRGljZVRocmVlLCBmYURpY2VUd28sIGZhRGlnaXRhbFRhY2hvZ3JhcGgsIGZhRGlyZWN0aW9ucywgZmFEaXNlYXNlLCBmYURpdmlkZSwgZmFEaXp6eSwgZmFEbmEsIGZhRG9nLCBmYURvbGxhclNpZ24sIGZhRG9sbHksIGZhRG9sbHlGbGF0YmVkLCBmYURvbmF0ZSwgZmFEb29yQ2xvc2VkLCBmYURvb3JPcGVuLCBmYURvdENpcmNsZSwgZmFEb3ZlLCBmYURvd25sb2FkLCBmYURyYWZ0aW5nQ29tcGFzcywgZmFEcmFnb24sIGZhRHJhd1BvbHlnb24sIGZhRHJ1bSwgZmFEcnVtU3RlZWxwYW4sIGZhRHJ1bXN0aWNrQml0ZSwgZmFEdW1iYmVsbCwgZmFEdW1wc3RlciwgZmFEdW1wc3RlckZpcmUsIGZhRHVuZ2VvbiwgZmFFZGl0LCBmYUVnZywgZmFFamVjdCwgZmFFbGxpcHNpc0gsIGZhRWxsaXBzaXNWLCBmYUVudmVsb3BlLCBmYUVudmVsb3BlT3BlbiwgZmFFbnZlbG9wZU9wZW5UZXh0LCBmYUVudmVsb3BlU3F1YXJlLCBmYUVxdWFscywgZmFFcmFzZXIsIGZhRXRoZXJuZXQsIGZhRXVyb1NpZ24sIGZhRXhjaGFuZ2VBbHQsIGZhRXhjbGFtYXRpb24sIGZhRXhjbGFtYXRpb25DaXJjbGUsIGZhRXhjbGFtYXRpb25UcmlhbmdsZSwgZmFFeHBhbmQsIGZhRXhwYW5kQWx0LCBmYUV4cGFuZEFycm93c0FsdCwgZmFFeHRlcm5hbExpbmtBbHQsIGZhRXh0ZXJuYWxMaW5rU3F1YXJlQWx0LCBmYUV5ZSwgZmFFeWVEcm9wcGVyLCBmYUV5ZVNsYXNoLCBmYUZhbiwgZmFGYXN0QmFja3dhcmQsIGZhRmFzdEZvcndhcmQsIGZhRmF1Y2V0LCBmYUZheCwgZmFGZWF0aGVyLCBmYUZlYXRoZXJBbHQsIGZhRmVtYWxlLCBmYUZpZ2h0ZXJKZXQsIGZhRmlsZSwgZmFGaWxlQWx0LCBmYUZpbGVBcmNoaXZlLCBmYUZpbGVBdWRpbywgZmFGaWxlQ29kZSwgZmFGaWxlQ29udHJhY3QsIGZhRmlsZUNzdiwgZmFGaWxlRG93bmxvYWQsIGZhRmlsZUV4Y2VsLCBmYUZpbGVFeHBvcnQsIGZhRmlsZUltYWdlLCBmYUZpbGVJbXBvcnQsIGZhRmlsZUludm9pY2UsIGZhRmlsZUludm9pY2VEb2xsYXIsIGZhRmlsZU1lZGljYWwsIGZhRmlsZU1lZGljYWxBbHQsIGZhRmlsZVBkZiwgZmFGaWxlUG93ZXJwb2ludCwgZmFGaWxlUHJlc2NyaXB0aW9uLCBmYUZpbGVTaWduYXR1cmUsIGZhRmlsZVVwbG9hZCwgZmFGaWxlVmlkZW8sIGZhRmlsZVdvcmQsIGZhRmlsbCwgZmFGaWxsRHJpcCwgZmFGaWxtLCBmYUZpbHRlciwgZmFGaW5nZXJwcmludCwgZmFGaXJlLCBmYUZpcmVBbHQsIGZhRmlyZUV4dGluZ3Vpc2hlciwgZmFGaXJzdEFpZCwgZmFGaXNoLCBmYUZpc3RSYWlzZWQsIGZhRmxhZywgZmFGbGFnQ2hlY2tlcmVkLCBmYUZsYWdVc2EsIGZhRmxhc2ssIGZhRmx1c2hlZCwgZmFGb2xkZXIsIGZhRm9sZGVyTWludXMsIGZhRm9sZGVyT3BlbiwgZmFGb2xkZXJQbHVzLCBmYUZvbnQsIGZhRm9udEF3ZXNvbWVMb2dvRnVsbCwgZmFGb290YmFsbEJhbGwsIGZhRm9yd2FyZCwgZmFGcm9nLCBmYUZyb3duLCBmYUZyb3duT3BlbiwgZmFGdW5uZWxEb2xsYXIsIGZhRnV0Ym9sLCBmYUdhbWVwYWQsIGZhR2FzUHVtcCwgZmFHYXZlbCwgZmFHZW0sIGZhR2VuZGVybGVzcywgZmFHaG9zdCwgZmFHaWZ0LCBmYUdpZnRzLCBmYUdsYXNzQ2hlZXJzLCBmYUdsYXNzTWFydGluaSwgZmFHbGFzc01hcnRpbmlBbHQsIGZhR2xhc3NXaGlza2V5LCBmYUdsYXNzZXMsIGZhR2xvYmUsIGZhR2xvYmVBZnJpY2EsIGZhR2xvYmVBbWVyaWNhcywgZmFHbG9iZUFzaWEsIGZhR2xvYmVFdXJvcGUsIGZhR29sZkJhbGwsIGZhR29wdXJhbSwgZmFHcmFkdWF0aW9uQ2FwLCBmYUdyZWF0ZXJUaGFuLCBmYUdyZWF0ZXJUaGFuRXF1YWwsIGZhR3JpbWFjZSwgZmFHcmluLCBmYUdyaW5BbHQsIGZhR3JpbkJlYW0sIGZhR3JpbkJlYW1Td2VhdCwgZmFHcmluSGVhcnRzLCBmYUdyaW5TcXVpbnQsIGZhR3JpblNxdWludFRlYXJzLCBmYUdyaW5TdGFycywgZmFHcmluVGVhcnMsIGZhR3JpblRvbmd1ZSwgZmFHcmluVG9uZ3VlU3F1aW50LCBmYUdyaW5Ub25ndWVXaW5rLCBmYUdyaW5XaW5rLCBmYUdyaXBIb3Jpem9udGFsLCBmYUdyaXBMaW5lcywgZmFHcmlwTGluZXNWZXJ0aWNhbCwgZmFHcmlwVmVydGljYWwsIGZhR3VpdGFyLCBmYUhTcXVhcmUsIGZhSGFtYnVyZ2VyLCBmYUhhbW1lciwgZmFIYW1zYSwgZmFIYW5kSG9sZGluZywgZmFIYW5kSG9sZGluZ0hlYXJ0LCBmYUhhbmRIb2xkaW5nTWVkaWNhbCwgZmFIYW5kSG9sZGluZ1VzZCwgZmFIYW5kSG9sZGluZ1dhdGVyLCBmYUhhbmRMaXphcmQsIGZhSGFuZE1pZGRsZUZpbmdlciwgZmFIYW5kUGFwZXIsIGZhSGFuZFBlYWNlLCBmYUhhbmRQb2ludERvd24sIGZhSGFuZFBvaW50TGVmdCwgZmFIYW5kUG9pbnRSaWdodCwgZmFIYW5kUG9pbnRVcCwgZmFIYW5kUG9pbnRlciwgZmFIYW5kUm9jaywgZmFIYW5kU2Npc3NvcnMsIGZhSGFuZFNwYXJrbGVzLCBmYUhhbmRTcG9jaywgZmFIYW5kcywgZmFIYW5kc0hlbHBpbmcsIGZhSGFuZHNXYXNoLCBmYUhhbmRzaGFrZSwgZmFIYW5kc2hha2VBbHRTbGFzaCwgZmFIYW5kc2hha2VTbGFzaCwgZmFIYW51a2lhaCwgZmFIYXJkSGF0LCBmYUhhc2h0YWcsIGZhSGF0Q293Ym95LCBmYUhhdENvd2JveVNpZGUsIGZhSGF0V2l6YXJkLCBmYUhkZCwgZmFIZWFkU2lkZUNvdWdoLCBmYUhlYWRTaWRlQ291Z2hTbGFzaCwgZmFIZWFkU2lkZU1hc2ssIGZhSGVhZFNpZGVWaXJ1cywgZmFIZWFkaW5nLCBmYUhlYWRwaG9uZXMsIGZhSGVhZHBob25lc0FsdCwgZmFIZWFkc2V0LCBmYUhlYXJ0LCBmYUhlYXJ0QnJva2VuLCBmYUhlYXJ0YmVhdCwgZmFIZWxpY29wdGVyLCBmYUhpZ2hsaWdodGVyLCBmYUhpa2luZywgZmFIaXBwbywgZmFIaXN0b3J5LCBmYUhvY2tleVB1Y2ssIGZhSG9sbHlCZXJyeSwgZmFIb21lLCBmYUhvcnNlLCBmYUhvcnNlSGVhZCwgZmFIb3NwaXRhbCwgZmFIb3NwaXRhbEFsdCwgZmFIb3NwaXRhbFN5bWJvbCwgZmFIb3NwaXRhbFVzZXIsIGZhSG90VHViLCBmYUhvdGRvZywgZmFIb3RlbCwgZmFIb3VyZ2xhc3MsIGZhSG91cmdsYXNzRW5kLCBmYUhvdXJnbGFzc0hhbGYsIGZhSG91cmdsYXNzU3RhcnQsIGZhSG91c2VEYW1hZ2UsIGZhSG91c2VVc2VyLCBmYUhyeXZuaWEsIGZhSUN1cnNvciwgZmFJY2VDcmVhbSwgZmFJY2ljbGVzLCBmYUljb25zLCBmYUlkQmFkZ2UsIGZhSWRDYXJkLCBmYUlkQ2FyZEFsdCwgZmFJZ2xvbywgZmFJbWFnZSwgZmFJbWFnZXMsIGZhSW5ib3gsIGZhSW5kZW50LCBmYUluZHVzdHJ5LCBmYUluZmluaXR5LCBmYUluZm8sIGZhSW5mb0NpcmNsZSwgZmFJdGFsaWMsIGZhSmVkaSwgZmFKb2ludCwgZmFKb3VybmFsV2hpbGxzLCBmYUthYWJhLCBmYUtleSwgZmFLZXlib2FyZCwgZmFLaGFuZGEsIGZhS2lzcywgZmFLaXNzQmVhbSwgZmFLaXNzV2lua0hlYXJ0LCBmYUtpd2lCaXJkLCBmYUxhbmRtYXJrLCBmYUxhbmd1YWdlLCBmYUxhcHRvcCwgZmFMYXB0b3BDb2RlLCBmYUxhcHRvcEhvdXNlLCBmYUxhcHRvcE1lZGljYWwsIGZhTGF1Z2gsIGZhTGF1Z2hCZWFtLCBmYUxhdWdoU3F1aW50LCBmYUxhdWdoV2luaywgZmFMYXllckdyb3VwLCBmYUxlYWYsIGZhTGVtb24sIGZhTGVzc1RoYW4sIGZhTGVzc1RoYW5FcXVhbCwgZmFMZXZlbERvd25BbHQsIGZhTGV2ZWxVcEFsdCwgZmFMaWZlUmluZywgZmFMaWdodGJ1bGIsIGZhTGluaywgZmFMaXJhU2lnbiwgZmFMaXN0LCBmYUxpc3RBbHQsIGZhTGlzdE9sLCBmYUxpc3RVbCwgZmFMb2NhdGlvbkFycm93LCBmYUxvY2ssIGZhTG9ja09wZW4sIGZhTG9uZ0Fycm93QWx0RG93biwgZmFMb25nQXJyb3dBbHRMZWZ0LCBmYUxvbmdBcnJvd0FsdFJpZ2h0LCBmYUxvbmdBcnJvd0FsdFVwLCBmYUxvd1Zpc2lvbiwgZmFMdWdnYWdlQ2FydCwgZmFMdW5ncywgZmFMdW5nc1ZpcnVzLCBmYU1hZ2ljLCBmYU1hZ25ldCwgZmFNYWlsQnVsaywgZmFNYWxlLCBmYU1hcCwgZmFNYXBNYXJrZWQsIGZhTWFwTWFya2VkQWx0LCBmYU1hcE1hcmtlciwgZmFNYXBNYXJrZXJBbHQsIGZhTWFwUGluLCBmYU1hcFNpZ25zLCBmYU1hcmtlciwgZmFNYXJzLCBmYU1hcnNEb3VibGUsIGZhTWFyc1N0cm9rZSwgZmFNYXJzU3Ryb2tlSCwgZmFNYXJzU3Ryb2tlViwgZmFNYXNrLCBmYU1lZGFsLCBmYU1lZGtpdCwgZmFNZWgsIGZhTWVoQmxhbmssIGZhTWVoUm9sbGluZ0V5ZXMsIGZhTWVtb3J5LCBmYU1lbm9yYWgsIGZhTWVyY3VyeSwgZmFNZXRlb3IsIGZhTWljcm9jaGlwLCBmYU1pY3JvcGhvbmUsIGZhTWljcm9waG9uZUFsdCwgZmFNaWNyb3Bob25lQWx0U2xhc2gsIGZhTWljcm9waG9uZVNsYXNoLCBmYU1pY3Jvc2NvcGUsIGZhTWludXMsIGZhTWludXNDaXJjbGUsIGZhTWludXNTcXVhcmUsIGZhTWl0dGVuLCBmYU1vYmlsZSwgZmFNb2JpbGVBbHQsIGZhTW9uZXlCaWxsLCBmYU1vbmV5QmlsbEFsdCwgZmFNb25leUJpbGxXYXZlLCBmYU1vbmV5QmlsbFdhdmVBbHQsIGZhTW9uZXlDaGVjaywgZmFNb25leUNoZWNrQWx0LCBmYU1vbnVtZW50LCBmYU1vb24sIGZhTW9ydGFyUGVzdGxlLCBmYU1vc3F1ZSwgZmFNb3RvcmN5Y2xlLCBmYU1vdW50YWluLCBmYU1vdXNlLCBmYU1vdXNlUG9pbnRlciwgZmFNdWdIb3QsIGZhTXVzaWMsIGZhTmV0d29ya1dpcmVkLCBmYU5ldXRlciwgZmFOZXdzcGFwZXIsIGZhTm90RXF1YWwsIGZhTm90ZXNNZWRpY2FsLCBmYU9iamVjdEdyb3VwLCBmYU9iamVjdFVuZ3JvdXAsIGZhT2lsQ2FuLCBmYU9tLCBmYU90dGVyLCBmYU91dGRlbnQsIGZhUGFnZXIsIGZhUGFpbnRCcnVzaCwgZmFQYWludFJvbGxlciwgZmFQYWxldHRlLCBmYVBhbGxldCwgZmFQYXBlclBsYW5lLCBmYVBhcGVyY2xpcCwgZmFQYXJhY2h1dGVCb3gsIGZhUGFyYWdyYXBoLCBmYVBhcmtpbmcsIGZhUGFzc3BvcnQsIGZhUGFzdGFmYXJpYW5pc20sIGZhUGFzdGUsIGZhUGF1c2UsIGZhUGF1c2VDaXJjbGUsIGZhUGF3LCBmYVBlYWNlLCBmYVBlbiwgZmFQZW5BbHQsIGZhUGVuRmFuY3ksIGZhUGVuTmliLCBmYVBlblNxdWFyZSwgZmFQZW5jaWxBbHQsIGZhUGVuY2lsUnVsZXIsIGZhUGVvcGxlQXJyb3dzLCBmYVBlb3BsZUNhcnJ5LCBmYVBlcHBlckhvdCwgZmFQZXJjZW50LCBmYVBlcmNlbnRhZ2UsIGZhUGVyc29uQm9vdGgsIGZhUGhvbmUsIGZhUGhvbmVBbHQsIGZhUGhvbmVTbGFzaCwgZmFQaG9uZVNxdWFyZSwgZmFQaG9uZVNxdWFyZUFsdCwgZmFQaG9uZVZvbHVtZSwgZmFQaG90b1ZpZGVvLCBmYVBpZ2d5QmFuaywgZmFQaWxscywgZmFQaXp6YVNsaWNlLCBmYVBsYWNlT2ZXb3JzaGlwLCBmYVBsYW5lLCBmYVBsYW5lQXJyaXZhbCwgZmFQbGFuZURlcGFydHVyZSwgZmFQbGFuZVNsYXNoLCBmYVBsYXksIGZhUGxheUNpcmNsZSwgZmFQbHVnLCBmYVBsdXMsIGZhUGx1c0NpcmNsZSwgZmFQbHVzU3F1YXJlLCBmYVBvZGNhc3QsIGZhUG9sbCwgZmFQb2xsSCwgZmFQb28sIGZhUG9vU3Rvcm0sIGZhUG9vcCwgZmFQb3J0cmFpdCwgZmFQb3VuZFNpZ24sIGZhUG93ZXJPZmYsIGZhUHJheSwgZmFQcmF5aW5nSGFuZHMsIGZhUHJlc2NyaXB0aW9uLCBmYVByZXNjcmlwdGlvbkJvdHRsZSwgZmFQcmVzY3JpcHRpb25Cb3R0bGVBbHQsIGZhUHJpbnQsIGZhUHJvY2VkdXJlcywgZmFQcm9qZWN0RGlhZ3JhbSwgZmFQdW1wTWVkaWNhbCwgZmFQdW1wU29hcCwgZmFQdXp6bGVQaWVjZSwgZmFRcmNvZGUsIGZhUXVlc3Rpb24sIGZhUXVlc3Rpb25DaXJjbGUsIGZhUXVpZGRpdGNoLCBmYVF1b3RlTGVmdCwgZmFRdW90ZVJpZ2h0LCBmYVF1cmFuLCBmYVJhZGlhdGlvbiwgZmFSYWRpYXRpb25BbHQsIGZhUmFpbmJvdywgZmFSYW5kb20sIGZhUmVjZWlwdCwgZmFSZWNvcmRWaW55bCwgZmFSZWN5Y2xlLCBmYVJlZG8sIGZhUmVkb0FsdCwgZmFSZWdpc3RlcmVkLCBmYVJlbW92ZUZvcm1hdCwgZmFSZXBseSwgZmFSZXBseUFsbCwgZmFSZXB1YmxpY2FuLCBmYVJlc3Ryb29tLCBmYVJldHdlZXQsIGZhUmliYm9uLCBmYVJpbmcsIGZhUm9hZCwgZmFSb2JvdCwgZmFSb2NrZXQsIGZhUm91dGUsIGZhUnNzLCBmYVJzc1NxdWFyZSwgZmFSdWJsZVNpZ24sIGZhUnVsZXIsIGZhUnVsZXJDb21iaW5lZCwgZmFSdWxlckhvcml6b250YWwsIGZhUnVsZXJWZXJ0aWNhbCwgZmFSdW5uaW5nLCBmYVJ1cGVlU2lnbiwgZmFTYWRDcnksIGZhU2FkVGVhciwgZmFTYXRlbGxpdGUsIGZhU2F0ZWxsaXRlRGlzaCwgZmFTYXZlLCBmYVNjaG9vbCwgZmFTY3Jld2RyaXZlciwgZmFTY3JvbGwsIGZhU2RDYXJkLCBmYVNlYXJjaCwgZmFTZWFyY2hEb2xsYXIsIGZhU2VhcmNoTG9jYXRpb24sIGZhU2VhcmNoTWludXMsIGZhU2VhcmNoUGx1cywgZmFTZWVkbGluZywgZmFTZXJ2ZXIsIGZhU2hhcGVzLCBmYVNoYXJlLCBmYVNoYXJlQWx0LCBmYVNoYXJlQWx0U3F1YXJlLCBmYVNoYXJlU3F1YXJlLCBmYVNoZWtlbFNpZ24sIGZhU2hpZWxkQWx0LCBmYVNoaWVsZFZpcnVzLCBmYVNoaXAsIGZhU2hpcHBpbmdGYXN0LCBmYVNob2VQcmludHMsIGZhU2hvcHBpbmdCYWcsIGZhU2hvcHBpbmdCYXNrZXQsIGZhU2hvcHBpbmdDYXJ0LCBmYVNob3dlciwgZmFTaHV0dGxlVmFuLCBmYVNpZ24sIGZhU2lnbkluQWx0LCBmYVNpZ25MYW5ndWFnZSwgZmFTaWduT3V0QWx0LCBmYVNpZ25hbCwgZmFTaWduYXR1cmUsIGZhU2ltQ2FyZCwgZmFTaW5rLCBmYVNpdGVtYXAsIGZhU2thdGluZywgZmFTa2lpbmcsIGZhU2tpaW5nTm9yZGljLCBmYVNrdWxsLCBmYVNrdWxsQ3Jvc3Nib25lcywgZmFTbGFzaCwgZmFTbGVpZ2gsIGZhU2xpZGVyc0gsIGZhU21pbGUsIGZhU21pbGVCZWFtLCBmYVNtaWxlV2luaywgZmFTbW9nLCBmYVNtb2tpbmcsIGZhU21va2luZ0JhbiwgZmFTbXMsIGZhU25vd2JvYXJkaW5nLCBmYVNub3dmbGFrZSwgZmFTbm93bWFuLCBmYVNub3dwbG93LCBmYVNvYXAsIGZhU29ja3MsIGZhU29sYXJQYW5lbCwgZmFTb3J0LCBmYVNvcnRBbHBoYURvd24sIGZhU29ydEFscGhhRG93bkFsdCwgZmFTb3J0QWxwaGFVcCwgZmFTb3J0QWxwaGFVcEFsdCwgZmFTb3J0QW1vdW50RG93biwgZmFTb3J0QW1vdW50RG93bkFsdCwgZmFTb3J0QW1vdW50VXAsIGZhU29ydEFtb3VudFVwQWx0LCBmYVNvcnREb3duLCBmYVNvcnROdW1lcmljRG93biwgZmFTb3J0TnVtZXJpY0Rvd25BbHQsIGZhU29ydE51bWVyaWNVcCwgZmFTb3J0TnVtZXJpY1VwQWx0LCBmYVNvcnRVcCwgZmFTcGEsIGZhU3BhY2VTaHV0dGxlLCBmYVNwZWxsQ2hlY2ssIGZhU3BpZGVyLCBmYVNwaW5uZXIsIGZhU3Bsb3RjaCwgZmFTcHJheUNhbiwgZmFTcXVhcmUsIGZhU3F1YXJlRnVsbCwgZmFTcXVhcmVSb290QWx0LCBmYVN0YW1wLCBmYVN0YXIsIGZhU3RhckFuZENyZXNjZW50LCBmYVN0YXJIYWxmLCBmYVN0YXJIYWxmQWx0LCBmYVN0YXJPZkRhdmlkLCBmYVN0YXJPZkxpZmUsIGZhU3RlcEJhY2t3YXJkLCBmYVN0ZXBGb3J3YXJkLCBmYVN0ZXRob3Njb3BlLCBmYVN0aWNreU5vdGUsIGZhU3RvcCwgZmFTdG9wQ2lyY2xlLCBmYVN0b3B3YXRjaCwgZmFTdG9wd2F0Y2gyMCwgZmFTdG9yZSwgZmFTdG9yZUFsdCwgZmFTdG9yZUFsdFNsYXNoLCBmYVN0b3JlU2xhc2gsIGZhU3RyZWFtLCBmYVN0cmVldFZpZXcsIGZhU3RyaWtldGhyb3VnaCwgZmFTdHJvb3B3YWZlbCwgZmFTdWJzY3JpcHQsIGZhU3Vid2F5LCBmYVN1aXRjYXNlLCBmYVN1aXRjYXNlUm9sbGluZywgZmFTdW4sIGZhU3VwZXJzY3JpcHQsIGZhU3VycHJpc2UsIGZhU3dhdGNoYm9vaywgZmFTd2ltbWVyLCBmYVN3aW1taW5nUG9vbCwgZmFTeW5hZ29ndWUsIGZhU3luYywgZmFTeW5jQWx0LCBmYVN5cmluZ2UsIGZhVGFibGUsIGZhVGFibGVUZW5uaXMsIGZhVGFibGV0LCBmYVRhYmxldEFsdCwgZmFUYWJsZXRzLCBmYVRhY2hvbWV0ZXJBbHQsIGZhVGFnLCBmYVRhZ3MsIGZhVGFwZSwgZmFUYXNrcywgZmFUYXhpLCBmYVRlZXRoLCBmYVRlZXRoT3BlbiwgZmFUZW1wZXJhdHVyZUhpZ2gsIGZhVGVtcGVyYXR1cmVMb3csIGZhVGVuZ2UsIGZhVGVybWluYWwsIGZhVGV4dEhlaWdodCwgZmFUZXh0V2lkdGgsIGZhVGgsIGZhVGhMYXJnZSwgZmFUaExpc3QsIGZhVGhlYXRlck1hc2tzLCBmYVRoZXJtb21ldGVyLCBmYVRoZXJtb21ldGVyRW1wdHksIGZhVGhlcm1vbWV0ZXJGdWxsLCBmYVRoZXJtb21ldGVySGFsZiwgZmFUaGVybW9tZXRlclF1YXJ0ZXIsIGZhVGhlcm1vbWV0ZXJUaHJlZVF1YXJ0ZXJzLCBmYVRodW1ic0Rvd24sIGZhVGh1bWJzVXAsIGZhVGh1bWJ0YWNrLCBmYVRpY2tldEFsdCwgZmFUaW1lcywgZmFUaW1lc0NpcmNsZSwgZmFUaW50LCBmYVRpbnRTbGFzaCwgZmFUaXJlZCwgZmFUb2dnbGVPZmYsIGZhVG9nZ2xlT24sIGZhVG9pbGV0LCBmYVRvaWxldFBhcGVyLCBmYVRvaWxldFBhcGVyU2xhc2gsIGZhVG9vbGJveCwgZmFUb29scywgZmFUb290aCwgZmFUb3JhaCwgZmFUb3JpaUdhdGUsIGZhVHJhY3RvciwgZmFUcmFkZW1hcmssIGZhVHJhZmZpY0xpZ2h0LCBmYVRyYWlsZXIsIGZhVHJhaW4sIGZhVHJhbSwgZmFUcmFuc2dlbmRlciwgZmFUcmFuc2dlbmRlckFsdCwgZmFUcmFzaCwgZmFUcmFzaEFsdCwgZmFUcmFzaFJlc3RvcmUsIGZhVHJhc2hSZXN0b3JlQWx0LCBmYVRyZWUsIGZhVHJvcGh5LCBmYVRydWNrLCBmYVRydWNrTG9hZGluZywgZmFUcnVja01vbnN0ZXIsIGZhVHJ1Y2tNb3ZpbmcsIGZhVHJ1Y2tQaWNrdXAsIGZhVHNoaXJ0LCBmYVR0eSwgZmFUdiwgZmFVbWJyZWxsYSwgZmFVbWJyZWxsYUJlYWNoLCBmYVVuZGVybGluZSwgZmFVbmRvLCBmYVVuZG9BbHQsIGZhVW5pdmVyc2FsQWNjZXNzLCBmYVVuaXZlcnNpdHksIGZhVW5saW5rLCBmYVVubG9jaywgZmFVbmxvY2tBbHQsIGZhVXBsb2FkLCBmYVVzZXIsIGZhVXNlckFsdCwgZmFVc2VyQWx0U2xhc2gsIGZhVXNlckFzdHJvbmF1dCwgZmFVc2VyQ2hlY2ssIGZhVXNlckNpcmNsZSwgZmFVc2VyQ2xvY2ssIGZhVXNlckNvZywgZmFVc2VyRWRpdCwgZmFVc2VyRnJpZW5kcywgZmFVc2VyR3JhZHVhdGUsIGZhVXNlckluanVyZWQsIGZhVXNlckxvY2ssIGZhVXNlck1kLCBmYVVzZXJNaW51cywgZmFVc2VyTmluamEsIGZhVXNlck51cnNlLCBmYVVzZXJQbHVzLCBmYVVzZXJTZWNyZXQsIGZhVXNlclNoaWVsZCwgZmFVc2VyU2xhc2gsIGZhVXNlclRhZywgZmFVc2VyVGllLCBmYVVzZXJUaW1lcywgZmFVc2VycywgZmFVc2Vyc0NvZywgZmFVc2Vyc1NsYXNoLCBmYVV0ZW5zaWxTcG9vbiwgZmFVdGVuc2lscywgZmFWZWN0b3JTcXVhcmUsIGZhVmVudXMsIGZhVmVudXNEb3VibGUsIGZhVmVudXNNYXJzLCBmYVZpYWwsIGZhVmlhbHMsIGZhVmlkZW8sIGZhVmlkZW9TbGFzaCwgZmFWaWhhcmEsIGZhVmlydXMsIGZhVmlydXNTbGFzaCwgZmFWaXJ1c2VzLCBmYVZvaWNlbWFpbCwgZmFWb2xsZXliYWxsQmFsbCwgZmFWb2x1bWVEb3duLCBmYVZvbHVtZU11dGUsIGZhVm9sdW1lT2ZmLCBmYVZvbHVtZVVwLCBmYVZvdGVZZWEsIGZhVnJDYXJkYm9hcmQsIGZhV2Fsa2luZywgZmFXYWxsZXQsIGZhV2FyZWhvdXNlLCBmYVdhdGVyLCBmYVdhdmVTcXVhcmUsIGZhV2VpZ2h0LCBmYVdlaWdodEhhbmdpbmcsIGZhV2hlZWxjaGFpciwgZmFXaWZpLCBmYVdpbmQsIGZhV2luZG93Q2xvc2UsIGZhV2luZG93TWF4aW1pemUsIGZhV2luZG93TWluaW1pemUsIGZhV2luZG93UmVzdG9yZSwgZmFXaW5lQm90dGxlLCBmYVdpbmVHbGFzcywgZmFXaW5lR2xhc3NBbHQsIGZhV29uU2lnbiwgZmFXcmVuY2gsIGZhWFJheSwgZmFZZW5TaWduLCBmYVlpbllhbmcgfTtcbiIsInJlcXVpcmUoXCIuL2Jvb3RzdHJhcFwiKTtcbmltcG9ydCBWdWUgZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IFZ1ZVJvdXRlciBmcm9tIFwidnVlLXJvdXRlclwiO1xuaW1wb3J0IHJvdXRlciBmcm9tIFwiLi9yb3V0ZXJcIjtcbmltcG9ydCBpMThuIGZyb20gXCIuL2kxOG4vaW5kZXguanNcIjtcbmltcG9ydCBBcHAgZnJvbSBcIi4vQXBwLnZ1ZVwiO1xuaW1wb3J0IHN0b3JlIGZyb20gXCIuL3N0b3JlXCI7XG5pbXBvcnQge2V2ZW50c30gZnJvbSBcIi4vYnVzXCI7XG5pbXBvcnQgSGVscGVycyBmcm9tIFwiLi9oZWxwZXJzXCI7XG5pbXBvcnQgeyBsaWJyYXJ5IH0gZnJvbSBcIkBmb3J0YXdlc29tZS9mb250YXdlc29tZS1zdmctY29yZVwiO1xuaW1wb3J0IHsgRm9udEF3ZXNvbWVJY29uIH0gZnJvbSBcIkBmb3J0YXdlc29tZS92dWUtZm9udGF3ZXNvbWVcIjtcbmltcG9ydCB7XG4gIGZhTG9jayxcbiAgZmFMb2NrT3BlbixcbiAgZmFEb3dubG9hZCxcbiAgZmFVc2VyRnJpZW5kcyxcbiAgZmFDaGVjayxcbiAgZmFMaW5rLFxuICBmYVVzZXJFZGl0LFxuICBmYVVzZXIsXG4gIGZhRmlsZUF1ZGlvLFxuICBmYUZpbGVWaWRlbyxcbiAgZmFTeW5jQWx0LFxuICBmYVNoYXJlLFxuICBmYUhvbWUsXG4gIGZhRXllU2xhc2gsXG4gIGZhQmFycyxcbiAgZmFTZWFyY2gsXG4gIGZhRWxsaXBzaXNWLFxuICBmYUNoZXZyb25MZWZ0LFxuICBmYUNoZXZyb25SaWdodCxcbiAgZmFDaGV2cm9uRG93bixcbiAgZmFVcGxvYWQsXG4gIGZhRm9sZGVyUGx1cyxcbiAgZmFUaCxcbiAgZmFUaExpc3QsXG4gIGZhSW5mbyxcbiAgZmFGb2xkZXIsXG4gIGZhRmlsZSxcbiAgZmFGaWxlSW1hZ2UsXG4gIGZhVGltZXMsXG4gIGZhU29ydCxcbiAgZmFUcmFzaEFsdCxcbiAgZmFIZGQsXG4gIGZhRWxsaXBzaXNILFxuICBmYVBlbmNpbEFsdCxcbn0gZnJvbSBcIkBmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29uc1wiO1xuXG5saWJyYXJ5LmFkZChcbiAgZmFMb2NrLFxuICBmYUxvY2tPcGVuLFxuICBmYURvd25sb2FkLFxuICBmYVVzZXJGcmllbmRzLFxuICBmYUNoZWNrLFxuICBmYUxpbmssXG4gIGZhVXNlckVkaXQsXG4gIGZhVXNlcixcbiAgZmFGaWxlQXVkaW8sXG4gIGZhRmlsZVZpZGVvLFxuICBmYUhkZCxcbiAgZmFTeW5jQWx0LFxuICBmYVNoYXJlLFxuICBmYUhvbWUsXG4gIGZhRXllU2xhc2gsXG4gIGZhQmFycyxcbiAgZmFTZWFyY2gsXG4gIGZhRWxsaXBzaXNWLFxuICBmYUNoZXZyb25MZWZ0LFxuICBmYUNoZXZyb25SaWdodCxcbiAgZmFDaGV2cm9uRG93bixcbiAgZmFVcGxvYWQsXG4gIGZhVHJhc2hBbHQsXG4gIGZhRm9sZGVyUGx1cyxcbiAgZmFUaCxcbiAgZmFUaExpc3QsXG4gIGZhSW5mbyxcbiAgZmFGb2xkZXIsXG4gIGZhRmlsZSxcbiAgZmFGaWxlSW1hZ2UsXG4gIGZhVGltZXMsXG4gIGZhU29ydCxcbiAgZmFFbGxpcHNpc0gsXG4gIGZhUGVuY2lsQWx0XG4pO1xuVnVlLmNvbXBvbmVudChcIkZvbnRBd2Vzb21lSWNvblwiLCBGb250QXdlc29tZUljb24pO1xuXG5WdWUudXNlKFZ1ZVJvdXRlcik7XG5WdWUudXNlKEhlbHBlcnMpO1xuXG5WdWUuY29uZmlnLnByb2R1Y3Rpb25UaXAgPSBmYWxzZTtcblxuLy8gSGFuZGxlIHBvc2l0aW9uIG9mIERyYWcgJiBEcm9wIEdob3N0XG5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdkcmFnJywgZXZlbnQgPT4ge1xuICBsZXQgbXVsdGlTZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXVsdGktc2VsZWN0LXVpJylcblxuICBtdWx0aVNlbGVjdC5zdHlsZS50b3AgPSBldmVudC5jbGllbnRZICsgMjAgKyAncHgnXG4gIG11bHRpU2VsZWN0LnN0eWxlLmxlZnQgPSBldmVudC5jbGllbnRYICsgJ3B4J1xuXG59LGZhbHNlKVxuXG4vLyBIYW5kbGUgZm9yIGRyb3AgXG5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiZHJhZ2VuZFwiLCAoKSA9PiB7XG4gIGV2ZW50cy4kZW1pdCgnZHJvcCcpXG59LCBmYWxzZSk7XG5cbnZhciB2dWVGaWxlTWFuYWdlciA9IG5ldyBWdWUoe1xuICBpMThuLFxuICBzdG9yZSxcbiAgcm91dGVyLFxuICBkYXRhOiB7XG4gICAgY29uZmlnLFxuICB9LFxuICByZW5kZXI6IChoKSA9PiBoKEFwcCksXG59KS4kbW91bnQoXCIjYXBwXCIpO1xuXG5cbiIsIndpbmRvdy5fID0gcmVxdWlyZSgnbG9kYXNoJyk7XG5cbi8qKlxuICogV2UnbGwgbG9hZCB0aGUgYXhpb3MgSFRUUCBsaWJyYXJ5IHdoaWNoIGFsbG93cyB1cyB0byBlYXNpbHkgaXNzdWUgcmVxdWVzdHNcbiAqIHRvIG91ciBMYXJhdmVsIGJhY2stZW5kLiBUaGlzIGxpYnJhcnkgYXV0b21hdGljYWxseSBoYW5kbGVzIHNlbmRpbmcgdGhlXG4gKiBDU1JGIHRva2VuIGFzIGEgaGVhZGVyIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiB0aGUgXCJYU1JGXCIgdG9rZW4gY29va2llLlxuICovXG5cbndpbmRvdy5heGlvcyA9IHJlcXVpcmUoJ2F4aW9zJyk7XG5cbndpbmRvdy5heGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnWC1SZXF1ZXN0ZWQtV2l0aCddID0gJ1hNTEh0dHBSZXF1ZXN0JztcblxuLyoqXG4gKiBFY2hvIGV4cG9zZXMgYW4gZXhwcmVzc2l2ZSBBUEkgZm9yIHN1YnNjcmliaW5nIHRvIGNoYW5uZWxzIGFuZCBsaXN0ZW5pbmdcbiAqIGZvciBldmVudHMgdGhhdCBhcmUgYnJvYWRjYXN0IGJ5IExhcmF2ZWwuIEVjaG8gYW5kIGV2ZW50IGJyb2FkY2FzdGluZ1xuICogYWxsb3dzIHlvdXIgdGVhbSB0byBlYXNpbHkgYnVpbGQgcm9idXN0IHJlYWwtdGltZSB3ZWIgYXBwbGljYXRpb25zLlxuICovXG5cbi8vIGltcG9ydCBFY2hvIGZyb20gJ2xhcmF2ZWwtZWNobyc7XG5cbi8vIHdpbmRvdy5QdXNoZXIgPSByZXF1aXJlKCdwdXNoZXItanMnKTtcblxuLy8gd2luZG93LkVjaG8gPSBuZXcgRWNobyh7XG4vLyAgICAgYnJvYWRjYXN0ZXI6ICdwdXNoZXInLFxuLy8gICAgIGtleTogcHJvY2Vzcy5lbnYuTUlYX1BVU0hFUl9BUFBfS0VZLFxuLy8gICAgIGNsdXN0ZXI6IHByb2Nlc3MuZW52Lk1JWF9QVVNIRVJfQVBQX0NMVVNURVIsXG4vLyAgICAgZm9yY2VUTFM6IHRydWVcbi8vIH0pO1xuIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQWxlcnQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9ZjBhYThlYjAmc2NvcGVkPXRydWUmbGFuZz1zY3NzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BbGVydC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1mMGFhOGViMCZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3MmXCIiLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxuZnVuY3Rpb24gSW50ZXJjZXB0b3JNYW5hZ2VyKCkge1xuICB0aGlzLmhhbmRsZXJzID0gW107XG59XG5cbi8qKlxuICogQWRkIGEgbmV3IGludGVyY2VwdG9yIHRvIHRoZSBzdGFja1xuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bGZpbGxlZCBUaGUgZnVuY3Rpb24gdG8gaGFuZGxlIGB0aGVuYCBmb3IgYSBgUHJvbWlzZWBcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlamVjdGVkIFRoZSBmdW5jdGlvbiB0byBoYW5kbGUgYHJlamVjdGAgZm9yIGEgYFByb21pc2VgXG4gKlxuICogQHJldHVybiB7TnVtYmVyfSBBbiBJRCB1c2VkIHRvIHJlbW92ZSBpbnRlcmNlcHRvciBsYXRlclxuICovXG5JbnRlcmNlcHRvck1hbmFnZXIucHJvdG90eXBlLnVzZSA9IGZ1bmN0aW9uIHVzZShmdWxmaWxsZWQsIHJlamVjdGVkKSB7XG4gIHRoaXMuaGFuZGxlcnMucHVzaCh7XG4gICAgZnVsZmlsbGVkOiBmdWxmaWxsZWQsXG4gICAgcmVqZWN0ZWQ6IHJlamVjdGVkXG4gIH0pO1xuICByZXR1cm4gdGhpcy5oYW5kbGVycy5sZW5ndGggLSAxO1xufTtcblxuLyoqXG4gKiBSZW1vdmUgYW4gaW50ZXJjZXB0b3IgZnJvbSB0aGUgc3RhY2tcbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gaWQgVGhlIElEIHRoYXQgd2FzIHJldHVybmVkIGJ5IGB1c2VgXG4gKi9cbkludGVyY2VwdG9yTWFuYWdlci5wcm90b3R5cGUuZWplY3QgPSBmdW5jdGlvbiBlamVjdChpZCkge1xuICBpZiAodGhpcy5oYW5kbGVyc1tpZF0pIHtcbiAgICB0aGlzLmhhbmRsZXJzW2lkXSA9IG51bGw7XG4gIH1cbn07XG5cbi8qKlxuICogSXRlcmF0ZSBvdmVyIGFsbCB0aGUgcmVnaXN0ZXJlZCBpbnRlcmNlcHRvcnNcbiAqXG4gKiBUaGlzIG1ldGhvZCBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBza2lwcGluZyBvdmVyIGFueVxuICogaW50ZXJjZXB0b3JzIHRoYXQgbWF5IGhhdmUgYmVjb21lIGBudWxsYCBjYWxsaW5nIGBlamVjdGAuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgZm9yIGVhY2ggaW50ZXJjZXB0b3JcbiAqL1xuSW50ZXJjZXB0b3JNYW5hZ2VyLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24gZm9yRWFjaChmbikge1xuICB1dGlscy5mb3JFYWNoKHRoaXMuaGFuZGxlcnMsIGZ1bmN0aW9uIGZvckVhY2hIYW5kbGVyKGgpIHtcbiAgICBpZiAoaCAhPT0gbnVsbCkge1xuICAgICAgZm4oaCk7XG4gICAgfVxuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gSW50ZXJjZXB0b3JNYW5hZ2VyO1xuIiwiXG4vKipcbiAqIFdoZW4gc291cmNlIG1hcHMgYXJlIGVuYWJsZWQsIGBzdHlsZS1sb2FkZXJgIHVzZXMgYSBsaW5rIGVsZW1lbnQgd2l0aCBhIGRhdGEtdXJpIHRvXG4gKiBlbWJlZCB0aGUgY3NzIG9uIHRoZSBwYWdlLiBUaGlzIGJyZWFrcyBhbGwgcmVsYXRpdmUgdXJscyBiZWNhdXNlIG5vdyB0aGV5IGFyZSByZWxhdGl2ZSB0byBhXG4gKiBidW5kbGUgaW5zdGVhZCBvZiB0aGUgY3VycmVudCBwYWdlLlxuICpcbiAqIE9uZSBzb2x1dGlvbiBpcyB0byBvbmx5IHVzZSBmdWxsIHVybHMsIGJ1dCB0aGF0IG1heSBiZSBpbXBvc3NpYmxlLlxuICpcbiAqIEluc3RlYWQsIHRoaXMgZnVuY3Rpb24gXCJmaXhlc1wiIHRoZSByZWxhdGl2ZSB1cmxzIHRvIGJlIGFic29sdXRlIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBwYWdlIGxvY2F0aW9uLlxuICpcbiAqIEEgcnVkaW1lbnRhcnkgdGVzdCBzdWl0ZSBpcyBsb2NhdGVkIGF0IGB0ZXN0L2ZpeFVybHMuanNgIGFuZCBjYW4gYmUgcnVuIHZpYSB0aGUgYG5wbSB0ZXN0YCBjb21tYW5kLlxuICpcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjc3MpIHtcbiAgLy8gZ2V0IGN1cnJlbnQgbG9jYXRpb25cbiAgdmFyIGxvY2F0aW9uID0gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB3aW5kb3cubG9jYXRpb247XG5cbiAgaWYgKCFsb2NhdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihcImZpeFVybHMgcmVxdWlyZXMgd2luZG93LmxvY2F0aW9uXCIpO1xuICB9XG5cblx0Ly8gYmxhbmsgb3IgbnVsbD9cblx0aWYgKCFjc3MgfHwgdHlwZW9mIGNzcyAhPT0gXCJzdHJpbmdcIikge1xuXHQgIHJldHVybiBjc3M7XG4gIH1cblxuICB2YXIgYmFzZVVybCA9IGxvY2F0aW9uLnByb3RvY29sICsgXCIvL1wiICsgbG9jYXRpb24uaG9zdDtcbiAgdmFyIGN1cnJlbnREaXIgPSBiYXNlVXJsICsgbG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgvXFwvW15cXC9dKiQvLCBcIi9cIik7XG5cblx0Ly8gY29udmVydCBlYWNoIHVybCguLi4pXG5cdC8qXG5cdFRoaXMgcmVndWxhciBleHByZXNzaW9uIGlzIGp1c3QgYSB3YXkgdG8gcmVjdXJzaXZlbHkgbWF0Y2ggYnJhY2tldHMgd2l0aGluXG5cdGEgc3RyaW5nLlxuXG5cdCAvdXJsXFxzKlxcKCAgPSBNYXRjaCBvbiB0aGUgd29yZCBcInVybFwiIHdpdGggYW55IHdoaXRlc3BhY2UgYWZ0ZXIgaXQgYW5kIHRoZW4gYSBwYXJlbnNcblx0ICAgKCAgPSBTdGFydCBhIGNhcHR1cmluZyBncm91cFxuXHQgICAgICg/OiAgPSBTdGFydCBhIG5vbi1jYXB0dXJpbmcgZ3JvdXBcblx0ICAgICAgICAgW14pKF0gID0gTWF0Y2ggYW55dGhpbmcgdGhhdCBpc24ndCBhIHBhcmVudGhlc2VzXG5cdCAgICAgICAgIHwgID0gT1Jcblx0ICAgICAgICAgXFwoICA9IE1hdGNoIGEgc3RhcnQgcGFyZW50aGVzZXNcblx0ICAgICAgICAgICAgICg/OiAgPSBTdGFydCBhbm90aGVyIG5vbi1jYXB0dXJpbmcgZ3JvdXBzXG5cdCAgICAgICAgICAgICAgICAgW14pKF0rICA9IE1hdGNoIGFueXRoaW5nIHRoYXQgaXNuJ3QgYSBwYXJlbnRoZXNlc1xuXHQgICAgICAgICAgICAgICAgIHwgID0gT1Jcblx0ICAgICAgICAgICAgICAgICBcXCggID0gTWF0Y2ggYSBzdGFydCBwYXJlbnRoZXNlc1xuXHQgICAgICAgICAgICAgICAgICAgICBbXikoXSogID0gTWF0Y2ggYW55dGhpbmcgdGhhdCBpc24ndCBhIHBhcmVudGhlc2VzXG5cdCAgICAgICAgICAgICAgICAgXFwpICA9IE1hdGNoIGEgZW5kIHBhcmVudGhlc2VzXG5cdCAgICAgICAgICAgICApICA9IEVuZCBHcm91cFxuICAgICAgICAgICAgICAqXFwpID0gTWF0Y2ggYW55dGhpbmcgYW5kIHRoZW4gYSBjbG9zZSBwYXJlbnNcbiAgICAgICAgICApICA9IENsb3NlIG5vbi1jYXB0dXJpbmcgZ3JvdXBcbiAgICAgICAgICAqICA9IE1hdGNoIGFueXRoaW5nXG4gICAgICAgKSAgPSBDbG9zZSBjYXB0dXJpbmcgZ3JvdXBcblx0IFxcKSAgPSBNYXRjaCBhIGNsb3NlIHBhcmVuc1xuXG5cdCAvZ2kgID0gR2V0IGFsbCBtYXRjaGVzLCBub3QgdGhlIGZpcnN0LiAgQmUgY2FzZSBpbnNlbnNpdGl2ZS5cblx0ICovXG5cdHZhciBmaXhlZENzcyA9IGNzcy5yZXBsYWNlKC91cmxcXHMqXFwoKCg/OlteKShdfFxcKCg/OlteKShdK3xcXChbXikoXSpcXCkpKlxcKSkqKVxcKS9naSwgZnVuY3Rpb24oZnVsbE1hdGNoLCBvcmlnVXJsKSB7XG5cdFx0Ly8gc3RyaXAgcXVvdGVzIChpZiB0aGV5IGV4aXN0KVxuXHRcdHZhciB1bnF1b3RlZE9yaWdVcmwgPSBvcmlnVXJsXG5cdFx0XHQudHJpbSgpXG5cdFx0XHQucmVwbGFjZSgvXlwiKC4qKVwiJC8sIGZ1bmN0aW9uKG8sICQxKXsgcmV0dXJuICQxOyB9KVxuXHRcdFx0LnJlcGxhY2UoL14nKC4qKSckLywgZnVuY3Rpb24obywgJDEpeyByZXR1cm4gJDE7IH0pO1xuXG5cdFx0Ly8gYWxyZWFkeSBhIGZ1bGwgdXJsPyBubyBjaGFuZ2Vcblx0XHRpZiAoL14oI3xkYXRhOnxodHRwOlxcL1xcL3xodHRwczpcXC9cXC98ZmlsZTpcXC9cXC9cXC98XFxzKiQpL2kudGVzdCh1bnF1b3RlZE9yaWdVcmwpKSB7XG5cdFx0ICByZXR1cm4gZnVsbE1hdGNoO1xuXHRcdH1cblxuXHRcdC8vIGNvbnZlcnQgdGhlIHVybCB0byBhIGZ1bGwgdXJsXG5cdFx0dmFyIG5ld1VybDtcblxuXHRcdGlmICh1bnF1b3RlZE9yaWdVcmwuaW5kZXhPZihcIi8vXCIpID09PSAwKSB7XG5cdFx0ICBcdC8vVE9ETzogc2hvdWxkIHdlIGFkZCBwcm90b2NvbD9cblx0XHRcdG5ld1VybCA9IHVucXVvdGVkT3JpZ1VybDtcblx0XHR9IGVsc2UgaWYgKHVucXVvdGVkT3JpZ1VybC5pbmRleE9mKFwiL1wiKSA9PT0gMCkge1xuXHRcdFx0Ly8gcGF0aCBzaG91bGQgYmUgcmVsYXRpdmUgdG8gdGhlIGJhc2UgdXJsXG5cdFx0XHRuZXdVcmwgPSBiYXNlVXJsICsgdW5xdW90ZWRPcmlnVXJsOyAvLyBhbHJlYWR5IHN0YXJ0cyB3aXRoICcvJ1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZSB0byBjdXJyZW50IGRpcmVjdG9yeVxuXHRcdFx0bmV3VXJsID0gY3VycmVudERpciArIHVucXVvdGVkT3JpZ1VybC5yZXBsYWNlKC9eXFwuXFwvLywgXCJcIik7IC8vIFN0cmlwIGxlYWRpbmcgJy4vJ1xuXHRcdH1cblxuXHRcdC8vIHNlbmQgYmFjayB0aGUgZml4ZWQgdXJsKC4uLilcblx0XHRyZXR1cm4gXCJ1cmwoXCIgKyBKU09OLnN0cmluZ2lmeShuZXdVcmwpICsgXCIpXCI7XG5cdH0pO1xuXG5cdC8vIHNlbmQgYmFjayB0aGUgZml4ZWQgY3NzXG5cdHJldHVybiBmaXhlZENzcztcbn07XG4iLCJcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9CdXR0b25CYXNlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTQwMWM3OTQyJnNjb3BlZD10cnVlJmxhbmc9c2NzcyZcIik7XG5cbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuXG52YXIgdHJhbnNmb3JtO1xudmFyIGluc2VydEludG87XG5cblxuXG52YXIgb3B0aW9ucyA9IHtcImhtclwiOnRydWV9XG5cbm9wdGlvbnMudHJhbnNmb3JtID0gdHJhbnNmb3JtXG5vcHRpb25zLmluc2VydEludG8gPSB1bmRlZmluZWQ7XG5cbnZhciB1cGRhdGUgPSByZXF1aXJlKFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlcy5qc1wiKShjb250ZW50LCBvcHRpb25zKTtcblxuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG5cbmlmKG1vZHVsZS5ob3QpIHtcblx0bW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQnV0dG9uQmFzZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD00MDFjNzk0MiZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3MmXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9CdXR0b25CYXNlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTQwMWM3OTQyJnNjb3BlZD10cnVlJmxhbmc9c2NzcyZcIik7XG5cblx0XHRpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcblxuXHRcdHZhciBsb2NhbHMgPSAoZnVuY3Rpb24oYSwgYikge1xuXHRcdFx0dmFyIGtleSwgaWR4ID0gMDtcblxuXHRcdFx0Zm9yKGtleSBpbiBhKSB7XG5cdFx0XHRcdGlmKCFiIHx8IGFba2V5XSAhPT0gYltrZXldKSByZXR1cm4gZmFsc2U7XG5cdFx0XHRcdGlkeCsrO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3Ioa2V5IGluIGIpIGlkeC0tO1xuXG5cdFx0XHRyZXR1cm4gaWR4ID09PSAwO1xuXHRcdH0oY29udGVudC5sb2NhbHMsIG5ld0NvbnRlbnQubG9jYWxzKSk7XG5cblx0XHRpZighbG9jYWxzKSB0aHJvdyBuZXcgRXJyb3IoJ0Fib3J0aW5nIENTUyBITVIgZHVlIHRvIGNoYW5nZWQgY3NzLW1vZHVsZXMgbG9jYWxzLicpO1xuXG5cdFx0dXBkYXRlKG5ld0NvbnRlbnQpO1xuXHR9KTtcblxuXHRtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcbn0iLCJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5saW5rLWl0ZW1bZGF0YS12LTVjYTk3ZmZlXSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgcGFkZGluZzogMTdweCAwO1xcbiAgd2lkdGg6IDEwMCU7XFxufVxcbi5saW5rLWl0ZW0ucG93ZXIgLm1lbnUtaWNvbiBwYXRoW2RhdGEtdi01Y2E5N2ZmZV0sIC5saW5rLWl0ZW0ucG93ZXIgLm1lbnUtaWNvbiBsaW5lW2RhdGEtdi01Y2E5N2ZmZV0sIC5saW5rLWl0ZW0ucG93ZXIgLm1lbnUtaWNvbiBwb2x5bGluZVtkYXRhLXYtNWNhOTdmZmVdLCAubGluay1pdGVtLnBvd2VyIC5tZW51LWljb24gcmVjdFtkYXRhLXYtNWNhOTdmZmVdLCAubGluay1pdGVtLnBvd2VyIC5tZW51LWljb24gY2lyY2xlW2RhdGEtdi01Y2E5N2ZmZV0sIC5saW5rLWl0ZW0ucG93ZXIgLm1lbnUtaWNvbiBlbGxpcHNlW2RhdGEtdi01Y2E5N2ZmZV0ge1xcbiAgc3Ryb2tlOiAjRkU2MDU3O1xcbn1cXG4ubGluay1pdGVtLnBvd2VyIC5tZW51LWxpbmtbZGF0YS12LTVjYTk3ZmZlXSB7XFxuICBjb2xvcjogI0ZFNjA1NztcXG59XFxuLmxpbmstaXRlbSAubWVudS1pY29uW2RhdGEtdi01Y2E5N2ZmZV0ge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBtYXJnaW4tcmlnaHQ6IDIwcHg7XFxufVxcbi5saW5rLWl0ZW0gLm1lbnUtaWNvbiBzdmdbZGF0YS12LTVjYTk3ZmZlXSB7XFxuICBtYXJnaW4tdG9wOiAtMXB4O1xcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXG59XFxuLmxpbmstaXRlbSAubWVudS1pY29uIHBhdGhbZGF0YS12LTVjYTk3ZmZlXSwgLmxpbmstaXRlbSAubWVudS1pY29uIGxpbmVbZGF0YS12LTVjYTk3ZmZlXSwgLmxpbmstaXRlbSAubWVudS1pY29uIHBvbHlsaW5lW2RhdGEtdi01Y2E5N2ZmZV0sIC5saW5rLWl0ZW0gLm1lbnUtaWNvbiByZWN0W2RhdGEtdi01Y2E5N2ZmZV0sIC5saW5rLWl0ZW0gLm1lbnUtaWNvbiBjaXJjbGVbZGF0YS12LTVjYTk3ZmZlXSwgLmxpbmstaXRlbSAubWVudS1pY29uIGVsbGlwc2VbZGF0YS12LTVjYTk3ZmZlXSB7XFxuICBzdHJva2U6ICMxQjI1Mzk7XFxufVxcbi5saW5rLWl0ZW0gLm1lbnUtbGlua1tkYXRhLXYtNWNhOTdmZmVdIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBjb2xvcjogIzFCMjUzOTtcXG59XFxuLmxpbmstaXRlbSAubWVudS1saW5rIHNwYW5bZGF0YS12LTVjYTk3ZmZlXSB7XFxuICBmb250LXNpemU6IDAuODc1ZW07XFxufVxcbkBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcXG4ubGluay1pdGVtIC5tZW51LWljb24gcGF0aFtkYXRhLXYtNWNhOTdmZmVdLCAubGluay1pdGVtIC5tZW51LWljb24gbGluZVtkYXRhLXYtNWNhOTdmZmVdLCAubGluay1pdGVtIC5tZW51LWljb24gcG9seWxpbmVbZGF0YS12LTVjYTk3ZmZlXSwgLmxpbmstaXRlbSAubWVudS1pY29uIHJlY3RbZGF0YS12LTVjYTk3ZmZlXSwgLmxpbmstaXRlbSAubWVudS1pY29uIGNpcmNsZVtkYXRhLXYtNWNhOTdmZmVdLCAubGluay1pdGVtIC5tZW51LWljb24gZWxsaXBzZVtkYXRhLXYtNWNhOTdmZmVdIHtcXG4gICAgc3Ryb2tlOiAjYmVjNmNmO1xcbn1cXG4ubGluay1pdGVtIC5tZW51LWxpbmtbZGF0YS12LTVjYTk3ZmZlXSB7XFxuICAgIGNvbG9yOiAjYmVjNmNmO1xcbn1cXG59XFxuXCIsIFwiXCJdKTtcblxuLy8gZXhwb3J0c1xuIiwidmFyIHJlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ3RyYW5zaXRpb24nLHthdHRyczp7XCJuYW1lXCI6XCJ2aWduZXR0ZVwifX0sWyhfdm0uaXNWaXNpYmxlKT9fYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJ2aWduZXR0ZVwiLG9uOntcImNsaWNrXCI6X3ZtLmNsb3NlUG9wdXB9fSk6X3ZtLl9lKCldKX1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IiwiPHRlbXBsYXRlPlxuICAgIDx0cmFuc2l0aW9uIG5hbWU9XCJ2aWduZXR0ZVwiPlxuICAgICAgICA8ZGl2IHYtaWY9XCJpc1Zpc2libGVcIiBjbGFzcz1cInZpZ25ldHRlXCIgQGNsaWNrPVwiY2xvc2VQb3B1cFwiPjwvZGl2PlxuICAgIDwvdHJhbnNpdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgaW1wb3J0IHtldmVudHN9IGZyb20gJ0AvYnVzJ1xuICAgIGltcG9ydCB7IG1hcEdldHRlcnMgfSBmcm9tICd2dWV4J1xuXG4gICAgZXhwb3J0IGRlZmF1bHQge1xuICAgICAgICBuYW1lOiAnVmlnbmV0dGUnLFxuICAgICAgICBjb21wdXRlZDoge1xuICAgICAgICAgICAgLi4ubWFwR2V0dGVycyhbXG4gICAgICAgICAgICAgICAgJ3Byb2Nlc3NpbmdQb3B1cCdcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgaXNWaXNpYmxlKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NpbmdQb3B1cCB8fCB0aGlzLmlzVmlzaWJsZVZpZ25ldHRlXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBkYXRhKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpc1Zpc2libGVWaWduZXR0ZTogZmFsc2UsXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZHM6IHtcbiAgICAgICAgICAgIGNsb3NlUG9wdXAoKSB7XG4gICAgICAgICAgICAgICAgZXZlbnRzLiRlbWl0KCdwb3B1cDpjbG9zZScpXG4gICAgICAgICAgICAgICAgZXZlbnRzLiRlbWl0KCdtb2JpbGVNZW51OmhpZGUnKVxuICAgICAgICAgICAgICAgIGV2ZW50cy4kZW1pdCgnbW9iaWxlU29ydGluZ0FuZFByZXZpZXcnLCBmYWxzZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlZCgpIHtcblxuICAgICAgICAgICAgLy8gSGlkZSB2aWduZXR0ZVxuICAgICAgICAgICAgZXZlbnRzLiRvbigncG9wdXA6Y2xvc2UnLCAoKSA9PiB0aGlzLmlzVmlzaWJsZVZpZ25ldHRlID0gZmFsc2UpXG5cbiAgICAgICAgICAgIC8vIFNob3cgdmlnbmV0dGVcbiAgICAgICAgICAgIGV2ZW50cy4kb24oJ3BvcHVwOm9wZW4nLCAoKSA9PiB0aGlzLmlzVmlzaWJsZVZpZ25ldHRlID0gdHJ1ZSlcbiAgICAgICAgICAgIGV2ZW50cy4kb24oJ2FsZXJ0Om9wZW4nLCAoKSA9PiB0aGlzLmlzVmlzaWJsZVZpZ25ldHRlID0gdHJ1ZSlcbiAgICAgICAgICAgIGV2ZW50cy4kb24oJ3N1Y2Nlc3M6b3BlbicsICgpID0+IHRoaXMuaXNWaXNpYmxlVmlnbmV0dGUgPSB0cnVlKVxuICAgICAgICAgICAgZXZlbnRzLiRvbignY29uZmlybTpvcGVuJywgKCkgPT4gdGhpcy5pc1Zpc2libGVWaWduZXR0ZSA9IHRydWUpXG4gICAgICAgICAgICBldmVudHMuJG9uKCdtb2JpbGVTb3J0aW5nQW5kUHJldmlld1ZpZ25ldHRlJywgKHN0YXRlKSA9PiB0aGlzLmlzVmlzaWJsZVZpZ25ldHRlID0gc3RhdGUpXG5cbiAgICAgICAgfVxuICAgIH1cbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBzY29wZWQ+XG4gICAgQGltcG9ydCAnQGFzc2V0cy92dWVmaWxlbWFuYWdlci9fdmFyaWFibGVzJztcbiAgICBAaW1wb3J0ICdAYXNzZXRzL3Z1ZWZpbGVtYW5hZ2VyL19taXhpbnMnO1xuXG4gICAgLnZpZ25ldHRlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAgIHotaW5kZXg6IDE4O1xuICAgICAgICBiYWNrZ3JvdW5kOiAkbGlnaHRfbW9kZV92aWduZXR0ZTtcbiAgICB9XG5cbiAgICAvLyBEYXJrIG1vZGVcbiAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG5cbiAgICAgICAgLnZpZ25ldHRlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRkYXJrX21vZGVfdmlnbmV0dGU7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC52aWduZXR0ZS1lbnRlci1hY3RpdmUge1xuICAgICAgICBhbmltYXRpb246IHZpZ25ldHRlLWluIDAuMzVzIGVhc2U7XG4gICAgfVxuXG4gICAgLnZpZ25ldHRlLWxlYXZlLWFjdGl2ZSB7XG4gICAgICAgIGFuaW1hdGlvbjogdmlnbmV0dGUtaW4gMC4xNXMgZWFzZSByZXZlcnNlO1xuICAgIH1cblxuICAgIEBrZXlmcmFtZXMgdmlnbmV0dGUtaW4ge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB9XG4gICAgICAgIDEwMCUge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9yZWYtLTQtMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1ZpZ25ldHRlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS00LTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9WaWduZXR0ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL1ZpZ25ldHRlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD02MDJlNTVhNCZzY29wZWQ9dHJ1ZSZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9WaWduZXR0ZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL1ZpZ25ldHRlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi9WaWduZXR0ZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD02MDJlNTVhNCZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcIjYwMmU1NWE0XCIsXG4gIG51bGxcbiAgXG4pXG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ29va2llRGlzY2xhaW1lci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD04N2NkYzFmOCZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS03LTIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTctMyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0Nvb2tpZURpc2NsYWltZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9ODdjZGMxZjgmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG52YXIgYnVpbGRVUkwgPSByZXF1aXJlKCcuLi9oZWxwZXJzL2J1aWxkVVJMJyk7XG52YXIgSW50ZXJjZXB0b3JNYW5hZ2VyID0gcmVxdWlyZSgnLi9JbnRlcmNlcHRvck1hbmFnZXInKTtcbnZhciBkaXNwYXRjaFJlcXVlc3QgPSByZXF1aXJlKCcuL2Rpc3BhdGNoUmVxdWVzdCcpO1xudmFyIG1lcmdlQ29uZmlnID0gcmVxdWlyZSgnLi9tZXJnZUNvbmZpZycpO1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBBeGlvc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBpbnN0YW5jZUNvbmZpZyBUaGUgZGVmYXVsdCBjb25maWcgZm9yIHRoZSBpbnN0YW5jZVxuICovXG5mdW5jdGlvbiBBeGlvcyhpbnN0YW5jZUNvbmZpZykge1xuICB0aGlzLmRlZmF1bHRzID0gaW5zdGFuY2VDb25maWc7XG4gIHRoaXMuaW50ZXJjZXB0b3JzID0ge1xuICAgIHJlcXVlc3Q6IG5ldyBJbnRlcmNlcHRvck1hbmFnZXIoKSxcbiAgICByZXNwb25zZTogbmV3IEludGVyY2VwdG9yTWFuYWdlcigpXG4gIH07XG59XG5cbi8qKlxuICogRGlzcGF0Y2ggYSByZXF1ZXN0XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnIHNwZWNpZmljIGZvciB0aGlzIHJlcXVlc3QgKG1lcmdlZCB3aXRoIHRoaXMuZGVmYXVsdHMpXG4gKi9cbkF4aW9zLnByb3RvdHlwZS5yZXF1ZXN0ID0gZnVuY3Rpb24gcmVxdWVzdChjb25maWcpIHtcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gIC8vIEFsbG93IGZvciBheGlvcygnZXhhbXBsZS91cmwnWywgY29uZmlnXSkgYSBsYSBmZXRjaCBBUElcbiAgaWYgKHR5cGVvZiBjb25maWcgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uZmlnID0gYXJndW1lbnRzWzFdIHx8IHt9O1xuICAgIGNvbmZpZy51cmwgPSBhcmd1bWVudHNbMF07XG4gIH0gZWxzZSB7XG4gICAgY29uZmlnID0gY29uZmlnIHx8IHt9O1xuICB9XG5cbiAgY29uZmlnID0gbWVyZ2VDb25maWcodGhpcy5kZWZhdWx0cywgY29uZmlnKTtcblxuICAvLyBTZXQgY29uZmlnLm1ldGhvZFxuICBpZiAoY29uZmlnLm1ldGhvZCkge1xuICAgIGNvbmZpZy5tZXRob2QgPSBjb25maWcubWV0aG9kLnRvTG93ZXJDYXNlKCk7XG4gIH0gZWxzZSBpZiAodGhpcy5kZWZhdWx0cy5tZXRob2QpIHtcbiAgICBjb25maWcubWV0aG9kID0gdGhpcy5kZWZhdWx0cy5tZXRob2QudG9Mb3dlckNhc2UoKTtcbiAgfSBlbHNlIHtcbiAgICBjb25maWcubWV0aG9kID0gJ2dldCc7XG4gIH1cblxuICAvLyBIb29rIHVwIGludGVyY2VwdG9ycyBtaWRkbGV3YXJlXG4gIHZhciBjaGFpbiA9IFtkaXNwYXRjaFJlcXVlc3QsIHVuZGVmaW5lZF07XG4gIHZhciBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKGNvbmZpZyk7XG5cbiAgdGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC5mb3JFYWNoKGZ1bmN0aW9uIHVuc2hpZnRSZXF1ZXN0SW50ZXJjZXB0b3JzKGludGVyY2VwdG9yKSB7XG4gICAgY2hhaW4udW5zaGlmdChpbnRlcmNlcHRvci5mdWxmaWxsZWQsIGludGVyY2VwdG9yLnJlamVjdGVkKTtcbiAgfSk7XG5cbiAgdGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbiBwdXNoUmVzcG9uc2VJbnRlcmNlcHRvcnMoaW50ZXJjZXB0b3IpIHtcbiAgICBjaGFpbi5wdXNoKGludGVyY2VwdG9yLmZ1bGZpbGxlZCwgaW50ZXJjZXB0b3IucmVqZWN0ZWQpO1xuICB9KTtcblxuICB3aGlsZSAoY2hhaW4ubGVuZ3RoKSB7XG4gICAgcHJvbWlzZSA9IHByb21pc2UudGhlbihjaGFpbi5zaGlmdCgpLCBjaGFpbi5zaGlmdCgpKTtcbiAgfVxuXG4gIHJldHVybiBwcm9taXNlO1xufTtcblxuQXhpb3MucHJvdG90eXBlLmdldFVyaSA9IGZ1bmN0aW9uIGdldFVyaShjb25maWcpIHtcbiAgY29uZmlnID0gbWVyZ2VDb25maWcodGhpcy5kZWZhdWx0cywgY29uZmlnKTtcbiAgcmV0dXJuIGJ1aWxkVVJMKGNvbmZpZy51cmwsIGNvbmZpZy5wYXJhbXMsIGNvbmZpZy5wYXJhbXNTZXJpYWxpemVyKS5yZXBsYWNlKC9eXFw/LywgJycpO1xufTtcblxuLy8gUHJvdmlkZSBhbGlhc2VzIGZvciBzdXBwb3J0ZWQgcmVxdWVzdCBtZXRob2RzXG51dGlscy5mb3JFYWNoKFsnZGVsZXRlJywgJ2dldCcsICdoZWFkJywgJ29wdGlvbnMnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZE5vRGF0YShtZXRob2QpIHtcbiAgLyplc2xpbnQgZnVuYy1uYW1lczowKi9cbiAgQXhpb3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbih1cmwsIGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXRpbHMubWVyZ2UoY29uZmlnIHx8IHt9LCB7XG4gICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgIHVybDogdXJsXG4gICAgfSkpO1xuICB9O1xufSk7XG5cbnV0aWxzLmZvckVhY2goWydwb3N0JywgJ3B1dCcsICdwYXRjaCddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kV2l0aERhdGEobWV0aG9kKSB7XG4gIC8qZXNsaW50IGZ1bmMtbmFtZXM6MCovXG4gIEF4aW9zLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24odXJsLCBkYXRhLCBjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHV0aWxzLm1lcmdlKGNvbmZpZyB8fCB7fSwge1xuICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICB1cmw6IHVybCxcbiAgICAgIGRhdGE6IGRhdGFcbiAgICB9KSk7XG4gIH07XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBBeGlvcztcbiIsImltcG9ydCBfbWVyZ2VKU1hQcm9wcyBmcm9tICdiYWJlbC1oZWxwZXItdnVlLWpzeC1tZXJnZS1wcm9wcyc7XG5cbnZhciBBY3Rpdml0eUljb24gPSB7XG4gIG5hbWU6ICdBY3Rpdml0eUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYWN0aXZpdHlcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjIyIDEyIDE4IDEyIDE1IDIxIDkgMyA2IDEyIDIgMTJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBBaXJwbGF5SWNvbiA9IHtcbiAgbmFtZTogJ0FpcnBsYXlJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWFpcnBsYXlcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk01IDE3SDRhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnYxMGEyIDIgMCAwIDEtMiAyaC0xXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlnb25cIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjEyIDE1IDE3IDIxIDcgMjEgMTIgMTVcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBBbGVydENpcmNsZUljb24gPSB7XG4gIG5hbWU6ICdBbGVydENpcmNsZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYWxlcnQtY2lyY2xlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiOFwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIxMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjE2XCIsXG4gICAgICAgIHgyOiBcIjEyLjAxXCIsXG4gICAgICAgIHkyOiBcIjE2XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQWxlcnRPY3RhZ29uSWNvbiA9IHtcbiAgbmFtZTogJ0FsZXJ0T2N0YWdvbkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYWxlcnQtb2N0YWdvblwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5Z29uXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCI3Ljg2IDIgMTYuMTQgMiAyMiA3Ljg2IDIyIDE2LjE0IDE2LjE0IDIyIDcuODYgMjIgMiAxNi4xNCAyIDcuODYgNy44NiAyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiOFwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIxMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjE2XCIsXG4gICAgICAgIHgyOiBcIjEyLjAxXCIsXG4gICAgICAgIHkyOiBcIjE2XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQWxlcnRUcmlhbmdsZUljb24gPSB7XG4gIG5hbWU6ICdBbGVydFRyaWFuZ2xlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1hbGVydC10cmlhbmdsZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTEwLjI5IDMuODZMMS44MiAxOGEyIDIgMCAwIDAgMS43MSAzaDE2Ljk0YTIgMiAwIDAgMCAxLjcxLTNMMTMuNzEgMy44NmEyIDIgMCAwIDAtMy40MiAwelwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjlcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMTNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIxN1wiLFxuICAgICAgICB4MjogXCIxMi4wMVwiLFxuICAgICAgICB5MjogXCIxN1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEFsaWduQ2VudGVySWNvbiA9IHtcbiAgbmFtZTogJ0FsaWduQ2VudGVySWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1hbGlnbi1jZW50ZXJcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxOFwiLFxuICAgICAgICB5MTogXCIxMFwiLFxuICAgICAgICB4MjogXCI2XCIsXG4gICAgICAgIHkyOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMjFcIixcbiAgICAgICAgeTE6IFwiNlwiLFxuICAgICAgICB4MjogXCIzXCIsXG4gICAgICAgIHkyOiBcIjZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMVwiLFxuICAgICAgICB5MTogXCIxNFwiLFxuICAgICAgICB4MjogXCIzXCIsXG4gICAgICAgIHkyOiBcIjE0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMThcIixcbiAgICAgICAgeTE6IFwiMThcIixcbiAgICAgICAgeDI6IFwiNlwiLFxuICAgICAgICB5MjogXCIxOFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEFsaWduSnVzdGlmeUljb24gPSB7XG4gIG5hbWU6ICdBbGlnbkp1c3RpZnlJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWFsaWduLWp1c3RpZnlcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMVwiLFxuICAgICAgICB5MTogXCIxMFwiLFxuICAgICAgICB4MjogXCIzXCIsXG4gICAgICAgIHkyOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMjFcIixcbiAgICAgICAgeTE6IFwiNlwiLFxuICAgICAgICB4MjogXCIzXCIsXG4gICAgICAgIHkyOiBcIjZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMVwiLFxuICAgICAgICB5MTogXCIxNFwiLFxuICAgICAgICB4MjogXCIzXCIsXG4gICAgICAgIHkyOiBcIjE0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMjFcIixcbiAgICAgICAgeTE6IFwiMThcIixcbiAgICAgICAgeDI6IFwiM1wiLFxuICAgICAgICB5MjogXCIxOFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEFsaWduTGVmdEljb24gPSB7XG4gIG5hbWU6ICdBbGlnbkxlZnRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWFsaWduLWxlZnRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxN1wiLFxuICAgICAgICB5MTogXCIxMFwiLFxuICAgICAgICB4MjogXCIzXCIsXG4gICAgICAgIHkyOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMjFcIixcbiAgICAgICAgeTE6IFwiNlwiLFxuICAgICAgICB4MjogXCIzXCIsXG4gICAgICAgIHkyOiBcIjZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMVwiLFxuICAgICAgICB5MTogXCIxNFwiLFxuICAgICAgICB4MjogXCIzXCIsXG4gICAgICAgIHkyOiBcIjE0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTdcIixcbiAgICAgICAgeTE6IFwiMThcIixcbiAgICAgICAgeDI6IFwiM1wiLFxuICAgICAgICB5MjogXCIxOFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEFsaWduUmlnaHRJY29uID0ge1xuICBuYW1lOiAnQWxpZ25SaWdodEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYWxpZ24tcmlnaHRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMVwiLFxuICAgICAgICB5MTogXCIxMFwiLFxuICAgICAgICB4MjogXCI3XCIsXG4gICAgICAgIHkyOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMjFcIixcbiAgICAgICAgeTE6IFwiNlwiLFxuICAgICAgICB4MjogXCIzXCIsXG4gICAgICAgIHkyOiBcIjZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMVwiLFxuICAgICAgICB5MTogXCIxNFwiLFxuICAgICAgICB4MjogXCIzXCIsXG4gICAgICAgIHkyOiBcIjE0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMjFcIixcbiAgICAgICAgeTE6IFwiMThcIixcbiAgICAgICAgeDI6IFwiN1wiLFxuICAgICAgICB5MjogXCIxOFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEFuY2hvckljb24gPSB7XG4gIG5hbWU6ICdBbmNob3JJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWFuY2hvclwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiNVwiLFxuICAgICAgICByOiBcIjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIyMlwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCI4XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNSAxMkgyYTEwIDEwIDAgMCAwIDIwIDBoLTNcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBBcGVydHVyZUljb24gPSB7XG4gIG5hbWU6ICdBcGVydHVyZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYXBlcnR1cmVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNC4zMVwiLFxuICAgICAgICB5MTogXCI4XCIsXG4gICAgICAgIHgyOiBcIjIwLjA1XCIsXG4gICAgICAgIHkyOiBcIjE3Ljk0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiOS42OVwiLFxuICAgICAgICB5MTogXCI4XCIsXG4gICAgICAgIHgyOiBcIjIxLjE3XCIsXG4gICAgICAgIHkyOiBcIjhcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI3LjM4XCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjEzLjEyXCIsXG4gICAgICAgIHkyOiBcIjIuMDZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI5LjY5XCIsXG4gICAgICAgIHkxOiBcIjE2XCIsXG4gICAgICAgIHgyOiBcIjMuOTVcIixcbiAgICAgICAgeTI6IFwiNi4wNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE0LjMxXCIsXG4gICAgICAgIHkxOiBcIjE2XCIsXG4gICAgICAgIHgyOiBcIjIuODNcIixcbiAgICAgICAgeTI6IFwiMTZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNi42MlwiLFxuICAgICAgICB5MTogXCIxMlwiLFxuICAgICAgICB4MjogXCIxMC44OFwiLFxuICAgICAgICB5MjogXCIyMS45NFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEFyY2hpdmVJY29uID0ge1xuICBuYW1lOiAnQXJjaGl2ZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYXJjaGl2ZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMjEgOCAyMSAyMSAzIDIxIDMgOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiMVwiLFxuICAgICAgICB5OiBcIjNcIixcbiAgICAgICAgd2lkdGg6IFwiMjJcIixcbiAgICAgICAgaGVpZ2h0OiBcIjVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMFwiLFxuICAgICAgICB5MTogXCIxMlwiLFxuICAgICAgICB4MjogXCIxNFwiLFxuICAgICAgICB5MjogXCIxMlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEFycm93RG93bkNpcmNsZUljb24gPSB7XG4gIG5hbWU6ICdBcnJvd0Rvd25DaXJjbGVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWFycm93LWRvd24tY2lyY2xlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCI4IDEyIDEyIDE2IDE2IDEyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiOFwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIxNlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEFycm93RG93bkxlZnRJY29uID0ge1xuICBuYW1lOiAnQXJyb3dEb3duTGVmdEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYXJyb3ctZG93bi1sZWZ0XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTdcIixcbiAgICAgICAgeTE6IFwiN1wiLFxuICAgICAgICB4MjogXCI3XCIsXG4gICAgICAgIHkyOiBcIjE3XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxNyAxNyA3IDE3IDcgN1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEFycm93RG93blJpZ2h0SWNvbiA9IHtcbiAgbmFtZTogJ0Fycm93RG93blJpZ2h0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1hcnJvdy1kb3duLXJpZ2h0XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiN1wiLFxuICAgICAgICB5MTogXCI3XCIsXG4gICAgICAgIHgyOiBcIjE3XCIsXG4gICAgICAgIHkyOiBcIjE3XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxNyA3IDE3IDE3IDcgMTdcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBBcnJvd0Rvd25JY29uID0ge1xuICBuYW1lOiAnQXJyb3dEb3duSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1hcnJvdy1kb3duXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiNVwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIxOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTkgMTIgMTIgMTkgNSAxMlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEFycm93TGVmdENpcmNsZUljb24gPSB7XG4gIG5hbWU6ICdBcnJvd0xlZnRDaXJjbGVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWFycm93LWxlZnQtY2lyY2xlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxMiA4IDggMTIgMTIgMTZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNlwiLFxuICAgICAgICB5MTogXCIxMlwiLFxuICAgICAgICB4MjogXCI4XCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQXJyb3dMZWZ0SWNvbiA9IHtcbiAgbmFtZTogJ0Fycm93TGVmdEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYXJyb3ctbGVmdFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE5XCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjVcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjEyIDE5IDUgMTIgMTIgNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEFycm93UmlnaHRDaXJjbGVJY29uID0ge1xuICBuYW1lOiAnQXJyb3dSaWdodENpcmNsZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYXJyb3ctcmlnaHQtY2lyY2xlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxMiAxNiAxNiAxMiAxMiA4XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiOFwiLFxuICAgICAgICB5MTogXCIxMlwiLFxuICAgICAgICB4MjogXCIxNlwiLFxuICAgICAgICB5MjogXCIxMlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEFycm93UmlnaHRJY29uID0ge1xuICBuYW1lOiAnQXJyb3dSaWdodEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYXJyb3ctcmlnaHRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI1XCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjE5XCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxMiA1IDE5IDEyIDEyIDE5XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQXJyb3dVcENpcmNsZUljb24gPSB7XG4gIG5hbWU6ICdBcnJvd1VwQ2lyY2xlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1hcnJvdy11cC1jaXJjbGVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjE2IDEyIDEyIDggOCAxMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjE2XCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjhcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBBcnJvd1VwTGVmdEljb24gPSB7XG4gIG5hbWU6ICdBcnJvd1VwTGVmdEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYXJyb3ctdXAtbGVmdFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE3XCIsXG4gICAgICAgIHkxOiBcIjE3XCIsXG4gICAgICAgIHgyOiBcIjdcIixcbiAgICAgICAgeTI6IFwiN1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiNyAxNyA3IDcgMTcgN1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEFycm93VXBSaWdodEljb24gPSB7XG4gIG5hbWU6ICdBcnJvd1VwUmlnaHRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWFycm93LXVwLXJpZ2h0XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiN1wiLFxuICAgICAgICB5MTogXCIxN1wiLFxuICAgICAgICB4MjogXCIxN1wiLFxuICAgICAgICB5MjogXCI3XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCI3IDcgMTcgNyAxNyAxN1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEFycm93VXBJY29uID0ge1xuICBuYW1lOiAnQXJyb3dVcEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYXJyb3ctdXBcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIxOVwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCI1XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCI1IDEyIDEyIDUgMTkgMTJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBBdFNpZ25JY29uID0ge1xuICBuYW1lOiAnQXRTaWduSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1hdC1zaWduXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNiA4djVhMyAzIDAgMCAwIDYgMHYtMWExMCAxMCAwIDEgMC0zLjkyIDcuOTRcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBBd2FyZEljb24gPSB7XG4gIG5hbWU6ICdBd2FyZEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYXdhcmRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjhcIixcbiAgICAgICAgcjogXCI3XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCI4LjIxIDEzLjg5IDcgMjMgMTIgMjAgMTcgMjMgMTUuNzkgMTMuODhcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBCYXJDaGFydDJJY29uID0ge1xuICBuYW1lOiAnQmFyQ2hhcnQySWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1iYXItY2hhcnQtMlwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE4XCIsXG4gICAgICAgIHkxOiBcIjIwXCIsXG4gICAgICAgIHgyOiBcIjE4XCIsXG4gICAgICAgIHkyOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMjBcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjZcIixcbiAgICAgICAgeTE6IFwiMjBcIixcbiAgICAgICAgeDI6IFwiNlwiLFxuICAgICAgICB5MjogXCIxNFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEJhckNoYXJ0SWNvbiA9IHtcbiAgbmFtZTogJ0JhckNoYXJ0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1iYXItY2hhcnRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIyMFwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE4XCIsXG4gICAgICAgIHkxOiBcIjIwXCIsXG4gICAgICAgIHgyOiBcIjE4XCIsXG4gICAgICAgIHkyOiBcIjRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI2XCIsXG4gICAgICAgIHkxOiBcIjIwXCIsXG4gICAgICAgIHgyOiBcIjZcIixcbiAgICAgICAgeTI6IFwiMTZcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBCYXR0ZXJ5Q2hhcmdpbmdJY29uID0ge1xuICBuYW1lOiAnQmF0dGVyeUNoYXJnaW5nSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1iYXR0ZXJ5LWNoYXJnaW5nXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNSAxOEgzYTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDMuMTlNMTUgNmgyYTIgMiAwIDAgMSAyIDJ2OGEyIDIgMCAwIDEtMiAyaC0zLjE5XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMjNcIixcbiAgICAgICAgeTE6IFwiMTNcIixcbiAgICAgICAgeDI6IFwiMjNcIixcbiAgICAgICAgeTI6IFwiMTFcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjExIDYgNyAxMiAxMyAxMiA5IDE4XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQmF0dGVyeUljb24gPSB7XG4gIG5hbWU6ICdCYXR0ZXJ5SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1iYXR0ZXJ5XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIxXCIsXG4gICAgICAgIHk6IFwiNlwiLFxuICAgICAgICB3aWR0aDogXCIxOFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMTJcIixcbiAgICAgICAgcng6IFwiMlwiLFxuICAgICAgICByeTogXCIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMjNcIixcbiAgICAgICAgeTE6IFwiMTNcIixcbiAgICAgICAgeDI6IFwiMjNcIixcbiAgICAgICAgeTI6IFwiMTFcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBCZWxsT2ZmSWNvbiA9IHtcbiAgbmFtZTogJ0JlbGxPZmZJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWJlbGwtb2ZmXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTMuNzMgMjFhMiAyIDAgMCAxLTMuNDYgMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE4LjYzIDEzQTE3Ljg5IDE3Ljg5IDAgMCAxIDE4IDhcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk02LjI2IDYuMjZBNS44NiA1Ljg2IDAgMCAwIDYgOGMwIDctMyA5LTMgOWgxNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE4IDhhNiA2IDAgMCAwLTkuMzMtNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjFcIixcbiAgICAgICAgeTE6IFwiMVwiLFxuICAgICAgICB4MjogXCIyM1wiLFxuICAgICAgICB5MjogXCIyM1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEJlbGxJY29uID0ge1xuICBuYW1lOiAnQmVsbEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItYmVsbFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE4IDhBNiA2IDAgMCAwIDYgOGMwIDctMyA5LTMgOWgxOHMtMy0yLTMtOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTEzLjczIDIxYTIgMiAwIDAgMS0zLjQ2IDBcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBCbHVldG9vdGhJY29uID0ge1xuICBuYW1lOiAnQmx1ZXRvb3RoSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1ibHVldG9vdGhcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjYuNSA2LjUgMTcuNSAxNy41IDEyIDIzIDEyIDEgMTcuNSA2LjUgNi41IDE3LjVcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBCb2xkSWNvbiA9IHtcbiAgbmFtZTogJ0JvbGRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWJvbGRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk02IDRoOGE0IDQgMCAwIDEgNCA0IDQgNCAwIDAgMS00IDRINnpcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk02IDEyaDlhNCA0IDAgMCAxIDQgNCA0IDQgMCAwIDEtNCA0SDZ6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQm9va09wZW5JY29uID0ge1xuICBuYW1lOiAnQm9va09wZW5JY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWJvb2stb3BlblwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIgM2g2YTQgNCAwIDAgMSA0IDR2MTRhMyAzIDAgMCAwLTMtM0gyelwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIyIDNoLTZhNCA0IDAgMCAwLTQgNHYxNGEzIDMgMCAwIDEgMy0zaDd6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQm9va0ljb24gPSB7XG4gIG5hbWU6ICdCb29rSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1ib29rXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNCAxOS41QTIuNSAyLjUgMCAwIDEgNi41IDE3SDIwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNi41IDJIMjB2MjBINi41QTIuNSAyLjUgMCAwIDEgNCAxOS41di0xNUEyLjUgMi41IDAgMCAxIDYuNSAyelwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEJvb2ttYXJrSWNvbiA9IHtcbiAgbmFtZTogJ0Jvb2ttYXJrSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1ib29rbWFya1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE5IDIxbC03LTUtNyA1VjVhMiAyIDAgMCAxIDItMmgxMGEyIDIgMCAwIDEgMiAyelwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEJveEljb24gPSB7XG4gIG5hbWU6ICdCb3hJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWJveFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIxIDE2VjhhMiAyIDAgMCAwLTEtMS43M2wtNy00YTIgMiAwIDAgMC0yIDBsLTcgNEEyIDIgMCAwIDAgMyA4djhhMiAyIDAgMCAwIDEgMS43M2w3IDRhMiAyIDAgMCAwIDIgMGw3LTRBMiAyIDAgMCAwIDIxIDE2elwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMy4yNyA2Ljk2IDEyIDEyLjAxIDIwLjczIDYuOTZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIyMi4wOFwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIxMlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEJyaWVmY2FzZUljb24gPSB7XG4gIG5hbWU6ICdCcmllZmNhc2VJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWJyaWVmY2FzZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiMlwiLFxuICAgICAgICB5OiBcIjdcIixcbiAgICAgICAgd2lkdGg6IFwiMjBcIixcbiAgICAgICAgaGVpZ2h0OiBcIjE0XCIsXG4gICAgICAgIHJ4OiBcIjJcIixcbiAgICAgICAgcnk6IFwiMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE2IDIxVjVhMiAyIDAgMCAwLTItMmgtNGEyIDIgMCAwIDAtMiAydjE2XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ2FsZW5kYXJJY29uID0ge1xuICBuYW1lOiAnQ2FsZW5kYXJJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNhbGVuZGFyXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIzXCIsXG4gICAgICAgIHk6IFwiNFwiLFxuICAgICAgICB3aWR0aDogXCIxOFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMThcIixcbiAgICAgICAgcng6IFwiMlwiLFxuICAgICAgICByeTogXCIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTZcIixcbiAgICAgICAgeTE6IFwiMlwiLFxuICAgICAgICB4MjogXCIxNlwiLFxuICAgICAgICB5MjogXCI2XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiOFwiLFxuICAgICAgICB5MTogXCIyXCIsXG4gICAgICAgIHgyOiBcIjhcIixcbiAgICAgICAgeTI6IFwiNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjNcIixcbiAgICAgICAgeTE6IFwiMTBcIixcbiAgICAgICAgeDI6IFwiMjFcIixcbiAgICAgICAgeTI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDYW1lcmFPZmZJY29uID0ge1xuICBuYW1lOiAnQ2FtZXJhT2ZmSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jYW1lcmEtb2ZmXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMVwiLFxuICAgICAgICB5MTogXCIxXCIsXG4gICAgICAgIHgyOiBcIjIzXCIsXG4gICAgICAgIHkyOiBcIjIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjEgMjFIM2EyIDIgMCAwIDEtMi0yVjhhMiAyIDAgMCAxIDItMmgzbTMtM2g2bDIgM2g0YTIgMiAwIDAgMSAyIDJ2OS4zNG0tNy43Mi0yLjA2YTQgNCAwIDEgMS01LjU2LTUuNTZcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDYW1lcmFJY29uID0ge1xuICBuYW1lOiAnQ2FtZXJhSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jYW1lcmFcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMyAxOWEyIDIgMCAwIDEtMiAySDNhMiAyIDAgMCAxLTItMlY4YTIgMiAwIDAgMSAyLTJoNGwyLTNoNmwyIDNoNGEyIDIgMCAwIDEgMiAyelwiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTNcIixcbiAgICAgICAgcjogXCI0XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ2FzdEljb24gPSB7XG4gIG5hbWU6ICdDYXN0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jYXN0XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMiAxNi4xQTUgNSAwIDAgMSA1LjkgMjBNMiAxMi4wNUE5IDkgMCAwIDEgOS45NSAyME0yIDhWNmEyIDIgMCAwIDEgMi0yaDE2YTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMmgtNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjJcIixcbiAgICAgICAgeTE6IFwiMjBcIixcbiAgICAgICAgeDI6IFwiMi4wMVwiLFxuICAgICAgICB5MjogXCIyMFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENoZWNrQ2lyY2xlSWNvbiA9IHtcbiAgbmFtZTogJ0NoZWNrQ2lyY2xlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jaGVjay1jaXJjbGVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMiAxMS4wOFYxMmExMCAxMCAwIDEgMS01LjkzLTkuMTRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjIyIDQgMTIgMTQuMDEgOSAxMS4wMVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENoZWNrU3F1YXJlSWNvbiA9IHtcbiAgbmFtZTogJ0NoZWNrU3F1YXJlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jaGVjay1zcXVhcmVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjkgMTEgMTIgMTQgMjIgNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIxIDEydjdhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDExXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ2hlY2tJY29uID0ge1xuICBuYW1lOiAnQ2hlY2tJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNoZWNrXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIyMCA2IDkgMTcgNCAxMlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENoZXZyb25Eb3duSWNvbiA9IHtcbiAgbmFtZTogJ0NoZXZyb25Eb3duSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jaGV2cm9uLWRvd25cIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjYgOSAxMiAxNSAxOCA5XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ2hldnJvbkxlZnRJY29uID0ge1xuICBuYW1lOiAnQ2hldnJvbkxlZnRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNoZXZyb24tbGVmdFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTUgMTggOSAxMiAxNSA2XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ2hldnJvblJpZ2h0SWNvbiA9IHtcbiAgbmFtZTogJ0NoZXZyb25SaWdodEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY2hldnJvbi1yaWdodFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiOSAxOCAxNSAxMiA5IDZcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDaGV2cm9uVXBJY29uID0ge1xuICBuYW1lOiAnQ2hldnJvblVwSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jaGV2cm9uLXVwXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxOCAxNSAxMiA5IDYgMTVcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDaGV2cm9uc0Rvd25JY29uID0ge1xuICBuYW1lOiAnQ2hldnJvbnNEb3duSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jaGV2cm9ucy1kb3duXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCI3IDEzIDEyIDE4IDE3IDEzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCI3IDYgMTIgMTEgMTcgNlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENoZXZyb25zTGVmdEljb24gPSB7XG4gIG5hbWU6ICdDaGV2cm9uc0xlZnRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNoZXZyb25zLWxlZnRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjExIDE3IDYgMTIgMTEgN1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTggMTcgMTMgMTIgMTggN1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENoZXZyb25zUmlnaHRJY29uID0ge1xuICBuYW1lOiAnQ2hldnJvbnNSaWdodEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY2hldnJvbnMtcmlnaHRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjEzIDE3IDE4IDEyIDEzIDdcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjYgMTcgMTEgMTIgNiA3XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ2hldnJvbnNVcEljb24gPSB7XG4gIG5hbWU6ICdDaGV2cm9uc1VwSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jaGV2cm9ucy11cFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTcgMTEgMTIgNiA3IDExXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxNyAxOCAxMiAxMyA3IDE4XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ2hyb21lSWNvbiA9IHtcbiAgbmFtZTogJ0Nocm9tZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY2hyb21lXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMS4xN1wiLFxuICAgICAgICB5MTogXCI4XCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjhcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIzLjk1XCIsXG4gICAgICAgIHkxOiBcIjYuMDZcIixcbiAgICAgICAgeDI6IFwiOC41NFwiLFxuICAgICAgICB5MjogXCIxNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEwLjg4XCIsXG4gICAgICAgIHkxOiBcIjIxLjk0XCIsXG4gICAgICAgIHgyOiBcIjE1LjQ2XCIsXG4gICAgICAgIHkyOiBcIjE0XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ2lyY2xlSWNvbiA9IHtcbiAgbmFtZTogJ0NpcmNsZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY2lyY2xlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ2xpcGJvYXJkSWNvbiA9IHtcbiAgbmFtZTogJ0NsaXBib2FyZEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY2xpcGJvYXJkXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTYgNGgyYTIgMiAwIDAgMSAyIDJ2MTRhMiAyIDAgMCAxLTIgMkg2YTIgMiAwIDAgMS0yLTJWNmEyIDIgMCAwIDEgMi0yaDJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjhcIixcbiAgICAgICAgeTogXCIyXCIsXG4gICAgICAgIHdpZHRoOiBcIjhcIixcbiAgICAgICAgaGVpZ2h0OiBcIjRcIixcbiAgICAgICAgcng6IFwiMVwiLFxuICAgICAgICByeTogXCIxXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ2xvY2tJY29uID0ge1xuICBuYW1lOiAnQ2xvY2tJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNsb2NrXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxMiA2IDEyIDEyIDE2IDE0XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ2xvdWREcml6emxlSWNvbiA9IHtcbiAgbmFtZTogJ0Nsb3VkRHJpenpsZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY2xvdWQtZHJpenpsZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjhcIixcbiAgICAgICAgeTE6IFwiMTlcIixcbiAgICAgICAgeDI6IFwiOFwiLFxuICAgICAgICB5MjogXCIyMVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjhcIixcbiAgICAgICAgeTE6IFwiMTNcIixcbiAgICAgICAgeDI6IFwiOFwiLFxuICAgICAgICB5MjogXCIxNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE2XCIsXG4gICAgICAgIHkxOiBcIjE5XCIsXG4gICAgICAgIHgyOiBcIjE2XCIsXG4gICAgICAgIHkyOiBcIjIxXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTZcIixcbiAgICAgICAgeTE6IFwiMTNcIixcbiAgICAgICAgeDI6IFwiMTZcIixcbiAgICAgICAgeTI6IFwiMTVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIyMVwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIyM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjE1XCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjE3XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjAgMTYuNThBNSA1IDAgMCAwIDE4IDdoLTEuMjZBOCA4IDAgMSAwIDQgMTUuMjVcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDbG91ZExpZ2h0bmluZ0ljb24gPSB7XG4gIG5hbWU6ICdDbG91ZExpZ2h0bmluZ0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY2xvdWQtbGlnaHRuaW5nXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTkgMTYuOUE1IDUgMCAwIDAgMTggN2gtMS4yNmE4IDggMCAxIDAtMTEuNjIgOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTMgMTEgOSAxNyAxNSAxNyAxMSAyM1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENsb3VkT2ZmSWNvbiA9IHtcbiAgbmFtZTogJ0Nsb3VkT2ZmSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jbG91ZC1vZmZcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMi42MSAxNi45NUE1IDUgMCAwIDAgMTggMTBoLTEuMjZhOCA4IDAgMCAwLTcuMDUtNk01IDVhOCA4IDAgMCAwIDQgMTVoOWE1IDUgMCAwIDAgMS43LS4zXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMVwiLFxuICAgICAgICB5MTogXCIxXCIsXG4gICAgICAgIHgyOiBcIjIzXCIsXG4gICAgICAgIHkyOiBcIjIzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ2xvdWRSYWluSWNvbiA9IHtcbiAgbmFtZTogJ0Nsb3VkUmFpbkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY2xvdWQtcmFpblwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE2XCIsXG4gICAgICAgIHkxOiBcIjEzXCIsXG4gICAgICAgIHgyOiBcIjE2XCIsXG4gICAgICAgIHkyOiBcIjIxXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiOFwiLFxuICAgICAgICB5MTogXCIxM1wiLFxuICAgICAgICB4MjogXCI4XCIsXG4gICAgICAgIHkyOiBcIjIxXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMTVcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMCAxNi41OEE1IDUgMCAwIDAgMTggN2gtMS4yNkE4IDggMCAxIDAgNCAxNS4yNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENsb3VkU25vd0ljb24gPSB7XG4gIG5hbWU6ICdDbG91ZFNub3dJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNsb3VkLXNub3dcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMCAxNy41OEE1IDUgMCAwIDAgMTggOGgtMS4yNkE4IDggMCAxIDAgNCAxNi4yNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjhcIixcbiAgICAgICAgeTE6IFwiMTZcIixcbiAgICAgICAgeDI6IFwiOC4wMVwiLFxuICAgICAgICB5MjogXCIxNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjhcIixcbiAgICAgICAgeTE6IFwiMjBcIixcbiAgICAgICAgeDI6IFwiOC4wMVwiLFxuICAgICAgICB5MjogXCIyMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjE4XCIsXG4gICAgICAgIHgyOiBcIjEyLjAxXCIsXG4gICAgICAgIHkyOiBcIjE4XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMjJcIixcbiAgICAgICAgeDI6IFwiMTIuMDFcIixcbiAgICAgICAgeTI6IFwiMjJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNlwiLFxuICAgICAgICB5MTogXCIxNlwiLFxuICAgICAgICB4MjogXCIxNi4wMVwiLFxuICAgICAgICB5MjogXCIxNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE2XCIsXG4gICAgICAgIHkxOiBcIjIwXCIsXG4gICAgICAgIHgyOiBcIjE2LjAxXCIsXG4gICAgICAgIHkyOiBcIjIwXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ2xvdWRJY29uID0ge1xuICBuYW1lOiAnQ2xvdWRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNsb3VkXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTggMTBoLTEuMjZBOCA4IDAgMSAwIDkgMjBoOWE1IDUgMCAwIDAgMC0xMHpcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDb2RlSWNvbiA9IHtcbiAgbmFtZTogJ0NvZGVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNvZGVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjE2IDE4IDIyIDEyIDE2IDZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjggNiAyIDEyIDggMThcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDb2RlcGVuSWNvbiA9IHtcbiAgbmFtZTogJ0NvZGVwZW5JY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNvZGVwZW5cIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWdvblwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTIgMiAyMiA4LjUgMjIgMTUuNSAxMiAyMiAyIDE1LjUgMiA4LjUgMTIgMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjIyXCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjE1LjVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjIyIDguNSAxMiAxNS41IDIgOC41XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIyIDE1LjUgMTIgOC41IDIyIDE1LjVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIyXCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjguNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENvZGVzYW5kYm94SWNvbiA9IHtcbiAgbmFtZTogJ0NvZGVzYW5kYm94SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jb2Rlc2FuZGJveFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIxIDE2VjhhMiAyIDAgMCAwLTEtMS43M2wtNy00YTIgMiAwIDAgMC0yIDBsLTcgNEEyIDIgMCAwIDAgMyA4djhhMiAyIDAgMCAwIDEgMS43M2w3IDRhMiAyIDAgMCAwIDIgMGw3LTRBMiAyIDAgMCAwIDIxIDE2elwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiNy41IDQuMjEgMTIgNi44MSAxNi41IDQuMjFcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjcuNSAxOS43OSA3LjUgMTQuNiAzIDEyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIyMSAxMiAxNi41IDE0LjYgMTYuNSAxOS43OVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMy4yNyA2Ljk2IDEyIDEyLjAxIDIwLjczIDYuOTZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIyMi4wOFwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIxMlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENvZmZlZUljb24gPSB7XG4gIG5hbWU6ICdDb2ZmZWVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNvZmZlZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE4IDhoMWE0IDQgMCAwIDEgMCA4aC0xXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMiA4aDE2djlhNCA0IDAgMCAxLTQgNEg2YTQgNCAwIDAgMS00LTRWOHpcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI2XCIsXG4gICAgICAgIHkxOiBcIjFcIixcbiAgICAgICAgeDI6IFwiNlwiLFxuICAgICAgICB5MjogXCI0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTBcIixcbiAgICAgICAgeTE6IFwiMVwiLFxuICAgICAgICB4MjogXCIxMFwiLFxuICAgICAgICB5MjogXCI0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTRcIixcbiAgICAgICAgeTE6IFwiMVwiLFxuICAgICAgICB4MjogXCIxNFwiLFxuICAgICAgICB5MjogXCI0XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ29sdW1uc0ljb24gPSB7XG4gIG5hbWU6ICdDb2x1bW5zSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jb2x1bW5zXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTIgM2g3YTIgMiAwIDAgMSAyIDJ2MTRhMiAyIDAgMCAxLTIgMmgtN20wLTE4SDVhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDdtMC0xOHYxOFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENvbW1hbmRJY29uID0ge1xuICBuYW1lOiAnQ29tbWFuZEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY29tbWFuZFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE4IDNhMyAzIDAgMCAwLTMgM3YxMmEzIDMgMCAwIDAgMyAzIDMgMyAwIDAgMCAzLTMgMyAzIDAgMCAwLTMtM0g2YTMgMyAwIDAgMC0zIDMgMyAzIDAgMCAwIDMgMyAzIDMgMCAwIDAgMy0zVjZhMyAzIDAgMCAwLTMtMyAzIDMgMCAwIDAtMyAzIDMgMyAwIDAgMCAzIDNoMTJhMyAzIDAgMCAwIDMtMyAzIDMgMCAwIDAtMy0zelwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENvbXBhc3NJY29uID0ge1xuICBuYW1lOiAnQ29tcGFzc0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY29tcGFzc1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5Z29uXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxNi4yNCA3Ljc2IDE0LjEyIDE0LjEyIDcuNzYgMTYuMjQgOS44OCA5Ljg4IDE2LjI0IDcuNzZcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDb3B5SWNvbiA9IHtcbiAgbmFtZTogJ0NvcHlJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNvcHlcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjlcIixcbiAgICAgICAgeTogXCI5XCIsXG4gICAgICAgIHdpZHRoOiBcIjEzXCIsXG4gICAgICAgIGhlaWdodDogXCIxM1wiLFxuICAgICAgICByeDogXCIyXCIsXG4gICAgICAgIHJ5OiBcIjJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk01IDE1SDRhMiAyIDAgMCAxLTItMlY0YTIgMiAwIDAgMSAyLTJoOWEyIDIgMCAwIDEgMiAydjFcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDb3JuZXJEb3duTGVmdEljb24gPSB7XG4gIG5hbWU6ICdDb3JuZXJEb3duTGVmdEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY29ybmVyLWRvd24tbGVmdFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiOSAxMCA0IDE1IDkgMjBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMCA0djdhNCA0IDAgMCAxLTQgNEg0XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ29ybmVyRG93blJpZ2h0SWNvbiA9IHtcbiAgbmFtZTogJ0Nvcm5lckRvd25SaWdodEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY29ybmVyLWRvd24tcmlnaHRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjE1IDEwIDIwIDE1IDE1IDIwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNCA0djdhNCA0IDAgMCAwIDQgNGgxMlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENvcm5lckxlZnREb3duSWNvbiA9IHtcbiAgbmFtZTogJ0Nvcm5lckxlZnREb3duSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jb3JuZXItbGVmdC1kb3duXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxNCAxNSA5IDIwIDQgMTVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMCA0aC03YTQgNCAwIDAgMC00IDR2MTJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDb3JuZXJMZWZ0VXBJY29uID0ge1xuICBuYW1lOiAnQ29ybmVyTGVmdFVwSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jb3JuZXItbGVmdC11cFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTQgOSA5IDQgNCA5XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjAgMjBoLTdhNCA0IDAgMCAxLTQtNFY0XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ29ybmVyUmlnaHREb3duSWNvbiA9IHtcbiAgbmFtZTogJ0Nvcm5lclJpZ2h0RG93bkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY29ybmVyLXJpZ2h0LWRvd25cIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjEwIDE1IDE1IDIwIDIwIDE1XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNCA0aDdhNCA0IDAgMCAxIDQgNHYxMlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENvcm5lclJpZ2h0VXBJY29uID0ge1xuICBuYW1lOiAnQ29ybmVyUmlnaHRVcEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY29ybmVyLXJpZ2h0LXVwXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxMCA5IDE1IDQgMjAgOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTQgMjBoN2E0IDQgMCAwIDAgNC00VjRcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDb3JuZXJVcExlZnRJY29uID0ge1xuICBuYW1lOiAnQ29ybmVyVXBMZWZ0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jb3JuZXItdXAtbGVmdFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiOSAxNCA0IDkgOSA0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjAgMjB2LTdhNCA0IDAgMCAwLTQtNEg0XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ29ybmVyVXBSaWdodEljb24gPSB7XG4gIG5hbWU6ICdDb3JuZXJVcFJpZ2h0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jb3JuZXItdXAtcmlnaHRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjE1IDE0IDIwIDkgMTUgNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTQgMjB2LTdhNCA0IDAgMCAxIDQtNGgxMlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENwdUljb24gPSB7XG4gIG5hbWU6ICdDcHVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWNwdVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiNFwiLFxuICAgICAgICB5OiBcIjRcIixcbiAgICAgICAgd2lkdGg6IFwiMTZcIixcbiAgICAgICAgaGVpZ2h0OiBcIjE2XCIsXG4gICAgICAgIHJ4OiBcIjJcIixcbiAgICAgICAgcnk6IFwiMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiOVwiLFxuICAgICAgICB5OiBcIjlcIixcbiAgICAgICAgd2lkdGg6IFwiNlwiLFxuICAgICAgICBoZWlnaHQ6IFwiNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjlcIixcbiAgICAgICAgeTE6IFwiMVwiLFxuICAgICAgICB4MjogXCI5XCIsXG4gICAgICAgIHkyOiBcIjRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNVwiLFxuICAgICAgICB5MTogXCIxXCIsXG4gICAgICAgIHgyOiBcIjE1XCIsXG4gICAgICAgIHkyOiBcIjRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI5XCIsXG4gICAgICAgIHkxOiBcIjIwXCIsXG4gICAgICAgIHgyOiBcIjlcIixcbiAgICAgICAgeTI6IFwiMjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNVwiLFxuICAgICAgICB5MTogXCIyMFwiLFxuICAgICAgICB4MjogXCIxNVwiLFxuICAgICAgICB5MjogXCIyM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIwXCIsXG4gICAgICAgIHkxOiBcIjlcIixcbiAgICAgICAgeDI6IFwiMjNcIixcbiAgICAgICAgeTI6IFwiOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIwXCIsXG4gICAgICAgIHkxOiBcIjE0XCIsXG4gICAgICAgIHgyOiBcIjIzXCIsXG4gICAgICAgIHkyOiBcIjE0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMVwiLFxuICAgICAgICB5MTogXCI5XCIsXG4gICAgICAgIHgyOiBcIjRcIixcbiAgICAgICAgeTI6IFwiOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjFcIixcbiAgICAgICAgeTE6IFwiMTRcIixcbiAgICAgICAgeDI6IFwiNFwiLFxuICAgICAgICB5MjogXCIxNFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIENyZWRpdENhcmRJY29uID0ge1xuICBuYW1lOiAnQ3JlZGl0Q2FyZEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItY3JlZGl0LWNhcmRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjFcIixcbiAgICAgICAgeTogXCI0XCIsXG4gICAgICAgIHdpZHRoOiBcIjIyXCIsXG4gICAgICAgIGhlaWdodDogXCIxNlwiLFxuICAgICAgICByeDogXCIyXCIsXG4gICAgICAgIHJ5OiBcIjJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxXCIsXG4gICAgICAgIHkxOiBcIjEwXCIsXG4gICAgICAgIHgyOiBcIjIzXCIsXG4gICAgICAgIHkyOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgQ3JvcEljb24gPSB7XG4gIG5hbWU6ICdDcm9wSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jcm9wXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNi4xMyAxTDYgMTZhMiAyIDAgMCAwIDIgMmgxNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTEgNi4xM0wxNiA2YTIgMiAwIDAgMSAyIDJ2MTVcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBDcm9zc2hhaXJJY29uID0ge1xuICBuYW1lOiAnQ3Jvc3NoYWlySWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1jcm9zc2hhaXJcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMlwiLFxuICAgICAgICB5MTogXCIxMlwiLFxuICAgICAgICB4MjogXCIxOFwiLFxuICAgICAgICB5MjogXCIxMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjZcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiMlwiLFxuICAgICAgICB5MjogXCIxMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjZcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjIyXCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjE4XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgRGF0YWJhc2VJY29uID0ge1xuICBuYW1lOiAnRGF0YWJhc2VJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWRhdGFiYXNlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImVsbGlwc2VcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiNVwiLFxuICAgICAgICByeDogXCI5XCIsXG4gICAgICAgIHJ5OiBcIjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMSAxMmMwIDEuNjYtNCAzLTkgM3MtOS0xLjM0LTktM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTMgNXYxNGMwIDEuNjYgNCAzIDkgM3M5LTEuMzQgOS0zVjVcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBEZWxldGVJY29uID0ge1xuICBuYW1lOiAnRGVsZXRlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1kZWxldGVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMSA0SDhsLTcgOCA3IDhoMTNhMiAyIDAgMCAwIDItMlY2YTIgMiAwIDAgMC0yLTJ6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMThcIixcbiAgICAgICAgeTE6IFwiOVwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIxNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjlcIixcbiAgICAgICAgeDI6IFwiMThcIixcbiAgICAgICAgeTI6IFwiMTVcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBEaXNjSWNvbiA9IHtcbiAgbmFtZTogJ0Rpc2NJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWRpc2NcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiM1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIERpdmlkZUNpcmNsZUljb24gPSB7XG4gIG5hbWU6ICdEaXZpZGVDaXJjbGVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWRpdmlkZS1jaXJjbGVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI4XCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjE2XCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMTZcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMTZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCI4XCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjhcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBEaXZpZGVTcXVhcmVJY29uID0ge1xuICBuYW1lOiAnRGl2aWRlU3F1YXJlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1kaXZpZGUtc3F1YXJlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIzXCIsXG4gICAgICAgIHk6IFwiM1wiLFxuICAgICAgICB3aWR0aDogXCIxOFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMThcIixcbiAgICAgICAgcng6IFwiMlwiLFxuICAgICAgICByeTogXCIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiOFwiLFxuICAgICAgICB5MTogXCIxMlwiLFxuICAgICAgICB4MjogXCIxNlwiLFxuICAgICAgICB5MjogXCIxMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjE2XCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjE2XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiOFwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCI4XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgRGl2aWRlSWNvbiA9IHtcbiAgbmFtZTogJ0RpdmlkZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZGl2aWRlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCI2XCIsXG4gICAgICAgIHI6IFwiMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjVcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiMTlcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjE4XCIsXG4gICAgICAgIHI6IFwiMlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIERvbGxhclNpZ25JY29uID0ge1xuICBuYW1lOiAnRG9sbGFyU2lnbkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZG9sbGFyLXNpZ25cIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIxXCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTcgNUg5LjVhMy41IDMuNSAwIDAgMCAwIDdoNWEzLjUgMy41IDAgMCAxIDAgN0g2XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgRG93bmxvYWRDbG91ZEljb24gPSB7XG4gIG5hbWU6ICdEb3dubG9hZENsb3VkSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1kb3dubG9hZC1jbG91ZFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiOCAxNyAxMiAyMSAxNiAxN1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjIxXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjAuODggMTguMDlBNSA1IDAgMCAwIDE4IDloLTEuMjZBOCA4IDAgMSAwIDMgMTYuMjlcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBEb3dubG9hZEljb24gPSB7XG4gIG5hbWU6ICdEb3dubG9hZEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZG93bmxvYWRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMSAxNXY0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0ydi00XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCI3IDEwIDEyIDE1IDE3IDEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMTVcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiM1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIERyaWJiYmxlSWNvbiA9IHtcbiAgbmFtZTogJ0RyaWJiYmxlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1kcmliYmJsZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTguNTYgMi43NWM0LjM3IDYuMDMgNi4wMiA5LjQyIDguMDMgMTcuNzJtMi41NC0xNS4zOGMtMy43MiA0LjM1LTguOTQgNS42Ni0xNi44OCA1Ljg1bTE5LjUgMS45Yy0zLjUtLjkzLTYuNjMtLjgyLTguOTQgMC0yLjU4LjkyLTUuMDEgMi44Ni03LjQ0IDYuMzJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBEcm9wbGV0SWNvbiA9IHtcbiAgbmFtZTogJ0Ryb3BsZXRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWRyb3BsZXRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xMiAyLjY5bDUuNjYgNS42NmE4IDggMCAxIDEtMTEuMzEgMHpcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBFZGl0Mkljb24gPSB7XG4gIG5hbWU6ICdFZGl0Mkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZWRpdC0yXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTcgM2EyLjgyOCAyLjgyOCAwIDEgMSA0IDRMNy41IDIwLjUgMiAyMmwxLjUtNS41TDE3IDN6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgRWRpdDNJY29uID0ge1xuICBuYW1lOiAnRWRpdDNJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWVkaXQtM1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTEyIDIwaDlcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNi41IDMuNWEyLjEyMSAyLjEyMSAwIDAgMSAzIDNMNyAxOWwtNCAxIDEtNEwxNi41IDMuNXpcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBFZGl0SWNvbiA9IHtcbiAgbmFtZTogJ0VkaXRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWVkaXRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xMSA0SDRhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDE0YTIgMiAwIDAgMCAyLTJ2LTdcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xOC41IDIuNWEyLjEyMSAyLjEyMSAwIDAgMSAzIDNMMTIgMTVsLTQgMSAxLTQgOS41LTkuNXpcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBFeHRlcm5hbExpbmtJY29uID0ge1xuICBuYW1lOiAnRXh0ZXJuYWxMaW5rSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1leHRlcm5hbC1saW5rXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTggMTN2NmEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMlY4YTIgMiAwIDAgMSAyLTJoNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTUgMyAyMSAzIDIxIDlcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMFwiLFxuICAgICAgICB5MTogXCIxNFwiLFxuICAgICAgICB4MjogXCIyMVwiLFxuICAgICAgICB5MjogXCIzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgRXllT2ZmSWNvbiA9IHtcbiAgbmFtZTogJ0V5ZU9mZkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZXllLW9mZlwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE3Ljk0IDE3Ljk0QTEwLjA3IDEwLjA3IDAgMCAxIDEyIDIwYy03IDAtMTEtOC0xMS04YTE4LjQ1IDE4LjQ1IDAgMCAxIDUuMDYtNS45NE05LjkgNC4yNEE5LjEyIDkuMTIgMCAwIDEgMTIgNGM3IDAgMTEgOCAxMSA4YTE4LjUgMTguNSAwIDAgMS0yLjE2IDMuMTltLTYuNzItMS4wN2EzIDMgMCAxIDEtNC4yNC00LjI0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMVwiLFxuICAgICAgICB5MTogXCIxXCIsXG4gICAgICAgIHgyOiBcIjIzXCIsXG4gICAgICAgIHkyOiBcIjIzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgRXllSWNvbiA9IHtcbiAgbmFtZTogJ0V5ZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZXllXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMSAxMnM0LTggMTEtOCAxMSA4IDExIDgtNCA4LTExIDgtMTEtOC0xMS04elwiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgRmFjZWJvb2tJY29uID0ge1xuICBuYW1lOiAnRmFjZWJvb2tJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWZhY2Vib29rXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTggMmgtM2E1IDUgMCAwIDAtNSA1djNIN3Y0aDN2OGg0di04aDNsMS00aC00VjdhMSAxIDAgMCAxIDEtMWgzelwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEZhc3RGb3J3YXJkSWNvbiA9IHtcbiAgbmFtZTogJ0Zhc3RGb3J3YXJkSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1mYXN0LWZvcndhcmRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWdvblwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTMgMTkgMjIgMTIgMTMgNSAxMyAxOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5Z29uXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIyIDE5IDExIDEyIDIgNSAyIDE5XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgRmVhdGhlckljb24gPSB7XG4gIG5hbWU6ICdGZWF0aGVySWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1mZWF0aGVyXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjAuMjQgMTIuMjRhNiA2IDAgMCAwLTguNDktOC40OUw1IDEwLjVWMTloOC41elwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE2XCIsXG4gICAgICAgIHkxOiBcIjhcIixcbiAgICAgICAgeDI6IFwiMlwiLFxuICAgICAgICB5MjogXCIyMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE3LjVcIixcbiAgICAgICAgeTE6IFwiMTVcIixcbiAgICAgICAgeDI6IFwiOVwiLFxuICAgICAgICB5MjogXCIxNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEZpZ21hSWNvbiA9IHtcbiAgbmFtZTogJ0ZpZ21hSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1maWdtYVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTUgNS41QTMuNSAzLjUgMCAwIDEgOC41IDJIMTJ2N0g4LjVBMy41IDMuNSAwIDAgMSA1IDUuNXpcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xMiAyaDMuNWEzLjUgMy41IDAgMSAxIDAgN0gxMlYyelwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTEyIDEyLjVhMy41IDMuNSAwIDEgMSA3IDAgMy41IDMuNSAwIDEgMS03IDB6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNSAxOS41QTMuNSAzLjUgMCAwIDEgOC41IDE2SDEydjMuNWEzLjUgMy41IDAgMSAxLTcgMHpcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk01IDEyLjVBMy41IDMuNSAwIDAgMSA4LjUgOUgxMnY3SDguNUEzLjUgMy41IDAgMCAxIDUgMTIuNXpcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBGaWxlTWludXNJY29uID0ge1xuICBuYW1lOiAnRmlsZU1pbnVzSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1maWxlLW1pbnVzXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTQgMkg2YTIgMiAwIDAgMC0yIDJ2MTZhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjh6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxNCAyIDE0IDggMjAgOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjlcIixcbiAgICAgICAgeTE6IFwiMTVcIixcbiAgICAgICAgeDI6IFwiMTVcIixcbiAgICAgICAgeTI6IFwiMTVcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBGaWxlUGx1c0ljb24gPSB7XG4gIG5hbWU6ICdGaWxlUGx1c0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZmlsZS1wbHVzXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTQgMkg2YTIgMiAwIDAgMC0yIDJ2MTZhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjh6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxNCAyIDE0IDggMjAgOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjE4XCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiOVwiLFxuICAgICAgICB5MTogXCIxNVwiLFxuICAgICAgICB4MjogXCIxNVwiLFxuICAgICAgICB5MjogXCIxNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEZpbGVUZXh0SWNvbiA9IHtcbiAgbmFtZTogJ0ZpbGVUZXh0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1maWxlLXRleHRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNCAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWOHpcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjE0IDIgMTQgOCAyMCA4XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTZcIixcbiAgICAgICAgeTE6IFwiMTNcIixcbiAgICAgICAgeDI6IFwiOFwiLFxuICAgICAgICB5MjogXCIxM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE2XCIsXG4gICAgICAgIHkxOiBcIjE3XCIsXG4gICAgICAgIHgyOiBcIjhcIixcbiAgICAgICAgeTI6IFwiMTdcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjEwIDkgOSA5IDggOVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEZpbGVJY29uID0ge1xuICBuYW1lOiAnRmlsZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZmlsZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTEzIDJINmEyIDIgMCAwIDAtMiAydjE2YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY5elwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTMgMiAxMyA5IDIwIDlcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBGaWxtSWNvbiA9IHtcbiAgbmFtZTogJ0ZpbG1JY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWZpbG1cIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjJcIixcbiAgICAgICAgeTogXCIyXCIsXG4gICAgICAgIHdpZHRoOiBcIjIwXCIsXG4gICAgICAgIGhlaWdodDogXCIyMFwiLFxuICAgICAgICByeDogXCIyLjE4XCIsXG4gICAgICAgIHJ5OiBcIjIuMThcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI3XCIsXG4gICAgICAgIHkxOiBcIjJcIixcbiAgICAgICAgeDI6IFwiN1wiLFxuICAgICAgICB5MjogXCIyMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE3XCIsXG4gICAgICAgIHkxOiBcIjJcIixcbiAgICAgICAgeDI6IFwiMTdcIixcbiAgICAgICAgeTI6IFwiMjJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyXCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjIyXCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMlwiLFxuICAgICAgICB5MTogXCI3XCIsXG4gICAgICAgIHgyOiBcIjdcIixcbiAgICAgICAgeTI6IFwiN1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjJcIixcbiAgICAgICAgeTE6IFwiMTdcIixcbiAgICAgICAgeDI6IFwiN1wiLFxuICAgICAgICB5MjogXCIxN1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE3XCIsXG4gICAgICAgIHkxOiBcIjE3XCIsXG4gICAgICAgIHgyOiBcIjIyXCIsXG4gICAgICAgIHkyOiBcIjE3XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTdcIixcbiAgICAgICAgeTE6IFwiN1wiLFxuICAgICAgICB4MjogXCIyMlwiLFxuICAgICAgICB5MjogXCI3XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgRmlsdGVySWNvbiA9IHtcbiAgbmFtZTogJ0ZpbHRlckljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZmlsdGVyXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlnb25cIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjIyIDMgMiAzIDEwIDEyLjQ2IDEwIDE5IDE0IDIxIDE0IDEyLjQ2IDIyIDNcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBGbGFnSWNvbiA9IHtcbiAgbmFtZTogJ0ZsYWdJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWZsYWdcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk00IDE1czEtMSA0LTEgNSAyIDggMiA0LTEgNC0xVjNzLTEgMS00IDEtNS0yLTgtMi00IDEtNCAxelwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjRcIixcbiAgICAgICAgeTE6IFwiMjJcIixcbiAgICAgICAgeDI6IFwiNFwiLFxuICAgICAgICB5MjogXCIxNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEZvbGRlck1pbnVzSWNvbiA9IHtcbiAgbmFtZTogJ0ZvbGRlck1pbnVzSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1mb2xkZXItbWludXNcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMiAxOWEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoNWwyIDNoOWEyIDIgMCAwIDEgMiAyelwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjlcIixcbiAgICAgICAgeTE6IFwiMTRcIixcbiAgICAgICAgeDI6IFwiMTVcIixcbiAgICAgICAgeTI6IFwiMTRcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBGb2xkZXJQbHVzSWNvbiA9IHtcbiAgbmFtZTogJ0ZvbGRlclBsdXNJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWZvbGRlci1wbHVzXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjIgMTlhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDVsMiAzaDlhMiAyIDAgMCAxIDIgMnpcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIxMVwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIxN1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjlcIixcbiAgICAgICAgeTE6IFwiMTRcIixcbiAgICAgICAgeDI6IFwiMTVcIixcbiAgICAgICAgeTI6IFwiMTRcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBGb2xkZXJJY29uID0ge1xuICBuYW1lOiAnRm9sZGVySWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1mb2xkZXJcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMiAxOWEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoNWwyIDNoOWEyIDIgMCAwIDEgMiAyelwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEZyYW1lckljb24gPSB7XG4gIG5hbWU6ICdGcmFtZXJJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWZyYW1lclwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTUgMTZWOWgxNFYySDVsMTQgMTRoLTdtLTcgMGw3IDd2LTdtLTcgMGg3XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgRnJvd25JY29uID0ge1xuICBuYW1lOiAnRnJvd25JY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWZyb3duXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTYgMTZzLTEuNS0yLTQtMi00IDItNCAyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiOVwiLFxuICAgICAgICB5MTogXCI5XCIsXG4gICAgICAgIHgyOiBcIjkuMDFcIixcbiAgICAgICAgeTI6IFwiOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE1XCIsXG4gICAgICAgIHkxOiBcIjlcIixcbiAgICAgICAgeDI6IFwiMTUuMDFcIixcbiAgICAgICAgeTI6IFwiOVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEdpZnRJY29uID0ge1xuICBuYW1lOiAnR2lmdEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZ2lmdFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMjAgMTIgMjAgMjIgNCAyMiA0IDEyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIyXCIsXG4gICAgICAgIHk6IFwiN1wiLFxuICAgICAgICB3aWR0aDogXCIyMFwiLFxuICAgICAgICBoZWlnaHQ6IFwiNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjIyXCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjdcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xMiA3SDcuNWEyLjUgMi41IDAgMCAxIDAtNUMxMSAyIDEyIDcgMTIgN3pcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xMiA3aDQuNWEyLjUgMi41IDAgMCAwIDAtNUMxMyAyIDEyIDcgMTIgN3pcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBHaXRCcmFuY2hJY29uID0ge1xuICBuYW1lOiAnR2l0QnJhbmNoSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1naXQtYnJhbmNoXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiNlwiLFxuICAgICAgICB5MTogXCIzXCIsXG4gICAgICAgIHgyOiBcIjZcIixcbiAgICAgICAgeTI6IFwiMTVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjE4XCIsXG4gICAgICAgIGN5OiBcIjZcIixcbiAgICAgICAgcjogXCIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCI2XCIsXG4gICAgICAgIGN5OiBcIjE4XCIsXG4gICAgICAgIHI6IFwiM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE4IDlhOSA5IDAgMCAxLTkgOVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEdpdENvbW1pdEljb24gPSB7XG4gIG5hbWU6ICdHaXRDb21taXRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWdpdC1jb21taXRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEuMDVcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiN1wiLFxuICAgICAgICB5MjogXCIxMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE3LjAxXCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjIyLjk2XCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgR2l0TWVyZ2VJY29uID0ge1xuICBuYW1lOiAnR2l0TWVyZ2VJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWdpdC1tZXJnZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMThcIixcbiAgICAgICAgY3k6IFwiMThcIixcbiAgICAgICAgcjogXCIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCI2XCIsXG4gICAgICAgIGN5OiBcIjZcIixcbiAgICAgICAgcjogXCIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNiAyMVY5YTkgOSAwIDAgMCA5IDlcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBHaXRQdWxsUmVxdWVzdEljb24gPSB7XG4gIG5hbWU6ICdHaXRQdWxsUmVxdWVzdEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZ2l0LXB1bGwtcmVxdWVzdFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMThcIixcbiAgICAgICAgY3k6IFwiMThcIixcbiAgICAgICAgcjogXCIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCI2XCIsXG4gICAgICAgIGN5OiBcIjZcIixcbiAgICAgICAgcjogXCIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTMgNmgzYTIgMiAwIDAgMSAyIDJ2N1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjZcIixcbiAgICAgICAgeTE6IFwiOVwiLFxuICAgICAgICB4MjogXCI2XCIsXG4gICAgICAgIHkyOiBcIjIxXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgR2l0aHViSWNvbiA9IHtcbiAgbmFtZTogJ0dpdGh1Ykljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItZ2l0aHViXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNOSAxOWMtNSAxLjUtNS0yLjUtNy0zbTE0IDZ2LTMuODdhMy4zNyAzLjM3IDAgMCAwLS45NC0yLjYxYzMuMTQtLjM1IDYuNDQtMS41NCA2LjQ0LTdBNS40NCA1LjQ0IDAgMCAwIDIwIDQuNzcgNS4wNyA1LjA3IDAgMCAwIDE5LjkxIDFTMTguNzMuNjUgMTYgMi40OGExMy4zOCAxMy4zOCAwIDAgMC03IDBDNi4yNy42NSA1LjA5IDEgNS4wOSAxQTUuMDcgNS4wNyAwIDAgMCA1IDQuNzdhNS40NCA1LjQ0IDAgMCAwLTEuNSAzLjc4YzAgNS40MiAzLjMgNi42MSA2LjQ0IDdBMy4zNyAzLjM3IDAgMCAwIDkgMTguMTNWMjJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBHaXRsYWJJY29uID0ge1xuICBuYW1lOiAnR2l0bGFiSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1naXRsYWJcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMi42NSAxNC4zOUwxMiAyMi4xMyAxLjM1IDE0LjM5YS44NC44NCAwIDAgMS0uMy0uOTRsMS4yMi0zLjc4IDIuNDQtNy41MUEuNDIuNDIgMCAwIDEgNC44MiAyYS40My40MyAwIDAgMSAuNTggMCAuNDIuNDIgMCAwIDEgLjExLjE4bDIuNDQgNy40OWg4LjFsMi40NC03LjUxQS40Mi40MiAwIDAgMSAxOC42IDJhLjQzLjQzIDAgMCAxIC41OCAwIC40Mi40MiAwIDAgMSAuMTEuMThsMi40NCA3LjUxTDIzIDEzLjQ1YS44NC44NCAwIDAgMS0uMzUuOTR6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgR2xvYmVJY29uID0ge1xuICBuYW1lOiAnR2xvYmVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWdsb2JlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMlwiLFxuICAgICAgICB5MTogXCIxMlwiLFxuICAgICAgICB4MjogXCIyMlwiLFxuICAgICAgICB5MjogXCIxMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTEyIDJhMTUuMyAxNS4zIDAgMCAxIDQgMTAgMTUuMyAxNS4zIDAgMCAxLTQgMTAgMTUuMyAxNS4zIDAgMCAxLTQtMTAgMTUuMyAxNS4zIDAgMCAxIDQtMTB6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgR3JpZEljb24gPSB7XG4gIG5hbWU6ICdHcmlkSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1ncmlkXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIzXCIsXG4gICAgICAgIHk6IFwiM1wiLFxuICAgICAgICB3aWR0aDogXCI3XCIsXG4gICAgICAgIGhlaWdodDogXCI3XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIxNFwiLFxuICAgICAgICB5OiBcIjNcIixcbiAgICAgICAgd2lkdGg6IFwiN1wiLFxuICAgICAgICBoZWlnaHQ6IFwiN1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiMTRcIixcbiAgICAgICAgeTogXCIxNFwiLFxuICAgICAgICB3aWR0aDogXCI3XCIsXG4gICAgICAgIGhlaWdodDogXCI3XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIzXCIsXG4gICAgICAgIHk6IFwiMTRcIixcbiAgICAgICAgd2lkdGg6IFwiN1wiLFxuICAgICAgICBoZWlnaHQ6IFwiN1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEhhcmREcml2ZUljb24gPSB7XG4gIG5hbWU6ICdIYXJkRHJpdmVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWhhcmQtZHJpdmVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMlwiLFxuICAgICAgICB5MTogXCIxMlwiLFxuICAgICAgICB4MjogXCIyXCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNS40NSA1LjExTDIgMTJ2NmEyIDIgMCAwIDAgMiAyaDE2YTIgMiAwIDAgMCAyLTJ2LTZsLTMuNDUtNi44OUEyIDIgMCAwIDAgMTYuNzYgNEg3LjI0YTIgMiAwIDAgMC0xLjc5IDEuMTF6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiNlwiLFxuICAgICAgICB5MTogXCIxNlwiLFxuICAgICAgICB4MjogXCI2LjAxXCIsXG4gICAgICAgIHkyOiBcIjE2XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTBcIixcbiAgICAgICAgeTE6IFwiMTZcIixcbiAgICAgICAgeDI6IFwiMTAuMDFcIixcbiAgICAgICAgeTI6IFwiMTZcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBIYXNoSWNvbiA9IHtcbiAgbmFtZTogJ0hhc2hJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWhhc2hcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI0XCIsXG4gICAgICAgIHkxOiBcIjlcIixcbiAgICAgICAgeDI6IFwiMjBcIixcbiAgICAgICAgeTI6IFwiOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjRcIixcbiAgICAgICAgeTE6IFwiMTVcIixcbiAgICAgICAgeDI6IFwiMjBcIixcbiAgICAgICAgeTI6IFwiMTVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMFwiLFxuICAgICAgICB5MTogXCIzXCIsXG4gICAgICAgIHgyOiBcIjhcIixcbiAgICAgICAgeTI6IFwiMjFcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNlwiLFxuICAgICAgICB5MTogXCIzXCIsXG4gICAgICAgIHgyOiBcIjE0XCIsXG4gICAgICAgIHkyOiBcIjIxXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgSGVhZHBob25lc0ljb24gPSB7XG4gIG5hbWU6ICdIZWFkcGhvbmVzSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1oZWFkcGhvbmVzXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMyAxOHYtNmE5IDkgMCAwIDEgMTggMHY2XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjEgMTlhMiAyIDAgMCAxLTIgMmgtMWEyIDIgMCAwIDEtMi0ydi0zYTIgMiAwIDAgMSAyLTJoM3pNMyAxOWEyIDIgMCAwIDAgMiAyaDFhMiAyIDAgMCAwIDItMnYtM2EyIDIgMCAwIDAtMi0ySDN6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgSGVhcnRJY29uID0ge1xuICBuYW1lOiAnSGVhcnRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWhlYXJ0XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjAuODQgNC42MWE1LjUgNS41IDAgMCAwLTcuNzggMEwxMiA1LjY3bC0xLjA2LTEuMDZhNS41IDUuNSAwIDAgMC03Ljc4IDcuNzhsMS4wNiAxLjA2TDEyIDIxLjIzbDcuNzgtNy43OCAxLjA2LTEuMDZhNS41IDUuNSAwIDAgMCAwLTcuNzh6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgSGVscENpcmNsZUljb24gPSB7XG4gIG5hbWU6ICdIZWxwQ2lyY2xlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1oZWxwLWNpcmNsZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTkuMDkgOWEzIDMgMCAwIDEgNS44MyAxYzAgMi0zIDMtMyAzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMTdcIixcbiAgICAgICAgeDI6IFwiMTIuMDFcIixcbiAgICAgICAgeTI6IFwiMTdcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBIZXhhZ29uSWNvbiA9IHtcbiAgbmFtZTogJ0hleGFnb25JY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWhleGFnb25cIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMSAxNlY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzNsNyA0YTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNnpcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBIb21lSWNvbiA9IHtcbiAgbmFtZTogJ0hvbWVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWhvbWVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0zIDlsOS03IDkgN3YxMWEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnpcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjkgMjIgOSAxMiAxNSAxMiAxNSAyMlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEltYWdlSWNvbiA9IHtcbiAgbmFtZTogJ0ltYWdlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1pbWFnZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiM1wiLFxuICAgICAgICB5OiBcIjNcIixcbiAgICAgICAgd2lkdGg6IFwiMThcIixcbiAgICAgICAgaGVpZ2h0OiBcIjE4XCIsXG4gICAgICAgIHJ4OiBcIjJcIixcbiAgICAgICAgcnk6IFwiMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiOC41XCIsXG4gICAgICAgIGN5OiBcIjguNVwiLFxuICAgICAgICByOiBcIjEuNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMjEgMTUgMTYgMTAgNSAyMVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEluYm94SWNvbiA9IHtcbiAgbmFtZTogJ0luYm94SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1pbmJveFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMjIgMTIgMTYgMTIgMTQgMTUgMTAgMTUgOCAxMiAyIDEyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNS40NSA1LjExTDIgMTJ2NmEyIDIgMCAwIDAgMiAyaDE2YTIgMiAwIDAgMCAyLTJ2LTZsLTMuNDUtNi44OUEyIDIgMCAwIDAgMTYuNzYgNEg3LjI0YTIgMiAwIDAgMC0xLjc5IDEuMTF6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgSW5mb0ljb24gPSB7XG4gIG5hbWU6ICdJbmZvSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1pbmZvXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMTZcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCI4XCIsXG4gICAgICAgIHgyOiBcIjEyLjAxXCIsXG4gICAgICAgIHkyOiBcIjhcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBJbnN0YWdyYW1JY29uID0ge1xuICBuYW1lOiAnSW5zdGFncmFtSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1pbnN0YWdyYW1cIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjJcIixcbiAgICAgICAgeTogXCIyXCIsXG4gICAgICAgIHdpZHRoOiBcIjIwXCIsXG4gICAgICAgIGhlaWdodDogXCIyMFwiLFxuICAgICAgICByeDogXCI1XCIsXG4gICAgICAgIHJ5OiBcIjVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNiAxMS4zN0E0IDQgMCAxIDEgMTIuNjMgOCA0IDQgMCAwIDEgMTYgMTEuMzd6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTcuNVwiLFxuICAgICAgICB5MTogXCI2LjVcIixcbiAgICAgICAgeDI6IFwiMTcuNTFcIixcbiAgICAgICAgeTI6IFwiNi41XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgSXRhbGljSWNvbiA9IHtcbiAgbmFtZTogJ0l0YWxpY0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItaXRhbGljXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTlcIixcbiAgICAgICAgeTE6IFwiNFwiLFxuICAgICAgICB4MjogXCIxMFwiLFxuICAgICAgICB5MjogXCI0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTRcIixcbiAgICAgICAgeTE6IFwiMjBcIixcbiAgICAgICAgeDI6IFwiNVwiLFxuICAgICAgICB5MjogXCIyMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE1XCIsXG4gICAgICAgIHkxOiBcIjRcIixcbiAgICAgICAgeDI6IFwiOVwiLFxuICAgICAgICB5MjogXCIyMFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIEtleUljb24gPSB7XG4gIG5hbWU6ICdLZXlJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWtleVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIxIDJsLTIgMm0tNy42MSA3LjYxYTUuNSA1LjUgMCAxIDEtNy43NzggNy43NzggNS41IDUuNSAwIDAgMSA3Ljc3Ny03Ljc3N3ptMCAwTDE1LjUgNy41bTAgMGwzIDNMMjIgN2wtMy0zbS0zLjUgMy41TDE5IDRcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBMYXllcnNJY29uID0ge1xuICBuYW1lOiAnTGF5ZXJzSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1sYXllcnNcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWdvblwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTIgMiAyIDcgMTIgMTIgMjIgNyAxMiAyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIyIDE3IDEyIDIyIDIyIDE3XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIyIDEyIDEyIDE3IDIyIDEyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTGF5b3V0SWNvbiA9IHtcbiAgbmFtZTogJ0xheW91dEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbGF5b3V0XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIzXCIsXG4gICAgICAgIHk6IFwiM1wiLFxuICAgICAgICB3aWR0aDogXCIxOFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMThcIixcbiAgICAgICAgcng6IFwiMlwiLFxuICAgICAgICByeTogXCIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiM1wiLFxuICAgICAgICB5MTogXCI5XCIsXG4gICAgICAgIHgyOiBcIjIxXCIsXG4gICAgICAgIHkyOiBcIjlcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI5XCIsXG4gICAgICAgIHkxOiBcIjIxXCIsXG4gICAgICAgIHgyOiBcIjlcIixcbiAgICAgICAgeTI6IFwiOVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIExpZmVCdW95SWNvbiA9IHtcbiAgbmFtZTogJ0xpZmVCdW95SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1saWZlLWJ1b3lcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjQuOTNcIixcbiAgICAgICAgeTE6IFwiNC45M1wiLFxuICAgICAgICB4MjogXCI5LjE3XCIsXG4gICAgICAgIHkyOiBcIjkuMTdcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNC44M1wiLFxuICAgICAgICB5MTogXCIxNC44M1wiLFxuICAgICAgICB4MjogXCIxOS4wN1wiLFxuICAgICAgICB5MjogXCIxOS4wN1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE0LjgzXCIsXG4gICAgICAgIHkxOiBcIjkuMTdcIixcbiAgICAgICAgeDI6IFwiMTkuMDdcIixcbiAgICAgICAgeTI6IFwiNC45M1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE0LjgzXCIsXG4gICAgICAgIHkxOiBcIjkuMTdcIixcbiAgICAgICAgeDI6IFwiMTguMzZcIixcbiAgICAgICAgeTI6IFwiNS42NFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjQuOTNcIixcbiAgICAgICAgeTE6IFwiMTkuMDdcIixcbiAgICAgICAgeDI6IFwiOS4xN1wiLFxuICAgICAgICB5MjogXCIxNC44M1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIExpbmsySWNvbiA9IHtcbiAgbmFtZTogJ0xpbmsySWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1saW5rLTJcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNSA3aDNhNSA1IDAgMCAxIDUgNSA1IDUgMCAwIDEtNSA1aC0zbS02IDBINmE1IDUgMCAwIDEtNS01IDUgNSAwIDAgMSA1LTVoM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjhcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiMTZcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBMaW5rSWNvbiA9IHtcbiAgbmFtZTogJ0xpbmtJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWxpbmtcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xMCAxM2E1IDUgMCAwIDAgNy41NC41NGwzLTNhNSA1IDAgMCAwLTcuMDctNy4wN2wtMS43MiAxLjcxXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTQgMTFhNSA1IDAgMCAwLTcuNTQtLjU0bC0zIDNhNSA1IDAgMCAwIDcuMDcgNy4wN2wxLjcxLTEuNzFcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBMaW5rZWRpbkljb24gPSB7XG4gIG5hbWU6ICdMaW5rZWRpbkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbGlua2VkaW5cIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNiA4YTYgNiAwIDAgMSA2IDZ2N2gtNHYtN2EyIDIgMCAwIDAtMi0yIDIgMiAwIDAgMC0yIDJ2N2gtNHYtN2E2IDYgMCAwIDEgNi02elwiXG4gICAgICB9XG4gICAgfSksIGgoXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiMlwiLFxuICAgICAgICB5OiBcIjlcIixcbiAgICAgICAgd2lkdGg6IFwiNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjRcIixcbiAgICAgICAgY3k6IFwiNFwiLFxuICAgICAgICByOiBcIjJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBMaXN0SWNvbiA9IHtcbiAgbmFtZTogJ0xpc3RJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWxpc3RcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI4XCIsXG4gICAgICAgIHkxOiBcIjZcIixcbiAgICAgICAgeDI6IFwiMjFcIixcbiAgICAgICAgeTI6IFwiNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjhcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiMjFcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI4XCIsXG4gICAgICAgIHkxOiBcIjE4XCIsXG4gICAgICAgIHgyOiBcIjIxXCIsXG4gICAgICAgIHkyOiBcIjE4XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiM1wiLFxuICAgICAgICB5MTogXCI2XCIsXG4gICAgICAgIHgyOiBcIjMuMDFcIixcbiAgICAgICAgeTI6IFwiNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjNcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiMy4wMVwiLFxuICAgICAgICB5MjogXCIxMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjNcIixcbiAgICAgICAgeTE6IFwiMThcIixcbiAgICAgICAgeDI6IFwiMy4wMVwiLFxuICAgICAgICB5MjogXCIxOFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIExvYWRlckljb24gPSB7XG4gIG5hbWU6ICdMb2FkZXJJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWxvYWRlclwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjJcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjE4XCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiNC45M1wiLFxuICAgICAgICB5MTogXCI0LjkzXCIsXG4gICAgICAgIHgyOiBcIjcuNzZcIixcbiAgICAgICAgeTI6IFwiNy43NlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE2LjI0XCIsXG4gICAgICAgIHkxOiBcIjE2LjI0XCIsXG4gICAgICAgIHgyOiBcIjE5LjA3XCIsXG4gICAgICAgIHkyOiBcIjE5LjA3XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMlwiLFxuICAgICAgICB5MTogXCIxMlwiLFxuICAgICAgICB4MjogXCI2XCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMThcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiMjJcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI0LjkzXCIsXG4gICAgICAgIHkxOiBcIjE5LjA3XCIsXG4gICAgICAgIHgyOiBcIjcuNzZcIixcbiAgICAgICAgeTI6IFwiMTYuMjRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNi4yNFwiLFxuICAgICAgICB5MTogXCI3Ljc2XCIsXG4gICAgICAgIHgyOiBcIjE5LjA3XCIsXG4gICAgICAgIHkyOiBcIjQuOTNcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBMb2NrSWNvbiA9IHtcbiAgbmFtZTogJ0xvY2tJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLWxvY2tcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjNcIixcbiAgICAgICAgeTogXCIxMVwiLFxuICAgICAgICB3aWR0aDogXCIxOFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMTFcIixcbiAgICAgICAgcng6IFwiMlwiLFxuICAgICAgICByeTogXCIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNyAxMVY3YTUgNSAwIDAgMSAxMCAwdjRcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBMb2dJbkljb24gPSB7XG4gIG5hbWU6ICdMb2dJbkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbG9nLWluXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTUgM2g0YTIgMiAwIDAgMSAyIDJ2MTRhMiAyIDAgMCAxLTIgMmgtNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTAgMTcgMTUgMTIgMTAgN1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE1XCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjNcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBMb2dPdXRJY29uID0ge1xuICBuYW1lOiAnTG9nT3V0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1sb2ctb3V0XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNOSAyMUg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjE2IDE3IDIxIDEyIDE2IDdcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMVwiLFxuICAgICAgICB5MTogXCIxMlwiLFxuICAgICAgICB4MjogXCI5XCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTWFpbEljb24gPSB7XG4gIG5hbWU6ICdNYWlsSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1tYWlsXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNCA0aDE2YzEuMSAwIDIgLjkgMiAydjEyYzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0yVjZjMC0xLjEuOS0yIDItMnpcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjIyLDYgMTIsMTMgMiw2XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTWFwUGluSWNvbiA9IHtcbiAgbmFtZTogJ01hcFBpbkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbWFwLXBpblwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIxIDEwYzAgNy05IDEzLTkgMTNzLTktNi05LTEzYTkgOSAwIDAgMSAxOCAwelwiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTBcIixcbiAgICAgICAgcjogXCIzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTWFwSWNvbiA9IHtcbiAgbmFtZTogJ01hcEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbWFwXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlnb25cIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjEgNiAxIDIyIDggMTggMTYgMjIgMjMgMTggMjMgMiAxNiA2IDggMiAxIDZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI4XCIsXG4gICAgICAgIHkxOiBcIjJcIixcbiAgICAgICAgeDI6IFwiOFwiLFxuICAgICAgICB5MjogXCIxOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE2XCIsXG4gICAgICAgIHkxOiBcIjZcIixcbiAgICAgICAgeDI6IFwiMTZcIixcbiAgICAgICAgeTI6IFwiMjJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBNYXhpbWl6ZTJJY29uID0ge1xuICBuYW1lOiAnTWF4aW1pemUySWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1tYXhpbWl6ZS0yXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxNSAzIDIxIDMgMjEgOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiOSAyMSAzIDIxIDMgMTVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMVwiLFxuICAgICAgICB5MTogXCIzXCIsXG4gICAgICAgIHgyOiBcIjE0XCIsXG4gICAgICAgIHkyOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiM1wiLFxuICAgICAgICB5MTogXCIyMVwiLFxuICAgICAgICB4MjogXCIxMFwiLFxuICAgICAgICB5MjogXCIxNFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIE1heGltaXplSWNvbiA9IHtcbiAgbmFtZTogJ01heGltaXplSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1tYXhpbWl6ZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTggM0g1YTIgMiAwIDAgMC0yIDJ2M20xOCAwVjVhMiAyIDAgMCAwLTItMmgtM20wIDE4aDNhMiAyIDAgMCAwIDItMnYtM00zIDE2djNhMiAyIDAgMCAwIDIgMmgzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTWVoSWNvbiA9IHtcbiAgbmFtZTogJ01laEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbWVoXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiOFwiLFxuICAgICAgICB5MTogXCIxNVwiLFxuICAgICAgICB4MjogXCIxNlwiLFxuICAgICAgICB5MjogXCIxNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjlcIixcbiAgICAgICAgeTE6IFwiOVwiLFxuICAgICAgICB4MjogXCI5LjAxXCIsXG4gICAgICAgIHkyOiBcIjlcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNVwiLFxuICAgICAgICB5MTogXCI5XCIsXG4gICAgICAgIHgyOiBcIjE1LjAxXCIsXG4gICAgICAgIHkyOiBcIjlcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBNZW51SWNvbiA9IHtcbiAgbmFtZTogJ01lbnVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLW1lbnVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIzXCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjIxXCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiM1wiLFxuICAgICAgICB5MTogXCI2XCIsXG4gICAgICAgIHgyOiBcIjIxXCIsXG4gICAgICAgIHkyOiBcIjZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIzXCIsXG4gICAgICAgIHkxOiBcIjE4XCIsXG4gICAgICAgIHgyOiBcIjIxXCIsXG4gICAgICAgIHkyOiBcIjE4XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTWVzc2FnZUNpcmNsZUljb24gPSB7XG4gIG5hbWU6ICdNZXNzYWdlQ2lyY2xlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1tZXNzYWdlLWNpcmNsZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIxIDExLjVhOC4zOCA4LjM4IDAgMCAxLS45IDMuOCA4LjUgOC41IDAgMCAxLTcuNiA0LjcgOC4zOCA4LjM4IDAgMCAxLTMuOC0uOUwzIDIxbDEuOS01LjdhOC4zOCA4LjM4IDAgMCAxLS45LTMuOCA4LjUgOC41IDAgMCAxIDQuNy03LjYgOC4zOCA4LjM4IDAgMCAxIDMuOC0uOWguNWE4LjQ4IDguNDggMCAwIDEgOCA4di41elwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIE1lc3NhZ2VTcXVhcmVJY29uID0ge1xuICBuYW1lOiAnTWVzc2FnZVNxdWFyZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbWVzc2FnZS1zcXVhcmVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMSAxNWEyIDIgMCAwIDEtMiAySDdsLTQgNFY1YTIgMiAwIDAgMSAyLTJoMTRhMiAyIDAgMCAxIDIgMnpcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBNaWNPZmZJY29uID0ge1xuICBuYW1lOiAnTWljT2ZmSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1taWMtb2ZmXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMVwiLFxuICAgICAgICB5MTogXCIxXCIsXG4gICAgICAgIHgyOiBcIjIzXCIsXG4gICAgICAgIHkyOiBcIjIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNOSA5djNhMyAzIDAgMCAwIDUuMTIgMi4xMk0xNSA5LjM0VjRhMyAzIDAgMCAwLTUuOTQtLjZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNyAxNi45NUE3IDcgMCAwIDEgNSAxMnYtMm0xNCAwdjJhNyA3IDAgMCAxLS4xMSAxLjIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMTlcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI4XCIsXG4gICAgICAgIHkxOiBcIjIzXCIsXG4gICAgICAgIHgyOiBcIjE2XCIsXG4gICAgICAgIHkyOiBcIjIzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTWljSWNvbiA9IHtcbiAgbmFtZTogJ01pY0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbWljXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTIgMWEzIDMgMCAwIDAtMyAzdjhhMyAzIDAgMCAwIDYgMFY0YTMgMyAwIDAgMC0zLTN6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTkgMTB2MmE3IDcgMCAwIDEtMTQgMHYtMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjE5XCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiOFwiLFxuICAgICAgICB5MTogXCIyM1wiLFxuICAgICAgICB4MjogXCIxNlwiLFxuICAgICAgICB5MjogXCIyM1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIE1pbmltaXplMkljb24gPSB7XG4gIG5hbWU6ICdNaW5pbWl6ZTJJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLW1pbmltaXplLTJcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjQgMTQgMTAgMTQgMTAgMjBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjIwIDEwIDE0IDEwIDE0IDRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNFwiLFxuICAgICAgICB5MTogXCIxMFwiLFxuICAgICAgICB4MjogXCIyMVwiLFxuICAgICAgICB5MjogXCIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiM1wiLFxuICAgICAgICB5MTogXCIyMVwiLFxuICAgICAgICB4MjogXCIxMFwiLFxuICAgICAgICB5MjogXCIxNFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIE1pbmltaXplSWNvbiA9IHtcbiAgbmFtZTogJ01pbmltaXplSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1taW5pbWl6ZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTggM3YzYTIgMiAwIDAgMS0yIDJIM20xOCAwaC0zYTIgMiAwIDAgMS0yLTJWM20wIDE4di0zYTIgMiAwIDAgMSAyLTJoM00zIDE2aDNhMiAyIDAgMCAxIDIgMnYzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTWludXNDaXJjbGVJY29uID0ge1xuICBuYW1lOiAnTWludXNDaXJjbGVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLW1pbnVzLWNpcmNsZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjhcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiMTZcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBNaW51c1NxdWFyZUljb24gPSB7XG4gIG5hbWU6ICdNaW51c1NxdWFyZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbWludXMtc3F1YXJlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIzXCIsXG4gICAgICAgIHk6IFwiM1wiLFxuICAgICAgICB3aWR0aDogXCIxOFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMThcIixcbiAgICAgICAgcng6IFwiMlwiLFxuICAgICAgICByeTogXCIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiOFwiLFxuICAgICAgICB5MTogXCIxMlwiLFxuICAgICAgICB4MjogXCIxNlwiLFxuICAgICAgICB5MjogXCIxMlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIE1pbnVzSWNvbiA9IHtcbiAgbmFtZTogJ01pbnVzSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1taW51c1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjVcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiMTlcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBNb25pdG9ySWNvbiA9IHtcbiAgbmFtZTogJ01vbml0b3JJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLW1vbml0b3JcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjJcIixcbiAgICAgICAgeTogXCIzXCIsXG4gICAgICAgIHdpZHRoOiBcIjIwXCIsXG4gICAgICAgIGhlaWdodDogXCIxNFwiLFxuICAgICAgICByeDogXCIyXCIsXG4gICAgICAgIHJ5OiBcIjJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI4XCIsXG4gICAgICAgIHkxOiBcIjIxXCIsXG4gICAgICAgIHgyOiBcIjE2XCIsXG4gICAgICAgIHkyOiBcIjIxXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMTdcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMjFcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBNb29uSWNvbiA9IHtcbiAgbmFtZTogJ01vb25JY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLW1vb25cIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMSAxMi43OUE5IDkgMCAxIDEgMTEuMjEgMyA3IDcgMCAwIDAgMjEgMTIuNzl6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTW9yZUhvcml6b250YWxJY29uID0ge1xuICBuYW1lOiAnTW9yZUhvcml6b250YWxJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLW1vcmUtaG9yaXpvbnRhbFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxOVwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjFcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjVcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTW9yZVZlcnRpY2FsSWNvbiA9IHtcbiAgbmFtZTogJ01vcmVWZXJ0aWNhbEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbW9yZS12ZXJ0aWNhbFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCI1XCIsXG4gICAgICAgIHI6IFwiMVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTlcIixcbiAgICAgICAgcjogXCIxXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTW91c2VQb2ludGVySWNvbiA9IHtcbiAgbmFtZTogJ01vdXNlUG9pbnRlckljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbW91c2UtcG9pbnRlclwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTMgM2w3LjA3IDE2Ljk3IDIuNTEtNy4zOSA3LjM5LTIuNTFMMyAzelwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTEzIDEzbDYgNlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIE1vdmVJY29uID0ge1xuICBuYW1lOiAnTW92ZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbW92ZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiNSA5IDIgMTIgNSAxNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiOSA1IDEyIDIgMTUgNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTUgMTkgMTIgMjIgOSAxOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTkgOSAyMiAxMiAxOSAxNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjJcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiMjJcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIyXCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjIyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTXVzaWNJY29uID0ge1xuICBuYW1lOiAnTXVzaWNJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLW11c2ljXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNOSAxOFY1bDEyLTJ2MTNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjZcIixcbiAgICAgICAgY3k6IFwiMThcIixcbiAgICAgICAgcjogXCIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxOFwiLFxuICAgICAgICBjeTogXCIxNlwiLFxuICAgICAgICByOiBcIjNcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBOYXZpZ2F0aW9uMkljb24gPSB7XG4gIG5hbWU6ICdOYXZpZ2F0aW9uMkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItbmF2aWdhdGlvbi0yXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlnb25cIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjEyIDIgMTkgMjEgMTIgMTcgNSAyMSAxMiAyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgTmF2aWdhdGlvbkljb24gPSB7XG4gIG5hbWU6ICdOYXZpZ2F0aW9uSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1uYXZpZ2F0aW9uXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlnb25cIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjMgMTEgMjIgMiAxMyAyMSAxMSAxMyAzIDExXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgT2N0YWdvbkljb24gPSB7XG4gIG5hbWU6ICdPY3RhZ29uSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1vY3RhZ29uXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlnb25cIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjcuODYgMiAxNi4xNCAyIDIyIDcuODYgMjIgMTYuMTQgMTYuMTQgMjIgNy44NiAyMiAyIDE2LjE0IDIgNy44NiA3Ljg2IDJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBQYWNrYWdlSWNvbiA9IHtcbiAgbmFtZTogJ1BhY2thZ2VJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXBhY2thZ2VcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNi41XCIsXG4gICAgICAgIHkxOiBcIjkuNFwiLFxuICAgICAgICB4MjogXCI3LjVcIixcbiAgICAgICAgeTI6IFwiNC4yMVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIxIDE2VjhhMiAyIDAgMCAwLTEtMS43M2wtNy00YTIgMiAwIDAgMC0yIDBsLTcgNEEyIDIgMCAwIDAgMyA4djhhMiAyIDAgMCAwIDEgMS43M2w3IDRhMiAyIDAgMCAwIDIgMGw3LTRBMiAyIDAgMCAwIDIxIDE2elwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMy4yNyA2Ljk2IDEyIDEyLjAxIDIwLjczIDYuOTZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIyMi4wOFwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIxMlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFBhcGVyY2xpcEljb24gPSB7XG4gIG5hbWU6ICdQYXBlcmNsaXBJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXBhcGVyY2xpcFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIxLjQ0IDExLjA1bC05LjE5IDkuMTlhNiA2IDAgMCAxLTguNDktOC40OWw5LjE5LTkuMTlhNCA0IDAgMCAxIDUuNjYgNS42NmwtOS4yIDkuMTlhMiAyIDAgMCAxLTIuODMtMi44M2w4LjQ5LTguNDhcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBQYXVzZUNpcmNsZUljb24gPSB7XG4gIG5hbWU6ICdQYXVzZUNpcmNsZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItcGF1c2UtY2lyY2xlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTBcIixcbiAgICAgICAgeTE6IFwiMTVcIixcbiAgICAgICAgeDI6IFwiMTBcIixcbiAgICAgICAgeTI6IFwiOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE0XCIsXG4gICAgICAgIHkxOiBcIjE1XCIsXG4gICAgICAgIHgyOiBcIjE0XCIsXG4gICAgICAgIHkyOiBcIjlcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBQYXVzZUljb24gPSB7XG4gIG5hbWU6ICdQYXVzZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItcGF1c2VcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjZcIixcbiAgICAgICAgeTogXCI0XCIsXG4gICAgICAgIHdpZHRoOiBcIjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjE2XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIxNFwiLFxuICAgICAgICB5OiBcIjRcIixcbiAgICAgICAgd2lkdGg6IFwiNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMTZcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBQZW5Ub29sSWNvbiA9IHtcbiAgbmFtZTogJ1BlblRvb2xJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXBlbi10b29sXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTIgMTlsNy03IDMgMy03IDctMy0zelwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE4IDEzbC0xLjUtNy41TDIgMmwzLjUgMTQuNUwxMyAxOGw1LTV6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMiAybDcuNTg2IDcuNTg2XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMVwiLFxuICAgICAgICBjeTogXCIxMVwiLFxuICAgICAgICByOiBcIjJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBQZXJjZW50SWNvbiA9IHtcbiAgbmFtZTogJ1BlcmNlbnRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXBlcmNlbnRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxOVwiLFxuICAgICAgICB5MTogXCI1XCIsXG4gICAgICAgIHgyOiBcIjVcIixcbiAgICAgICAgeTI6IFwiMTlcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjYuNVwiLFxuICAgICAgICBjeTogXCI2LjVcIixcbiAgICAgICAgcjogXCIyLjVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjE3LjVcIixcbiAgICAgICAgY3k6IFwiMTcuNVwiLFxuICAgICAgICByOiBcIjIuNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFBob25lQ2FsbEljb24gPSB7XG4gIG5hbWU6ICdQaG9uZUNhbGxJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXBob25lLWNhbGxcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNS4wNSA1QTUgNSAwIDAgMSAxOSA4Ljk1TTE1LjA1IDFBOSA5IDAgMCAxIDIzIDguOTRtLTEgNy45OHYzYTIgMiAwIDAgMS0yLjE4IDIgMTkuNzkgMTkuNzkgMCAwIDEtOC42My0zLjA3IDE5LjUgMTkuNSAwIDAgMS02LTYgMTkuNzkgMTkuNzkgMCAwIDEtMy4wNy04LjY3QTIgMiAwIDAgMSA0LjExIDJoM2EyIDIgMCAwIDEgMiAxLjcyIDEyLjg0IDEyLjg0IDAgMCAwIC43IDIuODEgMiAyIDAgMCAxLS40NSAyLjExTDguMDkgOS45MWExNiAxNiAwIDAgMCA2IDZsMS4yNy0xLjI3YTIgMiAwIDAgMSAyLjExLS40NSAxMi44NCAxMi44NCAwIDAgMCAyLjgxLjdBMiAyIDAgMCAxIDIyIDE2LjkyelwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFBob25lRm9yd2FyZGVkSWNvbiA9IHtcbiAgbmFtZTogJ1Bob25lRm9yd2FyZGVkSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1waG9uZS1mb3J3YXJkZWRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjE5IDEgMjMgNSAxOSA5XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTVcIixcbiAgICAgICAgeTE6IFwiNVwiLFxuICAgICAgICB4MjogXCIyM1wiLFxuICAgICAgICB5MjogXCI1XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjIgMTYuOTJ2M2EyIDIgMCAwIDEtMi4xOCAyIDE5Ljc5IDE5Ljc5IDAgMCAxLTguNjMtMy4wNyAxOS41IDE5LjUgMCAwIDEtNi02IDE5Ljc5IDE5Ljc5IDAgMCAxLTMuMDctOC42N0EyIDIgMCAwIDEgNC4xMSAyaDNhMiAyIDAgMCAxIDIgMS43MiAxMi44NCAxMi44NCAwIDAgMCAuNyAyLjgxIDIgMiAwIDAgMS0uNDUgMi4xMUw4LjA5IDkuOTFhMTYgMTYgMCAwIDAgNiA2bDEuMjctMS4yN2EyIDIgMCAwIDEgMi4xMS0uNDUgMTIuODQgMTIuODQgMCAwIDAgMi44MS43QTIgMiAwIDAgMSAyMiAxNi45MnpcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBQaG9uZUluY29taW5nSWNvbiA9IHtcbiAgbmFtZTogJ1Bob25lSW5jb21pbmdJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXBob25lLWluY29taW5nXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxNiAyIDE2IDggMjIgOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIzXCIsXG4gICAgICAgIHkxOiBcIjFcIixcbiAgICAgICAgeDI6IFwiMTZcIixcbiAgICAgICAgeTI6IFwiOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIyIDE2LjkydjNhMiAyIDAgMCAxLTIuMTggMiAxOS43OSAxOS43OSAwIDAgMS04LjYzLTMuMDcgMTkuNSAxOS41IDAgMCAxLTYtNiAxOS43OSAxOS43OSAwIDAgMS0zLjA3LTguNjdBMiAyIDAgMCAxIDQuMTEgMmgzYTIgMiAwIDAgMSAyIDEuNzIgMTIuODQgMTIuODQgMCAwIDAgLjcgMi44MSAyIDIgMCAwIDEtLjQ1IDIuMTFMOC4wOSA5LjkxYTE2IDE2IDAgMCAwIDYgNmwxLjI3LTEuMjdhMiAyIDAgMCAxIDIuMTEtLjQ1IDEyLjg0IDEyLjg0IDAgMCAwIDIuODEuN0EyIDIgMCAwIDEgMjIgMTYuOTJ6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgUGhvbmVNaXNzZWRJY29uID0ge1xuICBuYW1lOiAnUGhvbmVNaXNzZWRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXBob25lLW1pc3NlZFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIzXCIsXG4gICAgICAgIHkxOiBcIjFcIixcbiAgICAgICAgeDI6IFwiMTdcIixcbiAgICAgICAgeTI6IFwiN1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE3XCIsXG4gICAgICAgIHkxOiBcIjFcIixcbiAgICAgICAgeDI6IFwiMjNcIixcbiAgICAgICAgeTI6IFwiN1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIyIDE2LjkydjNhMiAyIDAgMCAxLTIuMTggMiAxOS43OSAxOS43OSAwIDAgMS04LjYzLTMuMDcgMTkuNSAxOS41IDAgMCAxLTYtNiAxOS43OSAxOS43OSAwIDAgMS0zLjA3LTguNjdBMiAyIDAgMCAxIDQuMTEgMmgzYTIgMiAwIDAgMSAyIDEuNzIgMTIuODQgMTIuODQgMCAwIDAgLjcgMi44MSAyIDIgMCAwIDEtLjQ1IDIuMTFMOC4wOSA5LjkxYTE2IDE2IDAgMCAwIDYgNmwxLjI3LTEuMjdhMiAyIDAgMCAxIDIuMTEtLjQ1IDEyLjg0IDEyLjg0IDAgMCAwIDIuODEuN0EyIDIgMCAwIDEgMjIgMTYuOTJ6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgUGhvbmVPZmZJY29uID0ge1xuICBuYW1lOiAnUGhvbmVPZmZJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXBob25lLW9mZlwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTEwLjY4IDEzLjMxYTE2IDE2IDAgMCAwIDMuNDEgMi42bDEuMjctMS4yN2EyIDIgMCAwIDEgMi4xMS0uNDUgMTIuODQgMTIuODQgMCAwIDAgMi44MS43IDIgMiAwIDAgMSAxLjcyIDJ2M2EyIDIgMCAwIDEtMi4xOCAyIDE5Ljc5IDE5Ljc5IDAgMCAxLTguNjMtMy4wNyAxOS40MiAxOS40MiAwIDAgMS0zLjMzLTIuNjdtLTIuNjctMy4zNGExOS43OSAxOS43OSAwIDAgMS0zLjA3LTguNjNBMiAyIDAgMCAxIDQuMTEgMmgzYTIgMiAwIDAgMSAyIDEuNzIgMTIuODQgMTIuODQgMCAwIDAgLjcgMi44MSAyIDIgMCAwIDEtLjQ1IDIuMTFMOC4wOSA5LjkxXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMjNcIixcbiAgICAgICAgeTE6IFwiMVwiLFxuICAgICAgICB4MjogXCIxXCIsXG4gICAgICAgIHkyOiBcIjIzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgUGhvbmVPdXRnb2luZ0ljb24gPSB7XG4gIG5hbWU6ICdQaG9uZU91dGdvaW5nSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1waG9uZS1vdXRnb2luZ1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMjMgNyAyMyAxIDE3IDFcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNlwiLFxuICAgICAgICB5MTogXCI4XCIsXG4gICAgICAgIHgyOiBcIjIzXCIsXG4gICAgICAgIHkyOiBcIjFcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMiAxNi45MnYzYTIgMiAwIDAgMS0yLjE4IDIgMTkuNzkgMTkuNzkgMCAwIDEtOC42My0zLjA3IDE5LjUgMTkuNSAwIDAgMS02LTYgMTkuNzkgMTkuNzkgMCAwIDEtMy4wNy04LjY3QTIgMiAwIDAgMSA0LjExIDJoM2EyIDIgMCAwIDEgMiAxLjcyIDEyLjg0IDEyLjg0IDAgMCAwIC43IDIuODEgMiAyIDAgMCAxLS40NSAyLjExTDguMDkgOS45MWExNiAxNiAwIDAgMCA2IDZsMS4yNy0xLjI3YTIgMiAwIDAgMSAyLjExLS40NSAxMi44NCAxMi44NCAwIDAgMCAyLjgxLjdBMiAyIDAgMCAxIDIyIDE2LjkyelwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFBob25lSWNvbiA9IHtcbiAgbmFtZTogJ1Bob25lSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1waG9uZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIyIDE2LjkydjNhMiAyIDAgMCAxLTIuMTggMiAxOS43OSAxOS43OSAwIDAgMS04LjYzLTMuMDcgMTkuNSAxOS41IDAgMCAxLTYtNiAxOS43OSAxOS43OSAwIDAgMS0zLjA3LTguNjdBMiAyIDAgMCAxIDQuMTEgMmgzYTIgMiAwIDAgMSAyIDEuNzIgMTIuODQgMTIuODQgMCAwIDAgLjcgMi44MSAyIDIgMCAwIDEtLjQ1IDIuMTFMOC4wOSA5LjkxYTE2IDE2IDAgMCAwIDYgNmwxLjI3LTEuMjdhMiAyIDAgMCAxIDIuMTEtLjQ1IDEyLjg0IDEyLjg0IDAgMCAwIDIuODEuN0EyIDIgMCAwIDEgMjIgMTYuOTJ6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgUGllQ2hhcnRJY29uID0ge1xuICBuYW1lOiAnUGllQ2hhcnRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXBpZS1jaGFydFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIxLjIxIDE1Ljg5QTEwIDEwIDAgMSAxIDggMi44M1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIyIDEyQTEwIDEwIDAgMCAwIDEyIDJ2MTB6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgUGxheUNpcmNsZUljb24gPSB7XG4gIG5hbWU6ICdQbGF5Q2lyY2xlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1wbGF5LWNpcmNsZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5Z29uXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxMCA4IDE2IDEyIDEwIDE2IDEwIDhcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBQbGF5SWNvbiA9IHtcbiAgbmFtZTogJ1BsYXlJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXBsYXlcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWdvblwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiNSAzIDE5IDEyIDUgMjEgNSAzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgUGx1c0NpcmNsZUljb24gPSB7XG4gIG5hbWU6ICdQbHVzQ2lyY2xlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1wbHVzLWNpcmNsZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjhcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMTZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI4XCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjE2XCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgUGx1c1NxdWFyZUljb24gPSB7XG4gIG5hbWU6ICdQbHVzU3F1YXJlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1wbHVzLXNxdWFyZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiM1wiLFxuICAgICAgICB5OiBcIjNcIixcbiAgICAgICAgd2lkdGg6IFwiMThcIixcbiAgICAgICAgaGVpZ2h0OiBcIjE4XCIsXG4gICAgICAgIHJ4OiBcIjJcIixcbiAgICAgICAgcnk6IFwiMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjhcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMTZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI4XCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjE2XCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgUGx1c0ljb24gPSB7XG4gIG5hbWU6ICdQbHVzSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1wbHVzXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiNVwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIxOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjVcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiMTlcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBQb2NrZXRJY29uID0ge1xuICBuYW1lOiAnUG9ja2V0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1wb2NrZXRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk00IDNoMTZhMiAyIDAgMCAxIDIgMnY2YTEwIDEwIDAgMCAxLTEwIDEwQTEwIDEwIDAgMCAxIDIgMTFWNWEyIDIgMCAwIDEgMi0yelwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiOCAxMCAxMiAxNCAxNiAxMFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFBvd2VySWNvbiA9IHtcbiAgbmFtZTogJ1Bvd2VySWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1wb3dlclwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE4LjM2IDYuNjRhOSA5IDAgMSAxLTEyLjczIDBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIyXCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgUHJpbnRlckljb24gPSB7XG4gIG5hbWU6ICdQcmludGVySWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1wcmludGVyXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCI2IDkgNiAyIDE4IDIgMTggOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTYgMThINGEyIDIgMCAwIDEtMi0ydi01YTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnY1YTIgMiAwIDAgMS0yIDJoLTJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjZcIixcbiAgICAgICAgeTogXCIxNFwiLFxuICAgICAgICB3aWR0aDogXCIxMlwiLFxuICAgICAgICBoZWlnaHQ6IFwiOFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFJhZGlvSWNvbiA9IHtcbiAgbmFtZTogJ1JhZGlvSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1yYWRpb1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTYuMjQgNy43NmE2IDYgMCAwIDEgMCA4LjQ5bS04LjQ4LS4wMWE2IDYgMCAwIDEgMC04LjQ5bTExLjMxLTIuODJhMTAgMTAgMCAwIDEgMCAxNC4xNG0tMTQuMTQgMGExMCAxMCAwIDAgMSAwLTE0LjE0XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgUmVmcmVzaENjd0ljb24gPSB7XG4gIG5hbWU6ICdSZWZyZXNoQ2N3SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1yZWZyZXNoLWNjd1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMSA0IDEgMTAgNyAxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMjMgMjAgMjMgMTQgMTcgMTRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMC40OSA5QTkgOSAwIDAgMCA1LjY0IDUuNjRMMSAxMG0yMiA0bC00LjY0IDQuMzZBOSA5IDAgMCAxIDMuNTEgMTVcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBSZWZyZXNoQ3dJY29uID0ge1xuICBuYW1lOiAnUmVmcmVzaEN3SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1yZWZyZXNoLWN3XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIyMyA0IDIzIDEwIDE3IDEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxIDIwIDEgMTQgNyAxNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTMuNTEgOWE5IDkgMCAwIDEgMTQuODUtMy4zNkwyMyAxME0xIDE0bDQuNjQgNC4zNkE5IDkgMCAwIDAgMjAuNDkgMTVcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBSZXBlYXRJY29uID0ge1xuICBuYW1lOiAnUmVwZWF0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1yZXBlYXRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjE3IDEgMjEgNSAxNyA5XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMyAxMVY5YTQgNCAwIDAgMSA0LTRoMTRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjcgMjMgMyAxOSA3IDE1XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjEgMTN2MmE0IDQgMCAwIDEtNCA0SDNcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBSZXdpbmRJY29uID0ge1xuICBuYW1lOiAnUmV3aW5kSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1yZXdpbmRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWdvblwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTEgMTkgMiAxMiAxMSA1IDExIDE5XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlnb25cIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjIyIDE5IDEzIDEyIDIyIDUgMjIgMTlcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBSb3RhdGVDY3dJY29uID0ge1xuICBuYW1lOiAnUm90YXRlQ2N3SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1yb3RhdGUtY2N3XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxIDQgMSAxMCA3IDEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMy41MSAxNWE5IDkgMCAxIDAgMi4xMy05LjM2TDEgMTBcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBSb3RhdGVDd0ljb24gPSB7XG4gIG5hbWU6ICdSb3RhdGVDd0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItcm90YXRlLWN3XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIyMyA0IDIzIDEwIDE3IDEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjAuNDkgMTVhOSA5IDAgMSAxLTIuMTItOS4zNkwyMyAxMFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFJzc0ljb24gPSB7XG4gIG5hbWU6ICdSc3NJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXJzc1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTQgMTFhOSA5IDAgMCAxIDkgOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTQgNGExNiAxNiAwIDAgMSAxNiAxNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiNVwiLFxuICAgICAgICBjeTogXCIxOVwiLFxuICAgICAgICByOiBcIjFcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBTYXZlSWNvbiA9IHtcbiAgbmFtZTogJ1NhdmVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXNhdmVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xOSAyMUg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDExbDUgNXYxMWEyIDIgMCAwIDEtMiAyelwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTcgMjEgMTcgMTMgNyAxMyA3IDIxXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCI3IDMgNyA4IDE1IDhcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBTY2lzc29yc0ljb24gPSB7XG4gIG5hbWU6ICdTY2lzc29yc0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItc2Npc3NvcnNcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjZcIixcbiAgICAgICAgY3k6IFwiNlwiLFxuICAgICAgICByOiBcIjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjZcIixcbiAgICAgICAgY3k6IFwiMThcIixcbiAgICAgICAgcjogXCIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMjBcIixcbiAgICAgICAgeTE6IFwiNFwiLFxuICAgICAgICB4MjogXCI4LjEyXCIsXG4gICAgICAgIHkyOiBcIjE1Ljg4XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTQuNDdcIixcbiAgICAgICAgeTE6IFwiMTQuNDhcIixcbiAgICAgICAgeDI6IFwiMjBcIixcbiAgICAgICAgeTI6IFwiMjBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI4LjEyXCIsXG4gICAgICAgIHkxOiBcIjguMTJcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBTZWFyY2hJY29uID0ge1xuICBuYW1lOiAnU2VhcmNoSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1zZWFyY2hcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjExXCIsXG4gICAgICAgIGN5OiBcIjExXCIsXG4gICAgICAgIHI6IFwiOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIxXCIsXG4gICAgICAgIHkxOiBcIjIxXCIsXG4gICAgICAgIHgyOiBcIjE2LjY1XCIsXG4gICAgICAgIHkyOiBcIjE2LjY1XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU2VuZEljb24gPSB7XG4gIG5hbWU6ICdTZW5kSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1zZW5kXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMjJcIixcbiAgICAgICAgeTE6IFwiMlwiLFxuICAgICAgICB4MjogXCIxMVwiLFxuICAgICAgICB5MjogXCIxM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5Z29uXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIyMiAyIDE1IDIyIDExIDEzIDIgOSAyMiAyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU2VydmVySWNvbiA9IHtcbiAgbmFtZTogJ1NlcnZlckljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItc2VydmVyXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIyXCIsXG4gICAgICAgIHk6IFwiMlwiLFxuICAgICAgICB3aWR0aDogXCIyMFwiLFxuICAgICAgICBoZWlnaHQ6IFwiOFwiLFxuICAgICAgICByeDogXCIyXCIsXG4gICAgICAgIHJ5OiBcIjJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjJcIixcbiAgICAgICAgeTogXCIxNFwiLFxuICAgICAgICB3aWR0aDogXCIyMFwiLFxuICAgICAgICBoZWlnaHQ6IFwiOFwiLFxuICAgICAgICByeDogXCIyXCIsXG4gICAgICAgIHJ5OiBcIjJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI2XCIsXG4gICAgICAgIHkxOiBcIjZcIixcbiAgICAgICAgeDI6IFwiNi4wMVwiLFxuICAgICAgICB5MjogXCI2XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiNlwiLFxuICAgICAgICB5MTogXCIxOFwiLFxuICAgICAgICB4MjogXCI2LjAxXCIsXG4gICAgICAgIHkyOiBcIjE4XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU2V0dGluZ3NJY29uID0ge1xuICBuYW1lOiAnU2V0dGluZ3NJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXNldHRpbmdzXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xOS40IDE1YTEuNjUgMS42NSAwIDAgMCAuMzMgMS44MmwuMDYuMDZhMiAyIDAgMCAxIDAgMi44MyAyIDIgMCAwIDEtMi44MyAwbC0uMDYtLjA2YTEuNjUgMS42NSAwIDAgMC0xLjgyLS4zMyAxLjY1IDEuNjUgMCAwIDAtMSAxLjUxVjIxYTIgMiAwIDAgMS0yIDIgMiAyIDAgMCAxLTItMnYtLjA5QTEuNjUgMS42NSAwIDAgMCA5IDE5LjRhMS42NSAxLjY1IDAgMCAwLTEuODIuMzNsLS4wNi4wNmEyIDIgMCAwIDEtMi44MyAwIDIgMiAwIDAgMSAwLTIuODNsLjA2LS4wNmExLjY1IDEuNjUgMCAwIDAgLjMzLTEuODIgMS42NSAxLjY1IDAgMCAwLTEuNTEtMUgzYTIgMiAwIDAgMS0yLTIgMiAyIDAgMCAxIDItMmguMDlBMS42NSAxLjY1IDAgMCAwIDQuNiA5YTEuNjUgMS42NSAwIDAgMC0uMzMtMS44MmwtLjA2LS4wNmEyIDIgMCAwIDEgMC0yLjgzIDIgMiAwIDAgMSAyLjgzIDBsLjA2LjA2YTEuNjUgMS42NSAwIDAgMCAxLjgyLjMzSDlhMS42NSAxLjY1IDAgMCAwIDEtMS41MVYzYTIgMiAwIDAgMSAyLTIgMiAyIDAgMCAxIDIgMnYuMDlhMS42NSAxLjY1IDAgMCAwIDEgMS41MSAxLjY1IDEuNjUgMCAwIDAgMS44Mi0uMzNsLjA2LS4wNmEyIDIgMCAwIDEgMi44MyAwIDIgMiAwIDAgMSAwIDIuODNsLS4wNi4wNmExLjY1IDEuNjUgMCAwIDAtLjMzIDEuODJWOWExLjY1IDEuNjUgMCAwIDAgMS41MSAxSDIxYTIgMiAwIDAgMSAyIDIgMiAyIDAgMCAxLTIgMmgtLjA5YTEuNjUgMS42NSAwIDAgMC0xLjUxIDF6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU2hhcmUySWNvbiA9IHtcbiAgbmFtZTogJ1NoYXJlMkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItc2hhcmUtMlwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMThcIixcbiAgICAgICAgY3k6IFwiNVwiLFxuICAgICAgICByOiBcIjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjZcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxOFwiLFxuICAgICAgICBjeTogXCIxOVwiLFxuICAgICAgICByOiBcIjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI4LjU5XCIsXG4gICAgICAgIHkxOiBcIjEzLjUxXCIsXG4gICAgICAgIHgyOiBcIjE1LjQyXCIsXG4gICAgICAgIHkyOiBcIjE3LjQ5XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTUuNDFcIixcbiAgICAgICAgeTE6IFwiNi41MVwiLFxuICAgICAgICB4MjogXCI4LjU5XCIsXG4gICAgICAgIHkyOiBcIjEwLjQ5XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU2hhcmVJY29uID0ge1xuICBuYW1lOiAnU2hhcmVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXNoYXJlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNCAxMnY4YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMnYtOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTYgNiAxMiAyIDggNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjJcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMTVcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBTaGllbGRPZmZJY29uID0ge1xuICBuYW1lOiAnU2hpZWxkT2ZmSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1zaGllbGQtb2ZmXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTkuNjkgMTRhNi45IDYuOSAwIDAgMCAuMzEtMlY1bC04LTMtMy4xNiAxLjE4XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNC43MyA0LjczTDQgNXY3YzAgNiA4IDEwIDggMTBhMjAuMjkgMjAuMjkgMCAwIDAgNS42Mi00LjM4XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMVwiLFxuICAgICAgICB5MTogXCIxXCIsXG4gICAgICAgIHgyOiBcIjIzXCIsXG4gICAgICAgIHkyOiBcIjIzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU2hpZWxkSWNvbiA9IHtcbiAgbmFtZTogJ1NoaWVsZEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItc2hpZWxkXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTIgMjJzOC00IDgtMTBWNWwtOC0zLTggM3Y3YzAgNiA4IDEwIDggMTB6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU2hvcHBpbmdCYWdJY29uID0ge1xuICBuYW1lOiAnU2hvcHBpbmdCYWdJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXNob3BwaW5nLWJhZ1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTYgMkwzIDZ2MTRhMiAyIDAgMCAwIDIgMmgxNGEyIDIgMCAwIDAgMi0yVjZsLTMtNHpcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIzXCIsXG4gICAgICAgIHkxOiBcIjZcIixcbiAgICAgICAgeDI6IFwiMjFcIixcbiAgICAgICAgeTI6IFwiNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE2IDEwYTQgNCAwIDAgMS04IDBcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBTaG9wcGluZ0NhcnRJY29uID0ge1xuICBuYW1lOiAnU2hvcHBpbmdDYXJ0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1zaG9wcGluZy1jYXJ0XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCI5XCIsXG4gICAgICAgIGN5OiBcIjIxXCIsXG4gICAgICAgIHI6IFwiMVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMjBcIixcbiAgICAgICAgY3k6IFwiMjFcIixcbiAgICAgICAgcjogXCIxXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMSAxaDRsMi42OCAxMy4zOWEyIDIgMCAwIDAgMiAxLjYxaDkuNzJhMiAyIDAgMCAwIDItMS42MUwyMyA2SDZcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBTaHVmZmxlSWNvbiA9IHtcbiAgbmFtZTogJ1NodWZmbGVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXNodWZmbGVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjE2IDMgMjEgMyAyMSA4XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiNFwiLFxuICAgICAgICB5MTogXCIyMFwiLFxuICAgICAgICB4MjogXCIyMVwiLFxuICAgICAgICB5MjogXCIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIyMSAxNiAyMSAyMSAxNiAyMVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE1XCIsXG4gICAgICAgIHkxOiBcIjE1XCIsXG4gICAgICAgIHgyOiBcIjIxXCIsXG4gICAgICAgIHkyOiBcIjIxXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiNFwiLFxuICAgICAgICB5MTogXCI0XCIsXG4gICAgICAgIHgyOiBcIjlcIixcbiAgICAgICAgeTI6IFwiOVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFNpZGViYXJJY29uID0ge1xuICBuYW1lOiAnU2lkZWJhckljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItc2lkZWJhclwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiM1wiLFxuICAgICAgICB5OiBcIjNcIixcbiAgICAgICAgd2lkdGg6IFwiMThcIixcbiAgICAgICAgaGVpZ2h0OiBcIjE4XCIsXG4gICAgICAgIHJ4OiBcIjJcIixcbiAgICAgICAgcnk6IFwiMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjlcIixcbiAgICAgICAgeTE6IFwiM1wiLFxuICAgICAgICB4MjogXCI5XCIsXG4gICAgICAgIHkyOiBcIjIxXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU2tpcEJhY2tJY29uID0ge1xuICBuYW1lOiAnU2tpcEJhY2tJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXNraXAtYmFja1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5Z29uXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxOSAyMCA5IDEyIDE5IDQgMTkgMjBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI1XCIsXG4gICAgICAgIHkxOiBcIjE5XCIsXG4gICAgICAgIHgyOiBcIjVcIixcbiAgICAgICAgeTI6IFwiNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFNraXBGb3J3YXJkSWNvbiA9IHtcbiAgbmFtZTogJ1NraXBGb3J3YXJkSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1za2lwLWZvcndhcmRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWdvblwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiNSA0IDE1IDEyIDUgMjAgNSA0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTlcIixcbiAgICAgICAgeTE6IFwiNVwiLFxuICAgICAgICB4MjogXCIxOVwiLFxuICAgICAgICB5MjogXCIxOVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFNsYWNrSWNvbiA9IHtcbiAgbmFtZTogJ1NsYWNrSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1zbGFja1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE0LjUgMTBjLS44MyAwLTEuNS0uNjctMS41LTEuNXYtNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNXY1YzAgLjgzLS42NyAxLjUtMS41IDEuNXpcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMC41IDEwSDE5VjguNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNOS41IDE0Yy44MyAwIDEuNS42NyAxLjUgMS41djVjMCAuODMtLjY3IDEuNS0xLjUgMS41UzggMjEuMzMgOCAyMC41di01YzAtLjgzLjY3LTEuNSAxLjUtMS41elwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTMuNSAxNEg1djEuNWMwIC44My0uNjcgMS41LTEuNSAxLjVTMiAxNi4zMyAyIDE1LjUgMi42NyAxNCAzLjUgMTR6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTQgMTQuNWMwLS44My42Ny0xLjUgMS41LTEuNWg1Yy44MyAwIDEuNS42NyAxLjUgMS41cy0uNjcgMS41LTEuNSAxLjVoLTVjLS44MyAwLTEuNS0uNjctMS41LTEuNXpcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNS41IDE5SDE0djEuNWMwIC44My42NyAxLjUgMS41IDEuNXMxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41elwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTEwIDkuNUMxMCA4LjY3IDkuMzMgOCA4LjUgOGgtNUMyLjY3IDggMiA4LjY3IDIgOS41UzIuNjcgMTEgMy41IDExaDVjLjgzIDAgMS41LS42NyAxLjUtMS41elwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTguNSA1SDEwVjMuNUMxMCAyLjY3IDkuMzMgMiA4LjUgMlM3IDIuNjcgNyAzLjUgNy42NyA1IDguNSA1elwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFNsYXNoSWNvbiA9IHtcbiAgbmFtZTogJ1NsYXNoSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1zbGFzaFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjQuOTNcIixcbiAgICAgICAgeTE6IFwiNC45M1wiLFxuICAgICAgICB4MjogXCIxOS4wN1wiLFxuICAgICAgICB5MjogXCIxOS4wN1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFNsaWRlcnNJY29uID0ge1xuICBuYW1lOiAnU2xpZGVyc0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItc2xpZGVyc1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjRcIixcbiAgICAgICAgeTE6IFwiMjFcIixcbiAgICAgICAgeDI6IFwiNFwiLFxuICAgICAgICB5MjogXCIxNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjRcIixcbiAgICAgICAgeTE6IFwiMTBcIixcbiAgICAgICAgeDI6IFwiNFwiLFxuICAgICAgICB5MjogXCIzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMjFcIixcbiAgICAgICAgeDI6IFwiMTJcIixcbiAgICAgICAgeTI6IFwiMTJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCI4XCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMFwiLFxuICAgICAgICB5MTogXCIyMVwiLFxuICAgICAgICB4MjogXCIyMFwiLFxuICAgICAgICB5MjogXCIxNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIwXCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjIwXCIsXG4gICAgICAgIHkyOiBcIjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxXCIsXG4gICAgICAgIHkxOiBcIjE0XCIsXG4gICAgICAgIHgyOiBcIjdcIixcbiAgICAgICAgeTI6IFwiMTRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI5XCIsXG4gICAgICAgIHkxOiBcIjhcIixcbiAgICAgICAgeDI6IFwiMTVcIixcbiAgICAgICAgeTI6IFwiOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE3XCIsXG4gICAgICAgIHkxOiBcIjE2XCIsXG4gICAgICAgIHgyOiBcIjIzXCIsXG4gICAgICAgIHkyOiBcIjE2XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU21hcnRwaG9uZUljb24gPSB7XG4gIG5hbWU6ICdTbWFydHBob25lSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1zbWFydHBob25lXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCI1XCIsXG4gICAgICAgIHk6IFwiMlwiLFxuICAgICAgICB3aWR0aDogXCIxNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjBcIixcbiAgICAgICAgcng6IFwiMlwiLFxuICAgICAgICByeTogXCIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMThcIixcbiAgICAgICAgeDI6IFwiMTIuMDFcIixcbiAgICAgICAgeTI6IFwiMThcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBTbWlsZUljb24gPSB7XG4gIG5hbWU6ICdTbWlsZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItc21pbGVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiMTBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk04IDE0czEuNSAyIDQgMiA0LTIgNC0yXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiOVwiLFxuICAgICAgICB5MTogXCI5XCIsXG4gICAgICAgIHgyOiBcIjkuMDFcIixcbiAgICAgICAgeTI6IFwiOVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE1XCIsXG4gICAgICAgIHkxOiBcIjlcIixcbiAgICAgICAgeDI6IFwiMTUuMDFcIixcbiAgICAgICAgeTI6IFwiOVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFNwZWFrZXJJY29uID0ge1xuICBuYW1lOiAnU3BlYWtlckljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItc3BlYWtlclwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiNFwiLFxuICAgICAgICB5OiBcIjJcIixcbiAgICAgICAgd2lkdGg6IFwiMTZcIixcbiAgICAgICAgaGVpZ2h0OiBcIjIwXCIsXG4gICAgICAgIHJ4OiBcIjJcIixcbiAgICAgICAgcnk6IFwiMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTRcIixcbiAgICAgICAgcjogXCI0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiNlwiLFxuICAgICAgICB4MjogXCIxMi4wMVwiLFxuICAgICAgICB5MjogXCI2XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU3F1YXJlSWNvbiA9IHtcbiAgbmFtZTogJ1NxdWFyZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItc3F1YXJlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIzXCIsXG4gICAgICAgIHk6IFwiM1wiLFxuICAgICAgICB3aWR0aDogXCIxOFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMThcIixcbiAgICAgICAgcng6IFwiMlwiLFxuICAgICAgICByeTogXCIyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU3Rhckljb24gPSB7XG4gIG5hbWU6ICdTdGFySWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1zdGFyXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlnb25cIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjEyIDIgMTUuMDkgOC4yNiAyMiA5LjI3IDE3IDE0LjE0IDE4LjE4IDIxLjAyIDEyIDE3Ljc3IDUuODIgMjEuMDIgNyAxNC4xNCAyIDkuMjcgOC45MSA4LjI2IDEyIDJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBTdG9wQ2lyY2xlSWNvbiA9IHtcbiAgbmFtZTogJ1N0b3BDaXJjbGVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXN0b3AtY2lyY2xlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjEwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCI5XCIsXG4gICAgICAgIHk6IFwiOVwiLFxuICAgICAgICB3aWR0aDogXCI2XCIsXG4gICAgICAgIGhlaWdodDogXCI2XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU3VuSWNvbiA9IHtcbiAgbmFtZTogJ1N1bkljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItc3VuXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIxXCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjNcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIyMVwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIyM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjQuMjJcIixcbiAgICAgICAgeTE6IFwiNC4yMlwiLFxuICAgICAgICB4MjogXCI1LjY0XCIsXG4gICAgICAgIHkyOiBcIjUuNjRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxOC4zNlwiLFxuICAgICAgICB5MTogXCIxOC4zNlwiLFxuICAgICAgICB4MjogXCIxOS43OFwiLFxuICAgICAgICB5MjogXCIxOS43OFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjFcIixcbiAgICAgICAgeTE6IFwiMTJcIixcbiAgICAgICAgeDI6IFwiM1wiLFxuICAgICAgICB5MjogXCIxMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIxXCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjIzXCIsXG4gICAgICAgIHkyOiBcIjEyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiNC4yMlwiLFxuICAgICAgICB5MTogXCIxOS43OFwiLFxuICAgICAgICB4MjogXCI1LjY0XCIsXG4gICAgICAgIHkyOiBcIjE4LjM2XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTguMzZcIixcbiAgICAgICAgeTE6IFwiNS42NFwiLFxuICAgICAgICB4MjogXCIxOS43OFwiLFxuICAgICAgICB5MjogXCI0LjIyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgU3VucmlzZUljb24gPSB7XG4gIG5hbWU6ICdTdW5yaXNlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci1zdW5yaXNlXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTcgMThhNSA1IDAgMCAwLTEwIDBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIyXCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjlcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI0LjIyXCIsXG4gICAgICAgIHkxOiBcIjEwLjIyXCIsXG4gICAgICAgIHgyOiBcIjUuNjRcIixcbiAgICAgICAgeTI6IFwiMTEuNjRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxXCIsXG4gICAgICAgIHkxOiBcIjE4XCIsXG4gICAgICAgIHgyOiBcIjNcIixcbiAgICAgICAgeTI6IFwiMThcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMVwiLFxuICAgICAgICB5MTogXCIxOFwiLFxuICAgICAgICB4MjogXCIyM1wiLFxuICAgICAgICB5MjogXCIxOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE4LjM2XCIsXG4gICAgICAgIHkxOiBcIjExLjY0XCIsXG4gICAgICAgIHgyOiBcIjE5Ljc4XCIsXG4gICAgICAgIHkyOiBcIjEwLjIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMjNcIixcbiAgICAgICAgeTE6IFwiMjJcIixcbiAgICAgICAgeDI6IFwiMVwiLFxuICAgICAgICB5MjogXCIyMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiOCA2IDEyIDIgMTYgNlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFN1bnNldEljb24gPSB7XG4gIG5hbWU6ICdTdW5zZXRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXN1bnNldFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE3IDE4YTUgNSAwIDAgMC0xMCAwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiOVwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiNC4yMlwiLFxuICAgICAgICB5MTogXCIxMC4yMlwiLFxuICAgICAgICB4MjogXCI1LjY0XCIsXG4gICAgICAgIHkyOiBcIjExLjY0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMVwiLFxuICAgICAgICB5MTogXCIxOFwiLFxuICAgICAgICB4MjogXCIzXCIsXG4gICAgICAgIHkyOiBcIjE4XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMjFcIixcbiAgICAgICAgeTE6IFwiMThcIixcbiAgICAgICAgeDI6IFwiMjNcIixcbiAgICAgICAgeTI6IFwiMThcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxOC4zNlwiLFxuICAgICAgICB5MTogXCIxMS42NFwiLFxuICAgICAgICB4MjogXCIxOS43OFwiLFxuICAgICAgICB5MjogXCIxMC4yMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIzXCIsXG4gICAgICAgIHkxOiBcIjIyXCIsXG4gICAgICAgIHgyOiBcIjFcIixcbiAgICAgICAgeTI6IFwiMjJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjE2IDUgMTIgOSA4IDVcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBUYWJsZXRJY29uID0ge1xuICBuYW1lOiAnVGFibGV0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci10YWJsZXRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjRcIixcbiAgICAgICAgeTogXCIyXCIsXG4gICAgICAgIHdpZHRoOiBcIjE2XCIsXG4gICAgICAgIGhlaWdodDogXCIyMFwiLFxuICAgICAgICByeDogXCIyXCIsXG4gICAgICAgIHJ5OiBcIjJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIxOFwiLFxuICAgICAgICB4MjogXCIxMi4wMVwiLFxuICAgICAgICB5MjogXCIxOFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFRhZ0ljb24gPSB7XG4gIG5hbWU6ICdUYWdJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXRhZ1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIwLjU5IDEzLjQxbC03LjE3IDcuMTdhMiAyIDAgMCAxLTIuODMgMEwyIDEyVjJoMTBsOC41OSA4LjU5YTIgMiAwIDAgMSAwIDIuODJ6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiN1wiLFxuICAgICAgICB5MTogXCI3XCIsXG4gICAgICAgIHgyOiBcIjcuMDFcIixcbiAgICAgICAgeTI6IFwiN1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFRhcmdldEljb24gPSB7XG4gIG5hbWU6ICdUYXJnZXRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXRhcmdldFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCI2XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCIxMlwiLFxuICAgICAgICByOiBcIjJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBUZXJtaW5hbEljb24gPSB7XG4gIG5hbWU6ICdUZXJtaW5hbEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdGVybWluYWxcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjQgMTcgMTAgMTEgNCA1XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMTlcIixcbiAgICAgICAgeDI6IFwiMjBcIixcbiAgICAgICAgeTI6IFwiMTlcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBUaGVybW9tZXRlckljb24gPSB7XG4gIG5hbWU6ICdUaGVybW9tZXRlckljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdGhlcm1vbWV0ZXJcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNCAxNC43NlYzLjVhMi41IDIuNSAwIDAgMC01IDB2MTEuMjZhNC41IDQuNSAwIDEgMCA1IDB6XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgVGh1bWJzRG93bkljb24gPSB7XG4gIG5hbWU6ICdUaHVtYnNEb3duSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci10aHVtYnMtZG93blwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTEwIDE1djRhMyAzIDAgMCAwIDMgM2w0LTlWMkg1LjcyYTIgMiAwIDAgMC0yIDEuN2wtMS4zOCA5YTIgMiAwIDAgMCAyIDIuM3ptNy0xM2gyLjY3QTIuMzEgMi4zMSAwIDAgMSAyMiA0djdhMi4zMSAyLjMxIDAgMCAxLTIuMzMgMkgxN1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFRodW1ic1VwSWNvbiA9IHtcbiAgbmFtZTogJ1RodW1ic1VwSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci10aHVtYnMtdXBcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNCA5VjVhMyAzIDAgMCAwLTMtM2wtNCA5djExaDExLjI4YTIgMiAwIDAgMCAyLTEuN2wxLjM4LTlhMiAyIDAgMCAwLTItMi4zek03IDIySDRhMiAyIDAgMCAxLTItMnYtN2EyIDIgMCAwIDEgMi0yaDNcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBUb2dnbGVMZWZ0SWNvbiA9IHtcbiAgbmFtZTogJ1RvZ2dsZUxlZnRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXRvZ2dsZS1sZWZ0XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIxXCIsXG4gICAgICAgIHk6IFwiNVwiLFxuICAgICAgICB3aWR0aDogXCIyMlwiLFxuICAgICAgICBoZWlnaHQ6IFwiMTRcIixcbiAgICAgICAgcng6IFwiN1wiLFxuICAgICAgICByeTogXCI3XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCI4XCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiM1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFRvZ2dsZVJpZ2h0SWNvbiA9IHtcbiAgbmFtZTogJ1RvZ2dsZVJpZ2h0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci10b2dnbGUtcmlnaHRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjFcIixcbiAgICAgICAgeTogXCI1XCIsXG4gICAgICAgIHdpZHRoOiBcIjIyXCIsXG4gICAgICAgIGhlaWdodDogXCIxNFwiLFxuICAgICAgICByeDogXCI3XCIsXG4gICAgICAgIHJ5OiBcIjdcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjE2XCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiM1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFRvb2xJY29uID0ge1xuICBuYW1lOiAnVG9vbEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdG9vbFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE0LjcgNi4zYTEgMSAwIDAgMCAwIDEuNGwxLjYgMS42YTEgMSAwIDAgMCAxLjQgMGwzLjc3LTMuNzdhNiA2IDAgMCAxLTcuOTQgNy45NGwtNi45MSA2LjkxYTIuMTIgMi4xMiAwIDAgMS0zLTNsNi45MS02LjkxYTYgNiAwIDAgMSA3Ljk0LTcuOTRsLTMuNzYgMy43NnpcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBUcmFzaDJJY29uID0ge1xuICBuYW1lOiAnVHJhc2gySWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci10cmFzaC0yXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIzIDYgNSA2IDIxIDZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xOSA2djE0YTIgMiAwIDAgMS0yIDJIN2EyIDIgMCAwIDEtMi0yVjZtMyAwVjRhMiAyIDAgMCAxIDItMmg0YTIgMiAwIDAgMSAyIDJ2MlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEwXCIsXG4gICAgICAgIHkxOiBcIjExXCIsXG4gICAgICAgIHgyOiBcIjEwXCIsXG4gICAgICAgIHkyOiBcIjE3XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTRcIixcbiAgICAgICAgeTE6IFwiMTFcIixcbiAgICAgICAgeDI6IFwiMTRcIixcbiAgICAgICAgeTI6IFwiMTdcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBUcmFzaEljb24gPSB7XG4gIG5hbWU6ICdUcmFzaEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdHJhc2hcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjMgNiA1IDYgMjEgNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE5IDZ2MTRhMiAyIDAgMCAxLTIgMkg3YTIgMiAwIDAgMS0yLTJWNm0zIDBWNGEyIDIgMCAwIDEgMi0yaDRhMiAyIDAgMCAxIDIgMnYyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgVHJlbGxvSWNvbiA9IHtcbiAgbmFtZTogJ1RyZWxsb0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdHJlbGxvXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIzXCIsXG4gICAgICAgIHk6IFwiM1wiLFxuICAgICAgICB3aWR0aDogXCIxOFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMThcIixcbiAgICAgICAgcng6IFwiMlwiLFxuICAgICAgICByeTogXCIyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCI3XCIsXG4gICAgICAgIHk6IFwiN1wiLFxuICAgICAgICB3aWR0aDogXCIzXCIsXG4gICAgICAgIGhlaWdodDogXCI5XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInJlY3RcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDogXCIxNFwiLFxuICAgICAgICB5OiBcIjdcIixcbiAgICAgICAgd2lkdGg6IFwiM1wiLFxuICAgICAgICBoZWlnaHQ6IFwiNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFRyZW5kaW5nRG93bkljb24gPSB7XG4gIG5hbWU6ICdUcmVuZGluZ0Rvd25JY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXRyZW5kaW5nLWRvd25cIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjIzIDE4IDEzLjUgOC41IDguNSAxMy41IDEgNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTcgMTggMjMgMTggMjMgMTJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBUcmVuZGluZ1VwSWNvbiA9IHtcbiAgbmFtZTogJ1RyZW5kaW5nVXBJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXRyZW5kaW5nLXVwXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIyMyA2IDEzLjUgMTUuNSA4LjUgMTAuNSAxIDE4XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxNyA2IDIzIDYgMjMgMTJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBUcmlhbmdsZUljb24gPSB7XG4gIG5hbWU6ICdUcmlhbmdsZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdHJpYW5nbGVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xMC4yOSAzLjg2TDEuODIgMThhMiAyIDAgMCAwIDEuNzEgM2gxNi45NGEyIDIgMCAwIDAgMS43MS0zTDEzLjcxIDMuODZhMiAyIDAgMCAwLTMuNDIgMHpcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBUcnVja0ljb24gPSB7XG4gIG5hbWU6ICdUcnVja0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdHJ1Y2tcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjFcIixcbiAgICAgICAgeTogXCIzXCIsXG4gICAgICAgIHdpZHRoOiBcIjE1XCIsXG4gICAgICAgIGhlaWdodDogXCIxM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5Z29uXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxNiA4IDIwIDggMjMgMTEgMjMgMTYgMTYgMTYgMTYgOFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiNS41XCIsXG4gICAgICAgIGN5OiBcIjE4LjVcIixcbiAgICAgICAgcjogXCIyLjVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjE4LjVcIixcbiAgICAgICAgY3k6IFwiMTguNVwiLFxuICAgICAgICByOiBcIjIuNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFR2SWNvbiA9IHtcbiAgbmFtZTogJ1R2SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci10dlwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiMlwiLFxuICAgICAgICB5OiBcIjdcIixcbiAgICAgICAgd2lkdGg6IFwiMjBcIixcbiAgICAgICAgaGVpZ2h0OiBcIjE1XCIsXG4gICAgICAgIHJ4OiBcIjJcIixcbiAgICAgICAgcnk6IFwiMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTcgMiAxMiA3IDcgMlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFR3aXRjaEljb24gPSB7XG4gIG5hbWU6ICdUd2l0Y2hJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXR3aXRjaFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIxIDJIM3YxNmg1djRsNC00aDVsNC00VjJ6bS0xMCA5VjdtNSA0VjdcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBUd2l0dGVySWNvbiA9IHtcbiAgbmFtZTogJ1R3aXR0ZXJJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXR3aXR0ZXJcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMyAzYTEwLjkgMTAuOSAwIDAgMS0zLjE0IDEuNTMgNC40OCA0LjQ4IDAgMCAwLTcuODYgM3YxQTEwLjY2IDEwLjY2IDAgMCAxIDMgNHMtNCA5IDUgMTNhMTEuNjQgMTEuNjQgMCAwIDEtNyAyYzkgNSAyMCAwIDIwLTExLjVhNC41IDQuNSAwIDAgMC0uMDgtLjgzQTcuNzIgNy43MiAwIDAgMCAyMyAzelwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFR5cGVJY29uID0ge1xuICBuYW1lOiAnVHlwZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdHlwZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiNCA3IDQgNCAyMCA0IDIwIDdcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI5XCIsXG4gICAgICAgIHkxOiBcIjIwXCIsXG4gICAgICAgIHgyOiBcIjE1XCIsXG4gICAgICAgIHkyOiBcIjIwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiNFwiLFxuICAgICAgICB4MjogXCIxMlwiLFxuICAgICAgICB5MjogXCIyMFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFVtYnJlbGxhSWNvbiA9IHtcbiAgbmFtZTogJ1VtYnJlbGxhSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci11bWJyZWxsYVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIzIDEyYTExLjA1IDExLjA1IDAgMCAwLTIyIDB6bS01IDdhMyAzIDAgMCAxLTYgMHYtN1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFVuZGVybGluZUljb24gPSB7XG4gIG5hbWU6ICdVbmRlcmxpbmVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXVuZGVybGluZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTYgM3Y3YTYgNiAwIDAgMCA2IDYgNiA2IDAgMCAwIDYtNlYzXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiNFwiLFxuICAgICAgICB5MTogXCIyMVwiLFxuICAgICAgICB4MjogXCIyMFwiLFxuICAgICAgICB5MjogXCIyMVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFVubG9ja0ljb24gPSB7XG4gIG5hbWU6ICdVbmxvY2tJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXVubG9ja1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJyZWN0XCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHg6IFwiM1wiLFxuICAgICAgICB5OiBcIjExXCIsXG4gICAgICAgIHdpZHRoOiBcIjE4XCIsXG4gICAgICAgIGhlaWdodDogXCIxMVwiLFxuICAgICAgICByeDogXCIyXCIsXG4gICAgICAgIHJ5OiBcIjJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk03IDExVjdhNSA1IDAgMCAxIDkuOS0xXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgVXBsb2FkQ2xvdWRJY29uID0ge1xuICBuYW1lOiAnVXBsb2FkQ2xvdWRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXVwbG9hZC1jbG91ZFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTYgMTYgMTIgMTIgOCAxNlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjEyXCIsXG4gICAgICAgIHkxOiBcIjEyXCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjIxXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMjAuMzkgMTguMzlBNSA1IDAgMCAwIDE4IDloLTEuMjZBOCA4IDAgMSAwIDMgMTYuM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTYgMTYgMTIgMTIgOCAxNlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFVwbG9hZEljb24gPSB7XG4gIG5hbWU6ICdVcGxvYWRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXVwbG9hZFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTIxIDE1djRhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ2LTRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjE3IDggMTIgMyA3IDhcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIzXCIsXG4gICAgICAgIHgyOiBcIjEyXCIsXG4gICAgICAgIHkyOiBcIjE1XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgVXNlckNoZWNrSWNvbiA9IHtcbiAgbmFtZTogJ1VzZXJDaGVja0ljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdXNlci1jaGVja1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE2IDIxdi0yYTQgNCAwIDAgMC00LTRINWE0IDQgMCAwIDAtNCA0djJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjguNVwiLFxuICAgICAgICBjeTogXCI3XCIsXG4gICAgICAgIHI6IFwiNFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTcgMTEgMTkgMTMgMjMgOVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFVzZXJNaW51c0ljb24gPSB7XG4gIG5hbWU6ICdVc2VyTWludXNJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXVzZXItbWludXNcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNiAyMXYtMmE0IDQgMCAwIDAtNC00SDVhNCA0IDAgMCAwLTQgNHYyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCI4LjVcIixcbiAgICAgICAgY3k6IFwiN1wiLFxuICAgICAgICByOiBcIjRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyM1wiLFxuICAgICAgICB5MTogXCIxMVwiLFxuICAgICAgICB4MjogXCIxN1wiLFxuICAgICAgICB5MjogXCIxMVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFVzZXJQbHVzSWNvbiA9IHtcbiAgbmFtZTogJ1VzZXJQbHVzSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci11c2VyLXBsdXNcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNiAyMXYtMmE0IDQgMCAwIDAtNC00SDVhNCA0IDAgMCAwLTQgNHYyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCI4LjVcIixcbiAgICAgICAgY3k6IFwiN1wiLFxuICAgICAgICByOiBcIjRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMFwiLFxuICAgICAgICB5MTogXCI4XCIsXG4gICAgICAgIHgyOiBcIjIwXCIsXG4gICAgICAgIHkyOiBcIjE0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMjNcIixcbiAgICAgICAgeTE6IFwiMTFcIixcbiAgICAgICAgeDI6IFwiMTdcIixcbiAgICAgICAgeTI6IFwiMTFcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBVc2VyWEljb24gPSB7XG4gIG5hbWU6ICdVc2VyWEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdXNlci14XCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTYgMjF2LTJhNCA0IDAgMCAwLTQtNEg1YTQgNCAwIDAgMC00IDR2MlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiOC41XCIsXG4gICAgICAgIGN5OiBcIjdcIixcbiAgICAgICAgcjogXCI0XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMThcIixcbiAgICAgICAgeTE6IFwiOFwiLFxuICAgICAgICB4MjogXCIyM1wiLFxuICAgICAgICB5MjogXCIxM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjIzXCIsXG4gICAgICAgIHkxOiBcIjhcIixcbiAgICAgICAgeDI6IFwiMThcIixcbiAgICAgICAgeTI6IFwiMTNcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBVc2VySWNvbiA9IHtcbiAgbmFtZTogJ1VzZXJJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXVzZXJcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMCAyMXYtMmE0IDQgMCAwIDAtNC00SDhhNCA0IDAgMCAwLTQgNHYyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMlwiLFxuICAgICAgICBjeTogXCI3XCIsXG4gICAgICAgIHI6IFwiNFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFVzZXJzSWNvbiA9IHtcbiAgbmFtZTogJ1VzZXJzSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci11c2Vyc1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE3IDIxdi0yYTQgNCAwIDAgMC00LTRINWE0IDQgMCAwIDAtNCA0djJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjlcIixcbiAgICAgICAgY3k6IFwiN1wiLFxuICAgICAgICByOiBcIjRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMyAyMXYtMmE0IDQgMCAwIDAtMy0zLjg3XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTYgMy4xM2E0IDQgMCAwIDEgMCA3Ljc1XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgVmlkZW9PZmZJY29uID0ge1xuICBuYW1lOiAnVmlkZW9PZmZJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXZpZGVvLW9mZlwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE2IDE2djFhMiAyIDAgMCAxLTIgMkgzYTIgMiAwIDAgMS0yLTJWN2EyIDIgMCAwIDEgMi0yaDJtNS42NiAwSDE0YTIgMiAwIDAgMSAyIDJ2My4zNGwxIDFMMjMgN3YxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjFcIixcbiAgICAgICAgeTE6IFwiMVwiLFxuICAgICAgICB4MjogXCIyM1wiLFxuICAgICAgICB5MjogXCIyM1wiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFZpZGVvSWNvbiA9IHtcbiAgbmFtZTogJ1ZpZGVvSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci12aWRlb1wiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5Z29uXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIyMyA3IDE2IDEyIDIzIDE3IDIzIDdcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjFcIixcbiAgICAgICAgeTogXCI1XCIsXG4gICAgICAgIHdpZHRoOiBcIjE1XCIsXG4gICAgICAgIGhlaWdodDogXCIxNFwiLFxuICAgICAgICByeDogXCIyXCIsXG4gICAgICAgIHJ5OiBcIjJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBWb2ljZW1haWxJY29uID0ge1xuICBuYW1lOiAnVm9pY2VtYWlsSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci12b2ljZW1haWxcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjUuNVwiLFxuICAgICAgICBjeTogXCIxMS41XCIsXG4gICAgICAgIHI6IFwiNC41XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxOC41XCIsXG4gICAgICAgIGN5OiBcIjExLjVcIixcbiAgICAgICAgcjogXCI0LjVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI1LjVcIixcbiAgICAgICAgeTE6IFwiMTZcIixcbiAgICAgICAgeDI6IFwiMTguNVwiLFxuICAgICAgICB5MjogXCIxNlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFZvbHVtZTFJY29uID0ge1xuICBuYW1lOiAnVm9sdW1lMUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItdm9sdW1lLTFcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWdvblwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTEgNSA2IDkgMiA5IDIgMTUgNiAxNSAxMSAxOSAxMSA1XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNMTUuNTQgOC40NmE1IDUgMCAwIDEgMCA3LjA3XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgVm9sdW1lMkljb24gPSB7XG4gIG5hbWU6ICdWb2x1bWUySWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci12b2x1bWUtMlwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5Z29uXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxMSA1IDYgOSAyIDkgMiAxNSA2IDE1IDExIDE5IDExIDVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xOS4wNyA0LjkzYTEwIDEwIDAgMCAxIDAgMTQuMTRNMTUuNTQgOC40NmE1IDUgMCAwIDEgMCA3LjA3XCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgVm9sdW1lWEljb24gPSB7XG4gIG5hbWU6ICdWb2x1bWVYSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci12b2x1bWUteFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5Z29uXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxMSA1IDYgOSAyIDkgMiAxNSA2IDE1IDExIDE5IDExIDVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyM1wiLFxuICAgICAgICB5MTogXCI5XCIsXG4gICAgICAgIHgyOiBcIjE3XCIsXG4gICAgICAgIHkyOiBcIjE1XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTdcIixcbiAgICAgICAgeTE6IFwiOVwiLFxuICAgICAgICB4MjogXCIyM1wiLFxuICAgICAgICB5MjogXCIxNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFZvbHVtZUljb24gPSB7XG4gIG5hbWU6ICdWb2x1bWVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXZvbHVtZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwb2x5Z29uXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxMSA1IDYgOSAyIDkgMiAxNSA2IDE1IDExIDE5IDExIDVcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBXYXRjaEljb24gPSB7XG4gIG5hbWU6ICdXYXRjaEljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItd2F0Y2hcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwiY2lyY2xlXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGN4OiBcIjEyXCIsXG4gICAgICAgIGN5OiBcIjEyXCIsXG4gICAgICAgIHI6IFwiN1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTIgOSAxMiAxMiAxMy41IDEzLjVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xNi41MSAxNy4zNWwtLjM1IDMuODNhMiAyIDAgMCAxLTIgMS44Mkg5LjgzYTIgMiAwIDAgMS0yLTEuODJsLS4zNS0zLjgzbS4wMS0xMC43bC4zNS0zLjgzQTIgMiAwIDAgMSA5LjgzIDFoNC4zNWEyIDIgMCAwIDEgMiAxLjgybC4zNSAzLjgzXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgV2lmaU9mZkljb24gPSB7XG4gIG5hbWU6ICdXaWZpT2ZmSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci13aWZpLW9mZlwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjFcIixcbiAgICAgICAgeTE6IFwiMVwiLFxuICAgICAgICB4MjogXCIyM1wiLFxuICAgICAgICB5MjogXCIyM1wiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTE2LjcyIDExLjA2QTEwLjk0IDEwLjk0IDAgMCAxIDE5IDEyLjU1XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNNSAxMi41NWExMC45NCAxMC45NCAwIDAgMSA1LjE3LTIuMzlcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xMC43MSA1LjA1QTE2IDE2IDAgMCAxIDIyLjU4IDlcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0xLjQyIDlhMTUuOTEgMTUuOTEgMCAwIDEgNC43LTIuODhcIlxuICAgICAgfVxuICAgIH0pLCBoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk04LjUzIDE2LjExYTYgNiAwIDAgMSA2Ljk1IDBcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxMlwiLFxuICAgICAgICB5MTogXCIyMFwiLFxuICAgICAgICB4MjogXCIxMi4wMVwiLFxuICAgICAgICB5MjogXCIyMFwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFdpZmlJY29uID0ge1xuICBuYW1lOiAnV2lmaUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXItd2lmaVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTUgMTIuNTVhMTEgMTEgMCAwIDEgMTQuMDggMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwYXRoXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIGQ6IFwiTTEuNDIgOWExNiAxNiAwIDAgMSAyMS4xNiAwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBhdGhcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgZDogXCJNOC41MyAxNi4xMWE2IDYgMCAwIDEgNi45NSAwXCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMTJcIixcbiAgICAgICAgeTE6IFwiMjBcIixcbiAgICAgICAgeDI6IFwiMTIuMDFcIixcbiAgICAgICAgeTI6IFwiMjBcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBXaW5kSWNvbiA9IHtcbiAgbmFtZTogJ1dpbmRJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXdpbmRcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk05LjU5IDQuNTlBMiAyIDAgMSAxIDExIDhIMm0xMC41OSAxMS40MUEyIDIgMCAxIDAgMTQgMTZIMm0xNS43My04LjI3QTIuNSAyLjUgMCAxIDEgMTkuNSAxMkgyXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgWENpcmNsZUljb24gPSB7XG4gIG5hbWU6ICdYQ2lyY2xlSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci14LWNpcmNsZVwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTJcIixcbiAgICAgICAgY3k6IFwiMTJcIixcbiAgICAgICAgcjogXCIxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE1XCIsXG4gICAgICAgIHkxOiBcIjlcIixcbiAgICAgICAgeDI6IFwiOVwiLFxuICAgICAgICB5MjogXCIxNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjlcIixcbiAgICAgICAgeTE6IFwiOVwiLFxuICAgICAgICB4MjogXCIxNVwiLFxuICAgICAgICB5MjogXCIxNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFhPY3RhZ29uSWNvbiA9IHtcbiAgbmFtZTogJ1hPY3RhZ29uSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci14LW9jdGFnb25cIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWdvblwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiNy44NiAyIDE2LjE0IDIgMjIgNy44NiAyMiAxNi4xNCAxNi4xNCAyMiA3Ljg2IDIyIDIgMTYuMTQgMiA3Ljg2IDcuODYgMlwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjE1XCIsXG4gICAgICAgIHkxOiBcIjlcIixcbiAgICAgICAgeDI6IFwiOVwiLFxuICAgICAgICB5MjogXCIxNVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjlcIixcbiAgICAgICAgeTE6IFwiOVwiLFxuICAgICAgICB4MjogXCIxNVwiLFxuICAgICAgICB5MjogXCIxNVwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFhTcXVhcmVJY29uID0ge1xuICBuYW1lOiAnWFNxdWFyZUljb24nLFxuICBwcm9wczoge1xuICAgIHNpemU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICcyNCcsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcihzKSB7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocykgfHwgcy5sZW5ndGggPj0gMiAmJiAhaXNOYU4ocy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpKSAmJiBzLnNsaWNlKC0xKSA9PT0gJ3gnO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZnVuY3Rpb25hbDogdHJ1ZSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoaCwgY3R4KSB7XG4gICAgdmFyIHNpemUgPSBjdHgucHJvcHMuc2l6ZS5zbGljZSgtMSkgPT09ICd4JyA/IGN0eC5wcm9wcy5zaXplLnNsaWNlKDAsIGN0eC5wcm9wcy5zaXplLmxlbmd0aCAtIDEpICsgJ2VtJyA6IHBhcnNlSW50KGN0eC5wcm9wcy5zaXplKSArICdweCc7XG4gICAgdmFyIGF0dHJzID0gY3R4LmRhdGEuYXR0cnMgfHwge307XG4gICAgYXR0cnMud2lkdGggPSBhdHRycy53aWR0aCB8fCBzaXplO1xuICAgIGF0dHJzLmhlaWdodCA9IGF0dHJzLmhlaWdodCB8fCBzaXplO1xuICAgIGN0eC5kYXRhLmF0dHJzID0gYXR0cnM7XG4gICAgcmV0dXJuIGgoXCJzdmdcIiwgX21lcmdlSlNYUHJvcHMoW3tcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgIHdpZHRoOiBcIjI0XCIsXG4gICAgICAgIGhlaWdodDogXCIyNFwiLFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcIjJcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwicm91bmRcIlxuICAgICAgfSxcbiAgICAgIFwiY2xhc3NcIjogXCJmZWF0aGVyIGZlYXRoZXIteC1zcXVhcmVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicmVjdFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4OiBcIjNcIixcbiAgICAgICAgeTogXCIzXCIsXG4gICAgICAgIHdpZHRoOiBcIjE4XCIsXG4gICAgICAgIGhlaWdodDogXCIxOFwiLFxuICAgICAgICByeDogXCIyXCIsXG4gICAgICAgIHJ5OiBcIjJcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI5XCIsXG4gICAgICAgIHkxOiBcIjlcIixcbiAgICAgICAgeDI6IFwiMTVcIixcbiAgICAgICAgeTI6IFwiMTVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxNVwiLFxuICAgICAgICB5MTogXCI5XCIsXG4gICAgICAgIHgyOiBcIjlcIixcbiAgICAgICAgeTI6IFwiMTVcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBYSWNvbiA9IHtcbiAgbmFtZTogJ1hJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXhcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxOFwiLFxuICAgICAgICB5MTogXCI2XCIsXG4gICAgICAgIHgyOiBcIjZcIixcbiAgICAgICAgeTI6IFwiMThcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI2XCIsXG4gICAgICAgIHkxOiBcIjZcIixcbiAgICAgICAgeDI6IFwiMThcIixcbiAgICAgICAgeTI6IFwiMThcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBZb3V0dWJlSWNvbiA9IHtcbiAgbmFtZTogJ1lvdXR1YmVJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXlvdXR1YmVcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicGF0aFwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBkOiBcIk0yMi41NCA2LjQyYTIuNzggMi43OCAwIDAgMC0xLjk0LTJDMTguODggNCAxMiA0IDEyIDRzLTYuODggMC04LjYuNDZhMi43OCAyLjc4IDAgMCAwLTEuOTQgMkEyOSAyOSAwIDAgMCAxIDExLjc1YTI5IDI5IDAgMCAwIC40NiA1LjMzQTIuNzggMi43OCAwIDAgMCAzLjQgMTljMS43Mi40NiA4LjYuNDYgOC42LjQ2czYuODggMCA4LjYtLjQ2YTIuNzggMi43OCAwIDAgMCAxLjk0LTIgMjkgMjkgMCAwIDAgLjQ2LTUuMjUgMjkgMjkgMCAwIDAtLjQ2LTUuMzN6XCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlnb25cIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjkuNzUgMTUuMDIgMTUuNSAxMS43NSA5Ljc1IDguNDggOS43NSAxNS4wMlwiXG4gICAgICB9XG4gICAgfSldKTtcbiAgfVxufTtcblxudmFyIFphcE9mZkljb24gPSB7XG4gIG5hbWU6ICdaYXBPZmZJY29uJyxcbiAgcHJvcHM6IHtcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiAnMjQnLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3Iocykge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHMpIHx8IHMubGVuZ3RoID49IDIgJiYgIWlzTmFOKHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSkgJiYgcy5zbGljZSgtMSkgPT09ICd4JztcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGZ1bmN0aW9uYWw6IHRydWUsXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyKGgsIGN0eCkge1xuICAgIHZhciBzaXplID0gY3R4LnByb3BzLnNpemUuc2xpY2UoLTEpID09PSAneCcgPyBjdHgucHJvcHMuc2l6ZS5zbGljZSgwLCBjdHgucHJvcHMuc2l6ZS5sZW5ndGggLSAxKSArICdlbScgOiBwYXJzZUludChjdHgucHJvcHMuc2l6ZSkgKyAncHgnO1xuICAgIHZhciBhdHRycyA9IGN0eC5kYXRhLmF0dHJzIHx8IHt9O1xuICAgIGF0dHJzLndpZHRoID0gYXR0cnMud2lkdGggfHwgc2l6ZTtcbiAgICBhdHRycy5oZWlnaHQgPSBhdHRycy5oZWlnaHQgfHwgc2l6ZTtcbiAgICBjdHguZGF0YS5hdHRycyA9IGF0dHJzO1xuICAgIHJldHVybiBoKFwic3ZnXCIsIF9tZXJnZUpTWFByb3BzKFt7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICB3aWR0aDogXCIyNFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMjRcIixcbiAgICAgICAgdmlld0JveDogXCIwIDAgMjQgMjRcIixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCIyXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInJvdW5kXCJcbiAgICAgIH0sXG4gICAgICBcImNsYXNzXCI6IFwiZmVhdGhlciBmZWF0aGVyLXphcC1vZmZcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgcG9pbnRzOiBcIjEyLjQxIDYuNzUgMTMgMiAxMC41NyA0LjkyXCJcbiAgICAgIH1cbiAgICB9KSwgaChcInBvbHlsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHBvaW50czogXCIxOC41NyAxMi45MSAyMSAxMCAxNS42NiAxMFwiXG4gICAgICB9XG4gICAgfSksIGgoXCJwb2x5bGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiOCA4IDMgMTQgMTIgMTQgMTEgMjIgMTYgMTZcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIxXCIsXG4gICAgICAgIHkxOiBcIjFcIixcbiAgICAgICAgeDI6IFwiMjNcIixcbiAgICAgICAgeTI6IFwiMjNcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBaYXBJY29uID0ge1xuICBuYW1lOiAnWmFwSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci16YXBcIlxuICAgIH0sIGN0eC5kYXRhXSksIFtoKFwicG9seWdvblwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBwb2ludHM6IFwiMTMgMiAzIDE0IDEyIDE0IDExIDIyIDIxIDEwIDEyIDEwIDEzIDJcIlxuICAgICAgfVxuICAgIH0pXSk7XG4gIH1cbn07XG5cbnZhciBab29tSW5JY29uID0ge1xuICBuYW1lOiAnWm9vbUluSWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci16b29tLWluXCJcbiAgICB9LCBjdHguZGF0YV0pLCBbaChcImNpcmNsZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICBjeDogXCIxMVwiLFxuICAgICAgICBjeTogXCIxMVwiLFxuICAgICAgICByOiBcIjhcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCIyMVwiLFxuICAgICAgICB5MTogXCIyMVwiLFxuICAgICAgICB4MjogXCIxNi42NVwiLFxuICAgICAgICB5MjogXCIxNi42NVwiXG4gICAgICB9XG4gICAgfSksIGgoXCJsaW5lXCIsIHtcbiAgICAgIGF0dHJzOiB7XG4gICAgICAgIHgxOiBcIjExXCIsXG4gICAgICAgIHkxOiBcIjhcIixcbiAgICAgICAgeDI6IFwiMTFcIixcbiAgICAgICAgeTI6IFwiMTRcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI4XCIsXG4gICAgICAgIHkxOiBcIjExXCIsXG4gICAgICAgIHgyOiBcIjE0XCIsXG4gICAgICAgIHkyOiBcIjExXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG52YXIgWm9vbU91dEljb24gPSB7XG4gIG5hbWU6ICdab29tT3V0SWNvbicsXG4gIHByb3BzOiB7XG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJzI0JyxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHMpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTihzKSB8fCBzLmxlbmd0aCA+PSAyICYmICFpc05hTihzLnNsaWNlKDAsIHMubGVuZ3RoIC0gMSkpICYmIHMuc2xpY2UoLTEpID09PSAneCc7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihoLCBjdHgpIHtcbiAgICB2YXIgc2l6ZSA9IGN0eC5wcm9wcy5zaXplLnNsaWNlKC0xKSA9PT0gJ3gnID8gY3R4LnByb3BzLnNpemUuc2xpY2UoMCwgY3R4LnByb3BzLnNpemUubGVuZ3RoIC0gMSkgKyAnZW0nIDogcGFyc2VJbnQoY3R4LnByb3BzLnNpemUpICsgJ3B4JztcbiAgICB2YXIgYXR0cnMgPSBjdHguZGF0YS5hdHRycyB8fCB7fTtcbiAgICBhdHRycy53aWR0aCA9IGF0dHJzLndpZHRoIHx8IHNpemU7XG4gICAgYXR0cnMuaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0IHx8IHNpemU7XG4gICAgY3R4LmRhdGEuYXR0cnMgPSBhdHRycztcbiAgICByZXR1cm4gaChcInN2Z1wiLCBfbWVyZ2VKU1hQcm9wcyhbe1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICAgICAgd2lkdGg6IFwiMjRcIixcbiAgICAgICAgaGVpZ2h0OiBcIjI0XCIsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiMlwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwicm91bmRcIixcbiAgICAgICAgXCJzdHJva2UtbGluZWpvaW5cIjogXCJyb3VuZFwiXG4gICAgICB9LFxuICAgICAgXCJjbGFzc1wiOiBcImZlYXRoZXIgZmVhdGhlci16b29tLW91dFwiXG4gICAgfSwgY3R4LmRhdGFdKSwgW2goXCJjaXJjbGVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgY3g6IFwiMTFcIixcbiAgICAgICAgY3k6IFwiMTFcIixcbiAgICAgICAgcjogXCI4XCJcbiAgICAgIH1cbiAgICB9KSwgaChcImxpbmVcIiwge1xuICAgICAgYXR0cnM6IHtcbiAgICAgICAgeDE6IFwiMjFcIixcbiAgICAgICAgeTE6IFwiMjFcIixcbiAgICAgICAgeDI6IFwiMTYuNjVcIixcbiAgICAgICAgeTI6IFwiMTYuNjVcIlxuICAgICAgfVxuICAgIH0pLCBoKFwibGluZVwiLCB7XG4gICAgICBhdHRyczoge1xuICAgICAgICB4MTogXCI4XCIsXG4gICAgICAgIHkxOiBcIjExXCIsXG4gICAgICAgIHgyOiBcIjE0XCIsXG4gICAgICAgIHkyOiBcIjExXCJcbiAgICAgIH1cbiAgICB9KV0pO1xuICB9XG59O1xuXG5leHBvcnQgeyBBY3Rpdml0eUljb24sIEFpcnBsYXlJY29uLCBBbGVydENpcmNsZUljb24sIEFsZXJ0T2N0YWdvbkljb24sIEFsZXJ0VHJpYW5nbGVJY29uLCBBbGlnbkNlbnRlckljb24sIEFsaWduSnVzdGlmeUljb24sIEFsaWduTGVmdEljb24sIEFsaWduUmlnaHRJY29uLCBBbmNob3JJY29uLCBBcGVydHVyZUljb24sIEFyY2hpdmVJY29uLCBBcnJvd0Rvd25DaXJjbGVJY29uLCBBcnJvd0Rvd25MZWZ0SWNvbiwgQXJyb3dEb3duUmlnaHRJY29uLCBBcnJvd0Rvd25JY29uLCBBcnJvd0xlZnRDaXJjbGVJY29uLCBBcnJvd0xlZnRJY29uLCBBcnJvd1JpZ2h0Q2lyY2xlSWNvbiwgQXJyb3dSaWdodEljb24sIEFycm93VXBDaXJjbGVJY29uLCBBcnJvd1VwTGVmdEljb24sIEFycm93VXBSaWdodEljb24sIEFycm93VXBJY29uLCBBdFNpZ25JY29uLCBBd2FyZEljb24sIEJhckNoYXJ0Mkljb24sIEJhckNoYXJ0SWNvbiwgQmF0dGVyeUNoYXJnaW5nSWNvbiwgQmF0dGVyeUljb24sIEJlbGxPZmZJY29uLCBCZWxsSWNvbiwgQmx1ZXRvb3RoSWNvbiwgQm9sZEljb24sIEJvb2tPcGVuSWNvbiwgQm9va0ljb24sIEJvb2ttYXJrSWNvbiwgQm94SWNvbiwgQnJpZWZjYXNlSWNvbiwgQ2FsZW5kYXJJY29uLCBDYW1lcmFPZmZJY29uLCBDYW1lcmFJY29uLCBDYXN0SWNvbiwgQ2hlY2tDaXJjbGVJY29uLCBDaGVja1NxdWFyZUljb24sIENoZWNrSWNvbiwgQ2hldnJvbkRvd25JY29uLCBDaGV2cm9uTGVmdEljb24sIENoZXZyb25SaWdodEljb24sIENoZXZyb25VcEljb24sIENoZXZyb25zRG93bkljb24sIENoZXZyb25zTGVmdEljb24sIENoZXZyb25zUmlnaHRJY29uLCBDaGV2cm9uc1VwSWNvbiwgQ2hyb21lSWNvbiwgQ2lyY2xlSWNvbiwgQ2xpcGJvYXJkSWNvbiwgQ2xvY2tJY29uLCBDbG91ZERyaXp6bGVJY29uLCBDbG91ZExpZ2h0bmluZ0ljb24sIENsb3VkT2ZmSWNvbiwgQ2xvdWRSYWluSWNvbiwgQ2xvdWRTbm93SWNvbiwgQ2xvdWRJY29uLCBDb2RlSWNvbiwgQ29kZXBlbkljb24sIENvZGVzYW5kYm94SWNvbiwgQ29mZmVlSWNvbiwgQ29sdW1uc0ljb24sIENvbW1hbmRJY29uLCBDb21wYXNzSWNvbiwgQ29weUljb24sIENvcm5lckRvd25MZWZ0SWNvbiwgQ29ybmVyRG93blJpZ2h0SWNvbiwgQ29ybmVyTGVmdERvd25JY29uLCBDb3JuZXJMZWZ0VXBJY29uLCBDb3JuZXJSaWdodERvd25JY29uLCBDb3JuZXJSaWdodFVwSWNvbiwgQ29ybmVyVXBMZWZ0SWNvbiwgQ29ybmVyVXBSaWdodEljb24sIENwdUljb24sIENyZWRpdENhcmRJY29uLCBDcm9wSWNvbiwgQ3Jvc3NoYWlySWNvbiwgRGF0YWJhc2VJY29uLCBEZWxldGVJY29uLCBEaXNjSWNvbiwgRGl2aWRlQ2lyY2xlSWNvbiwgRGl2aWRlU3F1YXJlSWNvbiwgRGl2aWRlSWNvbiwgRG9sbGFyU2lnbkljb24sIERvd25sb2FkQ2xvdWRJY29uLCBEb3dubG9hZEljb24sIERyaWJiYmxlSWNvbiwgRHJvcGxldEljb24sIEVkaXQySWNvbiwgRWRpdDNJY29uLCBFZGl0SWNvbiwgRXh0ZXJuYWxMaW5rSWNvbiwgRXllT2ZmSWNvbiwgRXllSWNvbiwgRmFjZWJvb2tJY29uLCBGYXN0Rm9yd2FyZEljb24sIEZlYXRoZXJJY29uLCBGaWdtYUljb24sIEZpbGVNaW51c0ljb24sIEZpbGVQbHVzSWNvbiwgRmlsZVRleHRJY29uLCBGaWxlSWNvbiwgRmlsbUljb24sIEZpbHRlckljb24sIEZsYWdJY29uLCBGb2xkZXJNaW51c0ljb24sIEZvbGRlclBsdXNJY29uLCBGb2xkZXJJY29uLCBGcmFtZXJJY29uLCBGcm93bkljb24sIEdpZnRJY29uLCBHaXRCcmFuY2hJY29uLCBHaXRDb21taXRJY29uLCBHaXRNZXJnZUljb24sIEdpdFB1bGxSZXF1ZXN0SWNvbiwgR2l0aHViSWNvbiwgR2l0bGFiSWNvbiwgR2xvYmVJY29uLCBHcmlkSWNvbiwgSGFyZERyaXZlSWNvbiwgSGFzaEljb24sIEhlYWRwaG9uZXNJY29uLCBIZWFydEljb24sIEhlbHBDaXJjbGVJY29uLCBIZXhhZ29uSWNvbiwgSG9tZUljb24sIEltYWdlSWNvbiwgSW5ib3hJY29uLCBJbmZvSWNvbiwgSW5zdGFncmFtSWNvbiwgSXRhbGljSWNvbiwgS2V5SWNvbiwgTGF5ZXJzSWNvbiwgTGF5b3V0SWNvbiwgTGlmZUJ1b3lJY29uLCBMaW5rMkljb24sIExpbmtJY29uLCBMaW5rZWRpbkljb24sIExpc3RJY29uLCBMb2FkZXJJY29uLCBMb2NrSWNvbiwgTG9nSW5JY29uLCBMb2dPdXRJY29uLCBNYWlsSWNvbiwgTWFwUGluSWNvbiwgTWFwSWNvbiwgTWF4aW1pemUySWNvbiwgTWF4aW1pemVJY29uLCBNZWhJY29uLCBNZW51SWNvbiwgTWVzc2FnZUNpcmNsZUljb24sIE1lc3NhZ2VTcXVhcmVJY29uLCBNaWNPZmZJY29uLCBNaWNJY29uLCBNaW5pbWl6ZTJJY29uLCBNaW5pbWl6ZUljb24sIE1pbnVzQ2lyY2xlSWNvbiwgTWludXNTcXVhcmVJY29uLCBNaW51c0ljb24sIE1vbml0b3JJY29uLCBNb29uSWNvbiwgTW9yZUhvcml6b250YWxJY29uLCBNb3JlVmVydGljYWxJY29uLCBNb3VzZVBvaW50ZXJJY29uLCBNb3ZlSWNvbiwgTXVzaWNJY29uLCBOYXZpZ2F0aW9uMkljb24sIE5hdmlnYXRpb25JY29uLCBPY3RhZ29uSWNvbiwgUGFja2FnZUljb24sIFBhcGVyY2xpcEljb24sIFBhdXNlQ2lyY2xlSWNvbiwgUGF1c2VJY29uLCBQZW5Ub29sSWNvbiwgUGVyY2VudEljb24sIFBob25lQ2FsbEljb24sIFBob25lRm9yd2FyZGVkSWNvbiwgUGhvbmVJbmNvbWluZ0ljb24sIFBob25lTWlzc2VkSWNvbiwgUGhvbmVPZmZJY29uLCBQaG9uZU91dGdvaW5nSWNvbiwgUGhvbmVJY29uLCBQaWVDaGFydEljb24sIFBsYXlDaXJjbGVJY29uLCBQbGF5SWNvbiwgUGx1c0NpcmNsZUljb24sIFBsdXNTcXVhcmVJY29uLCBQbHVzSWNvbiwgUG9ja2V0SWNvbiwgUG93ZXJJY29uLCBQcmludGVySWNvbiwgUmFkaW9JY29uLCBSZWZyZXNoQ2N3SWNvbiwgUmVmcmVzaEN3SWNvbiwgUmVwZWF0SWNvbiwgUmV3aW5kSWNvbiwgUm90YXRlQ2N3SWNvbiwgUm90YXRlQ3dJY29uLCBSc3NJY29uLCBTYXZlSWNvbiwgU2Npc3NvcnNJY29uLCBTZWFyY2hJY29uLCBTZW5kSWNvbiwgU2VydmVySWNvbiwgU2V0dGluZ3NJY29uLCBTaGFyZTJJY29uLCBTaGFyZUljb24sIFNoaWVsZE9mZkljb24sIFNoaWVsZEljb24sIFNob3BwaW5nQmFnSWNvbiwgU2hvcHBpbmdDYXJ0SWNvbiwgU2h1ZmZsZUljb24sIFNpZGViYXJJY29uLCBTa2lwQmFja0ljb24sIFNraXBGb3J3YXJkSWNvbiwgU2xhY2tJY29uLCBTbGFzaEljb24sIFNsaWRlcnNJY29uLCBTbWFydHBob25lSWNvbiwgU21pbGVJY29uLCBTcGVha2VySWNvbiwgU3F1YXJlSWNvbiwgU3Rhckljb24sIFN0b3BDaXJjbGVJY29uLCBTdW5JY29uLCBTdW5yaXNlSWNvbiwgU3Vuc2V0SWNvbiwgVGFibGV0SWNvbiwgVGFnSWNvbiwgVGFyZ2V0SWNvbiwgVGVybWluYWxJY29uLCBUaGVybW9tZXRlckljb24sIFRodW1ic0Rvd25JY29uLCBUaHVtYnNVcEljb24sIFRvZ2dsZUxlZnRJY29uLCBUb2dnbGVSaWdodEljb24sIFRvb2xJY29uLCBUcmFzaDJJY29uLCBUcmFzaEljb24sIFRyZWxsb0ljb24sIFRyZW5kaW5nRG93bkljb24sIFRyZW5kaW5nVXBJY29uLCBUcmlhbmdsZUljb24sIFRydWNrSWNvbiwgVHZJY29uLCBUd2l0Y2hJY29uLCBUd2l0dGVySWNvbiwgVHlwZUljb24sIFVtYnJlbGxhSWNvbiwgVW5kZXJsaW5lSWNvbiwgVW5sb2NrSWNvbiwgVXBsb2FkQ2xvdWRJY29uLCBVcGxvYWRJY29uLCBVc2VyQ2hlY2tJY29uLCBVc2VyTWludXNJY29uLCBVc2VyUGx1c0ljb24sIFVzZXJYSWNvbiwgVXNlckljb24sIFVzZXJzSWNvbiwgVmlkZW9PZmZJY29uLCBWaWRlb0ljb24sIFZvaWNlbWFpbEljb24sIFZvbHVtZTFJY29uLCBWb2x1bWUySWNvbiwgVm9sdW1lWEljb24sIFZvbHVtZUljb24sIFdhdGNoSWNvbiwgV2lmaU9mZkljb24sIFdpZmlJY29uLCBXaW5kSWNvbiwgWENpcmNsZUljb24sIFhPY3RhZ29uSWNvbiwgWFNxdWFyZUljb24sIFhJY29uLCBZb3V0dWJlSWNvbiwgWmFwT2ZmSWNvbiwgWmFwSWNvbiwgWm9vbUluSWNvbiwgWm9vbU91dEljb24gfTtcbiIsImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS03LTIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTctMyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FkbWluTW9iaWxlTWVudS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0yMjY5OWIyNSZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3MmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS03LTIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTctMyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FkbWluTW9iaWxlTWVudS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0yMjY5OWIyNSZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3MmXCIiLCJ2YXIgcmVuZGVyID0gZnVuY3Rpb24gKCkge3ZhciBfdm09dGhpczt2YXIgX2g9X3ZtLiRjcmVhdGVFbGVtZW50O3ZhciBfYz1fdm0uX3NlbGYuX2N8fF9oO3JldHVybiBfYygnaGVhZGVyJyx7c3RhdGljQ2xhc3M6XCJtb2JpbGUtaGVhZGVyXCJ9LFtfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJnby1iYWNrXCIsb246e1wiY2xpY2tcIjpfdm0uZ29CYWNrfX0sW19jKCdjaGV2cm9uLWxlZnQtaWNvbicse3N0YXRpY0NsYXNzOlwiaWNvblwiLGF0dHJzOntcInNpemVcIjpcIjE3XCJ9fSldLDEpLF92bS5fdihcIiBcIiksX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwibG9jYXRpb24tbmFtZVwifSxbX3ZtLl92KF92bS5fcyhfdm0udGl0bGUpKV0pLF92bS5fdihcIiBcIiksX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwibW9iaWxlLW1lbnVcIixvbjp7XCJjbGlja1wiOl92bS5zaG93TW9iaWxlTmF2aWdhdGlvbn19LFtfYygnbWVudS1pY29uJyx7c3RhdGljQ2xhc3M6XCJpY29uXCIsYXR0cnM6e1wic2l6ZVwiOlwiMTdcIn19KV0sMSldKX1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cmVmLS00LTAhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Nb2JpbGVIZWFkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9yZWYtLTQtMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL01vYmlsZUhlYWRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCI8dGVtcGxhdGU+XG4gICAgPGhlYWRlciBjbGFzcz1cIm1vYmlsZS1oZWFkZXJcIj5cblxuICAgICAgICA8IS0tIEdvIGJhY2stLT5cbiAgICAgICAgPGRpdiBAY2xpY2s9XCJnb0JhY2tcIiBjbGFzcz1cImdvLWJhY2tcIj5cbiAgICAgICAgICAgIDxjaGV2cm9uLWxlZnQtaWNvbiBzaXplPVwiMTdcIiBjbGFzcz1cImljb25cIj48L2NoZXZyb24tbGVmdC1pY29uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tRm9sZGVyIFRpdGxlLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsb2NhdGlvbi1uYW1lXCI+e3sgdGl0bGUgfX08L2Rpdj5cblxuICAgICAgICA8IS0tTW9yZSBBY3Rpb25zLS0+XG4gICAgICAgIDxkaXYgQGNsaWNrPVwic2hvd01vYmlsZU5hdmlnYXRpb25cIiBjbGFzcz1cIm1vYmlsZS1tZW51XCI+XG4gICAgICAgICAgICA8bWVudS1pY29uIHNpemU9XCIxN1wiIGNsYXNzPVwiaWNvblwiPjwvbWVudS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2hlYWRlcj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgaW1wb3J0IHtldmVudHN9IGZyb20gJ0AvYnVzJ1xuXG4gICAgaW1wb3J0IHtcbiAgICAgICAgQ2hldnJvbkxlZnRJY29uLFxuICAgICAgICBNZW51SWNvbixcbiAgICB9IGZyb20gJ3Z1ZS1mZWF0aGVyLWljb25zJ1xuXG4gICAgZXhwb3J0IGRlZmF1bHQge1xuICAgICAgICBuYW1lOiAnTWVudUJhcicsXG4gICAgICAgIHByb3BzOiBbXG4gICAgICAgICAgICAndGl0bGUnXG4gICAgICAgIF0sXG4gICAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgICAgIENoZXZyb25MZWZ0SWNvbixcbiAgICAgICAgICAgIE1lbnVJY29uLFxuICAgICAgICB9LFxuICAgICAgICBtZXRob2RzOiB7XG4gICAgICAgICAgICBzaG93TW9iaWxlTmF2aWdhdGlvbigpIHtcbiAgICAgICAgICAgICAgICBldmVudHMuJGVtaXQoJ3Nob3c6bW9iaWxlLW5hdmlnYXRpb24nKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdvQmFjaygpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRyb3V0ZXIuYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQgbGFuZz1cInNjc3NcIj5cbiAgICBAaW1wb3J0ICdAYXNzZXRzL3Z1ZWZpbGVtYW5hZ2VyL192YXJpYWJsZXMnO1xuICAgIEBpbXBvcnQgJ0Bhc3NldHMvdnVlZmlsZW1hbmFnZXIvX21peGlucyc7XG5cbiAgICAubW9iaWxlLWhlYWRlciB7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgei1pbmRleDogNjtcbiAgICAgICAgdG9wOiAwO1xuXG4gICAgICAgID4gZGl2IHtcbiAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIH1cblxuICAgICAgICAuZ28tYmFjayB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgLmxvY2F0aW9uLW5hbWUge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoMTUpO1xuICAgICAgICAgICAgY29sb3I6ICR0ZXh0O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgICAgIG1heC13aWR0aDogMjIwcHg7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICAubW9iaWxlLW1lbnUge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICAuaWNvbiB7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogLTRweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjkwcHgpIHtcbiAgICAgICAgLm1vYmlsZS1oZWFkZXIge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gICAgICAgIC5tb2JpbGUtaGVhZGVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRkYXJrX21vZGVfYmFja2dyb3VuZDtcblxuICAgICAgICAgICAgLmxvY2F0aW9uLW5hbWUge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkZGFya19tb2RlX3RleHRfcHJpbWFyeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuPC9zdHlsZT5cbiIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vTW9iaWxlSGVhZGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00M2NlMWNkMCZzY29wZWQ9dHJ1ZSZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9Nb2JpbGVIZWFkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9Nb2JpbGVIZWFkZXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5pbXBvcnQgc3R5bGUwIGZyb20gXCIuL01vYmlsZUhlYWRlci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD00M2NlMWNkMCZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3MmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcIjQzY2UxY2QwXCIsXG4gIG51bGxcbiAgXG4pXG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2luZGV4LmpzIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2luZGV4LmpzIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBTeW50YWN0aWMgc3VnYXIgZm9yIGludm9raW5nIGEgZnVuY3Rpb24gYW5kIGV4cGFuZGluZyBhbiBhcnJheSBmb3IgYXJndW1lbnRzLlxuICpcbiAqIENvbW1vbiB1c2UgY2FzZSB3b3VsZCBiZSB0byB1c2UgYEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseWAuXG4gKlxuICogIGBgYGpzXG4gKiAgZnVuY3Rpb24gZih4LCB5LCB6KSB7fVxuICogIHZhciBhcmdzID0gWzEsIDIsIDNdO1xuICogIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gKiAgYGBgXG4gKlxuICogV2l0aCBgc3ByZWFkYCB0aGlzIGV4YW1wbGUgY2FuIGJlIHJlLXdyaXR0ZW4uXG4gKlxuICogIGBgYGpzXG4gKiAgc3ByZWFkKGZ1bmN0aW9uKHgsIHksIHopIHt9KShbMSwgMiwgM10pO1xuICogIGBgYFxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259XG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc3ByZWFkKGNhbGxiYWNrKSB7XG4gIHJldHVybiBmdW5jdGlvbiB3cmFwKGFycikge1xuICAgIHJldHVybiBjYWxsYmFjay5hcHBseShudWxsLCBhcnIpO1xuICB9O1xufTtcbiIsImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikoZmFsc2UpO1xuLy8gaW1wb3J0c1xuXG5cbi8vIG1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLm1vYmlsZS1uYXZpZ2F0aW9uW2RhdGEtdi00NGM2ZmMwNV0ge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBib3R0b206IDA7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICB6LWluZGV4OiA5OTtcXG59XFxuLm1vYmlsZS1uYXZpZ2F0aW9uIC5tb2JpbGUtbWVudS1sYWJlbFtkYXRhLXYtNDRjNmZjMDVdIHtcXG4gIG1hcmdpbi10b3A6IDMwcHg7XFxuICBtYXJnaW4tYm90dG9tOiA1cHg7XFxuICBmb250LXNpemU6IDAuNjg3NWVtO1xcbiAgY29sb3I6IHJnYmEoMjcsIDM3LCA1NywgMC43KTtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbn1cXG4ubW9iaWxlLW5hdmlnYXRpb24gLm1vYmlsZS1tZW51LWxhYmVsW2RhdGEtdi00NGM2ZmMwNV06Zmlyc3QtY2hpbGQge1xcbiAgbWFyZ2luLXRvcDogMDtcXG59XFxuQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xcbi5tb2JpbGUtbmF2aWdhdGlvbiAubW9iaWxlLW1lbnUtbGFiZWxbZGF0YS12LTQ0YzZmYzA1XSB7XFxuICAgIGNvbG9yOiAjN2Q4NThjO1xcbn1cXG59XFxuXCIsIFwiXCJdKTtcblxuLy8gZXhwb3J0c1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJpbmQoZm4sIHRoaXNBcmcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHdyYXAoKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIH1cbiAgICByZXR1cm4gZm4uYXBwbHkodGhpc0FyZywgYXJncyk7XG4gIH07XG59O1xuIiwiLypcblx0TUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcblx0QXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbi8vIGNzcyBiYXNlIGNvZGUsIGluamVjdGVkIGJ5IHRoZSBjc3MtbG9hZGVyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHVzZVNvdXJjZU1hcCkge1xuXHR2YXIgbGlzdCA9IFtdO1xuXG5cdC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcblx0bGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuXHRcdHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuXHRcdFx0dmFyIGNvbnRlbnQgPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0sIHVzZVNvdXJjZU1hcCk7XG5cdFx0XHRpZihpdGVtWzJdKSB7XG5cdFx0XHRcdHJldHVybiBcIkBtZWRpYSBcIiArIGl0ZW1bMl0gKyBcIntcIiArIGNvbnRlbnQgKyBcIn1cIjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBjb250ZW50O1xuXHRcdFx0fVxuXHRcdH0pLmpvaW4oXCJcIik7XG5cdH07XG5cblx0Ly8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3Rcblx0bGlzdC5pID0gZnVuY3Rpb24obW9kdWxlcywgbWVkaWFRdWVyeSkge1xuXHRcdGlmKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKVxuXHRcdFx0bW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgXCJcIl1dO1xuXHRcdHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBpZCA9IHRoaXNbaV1bMF07XG5cdFx0XHRpZih0eXBlb2YgaWQgPT09IFwibnVtYmVyXCIpXG5cdFx0XHRcdGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcblx0XHR9XG5cdFx0Zm9yKGkgPSAwOyBpIDwgbW9kdWxlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGl0ZW0gPSBtb2R1bGVzW2ldO1xuXHRcdFx0Ly8gc2tpcCBhbHJlYWR5IGltcG9ydGVkIG1vZHVsZVxuXHRcdFx0Ly8gdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBub3QgMTAwJSBwZXJmZWN0IGZvciB3ZWlyZCBtZWRpYSBxdWVyeSBjb21iaW5hdGlvbnNcblx0XHRcdC8vICB3aGVuIGEgbW9kdWxlIGlzIGltcG9ydGVkIG11bHRpcGxlIHRpbWVzIHdpdGggZGlmZmVyZW50IG1lZGlhIHF1ZXJpZXMuXG5cdFx0XHQvLyAgSSBob3BlIHRoaXMgd2lsbCBuZXZlciBvY2N1ciAoSGV5IHRoaXMgd2F5IHdlIGhhdmUgc21hbGxlciBidW5kbGVzKVxuXHRcdFx0aWYodHlwZW9mIGl0ZW1bMF0gIT09IFwibnVtYmVyXCIgfHwgIWFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcblx0XHRcdFx0aWYobWVkaWFRdWVyeSAmJiAhaXRlbVsyXSkge1xuXHRcdFx0XHRcdGl0ZW1bMl0gPSBtZWRpYVF1ZXJ5O1xuXHRcdFx0XHR9IGVsc2UgaWYobWVkaWFRdWVyeSkge1xuXHRcdFx0XHRcdGl0ZW1bMl0gPSBcIihcIiArIGl0ZW1bMl0gKyBcIikgYW5kIChcIiArIG1lZGlhUXVlcnkgKyBcIilcIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRsaXN0LnB1c2goaXRlbSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRyZXR1cm4gbGlzdDtcbn07XG5cbmZ1bmN0aW9uIGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSwgdXNlU291cmNlTWFwKSB7XG5cdHZhciBjb250ZW50ID0gaXRlbVsxXSB8fCAnJztcblx0dmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuXHRpZiAoIWNzc01hcHBpbmcpIHtcblx0XHRyZXR1cm4gY29udGVudDtcblx0fVxuXG5cdGlmICh1c2VTb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgPT09ICdmdW5jdGlvbicpIHtcblx0XHR2YXIgc291cmNlTWFwcGluZyA9IHRvQ29tbWVudChjc3NNYXBwaW5nKTtcblx0XHR2YXIgc291cmNlVVJMcyA9IGNzc01hcHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuXHRcdFx0cmV0dXJuICcvKiMgc291cmNlVVJMPScgKyBjc3NNYXBwaW5nLnNvdXJjZVJvb3QgKyBzb3VyY2UgKyAnICovJ1xuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIFtjb250ZW50XS5jb25jYXQoc291cmNlVVJMcykuY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbignXFxuJyk7XG5cdH1cblxuXHRyZXR1cm4gW2NvbnRlbnRdLmpvaW4oJ1xcbicpO1xufVxuXG4vLyBBZGFwdGVkIGZyb20gY29udmVydC1zb3VyY2UtbWFwIChNSVQpXG5mdW5jdGlvbiB0b0NvbW1lbnQoc291cmNlTWFwKSB7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuXHR2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKTtcblx0dmFyIGRhdGEgPSAnc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsJyArIGJhc2U2NDtcblxuXHRyZXR1cm4gJy8qIyAnICsgZGF0YSArICcgKi8nO1xufVxuIiwiLyohXG4gKiBWdWUuanMgdjIuNi4xMVxuICogKGMpIDIwMTQtMjAxOSBFdmFuIFlvdVxuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovXG5cInVzZSBzdHJpY3RcIjt2YXIgZT1PYmplY3QuZnJlZXplKHt9KTtmdW5jdGlvbiB0KGUpe3JldHVybiBudWxsPT1lfWZ1bmN0aW9uIG4oZSl7cmV0dXJuIG51bGwhPWV9ZnVuY3Rpb24gcihlKXtyZXR1cm4hMD09PWV9ZnVuY3Rpb24gaShlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZXx8XCJudW1iZXJcIj09dHlwZW9mIGV8fFwic3ltYm9sXCI9PXR5cGVvZiBlfHxcImJvb2xlYW5cIj09dHlwZW9mIGV9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbCE9PWUmJlwib2JqZWN0XCI9PXR5cGVvZiBlfXZhciBhPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gcyhlKXtyZXR1cm5cIltvYmplY3QgT2JqZWN0XVwiPT09YS5jYWxsKGUpfWZ1bmN0aW9uIGMoZSl7dmFyIHQ9cGFyc2VGbG9hdChTdHJpbmcoZSkpO3JldHVybiB0Pj0wJiZNYXRoLmZsb29yKHQpPT09dCYmaXNGaW5pdGUoZSl9ZnVuY3Rpb24gdShlKXtyZXR1cm4gbihlKSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS50aGVuJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNhdGNofWZ1bmN0aW9uIGwoZSl7cmV0dXJuIG51bGw9PWU/XCJcIjpBcnJheS5pc0FycmF5KGUpfHxzKGUpJiZlLnRvU3RyaW5nPT09YT9KU09OLnN0cmluZ2lmeShlLG51bGwsMik6U3RyaW5nKGUpfWZ1bmN0aW9uIGYoZSl7dmFyIHQ9cGFyc2VGbG9hdChlKTtyZXR1cm4gaXNOYU4odCk/ZTp0fWZ1bmN0aW9uIHAoZSx0KXtmb3IodmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPWUuc3BsaXQoXCIsXCIpLGk9MDtpPHIubGVuZ3RoO2krKyluW3JbaV1dPSEwO3JldHVybiB0P2Z1bmN0aW9uKGUpe3JldHVybiBuW2UudG9Mb3dlckNhc2UoKV19OmZ1bmN0aW9uKGUpe3JldHVybiBuW2VdfX12YXIgZD1wKFwic2xvdCxjb21wb25lbnRcIiwhMCksdj1wKFwia2V5LHJlZixzbG90LHNsb3Qtc2NvcGUsaXNcIik7ZnVuY3Rpb24gaChlLHQpe2lmKGUubGVuZ3RoKXt2YXIgbj1lLmluZGV4T2YodCk7aWYobj4tMSlyZXR1cm4gZS5zcGxpY2UobiwxKX19dmFyIG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiB5KGUsdCl7cmV0dXJuIG0uY2FsbChlLHQpfWZ1bmN0aW9uIGcoZSl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHRbbl18fCh0W25dPWUobikpfX12YXIgXz0vLShcXHcpL2csYj1nKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoXyxmdW5jdGlvbihlLHQpe3JldHVybiB0P3QudG9VcHBlckNhc2UoKTpcIlwifSl9KSwkPWcoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKX0pLHc9L1xcQihbQS1aXSkvZyxDPWcoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSh3LFwiLSQxXCIpLnRvTG93ZXJDYXNlKCl9KTt2YXIgeD1GdW5jdGlvbi5wcm90b3R5cGUuYmluZD9mdW5jdGlvbihlLHQpe3JldHVybiBlLmJpbmQodCl9OmZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihuKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoO3JldHVybiByP3I+MT9lLmFwcGx5KHQsYXJndW1lbnRzKTplLmNhbGwodCxuKTplLmNhbGwodCl9cmV0dXJuIG4uX2xlbmd0aD1lLmxlbmd0aCxufTtmdW5jdGlvbiBrKGUsdCl7dD10fHwwO2Zvcih2YXIgbj1lLmxlbmd0aC10LHI9bmV3IEFycmF5KG4pO24tLTspcltuXT1lW24rdF07cmV0dXJuIHJ9ZnVuY3Rpb24gQShlLHQpe2Zvcih2YXIgbiBpbiB0KWVbbl09dFtuXTtyZXR1cm4gZX1mdW5jdGlvbiBPKGUpe2Zvcih2YXIgdD17fSxuPTA7bjxlLmxlbmd0aDtuKyspZVtuXSYmQSh0LGVbbl0pO3JldHVybiB0fWZ1bmN0aW9uIFMoZSx0LG4pe312YXIgVD1mdW5jdGlvbihlLHQsbil7cmV0dXJuITF9LEU9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9O2Z1bmN0aW9uIE4oZSx0KXtpZihlPT09dClyZXR1cm4hMDt2YXIgbj1vKGUpLHI9byh0KTtpZighbnx8IXIpcmV0dXJuIW4mJiFyJiZTdHJpbmcoZSk9PT1TdHJpbmcodCk7dHJ5e3ZhciBpPUFycmF5LmlzQXJyYXkoZSksYT1BcnJheS5pc0FycmF5KHQpO2lmKGkmJmEpcmV0dXJuIGUubGVuZ3RoPT09dC5sZW5ndGgmJmUuZXZlcnkoZnVuY3Rpb24oZSxuKXtyZXR1cm4gTihlLHRbbl0pfSk7aWYoZSBpbnN0YW5jZW9mIERhdGUmJnQgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBlLmdldFRpbWUoKT09PXQuZ2V0VGltZSgpO2lmKGl8fGEpcmV0dXJuITE7dmFyIHM9T2JqZWN0LmtleXMoZSksYz1PYmplY3Qua2V5cyh0KTtyZXR1cm4gcy5sZW5ndGg9PT1jLmxlbmd0aCYmcy5ldmVyeShmdW5jdGlvbihuKXtyZXR1cm4gTihlW25dLHRbbl0pfSl9Y2F0Y2goZSl7cmV0dXJuITF9fWZ1bmN0aW9uIGooZSx0KXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylpZihOKGVbbl0sdCkpcmV0dXJuIG47cmV0dXJuLTF9ZnVuY3Rpb24gRChlKXt2YXIgdD0hMTtyZXR1cm4gZnVuY3Rpb24oKXt0fHwodD0hMCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fXZhciBMPVwiZGF0YS1zZXJ2ZXItcmVuZGVyZWRcIixNPVtcImNvbXBvbmVudFwiLFwiZGlyZWN0aXZlXCIsXCJmaWx0ZXJcIl0sST1bXCJiZWZvcmVDcmVhdGVcIixcImNyZWF0ZWRcIixcImJlZm9yZU1vdW50XCIsXCJtb3VudGVkXCIsXCJiZWZvcmVVcGRhdGVcIixcInVwZGF0ZWRcIixcImJlZm9yZURlc3Ryb3lcIixcImRlc3Ryb3llZFwiLFwiYWN0aXZhdGVkXCIsXCJkZWFjdGl2YXRlZFwiLFwiZXJyb3JDYXB0dXJlZFwiLFwic2VydmVyUHJlZmV0Y2hcIl0sRj17b3B0aW9uTWVyZ2VTdHJhdGVnaWVzOk9iamVjdC5jcmVhdGUobnVsbCksc2lsZW50OiExLHByb2R1Y3Rpb25UaXA6ITEsZGV2dG9vbHM6ITEscGVyZm9ybWFuY2U6ITEsZXJyb3JIYW5kbGVyOm51bGwsd2FybkhhbmRsZXI6bnVsbCxpZ25vcmVkRWxlbWVudHM6W10sa2V5Q29kZXM6T2JqZWN0LmNyZWF0ZShudWxsKSxpc1Jlc2VydmVkVGFnOlQsaXNSZXNlcnZlZEF0dHI6VCxpc1Vua25vd25FbGVtZW50OlQsZ2V0VGFnTmFtZXNwYWNlOlMscGFyc2VQbGF0Zm9ybVRhZ05hbWU6RSxtdXN0VXNlUHJvcDpULGFzeW5jOiEwLF9saWZlY3ljbGVIb29rczpJfSxQPS9hLXpBLVpcXHUwMEI3XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjAzRi1cXHUyMDQwXFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkZELztmdW5jdGlvbiBSKGUsdCxuLHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohIXIsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSl9dmFyIEg9bmV3IFJlZ0V4cChcIlteXCIrUC5zb3VyY2UrXCIuJF9cXFxcZF1cIik7dmFyIEIsVT1cIl9fcHJvdG9fX1wiaW57fSx6PVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3csVj1cInVuZGVmaW5lZFwiIT10eXBlb2YgV1hFbnZpcm9ubWVudCYmISFXWEVudmlyb25tZW50LnBsYXRmb3JtLEs9ViYmV1hFbnZpcm9ubWVudC5wbGF0Zm9ybS50b0xvd2VyQ2FzZSgpLEo9eiYmd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSxxPUomJi9tc2llfHRyaWRlbnQvLnRlc3QoSiksVz1KJiZKLmluZGV4T2YoXCJtc2llIDkuMFwiKT4wLFo9SiYmSi5pbmRleE9mKFwiZWRnZS9cIik+MCxHPShKJiZKLmluZGV4T2YoXCJhbmRyb2lkXCIpLEomJi9pcGhvbmV8aXBhZHxpcG9kfGlvcy8udGVzdChKKXx8XCJpb3NcIj09PUspLFg9KEomJi9jaHJvbWVcXC9cXGQrLy50ZXN0KEopLEomJi9waGFudG9tanMvLnRlc3QoSiksSiYmSi5tYXRjaCgvZmlyZWZveFxcLyhcXGQrKS8pKSxZPXt9LndhdGNoLFE9ITE7aWYoeil0cnl7dmFyIGVlPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShlZSxcInBhc3NpdmVcIix7Z2V0OmZ1bmN0aW9uKCl7UT0hMH19KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInRlc3QtcGFzc2l2ZVwiLG51bGwsZWUpfWNhdGNoKGUpe312YXIgdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09QiYmKEI9IXomJiFWJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsJiYoZ2xvYmFsLnByb2Nlc3MmJlwic2VydmVyXCI9PT1nbG9iYWwucHJvY2Vzcy5lbnYuVlVFX0VOVikpLEJ9LG5lPXomJndpbmRvdy5fX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fO2Z1bmN0aW9uIHJlKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGUmJi9uYXRpdmUgY29kZS8udGVzdChlLnRvU3RyaW5nKCkpfXZhciBpZSxvZT1cInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZyZShTeW1ib2wpJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgUmVmbGVjdCYmcmUoUmVmbGVjdC5vd25LZXlzKTtpZT1cInVuZGVmaW5lZFwiIT10eXBlb2YgU2V0JiZyZShTZXQpP1NldDpmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLnNldD1PYmplY3QuY3JlYXRlKG51bGwpfXJldHVybiBlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuITA9PT10aGlzLnNldFtlXX0sZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3RoaXMuc2V0W2VdPSEwfSxlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2V0PU9iamVjdC5jcmVhdGUobnVsbCl9LGV9KCk7dmFyIGFlPVMsc2U9MCxjZT1mdW5jdGlvbigpe3RoaXMuaWQ9c2UrKyx0aGlzLnN1YnM9W119O2NlLnByb3RvdHlwZS5hZGRTdWI9ZnVuY3Rpb24oZSl7dGhpcy5zdWJzLnB1c2goZSl9LGNlLnByb3RvdHlwZS5yZW1vdmVTdWI9ZnVuY3Rpb24oZSl7aCh0aGlzLnN1YnMsZSl9LGNlLnByb3RvdHlwZS5kZXBlbmQ9ZnVuY3Rpb24oKXtjZS50YXJnZXQmJmNlLnRhcmdldC5hZGREZXAodGhpcyl9LGNlLnByb3RvdHlwZS5ub3RpZnk9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5zdWJzLnNsaWNlKCksdD0wLG49ZS5sZW5ndGg7dDxuO3QrKyllW3RdLnVwZGF0ZSgpfSxjZS50YXJnZXQ9bnVsbDt2YXIgdWU9W107ZnVuY3Rpb24gbGUoZSl7dWUucHVzaChlKSxjZS50YXJnZXQ9ZX1mdW5jdGlvbiBmZSgpe3VlLnBvcCgpLGNlLnRhcmdldD11ZVt1ZS5sZW5ndGgtMV19dmFyIHBlPWZ1bmN0aW9uKGUsdCxuLHIsaSxvLGEscyl7dGhpcy50YWc9ZSx0aGlzLmRhdGE9dCx0aGlzLmNoaWxkcmVuPW4sdGhpcy50ZXh0PXIsdGhpcy5lbG09aSx0aGlzLm5zPXZvaWQgMCx0aGlzLmNvbnRleHQ9byx0aGlzLmZuQ29udGV4dD12b2lkIDAsdGhpcy5mbk9wdGlvbnM9dm9pZCAwLHRoaXMuZm5TY29wZUlkPXZvaWQgMCx0aGlzLmtleT10JiZ0LmtleSx0aGlzLmNvbXBvbmVudE9wdGlvbnM9YSx0aGlzLmNvbXBvbmVudEluc3RhbmNlPXZvaWQgMCx0aGlzLnBhcmVudD12b2lkIDAsdGhpcy5yYXc9ITEsdGhpcy5pc1N0YXRpYz0hMSx0aGlzLmlzUm9vdEluc2VydD0hMCx0aGlzLmlzQ29tbWVudD0hMSx0aGlzLmlzQ2xvbmVkPSExLHRoaXMuaXNPbmNlPSExLHRoaXMuYXN5bmNGYWN0b3J5PXMsdGhpcy5hc3luY01ldGE9dm9pZCAwLHRoaXMuaXNBc3luY1BsYWNlaG9sZGVyPSExfSxkZT17Y2hpbGQ6e2NvbmZpZ3VyYWJsZTohMH19O2RlLmNoaWxkLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbXBvbmVudEluc3RhbmNlfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhwZS5wcm90b3R5cGUsZGUpO3ZhciB2ZT1mdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT1cIlwiKTt2YXIgdD1uZXcgcGU7cmV0dXJuIHQudGV4dD1lLHQuaXNDb21tZW50PSEwLHR9O2Z1bmN0aW9uIGhlKGUpe3JldHVybiBuZXcgcGUodm9pZCAwLHZvaWQgMCx2b2lkIDAsU3RyaW5nKGUpKX1mdW5jdGlvbiBtZShlKXt2YXIgdD1uZXcgcGUoZS50YWcsZS5kYXRhLGUuY2hpbGRyZW4mJmUuY2hpbGRyZW4uc2xpY2UoKSxlLnRleHQsZS5lbG0sZS5jb250ZXh0LGUuY29tcG9uZW50T3B0aW9ucyxlLmFzeW5jRmFjdG9yeSk7cmV0dXJuIHQubnM9ZS5ucyx0LmlzU3RhdGljPWUuaXNTdGF0aWMsdC5rZXk9ZS5rZXksdC5pc0NvbW1lbnQ9ZS5pc0NvbW1lbnQsdC5mbkNvbnRleHQ9ZS5mbkNvbnRleHQsdC5mbk9wdGlvbnM9ZS5mbk9wdGlvbnMsdC5mblNjb3BlSWQ9ZS5mblNjb3BlSWQsdC5hc3luY01ldGE9ZS5hc3luY01ldGEsdC5pc0Nsb25lZD0hMCx0fXZhciB5ZT1BcnJheS5wcm90b3R5cGUsZ2U9T2JqZWN0LmNyZWF0ZSh5ZSk7W1wicHVzaFwiLFwicG9wXCIsXCJzaGlmdFwiLFwidW5zaGlmdFwiLFwic3BsaWNlXCIsXCJzb3J0XCIsXCJyZXZlcnNlXCJdLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9eWVbZV07UihnZSxlLGZ1bmN0aW9uKCl7Zm9yKHZhciBuPVtdLHI9YXJndW1lbnRzLmxlbmd0aDtyLS07KW5bcl09YXJndW1lbnRzW3JdO3ZhciBpLG89dC5hcHBseSh0aGlzLG4pLGE9dGhpcy5fX29iX187c3dpdGNoKGUpe2Nhc2VcInB1c2hcIjpjYXNlXCJ1bnNoaWZ0XCI6aT1uO2JyZWFrO2Nhc2VcInNwbGljZVwiOmk9bi5zbGljZSgyKX1yZXR1cm4gaSYmYS5vYnNlcnZlQXJyYXkoaSksYS5kZXAubm90aWZ5KCksb30pfSk7dmFyIF9lPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGdlKSxiZT0hMDtmdW5jdGlvbiAkZShlKXtiZT1lfXZhciB3ZT1mdW5jdGlvbihlKXt2YXIgdDt0aGlzLnZhbHVlPWUsdGhpcy5kZXA9bmV3IGNlLHRoaXMudm1Db3VudD0wLFIoZSxcIl9fb2JfX1wiLHRoaXMpLEFycmF5LmlzQXJyYXkoZSk/KFU/KHQ9Z2UsZS5fX3Byb3RvX189dCk6ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj0wLGk9bi5sZW5ndGg7cjxpO3IrKyl7dmFyIG89bltyXTtSKGUsbyx0W29dKX19KGUsZ2UsX2UpLHRoaXMub2JzZXJ2ZUFycmF5KGUpKTp0aGlzLndhbGsoZSl9O2Z1bmN0aW9uIENlKGUsdCl7dmFyIG47aWYobyhlKSYmIShlIGluc3RhbmNlb2YgcGUpKXJldHVybiB5KGUsXCJfX29iX19cIikmJmUuX19vYl9fIGluc3RhbmNlb2Ygd2U/bj1lLl9fb2JfXzpiZSYmIXRlKCkmJihBcnJheS5pc0FycmF5KGUpfHxzKGUpKSYmT2JqZWN0LmlzRXh0ZW5zaWJsZShlKSYmIWUuX2lzVnVlJiYobj1uZXcgd2UoZSkpLHQmJm4mJm4udm1Db3VudCsrLG59ZnVuY3Rpb24geGUoZSx0LG4scixpKXt2YXIgbz1uZXcgY2UsYT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCk7aWYoIWF8fCExIT09YS5jb25maWd1cmFibGUpe3ZhciBzPWEmJmEuZ2V0LGM9YSYmYS5zZXQ7cyYmIWN8fDIhPT1hcmd1bWVudHMubGVuZ3RofHwobj1lW3RdKTt2YXIgdT0haSYmQ2Uobik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQ9cz9zLmNhbGwoZSk6bjtyZXR1cm4gY2UudGFyZ2V0JiYoby5kZXBlbmQoKSx1JiYodS5kZXAuZGVwZW5kKCksQXJyYXkuaXNBcnJheSh0KSYmZnVuY3Rpb24gZSh0KXtmb3IodmFyIG49dm9pZCAwLHI9MCxpPXQubGVuZ3RoO3I8aTtyKyspKG49dFtyXSkmJm4uX19vYl9fJiZuLl9fb2JfXy5kZXAuZGVwZW5kKCksQXJyYXkuaXNBcnJheShuKSYmZShuKX0odCkpKSx0fSxzZXQ6ZnVuY3Rpb24odCl7dmFyIHI9cz9zLmNhbGwoZSk6bjt0PT09cnx8dCE9dCYmciE9cnx8cyYmIWN8fChjP2MuY2FsbChlLHQpOm49dCx1PSFpJiZDZSh0KSxvLm5vdGlmeSgpKX19KX19ZnVuY3Rpb24ga2UoZSx0LG4pe2lmKEFycmF5LmlzQXJyYXkoZSkmJmModCkpcmV0dXJuIGUubGVuZ3RoPU1hdGgubWF4KGUubGVuZ3RoLHQpLGUuc3BsaWNlKHQsMSxuKSxuO2lmKHQgaW4gZSYmISh0IGluIE9iamVjdC5wcm90b3R5cGUpKXJldHVybiBlW3RdPW4sbjt2YXIgcj1lLl9fb2JfXztyZXR1cm4gZS5faXNWdWV8fHImJnIudm1Db3VudD9uOnI/KHhlKHIudmFsdWUsdCxuKSxyLmRlcC5ub3RpZnkoKSxuKTooZVt0XT1uLG4pfWZ1bmN0aW9uIEFlKGUsdCl7aWYoQXJyYXkuaXNBcnJheShlKSYmYyh0KSllLnNwbGljZSh0LDEpO2Vsc2V7dmFyIG49ZS5fX29iX187ZS5faXNWdWV8fG4mJm4udm1Db3VudHx8eShlLHQpJiYoZGVsZXRlIGVbdF0sbiYmbi5kZXAubm90aWZ5KCkpfX13ZS5wcm90b3R5cGUud2Fsaz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9T2JqZWN0LmtleXMoZSksbj0wO248dC5sZW5ndGg7bisrKXhlKGUsdFtuXSl9LHdlLnByb3RvdHlwZS5vYnNlcnZlQXJyYXk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKUNlKGVbdF0pfTt2YXIgT2U9Ri5vcHRpb25NZXJnZVN0cmF0ZWdpZXM7ZnVuY3Rpb24gU2UoZSx0KXtpZighdClyZXR1cm4gZTtmb3IodmFyIG4scixpLG89b2U/UmVmbGVjdC5vd25LZXlzKHQpOk9iamVjdC5rZXlzKHQpLGE9MDthPG8ubGVuZ3RoO2ErKylcIl9fb2JfX1wiIT09KG49b1thXSkmJihyPWVbbl0saT10W25dLHkoZSxuKT9yIT09aSYmcyhyKSYmcyhpKSYmU2UocixpKTprZShlLG4saSkpO3JldHVybiBlfWZ1bmN0aW9uIFRlKGUsdCxuKXtyZXR1cm4gbj9mdW5jdGlvbigpe3ZhciByPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dC5jYWxsKG4sbik6dCxpPVwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZS5jYWxsKG4sbik6ZTtyZXR1cm4gcj9TZShyLGkpOml9OnQ/ZT9mdW5jdGlvbigpe3JldHVybiBTZShcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3QuY2FsbCh0aGlzLHRoaXMpOnQsXCJmdW5jdGlvblwiPT10eXBlb2YgZT9lLmNhbGwodGhpcyx0aGlzKTplKX06dDplfWZ1bmN0aW9uIEVlKGUsdCl7dmFyIG49dD9lP2UuY29uY2F0KHQpOkFycmF5LmlzQXJyYXkodCk/dDpbdF06ZTtyZXR1cm4gbj9mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0wO248ZS5sZW5ndGg7bisrKS0xPT09dC5pbmRleE9mKGVbbl0pJiZ0LnB1c2goZVtuXSk7cmV0dXJuIHR9KG4pOm59ZnVuY3Rpb24gTmUoZSx0LG4scil7dmFyIGk9T2JqZWN0LmNyZWF0ZShlfHxudWxsKTtyZXR1cm4gdD9BKGksdCk6aX1PZS5kYXRhPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbj9UZShlLHQsbik6dCYmXCJmdW5jdGlvblwiIT10eXBlb2YgdD9lOlRlKGUsdCl9LEkuZm9yRWFjaChmdW5jdGlvbihlKXtPZVtlXT1FZX0pLE0uZm9yRWFjaChmdW5jdGlvbihlKXtPZVtlK1wic1wiXT1OZX0pLE9lLndhdGNoPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKGU9PT1ZJiYoZT12b2lkIDApLHQ9PT1ZJiYodD12b2lkIDApLCF0KXJldHVybiBPYmplY3QuY3JlYXRlKGV8fG51bGwpO2lmKCFlKXJldHVybiB0O3ZhciBpPXt9O2Zvcih2YXIgbyBpbiBBKGksZSksdCl7dmFyIGE9aVtvXSxzPXRbb107YSYmIUFycmF5LmlzQXJyYXkoYSkmJihhPVthXSksaVtvXT1hP2EuY29uY2F0KHMpOkFycmF5LmlzQXJyYXkocyk/czpbc119cmV0dXJuIGl9LE9lLnByb3BzPU9lLm1ldGhvZHM9T2UuaW5qZWN0PU9lLmNvbXB1dGVkPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKCFlKXJldHVybiB0O3ZhciBpPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIEEoaSxlKSx0JiZBKGksdCksaX0sT2UucHJvdmlkZT1UZTt2YXIgamU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dD9lOnR9O2Z1bmN0aW9uIERlKGUsdCxuKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiYodD10Lm9wdGlvbnMpLGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5wcm9wcztpZihuKXt2YXIgcixpLG89e307aWYoQXJyYXkuaXNBcnJheShuKSlmb3Iocj1uLmxlbmd0aDtyLS07KVwic3RyaW5nXCI9PXR5cGVvZihpPW5bcl0pJiYob1tiKGkpXT17dHlwZTpudWxsfSk7ZWxzZSBpZihzKG4pKWZvcih2YXIgYSBpbiBuKWk9blthXSxvW2IoYSldPXMoaSk/aTp7dHlwZTppfTtlLnByb3BzPW99fSh0KSxmdW5jdGlvbihlLHQpe3ZhciBuPWUuaW5qZWN0O2lmKG4pe3ZhciByPWUuaW5qZWN0PXt9O2lmKEFycmF5LmlzQXJyYXkobikpZm9yKHZhciBpPTA7aTxuLmxlbmd0aDtpKyspcltuW2ldXT17ZnJvbTpuW2ldfTtlbHNlIGlmKHMobikpZm9yKHZhciBvIGluIG4pe3ZhciBhPW5bb107cltvXT1zKGEpP0Eoe2Zyb206b30sYSk6e2Zyb206YX19fX0odCksZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kaXJlY3RpdmVzO2lmKHQpZm9yKHZhciBuIGluIHQpe3ZhciByPXRbbl07XCJmdW5jdGlvblwiPT10eXBlb2YgciYmKHRbbl09e2JpbmQ6cix1cGRhdGU6cn0pfX0odCksIXQuX2Jhc2UmJih0LmV4dGVuZHMmJihlPURlKGUsdC5leHRlbmRzLG4pKSx0Lm1peGlucykpZm9yKHZhciByPTAsaT10Lm1peGlucy5sZW5ndGg7cjxpO3IrKyllPURlKGUsdC5taXhpbnNbcl0sbik7dmFyIG8sYT17fTtmb3IobyBpbiBlKWMobyk7Zm9yKG8gaW4gdCl5KGUsbyl8fGMobyk7ZnVuY3Rpb24gYyhyKXt2YXIgaT1PZVtyXXx8amU7YVtyXT1pKGVbcl0sdFtyXSxuLHIpfXJldHVybiBhfWZ1bmN0aW9uIExlKGUsdCxuLHIpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBuKXt2YXIgaT1lW3RdO2lmKHkoaSxuKSlyZXR1cm4gaVtuXTt2YXIgbz1iKG4pO2lmKHkoaSxvKSlyZXR1cm4gaVtvXTt2YXIgYT0kKG8pO3JldHVybiB5KGksYSk/aVthXTppW25dfHxpW29dfHxpW2FdfX1mdW5jdGlvbiBNZShlLHQsbixyKXt2YXIgaT10W2VdLG89IXkobixlKSxhPW5bZV0scz1QZShCb29sZWFuLGkudHlwZSk7aWYocz4tMSlpZihvJiYheShpLFwiZGVmYXVsdFwiKSlhPSExO2Vsc2UgaWYoXCJcIj09PWF8fGE9PT1DKGUpKXt2YXIgYz1QZShTdHJpbmcsaS50eXBlKTsoYzwwfHxzPGMpJiYoYT0hMCl9aWYodm9pZCAwPT09YSl7YT1mdW5jdGlvbihlLHQsbil7aWYoIXkodCxcImRlZmF1bHRcIikpcmV0dXJuO3ZhciByPXQuZGVmYXVsdDtpZihlJiZlLiRvcHRpb25zLnByb3BzRGF0YSYmdm9pZCAwPT09ZS4kb3B0aW9ucy5wcm9wc0RhdGFbbl0mJnZvaWQgMCE9PWUuX3Byb3BzW25dKXJldHVybiBlLl9wcm9wc1tuXTtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiByJiZcIkZ1bmN0aW9uXCIhPT1JZSh0LnR5cGUpP3IuY2FsbChlKTpyfShyLGksZSk7dmFyIHU9YmU7JGUoITApLENlKGEpLCRlKHUpfXJldHVybiBhfWZ1bmN0aW9uIEllKGUpe3ZhciB0PWUmJmUudG9TdHJpbmcoKS5tYXRjaCgvXlxccypmdW5jdGlvbiAoXFx3KykvKTtyZXR1cm4gdD90WzFdOlwiXCJ9ZnVuY3Rpb24gRmUoZSx0KXtyZXR1cm4gSWUoZSk9PT1JZSh0KX1mdW5jdGlvbiBQZShlLHQpe2lmKCFBcnJheS5pc0FycmF5KHQpKXJldHVybiBGZSh0LGUpPzA6LTE7Zm9yKHZhciBuPTAscj10Lmxlbmd0aDtuPHI7bisrKWlmKEZlKHRbbl0sZSkpcmV0dXJuIG47cmV0dXJuLTF9ZnVuY3Rpb24gUmUoZSx0LG4pe2xlKCk7dHJ5e2lmKHQpZm9yKHZhciByPXQ7cj1yLiRwYXJlbnQ7KXt2YXIgaT1yLiRvcHRpb25zLmVycm9yQ2FwdHVyZWQ7aWYoaSlmb3IodmFyIG89MDtvPGkubGVuZ3RoO28rKyl0cnl7aWYoITE9PT1pW29dLmNhbGwocixlLHQsbikpcmV0dXJufWNhdGNoKGUpe0JlKGUscixcImVycm9yQ2FwdHVyZWQgaG9va1wiKX19QmUoZSx0LG4pfWZpbmFsbHl7ZmUoKX19ZnVuY3Rpb24gSGUoZSx0LG4scixpKXt2YXIgbzt0cnl7KG89bj9lLmFwcGx5KHQsbik6ZS5jYWxsKHQpKSYmIW8uX2lzVnVlJiZ1KG8pJiYhby5faGFuZGxlZCYmKG8uY2F0Y2goZnVuY3Rpb24oZSl7cmV0dXJuIFJlKGUscixpK1wiIChQcm9taXNlL2FzeW5jKVwiKX0pLG8uX2hhbmRsZWQ9ITApfWNhdGNoKGUpe1JlKGUscixpKX1yZXR1cm4gb31mdW5jdGlvbiBCZShlLHQsbil7aWYoRi5lcnJvckhhbmRsZXIpdHJ5e3JldHVybiBGLmVycm9ySGFuZGxlci5jYWxsKG51bGwsZSx0LG4pfWNhdGNoKHQpe3QhPT1lJiZVZSh0LG51bGwsXCJjb25maWcuZXJyb3JIYW5kbGVyXCIpfVVlKGUsdCxuKX1mdW5jdGlvbiBVZShlLHQsbil7aWYoIXomJiFWfHxcInVuZGVmaW5lZFwiPT10eXBlb2YgY29uc29sZSl0aHJvdyBlO2NvbnNvbGUuZXJyb3IoZSl9dmFyIHplLFZlPSExLEtlPVtdLEplPSExO2Z1bmN0aW9uIHFlKCl7SmU9ITE7dmFyIGU9S2Uuc2xpY2UoMCk7S2UubGVuZ3RoPTA7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspZVt0XSgpfWlmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBQcm9taXNlJiZyZShQcm9taXNlKSl7dmFyIFdlPVByb21pc2UucmVzb2x2ZSgpO3plPWZ1bmN0aW9uKCl7V2UudGhlbihxZSksRyYmc2V0VGltZW91dChTKX0sVmU9ITB9ZWxzZSBpZihxfHxcInVuZGVmaW5lZFwiPT10eXBlb2YgTXV0YXRpb25PYnNlcnZlcnx8IXJlKE11dGF0aW9uT2JzZXJ2ZXIpJiZcIltvYmplY3QgTXV0YXRpb25PYnNlcnZlckNvbnN0cnVjdG9yXVwiIT09TXV0YXRpb25PYnNlcnZlci50b1N0cmluZygpKXplPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZXRJbW1lZGlhdGUmJnJlKHNldEltbWVkaWF0ZSk/ZnVuY3Rpb24oKXtzZXRJbW1lZGlhdGUocWUpfTpmdW5jdGlvbigpe3NldFRpbWVvdXQocWUsMCl9O2Vsc2V7dmFyIFplPTEsR2U9bmV3IE11dGF0aW9uT2JzZXJ2ZXIocWUpLFhlPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFN0cmluZyhaZSkpO0dlLm9ic2VydmUoWGUse2NoYXJhY3RlckRhdGE6ITB9KSx6ZT1mdW5jdGlvbigpe1plPShaZSsxKSUyLFhlLmRhdGE9U3RyaW5nKFplKX0sVmU9ITB9ZnVuY3Rpb24gWWUoZSx0KXt2YXIgbjtpZihLZS5wdXNoKGZ1bmN0aW9uKCl7aWYoZSl0cnl7ZS5jYWxsKHQpfWNhdGNoKGUpe1JlKGUsdCxcIm5leHRUaWNrXCIpfWVsc2UgbiYmbih0KX0pLEplfHwoSmU9ITAsemUoKSksIWUmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBQcm9taXNlKXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihlKXtuPWV9KX12YXIgUWU9bmV3IGllO2Z1bmN0aW9uIGV0KGUpeyFmdW5jdGlvbiBlKHQsbil7dmFyIHIsaTt2YXIgYT1BcnJheS5pc0FycmF5KHQpO2lmKCFhJiYhbyh0KXx8T2JqZWN0LmlzRnJvemVuKHQpfHx0IGluc3RhbmNlb2YgcGUpcmV0dXJuO2lmKHQuX19vYl9fKXt2YXIgcz10Ll9fb2JfXy5kZXAuaWQ7aWYobi5oYXMocykpcmV0dXJuO24uYWRkKHMpfWlmKGEpZm9yKHI9dC5sZW5ndGg7ci0tOyllKHRbcl0sbik7ZWxzZSBmb3IoaT1PYmplY3Qua2V5cyh0KSxyPWkubGVuZ3RoO3ItLTspZSh0W2lbcl1dLG4pfShlLFFlKSxRZS5jbGVhcigpfXZhciB0dD1nKGZ1bmN0aW9uKGUpe3ZhciB0PVwiJlwiPT09ZS5jaGFyQXQoMCksbj1cIn5cIj09PShlPXQ/ZS5zbGljZSgxKTplKS5jaGFyQXQoMCkscj1cIiFcIj09PShlPW4/ZS5zbGljZSgxKTplKS5jaGFyQXQoMCk7cmV0dXJue25hbWU6ZT1yP2Uuc2xpY2UoMSk6ZSxvbmNlOm4sY2FwdHVyZTpyLHBhc3NpdmU6dH19KTtmdW5jdGlvbiBudChlLHQpe2Z1bmN0aW9uIG4oKXt2YXIgZT1hcmd1bWVudHMscj1uLmZucztpZighQXJyYXkuaXNBcnJheShyKSlyZXR1cm4gSGUocixudWxsLGFyZ3VtZW50cyx0LFwidi1vbiBoYW5kbGVyXCIpO2Zvcih2YXIgaT1yLnNsaWNlKCksbz0wO288aS5sZW5ndGg7bysrKUhlKGlbb10sbnVsbCxlLHQsXCJ2LW9uIGhhbmRsZXJcIil9cmV0dXJuIG4uZm5zPWUsbn1mdW5jdGlvbiBydChlLG4saSxvLGEscyl7dmFyIGMsdSxsLGY7Zm9yKGMgaW4gZSl1PWVbY10sbD1uW2NdLGY9dHQoYyksdCh1KXx8KHQobCk/KHQodS5mbnMpJiYodT1lW2NdPW50KHUscykpLHIoZi5vbmNlKSYmKHU9ZVtjXT1hKGYubmFtZSx1LGYuY2FwdHVyZSkpLGkoZi5uYW1lLHUsZi5jYXB0dXJlLGYucGFzc2l2ZSxmLnBhcmFtcykpOnUhPT1sJiYobC5mbnM9dSxlW2NdPWwpKTtmb3IoYyBpbiBuKXQoZVtjXSkmJm8oKGY9dHQoYykpLm5hbWUsbltjXSxmLmNhcHR1cmUpfWZ1bmN0aW9uIGl0KGUsaSxvKXt2YXIgYTtlIGluc3RhbmNlb2YgcGUmJihlPWUuZGF0YS5ob29rfHwoZS5kYXRhLmhvb2s9e30pKTt2YXIgcz1lW2ldO2Z1bmN0aW9uIGMoKXtvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxoKGEuZm5zLGMpfXQocyk/YT1udChbY10pOm4ocy5mbnMpJiZyKHMubWVyZ2VkKT8oYT1zKS5mbnMucHVzaChjKTphPW50KFtzLGNdKSxhLm1lcmdlZD0hMCxlW2ldPWF9ZnVuY3Rpb24gb3QoZSx0LHIsaSxvKXtpZihuKHQpKXtpZih5KHQscikpcmV0dXJuIGVbcl09dFtyXSxvfHxkZWxldGUgdFtyXSwhMDtpZih5KHQsaSkpcmV0dXJuIGVbcl09dFtpXSxvfHxkZWxldGUgdFtpXSwhMH1yZXR1cm4hMX1mdW5jdGlvbiBhdChlKXtyZXR1cm4gaShlKT9baGUoZSldOkFycmF5LmlzQXJyYXkoZSk/ZnVuY3Rpb24gZShvLGEpe3ZhciBzPVtdO3ZhciBjLHUsbCxmO2ZvcihjPTA7YzxvLmxlbmd0aDtjKyspdCh1PW9bY10pfHxcImJvb2xlYW5cIj09dHlwZW9mIHV8fChsPXMubGVuZ3RoLTEsZj1zW2xdLEFycmF5LmlzQXJyYXkodSk/dS5sZW5ndGg+MCYmKHN0KCh1PWUodSwoYXx8XCJcIikrXCJfXCIrYykpWzBdKSYmc3QoZikmJihzW2xdPWhlKGYudGV4dCt1WzBdLnRleHQpLHUuc2hpZnQoKSkscy5wdXNoLmFwcGx5KHMsdSkpOmkodSk/c3QoZik/c1tsXT1oZShmLnRleHQrdSk6XCJcIiE9PXUmJnMucHVzaChoZSh1KSk6c3QodSkmJnN0KGYpP3NbbF09aGUoZi50ZXh0K3UudGV4dCk6KHIoby5faXNWTGlzdCkmJm4odS50YWcpJiZ0KHUua2V5KSYmbihhKSYmKHUua2V5PVwiX192bGlzdFwiK2ErXCJfXCIrYytcIl9fXCIpLHMucHVzaCh1KSkpO3JldHVybiBzfShlKTp2b2lkIDB9ZnVuY3Rpb24gc3QoZSl7cmV0dXJuIG4oZSkmJm4oZS50ZXh0KSYmITE9PT1lLmlzQ29tbWVudH1mdW5jdGlvbiBjdChlLHQpe2lmKGUpe2Zvcih2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpLHI9b2U/UmVmbGVjdC5vd25LZXlzKGUpOk9iamVjdC5rZXlzKGUpLGk9MDtpPHIubGVuZ3RoO2krKyl7dmFyIG89cltpXTtpZihcIl9fb2JfX1wiIT09byl7Zm9yKHZhciBhPWVbb10uZnJvbSxzPXQ7czspe2lmKHMuX3Byb3ZpZGVkJiZ5KHMuX3Byb3ZpZGVkLGEpKXtuW29dPXMuX3Byb3ZpZGVkW2FdO2JyZWFrfXM9cy4kcGFyZW50fWlmKCFzJiZcImRlZmF1bHRcImluIGVbb10pe3ZhciBjPWVbb10uZGVmYXVsdDtuW29dPVwiZnVuY3Rpb25cIj09dHlwZW9mIGM/Yy5jYWxsKHQpOmN9fX1yZXR1cm4gbn19ZnVuY3Rpb24gdXQoZSx0KXtpZighZXx8IWUubGVuZ3RoKXJldHVybnt9O2Zvcih2YXIgbj17fSxyPTAsaT1lLmxlbmd0aDtyPGk7cisrKXt2YXIgbz1lW3JdLGE9by5kYXRhO2lmKGEmJmEuYXR0cnMmJmEuYXR0cnMuc2xvdCYmZGVsZXRlIGEuYXR0cnMuc2xvdCxvLmNvbnRleHQhPT10JiZvLmZuQ29udGV4dCE9PXR8fCFhfHxudWxsPT1hLnNsb3QpKG4uZGVmYXVsdHx8KG4uZGVmYXVsdD1bXSkpLnB1c2gobyk7ZWxzZXt2YXIgcz1hLnNsb3QsYz1uW3NdfHwobltzXT1bXSk7XCJ0ZW1wbGF0ZVwiPT09by50YWc/Yy5wdXNoLmFwcGx5KGMsby5jaGlsZHJlbnx8W10pOmMucHVzaChvKX19Zm9yKHZhciB1IGluIG4pblt1XS5ldmVyeShsdCkmJmRlbGV0ZSBuW3VdO3JldHVybiBufWZ1bmN0aW9uIGx0KGUpe3JldHVybiBlLmlzQ29tbWVudCYmIWUuYXN5bmNGYWN0b3J5fHxcIiBcIj09PWUudGV4dH1mdW5jdGlvbiBmdCh0LG4scil7dmFyIGksbz1PYmplY3Qua2V5cyhuKS5sZW5ndGg+MCxhPXQ/ISF0LiRzdGFibGU6IW8scz10JiZ0LiRrZXk7aWYodCl7aWYodC5fbm9ybWFsaXplZClyZXR1cm4gdC5fbm9ybWFsaXplZDtpZihhJiZyJiZyIT09ZSYmcz09PXIuJGtleSYmIW8mJiFyLiRoYXNOb3JtYWwpcmV0dXJuIHI7Zm9yKHZhciBjIGluIGk9e30sdCl0W2NdJiZcIiRcIiE9PWNbMF0mJihpW2NdPXB0KG4sYyx0W2NdKSl9ZWxzZSBpPXt9O2Zvcih2YXIgdSBpbiBuKXUgaW4gaXx8KGlbdV09ZHQobix1KSk7cmV0dXJuIHQmJk9iamVjdC5pc0V4dGVuc2libGUodCkmJih0Ll9ub3JtYWxpemVkPWkpLFIoaSxcIiRzdGFibGVcIixhKSxSKGksXCIka2V5XCIscyksUihpLFwiJGhhc05vcm1hbFwiLG8pLGl9ZnVuY3Rpb24gcHQoZSx0LG4pe3ZhciByPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD9uLmFwcGx5KG51bGwsYXJndW1lbnRzKTpuKHt9KTtyZXR1cm4oZT1lJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmIUFycmF5LmlzQXJyYXkoZSk/W2VdOmF0KGUpKSYmKDA9PT1lLmxlbmd0aHx8MT09PWUubGVuZ3RoJiZlWzBdLmlzQ29tbWVudCk/dm9pZCAwOmV9O3JldHVybiBuLnByb3h5JiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtnZXQ6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHJ9ZnVuY3Rpb24gZHQoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZVt0XX19ZnVuY3Rpb24gdnQoZSx0KXt2YXIgcixpLGEscyxjO2lmKEFycmF5LmlzQXJyYXkoZSl8fFwic3RyaW5nXCI9PXR5cGVvZiBlKWZvcihyPW5ldyBBcnJheShlLmxlbmd0aCksaT0wLGE9ZS5sZW5ndGg7aTxhO2krKylyW2ldPXQoZVtpXSxpKTtlbHNlIGlmKFwibnVtYmVyXCI9PXR5cGVvZiBlKWZvcihyPW5ldyBBcnJheShlKSxpPTA7aTxlO2krKylyW2ldPXQoaSsxLGkpO2Vsc2UgaWYobyhlKSlpZihvZSYmZVtTeW1ib2wuaXRlcmF0b3JdKXtyPVtdO2Zvcih2YXIgdT1lW1N5bWJvbC5pdGVyYXRvcl0oKSxsPXUubmV4dCgpOyFsLmRvbmU7KXIucHVzaCh0KGwudmFsdWUsci5sZW5ndGgpKSxsPXUubmV4dCgpfWVsc2UgZm9yKHM9T2JqZWN0LmtleXMoZSkscj1uZXcgQXJyYXkocy5sZW5ndGgpLGk9MCxhPXMubGVuZ3RoO2k8YTtpKyspYz1zW2ldLHJbaV09dChlW2NdLGMsaSk7cmV0dXJuIG4ocil8fChyPVtdKSxyLl9pc1ZMaXN0PSEwLHJ9ZnVuY3Rpb24gaHQoZSx0LG4scil7dmFyIGksbz10aGlzLiRzY29wZWRTbG90c1tlXTtvPyhuPW58fHt9LHImJihuPUEoQSh7fSxyKSxuKSksaT1vKG4pfHx0KTppPXRoaXMuJHNsb3RzW2VdfHx0O3ZhciBhPW4mJm4uc2xvdDtyZXR1cm4gYT90aGlzLiRjcmVhdGVFbGVtZW50KFwidGVtcGxhdGVcIix7c2xvdDphfSxpKTppfWZ1bmN0aW9uIG10KGUpe3JldHVybiBMZSh0aGlzLiRvcHRpb25zLFwiZmlsdGVyc1wiLGUpfHxFfWZ1bmN0aW9uIHl0KGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/LTE9PT1lLmluZGV4T2YodCk6ZSE9PXR9ZnVuY3Rpb24gZ3QoZSx0LG4scixpKXt2YXIgbz1GLmtleUNvZGVzW3RdfHxuO3JldHVybiBpJiZyJiYhRi5rZXlDb2Rlc1t0XT95dChpLHIpOm8/eXQobyxlKTpyP0MocikhPT10OnZvaWQgMH1mdW5jdGlvbiBfdChlLHQsbixyLGkpe2lmKG4paWYobyhuKSl7dmFyIGE7QXJyYXkuaXNBcnJheShuKSYmKG49TyhuKSk7dmFyIHM9ZnVuY3Rpb24obyl7aWYoXCJjbGFzc1wiPT09b3x8XCJzdHlsZVwiPT09b3x8dihvKSlhPWU7ZWxzZXt2YXIgcz1lLmF0dHJzJiZlLmF0dHJzLnR5cGU7YT1yfHxGLm11c3RVc2VQcm9wKHQscyxvKT9lLmRvbVByb3BzfHwoZS5kb21Qcm9wcz17fSk6ZS5hdHRyc3x8KGUuYXR0cnM9e30pfXZhciBjPWIobyksdT1DKG8pO2MgaW4gYXx8dSBpbiBhfHwoYVtvXT1uW29dLGkmJigoZS5vbnx8KGUub249e30pKVtcInVwZGF0ZTpcIitvXT1mdW5jdGlvbihlKXtuW29dPWV9KSl9O2Zvcih2YXIgYyBpbiBuKXMoYyl9ZWxzZTtyZXR1cm4gZX1mdW5jdGlvbiBidChlLHQpe3ZhciBuPXRoaXMuX3N0YXRpY1RyZWVzfHwodGhpcy5fc3RhdGljVHJlZXM9W10pLHI9bltlXTtyZXR1cm4gciYmIXQ/cjood3Qocj1uW2VdPXRoaXMuJG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zW2VdLmNhbGwodGhpcy5fcmVuZGVyUHJveHksbnVsbCx0aGlzKSxcIl9fc3RhdGljX19cIitlLCExKSxyKX1mdW5jdGlvbiAkdChlLHQsbil7cmV0dXJuIHd0KGUsXCJfX29uY2VfX1wiK3QrKG4/XCJfXCIrbjpcIlwiKSwhMCksZX1mdW5jdGlvbiB3dChlLHQsbil7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdJiZcInN0cmluZ1wiIT10eXBlb2YgZVtyXSYmQ3QoZVtyXSx0K1wiX1wiK3Isbik7ZWxzZSBDdChlLHQsbil9ZnVuY3Rpb24gQ3QoZSx0LG4pe2UuaXNTdGF0aWM9ITAsZS5rZXk9dCxlLmlzT25jZT1ufWZ1bmN0aW9uIHh0KGUsdCl7aWYodClpZihzKHQpKXt2YXIgbj1lLm9uPWUub24/QSh7fSxlLm9uKTp7fTtmb3IodmFyIHIgaW4gdCl7dmFyIGk9bltyXSxvPXRbcl07bltyXT1pP1tdLmNvbmNhdChpLG8pOm99fWVsc2U7cmV0dXJuIGV9ZnVuY3Rpb24ga3QoZSx0LG4scil7dD10fHx7JHN0YWJsZTohbn07Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBvPWVbaV07QXJyYXkuaXNBcnJheShvKT9rdChvLHQsbik6byYmKG8ucHJveHkmJihvLmZuLnByb3h5PSEwKSx0W28ua2V5XT1vLmZuKX1yZXR1cm4gciYmKHQuJGtleT1yKSx0fWZ1bmN0aW9uIEF0KGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKz0yKXt2YXIgcj10W25dO1wic3RyaW5nXCI9PXR5cGVvZiByJiZyJiYoZVt0W25dXT10W24rMV0pfXJldHVybiBlfWZ1bmN0aW9uIE90KGUsdCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGU/dCtlOmV9ZnVuY3Rpb24gU3QoZSl7ZS5fbz0kdCxlLl9uPWYsZS5fcz1sLGUuX2w9dnQsZS5fdD1odCxlLl9xPU4sZS5faT1qLGUuX209YnQsZS5fZj1tdCxlLl9rPWd0LGUuX2I9X3QsZS5fdj1oZSxlLl9lPXZlLGUuX3U9a3QsZS5fZz14dCxlLl9kPUF0LGUuX3A9T3R9ZnVuY3Rpb24gVHQodCxuLGksbyxhKXt2YXIgcyxjPXRoaXMsdT1hLm9wdGlvbnM7eShvLFwiX3VpZFwiKT8ocz1PYmplY3QuY3JlYXRlKG8pKS5fb3JpZ2luYWw9bzoocz1vLG89by5fb3JpZ2luYWwpO3ZhciBsPXIodS5fY29tcGlsZWQpLGY9IWw7dGhpcy5kYXRhPXQsdGhpcy5wcm9wcz1uLHRoaXMuY2hpbGRyZW49aSx0aGlzLnBhcmVudD1vLHRoaXMubGlzdGVuZXJzPXQub258fGUsdGhpcy5pbmplY3Rpb25zPWN0KHUuaW5qZWN0LG8pLHRoaXMuc2xvdHM9ZnVuY3Rpb24oKXtyZXR1cm4gYy4kc2xvdHN8fGZ0KHQuc2NvcGVkU2xvdHMsYy4kc2xvdHM9dXQoaSxvKSksYy4kc2xvdHN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLFwic2NvcGVkU2xvdHNcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZnQodC5zY29wZWRTbG90cyx0aGlzLnNsb3RzKCkpfX0pLGwmJih0aGlzLiRvcHRpb25zPXUsdGhpcy4kc2xvdHM9dGhpcy5zbG90cygpLHRoaXMuJHNjb3BlZFNsb3RzPWZ0KHQuc2NvcGVkU2xvdHMsdGhpcy4kc2xvdHMpKSx1Ll9zY29wZUlkP3RoaXMuX2M9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9UHQocyxlLHQsbixyLGYpO3JldHVybiBpJiYhQXJyYXkuaXNBcnJheShpKSYmKGkuZm5TY29wZUlkPXUuX3Njb3BlSWQsaS5mbkNvbnRleHQ9byksaX06dGhpcy5fYz1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gUHQocyxlLHQsbixyLGYpfX1mdW5jdGlvbiBFdChlLHQsbixyLGkpe3ZhciBvPW1lKGUpO3JldHVybiBvLmZuQ29udGV4dD1uLG8uZm5PcHRpb25zPXIsdC5zbG90JiYoKG8uZGF0YXx8KG8uZGF0YT17fSkpLnNsb3Q9dC5zbG90KSxvfWZ1bmN0aW9uIE50KGUsdCl7Zm9yKHZhciBuIGluIHQpZVtiKG4pXT10W25dfVN0KFR0LnByb3RvdHlwZSk7dmFyIGp0PXtpbml0OmZ1bmN0aW9uKGUsdCl7aWYoZS5jb21wb25lbnRJbnN0YW5jZSYmIWUuY29tcG9uZW50SW5zdGFuY2UuX2lzRGVzdHJveWVkJiZlLmRhdGEua2VlcEFsaXZlKXt2YXIgcj1lO2p0LnByZXBhdGNoKHIscil9ZWxzZXsoZS5jb21wb25lbnRJbnN0YW5jZT1mdW5jdGlvbihlLHQpe3ZhciByPXtfaXNDb21wb25lbnQ6ITAsX3BhcmVudFZub2RlOmUscGFyZW50OnR9LGk9ZS5kYXRhLmlubGluZVRlbXBsYXRlO24oaSkmJihyLnJlbmRlcj1pLnJlbmRlcixyLnN0YXRpY1JlbmRlckZucz1pLnN0YXRpY1JlbmRlckZucyk7cmV0dXJuIG5ldyBlLmNvbXBvbmVudE9wdGlvbnMuQ3RvcihyKX0oZSxXdCkpLiRtb3VudCh0P2UuZWxtOnZvaWQgMCx0KX19LHByZXBhdGNoOmZ1bmN0aW9uKHQsbil7dmFyIHI9bi5jb21wb25lbnRPcHRpb25zOyFmdW5jdGlvbih0LG4scixpLG8pe3ZhciBhPWkuZGF0YS5zY29wZWRTbG90cyxzPXQuJHNjb3BlZFNsb3RzLGM9ISEoYSYmIWEuJHN0YWJsZXx8cyE9PWUmJiFzLiRzdGFibGV8fGEmJnQuJHNjb3BlZFNsb3RzLiRrZXkhPT1hLiRrZXkpLHU9ISEob3x8dC4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW58fGMpO3QuJG9wdGlvbnMuX3BhcmVudFZub2RlPWksdC4kdm5vZGU9aSx0Ll92bm9kZSYmKHQuX3Zub2RlLnBhcmVudD1pKTtpZih0LiRvcHRpb25zLl9yZW5kZXJDaGlsZHJlbj1vLHQuJGF0dHJzPWkuZGF0YS5hdHRyc3x8ZSx0LiRsaXN0ZW5lcnM9cnx8ZSxuJiZ0LiRvcHRpb25zLnByb3BzKXskZSghMSk7Zm9yKHZhciBsPXQuX3Byb3BzLGY9dC4kb3B0aW9ucy5fcHJvcEtleXN8fFtdLHA9MDtwPGYubGVuZ3RoO3ArKyl7dmFyIGQ9ZltwXSx2PXQuJG9wdGlvbnMucHJvcHM7bFtkXT1NZShkLHYsbix0KX0kZSghMCksdC4kb3B0aW9ucy5wcm9wc0RhdGE9bn1yPXJ8fGU7dmFyIGg9dC4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO3QuJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycz1yLHF0KHQscixoKSx1JiYodC4kc2xvdHM9dXQobyxpLmNvbnRleHQpLHQuJGZvcmNlVXBkYXRlKCkpfShuLmNvbXBvbmVudEluc3RhbmNlPXQuY29tcG9uZW50SW5zdGFuY2Usci5wcm9wc0RhdGEsci5saXN0ZW5lcnMsbixyLmNoaWxkcmVuKX0saW5zZXJ0OmZ1bmN0aW9uKGUpe3ZhciB0LG49ZS5jb250ZXh0LHI9ZS5jb21wb25lbnRJbnN0YW5jZTtyLl9pc01vdW50ZWR8fChyLl9pc01vdW50ZWQ9ITAsWXQocixcIm1vdW50ZWRcIikpLGUuZGF0YS5rZWVwQWxpdmUmJihuLl9pc01vdW50ZWQ/KCh0PXIpLl9pbmFjdGl2ZT0hMSxlbi5wdXNoKHQpKTpYdChyLCEwKSl9LGRlc3Ryb3k6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb21wb25lbnRJbnN0YW5jZTt0Ll9pc0Rlc3Ryb3llZHx8KGUuZGF0YS5rZWVwQWxpdmU/ZnVuY3Rpb24gZSh0LG4pe2lmKG4mJih0Ll9kaXJlY3RJbmFjdGl2ZT0hMCxHdCh0KSkpcmV0dXJuO2lmKCF0Ll9pbmFjdGl2ZSl7dC5faW5hY3RpdmU9ITA7Zm9yKHZhciByPTA7cjx0LiRjaGlsZHJlbi5sZW5ndGg7cisrKWUodC4kY2hpbGRyZW5bcl0pO1l0KHQsXCJkZWFjdGl2YXRlZFwiKX19KHQsITApOnQuJGRlc3Ryb3koKSl9fSxEdD1PYmplY3Qua2V5cyhqdCk7ZnVuY3Rpb24gTHQoaSxhLHMsYyxsKXtpZighdChpKSl7dmFyIGY9cy4kb3B0aW9ucy5fYmFzZTtpZihvKGkpJiYoaT1mLmV4dGVuZChpKSksXCJmdW5jdGlvblwiPT10eXBlb2YgaSl7dmFyIHA7aWYodChpLmNpZCkmJnZvaWQgMD09PShpPWZ1bmN0aW9uKGUsaSl7aWYocihlLmVycm9yKSYmbihlLmVycm9yQ29tcCkpcmV0dXJuIGUuZXJyb3JDb21wO2lmKG4oZS5yZXNvbHZlZCkpcmV0dXJuIGUucmVzb2x2ZWQ7dmFyIGE9SHQ7YSYmbihlLm93bmVycykmJi0xPT09ZS5vd25lcnMuaW5kZXhPZihhKSYmZS5vd25lcnMucHVzaChhKTtpZihyKGUubG9hZGluZykmJm4oZS5sb2FkaW5nQ29tcCkpcmV0dXJuIGUubG9hZGluZ0NvbXA7aWYoYSYmIW4oZS5vd25lcnMpKXt2YXIgcz1lLm93bmVycz1bYV0sYz0hMCxsPW51bGwsZj1udWxsO2EuJG9uKFwiaG9vazpkZXN0cm95ZWRcIixmdW5jdGlvbigpe3JldHVybiBoKHMsYSl9KTt2YXIgcD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxuPXMubGVuZ3RoO3Q8bjt0Kyspc1t0XS4kZm9yY2VVcGRhdGUoKTtlJiYocy5sZW5ndGg9MCxudWxsIT09bCYmKGNsZWFyVGltZW91dChsKSxsPW51bGwpLG51bGwhPT1mJiYoY2xlYXJUaW1lb3V0KGYpLGY9bnVsbCkpfSxkPUQoZnVuY3Rpb24odCl7ZS5yZXNvbHZlZD1CdCh0LGkpLGM/cy5sZW5ndGg9MDpwKCEwKX0pLHY9RChmdW5jdGlvbih0KXtuKGUuZXJyb3JDb21wKSYmKGUuZXJyb3I9ITAscCghMCkpfSksbT1lKGQsdik7cmV0dXJuIG8obSkmJih1KG0pP3QoZS5yZXNvbHZlZCkmJm0udGhlbihkLHYpOnUobS5jb21wb25lbnQpJiYobS5jb21wb25lbnQudGhlbihkLHYpLG4obS5lcnJvcikmJihlLmVycm9yQ29tcD1CdChtLmVycm9yLGkpKSxuKG0ubG9hZGluZykmJihlLmxvYWRpbmdDb21wPUJ0KG0ubG9hZGluZyxpKSwwPT09bS5kZWxheT9lLmxvYWRpbmc9ITA6bD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bD1udWxsLHQoZS5yZXNvbHZlZCkmJnQoZS5lcnJvcikmJihlLmxvYWRpbmc9ITAscCghMSkpfSxtLmRlbGF5fHwyMDApKSxuKG0udGltZW91dCkmJihmPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtmPW51bGwsdChlLnJlc29sdmVkKSYmdihudWxsKX0sbS50aW1lb3V0KSkpKSxjPSExLGUubG9hZGluZz9lLmxvYWRpbmdDb21wOmUucmVzb2x2ZWR9fShwPWksZikpKXJldHVybiBmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBvPXZlKCk7cmV0dXJuIG8uYXN5bmNGYWN0b3J5PWUsby5hc3luY01ldGE9e2RhdGE6dCxjb250ZXh0Om4sY2hpbGRyZW46cix0YWc6aX0sb30ocCxhLHMsYyxsKTthPWF8fHt9LCRuKGkpLG4oYS5tb2RlbCkmJmZ1bmN0aW9uKGUsdCl7dmFyIHI9ZS5tb2RlbCYmZS5tb2RlbC5wcm9wfHxcInZhbHVlXCIsaT1lLm1vZGVsJiZlLm1vZGVsLmV2ZW50fHxcImlucHV0XCI7KHQuYXR0cnN8fCh0LmF0dHJzPXt9KSlbcl09dC5tb2RlbC52YWx1ZTt2YXIgbz10Lm9ufHwodC5vbj17fSksYT1vW2ldLHM9dC5tb2RlbC5jYWxsYmFjaztuKGEpPyhBcnJheS5pc0FycmF5KGEpPy0xPT09YS5pbmRleE9mKHMpOmEhPT1zKSYmKG9baV09W3NdLmNvbmNhdChhKSk6b1tpXT1zfShpLm9wdGlvbnMsYSk7dmFyIGQ9ZnVuY3Rpb24oZSxyLGkpe3ZhciBvPXIub3B0aW9ucy5wcm9wcztpZighdChvKSl7dmFyIGE9e30scz1lLmF0dHJzLGM9ZS5wcm9wcztpZihuKHMpfHxuKGMpKWZvcih2YXIgdSBpbiBvKXt2YXIgbD1DKHUpO290KGEsYyx1LGwsITApfHxvdChhLHMsdSxsLCExKX1yZXR1cm4gYX19KGEsaSk7aWYocihpLm9wdGlvbnMuZnVuY3Rpb25hbCkpcmV0dXJuIGZ1bmN0aW9uKHQscixpLG8sYSl7dmFyIHM9dC5vcHRpb25zLGM9e30sdT1zLnByb3BzO2lmKG4odSkpZm9yKHZhciBsIGluIHUpY1tsXT1NZShsLHUscnx8ZSk7ZWxzZSBuKGkuYXR0cnMpJiZOdChjLGkuYXR0cnMpLG4oaS5wcm9wcykmJk50KGMsaS5wcm9wcyk7dmFyIGY9bmV3IFR0KGksYyxhLG8sdCkscD1zLnJlbmRlci5jYWxsKG51bGwsZi5fYyxmKTtpZihwIGluc3RhbmNlb2YgcGUpcmV0dXJuIEV0KHAsaSxmLnBhcmVudCxzKTtpZihBcnJheS5pc0FycmF5KHApKXtmb3IodmFyIGQ9YXQocCl8fFtdLHY9bmV3IEFycmF5KGQubGVuZ3RoKSxoPTA7aDxkLmxlbmd0aDtoKyspdltoXT1FdChkW2hdLGksZi5wYXJlbnQscyk7cmV0dXJuIHZ9fShpLGQsYSxzLGMpO3ZhciB2PWEub247aWYoYS5vbj1hLm5hdGl2ZU9uLHIoaS5vcHRpb25zLmFic3RyYWN0KSl7dmFyIG09YS5zbG90O2E9e30sbSYmKGEuc2xvdD1tKX0hZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWUuaG9va3x8KGUuaG9vaz17fSksbj0wO248RHQubGVuZ3RoO24rKyl7dmFyIHI9RHRbbl0saT10W3JdLG89anRbcl07aT09PW98fGkmJmkuX21lcmdlZHx8KHRbcl09aT9NdChvLGkpOm8pfX0oYSk7dmFyIHk9aS5vcHRpb25zLm5hbWV8fGw7cmV0dXJuIG5ldyBwZShcInZ1ZS1jb21wb25lbnQtXCIraS5jaWQrKHk/XCItXCIreTpcIlwiKSxhLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHMse0N0b3I6aSxwcm9wc0RhdGE6ZCxsaXN0ZW5lcnM6dix0YWc6bCxjaGlsZHJlbjpjfSxwKX19fWZ1bmN0aW9uIE10KGUsdCl7dmFyIG49ZnVuY3Rpb24obixyKXtlKG4sciksdChuLHIpfTtyZXR1cm4gbi5fbWVyZ2VkPSEwLG59dmFyIEl0PTEsRnQ9MjtmdW5jdGlvbiBQdChlLGEscyxjLHUsbCl7cmV0dXJuKEFycmF5LmlzQXJyYXkocyl8fGkocykpJiYodT1jLGM9cyxzPXZvaWQgMCkscihsKSYmKHU9RnQpLGZ1bmN0aW9uKGUsaSxhLHMsYyl7aWYobihhKSYmbihhLl9fb2JfXykpcmV0dXJuIHZlKCk7bihhKSYmbihhLmlzKSYmKGk9YS5pcyk7aWYoIWkpcmV0dXJuIHZlKCk7QXJyYXkuaXNBcnJheShzKSYmXCJmdW5jdGlvblwiPT10eXBlb2Ygc1swXSYmKChhPWF8fHt9KS5zY29wZWRTbG90cz17ZGVmYXVsdDpzWzBdfSxzLmxlbmd0aD0wKTtjPT09RnQ/cz1hdChzKTpjPT09SXQmJihzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKEFycmF5LmlzQXJyYXkoZVt0XSkpcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sZSk7cmV0dXJuIGV9KHMpKTt2YXIgdSxsO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBpKXt2YXIgZjtsPWUuJHZub2RlJiZlLiR2bm9kZS5uc3x8Ri5nZXRUYWdOYW1lc3BhY2UoaSksdT1GLmlzUmVzZXJ2ZWRUYWcoaSk/bmV3IHBlKEYucGFyc2VQbGF0Zm9ybVRhZ05hbWUoaSksYSxzLHZvaWQgMCx2b2lkIDAsZSk6YSYmYS5wcmV8fCFuKGY9TGUoZS4kb3B0aW9ucyxcImNvbXBvbmVudHNcIixpKSk/bmV3IHBlKGksYSxzLHZvaWQgMCx2b2lkIDAsZSk6THQoZixhLGUscyxpKX1lbHNlIHU9THQoaSxhLGUscyk7cmV0dXJuIEFycmF5LmlzQXJyYXkodSk/dTpuKHUpPyhuKGwpJiZmdW5jdGlvbiBlKGksbyxhKXtpLm5zPW87XCJmb3JlaWduT2JqZWN0XCI9PT1pLnRhZyYmKG89dm9pZCAwLGE9ITApO2lmKG4oaS5jaGlsZHJlbikpZm9yKHZhciBzPTAsYz1pLmNoaWxkcmVuLmxlbmd0aDtzPGM7cysrKXt2YXIgdT1pLmNoaWxkcmVuW3NdO24odS50YWcpJiYodCh1Lm5zKXx8cihhKSYmXCJzdmdcIiE9PXUudGFnKSYmZSh1LG8sYSl9fSh1LGwpLG4oYSkmJmZ1bmN0aW9uKGUpe28oZS5zdHlsZSkmJmV0KGUuc3R5bGUpO28oZS5jbGFzcykmJmV0KGUuY2xhc3MpfShhKSx1KTp2ZSgpfShlLGEscyxjLHUpfXZhciBSdCxIdD1udWxsO2Z1bmN0aW9uIEJ0KGUsdCl7cmV0dXJuKGUuX19lc01vZHVsZXx8b2UmJlwiTW9kdWxlXCI9PT1lW1N5bWJvbC50b1N0cmluZ1RhZ10pJiYoZT1lLmRlZmF1bHQpLG8oZSk/dC5leHRlbmQoZSk6ZX1mdW5jdGlvbiBVdChlKXtyZXR1cm4gZS5pc0NvbW1lbnQmJmUuYXN5bmNGYWN0b3J5fWZ1bmN0aW9uIHp0KGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0Kyspe3ZhciByPWVbdF07aWYobihyKSYmKG4oci5jb21wb25lbnRPcHRpb25zKXx8VXQocikpKXJldHVybiByfX1mdW5jdGlvbiBWdChlLHQpe1J0LiRvbihlLHQpfWZ1bmN0aW9uIEt0KGUsdCl7UnQuJG9mZihlLHQpfWZ1bmN0aW9uIEp0KGUsdCl7dmFyIG49UnQ7cmV0dXJuIGZ1bmN0aW9uIHIoKXtudWxsIT09dC5hcHBseShudWxsLGFyZ3VtZW50cykmJm4uJG9mZihlLHIpfX1mdW5jdGlvbiBxdChlLHQsbil7UnQ9ZSxydCh0LG58fHt9LFZ0LEt0LEp0LGUpLFJ0PXZvaWQgMH12YXIgV3Q9bnVsbDtmdW5jdGlvbiBadChlKXt2YXIgdD1XdDtyZXR1cm4gV3Q9ZSxmdW5jdGlvbigpe1d0PXR9fWZ1bmN0aW9uIEd0KGUpe2Zvcig7ZSYmKGU9ZS4kcGFyZW50KTspaWYoZS5faW5hY3RpdmUpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gWHQoZSx0KXtpZih0KXtpZihlLl9kaXJlY3RJbmFjdGl2ZT0hMSxHdChlKSlyZXR1cm59ZWxzZSBpZihlLl9kaXJlY3RJbmFjdGl2ZSlyZXR1cm47aWYoZS5faW5hY3RpdmV8fG51bGw9PT1lLl9pbmFjdGl2ZSl7ZS5faW5hY3RpdmU9ITE7Zm9yKHZhciBuPTA7bjxlLiRjaGlsZHJlbi5sZW5ndGg7bisrKVh0KGUuJGNoaWxkcmVuW25dKTtZdChlLFwiYWN0aXZhdGVkXCIpfX1mdW5jdGlvbiBZdChlLHQpe2xlKCk7dmFyIG49ZS4kb3B0aW9uc1t0XSxyPXQrXCIgaG9va1wiO2lmKG4pZm9yKHZhciBpPTAsbz1uLmxlbmd0aDtpPG87aSsrKUhlKG5baV0sZSxudWxsLGUscik7ZS5faGFzSG9va0V2ZW50JiZlLiRlbWl0KFwiaG9vazpcIit0KSxmZSgpfXZhciBRdD1bXSxlbj1bXSx0bj17fSxubj0hMSxybj0hMSxvbj0wO3ZhciBhbj0wLHNuPURhdGUubm93O2lmKHomJiFxKXt2YXIgY249d2luZG93LnBlcmZvcm1hbmNlO2NuJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBjbi5ub3cmJnNuKCk+ZG9jdW1lbnQuY3JlYXRlRXZlbnQoXCJFdmVudFwiKS50aW1lU3RhbXAmJihzbj1mdW5jdGlvbigpe3JldHVybiBjbi5ub3coKX0pfWZ1bmN0aW9uIHVuKCl7dmFyIGUsdDtmb3IoYW49c24oKSxybj0hMCxRdC5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuaWQtdC5pZH0pLG9uPTA7b248UXQubGVuZ3RoO29uKyspKGU9UXRbb25dKS5iZWZvcmUmJmUuYmVmb3JlKCksdD1lLmlkLHRuW3RdPW51bGwsZS5ydW4oKTt2YXIgbj1lbi5zbGljZSgpLHI9UXQuc2xpY2UoKTtvbj1RdC5sZW5ndGg9ZW4ubGVuZ3RoPTAsdG49e30sbm49cm49ITEsZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspZVt0XS5faW5hY3RpdmU9ITAsWHQoZVt0XSwhMCl9KG4pLGZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoO2Zvcig7dC0tOyl7dmFyIG49ZVt0XSxyPW4udm07ci5fd2F0Y2hlcj09PW4mJnIuX2lzTW91bnRlZCYmIXIuX2lzRGVzdHJveWVkJiZZdChyLFwidXBkYXRlZFwiKX19KHIpLG5lJiZGLmRldnRvb2xzJiZuZS5lbWl0KFwiZmx1c2hcIil9dmFyIGxuPTAsZm49ZnVuY3Rpb24oZSx0LG4scixpKXt0aGlzLnZtPWUsaSYmKGUuX3dhdGNoZXI9dGhpcyksZS5fd2F0Y2hlcnMucHVzaCh0aGlzKSxyPyh0aGlzLmRlZXA9ISFyLmRlZXAsdGhpcy51c2VyPSEhci51c2VyLHRoaXMubGF6eT0hIXIubGF6eSx0aGlzLnN5bmM9ISFyLnN5bmMsdGhpcy5iZWZvcmU9ci5iZWZvcmUpOnRoaXMuZGVlcD10aGlzLnVzZXI9dGhpcy5sYXp5PXRoaXMuc3luYz0hMSx0aGlzLmNiPW4sdGhpcy5pZD0rK2xuLHRoaXMuYWN0aXZlPSEwLHRoaXMuZGlydHk9dGhpcy5sYXp5LHRoaXMuZGVwcz1bXSx0aGlzLm5ld0RlcHM9W10sdGhpcy5kZXBJZHM9bmV3IGllLHRoaXMubmV3RGVwSWRzPW5ldyBpZSx0aGlzLmV4cHJlc3Npb249XCJcIixcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3RoaXMuZ2V0dGVyPXQ6KHRoaXMuZ2V0dGVyPWZ1bmN0aW9uKGUpe2lmKCFILnRlc3QoZSkpe3ZhciB0PWUuc3BsaXQoXCIuXCIpO3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7aWYoIWUpcmV0dXJuO2U9ZVt0W25dXX1yZXR1cm4gZX19fSh0KSx0aGlzLmdldHRlcnx8KHRoaXMuZ2V0dGVyPVMpKSx0aGlzLnZhbHVlPXRoaXMubGF6eT92b2lkIDA6dGhpcy5nZXQoKX07Zm4ucHJvdG90eXBlLmdldD1mdW5jdGlvbigpe3ZhciBlO2xlKHRoaXMpO3ZhciB0PXRoaXMudm07dHJ5e2U9dGhpcy5nZXR0ZXIuY2FsbCh0LHQpfWNhdGNoKGUpe2lmKCF0aGlzLnVzZXIpdGhyb3cgZTtSZShlLHQsJ2dldHRlciBmb3Igd2F0Y2hlciBcIicrdGhpcy5leHByZXNzaW9uKydcIicpfWZpbmFsbHl7dGhpcy5kZWVwJiZldChlKSxmZSgpLHRoaXMuY2xlYW51cERlcHMoKX1yZXR1cm4gZX0sZm4ucHJvdG90eXBlLmFkZERlcD1mdW5jdGlvbihlKXt2YXIgdD1lLmlkO3RoaXMubmV3RGVwSWRzLmhhcyh0KXx8KHRoaXMubmV3RGVwSWRzLmFkZCh0KSx0aGlzLm5ld0RlcHMucHVzaChlKSx0aGlzLmRlcElkcy5oYXModCl8fGUuYWRkU3ViKHRoaXMpKX0sZm4ucHJvdG90eXBlLmNsZWFudXBEZXBzPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuZGVwcy5sZW5ndGg7ZS0tOyl7dmFyIHQ9dGhpcy5kZXBzW2VdO3RoaXMubmV3RGVwSWRzLmhhcyh0LmlkKXx8dC5yZW1vdmVTdWIodGhpcyl9dmFyIG49dGhpcy5kZXBJZHM7dGhpcy5kZXBJZHM9dGhpcy5uZXdEZXBJZHMsdGhpcy5uZXdEZXBJZHM9bix0aGlzLm5ld0RlcElkcy5jbGVhcigpLG49dGhpcy5kZXBzLHRoaXMuZGVwcz10aGlzLm5ld0RlcHMsdGhpcy5uZXdEZXBzPW4sdGhpcy5uZXdEZXBzLmxlbmd0aD0wfSxmbi5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5sYXp5P3RoaXMuZGlydHk9ITA6dGhpcy5zeW5jP3RoaXMucnVuKCk6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pZDtpZihudWxsPT10blt0XSl7aWYodG5bdF09ITAscm4pe2Zvcih2YXIgbj1RdC5sZW5ndGgtMTtuPm9uJiZRdFtuXS5pZD5lLmlkOyluLS07UXQuc3BsaWNlKG4rMSwwLGUpfWVsc2UgUXQucHVzaChlKTtubnx8KG5uPSEwLFllKHVuKSl9fSh0aGlzKX0sZm4ucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe2lmKHRoaXMuYWN0aXZlKXt2YXIgZT10aGlzLmdldCgpO2lmKGUhPT10aGlzLnZhbHVlfHxvKGUpfHx0aGlzLmRlZXApe3ZhciB0PXRoaXMudmFsdWU7aWYodGhpcy52YWx1ZT1lLHRoaXMudXNlcil0cnl7dGhpcy5jYi5jYWxsKHRoaXMudm0sZSx0KX1jYXRjaChlKXtSZShlLHRoaXMudm0sJ2NhbGxiYWNrIGZvciB3YXRjaGVyIFwiJyt0aGlzLmV4cHJlc3Npb24rJ1wiJyl9ZWxzZSB0aGlzLmNiLmNhbGwodGhpcy52bSxlLHQpfX19LGZuLnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbigpe3RoaXMudmFsdWU9dGhpcy5nZXQoKSx0aGlzLmRpcnR5PSExfSxmbi5wcm90b3R5cGUuZGVwZW5kPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuZGVwcy5sZW5ndGg7ZS0tOyl0aGlzLmRlcHNbZV0uZGVwZW5kKCl9LGZuLnByb3RvdHlwZS50ZWFyZG93bj1mdW5jdGlvbigpe2lmKHRoaXMuYWN0aXZlKXt0aGlzLnZtLl9pc0JlaW5nRGVzdHJveWVkfHxoKHRoaXMudm0uX3dhdGNoZXJzLHRoaXMpO2Zvcih2YXIgZT10aGlzLmRlcHMubGVuZ3RoO2UtLTspdGhpcy5kZXBzW2VdLnJlbW92ZVN1Yih0aGlzKTt0aGlzLmFjdGl2ZT0hMX19O3ZhciBwbj17ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OlMsc2V0OlN9O2Z1bmN0aW9uIGRuKGUsdCxuKXtwbi5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1t0XVtuXX0scG4uc2V0PWZ1bmN0aW9uKGUpe3RoaXNbdF1bbl09ZX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixwbil9ZnVuY3Rpb24gdm4oZSl7ZS5fd2F0Y2hlcnM9W107dmFyIHQ9ZS4kb3B0aW9uczt0LnByb3BzJiZmdW5jdGlvbihlLHQpe3ZhciBuPWUuJG9wdGlvbnMucHJvcHNEYXRhfHx7fSxyPWUuX3Byb3BzPXt9LGk9ZS4kb3B0aW9ucy5fcHJvcEtleXM9W107ZS4kcGFyZW50JiYkZSghMSk7dmFyIG89ZnVuY3Rpb24obyl7aS5wdXNoKG8pO3ZhciBhPU1lKG8sdCxuLGUpO3hlKHIsbyxhKSxvIGluIGV8fGRuKGUsXCJfcHJvcHNcIixvKX07Zm9yKHZhciBhIGluIHQpbyhhKTskZSghMCl9KGUsdC5wcm9wcyksdC5tZXRob2RzJiZmdW5jdGlvbihlLHQpe2UuJG9wdGlvbnMucHJvcHM7Zm9yKHZhciBuIGluIHQpZVtuXT1cImZ1bmN0aW9uXCIhPXR5cGVvZiB0W25dP1M6eCh0W25dLGUpfShlLHQubWV0aG9kcyksdC5kYXRhP2Z1bmN0aW9uKGUpe3ZhciB0PWUuJG9wdGlvbnMuZGF0YTtzKHQ9ZS5fZGF0YT1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0P2Z1bmN0aW9uKGUsdCl7bGUoKTt0cnl7cmV0dXJuIGUuY2FsbCh0LHQpfWNhdGNoKGUpe3JldHVybiBSZShlLHQsXCJkYXRhKClcIikse319ZmluYWxseXtmZSgpfX0odCxlKTp0fHx7fSl8fCh0PXt9KTt2YXIgbj1PYmplY3Qua2V5cyh0KSxyPWUuJG9wdGlvbnMucHJvcHMsaT0oZS4kb3B0aW9ucy5tZXRob2RzLG4ubGVuZ3RoKTtmb3IoO2ktLTspe3ZhciBvPW5baV07ciYmeShyLG8pfHwoYT12b2lkIDAsMzYhPT0oYT0obytcIlwiKS5jaGFyQ29kZUF0KDApKSYmOTUhPT1hJiZkbihlLFwiX2RhdGFcIixvKSl9dmFyIGE7Q2UodCwhMCl9KGUpOkNlKGUuX2RhdGE9e30sITApLHQuY29tcHV0ZWQmJmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5fY29tcHV0ZWRXYXRjaGVycz1PYmplY3QuY3JlYXRlKG51bGwpLHI9dGUoKTtmb3IodmFyIGkgaW4gdCl7dmFyIG89dFtpXSxhPVwiZnVuY3Rpb25cIj09dHlwZW9mIG8/bzpvLmdldDtyfHwobltpXT1uZXcgZm4oZSxhfHxTLFMsaG4pKSxpIGluIGV8fG1uKGUsaSxvKX19KGUsdC5jb21wdXRlZCksdC53YXRjaCYmdC53YXRjaCE9PVkmJmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIHQpe3ZhciByPXRbbl07aWYoQXJyYXkuaXNBcnJheShyKSlmb3IodmFyIGk9MDtpPHIubGVuZ3RoO2krKylfbihlLG4scltpXSk7ZWxzZSBfbihlLG4scil9fShlLHQud2F0Y2gpfXZhciBobj17bGF6eTohMH07ZnVuY3Rpb24gbW4oZSx0LG4pe3ZhciByPSF0ZSgpO1wiZnVuY3Rpb25cIj09dHlwZW9mIG4/KHBuLmdldD1yP3luKHQpOmduKG4pLHBuLnNldD1TKToocG4uZ2V0PW4uZ2V0P3ImJiExIT09bi5jYWNoZT95bih0KTpnbihuLmdldCk6Uyxwbi5zZXQ9bi5zZXR8fFMpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQscG4pfWZ1bmN0aW9uIHluKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NvbXB1dGVkV2F0Y2hlcnMmJnRoaXMuX2NvbXB1dGVkV2F0Y2hlcnNbZV07aWYodClyZXR1cm4gdC5kaXJ0eSYmdC5ldmFsdWF0ZSgpLGNlLnRhcmdldCYmdC5kZXBlbmQoKSx0LnZhbHVlfX1mdW5jdGlvbiBnbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5jYWxsKHRoaXMsdGhpcyl9fWZ1bmN0aW9uIF9uKGUsdCxuLHIpe3JldHVybiBzKG4pJiYocj1uLG49bi5oYW5kbGVyKSxcInN0cmluZ1wiPT10eXBlb2YgbiYmKG49ZVtuXSksZS4kd2F0Y2godCxuLHIpfXZhciBibj0wO2Z1bmN0aW9uICRuKGUpe3ZhciB0PWUub3B0aW9ucztpZihlLnN1cGVyKXt2YXIgbj0kbihlLnN1cGVyKTtpZihuIT09ZS5zdXBlck9wdGlvbnMpe2Uuc3VwZXJPcHRpb25zPW47dmFyIHI9ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLm9wdGlvbnMscj1lLnNlYWxlZE9wdGlvbnM7Zm9yKHZhciBpIGluIG4pbltpXSE9PXJbaV0mJih0fHwodD17fSksdFtpXT1uW2ldKTtyZXR1cm4gdH0oZSk7ciYmQShlLmV4dGVuZE9wdGlvbnMsciksKHQ9ZS5vcHRpb25zPURlKG4sZS5leHRlbmRPcHRpb25zKSkubmFtZSYmKHQuY29tcG9uZW50c1t0Lm5hbWVdPWUpfX1yZXR1cm4gdH1mdW5jdGlvbiB3bihlKXt0aGlzLl9pbml0KGUpfWZ1bmN0aW9uIENuKGUpe2UuY2lkPTA7dmFyIHQ9MTtlLmV4dGVuZD1mdW5jdGlvbihlKXtlPWV8fHt9O3ZhciBuPXRoaXMscj1uLmNpZCxpPWUuX0N0b3J8fChlLl9DdG9yPXt9KTtpZihpW3JdKXJldHVybiBpW3JdO3ZhciBvPWUubmFtZXx8bi5vcHRpb25zLm5hbWUsYT1mdW5jdGlvbihlKXt0aGlzLl9pbml0KGUpfTtyZXR1cm4oYS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPWEsYS5jaWQ9dCsrLGEub3B0aW9ucz1EZShuLm9wdGlvbnMsZSksYS5zdXBlcj1uLGEub3B0aW9ucy5wcm9wcyYmZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vcHRpb25zLnByb3BzO2Zvcih2YXIgbiBpbiB0KWRuKGUucHJvdG90eXBlLFwiX3Byb3BzXCIsbil9KGEpLGEub3B0aW9ucy5jb21wdXRlZCYmZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vcHRpb25zLmNvbXB1dGVkO2Zvcih2YXIgbiBpbiB0KW1uKGUucHJvdG90eXBlLG4sdFtuXSl9KGEpLGEuZXh0ZW5kPW4uZXh0ZW5kLGEubWl4aW49bi5taXhpbixhLnVzZT1uLnVzZSxNLmZvckVhY2goZnVuY3Rpb24oZSl7YVtlXT1uW2VdfSksbyYmKGEub3B0aW9ucy5jb21wb25lbnRzW29dPWEpLGEuc3VwZXJPcHRpb25zPW4ub3B0aW9ucyxhLmV4dGVuZE9wdGlvbnM9ZSxhLnNlYWxlZE9wdGlvbnM9QSh7fSxhLm9wdGlvbnMpLGlbcl09YSxhfX1mdW5jdGlvbiB4bihlKXtyZXR1cm4gZSYmKGUuQ3Rvci5vcHRpb25zLm5hbWV8fGUudGFnKX1mdW5jdGlvbiBrbihlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UuaW5kZXhPZih0KT4tMTpcInN0cmluZ1wiPT10eXBlb2YgZT9lLnNwbGl0KFwiLFwiKS5pbmRleE9mKHQpPi0xOihuPWUsXCJbb2JqZWN0IFJlZ0V4cF1cIj09PWEuY2FsbChuKSYmZS50ZXN0KHQpKTt2YXIgbn1mdW5jdGlvbiBBbihlLHQpe3ZhciBuPWUuY2FjaGUscj1lLmtleXMsaT1lLl92bm9kZTtmb3IodmFyIG8gaW4gbil7dmFyIGE9bltvXTtpZihhKXt2YXIgcz14bihhLmNvbXBvbmVudE9wdGlvbnMpO3MmJiF0KHMpJiZPbihuLG8scixpKX19fWZ1bmN0aW9uIE9uKGUsdCxuLHIpe3ZhciBpPWVbdF07IWl8fHImJmkudGFnPT09ci50YWd8fGkuY29tcG9uZW50SW5zdGFuY2UuJGRlc3Ryb3koKSxlW3RdPW51bGwsaChuLHQpfSFmdW5jdGlvbih0KXt0LnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbih0KXt2YXIgbj10aGlzO24uX3VpZD1ibisrLG4uX2lzVnVlPSEwLHQmJnQuX2lzQ29tcG9uZW50P2Z1bmN0aW9uKGUsdCl7dmFyIG49ZS4kb3B0aW9ucz1PYmplY3QuY3JlYXRlKGUuY29uc3RydWN0b3Iub3B0aW9ucykscj10Ll9wYXJlbnRWbm9kZTtuLnBhcmVudD10LnBhcmVudCxuLl9wYXJlbnRWbm9kZT1yO3ZhciBpPXIuY29tcG9uZW50T3B0aW9ucztuLnByb3BzRGF0YT1pLnByb3BzRGF0YSxuLl9wYXJlbnRMaXN0ZW5lcnM9aS5saXN0ZW5lcnMsbi5fcmVuZGVyQ2hpbGRyZW49aS5jaGlsZHJlbixuLl9jb21wb25lbnRUYWc9aS50YWcsdC5yZW5kZXImJihuLnJlbmRlcj10LnJlbmRlcixuLnN0YXRpY1JlbmRlckZucz10LnN0YXRpY1JlbmRlckZucyl9KG4sdCk6bi4kb3B0aW9ucz1EZSgkbihuLmNvbnN0cnVjdG9yKSx0fHx7fSxuKSxuLl9yZW5kZXJQcm94eT1uLG4uX3NlbGY9bixmdW5jdGlvbihlKXt2YXIgdD1lLiRvcHRpb25zLG49dC5wYXJlbnQ7aWYobiYmIXQuYWJzdHJhY3Qpe2Zvcig7bi4kb3B0aW9ucy5hYnN0cmFjdCYmbi4kcGFyZW50OyluPW4uJHBhcmVudDtuLiRjaGlsZHJlbi5wdXNoKGUpfWUuJHBhcmVudD1uLGUuJHJvb3Q9bj9uLiRyb290OmUsZS4kY2hpbGRyZW49W10sZS4kcmVmcz17fSxlLl93YXRjaGVyPW51bGwsZS5faW5hY3RpdmU9bnVsbCxlLl9kaXJlY3RJbmFjdGl2ZT0hMSxlLl9pc01vdW50ZWQ9ITEsZS5faXNEZXN0cm95ZWQ9ITEsZS5faXNCZWluZ0Rlc3Ryb3llZD0hMX0obiksZnVuY3Rpb24oZSl7ZS5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksZS5faGFzSG9va0V2ZW50PSExO3ZhciB0PWUuJG9wdGlvbnMuX3BhcmVudExpc3RlbmVyczt0JiZxdChlLHQpfShuKSxmdW5jdGlvbih0KXt0Ll92bm9kZT1udWxsLHQuX3N0YXRpY1RyZWVzPW51bGw7dmFyIG49dC4kb3B0aW9ucyxyPXQuJHZub2RlPW4uX3BhcmVudFZub2RlLGk9ciYmci5jb250ZXh0O3QuJHNsb3RzPXV0KG4uX3JlbmRlckNoaWxkcmVuLGkpLHQuJHNjb3BlZFNsb3RzPWUsdC5fYz1mdW5jdGlvbihlLG4scixpKXtyZXR1cm4gUHQodCxlLG4scixpLCExKX0sdC4kY3JlYXRlRWxlbWVudD1mdW5jdGlvbihlLG4scixpKXtyZXR1cm4gUHQodCxlLG4scixpLCEwKX07dmFyIG89ciYmci5kYXRhO3hlKHQsXCIkYXR0cnNcIixvJiZvLmF0dHJzfHxlLG51bGwsITApLHhlKHQsXCIkbGlzdGVuZXJzXCIsbi5fcGFyZW50TGlzdGVuZXJzfHxlLG51bGwsITApfShuKSxZdChuLFwiYmVmb3JlQ3JlYXRlXCIpLGZ1bmN0aW9uKGUpe3ZhciB0PWN0KGUuJG9wdGlvbnMuaW5qZWN0LGUpO3QmJigkZSghMSksT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihuKXt4ZShlLG4sdFtuXSl9KSwkZSghMCkpfShuKSx2bihuKSxmdW5jdGlvbihlKXt2YXIgdD1lLiRvcHRpb25zLnByb3ZpZGU7dCYmKGUuX3Byb3ZpZGVkPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dC5jYWxsKGUpOnQpfShuKSxZdChuLFwiY3JlYXRlZFwiKSxuLiRvcHRpb25zLmVsJiZuLiRtb3VudChuLiRvcHRpb25zLmVsKX19KHduKSxmdW5jdGlvbihlKXt2YXIgdD17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RhdGF9fSxuPXtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJvcHN9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCIkZGF0YVwiLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIiRwcm9wc1wiLG4pLGUucHJvdG90eXBlLiRzZXQ9a2UsZS5wcm90b3R5cGUuJGRlbGV0ZT1BZSxlLnByb3RvdHlwZS4kd2F0Y2g9ZnVuY3Rpb24oZSx0LG4pe2lmKHModCkpcmV0dXJuIF9uKHRoaXMsZSx0LG4pOyhuPW58fHt9KS51c2VyPSEwO3ZhciByPW5ldyBmbih0aGlzLGUsdCxuKTtpZihuLmltbWVkaWF0ZSl0cnl7dC5jYWxsKHRoaXMsci52YWx1ZSl9Y2F0Y2goZSl7UmUoZSx0aGlzLCdjYWxsYmFjayBmb3IgaW1tZWRpYXRlIHdhdGNoZXIgXCInK3IuZXhwcmVzc2lvbisnXCInKX1yZXR1cm4gZnVuY3Rpb24oKXtyLnRlYXJkb3duKCl9fX0od24pLGZ1bmN0aW9uKGUpe3ZhciB0PS9eaG9vazovO2UucHJvdG90eXBlLiRvbj1mdW5jdGlvbihlLG4pe3ZhciByPXRoaXM7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIGk9MCxvPWUubGVuZ3RoO2k8bztpKyspci4kb24oZVtpXSxuKTtlbHNlKHIuX2V2ZW50c1tlXXx8KHIuX2V2ZW50c1tlXT1bXSkpLnB1c2gobiksdC50ZXN0KGUpJiYoci5faGFzSG9va0V2ZW50PSEwKTtyZXR1cm4gcn0sZS5wcm90b3R5cGUuJG9uY2U9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2Z1bmN0aW9uIHIoKXtuLiRvZmYoZSxyKSx0LmFwcGx5KG4sYXJndW1lbnRzKX1yZXR1cm4gci5mbj10LG4uJG9uKGUsciksbn0sZS5wcm90b3R5cGUuJG9mZj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIG4uX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLG47aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciByPTAsaT1lLmxlbmd0aDtyPGk7cisrKW4uJG9mZihlW3JdLHQpO3JldHVybiBufXZhciBvLGE9bi5fZXZlbnRzW2VdO2lmKCFhKXJldHVybiBuO2lmKCF0KXJldHVybiBuLl9ldmVudHNbZV09bnVsbCxuO2Zvcih2YXIgcz1hLmxlbmd0aDtzLS07KWlmKChvPWFbc10pPT09dHx8by5mbj09PXQpe2Euc3BsaWNlKHMsMSk7YnJlYWt9cmV0dXJuIG59LGUucHJvdG90eXBlLiRlbWl0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2V2ZW50c1tlXTtpZih0KXt0PXQubGVuZ3RoPjE/ayh0KTp0O2Zvcih2YXIgbj1rKGFyZ3VtZW50cywxKSxyPSdldmVudCBoYW5kbGVyIGZvciBcIicrZSsnXCInLGk9MCxvPXQubGVuZ3RoO2k8bztpKyspSGUodFtpXSx0aGlzLG4sdGhpcyxyKX1yZXR1cm4gdGhpc319KHduKSxmdW5jdGlvbihlKXtlLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPW4uJGVsLGk9bi5fdm5vZGUsbz1adChuKTtuLl92bm9kZT1lLG4uJGVsPWk/bi5fX3BhdGNoX18oaSxlKTpuLl9fcGF0Y2hfXyhuLiRlbCxlLHQsITEpLG8oKSxyJiYoci5fX3Z1ZV9fPW51bGwpLG4uJGVsJiYobi4kZWwuX192dWVfXz1uKSxuLiR2bm9kZSYmbi4kcGFyZW50JiZuLiR2bm9kZT09PW4uJHBhcmVudC5fdm5vZGUmJihuLiRwYXJlbnQuJGVsPW4uJGVsKX0sZS5wcm90b3R5cGUuJGZvcmNlVXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5fd2F0Y2hlciYmdGhpcy5fd2F0Y2hlci51cGRhdGUoKX0sZS5wcm90b3R5cGUuJGRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKCFlLl9pc0JlaW5nRGVzdHJveWVkKXtZdChlLFwiYmVmb3JlRGVzdHJveVwiKSxlLl9pc0JlaW5nRGVzdHJveWVkPSEwO3ZhciB0PWUuJHBhcmVudDshdHx8dC5faXNCZWluZ0Rlc3Ryb3llZHx8ZS4kb3B0aW9ucy5hYnN0cmFjdHx8aCh0LiRjaGlsZHJlbixlKSxlLl93YXRjaGVyJiZlLl93YXRjaGVyLnRlYXJkb3duKCk7Zm9yKHZhciBuPWUuX3dhdGNoZXJzLmxlbmd0aDtuLS07KWUuX3dhdGNoZXJzW25dLnRlYXJkb3duKCk7ZS5fZGF0YS5fX29iX18mJmUuX2RhdGEuX19vYl9fLnZtQ291bnQtLSxlLl9pc0Rlc3Ryb3llZD0hMCxlLl9fcGF0Y2hfXyhlLl92bm9kZSxudWxsKSxZdChlLFwiZGVzdHJveWVkXCIpLGUuJG9mZigpLGUuJGVsJiYoZS4kZWwuX192dWVfXz1udWxsKSxlLiR2bm9kZSYmKGUuJHZub2RlLnBhcmVudD1udWxsKX19fSh3biksZnVuY3Rpb24oZSl7U3QoZS5wcm90b3R5cGUpLGUucHJvdG90eXBlLiRuZXh0VGljaz1mdW5jdGlvbihlKXtyZXR1cm4gWWUoZSx0aGlzKX0sZS5wcm90b3R5cGUuX3JlbmRlcj1mdW5jdGlvbigpe3ZhciBlLHQ9dGhpcyxuPXQuJG9wdGlvbnMscj1uLnJlbmRlcixpPW4uX3BhcmVudFZub2RlO2kmJih0LiRzY29wZWRTbG90cz1mdChpLmRhdGEuc2NvcGVkU2xvdHMsdC4kc2xvdHMsdC4kc2NvcGVkU2xvdHMpKSx0LiR2bm9kZT1pO3RyeXtIdD10LGU9ci5jYWxsKHQuX3JlbmRlclByb3h5LHQuJGNyZWF0ZUVsZW1lbnQpfWNhdGNoKG4pe1JlKG4sdCxcInJlbmRlclwiKSxlPXQuX3Zub2RlfWZpbmFsbHl7SHQ9bnVsbH1yZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmMT09PWUubGVuZ3RoJiYoZT1lWzBdKSxlIGluc3RhbmNlb2YgcGV8fChlPXZlKCkpLGUucGFyZW50PWksZX19KHduKTt2YXIgU249W1N0cmluZyxSZWdFeHAsQXJyYXldLFRuPXtLZWVwQWxpdmU6e25hbWU6XCJrZWVwLWFsaXZlXCIsYWJzdHJhY3Q6ITAscHJvcHM6e2luY2x1ZGU6U24sZXhjbHVkZTpTbixtYXg6W1N0cmluZyxOdW1iZXJdfSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5jYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMua2V5cz1bXX0sZGVzdHJveWVkOmZ1bmN0aW9uKCl7Zm9yKHZhciBlIGluIHRoaXMuY2FjaGUpT24odGhpcy5jYWNoZSxlLHRoaXMua2V5cyl9LG1vdW50ZWQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuJHdhdGNoKFwiaW5jbHVkZVwiLGZ1bmN0aW9uKHQpe0FuKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGtuKHQsZSl9KX0pLHRoaXMuJHdhdGNoKFwiZXhjbHVkZVwiLGZ1bmN0aW9uKHQpe0FuKGUsZnVuY3Rpb24oZSl7cmV0dXJuIWtuKHQsZSl9KX0pfSxyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLiRzbG90cy5kZWZhdWx0LHQ9enQoZSksbj10JiZ0LmNvbXBvbmVudE9wdGlvbnM7aWYobil7dmFyIHI9eG4obiksaT10aGlzLmluY2x1ZGUsbz10aGlzLmV4Y2x1ZGU7aWYoaSYmKCFyfHwha24oaSxyKSl8fG8mJnImJmtuKG8scikpcmV0dXJuIHQ7dmFyIGE9dGhpcy5jYWNoZSxzPXRoaXMua2V5cyxjPW51bGw9PXQua2V5P24uQ3Rvci5jaWQrKG4udGFnP1wiOjpcIituLnRhZzpcIlwiKTp0LmtleTthW2NdPyh0LmNvbXBvbmVudEluc3RhbmNlPWFbY10uY29tcG9uZW50SW5zdGFuY2UsaChzLGMpLHMucHVzaChjKSk6KGFbY109dCxzLnB1c2goYyksdGhpcy5tYXgmJnMubGVuZ3RoPnBhcnNlSW50KHRoaXMubWF4KSYmT24oYSxzWzBdLHMsdGhpcy5fdm5vZGUpKSx0LmRhdGEua2VlcEFsaXZlPSEwfXJldHVybiB0fHxlJiZlWzBdfX19OyFmdW5jdGlvbihlKXt2YXIgdD17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEZ9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImNvbmZpZ1wiLHQpLGUudXRpbD17d2FybjphZSxleHRlbmQ6QSxtZXJnZU9wdGlvbnM6RGUsZGVmaW5lUmVhY3RpdmU6eGV9LGUuc2V0PWtlLGUuZGVsZXRlPUFlLGUubmV4dFRpY2s9WWUsZS5vYnNlcnZhYmxlPWZ1bmN0aW9uKGUpe3JldHVybiBDZShlKSxlfSxlLm9wdGlvbnM9T2JqZWN0LmNyZWF0ZShudWxsKSxNLmZvckVhY2goZnVuY3Rpb24odCl7ZS5vcHRpb25zW3QrXCJzXCJdPU9iamVjdC5jcmVhdGUobnVsbCl9KSxlLm9wdGlvbnMuX2Jhc2U9ZSxBKGUub3B0aW9ucy5jb21wb25lbnRzLFRuKSxmdW5jdGlvbihlKXtlLnVzZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9pbnN0YWxsZWRQbHVnaW5zfHwodGhpcy5faW5zdGFsbGVkUGx1Z2lucz1bXSk7aWYodC5pbmRleE9mKGUpPi0xKXJldHVybiB0aGlzO3ZhciBuPWsoYXJndW1lbnRzLDEpO3JldHVybiBuLnVuc2hpZnQodGhpcyksXCJmdW5jdGlvblwiPT10eXBlb2YgZS5pbnN0YWxsP2UuaW5zdGFsbC5hcHBseShlLG4pOlwiZnVuY3Rpb25cIj09dHlwZW9mIGUmJmUuYXBwbHkobnVsbCxuKSx0LnB1c2goZSksdGhpc319KGUpLGZ1bmN0aW9uKGUpe2UubWl4aW49ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMub3B0aW9ucz1EZSh0aGlzLm9wdGlvbnMsZSksdGhpc319KGUpLENuKGUpLGZ1bmN0aW9uKGUpe00uZm9yRWFjaChmdW5jdGlvbih0KXtlW3RdPWZ1bmN0aW9uKGUsbil7cmV0dXJuIG4/KFwiY29tcG9uZW50XCI9PT10JiZzKG4pJiYobi5uYW1lPW4ubmFtZXx8ZSxuPXRoaXMub3B0aW9ucy5fYmFzZS5leHRlbmQobikpLFwiZGlyZWN0aXZlXCI9PT10JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBuJiYobj17YmluZDpuLHVwZGF0ZTpufSksdGhpcy5vcHRpb25zW3QrXCJzXCJdW2VdPW4sbik6dGhpcy5vcHRpb25zW3QrXCJzXCJdW2VdfX0pfShlKX0od24pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3bi5wcm90b3R5cGUsXCIkaXNTZXJ2ZXJcIix7Z2V0OnRlfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHduLnByb3RvdHlwZSxcIiRzc3JDb250ZXh0XCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiR2bm9kZSYmdGhpcy4kdm5vZGUuc3NyQ29udGV4dH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkod24sXCJGdW5jdGlvbmFsUmVuZGVyQ29udGV4dFwiLHt2YWx1ZTpUdH0pLHduLnZlcnNpb249XCIyLjYuMTFcIjt2YXIgRW49cChcInN0eWxlLGNsYXNzXCIpLE5uPXAoXCJpbnB1dCx0ZXh0YXJlYSxvcHRpb24sc2VsZWN0LHByb2dyZXNzXCIpLGpuPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm5cInZhbHVlXCI9PT1uJiZObihlKSYmXCJidXR0b25cIiE9PXR8fFwic2VsZWN0ZWRcIj09PW4mJlwib3B0aW9uXCI9PT1lfHxcImNoZWNrZWRcIj09PW4mJlwiaW5wdXRcIj09PWV8fFwibXV0ZWRcIj09PW4mJlwidmlkZW9cIj09PWV9LERuPXAoXCJjb250ZW50ZWRpdGFibGUsZHJhZ2dhYmxlLHNwZWxsY2hlY2tcIiksTG49cChcImV2ZW50cyxjYXJldCx0eXBpbmcscGxhaW50ZXh0LW9ubHlcIiksTW49ZnVuY3Rpb24oZSx0KXtyZXR1cm4gSG4odCl8fFwiZmFsc2VcIj09PXQ/XCJmYWxzZVwiOlwiY29udGVudGVkaXRhYmxlXCI9PT1lJiZMbih0KT90OlwidHJ1ZVwifSxJbj1wKFwiYWxsb3dmdWxsc2NyZWVuLGFzeW5jLGF1dG9mb2N1cyxhdXRvcGxheSxjaGVja2VkLGNvbXBhY3QsY29udHJvbHMsZGVjbGFyZSxkZWZhdWx0LGRlZmF1bHRjaGVja2VkLGRlZmF1bHRtdXRlZCxkZWZhdWx0c2VsZWN0ZWQsZGVmZXIsZGlzYWJsZWQsZW5hYmxlZCxmb3Jtbm92YWxpZGF0ZSxoaWRkZW4saW5kZXRlcm1pbmF0ZSxpbmVydCxpc21hcCxpdGVtc2NvcGUsbG9vcCxtdWx0aXBsZSxtdXRlZCxub2hyZWYsbm9yZXNpemUsbm9zaGFkZSxub3ZhbGlkYXRlLG5vd3JhcCxvcGVuLHBhdXNlb25leGl0LHJlYWRvbmx5LHJlcXVpcmVkLHJldmVyc2VkLHNjb3BlZCxzZWFtbGVzcyxzZWxlY3RlZCxzb3J0YWJsZSx0cmFuc2xhdGUsdHJ1ZXNwZWVkLHR5cGVtdXN0bWF0Y2gsdmlzaWJsZVwiKSxGbj1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIixQbj1mdW5jdGlvbihlKXtyZXR1cm5cIjpcIj09PWUuY2hhckF0KDUpJiZcInhsaW5rXCI9PT1lLnNsaWNlKDAsNSl9LFJuPWZ1bmN0aW9uKGUpe3JldHVybiBQbihlKT9lLnNsaWNlKDYsZS5sZW5ndGgpOlwiXCJ9LEhuPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfHwhMT09PWV9O2Z1bmN0aW9uIEJuKGUpe2Zvcih2YXIgdD1lLmRhdGEscj1lLGk9ZTtuKGkuY29tcG9uZW50SW5zdGFuY2UpOykoaT1pLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZSkmJmkuZGF0YSYmKHQ9VW4oaS5kYXRhLHQpKTtmb3IoO24ocj1yLnBhcmVudCk7KXImJnIuZGF0YSYmKHQ9VW4odCxyLmRhdGEpKTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZihuKGUpfHxuKHQpKXJldHVybiB6bihlLFZuKHQpKTtyZXR1cm5cIlwifSh0LnN0YXRpY0NsYXNzLHQuY2xhc3MpfWZ1bmN0aW9uIFVuKGUsdCl7cmV0dXJue3N0YXRpY0NsYXNzOnpuKGUuc3RhdGljQ2xhc3MsdC5zdGF0aWNDbGFzcyksY2xhc3M6bihlLmNsYXNzKT9bZS5jbGFzcyx0LmNsYXNzXTp0LmNsYXNzfX1mdW5jdGlvbiB6bihlLHQpe3JldHVybiBlP3Q/ZStcIiBcIit0OmU6dHx8XCJcIn1mdW5jdGlvbiBWbihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9mdW5jdGlvbihlKXtmb3IodmFyIHQscj1cIlwiLGk9MCxvPWUubGVuZ3RoO2k8bztpKyspbih0PVZuKGVbaV0pKSYmXCJcIiE9PXQmJihyJiYocis9XCIgXCIpLHIrPXQpO3JldHVybiByfShlKTpvKGUpP2Z1bmN0aW9uKGUpe3ZhciB0PVwiXCI7Zm9yKHZhciBuIGluIGUpZVtuXSYmKHQmJih0Kz1cIiBcIiksdCs9bik7cmV0dXJuIHR9KGUpOlwic3RyaW5nXCI9PXR5cGVvZiBlP2U6XCJcIn12YXIgS249e3N2ZzpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsbWF0aDpcImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxcIn0sSm49cChcImh0bWwsYm9keSxiYXNlLGhlYWQsbGluayxtZXRhLHN0eWxlLHRpdGxlLGFkZHJlc3MsYXJ0aWNsZSxhc2lkZSxmb290ZXIsaGVhZGVyLGgxLGgyLGgzLGg0LGg1LGg2LGhncm91cCxuYXYsc2VjdGlvbixkaXYsZGQsZGwsZHQsZmlnY2FwdGlvbixmaWd1cmUscGljdHVyZSxocixpbWcsbGksbWFpbixvbCxwLHByZSx1bCxhLGIsYWJicixiZGksYmRvLGJyLGNpdGUsY29kZSxkYXRhLGRmbixlbSxpLGtiZCxtYXJrLHEscnAscnQscnRjLHJ1YnkscyxzYW1wLHNtYWxsLHNwYW4sc3Ryb25nLHN1YixzdXAsdGltZSx1LHZhcix3YnIsYXJlYSxhdWRpbyxtYXAsdHJhY2ssdmlkZW8sZW1iZWQsb2JqZWN0LHBhcmFtLHNvdXJjZSxjYW52YXMsc2NyaXB0LG5vc2NyaXB0LGRlbCxpbnMsY2FwdGlvbixjb2wsY29sZ3JvdXAsdGFibGUsdGhlYWQsdGJvZHksdGQsdGgsdHIsYnV0dG9uLGRhdGFsaXN0LGZpZWxkc2V0LGZvcm0saW5wdXQsbGFiZWwsbGVnZW5kLG1ldGVyLG9wdGdyb3VwLG9wdGlvbixvdXRwdXQscHJvZ3Jlc3Msc2VsZWN0LHRleHRhcmVhLGRldGFpbHMsZGlhbG9nLG1lbnUsbWVudWl0ZW0sc3VtbWFyeSxjb250ZW50LGVsZW1lbnQsc2hhZG93LHRlbXBsYXRlLGJsb2NrcXVvdGUsaWZyYW1lLHRmb290XCIpLHFuPXAoXCJzdmcsYW5pbWF0ZSxjaXJjbGUsY2xpcHBhdGgsY3Vyc29yLGRlZnMsZGVzYyxlbGxpcHNlLGZpbHRlcixmb250LWZhY2UsZm9yZWlnbk9iamVjdCxnLGdseXBoLGltYWdlLGxpbmUsbWFya2VyLG1hc2ssbWlzc2luZy1nbHlwaCxwYXRoLHBhdHRlcm4scG9seWdvbixwb2x5bGluZSxyZWN0LHN3aXRjaCxzeW1ib2wsdGV4dCx0ZXh0cGF0aCx0c3Bhbix1c2Usdmlld1wiLCEwKSxXbj1mdW5jdGlvbihlKXtyZXR1cm4gSm4oZSl8fHFuKGUpfTtmdW5jdGlvbiBabihlKXtyZXR1cm4gcW4oZSk/XCJzdmdcIjpcIm1hdGhcIj09PWU/XCJtYXRoXCI6dm9pZCAwfXZhciBHbj1PYmplY3QuY3JlYXRlKG51bGwpO3ZhciBYbj1wKFwidGV4dCxudW1iZXIscGFzc3dvcmQsc2VhcmNoLGVtYWlsLHRlbCx1cmxcIik7ZnVuY3Rpb24gWW4oZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpe3ZhciB0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZSk7cmV0dXJuIHR8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIil9cmV0dXJuIGV9dmFyIFFuPU9iamVjdC5mcmVlemUoe2NyZWF0ZUVsZW1lbnQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpO3JldHVyblwic2VsZWN0XCIhPT1lP246KHQuZGF0YSYmdC5kYXRhLmF0dHJzJiZ2b2lkIDAhPT10LmRhdGEuYXR0cnMubXVsdGlwbGUmJm4uc2V0QXR0cmlidXRlKFwibXVsdGlwbGVcIixcIm11bHRpcGxlXCIpLG4pfSxjcmVhdGVFbGVtZW50TlM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKEtuW2VdLHQpfSxjcmVhdGVUZXh0Tm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZSl9LGNyZWF0ZUNvbW1lbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoZSl9LGluc2VydEJlZm9yZTpmdW5jdGlvbihlLHQsbil7ZS5pbnNlcnRCZWZvcmUodCxuKX0scmVtb3ZlQ2hpbGQ6ZnVuY3Rpb24oZSx0KXtlLnJlbW92ZUNoaWxkKHQpfSxhcHBlbmRDaGlsZDpmdW5jdGlvbihlLHQpe2UuYXBwZW5kQ2hpbGQodCl9LHBhcmVudE5vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFyZW50Tm9kZX0sbmV4dFNpYmxpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubmV4dFNpYmxpbmd9LHRhZ05hbWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGFnTmFtZX0sc2V0VGV4dENvbnRlbnQ6ZnVuY3Rpb24oZSx0KXtlLnRleHRDb250ZW50PXR9LHNldFN0eWxlU2NvcGU6ZnVuY3Rpb24oZSx0KXtlLnNldEF0dHJpYnV0ZSh0LFwiXCIpfX0pLGVyPXtjcmVhdGU6ZnVuY3Rpb24oZSx0KXt0cih0KX0sdXBkYXRlOmZ1bmN0aW9uKGUsdCl7ZS5kYXRhLnJlZiE9PXQuZGF0YS5yZWYmJih0cihlLCEwKSx0cih0KSl9LGRlc3Ryb3k6ZnVuY3Rpb24oZSl7dHIoZSwhMCl9fTtmdW5jdGlvbiB0cihlLHQpe3ZhciByPWUuZGF0YS5yZWY7aWYobihyKSl7dmFyIGk9ZS5jb250ZXh0LG89ZS5jb21wb25lbnRJbnN0YW5jZXx8ZS5lbG0sYT1pLiRyZWZzO3Q/QXJyYXkuaXNBcnJheShhW3JdKT9oKGFbcl0sbyk6YVtyXT09PW8mJihhW3JdPXZvaWQgMCk6ZS5kYXRhLnJlZkluRm9yP0FycmF5LmlzQXJyYXkoYVtyXSk/YVtyXS5pbmRleE9mKG8pPDAmJmFbcl0ucHVzaChvKTphW3JdPVtvXTphW3JdPW99fXZhciBucj1uZXcgcGUoXCJcIix7fSxbXSkscnI9W1wiY3JlYXRlXCIsXCJhY3RpdmF0ZVwiLFwidXBkYXRlXCIsXCJyZW1vdmVcIixcImRlc3Ryb3lcIl07ZnVuY3Rpb24gaXIoZSxpKXtyZXR1cm4gZS5rZXk9PT1pLmtleSYmKGUudGFnPT09aS50YWcmJmUuaXNDb21tZW50PT09aS5pc0NvbW1lbnQmJm4oZS5kYXRhKT09PW4oaS5kYXRhKSYmZnVuY3Rpb24oZSx0KXtpZihcImlucHV0XCIhPT1lLnRhZylyZXR1cm4hMDt2YXIgcixpPW4ocj1lLmRhdGEpJiZuKHI9ci5hdHRycykmJnIudHlwZSxvPW4ocj10LmRhdGEpJiZuKHI9ci5hdHRycykmJnIudHlwZTtyZXR1cm4gaT09PW98fFhuKGkpJiZYbihvKX0oZSxpKXx8cihlLmlzQXN5bmNQbGFjZWhvbGRlcikmJmUuYXN5bmNGYWN0b3J5PT09aS5hc3luY0ZhY3RvcnkmJnQoaS5hc3luY0ZhY3RvcnkuZXJyb3IpKX1mdW5jdGlvbiBvcihlLHQscil7dmFyIGksbyxhPXt9O2ZvcihpPXQ7aTw9cjsrK2kpbihvPWVbaV0ua2V5KSYmKGFbb109aSk7cmV0dXJuIGF9dmFyIGFyPXtjcmVhdGU6c3IsdXBkYXRlOnNyLGRlc3Ryb3k6ZnVuY3Rpb24oZSl7c3IoZSxucil9fTtmdW5jdGlvbiBzcihlLHQpeyhlLmRhdGEuZGlyZWN0aXZlc3x8dC5kYXRhLmRpcmVjdGl2ZXMpJiZmdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxvPWU9PT1ucixhPXQ9PT1ucixzPXVyKGUuZGF0YS5kaXJlY3RpdmVzLGUuY29udGV4dCksYz11cih0LmRhdGEuZGlyZWN0aXZlcyx0LmNvbnRleHQpLHU9W10sbD1bXTtmb3IobiBpbiBjKXI9c1tuXSxpPWNbbl0scj8oaS5vbGRWYWx1ZT1yLnZhbHVlLGkub2xkQXJnPXIuYXJnLGZyKGksXCJ1cGRhdGVcIix0LGUpLGkuZGVmJiZpLmRlZi5jb21wb25lbnRVcGRhdGVkJiZsLnB1c2goaSkpOihmcihpLFwiYmluZFwiLHQsZSksaS5kZWYmJmkuZGVmLmluc2VydGVkJiZ1LnB1c2goaSkpO2lmKHUubGVuZ3RoKXt2YXIgZj1mdW5jdGlvbigpe2Zvcih2YXIgbj0wO248dS5sZW5ndGg7bisrKWZyKHVbbl0sXCJpbnNlcnRlZFwiLHQsZSl9O28/aXQodCxcImluc2VydFwiLGYpOmYoKX1sLmxlbmd0aCYmaXQodCxcInBvc3RwYXRjaFwiLGZ1bmN0aW9uKCl7Zm9yKHZhciBuPTA7bjxsLmxlbmd0aDtuKyspZnIobFtuXSxcImNvbXBvbmVudFVwZGF0ZWRcIix0LGUpfSk7aWYoIW8pZm9yKG4gaW4gcyljW25dfHxmcihzW25dLFwidW5iaW5kXCIsZSxlLGEpfShlLHQpfXZhciBjcj1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIHVyKGUsdCl7dmFyIG4scixpPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoIWUpcmV0dXJuIGk7Zm9yKG49MDtuPGUubGVuZ3RoO24rKykocj1lW25dKS5tb2RpZmllcnN8fChyLm1vZGlmaWVycz1jciksaVtscihyKV09cixyLmRlZj1MZSh0LiRvcHRpb25zLFwiZGlyZWN0aXZlc1wiLHIubmFtZSk7cmV0dXJuIGl9ZnVuY3Rpb24gbHIoZSl7cmV0dXJuIGUucmF3TmFtZXx8ZS5uYW1lK1wiLlwiK09iamVjdC5rZXlzKGUubW9kaWZpZXJzfHx7fSkuam9pbihcIi5cIil9ZnVuY3Rpb24gZnIoZSx0LG4scixpKXt2YXIgbz1lLmRlZiYmZS5kZWZbdF07aWYobyl0cnl7byhuLmVsbSxlLG4scixpKX1jYXRjaChyKXtSZShyLG4uY29udGV4dCxcImRpcmVjdGl2ZSBcIitlLm5hbWUrXCIgXCIrdCtcIiBob29rXCIpfX12YXIgcHI9W2VyLGFyXTtmdW5jdGlvbiBkcihlLHIpe3ZhciBpPXIuY29tcG9uZW50T3B0aW9ucztpZighKG4oaSkmJiExPT09aS5DdG9yLm9wdGlvbnMuaW5oZXJpdEF0dHJzfHx0KGUuZGF0YS5hdHRycykmJnQoci5kYXRhLmF0dHJzKSkpe3ZhciBvLGEscz1yLmVsbSxjPWUuZGF0YS5hdHRyc3x8e30sdT1yLmRhdGEuYXR0cnN8fHt9O2ZvcihvIGluIG4odS5fX29iX18pJiYodT1yLmRhdGEuYXR0cnM9QSh7fSx1KSksdSlhPXVbb10sY1tvXSE9PWEmJnZyKHMsbyxhKTtmb3IobyBpbihxfHxaKSYmdS52YWx1ZSE9PWMudmFsdWUmJnZyKHMsXCJ2YWx1ZVwiLHUudmFsdWUpLGMpdCh1W29dKSYmKFBuKG8pP3MucmVtb3ZlQXR0cmlidXRlTlMoRm4sUm4obykpOkRuKG8pfHxzLnJlbW92ZUF0dHJpYnV0ZShvKSl9fWZ1bmN0aW9uIHZyKGUsdCxuKXtlLnRhZ05hbWUuaW5kZXhPZihcIi1cIik+LTE/aHIoZSx0LG4pOkluKHQpP0huKG4pP2UucmVtb3ZlQXR0cmlidXRlKHQpOihuPVwiYWxsb3dmdWxsc2NyZWVuXCI9PT10JiZcIkVNQkVEXCI9PT1lLnRhZ05hbWU/XCJ0cnVlXCI6dCxlLnNldEF0dHJpYnV0ZSh0LG4pKTpEbih0KT9lLnNldEF0dHJpYnV0ZSh0LE1uKHQsbikpOlBuKHQpP0huKG4pP2UucmVtb3ZlQXR0cmlidXRlTlMoRm4sUm4odCkpOmUuc2V0QXR0cmlidXRlTlMoRm4sdCxuKTpocihlLHQsbil9ZnVuY3Rpb24gaHIoZSx0LG4pe2lmKEhuKG4pKWUucmVtb3ZlQXR0cmlidXRlKHQpO2Vsc2V7aWYocSYmIVcmJlwiVEVYVEFSRUFcIj09PWUudGFnTmFtZSYmXCJwbGFjZWhvbGRlclwiPT09dCYmXCJcIiE9PW4mJiFlLl9faWVwaCl7dmFyIHI9ZnVuY3Rpb24odCl7dC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJpbnB1dFwiLHIpfTtlLmFkZEV2ZW50TGlzdGVuZXIoXCJpbnB1dFwiLHIpLGUuX19pZXBoPSEwfWUuc2V0QXR0cmlidXRlKHQsbil9fXZhciBtcj17Y3JlYXRlOmRyLHVwZGF0ZTpkcn07ZnVuY3Rpb24geXIoZSxyKXt2YXIgaT1yLmVsbSxvPXIuZGF0YSxhPWUuZGF0YTtpZighKHQoby5zdGF0aWNDbGFzcykmJnQoby5jbGFzcykmJih0KGEpfHx0KGEuc3RhdGljQ2xhc3MpJiZ0KGEuY2xhc3MpKSkpe3ZhciBzPUJuKHIpLGM9aS5fdHJhbnNpdGlvbkNsYXNzZXM7bihjKSYmKHM9em4ocyxWbihjKSkpLHMhPT1pLl9wcmV2Q2xhc3MmJihpLnNldEF0dHJpYnV0ZShcImNsYXNzXCIscyksaS5fcHJldkNsYXNzPXMpfX12YXIgZ3IsX3IsYnIsJHIsd3IsQ3IseHI9e2NyZWF0ZTp5cix1cGRhdGU6eXJ9LGtyPS9bXFx3KS4rXFwtXyRcXF1dLztmdW5jdGlvbiBBcihlKXt2YXIgdCxuLHIsaSxvLGE9ITEscz0hMSxjPSExLHU9ITEsbD0wLGY9MCxwPTAsZD0wO2ZvcihyPTA7cjxlLmxlbmd0aDtyKyspaWYobj10LHQ9ZS5jaGFyQ29kZUF0KHIpLGEpMzk9PT10JiY5MiE9PW4mJihhPSExKTtlbHNlIGlmKHMpMzQ9PT10JiY5MiE9PW4mJihzPSExKTtlbHNlIGlmKGMpOTY9PT10JiY5MiE9PW4mJihjPSExKTtlbHNlIGlmKHUpNDc9PT10JiY5MiE9PW4mJih1PSExKTtlbHNlIGlmKDEyNCE9PXR8fDEyND09PWUuY2hhckNvZGVBdChyKzEpfHwxMjQ9PT1lLmNoYXJDb2RlQXQoci0xKXx8bHx8Znx8cCl7c3dpdGNoKHQpe2Nhc2UgMzQ6cz0hMDticmVhaztjYXNlIDM5OmE9ITA7YnJlYWs7Y2FzZSA5NjpjPSEwO2JyZWFrO2Nhc2UgNDA6cCsrO2JyZWFrO2Nhc2UgNDE6cC0tO2JyZWFrO2Nhc2UgOTE6ZisrO2JyZWFrO2Nhc2UgOTM6Zi0tO2JyZWFrO2Nhc2UgMTIzOmwrKzticmVhaztjYXNlIDEyNTpsLS19aWYoNDc9PT10KXtmb3IodmFyIHY9ci0xLGg9dm9pZCAwO3Y+PTAmJlwiIFwiPT09KGg9ZS5jaGFyQXQodikpO3YtLSk7aCYma3IudGVzdChoKXx8KHU9ITApfX1lbHNlIHZvaWQgMD09PWk/KGQ9cisxLGk9ZS5zbGljZSgwLHIpLnRyaW0oKSk6bSgpO2Z1bmN0aW9uIG0oKXsob3x8KG89W10pKS5wdXNoKGUuc2xpY2UoZCxyKS50cmltKCkpLGQ9cisxfWlmKHZvaWQgMD09PWk/aT1lLnNsaWNlKDAscikudHJpbSgpOjAhPT1kJiZtKCksbylmb3Iocj0wO3I8by5sZW5ndGg7cisrKWk9T3IoaSxvW3JdKTtyZXR1cm4gaX1mdW5jdGlvbiBPcihlLHQpe3ZhciBuPXQuaW5kZXhPZihcIihcIik7aWYobjwwKXJldHVybidfZihcIicrdCsnXCIpKCcrZStcIilcIjt2YXIgcj10LnNsaWNlKDAsbiksaT10LnNsaWNlKG4rMSk7cmV0dXJuJ19mKFwiJytyKydcIikoJytlKyhcIilcIiE9PWk/XCIsXCIraTppKX1mdW5jdGlvbiBTcihlLHQpe2NvbnNvbGUuZXJyb3IoXCJbVnVlIGNvbXBpbGVyXTogXCIrZSl9ZnVuY3Rpb24gVHIoZSx0KXtyZXR1cm4gZT9lLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZVt0XX0pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZX0pOltdfWZ1bmN0aW9uIEVyKGUsdCxuLHIsaSl7KGUucHJvcHN8fChlLnByb3BzPVtdKSkucHVzaChScih7bmFtZTp0LHZhbHVlOm4sZHluYW1pYzppfSxyKSksZS5wbGFpbj0hMX1mdW5jdGlvbiBOcihlLHQsbixyLGkpeyhpP2UuZHluYW1pY0F0dHJzfHwoZS5keW5hbWljQXR0cnM9W10pOmUuYXR0cnN8fChlLmF0dHJzPVtdKSkucHVzaChScih7bmFtZTp0LHZhbHVlOm4sZHluYW1pYzppfSxyKSksZS5wbGFpbj0hMX1mdW5jdGlvbiBqcihlLHQsbixyKXtlLmF0dHJzTWFwW3RdPW4sZS5hdHRyc0xpc3QucHVzaChScih7bmFtZTp0LHZhbHVlOm59LHIpKX1mdW5jdGlvbiBEcihlLHQsbixyLGksbyxhLHMpeyhlLmRpcmVjdGl2ZXN8fChlLmRpcmVjdGl2ZXM9W10pKS5wdXNoKFJyKHtuYW1lOnQscmF3TmFtZTpuLHZhbHVlOnIsYXJnOmksaXNEeW5hbWljQXJnOm8sbW9kaWZpZXJzOmF9LHMpKSxlLnBsYWluPSExfWZ1bmN0aW9uIExyKGUsdCxuKXtyZXR1cm4gbj9cIl9wKFwiK3QrJyxcIicrZSsnXCIpJzplK3R9ZnVuY3Rpb24gTXIodCxuLHIsaSxvLGEscyxjKXt2YXIgdTsoaT1pfHxlKS5yaWdodD9jP249XCIoXCIrbitcIik9PT0nY2xpY2snPydjb250ZXh0bWVudSc6KFwiK24rXCIpXCI6XCJjbGlja1wiPT09biYmKG49XCJjb250ZXh0bWVudVwiLGRlbGV0ZSBpLnJpZ2h0KTppLm1pZGRsZSYmKGM/bj1cIihcIituK1wiKT09PSdjbGljayc/J21vdXNldXAnOihcIituK1wiKVwiOlwiY2xpY2tcIj09PW4mJihuPVwibW91c2V1cFwiKSksaS5jYXB0dXJlJiYoZGVsZXRlIGkuY2FwdHVyZSxuPUxyKFwiIVwiLG4sYykpLGkub25jZSYmKGRlbGV0ZSBpLm9uY2Usbj1McihcIn5cIixuLGMpKSxpLnBhc3NpdmUmJihkZWxldGUgaS5wYXNzaXZlLG49THIoXCImXCIsbixjKSksaS5uYXRpdmU/KGRlbGV0ZSBpLm5hdGl2ZSx1PXQubmF0aXZlRXZlbnRzfHwodC5uYXRpdmVFdmVudHM9e30pKTp1PXQuZXZlbnRzfHwodC5ldmVudHM9e30pO3ZhciBsPVJyKHt2YWx1ZTpyLnRyaW0oKSxkeW5hbWljOmN9LHMpO2khPT1lJiYobC5tb2RpZmllcnM9aSk7dmFyIGY9dVtuXTtBcnJheS5pc0FycmF5KGYpP28/Zi51bnNoaWZ0KGwpOmYucHVzaChsKTp1W25dPWY/bz9bbCxmXTpbZixsXTpsLHQucGxhaW49ITF9ZnVuY3Rpb24gSXIoZSx0LG4pe3ZhciByPUZyKGUsXCI6XCIrdCl8fEZyKGUsXCJ2LWJpbmQ6XCIrdCk7aWYobnVsbCE9cilyZXR1cm4gQXIocik7aWYoITEhPT1uKXt2YXIgaT1GcihlLHQpO2lmKG51bGwhPWkpcmV0dXJuIEpTT04uc3RyaW5naWZ5KGkpfX1mdW5jdGlvbiBGcihlLHQsbil7dmFyIHI7aWYobnVsbCE9KHI9ZS5hdHRyc01hcFt0XSkpZm9yKHZhciBpPWUuYXR0cnNMaXN0LG89MCxhPWkubGVuZ3RoO288YTtvKyspaWYoaVtvXS5uYW1lPT09dCl7aS5zcGxpY2UobywxKTticmVha31yZXR1cm4gbiYmZGVsZXRlIGUuYXR0cnNNYXBbdF0scn1mdW5jdGlvbiBQcihlLHQpe2Zvcih2YXIgbj1lLmF0dHJzTGlzdCxyPTAsaT1uLmxlbmd0aDtyPGk7cisrKXt2YXIgbz1uW3JdO2lmKHQudGVzdChvLm5hbWUpKXJldHVybiBuLnNwbGljZShyLDEpLG99fWZ1bmN0aW9uIFJyKGUsdCl7cmV0dXJuIHQmJihudWxsIT10LnN0YXJ0JiYoZS5zdGFydD10LnN0YXJ0KSxudWxsIT10LmVuZCYmKGUuZW5kPXQuZW5kKSksZX1mdW5jdGlvbiBIcihlLHQsbil7dmFyIHI9bnx8e30saT1yLm51bWJlcixvPVwiJCR2XCI7ci50cmltJiYobz1cIih0eXBlb2YgJCR2ID09PSAnc3RyaW5nJz8gJCR2LnRyaW0oKTogJCR2KVwiKSxpJiYobz1cIl9uKFwiK28rXCIpXCIpO3ZhciBhPUJyKHQsbyk7ZS5tb2RlbD17dmFsdWU6XCIoXCIrdCtcIilcIixleHByZXNzaW9uOkpTT04uc3RyaW5naWZ5KHQpLGNhbGxiYWNrOlwiZnVuY3Rpb24gKCQkdikge1wiK2ErXCJ9XCJ9fWZ1bmN0aW9uIEJyKGUsdCl7dmFyIG49ZnVuY3Rpb24oZSl7aWYoZT1lLnRyaW0oKSxncj1lLmxlbmd0aCxlLmluZGV4T2YoXCJbXCIpPDB8fGUubGFzdEluZGV4T2YoXCJdXCIpPGdyLTEpcmV0dXJuKCRyPWUubGFzdEluZGV4T2YoXCIuXCIpKT4tMT97ZXhwOmUuc2xpY2UoMCwkciksa2V5OidcIicrZS5zbGljZSgkcisxKSsnXCInfTp7ZXhwOmUsa2V5Om51bGx9O19yPWUsJHI9d3I9Q3I9MDtmb3IoOyF6cigpOylWcihicj1VcigpKT9Kcihicik6OTE9PT1iciYmS3IoYnIpO3JldHVybntleHA6ZS5zbGljZSgwLHdyKSxrZXk6ZS5zbGljZSh3cisxLENyKX19KGUpO3JldHVybiBudWxsPT09bi5rZXk/ZStcIj1cIit0OlwiJHNldChcIituLmV4cCtcIiwgXCIrbi5rZXkrXCIsIFwiK3QrXCIpXCJ9ZnVuY3Rpb24gVXIoKXtyZXR1cm4gX3IuY2hhckNvZGVBdCgrKyRyKX1mdW5jdGlvbiB6cigpe3JldHVybiAkcj49Z3J9ZnVuY3Rpb24gVnIoZSl7cmV0dXJuIDM0PT09ZXx8Mzk9PT1lfWZ1bmN0aW9uIEtyKGUpe3ZhciB0PTE7Zm9yKHdyPSRyOyF6cigpOylpZihWcihlPVVyKCkpKUpyKGUpO2Vsc2UgaWYoOTE9PT1lJiZ0KyssOTM9PT1lJiZ0LS0sMD09PXQpe0NyPSRyO2JyZWFrfX1mdW5jdGlvbiBKcihlKXtmb3IodmFyIHQ9ZTshenIoKSYmKGU9VXIoKSkhPT10Oyk7fXZhciBxcixXcj1cIl9fclwiLFpyPVwiX19jXCI7ZnVuY3Rpb24gR3IoZSx0LG4pe3ZhciByPXFyO3JldHVybiBmdW5jdGlvbiBpKCl7bnVsbCE9PXQuYXBwbHkobnVsbCxhcmd1bWVudHMpJiZRcihlLGksbixyKX19dmFyIFhyPVZlJiYhKFgmJk51bWJlcihYWzFdKTw9NTMpO2Z1bmN0aW9uIFlyKGUsdCxuLHIpe2lmKFhyKXt2YXIgaT1hbixvPXQ7dD1vLl93cmFwcGVyPWZ1bmN0aW9uKGUpe2lmKGUudGFyZ2V0PT09ZS5jdXJyZW50VGFyZ2V0fHxlLnRpbWVTdGFtcD49aXx8ZS50aW1lU3RhbXA8PTB8fGUudGFyZ2V0Lm93bmVyRG9jdW1lbnQhPT1kb2N1bWVudClyZXR1cm4gby5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fXFyLmFkZEV2ZW50TGlzdGVuZXIoZSx0LFE/e2NhcHR1cmU6bixwYXNzaXZlOnJ9Om4pfWZ1bmN0aW9uIFFyKGUsdCxuLHIpeyhyfHxxcikucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLHQuX3dyYXBwZXJ8fHQsbil9ZnVuY3Rpb24gZWkoZSxyKXtpZighdChlLmRhdGEub24pfHwhdChyLmRhdGEub24pKXt2YXIgaT1yLmRhdGEub258fHt9LG89ZS5kYXRhLm9ufHx7fTtxcj1yLmVsbSxmdW5jdGlvbihlKXtpZihuKGVbV3JdKSl7dmFyIHQ9cT9cImNoYW5nZVwiOlwiaW5wdXRcIjtlW3RdPVtdLmNvbmNhdChlW1dyXSxlW3RdfHxbXSksZGVsZXRlIGVbV3JdfW4oZVtacl0pJiYoZS5jaGFuZ2U9W10uY29uY2F0KGVbWnJdLGUuY2hhbmdlfHxbXSksZGVsZXRlIGVbWnJdKX0oaSkscnQoaSxvLFlyLFFyLEdyLHIuY29udGV4dCkscXI9dm9pZCAwfX12YXIgdGksbmk9e2NyZWF0ZTplaSx1cGRhdGU6ZWl9O2Z1bmN0aW9uIHJpKGUscil7aWYoIXQoZS5kYXRhLmRvbVByb3BzKXx8IXQoci5kYXRhLmRvbVByb3BzKSl7dmFyIGksbyxhPXIuZWxtLHM9ZS5kYXRhLmRvbVByb3BzfHx7fSxjPXIuZGF0YS5kb21Qcm9wc3x8e307Zm9yKGkgaW4gbihjLl9fb2JfXykmJihjPXIuZGF0YS5kb21Qcm9wcz1BKHt9LGMpKSxzKWkgaW4gY3x8KGFbaV09XCJcIik7Zm9yKGkgaW4gYyl7aWYobz1jW2ldLFwidGV4dENvbnRlbnRcIj09PWl8fFwiaW5uZXJIVE1MXCI9PT1pKXtpZihyLmNoaWxkcmVuJiYoci5jaGlsZHJlbi5sZW5ndGg9MCksbz09PXNbaV0pY29udGludWU7MT09PWEuY2hpbGROb2Rlcy5sZW5ndGgmJmEucmVtb3ZlQ2hpbGQoYS5jaGlsZE5vZGVzWzBdKX1pZihcInZhbHVlXCI9PT1pJiZcIlBST0dSRVNTXCIhPT1hLnRhZ05hbWUpe2EuX3ZhbHVlPW87dmFyIHU9dChvKT9cIlwiOlN0cmluZyhvKTtpaShhLHUpJiYoYS52YWx1ZT11KX1lbHNlIGlmKFwiaW5uZXJIVE1MXCI9PT1pJiZxbihhLnRhZ05hbWUpJiZ0KGEuaW5uZXJIVE1MKSl7KHRpPXRpfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKS5pbm5lckhUTUw9XCI8c3ZnPlwiK28rXCI8L3N2Zz5cIjtmb3IodmFyIGw9dGkuZmlyc3RDaGlsZDthLmZpcnN0Q2hpbGQ7KWEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKTtmb3IoO2wuZmlyc3RDaGlsZDspYS5hcHBlbmRDaGlsZChsLmZpcnN0Q2hpbGQpfWVsc2UgaWYobyE9PXNbaV0pdHJ5e2FbaV09b31jYXRjaChlKXt9fX19ZnVuY3Rpb24gaWkoZSx0KXtyZXR1cm4hZS5jb21wb3NpbmcmJihcIk9QVElPTlwiPT09ZS50YWdOYW1lfHxmdW5jdGlvbihlLHQpe3ZhciBuPSEwO3RyeXtuPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPT1lfWNhdGNoKGUpe31yZXR1cm4gbiYmZS52YWx1ZSE9PXR9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7dmFyIHI9ZS52YWx1ZSxpPWUuX3ZNb2RpZmllcnM7aWYobihpKSl7aWYoaS5udW1iZXIpcmV0dXJuIGYocikhPT1mKHQpO2lmKGkudHJpbSlyZXR1cm4gci50cmltKCkhPT10LnRyaW0oKX1yZXR1cm4gciE9PXR9KGUsdCkpfXZhciBvaT17Y3JlYXRlOnJpLHVwZGF0ZTpyaX0sYWk9ZyhmdW5jdGlvbihlKXt2YXIgdD17fSxuPS86KC4rKS87cmV0dXJuIGUuc3BsaXQoLzsoPyFbXihdKlxcKSkvZykuZm9yRWFjaChmdW5jdGlvbihlKXtpZihlKXt2YXIgcj1lLnNwbGl0KG4pO3IubGVuZ3RoPjEmJih0W3JbMF0udHJpbSgpXT1yWzFdLnRyaW0oKSl9fSksdH0pO2Z1bmN0aW9uIHNpKGUpe3ZhciB0PWNpKGUuc3R5bGUpO3JldHVybiBlLnN0YXRpY1N0eWxlP0EoZS5zdGF0aWNTdHlsZSx0KTp0fWZ1bmN0aW9uIGNpKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP08oZSk6XCJzdHJpbmdcIj09dHlwZW9mIGU/YWkoZSk6ZX12YXIgdWksbGk9L14tLS8sZmk9L1xccyohaW1wb3J0YW50JC8scGk9ZnVuY3Rpb24oZSx0LG4pe2lmKGxpLnRlc3QodCkpZS5zdHlsZS5zZXRQcm9wZXJ0eSh0LG4pO2Vsc2UgaWYoZmkudGVzdChuKSllLnN0eWxlLnNldFByb3BlcnR5KEModCksbi5yZXBsYWNlKGZpLFwiXCIpLFwiaW1wb3J0YW50XCIpO2Vsc2V7dmFyIHI9dmkodCk7aWYoQXJyYXkuaXNBcnJheShuKSlmb3IodmFyIGk9MCxvPW4ubGVuZ3RoO2k8bztpKyspZS5zdHlsZVtyXT1uW2ldO2Vsc2UgZS5zdHlsZVtyXT1ufX0sZGk9W1wiV2Via2l0XCIsXCJNb3pcIixcIm1zXCJdLHZpPWcoZnVuY3Rpb24oZSl7aWYodWk9dWl8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikuc3R5bGUsXCJmaWx0ZXJcIiE9PShlPWIoZSkpJiZlIGluIHVpKXJldHVybiBlO2Zvcih2YXIgdD1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSksbj0wO248ZGkubGVuZ3RoO24rKyl7dmFyIHI9ZGlbbl0rdDtpZihyIGluIHVpKXJldHVybiByfX0pO2Z1bmN0aW9uIGhpKGUscil7dmFyIGk9ci5kYXRhLG89ZS5kYXRhO2lmKCEodChpLnN0YXRpY1N0eWxlKSYmdChpLnN0eWxlKSYmdChvLnN0YXRpY1N0eWxlKSYmdChvLnN0eWxlKSkpe3ZhciBhLHMsYz1yLmVsbSx1PW8uc3RhdGljU3R5bGUsbD1vLm5vcm1hbGl6ZWRTdHlsZXx8by5zdHlsZXx8e30sZj11fHxsLHA9Y2koci5kYXRhLnN0eWxlKXx8e307ci5kYXRhLm5vcm1hbGl6ZWRTdHlsZT1uKHAuX19vYl9fKT9BKHt9LHApOnA7dmFyIGQ9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPXt9O2lmKHQpZm9yKHZhciBpPWU7aS5jb21wb25lbnRJbnN0YW5jZTspKGk9aS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUpJiZpLmRhdGEmJihuPXNpKGkuZGF0YSkpJiZBKHIsbik7KG49c2koZS5kYXRhKSkmJkEocixuKTtmb3IodmFyIG89ZTtvPW8ucGFyZW50OylvLmRhdGEmJihuPXNpKG8uZGF0YSkpJiZBKHIsbik7cmV0dXJuIHJ9KHIsITApO2ZvcihzIGluIGYpdChkW3NdKSYmcGkoYyxzLFwiXCIpO2ZvcihzIGluIGQpKGE9ZFtzXSkhPT1mW3NdJiZwaShjLHMsbnVsbD09YT9cIlwiOmEpfX12YXIgbWk9e2NyZWF0ZTpoaSx1cGRhdGU6aGl9LHlpPS9cXHMrLztmdW5jdGlvbiBnaShlLHQpe2lmKHQmJih0PXQudHJpbSgpKSlpZihlLmNsYXNzTGlzdCl0LmluZGV4T2YoXCIgXCIpPi0xP3Quc3BsaXQoeWkpLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIGUuY2xhc3NMaXN0LmFkZCh0KX0pOmUuY2xhc3NMaXN0LmFkZCh0KTtlbHNle3ZhciBuPVwiIFwiKyhlLmdldEF0dHJpYnV0ZShcImNsYXNzXCIpfHxcIlwiKStcIiBcIjtuLmluZGV4T2YoXCIgXCIrdCtcIiBcIik8MCYmZS5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLChuK3QpLnRyaW0oKSl9fWZ1bmN0aW9uIF9pKGUsdCl7aWYodCYmKHQ9dC50cmltKCkpKWlmKGUuY2xhc3NMaXN0KXQuaW5kZXhPZihcIiBcIik+LTE/dC5zcGxpdCh5aSkuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gZS5jbGFzc0xpc3QucmVtb3ZlKHQpfSk6ZS5jbGFzc0xpc3QucmVtb3ZlKHQpLGUuY2xhc3NMaXN0Lmxlbmd0aHx8ZS5yZW1vdmVBdHRyaWJ1dGUoXCJjbGFzc1wiKTtlbHNle2Zvcih2YXIgbj1cIiBcIisoZS5nZXRBdHRyaWJ1dGUoXCJjbGFzc1wiKXx8XCJcIikrXCIgXCIscj1cIiBcIit0K1wiIFwiO24uaW5kZXhPZihyKT49MDspbj1uLnJlcGxhY2UocixcIiBcIik7KG49bi50cmltKCkpP2Uuc2V0QXR0cmlidXRlKFwiY2xhc3NcIixuKTplLnJlbW92ZUF0dHJpYnV0ZShcImNsYXNzXCIpfX1mdW5jdGlvbiBiaShlKXtpZihlKXtpZihcIm9iamVjdFwiPT10eXBlb2YgZSl7dmFyIHQ9e307cmV0dXJuITEhPT1lLmNzcyYmQSh0LCRpKGUubmFtZXx8XCJ2XCIpKSxBKHQsZSksdH1yZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT8kaShlKTp2b2lkIDB9fXZhciAkaT1nKGZ1bmN0aW9uKGUpe3JldHVybntlbnRlckNsYXNzOmUrXCItZW50ZXJcIixlbnRlclRvQ2xhc3M6ZStcIi1lbnRlci10b1wiLGVudGVyQWN0aXZlQ2xhc3M6ZStcIi1lbnRlci1hY3RpdmVcIixsZWF2ZUNsYXNzOmUrXCItbGVhdmVcIixsZWF2ZVRvQ2xhc3M6ZStcIi1sZWF2ZS10b1wiLGxlYXZlQWN0aXZlQ2xhc3M6ZStcIi1sZWF2ZS1hY3RpdmVcIn19KSx3aT16JiYhVyxDaT1cInRyYW5zaXRpb25cIix4aT1cImFuaW1hdGlvblwiLGtpPVwidHJhbnNpdGlvblwiLEFpPVwidHJhbnNpdGlvbmVuZFwiLE9pPVwiYW5pbWF0aW9uXCIsU2k9XCJhbmltYXRpb25lbmRcIjt3aSYmKHZvaWQgMD09PXdpbmRvdy5vbnRyYW5zaXRpb25lbmQmJnZvaWQgMCE9PXdpbmRvdy5vbndlYmtpdHRyYW5zaXRpb25lbmQmJihraT1cIldlYmtpdFRyYW5zaXRpb25cIixBaT1cIndlYmtpdFRyYW5zaXRpb25FbmRcIiksdm9pZCAwPT09d2luZG93Lm9uYW5pbWF0aW9uZW5kJiZ2b2lkIDAhPT13aW5kb3cub253ZWJraXRhbmltYXRpb25lbmQmJihPaT1cIldlYmtpdEFuaW1hdGlvblwiLFNpPVwid2Via2l0QW5pbWF0aW9uRW5kXCIpKTt2YXIgVGk9ej93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOnNldFRpbWVvdXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX07ZnVuY3Rpb24gRWkoZSl7VGkoZnVuY3Rpb24oKXtUaShlKX0pfWZ1bmN0aW9uIE5pKGUsdCl7dmFyIG49ZS5fdHJhbnNpdGlvbkNsYXNzZXN8fChlLl90cmFuc2l0aW9uQ2xhc3Nlcz1bXSk7bi5pbmRleE9mKHQpPDAmJihuLnB1c2godCksZ2koZSx0KSl9ZnVuY3Rpb24gamkoZSx0KXtlLl90cmFuc2l0aW9uQ2xhc3NlcyYmaChlLl90cmFuc2l0aW9uQ2xhc3Nlcyx0KSxfaShlLHQpfWZ1bmN0aW9uIERpKGUsdCxuKXt2YXIgcj1NaShlLHQpLGk9ci50eXBlLG89ci50aW1lb3V0LGE9ci5wcm9wQ291bnQ7aWYoIWkpcmV0dXJuIG4oKTt2YXIgcz1pPT09Q2k/QWk6U2ksYz0wLHU9ZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIocyxsKSxuKCl9LGw9ZnVuY3Rpb24odCl7dC50YXJnZXQ9PT1lJiYrK2M+PWEmJnUoKX07c2V0VGltZW91dChmdW5jdGlvbigpe2M8YSYmdSgpfSxvKzEpLGUuYWRkRXZlbnRMaXN0ZW5lcihzLGwpfXZhciBMaT0vXFxiKHRyYW5zZm9ybXxhbGwpKCx8JCkvO2Z1bmN0aW9uIE1pKGUsdCl7dmFyIG4scj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKSxpPShyW2tpK1wiRGVsYXlcIl18fFwiXCIpLnNwbGl0KFwiLCBcIiksbz0ocltraStcIkR1cmF0aW9uXCJdfHxcIlwiKS5zcGxpdChcIiwgXCIpLGE9SWkoaSxvKSxzPShyW09pK1wiRGVsYXlcIl18fFwiXCIpLnNwbGl0KFwiLCBcIiksYz0ocltPaStcIkR1cmF0aW9uXCJdfHxcIlwiKS5zcGxpdChcIiwgXCIpLHU9SWkocyxjKSxsPTAsZj0wO3JldHVybiB0PT09Q2k/YT4wJiYobj1DaSxsPWEsZj1vLmxlbmd0aCk6dD09PXhpP3U+MCYmKG49eGksbD11LGY9Yy5sZW5ndGgpOmY9KG49KGw9TWF0aC5tYXgoYSx1KSk+MD9hPnU/Q2k6eGk6bnVsbCk/bj09PUNpP28ubGVuZ3RoOmMubGVuZ3RoOjAse3R5cGU6bix0aW1lb3V0OmwscHJvcENvdW50OmYsaGFzVHJhbnNmb3JtOm49PT1DaSYmTGkudGVzdChyW2tpK1wiUHJvcGVydHlcIl0pfX1mdW5jdGlvbiBJaShlLHQpe2Zvcig7ZS5sZW5ndGg8dC5sZW5ndGg7KWU9ZS5jb25jYXQoZSk7cmV0dXJuIE1hdGgubWF4LmFwcGx5KG51bGwsdC5tYXAoZnVuY3Rpb24odCxuKXtyZXR1cm4gRmkodCkrRmkoZVtuXSl9KSl9ZnVuY3Rpb24gRmkoZSl7cmV0dXJuIDFlMypOdW1iZXIoZS5zbGljZSgwLC0xKS5yZXBsYWNlKFwiLFwiLFwiLlwiKSl9ZnVuY3Rpb24gUGkoZSxyKXt2YXIgaT1lLmVsbTtuKGkuX2xlYXZlQ2IpJiYoaS5fbGVhdmVDYi5jYW5jZWxsZWQ9ITAsaS5fbGVhdmVDYigpKTt2YXIgYT1iaShlLmRhdGEudHJhbnNpdGlvbik7aWYoIXQoYSkmJiFuKGkuX2VudGVyQ2IpJiYxPT09aS5ub2RlVHlwZSl7Zm9yKHZhciBzPWEuY3NzLGM9YS50eXBlLHU9YS5lbnRlckNsYXNzLGw9YS5lbnRlclRvQ2xhc3MscD1hLmVudGVyQWN0aXZlQ2xhc3MsZD1hLmFwcGVhckNsYXNzLHY9YS5hcHBlYXJUb0NsYXNzLGg9YS5hcHBlYXJBY3RpdmVDbGFzcyxtPWEuYmVmb3JlRW50ZXIseT1hLmVudGVyLGc9YS5hZnRlckVudGVyLF89YS5lbnRlckNhbmNlbGxlZCxiPWEuYmVmb3JlQXBwZWFyLCQ9YS5hcHBlYXIsdz1hLmFmdGVyQXBwZWFyLEM9YS5hcHBlYXJDYW5jZWxsZWQseD1hLmR1cmF0aW9uLGs9V3QsQT1XdC4kdm5vZGU7QSYmQS5wYXJlbnQ7KWs9QS5jb250ZXh0LEE9QS5wYXJlbnQ7dmFyIE89IWsuX2lzTW91bnRlZHx8IWUuaXNSb290SW5zZXJ0O2lmKCFPfHwkfHxcIlwiPT09JCl7dmFyIFM9TyYmZD9kOnUsVD1PJiZoP2g6cCxFPU8mJnY/djpsLE49TyYmYnx8bSxqPU8mJlwiZnVuY3Rpb25cIj09dHlwZW9mICQ/JDp5LEw9TyYmd3x8ZyxNPU8mJkN8fF8sST1mKG8oeCk/eC5lbnRlcjp4KSxGPSExIT09cyYmIVcsUD1CaShqKSxSPWkuX2VudGVyQ2I9RChmdW5jdGlvbigpe0YmJihqaShpLEUpLGppKGksVCkpLFIuY2FuY2VsbGVkPyhGJiZqaShpLFMpLE0mJk0oaSkpOkwmJkwoaSksaS5fZW50ZXJDYj1udWxsfSk7ZS5kYXRhLnNob3d8fGl0KGUsXCJpbnNlcnRcIixmdW5jdGlvbigpe3ZhciB0PWkucGFyZW50Tm9kZSxuPXQmJnQuX3BlbmRpbmcmJnQuX3BlbmRpbmdbZS5rZXldO24mJm4udGFnPT09ZS50YWcmJm4uZWxtLl9sZWF2ZUNiJiZuLmVsbS5fbGVhdmVDYigpLGomJmooaSxSKX0pLE4mJk4oaSksRiYmKE5pKGksUyksTmkoaSxUKSxFaShmdW5jdGlvbigpe2ppKGksUyksUi5jYW5jZWxsZWR8fChOaShpLEUpLFB8fChIaShJKT9zZXRUaW1lb3V0KFIsSSk6RGkoaSxjLFIpKSl9KSksZS5kYXRhLnNob3cmJihyJiZyKCksaiYmaihpLFIpKSxGfHxQfHxSKCl9fX1mdW5jdGlvbiBSaShlLHIpe3ZhciBpPWUuZWxtO24oaS5fZW50ZXJDYikmJihpLl9lbnRlckNiLmNhbmNlbGxlZD0hMCxpLl9lbnRlckNiKCkpO3ZhciBhPWJpKGUuZGF0YS50cmFuc2l0aW9uKTtpZih0KGEpfHwxIT09aS5ub2RlVHlwZSlyZXR1cm4gcigpO2lmKCFuKGkuX2xlYXZlQ2IpKXt2YXIgcz1hLmNzcyxjPWEudHlwZSx1PWEubGVhdmVDbGFzcyxsPWEubGVhdmVUb0NsYXNzLHA9YS5sZWF2ZUFjdGl2ZUNsYXNzLGQ9YS5iZWZvcmVMZWF2ZSx2PWEubGVhdmUsaD1hLmFmdGVyTGVhdmUsbT1hLmxlYXZlQ2FuY2VsbGVkLHk9YS5kZWxheUxlYXZlLGc9YS5kdXJhdGlvbixfPSExIT09cyYmIVcsYj1CaSh2KSwkPWYobyhnKT9nLmxlYXZlOmcpLHc9aS5fbGVhdmVDYj1EKGZ1bmN0aW9uKCl7aS5wYXJlbnROb2RlJiZpLnBhcmVudE5vZGUuX3BlbmRpbmcmJihpLnBhcmVudE5vZGUuX3BlbmRpbmdbZS5rZXldPW51bGwpLF8mJihqaShpLGwpLGppKGkscCkpLHcuY2FuY2VsbGVkPyhfJiZqaShpLHUpLG0mJm0oaSkpOihyKCksaCYmaChpKSksaS5fbGVhdmVDYj1udWxsfSk7eT95KEMpOkMoKX1mdW5jdGlvbiBDKCl7dy5jYW5jZWxsZWR8fCghZS5kYXRhLnNob3cmJmkucGFyZW50Tm9kZSYmKChpLnBhcmVudE5vZGUuX3BlbmRpbmd8fChpLnBhcmVudE5vZGUuX3BlbmRpbmc9e30pKVtlLmtleV09ZSksZCYmZChpKSxfJiYoTmkoaSx1KSxOaShpLHApLEVpKGZ1bmN0aW9uKCl7amkoaSx1KSx3LmNhbmNlbGxlZHx8KE5pKGksbCksYnx8KEhpKCQpP3NldFRpbWVvdXQodywkKTpEaShpLGMsdykpKX0pKSx2JiZ2KGksdyksX3x8Ynx8dygpKX19ZnVuY3Rpb24gSGkoZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGUmJiFpc05hTihlKX1mdW5jdGlvbiBCaShlKXtpZih0KGUpKXJldHVybiExO3ZhciByPWUuZm5zO3JldHVybiBuKHIpP0JpKEFycmF5LmlzQXJyYXkocik/clswXTpyKTooZS5fbGVuZ3RofHxlLmxlbmd0aCk+MX1mdW5jdGlvbiBVaShlLHQpeyEwIT09dC5kYXRhLnNob3cmJlBpKHQpfXZhciB6aT1mdW5jdGlvbihlKXt2YXIgbyxhLHM9e30sYz1lLm1vZHVsZXMsdT1lLm5vZGVPcHM7Zm9yKG89MDtvPHJyLmxlbmd0aDsrK28pZm9yKHNbcnJbb11dPVtdLGE9MDthPGMubGVuZ3RoOysrYSluKGNbYV1bcnJbb11dKSYmc1tycltvXV0ucHVzaChjW2FdW3JyW29dXSk7ZnVuY3Rpb24gbChlKXt2YXIgdD11LnBhcmVudE5vZGUoZSk7bih0KSYmdS5yZW1vdmVDaGlsZCh0LGUpfWZ1bmN0aW9uIGYoZSx0LGksbyxhLGMsbCl7aWYobihlLmVsbSkmJm4oYykmJihlPWNbbF09bWUoZSkpLGUuaXNSb290SW5zZXJ0PSFhLCFmdW5jdGlvbihlLHQsaSxvKXt2YXIgYT1lLmRhdGE7aWYobihhKSl7dmFyIGM9bihlLmNvbXBvbmVudEluc3RhbmNlKSYmYS5rZWVwQWxpdmU7aWYobihhPWEuaG9vaykmJm4oYT1hLmluaXQpJiZhKGUsITEpLG4oZS5jb21wb25lbnRJbnN0YW5jZSkpcmV0dXJuIGQoZSx0KSx2KGksZS5lbG0sbykscihjKSYmZnVuY3Rpb24oZSx0LHIsaSl7Zm9yKHZhciBvLGE9ZTthLmNvbXBvbmVudEluc3RhbmNlOylpZihhPWEuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlLG4obz1hLmRhdGEpJiZuKG89by50cmFuc2l0aW9uKSl7Zm9yKG89MDtvPHMuYWN0aXZhdGUubGVuZ3RoOysrbylzLmFjdGl2YXRlW29dKG5yLGEpO3QucHVzaChhKTticmVha312KHIsZS5lbG0saSl9KGUsdCxpLG8pLCEwfX0oZSx0LGksbykpe3ZhciBmPWUuZGF0YSxwPWUuY2hpbGRyZW4sbT1lLnRhZztuKG0pPyhlLmVsbT1lLm5zP3UuY3JlYXRlRWxlbWVudE5TKGUubnMsbSk6dS5jcmVhdGVFbGVtZW50KG0sZSksZyhlKSxoKGUscCx0KSxuKGYpJiZ5KGUsdCksdihpLGUuZWxtLG8pKTpyKGUuaXNDb21tZW50KT8oZS5lbG09dS5jcmVhdGVDb21tZW50KGUudGV4dCksdihpLGUuZWxtLG8pKTooZS5lbG09dS5jcmVhdGVUZXh0Tm9kZShlLnRleHQpLHYoaSxlLmVsbSxvKSl9fWZ1bmN0aW9uIGQoZSx0KXtuKGUuZGF0YS5wZW5kaW5nSW5zZXJ0KSYmKHQucHVzaC5hcHBseSh0LGUuZGF0YS5wZW5kaW5nSW5zZXJ0KSxlLmRhdGEucGVuZGluZ0luc2VydD1udWxsKSxlLmVsbT1lLmNvbXBvbmVudEluc3RhbmNlLiRlbCxtKGUpPyh5KGUsdCksZyhlKSk6KHRyKGUpLHQucHVzaChlKSl9ZnVuY3Rpb24gdihlLHQscil7bihlKSYmKG4ocik/dS5wYXJlbnROb2RlKHIpPT09ZSYmdS5pbnNlcnRCZWZvcmUoZSx0LHIpOnUuYXBwZW5kQ2hpbGQoZSx0KSl9ZnVuY3Rpb24gaChlLHQsbil7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIHI9MDtyPHQubGVuZ3RoOysrcilmKHRbcl0sbixlLmVsbSxudWxsLCEwLHQscik7ZWxzZSBpKGUudGV4dCkmJnUuYXBwZW5kQ2hpbGQoZS5lbG0sdS5jcmVhdGVUZXh0Tm9kZShTdHJpbmcoZS50ZXh0KSkpfWZ1bmN0aW9uIG0oZSl7Zm9yKDtlLmNvbXBvbmVudEluc3RhbmNlOyllPWUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO3JldHVybiBuKGUudGFnKX1mdW5jdGlvbiB5KGUsdCl7Zm9yKHZhciByPTA7cjxzLmNyZWF0ZS5sZW5ndGg7KytyKXMuY3JlYXRlW3JdKG5yLGUpO24obz1lLmRhdGEuaG9vaykmJihuKG8uY3JlYXRlKSYmby5jcmVhdGUobnIsZSksbihvLmluc2VydCkmJnQucHVzaChlKSl9ZnVuY3Rpb24gZyhlKXt2YXIgdDtpZihuKHQ9ZS5mblNjb3BlSWQpKXUuc2V0U3R5bGVTY29wZShlLmVsbSx0KTtlbHNlIGZvcih2YXIgcj1lO3I7KW4odD1yLmNvbnRleHQpJiZuKHQ9dC4kb3B0aW9ucy5fc2NvcGVJZCkmJnUuc2V0U3R5bGVTY29wZShlLmVsbSx0KSxyPXIucGFyZW50O24odD1XdCkmJnQhPT1lLmNvbnRleHQmJnQhPT1lLmZuQ29udGV4dCYmbih0PXQuJG9wdGlvbnMuX3Njb3BlSWQpJiZ1LnNldFN0eWxlU2NvcGUoZS5lbG0sdCl9ZnVuY3Rpb24gXyhlLHQsbixyLGksbyl7Zm9yKDtyPD1pOysrcilmKG5bcl0sbyxlLHQsITEsbixyKX1mdW5jdGlvbiBiKGUpe3ZhciB0LHIsaT1lLmRhdGE7aWYobihpKSlmb3Iobih0PWkuaG9vaykmJm4odD10LmRlc3Ryb3kpJiZ0KGUpLHQ9MDt0PHMuZGVzdHJveS5sZW5ndGg7Kyt0KXMuZGVzdHJveVt0XShlKTtpZihuKHQ9ZS5jaGlsZHJlbikpZm9yKHI9MDtyPGUuY2hpbGRyZW4ubGVuZ3RoOysrciliKGUuY2hpbGRyZW5bcl0pfWZ1bmN0aW9uICQoZSx0LHIpe2Zvcig7dDw9cjsrK3Qpe3ZhciBpPWVbdF07bihpKSYmKG4oaS50YWcpPyh3KGkpLGIoaSkpOmwoaS5lbG0pKX19ZnVuY3Rpb24gdyhlLHQpe2lmKG4odCl8fG4oZS5kYXRhKSl7dmFyIHIsaT1zLnJlbW92ZS5sZW5ndGgrMTtmb3Iobih0KT90Lmxpc3RlbmVycys9aTp0PWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbigpezA9PS0tbi5saXN0ZW5lcnMmJmwoZSl9cmV0dXJuIG4ubGlzdGVuZXJzPXQsbn0oZS5lbG0saSksbihyPWUuY29tcG9uZW50SW5zdGFuY2UpJiZuKHI9ci5fdm5vZGUpJiZuKHIuZGF0YSkmJncocix0KSxyPTA7cjxzLnJlbW92ZS5sZW5ndGg7KytyKXMucmVtb3ZlW3JdKGUsdCk7bihyPWUuZGF0YS5ob29rKSYmbihyPXIucmVtb3ZlKT9yKGUsdCk6dCgpfWVsc2UgbChlLmVsbSl9ZnVuY3Rpb24gQyhlLHQscixpKXtmb3IodmFyIG89cjtvPGk7bysrKXt2YXIgYT10W29dO2lmKG4oYSkmJmlyKGUsYSkpcmV0dXJuIG99fWZ1bmN0aW9uIHgoZSxpLG8sYSxjLGwpe2lmKGUhPT1pKXtuKGkuZWxtKSYmbihhKSYmKGk9YVtjXT1tZShpKSk7dmFyIHA9aS5lbG09ZS5lbG07aWYocihlLmlzQXN5bmNQbGFjZWhvbGRlcikpbihpLmFzeW5jRmFjdG9yeS5yZXNvbHZlZCk/TyhlLmVsbSxpLG8pOmkuaXNBc3luY1BsYWNlaG9sZGVyPSEwO2Vsc2UgaWYocihpLmlzU3RhdGljKSYmcihlLmlzU3RhdGljKSYmaS5rZXk9PT1lLmtleSYmKHIoaS5pc0Nsb25lZCl8fHIoaS5pc09uY2UpKSlpLmNvbXBvbmVudEluc3RhbmNlPWUuY29tcG9uZW50SW5zdGFuY2U7ZWxzZXt2YXIgZCx2PWkuZGF0YTtuKHYpJiZuKGQ9di5ob29rKSYmbihkPWQucHJlcGF0Y2gpJiZkKGUsaSk7dmFyIGg9ZS5jaGlsZHJlbix5PWkuY2hpbGRyZW47aWYobih2KSYmbShpKSl7Zm9yKGQ9MDtkPHMudXBkYXRlLmxlbmd0aDsrK2Qpcy51cGRhdGVbZF0oZSxpKTtuKGQ9di5ob29rKSYmbihkPWQudXBkYXRlKSYmZChlLGkpfXQoaS50ZXh0KT9uKGgpJiZuKHkpP2ghPT15JiZmdW5jdGlvbihlLHIsaSxvLGEpe2Zvcih2YXIgcyxjLGwscD0wLGQ9MCx2PXIubGVuZ3RoLTEsaD1yWzBdLG09clt2XSx5PWkubGVuZ3RoLTEsZz1pWzBdLGI9aVt5XSx3PSFhO3A8PXYmJmQ8PXk7KXQoaCk/aD1yWysrcF06dChtKT9tPXJbLS12XTppcihoLGcpPyh4KGgsZyxvLGksZCksaD1yWysrcF0sZz1pWysrZF0pOmlyKG0sYik/KHgobSxiLG8saSx5KSxtPXJbLS12XSxiPWlbLS15XSk6aXIoaCxiKT8oeChoLGIsbyxpLHkpLHcmJnUuaW5zZXJ0QmVmb3JlKGUsaC5lbG0sdS5uZXh0U2libGluZyhtLmVsbSkpLGg9clsrK3BdLGI9aVstLXldKTppcihtLGcpPyh4KG0sZyxvLGksZCksdyYmdS5pbnNlcnRCZWZvcmUoZSxtLmVsbSxoLmVsbSksbT1yWy0tdl0sZz1pWysrZF0pOih0KHMpJiYocz1vcihyLHAsdikpLHQoYz1uKGcua2V5KT9zW2cua2V5XTpDKGcscixwLHYpKT9mKGcsbyxlLGguZWxtLCExLGksZCk6aXIobD1yW2NdLGcpPyh4KGwsZyxvLGksZCkscltjXT12b2lkIDAsdyYmdS5pbnNlcnRCZWZvcmUoZSxsLmVsbSxoLmVsbSkpOmYoZyxvLGUsaC5lbG0sITEsaSxkKSxnPWlbKytkXSk7cD52P18oZSx0KGlbeSsxXSk/bnVsbDppW3krMV0uZWxtLGksZCx5LG8pOmQ+eSYmJChyLHAsdil9KHAsaCx5LG8sbCk6bih5KT8obihlLnRleHQpJiZ1LnNldFRleHRDb250ZW50KHAsXCJcIiksXyhwLG51bGwseSwwLHkubGVuZ3RoLTEsbykpOm4oaCk/JChoLDAsaC5sZW5ndGgtMSk6bihlLnRleHQpJiZ1LnNldFRleHRDb250ZW50KHAsXCJcIik6ZS50ZXh0IT09aS50ZXh0JiZ1LnNldFRleHRDb250ZW50KHAsaS50ZXh0KSxuKHYpJiZuKGQ9di5ob29rKSYmbihkPWQucG9zdHBhdGNoKSYmZChlLGkpfX19ZnVuY3Rpb24gayhlLHQsaSl7aWYocihpKSYmbihlLnBhcmVudCkpZS5wYXJlbnQuZGF0YS5wZW5kaW5nSW5zZXJ0PXQ7ZWxzZSBmb3IodmFyIG89MDtvPHQubGVuZ3RoOysrbyl0W29dLmRhdGEuaG9vay5pbnNlcnQodFtvXSl9dmFyIEE9cChcImF0dHJzLGNsYXNzLHN0YXRpY0NsYXNzLHN0YXRpY1N0eWxlLGtleVwiKTtmdW5jdGlvbiBPKGUsdCxpLG8pe3ZhciBhLHM9dC50YWcsYz10LmRhdGEsdT10LmNoaWxkcmVuO2lmKG89b3x8YyYmYy5wcmUsdC5lbG09ZSxyKHQuaXNDb21tZW50KSYmbih0LmFzeW5jRmFjdG9yeSkpcmV0dXJuIHQuaXNBc3luY1BsYWNlaG9sZGVyPSEwLCEwO2lmKG4oYykmJihuKGE9Yy5ob29rKSYmbihhPWEuaW5pdCkmJmEodCwhMCksbihhPXQuY29tcG9uZW50SW5zdGFuY2UpKSlyZXR1cm4gZCh0LGkpLCEwO2lmKG4ocykpe2lmKG4odSkpaWYoZS5oYXNDaGlsZE5vZGVzKCkpaWYobihhPWMpJiZuKGE9YS5kb21Qcm9wcykmJm4oYT1hLmlubmVySFRNTCkpe2lmKGEhPT1lLmlubmVySFRNTClyZXR1cm4hMX1lbHNle2Zvcih2YXIgbD0hMCxmPWUuZmlyc3RDaGlsZCxwPTA7cDx1Lmxlbmd0aDtwKyspe2lmKCFmfHwhTyhmLHVbcF0saSxvKSl7bD0hMTticmVha31mPWYubmV4dFNpYmxpbmd9aWYoIWx8fGYpcmV0dXJuITF9ZWxzZSBoKHQsdSxpKTtpZihuKGMpKXt2YXIgdj0hMTtmb3IodmFyIG0gaW4gYylpZighQShtKSl7dj0hMCx5KHQsaSk7YnJlYWt9IXYmJmMuY2xhc3MmJmV0KGMuY2xhc3MpfX1lbHNlIGUuZGF0YSE9PXQudGV4dCYmKGUuZGF0YT10LnRleHQpO3JldHVybiEwfXJldHVybiBmdW5jdGlvbihlLGksbyxhKXtpZighdChpKSl7dmFyIGMsbD0hMSxwPVtdO2lmKHQoZSkpbD0hMCxmKGkscCk7ZWxzZXt2YXIgZD1uKGUubm9kZVR5cGUpO2lmKCFkJiZpcihlLGkpKXgoZSxpLHAsbnVsbCxudWxsLGEpO2Vsc2V7aWYoZCl7aWYoMT09PWUubm9kZVR5cGUmJmUuaGFzQXR0cmlidXRlKEwpJiYoZS5yZW1vdmVBdHRyaWJ1dGUoTCksbz0hMCkscihvKSYmTyhlLGkscCkpcmV0dXJuIGsoaSxwLCEwKSxlO2M9ZSxlPW5ldyBwZSh1LnRhZ05hbWUoYykudG9Mb3dlckNhc2UoKSx7fSxbXSx2b2lkIDAsYyl9dmFyIHY9ZS5lbG0saD11LnBhcmVudE5vZGUodik7aWYoZihpLHAsdi5fbGVhdmVDYj9udWxsOmgsdS5uZXh0U2libGluZyh2KSksbihpLnBhcmVudCkpZm9yKHZhciB5PWkucGFyZW50LGc9bShpKTt5Oyl7Zm9yKHZhciBfPTA7XzxzLmRlc3Ryb3kubGVuZ3RoOysrXylzLmRlc3Ryb3lbX10oeSk7aWYoeS5lbG09aS5lbG0sZyl7Zm9yKHZhciB3PTA7dzxzLmNyZWF0ZS5sZW5ndGg7Kyt3KXMuY3JlYXRlW3ddKG5yLHkpO3ZhciBDPXkuZGF0YS5ob29rLmluc2VydDtpZihDLm1lcmdlZClmb3IodmFyIEE9MTtBPEMuZm5zLmxlbmd0aDtBKyspQy5mbnNbQV0oKX1lbHNlIHRyKHkpO3k9eS5wYXJlbnR9bihoKT8kKFtlXSwwLDApOm4oZS50YWcpJiZiKGUpfX1yZXR1cm4gayhpLHAsbCksaS5lbG19bihlKSYmYihlKX19KHtub2RlT3BzOlFuLG1vZHVsZXM6W21yLHhyLG5pLG9pLG1pLHo/e2NyZWF0ZTpVaSxhY3RpdmF0ZTpVaSxyZW1vdmU6ZnVuY3Rpb24oZSx0KXshMCE9PWUuZGF0YS5zaG93P1JpKGUsdCk6dCgpfX06e31dLmNvbmNhdChwcil9KTtXJiZkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwic2VsZWN0aW9uY2hhbmdlXCIsZnVuY3Rpb24oKXt2YXIgZT1kb2N1bWVudC5hY3RpdmVFbGVtZW50O2UmJmUudm1vZGVsJiZYaShlLFwiaW5wdXRcIil9KTt2YXIgVmk9e2luc2VydGVkOmZ1bmN0aW9uKGUsdCxuLHIpe1wic2VsZWN0XCI9PT1uLnRhZz8oci5lbG0mJiFyLmVsbS5fdk9wdGlvbnM/aXQobixcInBvc3RwYXRjaFwiLGZ1bmN0aW9uKCl7VmkuY29tcG9uZW50VXBkYXRlZChlLHQsbil9KTpLaShlLHQsbi5jb250ZXh0KSxlLl92T3B0aW9ucz1bXS5tYXAuY2FsbChlLm9wdGlvbnMsV2kpKTooXCJ0ZXh0YXJlYVwiPT09bi50YWd8fFhuKGUudHlwZSkpJiYoZS5fdk1vZGlmaWVycz10Lm1vZGlmaWVycyx0Lm1vZGlmaWVycy5sYXp5fHwoZS5hZGRFdmVudExpc3RlbmVyKFwiY29tcG9zaXRpb25zdGFydFwiLFppKSxlLmFkZEV2ZW50TGlzdGVuZXIoXCJjb21wb3NpdGlvbmVuZFwiLEdpKSxlLmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIixHaSksVyYmKGUudm1vZGVsPSEwKSkpfSxjb21wb25lbnRVcGRhdGVkOmZ1bmN0aW9uKGUsdCxuKXtpZihcInNlbGVjdFwiPT09bi50YWcpe0tpKGUsdCxuLmNvbnRleHQpO3ZhciByPWUuX3ZPcHRpb25zLGk9ZS5fdk9wdGlvbnM9W10ubWFwLmNhbGwoZS5vcHRpb25zLFdpKTtpZihpLnNvbWUoZnVuY3Rpb24oZSx0KXtyZXR1cm4hTihlLHJbdF0pfSkpKGUubXVsdGlwbGU/dC52YWx1ZS5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiBxaShlLGkpfSk6dC52YWx1ZSE9PXQub2xkVmFsdWUmJnFpKHQudmFsdWUsaSkpJiZYaShlLFwiY2hhbmdlXCIpfX19O2Z1bmN0aW9uIEtpKGUsdCxuKXtKaShlLHQsbiksKHF8fFopJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7SmkoZSx0LG4pfSwwKX1mdW5jdGlvbiBKaShlLHQsbil7dmFyIHI9dC52YWx1ZSxpPWUubXVsdGlwbGU7aWYoIWl8fEFycmF5LmlzQXJyYXkocikpe2Zvcih2YXIgbyxhLHM9MCxjPWUub3B0aW9ucy5sZW5ndGg7czxjO3MrKylpZihhPWUub3B0aW9uc1tzXSxpKW89aihyLFdpKGEpKT4tMSxhLnNlbGVjdGVkIT09byYmKGEuc2VsZWN0ZWQ9byk7ZWxzZSBpZihOKFdpKGEpLHIpKXJldHVybiB2b2lkKGUuc2VsZWN0ZWRJbmRleCE9PXMmJihlLnNlbGVjdGVkSW5kZXg9cykpO2l8fChlLnNlbGVjdGVkSW5kZXg9LTEpfX1mdW5jdGlvbiBxaShlLHQpe3JldHVybiB0LmV2ZXJ5KGZ1bmN0aW9uKHQpe3JldHVybiFOKHQsZSl9KX1mdW5jdGlvbiBXaShlKXtyZXR1cm5cIl92YWx1ZVwiaW4gZT9lLl92YWx1ZTplLnZhbHVlfWZ1bmN0aW9uIFppKGUpe2UudGFyZ2V0LmNvbXBvc2luZz0hMH1mdW5jdGlvbiBHaShlKXtlLnRhcmdldC5jb21wb3NpbmcmJihlLnRhcmdldC5jb21wb3Npbmc9ITEsWGkoZS50YXJnZXQsXCJpbnB1dFwiKSl9ZnVuY3Rpb24gWGkoZSx0KXt2YXIgbj1kb2N1bWVudC5jcmVhdGVFdmVudChcIkhUTUxFdmVudHNcIik7bi5pbml0RXZlbnQodCwhMCwhMCksZS5kaXNwYXRjaEV2ZW50KG4pfWZ1bmN0aW9uIFlpKGUpe3JldHVybiFlLmNvbXBvbmVudEluc3RhbmNlfHxlLmRhdGEmJmUuZGF0YS50cmFuc2l0aW9uP2U6WWkoZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUpfXZhciBRaT17bW9kZWw6Vmksc2hvdzp7YmluZDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dC52YWx1ZSxpPShuPVlpKG4pKS5kYXRhJiZuLmRhdGEudHJhbnNpdGlvbixvPWUuX192T3JpZ2luYWxEaXNwbGF5PVwibm9uZVwiPT09ZS5zdHlsZS5kaXNwbGF5P1wiXCI6ZS5zdHlsZS5kaXNwbGF5O3ImJmk/KG4uZGF0YS5zaG93PSEwLFBpKG4sZnVuY3Rpb24oKXtlLnN0eWxlLmRpc3BsYXk9b30pKTplLnN0eWxlLmRpc3BsYXk9cj9vOlwibm9uZVwifSx1cGRhdGU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQudmFsdWU7IXIhPSF0Lm9sZFZhbHVlJiYoKG49WWkobikpLmRhdGEmJm4uZGF0YS50cmFuc2l0aW9uPyhuLmRhdGEuc2hvdz0hMCxyP1BpKG4sZnVuY3Rpb24oKXtlLnN0eWxlLmRpc3BsYXk9ZS5fX3ZPcmlnaW5hbERpc3BsYXl9KTpSaShuLGZ1bmN0aW9uKCl7ZS5zdHlsZS5kaXNwbGF5PVwibm9uZVwifSkpOmUuc3R5bGUuZGlzcGxheT1yP2UuX192T3JpZ2luYWxEaXNwbGF5Olwibm9uZVwiKX0sdW5iaW5kOmZ1bmN0aW9uKGUsdCxuLHIsaSl7aXx8KGUuc3R5bGUuZGlzcGxheT1lLl9fdk9yaWdpbmFsRGlzcGxheSl9fX0sZW89e25hbWU6U3RyaW5nLGFwcGVhcjpCb29sZWFuLGNzczpCb29sZWFuLG1vZGU6U3RyaW5nLHR5cGU6U3RyaW5nLGVudGVyQ2xhc3M6U3RyaW5nLGxlYXZlQ2xhc3M6U3RyaW5nLGVudGVyVG9DbGFzczpTdHJpbmcsbGVhdmVUb0NsYXNzOlN0cmluZyxlbnRlckFjdGl2ZUNsYXNzOlN0cmluZyxsZWF2ZUFjdGl2ZUNsYXNzOlN0cmluZyxhcHBlYXJDbGFzczpTdHJpbmcsYXBwZWFyQWN0aXZlQ2xhc3M6U3RyaW5nLGFwcGVhclRvQ2xhc3M6U3RyaW5nLGR1cmF0aW9uOltOdW1iZXIsU3RyaW5nLE9iamVjdF19O2Z1bmN0aW9uIHRvKGUpe3ZhciB0PWUmJmUuY29tcG9uZW50T3B0aW9ucztyZXR1cm4gdCYmdC5DdG9yLm9wdGlvbnMuYWJzdHJhY3Q/dG8oenQodC5jaGlsZHJlbikpOmV9ZnVuY3Rpb24gbm8oZSl7dmFyIHQ9e30sbj1lLiRvcHRpb25zO2Zvcih2YXIgciBpbiBuLnByb3BzRGF0YSl0W3JdPWVbcl07dmFyIGk9bi5fcGFyZW50TGlzdGVuZXJzO2Zvcih2YXIgbyBpbiBpKXRbYihvKV09aVtvXTtyZXR1cm4gdH1mdW5jdGlvbiBybyhlLHQpe2lmKC9cXGQta2VlcC1hbGl2ZSQvLnRlc3QodC50YWcpKXJldHVybiBlKFwia2VlcC1hbGl2ZVwiLHtwcm9wczp0LmNvbXBvbmVudE9wdGlvbnMucHJvcHNEYXRhfSl9dmFyIGlvPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRhZ3x8VXQoZSl9LG9vPWZ1bmN0aW9uKGUpe3JldHVyblwic2hvd1wiPT09ZS5uYW1lfSxhbz17bmFtZTpcInRyYW5zaXRpb25cIixwcm9wczplbyxhYnN0cmFjdDohMCxyZW5kZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXRoaXMuJHNsb3RzLmRlZmF1bHQ7aWYobiYmKG49bi5maWx0ZXIoaW8pKS5sZW5ndGgpe3ZhciByPXRoaXMubW9kZSxvPW5bMF07aWYoZnVuY3Rpb24oZSl7Zm9yKDtlPWUucGFyZW50OylpZihlLmRhdGEudHJhbnNpdGlvbilyZXR1cm4hMH0odGhpcy4kdm5vZGUpKXJldHVybiBvO3ZhciBhPXRvKG8pO2lmKCFhKXJldHVybiBvO2lmKHRoaXMuX2xlYXZpbmcpcmV0dXJuIHJvKGUsbyk7dmFyIHM9XCJfX3RyYW5zaXRpb24tXCIrdGhpcy5fdWlkK1wiLVwiO2Eua2V5PW51bGw9PWEua2V5P2EuaXNDb21tZW50P3MrXCJjb21tZW50XCI6cythLnRhZzppKGEua2V5KT8wPT09U3RyaW5nKGEua2V5KS5pbmRleE9mKHMpP2Eua2V5OnMrYS5rZXk6YS5rZXk7dmFyIGM9KGEuZGF0YXx8KGEuZGF0YT17fSkpLnRyYW5zaXRpb249bm8odGhpcyksdT10aGlzLl92bm9kZSxsPXRvKHUpO2lmKGEuZGF0YS5kaXJlY3RpdmVzJiZhLmRhdGEuZGlyZWN0aXZlcy5zb21lKG9vKSYmKGEuZGF0YS5zaG93PSEwKSxsJiZsLmRhdGEmJiFmdW5jdGlvbihlLHQpe3JldHVybiB0LmtleT09PWUua2V5JiZ0LnRhZz09PWUudGFnfShhLGwpJiYhVXQobCkmJighbC5jb21wb25lbnRJbnN0YW5jZXx8IWwuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlLmlzQ29tbWVudCkpe3ZhciBmPWwuZGF0YS50cmFuc2l0aW9uPUEoe30sYyk7aWYoXCJvdXQtaW5cIj09PXIpcmV0dXJuIHRoaXMuX2xlYXZpbmc9ITAsaXQoZixcImFmdGVyTGVhdmVcIixmdW5jdGlvbigpe3QuX2xlYXZpbmc9ITEsdC4kZm9yY2VVcGRhdGUoKX0pLHJvKGUsbyk7aWYoXCJpbi1vdXRcIj09PXIpe2lmKFV0KGEpKXJldHVybiB1O3ZhciBwLGQ9ZnVuY3Rpb24oKXtwKCl9O2l0KGMsXCJhZnRlckVudGVyXCIsZCksaXQoYyxcImVudGVyQ2FuY2VsbGVkXCIsZCksaXQoZixcImRlbGF5TGVhdmVcIixmdW5jdGlvbihlKXtwPWV9KX19cmV0dXJuIG99fX0sc289QSh7dGFnOlN0cmluZyxtb3ZlQ2xhc3M6U3RyaW5nfSxlbyk7ZnVuY3Rpb24gY28oZSl7ZS5lbG0uX21vdmVDYiYmZS5lbG0uX21vdmVDYigpLGUuZWxtLl9lbnRlckNiJiZlLmVsbS5fZW50ZXJDYigpfWZ1bmN0aW9uIHVvKGUpe2UuZGF0YS5uZXdQb3M9ZS5lbG0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9ZnVuY3Rpb24gbG8oZSl7dmFyIHQ9ZS5kYXRhLnBvcyxuPWUuZGF0YS5uZXdQb3Mscj10LmxlZnQtbi5sZWZ0LGk9dC50b3Atbi50b3A7aWYocnx8aSl7ZS5kYXRhLm1vdmVkPSEwO3ZhciBvPWUuZWxtLnN0eWxlO28udHJhbnNmb3JtPW8uV2Via2l0VHJhbnNmb3JtPVwidHJhbnNsYXRlKFwiK3IrXCJweCxcIitpK1wicHgpXCIsby50cmFuc2l0aW9uRHVyYXRpb249XCIwc1wifX1kZWxldGUgc28ubW9kZTt2YXIgZm89e1RyYW5zaXRpb246YW8sVHJhbnNpdGlvbkdyb3VwOntwcm9wczpzbyxiZWZvcmVNb3VudDpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLl91cGRhdGU7dGhpcy5fdXBkYXRlPWZ1bmN0aW9uKG4scil7dmFyIGk9WnQoZSk7ZS5fX3BhdGNoX18oZS5fdm5vZGUsZS5rZXB0LCExLCEwKSxlLl92bm9kZT1lLmtlcHQsaSgpLHQuY2FsbChlLG4scil9fSxyZW5kZXI6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudGFnfHx0aGlzLiR2bm9kZS5kYXRhLnRhZ3x8XCJzcGFuXCIsbj1PYmplY3QuY3JlYXRlKG51bGwpLHI9dGhpcy5wcmV2Q2hpbGRyZW49dGhpcy5jaGlsZHJlbixpPXRoaXMuJHNsb3RzLmRlZmF1bHR8fFtdLG89dGhpcy5jaGlsZHJlbj1bXSxhPW5vKHRoaXMpLHM9MDtzPGkubGVuZ3RoO3MrKyl7dmFyIGM9aVtzXTtjLnRhZyYmbnVsbCE9Yy5rZXkmJjAhPT1TdHJpbmcoYy5rZXkpLmluZGV4T2YoXCJfX3ZsaXN0XCIpJiYoby5wdXNoKGMpLG5bYy5rZXldPWMsKGMuZGF0YXx8KGMuZGF0YT17fSkpLnRyYW5zaXRpb249YSl9aWYocil7Zm9yKHZhciB1PVtdLGw9W10sZj0wO2Y8ci5sZW5ndGg7ZisrKXt2YXIgcD1yW2ZdO3AuZGF0YS50cmFuc2l0aW9uPWEscC5kYXRhLnBvcz1wLmVsbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuW3Aua2V5XT91LnB1c2gocCk6bC5wdXNoKHApfXRoaXMua2VwdD1lKHQsbnVsbCx1KSx0aGlzLnJlbW92ZWQ9bH1yZXR1cm4gZSh0LG51bGwsbyl9LHVwZGF0ZWQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByZXZDaGlsZHJlbix0PXRoaXMubW92ZUNsYXNzfHwodGhpcy5uYW1lfHxcInZcIikrXCItbW92ZVwiO2UubGVuZ3RoJiZ0aGlzLmhhc01vdmUoZVswXS5lbG0sdCkmJihlLmZvckVhY2goY28pLGUuZm9yRWFjaCh1byksZS5mb3JFYWNoKGxvKSx0aGlzLl9yZWZsb3c9ZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQsZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKGUuZGF0YS5tb3ZlZCl7dmFyIG49ZS5lbG0scj1uLnN0eWxlO05pKG4sdCksci50cmFuc2Zvcm09ci5XZWJraXRUcmFuc2Zvcm09ci50cmFuc2l0aW9uRHVyYXRpb249XCJcIixuLmFkZEV2ZW50TGlzdGVuZXIoQWksbi5fbW92ZUNiPWZ1bmN0aW9uIGUocil7ciYmci50YXJnZXQhPT1ufHxyJiYhL3RyYW5zZm9ybSQvLnRlc3Qoci5wcm9wZXJ0eU5hbWUpfHwobi5yZW1vdmVFdmVudExpc3RlbmVyKEFpLGUpLG4uX21vdmVDYj1udWxsLGppKG4sdCkpfSl9fSkpfSxtZXRob2RzOntoYXNNb3ZlOmZ1bmN0aW9uKGUsdCl7aWYoIXdpKXJldHVybiExO2lmKHRoaXMuX2hhc01vdmUpcmV0dXJuIHRoaXMuX2hhc01vdmU7dmFyIG49ZS5jbG9uZU5vZGUoKTtlLl90cmFuc2l0aW9uQ2xhc3NlcyYmZS5fdHJhbnNpdGlvbkNsYXNzZXMuZm9yRWFjaChmdW5jdGlvbihlKXtfaShuLGUpfSksZ2kobix0KSxuLnN0eWxlLmRpc3BsYXk9XCJub25lXCIsdGhpcy4kZWwuYXBwZW5kQ2hpbGQobik7dmFyIHI9TWkobik7cmV0dXJuIHRoaXMuJGVsLnJlbW92ZUNoaWxkKG4pLHRoaXMuX2hhc01vdmU9ci5oYXNUcmFuc2Zvcm19fX19O3duLmNvbmZpZy5tdXN0VXNlUHJvcD1qbix3bi5jb25maWcuaXNSZXNlcnZlZFRhZz1Xbix3bi5jb25maWcuaXNSZXNlcnZlZEF0dHI9RW4sd24uY29uZmlnLmdldFRhZ05hbWVzcGFjZT1abix3bi5jb25maWcuaXNVbmtub3duRWxlbWVudD1mdW5jdGlvbihlKXtpZigheilyZXR1cm4hMDtpZihXbihlKSlyZXR1cm4hMTtpZihlPWUudG9Mb3dlckNhc2UoKSxudWxsIT1HbltlXSlyZXR1cm4gR25bZV07dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKTtyZXR1cm4gZS5pbmRleE9mKFwiLVwiKT4tMT9HbltlXT10LmNvbnN0cnVjdG9yPT09d2luZG93LkhUTUxVbmtub3duRWxlbWVudHx8dC5jb25zdHJ1Y3Rvcj09PXdpbmRvdy5IVE1MRWxlbWVudDpHbltlXT0vSFRNTFVua25vd25FbGVtZW50Ly50ZXN0KHQudG9TdHJpbmcoKSl9LEEod24ub3B0aW9ucy5kaXJlY3RpdmVzLFFpKSxBKHduLm9wdGlvbnMuY29tcG9uZW50cyxmbyksd24ucHJvdG90eXBlLl9fcGF0Y2hfXz16P3ppOlMsd24ucHJvdG90eXBlLiRtb3VudD1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihlLHQsbil7dmFyIHI7cmV0dXJuIGUuJGVsPXQsZS4kb3B0aW9ucy5yZW5kZXJ8fChlLiRvcHRpb25zLnJlbmRlcj12ZSksWXQoZSxcImJlZm9yZU1vdW50XCIpLHI9ZnVuY3Rpb24oKXtlLl91cGRhdGUoZS5fcmVuZGVyKCksbil9LG5ldyBmbihlLHIsUyx7YmVmb3JlOmZ1bmN0aW9uKCl7ZS5faXNNb3VudGVkJiYhZS5faXNEZXN0cm95ZWQmJll0KGUsXCJiZWZvcmVVcGRhdGVcIil9fSwhMCksbj0hMSxudWxsPT1lLiR2bm9kZSYmKGUuX2lzTW91bnRlZD0hMCxZdChlLFwibW91bnRlZFwiKSksZX0odGhpcyxlPWUmJno/WW4oZSk6dm9pZCAwLHQpfSx6JiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Ri5kZXZ0b29scyYmbmUmJm5lLmVtaXQoXCJpbml0XCIsd24pfSwwKTt2YXIgcG89L1xce1xceygoPzoufFxccj9cXG4pKz8pXFx9XFx9L2csdm89L1stLiorP14ke30oKXxbXFxdXFwvXFxcXF0vZyxobz1nKGZ1bmN0aW9uKGUpe3ZhciB0PWVbMF0ucmVwbGFjZSh2byxcIlxcXFwkJlwiKSxuPWVbMV0ucmVwbGFjZSh2byxcIlxcXFwkJlwiKTtyZXR1cm4gbmV3IFJlZ0V4cCh0K1wiKCg/Oi58XFxcXG4pKz8pXCIrbixcImdcIil9KTt2YXIgbW89e3N0YXRpY0tleXM6W1wic3RhdGljQ2xhc3NcIl0sdHJhbnNmb3JtTm9kZTpmdW5jdGlvbihlLHQpe3Qud2Fybjt2YXIgbj1GcihlLFwiY2xhc3NcIik7biYmKGUuc3RhdGljQ2xhc3M9SlNPTi5zdHJpbmdpZnkobikpO3ZhciByPUlyKGUsXCJjbGFzc1wiLCExKTtyJiYoZS5jbGFzc0JpbmRpbmc9cil9LGdlbkRhdGE6ZnVuY3Rpb24oZSl7dmFyIHQ9XCJcIjtyZXR1cm4gZS5zdGF0aWNDbGFzcyYmKHQrPVwic3RhdGljQ2xhc3M6XCIrZS5zdGF0aWNDbGFzcytcIixcIiksZS5jbGFzc0JpbmRpbmcmJih0Kz1cImNsYXNzOlwiK2UuY2xhc3NCaW5kaW5nK1wiLFwiKSx0fX07dmFyIHlvLGdvPXtzdGF0aWNLZXlzOltcInN0YXRpY1N0eWxlXCJdLHRyYW5zZm9ybU5vZGU6ZnVuY3Rpb24oZSx0KXt0Lndhcm47dmFyIG49RnIoZSxcInN0eWxlXCIpO24mJihlLnN0YXRpY1N0eWxlPUpTT04uc3RyaW5naWZ5KGFpKG4pKSk7dmFyIHI9SXIoZSxcInN0eWxlXCIsITEpO3ImJihlLnN0eWxlQmluZGluZz1yKX0sZ2VuRGF0YTpmdW5jdGlvbihlKXt2YXIgdD1cIlwiO3JldHVybiBlLnN0YXRpY1N0eWxlJiYodCs9XCJzdGF0aWNTdHlsZTpcIitlLnN0YXRpY1N0eWxlK1wiLFwiKSxlLnN0eWxlQmluZGluZyYmKHQrPVwic3R5bGU6KFwiK2Uuc3R5bGVCaW5kaW5nK1wiKSxcIiksdH19LF9vPWZ1bmN0aW9uKGUpe3JldHVybih5bz15b3x8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSkuaW5uZXJIVE1MPWUseW8udGV4dENvbnRlbnR9LGJvPXAoXCJhcmVhLGJhc2UsYnIsY29sLGVtYmVkLGZyYW1lLGhyLGltZyxpbnB1dCxpc2luZGV4LGtleWdlbixsaW5rLG1ldGEscGFyYW0sc291cmNlLHRyYWNrLHdiclwiKSwkbz1wKFwiY29sZ3JvdXAsZGQsZHQsbGksb3B0aW9ucyxwLHRkLHRmb290LHRoLHRoZWFkLHRyLHNvdXJjZVwiKSx3bz1wKFwiYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGJhc2UsYmxvY2txdW90ZSxib2R5LGNhcHRpb24sY29sLGNvbGdyb3VwLGRkLGRldGFpbHMsZGlhbG9nLGRpdixkbCxkdCxmaWVsZHNldCxmaWdjYXB0aW9uLGZpZ3VyZSxmb290ZXIsZm9ybSxoMSxoMixoMyxoNCxoNSxoNixoZWFkLGhlYWRlcixoZ3JvdXAsaHIsaHRtbCxsZWdlbmQsbGksbWVudWl0ZW0sbWV0YSxvcHRncm91cCxvcHRpb24scGFyYW0scnAscnQsc291cmNlLHN0eWxlLHN1bW1hcnksdGJvZHksdGQsdGZvb3QsdGgsdGhlYWQsdGl0bGUsdHIsdHJhY2tcIiksQ289L15cXHMqKFteXFxzXCInPD5cXC89XSspKD86XFxzKig9KVxccyooPzpcIihbXlwiXSopXCIrfCcoW14nXSopJyt8KFteXFxzXCInPTw+YF0rKSkpPy8seG89L15cXHMqKCg/OnYtW1xcdy1dKzp8QHw6fCMpXFxbW149XStcXF1bXlxcc1wiJzw+XFwvPV0qKSg/OlxccyooPSlcXHMqKD86XCIoW15cIl0qKVwiK3wnKFteJ10qKScrfChbXlxcc1wiJz08PmBdKykpKT8vLGtvPVwiW2EtekEtWl9dW1xcXFwtXFxcXC4wLTlfYS16QS1aXCIrUC5zb3VyY2UrXCJdKlwiLEFvPVwiKCg/OlwiK2tvK1wiXFxcXDopP1wiK2tvK1wiKVwiLE9vPW5ldyBSZWdFeHAoXCJePFwiK0FvKSxTbz0vXlxccyooXFwvPyk+LyxUbz1uZXcgUmVnRXhwKFwiXjxcXFxcL1wiK0FvK1wiW14+XSo+XCIpLEVvPS9ePCFET0NUWVBFIFtePl0rPi9pLE5vPS9ePCFcXC0tLyxqbz0vXjwhXFxbLyxEbz1wKFwic2NyaXB0LHN0eWxlLHRleHRhcmVhXCIsITApLExvPXt9LE1vPXtcIiZsdDtcIjpcIjxcIixcIiZndDtcIjpcIj5cIixcIiZxdW90O1wiOidcIicsXCImYW1wO1wiOlwiJlwiLFwiJiMxMDtcIjpcIlxcblwiLFwiJiM5O1wiOlwiXFx0XCIsXCImIzM5O1wiOlwiJ1wifSxJbz0vJig/Omx0fGd0fHF1b3R8YW1wfCMzOSk7L2csRm89LyYoPzpsdHxndHxxdW90fGFtcHwjMzl8IzEwfCM5KTsvZyxQbz1wKFwicHJlLHRleHRhcmVhXCIsITApLFJvPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJlBvKGUpJiZcIlxcblwiPT09dFswXX07ZnVuY3Rpb24gSG8oZSx0KXt2YXIgbj10P0ZvOklvO3JldHVybiBlLnJlcGxhY2UobixmdW5jdGlvbihlKXtyZXR1cm4gTW9bZV19KX12YXIgQm8sVW8sem8sVm8sS28sSm8scW8sV28sWm89L15AfF52LW9uOi8sR289L152LXxeQHxeOnxeIy8sWG89LyhbXFxzXFxTXSo/KVxccysoPzppbnxvZilcXHMrKFtcXHNcXFNdKikvLFlvPS8sKFteLFxcfVxcXV0qKSg/OiwoW14sXFx9XFxdXSopKT8kLyxRbz0vXlxcKHxcXCkkL2csZWE9L15cXFsuKlxcXSQvLHRhPS86KC4qKSQvLG5hPS9eOnxeXFwufF52LWJpbmQ6LyxyYT0vXFwuW14uXFxdXSsoPz1bXlxcXV0qJCkvZyxpYT0vXnYtc2xvdCg6fCQpfF4jLyxvYT0vW1xcclxcbl0vLGFhPS9cXHMrL2csc2E9ZyhfbyksY2E9XCJfZW1wdHlfXCI7ZnVuY3Rpb24gdWEoZSx0LG4pe3JldHVybnt0eXBlOjEsdGFnOmUsYXR0cnNMaXN0OnQsYXR0cnNNYXA6bWEodCkscmF3QXR0cnNNYXA6e30scGFyZW50Om4sY2hpbGRyZW46W119fWZ1bmN0aW9uIGxhKGUsdCl7Qm89dC53YXJufHxTcixKbz10LmlzUHJlVGFnfHxULHFvPXQubXVzdFVzZVByb3B8fFQsV289dC5nZXRUYWdOYW1lc3BhY2V8fFQ7dC5pc1Jlc2VydmVkVGFnO3pvPVRyKHQubW9kdWxlcyxcInRyYW5zZm9ybU5vZGVcIiksVm89VHIodC5tb2R1bGVzLFwicHJlVHJhbnNmb3JtTm9kZVwiKSxLbz1Ucih0Lm1vZHVsZXMsXCJwb3N0VHJhbnNmb3JtTm9kZVwiKSxVbz10LmRlbGltaXRlcnM7dmFyIG4scixpPVtdLG89ITEhPT10LnByZXNlcnZlV2hpdGVzcGFjZSxhPXQud2hpdGVzcGFjZSxzPSExLGM9ITE7ZnVuY3Rpb24gdShlKXtpZihsKGUpLHN8fGUucHJvY2Vzc2VkfHwoZT1mYShlLHQpKSxpLmxlbmd0aHx8ZT09PW58fG4uaWYmJihlLmVsc2VpZnx8ZS5lbHNlKSYmZGEobix7ZXhwOmUuZWxzZWlmLGJsb2NrOmV9KSxyJiYhZS5mb3JiaWRkZW4paWYoZS5lbHNlaWZ8fGUuZWxzZSlhPWUsKHU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg7Zm9yKDt0LS07KXtpZigxPT09ZVt0XS50eXBlKXJldHVybiBlW3RdO2UucG9wKCl9fShyLmNoaWxkcmVuKSkmJnUuaWYmJmRhKHUse2V4cDphLmVsc2VpZixibG9jazphfSk7ZWxzZXtpZihlLnNsb3RTY29wZSl7dmFyIG89ZS5zbG90VGFyZ2V0fHwnXCJkZWZhdWx0XCInOyhyLnNjb3BlZFNsb3RzfHwoci5zY29wZWRTbG90cz17fSkpW29dPWV9ci5jaGlsZHJlbi5wdXNoKGUpLGUucGFyZW50PXJ9dmFyIGEsdTtlLmNoaWxkcmVuPWUuY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLnNsb3RTY29wZX0pLGwoZSksZS5wcmUmJihzPSExKSxKbyhlLnRhZykmJihjPSExKTtmb3IodmFyIGY9MDtmPEtvLmxlbmd0aDtmKyspS29bZl0oZSx0KX1mdW5jdGlvbiBsKGUpe2lmKCFjKWZvcih2YXIgdDsodD1lLmNoaWxkcmVuW2UuY2hpbGRyZW4ubGVuZ3RoLTFdKSYmMz09PXQudHlwZSYmXCIgXCI9PT10LnRleHQ7KWUuY2hpbGRyZW4ucG9wKCl9cmV0dXJuIGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuLHIsaT1bXSxvPXQuZXhwZWN0SFRNTCxhPXQuaXNVbmFyeVRhZ3x8VCxzPXQuY2FuQmVMZWZ0T3BlblRhZ3x8VCxjPTA7ZTspe2lmKG49ZSxyJiZEbyhyKSl7dmFyIHU9MCxsPXIudG9Mb3dlckNhc2UoKSxmPUxvW2xdfHwoTG9bbF09bmV3IFJlZ0V4cChcIihbXFxcXHNcXFxcU10qPykoPC9cIitsK1wiW14+XSo+KVwiLFwiaVwiKSkscD1lLnJlcGxhY2UoZixmdW5jdGlvbihlLG4scil7cmV0dXJuIHU9ci5sZW5ndGgsRG8obCl8fFwibm9zY3JpcHRcIj09PWx8fChuPW4ucmVwbGFjZSgvPCFcXC0tKFtcXHNcXFNdKj8pLS0+L2csXCIkMVwiKS5yZXBsYWNlKC88IVxcW0NEQVRBXFxbKFtcXHNcXFNdKj8pXV0+L2csXCIkMVwiKSksUm8obCxuKSYmKG49bi5zbGljZSgxKSksdC5jaGFycyYmdC5jaGFycyhuKSxcIlwifSk7Yys9ZS5sZW5ndGgtcC5sZW5ndGgsZT1wLEEobCxjLXUsYyl9ZWxzZXt2YXIgZD1lLmluZGV4T2YoXCI8XCIpO2lmKDA9PT1kKXtpZihOby50ZXN0KGUpKXt2YXIgdj1lLmluZGV4T2YoXCItLVxceDNlXCIpO2lmKHY+PTApe3Quc2hvdWxkS2VlcENvbW1lbnQmJnQuY29tbWVudChlLnN1YnN0cmluZyg0LHYpLGMsYyt2KzMpLEModiszKTtjb250aW51ZX19aWYoam8udGVzdChlKSl7dmFyIGg9ZS5pbmRleE9mKFwiXT5cIik7aWYoaD49MCl7QyhoKzIpO2NvbnRpbnVlfX12YXIgbT1lLm1hdGNoKEVvKTtpZihtKXtDKG1bMF0ubGVuZ3RoKTtjb250aW51ZX12YXIgeT1lLm1hdGNoKFRvKTtpZih5KXt2YXIgZz1jO0MoeVswXS5sZW5ndGgpLEEoeVsxXSxnLGMpO2NvbnRpbnVlfXZhciBfPXgoKTtpZihfKXtrKF8pLFJvKF8udGFnTmFtZSxlKSYmQygxKTtjb250aW51ZX19dmFyIGI9dm9pZCAwLCQ9dm9pZCAwLHc9dm9pZCAwO2lmKGQ+PTApe2ZvcigkPWUuc2xpY2UoZCk7IShUby50ZXN0KCQpfHxPby50ZXN0KCQpfHxOby50ZXN0KCQpfHxqby50ZXN0KCQpfHwodz0kLmluZGV4T2YoXCI8XCIsMSkpPDApOylkKz13LCQ9ZS5zbGljZShkKTtiPWUuc3Vic3RyaW5nKDAsZCl9ZDwwJiYoYj1lKSxiJiZDKGIubGVuZ3RoKSx0LmNoYXJzJiZiJiZ0LmNoYXJzKGIsYy1iLmxlbmd0aCxjKX1pZihlPT09bil7dC5jaGFycyYmdC5jaGFycyhlKTticmVha319ZnVuY3Rpb24gQyh0KXtjKz10LGU9ZS5zdWJzdHJpbmcodCl9ZnVuY3Rpb24geCgpe3ZhciB0PWUubWF0Y2goT28pO2lmKHQpe3ZhciBuLHIsaT17dGFnTmFtZTp0WzFdLGF0dHJzOltdLHN0YXJ0OmN9O2ZvcihDKHRbMF0ubGVuZ3RoKTshKG49ZS5tYXRjaChTbykpJiYocj1lLm1hdGNoKHhvKXx8ZS5tYXRjaChDbykpOylyLnN0YXJ0PWMsQyhyWzBdLmxlbmd0aCksci5lbmQ9YyxpLmF0dHJzLnB1c2gocik7aWYobilyZXR1cm4gaS51bmFyeVNsYXNoPW5bMV0sQyhuWzBdLmxlbmd0aCksaS5lbmQ9YyxpfX1mdW5jdGlvbiBrKGUpe3ZhciBuPWUudGFnTmFtZSxjPWUudW5hcnlTbGFzaDtvJiYoXCJwXCI9PT1yJiZ3byhuKSYmQShyKSxzKG4pJiZyPT09biYmQShuKSk7Zm9yKHZhciB1PWEobil8fCEhYyxsPWUuYXR0cnMubGVuZ3RoLGY9bmV3IEFycmF5KGwpLHA9MDtwPGw7cCsrKXt2YXIgZD1lLmF0dHJzW3BdLHY9ZFszXXx8ZFs0XXx8ZFs1XXx8XCJcIixoPVwiYVwiPT09biYmXCJocmVmXCI9PT1kWzFdP3Quc2hvdWxkRGVjb2RlTmV3bGluZXNGb3JIcmVmOnQuc2hvdWxkRGVjb2RlTmV3bGluZXM7ZltwXT17bmFtZTpkWzFdLHZhbHVlOkhvKHYsaCl9fXV8fChpLnB1c2goe3RhZzpuLGxvd2VyQ2FzZWRUYWc6bi50b0xvd2VyQ2FzZSgpLGF0dHJzOmYsc3RhcnQ6ZS5zdGFydCxlbmQ6ZS5lbmR9KSxyPW4pLHQuc3RhcnQmJnQuc3RhcnQobixmLHUsZS5zdGFydCxlLmVuZCl9ZnVuY3Rpb24gQShlLG4sbyl7dmFyIGEscztpZihudWxsPT1uJiYobj1jKSxudWxsPT1vJiYobz1jKSxlKWZvcihzPWUudG9Mb3dlckNhc2UoKSxhPWkubGVuZ3RoLTE7YT49MCYmaVthXS5sb3dlckNhc2VkVGFnIT09czthLS0pO2Vsc2UgYT0wO2lmKGE+PTApe2Zvcih2YXIgdT1pLmxlbmd0aC0xO3U+PWE7dS0tKXQuZW5kJiZ0LmVuZChpW3VdLnRhZyxuLG8pO2kubGVuZ3RoPWEscj1hJiZpW2EtMV0udGFnfWVsc2VcImJyXCI9PT1zP3Quc3RhcnQmJnQuc3RhcnQoZSxbXSwhMCxuLG8pOlwicFwiPT09cyYmKHQuc3RhcnQmJnQuc3RhcnQoZSxbXSwhMSxuLG8pLHQuZW5kJiZ0LmVuZChlLG4sbykpfUEoKX0oZSx7d2FybjpCbyxleHBlY3RIVE1MOnQuZXhwZWN0SFRNTCxpc1VuYXJ5VGFnOnQuaXNVbmFyeVRhZyxjYW5CZUxlZnRPcGVuVGFnOnQuY2FuQmVMZWZ0T3BlblRhZyxzaG91bGREZWNvZGVOZXdsaW5lczp0LnNob3VsZERlY29kZU5ld2xpbmVzLHNob3VsZERlY29kZU5ld2xpbmVzRm9ySHJlZjp0LnNob3VsZERlY29kZU5ld2xpbmVzRm9ySHJlZixzaG91bGRLZWVwQ29tbWVudDp0LmNvbW1lbnRzLG91dHB1dFNvdXJjZVJhbmdlOnQub3V0cHV0U291cmNlUmFuZ2Usc3RhcnQ6ZnVuY3Rpb24oZSxvLGEsbCxmKXt2YXIgcD1yJiZyLm5zfHxXbyhlKTtxJiZcInN2Z1wiPT09cCYmKG89ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTt5YS50ZXN0KHIubmFtZSl8fChyLm5hbWU9ci5uYW1lLnJlcGxhY2UoZ2EsXCJcIiksdC5wdXNoKHIpKX1yZXR1cm4gdH0obykpO3ZhciBkLHY9dWEoZSxvLHIpO3AmJih2Lm5zPXApLFwic3R5bGVcIiE9PShkPXYpLnRhZyYmKFwic2NyaXB0XCIhPT1kLnRhZ3x8ZC5hdHRyc01hcC50eXBlJiZcInRleHQvamF2YXNjcmlwdFwiIT09ZC5hdHRyc01hcC50eXBlKXx8dGUoKXx8KHYuZm9yYmlkZGVuPSEwKTtmb3IodmFyIGg9MDtoPFZvLmxlbmd0aDtoKyspdj1Wb1toXSh2LHQpfHx2O3N8fCghZnVuY3Rpb24oZSl7bnVsbCE9RnIoZSxcInYtcHJlXCIpJiYoZS5wcmU9ITApfSh2KSx2LnByZSYmKHM9ITApKSxKbyh2LnRhZykmJihjPSEwKSxzP2Z1bmN0aW9uKGUpe3ZhciB0PWUuYXR0cnNMaXN0LG49dC5sZW5ndGg7aWYobilmb3IodmFyIHI9ZS5hdHRycz1uZXcgQXJyYXkobiksaT0wO2k8bjtpKyspcltpXT17bmFtZTp0W2ldLm5hbWUsdmFsdWU6SlNPTi5zdHJpbmdpZnkodFtpXS52YWx1ZSl9LG51bGwhPXRbaV0uc3RhcnQmJihyW2ldLnN0YXJ0PXRbaV0uc3RhcnQscltpXS5lbmQ9dFtpXS5lbmQpO2Vsc2UgZS5wcmV8fChlLnBsYWluPSEwKX0odik6di5wcm9jZXNzZWR8fChwYSh2KSxmdW5jdGlvbihlKXt2YXIgdD1GcihlLFwidi1pZlwiKTtpZih0KWUuaWY9dCxkYShlLHtleHA6dCxibG9jazplfSk7ZWxzZXtudWxsIT1GcihlLFwidi1lbHNlXCIpJiYoZS5lbHNlPSEwKTt2YXIgbj1GcihlLFwidi1lbHNlLWlmXCIpO24mJihlLmVsc2VpZj1uKX19KHYpLGZ1bmN0aW9uKGUpe251bGwhPUZyKGUsXCJ2LW9uY2VcIikmJihlLm9uY2U9ITApfSh2KSksbnx8KG49diksYT91KHYpOihyPXYsaS5wdXNoKHYpKX0sZW5kOmZ1bmN0aW9uKGUsdCxuKXt2YXIgbz1pW2kubGVuZ3RoLTFdO2kubGVuZ3RoLT0xLHI9aVtpLmxlbmd0aC0xXSx1KG8pfSxjaGFyczpmdW5jdGlvbihlLHQsbil7aWYociYmKCFxfHxcInRleHRhcmVhXCIhPT1yLnRhZ3x8ci5hdHRyc01hcC5wbGFjZWhvbGRlciE9PWUpKXt2YXIgaSx1LGwsZj1yLmNoaWxkcmVuO2lmKGU9Y3x8ZS50cmltKCk/XCJzY3JpcHRcIj09PShpPXIpLnRhZ3x8XCJzdHlsZVwiPT09aS50YWc/ZTpzYShlKTpmLmxlbmd0aD9hP1wiY29uZGVuc2VcIj09PWEmJm9hLnRlc3QoZSk/XCJcIjpcIiBcIjpvP1wiIFwiOlwiXCI6XCJcIiljfHxcImNvbmRlbnNlXCIhPT1hfHwoZT1lLnJlcGxhY2UoYWEsXCIgXCIpKSwhcyYmXCIgXCIhPT1lJiYodT1mdW5jdGlvbihlLHQpe3ZhciBuPXQ/aG8odCk6cG87aWYobi50ZXN0KGUpKXtmb3IodmFyIHIsaSxvLGE9W10scz1bXSxjPW4ubGFzdEluZGV4PTA7cj1uLmV4ZWMoZSk7KXsoaT1yLmluZGV4KT5jJiYocy5wdXNoKG89ZS5zbGljZShjLGkpKSxhLnB1c2goSlNPTi5zdHJpbmdpZnkobykpKTt2YXIgdT1BcihyWzFdLnRyaW0oKSk7YS5wdXNoKFwiX3MoXCIrdStcIilcIikscy5wdXNoKHtcIkBiaW5kaW5nXCI6dX0pLGM9aStyWzBdLmxlbmd0aH1yZXR1cm4gYzxlLmxlbmd0aCYmKHMucHVzaChvPWUuc2xpY2UoYykpLGEucHVzaChKU09OLnN0cmluZ2lmeShvKSkpLHtleHByZXNzaW9uOmEuam9pbihcIitcIiksdG9rZW5zOnN9fX0oZSxVbykpP2w9e3R5cGU6MixleHByZXNzaW9uOnUuZXhwcmVzc2lvbix0b2tlbnM6dS50b2tlbnMsdGV4dDplfTpcIiBcIj09PWUmJmYubGVuZ3RoJiZcIiBcIj09PWZbZi5sZW5ndGgtMV0udGV4dHx8KGw9e3R5cGU6Myx0ZXh0OmV9KSxsJiZmLnB1c2gobCl9fSxjb21tZW50OmZ1bmN0aW9uKGUsdCxuKXtpZihyKXt2YXIgaT17dHlwZTozLHRleHQ6ZSxpc0NvbW1lbnQ6ITB9O3IuY2hpbGRyZW4ucHVzaChpKX19fSksbn1mdW5jdGlvbiBmYShlLHQpe3ZhciBuLHI7KHI9SXIobj1lLFwia2V5XCIpKSYmKG4ua2V5PXIpLGUucGxhaW49IWUua2V5JiYhZS5zY29wZWRTbG90cyYmIWUuYXR0cnNMaXN0Lmxlbmd0aCxmdW5jdGlvbihlKXt2YXIgdD1JcihlLFwicmVmXCIpO3QmJihlLnJlZj10LGUucmVmSW5Gb3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtmb3IoO3Q7KXtpZih2b2lkIDAhPT10LmZvcilyZXR1cm4hMDt0PXQucGFyZW50fXJldHVybiExfShlKSl9KGUpLGZ1bmN0aW9uKGUpe3ZhciB0O1widGVtcGxhdGVcIj09PWUudGFnPyh0PUZyKGUsXCJzY29wZVwiKSxlLnNsb3RTY29wZT10fHxGcihlLFwic2xvdC1zY29wZVwiKSk6KHQ9RnIoZSxcInNsb3Qtc2NvcGVcIikpJiYoZS5zbG90U2NvcGU9dCk7dmFyIG49SXIoZSxcInNsb3RcIik7biYmKGUuc2xvdFRhcmdldD0nXCJcIic9PT1uPydcImRlZmF1bHRcIic6bixlLnNsb3RUYXJnZXREeW5hbWljPSEoIWUuYXR0cnNNYXBbXCI6c2xvdFwiXSYmIWUuYXR0cnNNYXBbXCJ2LWJpbmQ6c2xvdFwiXSksXCJ0ZW1wbGF0ZVwiPT09ZS50YWd8fGUuc2xvdFNjb3BlfHxOcihlLFwic2xvdFwiLG4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5yYXdBdHRyc01hcFtcIjpcIit0XXx8ZS5yYXdBdHRyc01hcFtcInYtYmluZDpcIit0XXx8ZS5yYXdBdHRyc01hcFt0XX0oZSxcInNsb3RcIikpKTtpZihcInRlbXBsYXRlXCI9PT1lLnRhZyl7dmFyIHI9UHIoZSxpYSk7aWYocil7dmFyIGk9dmEociksbz1pLm5hbWUsYT1pLmR5bmFtaWM7ZS5zbG90VGFyZ2V0PW8sZS5zbG90VGFyZ2V0RHluYW1pYz1hLGUuc2xvdFNjb3BlPXIudmFsdWV8fGNhfX1lbHNle3ZhciBzPVByKGUsaWEpO2lmKHMpe3ZhciBjPWUuc2NvcGVkU2xvdHN8fChlLnNjb3BlZFNsb3RzPXt9KSx1PXZhKHMpLGw9dS5uYW1lLGY9dS5keW5hbWljLHA9Y1tsXT11YShcInRlbXBsYXRlXCIsW10sZSk7cC5zbG90VGFyZ2V0PWwscC5zbG90VGFyZ2V0RHluYW1pYz1mLHAuY2hpbGRyZW49ZS5jaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24oZSl7aWYoIWUuc2xvdFNjb3BlKXJldHVybiBlLnBhcmVudD1wLCEwfSkscC5zbG90U2NvcGU9cy52YWx1ZXx8Y2EsZS5jaGlsZHJlbj1bXSxlLnBsYWluPSExfX19KGUpLGZ1bmN0aW9uKGUpe1wic2xvdFwiPT09ZS50YWcmJihlLnNsb3ROYW1lPUlyKGUsXCJuYW1lXCIpKX0oZSksZnVuY3Rpb24oZSl7dmFyIHQ7KHQ9SXIoZSxcImlzXCIpKSYmKGUuY29tcG9uZW50PXQpO251bGwhPUZyKGUsXCJpbmxpbmUtdGVtcGxhdGVcIikmJihlLmlubGluZVRlbXBsYXRlPSEwKX0oZSk7Zm9yKHZhciBpPTA7aTx6by5sZW5ndGg7aSsrKWU9em9baV0oZSx0KXx8ZTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQsbixyLGksbyxhLHMsYyx1PWUuYXR0cnNMaXN0O2Zvcih0PTAsbj11Lmxlbmd0aDt0PG47dCsrKWlmKHI9aT11W3RdLm5hbWUsbz11W3RdLnZhbHVlLEdvLnRlc3QocikpaWYoZS5oYXNCaW5kaW5ncz0hMCwoYT1oYShyLnJlcGxhY2UoR28sXCJcIikpKSYmKHI9ci5yZXBsYWNlKHJhLFwiXCIpKSxuYS50ZXN0KHIpKXI9ci5yZXBsYWNlKG5hLFwiXCIpLG89QXIobyksKGM9ZWEudGVzdChyKSkmJihyPXIuc2xpY2UoMSwtMSkpLGEmJihhLnByb3AmJiFjJiZcImlubmVySHRtbFwiPT09KHI9YihyKSkmJihyPVwiaW5uZXJIVE1MXCIpLGEuY2FtZWwmJiFjJiYocj1iKHIpKSxhLnN5bmMmJihzPUJyKG8sXCIkZXZlbnRcIiksYz9NcihlLCdcInVwZGF0ZTpcIisoJytyK1wiKVwiLHMsbnVsbCwhMSwwLHVbdF0sITApOihNcihlLFwidXBkYXRlOlwiK2IocikscyxudWxsLCExLDAsdVt0XSksQyhyKSE9PWIocikmJk1yKGUsXCJ1cGRhdGU6XCIrQyhyKSxzLG51bGwsITEsMCx1W3RdKSkpKSxhJiZhLnByb3B8fCFlLmNvbXBvbmVudCYmcW8oZS50YWcsZS5hdHRyc01hcC50eXBlLHIpP0VyKGUscixvLHVbdF0sYyk6TnIoZSxyLG8sdVt0XSxjKTtlbHNlIGlmKFpvLnRlc3Qocikpcj1yLnJlcGxhY2UoWm8sXCJcIiksKGM9ZWEudGVzdChyKSkmJihyPXIuc2xpY2UoMSwtMSkpLE1yKGUscixvLGEsITEsMCx1W3RdLGMpO2Vsc2V7dmFyIGw9KHI9ci5yZXBsYWNlKEdvLFwiXCIpKS5tYXRjaCh0YSksZj1sJiZsWzFdO2M9ITEsZiYmKHI9ci5zbGljZSgwLC0oZi5sZW5ndGgrMSkpLGVhLnRlc3QoZikmJihmPWYuc2xpY2UoMSwtMSksYz0hMCkpLERyKGUscixpLG8sZixjLGEsdVt0XSl9ZWxzZSBOcihlLHIsSlNPTi5zdHJpbmdpZnkobyksdVt0XSksIWUuY29tcG9uZW50JiZcIm11dGVkXCI9PT1yJiZxbyhlLnRhZyxlLmF0dHJzTWFwLnR5cGUscikmJkVyKGUscixcInRydWVcIix1W3RdKX0oZSksZX1mdW5jdGlvbiBwYShlKXt2YXIgdDtpZih0PUZyKGUsXCJ2LWZvclwiKSl7dmFyIG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYXRjaChYbyk7aWYoIXQpcmV0dXJuO3ZhciBuPXt9O24uZm9yPXRbMl0udHJpbSgpO3ZhciByPXRbMV0udHJpbSgpLnJlcGxhY2UoUW8sXCJcIiksaT1yLm1hdGNoKFlvKTtpPyhuLmFsaWFzPXIucmVwbGFjZShZbyxcIlwiKS50cmltKCksbi5pdGVyYXRvcjE9aVsxXS50cmltKCksaVsyXSYmKG4uaXRlcmF0b3IyPWlbMl0udHJpbSgpKSk6bi5hbGlhcz1yO3JldHVybiBufSh0KTtuJiZBKGUsbil9fWZ1bmN0aW9uIGRhKGUsdCl7ZS5pZkNvbmRpdGlvbnN8fChlLmlmQ29uZGl0aW9ucz1bXSksZS5pZkNvbmRpdGlvbnMucHVzaCh0KX1mdW5jdGlvbiB2YShlKXt2YXIgdD1lLm5hbWUucmVwbGFjZShpYSxcIlwiKTtyZXR1cm4gdHx8XCIjXCIhPT1lLm5hbWVbMF0mJih0PVwiZGVmYXVsdFwiKSxlYS50ZXN0KHQpP3tuYW1lOnQuc2xpY2UoMSwtMSksZHluYW1pYzohMH06e25hbWU6J1wiJyt0KydcIicsZHluYW1pYzohMX19ZnVuY3Rpb24gaGEoZSl7dmFyIHQ9ZS5tYXRjaChyYSk7aWYodCl7dmFyIG49e307cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbihlKXtuW2Uuc2xpY2UoMSldPSEwfSksbn19ZnVuY3Rpb24gbWEoZSl7Zm9yKHZhciB0PXt9LG49MCxyPWUubGVuZ3RoO248cjtuKyspdFtlW25dLm5hbWVdPWVbbl0udmFsdWU7cmV0dXJuIHR9dmFyIHlhPS9eeG1sbnM6TlNcXGQrLyxnYT0vXk5TXFxkKzovO2Z1bmN0aW9uIF9hKGUpe3JldHVybiB1YShlLnRhZyxlLmF0dHJzTGlzdC5zbGljZSgpLGUucGFyZW50KX12YXIgYmE9W21vLGdvLHtwcmVUcmFuc2Zvcm1Ob2RlOmZ1bmN0aW9uKGUsdCl7aWYoXCJpbnB1dFwiPT09ZS50YWcpe3ZhciBuLHI9ZS5hdHRyc01hcDtpZighcltcInYtbW9kZWxcIl0pcmV0dXJuO2lmKChyW1wiOnR5cGVcIl18fHJbXCJ2LWJpbmQ6dHlwZVwiXSkmJihuPUlyKGUsXCJ0eXBlXCIpKSxyLnR5cGV8fG58fCFyW1widi1iaW5kXCJdfHwobj1cIihcIityW1widi1iaW5kXCJdK1wiKS50eXBlXCIpLG4pe3ZhciBpPUZyKGUsXCJ2LWlmXCIsITApLG89aT9cIiYmKFwiK2krXCIpXCI6XCJcIixhPW51bGwhPUZyKGUsXCJ2LWVsc2VcIiwhMCkscz1GcihlLFwidi1lbHNlLWlmXCIsITApLGM9X2EoZSk7cGEoYyksanIoYyxcInR5cGVcIixcImNoZWNrYm94XCIpLGZhKGMsdCksYy5wcm9jZXNzZWQ9ITAsYy5pZj1cIihcIituK1wiKT09PSdjaGVja2JveCdcIitvLGRhKGMse2V4cDpjLmlmLGJsb2NrOmN9KTt2YXIgdT1fYShlKTtGcih1LFwidi1mb3JcIiwhMCksanIodSxcInR5cGVcIixcInJhZGlvXCIpLGZhKHUsdCksZGEoYyx7ZXhwOlwiKFwiK24rXCIpPT09J3JhZGlvJ1wiK28sYmxvY2s6dX0pO3ZhciBsPV9hKGUpO3JldHVybiBGcihsLFwidi1mb3JcIiwhMCksanIobCxcIjp0eXBlXCIsbiksZmEobCx0KSxkYShjLHtleHA6aSxibG9jazpsfSksYT9jLmVsc2U9ITA6cyYmKGMuZWxzZWlmPXMpLGN9fX19XTt2YXIgJGEsd2EsQ2E9e2V4cGVjdEhUTUw6ITAsbW9kdWxlczpiYSxkaXJlY3RpdmVzOnttb2RlbDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dC52YWx1ZSxpPXQubW9kaWZpZXJzLG89ZS50YWcsYT1lLmF0dHJzTWFwLnR5cGU7aWYoZS5jb21wb25lbnQpcmV0dXJuIEhyKGUscixpKSwhMTtpZihcInNlbGVjdFwiPT09bykhZnVuY3Rpb24oZSx0LG4pe3ZhciByPSd2YXIgJCRzZWxlY3RlZFZhbCA9IEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbCgkZXZlbnQudGFyZ2V0Lm9wdGlvbnMsZnVuY3Rpb24obyl7cmV0dXJuIG8uc2VsZWN0ZWR9KS5tYXAoZnVuY3Rpb24obyl7dmFyIHZhbCA9IFwiX3ZhbHVlXCIgaW4gbyA/IG8uX3ZhbHVlIDogby52YWx1ZTtyZXR1cm4gJysobiYmbi5udW1iZXI/XCJfbih2YWwpXCI6XCJ2YWxcIikrXCJ9KTtcIjtyPXIrXCIgXCIrQnIodCxcIiRldmVudC50YXJnZXQubXVsdGlwbGUgPyAkJHNlbGVjdGVkVmFsIDogJCRzZWxlY3RlZFZhbFswXVwiKSxNcihlLFwiY2hhbmdlXCIscixudWxsLCEwKX0oZSxyLGkpO2Vsc2UgaWYoXCJpbnB1dFwiPT09byYmXCJjaGVja2JveFwiPT09YSkhZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4mJm4ubnVtYmVyLGk9SXIoZSxcInZhbHVlXCIpfHxcIm51bGxcIixvPUlyKGUsXCJ0cnVlLXZhbHVlXCIpfHxcInRydWVcIixhPUlyKGUsXCJmYWxzZS12YWx1ZVwiKXx8XCJmYWxzZVwiO0VyKGUsXCJjaGVja2VkXCIsXCJBcnJheS5pc0FycmF5KFwiK3QrXCIpP19pKFwiK3QrXCIsXCIraStcIik+LTFcIisoXCJ0cnVlXCI9PT1vP1wiOihcIit0K1wiKVwiOlwiOl9xKFwiK3QrXCIsXCIrbytcIilcIikpLE1yKGUsXCJjaGFuZ2VcIixcInZhciAkJGE9XCIrdCtcIiwkJGVsPSRldmVudC50YXJnZXQsJCRjPSQkZWwuY2hlY2tlZD8oXCIrbytcIik6KFwiK2ErXCIpO2lmKEFycmF5LmlzQXJyYXkoJCRhKSl7dmFyICQkdj1cIisocj9cIl9uKFwiK2krXCIpXCI6aSkrXCIsJCRpPV9pKCQkYSwkJHYpO2lmKCQkZWwuY2hlY2tlZCl7JCRpPDAmJihcIitCcih0LFwiJCRhLmNvbmNhdChbJCR2XSlcIikrXCIpfWVsc2V7JCRpPi0xJiYoXCIrQnIodCxcIiQkYS5zbGljZSgwLCQkaSkuY29uY2F0KCQkYS5zbGljZSgkJGkrMSkpXCIpK1wiKX19ZWxzZXtcIitCcih0LFwiJCRjXCIpK1wifVwiLG51bGwsITApfShlLHIsaSk7ZWxzZSBpZihcImlucHV0XCI9PT1vJiZcInJhZGlvXCI9PT1hKSFmdW5jdGlvbihlLHQsbil7dmFyIHI9biYmbi5udW1iZXIsaT1JcihlLFwidmFsdWVcIil8fFwibnVsbFwiO0VyKGUsXCJjaGVja2VkXCIsXCJfcShcIit0K1wiLFwiKyhpPXI/XCJfbihcIitpK1wiKVwiOmkpK1wiKVwiKSxNcihlLFwiY2hhbmdlXCIsQnIodCxpKSxudWxsLCEwKX0oZSxyLGkpO2Vsc2UgaWYoXCJpbnB1dFwiPT09b3x8XCJ0ZXh0YXJlYVwiPT09bykhZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuYXR0cnNNYXAudHlwZSxpPW58fHt9LG89aS5sYXp5LGE9aS5udW1iZXIscz1pLnRyaW0sYz0hbyYmXCJyYW5nZVwiIT09cix1PW8/XCJjaGFuZ2VcIjpcInJhbmdlXCI9PT1yP1dyOlwiaW5wdXRcIixsPVwiJGV2ZW50LnRhcmdldC52YWx1ZVwiO3MmJihsPVwiJGV2ZW50LnRhcmdldC52YWx1ZS50cmltKClcIiksYSYmKGw9XCJfbihcIitsK1wiKVwiKTt2YXIgZj1Ccih0LGwpO2MmJihmPVwiaWYoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpcmV0dXJuO1wiK2YpLEVyKGUsXCJ2YWx1ZVwiLFwiKFwiK3QrXCIpXCIpLE1yKGUsdSxmLG51bGwsITApLChzfHxhKSYmTXIoZSxcImJsdXJcIixcIiRmb3JjZVVwZGF0ZSgpXCIpfShlLHIsaSk7ZWxzZSBpZighRi5pc1Jlc2VydmVkVGFnKG8pKXJldHVybiBIcihlLHIsaSksITE7cmV0dXJuITB9LHRleHQ6ZnVuY3Rpb24oZSx0KXt0LnZhbHVlJiZFcihlLFwidGV4dENvbnRlbnRcIixcIl9zKFwiK3QudmFsdWUrXCIpXCIsdCl9LGh0bWw6ZnVuY3Rpb24oZSx0KXt0LnZhbHVlJiZFcihlLFwiaW5uZXJIVE1MXCIsXCJfcyhcIit0LnZhbHVlK1wiKVwiLHQpfX0saXNQcmVUYWc6ZnVuY3Rpb24oZSl7cmV0dXJuXCJwcmVcIj09PWV9LGlzVW5hcnlUYWc6Ym8sbXVzdFVzZVByb3A6am4sY2FuQmVMZWZ0T3BlblRhZzokbyxpc1Jlc2VydmVkVGFnOlduLGdldFRhZ05hbWVzcGFjZTpabixzdGF0aWNLZXlzOmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbmNhdCh0LnN0YXRpY0tleXN8fFtdKX0sW10pLmpvaW4oXCIsXCIpfShiYSl9LHhhPWcoZnVuY3Rpb24oZSl7cmV0dXJuIHAoXCJ0eXBlLHRhZyxhdHRyc0xpc3QsYXR0cnNNYXAscGxhaW4scGFyZW50LGNoaWxkcmVuLGF0dHJzLHN0YXJ0LGVuZCxyYXdBdHRyc01hcFwiKyhlP1wiLFwiK2U6XCJcIikpfSk7ZnVuY3Rpb24ga2EoZSx0KXtlJiYoJGE9eGEodC5zdGF0aWNLZXlzfHxcIlwiKSx3YT10LmlzUmVzZXJ2ZWRUYWd8fFQsZnVuY3Rpb24gZSh0KXt0LnN0YXRpYz1mdW5jdGlvbihlKXtpZigyPT09ZS50eXBlKXJldHVybiExO2lmKDM9PT1lLnR5cGUpcmV0dXJuITA7cmV0dXJuISghZS5wcmUmJihlLmhhc0JpbmRpbmdzfHxlLmlmfHxlLmZvcnx8ZChlLnRhZyl8fCF3YShlLnRhZyl8fGZ1bmN0aW9uKGUpe2Zvcig7ZS5wYXJlbnQ7KXtpZihcInRlbXBsYXRlXCIhPT0oZT1lLnBhcmVudCkudGFnKXJldHVybiExO2lmKGUuZm9yKXJldHVybiEwfXJldHVybiExfShlKXx8IU9iamVjdC5rZXlzKGUpLmV2ZXJ5KCRhKSkpfSh0KTtpZigxPT09dC50eXBlKXtpZighd2EodC50YWcpJiZcInNsb3RcIiE9PXQudGFnJiZudWxsPT10LmF0dHJzTWFwW1wiaW5saW5lLXRlbXBsYXRlXCJdKXJldHVybjtmb3IodmFyIG49MCxyPXQuY2hpbGRyZW4ubGVuZ3RoO248cjtuKyspe3ZhciBpPXQuY2hpbGRyZW5bbl07ZShpKSxpLnN0YXRpY3x8KHQuc3RhdGljPSExKX1pZih0LmlmQ29uZGl0aW9ucylmb3IodmFyIG89MSxhPXQuaWZDb25kaXRpb25zLmxlbmd0aDtvPGE7bysrKXt2YXIgcz10LmlmQ29uZGl0aW9uc1tvXS5ibG9jaztlKHMpLHMuc3RhdGljfHwodC5zdGF0aWM9ITEpfX19KGUpLGZ1bmN0aW9uIGUodCxuKXtpZigxPT09dC50eXBlKXtpZigodC5zdGF0aWN8fHQub25jZSkmJih0LnN0YXRpY0luRm9yPW4pLHQuc3RhdGljJiZ0LmNoaWxkcmVuLmxlbmd0aCYmKDEhPT10LmNoaWxkcmVuLmxlbmd0aHx8MyE9PXQuY2hpbGRyZW5bMF0udHlwZSkpcmV0dXJuIHZvaWQodC5zdGF0aWNSb290PSEwKTtpZih0LnN0YXRpY1Jvb3Q9ITEsdC5jaGlsZHJlbilmb3IodmFyIHI9MCxpPXQuY2hpbGRyZW4ubGVuZ3RoO3I8aTtyKyspZSh0LmNoaWxkcmVuW3JdLG58fCEhdC5mb3IpO2lmKHQuaWZDb25kaXRpb25zKWZvcih2YXIgbz0xLGE9dC5pZkNvbmRpdGlvbnMubGVuZ3RoO288YTtvKyspZSh0LmlmQ29uZGl0aW9uc1tvXS5ibG9jayxuKX19KGUsITEpKX12YXIgQWE9L14oW1xcdyRfXSt8XFwoW14pXSo/XFwpKVxccyo9PnxeZnVuY3Rpb24oPzpcXHMrW1xcdyRdKyk/XFxzKlxcKC8sT2E9L1xcKFteKV0qP1xcKTsqJC8sU2E9L15bQS1aYS16XyRdW1xcdyRdKig/OlxcLltBLVphLXpfJF1bXFx3JF0qfFxcWydbXiddKj8nXXxcXFtcIlteXCJdKj9cIl18XFxbXFxkK118XFxbW0EtWmEtel8kXVtcXHckXSpdKSokLyxUYT17ZXNjOjI3LHRhYjo5LGVudGVyOjEzLHNwYWNlOjMyLHVwOjM4LGxlZnQ6MzcscmlnaHQ6MzksZG93bjo0MCxkZWxldGU6WzgsNDZdfSxFYT17ZXNjOltcIkVzY1wiLFwiRXNjYXBlXCJdLHRhYjpcIlRhYlwiLGVudGVyOlwiRW50ZXJcIixzcGFjZTpbXCIgXCIsXCJTcGFjZWJhclwiXSx1cDpbXCJVcFwiLFwiQXJyb3dVcFwiXSxsZWZ0OltcIkxlZnRcIixcIkFycm93TGVmdFwiXSxyaWdodDpbXCJSaWdodFwiLFwiQXJyb3dSaWdodFwiXSxkb3duOltcIkRvd25cIixcIkFycm93RG93blwiXSxkZWxldGU6W1wiQmFja3NwYWNlXCIsXCJEZWxldGVcIixcIkRlbFwiXX0sTmE9ZnVuY3Rpb24oZSl7cmV0dXJuXCJpZihcIitlK1wiKXJldHVybiBudWxsO1wifSxqYT17c3RvcDpcIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIixwcmV2ZW50OlwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XCIsc2VsZjpOYShcIiRldmVudC50YXJnZXQgIT09ICRldmVudC5jdXJyZW50VGFyZ2V0XCIpLGN0cmw6TmEoXCIhJGV2ZW50LmN0cmxLZXlcIiksc2hpZnQ6TmEoXCIhJGV2ZW50LnNoaWZ0S2V5XCIpLGFsdDpOYShcIiEkZXZlbnQuYWx0S2V5XCIpLG1ldGE6TmEoXCIhJGV2ZW50Lm1ldGFLZXlcIiksbGVmdDpOYShcIididXR0b24nIGluICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAwXCIpLG1pZGRsZTpOYShcIididXR0b24nIGluICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAxXCIpLHJpZ2h0Ok5hKFwiJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24gIT09IDJcIil9O2Z1bmN0aW9uIERhKGUsdCl7dmFyIG49dD9cIm5hdGl2ZU9uOlwiOlwib246XCIscj1cIlwiLGk9XCJcIjtmb3IodmFyIG8gaW4gZSl7dmFyIGE9TGEoZVtvXSk7ZVtvXSYmZVtvXS5keW5hbWljP2krPW8rXCIsXCIrYStcIixcIjpyKz0nXCInK28rJ1wiOicrYStcIixcIn1yZXR1cm4gcj1cIntcIityLnNsaWNlKDAsLTEpK1wifVwiLGk/bitcIl9kKFwiK3IrXCIsW1wiK2kuc2xpY2UoMCwtMSkrXCJdKVwiOm4rcn1mdW5jdGlvbiBMYShlKXtpZighZSlyZXR1cm5cImZ1bmN0aW9uKCl7fVwiO2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuXCJbXCIrZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIExhKGUpfSkuam9pbihcIixcIikrXCJdXCI7dmFyIHQ9U2EudGVzdChlLnZhbHVlKSxuPUFhLnRlc3QoZS52YWx1ZSkscj1TYS50ZXN0KGUudmFsdWUucmVwbGFjZShPYSxcIlwiKSk7aWYoZS5tb2RpZmllcnMpe3ZhciBpPVwiXCIsbz1cIlwiLGE9W107Zm9yKHZhciBzIGluIGUubW9kaWZpZXJzKWlmKGphW3NdKW8rPWphW3NdLFRhW3NdJiZhLnB1c2gocyk7ZWxzZSBpZihcImV4YWN0XCI9PT1zKXt2YXIgYz1lLm1vZGlmaWVycztvKz1OYShbXCJjdHJsXCIsXCJzaGlmdFwiLFwiYWx0XCIsXCJtZXRhXCJdLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hY1tlXX0pLm1hcChmdW5jdGlvbihlKXtyZXR1cm5cIiRldmVudC5cIitlK1wiS2V5XCJ9KS5qb2luKFwifHxcIikpfWVsc2UgYS5wdXNoKHMpO3JldHVybiBhLmxlbmd0aCYmKGkrPWZ1bmN0aW9uKGUpe3JldHVyblwiaWYoISRldmVudC50eXBlLmluZGV4T2YoJ2tleScpJiZcIitlLm1hcChNYSkuam9pbihcIiYmXCIpK1wiKXJldHVybiBudWxsO1wifShhKSksbyYmKGkrPW8pLFwiZnVuY3Rpb24oJGV2ZW50KXtcIitpKyh0P1wicmV0dXJuIFwiK2UudmFsdWUrXCIoJGV2ZW50KVwiOm4/XCJyZXR1cm4gKFwiK2UudmFsdWUrXCIpKCRldmVudClcIjpyP1wicmV0dXJuIFwiK2UudmFsdWU6ZS52YWx1ZSkrXCJ9XCJ9cmV0dXJuIHR8fG4/ZS52YWx1ZTpcImZ1bmN0aW9uKCRldmVudCl7XCIrKHI/XCJyZXR1cm4gXCIrZS52YWx1ZTplLnZhbHVlKStcIn1cIn1mdW5jdGlvbiBNYShlKXt2YXIgdD1wYXJzZUludChlLDEwKTtpZih0KXJldHVyblwiJGV2ZW50LmtleUNvZGUhPT1cIit0O3ZhciBuPVRhW2VdLHI9RWFbZV07cmV0dXJuXCJfaygkZXZlbnQua2V5Q29kZSxcIitKU09OLnN0cmluZ2lmeShlKStcIixcIitKU09OLnN0cmluZ2lmeShuKStcIiwkZXZlbnQua2V5LFwiK0pTT04uc3RyaW5naWZ5KHIpK1wiKVwifXZhciBJYT17b246ZnVuY3Rpb24oZSx0KXtlLndyYXBMaXN0ZW5lcnM9ZnVuY3Rpb24oZSl7cmV0dXJuXCJfZyhcIitlK1wiLFwiK3QudmFsdWUrXCIpXCJ9fSxiaW5kOmZ1bmN0aW9uKGUsdCl7ZS53cmFwRGF0YT1mdW5jdGlvbihuKXtyZXR1cm5cIl9iKFwiK24rXCIsJ1wiK2UudGFnK1wiJyxcIit0LnZhbHVlK1wiLFwiKyh0Lm1vZGlmaWVycyYmdC5tb2RpZmllcnMucHJvcD9cInRydWVcIjpcImZhbHNlXCIpKyh0Lm1vZGlmaWVycyYmdC5tb2RpZmllcnMuc3luYz9cIix0cnVlXCI6XCJcIikrXCIpXCJ9fSxjbG9hazpTfSxGYT1mdW5jdGlvbihlKXt0aGlzLm9wdGlvbnM9ZSx0aGlzLndhcm49ZS53YXJufHxTcix0aGlzLnRyYW5zZm9ybXM9VHIoZS5tb2R1bGVzLFwidHJhbnNmb3JtQ29kZVwiKSx0aGlzLmRhdGFHZW5GbnM9VHIoZS5tb2R1bGVzLFwiZ2VuRGF0YVwiKSx0aGlzLmRpcmVjdGl2ZXM9QShBKHt9LElhKSxlLmRpcmVjdGl2ZXMpO3ZhciB0PWUuaXNSZXNlcnZlZFRhZ3x8VDt0aGlzLm1heWJlQ29tcG9uZW50PWZ1bmN0aW9uKGUpe3JldHVybiEhZS5jb21wb25lbnR8fCF0KGUudGFnKX0sdGhpcy5vbmNlSWQ9MCx0aGlzLnN0YXRpY1JlbmRlckZucz1bXSx0aGlzLnByZT0hMX07ZnVuY3Rpb24gUGEoZSx0KXt2YXIgbj1uZXcgRmEodCk7cmV0dXJue3JlbmRlcjpcIndpdGgodGhpcyl7cmV0dXJuIFwiKyhlP1JhKGUsbik6J19jKFwiZGl2XCIpJykrXCJ9XCIsc3RhdGljUmVuZGVyRm5zOm4uc3RhdGljUmVuZGVyRm5zfX1mdW5jdGlvbiBSYShlLHQpe2lmKGUucGFyZW50JiYoZS5wcmU9ZS5wcmV8fGUucGFyZW50LnByZSksZS5zdGF0aWNSb290JiYhZS5zdGF0aWNQcm9jZXNzZWQpcmV0dXJuIEhhKGUsdCk7aWYoZS5vbmNlJiYhZS5vbmNlUHJvY2Vzc2VkKXJldHVybiBCYShlLHQpO2lmKGUuZm9yJiYhZS5mb3JQcm9jZXNzZWQpcmV0dXJuIHphKGUsdCk7aWYoZS5pZiYmIWUuaWZQcm9jZXNzZWQpcmV0dXJuIFVhKGUsdCk7aWYoXCJ0ZW1wbGF0ZVwiIT09ZS50YWd8fGUuc2xvdFRhcmdldHx8dC5wcmUpe2lmKFwic2xvdFwiPT09ZS50YWcpcmV0dXJuIGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5zbG90TmFtZXx8J1wiZGVmYXVsdFwiJyxyPXFhKGUsdCksaT1cIl90KFwiK24rKHI/XCIsXCIrcjpcIlwiKSxvPWUuYXR0cnN8fGUuZHluYW1pY0F0dHJzP0dhKChlLmF0dHJzfHxbXSkuY29uY2F0KGUuZHluYW1pY0F0dHJzfHxbXSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybntuYW1lOmIoZS5uYW1lKSx2YWx1ZTplLnZhbHVlLGR5bmFtaWM6ZS5keW5hbWljfX0pKTpudWxsLGE9ZS5hdHRyc01hcFtcInYtYmluZFwiXTshbyYmIWF8fHJ8fChpKz1cIixudWxsXCIpO28mJihpKz1cIixcIitvKTthJiYoaSs9KG8/XCJcIjpcIixudWxsXCIpK1wiLFwiK2EpO3JldHVybiBpK1wiKVwifShlLHQpO3ZhciBuO2lmKGUuY29tcG9uZW50KW49ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQuaW5saW5lVGVtcGxhdGU/bnVsbDpxYSh0LG4sITApO3JldHVyblwiX2MoXCIrZStcIixcIitWYSh0LG4pKyhyP1wiLFwiK3I6XCJcIikrXCIpXCJ9KGUuY29tcG9uZW50LGUsdCk7ZWxzZXt2YXIgcjsoIWUucGxhaW58fGUucHJlJiZ0Lm1heWJlQ29tcG9uZW50KGUpKSYmKHI9VmEoZSx0KSk7dmFyIGk9ZS5pbmxpbmVUZW1wbGF0ZT9udWxsOnFhKGUsdCwhMCk7bj1cIl9jKCdcIitlLnRhZytcIidcIisocj9cIixcIityOlwiXCIpKyhpP1wiLFwiK2k6XCJcIikrXCIpXCJ9Zm9yKHZhciBvPTA7bzx0LnRyYW5zZm9ybXMubGVuZ3RoO28rKyluPXQudHJhbnNmb3Jtc1tvXShlLG4pO3JldHVybiBufXJldHVybiBxYShlLHQpfHxcInZvaWQgMFwifWZ1bmN0aW9uIEhhKGUsdCl7ZS5zdGF0aWNQcm9jZXNzZWQ9ITA7dmFyIG49dC5wcmU7cmV0dXJuIGUucHJlJiYodC5wcmU9ZS5wcmUpLHQuc3RhdGljUmVuZGVyRm5zLnB1c2goXCJ3aXRoKHRoaXMpe3JldHVybiBcIitSYShlLHQpK1wifVwiKSx0LnByZT1uLFwiX20oXCIrKHQuc3RhdGljUmVuZGVyRm5zLmxlbmd0aC0xKSsoZS5zdGF0aWNJbkZvcj9cIix0cnVlXCI6XCJcIikrXCIpXCJ9ZnVuY3Rpb24gQmEoZSx0KXtpZihlLm9uY2VQcm9jZXNzZWQ9ITAsZS5pZiYmIWUuaWZQcm9jZXNzZWQpcmV0dXJuIFVhKGUsdCk7aWYoZS5zdGF0aWNJbkZvcil7Zm9yKHZhciBuPVwiXCIscj1lLnBhcmVudDtyOyl7aWYoci5mb3Ipe249ci5rZXk7YnJlYWt9cj1yLnBhcmVudH1yZXR1cm4gbj9cIl9vKFwiK1JhKGUsdCkrXCIsXCIrdC5vbmNlSWQrKytcIixcIituK1wiKVwiOlJhKGUsdCl9cmV0dXJuIEhhKGUsdCl9ZnVuY3Rpb24gVWEoZSx0LG4scil7cmV0dXJuIGUuaWZQcm9jZXNzZWQ9ITAsZnVuY3Rpb24gZSh0LG4scixpKXtpZighdC5sZW5ndGgpcmV0dXJuIGl8fFwiX2UoKVwiO3ZhciBvPXQuc2hpZnQoKTtyZXR1cm4gby5leHA/XCIoXCIrby5leHArXCIpP1wiK2Eoby5ibG9jaykrXCI6XCIrZSh0LG4scixpKTpcIlwiK2Eoby5ibG9jayk7ZnVuY3Rpb24gYShlKXtyZXR1cm4gcj9yKGUsbik6ZS5vbmNlP0JhKGUsbik6UmEoZSxuKX19KGUuaWZDb25kaXRpb25zLnNsaWNlKCksdCxuLHIpfWZ1bmN0aW9uIHphKGUsdCxuLHIpe3ZhciBpPWUuZm9yLG89ZS5hbGlhcyxhPWUuaXRlcmF0b3IxP1wiLFwiK2UuaXRlcmF0b3IxOlwiXCIscz1lLml0ZXJhdG9yMj9cIixcIitlLml0ZXJhdG9yMjpcIlwiO3JldHVybiBlLmZvclByb2Nlc3NlZD0hMCwocnx8XCJfbFwiKStcIigoXCIraStcIiksZnVuY3Rpb24oXCIrbythK3MrXCIpe3JldHVybiBcIisobnx8UmEpKGUsdCkrXCJ9KVwifWZ1bmN0aW9uIFZhKGUsdCl7dmFyIG49XCJ7XCIscj1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZGlyZWN0aXZlcztpZighbilyZXR1cm47dmFyIHIsaSxvLGEscz1cImRpcmVjdGl2ZXM6W1wiLGM9ITE7Zm9yKHI9MCxpPW4ubGVuZ3RoO3I8aTtyKyspe289bltyXSxhPSEwO3ZhciB1PXQuZGlyZWN0aXZlc1tvLm5hbWVdO3UmJihhPSEhdShlLG8sdC53YXJuKSksYSYmKGM9ITAscys9J3tuYW1lOlwiJytvLm5hbWUrJ1wiLHJhd05hbWU6XCInK28ucmF3TmFtZSsnXCInKyhvLnZhbHVlP1wiLHZhbHVlOihcIitvLnZhbHVlK1wiKSxleHByZXNzaW9uOlwiK0pTT04uc3RyaW5naWZ5KG8udmFsdWUpOlwiXCIpKyhvLmFyZz9cIixhcmc6XCIrKG8uaXNEeW5hbWljQXJnP28uYXJnOidcIicrby5hcmcrJ1wiJyk6XCJcIikrKG8ubW9kaWZpZXJzP1wiLG1vZGlmaWVyczpcIitKU09OLnN0cmluZ2lmeShvLm1vZGlmaWVycyk6XCJcIikrXCJ9LFwiKX1pZihjKXJldHVybiBzLnNsaWNlKDAsLTEpK1wiXVwifShlLHQpO3ImJihuKz1yK1wiLFwiKSxlLmtleSYmKG4rPVwia2V5OlwiK2Uua2V5K1wiLFwiKSxlLnJlZiYmKG4rPVwicmVmOlwiK2UucmVmK1wiLFwiKSxlLnJlZkluRm9yJiYobis9XCJyZWZJbkZvcjp0cnVlLFwiKSxlLnByZSYmKG4rPVwicHJlOnRydWUsXCIpLGUuY29tcG9uZW50JiYobis9J3RhZzpcIicrZS50YWcrJ1wiLCcpO2Zvcih2YXIgaT0wO2k8dC5kYXRhR2VuRm5zLmxlbmd0aDtpKyspbis9dC5kYXRhR2VuRm5zW2ldKGUpO2lmKGUuYXR0cnMmJihuKz1cImF0dHJzOlwiK0dhKGUuYXR0cnMpK1wiLFwiKSxlLnByb3BzJiYobis9XCJkb21Qcm9wczpcIitHYShlLnByb3BzKStcIixcIiksZS5ldmVudHMmJihuKz1EYShlLmV2ZW50cywhMSkrXCIsXCIpLGUubmF0aXZlRXZlbnRzJiYobis9RGEoZS5uYXRpdmVFdmVudHMsITApK1wiLFwiKSxlLnNsb3RUYXJnZXQmJiFlLnNsb3RTY29wZSYmKG4rPVwic2xvdDpcIitlLnNsb3RUYXJnZXQrXCIsXCIpLGUuc2NvcGVkU2xvdHMmJihuKz1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5mb3J8fE9iamVjdC5rZXlzKHQpLnNvbWUoZnVuY3Rpb24oZSl7dmFyIG49dFtlXTtyZXR1cm4gbi5zbG90VGFyZ2V0RHluYW1pY3x8bi5pZnx8bi5mb3J8fEthKG4pfSksaT0hIWUuaWY7aWYoIXIpZm9yKHZhciBvPWUucGFyZW50O287KXtpZihvLnNsb3RTY29wZSYmby5zbG90U2NvcGUhPT1jYXx8by5mb3Ipe3I9ITA7YnJlYWt9by5pZiYmKGk9ITApLG89by5wYXJlbnR9dmFyIGE9T2JqZWN0LmtleXModCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBKYSh0W2VdLG4pfSkuam9pbihcIixcIik7cmV0dXJuXCJzY29wZWRTbG90czpfdShbXCIrYStcIl1cIisocj9cIixudWxsLHRydWVcIjpcIlwiKSsoIXImJmk/XCIsbnVsbCxmYWxzZSxcIitmdW5jdGlvbihlKXt2YXIgdD01MzgxLG49ZS5sZW5ndGg7Zm9yKDtuOyl0PTMzKnReZS5jaGFyQ29kZUF0KC0tbik7cmV0dXJuIHQ+Pj4wfShhKTpcIlwiKStcIilcIn0oZSxlLnNjb3BlZFNsb3RzLHQpK1wiLFwiKSxlLm1vZGVsJiYobis9XCJtb2RlbDp7dmFsdWU6XCIrZS5tb2RlbC52YWx1ZStcIixjYWxsYmFjazpcIitlLm1vZGVsLmNhbGxiYWNrK1wiLGV4cHJlc3Npb246XCIrZS5tb2RlbC5leHByZXNzaW9uK1wifSxcIiksZS5pbmxpbmVUZW1wbGF0ZSl7dmFyIG89ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmNoaWxkcmVuWzBdO2lmKG4mJjE9PT1uLnR5cGUpe3ZhciByPVBhKG4sdC5vcHRpb25zKTtyZXR1cm5cImlubGluZVRlbXBsYXRlOntyZW5kZXI6ZnVuY3Rpb24oKXtcIityLnJlbmRlcitcIn0sc3RhdGljUmVuZGVyRm5zOltcIityLnN0YXRpY1JlbmRlckZucy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuXCJmdW5jdGlvbigpe1wiK2UrXCJ9XCJ9KS5qb2luKFwiLFwiKStcIl19XCJ9fShlLHQpO28mJihuKz1vK1wiLFwiKX1yZXR1cm4gbj1uLnJlcGxhY2UoLywkLyxcIlwiKStcIn1cIixlLmR5bmFtaWNBdHRycyYmKG49XCJfYihcIituKycsXCInK2UudGFnKydcIiwnK0dhKGUuZHluYW1pY0F0dHJzKStcIilcIiksZS53cmFwRGF0YSYmKG49ZS53cmFwRGF0YShuKSksZS53cmFwTGlzdGVuZXJzJiYobj1lLndyYXBMaXN0ZW5lcnMobikpLG59ZnVuY3Rpb24gS2EoZSl7cmV0dXJuIDE9PT1lLnR5cGUmJihcInNsb3RcIj09PWUudGFnfHxlLmNoaWxkcmVuLnNvbWUoS2EpKX1mdW5jdGlvbiBKYShlLHQpe3ZhciBuPWUuYXR0cnNNYXBbXCJzbG90LXNjb3BlXCJdO2lmKGUuaWYmJiFlLmlmUHJvY2Vzc2VkJiYhbilyZXR1cm4gVWEoZSx0LEphLFwibnVsbFwiKTtpZihlLmZvciYmIWUuZm9yUHJvY2Vzc2VkKXJldHVybiB6YShlLHQsSmEpO3ZhciByPWUuc2xvdFNjb3BlPT09Y2E/XCJcIjpTdHJpbmcoZS5zbG90U2NvcGUpLGk9XCJmdW5jdGlvbihcIityK1wiKXtyZXR1cm4gXCIrKFwidGVtcGxhdGVcIj09PWUudGFnP2UuaWYmJm4/XCIoXCIrZS5pZitcIik/XCIrKHFhKGUsdCl8fFwidW5kZWZpbmVkXCIpK1wiOnVuZGVmaW5lZFwiOnFhKGUsdCl8fFwidW5kZWZpbmVkXCI6UmEoZSx0KSkrXCJ9XCIsbz1yP1wiXCI6XCIscHJveHk6dHJ1ZVwiO3JldHVyblwie2tleTpcIisoZS5zbG90VGFyZ2V0fHwnXCJkZWZhdWx0XCInKStcIixmbjpcIitpK28rXCJ9XCJ9ZnVuY3Rpb24gcWEoZSx0LG4scixpKXt2YXIgbz1lLmNoaWxkcmVuO2lmKG8ubGVuZ3RoKXt2YXIgYT1vWzBdO2lmKDE9PT1vLmxlbmd0aCYmYS5mb3ImJlwidGVtcGxhdGVcIiE9PWEudGFnJiZcInNsb3RcIiE9PWEudGFnKXt2YXIgcz1uP3QubWF5YmVDb21wb25lbnQoYSk/XCIsMVwiOlwiLDBcIjpcIlwiO3JldHVyblwiXCIrKHJ8fFJhKShhLHQpK3N9dmFyIGM9bj9mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIGk9ZVtyXTtpZigxPT09aS50eXBlKXtpZihXYShpKXx8aS5pZkNvbmRpdGlvbnMmJmkuaWZDb25kaXRpb25zLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIFdhKGUuYmxvY2spfSkpe249MjticmVha30odChpKXx8aS5pZkNvbmRpdGlvbnMmJmkuaWZDb25kaXRpb25zLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIHQoZS5ibG9jayl9KSkmJihuPTEpfX1yZXR1cm4gbn0obyx0Lm1heWJlQ29tcG9uZW50KTowLHU9aXx8WmE7cmV0dXJuXCJbXCIrby5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHUoZSx0KX0pLmpvaW4oXCIsXCIpK1wiXVwiKyhjP1wiLFwiK2M6XCJcIil9fWZ1bmN0aW9uIFdhKGUpe3JldHVybiB2b2lkIDAhPT1lLmZvcnx8XCJ0ZW1wbGF0ZVwiPT09ZS50YWd8fFwic2xvdFwiPT09ZS50YWd9ZnVuY3Rpb24gWmEoZSx0KXtyZXR1cm4gMT09PWUudHlwZT9SYShlLHQpOjM9PT1lLnR5cGUmJmUuaXNDb21tZW50PyhyPWUsXCJfZShcIitKU09OLnN0cmluZ2lmeShyLnRleHQpK1wiKVwiKTpcIl92KFwiKygyPT09KG49ZSkudHlwZT9uLmV4cHJlc3Npb246WGEoSlNPTi5zdHJpbmdpZnkobi50ZXh0KSkpK1wiKVwiO3ZhciBuLHJ9ZnVuY3Rpb24gR2EoZSl7Zm9yKHZhciB0PVwiXCIsbj1cIlwiLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIGk9ZVtyXSxvPVhhKGkudmFsdWUpO2kuZHluYW1pYz9uKz1pLm5hbWUrXCIsXCIrbytcIixcIjp0Kz0nXCInK2kubmFtZSsnXCI6JytvK1wiLFwifXJldHVybiB0PVwie1wiK3Quc2xpY2UoMCwtMSkrXCJ9XCIsbj9cIl9kKFwiK3QrXCIsW1wiK24uc2xpY2UoMCwtMSkrXCJdKVwiOnR9ZnVuY3Rpb24gWGEoZSl7cmV0dXJuIGUucmVwbGFjZSgvXFx1MjAyOC9nLFwiXFxcXHUyMDI4XCIpLnJlcGxhY2UoL1xcdTIwMjkvZyxcIlxcXFx1MjAyOVwiKX1uZXcgUmVnRXhwKFwiXFxcXGJcIitcImRvLGlmLGZvcixsZXQsbmV3LHRyeSx2YXIsY2FzZSxlbHNlLHdpdGgsYXdhaXQsYnJlYWssY2F0Y2gsY2xhc3MsY29uc3Qsc3VwZXIsdGhyb3csd2hpbGUseWllbGQsZGVsZXRlLGV4cG9ydCxpbXBvcnQscmV0dXJuLHN3aXRjaCxkZWZhdWx0LGV4dGVuZHMsZmluYWxseSxjb250aW51ZSxkZWJ1Z2dlcixmdW5jdGlvbixhcmd1bWVudHNcIi5zcGxpdChcIixcIikuam9pbihcIlxcXFxifFxcXFxiXCIpK1wiXFxcXGJcIik7ZnVuY3Rpb24gWWEoZSx0KXt0cnl7cmV0dXJuIG5ldyBGdW5jdGlvbihlKX1jYXRjaChuKXtyZXR1cm4gdC5wdXNoKHtlcnI6bixjb2RlOmV9KSxTfX1mdW5jdGlvbiBRYShlKXt2YXIgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBmdW5jdGlvbihuLHIsaSl7KHI9QSh7fSxyKSkud2FybjtkZWxldGUgci53YXJuO3ZhciBvPXIuZGVsaW1pdGVycz9TdHJpbmcoci5kZWxpbWl0ZXJzKStuOm47aWYodFtvXSlyZXR1cm4gdFtvXTt2YXIgYT1lKG4scikscz17fSxjPVtdO3JldHVybiBzLnJlbmRlcj1ZYShhLnJlbmRlcixjKSxzLnN0YXRpY1JlbmRlckZucz1hLnN0YXRpY1JlbmRlckZucy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIFlhKGUsYyl9KSx0W29dPXN9fXZhciBlcyx0cyxucz0oZXM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1sYShlLnRyaW0oKSx0KTshMSE9PXQub3B0aW1pemUmJmthKG4sdCk7dmFyIHI9UGEobix0KTtyZXR1cm57YXN0Om4scmVuZGVyOnIucmVuZGVyLHN0YXRpY1JlbmRlckZuczpyLnN0YXRpY1JlbmRlckZuc319LGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXt2YXIgcj1PYmplY3QuY3JlYXRlKGUpLGk9W10sbz1bXTtpZihuKWZvcih2YXIgYSBpbiBuLm1vZHVsZXMmJihyLm1vZHVsZXM9KGUubW9kdWxlc3x8W10pLmNvbmNhdChuLm1vZHVsZXMpKSxuLmRpcmVjdGl2ZXMmJihyLmRpcmVjdGl2ZXM9QShPYmplY3QuY3JlYXRlKGUuZGlyZWN0aXZlc3x8bnVsbCksbi5kaXJlY3RpdmVzKSksbilcIm1vZHVsZXNcIiE9PWEmJlwiZGlyZWN0aXZlc1wiIT09YSYmKHJbYV09blthXSk7ci53YXJuPWZ1bmN0aW9uKGUsdCxuKXsobj9vOmkpLnB1c2goZSl9O3ZhciBzPWVzKHQudHJpbSgpLHIpO3JldHVybiBzLmVycm9ycz1pLHMudGlwcz1vLHN9cmV0dXJue2NvbXBpbGU6dCxjb21waWxlVG9GdW5jdGlvbnM6UWEodCl9fSkoQ2EpLHJzPShucy5jb21waWxlLG5zLmNvbXBpbGVUb0Z1bmN0aW9ucyk7ZnVuY3Rpb24gaXMoZSl7cmV0dXJuKHRzPXRzfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKS5pbm5lckhUTUw9ZT8nPGEgaHJlZj1cIlxcblwiLz4nOic8ZGl2IGE9XCJcXG5cIi8+Jyx0cy5pbm5lckhUTUwuaW5kZXhPZihcIiYjMTA7XCIpPjB9dmFyIG9zPSEheiYmaXMoITEpLGFzPSEheiYmaXMoITApLHNzPWcoZnVuY3Rpb24oZSl7dmFyIHQ9WW4oZSk7cmV0dXJuIHQmJnQuaW5uZXJIVE1MfSksY3M9d24ucHJvdG90eXBlLiRtb3VudDt3bi5wcm90b3R5cGUuJG1vdW50PWZ1bmN0aW9uKGUsdCl7aWYoKGU9ZSYmWW4oZSkpPT09ZG9jdW1lbnQuYm9keXx8ZT09PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudClyZXR1cm4gdGhpczt2YXIgbj10aGlzLiRvcHRpb25zO2lmKCFuLnJlbmRlcil7dmFyIHI9bi50ZW1wbGF0ZTtpZihyKWlmKFwic3RyaW5nXCI9PXR5cGVvZiByKVwiI1wiPT09ci5jaGFyQXQoMCkmJihyPXNzKHIpKTtlbHNle2lmKCFyLm5vZGVUeXBlKXJldHVybiB0aGlzO3I9ci5pbm5lckhUTUx9ZWxzZSBlJiYocj1mdW5jdGlvbihlKXtpZihlLm91dGVySFRNTClyZXR1cm4gZS5vdXRlckhUTUw7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtyZXR1cm4gdC5hcHBlbmRDaGlsZChlLmNsb25lTm9kZSghMCkpLHQuaW5uZXJIVE1MfShlKSk7aWYocil7dmFyIGk9cnMocix7b3V0cHV0U291cmNlUmFuZ2U6ITEsc2hvdWxkRGVjb2RlTmV3bGluZXM6b3Msc2hvdWxkRGVjb2RlTmV3bGluZXNGb3JIcmVmOmFzLGRlbGltaXRlcnM6bi5kZWxpbWl0ZXJzLGNvbW1lbnRzOm4uY29tbWVudHN9LHRoaXMpLG89aS5yZW5kZXIsYT1pLnN0YXRpY1JlbmRlckZucztuLnJlbmRlcj1vLG4uc3RhdGljUmVuZGVyRm5zPWF9fXJldHVybiBjcy5jYWxsKHRoaXMsZSx0KX0sd24uY29tcGlsZT1ycyxtb2R1bGUuZXhwb3J0cz13bjsiLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcbnZhciBub3JtYWxpemVIZWFkZXJOYW1lID0gcmVxdWlyZSgnLi9oZWxwZXJzL25vcm1hbGl6ZUhlYWRlck5hbWUnKTtcblxudmFyIERFRkFVTFRfQ09OVEVOVF9UWVBFID0ge1xuICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcbn07XG5cbmZ1bmN0aW9uIHNldENvbnRlbnRUeXBlSWZVbnNldChoZWFkZXJzLCB2YWx1ZSkge1xuICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGhlYWRlcnMpICYmIHV0aWxzLmlzVW5kZWZpbmVkKGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddKSkge1xuICAgIGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gdmFsdWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGVmYXVsdEFkYXB0ZXIoKSB7XG4gIHZhciBhZGFwdGVyO1xuICBpZiAodHlwZW9mIFhNTEh0dHBSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIC8vIEZvciBicm93c2VycyB1c2UgWEhSIGFkYXB0ZXJcbiAgICBhZGFwdGVyID0gcmVxdWlyZSgnLi9hZGFwdGVycy94aHInKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHByb2Nlc3MpID09PSAnW29iamVjdCBwcm9jZXNzXScpIHtcbiAgICAvLyBGb3Igbm9kZSB1c2UgSFRUUCBhZGFwdGVyXG4gICAgYWRhcHRlciA9IHJlcXVpcmUoJy4vYWRhcHRlcnMvaHR0cCcpO1xuICB9XG4gIHJldHVybiBhZGFwdGVyO1xufVxuXG52YXIgZGVmYXVsdHMgPSB7XG4gIGFkYXB0ZXI6IGdldERlZmF1bHRBZGFwdGVyKCksXG5cbiAgdHJhbnNmb3JtUmVxdWVzdDogW2Z1bmN0aW9uIHRyYW5zZm9ybVJlcXVlc3QoZGF0YSwgaGVhZGVycykge1xuICAgIG5vcm1hbGl6ZUhlYWRlck5hbWUoaGVhZGVycywgJ0FjY2VwdCcpO1xuICAgIG5vcm1hbGl6ZUhlYWRlck5hbWUoaGVhZGVycywgJ0NvbnRlbnQtVHlwZScpO1xuICAgIGlmICh1dGlscy5pc0Zvcm1EYXRhKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0FycmF5QnVmZmVyKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0J1ZmZlcihkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNTdHJlYW0oZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzRmlsZShkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNCbG9iKGRhdGEpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgaWYgKHV0aWxzLmlzQXJyYXlCdWZmZXJWaWV3KGRhdGEpKSB7XG4gICAgICByZXR1cm4gZGF0YS5idWZmZXI7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc1VSTFNlYXJjaFBhcmFtcyhkYXRhKSkge1xuICAgICAgc2V0Q29udGVudFR5cGVJZlVuc2V0KGhlYWRlcnMsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCcpO1xuICAgICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgaWYgKHV0aWxzLmlzT2JqZWN0KGRhdGEpKSB7XG4gICAgICBzZXRDb250ZW50VHlwZUlmVW5zZXQoaGVhZGVycywgJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtOCcpO1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfV0sXG5cbiAgdHJhbnNmb3JtUmVzcG9uc2U6IFtmdW5jdGlvbiB0cmFuc2Zvcm1SZXNwb25zZShkYXRhKSB7XG4gICAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZGF0YSA9IEpTT04ucGFyc2UoZGF0YSk7XG4gICAgICB9IGNhdGNoIChlKSB7IC8qIElnbm9yZSAqLyB9XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XSxcblxuICAvKipcbiAgICogQSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyB0byBhYm9ydCBhIHJlcXVlc3QuIElmIHNldCB0byAwIChkZWZhdWx0KSBhXG4gICAqIHRpbWVvdXQgaXMgbm90IGNyZWF0ZWQuXG4gICAqL1xuICB0aW1lb3V0OiAwLFxuXG4gIHhzcmZDb29raWVOYW1lOiAnWFNSRi1UT0tFTicsXG4gIHhzcmZIZWFkZXJOYW1lOiAnWC1YU1JGLVRPS0VOJyxcblxuICBtYXhDb250ZW50TGVuZ3RoOiAtMSxcblxuICB2YWxpZGF0ZVN0YXR1czogZnVuY3Rpb24gdmFsaWRhdGVTdGF0dXMoc3RhdHVzKSB7XG4gICAgcmV0dXJuIHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwO1xuICB9XG59O1xuXG5kZWZhdWx0cy5oZWFkZXJzID0ge1xuICBjb21tb246IHtcbiAgICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKidcbiAgfVxufTtcblxudXRpbHMuZm9yRWFjaChbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kTm9EYXRhKG1ldGhvZCkge1xuICBkZWZhdWx0cy5oZWFkZXJzW21ldGhvZF0gPSB7fTtcbn0pO1xuXG51dGlscy5mb3JFYWNoKFsncG9zdCcsICdwdXQnLCAncGF0Y2gnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZFdpdGhEYXRhKG1ldGhvZCkge1xuICBkZWZhdWx0cy5oZWFkZXJzW21ldGhvZF0gPSB1dGlscy5tZXJnZShERUZBVUxUX0NPTlRFTlRfVFlQRSk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWZhdWx0cztcbiIsIi8qIGdsb2JhbHMgX19WVUVfU1NSX0NPTlRFWFRfXyAqL1xuXG4vLyBJTVBPUlRBTlQ6IERvIE5PVCB1c2UgRVMyMDE1IGZlYXR1cmVzIGluIHRoaXMgZmlsZSAoZXhjZXB0IGZvciBtb2R1bGVzKS5cbi8vIFRoaXMgbW9kdWxlIGlzIGEgcnVudGltZSB1dGlsaXR5IGZvciBjbGVhbmVyIGNvbXBvbmVudCBtb2R1bGUgb3V0cHV0IGFuZCB3aWxsXG4vLyBiZSBpbmNsdWRlZCBpbiB0aGUgZmluYWwgd2VicGFjayB1c2VyIGJ1bmRsZS5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbm9ybWFsaXplQ29tcG9uZW50IChcbiAgc2NyaXB0RXhwb3J0cyxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZ1bmN0aW9uYWxUZW1wbGF0ZSxcbiAgaW5qZWN0U3R5bGVzLFxuICBzY29wZUlkLFxuICBtb2R1bGVJZGVudGlmaWVyLCAvKiBzZXJ2ZXIgb25seSAqL1xuICBzaGFkb3dNb2RlIC8qIHZ1ZS1jbGkgb25seSAqL1xuKSB7XG4gIC8vIFZ1ZS5leHRlbmQgY29uc3RydWN0b3IgZXhwb3J0IGludGVyb3BcbiAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygc2NyaXB0RXhwb3J0cyA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gc2NyaXB0RXhwb3J0cy5vcHRpb25zXG4gICAgOiBzY3JpcHRFeHBvcnRzXG5cbiAgLy8gcmVuZGVyIGZ1bmN0aW9uc1xuICBpZiAocmVuZGVyKSB7XG4gICAgb3B0aW9ucy5yZW5kZXIgPSByZW5kZXJcbiAgICBvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IHN0YXRpY1JlbmRlckZuc1xuICAgIG9wdGlvbnMuX2NvbXBpbGVkID0gdHJ1ZVxuICB9XG5cbiAgLy8gZnVuY3Rpb25hbCB0ZW1wbGF0ZVxuICBpZiAoZnVuY3Rpb25hbFRlbXBsYXRlKSB7XG4gICAgb3B0aW9ucy5mdW5jdGlvbmFsID0gdHJ1ZVxuICB9XG5cbiAgLy8gc2NvcGVkSWRcbiAgaWYgKHNjb3BlSWQpIHtcbiAgICBvcHRpb25zLl9zY29wZUlkID0gJ2RhdGEtdi0nICsgc2NvcGVJZFxuICB9XG5cbiAgdmFyIGhvb2tcbiAgaWYgKG1vZHVsZUlkZW50aWZpZXIpIHsgLy8gc2VydmVyIGJ1aWxkXG4gICAgaG9vayA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAvLyAyLjMgaW5qZWN0aW9uXG4gICAgICBjb250ZXh0ID1cbiAgICAgICAgY29udGV4dCB8fCAvLyBjYWNoZWQgY2FsbFxuICAgICAgICAodGhpcy4kdm5vZGUgJiYgdGhpcy4kdm5vZGUuc3NyQ29udGV4dCkgfHwgLy8gc3RhdGVmdWxcbiAgICAgICAgKHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LiR2bm9kZSAmJiB0aGlzLnBhcmVudC4kdm5vZGUuc3NyQ29udGV4dCkgLy8gZnVuY3Rpb25hbFxuICAgICAgLy8gMi4yIHdpdGggcnVuSW5OZXdDb250ZXh0OiB0cnVlXG4gICAgICBpZiAoIWNvbnRleHQgJiYgdHlwZW9mIF9fVlVFX1NTUl9DT05URVhUX18gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnRleHQgPSBfX1ZVRV9TU1JfQ09OVEVYVF9fXG4gICAgICB9XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHN0eWxlc1xuICAgICAgaWYgKGluamVjdFN0eWxlcykge1xuICAgICAgICBpbmplY3RTdHlsZXMuY2FsbCh0aGlzLCBjb250ZXh0KVxuICAgICAgfVxuICAgICAgLy8gcmVnaXN0ZXIgY29tcG9uZW50IG1vZHVsZSBpZGVudGlmaWVyIGZvciBhc3luYyBjaHVuayBpbmZlcnJlbmNlXG4gICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cykge1xuICAgICAgICBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cy5hZGQobW9kdWxlSWRlbnRpZmllcilcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdXNlZCBieSBzc3IgaW4gY2FzZSBjb21wb25lbnQgaXMgY2FjaGVkIGFuZCBiZWZvcmVDcmVhdGVcbiAgICAvLyBuZXZlciBnZXRzIGNhbGxlZFxuICAgIG9wdGlvbnMuX3NzclJlZ2lzdGVyID0gaG9va1xuICB9IGVsc2UgaWYgKGluamVjdFN0eWxlcykge1xuICAgIGhvb2sgPSBzaGFkb3dNb2RlXG4gICAgICA/IGZ1bmN0aW9uICgpIHsgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgdGhpcy4kcm9vdC4kb3B0aW9ucy5zaGFkb3dSb290KSB9XG4gICAgICA6IGluamVjdFN0eWxlc1xuICB9XG5cbiAgaWYgKGhvb2spIHtcbiAgICBpZiAob3B0aW9ucy5mdW5jdGlvbmFsKSB7XG4gICAgICAvLyBmb3IgdGVtcGxhdGUtb25seSBob3QtcmVsb2FkIGJlY2F1c2UgaW4gdGhhdCBjYXNlIHRoZSByZW5kZXIgZm4gZG9lc24ndFxuICAgICAgLy8gZ28gdGhyb3VnaCB0aGUgbm9ybWFsaXplclxuICAgICAgb3B0aW9ucy5faW5qZWN0U3R5bGVzID0gaG9va1xuICAgICAgLy8gcmVnaXN0ZXIgZm9yIGZ1bmN0aW9uYWwgY29tcG9uZW50IGluIHZ1ZSBmaWxlXG4gICAgICB2YXIgb3JpZ2luYWxSZW5kZXIgPSBvcHRpb25zLnJlbmRlclxuICAgICAgb3B0aW9ucy5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXJXaXRoU3R5bGVJbmplY3Rpb24gKGgsIGNvbnRleHQpIHtcbiAgICAgICAgaG9vay5jYWxsKGNvbnRleHQpXG4gICAgICAgIHJldHVybiBvcmlnaW5hbFJlbmRlcihoLCBjb250ZXh0KVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHJlZ2lzdHJhdGlvbiBhcyBiZWZvcmVDcmVhdGUgaG9va1xuICAgICAgdmFyIGV4aXN0aW5nID0gb3B0aW9ucy5iZWZvcmVDcmVhdGVcbiAgICAgIG9wdGlvbnMuYmVmb3JlQ3JlYXRlID0gZXhpc3RpbmdcbiAgICAgICAgPyBbXS5jb25jYXQoZXhpc3RpbmcsIGhvb2spXG4gICAgICAgIDogW2hvb2tdXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBleHBvcnRzOiBzY3JpcHRFeHBvcnRzLFxuICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgfVxufVxuIiwiLyohXG4gKiB2dWV4IHYzLjUuMVxuICogKGMpIDIwMjAgRXZhbiBZb3VcbiAqIEBsaWNlbnNlIE1JVFxuICovXG5mdW5jdGlvbiBhcHBseU1peGluIChWdWUpIHtcbiAgdmFyIHZlcnNpb24gPSBOdW1iZXIoVnVlLnZlcnNpb24uc3BsaXQoJy4nKVswXSk7XG5cbiAgaWYgKHZlcnNpb24gPj0gMikge1xuICAgIFZ1ZS5taXhpbih7IGJlZm9yZUNyZWF0ZTogdnVleEluaXQgfSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gb3ZlcnJpZGUgaW5pdCBhbmQgaW5qZWN0IHZ1ZXggaW5pdCBwcm9jZWR1cmVcbiAgICAvLyBmb3IgMS54IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuICAgIHZhciBfaW5pdCA9IFZ1ZS5wcm90b3R5cGUuX2luaXQ7XG4gICAgVnVlLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICBpZiAoIG9wdGlvbnMgPT09IHZvaWQgMCApIG9wdGlvbnMgPSB7fTtcblxuICAgICAgb3B0aW9ucy5pbml0ID0gb3B0aW9ucy5pbml0XG4gICAgICAgID8gW3Z1ZXhJbml0XS5jb25jYXQob3B0aW9ucy5pbml0KVxuICAgICAgICA6IHZ1ZXhJbml0O1xuICAgICAgX2luaXQuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFZ1ZXggaW5pdCBob29rLCBpbmplY3RlZCBpbnRvIGVhY2ggaW5zdGFuY2VzIGluaXQgaG9va3MgbGlzdC5cbiAgICovXG5cbiAgZnVuY3Rpb24gdnVleEluaXQgKCkge1xuICAgIHZhciBvcHRpb25zID0gdGhpcy4kb3B0aW9ucztcbiAgICAvLyBzdG9yZSBpbmplY3Rpb25cbiAgICBpZiAob3B0aW9ucy5zdG9yZSkge1xuICAgICAgdGhpcy4kc3RvcmUgPSB0eXBlb2Ygb3B0aW9ucy5zdG9yZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IG9wdGlvbnMuc3RvcmUoKVxuICAgICAgICA6IG9wdGlvbnMuc3RvcmU7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLnBhcmVudCAmJiBvcHRpb25zLnBhcmVudC4kc3RvcmUpIHtcbiAgICAgIHRoaXMuJHN0b3JlID0gb3B0aW9ucy5wYXJlbnQuJHN0b3JlO1xuICAgIH1cbiAgfVxufVxuXG52YXIgdGFyZ2V0ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCdcbiAgPyB3aW5kb3dcbiAgOiB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJ1xuICAgID8gZ2xvYmFsXG4gICAgOiB7fTtcbnZhciBkZXZ0b29sSG9vayA9IHRhcmdldC5fX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fO1xuXG5mdW5jdGlvbiBkZXZ0b29sUGx1Z2luIChzdG9yZSkge1xuICBpZiAoIWRldnRvb2xIb29rKSB7IHJldHVybiB9XG5cbiAgc3RvcmUuX2RldnRvb2xIb29rID0gZGV2dG9vbEhvb2s7XG5cbiAgZGV2dG9vbEhvb2suZW1pdCgndnVleDppbml0Jywgc3RvcmUpO1xuXG4gIGRldnRvb2xIb29rLm9uKCd2dWV4OnRyYXZlbC10by1zdGF0ZScsIGZ1bmN0aW9uICh0YXJnZXRTdGF0ZSkge1xuICAgIHN0b3JlLnJlcGxhY2VTdGF0ZSh0YXJnZXRTdGF0ZSk7XG4gIH0pO1xuXG4gIHN0b3JlLnN1YnNjcmliZShmdW5jdGlvbiAobXV0YXRpb24sIHN0YXRlKSB7XG4gICAgZGV2dG9vbEhvb2suZW1pdCgndnVleDptdXRhdGlvbicsIG11dGF0aW9uLCBzdGF0ZSk7XG4gIH0sIHsgcHJlcGVuZDogdHJ1ZSB9KTtcblxuICBzdG9yZS5zdWJzY3JpYmVBY3Rpb24oZnVuY3Rpb24gKGFjdGlvbiwgc3RhdGUpIHtcbiAgICBkZXZ0b29sSG9vay5lbWl0KCd2dWV4OmFjdGlvbicsIGFjdGlvbiwgc3RhdGUpO1xuICB9LCB7IHByZXBlbmQ6IHRydWUgfSk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBmaXJzdCBpdGVtIHRoYXQgcGFzcyB0aGUgdGVzdFxuICogYnkgc2Vjb25kIGFyZ3VtZW50IGZ1bmN0aW9uXG4gKlxuICogQHBhcmFtIHtBcnJheX0gbGlzdFxuICogQHBhcmFtIHtGdW5jdGlvbn0gZlxuICogQHJldHVybiB7Kn1cbiAqL1xuZnVuY3Rpb24gZmluZCAobGlzdCwgZikge1xuICByZXR1cm4gbGlzdC5maWx0ZXIoZilbMF1cbn1cblxuLyoqXG4gKiBEZWVwIGNvcHkgdGhlIGdpdmVuIG9iamVjdCBjb25zaWRlcmluZyBjaXJjdWxhciBzdHJ1Y3R1cmUuXG4gKiBUaGlzIGZ1bmN0aW9uIGNhY2hlcyBhbGwgbmVzdGVkIG9iamVjdHMgYW5kIGl0cyBjb3BpZXMuXG4gKiBJZiBpdCBkZXRlY3RzIGNpcmN1bGFyIHN0cnVjdHVyZSwgdXNlIGNhY2hlZCBjb3B5IHRvIGF2b2lkIGluZmluaXRlIGxvb3AuXG4gKlxuICogQHBhcmFtIHsqfSBvYmpcbiAqIEBwYXJhbSB7QXJyYXk8T2JqZWN0Pn0gY2FjaGVcbiAqIEByZXR1cm4geyp9XG4gKi9cbmZ1bmN0aW9uIGRlZXBDb3B5IChvYmosIGNhY2hlKSB7XG4gIGlmICggY2FjaGUgPT09IHZvaWQgMCApIGNhY2hlID0gW107XG5cbiAgLy8ganVzdCByZXR1cm4gaWYgb2JqIGlzIGltbXV0YWJsZSB2YWx1ZVxuICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG9ialxuICB9XG5cbiAgLy8gaWYgb2JqIGlzIGhpdCwgaXQgaXMgaW4gY2lyY3VsYXIgc3RydWN0dXJlXG4gIHZhciBoaXQgPSBmaW5kKGNhY2hlLCBmdW5jdGlvbiAoYykgeyByZXR1cm4gYy5vcmlnaW5hbCA9PT0gb2JqOyB9KTtcbiAgaWYgKGhpdCkge1xuICAgIHJldHVybiBoaXQuY29weVxuICB9XG5cbiAgdmFyIGNvcHkgPSBBcnJheS5pc0FycmF5KG9iaikgPyBbXSA6IHt9O1xuICAvLyBwdXQgdGhlIGNvcHkgaW50byBjYWNoZSBhdCBmaXJzdFxuICAvLyBiZWNhdXNlIHdlIHdhbnQgdG8gcmVmZXIgaXQgaW4gcmVjdXJzaXZlIGRlZXBDb3B5XG4gIGNhY2hlLnB1c2goe1xuICAgIG9yaWdpbmFsOiBvYmosXG4gICAgY29weTogY29weVxuICB9KTtcblxuICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIGNvcHlba2V5XSA9IGRlZXBDb3B5KG9ialtrZXldLCBjYWNoZSk7XG4gIH0pO1xuXG4gIHJldHVybiBjb3B5XG59XG5cbi8qKlxuICogZm9yRWFjaCBmb3Igb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIGZvckVhY2hWYWx1ZSAob2JqLCBmbikge1xuICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gZm4ob2JqW2tleV0sIGtleSk7IH0pO1xufVxuXG5mdW5jdGlvbiBpc09iamVjdCAob2JqKSB7XG4gIHJldHVybiBvYmogIT09IG51bGwgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCdcbn1cblxuZnVuY3Rpb24gaXNQcm9taXNlICh2YWwpIHtcbiAgcmV0dXJuIHZhbCAmJiB0eXBlb2YgdmFsLnRoZW4gPT09ICdmdW5jdGlvbidcbn1cblxuZnVuY3Rpb24gYXNzZXJ0IChjb25kaXRpb24sIG1zZykge1xuICBpZiAoIWNvbmRpdGlvbikgeyB0aHJvdyBuZXcgRXJyb3IoKFwiW3Z1ZXhdIFwiICsgbXNnKSkgfVxufVxuXG5mdW5jdGlvbiBwYXJ0aWFsIChmbiwgYXJnKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZuKGFyZylcbiAgfVxufVxuXG4vLyBCYXNlIGRhdGEgc3RydWN0IGZvciBzdG9yZSdzIG1vZHVsZSwgcGFja2FnZSB3aXRoIHNvbWUgYXR0cmlidXRlIGFuZCBtZXRob2RcbnZhciBNb2R1bGUgPSBmdW5jdGlvbiBNb2R1bGUgKHJhd01vZHVsZSwgcnVudGltZSkge1xuICB0aGlzLnJ1bnRpbWUgPSBydW50aW1lO1xuICAvLyBTdG9yZSBzb21lIGNoaWxkcmVuIGl0ZW1cbiAgdGhpcy5fY2hpbGRyZW4gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAvLyBTdG9yZSB0aGUgb3JpZ2luIG1vZHVsZSBvYmplY3Qgd2hpY2ggcGFzc2VkIGJ5IHByb2dyYW1tZXJcbiAgdGhpcy5fcmF3TW9kdWxlID0gcmF3TW9kdWxlO1xuICB2YXIgcmF3U3RhdGUgPSByYXdNb2R1bGUuc3RhdGU7XG5cbiAgLy8gU3RvcmUgdGhlIG9yaWdpbiBtb2R1bGUncyBzdGF0ZVxuICB0aGlzLnN0YXRlID0gKHR5cGVvZiByYXdTdGF0ZSA9PT0gJ2Z1bmN0aW9uJyA/IHJhd1N0YXRlKCkgOiByYXdTdGF0ZSkgfHwge307XG59O1xuXG52YXIgcHJvdG90eXBlQWNjZXNzb3JzID0geyBuYW1lc3BhY2VkOiB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH07XG5cbnByb3RvdHlwZUFjY2Vzc29ycy5uYW1lc3BhY2VkLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICEhdGhpcy5fcmF3TW9kdWxlLm5hbWVzcGFjZWRcbn07XG5cbk1vZHVsZS5wcm90b3R5cGUuYWRkQ2hpbGQgPSBmdW5jdGlvbiBhZGRDaGlsZCAoa2V5LCBtb2R1bGUpIHtcbiAgdGhpcy5fY2hpbGRyZW5ba2V5XSA9IG1vZHVsZTtcbn07XG5cbk1vZHVsZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGQgPSBmdW5jdGlvbiByZW1vdmVDaGlsZCAoa2V5KSB7XG4gIGRlbGV0ZSB0aGlzLl9jaGlsZHJlbltrZXldO1xufTtcblxuTW9kdWxlLnByb3RvdHlwZS5nZXRDaGlsZCA9IGZ1bmN0aW9uIGdldENoaWxkIChrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX2NoaWxkcmVuW2tleV1cbn07XG5cbk1vZHVsZS5wcm90b3R5cGUuaGFzQ2hpbGQgPSBmdW5jdGlvbiBoYXNDaGlsZCAoa2V5KSB7XG4gIHJldHVybiBrZXkgaW4gdGhpcy5fY2hpbGRyZW5cbn07XG5cbk1vZHVsZS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlIChyYXdNb2R1bGUpIHtcbiAgdGhpcy5fcmF3TW9kdWxlLm5hbWVzcGFjZWQgPSByYXdNb2R1bGUubmFtZXNwYWNlZDtcbiAgaWYgKHJhd01vZHVsZS5hY3Rpb25zKSB7XG4gICAgdGhpcy5fcmF3TW9kdWxlLmFjdGlvbnMgPSByYXdNb2R1bGUuYWN0aW9ucztcbiAgfVxuICBpZiAocmF3TW9kdWxlLm11dGF0aW9ucykge1xuICAgIHRoaXMuX3Jhd01vZHVsZS5tdXRhdGlvbnMgPSByYXdNb2R1bGUubXV0YXRpb25zO1xuICB9XG4gIGlmIChyYXdNb2R1bGUuZ2V0dGVycykge1xuICAgIHRoaXMuX3Jhd01vZHVsZS5nZXR0ZXJzID0gcmF3TW9kdWxlLmdldHRlcnM7XG4gIH1cbn07XG5cbk1vZHVsZS5wcm90b3R5cGUuZm9yRWFjaENoaWxkID0gZnVuY3Rpb24gZm9yRWFjaENoaWxkIChmbikge1xuICBmb3JFYWNoVmFsdWUodGhpcy5fY2hpbGRyZW4sIGZuKTtcbn07XG5cbk1vZHVsZS5wcm90b3R5cGUuZm9yRWFjaEdldHRlciA9IGZ1bmN0aW9uIGZvckVhY2hHZXR0ZXIgKGZuKSB7XG4gIGlmICh0aGlzLl9yYXdNb2R1bGUuZ2V0dGVycykge1xuICAgIGZvckVhY2hWYWx1ZSh0aGlzLl9yYXdNb2R1bGUuZ2V0dGVycywgZm4pO1xuICB9XG59O1xuXG5Nb2R1bGUucHJvdG90eXBlLmZvckVhY2hBY3Rpb24gPSBmdW5jdGlvbiBmb3JFYWNoQWN0aW9uIChmbikge1xuICBpZiAodGhpcy5fcmF3TW9kdWxlLmFjdGlvbnMpIHtcbiAgICBmb3JFYWNoVmFsdWUodGhpcy5fcmF3TW9kdWxlLmFjdGlvbnMsIGZuKTtcbiAgfVxufTtcblxuTW9kdWxlLnByb3RvdHlwZS5mb3JFYWNoTXV0YXRpb24gPSBmdW5jdGlvbiBmb3JFYWNoTXV0YXRpb24gKGZuKSB7XG4gIGlmICh0aGlzLl9yYXdNb2R1bGUubXV0YXRpb25zKSB7XG4gICAgZm9yRWFjaFZhbHVlKHRoaXMuX3Jhd01vZHVsZS5tdXRhdGlvbnMsIGZuKTtcbiAgfVxufTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoIE1vZHVsZS5wcm90b3R5cGUsIHByb3RvdHlwZUFjY2Vzc29ycyApO1xuXG52YXIgTW9kdWxlQ29sbGVjdGlvbiA9IGZ1bmN0aW9uIE1vZHVsZUNvbGxlY3Rpb24gKHJhd1Jvb3RNb2R1bGUpIHtcbiAgLy8gcmVnaXN0ZXIgcm9vdCBtb2R1bGUgKFZ1ZXguU3RvcmUgb3B0aW9ucylcbiAgdGhpcy5yZWdpc3RlcihbXSwgcmF3Um9vdE1vZHVsZSwgZmFsc2UpO1xufTtcblxuTW9kdWxlQ29sbGVjdGlvbi5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gZ2V0IChwYXRoKSB7XG4gIHJldHVybiBwYXRoLnJlZHVjZShmdW5jdGlvbiAobW9kdWxlLCBrZXkpIHtcbiAgICByZXR1cm4gbW9kdWxlLmdldENoaWxkKGtleSlcbiAgfSwgdGhpcy5yb290KVxufTtcblxuTW9kdWxlQ29sbGVjdGlvbi5wcm90b3R5cGUuZ2V0TmFtZXNwYWNlID0gZnVuY3Rpb24gZ2V0TmFtZXNwYWNlIChwYXRoKSB7XG4gIHZhciBtb2R1bGUgPSB0aGlzLnJvb3Q7XG4gIHJldHVybiBwYXRoLnJlZHVjZShmdW5jdGlvbiAobmFtZXNwYWNlLCBrZXkpIHtcbiAgICBtb2R1bGUgPSBtb2R1bGUuZ2V0Q2hpbGQoa2V5KTtcbiAgICByZXR1cm4gbmFtZXNwYWNlICsgKG1vZHVsZS5uYW1lc3BhY2VkID8ga2V5ICsgJy8nIDogJycpXG4gIH0sICcnKVxufTtcblxuTW9kdWxlQ29sbGVjdGlvbi5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlJDEgKHJhd1Jvb3RNb2R1bGUpIHtcbiAgdXBkYXRlKFtdLCB0aGlzLnJvb3QsIHJhd1Jvb3RNb2R1bGUpO1xufTtcblxuTW9kdWxlQ29sbGVjdGlvbi5wcm90b3R5cGUucmVnaXN0ZXIgPSBmdW5jdGlvbiByZWdpc3RlciAocGF0aCwgcmF3TW9kdWxlLCBydW50aW1lKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgaWYgKCBydW50aW1lID09PSB2b2lkIDAgKSBydW50aW1lID0gdHJ1ZTtcblxuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgYXNzZXJ0UmF3TW9kdWxlKHBhdGgsIHJhd01vZHVsZSk7XG4gIH1cblxuICB2YXIgbmV3TW9kdWxlID0gbmV3IE1vZHVsZShyYXdNb2R1bGUsIHJ1bnRpbWUpO1xuICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICB0aGlzLnJvb3QgPSBuZXdNb2R1bGU7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHBhcmVudCA9IHRoaXMuZ2V0KHBhdGguc2xpY2UoMCwgLTEpKTtcbiAgICBwYXJlbnQuYWRkQ2hpbGQocGF0aFtwYXRoLmxlbmd0aCAtIDFdLCBuZXdNb2R1bGUpO1xuICB9XG5cbiAgLy8gcmVnaXN0ZXIgbmVzdGVkIG1vZHVsZXNcbiAgaWYgKHJhd01vZHVsZS5tb2R1bGVzKSB7XG4gICAgZm9yRWFjaFZhbHVlKHJhd01vZHVsZS5tb2R1bGVzLCBmdW5jdGlvbiAocmF3Q2hpbGRNb2R1bGUsIGtleSkge1xuICAgICAgdGhpcyQxLnJlZ2lzdGVyKHBhdGguY29uY2F0KGtleSksIHJhd0NoaWxkTW9kdWxlLCBydW50aW1lKTtcbiAgICB9KTtcbiAgfVxufTtcblxuTW9kdWxlQ29sbGVjdGlvbi5wcm90b3R5cGUudW5yZWdpc3RlciA9IGZ1bmN0aW9uIHVucmVnaXN0ZXIgKHBhdGgpIHtcbiAgdmFyIHBhcmVudCA9IHRoaXMuZ2V0KHBhdGguc2xpY2UoMCwgLTEpKTtcbiAgdmFyIGtleSA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcbiAgdmFyIGNoaWxkID0gcGFyZW50LmdldENoaWxkKGtleSk7XG5cbiAgaWYgKCFjaGlsZCkge1xuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgXCJbdnVleF0gdHJ5aW5nIHRvIHVucmVnaXN0ZXIgbW9kdWxlICdcIiArIGtleSArIFwiJywgd2hpY2ggaXMgXCIgK1xuICAgICAgICBcIm5vdCByZWdpc3RlcmVkXCJcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKCFjaGlsZC5ydW50aW1lKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBwYXJlbnQucmVtb3ZlQ2hpbGQoa2V5KTtcbn07XG5cbk1vZHVsZUNvbGxlY3Rpb24ucHJvdG90eXBlLmlzUmVnaXN0ZXJlZCA9IGZ1bmN0aW9uIGlzUmVnaXN0ZXJlZCAocGF0aCkge1xuICB2YXIgcGFyZW50ID0gdGhpcy5nZXQocGF0aC5zbGljZSgwLCAtMSkpO1xuICB2YXIga2V5ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuXG4gIHJldHVybiBwYXJlbnQuaGFzQ2hpbGQoa2V5KVxufTtcblxuZnVuY3Rpb24gdXBkYXRlIChwYXRoLCB0YXJnZXRNb2R1bGUsIG5ld01vZHVsZSkge1xuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgYXNzZXJ0UmF3TW9kdWxlKHBhdGgsIG5ld01vZHVsZSk7XG4gIH1cblxuICAvLyB1cGRhdGUgdGFyZ2V0IG1vZHVsZVxuICB0YXJnZXRNb2R1bGUudXBkYXRlKG5ld01vZHVsZSk7XG5cbiAgLy8gdXBkYXRlIG5lc3RlZCBtb2R1bGVzXG4gIGlmIChuZXdNb2R1bGUubW9kdWxlcykge1xuICAgIGZvciAodmFyIGtleSBpbiBuZXdNb2R1bGUubW9kdWxlcykge1xuICAgICAgaWYgKCF0YXJnZXRNb2R1bGUuZ2V0Q2hpbGQoa2V5KSkge1xuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgXCJbdnVleF0gdHJ5aW5nIHRvIGFkZCBhIG5ldyBtb2R1bGUgJ1wiICsga2V5ICsgXCInIG9uIGhvdCByZWxvYWRpbmcsIFwiICtcbiAgICAgICAgICAgICdtYW51YWwgcmVsb2FkIGlzIG5lZWRlZCdcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdXBkYXRlKFxuICAgICAgICBwYXRoLmNvbmNhdChrZXkpLFxuICAgICAgICB0YXJnZXRNb2R1bGUuZ2V0Q2hpbGQoa2V5KSxcbiAgICAgICAgbmV3TW9kdWxlLm1vZHVsZXNba2V5XVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIGZ1bmN0aW9uQXNzZXJ0ID0ge1xuICBhc3NlcnQ6IGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nOyB9LFxuICBleHBlY3RlZDogJ2Z1bmN0aW9uJ1xufTtcblxudmFyIG9iamVjdEFzc2VydCA9IHtcbiAgYXNzZXJ0OiBmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyB8fFxuICAgICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHR5cGVvZiB2YWx1ZS5oYW5kbGVyID09PSAnZnVuY3Rpb24nKTsgfSxcbiAgZXhwZWN0ZWQ6ICdmdW5jdGlvbiBvciBvYmplY3Qgd2l0aCBcImhhbmRsZXJcIiBmdW5jdGlvbidcbn07XG5cbnZhciBhc3NlcnRUeXBlcyA9IHtcbiAgZ2V0dGVyczogZnVuY3Rpb25Bc3NlcnQsXG4gIG11dGF0aW9uczogZnVuY3Rpb25Bc3NlcnQsXG4gIGFjdGlvbnM6IG9iamVjdEFzc2VydFxufTtcblxuZnVuY3Rpb24gYXNzZXJ0UmF3TW9kdWxlIChwYXRoLCByYXdNb2R1bGUpIHtcbiAgT2JqZWN0LmtleXMoYXNzZXJ0VHlwZXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIGlmICghcmF3TW9kdWxlW2tleV0pIHsgcmV0dXJuIH1cblxuICAgIHZhciBhc3NlcnRPcHRpb25zID0gYXNzZXJ0VHlwZXNba2V5XTtcblxuICAgIGZvckVhY2hWYWx1ZShyYXdNb2R1bGVba2V5XSwgZnVuY3Rpb24gKHZhbHVlLCB0eXBlKSB7XG4gICAgICBhc3NlcnQoXG4gICAgICAgIGFzc2VydE9wdGlvbnMuYXNzZXJ0KHZhbHVlKSxcbiAgICAgICAgbWFrZUFzc2VydGlvbk1lc3NhZ2UocGF0aCwga2V5LCB0eXBlLCB2YWx1ZSwgYXNzZXJ0T3B0aW9ucy5leHBlY3RlZClcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBtYWtlQXNzZXJ0aW9uTWVzc2FnZSAocGF0aCwga2V5LCB0eXBlLCB2YWx1ZSwgZXhwZWN0ZWQpIHtcbiAgdmFyIGJ1ZiA9IGtleSArIFwiIHNob3VsZCBiZSBcIiArIGV4cGVjdGVkICsgXCIgYnV0IFxcXCJcIiArIGtleSArIFwiLlwiICsgdHlwZSArIFwiXFxcIlwiO1xuICBpZiAocGF0aC5sZW5ndGggPiAwKSB7XG4gICAgYnVmICs9IFwiIGluIG1vZHVsZSBcXFwiXCIgKyAocGF0aC5qb2luKCcuJykpICsgXCJcXFwiXCI7XG4gIH1cbiAgYnVmICs9IFwiIGlzIFwiICsgKEpTT04uc3RyaW5naWZ5KHZhbHVlKSkgKyBcIi5cIjtcbiAgcmV0dXJuIGJ1ZlxufVxuXG52YXIgVnVlOyAvLyBiaW5kIG9uIGluc3RhbGxcblxudmFyIFN0b3JlID0gZnVuY3Rpb24gU3RvcmUgKG9wdGlvbnMpIHtcbiAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gIGlmICggb3B0aW9ucyA9PT0gdm9pZCAwICkgb3B0aW9ucyA9IHt9O1xuXG4gIC8vIEF1dG8gaW5zdGFsbCBpZiBpdCBpcyBub3QgZG9uZSB5ZXQgYW5kIGB3aW5kb3dgIGhhcyBgVnVlYC5cbiAgLy8gVG8gYWxsb3cgdXNlcnMgdG8gYXZvaWQgYXV0by1pbnN0YWxsYXRpb24gaW4gc29tZSBjYXNlcyxcbiAgLy8gdGhpcyBjb2RlIHNob3VsZCBiZSBwbGFjZWQgaGVyZS4gU2VlICM3MzFcbiAgaWYgKCFWdWUgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LlZ1ZSkge1xuICAgIGluc3RhbGwod2luZG93LlZ1ZSk7XG4gIH1cblxuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgYXNzZXJ0KFZ1ZSwgXCJtdXN0IGNhbGwgVnVlLnVzZShWdWV4KSBiZWZvcmUgY3JlYXRpbmcgYSBzdG9yZSBpbnN0YW5jZS5cIik7XG4gICAgYXNzZXJ0KHR5cGVvZiBQcm9taXNlICE9PSAndW5kZWZpbmVkJywgXCJ2dWV4IHJlcXVpcmVzIGEgUHJvbWlzZSBwb2x5ZmlsbCBpbiB0aGlzIGJyb3dzZXIuXCIpO1xuICAgIGFzc2VydCh0aGlzIGluc3RhbmNlb2YgU3RvcmUsIFwic3RvcmUgbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgbmV3IG9wZXJhdG9yLlwiKTtcbiAgfVxuXG4gIHZhciBwbHVnaW5zID0gb3B0aW9ucy5wbHVnaW5zOyBpZiAoIHBsdWdpbnMgPT09IHZvaWQgMCApIHBsdWdpbnMgPSBbXTtcbiAgdmFyIHN0cmljdCA9IG9wdGlvbnMuc3RyaWN0OyBpZiAoIHN0cmljdCA9PT0gdm9pZCAwICkgc3RyaWN0ID0gZmFsc2U7XG5cbiAgLy8gc3RvcmUgaW50ZXJuYWwgc3RhdGVcbiAgdGhpcy5fY29tbWl0dGluZyA9IGZhbHNlO1xuICB0aGlzLl9hY3Rpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdGhpcy5fYWN0aW9uU3Vic2NyaWJlcnMgPSBbXTtcbiAgdGhpcy5fbXV0YXRpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdGhpcy5fd3JhcHBlZEdldHRlcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB0aGlzLl9tb2R1bGVzID0gbmV3IE1vZHVsZUNvbGxlY3Rpb24ob3B0aW9ucyk7XG4gIHRoaXMuX21vZHVsZXNOYW1lc3BhY2VNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB0aGlzLl9zdWJzY3JpYmVycyA9IFtdO1xuICB0aGlzLl93YXRjaGVyVk0gPSBuZXcgVnVlKCk7XG4gIHRoaXMuX21ha2VMb2NhbEdldHRlcnNDYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgLy8gYmluZCBjb21taXQgYW5kIGRpc3BhdGNoIHRvIHNlbGZcbiAgdmFyIHN0b3JlID0gdGhpcztcbiAgdmFyIHJlZiA9IHRoaXM7XG4gIHZhciBkaXNwYXRjaCA9IHJlZi5kaXNwYXRjaDtcbiAgdmFyIGNvbW1pdCA9IHJlZi5jb21taXQ7XG4gIHRoaXMuZGlzcGF0Y2ggPSBmdW5jdGlvbiBib3VuZERpc3BhdGNoICh0eXBlLCBwYXlsb2FkKSB7XG4gICAgcmV0dXJuIGRpc3BhdGNoLmNhbGwoc3RvcmUsIHR5cGUsIHBheWxvYWQpXG4gIH07XG4gIHRoaXMuY29tbWl0ID0gZnVuY3Rpb24gYm91bmRDb21taXQgKHR5cGUsIHBheWxvYWQsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gY29tbWl0LmNhbGwoc3RvcmUsIHR5cGUsIHBheWxvYWQsIG9wdGlvbnMpXG4gIH07XG5cbiAgLy8gc3RyaWN0IG1vZGVcbiAgdGhpcy5zdHJpY3QgPSBzdHJpY3Q7XG5cbiAgdmFyIHN0YXRlID0gdGhpcy5fbW9kdWxlcy5yb290LnN0YXRlO1xuXG4gIC8vIGluaXQgcm9vdCBtb2R1bGUuXG4gIC8vIHRoaXMgYWxzbyByZWN1cnNpdmVseSByZWdpc3RlcnMgYWxsIHN1Yi1tb2R1bGVzXG4gIC8vIGFuZCBjb2xsZWN0cyBhbGwgbW9kdWxlIGdldHRlcnMgaW5zaWRlIHRoaXMuX3dyYXBwZWRHZXR0ZXJzXG4gIGluc3RhbGxNb2R1bGUodGhpcywgc3RhdGUsIFtdLCB0aGlzLl9tb2R1bGVzLnJvb3QpO1xuXG4gIC8vIGluaXRpYWxpemUgdGhlIHN0b3JlIHZtLCB3aGljaCBpcyByZXNwb25zaWJsZSBmb3IgdGhlIHJlYWN0aXZpdHlcbiAgLy8gKGFsc28gcmVnaXN0ZXJzIF93cmFwcGVkR2V0dGVycyBhcyBjb21wdXRlZCBwcm9wZXJ0aWVzKVxuICByZXNldFN0b3JlVk0odGhpcywgc3RhdGUpO1xuXG4gIC8vIGFwcGx5IHBsdWdpbnNcbiAgcGx1Z2lucy5mb3JFYWNoKGZ1bmN0aW9uIChwbHVnaW4pIHsgcmV0dXJuIHBsdWdpbih0aGlzJDEpOyB9KTtcblxuICB2YXIgdXNlRGV2dG9vbHMgPSBvcHRpb25zLmRldnRvb2xzICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLmRldnRvb2xzIDogVnVlLmNvbmZpZy5kZXZ0b29scztcbiAgaWYgKHVzZURldnRvb2xzKSB7XG4gICAgZGV2dG9vbFBsdWdpbih0aGlzKTtcbiAgfVxufTtcblxudmFyIHByb3RvdHlwZUFjY2Vzc29ycyQxID0geyBzdGF0ZTogeyBjb25maWd1cmFibGU6IHRydWUgfSB9O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMkMS5zdGF0ZS5nZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl92bS5fZGF0YS4kJHN0YXRlXG59O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMkMS5zdGF0ZS5zZXQgPSBmdW5jdGlvbiAodikge1xuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgYXNzZXJ0KGZhbHNlLCBcInVzZSBzdG9yZS5yZXBsYWNlU3RhdGUoKSB0byBleHBsaWNpdCByZXBsYWNlIHN0b3JlIHN0YXRlLlwiKTtcbiAgfVxufTtcblxuU3RvcmUucHJvdG90eXBlLmNvbW1pdCA9IGZ1bmN0aW9uIGNvbW1pdCAoX3R5cGUsIF9wYXlsb2FkLCBfb3B0aW9ucykge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIC8vIGNoZWNrIG9iamVjdC1zdHlsZSBjb21taXRcbiAgdmFyIHJlZiA9IHVuaWZ5T2JqZWN0U3R5bGUoX3R5cGUsIF9wYXlsb2FkLCBfb3B0aW9ucyk7XG4gICAgdmFyIHR5cGUgPSByZWYudHlwZTtcbiAgICB2YXIgcGF5bG9hZCA9IHJlZi5wYXlsb2FkO1xuICAgIHZhciBvcHRpb25zID0gcmVmLm9wdGlvbnM7XG5cbiAgdmFyIG11dGF0aW9uID0geyB0eXBlOiB0eXBlLCBwYXlsb2FkOiBwYXlsb2FkIH07XG4gIHZhciBlbnRyeSA9IHRoaXMuX211dGF0aW9uc1t0eXBlXTtcbiAgaWYgKCFlbnRyeSkge1xuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoKFwiW3Z1ZXhdIHVua25vd24gbXV0YXRpb24gdHlwZTogXCIgKyB0eXBlKSk7XG4gICAgfVxuICAgIHJldHVyblxuICB9XG4gIHRoaXMuX3dpdGhDb21taXQoZnVuY3Rpb24gKCkge1xuICAgIGVudHJ5LmZvckVhY2goZnVuY3Rpb24gY29tbWl0SXRlcmF0b3IgKGhhbmRsZXIpIHtcbiAgICAgIGhhbmRsZXIocGF5bG9hZCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHRoaXMuX3N1YnNjcmliZXJzXG4gICAgLnNsaWNlKCkgLy8gc2hhbGxvdyBjb3B5IHRvIHByZXZlbnQgaXRlcmF0b3IgaW52YWxpZGF0aW9uIGlmIHN1YnNjcmliZXIgc3luY2hyb25vdXNseSBjYWxscyB1bnN1YnNjcmliZVxuICAgIC5mb3JFYWNoKGZ1bmN0aW9uIChzdWIpIHsgcmV0dXJuIHN1YihtdXRhdGlvbiwgdGhpcyQxLnN0YXRlKTsgfSk7XG5cbiAgaWYgKFxuICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJlxuICAgIG9wdGlvbnMgJiYgb3B0aW9ucy5zaWxlbnRcbiAgKSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgXCJbdnVleF0gbXV0YXRpb24gdHlwZTogXCIgKyB0eXBlICsgXCIuIFNpbGVudCBvcHRpb24gaGFzIGJlZW4gcmVtb3ZlZC4gXCIgK1xuICAgICAgJ1VzZSB0aGUgZmlsdGVyIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIHZ1ZS1kZXZ0b29scydcbiAgICApO1xuICB9XG59O1xuXG5TdG9yZS5wcm90b3R5cGUuZGlzcGF0Y2ggPSBmdW5jdGlvbiBkaXNwYXRjaCAoX3R5cGUsIF9wYXlsb2FkKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgLy8gY2hlY2sgb2JqZWN0LXN0eWxlIGRpc3BhdGNoXG4gIHZhciByZWYgPSB1bmlmeU9iamVjdFN0eWxlKF90eXBlLCBfcGF5bG9hZCk7XG4gICAgdmFyIHR5cGUgPSByZWYudHlwZTtcbiAgICB2YXIgcGF5bG9hZCA9IHJlZi5wYXlsb2FkO1xuXG4gIHZhciBhY3Rpb24gPSB7IHR5cGU6IHR5cGUsIHBheWxvYWQ6IHBheWxvYWQgfTtcbiAgdmFyIGVudHJ5ID0gdGhpcy5fYWN0aW9uc1t0eXBlXTtcbiAgaWYgKCFlbnRyeSkge1xuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoKFwiW3Z1ZXhdIHVua25vd24gYWN0aW9uIHR5cGU6IFwiICsgdHlwZSkpO1xuICAgIH1cbiAgICByZXR1cm5cbiAgfVxuXG4gIHRyeSB7XG4gICAgdGhpcy5fYWN0aW9uU3Vic2NyaWJlcnNcbiAgICAgIC5zbGljZSgpIC8vIHNoYWxsb3cgY29weSB0byBwcmV2ZW50IGl0ZXJhdG9yIGludmFsaWRhdGlvbiBpZiBzdWJzY3JpYmVyIHN5bmNocm9ub3VzbHkgY2FsbHMgdW5zdWJzY3JpYmVcbiAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHN1YikgeyByZXR1cm4gc3ViLmJlZm9yZTsgfSlcbiAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uIChzdWIpIHsgcmV0dXJuIHN1Yi5iZWZvcmUoYWN0aW9uLCB0aGlzJDEuc3RhdGUpOyB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIlt2dWV4XSBlcnJvciBpbiBiZWZvcmUgYWN0aW9uIHN1YnNjcmliZXJzOiBcIik7XG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbiAgfVxuXG4gIHZhciByZXN1bHQgPSBlbnRyeS5sZW5ndGggPiAxXG4gICAgPyBQcm9taXNlLmFsbChlbnRyeS5tYXAoZnVuY3Rpb24gKGhhbmRsZXIpIHsgcmV0dXJuIGhhbmRsZXIocGF5bG9hZCk7IH0pKVxuICAgIDogZW50cnlbMF0ocGF5bG9hZCk7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICByZXN1bHQudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzJDEuX2FjdGlvblN1YnNjcmliZXJzXG4gICAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBzdWIuYWZ0ZXI7IH0pXG4gICAgICAgICAgLmZvckVhY2goZnVuY3Rpb24gKHN1YikgeyByZXR1cm4gc3ViLmFmdGVyKGFjdGlvbiwgdGhpcyQxLnN0YXRlKTsgfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJbdnVleF0gZXJyb3IgaW4gYWZ0ZXIgYWN0aW9uIHN1YnNjcmliZXJzOiBcIik7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVzb2x2ZShyZXMpO1xuICAgIH0sIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcyQxLl9hY3Rpb25TdWJzY3JpYmVyc1xuICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHN1YikgeyByZXR1cm4gc3ViLmVycm9yOyB9KVxuICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uIChzdWIpIHsgcmV0dXJuIHN1Yi5lcnJvcihhY3Rpb24sIHRoaXMkMS5zdGF0ZSwgZXJyb3IpOyB9KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcIlt2dWV4XSBlcnJvciBpbiBlcnJvciBhY3Rpb24gc3Vic2NyaWJlcnM6IFwiKTtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZWplY3QoZXJyb3IpO1xuICAgIH0pO1xuICB9KVxufTtcblxuU3RvcmUucHJvdG90eXBlLnN1YnNjcmliZSA9IGZ1bmN0aW9uIHN1YnNjcmliZSAoZm4sIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGdlbmVyaWNTdWJzY3JpYmUoZm4sIHRoaXMuX3N1YnNjcmliZXJzLCBvcHRpb25zKVxufTtcblxuU3RvcmUucHJvdG90eXBlLnN1YnNjcmliZUFjdGlvbiA9IGZ1bmN0aW9uIHN1YnNjcmliZUFjdGlvbiAoZm4sIG9wdGlvbnMpIHtcbiAgdmFyIHN1YnMgPSB0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicgPyB7IGJlZm9yZTogZm4gfSA6IGZuO1xuICByZXR1cm4gZ2VuZXJpY1N1YnNjcmliZShzdWJzLCB0aGlzLl9hY3Rpb25TdWJzY3JpYmVycywgb3B0aW9ucylcbn07XG5cblN0b3JlLnByb3RvdHlwZS53YXRjaCA9IGZ1bmN0aW9uIHdhdGNoIChnZXR0ZXIsIGNiLCBvcHRpb25zKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgIGFzc2VydCh0eXBlb2YgZ2V0dGVyID09PSAnZnVuY3Rpb24nLCBcInN0b3JlLndhdGNoIG9ubHkgYWNjZXB0cyBhIGZ1bmN0aW9uLlwiKTtcbiAgfVxuICByZXR1cm4gdGhpcy5fd2F0Y2hlclZNLiR3YXRjaChmdW5jdGlvbiAoKSB7IHJldHVybiBnZXR0ZXIodGhpcyQxLnN0YXRlLCB0aGlzJDEuZ2V0dGVycyk7IH0sIGNiLCBvcHRpb25zKVxufTtcblxuU3RvcmUucHJvdG90eXBlLnJlcGxhY2VTdGF0ZSA9IGZ1bmN0aW9uIHJlcGxhY2VTdGF0ZSAoc3RhdGUpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICB0aGlzLl93aXRoQ29tbWl0KGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzJDEuX3ZtLl9kYXRhLiQkc3RhdGUgPSBzdGF0ZTtcbiAgfSk7XG59O1xuXG5TdG9yZS5wcm90b3R5cGUucmVnaXN0ZXJNb2R1bGUgPSBmdW5jdGlvbiByZWdpc3Rlck1vZHVsZSAocGF0aCwgcmF3TW9kdWxlLCBvcHRpb25zKSB7XG4gICAgaWYgKCBvcHRpb25zID09PSB2b2lkIDAgKSBvcHRpb25zID0ge307XG5cbiAgaWYgKHR5cGVvZiBwYXRoID09PSAnc3RyaW5nJykgeyBwYXRoID0gW3BhdGhdOyB9XG5cbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgIGFzc2VydChBcnJheS5pc0FycmF5KHBhdGgpLCBcIm1vZHVsZSBwYXRoIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gQXJyYXkuXCIpO1xuICAgIGFzc2VydChwYXRoLmxlbmd0aCA+IDAsICdjYW5ub3QgcmVnaXN0ZXIgdGhlIHJvb3QgbW9kdWxlIGJ5IHVzaW5nIHJlZ2lzdGVyTW9kdWxlLicpO1xuICB9XG5cbiAgdGhpcy5fbW9kdWxlcy5yZWdpc3RlcihwYXRoLCByYXdNb2R1bGUpO1xuICBpbnN0YWxsTW9kdWxlKHRoaXMsIHRoaXMuc3RhdGUsIHBhdGgsIHRoaXMuX21vZHVsZXMuZ2V0KHBhdGgpLCBvcHRpb25zLnByZXNlcnZlU3RhdGUpO1xuICAvLyByZXNldCBzdG9yZSB0byB1cGRhdGUgZ2V0dGVycy4uLlxuICByZXNldFN0b3JlVk0odGhpcywgdGhpcy5zdGF0ZSk7XG59O1xuXG5TdG9yZS5wcm90b3R5cGUudW5yZWdpc3Rlck1vZHVsZSA9IGZ1bmN0aW9uIHVucmVnaXN0ZXJNb2R1bGUgKHBhdGgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICBpZiAodHlwZW9mIHBhdGggPT09ICdzdHJpbmcnKSB7IHBhdGggPSBbcGF0aF07IH1cblxuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgYXNzZXJ0KEFycmF5LmlzQXJyYXkocGF0aCksIFwibW9kdWxlIHBhdGggbXVzdCBiZSBhIHN0cmluZyBvciBhbiBBcnJheS5cIik7XG4gIH1cblxuICB0aGlzLl9tb2R1bGVzLnVucmVnaXN0ZXIocGF0aCk7XG4gIHRoaXMuX3dpdGhDb21taXQoZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYXJlbnRTdGF0ZSA9IGdldE5lc3RlZFN0YXRlKHRoaXMkMS5zdGF0ZSwgcGF0aC5zbGljZSgwLCAtMSkpO1xuICAgIFZ1ZS5kZWxldGUocGFyZW50U3RhdGUsIHBhdGhbcGF0aC5sZW5ndGggLSAxXSk7XG4gIH0pO1xuICByZXNldFN0b3JlKHRoaXMpO1xufTtcblxuU3RvcmUucHJvdG90eXBlLmhhc01vZHVsZSA9IGZ1bmN0aW9uIGhhc01vZHVsZSAocGF0aCkge1xuICBpZiAodHlwZW9mIHBhdGggPT09ICdzdHJpbmcnKSB7IHBhdGggPSBbcGF0aF07IH1cblxuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgYXNzZXJ0KEFycmF5LmlzQXJyYXkocGF0aCksIFwibW9kdWxlIHBhdGggbXVzdCBiZSBhIHN0cmluZyBvciBhbiBBcnJheS5cIik7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fbW9kdWxlcy5pc1JlZ2lzdGVyZWQocGF0aClcbn07XG5cblN0b3JlLnByb3RvdHlwZS5ob3RVcGRhdGUgPSBmdW5jdGlvbiBob3RVcGRhdGUgKG5ld09wdGlvbnMpIHtcbiAgdGhpcy5fbW9kdWxlcy51cGRhdGUobmV3T3B0aW9ucyk7XG4gIHJlc2V0U3RvcmUodGhpcywgdHJ1ZSk7XG59O1xuXG5TdG9yZS5wcm90b3R5cGUuX3dpdGhDb21taXQgPSBmdW5jdGlvbiBfd2l0aENvbW1pdCAoZm4pIHtcbiAgdmFyIGNvbW1pdHRpbmcgPSB0aGlzLl9jb21taXR0aW5nO1xuICB0aGlzLl9jb21taXR0aW5nID0gdHJ1ZTtcbiAgZm4oKTtcbiAgdGhpcy5fY29tbWl0dGluZyA9IGNvbW1pdHRpbmc7XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyggU3RvcmUucHJvdG90eXBlLCBwcm90b3R5cGVBY2Nlc3NvcnMkMSApO1xuXG5mdW5jdGlvbiBnZW5lcmljU3Vic2NyaWJlIChmbiwgc3Vicywgb3B0aW9ucykge1xuICBpZiAoc3Vicy5pbmRleE9mKGZuKSA8IDApIHtcbiAgICBvcHRpb25zICYmIG9wdGlvbnMucHJlcGVuZFxuICAgICAgPyBzdWJzLnVuc2hpZnQoZm4pXG4gICAgICA6IHN1YnMucHVzaChmbik7XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaSA9IHN1YnMuaW5kZXhPZihmbik7XG4gICAgaWYgKGkgPiAtMSkge1xuICAgICAgc3Vicy5zcGxpY2UoaSwgMSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlc2V0U3RvcmUgKHN0b3JlLCBob3QpIHtcbiAgc3RvcmUuX2FjdGlvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBzdG9yZS5fbXV0YXRpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgc3RvcmUuX3dyYXBwZWRHZXR0ZXJzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgc3RvcmUuX21vZHVsZXNOYW1lc3BhY2VNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB2YXIgc3RhdGUgPSBzdG9yZS5zdGF0ZTtcbiAgLy8gaW5pdCBhbGwgbW9kdWxlc1xuICBpbnN0YWxsTW9kdWxlKHN0b3JlLCBzdGF0ZSwgW10sIHN0b3JlLl9tb2R1bGVzLnJvb3QsIHRydWUpO1xuICAvLyByZXNldCB2bVxuICByZXNldFN0b3JlVk0oc3RvcmUsIHN0YXRlLCBob3QpO1xufVxuXG5mdW5jdGlvbiByZXNldFN0b3JlVk0gKHN0b3JlLCBzdGF0ZSwgaG90KSB7XG4gIHZhciBvbGRWbSA9IHN0b3JlLl92bTtcblxuICAvLyBiaW5kIHN0b3JlIHB1YmxpYyBnZXR0ZXJzXG4gIHN0b3JlLmdldHRlcnMgPSB7fTtcbiAgLy8gcmVzZXQgbG9jYWwgZ2V0dGVycyBjYWNoZVxuICBzdG9yZS5fbWFrZUxvY2FsR2V0dGVyc0NhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdmFyIHdyYXBwZWRHZXR0ZXJzID0gc3RvcmUuX3dyYXBwZWRHZXR0ZXJzO1xuICB2YXIgY29tcHV0ZWQgPSB7fTtcbiAgZm9yRWFjaFZhbHVlKHdyYXBwZWRHZXR0ZXJzLCBmdW5jdGlvbiAoZm4sIGtleSkge1xuICAgIC8vIHVzZSBjb21wdXRlZCB0byBsZXZlcmFnZSBpdHMgbGF6eS1jYWNoaW5nIG1lY2hhbmlzbVxuICAgIC8vIGRpcmVjdCBpbmxpbmUgZnVuY3Rpb24gdXNlIHdpbGwgbGVhZCB0byBjbG9zdXJlIHByZXNlcnZpbmcgb2xkVm0uXG4gICAgLy8gdXNpbmcgcGFydGlhbCB0byByZXR1cm4gZnVuY3Rpb24gd2l0aCBvbmx5IGFyZ3VtZW50cyBwcmVzZXJ2ZWQgaW4gY2xvc3VyZSBlbnZpcm9ubWVudC5cbiAgICBjb21wdXRlZFtrZXldID0gcGFydGlhbChmbiwgc3RvcmUpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdG9yZS5nZXR0ZXJzLCBrZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuX3ZtW2tleV07IH0sXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlIC8vIGZvciBsb2NhbCBnZXR0ZXJzXG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIHVzZSBhIFZ1ZSBpbnN0YW5jZSB0byBzdG9yZSB0aGUgc3RhdGUgdHJlZVxuICAvLyBzdXBwcmVzcyB3YXJuaW5ncyBqdXN0IGluIGNhc2UgdGhlIHVzZXIgaGFzIGFkZGVkXG4gIC8vIHNvbWUgZnVua3kgZ2xvYmFsIG1peGluc1xuICB2YXIgc2lsZW50ID0gVnVlLmNvbmZpZy5zaWxlbnQ7XG4gIFZ1ZS5jb25maWcuc2lsZW50ID0gdHJ1ZTtcbiAgc3RvcmUuX3ZtID0gbmV3IFZ1ZSh7XG4gICAgZGF0YToge1xuICAgICAgJCRzdGF0ZTogc3RhdGVcbiAgICB9LFxuICAgIGNvbXB1dGVkOiBjb21wdXRlZFxuICB9KTtcbiAgVnVlLmNvbmZpZy5zaWxlbnQgPSBzaWxlbnQ7XG5cbiAgLy8gZW5hYmxlIHN0cmljdCBtb2RlIGZvciBuZXcgdm1cbiAgaWYgKHN0b3JlLnN0cmljdCkge1xuICAgIGVuYWJsZVN0cmljdE1vZGUoc3RvcmUpO1xuICB9XG5cbiAgaWYgKG9sZFZtKSB7XG4gICAgaWYgKGhvdCkge1xuICAgICAgLy8gZGlzcGF0Y2ggY2hhbmdlcyBpbiBhbGwgc3Vic2NyaWJlZCB3YXRjaGVyc1xuICAgICAgLy8gdG8gZm9yY2UgZ2V0dGVyIHJlLWV2YWx1YXRpb24gZm9yIGhvdCByZWxvYWRpbmcuXG4gICAgICBzdG9yZS5fd2l0aENvbW1pdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIG9sZFZtLl9kYXRhLiQkc3RhdGUgPSBudWxsO1xuICAgICAgfSk7XG4gICAgfVxuICAgIFZ1ZS5uZXh0VGljayhmdW5jdGlvbiAoKSB7IHJldHVybiBvbGRWbS4kZGVzdHJveSgpOyB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbnN0YWxsTW9kdWxlIChzdG9yZSwgcm9vdFN0YXRlLCBwYXRoLCBtb2R1bGUsIGhvdCkge1xuICB2YXIgaXNSb290ID0gIXBhdGgubGVuZ3RoO1xuICB2YXIgbmFtZXNwYWNlID0gc3RvcmUuX21vZHVsZXMuZ2V0TmFtZXNwYWNlKHBhdGgpO1xuXG4gIC8vIHJlZ2lzdGVyIGluIG5hbWVzcGFjZSBtYXBcbiAgaWYgKG1vZHVsZS5uYW1lc3BhY2VkKSB7XG4gICAgaWYgKHN0b3JlLl9tb2R1bGVzTmFtZXNwYWNlTWFwW25hbWVzcGFjZV0gJiYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSBkdXBsaWNhdGUgbmFtZXNwYWNlIFwiICsgbmFtZXNwYWNlICsgXCIgZm9yIHRoZSBuYW1lc3BhY2VkIG1vZHVsZSBcIiArIChwYXRoLmpvaW4oJy8nKSkpKTtcbiAgICB9XG4gICAgc3RvcmUuX21vZHVsZXNOYW1lc3BhY2VNYXBbbmFtZXNwYWNlXSA9IG1vZHVsZTtcbiAgfVxuXG4gIC8vIHNldCBzdGF0ZVxuICBpZiAoIWlzUm9vdCAmJiAhaG90KSB7XG4gICAgdmFyIHBhcmVudFN0YXRlID0gZ2V0TmVzdGVkU3RhdGUocm9vdFN0YXRlLCBwYXRoLnNsaWNlKDAsIC0xKSk7XG4gICAgdmFyIG1vZHVsZU5hbWUgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG4gICAgc3RvcmUuX3dpdGhDb21taXQoZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgICBpZiAobW9kdWxlTmFtZSBpbiBwYXJlbnRTdGF0ZSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIChcIlt2dWV4XSBzdGF0ZSBmaWVsZCBcXFwiXCIgKyBtb2R1bGVOYW1lICsgXCJcXFwiIHdhcyBvdmVycmlkZGVuIGJ5IGEgbW9kdWxlIHdpdGggdGhlIHNhbWUgbmFtZSBhdCBcXFwiXCIgKyAocGF0aC5qb2luKCcuJykpICsgXCJcXFwiXCIpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgVnVlLnNldChwYXJlbnRTdGF0ZSwgbW9kdWxlTmFtZSwgbW9kdWxlLnN0YXRlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhciBsb2NhbCA9IG1vZHVsZS5jb250ZXh0ID0gbWFrZUxvY2FsQ29udGV4dChzdG9yZSwgbmFtZXNwYWNlLCBwYXRoKTtcblxuICBtb2R1bGUuZm9yRWFjaE11dGF0aW9uKGZ1bmN0aW9uIChtdXRhdGlvbiwga2V5KSB7XG4gICAgdmFyIG5hbWVzcGFjZWRUeXBlID0gbmFtZXNwYWNlICsga2V5O1xuICAgIHJlZ2lzdGVyTXV0YXRpb24oc3RvcmUsIG5hbWVzcGFjZWRUeXBlLCBtdXRhdGlvbiwgbG9jYWwpO1xuICB9KTtcblxuICBtb2R1bGUuZm9yRWFjaEFjdGlvbihmdW5jdGlvbiAoYWN0aW9uLCBrZXkpIHtcbiAgICB2YXIgdHlwZSA9IGFjdGlvbi5yb290ID8ga2V5IDogbmFtZXNwYWNlICsga2V5O1xuICAgIHZhciBoYW5kbGVyID0gYWN0aW9uLmhhbmRsZXIgfHwgYWN0aW9uO1xuICAgIHJlZ2lzdGVyQWN0aW9uKHN0b3JlLCB0eXBlLCBoYW5kbGVyLCBsb2NhbCk7XG4gIH0pO1xuXG4gIG1vZHVsZS5mb3JFYWNoR2V0dGVyKGZ1bmN0aW9uIChnZXR0ZXIsIGtleSkge1xuICAgIHZhciBuYW1lc3BhY2VkVHlwZSA9IG5hbWVzcGFjZSArIGtleTtcbiAgICByZWdpc3RlckdldHRlcihzdG9yZSwgbmFtZXNwYWNlZFR5cGUsIGdldHRlciwgbG9jYWwpO1xuICB9KTtcblxuICBtb2R1bGUuZm9yRWFjaENoaWxkKGZ1bmN0aW9uIChjaGlsZCwga2V5KSB7XG4gICAgaW5zdGFsbE1vZHVsZShzdG9yZSwgcm9vdFN0YXRlLCBwYXRoLmNvbmNhdChrZXkpLCBjaGlsZCwgaG90KTtcbiAgfSk7XG59XG5cbi8qKlxuICogbWFrZSBsb2NhbGl6ZWQgZGlzcGF0Y2gsIGNvbW1pdCwgZ2V0dGVycyBhbmQgc3RhdGVcbiAqIGlmIHRoZXJlIGlzIG5vIG5hbWVzcGFjZSwganVzdCB1c2Ugcm9vdCBvbmVzXG4gKi9cbmZ1bmN0aW9uIG1ha2VMb2NhbENvbnRleHQgKHN0b3JlLCBuYW1lc3BhY2UsIHBhdGgpIHtcbiAgdmFyIG5vTmFtZXNwYWNlID0gbmFtZXNwYWNlID09PSAnJztcblxuICB2YXIgbG9jYWwgPSB7XG4gICAgZGlzcGF0Y2g6IG5vTmFtZXNwYWNlID8gc3RvcmUuZGlzcGF0Y2ggOiBmdW5jdGlvbiAoX3R5cGUsIF9wYXlsb2FkLCBfb3B0aW9ucykge1xuICAgICAgdmFyIGFyZ3MgPSB1bmlmeU9iamVjdFN0eWxlKF90eXBlLCBfcGF5bG9hZCwgX29wdGlvbnMpO1xuICAgICAgdmFyIHBheWxvYWQgPSBhcmdzLnBheWxvYWQ7XG4gICAgICB2YXIgb3B0aW9ucyA9IGFyZ3Mub3B0aW9ucztcbiAgICAgIHZhciB0eXBlID0gYXJncy50eXBlO1xuXG4gICAgICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMucm9vdCkge1xuICAgICAgICB0eXBlID0gbmFtZXNwYWNlICsgdHlwZTtcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhc3RvcmUuX2FjdGlvbnNbdHlwZV0pIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSB1bmtub3duIGxvY2FsIGFjdGlvbiB0eXBlOiBcIiArIChhcmdzLnR5cGUpICsgXCIsIGdsb2JhbCB0eXBlOiBcIiArIHR5cGUpKTtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gc3RvcmUuZGlzcGF0Y2godHlwZSwgcGF5bG9hZClcbiAgICB9LFxuXG4gICAgY29tbWl0OiBub05hbWVzcGFjZSA/IHN0b3JlLmNvbW1pdCA6IGZ1bmN0aW9uIChfdHlwZSwgX3BheWxvYWQsIF9vcHRpb25zKSB7XG4gICAgICB2YXIgYXJncyA9IHVuaWZ5T2JqZWN0U3R5bGUoX3R5cGUsIF9wYXlsb2FkLCBfb3B0aW9ucyk7XG4gICAgICB2YXIgcGF5bG9hZCA9IGFyZ3MucGF5bG9hZDtcbiAgICAgIHZhciBvcHRpb25zID0gYXJncy5vcHRpb25zO1xuICAgICAgdmFyIHR5cGUgPSBhcmdzLnR5cGU7XG5cbiAgICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5yb290KSB7XG4gICAgICAgIHR5cGUgPSBuYW1lc3BhY2UgKyB0eXBlO1xuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFzdG9yZS5fbXV0YXRpb25zW3R5cGVdKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gdW5rbm93biBsb2NhbCBtdXRhdGlvbiB0eXBlOiBcIiArIChhcmdzLnR5cGUpICsgXCIsIGdsb2JhbCB0eXBlOiBcIiArIHR5cGUpKTtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzdG9yZS5jb21taXQodHlwZSwgcGF5bG9hZCwgb3B0aW9ucyk7XG4gICAgfVxuICB9O1xuXG4gIC8vIGdldHRlcnMgYW5kIHN0YXRlIG9iamVjdCBtdXN0IGJlIGdvdHRlbiBsYXppbHlcbiAgLy8gYmVjYXVzZSB0aGV5IHdpbGwgYmUgY2hhbmdlZCBieSB2bSB1cGRhdGVcbiAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobG9jYWwsIHtcbiAgICBnZXR0ZXJzOiB7XG4gICAgICBnZXQ6IG5vTmFtZXNwYWNlXG4gICAgICAgID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuZ2V0dGVyczsgfVxuICAgICAgICA6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1ha2VMb2NhbEdldHRlcnMoc3RvcmUsIG5hbWVzcGFjZSk7IH1cbiAgICB9LFxuICAgIHN0YXRlOiB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGdldE5lc3RlZFN0YXRlKHN0b3JlLnN0YXRlLCBwYXRoKTsgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGxvY2FsXG59XG5cbmZ1bmN0aW9uIG1ha2VMb2NhbEdldHRlcnMgKHN0b3JlLCBuYW1lc3BhY2UpIHtcbiAgaWYgKCFzdG9yZS5fbWFrZUxvY2FsR2V0dGVyc0NhY2hlW25hbWVzcGFjZV0pIHtcbiAgICB2YXIgZ2V0dGVyc1Byb3h5ID0ge307XG4gICAgdmFyIHNwbGl0UG9zID0gbmFtZXNwYWNlLmxlbmd0aDtcbiAgICBPYmplY3Qua2V5cyhzdG9yZS5nZXR0ZXJzKS5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgICAvLyBza2lwIGlmIHRoZSB0YXJnZXQgZ2V0dGVyIGlzIG5vdCBtYXRjaCB0aGlzIG5hbWVzcGFjZVxuICAgICAgaWYgKHR5cGUuc2xpY2UoMCwgc3BsaXRQb3MpICE9PSBuYW1lc3BhY2UpIHsgcmV0dXJuIH1cblxuICAgICAgLy8gZXh0cmFjdCBsb2NhbCBnZXR0ZXIgdHlwZVxuICAgICAgdmFyIGxvY2FsVHlwZSA9IHR5cGUuc2xpY2Uoc3BsaXRQb3MpO1xuXG4gICAgICAvLyBBZGQgYSBwb3J0IHRvIHRoZSBnZXR0ZXJzIHByb3h5LlxuICAgICAgLy8gRGVmaW5lIGFzIGdldHRlciBwcm9wZXJ0eSBiZWNhdXNlXG4gICAgICAvLyB3ZSBkbyBub3Qgd2FudCB0byBldmFsdWF0ZSB0aGUgZ2V0dGVycyBpbiB0aGlzIHRpbWUuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2V0dGVyc1Byb3h5LCBsb2NhbFR5cGUsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5nZXR0ZXJzW3R5cGVdOyB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBzdG9yZS5fbWFrZUxvY2FsR2V0dGVyc0NhY2hlW25hbWVzcGFjZV0gPSBnZXR0ZXJzUHJveHk7XG4gIH1cblxuICByZXR1cm4gc3RvcmUuX21ha2VMb2NhbEdldHRlcnNDYWNoZVtuYW1lc3BhY2VdXG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyTXV0YXRpb24gKHN0b3JlLCB0eXBlLCBoYW5kbGVyLCBsb2NhbCkge1xuICB2YXIgZW50cnkgPSBzdG9yZS5fbXV0YXRpb25zW3R5cGVdIHx8IChzdG9yZS5fbXV0YXRpb25zW3R5cGVdID0gW10pO1xuICBlbnRyeS5wdXNoKGZ1bmN0aW9uIHdyYXBwZWRNdXRhdGlvbkhhbmRsZXIgKHBheWxvYWQpIHtcbiAgICBoYW5kbGVyLmNhbGwoc3RvcmUsIGxvY2FsLnN0YXRlLCBwYXlsb2FkKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyQWN0aW9uIChzdG9yZSwgdHlwZSwgaGFuZGxlciwgbG9jYWwpIHtcbiAgdmFyIGVudHJ5ID0gc3RvcmUuX2FjdGlvbnNbdHlwZV0gfHwgKHN0b3JlLl9hY3Rpb25zW3R5cGVdID0gW10pO1xuICBlbnRyeS5wdXNoKGZ1bmN0aW9uIHdyYXBwZWRBY3Rpb25IYW5kbGVyIChwYXlsb2FkKSB7XG4gICAgdmFyIHJlcyA9IGhhbmRsZXIuY2FsbChzdG9yZSwge1xuICAgICAgZGlzcGF0Y2g6IGxvY2FsLmRpc3BhdGNoLFxuICAgICAgY29tbWl0OiBsb2NhbC5jb21taXQsXG4gICAgICBnZXR0ZXJzOiBsb2NhbC5nZXR0ZXJzLFxuICAgICAgc3RhdGU6IGxvY2FsLnN0YXRlLFxuICAgICAgcm9vdEdldHRlcnM6IHN0b3JlLmdldHRlcnMsXG4gICAgICByb290U3RhdGU6IHN0b3JlLnN0YXRlXG4gICAgfSwgcGF5bG9hZCk7XG4gICAgaWYgKCFpc1Byb21pc2UocmVzKSkge1xuICAgICAgcmVzID0gUHJvbWlzZS5yZXNvbHZlKHJlcyk7XG4gICAgfVxuICAgIGlmIChzdG9yZS5fZGV2dG9vbEhvb2spIHtcbiAgICAgIHJldHVybiByZXMuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuICAgICAgICBzdG9yZS5fZGV2dG9vbEhvb2suZW1pdCgndnVleDplcnJvcicsIGVycik7XG4gICAgICAgIHRocm93IGVyclxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJlc1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyR2V0dGVyIChzdG9yZSwgdHlwZSwgcmF3R2V0dGVyLCBsb2NhbCkge1xuICBpZiAoc3RvcmUuX3dyYXBwZWRHZXR0ZXJzW3R5cGVdKSB7XG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gZHVwbGljYXRlIGdldHRlciBrZXk6IFwiICsgdHlwZSkpO1xuICAgIH1cbiAgICByZXR1cm5cbiAgfVxuICBzdG9yZS5fd3JhcHBlZEdldHRlcnNbdHlwZV0gPSBmdW5jdGlvbiB3cmFwcGVkR2V0dGVyIChzdG9yZSkge1xuICAgIHJldHVybiByYXdHZXR0ZXIoXG4gICAgICBsb2NhbC5zdGF0ZSwgLy8gbG9jYWwgc3RhdGVcbiAgICAgIGxvY2FsLmdldHRlcnMsIC8vIGxvY2FsIGdldHRlcnNcbiAgICAgIHN0b3JlLnN0YXRlLCAvLyByb290IHN0YXRlXG4gICAgICBzdG9yZS5nZXR0ZXJzIC8vIHJvb3QgZ2V0dGVyc1xuICAgIClcbiAgfTtcbn1cblxuZnVuY3Rpb24gZW5hYmxlU3RyaWN0TW9kZSAoc3RvcmUpIHtcbiAgc3RvcmUuX3ZtLiR3YXRjaChmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9kYXRhLiQkc3RhdGUgfSwgZnVuY3Rpb24gKCkge1xuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgIGFzc2VydChzdG9yZS5fY29tbWl0dGluZywgXCJkbyBub3QgbXV0YXRlIHZ1ZXggc3RvcmUgc3RhdGUgb3V0c2lkZSBtdXRhdGlvbiBoYW5kbGVycy5cIik7XG4gICAgfVxuICB9LCB7IGRlZXA6IHRydWUsIHN5bmM6IHRydWUgfSk7XG59XG5cbmZ1bmN0aW9uIGdldE5lc3RlZFN0YXRlIChzdGF0ZSwgcGF0aCkge1xuICByZXR1cm4gcGF0aC5yZWR1Y2UoZnVuY3Rpb24gKHN0YXRlLCBrZXkpIHsgcmV0dXJuIHN0YXRlW2tleV07IH0sIHN0YXRlKVxufVxuXG5mdW5jdGlvbiB1bmlmeU9iamVjdFN0eWxlICh0eXBlLCBwYXlsb2FkLCBvcHRpb25zKSB7XG4gIGlmIChpc09iamVjdCh0eXBlKSAmJiB0eXBlLnR5cGUpIHtcbiAgICBvcHRpb25zID0gcGF5bG9hZDtcbiAgICBwYXlsb2FkID0gdHlwZTtcbiAgICB0eXBlID0gdHlwZS50eXBlO1xuICB9XG5cbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgIGFzc2VydCh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycsIChcImV4cGVjdHMgc3RyaW5nIGFzIHRoZSB0eXBlLCBidXQgZm91bmQgXCIgKyAodHlwZW9mIHR5cGUpICsgXCIuXCIpKTtcbiAgfVxuXG4gIHJldHVybiB7IHR5cGU6IHR5cGUsIHBheWxvYWQ6IHBheWxvYWQsIG9wdGlvbnM6IG9wdGlvbnMgfVxufVxuXG5mdW5jdGlvbiBpbnN0YWxsIChfVnVlKSB7XG4gIGlmIChWdWUgJiYgX1Z1ZSA9PT0gVnVlKSB7XG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgJ1t2dWV4XSBhbHJlYWR5IGluc3RhbGxlZC4gVnVlLnVzZShWdWV4KSBzaG91bGQgYmUgY2FsbGVkIG9ubHkgb25jZS4nXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm5cbiAgfVxuICBWdWUgPSBfVnVlO1xuICBhcHBseU1peGluKFZ1ZSk7XG59XG5cbi8qKlxuICogUmVkdWNlIHRoZSBjb2RlIHdoaWNoIHdyaXR0ZW4gaW4gVnVlLmpzIGZvciBnZXR0aW5nIHRoZSBzdGF0ZS5cbiAqIEBwYXJhbSB7U3RyaW5nfSBbbmFtZXNwYWNlXSAtIE1vZHVsZSdzIG5hbWVzcGFjZVxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IHN0YXRlcyAjIE9iamVjdCdzIGl0ZW0gY2FuIGJlIGEgZnVuY3Rpb24gd2hpY2ggYWNjZXB0IHN0YXRlIGFuZCBnZXR0ZXJzIGZvciBwYXJhbSwgeW91IGNhbiBkbyBzb21ldGhpbmcgZm9yIHN0YXRlIGFuZCBnZXR0ZXJzIGluIGl0LlxuICogQHBhcmFtIHtPYmplY3R9XG4gKi9cbnZhciBtYXBTdGF0ZSA9IG5vcm1hbGl6ZU5hbWVzcGFjZShmdW5jdGlvbiAobmFtZXNwYWNlLCBzdGF0ZXMpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpc1ZhbGlkTWFwKHN0YXRlcykpIHtcbiAgICBjb25zb2xlLmVycm9yKCdbdnVleF0gbWFwU3RhdGU6IG1hcHBlciBwYXJhbWV0ZXIgbXVzdCBiZSBlaXRoZXIgYW4gQXJyYXkgb3IgYW4gT2JqZWN0Jyk7XG4gIH1cbiAgbm9ybWFsaXplTWFwKHN0YXRlcykuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgdmFyIGtleSA9IHJlZi5rZXk7XG4gICAgdmFyIHZhbCA9IHJlZi52YWw7XG5cbiAgICByZXNba2V5XSA9IGZ1bmN0aW9uIG1hcHBlZFN0YXRlICgpIHtcbiAgICAgIHZhciBzdGF0ZSA9IHRoaXMuJHN0b3JlLnN0YXRlO1xuICAgICAgdmFyIGdldHRlcnMgPSB0aGlzLiRzdG9yZS5nZXR0ZXJzO1xuICAgICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgICB2YXIgbW9kdWxlID0gZ2V0TW9kdWxlQnlOYW1lc3BhY2UodGhpcy4kc3RvcmUsICdtYXBTdGF0ZScsIG5hbWVzcGFjZSk7XG4gICAgICAgIGlmICghbW9kdWxlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUgPSBtb2R1bGUuY29udGV4dC5zdGF0ZTtcbiAgICAgICAgZ2V0dGVycyA9IG1vZHVsZS5jb250ZXh0LmdldHRlcnM7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IHZhbC5jYWxsKHRoaXMsIHN0YXRlLCBnZXR0ZXJzKVxuICAgICAgICA6IHN0YXRlW3ZhbF1cbiAgICB9O1xuICAgIC8vIG1hcmsgdnVleCBnZXR0ZXIgZm9yIGRldnRvb2xzXG4gICAgcmVzW2tleV0udnVleCA9IHRydWU7XG4gIH0pO1xuICByZXR1cm4gcmVzXG59KTtcblxuLyoqXG4gKiBSZWR1Y2UgdGhlIGNvZGUgd2hpY2ggd3JpdHRlbiBpbiBWdWUuanMgZm9yIGNvbW1pdHRpbmcgdGhlIG11dGF0aW9uXG4gKiBAcGFyYW0ge1N0cmluZ30gW25hbWVzcGFjZV0gLSBNb2R1bGUncyBuYW1lc3BhY2VcbiAqIEBwYXJhbSB7T2JqZWN0fEFycmF5fSBtdXRhdGlvbnMgIyBPYmplY3QncyBpdGVtIGNhbiBiZSBhIGZ1bmN0aW9uIHdoaWNoIGFjY2VwdCBgY29tbWl0YCBmdW5jdGlvbiBhcyB0aGUgZmlyc3QgcGFyYW0sIGl0IGNhbiBhY2NlcHQgYW50aG9yIHBhcmFtcy4gWW91IGNhbiBjb21taXQgbXV0YXRpb24gYW5kIGRvIGFueSBvdGhlciB0aGluZ3MgaW4gdGhpcyBmdW5jdGlvbi4gc3BlY2lhbGx5LCBZb3UgbmVlZCB0byBwYXNzIGFudGhvciBwYXJhbXMgZnJvbSB0aGUgbWFwcGVkIGZ1bmN0aW9uLlxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG52YXIgbWFwTXV0YXRpb25zID0gbm9ybWFsaXplTmFtZXNwYWNlKGZ1bmN0aW9uIChuYW1lc3BhY2UsIG11dGF0aW9ucykge1xuICB2YXIgcmVzID0ge307XG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzVmFsaWRNYXAobXV0YXRpb25zKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1t2dWV4XSBtYXBNdXRhdGlvbnM6IG1hcHBlciBwYXJhbWV0ZXIgbXVzdCBiZSBlaXRoZXIgYW4gQXJyYXkgb3IgYW4gT2JqZWN0Jyk7XG4gIH1cbiAgbm9ybWFsaXplTWFwKG11dGF0aW9ucykuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgdmFyIGtleSA9IHJlZi5rZXk7XG4gICAgdmFyIHZhbCA9IHJlZi52YWw7XG5cbiAgICByZXNba2V5XSA9IGZ1bmN0aW9uIG1hcHBlZE11dGF0aW9uICgpIHtcbiAgICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICB3aGlsZSAoIGxlbi0tICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiBdO1xuXG4gICAgICAvLyBHZXQgdGhlIGNvbW1pdCBtZXRob2QgZnJvbSBzdG9yZVxuICAgICAgdmFyIGNvbW1pdCA9IHRoaXMuJHN0b3JlLmNvbW1pdDtcbiAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgdmFyIG1vZHVsZSA9IGdldE1vZHVsZUJ5TmFtZXNwYWNlKHRoaXMuJHN0b3JlLCAnbWFwTXV0YXRpb25zJywgbmFtZXNwYWNlKTtcbiAgICAgICAgaWYgKCFtb2R1bGUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBjb21taXQgPSBtb2R1bGUuY29udGV4dC5jb21taXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IHZhbC5hcHBseSh0aGlzLCBbY29tbWl0XS5jb25jYXQoYXJncykpXG4gICAgICAgIDogY29tbWl0LmFwcGx5KHRoaXMuJHN0b3JlLCBbdmFsXS5jb25jYXQoYXJncykpXG4gICAgfTtcbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vKipcbiAqIFJlZHVjZSB0aGUgY29kZSB3aGljaCB3cml0dGVuIGluIFZ1ZS5qcyBmb3IgZ2V0dGluZyB0aGUgZ2V0dGVyc1xuICogQHBhcmFtIHtTdHJpbmd9IFtuYW1lc3BhY2VdIC0gTW9kdWxlJ3MgbmFtZXNwYWNlXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gZ2V0dGVyc1xuICogQHJldHVybiB7T2JqZWN0fVxuICovXG52YXIgbWFwR2V0dGVycyA9IG5vcm1hbGl6ZU5hbWVzcGFjZShmdW5jdGlvbiAobmFtZXNwYWNlLCBnZXR0ZXJzKSB7XG4gIHZhciByZXMgPSB7fTtcbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaXNWYWxpZE1hcChnZXR0ZXJzKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1t2dWV4XSBtYXBHZXR0ZXJzOiBtYXBwZXIgcGFyYW1ldGVyIG11c3QgYmUgZWl0aGVyIGFuIEFycmF5IG9yIGFuIE9iamVjdCcpO1xuICB9XG4gIG5vcm1hbGl6ZU1hcChnZXR0ZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChyZWYpIHtcbiAgICB2YXIga2V5ID0gcmVmLmtleTtcbiAgICB2YXIgdmFsID0gcmVmLnZhbDtcblxuICAgIC8vIFRoZSBuYW1lc3BhY2UgaGFzIGJlZW4gbXV0YXRlZCBieSBub3JtYWxpemVOYW1lc3BhY2VcbiAgICB2YWwgPSBuYW1lc3BhY2UgKyB2YWw7XG4gICAgcmVzW2tleV0gPSBmdW5jdGlvbiBtYXBwZWRHZXR0ZXIgKCkge1xuICAgICAgaWYgKG5hbWVzcGFjZSAmJiAhZ2V0TW9kdWxlQnlOYW1lc3BhY2UodGhpcy4kc3RvcmUsICdtYXBHZXR0ZXJzJywgbmFtZXNwYWNlKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgISh2YWwgaW4gdGhpcy4kc3RvcmUuZ2V0dGVycykpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gdW5rbm93biBnZXR0ZXI6IFwiICsgdmFsKSk7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbdmFsXVxuICAgIH07XG4gICAgLy8gbWFyayB2dWV4IGdldHRlciBmb3IgZGV2dG9vbHNcbiAgICByZXNba2V5XS52dWV4ID0gdHJ1ZTtcbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vKipcbiAqIFJlZHVjZSB0aGUgY29kZSB3aGljaCB3cml0dGVuIGluIFZ1ZS5qcyBmb3IgZGlzcGF0Y2ggdGhlIGFjdGlvblxuICogQHBhcmFtIHtTdHJpbmd9IFtuYW1lc3BhY2VdIC0gTW9kdWxlJ3MgbmFtZXNwYWNlXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gYWN0aW9ucyAjIE9iamVjdCdzIGl0ZW0gY2FuIGJlIGEgZnVuY3Rpb24gd2hpY2ggYWNjZXB0IGBkaXNwYXRjaGAgZnVuY3Rpb24gYXMgdGhlIGZpcnN0IHBhcmFtLCBpdCBjYW4gYWNjZXB0IGFudGhvciBwYXJhbXMuIFlvdSBjYW4gZGlzcGF0Y2ggYWN0aW9uIGFuZCBkbyBhbnkgb3RoZXIgdGhpbmdzIGluIHRoaXMgZnVuY3Rpb24uIHNwZWNpYWxseSwgWW91IG5lZWQgdG8gcGFzcyBhbnRob3IgcGFyYW1zIGZyb20gdGhlIG1hcHBlZCBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xudmFyIG1hcEFjdGlvbnMgPSBub3JtYWxpemVOYW1lc3BhY2UoZnVuY3Rpb24gKG5hbWVzcGFjZSwgYWN0aW9ucykge1xuICB2YXIgcmVzID0ge307XG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzVmFsaWRNYXAoYWN0aW9ucykpIHtcbiAgICBjb25zb2xlLmVycm9yKCdbdnVleF0gbWFwQWN0aW9uczogbWFwcGVyIHBhcmFtZXRlciBtdXN0IGJlIGVpdGhlciBhbiBBcnJheSBvciBhbiBPYmplY3QnKTtcbiAgfVxuICBub3JtYWxpemVNYXAoYWN0aW9ucykuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgdmFyIGtleSA9IHJlZi5rZXk7XG4gICAgdmFyIHZhbCA9IHJlZi52YWw7XG5cbiAgICByZXNba2V5XSA9IGZ1bmN0aW9uIG1hcHBlZEFjdGlvbiAoKSB7XG4gICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgICAgd2hpbGUgKCBsZW4tLSApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gXTtcblxuICAgICAgLy8gZ2V0IGRpc3BhdGNoIGZ1bmN0aW9uIGZyb20gc3RvcmVcbiAgICAgIHZhciBkaXNwYXRjaCA9IHRoaXMuJHN0b3JlLmRpc3BhdGNoO1xuICAgICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgICB2YXIgbW9kdWxlID0gZ2V0TW9kdWxlQnlOYW1lc3BhY2UodGhpcy4kc3RvcmUsICdtYXBBY3Rpb25zJywgbmFtZXNwYWNlKTtcbiAgICAgICAgaWYgKCFtb2R1bGUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBkaXNwYXRjaCA9IG1vZHVsZS5jb250ZXh0LmRpc3BhdGNoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyB2YWwuYXBwbHkodGhpcywgW2Rpc3BhdGNoXS5jb25jYXQoYXJncykpXG4gICAgICAgIDogZGlzcGF0Y2guYXBwbHkodGhpcy4kc3RvcmUsIFt2YWxdLmNvbmNhdChhcmdzKSlcbiAgICB9O1xuICB9KTtcbiAgcmV0dXJuIHJlc1xufSk7XG5cbi8qKlxuICogUmViaW5kaW5nIG5hbWVzcGFjZSBwYXJhbSBmb3IgbWFwWFhYIGZ1bmN0aW9uIGluIHNwZWNpYWwgc2NvcGVkLCBhbmQgcmV0dXJuIHRoZW0gYnkgc2ltcGxlIG9iamVjdFxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZVxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG52YXIgY3JlYXRlTmFtZXNwYWNlZEhlbHBlcnMgPSBmdW5jdGlvbiAobmFtZXNwYWNlKSB7IHJldHVybiAoe1xuICBtYXBTdGF0ZTogbWFwU3RhdGUuYmluZChudWxsLCBuYW1lc3BhY2UpLFxuICBtYXBHZXR0ZXJzOiBtYXBHZXR0ZXJzLmJpbmQobnVsbCwgbmFtZXNwYWNlKSxcbiAgbWFwTXV0YXRpb25zOiBtYXBNdXRhdGlvbnMuYmluZChudWxsLCBuYW1lc3BhY2UpLFxuICBtYXBBY3Rpb25zOiBtYXBBY3Rpb25zLmJpbmQobnVsbCwgbmFtZXNwYWNlKVxufSk7IH07XG5cbi8qKlxuICogTm9ybWFsaXplIHRoZSBtYXBcbiAqIG5vcm1hbGl6ZU1hcChbMSwgMiwgM10pID0+IFsgeyBrZXk6IDEsIHZhbDogMSB9LCB7IGtleTogMiwgdmFsOiAyIH0sIHsga2V5OiAzLCB2YWw6IDMgfSBdXG4gKiBub3JtYWxpemVNYXAoe2E6IDEsIGI6IDIsIGM6IDN9KSA9PiBbIHsga2V5OiAnYScsIHZhbDogMSB9LCB7IGtleTogJ2InLCB2YWw6IDIgfSwgeyBrZXk6ICdjJywgdmFsOiAzIH0gXVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IG1hcFxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG5mdW5jdGlvbiBub3JtYWxpemVNYXAgKG1hcCkge1xuICBpZiAoIWlzVmFsaWRNYXAobWFwKSkge1xuICAgIHJldHVybiBbXVxuICB9XG4gIHJldHVybiBBcnJheS5pc0FycmF5KG1hcClcbiAgICA/IG1hcC5tYXAoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gKHsga2V5OiBrZXksIHZhbDoga2V5IH0pOyB9KVxuICAgIDogT2JqZWN0LmtleXMobWFwKS5tYXAoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gKHsga2V5OiBrZXksIHZhbDogbWFwW2tleV0gfSk7IH0pXG59XG5cbi8qKlxuICogVmFsaWRhdGUgd2hldGhlciBnaXZlbiBtYXAgaXMgdmFsaWQgb3Igbm90XG4gKiBAcGFyYW0geyp9IG1hcFxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNWYWxpZE1hcCAobWFwKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KG1hcCkgfHwgaXNPYmplY3QobWFwKVxufVxuXG4vKipcbiAqIFJldHVybiBhIGZ1bmN0aW9uIGV4cGVjdCB0d28gcGFyYW0gY29udGFpbnMgbmFtZXNwYWNlIGFuZCBtYXAuIGl0IHdpbGwgbm9ybWFsaXplIHRoZSBuYW1lc3BhY2UgYW5kIHRoZW4gdGhlIHBhcmFtJ3MgZnVuY3Rpb24gd2lsbCBoYW5kbGUgdGhlIG5ldyBuYW1lc3BhY2UgYW5kIHRoZSBtYXAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmblxuICogQHJldHVybiB7RnVuY3Rpb259XG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWVzcGFjZSAoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChuYW1lc3BhY2UsIG1hcCkge1xuICAgIGlmICh0eXBlb2YgbmFtZXNwYWNlICE9PSAnc3RyaW5nJykge1xuICAgICAgbWFwID0gbmFtZXNwYWNlO1xuICAgICAgbmFtZXNwYWNlID0gJyc7XG4gICAgfSBlbHNlIGlmIChuYW1lc3BhY2UuY2hhckF0KG5hbWVzcGFjZS5sZW5ndGggLSAxKSAhPT0gJy8nKSB7XG4gICAgICBuYW1lc3BhY2UgKz0gJy8nO1xuICAgIH1cbiAgICByZXR1cm4gZm4obmFtZXNwYWNlLCBtYXApXG4gIH1cbn1cblxuLyoqXG4gKiBTZWFyY2ggYSBzcGVjaWFsIG1vZHVsZSBmcm9tIHN0b3JlIGJ5IG5hbWVzcGFjZS4gaWYgbW9kdWxlIG5vdCBleGlzdCwgcHJpbnQgZXJyb3IgbWVzc2FnZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzdG9yZVxuICogQHBhcmFtIHtTdHJpbmd9IGhlbHBlclxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZVxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG5mdW5jdGlvbiBnZXRNb2R1bGVCeU5hbWVzcGFjZSAoc3RvcmUsIGhlbHBlciwgbmFtZXNwYWNlKSB7XG4gIHZhciBtb2R1bGUgPSBzdG9yZS5fbW9kdWxlc05hbWVzcGFjZU1hcFtuYW1lc3BhY2VdO1xuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFtb2R1bGUpIHtcbiAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSBtb2R1bGUgbmFtZXNwYWNlIG5vdCBmb3VuZCBpbiBcIiArIGhlbHBlciArIFwiKCk6IFwiICsgbmFtZXNwYWNlKSk7XG4gIH1cbiAgcmV0dXJuIG1vZHVsZVxufVxuXG4vLyBDcmVkaXRzOiBib3Jyb3dlZCBjb2RlIGZyb20gZmNvbWIvcmVkdXgtbG9nZ2VyXG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2dlciAocmVmKSB7XG4gIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSB7fTtcbiAgdmFyIGNvbGxhcHNlZCA9IHJlZi5jb2xsYXBzZWQ7IGlmICggY29sbGFwc2VkID09PSB2b2lkIDAgKSBjb2xsYXBzZWQgPSB0cnVlO1xuICB2YXIgZmlsdGVyID0gcmVmLmZpbHRlcjsgaWYgKCBmaWx0ZXIgPT09IHZvaWQgMCApIGZpbHRlciA9IGZ1bmN0aW9uIChtdXRhdGlvbiwgc3RhdGVCZWZvcmUsIHN0YXRlQWZ0ZXIpIHsgcmV0dXJuIHRydWU7IH07XG4gIHZhciB0cmFuc2Zvcm1lciA9IHJlZi50cmFuc2Zvcm1lcjsgaWYgKCB0cmFuc2Zvcm1lciA9PT0gdm9pZCAwICkgdHJhbnNmb3JtZXIgPSBmdW5jdGlvbiAoc3RhdGUpIHsgcmV0dXJuIHN0YXRlOyB9O1xuICB2YXIgbXV0YXRpb25UcmFuc2Zvcm1lciA9IHJlZi5tdXRhdGlvblRyYW5zZm9ybWVyOyBpZiAoIG11dGF0aW9uVHJhbnNmb3JtZXIgPT09IHZvaWQgMCApIG11dGF0aW9uVHJhbnNmb3JtZXIgPSBmdW5jdGlvbiAobXV0KSB7IHJldHVybiBtdXQ7IH07XG4gIHZhciBhY3Rpb25GaWx0ZXIgPSByZWYuYWN0aW9uRmlsdGVyOyBpZiAoIGFjdGlvbkZpbHRlciA9PT0gdm9pZCAwICkgYWN0aW9uRmlsdGVyID0gZnVuY3Rpb24gKGFjdGlvbiwgc3RhdGUpIHsgcmV0dXJuIHRydWU7IH07XG4gIHZhciBhY3Rpb25UcmFuc2Zvcm1lciA9IHJlZi5hY3Rpb25UcmFuc2Zvcm1lcjsgaWYgKCBhY3Rpb25UcmFuc2Zvcm1lciA9PT0gdm9pZCAwICkgYWN0aW9uVHJhbnNmb3JtZXIgPSBmdW5jdGlvbiAoYWN0KSB7IHJldHVybiBhY3Q7IH07XG4gIHZhciBsb2dNdXRhdGlvbnMgPSByZWYubG9nTXV0YXRpb25zOyBpZiAoIGxvZ011dGF0aW9ucyA9PT0gdm9pZCAwICkgbG9nTXV0YXRpb25zID0gdHJ1ZTtcbiAgdmFyIGxvZ0FjdGlvbnMgPSByZWYubG9nQWN0aW9uczsgaWYgKCBsb2dBY3Rpb25zID09PSB2b2lkIDAgKSBsb2dBY3Rpb25zID0gdHJ1ZTtcbiAgdmFyIGxvZ2dlciA9IHJlZi5sb2dnZXI7IGlmICggbG9nZ2VyID09PSB2b2lkIDAgKSBsb2dnZXIgPSBjb25zb2xlO1xuXG4gIHJldHVybiBmdW5jdGlvbiAoc3RvcmUpIHtcbiAgICB2YXIgcHJldlN0YXRlID0gZGVlcENvcHkoc3RvcmUuc3RhdGUpO1xuXG4gICAgaWYgKHR5cGVvZiBsb2dnZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAobG9nTXV0YXRpb25zKSB7XG4gICAgICBzdG9yZS5zdWJzY3JpYmUoZnVuY3Rpb24gKG11dGF0aW9uLCBzdGF0ZSkge1xuICAgICAgICB2YXIgbmV4dFN0YXRlID0gZGVlcENvcHkoc3RhdGUpO1xuXG4gICAgICAgIGlmIChmaWx0ZXIobXV0YXRpb24sIHByZXZTdGF0ZSwgbmV4dFN0YXRlKSkge1xuICAgICAgICAgIHZhciBmb3JtYXR0ZWRUaW1lID0gZ2V0Rm9ybWF0dGVkVGltZSgpO1xuICAgICAgICAgIHZhciBmb3JtYXR0ZWRNdXRhdGlvbiA9IG11dGF0aW9uVHJhbnNmb3JtZXIobXV0YXRpb24pO1xuICAgICAgICAgIHZhciBtZXNzYWdlID0gXCJtdXRhdGlvbiBcIiArIChtdXRhdGlvbi50eXBlKSArIGZvcm1hdHRlZFRpbWU7XG5cbiAgICAgICAgICBzdGFydE1lc3NhZ2UobG9nZ2VyLCBtZXNzYWdlLCBjb2xsYXBzZWQpO1xuICAgICAgICAgIGxvZ2dlci5sb2coJyVjIHByZXYgc3RhdGUnLCAnY29sb3I6ICM5RTlFOUU7IGZvbnQtd2VpZ2h0OiBib2xkJywgdHJhbnNmb3JtZXIocHJldlN0YXRlKSk7XG4gICAgICAgICAgbG9nZ2VyLmxvZygnJWMgbXV0YXRpb24nLCAnY29sb3I6ICMwM0E5RjQ7IGZvbnQtd2VpZ2h0OiBib2xkJywgZm9ybWF0dGVkTXV0YXRpb24pO1xuICAgICAgICAgIGxvZ2dlci5sb2coJyVjIG5leHQgc3RhdGUnLCAnY29sb3I6ICM0Q0FGNTA7IGZvbnQtd2VpZ2h0OiBib2xkJywgdHJhbnNmb3JtZXIobmV4dFN0YXRlKSk7XG4gICAgICAgICAgZW5kTWVzc2FnZShsb2dnZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJldlN0YXRlID0gbmV4dFN0YXRlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGxvZ0FjdGlvbnMpIHtcbiAgICAgIHN0b3JlLnN1YnNjcmliZUFjdGlvbihmdW5jdGlvbiAoYWN0aW9uLCBzdGF0ZSkge1xuICAgICAgICBpZiAoYWN0aW9uRmlsdGVyKGFjdGlvbiwgc3RhdGUpKSB7XG4gICAgICAgICAgdmFyIGZvcm1hdHRlZFRpbWUgPSBnZXRGb3JtYXR0ZWRUaW1lKCk7XG4gICAgICAgICAgdmFyIGZvcm1hdHRlZEFjdGlvbiA9IGFjdGlvblRyYW5zZm9ybWVyKGFjdGlvbik7XG4gICAgICAgICAgdmFyIG1lc3NhZ2UgPSBcImFjdGlvbiBcIiArIChhY3Rpb24udHlwZSkgKyBmb3JtYXR0ZWRUaW1lO1xuXG4gICAgICAgICAgc3RhcnRNZXNzYWdlKGxvZ2dlciwgbWVzc2FnZSwgY29sbGFwc2VkKTtcbiAgICAgICAgICBsb2dnZXIubG9nKCclYyBhY3Rpb24nLCAnY29sb3I6ICMwM0E5RjQ7IGZvbnQtd2VpZ2h0OiBib2xkJywgZm9ybWF0dGVkQWN0aW9uKTtcbiAgICAgICAgICBlbmRNZXNzYWdlKGxvZ2dlcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzdGFydE1lc3NhZ2UgKGxvZ2dlciwgbWVzc2FnZSwgY29sbGFwc2VkKSB7XG4gIHZhciBzdGFydE1lc3NhZ2UgPSBjb2xsYXBzZWRcbiAgICA/IGxvZ2dlci5ncm91cENvbGxhcHNlZFxuICAgIDogbG9nZ2VyLmdyb3VwO1xuXG4gIC8vIHJlbmRlclxuICB0cnkge1xuICAgIHN0YXJ0TWVzc2FnZS5jYWxsKGxvZ2dlciwgbWVzc2FnZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2dnZXIubG9nKG1lc3NhZ2UpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVuZE1lc3NhZ2UgKGxvZ2dlcikge1xuICB0cnkge1xuICAgIGxvZ2dlci5ncm91cEVuZCgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmxvZygn4oCU4oCUIGxvZyBlbmQg4oCU4oCUJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0Rm9ybWF0dGVkVGltZSAoKSB7XG4gIHZhciB0aW1lID0gbmV3IERhdGUoKTtcbiAgcmV0dXJuIChcIiBAIFwiICsgKHBhZCh0aW1lLmdldEhvdXJzKCksIDIpKSArIFwiOlwiICsgKHBhZCh0aW1lLmdldE1pbnV0ZXMoKSwgMikpICsgXCI6XCIgKyAocGFkKHRpbWUuZ2V0U2Vjb25kcygpLCAyKSkgKyBcIi5cIiArIChwYWQodGltZS5nZXRNaWxsaXNlY29uZHMoKSwgMykpKVxufVxuXG5mdW5jdGlvbiByZXBlYXQgKHN0ciwgdGltZXMpIHtcbiAgcmV0dXJuIChuZXcgQXJyYXkodGltZXMgKyAxKSkuam9pbihzdHIpXG59XG5cbmZ1bmN0aW9uIHBhZCAobnVtLCBtYXhMZW5ndGgpIHtcbiAgcmV0dXJuIHJlcGVhdCgnMCcsIG1heExlbmd0aCAtIG51bS50b1N0cmluZygpLmxlbmd0aCkgKyBudW1cbn1cblxudmFyIGluZGV4ID0ge1xuICBTdG9yZTogU3RvcmUsXG4gIGluc3RhbGw6IGluc3RhbGwsXG4gIHZlcnNpb246ICczLjUuMScsXG4gIG1hcFN0YXRlOiBtYXBTdGF0ZSxcbiAgbWFwTXV0YXRpb25zOiBtYXBNdXRhdGlvbnMsXG4gIG1hcEdldHRlcnM6IG1hcEdldHRlcnMsXG4gIG1hcEFjdGlvbnM6IG1hcEFjdGlvbnMsXG4gIGNyZWF0ZU5hbWVzcGFjZWRIZWxwZXJzOiBjcmVhdGVOYW1lc3BhY2VkSGVscGVycyxcbiAgY3JlYXRlTG9nZ2VyOiBjcmVhdGVMb2dnZXJcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGluZGV4O1xuZXhwb3J0IHsgU3RvcmUsIGNyZWF0ZUxvZ2dlciwgY3JlYXRlTmFtZXNwYWNlZEhlbHBlcnMsIGluc3RhbGwsIG1hcEFjdGlvbnMsIG1hcEdldHRlcnMsIG1hcE11dGF0aW9ucywgbWFwU3RhdGUgfTtcbiIsIlxudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS03LTIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTctMyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1RvYXN0cldyYXBwZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MWQ1NDBiZWImbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiKTtcblxuaWYodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG5cbnZhciB0cmFuc2Zvcm07XG52YXIgaW5zZXJ0SW50bztcblxuXG5cbnZhciBvcHRpb25zID0ge1wiaG1yXCI6dHJ1ZX1cblxub3B0aW9ucy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm1cbm9wdGlvbnMuaW5zZXJ0SW50byA9IHVuZGVmaW5lZDtcblxudmFyIHVwZGF0ZSA9IHJlcXVpcmUoXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzLmpzXCIpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5pZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2FscztcblxuaWYobW9kdWxlLmhvdCkge1xuXHRtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Ub2FzdHJXcmFwcGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTFkNTQwYmViJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIiwgZnVuY3Rpb24oKSB7XG5cdFx0dmFyIG5ld0NvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS03LTIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTctMyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1RvYXN0cldyYXBwZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MWQ1NDBiZWImbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiKTtcblxuXHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXG5cdFx0dmFyIGxvY2FscyA9IChmdW5jdGlvbihhLCBiKSB7XG5cdFx0XHR2YXIga2V5LCBpZHggPSAwO1xuXG5cdFx0XHRmb3Ioa2V5IGluIGEpIHtcblx0XHRcdFx0aWYoIWIgfHwgYVtrZXldICE9PSBiW2tleV0pIHJldHVybiBmYWxzZTtcblx0XHRcdFx0aWR4Kys7XG5cdFx0XHR9XG5cblx0XHRcdGZvcihrZXkgaW4gYikgaWR4LS07XG5cblx0XHRcdHJldHVybiBpZHggPT09IDA7XG5cdFx0fShjb250ZW50LmxvY2FscywgbmV3Q29udGVudC5sb2NhbHMpKTtcblxuXHRcdGlmKCFsb2NhbHMpIHRocm93IG5ldyBFcnJvcignQWJvcnRpbmcgQ1NTIEhNUiBkdWUgdG8gY2hhbmdlZCBjc3MtbW9kdWxlcyBsb2NhbHMuJyk7XG5cblx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdH0pO1xuXG5cdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufSIsIid1c2Ugc3RyaWN0JztcblxudmFyIGVuaGFuY2VFcnJvciA9IHJlcXVpcmUoJy4vZW5oYW5jZUVycm9yJyk7XG5cbi8qKlxuICogQ3JlYXRlIGFuIEVycm9yIHdpdGggdGhlIHNwZWNpZmllZCBtZXNzYWdlLCBjb25maWcsIGVycm9yIGNvZGUsIHJlcXVlc3QgYW5kIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnLlxuICogQHBhcmFtIHtzdHJpbmd9IFtjb2RlXSBUaGUgZXJyb3IgY29kZSAoZm9yIGV4YW1wbGUsICdFQ09OTkFCT1JURUQnKS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVxdWVzdF0gVGhlIHJlcXVlc3QuXG4gKiBAcGFyYW0ge09iamVjdH0gW3Jlc3BvbnNlXSBUaGUgcmVzcG9uc2UuXG4gKiBAcmV0dXJucyB7RXJyb3J9IFRoZSBjcmVhdGVkIGVycm9yLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNyZWF0ZUVycm9yKG1lc3NhZ2UsIGNvbmZpZywgY29kZSwgcmVxdWVzdCwgcmVzcG9uc2UpIHtcbiAgdmFyIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICByZXR1cm4gZW5oYW5jZUVycm9yKGVycm9yLCBjb25maWcsIGNvZGUsIHJlcXVlc3QsIHJlc3BvbnNlKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNDYW5jZWwodmFsdWUpIHtcbiAgcmV0dXJuICEhKHZhbHVlICYmIHZhbHVlLl9fQ0FOQ0VMX18pO1xufTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIExvZGFzaCA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIENvcHlyaWdodCBPcGVuSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIDxodHRwczovL29wZW5qc2Yub3JnLz5cbiAqIFJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlIDxodHRwczovL2xvZGFzaC5jb20vbGljZW5zZT5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnNcbiAqL1xuOyhmdW5jdGlvbigpIHtcblxuICAvKiogVXNlZCBhcyBhIHNhZmUgcmVmZXJlbmNlIGZvciBgdW5kZWZpbmVkYCBpbiBwcmUtRVM1IGVudmlyb25tZW50cy4gKi9cbiAgdmFyIHVuZGVmaW5lZDtcblxuICAvKiogVXNlZCBhcyB0aGUgc2VtYW50aWMgdmVyc2lvbiBudW1iZXIuICovXG4gIHZhciBWRVJTSU9OID0gJzQuMTcuMjAnO1xuXG4gIC8qKiBVc2VkIGFzIHRoZSBzaXplIHRvIGVuYWJsZSBsYXJnZSBhcnJheSBvcHRpbWl6YXRpb25zLiAqL1xuICB2YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuICAvKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG4gIHZhciBDT1JFX0VSUk9SX1RFWFQgPSAnVW5zdXBwb3J0ZWQgY29yZS1qcyB1c2UuIFRyeSBodHRwczovL25wbXMuaW8vc2VhcmNoP3E9cG9ueWZpbGwuJyxcbiAgICAgIEZVTkNfRVJST1JfVEVYVCA9ICdFeHBlY3RlZCBhIGZ1bmN0aW9uJztcblxuICAvKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG4gIHZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuICAvKiogVXNlZCBhcyB0aGUgbWF4aW11bSBtZW1vaXplIGNhY2hlIHNpemUuICovXG4gIHZhciBNQVhfTUVNT0laRV9TSVpFID0gNTAwO1xuXG4gIC8qKiBVc2VkIGFzIHRoZSBpbnRlcm5hbCBhcmd1bWVudCBwbGFjZWhvbGRlci4gKi9cbiAgdmFyIFBMQUNFSE9MREVSID0gJ19fbG9kYXNoX3BsYWNlaG9sZGVyX18nO1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG4gIHZhciBDTE9ORV9ERUVQX0ZMQUcgPSAxLFxuICAgICAgQ0xPTkVfRkxBVF9GTEFHID0gMixcbiAgICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbiAgLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG4gIHZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuICAvKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBmdW5jdGlvbiBtZXRhZGF0YS4gKi9cbiAgdmFyIFdSQVBfQklORF9GTEFHID0gMSxcbiAgICAgIFdSQVBfQklORF9LRVlfRkxBRyA9IDIsXG4gICAgICBXUkFQX0NVUlJZX0JPVU5EX0ZMQUcgPSA0LFxuICAgICAgV1JBUF9DVVJSWV9GTEFHID0gOCxcbiAgICAgIFdSQVBfQ1VSUllfUklHSFRfRkxBRyA9IDE2LFxuICAgICAgV1JBUF9QQVJUSUFMX0ZMQUcgPSAzMixcbiAgICAgIFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHID0gNjQsXG4gICAgICBXUkFQX0FSWV9GTEFHID0gMTI4LFxuICAgICAgV1JBUF9SRUFSR19GTEFHID0gMjU2LFxuICAgICAgV1JBUF9GTElQX0ZMQUcgPSA1MTI7XG5cbiAgLyoqIFVzZWQgYXMgZGVmYXVsdCBvcHRpb25zIGZvciBgXy50cnVuY2F0ZWAuICovXG4gIHZhciBERUZBVUxUX1RSVU5DX0xFTkdUSCA9IDMwLFxuICAgICAgREVGQVVMVF9UUlVOQ19PTUlTU0lPTiA9ICcuLi4nO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBob3QgZnVuY3Rpb25zIGJ5IG51bWJlciBvZiBjYWxscyB3aXRoaW4gYSBzcGFuIG9mIG1pbGxpc2Vjb25kcy4gKi9cbiAgdmFyIEhPVF9DT1VOVCA9IDgwMCxcbiAgICAgIEhPVF9TUEFOID0gMTY7XG5cbiAgLyoqIFVzZWQgdG8gaW5kaWNhdGUgdGhlIHR5cGUgb2YgbGF6eSBpdGVyYXRlZXMuICovXG4gIHZhciBMQVpZX0ZJTFRFUl9GTEFHID0gMSxcbiAgICAgIExBWllfTUFQX0ZMQUcgPSAyLFxuICAgICAgTEFaWV9XSElMRV9GTEFHID0gMztcblxuICAvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbiAgdmFyIElORklOSVRZID0gMSAvIDAsXG4gICAgICBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MSxcbiAgICAgIE1BWF9JTlRFR0VSID0gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgsXG4gICAgICBOQU4gPSAwIC8gMDtcblxuICAvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB0aGUgbWF4aW11bSBsZW5ndGggYW5kIGluZGV4IG9mIGFuIGFycmF5LiAqL1xuICB2YXIgTUFYX0FSUkFZX0xFTkdUSCA9IDQyOTQ5NjcyOTUsXG4gICAgICBNQVhfQVJSQVlfSU5ERVggPSBNQVhfQVJSQVlfTEVOR1RIIC0gMSxcbiAgICAgIEhBTEZfTUFYX0FSUkFZX0xFTkdUSCA9IE1BWF9BUlJBWV9MRU5HVEggPj4+IDE7XG5cbiAgLyoqIFVzZWQgdG8gYXNzb2NpYXRlIHdyYXAgbWV0aG9kcyB3aXRoIHRoZWlyIGJpdCBmbGFncy4gKi9cbiAgdmFyIHdyYXBGbGFncyA9IFtcbiAgICBbJ2FyeScsIFdSQVBfQVJZX0ZMQUddLFxuICAgIFsnYmluZCcsIFdSQVBfQklORF9GTEFHXSxcbiAgICBbJ2JpbmRLZXknLCBXUkFQX0JJTkRfS0VZX0ZMQUddLFxuICAgIFsnY3VycnknLCBXUkFQX0NVUlJZX0ZMQUddLFxuICAgIFsnY3VycnlSaWdodCcsIFdSQVBfQ1VSUllfUklHSFRfRkxBR10sXG4gICAgWydmbGlwJywgV1JBUF9GTElQX0ZMQUddLFxuICAgIFsncGFydGlhbCcsIFdSQVBfUEFSVElBTF9GTEFHXSxcbiAgICBbJ3BhcnRpYWxSaWdodCcsIFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHXSxcbiAgICBbJ3JlYXJnJywgV1JBUF9SRUFSR19GTEFHXVxuICBdO1xuXG4gIC8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbiAgdmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICAgIGFzeW5jVGFnID0gJ1tvYmplY3QgQXN5bmNGdW5jdGlvbl0nLFxuICAgICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgICBkb21FeGNUYWcgPSAnW29iamVjdCBET01FeGNlcHRpb25dJyxcbiAgICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgICBudWxsVGFnID0gJ1tvYmplY3QgTnVsbF0nLFxuICAgICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgICBwcm9taXNlVGFnID0gJ1tvYmplY3QgUHJvbWlzZV0nLFxuICAgICAgcHJveHlUYWcgPSAnW29iamVjdCBQcm94eV0nLFxuICAgICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXScsXG4gICAgICB1bmRlZmluZWRUYWcgPSAnW29iamVjdCBVbmRlZmluZWRdJyxcbiAgICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXScsXG4gICAgICB3ZWFrU2V0VGFnID0gJ1tvYmplY3QgV2Vha1NldF0nO1xuXG4gIHZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggZW1wdHkgc3RyaW5nIGxpdGVyYWxzIGluIGNvbXBpbGVkIHRlbXBsYXRlIHNvdXJjZS4gKi9cbiAgdmFyIHJlRW1wdHlTdHJpbmdMZWFkaW5nID0gL1xcYl9fcCBcXCs9ICcnOy9nLFxuICAgICAgcmVFbXB0eVN0cmluZ01pZGRsZSA9IC9cXGIoX19wIFxcKz0pICcnIFxcKy9nLFxuICAgICAgcmVFbXB0eVN0cmluZ1RyYWlsaW5nID0gLyhfX2VcXCguKj9cXCl8XFxiX190XFwpKSBcXCtcXG4nJzsvZztcblxuICAvKiogVXNlZCB0byBtYXRjaCBIVE1MIGVudGl0aWVzIGFuZCBIVE1MIGNoYXJhY3RlcnMuICovXG4gIHZhciByZUVzY2FwZWRIdG1sID0gLyYoPzphbXB8bHR8Z3R8cXVvdHwjMzkpOy9nLFxuICAgICAgcmVVbmVzY2FwZWRIdG1sID0gL1smPD5cIiddL2csXG4gICAgICByZUhhc0VzY2FwZWRIdG1sID0gUmVnRXhwKHJlRXNjYXBlZEh0bWwuc291cmNlKSxcbiAgICAgIHJlSGFzVW5lc2NhcGVkSHRtbCA9IFJlZ0V4cChyZVVuZXNjYXBlZEh0bWwuc291cmNlKTtcblxuICAvKiogVXNlZCB0byBtYXRjaCB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLiAqL1xuICB2YXIgcmVFc2NhcGUgPSAvPCUtKFtcXHNcXFNdKz8pJT4vZyxcbiAgICAgIHJlRXZhbHVhdGUgPSAvPCUoW1xcc1xcU10rPyklPi9nLFxuICAgICAgcmVJbnRlcnBvbGF0ZSA9IC88JT0oW1xcc1xcU10rPyklPi9nO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIHByb3BlcnR5IG5hbWVzIHdpdGhpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbiAgdmFyIHJlSXNEZWVwUHJvcCA9IC9cXC58XFxbKD86W15bXFxdXSp8KFtcIiddKSg/Oig/IVxcMSlbXlxcXFxdfFxcXFwuKSo/XFwxKVxcXS8sXG4gICAgICByZUlzUGxhaW5Qcm9wID0gL15cXHcqJC8sXG4gICAgICByZVByb3BOYW1lID0gL1teLltcXF1dK3xcXFsoPzooLT9cXGQrKD86XFwuXFxkKyk/KXwoW1wiJ10pKCg/Oig/IVxcMilbXlxcXFxdfFxcXFwuKSo/KVxcMilcXF18KD89KD86XFwufFxcW1xcXSkoPzpcXC58XFxbXFxdfCQpKS9nO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgXG4gICAqIFtzeW50YXggY2hhcmFjdGVyc10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcGF0dGVybnMpLlxuICAgKi9cbiAgdmFyIHJlUmVnRXhwQ2hhciA9IC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZyxcbiAgICAgIHJlSGFzUmVnRXhwQ2hhciA9IFJlZ0V4cChyZVJlZ0V4cENoYXIuc291cmNlKTtcblxuICAvKiogVXNlZCB0byBtYXRjaCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlLiAqL1xuICB2YXIgcmVUcmltID0gL15cXHMrfFxccyskL2csXG4gICAgICByZVRyaW1TdGFydCA9IC9eXFxzKy8sXG4gICAgICByZVRyaW1FbmQgPSAvXFxzKyQvO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIHdyYXAgZGV0YWlsIGNvbW1lbnRzLiAqL1xuICB2YXIgcmVXcmFwQ29tbWVudCA9IC9cXHsoPzpcXG5cXC9cXCogXFxbd3JhcHBlZCB3aXRoIC4rXFxdIFxcKlxcLyk/XFxuPy8sXG4gICAgICByZVdyYXBEZXRhaWxzID0gL1xce1xcblxcL1xcKiBcXFt3cmFwcGVkIHdpdGggKC4rKVxcXSBcXCovLFxuICAgICAgcmVTcGxpdERldGFpbHMgPSAvLD8gJiAvO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIHdvcmRzIGNvbXBvc2VkIG9mIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLiAqL1xuICB2YXIgcmVBc2NpaVdvcmQgPSAvW15cXHgwMC1cXHgyZlxceDNhLVxceDQwXFx4NWItXFx4NjBcXHg3Yi1cXHg3Zl0rL2c7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggYmFja3NsYXNoZXMgaW4gcHJvcGVydHkgcGF0aHMuICovXG4gIHZhciByZUVzY2FwZUNoYXIgPSAvXFxcXChcXFxcKT8vZztcblxuICAvKipcbiAgICogVXNlZCB0byBtYXRjaFxuICAgKiBbRVMgdGVtcGxhdGUgZGVsaW1pdGVyc10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdGVtcGxhdGUtbGl0ZXJhbC1sZXhpY2FsLWNvbXBvbmVudHMpLlxuICAgKi9cbiAgdmFyIHJlRXNUZW1wbGF0ZSA9IC9cXCRcXHsoW15cXFxcfV0qKD86XFxcXC5bXlxcXFx9XSopKilcXH0vZztcblxuICAvKiogVXNlZCB0byBtYXRjaCBgUmVnRXhwYCBmbGFncyBmcm9tIHRoZWlyIGNvZXJjZWQgc3RyaW5nIHZhbHVlcy4gKi9cbiAgdmFyIHJlRmxhZ3MgPSAvXFx3KiQvO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBiYWQgc2lnbmVkIGhleGFkZWNpbWFsIHN0cmluZyB2YWx1ZXMuICovXG4gIHZhciByZUlzQmFkSGV4ID0gL15bLStdMHhbMC05YS1mXSskL2k7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IGJpbmFyeSBzdHJpbmcgdmFsdWVzLiAqL1xuICB2YXIgcmVJc0JpbmFyeSA9IC9eMGJbMDFdKyQvaTtcblxuICAvKiogVXNlZCB0byBkZXRlY3QgaG9zdCBjb25zdHJ1Y3RvcnMgKFNhZmFyaSkuICovXG4gIHZhciByZUlzSG9zdEN0b3IgPSAvXlxcW29iamVjdCAuKz9Db25zdHJ1Y3RvclxcXSQvO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBvY3RhbCBzdHJpbmcgdmFsdWVzLiAqL1xuICB2YXIgcmVJc09jdGFsID0gL14wb1swLTddKyQvaTtcblxuICAvKiogVXNlZCB0byBkZXRlY3QgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMuICovXG4gIHZhciByZUlzVWludCA9IC9eKD86MHxbMS05XVxcZCopJC87XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggTGF0aW4gVW5pY29kZSBsZXR0ZXJzIChleGNsdWRpbmcgbWF0aGVtYXRpY2FsIG9wZXJhdG9ycykuICovXG4gIHZhciByZUxhdGluID0gL1tcXHhjMC1cXHhkNlxceGQ4LVxceGY2XFx4ZjgtXFx4ZmZcXHUwMTAwLVxcdTAxN2ZdL2c7XG5cbiAgLyoqIFVzZWQgdG8gZW5zdXJlIGNhcHR1cmluZyBvcmRlciBvZiB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLiAqL1xuICB2YXIgcmVOb01hdGNoID0gLygkXikvO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIHVuZXNjYXBlZCBjaGFyYWN0ZXJzIGluIGNvbXBpbGVkIHN0cmluZyBsaXRlcmFscy4gKi9cbiAgdmFyIHJlVW5lc2NhcGVkU3RyaW5nID0gL1snXFxuXFxyXFx1MjAyOFxcdTIwMjlcXFxcXS9nO1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjaGFyYWN0ZXIgY2xhc3Nlcy4gKi9cbiAgdmFyIHJzQXN0cmFsUmFuZ2UgPSAnXFxcXHVkODAwLVxcXFx1ZGZmZicsXG4gICAgICByc0NvbWJvTWFya3NSYW5nZSA9ICdcXFxcdTAzMDAtXFxcXHUwMzZmJyxcbiAgICAgIHJlQ29tYm9IYWxmTWFya3NSYW5nZSA9ICdcXFxcdWZlMjAtXFxcXHVmZTJmJyxcbiAgICAgIHJzQ29tYm9TeW1ib2xzUmFuZ2UgPSAnXFxcXHUyMGQwLVxcXFx1MjBmZicsXG4gICAgICByc0NvbWJvUmFuZ2UgPSByc0NvbWJvTWFya3NSYW5nZSArIHJlQ29tYm9IYWxmTWFya3NSYW5nZSArIHJzQ29tYm9TeW1ib2xzUmFuZ2UsXG4gICAgICByc0RpbmdiYXRSYW5nZSA9ICdcXFxcdTI3MDAtXFxcXHUyN2JmJyxcbiAgICAgIHJzTG93ZXJSYW5nZSA9ICdhLXpcXFxceGRmLVxcXFx4ZjZcXFxceGY4LVxcXFx4ZmYnLFxuICAgICAgcnNNYXRoT3BSYW5nZSA9ICdcXFxceGFjXFxcXHhiMVxcXFx4ZDdcXFxceGY3JyxcbiAgICAgIHJzTm9uQ2hhclJhbmdlID0gJ1xcXFx4MDAtXFxcXHgyZlxcXFx4M2EtXFxcXHg0MFxcXFx4NWItXFxcXHg2MFxcXFx4N2ItXFxcXHhiZicsXG4gICAgICByc1B1bmN0dWF0aW9uUmFuZ2UgPSAnXFxcXHUyMDAwLVxcXFx1MjA2ZicsXG4gICAgICByc1NwYWNlUmFuZ2UgPSAnIFxcXFx0XFxcXHgwYlxcXFxmXFxcXHhhMFxcXFx1ZmVmZlxcXFxuXFxcXHJcXFxcdTIwMjhcXFxcdTIwMjlcXFxcdTE2ODBcXFxcdTE4MGVcXFxcdTIwMDBcXFxcdTIwMDFcXFxcdTIwMDJcXFxcdTIwMDNcXFxcdTIwMDRcXFxcdTIwMDVcXFxcdTIwMDZcXFxcdTIwMDdcXFxcdTIwMDhcXFxcdTIwMDlcXFxcdTIwMGFcXFxcdTIwMmZcXFxcdTIwNWZcXFxcdTMwMDAnLFxuICAgICAgcnNVcHBlclJhbmdlID0gJ0EtWlxcXFx4YzAtXFxcXHhkNlxcXFx4ZDgtXFxcXHhkZScsXG4gICAgICByc1ZhclJhbmdlID0gJ1xcXFx1ZmUwZVxcXFx1ZmUwZicsXG4gICAgICByc0JyZWFrUmFuZ2UgPSByc01hdGhPcFJhbmdlICsgcnNOb25DaGFyUmFuZ2UgKyByc1B1bmN0dWF0aW9uUmFuZ2UgKyByc1NwYWNlUmFuZ2U7XG5cbiAgLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNhcHR1cmUgZ3JvdXBzLiAqL1xuICB2YXIgcnNBcG9zID0gXCJbJ1xcdTIwMTldXCIsXG4gICAgICByc0FzdHJhbCA9ICdbJyArIHJzQXN0cmFsUmFuZ2UgKyAnXScsXG4gICAgICByc0JyZWFrID0gJ1snICsgcnNCcmVha1JhbmdlICsgJ10nLFxuICAgICAgcnNDb21ibyA9ICdbJyArIHJzQ29tYm9SYW5nZSArICddJyxcbiAgICAgIHJzRGlnaXRzID0gJ1xcXFxkKycsXG4gICAgICByc0RpbmdiYXQgPSAnWycgKyByc0RpbmdiYXRSYW5nZSArICddJyxcbiAgICAgIHJzTG93ZXIgPSAnWycgKyByc0xvd2VyUmFuZ2UgKyAnXScsXG4gICAgICByc01pc2MgPSAnW14nICsgcnNBc3RyYWxSYW5nZSArIHJzQnJlYWtSYW5nZSArIHJzRGlnaXRzICsgcnNEaW5nYmF0UmFuZ2UgKyByc0xvd2VyUmFuZ2UgKyByc1VwcGVyUmFuZ2UgKyAnXScsXG4gICAgICByc0ZpdHogPSAnXFxcXHVkODNjW1xcXFx1ZGZmYi1cXFxcdWRmZmZdJyxcbiAgICAgIHJzTW9kaWZpZXIgPSAnKD86JyArIHJzQ29tYm8gKyAnfCcgKyByc0ZpdHogKyAnKScsXG4gICAgICByc05vbkFzdHJhbCA9ICdbXicgKyByc0FzdHJhbFJhbmdlICsgJ10nLFxuICAgICAgcnNSZWdpb25hbCA9ICcoPzpcXFxcdWQ4M2NbXFxcXHVkZGU2LVxcXFx1ZGRmZl0pezJ9JyxcbiAgICAgIHJzU3VyclBhaXIgPSAnW1xcXFx1ZDgwMC1cXFxcdWRiZmZdW1xcXFx1ZGMwMC1cXFxcdWRmZmZdJyxcbiAgICAgIHJzVXBwZXIgPSAnWycgKyByc1VwcGVyUmFuZ2UgKyAnXScsXG4gICAgICByc1pXSiA9ICdcXFxcdTIwMGQnO1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSByZWdleGVzLiAqL1xuICB2YXIgcnNNaXNjTG93ZXIgPSAnKD86JyArIHJzTG93ZXIgKyAnfCcgKyByc01pc2MgKyAnKScsXG4gICAgICByc01pc2NVcHBlciA9ICcoPzonICsgcnNVcHBlciArICd8JyArIHJzTWlzYyArICcpJyxcbiAgICAgIHJzT3B0Q29udHJMb3dlciA9ICcoPzonICsgcnNBcG9zICsgJyg/OmR8bGx8bXxyZXxzfHR8dmUpKT8nLFxuICAgICAgcnNPcHRDb250clVwcGVyID0gJyg/OicgKyByc0Fwb3MgKyAnKD86RHxMTHxNfFJFfFN8VHxWRSkpPycsXG4gICAgICByZU9wdE1vZCA9IHJzTW9kaWZpZXIgKyAnPycsXG4gICAgICByc09wdFZhciA9ICdbJyArIHJzVmFyUmFuZ2UgKyAnXT8nLFxuICAgICAgcnNPcHRKb2luID0gJyg/OicgKyByc1pXSiArICcoPzonICsgW3JzTm9uQXN0cmFsLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyXS5qb2luKCd8JykgKyAnKScgKyByc09wdFZhciArIHJlT3B0TW9kICsgJykqJyxcbiAgICAgIHJzT3JkTG93ZXIgPSAnXFxcXGQqKD86MXN0fDJuZHwzcmR8KD8hWzEyM10pXFxcXGR0aCkoPz1cXFxcYnxbQS1aX10pJyxcbiAgICAgIHJzT3JkVXBwZXIgPSAnXFxcXGQqKD86MVNUfDJORHwzUkR8KD8hWzEyM10pXFxcXGRUSCkoPz1cXFxcYnxbYS16X10pJyxcbiAgICAgIHJzU2VxID0gcnNPcHRWYXIgKyByZU9wdE1vZCArIHJzT3B0Sm9pbixcbiAgICAgIHJzRW1vamkgPSAnKD86JyArIFtyc0RpbmdiYXQsIHJzUmVnaW9uYWwsIHJzU3VyclBhaXJdLmpvaW4oJ3wnKSArICcpJyArIHJzU2VxLFxuICAgICAgcnNTeW1ib2wgPSAnKD86JyArIFtyc05vbkFzdHJhbCArIHJzQ29tYm8gKyAnPycsIHJzQ29tYm8sIHJzUmVnaW9uYWwsIHJzU3VyclBhaXIsIHJzQXN0cmFsXS5qb2luKCd8JykgKyAnKSc7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggYXBvc3Ryb3BoZXMuICovXG4gIHZhciByZUFwb3MgPSBSZWdFeHAocnNBcG9zLCAnZycpO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIG1hdGNoIFtjb21iaW5pbmcgZGlhY3JpdGljYWwgbWFya3NdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbWJpbmluZ19EaWFjcml0aWNhbF9NYXJrcykgYW5kXG4gICAqIFtjb21iaW5pbmcgZGlhY3JpdGljYWwgbWFya3MgZm9yIHN5bWJvbHNdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbWJpbmluZ19EaWFjcml0aWNhbF9NYXJrc19mb3JfU3ltYm9scykuXG4gICAqL1xuICB2YXIgcmVDb21ib01hcmsgPSBSZWdFeHAocnNDb21ibywgJ2cnKTtcblxuICAvKiogVXNlZCB0byBtYXRjaCBbc3RyaW5nIHN5bWJvbHNdKGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LXVuaWNvZGUpLiAqL1xuICB2YXIgcmVVbmljb2RlID0gUmVnRXhwKHJzRml0eiArICcoPz0nICsgcnNGaXR6ICsgJyl8JyArIHJzU3ltYm9sICsgcnNTZXEsICdnJyk7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggY29tcGxleCBvciBjb21wb3VuZCB3b3Jkcy4gKi9cbiAgdmFyIHJlVW5pY29kZVdvcmQgPSBSZWdFeHAoW1xuICAgIHJzVXBwZXIgKyAnPycgKyByc0xvd2VyICsgJysnICsgcnNPcHRDb250ckxvd2VyICsgJyg/PScgKyBbcnNCcmVhaywgcnNVcHBlciwgJyQnXS5qb2luKCd8JykgKyAnKScsXG4gICAgcnNNaXNjVXBwZXIgKyAnKycgKyByc09wdENvbnRyVXBwZXIgKyAnKD89JyArIFtyc0JyZWFrLCByc1VwcGVyICsgcnNNaXNjTG93ZXIsICckJ10uam9pbignfCcpICsgJyknLFxuICAgIHJzVXBwZXIgKyAnPycgKyByc01pc2NMb3dlciArICcrJyArIHJzT3B0Q29udHJMb3dlcixcbiAgICByc1VwcGVyICsgJysnICsgcnNPcHRDb250clVwcGVyLFxuICAgIHJzT3JkVXBwZXIsXG4gICAgcnNPcmRMb3dlcixcbiAgICByc0RpZ2l0cyxcbiAgICByc0Vtb2ppXG4gIF0uam9pbignfCcpLCAnZycpO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBzdHJpbmdzIHdpdGggW3plcm8td2lkdGggam9pbmVycyBvciBjb2RlIHBvaW50cyBmcm9tIHRoZSBhc3RyYWwgcGxhbmVzXShodHRwOi8vZWV2LmVlL2Jsb2cvMjAxNS8wOS8xMi9kYXJrLWNvcm5lcnMtb2YtdW5pY29kZS8pLiAqL1xuICB2YXIgcmVIYXNVbmljb2RlID0gUmVnRXhwKCdbJyArIHJzWldKICsgcnNBc3RyYWxSYW5nZSAgKyByc0NvbWJvUmFuZ2UgKyByc1ZhclJhbmdlICsgJ10nKTtcblxuICAvKiogVXNlZCB0byBkZXRlY3Qgc3RyaW5ncyB0aGF0IG5lZWQgYSBtb3JlIHJvYnVzdCByZWdleHAgdG8gbWF0Y2ggd29yZHMuICovXG4gIHZhciByZUhhc1VuaWNvZGVXb3JkID0gL1thLXpdW0EtWl18W0EtWl17Mn1bYS16XXxbMC05XVthLXpBLVpdfFthLXpBLVpdWzAtOV18W15hLXpBLVowLTkgXS87XG5cbiAgLyoqIFVzZWQgdG8gYXNzaWduIGRlZmF1bHQgYGNvbnRleHRgIG9iamVjdCBwcm9wZXJ0aWVzLiAqL1xuICB2YXIgY29udGV4dFByb3BzID0gW1xuICAgICdBcnJheScsICdCdWZmZXInLCAnRGF0YVZpZXcnLCAnRGF0ZScsICdFcnJvcicsICdGbG9hdDMyQXJyYXknLCAnRmxvYXQ2NEFycmF5JyxcbiAgICAnRnVuY3Rpb24nLCAnSW50OEFycmF5JywgJ0ludDE2QXJyYXknLCAnSW50MzJBcnJheScsICdNYXAnLCAnTWF0aCcsICdPYmplY3QnLFxuICAgICdQcm9taXNlJywgJ1JlZ0V4cCcsICdTZXQnLCAnU3RyaW5nJywgJ1N5bWJvbCcsICdUeXBlRXJyb3InLCAnVWludDhBcnJheScsXG4gICAgJ1VpbnQ4Q2xhbXBlZEFycmF5JywgJ1VpbnQxNkFycmF5JywgJ1VpbnQzMkFycmF5JywgJ1dlYWtNYXAnLFxuICAgICdfJywgJ2NsZWFyVGltZW91dCcsICdpc0Zpbml0ZScsICdwYXJzZUludCcsICdzZXRUaW1lb3V0J1xuICBdO1xuXG4gIC8qKiBVc2VkIHRvIG1ha2UgdGVtcGxhdGUgc291cmNlVVJMcyBlYXNpZXIgdG8gaWRlbnRpZnkuICovXG4gIHZhciB0ZW1wbGF0ZUNvdW50ZXIgPSAtMTtcblxuICAvKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBvZiB0eXBlZCBhcnJheXMuICovXG4gIHZhciB0eXBlZEFycmF5VGFncyA9IHt9O1xuICB0eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbaW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQxNlRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1tpbnQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50OFRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xuICB0eXBlZEFycmF5VGFnc1thcmdzVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5VGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW2FycmF5QnVmZmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Jvb2xUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbZGF0YVZpZXdUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0ZVRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1tlcnJvclRhZ10gPSB0eXBlZEFycmF5VGFnc1tmdW5jVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW21hcFRhZ10gPSB0eXBlZEFycmF5VGFnc1tudW1iZXJUYWddID1cbiAgdHlwZWRBcnJheVRhZ3Nbb2JqZWN0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3JlZ2V4cFRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1tzZXRUYWddID0gdHlwZWRBcnJheVRhZ3Nbc3RyaW5nVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbiAgLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgc3VwcG9ydGVkIGJ5IGBfLmNsb25lYC4gKi9cbiAgdmFyIGNsb25lYWJsZVRhZ3MgPSB7fTtcbiAgY2xvbmVhYmxlVGFnc1thcmdzVGFnXSA9IGNsb25lYWJsZVRhZ3NbYXJyYXlUYWddID1cbiAgY2xvbmVhYmxlVGFnc1thcnJheUJ1ZmZlclRhZ10gPSBjbG9uZWFibGVUYWdzW2RhdGFWaWV3VGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbYm9vbFRhZ10gPSBjbG9uZWFibGVUYWdzW2RhdGVUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tmbG9hdDMyVGFnXSA9IGNsb25lYWJsZVRhZ3NbZmxvYXQ2NFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW2ludDhUYWddID0gY2xvbmVhYmxlVGFnc1tpbnQxNlRhZ10gPVxuICBjbG9uZWFibGVUYWdzW2ludDMyVGFnXSA9IGNsb25lYWJsZVRhZ3NbbWFwVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbbnVtYmVyVGFnXSA9IGNsb25lYWJsZVRhZ3Nbb2JqZWN0VGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbcmVnZXhwVGFnXSA9IGNsb25lYWJsZVRhZ3Nbc2V0VGFnXSA9XG4gIGNsb25lYWJsZVRhZ3Nbc3RyaW5nVGFnXSA9IGNsb25lYWJsZVRhZ3Nbc3ltYm9sVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbdWludDhUYWddID0gY2xvbmVhYmxlVGFnc1t1aW50OENsYW1wZWRUYWddID1cbiAgY2xvbmVhYmxlVGFnc1t1aW50MTZUYWddID0gY2xvbmVhYmxlVGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbiAgY2xvbmVhYmxlVGFnc1tlcnJvclRhZ10gPSBjbG9uZWFibGVUYWdzW2Z1bmNUYWddID1cbiAgY2xvbmVhYmxlVGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4gIC8qKiBVc2VkIHRvIG1hcCBMYXRpbiBVbmljb2RlIGxldHRlcnMgdG8gYmFzaWMgTGF0aW4gbGV0dGVycy4gKi9cbiAgdmFyIGRlYnVycmVkTGV0dGVycyA9IHtcbiAgICAvLyBMYXRpbi0xIFN1cHBsZW1lbnQgYmxvY2suXG4gICAgJ1xceGMwJzogJ0EnLCAgJ1xceGMxJzogJ0EnLCAnXFx4YzInOiAnQScsICdcXHhjMyc6ICdBJywgJ1xceGM0JzogJ0EnLCAnXFx4YzUnOiAnQScsXG4gICAgJ1xceGUwJzogJ2EnLCAgJ1xceGUxJzogJ2EnLCAnXFx4ZTInOiAnYScsICdcXHhlMyc6ICdhJywgJ1xceGU0JzogJ2EnLCAnXFx4ZTUnOiAnYScsXG4gICAgJ1xceGM3JzogJ0MnLCAgJ1xceGU3JzogJ2MnLFxuICAgICdcXHhkMCc6ICdEJywgICdcXHhmMCc6ICdkJyxcbiAgICAnXFx4YzgnOiAnRScsICAnXFx4YzknOiAnRScsICdcXHhjYSc6ICdFJywgJ1xceGNiJzogJ0UnLFxuICAgICdcXHhlOCc6ICdlJywgICdcXHhlOSc6ICdlJywgJ1xceGVhJzogJ2UnLCAnXFx4ZWInOiAnZScsXG4gICAgJ1xceGNjJzogJ0knLCAgJ1xceGNkJzogJ0knLCAnXFx4Y2UnOiAnSScsICdcXHhjZic6ICdJJyxcbiAgICAnXFx4ZWMnOiAnaScsICAnXFx4ZWQnOiAnaScsICdcXHhlZSc6ICdpJywgJ1xceGVmJzogJ2knLFxuICAgICdcXHhkMSc6ICdOJywgICdcXHhmMSc6ICduJyxcbiAgICAnXFx4ZDInOiAnTycsICAnXFx4ZDMnOiAnTycsICdcXHhkNCc6ICdPJywgJ1xceGQ1JzogJ08nLCAnXFx4ZDYnOiAnTycsICdcXHhkOCc6ICdPJyxcbiAgICAnXFx4ZjInOiAnbycsICAnXFx4ZjMnOiAnbycsICdcXHhmNCc6ICdvJywgJ1xceGY1JzogJ28nLCAnXFx4ZjYnOiAnbycsICdcXHhmOCc6ICdvJyxcbiAgICAnXFx4ZDknOiAnVScsICAnXFx4ZGEnOiAnVScsICdcXHhkYic6ICdVJywgJ1xceGRjJzogJ1UnLFxuICAgICdcXHhmOSc6ICd1JywgICdcXHhmYSc6ICd1JywgJ1xceGZiJzogJ3UnLCAnXFx4ZmMnOiAndScsXG4gICAgJ1xceGRkJzogJ1knLCAgJ1xceGZkJzogJ3knLCAnXFx4ZmYnOiAneScsXG4gICAgJ1xceGM2JzogJ0FlJywgJ1xceGU2JzogJ2FlJyxcbiAgICAnXFx4ZGUnOiAnVGgnLCAnXFx4ZmUnOiAndGgnLFxuICAgICdcXHhkZic6ICdzcycsXG4gICAgLy8gTGF0aW4gRXh0ZW5kZWQtQSBibG9jay5cbiAgICAnXFx1MDEwMCc6ICdBJywgICdcXHUwMTAyJzogJ0EnLCAnXFx1MDEwNCc6ICdBJyxcbiAgICAnXFx1MDEwMSc6ICdhJywgICdcXHUwMTAzJzogJ2EnLCAnXFx1MDEwNSc6ICdhJyxcbiAgICAnXFx1MDEwNic6ICdDJywgICdcXHUwMTA4JzogJ0MnLCAnXFx1MDEwYSc6ICdDJywgJ1xcdTAxMGMnOiAnQycsXG4gICAgJ1xcdTAxMDcnOiAnYycsICAnXFx1MDEwOSc6ICdjJywgJ1xcdTAxMGInOiAnYycsICdcXHUwMTBkJzogJ2MnLFxuICAgICdcXHUwMTBlJzogJ0QnLCAgJ1xcdTAxMTAnOiAnRCcsICdcXHUwMTBmJzogJ2QnLCAnXFx1MDExMSc6ICdkJyxcbiAgICAnXFx1MDExMic6ICdFJywgICdcXHUwMTE0JzogJ0UnLCAnXFx1MDExNic6ICdFJywgJ1xcdTAxMTgnOiAnRScsICdcXHUwMTFhJzogJ0UnLFxuICAgICdcXHUwMTEzJzogJ2UnLCAgJ1xcdTAxMTUnOiAnZScsICdcXHUwMTE3JzogJ2UnLCAnXFx1MDExOSc6ICdlJywgJ1xcdTAxMWInOiAnZScsXG4gICAgJ1xcdTAxMWMnOiAnRycsICAnXFx1MDExZSc6ICdHJywgJ1xcdTAxMjAnOiAnRycsICdcXHUwMTIyJzogJ0cnLFxuICAgICdcXHUwMTFkJzogJ2cnLCAgJ1xcdTAxMWYnOiAnZycsICdcXHUwMTIxJzogJ2cnLCAnXFx1MDEyMyc6ICdnJyxcbiAgICAnXFx1MDEyNCc6ICdIJywgICdcXHUwMTI2JzogJ0gnLCAnXFx1MDEyNSc6ICdoJywgJ1xcdTAxMjcnOiAnaCcsXG4gICAgJ1xcdTAxMjgnOiAnSScsICAnXFx1MDEyYSc6ICdJJywgJ1xcdTAxMmMnOiAnSScsICdcXHUwMTJlJzogJ0knLCAnXFx1MDEzMCc6ICdJJyxcbiAgICAnXFx1MDEyOSc6ICdpJywgICdcXHUwMTJiJzogJ2knLCAnXFx1MDEyZCc6ICdpJywgJ1xcdTAxMmYnOiAnaScsICdcXHUwMTMxJzogJ2knLFxuICAgICdcXHUwMTM0JzogJ0onLCAgJ1xcdTAxMzUnOiAnaicsXG4gICAgJ1xcdTAxMzYnOiAnSycsICAnXFx1MDEzNyc6ICdrJywgJ1xcdTAxMzgnOiAnaycsXG4gICAgJ1xcdTAxMzknOiAnTCcsICAnXFx1MDEzYic6ICdMJywgJ1xcdTAxM2QnOiAnTCcsICdcXHUwMTNmJzogJ0wnLCAnXFx1MDE0MSc6ICdMJyxcbiAgICAnXFx1MDEzYSc6ICdsJywgICdcXHUwMTNjJzogJ2wnLCAnXFx1MDEzZSc6ICdsJywgJ1xcdTAxNDAnOiAnbCcsICdcXHUwMTQyJzogJ2wnLFxuICAgICdcXHUwMTQzJzogJ04nLCAgJ1xcdTAxNDUnOiAnTicsICdcXHUwMTQ3JzogJ04nLCAnXFx1MDE0YSc6ICdOJyxcbiAgICAnXFx1MDE0NCc6ICduJywgICdcXHUwMTQ2JzogJ24nLCAnXFx1MDE0OCc6ICduJywgJ1xcdTAxNGInOiAnbicsXG4gICAgJ1xcdTAxNGMnOiAnTycsICAnXFx1MDE0ZSc6ICdPJywgJ1xcdTAxNTAnOiAnTycsXG4gICAgJ1xcdTAxNGQnOiAnbycsICAnXFx1MDE0Zic6ICdvJywgJ1xcdTAxNTEnOiAnbycsXG4gICAgJ1xcdTAxNTQnOiAnUicsICAnXFx1MDE1Nic6ICdSJywgJ1xcdTAxNTgnOiAnUicsXG4gICAgJ1xcdTAxNTUnOiAncicsICAnXFx1MDE1Nyc6ICdyJywgJ1xcdTAxNTknOiAncicsXG4gICAgJ1xcdTAxNWEnOiAnUycsICAnXFx1MDE1Yyc6ICdTJywgJ1xcdTAxNWUnOiAnUycsICdcXHUwMTYwJzogJ1MnLFxuICAgICdcXHUwMTViJzogJ3MnLCAgJ1xcdTAxNWQnOiAncycsICdcXHUwMTVmJzogJ3MnLCAnXFx1MDE2MSc6ICdzJyxcbiAgICAnXFx1MDE2Mic6ICdUJywgICdcXHUwMTY0JzogJ1QnLCAnXFx1MDE2Nic6ICdUJyxcbiAgICAnXFx1MDE2Myc6ICd0JywgICdcXHUwMTY1JzogJ3QnLCAnXFx1MDE2Nyc6ICd0JyxcbiAgICAnXFx1MDE2OCc6ICdVJywgICdcXHUwMTZhJzogJ1UnLCAnXFx1MDE2Yyc6ICdVJywgJ1xcdTAxNmUnOiAnVScsICdcXHUwMTcwJzogJ1UnLCAnXFx1MDE3Mic6ICdVJyxcbiAgICAnXFx1MDE2OSc6ICd1JywgICdcXHUwMTZiJzogJ3UnLCAnXFx1MDE2ZCc6ICd1JywgJ1xcdTAxNmYnOiAndScsICdcXHUwMTcxJzogJ3UnLCAnXFx1MDE3Myc6ICd1JyxcbiAgICAnXFx1MDE3NCc6ICdXJywgICdcXHUwMTc1JzogJ3cnLFxuICAgICdcXHUwMTc2JzogJ1knLCAgJ1xcdTAxNzcnOiAneScsICdcXHUwMTc4JzogJ1knLFxuICAgICdcXHUwMTc5JzogJ1onLCAgJ1xcdTAxN2InOiAnWicsICdcXHUwMTdkJzogJ1onLFxuICAgICdcXHUwMTdhJzogJ3onLCAgJ1xcdTAxN2MnOiAneicsICdcXHUwMTdlJzogJ3onLFxuICAgICdcXHUwMTMyJzogJ0lKJywgJ1xcdTAxMzMnOiAnaWonLFxuICAgICdcXHUwMTUyJzogJ09lJywgJ1xcdTAxNTMnOiAnb2UnLFxuICAgICdcXHUwMTQ5JzogXCInblwiLCAnXFx1MDE3Zic6ICdzJ1xuICB9O1xuXG4gIC8qKiBVc2VkIHRvIG1hcCBjaGFyYWN0ZXJzIHRvIEhUTUwgZW50aXRpZXMuICovXG4gIHZhciBodG1sRXNjYXBlcyA9IHtcbiAgICAnJic6ICcmYW1wOycsXG4gICAgJzwnOiAnJmx0OycsXG4gICAgJz4nOiAnJmd0OycsXG4gICAgJ1wiJzogJyZxdW90OycsXG4gICAgXCInXCI6ICcmIzM5OydcbiAgfTtcblxuICAvKiogVXNlZCB0byBtYXAgSFRNTCBlbnRpdGllcyB0byBjaGFyYWN0ZXJzLiAqL1xuICB2YXIgaHRtbFVuZXNjYXBlcyA9IHtcbiAgICAnJmFtcDsnOiAnJicsXG4gICAgJyZsdDsnOiAnPCcsXG4gICAgJyZndDsnOiAnPicsXG4gICAgJyZxdW90Oyc6ICdcIicsXG4gICAgJyYjMzk7JzogXCInXCJcbiAgfTtcblxuICAvKiogVXNlZCB0byBlc2NhcGUgY2hhcmFjdGVycyBmb3IgaW5jbHVzaW9uIGluIGNvbXBpbGVkIHN0cmluZyBsaXRlcmFscy4gKi9cbiAgdmFyIHN0cmluZ0VzY2FwZXMgPSB7XG4gICAgJ1xcXFwnOiAnXFxcXCcsXG4gICAgXCInXCI6IFwiJ1wiLFxuICAgICdcXG4nOiAnbicsXG4gICAgJ1xccic6ICdyJyxcbiAgICAnXFx1MjAyOCc6ICd1MjAyOCcsXG4gICAgJ1xcdTIwMjknOiAndTIwMjknXG4gIH07XG5cbiAgLyoqIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHdpdGhvdXQgYSBkZXBlbmRlbmN5IG9uIGByb290YC4gKi9cbiAgdmFyIGZyZWVQYXJzZUZsb2F0ID0gcGFyc2VGbG9hdCxcbiAgICAgIGZyZWVQYXJzZUludCA9IHBhcnNlSW50O1xuXG4gIC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG4gIHZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxuICAvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHNlbGZgLiAqL1xuICB2YXIgZnJlZVNlbGYgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBPYmplY3QgJiYgc2VsZjtcblxuICAvKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbiAgdmFyIHJvb3QgPSBmcmVlR2xvYmFsIHx8IGZyZWVTZWxmIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cbiAgLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbiAgdmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4gIC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbiAgdmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuICAvKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xuICB2YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuICAvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHByb2Nlc3NgIGZyb20gTm9kZS5qcy4gKi9cbiAgdmFyIGZyZWVQcm9jZXNzID0gbW9kdWxlRXhwb3J0cyAmJiBmcmVlR2xvYmFsLnByb2Nlc3M7XG5cbiAgLyoqIFVzZWQgdG8gYWNjZXNzIGZhc3RlciBOb2RlLmpzIGhlbHBlcnMuICovXG4gIHZhciBub2RlVXRpbCA9IChmdW5jdGlvbigpIHtcbiAgICB0cnkge1xuICAgICAgLy8gVXNlIGB1dGlsLnR5cGVzYCBmb3IgTm9kZS5qcyAxMCsuXG4gICAgICB2YXIgdHlwZXMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUucmVxdWlyZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUoJ3V0aWwnKS50eXBlcztcblxuICAgICAgaWYgKHR5cGVzKSB7XG4gICAgICAgIHJldHVybiB0eXBlcztcbiAgICAgIH1cblxuICAgICAgLy8gTGVnYWN5IGBwcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKWAgZm9yIE5vZGUuanMgPCAxMC5cbiAgICAgIHJldHVybiBmcmVlUHJvY2VzcyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9KCkpO1xuXG4gIC8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG4gIHZhciBub2RlSXNBcnJheUJ1ZmZlciA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzQXJyYXlCdWZmZXIsXG4gICAgICBub2RlSXNEYXRlID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNEYXRlLFxuICAgICAgbm9kZUlzTWFwID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNNYXAsXG4gICAgICBub2RlSXNSZWdFeHAgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1JlZ0V4cCxcbiAgICAgIG5vZGVJc1NldCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzU2V0LFxuICAgICAgbm9kZUlzVHlwZWRBcnJheSA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzVHlwZWRBcnJheTtcblxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAvKipcbiAgICogQSBmYXN0ZXIgYWx0ZXJuYXRpdmUgdG8gYEZ1bmN0aW9uI2FwcGx5YCwgdGhpcyBmdW5jdGlvbiBpbnZva2VzIGBmdW5jYFxuICAgKiB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiBgdGhpc0FyZ2AgYW5kIHRoZSBhcmd1bWVudHMgb2YgYGFyZ3NgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gICAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGBmdW5jYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFwcGx5KGZ1bmMsIHRoaXNBcmcsIGFyZ3MpIHtcbiAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgICBjYXNlIDA6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZyk7XG4gICAgICBjYXNlIDE6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSk7XG4gICAgICBjYXNlIDI6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICBjYXNlIDM6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgfVxuICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUFnZ3JlZ2F0b3JgIGZvciBhcnJheXMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gc2V0dGVyIFRoZSBmdW5jdGlvbiB0byBzZXQgYGFjY3VtdWxhdG9yYCB2YWx1ZXMuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICogQHBhcmFtIHtPYmplY3R9IGFjY3VtdWxhdG9yIFRoZSBpbml0aWFsIGFnZ3JlZ2F0ZWQgb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGFjY3VtdWxhdG9yYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5QWdncmVnYXRvcihhcnJheSwgc2V0dGVyLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgc2V0dGVyKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaXRlcmF0ZWUodmFsdWUpLCBhcnJheSk7XG4gICAgfVxuICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZm9yRWFjaGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUVhY2goYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChpdGVyYXRlZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZvckVhY2hSaWdodGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUVhY2hSaWdodChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIGlmIChpdGVyYXRlZShhcnJheVtsZW5ndGhdLCBsZW5ndGgsIGFycmF5KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZXZlcnlgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYWxsIGVsZW1lbnRzIHBhc3MgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICogIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5RXZlcnkoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoIXByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZmlsdGVyYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUZpbHRlcihhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmluY2x1ZGVzYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogc3BlY2lmeWluZyBhbiBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB0YXJnZXQgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdGFyZ2V0YCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlJbmNsdWRlcyhhcnJheSwgdmFsdWUpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgcmV0dXJuICEhbGVuZ3RoICYmIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgMCkgPiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGFycmF5SW5jbHVkZXNgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYSBjb21wYXJhdG9yLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHRhcmdldCBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyYXRvciBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHRhcmdldGAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5SW5jbHVkZXNXaXRoKGFycmF5LCB2YWx1ZSwgY29tcGFyYXRvcikge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoY29tcGFyYXRvcih2YWx1ZSwgYXJyYXlbaW5kZXhdKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tYXBgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICAgKiBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5TWFwKGFycmF5LCBpdGVyYXRlZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGVuZHMgdGhlIGVsZW1lbnRzIG9mIGB2YWx1ZXNgIHRvIGBhcnJheWAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGFwcGVuZC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheVB1c2goYXJyYXksIHZhbHVlcykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgICBvZmZzZXQgPSBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgYXJyYXlbb2Zmc2V0ICsgaW5kZXhdID0gdmFsdWVzW2luZGV4XTtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5yZWR1Y2VgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHBhcmFtIHtib29sZWFufSBbaW5pdEFjY3VtXSBTcGVjaWZ5IHVzaW5nIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBhcnJheWAgYXNcbiAgICogIHRoZSBpbml0aWFsIHZhbHVlLlxuICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheVJlZHVjZShhcnJheSwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0pIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICBpZiAoaW5pdEFjY3VtICYmIGxlbmd0aCkge1xuICAgICAgYWNjdW11bGF0b3IgPSBhcnJheVsrK2luZGV4XTtcbiAgICB9XG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgICB9XG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5yZWR1Y2VSaWdodGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBpbml0aWFsIHZhbHVlLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpbml0QWNjdW1dIFNwZWNpZnkgdXNpbmcgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgIGFzXG4gICAqICB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlSZWR1Y2VSaWdodChhcnJheSwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0pIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgaWYgKGluaXRBY2N1bSAmJiBsZW5ndGgpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gYXJyYXlbLS1sZW5ndGhdO1xuICAgIH1cbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIGFycmF5W2xlbmd0aF0sIGxlbmd0aCwgYXJyYXkpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNvbWVgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICAgKiBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW55IGVsZW1lbnQgcGFzc2VzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gICAqICBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheVNvbWUoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHNpemUgb2YgYW4gQVNDSUkgYHN0cmluZ2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdHJpbmcgc2l6ZS5cbiAgICovXG4gIHZhciBhc2NpaVNpemUgPSBiYXNlUHJvcGVydHkoJ2xlbmd0aCcpO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhbiBBU0NJSSBgc3RyaW5nYCB0byBhbiBhcnJheS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICAgKi9cbiAgZnVuY3Rpb24gYXNjaWlUb0FycmF5KHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcuc3BsaXQoJycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwbGl0cyBhbiBBU0NJSSBgc3RyaW5nYCBpbnRvIGFuIGFycmF5IG9mIGl0cyB3b3Jkcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB3b3JkcyBvZiBgc3RyaW5nYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFzY2lpV29yZHMoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZy5tYXRjaChyZUFzY2lpV29yZCkgfHwgW107XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLmZpbmRLZXlgIGFuZCBgXy5maW5kTGFzdEtleWAsXG4gICAqIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcywgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgY29sbGVjdGlvbmBcbiAgICogdXNpbmcgYGVhY2hGdW5jYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGVhY2hGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYGNvbGxlY3Rpb25gLlxuICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZm91bmQgZWxlbWVudCBvciBpdHMga2V5LCBlbHNlIGB1bmRlZmluZWRgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZUZpbmRLZXkoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBlYWNoRnVuYykge1xuICAgIHZhciByZXN1bHQ7XG4gICAgZWFjaEZ1bmMoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikge1xuICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSkge1xuICAgICAgICByZXN1bHQgPSBrZXk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbmRJbmRleGAgYW5kIGBfLmZpbmRMYXN0SW5kZXhgIHdpdGhvdXRcbiAgICogc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlRmluZEluZGV4KGFycmF5LCBwcmVkaWNhdGUsIGZyb21JbmRleCwgZnJvbVJpZ2h0KSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgaW5kZXggPSBmcm9tSW5kZXggKyAoZnJvbVJpZ2h0ID8gMSA6IC0xKTtcblxuICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pbmRleE9mYCB3aXRob3V0IGBmcm9tSW5kZXhgIGJvdW5kcyBjaGVja3MuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZVxuICAgICAgPyBzdHJpY3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KVxuICAgICAgOiBiYXNlRmluZEluZGV4KGFycmF5LCBiYXNlSXNOYU4sIGZyb21JbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBiYXNlSW5kZXhPZmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhIGNvbXBhcmF0b3IuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyYXRvciBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZUluZGV4T2ZXaXRoKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4LCBjb21wYXJhdG9yKSB7XG4gICAgdmFyIGluZGV4ID0gZnJvbUluZGV4IC0gMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChjb21wYXJhdG9yKGFycmF5W2luZGV4XSwgdmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmFOYCB3aXRob3V0IHN1cHBvcnQgZm9yIG51bWJlciBvYmplY3RzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYE5hTmAsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VJc05hTih2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAhPT0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWVhbmAgYW5kIGBfLm1lYW5CeWAgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBtZWFuLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZU1lYW4oYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgIHJldHVybiBsZW5ndGggPyAoYmFzZVN1bShhcnJheSwgaXRlcmF0ZWUpIC8gbGVuZ3RoKSA6IE5BTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wcm9wZXJ0eWAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlUHJvcGVydHkoa2V5KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wcm9wZXJ0eU9mYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlUHJvcGVydHlPZihvYmplY3QpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oa2V5KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlZHVjZWAgYW5kIGBfLnJlZHVjZVJpZ2h0YCwgd2l0aG91dCBzdXBwb3J0XG4gICAqIGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLCB3aGljaCBpdGVyYXRlcyBvdmVyIGBjb2xsZWN0aW9uYCB1c2luZyBgZWFjaEZ1bmNgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEBwYXJhbSB7Kn0gYWNjdW11bGF0b3IgVGhlIGluaXRpYWwgdmFsdWUuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5pdEFjY3VtIFNwZWNpZnkgdXNpbmcgdGhlIGZpcnN0IG9yIGxhc3QgZWxlbWVudCBvZlxuICAgKiAgYGNvbGxlY3Rpb25gIGFzIHRoZSBpbml0aWFsIHZhbHVlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGBjb2xsZWN0aW9uYC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVJlZHVjZShjb2xsZWN0aW9uLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSwgZWFjaEZ1bmMpIHtcbiAgICBlYWNoRnVuYyhjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gaW5pdEFjY3VtXG4gICAgICAgID8gKGluaXRBY2N1bSA9IGZhbHNlLCB2YWx1ZSlcbiAgICAgICAgOiBpdGVyYXRlZShhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKTtcbiAgICB9KTtcbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydEJ5YCB3aGljaCB1c2VzIGBjb21wYXJlcmAgdG8gZGVmaW5lIHRoZVxuICAgKiBzb3J0IG9yZGVyIG9mIGBhcnJheWAgYW5kIHJlcGxhY2VzIGNyaXRlcmlhIG9iamVjdHMgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nXG4gICAqIHZhbHVlcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNvcnQuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmVyIFRoZSBmdW5jdGlvbiB0byBkZWZpbmUgc29ydCBvcmRlci5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlU29ydEJ5KGFycmF5LCBjb21wYXJlcikge1xuICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICBhcnJheS5zb3J0KGNvbXBhcmVyKTtcbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIGFycmF5W2xlbmd0aF0gPSBhcnJheVtsZW5ndGhdLnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc3VtYCBhbmQgYF8uc3VtQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3VtLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVN1bShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgcmVzdWx0LFxuICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIGN1cnJlbnQgPSBpdGVyYXRlZShhcnJheVtpbmRleF0pO1xuICAgICAgaWYgKGN1cnJlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGN1cnJlbnQgOiAocmVzdWx0ICsgY3VycmVudCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udGltZXNgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kc1xuICAgKiBvciBtYXggYXJyYXkgbGVuZ3RoIGNoZWNrcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVRpbWVzKG4sIGl0ZXJhdGVlKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KG4pO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoaW5kZXgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRvUGFpcnNgIGFuZCBgXy50b1BhaXJzSW5gIHdoaWNoIGNyZWF0ZXMgYW4gYXJyYXlcbiAgICogb2Yga2V5LXZhbHVlIHBhaXJzIGZvciBgb2JqZWN0YCBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9wZXJ0eSBuYW1lcyBvZiBgcHJvcHNgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBnZXQgdmFsdWVzIGZvci5cbiAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXJzLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVRvUGFpcnMob2JqZWN0LCBwcm9wcykge1xuICAgIHJldHVybiBhcnJheU1hcChwcm9wcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgICByZXR1cm4gW2tleSwgb2JqZWN0W2tleV1dO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICAgIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udmFsdWVzYCBhbmQgYF8udmFsdWVzSW5gIHdoaWNoIGNyZWF0ZXMgYW5cbiAgICogYXJyYXkgb2YgYG9iamVjdGAgcHJvcGVydHkgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb3BlcnR5IG5hbWVzXG4gICAqIG9mIGBwcm9wc2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGdldCB2YWx1ZXMgZm9yLlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlVmFsdWVzKG9iamVjdCwgcHJvcHMpIHtcbiAgICByZXR1cm4gYXJyYXlNYXAocHJvcHMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIG9iamVjdFtrZXldO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIGBjYWNoZWAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IGNhY2hlIFRoZSBjYWNoZSB0byBxdWVyeS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGNhY2hlSGFzKGNhY2hlLCBrZXkpIHtcbiAgICByZXR1cm4gY2FjaGUuaGFzKGtleSk7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBieSBgXy50cmltYCBhbmQgYF8udHJpbVN0YXJ0YCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBzdHJpbmcgc3ltYm9sXG4gICAqIHRoYXQgaXMgbm90IGZvdW5kIGluIHRoZSBjaGFyYWN0ZXIgc3ltYm9scy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gc3RyU3ltYm9scyBUaGUgc3RyaW5nIHN5bWJvbHMgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHtBcnJheX0gY2hyU3ltYm9scyBUaGUgY2hhcmFjdGVyIHN5bWJvbHMgdG8gZmluZC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IHVubWF0Y2hlZCBzdHJpbmcgc3ltYm9sLlxuICAgKi9cbiAgZnVuY3Rpb24gY2hhcnNTdGFydEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gc3RyU3ltYm9scy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCAmJiBiYXNlSW5kZXhPZihjaHJTeW1ib2xzLCBzdHJTeW1ib2xzW2luZGV4XSwgMCkgPiAtMSkge31cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBieSBgXy50cmltYCBhbmQgYF8udHJpbUVuZGAgdG8gZ2V0IHRoZSBpbmRleCBvZiB0aGUgbGFzdCBzdHJpbmcgc3ltYm9sXG4gICAqIHRoYXQgaXMgbm90IGZvdW5kIGluIHRoZSBjaGFyYWN0ZXIgc3ltYm9scy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gc3RyU3ltYm9scyBUaGUgc3RyaW5nIHN5bWJvbHMgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHtBcnJheX0gY2hyU3ltYm9scyBUaGUgY2hhcmFjdGVyIHN5bWJvbHMgdG8gZmluZC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGxhc3QgdW5tYXRjaGVkIHN0cmluZyBzeW1ib2wuXG4gICAqL1xuICBmdW5jdGlvbiBjaGFyc0VuZEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpIHtcbiAgICB2YXIgaW5kZXggPSBzdHJTeW1ib2xzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpbmRleC0tICYmIGJhc2VJbmRleE9mKGNoclN5bWJvbHMsIHN0clN5bWJvbHNbaW5kZXhdLCAwKSA+IC0xKSB7fVxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgYHBsYWNlaG9sZGVyYCBvY2N1cnJlbmNlcyBpbiBgYXJyYXlgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSBwbGFjZWhvbGRlciBUaGUgcGxhY2Vob2xkZXIgdG8gc2VhcmNoIGZvci5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcGxhY2Vob2xkZXIgY291bnQuXG4gICAqL1xuICBmdW5jdGlvbiBjb3VudEhvbGRlcnMoYXJyYXksIHBsYWNlaG9sZGVyKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgcmVzdWx0ID0gMDtcblxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgaWYgKGFycmF5W2xlbmd0aF0gPT09IHBsYWNlaG9sZGVyKSB7XG4gICAgICAgICsrcmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8uZGVidXJyYCB0byBjb252ZXJ0IExhdGluLTEgU3VwcGxlbWVudCBhbmQgTGF0aW4gRXh0ZW5kZWQtQVxuICAgKiBsZXR0ZXJzIHRvIGJhc2ljIExhdGluIGxldHRlcnMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsZXR0ZXIgVGhlIG1hdGNoZWQgbGV0dGVyIHRvIGRlYnVyci5cbiAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZGVidXJyZWQgbGV0dGVyLlxuICAgKi9cbiAgdmFyIGRlYnVyckxldHRlciA9IGJhc2VQcm9wZXJ0eU9mKGRlYnVycmVkTGV0dGVycyk7XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8uZXNjYXBlYCB0byBjb252ZXJ0IGNoYXJhY3RlcnMgdG8gSFRNTCBlbnRpdGllcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNociBUaGUgbWF0Y2hlZCBjaGFyYWN0ZXIgdG8gZXNjYXBlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIGNoYXJhY3Rlci5cbiAgICovXG4gIHZhciBlc2NhcGVIdG1sQ2hhciA9IGJhc2VQcm9wZXJ0eU9mKGh0bWxFc2NhcGVzKTtcblxuICAvKipcbiAgICogVXNlZCBieSBgXy50ZW1wbGF0ZWAgdG8gZXNjYXBlIGNoYXJhY3RlcnMgZm9yIGluY2x1c2lvbiBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaHIgVGhlIG1hdGNoZWQgY2hhcmFjdGVyIHRvIGVzY2FwZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZXNjYXBlZCBjaGFyYWN0ZXIuXG4gICAqL1xuICBmdW5jdGlvbiBlc2NhcGVTdHJpbmdDaGFyKGNocikge1xuICAgIHJldHVybiAnXFxcXCcgKyBzdHJpbmdFc2NhcGVzW2Nocl07XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0VmFsdWUob2JqZWN0LCBrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYHN0cmluZ2AgY29udGFpbnMgVW5pY29kZSBzeW1ib2xzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGEgc3ltYm9sIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBoYXNVbmljb2RlKHN0cmluZykge1xuICAgIHJldHVybiByZUhhc1VuaWNvZGUudGVzdChzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBgc3RyaW5nYCBjb250YWlucyBhIHdvcmQgY29tcG9zZWQgb2YgVW5pY29kZSBzeW1ib2xzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGEgd29yZCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gaGFzVW5pY29kZVdvcmQoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHJlSGFzVW5pY29kZVdvcmQudGVzdChzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBpdGVyYXRvcmAgdG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBpdGVyYXRvciBUaGUgaXRlcmF0b3IgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBpdGVyYXRvclRvQXJyYXkoaXRlcmF0b3IpIHtcbiAgICB2YXIgZGF0YSxcbiAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICB3aGlsZSAoIShkYXRhID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICByZXN1bHQucHVzaChkYXRhLnZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBgbWFwYCB0byBpdHMga2V5LXZhbHVlIHBhaXJzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gICAqL1xuICBmdW5jdGlvbiBtYXBUb0FycmF5KG1hcCkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICByZXN1bHQgPSBBcnJheShtYXAuc2l6ZSk7XG5cbiAgICBtYXAuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICByZXN1bHRbKytpbmRleF0gPSBba2V5LCB2YWx1ZV07XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm0uXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gb3ZlckFyZyhmdW5jLCB0cmFuc2Zvcm0pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oYXJnKSB7XG4gICAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhbGwgYHBsYWNlaG9sZGVyYCBlbGVtZW50cyBpbiBgYXJyYXlgIHdpdGggYW4gaW50ZXJuYWwgcGxhY2Vob2xkZXJcbiAgICogYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlaXIgaW5kZXhlcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICogQHBhcmFtIHsqfSBwbGFjZWhvbGRlciBUaGUgcGxhY2Vob2xkZXIgdG8gcmVwbGFjZS5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICovXG4gIGZ1bmN0aW9uIHJlcGxhY2VIb2xkZXJzKGFycmF5LCBwbGFjZWhvbGRlcikge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgaWYgKHZhbHVlID09PSBwbGFjZWhvbGRlciB8fCB2YWx1ZSA9PT0gUExBQ0VIT0xERVIpIHtcbiAgICAgICAgYXJyYXlbaW5kZXhdID0gUExBQ0VIT0xERVI7XG4gICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBzZXRgIHRvIGFuIGFycmF5IG9mIGl0cyB2YWx1ZXMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzZXQgVGhlIHNldCB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHZhbHVlcy5cbiAgICovXG4gIGZ1bmN0aW9uIHNldFRvQXJyYXkoc2V0KSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KHNldC5zaXplKTtcblxuICAgIHNldC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXN1bHRbKytpbmRleF0gPSB2YWx1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBzZXRgIHRvIGl0cyB2YWx1ZS12YWx1ZSBwYWlycy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgdmFsdWUtdmFsdWUgcGFpcnMuXG4gICAqL1xuICBmdW5jdGlvbiBzZXRUb1BhaXJzKHNldCkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG5cbiAgICBzZXQuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmVzdWx0WysraW5kZXhdID0gW3ZhbHVlLCB2YWx1ZV07XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uaW5kZXhPZmAgd2hpY2ggcGVyZm9ybXMgc3RyaWN0IGVxdWFsaXR5XG4gICAqIGNvbXBhcmlzb25zIG9mIHZhbHVlcywgaS5lLiBgPT09YC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgKi9cbiAgZnVuY3Rpb24gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoYXJyYXlbaW5kZXhdID09PSB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubGFzdEluZGV4T2ZgIHdoaWNoIHBlcmZvcm1zIHN0cmljdCBlcXVhbGl0eVxuICAgKiBjb21wYXJpc29ucyBvZiB2YWx1ZXMsIGkuZS4gYD09PWAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICovXG4gIGZ1bmN0aW9uIHN0cmljdExhc3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgdmFyIGluZGV4ID0gZnJvbUluZGV4ICsgMTtcbiAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgaWYgKGFycmF5W2luZGV4XSA9PT0gdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgbnVtYmVyIG9mIHN5bWJvbHMgaW4gYHN0cmluZ2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdHJpbmcgc2l6ZS5cbiAgICovXG4gIGZ1bmN0aW9uIHN0cmluZ1NpemUoc3RyaW5nKSB7XG4gICAgcmV0dXJuIGhhc1VuaWNvZGUoc3RyaW5nKVxuICAgICAgPyB1bmljb2RlU2l6ZShzdHJpbmcpXG4gICAgICA6IGFzY2lpU2l6ZShzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBzdHJpbmdUb0FycmF5KHN0cmluZykge1xuICAgIHJldHVybiBoYXNVbmljb2RlKHN0cmluZylcbiAgICAgID8gdW5pY29kZVRvQXJyYXkoc3RyaW5nKVxuICAgICAgOiBhc2NpaVRvQXJyYXkoc3RyaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLnVuZXNjYXBlYCB0byBjb252ZXJ0IEhUTUwgZW50aXRpZXMgdG8gY2hhcmFjdGVycy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNociBUaGUgbWF0Y2hlZCBjaGFyYWN0ZXIgdG8gdW5lc2NhcGUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuZXNjYXBlZCBjaGFyYWN0ZXIuXG4gICAqL1xuICB2YXIgdW5lc2NhcGVIdG1sQ2hhciA9IGJhc2VQcm9wZXJ0eU9mKGh0bWxVbmVzY2FwZXMpO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzaXplIG9mIGEgVW5pY29kZSBgc3RyaW5nYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN0cmluZyBzaXplLlxuICAgKi9cbiAgZnVuY3Rpb24gdW5pY29kZVNpemUoc3RyaW5nKSB7XG4gICAgdmFyIHJlc3VsdCA9IHJlVW5pY29kZS5sYXN0SW5kZXggPSAwO1xuICAgIHdoaWxlIChyZVVuaWNvZGUudGVzdChzdHJpbmcpKSB7XG4gICAgICArK3Jlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIFVuaWNvZGUgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIHVuaWNvZGVUb0FycmF5KHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcubWF0Y2gocmVVbmljb2RlKSB8fCBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdHMgYSBVbmljb2RlIGBzdHJpbmdgIGludG8gYW4gYXJyYXkgb2YgaXRzIHdvcmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHdvcmRzIG9mIGBzdHJpbmdgLlxuICAgKi9cbiAgZnVuY3Rpb24gdW5pY29kZVdvcmRzKHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcubWF0Y2gocmVVbmljb2RlV29yZCkgfHwgW107XG4gIH1cblxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHByaXN0aW5lIGBsb2Rhc2hgIGZ1bmN0aW9uIHVzaW5nIHRoZSBgY29udGV4dGAgb2JqZWN0LlxuICAgKlxuICAgKiBAc3RhdGljXG4gICAqIEBtZW1iZXJPZiBfXG4gICAqIEBzaW5jZSAxLjEuMFxuICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgKiBAcGFyYW0ge09iamVjdH0gW2NvbnRleHQ9cm9vdF0gVGhlIGNvbnRleHQgb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYSBuZXcgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIF8ubWl4aW4oeyAnZm9vJzogXy5jb25zdGFudCgnZm9vJykgfSk7XG4gICAqXG4gICAqIHZhciBsb2Rhc2ggPSBfLnJ1bkluQ29udGV4dCgpO1xuICAgKiBsb2Rhc2gubWl4aW4oeyAnYmFyJzogbG9kYXNoLmNvbnN0YW50KCdiYXInKSB9KTtcbiAgICpcbiAgICogXy5pc0Z1bmN0aW9uKF8uZm9vKTtcbiAgICogLy8gPT4gdHJ1ZVxuICAgKiBfLmlzRnVuY3Rpb24oXy5iYXIpO1xuICAgKiAvLyA9PiBmYWxzZVxuICAgKlxuICAgKiBsb2Rhc2guaXNGdW5jdGlvbihsb2Rhc2guZm9vKTtcbiAgICogLy8gPT4gZmFsc2VcbiAgICogbG9kYXNoLmlzRnVuY3Rpb24obG9kYXNoLmJhcik7XG4gICAqIC8vID0+IHRydWVcbiAgICpcbiAgICogLy8gQ3JlYXRlIGEgc3VwZWQtdXAgYGRlZmVyYCBpbiBOb2RlLmpzLlxuICAgKiB2YXIgZGVmZXIgPSBfLnJ1bkluQ29udGV4dCh7ICdzZXRUaW1lb3V0Jzogc2V0SW1tZWRpYXRlIH0pLmRlZmVyO1xuICAgKi9cbiAgdmFyIHJ1bkluQ29udGV4dCA9IChmdW5jdGlvbiBydW5JbkNvbnRleHQoY29udGV4dCkge1xuICAgIGNvbnRleHQgPSBjb250ZXh0ID09IG51bGwgPyByb290IDogXy5kZWZhdWx0cyhyb290Lk9iamVjdCgpLCBjb250ZXh0LCBfLnBpY2socm9vdCwgY29udGV4dFByb3BzKSk7XG5cbiAgICAvKiogQnVpbHQtaW4gY29uc3RydWN0b3IgcmVmZXJlbmNlcy4gKi9cbiAgICB2YXIgQXJyYXkgPSBjb250ZXh0LkFycmF5LFxuICAgICAgICBEYXRlID0gY29udGV4dC5EYXRlLFxuICAgICAgICBFcnJvciA9IGNvbnRleHQuRXJyb3IsXG4gICAgICAgIEZ1bmN0aW9uID0gY29udGV4dC5GdW5jdGlvbixcbiAgICAgICAgTWF0aCA9IGNvbnRleHQuTWF0aCxcbiAgICAgICAgT2JqZWN0ID0gY29udGV4dC5PYmplY3QsXG4gICAgICAgIFJlZ0V4cCA9IGNvbnRleHQuUmVnRXhwLFxuICAgICAgICBTdHJpbmcgPSBjb250ZXh0LlN0cmluZyxcbiAgICAgICAgVHlwZUVycm9yID0gY29udGV4dC5UeXBlRXJyb3I7XG5cbiAgICAvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG4gICAgdmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGUsXG4gICAgICAgIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcbiAgICAgICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4gICAgLyoqIFVzZWQgdG8gZGV0ZWN0IG92ZXJyZWFjaGluZyBjb3JlLWpzIHNoaW1zLiAqL1xuICAgIHZhciBjb3JlSnNEYXRhID0gY29udGV4dFsnX19jb3JlLWpzX3NoYXJlZF9fJ107XG5cbiAgICAvKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG4gICAgdmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuICAgIC8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xuICAgIHZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4gICAgLyoqIFVzZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIElEcy4gKi9cbiAgICB2YXIgaWRDb3VudGVyID0gMDtcblxuICAgIC8qKiBVc2VkIHRvIGRldGVjdCBtZXRob2RzIG1hc3F1ZXJhZGluZyBhcyBuYXRpdmUuICovXG4gICAgdmFyIG1hc2tTcmNLZXkgPSAoZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdWlkID0gL1teLl0rJC8uZXhlYyhjb3JlSnNEYXRhICYmIGNvcmVKc0RhdGEua2V5cyAmJiBjb3JlSnNEYXRhLmtleXMuSUVfUFJPVE8gfHwgJycpO1xuICAgICAgcmV0dXJuIHVpZCA/ICgnU3ltYm9sKHNyYylfMS4nICsgdWlkKSA6ICcnO1xuICAgIH0oKSk7XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gICAgICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gICAgICogb2YgdmFsdWVzLlxuICAgICAqL1xuICAgIHZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4gICAgLyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xuICAgIHZhciBvYmplY3RDdG9yU3RyaW5nID0gZnVuY1RvU3RyaW5nLmNhbGwoT2JqZWN0KTtcblxuICAgIC8qKiBVc2VkIHRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIGBfYCByZWZlcmVuY2UgaW4gYF8ubm9Db25mbGljdGAuICovXG4gICAgdmFyIG9sZERhc2ggPSByb290Ll87XG5cbiAgICAvKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xuICAgIHZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArXG4gICAgICBmdW5jVG9TdHJpbmcuY2FsbChoYXNPd25Qcm9wZXJ0eSkucmVwbGFjZShyZVJlZ0V4cENoYXIsICdcXFxcJCYnKVxuICAgICAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4gICAgKTtcblxuICAgIC8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xuICAgIHZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gY29udGV4dC5CdWZmZXIgOiB1bmRlZmluZWQsXG4gICAgICAgIFN5bWJvbCA9IGNvbnRleHQuU3ltYm9sLFxuICAgICAgICBVaW50OEFycmF5ID0gY29udGV4dC5VaW50OEFycmF5LFxuICAgICAgICBhbGxvY1Vuc2FmZSA9IEJ1ZmZlciA/IEJ1ZmZlci5hbGxvY1Vuc2FmZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ2V0UHJvdG90eXBlID0gb3ZlckFyZyhPYmplY3QuZ2V0UHJvdG90eXBlT2YsIE9iamVjdCksXG4gICAgICAgIG9iamVjdENyZWF0ZSA9IE9iamVjdC5jcmVhdGUsXG4gICAgICAgIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGUsXG4gICAgICAgIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlLFxuICAgICAgICBzcHJlYWRhYmxlU3ltYm9sID0gU3ltYm9sID8gU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgc3ltSXRlcmF0b3IgPSBTeW1ib2wgPyBTeW1ib2wuaXRlcmF0b3IgOiB1bmRlZmluZWQsXG4gICAgICAgIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4gICAgdmFyIGRlZmluZVByb3BlcnR5ID0gKGZ1bmN0aW9uKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIGZ1bmMgPSBnZXROYXRpdmUoT2JqZWN0LCAnZGVmaW5lUHJvcGVydHknKTtcbiAgICAgICAgZnVuYyh7fSwgJycsIHt9KTtcbiAgICAgICAgcmV0dXJuIGZ1bmM7XG4gICAgICB9IGNhdGNoIChlKSB7fVxuICAgIH0oKSk7XG5cbiAgICAvKiogTW9ja2VkIGJ1aWx0LWlucy4gKi9cbiAgICB2YXIgY3R4Q2xlYXJUaW1lb3V0ID0gY29udGV4dC5jbGVhclRpbWVvdXQgIT09IHJvb3QuY2xlYXJUaW1lb3V0ICYmIGNvbnRleHQuY2xlYXJUaW1lb3V0LFxuICAgICAgICBjdHhOb3cgPSBEYXRlICYmIERhdGUubm93ICE9PSByb290LkRhdGUubm93ICYmIERhdGUubm93LFxuICAgICAgICBjdHhTZXRUaW1lb3V0ID0gY29udGV4dC5zZXRUaW1lb3V0ICE9PSByb290LnNldFRpbWVvdXQgJiYgY29udGV4dC5zZXRUaW1lb3V0O1xuXG4gICAgLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xuICAgIHZhciBuYXRpdmVDZWlsID0gTWF0aC5jZWlsLFxuICAgICAgICBuYXRpdmVGbG9vciA9IE1hdGguZmxvb3IsXG4gICAgICAgIG5hdGl2ZUdldFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLFxuICAgICAgICBuYXRpdmVJc0J1ZmZlciA9IEJ1ZmZlciA/IEJ1ZmZlci5pc0J1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICAgICAgbmF0aXZlSXNGaW5pdGUgPSBjb250ZXh0LmlzRmluaXRlLFxuICAgICAgICBuYXRpdmVKb2luID0gYXJyYXlQcm90by5qb2luLFxuICAgICAgICBuYXRpdmVLZXlzID0gb3ZlckFyZyhPYmplY3Qua2V5cywgT2JqZWN0KSxcbiAgICAgICAgbmF0aXZlTWF4ID0gTWF0aC5tYXgsXG4gICAgICAgIG5hdGl2ZU1pbiA9IE1hdGgubWluLFxuICAgICAgICBuYXRpdmVOb3cgPSBEYXRlLm5vdyxcbiAgICAgICAgbmF0aXZlUGFyc2VJbnQgPSBjb250ZXh0LnBhcnNlSW50LFxuICAgICAgICBuYXRpdmVSYW5kb20gPSBNYXRoLnJhbmRvbSxcbiAgICAgICAgbmF0aXZlUmV2ZXJzZSA9IGFycmF5UHJvdG8ucmV2ZXJzZTtcblxuICAgIC8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbiAgICB2YXIgRGF0YVZpZXcgPSBnZXROYXRpdmUoY29udGV4dCwgJ0RhdGFWaWV3JyksXG4gICAgICAgIE1hcCA9IGdldE5hdGl2ZShjb250ZXh0LCAnTWFwJyksXG4gICAgICAgIFByb21pc2UgPSBnZXROYXRpdmUoY29udGV4dCwgJ1Byb21pc2UnKSxcbiAgICAgICAgU2V0ID0gZ2V0TmF0aXZlKGNvbnRleHQsICdTZXQnKSxcbiAgICAgICAgV2Vha01hcCA9IGdldE5hdGl2ZShjb250ZXh0LCAnV2Vha01hcCcpLFxuICAgICAgICBuYXRpdmVDcmVhdGUgPSBnZXROYXRpdmUoT2JqZWN0LCAnY3JlYXRlJyk7XG5cbiAgICAvKiogVXNlZCB0byBzdG9yZSBmdW5jdGlvbiBtZXRhZGF0YS4gKi9cbiAgICB2YXIgbWV0YU1hcCA9IFdlYWtNYXAgJiYgbmV3IFdlYWtNYXA7XG5cbiAgICAvKiogVXNlZCB0byBsb29rdXAgdW5taW5pZmllZCBmdW5jdGlvbiBuYW1lcy4gKi9cbiAgICB2YXIgcmVhbE5hbWVzID0ge307XG5cbiAgICAvKiogVXNlZCB0byBkZXRlY3QgbWFwcywgc2V0cywgYW5kIHdlYWttYXBzLiAqL1xuICAgIHZhciBkYXRhVmlld0N0b3JTdHJpbmcgPSB0b1NvdXJjZShEYXRhVmlldyksXG4gICAgICAgIG1hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShNYXApLFxuICAgICAgICBwcm9taXNlQ3RvclN0cmluZyA9IHRvU291cmNlKFByb21pc2UpLFxuICAgICAgICBzZXRDdG9yU3RyaW5nID0gdG9Tb3VyY2UoU2V0KSxcbiAgICAgICAgd2Vha01hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShXZWFrTWFwKTtcblxuICAgIC8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xuICAgIHZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgICAgIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQsXG4gICAgICAgIHN5bWJvbFRvU3RyaW5nID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by50b1N0cmluZyA6IHVuZGVmaW5lZDtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgbG9kYXNoYCBvYmplY3Qgd2hpY2ggd3JhcHMgYHZhbHVlYCB0byBlbmFibGUgaW1wbGljaXQgbWV0aG9kXG4gICAgICogY2hhaW4gc2VxdWVuY2VzLiBNZXRob2RzIHRoYXQgb3BlcmF0ZSBvbiBhbmQgcmV0dXJuIGFycmF5cywgY29sbGVjdGlvbnMsXG4gICAgICogYW5kIGZ1bmN0aW9ucyBjYW4gYmUgY2hhaW5lZCB0b2dldGhlci4gTWV0aG9kcyB0aGF0IHJldHJpZXZlIGEgc2luZ2xlIHZhbHVlXG4gICAgICogb3IgbWF5IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZSB3aWxsIGF1dG9tYXRpY2FsbHkgZW5kIHRoZSBjaGFpbiBzZXF1ZW5jZVxuICAgICAqIGFuZCByZXR1cm4gdGhlIHVud3JhcHBlZCB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgdmFsdWUgbXVzdCBiZSB1bndyYXBwZWRcbiAgICAgKiB3aXRoIGBfI3ZhbHVlYC5cbiAgICAgKlxuICAgICAqIEV4cGxpY2l0IGNoYWluIHNlcXVlbmNlcywgd2hpY2ggbXVzdCBiZSB1bndyYXBwZWQgd2l0aCBgXyN2YWx1ZWAsIG1heSBiZVxuICAgICAqIGVuYWJsZWQgdXNpbmcgYF8uY2hhaW5gLlxuICAgICAqXG4gICAgICogVGhlIGV4ZWN1dGlvbiBvZiBjaGFpbmVkIG1ldGhvZHMgaXMgbGF6eSwgdGhhdCBpcywgaXQncyBkZWZlcnJlZCB1bnRpbFxuICAgICAqIGBfI3ZhbHVlYCBpcyBpbXBsaWNpdGx5IG9yIGV4cGxpY2l0bHkgY2FsbGVkLlxuICAgICAqXG4gICAgICogTGF6eSBldmFsdWF0aW9uIGFsbG93cyBzZXZlcmFsIG1ldGhvZHMgdG8gc3VwcG9ydCBzaG9ydGN1dCBmdXNpb24uXG4gICAgICogU2hvcnRjdXQgZnVzaW9uIGlzIGFuIG9wdGltaXphdGlvbiB0byBtZXJnZSBpdGVyYXRlZSBjYWxsczsgdGhpcyBhdm9pZHNcbiAgICAgKiB0aGUgY3JlYXRpb24gb2YgaW50ZXJtZWRpYXRlIGFycmF5cyBhbmQgY2FuIGdyZWF0bHkgcmVkdWNlIHRoZSBudW1iZXIgb2ZcbiAgICAgKiBpdGVyYXRlZSBleGVjdXRpb25zLiBTZWN0aW9ucyBvZiBhIGNoYWluIHNlcXVlbmNlIHF1YWxpZnkgZm9yIHNob3J0Y3V0XG4gICAgICogZnVzaW9uIGlmIHRoZSBzZWN0aW9uIGlzIGFwcGxpZWQgdG8gYW4gYXJyYXkgYW5kIGl0ZXJhdGVlcyBhY2NlcHQgb25seVxuICAgICAqIG9uZSBhcmd1bWVudC4gVGhlIGhldXJpc3RpYyBmb3Igd2hldGhlciBhIHNlY3Rpb24gcXVhbGlmaWVzIGZvciBzaG9ydGN1dFxuICAgICAqIGZ1c2lvbiBpcyBzdWJqZWN0IHRvIGNoYW5nZS5cbiAgICAgKlxuICAgICAqIENoYWluaW5nIGlzIHN1cHBvcnRlZCBpbiBjdXN0b20gYnVpbGRzIGFzIGxvbmcgYXMgdGhlIGBfI3ZhbHVlYCBtZXRob2QgaXNcbiAgICAgKiBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGluY2x1ZGVkIGluIHRoZSBidWlsZC5cbiAgICAgKlxuICAgICAqIEluIGFkZGl0aW9uIHRvIGxvZGFzaCBtZXRob2RzLCB3cmFwcGVycyBoYXZlIGBBcnJheWAgYW5kIGBTdHJpbmdgIG1ldGhvZHMuXG4gICAgICpcbiAgICAgKiBUaGUgd3JhcHBlciBgQXJyYXlgIG1ldGhvZHMgYXJlOlxuICAgICAqIGBjb25jYXRgLCBgam9pbmAsIGBwb3BgLCBgcHVzaGAsIGBzaGlmdGAsIGBzb3J0YCwgYHNwbGljZWAsIGFuZCBgdW5zaGlmdGBcbiAgICAgKlxuICAgICAqIFRoZSB3cmFwcGVyIGBTdHJpbmdgIG1ldGhvZHMgYXJlOlxuICAgICAqIGByZXBsYWNlYCBhbmQgYHNwbGl0YFxuICAgICAqXG4gICAgICogVGhlIHdyYXBwZXIgbWV0aG9kcyB0aGF0IHN1cHBvcnQgc2hvcnRjdXQgZnVzaW9uIGFyZTpcbiAgICAgKiBgYXRgLCBgY29tcGFjdGAsIGBkcm9wYCwgYGRyb3BSaWdodGAsIGBkcm9wV2hpbGVgLCBgZmlsdGVyYCwgYGZpbmRgLFxuICAgICAqIGBmaW5kTGFzdGAsIGBoZWFkYCwgYGluaXRpYWxgLCBgbGFzdGAsIGBtYXBgLCBgcmVqZWN0YCwgYHJldmVyc2VgLCBgc2xpY2VgLFxuICAgICAqIGB0YWlsYCwgYHRha2VgLCBgdGFrZVJpZ2h0YCwgYHRha2VSaWdodFdoaWxlYCwgYHRha2VXaGlsZWAsIGFuZCBgdG9BcnJheWBcbiAgICAgKlxuICAgICAqIFRoZSBjaGFpbmFibGUgd3JhcHBlciBtZXRob2RzIGFyZTpcbiAgICAgKiBgYWZ0ZXJgLCBgYXJ5YCwgYGFzc2lnbmAsIGBhc3NpZ25JbmAsIGBhc3NpZ25JbldpdGhgLCBgYXNzaWduV2l0aGAsIGBhdGAsXG4gICAgICogYGJlZm9yZWAsIGBiaW5kYCwgYGJpbmRBbGxgLCBgYmluZEtleWAsIGBjYXN0QXJyYXlgLCBgY2hhaW5gLCBgY2h1bmtgLFxuICAgICAqIGBjb21taXRgLCBgY29tcGFjdGAsIGBjb25jYXRgLCBgY29uZm9ybXNgLCBgY29uc3RhbnRgLCBgY291bnRCeWAsIGBjcmVhdGVgLFxuICAgICAqIGBjdXJyeWAsIGBkZWJvdW5jZWAsIGBkZWZhdWx0c2AsIGBkZWZhdWx0c0RlZXBgLCBgZGVmZXJgLCBgZGVsYXlgLFxuICAgICAqIGBkaWZmZXJlbmNlYCwgYGRpZmZlcmVuY2VCeWAsIGBkaWZmZXJlbmNlV2l0aGAsIGBkcm9wYCwgYGRyb3BSaWdodGAsXG4gICAgICogYGRyb3BSaWdodFdoaWxlYCwgYGRyb3BXaGlsZWAsIGBleHRlbmRgLCBgZXh0ZW5kV2l0aGAsIGBmaWxsYCwgYGZpbHRlcmAsXG4gICAgICogYGZsYXRNYXBgLCBgZmxhdE1hcERlZXBgLCBgZmxhdE1hcERlcHRoYCwgYGZsYXR0ZW5gLCBgZmxhdHRlbkRlZXBgLFxuICAgICAqIGBmbGF0dGVuRGVwdGhgLCBgZmxpcGAsIGBmbG93YCwgYGZsb3dSaWdodGAsIGBmcm9tUGFpcnNgLCBgZnVuY3Rpb25zYCxcbiAgICAgKiBgZnVuY3Rpb25zSW5gLCBgZ3JvdXBCeWAsIGBpbml0aWFsYCwgYGludGVyc2VjdGlvbmAsIGBpbnRlcnNlY3Rpb25CeWAsXG4gICAgICogYGludGVyc2VjdGlvbldpdGhgLCBgaW52ZXJ0YCwgYGludmVydEJ5YCwgYGludm9rZU1hcGAsIGBpdGVyYXRlZWAsIGBrZXlCeWAsXG4gICAgICogYGtleXNgLCBga2V5c0luYCwgYG1hcGAsIGBtYXBLZXlzYCwgYG1hcFZhbHVlc2AsIGBtYXRjaGVzYCwgYG1hdGNoZXNQcm9wZXJ0eWAsXG4gICAgICogYG1lbW9pemVgLCBgbWVyZ2VgLCBgbWVyZ2VXaXRoYCwgYG1ldGhvZGAsIGBtZXRob2RPZmAsIGBtaXhpbmAsIGBuZWdhdGVgLFxuICAgICAqIGBudGhBcmdgLCBgb21pdGAsIGBvbWl0QnlgLCBgb25jZWAsIGBvcmRlckJ5YCwgYG92ZXJgLCBgb3ZlckFyZ3NgLFxuICAgICAqIGBvdmVyRXZlcnlgLCBgb3ZlclNvbWVgLCBgcGFydGlhbGAsIGBwYXJ0aWFsUmlnaHRgLCBgcGFydGl0aW9uYCwgYHBpY2tgLFxuICAgICAqIGBwaWNrQnlgLCBgcGxhbnRgLCBgcHJvcGVydHlgLCBgcHJvcGVydHlPZmAsIGBwdWxsYCwgYHB1bGxBbGxgLCBgcHVsbEFsbEJ5YCxcbiAgICAgKiBgcHVsbEFsbFdpdGhgLCBgcHVsbEF0YCwgYHB1c2hgLCBgcmFuZ2VgLCBgcmFuZ2VSaWdodGAsIGByZWFyZ2AsIGByZWplY3RgLFxuICAgICAqIGByZW1vdmVgLCBgcmVzdGAsIGByZXZlcnNlYCwgYHNhbXBsZVNpemVgLCBgc2V0YCwgYHNldFdpdGhgLCBgc2h1ZmZsZWAsXG4gICAgICogYHNsaWNlYCwgYHNvcnRgLCBgc29ydEJ5YCwgYHNwbGljZWAsIGBzcHJlYWRgLCBgdGFpbGAsIGB0YWtlYCwgYHRha2VSaWdodGAsXG4gICAgICogYHRha2VSaWdodFdoaWxlYCwgYHRha2VXaGlsZWAsIGB0YXBgLCBgdGhyb3R0bGVgLCBgdGhydWAsIGB0b0FycmF5YCxcbiAgICAgKiBgdG9QYWlyc2AsIGB0b1BhaXJzSW5gLCBgdG9QYXRoYCwgYHRvUGxhaW5PYmplY3RgLCBgdHJhbnNmb3JtYCwgYHVuYXJ5YCxcbiAgICAgKiBgdW5pb25gLCBgdW5pb25CeWAsIGB1bmlvbldpdGhgLCBgdW5pcWAsIGB1bmlxQnlgLCBgdW5pcVdpdGhgLCBgdW5zZXRgLFxuICAgICAqIGB1bnNoaWZ0YCwgYHVuemlwYCwgYHVuemlwV2l0aGAsIGB1cGRhdGVgLCBgdXBkYXRlV2l0aGAsIGB2YWx1ZXNgLFxuICAgICAqIGB2YWx1ZXNJbmAsIGB3aXRob3V0YCwgYHdyYXBgLCBgeG9yYCwgYHhvckJ5YCwgYHhvcldpdGhgLCBgemlwYCxcbiAgICAgKiBgemlwT2JqZWN0YCwgYHppcE9iamVjdERlZXBgLCBhbmQgYHppcFdpdGhgXG4gICAgICpcbiAgICAgKiBUaGUgd3JhcHBlciBtZXRob2RzIHRoYXQgYXJlICoqbm90KiogY2hhaW5hYmxlIGJ5IGRlZmF1bHQgYXJlOlxuICAgICAqIGBhZGRgLCBgYXR0ZW1wdGAsIGBjYW1lbENhc2VgLCBgY2FwaXRhbGl6ZWAsIGBjZWlsYCwgYGNsYW1wYCwgYGNsb25lYCxcbiAgICAgKiBgY2xvbmVEZWVwYCwgYGNsb25lRGVlcFdpdGhgLCBgY2xvbmVXaXRoYCwgYGNvbmZvcm1zVG9gLCBgZGVidXJyYCxcbiAgICAgKiBgZGVmYXVsdFRvYCwgYGRpdmlkZWAsIGBlYWNoYCwgYGVhY2hSaWdodGAsIGBlbmRzV2l0aGAsIGBlcWAsIGBlc2NhcGVgLFxuICAgICAqIGBlc2NhcGVSZWdFeHBgLCBgZXZlcnlgLCBgZmluZGAsIGBmaW5kSW5kZXhgLCBgZmluZEtleWAsIGBmaW5kTGFzdGAsXG4gICAgICogYGZpbmRMYXN0SW5kZXhgLCBgZmluZExhc3RLZXlgLCBgZmlyc3RgLCBgZmxvb3JgLCBgZm9yRWFjaGAsIGBmb3JFYWNoUmlnaHRgLFxuICAgICAqIGBmb3JJbmAsIGBmb3JJblJpZ2h0YCwgYGZvck93bmAsIGBmb3JPd25SaWdodGAsIGBnZXRgLCBgZ3RgLCBgZ3RlYCwgYGhhc2AsXG4gICAgICogYGhhc0luYCwgYGhlYWRgLCBgaWRlbnRpdHlgLCBgaW5jbHVkZXNgLCBgaW5kZXhPZmAsIGBpblJhbmdlYCwgYGludm9rZWAsXG4gICAgICogYGlzQXJndW1lbnRzYCwgYGlzQXJyYXlgLCBgaXNBcnJheUJ1ZmZlcmAsIGBpc0FycmF5TGlrZWAsIGBpc0FycmF5TGlrZU9iamVjdGAsXG4gICAgICogYGlzQm9vbGVhbmAsIGBpc0J1ZmZlcmAsIGBpc0RhdGVgLCBgaXNFbGVtZW50YCwgYGlzRW1wdHlgLCBgaXNFcXVhbGAsXG4gICAgICogYGlzRXF1YWxXaXRoYCwgYGlzRXJyb3JgLCBgaXNGaW5pdGVgLCBgaXNGdW5jdGlvbmAsIGBpc0ludGVnZXJgLCBgaXNMZW5ndGhgLFxuICAgICAqIGBpc01hcGAsIGBpc01hdGNoYCwgYGlzTWF0Y2hXaXRoYCwgYGlzTmFOYCwgYGlzTmF0aXZlYCwgYGlzTmlsYCwgYGlzTnVsbGAsXG4gICAgICogYGlzTnVtYmVyYCwgYGlzT2JqZWN0YCwgYGlzT2JqZWN0TGlrZWAsIGBpc1BsYWluT2JqZWN0YCwgYGlzUmVnRXhwYCxcbiAgICAgKiBgaXNTYWZlSW50ZWdlcmAsIGBpc1NldGAsIGBpc1N0cmluZ2AsIGBpc1VuZGVmaW5lZGAsIGBpc1R5cGVkQXJyYXlgLFxuICAgICAqIGBpc1dlYWtNYXBgLCBgaXNXZWFrU2V0YCwgYGpvaW5gLCBga2ViYWJDYXNlYCwgYGxhc3RgLCBgbGFzdEluZGV4T2ZgLFxuICAgICAqIGBsb3dlckNhc2VgLCBgbG93ZXJGaXJzdGAsIGBsdGAsIGBsdGVgLCBgbWF4YCwgYG1heEJ5YCwgYG1lYW5gLCBgbWVhbkJ5YCxcbiAgICAgKiBgbWluYCwgYG1pbkJ5YCwgYG11bHRpcGx5YCwgYG5vQ29uZmxpY3RgLCBgbm9vcGAsIGBub3dgLCBgbnRoYCwgYHBhZGAsXG4gICAgICogYHBhZEVuZGAsIGBwYWRTdGFydGAsIGBwYXJzZUludGAsIGBwb3BgLCBgcmFuZG9tYCwgYHJlZHVjZWAsIGByZWR1Y2VSaWdodGAsXG4gICAgICogYHJlcGVhdGAsIGByZXN1bHRgLCBgcm91bmRgLCBgcnVuSW5Db250ZXh0YCwgYHNhbXBsZWAsIGBzaGlmdGAsIGBzaXplYCxcbiAgICAgKiBgc25ha2VDYXNlYCwgYHNvbWVgLCBgc29ydGVkSW5kZXhgLCBgc29ydGVkSW5kZXhCeWAsIGBzb3J0ZWRMYXN0SW5kZXhgLFxuICAgICAqIGBzb3J0ZWRMYXN0SW5kZXhCeWAsIGBzdGFydENhc2VgLCBgc3RhcnRzV2l0aGAsIGBzdHViQXJyYXlgLCBgc3R1YkZhbHNlYCxcbiAgICAgKiBgc3R1Yk9iamVjdGAsIGBzdHViU3RyaW5nYCwgYHN0dWJUcnVlYCwgYHN1YnRyYWN0YCwgYHN1bWAsIGBzdW1CeWAsXG4gICAgICogYHRlbXBsYXRlYCwgYHRpbWVzYCwgYHRvRmluaXRlYCwgYHRvSW50ZWdlcmAsIGB0b0pTT05gLCBgdG9MZW5ndGhgLFxuICAgICAqIGB0b0xvd2VyYCwgYHRvTnVtYmVyYCwgYHRvU2FmZUludGVnZXJgLCBgdG9TdHJpbmdgLCBgdG9VcHBlcmAsIGB0cmltYCxcbiAgICAgKiBgdHJpbUVuZGAsIGB0cmltU3RhcnRgLCBgdHJ1bmNhdGVgLCBgdW5lc2NhcGVgLCBgdW5pcXVlSWRgLCBgdXBwZXJDYXNlYCxcbiAgICAgKiBgdXBwZXJGaXJzdGAsIGB2YWx1ZWAsIGFuZCBgd29yZHNgXG4gICAgICpcbiAgICAgKiBAbmFtZSBfXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHdyYXAgaW4gYSBgbG9kYXNoYCBpbnN0YW5jZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oWzEsIDIsIDNdKTtcbiAgICAgKlxuICAgICAqIC8vIFJldHVybnMgYW4gdW53cmFwcGVkIHZhbHVlLlxuICAgICAqIHdyYXBwZWQucmVkdWNlKF8uYWRkKTtcbiAgICAgKiAvLyA9PiA2XG4gICAgICpcbiAgICAgKiAvLyBSZXR1cm5zIGEgd3JhcHBlZCB2YWx1ZS5cbiAgICAgKiB2YXIgc3F1YXJlcyA9IHdyYXBwZWQubWFwKHNxdWFyZSk7XG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoc3F1YXJlcyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheShzcXVhcmVzLnZhbHVlKCkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsb2Rhc2godmFsdWUpIHtcbiAgICAgIGlmIChpc09iamVjdExpa2UodmFsdWUpICYmICFpc0FycmF5KHZhbHVlKSAmJiAhKHZhbHVlIGluc3RhbmNlb2YgTGF6eVdyYXBwZXIpKSB7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIExvZGFzaFdyYXBwZXIpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdfX3dyYXBwZWRfXycpKSB7XG4gICAgICAgICAgcmV0dXJuIHdyYXBwZXJDbG9uZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgTG9kYXNoV3JhcHBlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY3JlYXRlYCB3aXRob3V0IHN1cHBvcnQgZm9yIGFzc2lnbmluZ1xuICAgICAqIHByb3BlcnRpZXMgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvdG8gVGhlIG9iamVjdCB0byBpbmhlcml0IGZyb20uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZUNyZWF0ZSA9IChmdW5jdGlvbigpIHtcbiAgICAgIGZ1bmN0aW9uIG9iamVjdCgpIHt9XG4gICAgICByZXR1cm4gZnVuY3Rpb24ocHJvdG8pIHtcbiAgICAgICAgaWYgKCFpc09iamVjdChwcm90bykpIHtcbiAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9iamVjdENyZWF0ZSkge1xuICAgICAgICAgIHJldHVybiBvYmplY3RDcmVhdGUocHJvdG8pO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdC5wcm90b3R5cGUgPSBwcm90bztcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBvYmplY3Q7XG4gICAgICAgIG9iamVjdC5wcm90b3R5cGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH0oKSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZnVuY3Rpb24gd2hvc2UgcHJvdG90eXBlIGNoYWluIHNlcXVlbmNlIHdyYXBwZXJzIGluaGVyaXQgZnJvbS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUxvZGFzaCgpIHtcbiAgICAgIC8vIE5vIG9wZXJhdGlvbiBwZXJmb3JtZWQuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgY29uc3RydWN0b3IgZm9yIGNyZWF0aW5nIGBsb2Rhc2hgIHdyYXBwZXIgb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtjaGFpbkFsbF0gRW5hYmxlIGV4cGxpY2l0IG1ldGhvZCBjaGFpbiBzZXF1ZW5jZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gTG9kYXNoV3JhcHBlcih2YWx1ZSwgY2hhaW5BbGwpIHtcbiAgICAgIHRoaXMuX193cmFwcGVkX18gPSB2YWx1ZTtcbiAgICAgIHRoaXMuX19hY3Rpb25zX18gPSBbXTtcbiAgICAgIHRoaXMuX19jaGFpbl9fID0gISFjaGFpbkFsbDtcbiAgICAgIHRoaXMuX19pbmRleF9fID0gMDtcbiAgICAgIHRoaXMuX192YWx1ZXNfXyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCeSBkZWZhdWx0LCB0aGUgdGVtcGxhdGUgZGVsaW1pdGVycyB1c2VkIGJ5IGxvZGFzaCBhcmUgbGlrZSB0aG9zZSBpblxuICAgICAqIGVtYmVkZGVkIFJ1YnkgKEVSQikgYXMgd2VsbCBhcyBFUzIwMTUgdGVtcGxhdGUgc3RyaW5ncy4gQ2hhbmdlIHRoZVxuICAgICAqIGZvbGxvd2luZyB0ZW1wbGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUgZGVsaW1pdGVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICovXG4gICAgbG9kYXNoLnRlbXBsYXRlU2V0dGluZ3MgPSB7XG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byBkZXRlY3QgYGRhdGFgIHByb3BlcnR5IHZhbHVlcyB0byBiZSBIVE1MLWVzY2FwZWQuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge1JlZ0V4cH1cbiAgICAgICAqL1xuICAgICAgJ2VzY2FwZSc6IHJlRXNjYXBlLFxuXG4gICAgICAvKipcbiAgICAgICAqIFVzZWQgdG8gZGV0ZWN0IGNvZGUgdG8gYmUgZXZhbHVhdGVkLlxuICAgICAgICpcbiAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAqIEB0eXBlIHtSZWdFeHB9XG4gICAgICAgKi9cbiAgICAgICdldmFsdWF0ZSc6IHJlRXZhbHVhdGUsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byBkZXRlY3QgYGRhdGFgIHByb3BlcnR5IHZhbHVlcyB0byBpbmplY3QuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge1JlZ0V4cH1cbiAgICAgICAqL1xuICAgICAgJ2ludGVycG9sYXRlJzogcmVJbnRlcnBvbGF0ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBVc2VkIHRvIHJlZmVyZW5jZSB0aGUgZGF0YSBvYmplY3QgaW4gdGhlIHRlbXBsYXRlIHRleHQuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAqL1xuICAgICAgJ3ZhcmlhYmxlJzogJycsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byBpbXBvcnQgdmFyaWFibGVzIGludG8gdGhlIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAgICpcbiAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICAgKi9cbiAgICAgICdpbXBvcnRzJzoge1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAgICAgICAqXG4gICAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3MuaW1wb3J0c1xuICAgICAgICAgKiBAdHlwZSB7RnVuY3Rpb259XG4gICAgICAgICAqL1xuICAgICAgICAnXyc6IGxvZGFzaFxuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBFbnN1cmUgd3JhcHBlcnMgYXJlIGluc3RhbmNlcyBvZiBgYmFzZUxvZGFzaGAuXG4gICAgbG9kYXNoLnByb3RvdHlwZSA9IGJhc2VMb2Rhc2gucHJvdG90eXBlO1xuICAgIGxvZGFzaC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBsb2Rhc2g7XG5cbiAgICBMb2Rhc2hXcmFwcGVyLnByb3RvdHlwZSA9IGJhc2VDcmVhdGUoYmFzZUxvZGFzaC5wcm90b3R5cGUpO1xuICAgIExvZGFzaFdyYXBwZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTG9kYXNoV3JhcHBlcjtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBsYXp5IHdyYXBwZXIgb2JqZWN0IHdoaWNoIHdyYXBzIGB2YWx1ZWAgdG8gZW5hYmxlIGxhenkgZXZhbHVhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBMYXp5V3JhcHBlcih2YWx1ZSkge1xuICAgICAgdGhpcy5fX3dyYXBwZWRfXyA9IHZhbHVlO1xuICAgICAgdGhpcy5fX2FjdGlvbnNfXyA9IFtdO1xuICAgICAgdGhpcy5fX2Rpcl9fID0gMTtcbiAgICAgIHRoaXMuX19maWx0ZXJlZF9fID0gZmFsc2U7XG4gICAgICB0aGlzLl9faXRlcmF0ZWVzX18gPSBbXTtcbiAgICAgIHRoaXMuX190YWtlQ291bnRfXyA9IE1BWF9BUlJBWV9MRU5HVEg7XG4gICAgICB0aGlzLl9fdmlld3NfXyA9IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgbGF6eSB3cmFwcGVyIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgY2xvbmVcbiAgICAgKiBAbWVtYmVyT2YgTGF6eVdyYXBwZXJcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgYExhenlXcmFwcGVyYCBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGF6eUNsb25lKCkge1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBMYXp5V3JhcHBlcih0aGlzLl9fd3JhcHBlZF9fKTtcbiAgICAgIHJlc3VsdC5fX2FjdGlvbnNfXyA9IGNvcHlBcnJheSh0aGlzLl9fYWN0aW9uc19fKTtcbiAgICAgIHJlc3VsdC5fX2Rpcl9fID0gdGhpcy5fX2Rpcl9fO1xuICAgICAgcmVzdWx0Ll9fZmlsdGVyZWRfXyA9IHRoaXMuX19maWx0ZXJlZF9fO1xuICAgICAgcmVzdWx0Ll9faXRlcmF0ZWVzX18gPSBjb3B5QXJyYXkodGhpcy5fX2l0ZXJhdGVlc19fKTtcbiAgICAgIHJlc3VsdC5fX3Rha2VDb3VudF9fID0gdGhpcy5fX3Rha2VDb3VudF9fO1xuICAgICAgcmVzdWx0Ll9fdmlld3NfXyA9IGNvcHlBcnJheSh0aGlzLl9fdmlld3NfXyk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldmVyc2VzIHRoZSBkaXJlY3Rpb24gb2YgbGF6eSBpdGVyYXRpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIHJldmVyc2VcbiAgICAgKiBAbWVtYmVyT2YgTGF6eVdyYXBwZXJcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgcmV2ZXJzZWQgYExhenlXcmFwcGVyYCBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGF6eVJldmVyc2UoKSB7XG4gICAgICBpZiAodGhpcy5fX2ZpbHRlcmVkX18pIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgICAgcmVzdWx0Ll9fZGlyX18gPSAtMTtcbiAgICAgICAgcmVzdWx0Ll9fZmlsdGVyZWRfXyA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSB0aGlzLmNsb25lKCk7XG4gICAgICAgIHJlc3VsdC5fX2Rpcl9fICo9IC0xO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHRyYWN0cyB0aGUgdW53cmFwcGVkIHZhbHVlIGZyb20gaXRzIGxhenkgd3JhcHBlci5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgdmFsdWVcbiAgICAgKiBAbWVtYmVyT2YgTGF6eVdyYXBwZXJcbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxhenlWYWx1ZSgpIHtcbiAgICAgIHZhciBhcnJheSA9IHRoaXMuX193cmFwcGVkX18udmFsdWUoKSxcbiAgICAgICAgICBkaXIgPSB0aGlzLl9fZGlyX18sXG4gICAgICAgICAgaXNBcnIgPSBpc0FycmF5KGFycmF5KSxcbiAgICAgICAgICBpc1JpZ2h0ID0gZGlyIDwgMCxcbiAgICAgICAgICBhcnJMZW5ndGggPSBpc0FyciA/IGFycmF5Lmxlbmd0aCA6IDAsXG4gICAgICAgICAgdmlldyA9IGdldFZpZXcoMCwgYXJyTGVuZ3RoLCB0aGlzLl9fdmlld3NfXyksXG4gICAgICAgICAgc3RhcnQgPSB2aWV3LnN0YXJ0LFxuICAgICAgICAgIGVuZCA9IHZpZXcuZW5kLFxuICAgICAgICAgIGxlbmd0aCA9IGVuZCAtIHN0YXJ0LFxuICAgICAgICAgIGluZGV4ID0gaXNSaWdodCA/IGVuZCA6IChzdGFydCAtIDEpLFxuICAgICAgICAgIGl0ZXJhdGVlcyA9IHRoaXMuX19pdGVyYXRlZXNfXyxcbiAgICAgICAgICBpdGVyTGVuZ3RoID0gaXRlcmF0ZWVzLmxlbmd0aCxcbiAgICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgICAgdGFrZUNvdW50ID0gbmF0aXZlTWluKGxlbmd0aCwgdGhpcy5fX3Rha2VDb3VudF9fKTtcblxuICAgICAgaWYgKCFpc0FyciB8fCAoIWlzUmlnaHQgJiYgYXJyTGVuZ3RoID09IGxlbmd0aCAmJiB0YWtlQ291bnQgPT0gbGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gYmFzZVdyYXBwZXJWYWx1ZShhcnJheSwgdGhpcy5fX2FjdGlvbnNfXyk7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG5cbiAgICAgIG91dGVyOlxuICAgICAgd2hpbGUgKGxlbmd0aC0tICYmIHJlc0luZGV4IDwgdGFrZUNvdW50KSB7XG4gICAgICAgIGluZGV4ICs9IGRpcjtcblxuICAgICAgICB2YXIgaXRlckluZGV4ID0gLTEsXG4gICAgICAgICAgICB2YWx1ZSA9IGFycmF5W2luZGV4XTtcblxuICAgICAgICB3aGlsZSAoKytpdGVySW5kZXggPCBpdGVyTGVuZ3RoKSB7XG4gICAgICAgICAgdmFyIGRhdGEgPSBpdGVyYXRlZXNbaXRlckluZGV4XSxcbiAgICAgICAgICAgICAgaXRlcmF0ZWUgPSBkYXRhLml0ZXJhdGVlLFxuICAgICAgICAgICAgICB0eXBlID0gZGF0YS50eXBlLFxuICAgICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlKHZhbHVlKTtcblxuICAgICAgICAgIGlmICh0eXBlID09IExBWllfTUFQX0ZMQUcpIHtcbiAgICAgICAgICAgIHZhbHVlID0gY29tcHV0ZWQ7XG4gICAgICAgICAgfSBlbHNlIGlmICghY29tcHV0ZWQpIHtcbiAgICAgICAgICAgIGlmICh0eXBlID09IExBWllfRklMVEVSX0ZMQUcpIHtcbiAgICAgICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBicmVhayBvdXRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIEVuc3VyZSBgTGF6eVdyYXBwZXJgIGlzIGFuIGluc3RhbmNlIG9mIGBiYXNlTG9kYXNoYC5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUgPSBiYXNlQ3JlYXRlKGJhc2VMb2Rhc2gucHJvdG90eXBlKTtcbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBMYXp5V3JhcHBlcjtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBoYXNoIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gSGFzaChlbnRyaWVzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgICAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGhhc2guXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGNsZWFyXG4gICAgICogQG1lbWJlck9mIEhhc2hcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoQ2xlYXIoKSB7XG4gICAgICB0aGlzLl9fZGF0YV9fID0gbmF0aXZlQ3JlYXRlID8gbmF0aXZlQ3JlYXRlKG51bGwpIDoge307XG4gICAgICB0aGlzLnNpemUgPSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBoYXNoLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBkZWxldGVcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzaERlbGV0ZShrZXkpIHtcbiAgICAgIHZhciByZXN1bHQgPSB0aGlzLmhhcyhrZXkpICYmIGRlbGV0ZSB0aGlzLl9fZGF0YV9fW2tleV07XG4gICAgICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGhhc2ggdmFsdWUgZm9yIGBrZXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBnZXRcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoR2V0KGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgICAgaWYgKG5hdGl2ZUNyZWF0ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gZGF0YVtrZXldO1xuICAgICAgICByZXR1cm4gcmVzdWx0ID09PSBIQVNIX1VOREVGSU5FRCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSkgPyBkYXRhW2tleV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGEgaGFzaCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBoYXNcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoSGFzKGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgICAgcmV0dXJuIG5hdGl2ZUNyZWF0ZSA/IChkYXRhW2tleV0gIT09IHVuZGVmaW5lZCkgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgaGFzaCBga2V5YCB0byBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBzZXRcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBoYXNoIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc2hTZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgICAgdGhpcy5zaXplICs9IHRoaXMuaGFzKGtleSkgPyAwIDogMTtcbiAgICAgIGRhdGFba2V5XSA9IChuYXRpdmVDcmVhdGUgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkgPyBIQVNIX1VOREVGSU5FRCA6IHZhbHVlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYEhhc2hgLlxuICAgIEhhc2gucHJvdG90eXBlLmNsZWFyID0gaGFzaENsZWFyO1xuICAgIEhhc2gucHJvdG90eXBlWydkZWxldGUnXSA9IGhhc2hEZWxldGU7XG4gICAgSGFzaC5wcm90b3R5cGUuZ2V0ID0gaGFzaEdldDtcbiAgICBIYXNoLnByb3RvdHlwZS5oYXMgPSBoYXNoSGFzO1xuICAgIEhhc2gucHJvdG90eXBlLnNldCA9IGhhc2hTZXQ7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGxpc3QgY2FjaGUgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBMaXN0Q2FjaGUoZW50cmllcykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICAgICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBjbGVhclxuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsaXN0Q2FjaGVDbGVhcigpIHtcbiAgICAgIHRoaXMuX19kYXRhX18gPSBbXTtcbiAgICAgIHRoaXMuc2l6ZSA9IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGRlbGV0ZVxuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlRGVsZXRlKGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIGxhc3RJbmRleCA9IGRhdGEubGVuZ3RoIC0gMTtcbiAgICAgIGlmIChpbmRleCA9PSBsYXN0SW5kZXgpIHtcbiAgICAgICAgZGF0YS5wb3AoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNwbGljZS5jYWxsKGRhdGEsIGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICAgIC0tdGhpcy5zaXplO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGdldFxuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlR2V0KGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgICAgIHJldHVybiBpbmRleCA8IDAgPyB1bmRlZmluZWQgOiBkYXRhW2luZGV4XVsxXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGhhc1xuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlSGFzKGtleSkge1xuICAgICAgcmV0dXJuIGFzc29jSW5kZXhPZih0aGlzLl9fZGF0YV9fLCBrZXkpID4gLTE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbGlzdCBjYWNoZSBga2V5YCB0byBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBzZXRcbiAgICAgKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGxpc3QgY2FjaGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgICsrdGhpcy5zaXplO1xuICAgICAgICBkYXRhLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGFbaW5kZXhdWzFdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgTGlzdENhY2hlYC5cbiAgICBMaXN0Q2FjaGUucHJvdG90eXBlLmNsZWFyID0gbGlzdENhY2hlQ2xlYXI7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBsaXN0Q2FjaGVEZWxldGU7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZS5nZXQgPSBsaXN0Q2FjaGVHZXQ7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZS5oYXMgPSBsaXN0Q2FjaGVIYXM7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZS5zZXQgPSBsaXN0Q2FjaGVTZXQ7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbWFwIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIE1hcENhY2hlKGVudHJpZXMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbWFwLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBjbGVhclxuICAgICAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcENhY2hlQ2xlYXIoKSB7XG4gICAgICB0aGlzLnNpemUgPSAwO1xuICAgICAgdGhpcy5fX2RhdGFfXyA9IHtcbiAgICAgICAgJ2hhc2gnOiBuZXcgSGFzaCxcbiAgICAgICAgJ21hcCc6IG5ldyAoTWFwIHx8IExpc3RDYWNoZSksXG4gICAgICAgICdzdHJpbmcnOiBuZXcgSGFzaFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbWFwLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBkZWxldGVcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVEZWxldGUoa2V5KSB7XG4gICAgICB2YXIgcmVzdWx0ID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpWydkZWxldGUnXShrZXkpO1xuICAgICAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBtYXAgdmFsdWUgZm9yIGBrZXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBnZXRcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gICAgICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmdldChrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBhIG1hcCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBoYXNcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVIYXMoa2V5KSB7XG4gICAgICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmhhcyhrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBzZXRcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbWFwIGNhY2hlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLFxuICAgICAgICAgIHNpemUgPSBkYXRhLnNpemU7XG5cbiAgICAgIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgdGhpcy5zaXplICs9IGRhdGEuc2l6ZSA9PSBzaXplID8gMCA6IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgTWFwQ2FjaGVgLlxuICAgIE1hcENhY2hlLnByb3RvdHlwZS5jbGVhciA9IG1hcENhY2hlQ2xlYXI7XG4gICAgTWFwQ2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IG1hcENhY2hlRGVsZXRlO1xuICAgIE1hcENhY2hlLnByb3RvdHlwZS5nZXQgPSBtYXBDYWNoZUdldDtcbiAgICBNYXBDYWNoZS5wcm90b3R5cGUuaGFzID0gbWFwQ2FjaGVIYXM7XG4gICAgTWFwQ2FjaGUucHJvdG90eXBlLnNldCA9IG1hcENhY2hlU2V0O1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IGNhY2hlIG9iamVjdCB0byBzdG9yZSB1bmlxdWUgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIFNldENhY2hlKHZhbHVlcykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gdmFsdWVzID09IG51bGwgPyAwIDogdmFsdWVzLmxlbmd0aDtcblxuICAgICAgdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuYWRkKHZhbHVlc1tpbmRleF0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYHZhbHVlYCB0byB0aGUgYXJyYXkgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGFkZFxuICAgICAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICAgICAqIEBhbGlhcyBwdXNoXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2FjaGUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2FjaGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2V0Q2FjaGVBZGQodmFsdWUpIHtcbiAgICAgIHRoaXMuX19kYXRhX18uc2V0KHZhbHVlLCBIQVNIX1VOREVGSU5FRCk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBpbiB0aGUgYXJyYXkgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGhhc1xuICAgICAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldENhY2hlSGFzKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModmFsdWUpO1xuICAgIH1cblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBTZXRDYWNoZWAuXG4gICAgU2V0Q2FjaGUucHJvdG90eXBlLmFkZCA9IFNldENhY2hlLnByb3RvdHlwZS5wdXNoID0gc2V0Q2FjaGVBZGQ7XG4gICAgU2V0Q2FjaGUucHJvdG90eXBlLmhhcyA9IHNldENhY2hlSGFzO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHN0YWNrIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIFN0YWNrKGVudHJpZXMpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGUoZW50cmllcyk7XG4gICAgICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgc3RhY2suXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGNsZWFyXG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhY2tDbGVhcigpIHtcbiAgICAgIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICAgICAgdGhpcy5zaXplID0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgc3RhY2suXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGRlbGV0ZVxuICAgICAqIEBtZW1iZXJPZiBTdGFja1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgICAgICByZXN1bHQgPSBkYXRhWydkZWxldGUnXShrZXkpO1xuXG4gICAgICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHN0YWNrIHZhbHVlIGZvciBga2V5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZ2V0XG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrR2V0KGtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGEgc3RhY2sgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgaGFzXG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrSGFzKGtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgc3RhY2sgYGtleWAgdG8gYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgc2V0XG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIHN0YWNrIGNhY2hlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrU2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgICAgIGlmIChkYXRhIGluc3RhbmNlb2YgTGlzdENhY2hlKSB7XG4gICAgICAgIHZhciBwYWlycyA9IGRhdGEuX19kYXRhX187XG4gICAgICAgIGlmICghTWFwIHx8IChwYWlycy5sZW5ndGggPCBMQVJHRV9BUlJBWV9TSVpFIC0gMSkpIHtcbiAgICAgICAgICBwYWlycy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICAgICAgdGhpcy5zaXplID0gKytkYXRhLnNpemU7XG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgZGF0YSA9IHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGUocGFpcnMpO1xuICAgICAgfVxuICAgICAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgU3RhY2tgLlxuICAgIFN0YWNrLnByb3RvdHlwZS5jbGVhciA9IHN0YWNrQ2xlYXI7XG4gICAgU3RhY2sucHJvdG90eXBlWydkZWxldGUnXSA9IHN0YWNrRGVsZXRlO1xuICAgIFN0YWNrLnByb3RvdHlwZS5nZXQgPSBzdGFja0dldDtcbiAgICBTdGFjay5wcm90b3R5cGUuaGFzID0gc3RhY2tIYXM7XG4gICAgU3RhY2sucHJvdG90eXBlLnNldCA9IHN0YWNrU2V0O1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgYXJyYXktbGlrZSBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgICAgIHZhciBpc0FyciA9IGlzQXJyYXkodmFsdWUpLFxuICAgICAgICAgIGlzQXJnID0gIWlzQXJyICYmIGlzQXJndW1lbnRzKHZhbHVlKSxcbiAgICAgICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgICAgICBpc1R5cGUgPSAhaXNBcnIgJiYgIWlzQXJnICYmICFpc0J1ZmYgJiYgaXNUeXBlZEFycmF5KHZhbHVlKSxcbiAgICAgICAgICBza2lwSW5kZXhlcyA9IGlzQXJyIHx8IGlzQXJnIHx8IGlzQnVmZiB8fCBpc1R5cGUsXG4gICAgICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICAgICAgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDtcblxuICAgICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICAgICAhKHNraXBJbmRleGVzICYmIChcbiAgICAgICAgICAgICAgIC8vIFNhZmFyaSA5IGhhcyBlbnVtZXJhYmxlIGBhcmd1bWVudHMubGVuZ3RoYCBpbiBzdHJpY3QgbW9kZS5cbiAgICAgICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAgICAgLy8gTm9kZS5qcyAwLjEwIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIGJ1ZmZlcnMuXG4gICAgICAgICAgICAgICAoaXNCdWZmICYmIChrZXkgPT0gJ29mZnNldCcgfHwga2V5ID09ICdwYXJlbnQnKSkgfHxcbiAgICAgICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgICAgIChpc1R5cGUgJiYgKGtleSA9PSAnYnVmZmVyJyB8fCBrZXkgPT0gJ2J5dGVMZW5ndGgnIHx8IGtleSA9PSAnYnl0ZU9mZnNldCcpKSB8fFxuICAgICAgICAgICAgICAgLy8gU2tpcCBpbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgICAgICkpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc2FtcGxlYCBmb3IgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2FtcGxlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnJheVNhbXBsZShhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBhcnJheVtiYXNlUmFuZG9tKDAsIGxlbmd0aCAtIDEpXSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc2FtcGxlU2l6ZWAgZm9yIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNhbXBsZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnJheVNhbXBsZVNpemUoYXJyYXksIG4pIHtcbiAgICAgIHJldHVybiBzaHVmZmxlU2VsZihjb3B5QXJyYXkoYXJyYXkpLCBiYXNlQ2xhbXAobiwgMCwgYXJyYXkubGVuZ3RoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNodWZmbGVgIGZvciBhcnJheXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzaHVmZmxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNodWZmbGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFycmF5U2h1ZmZsZShhcnJheSkge1xuICAgICAgcmV0dXJuIHNodWZmbGVTZWxmKGNvcHlBcnJheShhcnJheSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYXNzaWduVmFsdWVgIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgYXNzaWduXG4gICAgICogYHVuZGVmaW5lZGAgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICAgICAgaWYgKCh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmICFlcShvYmplY3Rba2V5XSwgdmFsdWUpKSB8fFxuICAgICAgICAgICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpKSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFzc2lnbnMgYHZhbHVlYCB0byBga2V5YCBvZiBgb2JqZWN0YCBpZiB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgbm90IGVxdWl2YWxlbnRcbiAgICAgKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gICAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XTtcbiAgICAgIGlmICghKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGVxKG9ialZhbHVlLCB2YWx1ZSkpIHx8XG4gICAgICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGBrZXlgIGlzIGZvdW5kIGluIGBhcnJheWAgb2Yga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IGtleSBUaGUga2V5IHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhc3NvY0luZGV4T2YoYXJyYXksIGtleSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICBpZiAoZXEoYXJyYXlbbGVuZ3RoXVswXSwga2V5KSkge1xuICAgICAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZ2dyZWdhdGVzIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCBvbiBgYWNjdW11bGF0b3JgIHdpdGgga2V5cyB0cmFuc2Zvcm1lZFxuICAgICAqIGJ5IGBpdGVyYXRlZWAgYW5kIHZhbHVlcyBzZXQgYnkgYHNldHRlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBgYWNjdW11bGF0b3JgIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGFjY3VtdWxhdG9yIFRoZSBpbml0aWFsIGFnZ3JlZ2F0ZWQgb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgYWNjdW11bGF0b3JgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBZ2dyZWdhdG9yKGNvbGxlY3Rpb24sIHNldHRlciwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHNldHRlcihhY2N1bXVsYXRvciwgdmFsdWUsIGl0ZXJhdGVlKHZhbHVlKSwgY29sbGVjdGlvbik7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlc1xuICAgICAqIG9yIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUFzc2lnbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5cyhzb3VyY2UpLCBvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbkluYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXNcbiAgICAgKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBc3NpZ25JbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5c0luKHNvdXJjZSksIG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGFzc2lnblZhbHVlYCBhbmQgYGFzc2lnbk1lcmdlVmFsdWVgIHdpdGhvdXRcbiAgICAgKiB2YWx1ZSBjaGVja3MuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgICAgIGlmIChrZXkgPT0gJ19fcHJvdG9fXycgJiYgZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXksIHtcbiAgICAgICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICAgICAnZW51bWVyYWJsZSc6IHRydWUsXG4gICAgICAgICAgJ3ZhbHVlJzogdmFsdWUsXG4gICAgICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbCBwYXRocy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHBpY2tlZCBlbGVtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQXQob2JqZWN0LCBwYXRocykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aHMubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCksXG4gICAgICAgICAgc2tpcCA9IG9iamVjdCA9PSBudWxsO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICByZXN1bHRbaW5kZXhdID0gc2tpcCA/IHVuZGVmaW5lZCA6IGdldChvYmplY3QsIHBhdGhzW2luZGV4XSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNsYW1wYCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjbGFtcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xvd2VyXSBUaGUgbG93ZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHVwcGVyIFRoZSB1cHBlciBib3VuZC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjbGFtcGVkIG51bWJlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQ2xhbXAobnVtYmVyLCBsb3dlciwgdXBwZXIpIHtcbiAgICAgIGlmIChudW1iZXIgPT09IG51bWJlcikge1xuICAgICAgICBpZiAodXBwZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG51bWJlciA9IG51bWJlciA8PSB1cHBlciA/IG51bWJlciA6IHVwcGVyO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb3dlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbnVtYmVyID0gbnVtYmVyID49IGxvd2VyID8gbnVtYmVyIDogbG93ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY2xvbmVgIGFuZCBgXy5jbG9uZURlZXBgIHdoaWNoIHRyYWNrc1xuICAgICAqIHRyYXZlcnNlZCBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gICAgICogIDEgLSBEZWVwIGNsb25lXG4gICAgICogIDIgLSBGbGF0dGVuIGluaGVyaXRlZCBwcm9wZXJ0aWVzXG4gICAgICogIDQgLSBDbG9uZSBzeW1ib2xzXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2tleV0gVGhlIGtleSBvZiBgdmFsdWVgLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgcGFyZW50IG9iamVjdCBvZiBgdmFsdWVgLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBhbmQgdGhlaXIgY2xvbmUgY291bnRlcnBhcnRzLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUNsb25lKHZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIG9iamVjdCwgc3RhY2spIHtcbiAgICAgIHZhciByZXN1bHQsXG4gICAgICAgICAgaXNEZWVwID0gYml0bWFzayAmIENMT05FX0RFRVBfRkxBRyxcbiAgICAgICAgICBpc0ZsYXQgPSBiaXRtYXNrICYgQ0xPTkVfRkxBVF9GTEFHLFxuICAgICAgICAgIGlzRnVsbCA9IGJpdG1hc2sgJiBDTE9ORV9TWU1CT0xTX0ZMQUc7XG5cbiAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgIHJlc3VsdCA9IG9iamVjdCA/IGN1c3RvbWl6ZXIodmFsdWUsIGtleSwgb2JqZWN0LCBzdGFjaykgOiBjdXN0b21pemVyKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSk7XG4gICAgICBpZiAoaXNBcnIpIHtcbiAgICAgICAgcmVzdWx0ID0gaW5pdENsb25lQXJyYXkodmFsdWUpO1xuICAgICAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgICAgIHJldHVybiBjb3B5QXJyYXkodmFsdWUsIHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpLFxuICAgICAgICAgICAgaXNGdW5jID0gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZztcblxuICAgICAgICBpZiAoaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGNsb25lQnVmZmVyKHZhbHVlLCBpc0RlZXApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YWcgPT0gb2JqZWN0VGFnIHx8IHRhZyA9PSBhcmdzVGFnIHx8IChpc0Z1bmMgJiYgIW9iamVjdCkpIHtcbiAgICAgICAgICByZXN1bHQgPSAoaXNGbGF0IHx8IGlzRnVuYykgPyB7fSA6IGluaXRDbG9uZU9iamVjdCh2YWx1ZSk7XG4gICAgICAgICAgaWYgKCFpc0RlZXApIHtcbiAgICAgICAgICAgIHJldHVybiBpc0ZsYXRcbiAgICAgICAgICAgICAgPyBjb3B5U3ltYm9sc0luKHZhbHVlLCBiYXNlQXNzaWduSW4ocmVzdWx0LCB2YWx1ZSkpXG4gICAgICAgICAgICAgIDogY29weVN5bWJvbHModmFsdWUsIGJhc2VBc3NpZ24ocmVzdWx0LCB2YWx1ZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIWNsb25lYWJsZVRhZ3NbdGFnXSkge1xuICAgICAgICAgICAgcmV0dXJuIG9iamVjdCA/IHZhbHVlIDoge307XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdCA9IGluaXRDbG9uZUJ5VGFnKHZhbHVlLCB0YWcsIGlzRGVlcCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2VzIGFuZCByZXR1cm4gaXRzIGNvcnJlc3BvbmRpbmcgY2xvbmUuXG4gICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQodmFsdWUpO1xuICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIHN0YWNrZWQ7XG4gICAgICB9XG4gICAgICBzdGFjay5zZXQodmFsdWUsIHJlc3VsdCk7XG5cbiAgICAgIGlmIChpc1NldCh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSkge1xuICAgICAgICAgIHJlc3VsdC5hZGQoYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdWJWYWx1ZSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChpc01hcCh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSwga2V5KSB7XG4gICAgICAgICAgcmVzdWx0LnNldChrZXksIGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCB2YWx1ZSwgc3RhY2spKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBrZXlzRnVuYyA9IGlzRnVsbFxuICAgICAgICA/IChpc0ZsYXQgPyBnZXRBbGxLZXlzSW4gOiBnZXRBbGxLZXlzKVxuICAgICAgICA6IChpc0ZsYXQgPyBrZXlzSW4gOiBrZXlzKTtcblxuICAgICAgdmFyIHByb3BzID0gaXNBcnIgPyB1bmRlZmluZWQgOiBrZXlzRnVuYyh2YWx1ZSk7XG4gICAgICBhcnJheUVhY2gocHJvcHMgfHwgdmFsdWUsIGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICAgICAgaWYgKHByb3BzKSB7XG4gICAgICAgICAga2V5ID0gc3ViVmFsdWU7XG4gICAgICAgICAgc3ViVmFsdWUgPSB2YWx1ZVtrZXldO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IHBvcHVsYXRlIGNsb25lIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIGFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY29uZm9ybXNgIHdoaWNoIGRvZXNuJ3QgY2xvbmUgYHNvdXJjZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSBwcmVkaWNhdGVzIHRvIGNvbmZvcm0gdG8uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQ29uZm9ybXMoc291cmNlKSB7XG4gICAgICB2YXIgcHJvcHMgPSBrZXlzKHNvdXJjZSk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBiYXNlQ29uZm9ybXNUbyhvYmplY3QsIHNvdXJjZSwgcHJvcHMpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jb25mb3Jtc1RvYCB3aGljaCBhY2NlcHRzIGBwcm9wc2AgdG8gY2hlY2suXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSBwcmVkaWNhdGVzIHRvIGNvbmZvcm0gdG8uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGNvbmZvcm1zLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUNvbmZvcm1zVG8ob2JqZWN0LCBzb3VyY2UsIHByb3BzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAhbGVuZ3RoO1xuICAgICAgfVxuICAgICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgdmFyIGtleSA9IHByb3BzW2xlbmd0aF0sXG4gICAgICAgICAgICBwcmVkaWNhdGUgPSBzb3VyY2Vba2V5XSxcbiAgICAgICAgICAgIHZhbHVlID0gb2JqZWN0W2tleV07XG5cbiAgICAgICAgaWYgKCh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpIHx8ICFwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5kZWxheWAgYW5kIGBfLmRlZmVyYCB3aGljaCBhY2NlcHRzIGBhcmdzYFxuICAgICAqIHRvIHByb3ZpZGUgdG8gYGZ1bmNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBkZWxheS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gd2FpdCBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheSBpbnZvY2F0aW9uLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIGFyZ3VtZW50cyB0byBwcm92aWRlIHRvIGBmdW5jYC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfE9iamVjdH0gUmV0dXJucyB0aGUgdGltZXIgaWQgb3IgdGltZW91dCBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZURlbGF5KGZ1bmMsIHdhaXQsIGFyZ3MpIHtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBmdW5jLmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7IH0sIHdhaXQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5kaWZmZXJlbmNlYCB3aXRob3V0IHN1cHBvcnRcbiAgICAgKiBmb3IgZXhjbHVkaW5nIG11bHRpcGxlIGFycmF5cyBvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VEaWZmZXJlbmNlKGFycmF5LCB2YWx1ZXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXMsXG4gICAgICAgICAgaXNDb21tb24gPSB0cnVlLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBbXSxcbiAgICAgICAgICB2YWx1ZXNMZW5ndGggPSB2YWx1ZXMubGVuZ3RoO1xuXG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKGl0ZXJhdGVlKSB7XG4gICAgICAgIHZhbHVlcyA9IGFycmF5TWFwKHZhbHVlcywgYmFzZVVuYXJ5KGl0ZXJhdGVlKSk7XG4gICAgICB9XG4gICAgICBpZiAoY29tcGFyYXRvcikge1xuICAgICAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXNXaXRoO1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodmFsdWVzLmxlbmd0aCA+PSBMQVJHRV9BUlJBWV9TSVpFKSB7XG4gICAgICAgIGluY2x1ZGVzID0gY2FjaGVIYXM7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIHZhbHVlcyA9IG5ldyBTZXRDYWNoZSh2YWx1ZXMpO1xuICAgICAgfVxuICAgICAgb3V0ZXI6XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID09IG51bGwgPyB2YWx1ZSA6IGl0ZXJhdGVlKHZhbHVlKTtcblxuICAgICAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICAgICAgaWYgKGlzQ29tbW9uICYmIGNvbXB1dGVkID09PSBjb21wdXRlZCkge1xuICAgICAgICAgIHZhciB2YWx1ZXNJbmRleCA9IHZhbHVlc0xlbmd0aDtcbiAgICAgICAgICB3aGlsZSAodmFsdWVzSW5kZXgtLSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlc1t2YWx1ZXNJbmRleF0gPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIWluY2x1ZGVzKHZhbHVlcywgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvckVhY2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gICAgICovXG4gICAgdmFyIGJhc2VFYWNoID0gY3JlYXRlQmFzZUVhY2goYmFzZUZvck93bik7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JFYWNoUmlnaHRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gICAgICovXG4gICAgdmFyIGJhc2VFYWNoUmlnaHQgPSBjcmVhdGVCYXNlRWFjaChiYXNlRm9yT3duUmlnaHQsIHRydWUpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZXZlcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbGwgZWxlbWVudHMgcGFzcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRXZlcnkoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgICAgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgICAgICByZXN1bHQgPSAhIXByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5tYXhgIGFuZCBgXy5taW5gIHdoaWNoIGFjY2VwdHMgYVxuICAgICAqIGBjb21wYXJhdG9yYCB0byBkZXRlcm1pbmUgdGhlIGV4dHJlbXVtIHZhbHVlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyYXRvciBUaGUgY29tcGFyYXRvciB1c2VkIHRvIGNvbXBhcmUgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBleHRyZW11bSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRXh0cmVtdW0oYXJyYXksIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIGN1cnJlbnQgPSBpdGVyYXRlZSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnQgIT0gbnVsbCAmJiAoY29tcHV0ZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICA/IChjdXJyZW50ID09PSBjdXJyZW50ICYmICFpc1N5bWJvbChjdXJyZW50KSlcbiAgICAgICAgICAgICAgOiBjb21wYXJhdG9yKGN1cnJlbnQsIGNvbXB1dGVkKVxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgIHZhciBjb21wdXRlZCA9IGN1cnJlbnQsXG4gICAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbGxgIHdpdGhvdXQgYW4gaXRlcmF0ZWUgY2FsbCBndWFyZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZpbGwuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZmlsbCBgYXJyYXlgIHdpdGguXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGaWxsKGFycmF5LCB2YWx1ZSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgICAgc3RhcnQgPSB0b0ludGVnZXIoc3RhcnQpO1xuICAgICAgaWYgKHN0YXJ0IDwgMCkge1xuICAgICAgICBzdGFydCA9IC1zdGFydCA+IGxlbmd0aCA/IDAgOiAobGVuZ3RoICsgc3RhcnQpO1xuICAgICAgfVxuICAgICAgZW5kID0gKGVuZCA9PT0gdW5kZWZpbmVkIHx8IGVuZCA+IGxlbmd0aCkgPyBsZW5ndGggOiB0b0ludGVnZXIoZW5kKTtcbiAgICAgIGlmIChlbmQgPCAwKSB7XG4gICAgICAgIGVuZCArPSBsZW5ndGg7XG4gICAgICB9XG4gICAgICBlbmQgPSBzdGFydCA+IGVuZCA/IDAgOiB0b0xlbmd0aChlbmQpO1xuICAgICAgd2hpbGUgKHN0YXJ0IDwgZW5kKSB7XG4gICAgICAgIGFycmF5W3N0YXJ0KytdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmlsdGVyYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRmlsdGVyKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZsYXR0ZW5gIHdpdGggc3VwcG9ydCBmb3IgcmVzdHJpY3RpbmcgZmxhdHRlbmluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGRlcHRoIFRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtwcmVkaWNhdGU9aXNGbGF0dGVuYWJsZV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc1N0cmljdF0gUmVzdHJpY3QgdG8gdmFsdWVzIHRoYXQgcGFzcyBgcHJlZGljYXRlYCBjaGVja3MuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3Jlc3VsdD1bXV0gVGhlIGluaXRpYWwgcmVzdWx0IHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRmxhdHRlbihhcnJheSwgZGVwdGgsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICBwcmVkaWNhdGUgfHwgKHByZWRpY2F0ZSA9IGlzRmxhdHRlbmFibGUpO1xuICAgICAgcmVzdWx0IHx8IChyZXN1bHQgPSBbXSk7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgICAgaWYgKGRlcHRoID4gMCAmJiBwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICAgICAgaWYgKGRlcHRoID4gMSkge1xuICAgICAgICAgICAgLy8gUmVjdXJzaXZlbHkgZmxhdHRlbiBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgICAgIGJhc2VGbGF0dGVuKHZhbHVlLCBkZXB0aCAtIDEsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFycmF5UHVzaChyZXN1bHQsIHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIWlzU3RyaWN0KSB7XG4gICAgICAgICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGJhc2VGb3JPd25gIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYG9iamVjdGBcbiAgICAgKiBwcm9wZXJ0aWVzIHJldHVybmVkIGJ5IGBrZXlzRnVuY2AgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAgICAgKiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgdmFyIGJhc2VGb3IgPSBjcmVhdGVCYXNlRm9yKCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGJhc2VGb3JgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgcHJvcGVydGllc1xuICAgICAqIGluIHRoZSBvcHBvc2l0ZSBvcmRlci5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZUZvclJpZ2h0ID0gY3JlYXRlQmFzZUZvcih0cnVlKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvck93bmAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRm9yT3duKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgYmFzZUZvcihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JPd25SaWdodGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRm9yT3duUmlnaHQob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yUmlnaHQob2JqZWN0LCBpdGVyYXRlZSwga2V5cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZnVuY3Rpb25zYCB3aGljaCBjcmVhdGVzIGFuIGFycmF5IG9mXG4gICAgICogYG9iamVjdGAgZnVuY3Rpb24gcHJvcGVydHkgbmFtZXMgZmlsdGVyZWQgZnJvbSBgcHJvcHNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgbmFtZXMgdG8gZmlsdGVyLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgZnVuY3Rpb24gbmFtZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZ1bmN0aW9ucyhvYmplY3QsIHByb3BzKSB7XG4gICAgICByZXR1cm4gYXJyYXlGaWx0ZXIocHJvcHMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgICByZXR1cm4gaXNGdW5jdGlvbihvYmplY3Rba2V5XSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5nZXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVmYXVsdCB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlR2V0KG9iamVjdCwgcGF0aCkge1xuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgICAgIHZhciBpbmRleCA9IDAsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGg7XG5cbiAgICAgIHdoaWxlIChvYmplY3QgIT0gbnVsbCAmJiBpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBvYmplY3QgPSBvYmplY3RbdG9LZXkocGF0aFtpbmRleCsrXSldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChpbmRleCAmJiBpbmRleCA9PSBsZW5ndGgpID8gb2JqZWN0IDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRBbGxLZXlzYCBhbmQgYGdldEFsbEtleXNJbmAgd2hpY2ggdXNlc1xuICAgICAqIGBrZXlzRnVuY2AgYW5kIGBzeW1ib2xzRnVuY2AgdG8gZ2V0IHRoZSBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICAgICAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHN5bWJvbHNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNGdW5jLCBzeW1ib2xzRnVuYykge1xuICAgICAgdmFyIHJlc3VsdCA9IGtleXNGdW5jKG9iamVjdCk7XG4gICAgICByZXR1cm4gaXNBcnJheShvYmplY3QpID8gcmVzdWx0IDogYXJyYXlQdXNoKHJlc3VsdCwgc3ltYm9sc0Z1bmMob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldFRhZ2Agd2l0aG91dCBmYWxsYmFja3MgZm9yIGJ1Z2d5IGVudmlyb25tZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlR2V0VGFnKHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZFRhZyA6IG51bGxUYWc7XG4gICAgICB9XG4gICAgICByZXR1cm4gKHN5bVRvU3RyaW5nVGFnICYmIHN5bVRvU3RyaW5nVGFnIGluIE9iamVjdCh2YWx1ZSkpXG4gICAgICAgID8gZ2V0UmF3VGFnKHZhbHVlKVxuICAgICAgICA6IG9iamVjdFRvU3RyaW5nKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5ndGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlR3QodmFsdWUsIG90aGVyKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPiBvdGhlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5oYXNgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSGFzKG9iamVjdCwga2V5KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaGFzSW5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSGFzSW4ob2JqZWN0LCBrZXkpIHtcbiAgICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBrZXkgaW4gT2JqZWN0KG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW5SYW5nZWAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0IFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG51bWJlcmAgaXMgaW4gdGhlIHJhbmdlLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUluUmFuZ2UobnVtYmVyLCBzdGFydCwgZW5kKSB7XG4gICAgICByZXR1cm4gbnVtYmVyID49IG5hdGl2ZU1pbihzdGFydCwgZW5kKSAmJiBudW1iZXIgPCBuYXRpdmVNYXgoc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLmludGVyc2VjdGlvbmAsIHdpdGhvdXQgc3VwcG9ydFxuICAgICAqIGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLCB0aGF0IGFjY2VwdHMgYW4gYXJyYXkgb2YgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5cyBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBzaGFyZWQgdmFsdWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJbnRlcnNlY3Rpb24oYXJyYXlzLCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGluY2x1ZGVzID0gY29tcGFyYXRvciA/IGFycmF5SW5jbHVkZXNXaXRoIDogYXJyYXlJbmNsdWRlcyxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheXNbMF0ubGVuZ3RoLFxuICAgICAgICAgIG90aExlbmd0aCA9IGFycmF5cy5sZW5ndGgsXG4gICAgICAgICAgb3RoSW5kZXggPSBvdGhMZW5ndGgsXG4gICAgICAgICAgY2FjaGVzID0gQXJyYXkob3RoTGVuZ3RoKSxcbiAgICAgICAgICBtYXhMZW5ndGggPSBJbmZpbml0eSxcbiAgICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgICAgd2hpbGUgKG90aEluZGV4LS0pIHtcbiAgICAgICAgdmFyIGFycmF5ID0gYXJyYXlzW290aEluZGV4XTtcbiAgICAgICAgaWYgKG90aEluZGV4ICYmIGl0ZXJhdGVlKSB7XG4gICAgICAgICAgYXJyYXkgPSBhcnJheU1hcChhcnJheSwgYmFzZVVuYXJ5KGl0ZXJhdGVlKSk7XG4gICAgICAgIH1cbiAgICAgICAgbWF4TGVuZ3RoID0gbmF0aXZlTWluKGFycmF5Lmxlbmd0aCwgbWF4TGVuZ3RoKTtcbiAgICAgICAgY2FjaGVzW290aEluZGV4XSA9ICFjb21wYXJhdG9yICYmIChpdGVyYXRlZSB8fCAobGVuZ3RoID49IDEyMCAmJiBhcnJheS5sZW5ndGggPj0gMTIwKSlcbiAgICAgICAgICA/IG5ldyBTZXRDYWNoZShvdGhJbmRleCAmJiBhcnJheSlcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGFycmF5ID0gYXJyYXlzWzBdO1xuXG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBzZWVuID0gY2FjaGVzWzBdO1xuXG4gICAgICBvdXRlcjpcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoICYmIHJlc3VsdC5sZW5ndGggPCBtYXhMZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgICAgIHZhbHVlID0gKGNvbXBhcmF0b3IgfHwgdmFsdWUgIT09IDApID8gdmFsdWUgOiAwO1xuICAgICAgICBpZiAoIShzZWVuXG4gICAgICAgICAgICAgID8gY2FjaGVIYXMoc2VlbiwgY29tcHV0ZWQpXG4gICAgICAgICAgICAgIDogaW5jbHVkZXMocmVzdWx0LCBjb21wdXRlZCwgY29tcGFyYXRvcilcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICBvdGhJbmRleCA9IG90aExlbmd0aDtcbiAgICAgICAgICB3aGlsZSAoLS1vdGhJbmRleCkge1xuICAgICAgICAgICAgdmFyIGNhY2hlID0gY2FjaGVzW290aEluZGV4XTtcbiAgICAgICAgICAgIGlmICghKGNhY2hlXG4gICAgICAgICAgICAgICAgICA/IGNhY2hlSGFzKGNhY2hlLCBjb21wdXRlZClcbiAgICAgICAgICAgICAgICAgIDogaW5jbHVkZXMoYXJyYXlzW290aEluZGV4XSwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNlZW4pIHtcbiAgICAgICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pbnZlcnRgIGFuZCBgXy5pbnZlcnRCeWAgd2hpY2ggaW52ZXJ0c1xuICAgICAqIGBvYmplY3RgIHdpdGggdmFsdWVzIHRyYW5zZm9ybWVkIGJ5IGBpdGVyYXRlZWAgYW5kIHNldCBieSBgc2V0dGVyYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBgYWNjdW11bGF0b3JgIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gYWNjdW11bGF0b3IgVGhlIGluaXRpYWwgaW52ZXJ0ZWQgb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgYWNjdW11bGF0b3JgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJbnZlcnRlcihvYmplY3QsIHNldHRlciwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICBiYXNlRm9yT3duKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gICAgICAgIHNldHRlcihhY2N1bXVsYXRvciwgaXRlcmF0ZWUodmFsdWUpLCBrZXksIG9iamVjdCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pbnZva2VgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICAgICAqIG1ldGhvZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgbWV0aG9kIHRvIGludm9rZS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIHRoZSBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBpbnZva2VkIG1ldGhvZC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSW52b2tlKG9iamVjdCwgcGF0aCwgYXJncykge1xuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG4gICAgICBvYmplY3QgPSBwYXJlbnQob2JqZWN0LCBwYXRoKTtcbiAgICAgIHZhciBmdW5jID0gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBvYmplY3RbdG9LZXkobGFzdChwYXRoKSldO1xuICAgICAgcmV0dXJuIGZ1bmMgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IGFwcGx5KGZ1bmMsIG9iamVjdCwgYXJncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcmd1bWVudHNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzQXJndW1lbnRzKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcmdzVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJyYXlCdWZmZXJgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNBcnJheUJ1ZmZlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYXJyYXlCdWZmZXJUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNEYXRlYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBkYXRlIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc0RhdGUodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGRhdGVUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNFcXVhbGAgd2hpY2ggc3VwcG9ydHMgcGFydGlhbCBjb21wYXJpc29uc1xuICAgICAqIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gICAgICogIDEgLSBVbm9yZGVyZWQgY29tcGFyaXNvblxuICAgICAqICAyIC0gUGFydGlhbCBjb21wYXJpc29uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgdmFsdWVgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gICAgICBpZiAodmFsdWUgPT09IG90aGVyKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlID09IG51bGwgfHwgb3RoZXIgPT0gbnVsbCB8fCAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgIWlzT2JqZWN0TGlrZShvdGhlcikpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VJc0VxdWFsRGVlcCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGJhc2VJc0VxdWFsLCBzdGFjayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbGAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICAgICAqIGRlZXAgY29tcGFyaXNvbnMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAgICAgKiByZWZlcmVuY2VzIHRvIGJlIGNvbXBhcmVkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc0VxdWFsRGVlcChvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gICAgICB2YXIgb2JqSXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICAgICAgb3RoSXNBcnIgPSBpc0FycmF5KG90aGVyKSxcbiAgICAgICAgICBvYmpUYWcgPSBvYmpJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG9iamVjdCksXG4gICAgICAgICAgb3RoVGFnID0gb3RoSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvdGhlcik7XG5cbiAgICAgIG9ialRhZyA9IG9ialRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb2JqVGFnO1xuICAgICAgb3RoVGFnID0gb3RoVGFnID09IGFyZ3NUYWcgPyBvYmplY3RUYWcgOiBvdGhUYWc7XG5cbiAgICAgIHZhciBvYmpJc09iaiA9IG9ialRhZyA9PSBvYmplY3RUYWcsXG4gICAgICAgICAgb3RoSXNPYmogPSBvdGhUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgICAgIGlzU2FtZVRhZyA9IG9ialRhZyA9PSBvdGhUYWc7XG5cbiAgICAgIGlmIChpc1NhbWVUYWcgJiYgaXNCdWZmZXIob2JqZWN0KSkge1xuICAgICAgICBpZiAoIWlzQnVmZmVyKG90aGVyKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBvYmpJc0FyciA9IHRydWU7XG4gICAgICAgIG9iaklzT2JqID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoaXNTYW1lVGFnICYmICFvYmpJc09iaikge1xuICAgICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgICByZXR1cm4gKG9iaklzQXJyIHx8IGlzVHlwZWRBcnJheShvYmplY3QpKVxuICAgICAgICAgID8gZXF1YWxBcnJheXMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaylcbiAgICAgICAgICA6IGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgb2JqVGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgICAgIH1cbiAgICAgIGlmICghKGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRykpIHtcbiAgICAgICAgdmFyIG9iaklzV3JhcHBlZCA9IG9iaklzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCAnX193cmFwcGVkX18nKSxcbiAgICAgICAgICAgIG90aElzV3JhcHBlZCA9IG90aElzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob3RoZXIsICdfX3dyYXBwZWRfXycpO1xuXG4gICAgICAgIGlmIChvYmpJc1dyYXBwZWQgfHwgb3RoSXNXcmFwcGVkKSB7XG4gICAgICAgICAgdmFyIG9ialVud3JhcHBlZCA9IG9iaklzV3JhcHBlZCA/IG9iamVjdC52YWx1ZSgpIDogb2JqZWN0LFxuICAgICAgICAgICAgICBvdGhVbndyYXBwZWQgPSBvdGhJc1dyYXBwZWQgPyBvdGhlci52YWx1ZSgpIDogb3RoZXI7XG5cbiAgICAgICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgICAgIHJldHVybiBlcXVhbEZ1bmMob2JqVW53cmFwcGVkLCBvdGhVbndyYXBwZWQsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFpc1NhbWVUYWcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgIHJldHVybiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNNYXBgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG1hcCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc01hcCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBtYXBUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNNYXRjaGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IG1hdGNoRGF0YSBUaGUgcHJvcGVydHkgbmFtZXMsIHZhbHVlcywgYW5kIGNvbXBhcmUgZmxhZ3MgdG8gbWF0Y2guXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgbWF0Y2hEYXRhLCBjdXN0b21pemVyKSB7XG4gICAgICB2YXIgaW5kZXggPSBtYXRjaERhdGEubGVuZ3RoLFxuICAgICAgICAgIGxlbmd0aCA9IGluZGV4LFxuICAgICAgICAgIG5vQ3VzdG9taXplciA9ICFjdXN0b21pemVyO1xuXG4gICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICFsZW5ndGg7XG4gICAgICB9XG4gICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgIHZhciBkYXRhID0gbWF0Y2hEYXRhW2luZGV4XTtcbiAgICAgICAgaWYgKChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSlcbiAgICAgICAgICAgICAgPyBkYXRhWzFdICE9PSBvYmplY3RbZGF0YVswXV1cbiAgICAgICAgICAgICAgOiAhKGRhdGFbMF0gaW4gb2JqZWN0KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBkYXRhID0gbWF0Y2hEYXRhW2luZGV4XTtcbiAgICAgICAgdmFyIGtleSA9IGRhdGFbMF0sXG4gICAgICAgICAgICBvYmpWYWx1ZSA9IG9iamVjdFtrZXldLFxuICAgICAgICAgICAgc3JjVmFsdWUgPSBkYXRhWzFdO1xuXG4gICAgICAgIGlmIChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSkge1xuICAgICAgICAgIGlmIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHN0YWNrID0gbmV3IFN0YWNrO1xuICAgICAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCEocmVzdWx0ID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA/IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgICAgICAgICA6IHJlc3VsdFxuICAgICAgICAgICAgICApKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hdGl2ZWAgd2l0aG91dCBiYWQgc2hpbSBjaGVja3MuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzTmF0aXZlKHZhbHVlKSB7XG4gICAgICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCBpc01hc2tlZCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gICAgICByZXR1cm4gcGF0dGVybi50ZXN0KHRvU291cmNlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNSZWdFeHBgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHJlZ2V4cCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc1JlZ0V4cCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gcmVnZXhwVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzU2V0YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzZXQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNTZXQodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGdldFRhZyh2YWx1ZSkgPT0gc2V0VGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzVHlwZWRBcnJheWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNUeXBlZEFycmF5KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJlxuICAgICAgICBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3NbYmFzZUdldFRhZyh2YWx1ZSldO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLml0ZXJhdGVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSBbdmFsdWU9Xy5pZGVudGl0eV0gVGhlIHZhbHVlIHRvIGNvbnZlcnQgdG8gYW4gaXRlcmF0ZWUuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBpdGVyYXRlZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXRlcmF0ZWUodmFsdWUpIHtcbiAgICAgIC8vIERvbid0IHN0b3JlIHRoZSBgdHlwZW9mYCByZXN1bHQgaW4gYSB2YXJpYWJsZSB0byBhdm9pZCBhIEpJVCBidWcgaW4gU2FmYXJpIDkuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjAzNCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBpZGVudGl0eTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIGlzQXJyYXkodmFsdWUpXG4gICAgICAgICAgPyBiYXNlTWF0Y2hlc1Byb3BlcnR5KHZhbHVlWzBdLCB2YWx1ZVsxXSlcbiAgICAgICAgICA6IGJhc2VNYXRjaGVzKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ua2V5c2Agd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlS2V5cyhvYmplY3QpIHtcbiAgICAgIGlmICghaXNQcm90b3R5cGUob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gbmF0aXZlS2V5cyhvYmplY3QpO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBrZXkgIT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ua2V5c0luYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VLZXlzSW4ob2JqZWN0KSB7XG4gICAgICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZUtleXNJbihvYmplY3QpO1xuICAgICAgfVxuICAgICAgdmFyIGlzUHJvdG8gPSBpc1Byb3RvdHlwZShvYmplY3QpLFxuICAgICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgIGlmICghKGtleSA9PSAnY29uc3RydWN0b3InICYmIChpc1Byb3RvIHx8ICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5sdGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIGBvdGhlcmAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTHQodmFsdWUsIG90aGVyKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPCBvdGhlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXBgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VNYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIHJlc3VsdCA9IGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pID8gQXJyYXkoY29sbGVjdGlvbi5sZW5ndGgpIDogW107XG5cbiAgICAgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmVzdWx0WysraW5kZXhdID0gaXRlcmF0ZWUodmFsdWUsIGtleSwgY29sbGVjdGlvbik7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWF0Y2hlc2Agd2hpY2ggZG9lc24ndCBjbG9uZSBgc291cmNlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VNYXRjaGVzKHNvdXJjZSkge1xuICAgICAgdmFyIG1hdGNoRGF0YSA9IGdldE1hdGNoRGF0YShzb3VyY2UpO1xuICAgICAgaWYgKG1hdGNoRGF0YS5sZW5ndGggPT0gMSAmJiBtYXRjaERhdGFbMF1bMl0pIHtcbiAgICAgICAgcmV0dXJuIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKG1hdGNoRGF0YVswXVswXSwgbWF0Y2hEYXRhWzBdWzFdKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdCA9PT0gc291cmNlIHx8IGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBtYXRjaERhdGEpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzUHJvcGVydHlgIHdoaWNoIGRvZXNuJ3QgY2xvbmUgYHNyY1ZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VNYXRjaGVzUHJvcGVydHkocGF0aCwgc3JjVmFsdWUpIHtcbiAgICAgIGlmIChpc0tleShwYXRoKSAmJiBpc1N0cmljdENvbXBhcmFibGUoc3JjVmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZSh0b0tleShwYXRoKSwgc3JjVmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICB2YXIgb2JqVmFsdWUgPSBnZXQob2JqZWN0LCBwYXRoKTtcbiAgICAgICAgcmV0dXJuIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIG9ialZhbHVlID09PSBzcmNWYWx1ZSlcbiAgICAgICAgICA/IGhhc0luKG9iamVjdCwgcGF0aClcbiAgICAgICAgICA6IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWVyZ2VgIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHNyY0luZGV4IFRoZSBpbmRleCBvZiBgc291cmNlYC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBtZXJnZWQgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gICAgICogIGNvdW50ZXJwYXJ0cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjaykge1xuICAgICAgaWYgKG9iamVjdCA9PT0gc291cmNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGJhc2VGb3Ioc291cmNlLCBmdW5jdGlvbihzcmNWYWx1ZSwga2V5KSB7XG4gICAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICAgIGlmIChpc09iamVjdChzcmNWYWx1ZSkpIHtcbiAgICAgICAgICBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIHNyY0luZGV4LCBiYXNlTWVyZ2UsIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICAgICAgICA/IGN1c3RvbWl6ZXIoc2FmZUdldChvYmplY3QsIGtleSksIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0sIGtleXNJbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlTWVyZ2VgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAgICAgKiBkZWVwIG1lcmdlcyBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGVuYWJsaW5nIG9iamVjdHMgd2l0aCBjaXJjdWxhclxuICAgICAqIHJlZmVyZW5jZXMgdG8gYmUgbWVyZ2VkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIG1lcmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gbWVyZ2VGdW5jIFRoZSBmdW5jdGlvbiB0byBtZXJnZSB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gICAgICogIGNvdW50ZXJwYXJ0cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIHNyY0luZGV4LCBtZXJnZUZ1bmMsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gICAgICB2YXIgb2JqVmFsdWUgPSBzYWZlR2V0KG9iamVjdCwga2V5KSxcbiAgICAgICAgICBzcmNWYWx1ZSA9IHNhZmVHZXQoc291cmNlLCBrZXkpLFxuICAgICAgICAgIHN0YWNrZWQgPSBzdGFjay5nZXQoc3JjVmFsdWUpO1xuXG4gICAgICBpZiAoc3RhY2tlZCkge1xuICAgICAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBzdGFja2VkKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgICA/IGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICB2YXIgaXNDb21tb24gPSBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoaXNDb21tb24pIHtcbiAgICAgICAgdmFyIGlzQXJyID0gaXNBcnJheShzcmNWYWx1ZSksXG4gICAgICAgICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgaXNCdWZmZXIoc3JjVmFsdWUpLFxuICAgICAgICAgICAgaXNUeXBlZCA9ICFpc0FyciAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheShzcmNWYWx1ZSk7XG5cbiAgICAgICAgbmV3VmFsdWUgPSBzcmNWYWx1ZTtcbiAgICAgICAgaWYgKGlzQXJyIHx8IGlzQnVmZiB8fCBpc1R5cGVkKSB7XG4gICAgICAgICAgaWYgKGlzQXJyYXkob2JqVmFsdWUpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IG9ialZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmIChpc0FycmF5TGlrZU9iamVjdChvYmpWYWx1ZSkpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gY29weUFycmF5KG9ialZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAoaXNCdWZmKSB7XG4gICAgICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBjbG9uZUJ1ZmZlcihzcmNWYWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKGlzVHlwZWQpIHtcbiAgICAgICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGNsb25lVHlwZWRBcnJheShzcmNWYWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNQbGFpbk9iamVjdChzcmNWYWx1ZSkgfHwgaXNBcmd1bWVudHMoc3JjVmFsdWUpKSB7XG4gICAgICAgICAgbmV3VmFsdWUgPSBvYmpWYWx1ZTtcbiAgICAgICAgICBpZiAoaXNBcmd1bWVudHMob2JqVmFsdWUpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRvUGxhaW5PYmplY3Qob2JqVmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmICghaXNPYmplY3Qob2JqVmFsdWUpIHx8IGlzRnVuY3Rpb24ob2JqVmFsdWUpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGluaXRDbG9uZU9iamVjdChzcmNWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpc0NvbW1vbikge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBtZXJnZSBvYmplY3RzIGFuZCBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgc3RhY2suc2V0KHNyY1ZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgICAgIG1lcmdlRnVuYyhuZXdWYWx1ZSwgc3JjVmFsdWUsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgICAgIHN0YWNrWydkZWxldGUnXShzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubnRoYCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gcmV0dXJuLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBudGggZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VOdGgoYXJyYXksIG4pIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBuICs9IG4gPCAwID8gbGVuZ3RoIDogMDtcbiAgICAgIHJldHVybiBpc0luZGV4KG4sIGxlbmd0aCkgPyBhcnJheVtuXSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5vcmRlckJ5YCB3aXRob3V0IHBhcmFtIGd1YXJkcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb25bXXxPYmplY3RbXXxzdHJpbmdbXX0gaXRlcmF0ZWVzIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBvcmRlcnMgVGhlIHNvcnQgb3JkZXJzIG9mIGBpdGVyYXRlZXNgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBpdGVyYXRlZXMsIG9yZGVycykge1xuICAgICAgaWYgKGl0ZXJhdGVlcy5sZW5ndGgpIHtcbiAgICAgICAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgICAgIGlmIChpc0FycmF5KGl0ZXJhdGVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBiYXNlR2V0KHZhbHVlLCBpdGVyYXRlZS5sZW5ndGggPT09IDEgPyBpdGVyYXRlZVswXSA6IGl0ZXJhdGVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGl0ZXJhdGVlO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGl0ZXJhdGVlcyA9IFtpZGVudGl0eV07XG4gICAgICB9XG5cbiAgICAgIHZhciBpbmRleCA9IC0xO1xuICAgICAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBiYXNlVW5hcnkoZ2V0SXRlcmF0ZWUoKSkpO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gYmFzZU1hcChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHZhciBjcml0ZXJpYSA9IGFycmF5TWFwKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgICAgICByZXR1cm4gaXRlcmF0ZWUodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHsgJ2NyaXRlcmlhJzogY3JpdGVyaWEsICdpbmRleCc6ICsraW5kZXgsICd2YWx1ZSc6IHZhbHVlIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGJhc2VTb3J0QnkocmVzdWx0LCBmdW5jdGlvbihvYmplY3QsIG90aGVyKSB7XG4gICAgICAgIHJldHVybiBjb21wYXJlTXVsdGlwbGUob2JqZWN0LCBvdGhlciwgb3JkZXJzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnBpY2tgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICAgICAqIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhzIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVBpY2sob2JqZWN0LCBwYXRocykge1xuICAgICAgcmV0dXJuIGJhc2VQaWNrQnkob2JqZWN0LCBwYXRocywgZnVuY3Rpb24odmFsdWUsIHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIGhhc0luKG9iamVjdCwgcGF0aCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiAgYF8ucGlja0J5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBwcm9wZXJ0eS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQaWNrQnkob2JqZWN0LCBwYXRocywgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwYXRocy5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0ge307XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBwYXRoID0gcGF0aHNbaW5kZXhdLFxuICAgICAgICAgICAgdmFsdWUgPSBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG5cbiAgICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgcGF0aCkpIHtcbiAgICAgICAgICBiYXNlU2V0KHJlc3VsdCwgY2FzdFBhdGgocGF0aCwgb2JqZWN0KSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVByb3BlcnR5YCB3aGljaCBzdXBwb3J0cyBkZWVwIHBhdGhzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQcm9wZXJ0eURlZXAocGF0aCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICByZXR1cm4gYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wdWxsQWxsQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAgICAgKiBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQdWxsQWxsKGFycmF5LCB2YWx1ZXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5kZXhPZiA9IGNvbXBhcmF0b3IgPyBiYXNlSW5kZXhPZldpdGggOiBiYXNlSW5kZXhPZixcbiAgICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICAgICAgc2VlbiA9IGFycmF5O1xuXG4gICAgICBpZiAoYXJyYXkgPT09IHZhbHVlcykge1xuICAgICAgICB2YWx1ZXMgPSBjb3B5QXJyYXkodmFsdWVzKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVyYXRlZSkge1xuICAgICAgICBzZWVuID0gYXJyYXlNYXAoYXJyYXksIGJhc2VVbmFyeShpdGVyYXRlZSkpO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGZyb21JbmRleCA9IDAsXG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlc1tpbmRleF0sXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICAgICAgd2hpbGUgKChmcm9tSW5kZXggPSBpbmRleE9mKHNlZW4sIGNvbXB1dGVkLCBmcm9tSW5kZXgsIGNvbXBhcmF0b3IpKSA+IC0xKSB7XG4gICAgICAgICAgaWYgKHNlZW4gIT09IGFycmF5KSB7XG4gICAgICAgICAgICBzcGxpY2UuY2FsbChzZWVuLCBmcm9tSW5kZXgsIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzcGxpY2UuY2FsbChhcnJheSwgZnJvbUluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnB1bGxBdGAgd2l0aG91dCBzdXBwb3J0IGZvciBpbmRpdmlkdWFsXG4gICAgICogaW5kZXhlcyBvciBjYXB0dXJpbmcgdGhlIHJlbW92ZWQgZWxlbWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJbXX0gaW5kZXhlcyBUaGUgaW5kZXhlcyBvZiBlbGVtZW50cyB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVB1bGxBdChhcnJheSwgaW5kZXhlcykge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID8gaW5kZXhlcy5sZW5ndGggOiAwLFxuICAgICAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDE7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIgaW5kZXggPSBpbmRleGVzW2xlbmd0aF07XG4gICAgICAgIGlmIChsZW5ndGggPT0gbGFzdEluZGV4IHx8IGluZGV4ICE9PSBwcmV2aW91cykge1xuICAgICAgICAgIHZhciBwcmV2aW91cyA9IGluZGV4O1xuICAgICAgICAgIGlmIChpc0luZGV4KGluZGV4KSkge1xuICAgICAgICAgICAgc3BsaWNlLmNhbGwoYXJyYXksIGluZGV4LCAxKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzZVVuc2V0KGFycmF5LCBpbmRleCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmFuZG9tYCB3aXRob3V0IHN1cHBvcnQgZm9yIHJldHVybmluZ1xuICAgICAqIGZsb2F0aW5nLXBvaW50IG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsb3dlciBUaGUgbG93ZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHVwcGVyIFRoZSB1cHBlciBib3VuZC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByYW5kb20gbnVtYmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VSYW5kb20obG93ZXIsIHVwcGVyKSB7XG4gICAgICByZXR1cm4gbG93ZXIgKyBuYXRpdmVGbG9vcihuYXRpdmVSYW5kb20oKSAqICh1cHBlciAtIGxvd2VyICsgMSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJhbmdlYCBhbmQgYF8ucmFuZ2VSaWdodGAgd2hpY2ggZG9lc24ndFxuICAgICAqIGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0ZXAgVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5nZSBvZiBudW1iZXJzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VSYW5nZShzdGFydCwgZW5kLCBzdGVwLCBmcm9tUmlnaHQpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChuYXRpdmVDZWlsKChlbmQgLSBzdGFydCkgLyAoc3RlcCB8fCAxKSksIDApLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICByZXN1bHRbZnJvbVJpZ2h0ID8gbGVuZ3RoIDogKytpbmRleF0gPSBzdGFydDtcbiAgICAgICAgc3RhcnQgKz0gc3RlcDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVwZWF0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byByZXBlYXQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byByZXBlYXQgdGhlIHN0cmluZy5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByZXBlYXRlZCBzdHJpbmcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVJlcGVhdChzdHJpbmcsIG4pIHtcbiAgICAgIHZhciByZXN1bHQgPSAnJztcbiAgICAgIGlmICghc3RyaW5nIHx8IG4gPCAxIHx8IG4gPiBNQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICAvLyBMZXZlcmFnZSB0aGUgZXhwb25lbnRpYXRpb24gYnkgc3F1YXJpbmcgYWxnb3JpdGhtIGZvciBhIGZhc3RlciByZXBlYXQuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXhwb25lbnRpYXRpb25fYnlfc3F1YXJpbmcgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKG4gJSAyKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IHN0cmluZztcbiAgICAgICAgfVxuICAgICAgICBuID0gbmF0aXZlRmxvb3IobiAvIDIpO1xuICAgICAgICBpZiAobikge1xuICAgICAgICAgIHN0cmluZyArPSBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgIH0gd2hpbGUgKG4pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlc3RgIHdoaWNoIGRvZXNuJ3QgdmFsaWRhdGUgb3IgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVJlc3QoZnVuYywgc3RhcnQpIHtcbiAgICAgIHJldHVybiBzZXRUb1N0cmluZyhvdmVyUmVzdChmdW5jLCBzdGFydCwgaWRlbnRpdHkpLCBmdW5jICsgJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNhbXBsZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNhbXBsZShjb2xsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gYXJyYXlTYW1wbGUodmFsdWVzKGNvbGxlY3Rpb24pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zYW1wbGVTaXplYCB3aXRob3V0IHBhcmFtIGd1YXJkcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2FtcGxlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gc2FtcGxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTYW1wbGVTaXplKGNvbGxlY3Rpb24sIG4pIHtcbiAgICAgIHZhciBhcnJheSA9IHZhbHVlcyhjb2xsZWN0aW9uKTtcbiAgICAgIHJldHVybiBzaHVmZmxlU2VsZihhcnJheSwgYmFzZUNsYW1wKG4sIDAsIGFycmF5Lmxlbmd0aCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNldGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgcGF0aCBjcmVhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcikge1xuICAgICAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICB9XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICAgICAgbGFzdEluZGV4ID0gbGVuZ3RoIC0gMSxcbiAgICAgICAgICBuZXN0ZWQgPSBvYmplY3Q7XG5cbiAgICAgIHdoaWxlIChuZXN0ZWQgIT0gbnVsbCAmJiArK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSksXG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgIGlmIChrZXkgPT09ICdfX3Byb3RvX18nIHx8IGtleSA9PT0gJ2NvbnN0cnVjdG9yJyB8fCBrZXkgPT09ICdwcm90b3R5cGUnKSB7XG4gICAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbmRleCAhPSBsYXN0SW5kZXgpIHtcbiAgICAgICAgICB2YXIgb2JqVmFsdWUgPSBuZXN0ZWRba2V5XTtcbiAgICAgICAgICBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXIgPyBjdXN0b21pemVyKG9ialZhbHVlLCBrZXksIG5lc3RlZCkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gaXNPYmplY3Qob2JqVmFsdWUpXG4gICAgICAgICAgICAgID8gb2JqVmFsdWVcbiAgICAgICAgICAgICAgOiAoaXNJbmRleChwYXRoW2luZGV4ICsgMV0pID8gW10gOiB7fSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGFzc2lnblZhbHVlKG5lc3RlZCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgICAgIG5lc3RlZCA9IG5lc3RlZFtrZXldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0RGF0YWAgd2l0aG91dCBzdXBwb3J0IGZvciBob3QgbG9vcCBzaG9ydGluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXNzb2NpYXRlIG1ldGFkYXRhIHdpdGguXG4gICAgICogQHBhcmFtIHsqfSBkYXRhIFRoZSBtZXRhZGF0YS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBiYXNlU2V0RGF0YSA9ICFtZXRhTWFwID8gaWRlbnRpdHkgOiBmdW5jdGlvbihmdW5jLCBkYXRhKSB7XG4gICAgICBtZXRhTWFwLnNldChmdW5jLCBkYXRhKTtcbiAgICAgIHJldHVybiBmdW5jO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0VG9TdHJpbmdgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gICAgICovXG4gICAgdmFyIGJhc2VTZXRUb1N0cmluZyA9ICFkZWZpbmVQcm9wZXJ0eSA/IGlkZW50aXR5IDogZnVuY3Rpb24oZnVuYywgc3RyaW5nKSB7XG4gICAgICByZXR1cm4gZGVmaW5lUHJvcGVydHkoZnVuYywgJ3RvU3RyaW5nJywge1xuICAgICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICAgJ2VudW1lcmFibGUnOiBmYWxzZSxcbiAgICAgICAgJ3ZhbHVlJzogY29uc3RhbnQoc3RyaW5nKSxcbiAgICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNodWZmbGVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzaHVmZmxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNodWZmbGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTaHVmZmxlKGNvbGxlY3Rpb24pIHtcbiAgICAgIHJldHVybiBzaHVmZmxlU2VsZih2YWx1ZXMoY29sbGVjdGlvbikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNsaWNlYCB3aXRob3V0IGFuIGl0ZXJhdGVlIGNhbGwgZ3VhcmQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzbGljZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgICAgIHN0YXJ0ID0gLXN0YXJ0ID4gbGVuZ3RoID8gMCA6IChsZW5ndGggKyBzdGFydCk7XG4gICAgICB9XG4gICAgICBlbmQgPSBlbmQgPiBsZW5ndGggPyBsZW5ndGggOiBlbmQ7XG4gICAgICBpZiAoZW5kIDwgMCkge1xuICAgICAgICBlbmQgKz0gbGVuZ3RoO1xuICAgICAgfVxuICAgICAgbGVuZ3RoID0gc3RhcnQgPiBlbmQgPyAwIDogKChlbmQgLSBzdGFydCkgPj4+IDApO1xuICAgICAgc3RhcnQgPj4+PSAwO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtpbmRleF0gPSBhcnJheVtpbmRleCArIHN0YXJ0XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29tZWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNvbWUoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgcmVzdWx0O1xuXG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmVzdWx0ID0gcHJlZGljYXRlKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gICAgICAgIHJldHVybiAhcmVzdWx0O1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gISFyZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydGVkSW5kZXhgIGFuZCBgXy5zb3J0ZWRMYXN0SW5kZXhgIHdoaWNoXG4gICAgICogcGVyZm9ybXMgYSBiaW5hcnkgc2VhcmNoIG9mIGBhcnJheWAgdG8gZGV0ZXJtaW5lIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgXG4gICAgICogc2hvdWxkIGJlIGluc2VydGVkIGludG8gYGFycmF5YCBpbiBvcmRlciB0byBtYWludGFpbiBpdHMgc29ydCBvcmRlci5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3JldEhpZ2hlc3RdIFNwZWNpZnkgcmV0dXJuaW5nIHRoZSBoaWdoZXN0IHF1YWxpZmllZCBpbmRleC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAqICBpbnRvIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSwgcmV0SGlnaGVzdCkge1xuICAgICAgdmFyIGxvdyA9IDAsXG4gICAgICAgICAgaGlnaCA9IGFycmF5ID09IG51bGwgPyBsb3cgOiBhcnJheS5sZW5ndGg7XG5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiYgdmFsdWUgPT09IHZhbHVlICYmIGhpZ2ggPD0gSEFMRl9NQVhfQVJSQVlfTEVOR1RIKSB7XG4gICAgICAgIHdoaWxlIChsb3cgPCBoaWdoKSB7XG4gICAgICAgICAgdmFyIG1pZCA9IChsb3cgKyBoaWdoKSA+Pj4gMSxcbiAgICAgICAgICAgICAgY29tcHV0ZWQgPSBhcnJheVttaWRdO1xuXG4gICAgICAgICAgaWYgKGNvbXB1dGVkICE9PSBudWxsICYmICFpc1N5bWJvbChjb21wdXRlZCkgJiZcbiAgICAgICAgICAgICAgKHJldEhpZ2hlc3QgPyAoY29tcHV0ZWQgPD0gdmFsdWUpIDogKGNvbXB1dGVkIDwgdmFsdWUpKSkge1xuICAgICAgICAgICAgbG93ID0gbWlkICsgMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaGlnaCA9IG1pZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhpZ2g7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVNvcnRlZEluZGV4QnkoYXJyYXksIHZhbHVlLCBpZGVudGl0eSwgcmV0SGlnaGVzdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydGVkSW5kZXhCeWAgYW5kIGBfLnNvcnRlZExhc3RJbmRleEJ5YFxuICAgICAqIHdoaWNoIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgYHZhbHVlYCBhbmQgZWFjaCBlbGVtZW50IG9mIGBhcnJheWAgdG8gY29tcHV0ZVxuICAgICAqIHRoZWlyIHNvcnQgcmFua2luZy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ7ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXRIaWdoZXN0XSBTcGVjaWZ5IHJldHVybmluZyB0aGUgaGlnaGVzdCBxdWFsaWZpZWQgaW5kZXguXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgaXRlcmF0ZWUsIHJldEhpZ2hlc3QpIHtcbiAgICAgIHZhciBsb3cgPSAwLFxuICAgICAgICAgIGhpZ2ggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmIChoaWdoID09PSAwKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuXG4gICAgICB2YWx1ZSA9IGl0ZXJhdGVlKHZhbHVlKTtcbiAgICAgIHZhciB2YWxJc05hTiA9IHZhbHVlICE9PSB2YWx1ZSxcbiAgICAgICAgICB2YWxJc051bGwgPSB2YWx1ZSA9PT0gbnVsbCxcbiAgICAgICAgICB2YWxJc1N5bWJvbCA9IGlzU3ltYm9sKHZhbHVlKSxcbiAgICAgICAgICB2YWxJc1VuZGVmaW5lZCA9IHZhbHVlID09PSB1bmRlZmluZWQ7XG5cbiAgICAgIHdoaWxlIChsb3cgPCBoaWdoKSB7XG4gICAgICAgIHZhciBtaWQgPSBuYXRpdmVGbG9vcigobG93ICsgaGlnaCkgLyAyKSxcbiAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUoYXJyYXlbbWlkXSksXG4gICAgICAgICAgICBvdGhJc0RlZmluZWQgPSBjb21wdXRlZCAhPT0gdW5kZWZpbmVkLFxuICAgICAgICAgICAgb3RoSXNOdWxsID0gY29tcHV0ZWQgPT09IG51bGwsXG4gICAgICAgICAgICBvdGhJc1JlZmxleGl2ZSA9IGNvbXB1dGVkID09PSBjb21wdXRlZCxcbiAgICAgICAgICAgIG90aElzU3ltYm9sID0gaXNTeW1ib2woY29tcHV0ZWQpO1xuXG4gICAgICAgIGlmICh2YWxJc05hTikge1xuICAgICAgICAgIHZhciBzZXRMb3cgPSByZXRIaWdoZXN0IHx8IG90aElzUmVmbGV4aXZlO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbElzVW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2V0TG93ID0gb3RoSXNSZWZsZXhpdmUgJiYgKHJldEhpZ2hlc3QgfHwgb3RoSXNEZWZpbmVkKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWxJc051bGwpIHtcbiAgICAgICAgICBzZXRMb3cgPSBvdGhJc1JlZmxleGl2ZSAmJiBvdGhJc0RlZmluZWQgJiYgKHJldEhpZ2hlc3QgfHwgIW90aElzTnVsbCk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsSXNTeW1ib2wpIHtcbiAgICAgICAgICBzZXRMb3cgPSBvdGhJc1JlZmxleGl2ZSAmJiBvdGhJc0RlZmluZWQgJiYgIW90aElzTnVsbCAmJiAocmV0SGlnaGVzdCB8fCAhb3RoSXNTeW1ib2wpO1xuICAgICAgICB9IGVsc2UgaWYgKG90aElzTnVsbCB8fCBvdGhJc1N5bWJvbCkge1xuICAgICAgICAgIHNldExvdyA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldExvdyA9IHJldEhpZ2hlc3QgPyAoY29tcHV0ZWQgPD0gdmFsdWUpIDogKGNvbXB1dGVkIDwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXRMb3cpIHtcbiAgICAgICAgICBsb3cgPSBtaWQgKyAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGhpZ2ggPSBtaWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuYXRpdmVNaW4oaGlnaCwgTUFYX0FSUkFZX0lOREVYKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zb3J0ZWRVbmlxYCBhbmQgYF8uc29ydGVkVW5pcUJ5YCB3aXRob3V0XG4gICAgICogc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU29ydGVkVW5pcShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgICAgICBpZiAoIWluZGV4IHx8ICFlcShjb21wdXRlZCwgc2VlbikpIHtcbiAgICAgICAgICB2YXIgc2VlbiA9IGNvbXB1dGVkO1xuICAgICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlID09PSAwID8gMCA6IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRvTnVtYmVyYCB3aGljaCBkb2Vzbid0IGVuc3VyZSBjb3JyZWN0XG4gICAgICogY29udmVyc2lvbnMgb2YgYmluYXJ5LCBoZXhhZGVjaW1hbCwgb3Igb2N0YWwgc3RyaW5nIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVRvTnVtYmVyKHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5BTjtcbiAgICAgIH1cbiAgICAgIHJldHVybiArdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udG9TdHJpbmdgIHdoaWNoIGRvZXNuJ3QgY29udmVydCBudWxsaXNoXG4gICAgICogdmFsdWVzIHRvIGVtcHR5IHN0cmluZ3MuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VUb1N0cmluZyh2YWx1ZSkge1xuICAgICAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5ncyB0byBhdm9pZCBhIHBlcmZvcm1hbmNlIGhpdCBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbnZlcnQgdmFsdWVzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgYmFzZVRvU3RyaW5nKSArICcnO1xuICAgICAgfVxuICAgICAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gc3ltYm9sVG9TdHJpbmcgPyBzeW1ib2xUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9ICh2YWx1ZSArICcnKTtcbiAgICAgIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmlxQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlVW5pcShhcnJheSwgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlcyxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgaXNDb21tb24gPSB0cnVlLFxuICAgICAgICAgIHJlc3VsdCA9IFtdLFxuICAgICAgICAgIHNlZW4gPSByZXN1bHQ7XG5cbiAgICAgIGlmIChjb21wYXJhdG9yKSB7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlc1dpdGg7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChsZW5ndGggPj0gTEFSR0VfQVJSQVlfU0laRSkge1xuICAgICAgICB2YXIgc2V0ID0gaXRlcmF0ZWUgPyBudWxsIDogY3JlYXRlU2V0KGFycmF5KTtcbiAgICAgICAgaWYgKHNldCkge1xuICAgICAgICAgIHJldHVybiBzZXRUb0FycmF5KHNldCk7XG4gICAgICAgIH1cbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgaW5jbHVkZXMgPSBjYWNoZUhhcztcbiAgICAgICAgc2VlbiA9IG5ldyBTZXRDYWNoZTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBzZWVuID0gaXRlcmF0ZWUgPyBbXSA6IHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIG91dGVyOlxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgICAgIHZhbHVlID0gKGNvbXBhcmF0b3IgfHwgdmFsdWUgIT09IDApID8gdmFsdWUgOiAwO1xuICAgICAgICBpZiAoaXNDb21tb24gJiYgY29tcHV0ZWQgPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgdmFyIHNlZW5JbmRleCA9IHNlZW4ubGVuZ3RoO1xuICAgICAgICAgIHdoaWxlIChzZWVuSW5kZXgtLSkge1xuICAgICAgICAgICAgaWYgKHNlZW5bc2VlbkluZGV4XSA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdGVyYXRlZSkge1xuICAgICAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFpbmNsdWRlcyhzZWVuLCBjb21wdXRlZCwgY29tcGFyYXRvcikpIHtcbiAgICAgICAgICBpZiAoc2VlbiAhPT0gcmVzdWx0KSB7XG4gICAgICAgICAgICBzZWVuLnB1c2goY29tcHV0ZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5zZXRgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwcm9wZXJ0eSBwYXRoIHRvIHVuc2V0LlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJvcGVydHkgaXMgZGVsZXRlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VVbnNldChvYmplY3QsIHBhdGgpIHtcbiAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuICAgICAgb2JqZWN0ID0gcGFyZW50KG9iamVjdCwgcGF0aCk7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgfHwgZGVsZXRlIG9iamVjdFt0b0tleShsYXN0KHBhdGgpKV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udXBkYXRlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gdXBkYXRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHVwZGF0ZXIgVGhlIGZ1bmN0aW9uIHRvIHByb2R1Y2UgdGhlIHVwZGF0ZWQgdmFsdWUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgcGF0aCBjcmVhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VVcGRhdGUob2JqZWN0LCBwYXRoLCB1cGRhdGVyLCBjdXN0b21pemVyKSB7XG4gICAgICByZXR1cm4gYmFzZVNldChvYmplY3QsIHBhdGgsIHVwZGF0ZXIoYmFzZUdldChvYmplY3QsIHBhdGgpKSwgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLmRyb3BXaGlsZWAgYW5kIGBfLnRha2VXaGlsZWBcbiAgICAgKiB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0Ryb3BdIFNwZWNpZnkgZHJvcHBpbmcgZWxlbWVudHMgaW5zdGVhZCBvZiB0YWtpbmcgdGhlbS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVdoaWxlKGFycmF5LCBwcmVkaWNhdGUsIGlzRHJvcCwgZnJvbVJpZ2h0KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIGluZGV4ID0gZnJvbVJpZ2h0ID8gbGVuZ3RoIDogLTE7XG5cbiAgICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpICYmXG4gICAgICAgIHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHt9XG5cbiAgICAgIHJldHVybiBpc0Ryb3BcbiAgICAgICAgPyBiYXNlU2xpY2UoYXJyYXksIChmcm9tUmlnaHQgPyAwIDogaW5kZXgpLCAoZnJvbVJpZ2h0ID8gaW5kZXggKyAxIDogbGVuZ3RoKSlcbiAgICAgICAgOiBiYXNlU2xpY2UoYXJyYXksIChmcm9tUmlnaHQgPyBpbmRleCArIDEgOiAwKSwgKGZyb21SaWdodCA/IGxlbmd0aCA6IGluZGV4KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHdyYXBwZXJWYWx1ZWAgd2hpY2ggcmV0dXJucyB0aGUgcmVzdWx0IG9mXG4gICAgICogcGVyZm9ybWluZyBhIHNlcXVlbmNlIG9mIGFjdGlvbnMgb24gdGhlIHVud3JhcHBlZCBgdmFsdWVgLCB3aGVyZSBlYWNoXG4gICAgICogc3VjY2Vzc2l2ZSBhY3Rpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHVud3JhcHBlZCB2YWx1ZS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhY3Rpb25zIEFjdGlvbnMgdG8gcGVyZm9ybSB0byByZXNvbHZlIHRoZSB1bndyYXBwZWQgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VXcmFwcGVyVmFsdWUodmFsdWUsIGFjdGlvbnMpIHtcbiAgICAgIHZhciByZXN1bHQgPSB2YWx1ZTtcbiAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcikge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQudmFsdWUoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheVJlZHVjZShhY3Rpb25zLCBmdW5jdGlvbihyZXN1bHQsIGFjdGlvbikge1xuICAgICAgICByZXR1cm4gYWN0aW9uLmZ1bmMuYXBwbHkoYWN0aW9uLnRoaXNBcmcsIGFycmF5UHVzaChbcmVzdWx0XSwgYWN0aW9uLmFyZ3MpKTtcbiAgICAgIH0sIHJlc3VsdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLnhvcmAsIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLCB0aGF0IGFjY2VwdHMgYW4gYXJyYXkgb2YgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5cyBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiB2YWx1ZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVhvcihhcnJheXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXlzLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlVW5pcShhcnJheXNbMF0pIDogW107XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgYXJyYXkgPSBhcnJheXNbaW5kZXhdLFxuICAgICAgICAgICAgb3RoSW5kZXggPSAtMTtcblxuICAgICAgICB3aGlsZSAoKytvdGhJbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIGlmIChvdGhJbmRleCAhPSBpbmRleCkge1xuICAgICAgICAgICAgcmVzdWx0W2luZGV4XSA9IGJhc2VEaWZmZXJlbmNlKHJlc3VsdFtpbmRleF0gfHwgYXJyYXksIGFycmF5c1tvdGhJbmRleF0sIGl0ZXJhdGVlLCBjb21wYXJhdG9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihyZXN1bHQsIDEpLCBpdGVyYXRlZSwgY29tcGFyYXRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnppcE9iamVjdGAgd2hpY2ggYXNzaWducyB2YWx1ZXMgdXNpbmcgYGFzc2lnbkZ1bmNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gYXNzaWduRnVuYyBUaGUgZnVuY3Rpb24gdG8gYXNzaWduIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VaaXBPYmplY3QocHJvcHMsIHZhbHVlcywgYXNzaWduRnVuYykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoLFxuICAgICAgICAgIHZhbHNMZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IHt9O1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBpbmRleCA8IHZhbHNMZW5ndGggPyB2YWx1ZXNbaW5kZXhdIDogdW5kZWZpbmVkO1xuICAgICAgICBhc3NpZ25GdW5jKHJlc3VsdCwgcHJvcHNbaW5kZXhdLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhc3RzIGB2YWx1ZWAgdG8gYW4gZW1wdHkgYXJyYXkgaWYgaXQncyBub3QgYW4gYXJyYXkgbGlrZSBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyB0aGUgY2FzdCBhcnJheS1saWtlIG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXN0QXJyYXlMaWtlT2JqZWN0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2VPYmplY3QodmFsdWUpID8gdmFsdWUgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXN0cyBgdmFsdWVgIHRvIGBpZGVudGl0eWAgaWYgaXQncyBub3QgYSBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgY2FzdCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXN0RnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlIDogaWRlbnRpdHk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FzdHMgYHZhbHVlYCB0byBhIHBhdGggYXJyYXkgaWYgaXQncyBub3Qgb25lLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FzdFBhdGgodmFsdWUsIG9iamVjdCkge1xuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc0tleSh2YWx1ZSwgb2JqZWN0KSA/IFt2YWx1ZV0gOiBzdHJpbmdUb1BhdGgodG9TdHJpbmcodmFsdWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIGBiYXNlUmVzdGAgYWxpYXMgd2hpY2ggY2FuIGJlIHJlcGxhY2VkIHdpdGggYGlkZW50aXR5YCBieSBtb2R1bGVcbiAgICAgKiByZXBsYWNlbWVudCBwbHVnaW5zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAdHlwZSB7RnVuY3Rpb259XG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICB2YXIgY2FzdFJlc3QgPSBiYXNlUmVzdDtcblxuICAgIC8qKlxuICAgICAqIENhc3RzIGBhcnJheWAgdG8gYSBzbGljZSBpZiBpdCdzIG5lZWRlZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0IFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IHNsaWNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhc3RTbGljZShhcnJheSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuZ3RoIDogZW5kO1xuICAgICAgcmV0dXJuICghc3RhcnQgJiYgZW5kID49IGxlbmd0aCkgPyBhcnJheSA6IGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzaW1wbGUgd3JhcHBlciBhcm91bmQgdGhlIGdsb2JhbCBbYGNsZWFyVGltZW91dGBdKGh0dHBzOi8vbWRuLmlvL2NsZWFyVGltZW91dCkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfE9iamVjdH0gaWQgVGhlIHRpbWVyIGlkIG9yIHRpbWVvdXQgb2JqZWN0IG9mIHRoZSB0aW1lciB0byBjbGVhci5cbiAgICAgKi9cbiAgICB2YXIgY2xlYXJUaW1lb3V0ID0gY3R4Q2xlYXJUaW1lb3V0IHx8IGZ1bmN0aW9uKGlkKSB7XG4gICAgICByZXR1cm4gcm9vdC5jbGVhclRpbWVvdXQoaWQpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgIGBidWZmZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0J1ZmZlcn0gYnVmZmVyIFRoZSBidWZmZXIgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYnVmZmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lQnVmZmVyKGJ1ZmZlciwgaXNEZWVwKSB7XG4gICAgICBpZiAoaXNEZWVwKSB7XG4gICAgICAgIHJldHVybiBidWZmZXIuc2xpY2UoKTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSBidWZmZXIubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IGFsbG9jVW5zYWZlID8gYWxsb2NVbnNhZmUobGVuZ3RoKSA6IG5ldyBidWZmZXIuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICAgICAgYnVmZmVyLmNvcHkocmVzdWx0KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIGBhcnJheUJ1ZmZlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ9IGFycmF5QnVmZmVyIFRoZSBhcnJheSBidWZmZXIgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMge0FycmF5QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYXJyYXkgYnVmZmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lQXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIpIHtcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgYXJyYXlCdWZmZXIuY29uc3RydWN0b3IoYXJyYXlCdWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICBuZXcgVWludDhBcnJheShyZXN1bHQpLnNldChuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcikpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGRhdGFWaWV3YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGRhdGFWaWV3IFRoZSBkYXRhIHZpZXcgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgZGF0YSB2aWV3LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lRGF0YVZpZXcoZGF0YVZpZXcsIGlzRGVlcCkge1xuICAgICAgdmFyIGJ1ZmZlciA9IGlzRGVlcCA/IGNsb25lQXJyYXlCdWZmZXIoZGF0YVZpZXcuYnVmZmVyKSA6IGRhdGFWaWV3LmJ1ZmZlcjtcbiAgICAgIHJldHVybiBuZXcgZGF0YVZpZXcuY29uc3RydWN0b3IoYnVmZmVyLCBkYXRhVmlldy5ieXRlT2Zmc2V0LCBkYXRhVmlldy5ieXRlTGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHJlZ2V4cGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSByZWdleHAgVGhlIHJlZ2V4cCB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgcmVnZXhwLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lUmVnRXhwKHJlZ2V4cCkge1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyByZWdleHAuY29uc3RydWN0b3IocmVnZXhwLnNvdXJjZSwgcmVGbGFncy5leGVjKHJlZ2V4cCkpO1xuICAgICAgcmVzdWx0Lmxhc3RJbmRleCA9IHJlZ2V4cC5sYXN0SW5kZXg7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgYHN5bWJvbGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc3ltYm9sIFRoZSBzeW1ib2wgb2JqZWN0IHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBzeW1ib2wgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lU3ltYm9sKHN5bWJvbCkge1xuICAgICAgcmV0dXJuIHN5bWJvbFZhbHVlT2YgPyBPYmplY3Qoc3ltYm9sVmFsdWVPZi5jYWxsKHN5bWJvbCkpIDoge307XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIGB0eXBlZEFycmF5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHR5cGVkQXJyYXkgVGhlIHR5cGVkIGFycmF5IHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHR5cGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lVHlwZWRBcnJheSh0eXBlZEFycmF5LCBpc0RlZXApIHtcbiAgICAgIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKHR5cGVkQXJyYXkuYnVmZmVyKSA6IHR5cGVkQXJyYXkuYnVmZmVyO1xuICAgICAgcmV0dXJuIG5ldyB0eXBlZEFycmF5LmNvbnN0cnVjdG9yKGJ1ZmZlciwgdHlwZWRBcnJheS5ieXRlT2Zmc2V0LCB0eXBlZEFycmF5Lmxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcGFyZXMgdmFsdWVzIHRvIHNvcnQgdGhlbSBpbiBhc2NlbmRpbmcgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzb3J0IG9yZGVyIGluZGljYXRvciBmb3IgYHZhbHVlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb21wYXJlQXNjZW5kaW5nKHZhbHVlLCBvdGhlcikge1xuICAgICAgaWYgKHZhbHVlICE9PSBvdGhlcikge1xuICAgICAgICB2YXIgdmFsSXNEZWZpbmVkID0gdmFsdWUgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHZhbElzTnVsbCA9IHZhbHVlID09PSBudWxsLFxuICAgICAgICAgICAgdmFsSXNSZWZsZXhpdmUgPSB2YWx1ZSA9PT0gdmFsdWUsXG4gICAgICAgICAgICB2YWxJc1N5bWJvbCA9IGlzU3ltYm9sKHZhbHVlKTtcblxuICAgICAgICB2YXIgb3RoSXNEZWZpbmVkID0gb3RoZXIgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG90aElzTnVsbCA9IG90aGVyID09PSBudWxsLFxuICAgICAgICAgICAgb3RoSXNSZWZsZXhpdmUgPSBvdGhlciA9PT0gb3RoZXIsXG4gICAgICAgICAgICBvdGhJc1N5bWJvbCA9IGlzU3ltYm9sKG90aGVyKTtcblxuICAgICAgICBpZiAoKCFvdGhJc051bGwgJiYgIW90aElzU3ltYm9sICYmICF2YWxJc1N5bWJvbCAmJiB2YWx1ZSA+IG90aGVyKSB8fFxuICAgICAgICAgICAgKHZhbElzU3ltYm9sICYmIG90aElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSAmJiAhb3RoSXNOdWxsICYmICFvdGhJc1N5bWJvbCkgfHxcbiAgICAgICAgICAgICh2YWxJc051bGwgJiYgb3RoSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAgICAgKCF2YWxJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICAgICAhdmFsSXNSZWZsZXhpdmUpIHtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKCF2YWxJc051bGwgJiYgIXZhbElzU3ltYm9sICYmICFvdGhJc1N5bWJvbCAmJiB2YWx1ZSA8IG90aGVyKSB8fFxuICAgICAgICAgICAgKG90aElzU3ltYm9sICYmIHZhbElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSAmJiAhdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCkgfHxcbiAgICAgICAgICAgIChvdGhJc051bGwgJiYgdmFsSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAgICAgKCFvdGhJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICAgICAhb3RoSXNSZWZsZXhpdmUpIHtcbiAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgYnkgYF8ub3JkZXJCeWAgdG8gY29tcGFyZSBtdWx0aXBsZSBwcm9wZXJ0aWVzIG9mIGEgdmFsdWUgdG8gYW5vdGhlclxuICAgICAqIGFuZCBzdGFibGUgc29ydCB0aGVtLlxuICAgICAqXG4gICAgICogSWYgYG9yZGVyc2AgaXMgdW5zcGVjaWZpZWQsIGFsbCB2YWx1ZXMgYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIuIE90aGVyd2lzZSxcbiAgICAgKiBzcGVjaWZ5IGFuIG9yZGVyIG9mIFwiZGVzY1wiIGZvciBkZXNjZW5kaW5nIG9yIFwiYXNjXCIgZm9yIGFzY2VuZGluZyBzb3J0IG9yZGVyXG4gICAgICogb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtib29sZWFuW118c3RyaW5nW119IG9yZGVycyBUaGUgb3JkZXIgdG8gc29ydCBieSBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzb3J0IG9yZGVyIGluZGljYXRvciBmb3IgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29tcGFyZU11bHRpcGxlKG9iamVjdCwgb3RoZXIsIG9yZGVycykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgb2JqQ3JpdGVyaWEgPSBvYmplY3QuY3JpdGVyaWEsXG4gICAgICAgICAgb3RoQ3JpdGVyaWEgPSBvdGhlci5jcml0ZXJpYSxcbiAgICAgICAgICBsZW5ndGggPSBvYmpDcml0ZXJpYS5sZW5ndGgsXG4gICAgICAgICAgb3JkZXJzTGVuZ3RoID0gb3JkZXJzLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGNvbXBhcmVBc2NlbmRpbmcob2JqQ3JpdGVyaWFbaW5kZXhdLCBvdGhDcml0ZXJpYVtpbmRleF0pO1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgaWYgKGluZGV4ID49IG9yZGVyc0xlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIG9yZGVyID0gb3JkZXJzW2luZGV4XTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0ICogKG9yZGVyID09ICdkZXNjJyA/IC0xIDogMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIEZpeGVzIGFuIGBBcnJheSNzb3J0YCBidWcgaW4gdGhlIEpTIGVuZ2luZSBlbWJlZGRlZCBpbiBBZG9iZSBhcHBsaWNhdGlvbnNcbiAgICAgIC8vIHRoYXQgY2F1c2VzIGl0LCB1bmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMsIHRvIHByb3ZpZGUgdGhlIHNhbWUgdmFsdWUgZm9yXG4gICAgICAvLyBgb2JqZWN0YCBhbmQgYG90aGVyYC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qYXNoa2VuYXMvdW5kZXJzY29yZS9wdWxsLzEyNDdcbiAgICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAvL1xuICAgICAgLy8gVGhpcyBhbHNvIGVuc3VyZXMgYSBzdGFibGUgc29ydCBpbiBWOCBhbmQgb3RoZXIgZW5naW5lcy5cbiAgICAgIC8vIFNlZSBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD05MCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgcmV0dXJuIG9iamVjdC5pbmRleCAtIG90aGVyLmluZGV4O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgdGhhdCBpcyB0aGUgY29tcG9zaXRpb24gb2YgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLFxuICAgICAqIHBsYWNlaG9sZGVycywgYW5kIHByb3ZpZGVkIGFyZ3VtZW50cyBpbnRvIGEgc2luZ2xlIGFycmF5IG9mIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhcnRpYWxzIFRoZSBhcmd1bWVudHMgdG8gcHJlcGVuZCB0byB0aG9zZSBwcm92aWRlZC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBob2xkZXJzIFRoZSBgcGFydGlhbHNgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtcyB7Ym9vbGVhbn0gW2lzQ3VycmllZF0gU3BlY2lmeSBjb21wb3NpbmcgZm9yIGEgY3VycmllZCBmdW5jdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21wb3NlZCBhcmd1bWVudHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29tcG9zZUFyZ3MoYXJncywgcGFydGlhbHMsIGhvbGRlcnMsIGlzQ3VycmllZCkge1xuICAgICAgdmFyIGFyZ3NJbmRleCA9IC0xLFxuICAgICAgICAgIGFyZ3NMZW5ndGggPSBhcmdzLmxlbmd0aCxcbiAgICAgICAgICBob2xkZXJzTGVuZ3RoID0gaG9sZGVycy5sZW5ndGgsXG4gICAgICAgICAgbGVmdEluZGV4ID0gLTEsXG4gICAgICAgICAgbGVmdExlbmd0aCA9IHBhcnRpYWxzLmxlbmd0aCxcbiAgICAgICAgICByYW5nZUxlbmd0aCA9IG5hdGl2ZU1heChhcmdzTGVuZ3RoIC0gaG9sZGVyc0xlbmd0aCwgMCksXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkobGVmdExlbmd0aCArIHJhbmdlTGVuZ3RoKSxcbiAgICAgICAgICBpc1VuY3VycmllZCA9ICFpc0N1cnJpZWQ7XG5cbiAgICAgIHdoaWxlICgrK2xlZnRJbmRleCA8IGxlZnRMZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0W2xlZnRJbmRleF0gPSBwYXJ0aWFsc1tsZWZ0SW5kZXhdO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCsrYXJnc0luZGV4IDwgaG9sZGVyc0xlbmd0aCkge1xuICAgICAgICBpZiAoaXNVbmN1cnJpZWQgfHwgYXJnc0luZGV4IDwgYXJnc0xlbmd0aCkge1xuICAgICAgICAgIHJlc3VsdFtob2xkZXJzW2FyZ3NJbmRleF1dID0gYXJnc1thcmdzSW5kZXhdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB3aGlsZSAocmFuZ2VMZW5ndGgtLSkge1xuICAgICAgICByZXN1bHRbbGVmdEluZGV4KytdID0gYXJnc1thcmdzSW5kZXgrK107XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgY29tcG9zZUFyZ3NgIGV4Y2VwdCB0aGF0IHRoZSBhcmd1bWVudHMgY29tcG9zaXRpb25cbiAgICAgKiBpcyB0YWlsb3JlZCBmb3IgYF8ucGFydGlhbFJpZ2h0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhcnRpYWxzIFRoZSBhcmd1bWVudHMgdG8gYXBwZW5kIHRvIHRob3NlIHByb3ZpZGVkLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGhvbGRlcnMgVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW1zIHtib29sZWFufSBbaXNDdXJyaWVkXSBTcGVjaWZ5IGNvbXBvc2luZyBmb3IgYSBjdXJyaWVkIGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbXBvc2VkIGFyZ3VtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb21wb3NlQXJnc1JpZ2h0KGFyZ3MsIHBhcnRpYWxzLCBob2xkZXJzLCBpc0N1cnJpZWQpIHtcbiAgICAgIHZhciBhcmdzSW5kZXggPSAtMSxcbiAgICAgICAgICBhcmdzTGVuZ3RoID0gYXJncy5sZW5ndGgsXG4gICAgICAgICAgaG9sZGVyc0luZGV4ID0gLTEsXG4gICAgICAgICAgaG9sZGVyc0xlbmd0aCA9IGhvbGRlcnMubGVuZ3RoLFxuICAgICAgICAgIHJpZ2h0SW5kZXggPSAtMSxcbiAgICAgICAgICByaWdodExlbmd0aCA9IHBhcnRpYWxzLmxlbmd0aCxcbiAgICAgICAgICByYW5nZUxlbmd0aCA9IG5hdGl2ZU1heChhcmdzTGVuZ3RoIC0gaG9sZGVyc0xlbmd0aCwgMCksXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkocmFuZ2VMZW5ndGggKyByaWdodExlbmd0aCksXG4gICAgICAgICAgaXNVbmN1cnJpZWQgPSAhaXNDdXJyaWVkO1xuXG4gICAgICB3aGlsZSAoKythcmdzSW5kZXggPCByYW5nZUxlbmd0aCkge1xuICAgICAgICByZXN1bHRbYXJnc0luZGV4XSA9IGFyZ3NbYXJnc0luZGV4XTtcbiAgICAgIH1cbiAgICAgIHZhciBvZmZzZXQgPSBhcmdzSW5kZXg7XG4gICAgICB3aGlsZSAoKytyaWdodEluZGV4IDwgcmlnaHRMZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0W29mZnNldCArIHJpZ2h0SW5kZXhdID0gcGFydGlhbHNbcmlnaHRJbmRleF07XG4gICAgICB9XG4gICAgICB3aGlsZSAoKytob2xkZXJzSW5kZXggPCBob2xkZXJzTGVuZ3RoKSB7XG4gICAgICAgIGlmIChpc1VuY3VycmllZCB8fCBhcmdzSW5kZXggPCBhcmdzTGVuZ3RoKSB7XG4gICAgICAgICAgcmVzdWx0W29mZnNldCArIGhvbGRlcnNbaG9sZGVyc0luZGV4XV0gPSBhcmdzW2FyZ3NJbmRleCsrXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgdGhlIHZhbHVlcyBvZiBgc291cmNlYCB0byBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIGZyb20uXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5PVtdXSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgdG8uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29weUFycmF5KHNvdXJjZSwgYXJyYXkpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgICAgIGFycmF5IHx8IChhcnJheSA9IEFycmF5KGxlbmd0aCkpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgYXJyYXlbaW5kZXhdID0gc291cmNlW2luZGV4XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgcHJvcGVydGllcyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycyB0byBjb3B5LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyB0by5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb3BpZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29weU9iamVjdChzb3VyY2UsIHByb3BzLCBvYmplY3QsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBpc05ldyA9ICFvYmplY3Q7XG4gICAgICBvYmplY3QgfHwgKG9iamVjdCA9IHt9KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0gcHJvcHNbaW5kZXhdO1xuXG4gICAgICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgICAgICA/IGN1c3RvbWl6ZXIob2JqZWN0W2tleV0sIHNvdXJjZVtrZXldLCBrZXksIG9iamVjdCwgc291cmNlKVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbmV3VmFsdWUgPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOZXcpIHtcbiAgICAgICAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvcGllcyBvd24gc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvcHlTeW1ib2xzKHNvdXJjZSwgb2JqZWN0KSB7XG4gICAgICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHMoc291cmNlKSwgb2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgb3duIGFuZCBpbmhlcml0ZWQgc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvcHlTeW1ib2xzSW4oc291cmNlLCBvYmplY3QpIHtcbiAgICAgIHJldHVybiBjb3B5T2JqZWN0KHNvdXJjZSwgZ2V0U3ltYm9sc0luKHNvdXJjZSksIG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uZ3JvdXBCeWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGFjY3VtdWxhdG9yIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaW5pdGlhbGl6ZXJdIFRoZSBhY2N1bXVsYXRvciBvYmplY3QgaW5pdGlhbGl6ZXIuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWdncmVnYXRvciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVBZ2dyZWdhdG9yKHNldHRlciwgaW5pdGlhbGl6ZXIpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUFnZ3JlZ2F0b3IgOiBiYXNlQWdncmVnYXRvcixcbiAgICAgICAgICAgIGFjY3VtdWxhdG9yID0gaW5pdGlhbGl6ZXIgPyBpbml0aWFsaXplcigpIDoge307XG5cbiAgICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgc2V0dGVyLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIGFjY3VtdWxhdG9yKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uYXNzaWduYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gYXNzaWduZXIgVGhlIGZ1bmN0aW9uIHRvIGFzc2lnbiB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYXNzaWduZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQXNzaWduZXIoYXNzaWduZXIpIHtcbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIHNvdXJjZXMpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgICBsZW5ndGggPSBzb3VyY2VzLmxlbmd0aCxcbiAgICAgICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPiAxID8gc291cmNlc1tsZW5ndGggLSAxXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGd1YXJkID0gbGVuZ3RoID4gMiA/IHNvdXJjZXNbMl0gOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgY3VzdG9taXplciA9IChhc3NpZ25lci5sZW5ndGggPiAzICYmIHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicpXG4gICAgICAgICAgPyAobGVuZ3RoLS0sIGN1c3RvbWl6ZXIpXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPCAzID8gdW5kZWZpbmVkIDogY3VzdG9taXplcjtcbiAgICAgICAgICBsZW5ndGggPSAxO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2luZGV4XTtcbiAgICAgICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgICAgICBhc3NpZ25lcihvYmplY3QsIHNvdXJjZSwgaW5kZXgsIGN1c3RvbWl6ZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBiYXNlRWFjaGAgb3IgYGJhc2VFYWNoUmlnaHRgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGEgY29sbGVjdGlvbi5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUJhc2VFYWNoKGVhY2hGdW5jLCBmcm9tUmlnaHQpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgICAgIHJldHVybiBlYWNoRnVuYyhjb2xsZWN0aW9uLCBpdGVyYXRlZSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoLFxuICAgICAgICAgICAgaW5kZXggPSBmcm9tUmlnaHQgPyBsZW5ndGggOiAtMSxcbiAgICAgICAgICAgIGl0ZXJhYmxlID0gT2JqZWN0KGNvbGxlY3Rpb24pO1xuXG4gICAgICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgICAgICAgaWYgKGl0ZXJhdGVlKGl0ZXJhYmxlW2luZGV4XSwgaW5kZXgsIGl0ZXJhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGJhc2UgZnVuY3Rpb24gZm9yIG1ldGhvZHMgbGlrZSBgXy5mb3JJbmAgYW5kIGBfLmZvck93bmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJhc2UgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQmFzZUZvcihmcm9tUmlnaHQpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzRnVuYykge1xuICAgICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICAgIGl0ZXJhYmxlID0gT2JqZWN0KG9iamVjdCksXG4gICAgICAgICAgICBwcm9wcyA9IGtleXNGdW5jKG9iamVjdCksXG4gICAgICAgICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgICAgdmFyIGtleSA9IHByb3BzW2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdO1xuICAgICAgICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgdG8gaW52b2tlIGl0IHdpdGggdGhlIG9wdGlvbmFsIGB0aGlzYFxuICAgICAqIGJpbmRpbmcgb2YgYHRoaXNBcmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHsqfSBbdGhpc0FyZ10gVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUJpbmQoZnVuYywgYml0bWFzaywgdGhpc0FyZykge1xuICAgICAgdmFyIGlzQmluZCA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfRkxBRyxcbiAgICAgICAgICBDdG9yID0gY3JlYXRlQ3RvcihmdW5jKTtcblxuICAgICAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICAgICAgdmFyIGZuID0gKHRoaXMgJiYgdGhpcyAhPT0gcm9vdCAmJiB0aGlzIGluc3RhbmNlb2Ygd3JhcHBlcikgPyBDdG9yIDogZnVuYztcbiAgICAgICAgcmV0dXJuIGZuLmFwcGx5KGlzQmluZCA/IHRoaXNBcmcgOiB0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8ubG93ZXJGaXJzdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2ROYW1lIFRoZSBuYW1lIG9mIHRoZSBgU3RyaW5nYCBjYXNlIG1ldGhvZCB0byB1c2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FzZSBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVDYXNlRmlyc3QobWV0aG9kTmFtZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuXG4gICAgICAgIHZhciBzdHJTeW1ib2xzID0gaGFzVW5pY29kZShzdHJpbmcpXG4gICAgICAgICAgPyBzdHJpbmdUb0FycmF5KHN0cmluZylcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICB2YXIgY2hyID0gc3RyU3ltYm9sc1xuICAgICAgICAgID8gc3RyU3ltYm9sc1swXVxuICAgICAgICAgIDogc3RyaW5nLmNoYXJBdCgwKTtcblxuICAgICAgICB2YXIgdHJhaWxpbmcgPSBzdHJTeW1ib2xzXG4gICAgICAgICAgPyBjYXN0U2xpY2Uoc3RyU3ltYm9scywgMSkuam9pbignJylcbiAgICAgICAgICA6IHN0cmluZy5zbGljZSgxKTtcblxuICAgICAgICByZXR1cm4gY2hyW21ldGhvZE5hbWVdKCkgKyB0cmFpbGluZztcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uY2FtZWxDYXNlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRvIGNvbWJpbmUgZWFjaCB3b3JkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbXBvdW5kZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQ29tcG91bmRlcihjYWxsYmFjaykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAgICByZXR1cm4gYXJyYXlSZWR1Y2Uod29yZHMoZGVidXJyKHN0cmluZykucmVwbGFjZShyZUFwb3MsICcnKSksIGNhbGxiYWNrLCAnJyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHByb2R1Y2VzIGFuIGluc3RhbmNlIG9mIGBDdG9yYCByZWdhcmRsZXNzIG9mXG4gICAgICogd2hldGhlciBpdCB3YXMgaW52b2tlZCBhcyBwYXJ0IG9mIGEgYG5ld2AgZXhwcmVzc2lvbiBvciBieSBgY2FsbGAgb3IgYGFwcGx5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gQ3RvciBUaGUgY29uc3RydWN0b3IgdG8gd3JhcC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUN0b3IoQ3Rvcikge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAvLyBVc2UgYSBgc3dpdGNoYCBzdGF0ZW1lbnQgdG8gd29yayB3aXRoIGNsYXNzIGNvbnN0cnVjdG9ycy4gU2VlXG4gICAgICAgIC8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtZnVuY3Rpb24tb2JqZWN0cy1jYWxsLXRoaXNhcmd1bWVudC1hcmd1bWVudHNsaXN0XG4gICAgICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEN0b3I7XG4gICAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSk7XG4gICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICAgICAgY2FzZSAzOiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgICAgICAgY2FzZSA0OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7XG4gICAgICAgICAgY2FzZSA1OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSwgYXJnc1s0XSk7XG4gICAgICAgICAgY2FzZSA2OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSwgYXJnc1s0XSwgYXJnc1s1XSk7XG4gICAgICAgICAgY2FzZSA3OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSwgYXJnc1s0XSwgYXJnc1s1XSwgYXJnc1s2XSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRoaXNCaW5kaW5nID0gYmFzZUNyZWF0ZShDdG9yLnByb3RvdHlwZSksXG4gICAgICAgICAgICByZXN1bHQgPSBDdG9yLmFwcGx5KHRoaXNCaW5kaW5nLCBhcmdzKTtcblxuICAgICAgICAvLyBNaW1pYyB0aGUgY29uc3RydWN0b3IncyBgcmV0dXJuYCBiZWhhdmlvci5cbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDEzLjIuMiBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgICByZXR1cm4gaXNPYmplY3QocmVzdWx0KSA/IHJlc3VsdCA6IHRoaXNCaW5kaW5nO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgdG8gZW5hYmxlIGN1cnJ5aW5nLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGFyaXR5IFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVDdXJyeShmdW5jLCBiaXRtYXNrLCBhcml0eSkge1xuICAgICAgdmFyIEN0b3IgPSBjcmVhdGVDdG9yKGZ1bmMpO1xuXG4gICAgICBmdW5jdGlvbiB3cmFwcGVyKCkge1xuICAgICAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCxcbiAgICAgICAgICAgIGFyZ3MgPSBBcnJheShsZW5ndGgpLFxuICAgICAgICAgICAgaW5kZXggPSBsZW5ndGgsXG4gICAgICAgICAgICBwbGFjZWhvbGRlciA9IGdldEhvbGRlcih3cmFwcGVyKTtcblxuICAgICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICAgIGFyZ3NbaW5kZXhdID0gYXJndW1lbnRzW2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaG9sZGVycyA9IChsZW5ndGggPCAzICYmIGFyZ3NbMF0gIT09IHBsYWNlaG9sZGVyICYmIGFyZ3NbbGVuZ3RoIC0gMV0gIT09IHBsYWNlaG9sZGVyKVxuICAgICAgICAgID8gW11cbiAgICAgICAgICA6IHJlcGxhY2VIb2xkZXJzKGFyZ3MsIHBsYWNlaG9sZGVyKTtcblxuICAgICAgICBsZW5ndGggLT0gaG9sZGVycy5sZW5ndGg7XG4gICAgICAgIGlmIChsZW5ndGggPCBhcml0eSkge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVSZWN1cnJ5KFxuICAgICAgICAgICAgZnVuYywgYml0bWFzaywgY3JlYXRlSHlicmlkLCB3cmFwcGVyLnBsYWNlaG9sZGVyLCB1bmRlZmluZWQsXG4gICAgICAgICAgICBhcmdzLCBob2xkZXJzLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgYXJpdHkgLSBsZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmbiA9ICh0aGlzICYmIHRoaXMgIT09IHJvb3QgJiYgdGhpcyBpbnN0YW5jZW9mIHdyYXBwZXIpID8gQ3RvciA6IGZ1bmM7XG4gICAgICAgIHJldHVybiBhcHBseShmbiwgdGhpcywgYXJncyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYF8uZmluZGAgb3IgYF8uZmluZExhc3RgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmaW5kSW5kZXhGdW5jIFRoZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBjb2xsZWN0aW9uIGluZGV4LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZpbmQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlRmluZChmaW5kSW5kZXhGdW5jKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgICAgICAgdmFyIGl0ZXJhYmxlID0gT2JqZWN0KGNvbGxlY3Rpb24pO1xuICAgICAgICBpZiAoIWlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgICAgICAgdmFyIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKTtcbiAgICAgICAgICBjb2xsZWN0aW9uID0ga2V5cyhjb2xsZWN0aW9uKTtcbiAgICAgICAgICBwcmVkaWNhdGUgPSBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sIGtleSwgaXRlcmFibGUpOyB9O1xuICAgICAgICB9XG4gICAgICAgIHZhciBpbmRleCA9IGZpbmRJbmRleEZ1bmMoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBmcm9tSW5kZXgpO1xuICAgICAgICByZXR1cm4gaW5kZXggPiAtMSA/IGl0ZXJhYmxlW2l0ZXJhdGVlID8gY29sbGVjdGlvbltpbmRleF0gOiBpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgXy5mbG93YCBvciBgXy5mbG93UmlnaHRgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmbG93IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUZsb3coZnJvbVJpZ2h0KSB7XG4gICAgICByZXR1cm4gZmxhdFJlc3QoZnVuY3Rpb24oZnVuY3MpIHtcbiAgICAgICAgdmFyIGxlbmd0aCA9IGZ1bmNzLmxlbmd0aCxcbiAgICAgICAgICAgIGluZGV4ID0gbGVuZ3RoLFxuICAgICAgICAgICAgcHJlcmVxID0gTG9kYXNoV3JhcHBlci5wcm90b3R5cGUudGhydTtcblxuICAgICAgICBpZiAoZnJvbVJpZ2h0KSB7XG4gICAgICAgICAgZnVuY3MucmV2ZXJzZSgpO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgICAgdmFyIGZ1bmMgPSBmdW5jc1tpbmRleF07XG4gICAgICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHByZXJlcSAmJiAhd3JhcHBlciAmJiBnZXRGdW5jTmFtZShmdW5jKSA9PSAnd3JhcHBlcicpIHtcbiAgICAgICAgICAgIHZhciB3cmFwcGVyID0gbmV3IExvZGFzaFdyYXBwZXIoW10sIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpbmRleCA9IHdyYXBwZXIgPyBpbmRleCA6IGxlbmd0aDtcbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBmdW5jID0gZnVuY3NbaW5kZXhdO1xuXG4gICAgICAgICAgdmFyIGZ1bmNOYW1lID0gZ2V0RnVuY05hbWUoZnVuYyksXG4gICAgICAgICAgICAgIGRhdGEgPSBmdW5jTmFtZSA9PSAnd3JhcHBlcicgPyBnZXREYXRhKGZ1bmMpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgICAgaWYgKGRhdGEgJiYgaXNMYXppYWJsZShkYXRhWzBdKSAmJlxuICAgICAgICAgICAgICAgIGRhdGFbMV0gPT0gKFdSQVBfQVJZX0ZMQUcgfCBXUkFQX0NVUlJZX0ZMQUcgfCBXUkFQX1BBUlRJQUxfRkxBRyB8IFdSQVBfUkVBUkdfRkxBRykgJiZcbiAgICAgICAgICAgICAgICAhZGF0YVs0XS5sZW5ndGggJiYgZGF0YVs5XSA9PSAxXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgd3JhcHBlciA9IHdyYXBwZXJbZ2V0RnVuY05hbWUoZGF0YVswXSldLmFwcGx5KHdyYXBwZXIsIGRhdGFbM10pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3cmFwcGVyID0gKGZ1bmMubGVuZ3RoID09IDEgJiYgaXNMYXppYWJsZShmdW5jKSlcbiAgICAgICAgICAgICAgPyB3cmFwcGVyW2Z1bmNOYW1lXSgpXG4gICAgICAgICAgICAgIDogd3JhcHBlci50aHJ1KGZ1bmMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgICAgIHZhbHVlID0gYXJnc1swXTtcblxuICAgICAgICAgIGlmICh3cmFwcGVyICYmIGFyZ3MubGVuZ3RoID09IDEgJiYgaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwcGVyLnBsYW50KHZhbHVlKS52YWx1ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgaW5kZXggPSAwLFxuICAgICAgICAgICAgICByZXN1bHQgPSBsZW5ndGggPyBmdW5jc1tpbmRleF0uYXBwbHkodGhpcywgYXJncykgOiB2YWx1ZTtcblxuICAgICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBmdW5jc1tpbmRleF0uY2FsbCh0aGlzLCByZXN1bHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGludm9rZSBpdCB3aXRoIG9wdGlvbmFsIGB0aGlzYFxuICAgICAqIGJpbmRpbmcgb2YgYHRoaXNBcmdgLCBwYXJ0aWFsIGFwcGxpY2F0aW9uLCBhbmQgY3VycnlpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb258c3RyaW5nfSBmdW5jIFRoZSBmdW5jdGlvbiBvciBtZXRob2QgbmFtZSB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHsqfSBbdGhpc0FyZ10gVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gcHJlcGVuZCB0byB0aG9zZSBwcm92aWRlZCB0b1xuICAgICAqICB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzXSBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwYXJ0aWFsc1JpZ2h0XSBUaGUgYXJndW1lbnRzIHRvIGFwcGVuZCB0byB0aG9zZSBwcm92aWRlZFxuICAgICAqICB0byB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzUmlnaHRdIFRoZSBgcGFydGlhbHNSaWdodGAgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJnUG9zXSBUaGUgYXJndW1lbnQgcG9zaXRpb25zIG9mIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcnldIFRoZSBhcml0eSBjYXAgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHldIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVIeWJyaWQoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMsIHBhcnRpYWxzUmlnaHQsIGhvbGRlcnNSaWdodCwgYXJnUG9zLCBhcnksIGFyaXR5KSB7XG4gICAgICB2YXIgaXNBcnkgPSBiaXRtYXNrICYgV1JBUF9BUllfRkxBRyxcbiAgICAgICAgICBpc0JpbmQgPSBiaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcsXG4gICAgICAgICAgaXNCaW5kS2V5ID0gYml0bWFzayAmIFdSQVBfQklORF9LRVlfRkxBRyxcbiAgICAgICAgICBpc0N1cnJpZWQgPSBiaXRtYXNrICYgKFdSQVBfQ1VSUllfRkxBRyB8IFdSQVBfQ1VSUllfUklHSFRfRkxBRyksXG4gICAgICAgICAgaXNGbGlwID0gYml0bWFzayAmIFdSQVBfRkxJUF9GTEFHLFxuICAgICAgICAgIEN0b3IgPSBpc0JpbmRLZXkgPyB1bmRlZmluZWQgOiBjcmVhdGVDdG9yKGZ1bmMpO1xuXG4gICAgICBmdW5jdGlvbiB3cmFwcGVyKCkge1xuICAgICAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCxcbiAgICAgICAgICAgIGFyZ3MgPSBBcnJheShsZW5ndGgpLFxuICAgICAgICAgICAgaW5kZXggPSBsZW5ndGg7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgICBhcmdzW2luZGV4XSA9IGFyZ3VtZW50c1tpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQ3VycmllZCkge1xuICAgICAgICAgIHZhciBwbGFjZWhvbGRlciA9IGdldEhvbGRlcih3cmFwcGVyKSxcbiAgICAgICAgICAgICAgaG9sZGVyc0NvdW50ID0gY291bnRIb2xkZXJzKGFyZ3MsIHBsYWNlaG9sZGVyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFydGlhbHMpIHtcbiAgICAgICAgICBhcmdzID0gY29tcG9zZUFyZ3MoYXJncywgcGFydGlhbHMsIGhvbGRlcnMsIGlzQ3VycmllZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnRpYWxzUmlnaHQpIHtcbiAgICAgICAgICBhcmdzID0gY29tcG9zZUFyZ3NSaWdodChhcmdzLCBwYXJ0aWFsc1JpZ2h0LCBob2xkZXJzUmlnaHQsIGlzQ3VycmllZCk7XG4gICAgICAgIH1cbiAgICAgICAgbGVuZ3RoIC09IGhvbGRlcnNDb3VudDtcbiAgICAgICAgaWYgKGlzQ3VycmllZCAmJiBsZW5ndGggPCBhcml0eSkge1xuICAgICAgICAgIHZhciBuZXdIb2xkZXJzID0gcmVwbGFjZUhvbGRlcnMoYXJncywgcGxhY2Vob2xkZXIpO1xuICAgICAgICAgIHJldHVybiBjcmVhdGVSZWN1cnJ5KFxuICAgICAgICAgICAgZnVuYywgYml0bWFzaywgY3JlYXRlSHlicmlkLCB3cmFwcGVyLnBsYWNlaG9sZGVyLCB0aGlzQXJnLFxuICAgICAgICAgICAgYXJncywgbmV3SG9sZGVycywgYXJnUG9zLCBhcnksIGFyaXR5IC0gbGVuZ3RoXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdGhpc0JpbmRpbmcgPSBpc0JpbmQgPyB0aGlzQXJnIDogdGhpcyxcbiAgICAgICAgICAgIGZuID0gaXNCaW5kS2V5ID8gdGhpc0JpbmRpbmdbZnVuY10gOiBmdW5jO1xuXG4gICAgICAgIGxlbmd0aCA9IGFyZ3MubGVuZ3RoO1xuICAgICAgICBpZiAoYXJnUG9zKSB7XG4gICAgICAgICAgYXJncyA9IHJlb3JkZXIoYXJncywgYXJnUG9zKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0ZsaXAgJiYgbGVuZ3RoID4gMSkge1xuICAgICAgICAgIGFyZ3MucmV2ZXJzZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0FyeSAmJiBhcnkgPCBsZW5ndGgpIHtcbiAgICAgICAgICBhcmdzLmxlbmd0aCA9IGFyeTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcyAmJiB0aGlzICE9PSByb290ICYmIHRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyKSB7XG4gICAgICAgICAgZm4gPSBDdG9yIHx8IGNyZWF0ZUN0b3IoZm4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzQmluZGluZywgYXJncyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5pbnZlcnRCeWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGFjY3VtdWxhdG9yIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB0b0l0ZXJhdGVlIFRoZSBmdW5jdGlvbiB0byByZXNvbHZlIGl0ZXJhdGVlcy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBpbnZlcnRlciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVJbnZlcnRlcihzZXR0ZXIsIHRvSXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICAgIHJldHVybiBiYXNlSW52ZXJ0ZXIob2JqZWN0LCBzZXR0ZXIsIHRvSXRlcmF0ZWUoaXRlcmF0ZWUpLCB7fSk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGEgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbiBvbiB0d28gdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcGVyYXRvciBUaGUgZnVuY3Rpb24gdG8gcGVyZm9ybSB0aGUgb3BlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZGVmYXVsdFZhbHVlXSBUaGUgdmFsdWUgdXNlZCBmb3IgYHVuZGVmaW5lZGAgYXJndW1lbnRzLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1hdGhlbWF0aWNhbCBvcGVyYXRpb24gZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlTWF0aE9wZXJhdGlvbihvcGVyYXRvciwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gICAgICAgIHZhciByZXN1bHQ7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIG90aGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG90aGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBvdGhlcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCB0eXBlb2Ygb3RoZXIgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHZhbHVlID0gYmFzZVRvU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgIG90aGVyID0gYmFzZVRvU3RyaW5nKG90aGVyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWUgPSBiYXNlVG9OdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgb3RoZXIgPSBiYXNlVG9OdW1iZXIob3RoZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQgPSBvcGVyYXRvcih2YWx1ZSwgb3RoZXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLm92ZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBhcnJheUZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBpdGVyYXRlZXMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgb3ZlciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVPdmVyKGFycmF5RnVuYykge1xuICAgICAgcmV0dXJuIGZsYXRSZXN0KGZ1bmN0aW9uKGl0ZXJhdGVlcykge1xuICAgICAgICBpdGVyYXRlZXMgPSBhcnJheU1hcChpdGVyYXRlZXMsIGJhc2VVbmFyeShnZXRJdGVyYXRlZSgpKSk7XG4gICAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgICAgdmFyIHRoaXNBcmcgPSB0aGlzO1xuICAgICAgICAgIHJldHVybiBhcnJheUZ1bmMoaXRlcmF0ZWVzLCBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFwcGx5KGl0ZXJhdGVlLCB0aGlzQXJnLCBhcmdzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIHRoZSBwYWRkaW5nIGZvciBgc3RyaW5nYCBiYXNlZCBvbiBgbGVuZ3RoYC4gVGhlIGBjaGFyc2Agc3RyaW5nXG4gICAgICogaXMgdHJ1bmNhdGVkIGlmIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBleGNlZWRzIGBsZW5ndGhgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoIFRoZSBwYWRkaW5nIGxlbmd0aC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGluZyBmb3IgYHN0cmluZ2AuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUGFkZGluZyhsZW5ndGgsIGNoYXJzKSB7XG4gICAgICBjaGFycyA9IGNoYXJzID09PSB1bmRlZmluZWQgPyAnICcgOiBiYXNlVG9TdHJpbmcoY2hhcnMpO1xuXG4gICAgICB2YXIgY2hhcnNMZW5ndGggPSBjaGFycy5sZW5ndGg7XG4gICAgICBpZiAoY2hhcnNMZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiBjaGFyc0xlbmd0aCA/IGJhc2VSZXBlYXQoY2hhcnMsIGxlbmd0aCkgOiBjaGFycztcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSBiYXNlUmVwZWF0KGNoYXJzLCBuYXRpdmVDZWlsKGxlbmd0aCAvIHN0cmluZ1NpemUoY2hhcnMpKSk7XG4gICAgICByZXR1cm4gaGFzVW5pY29kZShjaGFycylcbiAgICAgICAgPyBjYXN0U2xpY2Uoc3RyaW5nVG9BcnJheShyZXN1bHQpLCAwLCBsZW5ndGgpLmpvaW4oJycpXG4gICAgICAgIDogcmVzdWx0LnNsaWNlKDAsIGxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGludm9rZSBpdCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZ1xuICAgICAqIG9mIGB0aGlzQXJnYCBhbmQgYHBhcnRpYWxzYCBwcmVwZW5kZWQgdG8gdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhcnRpYWxzIFRoZSBhcmd1bWVudHMgdG8gcHJlcGVuZCB0byB0aG9zZSBwcm92aWRlZCB0b1xuICAgICAqICB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUGFydGlhbChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBwYXJ0aWFscykge1xuICAgICAgdmFyIGlzQmluZCA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfRkxBRyxcbiAgICAgICAgICBDdG9yID0gY3JlYXRlQ3RvcihmdW5jKTtcblxuICAgICAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICAgICAgdmFyIGFyZ3NJbmRleCA9IC0xLFxuICAgICAgICAgICAgYXJnc0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAgICAgICBsZWZ0SW5kZXggPSAtMSxcbiAgICAgICAgICAgIGxlZnRMZW5ndGggPSBwYXJ0aWFscy5sZW5ndGgsXG4gICAgICAgICAgICBhcmdzID0gQXJyYXkobGVmdExlbmd0aCArIGFyZ3NMZW5ndGgpLFxuICAgICAgICAgICAgZm4gPSAodGhpcyAmJiB0aGlzICE9PSByb290ICYmIHRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyKSA/IEN0b3IgOiBmdW5jO1xuXG4gICAgICAgIHdoaWxlICgrK2xlZnRJbmRleCA8IGxlZnRMZW5ndGgpIHtcbiAgICAgICAgICBhcmdzW2xlZnRJbmRleF0gPSBwYXJ0aWFsc1tsZWZ0SW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChhcmdzTGVuZ3RoLS0pIHtcbiAgICAgICAgICBhcmdzW2xlZnRJbmRleCsrXSA9IGFyZ3VtZW50c1srK2FyZ3NJbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFwcGx5KGZuLCBpc0JpbmQgPyB0aGlzQXJnIDogdGhpcywgYXJncyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYF8ucmFuZ2VgIG9yIGBfLnJhbmdlUmlnaHRgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByYW5nZSBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVSYW5nZShmcm9tUmlnaHQpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihzdGFydCwgZW5kLCBzdGVwKSB7XG4gICAgICAgIGlmIChzdGVwICYmIHR5cGVvZiBzdGVwICE9ICdudW1iZXInICYmIGlzSXRlcmF0ZWVDYWxsKHN0YXJ0LCBlbmQsIHN0ZXApKSB7XG4gICAgICAgICAgZW5kID0gc3RlcCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBFbnN1cmUgdGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gICAgICAgIHN0YXJ0ID0gdG9GaW5pdGUoc3RhcnQpO1xuICAgICAgICBpZiAoZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBlbmQgPSBzdGFydDtcbiAgICAgICAgICBzdGFydCA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW5kID0gdG9GaW5pdGUoZW5kKTtcbiAgICAgICAgfVxuICAgICAgICBzdGVwID0gc3RlcCA9PT0gdW5kZWZpbmVkID8gKHN0YXJ0IDwgZW5kID8gMSA6IC0xKSA6IHRvRmluaXRlKHN0ZXApO1xuICAgICAgICByZXR1cm4gYmFzZVJhbmdlKHN0YXJ0LCBlbmQsIHN0ZXAsIGZyb21SaWdodCk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGEgcmVsYXRpb25hbCBvcGVyYXRpb24gb24gdHdvIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3BlcmF0b3IgVGhlIGZ1bmN0aW9uIHRvIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZWxhdGlvbmFsIG9wZXJhdGlvbiBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKG9wZXJhdG9yKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gICAgICAgIGlmICghKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyAmJiB0eXBlb2Ygb3RoZXIgPT0gJ3N0cmluZycpKSB7XG4gICAgICAgICAgdmFsdWUgPSB0b051bWJlcih2YWx1ZSk7XG4gICAgICAgICAgb3RoZXIgPSB0b051bWJlcihvdGhlcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9wZXJhdG9yKHZhbHVlLCBvdGhlcik7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHdyYXBzIGBmdW5jYCB0byBjb250aW51ZSBjdXJyeWluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHdyYXBGdW5jIFRoZSBmdW5jdGlvbiB0byBjcmVhdGUgdGhlIGBmdW5jYCB3cmFwcGVyLlxuICAgICAqIEBwYXJhbSB7Kn0gcGxhY2Vob2xkZXIgVGhlIHBsYWNlaG9sZGVyIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQgdG9cbiAgICAgKiAgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbaG9sZGVyc10gVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJnUG9zXSBUaGUgYXJndW1lbnQgcG9zaXRpb25zIG9mIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcnldIFRoZSBhcml0eSBjYXAgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHldIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVSZWN1cnJ5KGZ1bmMsIGJpdG1hc2ssIHdyYXBGdW5jLCBwbGFjZWhvbGRlciwgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMsIGFyZ1BvcywgYXJ5LCBhcml0eSkge1xuICAgICAgdmFyIGlzQ3VycnkgPSBiaXRtYXNrICYgV1JBUF9DVVJSWV9GTEFHLFxuICAgICAgICAgIG5ld0hvbGRlcnMgPSBpc0N1cnJ5ID8gaG9sZGVycyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBuZXdIb2xkZXJzUmlnaHQgPSBpc0N1cnJ5ID8gdW5kZWZpbmVkIDogaG9sZGVycyxcbiAgICAgICAgICBuZXdQYXJ0aWFscyA9IGlzQ3VycnkgPyBwYXJ0aWFscyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBuZXdQYXJ0aWFsc1JpZ2h0ID0gaXNDdXJyeSA/IHVuZGVmaW5lZCA6IHBhcnRpYWxzO1xuXG4gICAgICBiaXRtYXNrIHw9IChpc0N1cnJ5ID8gV1JBUF9QQVJUSUFMX0ZMQUcgOiBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRyk7XG4gICAgICBiaXRtYXNrICY9IH4oaXNDdXJyeSA/IFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHIDogV1JBUF9QQVJUSUFMX0ZMQUcpO1xuXG4gICAgICBpZiAoIShiaXRtYXNrICYgV1JBUF9DVVJSWV9CT1VORF9GTEFHKSkge1xuICAgICAgICBiaXRtYXNrICY9IH4oV1JBUF9CSU5EX0ZMQUcgfCBXUkFQX0JJTkRfS0VZX0ZMQUcpO1xuICAgICAgfVxuICAgICAgdmFyIG5ld0RhdGEgPSBbXG4gICAgICAgIGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIG5ld1BhcnRpYWxzLCBuZXdIb2xkZXJzLCBuZXdQYXJ0aWFsc1JpZ2h0LFxuICAgICAgICBuZXdIb2xkZXJzUmlnaHQsIGFyZ1BvcywgYXJ5LCBhcml0eVxuICAgICAgXTtcblxuICAgICAgdmFyIHJlc3VsdCA9IHdyYXBGdW5jLmFwcGx5KHVuZGVmaW5lZCwgbmV3RGF0YSk7XG4gICAgICBpZiAoaXNMYXppYWJsZShmdW5jKSkge1xuICAgICAgICBzZXREYXRhKHJlc3VsdCwgbmV3RGF0YSk7XG4gICAgICB9XG4gICAgICByZXN1bHQucGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlcjtcbiAgICAgIHJldHVybiBzZXRXcmFwVG9TdHJpbmcocmVzdWx0LCBmdW5jLCBiaXRtYXNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5yb3VuZGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2ROYW1lIFRoZSBuYW1lIG9mIHRoZSBgTWF0aGAgbWV0aG9kIHRvIHVzZSB3aGVuIHJvdW5kaW5nLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJvdW5kIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVJvdW5kKG1ldGhvZE5hbWUpIHtcbiAgICAgIHZhciBmdW5jID0gTWF0aFttZXRob2ROYW1lXTtcbiAgICAgIHJldHVybiBmdW5jdGlvbihudW1iZXIsIHByZWNpc2lvbikge1xuICAgICAgICBudW1iZXIgPSB0b051bWJlcihudW1iZXIpO1xuICAgICAgICBwcmVjaXNpb24gPSBwcmVjaXNpb24gPT0gbnVsbCA/IDAgOiBuYXRpdmVNaW4odG9JbnRlZ2VyKHByZWNpc2lvbiksIDI5Mik7XG4gICAgICAgIGlmIChwcmVjaXNpb24gJiYgbmF0aXZlSXNGaW5pdGUobnVtYmVyKSkge1xuICAgICAgICAgIC8vIFNoaWZ0IHdpdGggZXhwb25lbnRpYWwgbm90YXRpb24gdG8gYXZvaWQgZmxvYXRpbmctcG9pbnQgaXNzdWVzLlxuICAgICAgICAgIC8vIFNlZSBbTUROXShodHRwczovL21kbi5pby9yb3VuZCNFeGFtcGxlcykgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAgICB2YXIgcGFpciA9ICh0b1N0cmluZyhudW1iZXIpICsgJ2UnKS5zcGxpdCgnZScpLFxuICAgICAgICAgICAgICB2YWx1ZSA9IGZ1bmMocGFpclswXSArICdlJyArICgrcGFpclsxXSArIHByZWNpc2lvbikpO1xuXG4gICAgICAgICAgcGFpciA9ICh0b1N0cmluZyh2YWx1ZSkgKyAnZScpLnNwbGl0KCdlJyk7XG4gICAgICAgICAgcmV0dXJuICsocGFpclswXSArICdlJyArICgrcGFpclsxXSAtIHByZWNpc2lvbikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jKG51bWJlcik7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzZXQgb2JqZWN0IG9mIGB2YWx1ZXNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhZGQgdG8gdGhlIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgc2V0LlxuICAgICAqL1xuICAgIHZhciBjcmVhdGVTZXQgPSAhKFNldCAmJiAoMSAvIHNldFRvQXJyYXkobmV3IFNldChbLC0wXSkpWzFdKSA9PSBJTkZJTklUWSkgPyBub29wIDogZnVuY3Rpb24odmFsdWVzKSB7XG4gICAgICByZXR1cm4gbmV3IFNldCh2YWx1ZXMpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYF8udG9QYWlyc2Agb3IgYF8udG9QYWlyc0luYCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBhIGdpdmVuIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBwYWlycyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVUb1BhaXJzKGtleXNGdW5jKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHZhciB0YWcgPSBnZXRUYWcob2JqZWN0KTtcbiAgICAgICAgaWYgKHRhZyA9PSBtYXBUYWcpIHtcbiAgICAgICAgICByZXR1cm4gbWFwVG9BcnJheShvYmplY3QpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YWcgPT0gc2V0VGFnKSB7XG4gICAgICAgICAgcmV0dXJuIHNldFRvUGFpcnMob2JqZWN0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmFzZVRvUGFpcnMob2JqZWN0LCBrZXlzRnVuYyhvYmplY3QpKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgZWl0aGVyIGN1cnJpZXMgb3IgaW52b2tlcyBgZnVuY2Agd2l0aCBvcHRpb25hbFxuICAgICAqIGB0aGlzYCBiaW5kaW5nIGFuZCBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb258c3RyaW5nfSBmdW5jIFRoZSBmdW5jdGlvbiBvciBtZXRob2QgbmFtZSB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICAgICAqICAgIDEgLSBgXy5iaW5kYFxuICAgICAqICAgIDIgLSBgXy5iaW5kS2V5YFxuICAgICAqICAgIDQgLSBgXy5jdXJyeWAgb3IgYF8uY3VycnlSaWdodGAgb2YgYSBib3VuZCBmdW5jdGlvblxuICAgICAqICAgIDggLSBgXy5jdXJyeWBcbiAgICAgKiAgIDE2IC0gYF8uY3VycnlSaWdodGBcbiAgICAgKiAgIDMyIC0gYF8ucGFydGlhbGBcbiAgICAgKiAgIDY0IC0gYF8ucGFydGlhbFJpZ2h0YFxuICAgICAqICAxMjggLSBgXy5yZWFyZ2BcbiAgICAgKiAgMjU2IC0gYF8uYXJ5YFxuICAgICAqICA1MTIgLSBgXy5mbGlwYFxuICAgICAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIGJlIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzXSBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFthcmdQb3NdIFRoZSBhcmd1bWVudCBwb3NpdGlvbnMgb2YgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyeV0gVGhlIGFyaXR5IGNhcCBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcml0eV0gVGhlIGFyaXR5IG9mIGBmdW5jYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVdyYXAoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMsIGFyZ1BvcywgYXJ5LCBhcml0eSkge1xuICAgICAgdmFyIGlzQmluZEtleSA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfS0VZX0ZMQUc7XG4gICAgICBpZiAoIWlzQmluZEtleSAmJiB0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSBwYXJ0aWFscyA/IHBhcnRpYWxzLmxlbmd0aCA6IDA7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICBiaXRtYXNrICY9IH4oV1JBUF9QQVJUSUFMX0ZMQUcgfCBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRyk7XG4gICAgICAgIHBhcnRpYWxzID0gaG9sZGVycyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGFyeSA9IGFyeSA9PT0gdW5kZWZpbmVkID8gYXJ5IDogbmF0aXZlTWF4KHRvSW50ZWdlcihhcnkpLCAwKTtcbiAgICAgIGFyaXR5ID0gYXJpdHkgPT09IHVuZGVmaW5lZCA/IGFyaXR5IDogdG9JbnRlZ2VyKGFyaXR5KTtcbiAgICAgIGxlbmd0aCAtPSBob2xkZXJzID8gaG9sZGVycy5sZW5ndGggOiAwO1xuXG4gICAgICBpZiAoYml0bWFzayAmIFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHKSB7XG4gICAgICAgIHZhciBwYXJ0aWFsc1JpZ2h0ID0gcGFydGlhbHMsXG4gICAgICAgICAgICBob2xkZXJzUmlnaHQgPSBob2xkZXJzO1xuXG4gICAgICAgIHBhcnRpYWxzID0gaG9sZGVycyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHZhciBkYXRhID0gaXNCaW5kS2V5ID8gdW5kZWZpbmVkIDogZ2V0RGF0YShmdW5jKTtcblxuICAgICAgdmFyIG5ld0RhdGEgPSBbXG4gICAgICAgIGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzLCBwYXJ0aWFsc1JpZ2h0LCBob2xkZXJzUmlnaHQsXG4gICAgICAgIGFyZ1BvcywgYXJ5LCBhcml0eVxuICAgICAgXTtcblxuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgbWVyZ2VEYXRhKG5ld0RhdGEsIGRhdGEpO1xuICAgICAgfVxuICAgICAgZnVuYyA9IG5ld0RhdGFbMF07XG4gICAgICBiaXRtYXNrID0gbmV3RGF0YVsxXTtcbiAgICAgIHRoaXNBcmcgPSBuZXdEYXRhWzJdO1xuICAgICAgcGFydGlhbHMgPSBuZXdEYXRhWzNdO1xuICAgICAgaG9sZGVycyA9IG5ld0RhdGFbNF07XG4gICAgICBhcml0eSA9IG5ld0RhdGFbOV0gPSBuZXdEYXRhWzldID09PSB1bmRlZmluZWRcbiAgICAgICAgPyAoaXNCaW5kS2V5ID8gMCA6IGZ1bmMubGVuZ3RoKVxuICAgICAgICA6IG5hdGl2ZU1heChuZXdEYXRhWzldIC0gbGVuZ3RoLCAwKTtcblxuICAgICAgaWYgKCFhcml0eSAmJiBiaXRtYXNrICYgKFdSQVBfQ1VSUllfRkxBRyB8IFdSQVBfQ1VSUllfUklHSFRfRkxBRykpIHtcbiAgICAgICAgYml0bWFzayAmPSB+KFdSQVBfQ1VSUllfRkxBRyB8IFdSQVBfQ1VSUllfUklHSFRfRkxBRyk7XG4gICAgICB9XG4gICAgICBpZiAoIWJpdG1hc2sgfHwgYml0bWFzayA9PSBXUkFQX0JJTkRfRkxBRykge1xuICAgICAgICB2YXIgcmVzdWx0ID0gY3JlYXRlQmluZChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnKTtcbiAgICAgIH0gZWxzZSBpZiAoYml0bWFzayA9PSBXUkFQX0NVUlJZX0ZMQUcgfHwgYml0bWFzayA9PSBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcpIHtcbiAgICAgICAgcmVzdWx0ID0gY3JlYXRlQ3VycnkoZnVuYywgYml0bWFzaywgYXJpdHkpO1xuICAgICAgfSBlbHNlIGlmICgoYml0bWFzayA9PSBXUkFQX1BBUlRJQUxfRkxBRyB8fCBiaXRtYXNrID09IChXUkFQX0JJTkRfRkxBRyB8IFdSQVBfUEFSVElBTF9GTEFHKSkgJiYgIWhvbGRlcnMubGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdCA9IGNyZWF0ZVBhcnRpYWwoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gY3JlYXRlSHlicmlkLmFwcGx5KHVuZGVmaW5lZCwgbmV3RGF0YSk7XG4gICAgICB9XG4gICAgICB2YXIgc2V0dGVyID0gZGF0YSA/IGJhc2VTZXREYXRhIDogc2V0RGF0YTtcbiAgICAgIHJldHVybiBzZXRXcmFwVG9TdHJpbmcoc2V0dGVyKHJlc3VsdCwgbmV3RGF0YSksIGZ1bmMsIGJpdG1hc2spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgYnkgYF8uZGVmYXVsdHNgIHRvIGN1c3RvbWl6ZSBpdHMgYF8uYXNzaWduSW5gIHVzZSB0byBhc3NpZ24gcHJvcGVydGllc1xuICAgICAqIG9mIHNvdXJjZSBvYmplY3RzIHRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QgZm9yIGFsbCBkZXN0aW5hdGlvbiBwcm9wZXJ0aWVzXG4gICAgICogdGhhdCByZXNvbHZlIHRvIGB1bmRlZmluZWRgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IG9ialZhbHVlIFRoZSBkZXN0aW5hdGlvbiB2YWx1ZS5cbiAgICAgKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSBzb3VyY2UgdmFsdWUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgcGFyZW50IG9iamVjdCBvZiBgb2JqVmFsdWVgLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3VzdG9tRGVmYXVsdHNBc3NpZ25JbihvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gICAgICBpZiAob2JqVmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgIChlcShvYmpWYWx1ZSwgb2JqZWN0UHJvdG9ba2V5XSkgJiYgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkge1xuICAgICAgICByZXR1cm4gc3JjVmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqVmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlZCBieSBgXy5kZWZhdWx0c0RlZXBgIHRvIGN1c3RvbWl6ZSBpdHMgYF8ubWVyZ2VgIHVzZSB0byBtZXJnZSBzb3VyY2VcbiAgICAgKiBvYmplY3RzIGludG8gZGVzdGluYXRpb24gb2JqZWN0cyB0aGF0IGFyZSBwYXNzZWQgdGhydS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSBvYmpWYWx1ZSBUaGUgZGVzdGluYXRpb24gdmFsdWUuXG4gICAgICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgc291cmNlIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gbWVyZ2UuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgcGFyZW50IG9iamVjdCBvZiBgb2JqVmFsdWVgLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHBhcmVudCBvYmplY3Qgb2YgYHNyY1ZhbHVlYC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICAgICAqICBjb3VudGVycGFydHMuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjdXN0b21EZWZhdWx0c01lcmdlKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spIHtcbiAgICAgIGlmIChpc09iamVjdChvYmpWYWx1ZSkgJiYgaXNPYmplY3Qoc3JjVmFsdWUpKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IG1lcmdlIG9iamVjdHMgYW5kIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBzdGFjay5zZXQoc3JjVmFsdWUsIG9ialZhbHVlKTtcbiAgICAgICAgYmFzZU1lcmdlKG9ialZhbHVlLCBzcmNWYWx1ZSwgdW5kZWZpbmVkLCBjdXN0b21EZWZhdWx0c01lcmdlLCBzdGFjayk7XG4gICAgICAgIHN0YWNrWydkZWxldGUnXShzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqVmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlZCBieSBgXy5vbWl0YCB0byBjdXN0b21pemUgaXRzIGBfLmNsb25lRGVlcGAgdXNlIHRvIG9ubHkgY2xvbmUgcGxhaW5cbiAgICAgKiBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdW5jbG9uZWQgdmFsdWUgb3IgYHVuZGVmaW5lZGAgdG8gZGVmZXIgY2xvbmluZyB0byBgXy5jbG9uZURlZXBgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGN1c3RvbU9taXRDbG9uZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzUGxhaW5PYmplY3QodmFsdWUpID8gdW5kZWZpbmVkIDogdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBhcnJheXMgd2l0aCBzdXBwb3J0IGZvclxuICAgICAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtBcnJheX0gb3RoZXIgVGhlIG90aGVyIGFycmF5IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgYXJyYXlgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcnJheXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlcXVhbEFycmF5cyhhcnJheSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgICAgIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICAgICAgYXJyTGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIG90aExlbmd0aCA9IG90aGVyLmxlbmd0aDtcblxuICAgICAgaWYgKGFyckxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIShpc1BhcnRpYWwgJiYgb3RoTGVuZ3RoID4gYXJyTGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBDaGVjayB0aGF0IGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgdmFyIGFyclN0YWNrZWQgPSBzdGFjay5nZXQoYXJyYXkpO1xuICAgICAgdmFyIG90aFN0YWNrZWQgPSBzdGFjay5nZXQob3RoZXIpO1xuICAgICAgaWYgKGFyclN0YWNrZWQgJiYgb3RoU3RhY2tlZCkge1xuICAgICAgICByZXR1cm4gYXJyU3RhY2tlZCA9PSBvdGhlciAmJiBvdGhTdGFja2VkID09IGFycmF5O1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgcmVzdWx0ID0gdHJ1ZSxcbiAgICAgICAgICBzZWVuID0gKGJpdG1hc2sgJiBDT01QQVJFX1VOT1JERVJFRF9GTEFHKSA/IG5ldyBTZXRDYWNoZSA6IHVuZGVmaW5lZDtcblxuICAgICAgc3RhY2suc2V0KGFycmF5LCBvdGhlcik7XG4gICAgICBzdGFjay5zZXQob3RoZXIsIGFycmF5KTtcblxuICAgICAgLy8gSWdub3JlIG5vbi1pbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgd2hpbGUgKCsraW5kZXggPCBhcnJMZW5ndGgpIHtcbiAgICAgICAgdmFyIGFyclZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltpbmRleF07XG5cbiAgICAgICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgICAgID8gY3VzdG9taXplcihvdGhWYWx1ZSwgYXJyVmFsdWUsIGluZGV4LCBvdGhlciwgYXJyYXksIHN0YWNrKVxuICAgICAgICAgICAgOiBjdXN0b21pemVyKGFyclZhbHVlLCBvdGhWYWx1ZSwgaW5kZXgsIGFycmF5LCBvdGhlciwgc3RhY2spO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb21wYXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKGNvbXBhcmVkKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgaWYgKHNlZW4pIHtcbiAgICAgICAgICBpZiAoIWFycmF5U29tZShvdGhlciwgZnVuY3Rpb24ob3RoVmFsdWUsIG90aEluZGV4KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFjYWNoZUhhcyhzZWVuLCBvdGhJbmRleCkgJiZcbiAgICAgICAgICAgICAgICAgICAgKGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gc2Vlbi5wdXNoKG90aEluZGV4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghKFxuICAgICAgICAgICAgICBhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc3RhY2tbJ2RlbGV0ZSddKGFycmF5KTtcbiAgICAgIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgY29tcGFyaW5nIG9iamVjdHMgb2ZcbiAgICAgKiB0aGUgc2FtZSBgdG9TdHJpbmdUYWdgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjb21wYXJpbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICAgICAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIG9yIGBTdHJpbmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdHMgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCB0YWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgICAgIHN3aXRjaCAodGFnKSB7XG4gICAgICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICAgICAgaWYgKChvYmplY3QuYnl0ZUxlbmd0aCAhPSBvdGhlci5ieXRlTGVuZ3RoKSB8fFxuICAgICAgICAgICAgICAob2JqZWN0LmJ5dGVPZmZzZXQgIT0gb3RoZXIuYnl0ZU9mZnNldCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb2JqZWN0ID0gb2JqZWN0LmJ1ZmZlcjtcbiAgICAgICAgICBvdGhlciA9IG90aGVyLmJ1ZmZlcjtcblxuICAgICAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAgICAgIWVxdWFsRnVuYyhuZXcgVWludDhBcnJheShvYmplY3QpLCBuZXcgVWludDhBcnJheShvdGhlcikpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgICAgIGNhc2UgYm9vbFRhZzpcbiAgICAgICAgY2FzZSBkYXRlVGFnOlxuICAgICAgICBjYXNlIG51bWJlclRhZzpcbiAgICAgICAgICAvLyBDb2VyY2UgYm9vbGVhbnMgdG8gYDFgIG9yIGAwYCBhbmQgZGF0ZXMgdG8gbWlsbGlzZWNvbmRzLlxuICAgICAgICAgIC8vIEludmFsaWQgZGF0ZXMgYXJlIGNvZXJjZWQgdG8gYE5hTmAuXG4gICAgICAgICAgcmV0dXJuIGVxKCtvYmplY3QsICtvdGhlcik7XG5cbiAgICAgICAgY2FzZSBlcnJvclRhZzpcbiAgICAgICAgICByZXR1cm4gb2JqZWN0Lm5hbWUgPT0gb3RoZXIubmFtZSAmJiBvYmplY3QubWVzc2FnZSA9PSBvdGhlci5tZXNzYWdlO1xuXG4gICAgICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgICAgICBjYXNlIHN0cmluZ1RhZzpcbiAgICAgICAgICAvLyBDb2VyY2UgcmVnZXhlcyB0byBzdHJpbmdzIGFuZCB0cmVhdCBzdHJpbmdzLCBwcmltaXRpdmVzIGFuZCBvYmplY3RzLFxuICAgICAgICAgIC8vIGFzIGVxdWFsLiBTZWUgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXJlZ2V4cC5wcm90b3R5cGUudG9zdHJpbmdcbiAgICAgICAgICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgICAgIHJldHVybiBvYmplY3QgPT0gKG90aGVyICsgJycpO1xuXG4gICAgICAgIGNhc2UgbWFwVGFnOlxuICAgICAgICAgIHZhciBjb252ZXJ0ID0gbWFwVG9BcnJheTtcblxuICAgICAgICBjYXNlIHNldFRhZzpcbiAgICAgICAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHO1xuICAgICAgICAgIGNvbnZlcnQgfHwgKGNvbnZlcnQgPSBzZXRUb0FycmF5KTtcblxuICAgICAgICAgIGlmIChvYmplY3Quc2l6ZSAhPSBvdGhlci5zaXplICYmICFpc1BhcnRpYWwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQXNzdW1lIGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgICAgIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KG9iamVjdCk7XG4gICAgICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGFja2VkID09IG90aGVyO1xuICAgICAgICAgIH1cbiAgICAgICAgICBiaXRtYXNrIHw9IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUc7XG5cbiAgICAgICAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgICBzdGFjay5zZXQob2JqZWN0LCBvdGhlcik7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IGVxdWFsQXJyYXlzKGNvbnZlcnQob2JqZWN0KSwgY29udmVydChvdGhlciksIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICAgICAgICAgIHN0YWNrWydkZWxldGUnXShvYmplY3QpO1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG5cbiAgICAgICAgY2FzZSBzeW1ib2xUYWc6XG4gICAgICAgICAgaWYgKHN5bWJvbFZhbHVlT2YpIHtcbiAgICAgICAgICAgIHJldHVybiBzeW1ib2xWYWx1ZU9mLmNhbGwob2JqZWN0KSA9PSBzeW1ib2xWYWx1ZU9mLmNhbGwob3RoZXIpO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIG9iamVjdHMgd2l0aCBzdXBwb3J0IGZvclxuICAgICAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXF1YWxPYmplY3RzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgICAgIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICAgICAgb2JqUHJvcHMgPSBnZXRBbGxLZXlzKG9iamVjdCksXG4gICAgICAgICAgb2JqTGVuZ3RoID0gb2JqUHJvcHMubGVuZ3RoLFxuICAgICAgICAgIG90aFByb3BzID0gZ2V0QWxsS2V5cyhvdGhlciksXG4gICAgICAgICAgb3RoTGVuZ3RoID0gb3RoUHJvcHMubGVuZ3RoO1xuXG4gICAgICBpZiAob2JqTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhaXNQYXJ0aWFsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IG9iakxlbmd0aDtcbiAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgIHZhciBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgICAgIGlmICghKGlzUGFydGlhbCA/IGtleSBpbiBvdGhlciA6IGhhc093blByb3BlcnR5LmNhbGwob3RoZXIsIGtleSkpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBDaGVjayB0aGF0IGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgdmFyIG9ialN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgICAgIHZhciBvdGhTdGFja2VkID0gc3RhY2suZ2V0KG90aGVyKTtcbiAgICAgIGlmIChvYmpTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIG9ialN0YWNrZWQgPT0gb3RoZXIgJiYgb3RoU3RhY2tlZCA9PSBvYmplY3Q7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgICAgIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgICAgIHN0YWNrLnNldChvdGhlciwgb2JqZWN0KTtcblxuICAgICAgdmFyIHNraXBDdG9yID0gaXNQYXJ0aWFsO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBvYmpMZW5ndGgpIHtcbiAgICAgICAga2V5ID0gb2JqUHJvcHNbaW5kZXhdO1xuICAgICAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgICAgIG90aFZhbHVlID0gb3RoZXJba2V5XTtcblxuICAgICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBvYmpWYWx1ZSwga2V5LCBvdGhlciwgb2JqZWN0LCBzdGFjaylcbiAgICAgICAgICAgIDogY3VzdG9taXplcihvYmpWYWx1ZSwgb3RoVmFsdWUsIGtleSwgb2JqZWN0LCBvdGhlciwgc3RhY2spO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBpZiAoIShjb21wYXJlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgID8gKG9ialZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMob2JqVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpXG4gICAgICAgICAgICAgIDogY29tcGFyZWRcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBza2lwQ3RvciB8fCAoc2tpcEN0b3IgPSBrZXkgPT0gJ2NvbnN0cnVjdG9yJyk7XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0ICYmICFza2lwQ3Rvcikge1xuICAgICAgICB2YXIgb2JqQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcixcbiAgICAgICAgICAgIG90aEN0b3IgPSBvdGhlci5jb25zdHJ1Y3RvcjtcblxuICAgICAgICAvLyBOb24gYE9iamVjdGAgb2JqZWN0IGluc3RhbmNlcyB3aXRoIGRpZmZlcmVudCBjb25zdHJ1Y3RvcnMgYXJlIG5vdCBlcXVhbC5cbiAgICAgICAgaWYgKG9iakN0b3IgIT0gb3RoQ3RvciAmJlxuICAgICAgICAgICAgKCdjb25zdHJ1Y3RvcicgaW4gb2JqZWN0ICYmICdjb25zdHJ1Y3RvcicgaW4gb3RoZXIpICYmXG4gICAgICAgICAgICAhKHR5cGVvZiBvYmpDdG9yID09ICdmdW5jdGlvbicgJiYgb2JqQ3RvciBpbnN0YW5jZW9mIG9iakN0b3IgJiZcbiAgICAgICAgICAgICAgdHlwZW9mIG90aEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvdGhDdG9yIGluc3RhbmNlb2Ygb3RoQ3RvcikpIHtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gICAgICBzdGFja1snZGVsZXRlJ10ob3RoZXIpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCBmbGF0dGVucyB0aGUgcmVzdCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0UmVzdChmdW5jKSB7XG4gICAgICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgdW5kZWZpbmVkLCBmbGF0dGVuKSwgZnVuYyArICcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRBbGxLZXlzKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5cywgZ2V0U3ltYm9scyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICAgICAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldEFsbEtleXNJbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNJbiwgZ2V0U3ltYm9sc0luKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIG1ldGFkYXRhIGZvciBgZnVuY2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtZXRhZGF0YSBmb3IgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBnZXREYXRhID0gIW1ldGFNYXAgPyBub29wIDogZnVuY3Rpb24oZnVuYykge1xuICAgICAgcmV0dXJuIG1ldGFNYXAuZ2V0KGZ1bmMpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBuYW1lIG9mIGBmdW5jYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZnVuY3Rpb24gbmFtZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRGdW5jTmFtZShmdW5jKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gKGZ1bmMubmFtZSArICcnKSxcbiAgICAgICAgICBhcnJheSA9IHJlYWxOYW1lc1tyZXN1bHRdLFxuICAgICAgICAgIGxlbmd0aCA9IGhhc093blByb3BlcnR5LmNhbGwocmVhbE5hbWVzLCByZXN1bHQpID8gYXJyYXkubGVuZ3RoIDogMDtcblxuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIHZhciBkYXRhID0gYXJyYXlbbGVuZ3RoXSxcbiAgICAgICAgICAgIG90aGVyRnVuYyA9IGRhdGEuZnVuYztcbiAgICAgICAgaWYgKG90aGVyRnVuYyA9PSBudWxsIHx8IG90aGVyRnVuYyA9PSBmdW5jKSB7XG4gICAgICAgICAgcmV0dXJuIGRhdGEubmFtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBhcmd1bWVudCBwbGFjZWhvbGRlciB2YWx1ZSBmb3IgYGZ1bmNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwbGFjZWhvbGRlciB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRIb2xkZXIoZnVuYykge1xuICAgICAgdmFyIG9iamVjdCA9IGhhc093blByb3BlcnR5LmNhbGwobG9kYXNoLCAncGxhY2Vob2xkZXInKSA/IGxvZGFzaCA6IGZ1bmM7XG4gICAgICByZXR1cm4gb2JqZWN0LnBsYWNlaG9sZGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGFwcHJvcHJpYXRlIFwiaXRlcmF0ZWVcIiBmdW5jdGlvbi4gSWYgYF8uaXRlcmF0ZWVgIGlzIGN1c3RvbWl6ZWQsXG4gICAgICogdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBjdXN0b20gbWV0aG9kLCBvdGhlcndpc2UgaXQgcmV0dXJucyBgYmFzZUl0ZXJhdGVlYC5cbiAgICAgKiBJZiBhcmd1bWVudHMgYXJlIHByb3ZpZGVkLCB0aGUgY2hvc2VuIGZ1bmN0aW9uIGlzIGludm9rZWQgd2l0aCB0aGVtIGFuZFxuICAgICAqIGl0cyByZXN1bHQgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gW3ZhbHVlXSBUaGUgdmFsdWUgdG8gY29udmVydCB0byBhbiBpdGVyYXRlZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5XSBUaGUgYXJpdHkgb2YgdGhlIGNyZWF0ZWQgaXRlcmF0ZWUuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBjaG9zZW4gZnVuY3Rpb24gb3IgaXRzIHJlc3VsdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRJdGVyYXRlZSgpIHtcbiAgICAgIHZhciByZXN1bHQgPSBsb2Rhc2guaXRlcmF0ZWUgfHwgaXRlcmF0ZWU7XG4gICAgICByZXN1bHQgPSByZXN1bHQgPT09IGl0ZXJhdGVlID8gYmFzZUl0ZXJhdGVlIDogcmVzdWx0O1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyByZXN1bHQoYXJndW1lbnRzWzBdLCBhcmd1bWVudHNbMV0pIDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGRhdGEgZm9yIGBtYXBgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgcmVmZXJlbmNlIGtleS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWFwIGRhdGEuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0TWFwRGF0YShtYXAsIGtleSkge1xuICAgICAgdmFyIGRhdGEgPSBtYXAuX19kYXRhX187XG4gICAgICByZXR1cm4gaXNLZXlhYmxlKGtleSlcbiAgICAgICAgPyBkYXRhW3R5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyAnc3RyaW5nJyA6ICdoYXNoJ11cbiAgICAgICAgOiBkYXRhLm1hcDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbWF0Y2ggZGF0YSBvZiBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRNYXRjaERhdGEob2JqZWN0KSB7XG4gICAgICB2YXIgcmVzdWx0ID0ga2V5cyhvYmplY3QpLFxuICAgICAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIga2V5ID0gcmVzdWx0W2xlbmd0aF0sXG4gICAgICAgICAgICB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgICAgIHJlc3VsdFtsZW5ndGhdID0gW2tleSwgdmFsdWUsIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBuYXRpdmUgZnVuY3Rpb24gYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICAgICAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICAgICAgcmV0dXJuIGJhc2VJc05hdGl2ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VHZXRUYWdgIHdoaWNoIGlnbm9yZXMgYFN5bWJvbC50b1N0cmluZ1RhZ2AgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByYXcgYHRvU3RyaW5nVGFnYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRSYXdUYWcodmFsdWUpIHtcbiAgICAgIHZhciBpc093biA9IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIHN5bVRvU3RyaW5nVGFnKSxcbiAgICAgICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHt9XG5cbiAgICAgIHZhciByZXN1bHQgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICAgIGlmICh1bm1hc2tlZCkge1xuICAgICAgICBpZiAoaXNPd24pIHtcbiAgICAgICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB0YWc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBzeW1ib2xzLlxuICAgICAqL1xuICAgIHZhciBnZXRTeW1ib2xzID0gIW5hdGl2ZUdldFN5bWJvbHMgPyBzdHViQXJyYXkgOiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICAgIHJldHVybiBhcnJheUZpbHRlcihuYXRpdmVHZXRTeW1ib2xzKG9iamVjdCksIGZ1bmN0aW9uKHN5bWJvbCkge1xuICAgICAgICByZXR1cm4gcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChvYmplY3QsIHN5bWJvbCk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBzeW1ib2xzLlxuICAgICAqL1xuICAgIHZhciBnZXRTeW1ib2xzSW4gPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgd2hpbGUgKG9iamVjdCkge1xuICAgICAgICBhcnJheVB1c2gocmVzdWx0LCBnZXRTeW1ib2xzKG9iamVjdCkpO1xuICAgICAgICBvYmplY3QgPSBnZXRQcm90b3R5cGUob2JqZWN0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGB0b1N0cmluZ1RhZ2Agb2YgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAgICAgKi9cbiAgICB2YXIgZ2V0VGFnID0gYmFzZUdldFRhZztcblxuICAgIC8vIEZhbGxiYWNrIGZvciBkYXRhIHZpZXdzLCBtYXBzLCBzZXRzLCBhbmQgd2VhayBtYXBzIGluIElFIDExIGFuZCBwcm9taXNlcyBpbiBOb2RlLmpzIDwgNi5cbiAgICBpZiAoKERhdGFWaWV3ICYmIGdldFRhZyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEpKSkgIT0gZGF0YVZpZXdUYWcpIHx8XG4gICAgICAgIChNYXAgJiYgZ2V0VGFnKG5ldyBNYXApICE9IG1hcFRhZykgfHxcbiAgICAgICAgKFByb21pc2UgJiYgZ2V0VGFnKFByb21pc2UucmVzb2x2ZSgpKSAhPSBwcm9taXNlVGFnKSB8fFxuICAgICAgICAoU2V0ICYmIGdldFRhZyhuZXcgU2V0KSAhPSBzZXRUYWcpIHx8XG4gICAgICAgIChXZWFrTWFwICYmIGdldFRhZyhuZXcgV2Vha01hcCkgIT0gd2Vha01hcFRhZykpIHtcbiAgICAgIGdldFRhZyA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBiYXNlR2V0VGFnKHZhbHVlKSxcbiAgICAgICAgICAgIEN0b3IgPSByZXN1bHQgPT0gb2JqZWN0VGFnID8gdmFsdWUuY29uc3RydWN0b3IgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjdG9yU3RyaW5nID0gQ3RvciA/IHRvU291cmNlKEN0b3IpIDogJyc7XG5cbiAgICAgICAgaWYgKGN0b3JTdHJpbmcpIHtcbiAgICAgICAgICBzd2l0Y2ggKGN0b3JTdHJpbmcpIHtcbiAgICAgICAgICAgIGNhc2UgZGF0YVZpZXdDdG9yU3RyaW5nOiByZXR1cm4gZGF0YVZpZXdUYWc7XG4gICAgICAgICAgICBjYXNlIG1hcEN0b3JTdHJpbmc6IHJldHVybiBtYXBUYWc7XG4gICAgICAgICAgICBjYXNlIHByb21pc2VDdG9yU3RyaW5nOiByZXR1cm4gcHJvbWlzZVRhZztcbiAgICAgICAgICAgIGNhc2Ugc2V0Q3RvclN0cmluZzogcmV0dXJuIHNldFRhZztcbiAgICAgICAgICAgIGNhc2Ugd2Vha01hcEN0b3JTdHJpbmc6IHJldHVybiB3ZWFrTWFwVGFnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB2aWV3LCBhcHBseWluZyBhbnkgYHRyYW5zZm9ybXNgIHRvIHRoZSBgc3RhcnRgIGFuZCBgZW5kYCBwb3NpdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgb2YgdGhlIHZpZXcuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSB2aWV3LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHRyYW5zZm9ybXMgVGhlIHRyYW5zZm9ybWF0aW9ucyB0byBhcHBseSB0byB0aGUgdmlldy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBgc3RhcnRgIGFuZCBgZW5kYFxuICAgICAqICBwb3NpdGlvbnMgb2YgdGhlIHZpZXcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0VmlldyhzdGFydCwgZW5kLCB0cmFuc2Zvcm1zKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSB0cmFuc2Zvcm1zLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGRhdGEgPSB0cmFuc2Zvcm1zW2luZGV4XSxcbiAgICAgICAgICAgIHNpemUgPSBkYXRhLnNpemU7XG5cbiAgICAgICAgc3dpdGNoIChkYXRhLnR5cGUpIHtcbiAgICAgICAgICBjYXNlICdkcm9wJzogICAgICBzdGFydCArPSBzaXplOyBicmVhaztcbiAgICAgICAgICBjYXNlICdkcm9wUmlnaHQnOiBlbmQgLT0gc2l6ZTsgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndGFrZSc6ICAgICAgZW5kID0gbmF0aXZlTWluKGVuZCwgc3RhcnQgKyBzaXplKTsgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndGFrZVJpZ2h0Jzogc3RhcnQgPSBuYXRpdmVNYXgoc3RhcnQsIGVuZCAtIHNpemUpOyBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHsgJ3N0YXJ0Jzogc3RhcnQsICdlbmQnOiBlbmQgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHRyYWN0cyB3cmFwcGVyIGRldGFpbHMgZnJvbSB0aGUgYHNvdXJjZWAgYm9keSBjb21tZW50LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlIFRoZSBzb3VyY2UgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHdyYXBwZXIgZGV0YWlscy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRXcmFwRGV0YWlscyhzb3VyY2UpIHtcbiAgICAgIHZhciBtYXRjaCA9IHNvdXJjZS5tYXRjaChyZVdyYXBEZXRhaWxzKTtcbiAgICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdLnNwbGl0KHJlU3BsaXREZXRhaWxzKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcGF0aGAgZXhpc3RzIG9uIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaGFzRnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2sgcHJvcGVydGllcy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBoYXNGdW5jKSB7XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSk7XG4gICAgICAgIGlmICghKHJlc3VsdCA9IG9iamVjdCAhPSBudWxsICYmIGhhc0Z1bmMob2JqZWN0LCBrZXkpKSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdCA9IG9iamVjdFtrZXldO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdCB8fCArK2luZGV4ICE9IGxlbmd0aCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgbGVuZ3RoID0gb2JqZWN0ID09IG51bGwgPyAwIDogb2JqZWN0Lmxlbmd0aDtcbiAgICAgIHJldHVybiAhIWxlbmd0aCAmJiBpc0xlbmd0aChsZW5ndGgpICYmIGlzSW5kZXgoa2V5LCBsZW5ndGgpICYmXG4gICAgICAgIChpc0FycmF5KG9iamVjdCkgfHwgaXNBcmd1bWVudHMob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgYW4gYXJyYXkgY2xvbmUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluaXRDbG9uZUFycmF5KGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IG5ldyBhcnJheS5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gICAgICAvLyBBZGQgcHJvcGVydGllcyBhc3NpZ25lZCBieSBgUmVnRXhwI2V4ZWNgLlxuICAgICAgaWYgKGxlbmd0aCAmJiB0eXBlb2YgYXJyYXlbMF0gPT0gJ3N0cmluZycgJiYgaGFzT3duUHJvcGVydHkuY2FsbChhcnJheSwgJ2luZGV4JykpIHtcbiAgICAgICAgcmVzdWx0LmluZGV4ID0gYXJyYXkuaW5kZXg7XG4gICAgICAgIHJlc3VsdC5pbnB1dCA9IGFycmF5LmlucHV0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbml0Q2xvbmVPYmplY3Qob2JqZWN0KSB7XG4gICAgICByZXR1cm4gKHR5cGVvZiBvYmplY3QuY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNQcm90b3R5cGUob2JqZWN0KSlcbiAgICAgICAgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKVxuICAgICAgICA6IHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZSBiYXNlZCBvbiBpdHMgYHRvU3RyaW5nVGFnYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY2xvbmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mXG4gICAgICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBNYXBgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIGBTZXRgLCBvciBgU3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdCB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluaXRDbG9uZUJ5VGFnKG9iamVjdCwgdGFnLCBpc0RlZXApIHtcbiAgICAgIHZhciBDdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yO1xuICAgICAgc3dpdGNoICh0YWcpIHtcbiAgICAgICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgICAgICByZXR1cm4gY2xvbmVBcnJheUJ1ZmZlcihvYmplY3QpO1xuXG4gICAgICAgIGNhc2UgYm9vbFRhZzpcbiAgICAgICAgY2FzZSBkYXRlVGFnOlxuICAgICAgICAgIHJldHVybiBuZXcgQ3Rvcigrb2JqZWN0KTtcblxuICAgICAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZURhdGFWaWV3KG9iamVjdCwgaXNEZWVwKTtcblxuICAgICAgICBjYXNlIGZsb2F0MzJUYWc6IGNhc2UgZmxvYXQ2NFRhZzpcbiAgICAgICAgY2FzZSBpbnQ4VGFnOiBjYXNlIGludDE2VGFnOiBjYXNlIGludDMyVGFnOlxuICAgICAgICBjYXNlIHVpbnQ4VGFnOiBjYXNlIHVpbnQ4Q2xhbXBlZFRhZzogY2FzZSB1aW50MTZUYWc6IGNhc2UgdWludDMyVGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZVR5cGVkQXJyYXkob2JqZWN0LCBpc0RlZXApO1xuXG4gICAgICAgIGNhc2UgbWFwVGFnOlxuICAgICAgICAgIHJldHVybiBuZXcgQ3RvcjtcblxuICAgICAgICBjYXNlIG51bWJlclRhZzpcbiAgICAgICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBDdG9yKG9iamVjdCk7XG5cbiAgICAgICAgY2FzZSByZWdleHBUYWc6XG4gICAgICAgICAgcmV0dXJuIGNsb25lUmVnRXhwKG9iamVjdCk7XG5cbiAgICAgICAgY2FzZSBzZXRUYWc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBDdG9yO1xuXG4gICAgICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZVN5bWJvbChvYmplY3QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluc2VydHMgd3JhcHBlciBgZGV0YWlsc2AgaW4gYSBjb21tZW50IGF0IHRoZSB0b3Agb2YgdGhlIGBzb3VyY2VgIGJvZHkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2UgVGhlIHNvdXJjZSB0byBtb2RpZnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBkZXRhaWxzIFRoZSBkZXRhaWxzIHRvIGluc2VydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBtb2RpZmllZCBzb3VyY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5zZXJ0V3JhcERldGFpbHMoc291cmNlLCBkZXRhaWxzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gZGV0YWlscy5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgICAgfVxuICAgICAgdmFyIGxhc3RJbmRleCA9IGxlbmd0aCAtIDE7XG4gICAgICBkZXRhaWxzW2xhc3RJbmRleF0gPSAobGVuZ3RoID4gMSA/ICcmICcgOiAnJykgKyBkZXRhaWxzW2xhc3RJbmRleF07XG4gICAgICBkZXRhaWxzID0gZGV0YWlscy5qb2luKGxlbmd0aCA+IDIgPyAnLCAnIDogJyAnKTtcbiAgICAgIHJldHVybiBzb3VyY2UucmVwbGFjZShyZVdyYXBDb21tZW50LCAne1xcbi8qIFt3cmFwcGVkIHdpdGggJyArIGRldGFpbHMgKyAnXSAqL1xcbicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgZmxhdHRlbmFibGUgYGFyZ3VtZW50c2Agb2JqZWN0IG9yIGFycmF5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmbGF0dGVuYWJsZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRmxhdHRlbmFibGUodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc0FycmF5KHZhbHVlKSB8fCBpc0FyZ3VtZW50cyh2YWx1ZSkgfHxcbiAgICAgICAgISEoc3ByZWFkYWJsZVN5bWJvbCAmJiB2YWx1ZSAmJiB2YWx1ZVtzcHJlYWRhYmxlU3ltYm9sXSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD1NQVhfU0FGRV9JTlRFR0VSXSBUaGUgdXBwZXIgYm91bmRzIG9mIGEgdmFsaWQgaW5kZXguXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBpbmRleCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzSW5kZXgodmFsdWUsIGxlbmd0aCkge1xuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG5cbiAgICAgIHJldHVybiAhIWxlbmd0aCAmJlxuICAgICAgICAodHlwZSA9PSAnbnVtYmVyJyB8fFxuICAgICAgICAgICh0eXBlICE9ICdzeW1ib2wnICYmIHJlSXNVaW50LnRlc3QodmFsdWUpKSkgJiZcbiAgICAgICAgICAgICh2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDwgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGdpdmVuIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgdmFsdWUgYXJndW1lbnQuXG4gICAgICogQHBhcmFtIHsqfSBpbmRleCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIGluZGV4IG9yIGtleSBhcmd1bWVudC5cbiAgICAgKiBAcGFyYW0geyp9IG9iamVjdCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIG9iamVjdCBhcmd1bWVudC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNJdGVyYXRlZUNhbGwodmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgICAgIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgdHlwZSA9IHR5cGVvZiBpbmRleDtcbiAgICAgIGlmICh0eXBlID09ICdudW1iZXInXG4gICAgICAgICAgICA/IChpc0FycmF5TGlrZShvYmplY3QpICYmIGlzSW5kZXgoaW5kZXgsIG9iamVjdC5sZW5ndGgpKVxuICAgICAgICAgICAgOiAodHlwZSA9PSAnc3RyaW5nJyAmJiBpbmRleCBpbiBvYmplY3QpXG4gICAgICAgICAgKSB7XG4gICAgICAgIHJldHVybiBlcShvYmplY3RbaW5kZXhdLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwcm9wZXJ0eSBuYW1lIGFuZCBub3QgYSBwcm9wZXJ0eSBwYXRoLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzS2V5KHZhbHVlLCBvYmplY3QpIHtcbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICAgIGlmICh0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicgfHxcbiAgICAgICAgICB2YWx1ZSA9PSBudWxsIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZUlzUGxhaW5Qcm9wLnRlc3QodmFsdWUpIHx8ICFyZUlzRGVlcFByb3AudGVzdCh2YWx1ZSkgfHxcbiAgICAgICAgKG9iamVjdCAhPSBudWxsICYmIHZhbHVlIGluIE9iamVjdChvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3IgdXNlIGFzIHVuaXF1ZSBvYmplY3Qga2V5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzS2V5YWJsZSh2YWx1ZSkge1xuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICByZXR1cm4gKHR5cGUgPT0gJ3N0cmluZycgfHwgdHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nKVxuICAgICAgICA/ICh2YWx1ZSAhPT0gJ19fcHJvdG9fXycpXG4gICAgICAgIDogKHZhbHVlID09PSBudWxsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYGZ1bmNgIGhhcyBhIGxhenkgY291bnRlcnBhcnQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaGFzIGEgbGF6eSBjb3VudGVycGFydCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTGF6aWFibGUoZnVuYykge1xuICAgICAgdmFyIGZ1bmNOYW1lID0gZ2V0RnVuY05hbWUoZnVuYyksXG4gICAgICAgICAgb3RoZXIgPSBsb2Rhc2hbZnVuY05hbWVdO1xuXG4gICAgICBpZiAodHlwZW9mIG90aGVyICE9ICdmdW5jdGlvbicgfHwgIShmdW5jTmFtZSBpbiBMYXp5V3JhcHBlci5wcm90b3R5cGUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChmdW5jID09PSBvdGhlcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHZhciBkYXRhID0gZ2V0RGF0YShvdGhlcik7XG4gICAgICByZXR1cm4gISFkYXRhICYmIGZ1bmMgPT09IGRhdGFbMF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgaXRzIHNvdXJjZSBtYXNrZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2VkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNNYXNrZWQoZnVuYykge1xuICAgICAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYGZ1bmNgIGlzIGNhcGFibGUgb2YgYmVpbmcgbWFza2VkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGlzIG1hc2thYmxlLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgdmFyIGlzTWFza2FibGUgPSBjb3JlSnNEYXRhID8gaXNGdW5jdGlvbiA6IHN0dWJGYWxzZTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIHByb3RvdHlwZSBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvdG90eXBlLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNQcm90b3R5cGUodmFsdWUpIHtcbiAgICAgIHZhciBDdG9yID0gdmFsdWUgJiYgdmFsdWUuY29uc3RydWN0b3IsXG4gICAgICAgICAgcHJvdG8gPSAodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG87XG5cbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gcHJvdG87XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaWYgc3VpdGFibGUgZm9yIHN0cmljdFxuICAgICAqICBlcXVhbGl0eSBjb21wYXJpc29ucywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSAmJiAhaXNPYmplY3QodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgbWF0Y2hlc1Byb3BlcnR5YCBmb3Igc291cmNlIHZhbHVlcyBzdWl0YWJsZVxuICAgICAqIGZvciBzdHJpY3QgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGkuZS4gYD09PWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUoa2V5LCBzcmNWYWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iamVjdFtrZXldID09PSBzcmNWYWx1ZSAmJlxuICAgICAgICAgIChzcmNWYWx1ZSAhPT0gdW5kZWZpbmVkIHx8IChrZXkgaW4gT2JqZWN0KG9iamVjdCkpKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1lbW9pemVgIHdoaWNoIGNsZWFycyB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24nc1xuICAgICAqIGNhY2hlIHdoZW4gaXQgZXhjZWVkcyBgTUFYX01FTU9JWkVfU0laRWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGhhdmUgaXRzIG91dHB1dCBtZW1vaXplZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtZW1vaXplQ2FwcGVkKGZ1bmMpIHtcbiAgICAgIHZhciByZXN1bHQgPSBtZW1vaXplKGZ1bmMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgICBpZiAoY2FjaGUuc2l6ZSA9PT0gTUFYX01FTU9JWkVfU0laRSkge1xuICAgICAgICAgIGNhY2hlLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgY2FjaGUgPSByZXN1bHQuY2FjaGU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1lcmdlcyB0aGUgZnVuY3Rpb24gbWV0YWRhdGEgb2YgYHNvdXJjZWAgaW50byBgZGF0YWAuXG4gICAgICpcbiAgICAgKiBNZXJnaW5nIG1ldGFkYXRhIHJlZHVjZXMgdGhlIG51bWJlciBvZiB3cmFwcGVycyB1c2VkIHRvIGludm9rZSBhIGZ1bmN0aW9uLlxuICAgICAqIFRoaXMgaXMgcG9zc2libGUgYmVjYXVzZSBtZXRob2RzIGxpa2UgYF8uYmluZGAsIGBfLmN1cnJ5YCwgYW5kIGBfLnBhcnRpYWxgXG4gICAgICogbWF5IGJlIGFwcGxpZWQgcmVnYXJkbGVzcyBvZiBleGVjdXRpb24gb3JkZXIuIE1ldGhvZHMgbGlrZSBgXy5hcnlgIGFuZFxuICAgICAqIGBfLnJlYXJnYCBtb2RpZnkgZnVuY3Rpb24gYXJndW1lbnRzLCBtYWtpbmcgdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXJlXG4gICAgICogZXhlY3V0ZWQgaW1wb3J0YW50LCBwcmV2ZW50aW5nIHRoZSBtZXJnaW5nIG9mIG1ldGFkYXRhLiBIb3dldmVyLCB3ZSBtYWtlXG4gICAgICogYW4gZXhjZXB0aW9uIGZvciBhIHNhZmUgY29tYmluZWQgY2FzZSB3aGVyZSBjdXJyaWVkIGZ1bmN0aW9ucyBoYXZlIGBfLmFyeWBcbiAgICAgKiBhbmQgb3IgYF8ucmVhcmdgIGFwcGxpZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGRhdGEgVGhlIGRlc3RpbmF0aW9uIG1ldGFkYXRhLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHNvdXJjZSBUaGUgc291cmNlIG1ldGFkYXRhLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgZGF0YWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWVyZ2VEYXRhKGRhdGEsIHNvdXJjZSkge1xuICAgICAgdmFyIGJpdG1hc2sgPSBkYXRhWzFdLFxuICAgICAgICAgIHNyY0JpdG1hc2sgPSBzb3VyY2VbMV0sXG4gICAgICAgICAgbmV3Qml0bWFzayA9IGJpdG1hc2sgfCBzcmNCaXRtYXNrLFxuICAgICAgICAgIGlzQ29tbW9uID0gbmV3Qml0bWFzayA8IChXUkFQX0JJTkRfRkxBRyB8IFdSQVBfQklORF9LRVlfRkxBRyB8IFdSQVBfQVJZX0ZMQUcpO1xuXG4gICAgICB2YXIgaXNDb21ibyA9XG4gICAgICAgICgoc3JjQml0bWFzayA9PSBXUkFQX0FSWV9GTEFHKSAmJiAoYml0bWFzayA9PSBXUkFQX0NVUlJZX0ZMQUcpKSB8fFxuICAgICAgICAoKHNyY0JpdG1hc2sgPT0gV1JBUF9BUllfRkxBRykgJiYgKGJpdG1hc2sgPT0gV1JBUF9SRUFSR19GTEFHKSAmJiAoZGF0YVs3XS5sZW5ndGggPD0gc291cmNlWzhdKSkgfHxcbiAgICAgICAgKChzcmNCaXRtYXNrID09IChXUkFQX0FSWV9GTEFHIHwgV1JBUF9SRUFSR19GTEFHKSkgJiYgKHNvdXJjZVs3XS5sZW5ndGggPD0gc291cmNlWzhdKSAmJiAoYml0bWFzayA9PSBXUkFQX0NVUlJZX0ZMQUcpKTtcblxuICAgICAgLy8gRXhpdCBlYXJseSBpZiBtZXRhZGF0YSBjYW4ndCBiZSBtZXJnZWQuXG4gICAgICBpZiAoIShpc0NvbW1vbiB8fCBpc0NvbWJvKSkge1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgIH1cbiAgICAgIC8vIFVzZSBzb3VyY2UgYHRoaXNBcmdgIGlmIGF2YWlsYWJsZS5cbiAgICAgIGlmIChzcmNCaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcpIHtcbiAgICAgICAgZGF0YVsyXSA9IHNvdXJjZVsyXTtcbiAgICAgICAgLy8gU2V0IHdoZW4gY3VycnlpbmcgYSBib3VuZCBmdW5jdGlvbi5cbiAgICAgICAgbmV3Qml0bWFzayB8PSBiaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcgPyAwIDogV1JBUF9DVVJSWV9CT1VORF9GTEFHO1xuICAgICAgfVxuICAgICAgLy8gQ29tcG9zZSBwYXJ0aWFsIGFyZ3VtZW50cy5cbiAgICAgIHZhciB2YWx1ZSA9IHNvdXJjZVszXTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICB2YXIgcGFydGlhbHMgPSBkYXRhWzNdO1xuICAgICAgICBkYXRhWzNdID0gcGFydGlhbHMgPyBjb21wb3NlQXJncyhwYXJ0aWFscywgdmFsdWUsIHNvdXJjZVs0XSkgOiB2YWx1ZTtcbiAgICAgICAgZGF0YVs0XSA9IHBhcnRpYWxzID8gcmVwbGFjZUhvbGRlcnMoZGF0YVszXSwgUExBQ0VIT0xERVIpIDogc291cmNlWzRdO1xuICAgICAgfVxuICAgICAgLy8gQ29tcG9zZSBwYXJ0aWFsIHJpZ2h0IGFyZ3VtZW50cy5cbiAgICAgIHZhbHVlID0gc291cmNlWzVdO1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHBhcnRpYWxzID0gZGF0YVs1XTtcbiAgICAgICAgZGF0YVs1XSA9IHBhcnRpYWxzID8gY29tcG9zZUFyZ3NSaWdodChwYXJ0aWFscywgdmFsdWUsIHNvdXJjZVs2XSkgOiB2YWx1ZTtcbiAgICAgICAgZGF0YVs2XSA9IHBhcnRpYWxzID8gcmVwbGFjZUhvbGRlcnMoZGF0YVs1XSwgUExBQ0VIT0xERVIpIDogc291cmNlWzZdO1xuICAgICAgfVxuICAgICAgLy8gVXNlIHNvdXJjZSBgYXJnUG9zYCBpZiBhdmFpbGFibGUuXG4gICAgICB2YWx1ZSA9IHNvdXJjZVs3XTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBkYXRhWzddID0gdmFsdWU7XG4gICAgICB9XG4gICAgICAvLyBVc2Ugc291cmNlIGBhcnlgIGlmIGl0J3Mgc21hbGxlci5cbiAgICAgIGlmIChzcmNCaXRtYXNrICYgV1JBUF9BUllfRkxBRykge1xuICAgICAgICBkYXRhWzhdID0gZGF0YVs4XSA9PSBudWxsID8gc291cmNlWzhdIDogbmF0aXZlTWluKGRhdGFbOF0sIHNvdXJjZVs4XSk7XG4gICAgICB9XG4gICAgICAvLyBVc2Ugc291cmNlIGBhcml0eWAgaWYgb25lIGlzIG5vdCBwcm92aWRlZC5cbiAgICAgIGlmIChkYXRhWzldID09IG51bGwpIHtcbiAgICAgICAgZGF0YVs5XSA9IHNvdXJjZVs5XTtcbiAgICAgIH1cbiAgICAgIC8vIFVzZSBzb3VyY2UgYGZ1bmNgIGFuZCBtZXJnZSBiaXRtYXNrcy5cbiAgICAgIGRhdGFbMF0gPSBzb3VyY2VbMF07XG4gICAgICBkYXRhWzFdID0gbmV3Qml0bWFzaztcblxuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlXG4gICAgICogW2BPYmplY3Qua2V5c2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICAgICAqIGV4Y2VwdCB0aGF0IGl0IGluY2x1ZGVzIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5hdGl2ZUtleXNJbihvYmplY3QpIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGlmIChvYmplY3QgIT0gbnVsbCkge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgICAgIHJldHVybiBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCB0cmFuc2Zvcm1zIHRoZSByZXN0IGFycmF5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIHJlc3QgYXJyYXkgdHJhbnNmb3JtLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCB0cmFuc2Zvcm0pIHtcbiAgICAgIHN0YXJ0ID0gbmF0aXZlTWF4KHN0YXJ0ID09PSB1bmRlZmluZWQgPyAoZnVuYy5sZW5ndGggLSAxKSA6IHN0YXJ0LCAwKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWF4KGFyZ3MubGVuZ3RoIC0gc3RhcnQsIDApLFxuICAgICAgICAgICAgYXJyYXkgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgYXJyYXlbaW5kZXhdID0gYXJnc1tzdGFydCArIGluZGV4XTtcbiAgICAgICAgfVxuICAgICAgICBpbmRleCA9IC0xO1xuICAgICAgICB2YXIgb3RoZXJBcmdzID0gQXJyYXkoc3RhcnQgKyAxKTtcbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBzdGFydCkge1xuICAgICAgICAgIG90aGVyQXJnc1tpbmRleF0gPSBhcmdzW2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgICBvdGhlckFyZ3Nbc3RhcnRdID0gdHJhbnNmb3JtKGFycmF5KTtcbiAgICAgICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHRoaXMsIG90aGVyQXJncyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHBhcmVudCB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYXRoIFRoZSBwYXRoIHRvIGdldCB0aGUgcGFyZW50IHZhbHVlIG9mLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwYXJlbnQgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gcGFyZW50KG9iamVjdCwgcGF0aCkge1xuICAgICAgcmV0dXJuIHBhdGgubGVuZ3RoIDwgMiA/IG9iamVjdCA6IGJhc2VHZXQob2JqZWN0LCBiYXNlU2xpY2UocGF0aCwgMCwgLTEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW9yZGVyIGBhcnJheWAgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgaW5kZXhlcyB3aGVyZSB0aGUgZWxlbWVudCBhdFxuICAgICAqIHRoZSBmaXJzdCBpbmRleCBpcyBhc3NpZ25lZCBhcyB0aGUgZmlyc3QgZWxlbWVudCwgdGhlIGVsZW1lbnQgYXRcbiAgICAgKiB0aGUgc2Vjb25kIGluZGV4IGlzIGFzc2lnbmVkIGFzIHRoZSBzZWNvbmQgZWxlbWVudCwgYW5kIHNvIG9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcmVvcmRlci5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBpbmRleGVzIFRoZSBhcnJhbmdlZCBhcnJheSBpbmRleGVzLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlb3JkZXIoYXJyYXksIGluZGV4ZXMpIHtcbiAgICAgIHZhciBhcnJMZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWluKGluZGV4ZXMubGVuZ3RoLCBhcnJMZW5ndGgpLFxuICAgICAgICAgIG9sZEFycmF5ID0gY29weUFycmF5KGFycmF5KTtcblxuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGluZGV4ZXNbbGVuZ3RoXTtcbiAgICAgICAgYXJyYXlbbGVuZ3RoXSA9IGlzSW5kZXgoaW5kZXgsIGFyckxlbmd0aCkgPyBvbGRBcnJheVtpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAsIHVubGVzcyBga2V5YCBpcyBcIl9fcHJvdG9fX1wiIG9yIFwiY29uc3RydWN0b3JcIi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzYWZlR2V0KG9iamVjdCwga2V5KSB7XG4gICAgICBpZiAoa2V5ID09PSAnY29uc3RydWN0b3InICYmIHR5cGVvZiBvYmplY3Rba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChrZXkgPT0gJ19fcHJvdG9fXycpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBtZXRhZGF0YSBmb3IgYGZ1bmNgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIElmIHRoaXMgZnVuY3Rpb24gYmVjb21lcyBob3QsIGkuZS4gaXMgaW52b2tlZCBhIGxvdCBpbiBhIHNob3J0XG4gICAgICogcGVyaW9kIG9mIHRpbWUsIGl0IHdpbGwgdHJpcCBpdHMgYnJlYWtlciBhbmQgdHJhbnNpdGlvbiB0byBhbiBpZGVudGl0eVxuICAgICAqIGZ1bmN0aW9uIHRvIGF2b2lkIGdhcmJhZ2UgY29sbGVjdGlvbiBwYXVzZXMgaW4gVjguIFNlZVxuICAgICAqIFtWOCBpc3N1ZSAyMDcwXShodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0yMDcwKVxuICAgICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFzc29jaWF0ZSBtZXRhZGF0YSB3aXRoLlxuICAgICAqIEBwYXJhbSB7Kn0gZGF0YSBUaGUgbWV0YWRhdGEuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAgICAgKi9cbiAgICB2YXIgc2V0RGF0YSA9IHNob3J0T3V0KGJhc2VTZXREYXRhKTtcblxuICAgIC8qKlxuICAgICAqIEEgc2ltcGxlIHdyYXBwZXIgYXJvdW5kIHRoZSBnbG9iYWwgW2BzZXRUaW1lb3V0YF0oaHR0cHM6Ly9tZG4uaW8vc2V0VGltZW91dCkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlbGF5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3YWl0IFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5IGludm9jYXRpb24uXG4gICAgICogQHJldHVybnMge251bWJlcnxPYmplY3R9IFJldHVybnMgdGhlIHRpbWVyIGlkIG9yIHRpbWVvdXQgb2JqZWN0LlxuICAgICAqL1xuICAgIHZhciBzZXRUaW1lb3V0ID0gY3R4U2V0VGltZW91dCB8fCBmdW5jdGlvbihmdW5jLCB3YWl0KSB7XG4gICAgICByZXR1cm4gcm9vdC5zZXRUaW1lb3V0KGZ1bmMsIHdhaXQpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgdG9TdHJpbmdgIG1ldGhvZCBvZiBgZnVuY2AgdG8gcmV0dXJuIGBzdHJpbmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBzZXRUb1N0cmluZyA9IHNob3J0T3V0KGJhc2VTZXRUb1N0cmluZyk7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgdG9TdHJpbmdgIG1ldGhvZCBvZiBgd3JhcHBlcmAgdG8gbWltaWMgdGhlIHNvdXJjZSBvZiBgcmVmZXJlbmNlYFxuICAgICAqIHdpdGggd3JhcHBlciBkZXRhaWxzIGluIGEgY29tbWVudCBhdCB0aGUgdG9wIG9mIHRoZSBzb3VyY2UgYm9keS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gd3JhcHBlciBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHJlZmVyZW5jZSBUaGUgcmVmZXJlbmNlIGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGB3cmFwcGVyYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXRXcmFwVG9TdHJpbmcod3JhcHBlciwgcmVmZXJlbmNlLCBiaXRtYXNrKSB7XG4gICAgICB2YXIgc291cmNlID0gKHJlZmVyZW5jZSArICcnKTtcbiAgICAgIHJldHVybiBzZXRUb1N0cmluZyh3cmFwcGVyLCBpbnNlcnRXcmFwRGV0YWlscyhzb3VyY2UsIHVwZGF0ZVdyYXBEZXRhaWxzKGdldFdyYXBEZXRhaWxzKHNvdXJjZSksIGJpdG1hc2spKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQnbGwgc2hvcnQgb3V0IGFuZCBpbnZva2UgYGlkZW50aXR5YCBpbnN0ZWFkXG4gICAgICogb2YgYGZ1bmNgIHdoZW4gaXQncyBjYWxsZWQgYEhPVF9DT1VOVGAgb3IgbW9yZSB0aW1lcyBpbiBgSE9UX1NQQU5gXG4gICAgICogbWlsbGlzZWNvbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzaG9ydGFibGUgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2hvcnRPdXQoZnVuYykge1xuICAgICAgdmFyIGNvdW50ID0gMCxcbiAgICAgICAgICBsYXN0Q2FsbGVkID0gMDtcblxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc3RhbXAgPSBuYXRpdmVOb3coKSxcbiAgICAgICAgICAgIHJlbWFpbmluZyA9IEhPVF9TUEFOIC0gKHN0YW1wIC0gbGFzdENhbGxlZCk7XG5cbiAgICAgICAgbGFzdENhbGxlZCA9IHN0YW1wO1xuICAgICAgICBpZiAocmVtYWluaW5nID4gMCkge1xuICAgICAgICAgIGlmICgrK2NvdW50ID49IEhPVF9DT1VOVCkge1xuICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1swXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY291bnQgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHVuZGVmaW5lZCwgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNodWZmbGVgIHdoaWNoIG11dGF0ZXMgYW5kIHNldHMgdGhlIHNpemUgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNodWZmbGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzaXplPWFycmF5Lmxlbmd0aF0gVGhlIHNpemUgb2YgYGFycmF5YC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzaHVmZmxlU2VsZihhcnJheSwgc2l6ZSkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDE7XG5cbiAgICAgIHNpemUgPSBzaXplID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiBzaXplO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBzaXplKSB7XG4gICAgICAgIHZhciByYW5kID0gYmFzZVJhbmRvbShpbmRleCwgbGFzdEluZGV4KSxcbiAgICAgICAgICAgIHZhbHVlID0gYXJyYXlbcmFuZF07XG5cbiAgICAgICAgYXJyYXlbcmFuZF0gPSBhcnJheVtpbmRleF07XG4gICAgICAgIGFycmF5W2luZGV4XSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgYXJyYXkubGVuZ3RoID0gc2l6ZTtcbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBhIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAgICAgKi9cbiAgICB2YXIgc3RyaW5nVG9QYXRoID0gbWVtb2l6ZUNhcHBlZChmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGlmIChzdHJpbmcuY2hhckNvZGVBdCgwKSA9PT0gNDYgLyogLiAqLykge1xuICAgICAgICByZXN1bHQucHVzaCgnJyk7XG4gICAgICB9XG4gICAgICBzdHJpbmcucmVwbGFjZShyZVByb3BOYW1lLCBmdW5jdGlvbihtYXRjaCwgbnVtYmVyLCBxdW90ZSwgc3ViU3RyaW5nKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHF1b3RlID8gc3ViU3RyaW5nLnJlcGxhY2UocmVFc2NhcGVDaGFyLCAnJDEnKSA6IChudW1iZXIgfHwgbWF0Y2gpKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcga2V5IGlmIGl0J3Mgbm90IGEgc3RyaW5nIG9yIHN5bWJvbC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfHN5bWJvbH0gUmV0dXJucyB0aGUga2V5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvS2V5KHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICAgICAgcmV0dXJuIChyZXN1bHQgPT0gJzAnICYmICgxIC8gdmFsdWUpID09IC1JTkZJTklUWSkgPyAnLTAnIDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBmdW5jYCB0byBpdHMgc291cmNlIGNvZGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc291cmNlIGNvZGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9Tb3VyY2UoZnVuYykge1xuICAgICAgaWYgKGZ1bmMgIT0gbnVsbCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBmdW5jVG9TdHJpbmcuY2FsbChmdW5jKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gKGZ1bmMgKyAnJyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICB9XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB3cmFwcGVyIGBkZXRhaWxzYCBiYXNlZCBvbiBgYml0bWFza2AgZmxhZ3MuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gZGV0YWlscyBUaGUgZGV0YWlscyB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGRldGFpbHNgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVwZGF0ZVdyYXBEZXRhaWxzKGRldGFpbHMsIGJpdG1hc2spIHtcbiAgICAgIGFycmF5RWFjaCh3cmFwRmxhZ3MsIGZ1bmN0aW9uKHBhaXIpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gJ18uJyArIHBhaXJbMF07XG4gICAgICAgIGlmICgoYml0bWFzayAmIHBhaXJbMV0pICYmICFhcnJheUluY2x1ZGVzKGRldGFpbHMsIHZhbHVlKSkge1xuICAgICAgICAgIGRldGFpbHMucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGRldGFpbHMuc29ydCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgd3JhcHBlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSB3cmFwcGVyIFRoZSB3cmFwcGVyIHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCB3cmFwcGVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJDbG9uZSh3cmFwcGVyKSB7XG4gICAgICBpZiAod3JhcHBlciBpbnN0YW5jZW9mIExhenlXcmFwcGVyKSB7XG4gICAgICAgIHJldHVybiB3cmFwcGVyLmNsb25lKCk7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IExvZGFzaFdyYXBwZXIod3JhcHBlci5fX3dyYXBwZWRfXywgd3JhcHBlci5fX2NoYWluX18pO1xuICAgICAgcmVzdWx0Ll9fYWN0aW9uc19fID0gY29weUFycmF5KHdyYXBwZXIuX19hY3Rpb25zX18pO1xuICAgICAgcmVzdWx0Ll9faW5kZXhfXyAgPSB3cmFwcGVyLl9faW5kZXhfXztcbiAgICAgIHJlc3VsdC5fX3ZhbHVlc19fID0gd3JhcHBlci5fX3ZhbHVlc19fO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGVsZW1lbnRzIHNwbGl0IGludG8gZ3JvdXBzIHRoZSBsZW5ndGggb2YgYHNpemVgLlxuICAgICAqIElmIGBhcnJheWAgY2FuJ3QgYmUgc3BsaXQgZXZlbmx5LCB0aGUgZmluYWwgY2h1bmsgd2lsbCBiZSB0aGUgcmVtYWluaW5nXG4gICAgICogZWxlbWVudHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NpemU9MV0gVGhlIGxlbmd0aCBvZiBlYWNoIGNodW5rXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjaHVua3MuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY2h1bmsoWydhJywgJ2InLCAnYycsICdkJ10sIDIpO1xuICAgICAqIC8vID0+IFtbJ2EnLCAnYiddLCBbJ2MnLCAnZCddXVxuICAgICAqXG4gICAgICogXy5jaHVuayhbJ2EnLCAnYicsICdjJywgJ2QnXSwgMyk7XG4gICAgICogLy8gPT4gW1snYScsICdiJywgJ2MnXSwgWydkJ11dXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2h1bmsoYXJyYXksIHNpemUsIGd1YXJkKSB7XG4gICAgICBpZiAoKGd1YXJkID8gaXNJdGVyYXRlZUNhbGwoYXJyYXksIHNpemUsIGd1YXJkKSA6IHNpemUgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgc2l6ZSA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaXplID0gbmF0aXZlTWF4KHRvSW50ZWdlcihzaXplKSwgMCk7XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCB8fCBzaXplIDwgMSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSAwLFxuICAgICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgICByZXN1bHQgPSBBcnJheShuYXRpdmVDZWlsKGxlbmd0aCAvIHNpemUpKTtcblxuICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IGJhc2VTbGljZShhcnJheSwgaW5kZXgsIChpbmRleCArPSBzaXplKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgd2l0aCBhbGwgZmFsc2V5IHZhbHVlcyByZW1vdmVkLiBUaGUgdmFsdWVzIGBmYWxzZWAsIGBudWxsYCxcbiAgICAgKiBgMGAsIGBcIlwiYCwgYHVuZGVmaW5lZGAsIGFuZCBgTmFOYCBhcmUgZmFsc2V5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbXBhY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNvbXBhY3QoWzAsIDEsIGZhbHNlLCAyLCAnJywgM10pO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbXBhY3QoYXJyYXkpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGFycmF5IGNvbmNhdGVuYXRpbmcgYGFycmF5YCB3aXRoIGFueSBhZGRpdGlvbmFsIGFycmF5c1xuICAgICAqIGFuZC9vciB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29uY2F0ZW5hdGUuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNvbmNhdGVuYXRlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGNvbmNhdGVuYXRlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzFdO1xuICAgICAqIHZhciBvdGhlciA9IF8uY29uY2F0KGFycmF5LCAyLCBbM10sIFtbNF1dKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG90aGVyKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgMywgWzRdXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbmNhdCgpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIGFyZ3MgPSBBcnJheShsZW5ndGggLSAxKSxcbiAgICAgICAgICBhcnJheSA9IGFyZ3VtZW50c1swXSxcbiAgICAgICAgICBpbmRleCA9IGxlbmd0aDtcblxuICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgYXJnc1tpbmRleCAtIDFdID0gYXJndW1lbnRzW2luZGV4XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheVB1c2goaXNBcnJheShhcnJheSkgPyBjb3B5QXJyYXkoYXJyYXkpIDogW2FycmF5XSwgYmFzZUZsYXR0ZW4oYXJncywgMSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgYGFycmF5YCB2YWx1ZXMgbm90IGluY2x1ZGVkIGluIHRoZSBvdGhlciBnaXZlbiBhcnJheXNcbiAgICAgKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxBbGxgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAc2VlIF8ud2l0aG91dCwgXy54b3JcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kaWZmZXJlbmNlKFsyLCAxXSwgWzIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMV1cbiAgICAgKi9cbiAgICB2YXIgZGlmZmVyZW5jZSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5LCB2YWx1ZXMpIHtcbiAgICAgIHJldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSlcbiAgICAgICAgPyBiYXNlRGlmZmVyZW5jZShhcnJheSwgYmFzZUZsYXR0ZW4odmFsdWVzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSkpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmRpZmZlcmVuY2VgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIGFuZCBgdmFsdWVzYCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uXG4gICAgICogYnkgd2hpY2ggdGhleSdyZSBjb21wYXJlZC4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OlxuICAgICAqICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxBbGxCeWAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGV4Y2x1ZGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kaWZmZXJlbmNlQnkoWzIuMSwgMS4yXSwgWzIuMywgMy40XSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzEuMl1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZGlmZmVyZW5jZUJ5KFt7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgW3sgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIHZhciBkaWZmZXJlbmNlQnkgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheSwgdmFsdWVzKSB7XG4gICAgICB2YXIgaXRlcmF0ZWUgPSBsYXN0KHZhbHVlcyk7XG4gICAgICBpZiAoaXNBcnJheUxpa2VPYmplY3QoaXRlcmF0ZWUpKSB7XG4gICAgICAgIGl0ZXJhdGVlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KGFycmF5KVxuICAgICAgICA/IGJhc2VEaWZmZXJlbmNlKGFycmF5LCBiYXNlRmxhdHRlbih2YWx1ZXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5kaWZmZXJlbmNlYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlgIHRvIGB2YWx1ZXNgLiBUaGUgb3JkZXIgYW5kXG4gICAgICogcmVmZXJlbmNlcyBvZiByZXN1bHQgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS4gVGhlIGNvbXBhcmF0b3JcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ucHVsbEFsbFdpdGhgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH1dO1xuICAgICAqXG4gICAgICogXy5kaWZmZXJlbmNlV2l0aChvYmplY3RzLCBbeyAneCc6IDEsICd5JzogMiB9XSwgXy5pc0VxdWFsKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDIsICd5JzogMSB9XVxuICAgICAqL1xuICAgIHZhciBkaWZmZXJlbmNlV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5LCB2YWx1ZXMpIHtcbiAgICAgIHZhciBjb21wYXJhdG9yID0gbGFzdCh2YWx1ZXMpO1xuICAgICAgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KGNvbXBhcmF0b3IpKSB7XG4gICAgICAgIGNvbXBhcmF0b3IgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2VPYmplY3QoYXJyYXkpXG4gICAgICAgID8gYmFzZURpZmZlcmVuY2UoYXJyYXksIGJhc2VGbGF0dGVuKHZhbHVlcywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpLCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGBuYCBlbGVtZW50cyBkcm9wcGVkIGZyb20gdGhlIGJlZ2lubmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjUuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byBkcm9wLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRyb3AoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMiwgM11cbiAgICAgKlxuICAgICAqIF8uZHJvcChbMSwgMiwgM10sIDIpO1xuICAgICAqIC8vID0+IFszXVxuICAgICAqXG4gICAgICogXy5kcm9wKFsxLCAyLCAzXSwgNSk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKlxuICAgICAqIF8uZHJvcChbMSwgMiwgM10sIDApO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRyb3AoYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBuID0gKGd1YXJkIHx8IG4gPT09IHVuZGVmaW5lZCkgPyAxIDogdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgbiA8IDAgPyAwIDogbiwgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGBuYCBlbGVtZW50cyBkcm9wcGVkIGZyb20gdGhlIGVuZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byBkcm9wLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRyb3BSaWdodChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogXy5kcm9wUmlnaHQoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbMV1cbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0KFsxLCAyLCAzXSwgNSk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0KFsxLCAyLCAzXSwgMCk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZHJvcFJpZ2h0KGFycmF5LCBuLCBndWFyZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbiA9IChndWFyZCB8fCBuID09PSB1bmRlZmluZWQpID8gMSA6IHRvSW50ZWdlcihuKTtcbiAgICAgIG4gPSBsZW5ndGggLSBuO1xuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgMCwgbiA8IDAgPyAwIDogbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgZXhjbHVkaW5nIGVsZW1lbnRzIGRyb3BwZWQgZnJvbSB0aGUgZW5kLlxuICAgICAqIEVsZW1lbnRzIGFyZSBkcm9wcGVkIHVudGlsIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleCwgYXJyYXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0V2hpbGUodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BSaWdodFdoaWxlKHVzZXJzLCB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknLCAnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wUmlnaHRXaGlsZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZHJvcFJpZ2h0V2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leScsICdmcmVkJywgJ3BlYmJsZXMnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRyb3BSaWdodFdoaWxlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VXaGlsZShhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgdHJ1ZSwgdHJ1ZSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCBleGNsdWRpbmcgZWxlbWVudHMgZHJvcHBlZCBmcm9tIHRoZSBiZWdpbm5pbmcuXG4gICAgICogRWxlbWVudHMgYXJlIGRyb3BwZWQgdW50aWwgYHByZWRpY2F0ZWAgcmV0dXJucyBmYWxzZXkuIFRoZSBwcmVkaWNhdGUgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4LCBhcnJheSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5kcm9wV2hpbGUodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wV2hpbGUodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BXaGlsZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BXaGlsZSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnLCAncGViYmxlcyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZHJvcFdoaWxlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VXaGlsZShhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgdHJ1ZSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaWxscyBlbGVtZW50cyBvZiBgYXJyYXlgIHdpdGggYHZhbHVlYCBmcm9tIGBzdGFydGAgdXAgdG8sIGJ1dCBub3RcbiAgICAgKiBpbmNsdWRpbmcsIGBlbmRgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmaWxsLlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGZpbGwgYGFycmF5YCB3aXRoLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICAgICAqXG4gICAgICogXy5maWxsKGFycmF5LCAnYScpO1xuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYScsICdhJ11cbiAgICAgKlxuICAgICAqIF8uZmlsbChBcnJheSgzKSwgMik7XG4gICAgICogLy8gPT4gWzIsIDIsIDJdXG4gICAgICpcbiAgICAgKiBfLmZpbGwoWzQsIDYsIDgsIDEwXSwgJyonLCAxLCAzKTtcbiAgICAgKiAvLyA9PiBbNCwgJyonLCAnKicsIDEwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbGwoYXJyYXksIHZhbHVlLCBzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBpZiAoc3RhcnQgJiYgdHlwZW9mIHN0YXJ0ICE9ICdudW1iZXInICYmIGlzSXRlcmF0ZWVDYWxsKGFycmF5LCB2YWx1ZSwgc3RhcnQpKSB7XG4gICAgICAgIHN0YXJ0ID0gMDtcbiAgICAgICAgZW5kID0gbGVuZ3RoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VGaWxsKGFycmF5LCB2YWx1ZSwgc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kYCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3RcbiAgICAgKiBlbGVtZW50IGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciBpbnN0ZWFkIG9mIHRoZSBlbGVtZW50IGl0c2VsZi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZvdW5kIGVsZW1lbnQsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maW5kSW5kZXgodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlciA9PSAnYmFybmV5JzsgfSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRJbmRleCh1c2VycywgeyAndXNlcic6ICdmcmVkJywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRJbmRleCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZEluZGV4KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gMlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IGZyb21JbmRleCA9PSBudWxsID8gMCA6IHRvSW50ZWdlcihmcm9tSW5kZXgpO1xuICAgICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICBpbmRleCA9IG5hdGl2ZU1heChsZW5ndGggKyBpbmRleCwgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUZpbmRJbmRleChhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgaW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZEluZGV4YCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzXG4gICAgICogb2YgYGNvbGxlY3Rpb25gIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD1hcnJheS5sZW5ndGgtMV0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmb3VuZCBlbGVtZW50LCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmluZExhc3RJbmRleCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby51c2VyID09ICdwZWJibGVzJzsgfSk7XG4gICAgICogLy8gPT4gMlxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0SW5kZXgodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RJbmRleCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RJbmRleCh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaW5kTGFzdEluZGV4KGFycmF5LCBwcmVkaWNhdGUsIGZyb21JbmRleCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gbGVuZ3RoIC0gMTtcbiAgICAgIGlmIChmcm9tSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpbmRleCA9IHRvSW50ZWdlcihmcm9tSW5kZXgpO1xuICAgICAgICBpbmRleCA9IGZyb21JbmRleCA8IDBcbiAgICAgICAgICA/IG5hdGl2ZU1heChsZW5ndGggKyBpbmRleCwgMClcbiAgICAgICAgICA6IG5hdGl2ZU1pbihpbmRleCwgbGVuZ3RoIC0gMSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUZpbmRJbmRleChhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgaW5kZXgsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZsYXR0ZW5zIGBhcnJheWAgYSBzaW5nbGUgbGV2ZWwgZGVlcC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5mbGF0dGVuKFsxLCBbMiwgWzMsIFs0XV0sIDVdXSk7XG4gICAgICogLy8gPT4gWzEsIDIsIFszLCBbNF1dLCA1XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXR0ZW4oYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlRmxhdHRlbihhcnJheSwgMSkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWN1cnNpdmVseSBmbGF0dGVucyBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZsYXR0ZW5EZWVwKFsxLCBbMiwgWzMsIFs0XV0sIDVdXSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDMsIDQsIDVdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdHRlbkRlZXAoYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlRmxhdHRlbihhcnJheSwgSU5GSU5JVFkpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVjdXJzaXZlbHkgZmxhdHRlbiBgYXJyYXlgIHVwIHRvIGBkZXB0aGAgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC40LjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RlcHRoPTFdIFRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxLCBbMiwgWzMsIFs0XV0sIDVdXTtcbiAgICAgKlxuICAgICAqIF8uZmxhdHRlbkRlcHRoKGFycmF5LCAxKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgWzMsIFs0XV0sIDVdXG4gICAgICpcbiAgICAgKiBfLmZsYXR0ZW5EZXB0aChhcnJheSwgMik7XG4gICAgICogLy8gPT4gWzEsIDIsIDMsIFs0XSwgNV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0dGVuRGVwdGgoYXJyYXksIGRlcHRoKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBkZXB0aCA9IGRlcHRoID09PSB1bmRlZmluZWQgPyAxIDogdG9JbnRlZ2VyKGRlcHRoKTtcbiAgICAgIHJldHVybiBiYXNlRmxhdHRlbihhcnJheSwgZGVwdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBpbnZlcnNlIG9mIGBfLnRvUGFpcnNgOyB0aGlzIG1ldGhvZCByZXR1cm5zIGFuIG9iamVjdCBjb21wb3NlZFxuICAgICAqIGZyb20ga2V5LXZhbHVlIGBwYWlyc2AuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYWlycyBUaGUga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZnJvbVBhaXJzKFtbJ2EnLCAxXSwgWydiJywgMl1dKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmcm9tUGFpcnMocGFpcnMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHBhaXJzID09IG51bGwgPyAwIDogcGFpcnMubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IHt9O1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgcGFpciA9IHBhaXJzW2luZGV4XTtcbiAgICAgICAgcmVzdWx0W3BhaXJbMF1dID0gcGFpclsxXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZmlyc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGFsaWFzIGZpcnN0XG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaGVhZChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIF8uaGVhZChbXSk7XG4gICAgICogLy8gPT4gdW5kZWZpbmVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGVhZChhcnJheSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpID8gYXJyYXlbMF0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYHZhbHVlYCBpcyBmb3VuZCBpbiBgYXJyYXlgXG4gICAgICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuIElmIGBmcm9tSW5kZXhgIGlzIG5lZ2F0aXZlLCBpdCdzIHVzZWQgYXMgdGhlXG4gICAgICogb2Zmc2V0IGZyb20gdGhlIGVuZCBvZiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbmRleE9mKFsxLCAyLCAxLCAyXSwgMik7XG4gICAgICogLy8gPT4gMVxuICAgICAqXG4gICAgICogLy8gU2VhcmNoIGZyb20gdGhlIGBmcm9tSW5kZXhgLlxuICAgICAqIF8uaW5kZXhPZihbMSwgMiwgMSwgMl0sIDIsIDIpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSBmcm9tSW5kZXggPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgaW5kZXggPSBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgaW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYWxsIGJ1dCB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmluaXRpYWwoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbml0aWFsKGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZVNsaWNlKGFycmF5LCAwLCAtMSkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gYWxsIGdpdmVuIGFycmF5c1xuICAgICAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmVcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBpbnRlcnNlY3RpbmcgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmludGVyc2VjdGlvbihbMiwgMV0sIFsyLCAzXSk7XG4gICAgICogLy8gPT4gWzJdXG4gICAgICovXG4gICAgdmFyIGludGVyc2VjdGlvbiA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIG1hcHBlZCA9IGFycmF5TWFwKGFycmF5cywgY2FzdEFycmF5TGlrZU9iamVjdCk7XG4gICAgICByZXR1cm4gKG1hcHBlZC5sZW5ndGggJiYgbWFwcGVkWzBdID09PSBhcnJheXNbMF0pXG4gICAgICAgID8gYmFzZUludGVyc2VjdGlvbihtYXBwZWQpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmludGVyc2VjdGlvbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IG9mIGVhY2ggYGFycmF5c2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvblxuICAgICAqIGJ5IHdoaWNoIHRoZXkncmUgY29tcGFyZWQuIFRoZSBvcmRlciBhbmQgcmVmZXJlbmNlcyBvZiByZXN1bHQgdmFsdWVzIGFyZVxuICAgICAqIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDpcbiAgICAgKiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBpbnRlcnNlY3RpbmcgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmludGVyc2VjdGlvbkJ5KFsyLjEsIDEuMl0sIFsyLjMsIDMuNF0sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsyLjFdXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmludGVyc2VjdGlvbkJ5KFt7ICd4JzogMSB9XSwgW3sgJ3gnOiAyIH0sIHsgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSB9XVxuICAgICAqL1xuICAgIHZhciBpbnRlcnNlY3Rpb25CeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGl0ZXJhdGVlID0gbGFzdChhcnJheXMpLFxuICAgICAgICAgIG1hcHBlZCA9IGFycmF5TWFwKGFycmF5cywgY2FzdEFycmF5TGlrZU9iamVjdCk7XG5cbiAgICAgIGlmIChpdGVyYXRlZSA9PT0gbGFzdChtYXBwZWQpKSB7XG4gICAgICAgIGl0ZXJhdGVlID0gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWFwcGVkLnBvcCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChtYXBwZWQubGVuZ3RoICYmIG1hcHBlZFswXSA9PT0gYXJyYXlzWzBdKVxuICAgICAgICA/IGJhc2VJbnRlcnNlY3Rpb24obWFwcGVkLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmludGVyc2VjdGlvbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5c2AuIFRoZSBvcmRlciBhbmQgcmVmZXJlbmNlc1xuICAgICAqIG9mIHJlc3VsdCB2YWx1ZXMgYXJlIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LiBUaGUgY29tcGFyYXRvciBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGludGVyc2VjdGluZyB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XTtcbiAgICAgKiB2YXIgb3RoZXJzID0gW3sgJ3gnOiAxLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8uaW50ZXJzZWN0aW9uV2l0aChvYmplY3RzLCBvdGhlcnMsIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfV1cbiAgICAgKi9cbiAgICB2YXIgaW50ZXJzZWN0aW9uV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGNvbXBhcmF0b3IgPSBsYXN0KGFycmF5cyksXG4gICAgICAgICAgbWFwcGVkID0gYXJyYXlNYXAoYXJyYXlzLCBjYXN0QXJyYXlMaWtlT2JqZWN0KTtcblxuICAgICAgY29tcGFyYXRvciA9IHR5cGVvZiBjb21wYXJhdG9yID09ICdmdW5jdGlvbicgPyBjb21wYXJhdG9yIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKGNvbXBhcmF0b3IpIHtcbiAgICAgICAgbWFwcGVkLnBvcCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChtYXBwZWQubGVuZ3RoICYmIG1hcHBlZFswXSA9PT0gYXJyYXlzWzBdKVxuICAgICAgICA/IGJhc2VJbnRlcnNlY3Rpb24obWFwcGVkLCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBhbGwgZWxlbWVudHMgaW4gYGFycmF5YCBpbnRvIGEgc3RyaW5nIHNlcGFyYXRlZCBieSBgc2VwYXJhdG9yYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb252ZXJ0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc2VwYXJhdG9yPScsJ10gVGhlIGVsZW1lbnQgc2VwYXJhdG9yLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGpvaW5lZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uam9pbihbJ2EnLCAnYicsICdjJ10sICd+Jyk7XG4gICAgICogLy8gPT4gJ2F+Yn5jJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGpvaW4oYXJyYXksIHNlcGFyYXRvcikge1xuICAgICAgcmV0dXJuIGFycmF5ID09IG51bGwgPyAnJyA6IG5hdGl2ZUpvaW4uY2FsbChhcnJheSwgc2VwYXJhdG9yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubGFzdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsYXN0KGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYXJyYXlbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbmRleE9mYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mXG4gICAgICogYGFycmF5YCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PWFycmF5Lmxlbmd0aC0xXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sYXN0SW5kZXhPZihbMSwgMiwgMSwgMl0sIDIpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIC8vIFNlYXJjaCBmcm9tIHRoZSBgZnJvbUluZGV4YC5cbiAgICAgKiBfLmxhc3RJbmRleE9mKFsxLCAyLCAxLCAyXSwgMiwgMik7XG4gICAgICogLy8gPT4gMVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxhc3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSBsZW5ndGg7XG4gICAgICBpZiAoZnJvbUluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaW5kZXggPSB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgICAgICAgaW5kZXggPSBpbmRleCA8IDAgPyBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApIDogbmF0aXZlTWluKGluZGV4LCBsZW5ndGggLSAxKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWVcbiAgICAgICAgPyBzdHJpY3RMYXN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGluZGV4KVxuICAgICAgICA6IGJhc2VGaW5kSW5kZXgoYXJyYXksIGJhc2VJc05hTiwgaW5kZXgsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGVsZW1lbnQgYXQgaW5kZXggYG5gIG9mIGBhcnJheWAuIElmIGBuYCBpcyBuZWdhdGl2ZSwgdGhlIG50aFxuICAgICAqIGVsZW1lbnQgZnJvbSB0aGUgZW5kIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MF0gVGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IHRvIHJldHVybi5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbnRoIGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydhJywgJ2InLCAnYycsICdkJ107XG4gICAgICpcbiAgICAgKiBfLm50aChhcnJheSwgMSk7XG4gICAgICogLy8gPT4gJ2InXG4gICAgICpcbiAgICAgKiBfLm50aChhcnJheSwgLTIpO1xuICAgICAqIC8vID0+ICdjJztcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBudGgoYXJyYXksIG4pIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGJhc2VOdGgoYXJyYXksIHRvSW50ZWdlcihuKSkgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwgZ2l2ZW4gdmFsdWVzIGZyb20gYGFycmF5YCB1c2luZ1xuICAgICAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy53aXRob3V0YCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLiBVc2UgYF8ucmVtb3ZlYFxuICAgICAqIHRvIHJlbW92ZSBlbGVtZW50cyBmcm9tIGFuIGFycmF5IGJ5IHByZWRpY2F0ZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydhJywgJ2InLCAnYycsICdhJywgJ2InLCAnYyddO1xuICAgICAqXG4gICAgICogXy5wdWxsKGFycmF5LCAnYScsICdjJyk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsnYicsICdiJ11cbiAgICAgKi9cbiAgICB2YXIgcHVsbCA9IGJhc2VSZXN0KHB1bGxBbGwpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wdWxsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGFuIGFycmF5IG9mIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmRpZmZlcmVuY2VgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydhJywgJ2InLCAnYycsICdhJywgJ2InLCAnYyddO1xuICAgICAqXG4gICAgICogXy5wdWxsQWxsKGFycmF5LCBbJ2EnLCAnYyddKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWydiJywgJ2InXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHB1bGxBbGwoYXJyYXksIHZhbHVlcykge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGggJiYgdmFsdWVzICYmIHZhbHVlcy5sZW5ndGgpXG4gICAgICAgID8gYmFzZVB1bGxBbGwoYXJyYXksIHZhbHVlcylcbiAgICAgICAgOiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnB1bGxBbGxgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIGFuZCBgdmFsdWVzYCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uXG4gICAgICogYnkgd2hpY2ggdGhleSdyZSBjb21wYXJlZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmRpZmZlcmVuY2VCeWAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gcmVtb3ZlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gW3sgJ3gnOiAxIH0sIHsgJ3gnOiAyIH0sIHsgJ3gnOiAzIH0sIHsgJ3gnOiAxIH1dO1xuICAgICAqXG4gICAgICogXy5wdWxsQWxsQnkoYXJyYXksIFt7ICd4JzogMSB9LCB7ICd4JzogMyB9XSwgJ3gnKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAyIH1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gcHVsbEFsbEJ5KGFycmF5LCB2YWx1ZXMsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCAmJiB2YWx1ZXMgJiYgdmFsdWVzLmxlbmd0aClcbiAgICAgICAgPyBiYXNlUHVsbEFsbChhcnJheSwgdmFsdWVzLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpXG4gICAgICAgIDogYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wdWxsQWxsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlgIHRvIGB2YWx1ZXNgLiBUaGUgY29tcGFyYXRvciBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5kaWZmZXJlbmNlV2l0aGAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjYuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gcmVtb3ZlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMywgJ3knOiA0IH0sIHsgJ3gnOiA1LCAneSc6IDYgfV07XG4gICAgICpcbiAgICAgKiBfLnB1bGxBbGxXaXRoKGFycmF5LCBbeyAneCc6IDMsICd5JzogNCB9XSwgXy5pc0VxdWFsKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDUsICd5JzogNiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHB1bGxBbGxXaXRoKGFycmF5LCB2YWx1ZXMsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoICYmIHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoKVxuICAgICAgICA/IGJhc2VQdWxsQWxsKGFycmF5LCB2YWx1ZXMsIHVuZGVmaW5lZCwgY29tcGFyYXRvcilcbiAgICAgICAgOiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGVsZW1lbnRzIGZyb20gYGFycmF5YCBjb3JyZXNwb25kaW5nIHRvIGBpbmRleGVzYCBhbmQgcmV0dXJucyBhblxuICAgICAqIGFycmF5IG9mIHJlbW92ZWQgZWxlbWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmF0YCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0gey4uLihudW1iZXJ8bnVtYmVyW10pfSBbaW5kZXhlc10gVGhlIGluZGV4ZXMgb2YgZWxlbWVudHMgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHJlbW92ZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnZCddO1xuICAgICAqIHZhciBwdWxsZWQgPSBfLnB1bGxBdChhcnJheSwgWzEsIDNdKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYyddXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhwdWxsZWQpO1xuICAgICAqIC8vID0+IFsnYicsICdkJ11cbiAgICAgKi9cbiAgICB2YXIgcHVsbEF0ID0gZmxhdFJlc3QoZnVuY3Rpb24oYXJyYXksIGluZGV4ZXMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBiYXNlQXQoYXJyYXksIGluZGV4ZXMpO1xuXG4gICAgICBiYXNlUHVsbEF0KGFycmF5LCBhcnJheU1hcChpbmRleGVzLCBmdW5jdGlvbihpbmRleCkge1xuICAgICAgICByZXR1cm4gaXNJbmRleChpbmRleCwgbGVuZ3RoKSA/ICtpbmRleCA6IGluZGV4O1xuICAgICAgfSkuc29ydChjb21wYXJlQXNjZW5kaW5nKSk7XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBlbGVtZW50cyBmcm9tIGBhcnJheWAgdGhhdCBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3JcbiAgICAgKiBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiB0aGUgcmVtb3ZlZCBlbGVtZW50cy4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8uZmlsdGVyYCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLiBVc2UgYF8ucHVsbGBcbiAgICAgKiB0byBwdWxsIGVsZW1lbnRzIGZyb20gYW4gYXJyYXkgYnkgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiByZW1vdmVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMiwgMywgNF07XG4gICAgICogdmFyIGV2ZW5zID0gXy5yZW1vdmUoYXJyYXksIGZ1bmN0aW9uKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICUgMiA9PSAwO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxLCAzXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coZXZlbnMpO1xuICAgICAqIC8vID0+IFsyLCA0XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlbW92ZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBpZiAoIShhcnJheSAmJiBhcnJheS5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBpbmRleGVzID0gW10sXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICBwcmVkaWNhdGUgPSBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICAgIGluZGV4ZXMucHVzaChpbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJhc2VQdWxsQXQoYXJyYXksIGluZGV4ZXMpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXZlcnNlcyBgYXJyYXlgIHNvIHRoYXQgdGhlIGZpcnN0IGVsZW1lbnQgYmVjb21lcyB0aGUgbGFzdCwgdGhlIHNlY29uZFxuICAgICAqIGVsZW1lbnQgYmVjb21lcyB0aGUgc2Vjb25kIHRvIGxhc3QsIGFuZCBzbyBvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAgYW5kIGlzIGJhc2VkIG9uXG4gICAgICogW2BBcnJheSNyZXZlcnNlYF0oaHR0cHM6Ly9tZG4uaW8vQXJyYXkvcmV2ZXJzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMiwgM107XG4gICAgICpcbiAgICAgKiBfLnJldmVyc2UoYXJyYXkpO1xuICAgICAqIC8vID0+IFszLCAyLCAxXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFszLCAyLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJldmVyc2UoYXJyYXkpIHtcbiAgICAgIHJldHVybiBhcnJheSA9PSBudWxsID8gYXJyYXkgOiBuYXRpdmVSZXZlcnNlLmNhbGwoYXJyYXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIGZyb20gYHN0YXJ0YCB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGBlbmRgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIHVzZWQgaW5zdGVhZCBvZlxuICAgICAqIFtgQXJyYXkjc2xpY2VgXShodHRwczovL21kbi5pby9BcnJheS9zbGljZSkgdG8gZW5zdXJlIGRlbnNlIGFycmF5cyBhcmVcbiAgICAgKiByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzbGljZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNsaWNlKGFycmF5LCBzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBpZiAoZW5kICYmIHR5cGVvZiBlbmQgIT0gJ251bWJlcicgJiYgaXNJdGVyYXRlZUNhbGwoYXJyYXksIHN0YXJ0LCBlbmQpKSB7XG4gICAgICAgIHN0YXJ0ID0gMDtcbiAgICAgICAgZW5kID0gbGVuZ3RoO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHN0YXJ0ID0gc3RhcnQgPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIoc3RhcnQpO1xuICAgICAgICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IHRvSW50ZWdlcihlbmQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlcyBhIGJpbmFyeSBzZWFyY2ggdG8gZGV0ZXJtaW5lIHRoZSBsb3dlc3QgaW5kZXggYXQgd2hpY2ggYHZhbHVlYFxuICAgICAqIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIGBhcnJheWAgaW4gb3JkZXIgdG8gbWFpbnRhaW4gaXRzIHNvcnQgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgc29ydGVkIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZEluZGV4KFszMCwgNTBdLCA0MCk7XG4gICAgICogLy8gPT4gMVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleChhcnJheSwgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc29ydGVkSW5kZXhgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgZm9yIGB2YWx1ZWAgYW5kIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIHRvIGNvbXB1dGUgdGhlaXJcbiAgICAgKiBzb3J0IHJhbmtpbmcuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAqICBpbnRvIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiA0IH0sIHsgJ3gnOiA1IH1dO1xuICAgICAqXG4gICAgICogXy5zb3J0ZWRJbmRleEJ5KG9iamVjdHMsIHsgJ3gnOiA0IH0sIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ueDsgfSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5zb3J0ZWRJbmRleEJ5KG9iamVjdHMsIHsgJ3gnOiA0IH0sICd4Jyk7XG4gICAgICogLy8gPT4gMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZEluZGV4QnkoYXJyYXksIHZhbHVlLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmluZGV4T2ZgIGV4Y2VwdCB0aGF0IGl0IHBlcmZvcm1zIGEgYmluYXJ5XG4gICAgICogc2VhcmNoIG9uIGEgc29ydGVkIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkSW5kZXhPZihbNCwgNSwgNSwgNSwgNl0sIDUpO1xuICAgICAqIC8vID0+IDFcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRJbmRleE9mKGFycmF5LCB2YWx1ZSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCkge1xuICAgICAgICB2YXIgaW5kZXggPSBiYXNlU29ydGVkSW5kZXgoYXJyYXksIHZhbHVlKTtcbiAgICAgICAgaWYgKGluZGV4IDwgbGVuZ3RoICYmIGVxKGFycmF5W2luZGV4XSwgdmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zb3J0ZWRJbmRleGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUgaGlnaGVzdFxuICAgICAqIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkIGludG8gYGFycmF5YCBpbiBvcmRlciB0b1xuICAgICAqIG1haW50YWluIGl0cyBzb3J0IG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICogIGludG8gYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb3J0ZWRMYXN0SW5kZXgoWzQsIDUsIDUsIDUsIDZdLCA1KTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkTGFzdEluZGV4KGFycmF5LCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleChhcnJheSwgdmFsdWUsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc29ydGVkTGFzdEluZGV4YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIGZvciBgdmFsdWVgIGFuZCBlYWNoIGVsZW1lbnQgb2YgYGFycmF5YCB0byBjb21wdXRlIHRoZWlyXG4gICAgICogc29ydCByYW5raW5nLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogNCB9LCB7ICd4JzogNSB9XTtcbiAgICAgKlxuICAgICAqIF8uc29ydGVkTGFzdEluZGV4Qnkob2JqZWN0cywgeyAneCc6IDQgfSwgZnVuY3Rpb24obykgeyByZXR1cm4gby54OyB9KTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnNvcnRlZExhc3RJbmRleEJ5KG9iamVjdHMsIHsgJ3gnOiA0IH0sICd4Jyk7XG4gICAgICogLy8gPT4gMVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZExhc3RJbmRleEJ5KGFycmF5LCB2YWx1ZSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlU29ydGVkSW5kZXhCeShhcnJheSwgdmFsdWUsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5sYXN0SW5kZXhPZmAgZXhjZXB0IHRoYXQgaXQgcGVyZm9ybXMgYSBiaW5hcnlcbiAgICAgKiBzZWFyY2ggb24gYSBzb3J0ZWQgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb3J0ZWRMYXN0SW5kZXhPZihbNCwgNSwgNSwgNSwgNl0sIDUpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRMYXN0SW5kZXhPZihhcnJheSwgdmFsdWUpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGgpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gYmFzZVNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSwgdHJ1ZSkgLSAxO1xuICAgICAgICBpZiAoZXEoYXJyYXlbaW5kZXhdLCB2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaXFgIGV4Y2VwdCB0aGF0IGl0J3MgZGVzaWduZWQgYW5kIG9wdGltaXplZFxuICAgICAqIGZvciBzb3J0ZWQgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkVW5pcShbMSwgMSwgMl0pO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZFVuaXEoYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VTb3J0ZWRVbmlxKGFycmF5KVxuICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pcUJ5YCBleGNlcHQgdGhhdCBpdCdzIGRlc2lnbmVkIGFuZCBvcHRpbWl6ZWRcbiAgICAgKiBmb3Igc29ydGVkIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkVW5pcUJ5KFsxLjEsIDEuMiwgMi4zLCAyLjRdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiBbMS4xLCAyLjNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkVW5pcUJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZVNvcnRlZFVuaXEoYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBidXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGFpbChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFsyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRhaWwoYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlU2xpY2UoYXJyYXksIDEsIGxlbmd0aCkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGBuYCBlbGVtZW50cyB0YWtlbiBmcm9tIHRoZSBiZWdpbm5pbmcuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gdGFrZS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50YWtlKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzFdXG4gICAgICpcbiAgICAgKiBfLnRha2UoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIF8udGFrZShbMSwgMiwgM10sIDUpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogXy50YWtlKFsxLCAyLCAzXSwgMCk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YWtlKGFycmF5LCBuLCBndWFyZCkge1xuICAgICAgaWYgKCEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBuID0gKGd1YXJkIHx8IG4gPT09IHVuZGVmaW5lZCkgPyAxIDogdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgMCwgbiA8IDAgPyAwIDogbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgdGFrZW4gZnJvbSB0aGUgZW5kLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHRha2UuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGFrZVJpZ2h0KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzNdXG4gICAgICpcbiAgICAgKiBfLnRha2VSaWdodChbMSwgMiwgM10sIDIpO1xuICAgICAqIC8vID0+IFsyLCAzXVxuICAgICAqXG4gICAgICogXy50YWtlUmlnaHQoWzEsIDIsIDNdLCA1KTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIF8udGFrZVJpZ2h0KFsxLCAyLCAzXSwgMCk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YWtlUmlnaHQoYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBuID0gKGd1YXJkIHx8IG4gPT09IHVuZGVmaW5lZCkgPyAxIDogdG9JbnRlZ2VyKG4pO1xuICAgICAgbiA9IGxlbmd0aCAtIG47XG4gICAgICByZXR1cm4gYmFzZVNsaWNlKGFycmF5LCBuIDwgMCA/IDAgOiBuLCBsZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIHdpdGggZWxlbWVudHMgdGFrZW4gZnJvbSB0aGUgZW5kLiBFbGVtZW50cyBhcmVcbiAgICAgKiB0YWtlbiB1bnRpbCBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGhcbiAgICAgKiB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnRha2VSaWdodFdoaWxlKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlUmlnaHRXaGlsZSh1c2VycywgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlUmlnaHRXaGlsZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVJpZ2h0V2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRha2VSaWdodFdoaWxlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VXaGlsZShhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgZmFsc2UsIHRydWUpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBlbGVtZW50cyB0YWtlbiBmcm9tIHRoZSBiZWdpbm5pbmcuIEVsZW1lbnRzXG4gICAgICogYXJlIHRha2VuIHVudGlsIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aFxuICAgICAqIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleCwgYXJyYXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8udGFrZVdoaWxlKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VXaGlsZSh1c2VycywgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVdoaWxlKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknLCAnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VXaGlsZSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFrZVdoaWxlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VXaGlsZShhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMsIGluIG9yZGVyLCBmcm9tIGFsbCBnaXZlbiBhcnJheXMgdXNpbmdcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21iaW5lZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5pb24oWzJdLCBbMSwgMl0pO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqL1xuICAgIHZhciB1bmlvbiA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pb25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBlYWNoIGBhcnJheXNgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnlcbiAgICAgKiB3aGljaCB1bmlxdWVuZXNzIGlzIGNvbXB1dGVkLiBSZXN1bHQgdmFsdWVzIGFyZSBjaG9zZW4gZnJvbSB0aGUgZmlyc3RcbiAgICAgKiBhcnJheSBpbiB3aGljaCB0aGUgdmFsdWUgb2NjdXJzLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDpcbiAgICAgKiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21iaW5lZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5pb25CeShbMi4xXSwgWzEuMiwgMi4zXSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzIuMSwgMS4yXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy51bmlvbkJ5KFt7ICd4JzogMSB9XSwgW3sgJ3gnOiAyIH0sIHsgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSB9LCB7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIHZhciB1bmlvbkJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgaXRlcmF0ZWUgPSBsYXN0KGFycmF5cyk7XG4gICAgICBpZiAoaXNBcnJheUxpa2VPYmplY3QoaXRlcmF0ZWUpKSB7XG4gICAgICAgIGl0ZXJhdGVlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlvbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5c2AuIFJlc3VsdCB2YWx1ZXMgYXJlIGNob3NlbiBmcm9tXG4gICAgICogdGhlIGZpcnN0IGFycmF5IGluIHdoaWNoIHRoZSB2YWx1ZSBvY2N1cnMuIFRoZSBjb21wYXJhdG9yIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tYmluZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV07XG4gICAgICogdmFyIG90aGVycyA9IFt7ICd4JzogMSwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gICAgICpcbiAgICAgKiBfLnVuaW9uV2l0aChvYmplY3RzLCBvdGhlcnMsIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAxIH1dXG4gICAgICovXG4gICAgdmFyIHVuaW9uV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGNvbXBhcmF0b3IgPSBsYXN0KGFycmF5cyk7XG4gICAgICBjb21wYXJhdG9yID0gdHlwZW9mIGNvbXBhcmF0b3IgPT0gJ2Z1bmN0aW9uJyA/IGNvbXBhcmF0b3IgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gYmFzZVVuaXEoYmFzZUZsYXR0ZW4oYXJyYXlzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSksIHVuZGVmaW5lZCwgY29tcGFyYXRvcik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZHVwbGljYXRlLWZyZWUgdmVyc2lvbiBvZiBhbiBhcnJheSwgdXNpbmdcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucywgaW4gd2hpY2ggb25seSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBlYWNoIGVsZW1lbnRcbiAgICAgKiBpcyBrZXB0LiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyXG4gICAgICogaW4gdGhlIGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5pcShbMiwgMSwgMl0pO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuaXEoYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGJhc2VVbmlxKGFycmF5KSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pcWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IGluIGBhcnJheWAgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvbiBieSB3aGljaFxuICAgICAqIHVuaXF1ZW5lc3MgaXMgY29tcHV0ZWQuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzIGRldGVybWluZWQgYnkgdGhlXG4gICAgICogb3JkZXIgdGhleSBvY2N1ciBpbiB0aGUgYXJyYXkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OlxuICAgICAqICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5pcUJ5KFsyLjEsIDEuMiwgMi4zXSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzIuMSwgMS4yXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy51bmlxQnkoW3sgJ3gnOiAxIH0sIHsgJ3gnOiAyIH0sIHsgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSB9LCB7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuaXFCeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGJhc2VVbmlxKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlxYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlgLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpc1xuICAgICAqIGRldGVybWluZWQgYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5LlRoZSBjb21wYXJhdG9yIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gICAgICpcbiAgICAgKiBfLnVuaXFXaXRoKG9iamVjdHMsIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuaXFXaXRoKGFycmF5LCBjb21wYXJhdG9yKSB7XG4gICAgICBjb21wYXJhdG9yID0gdHlwZW9mIGNvbXBhcmF0b3IgPT0gJ2Z1bmN0aW9uJyA/IGNvbXBhcmF0b3IgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlVW5pcShhcnJheSwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uemlwYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGFuIGFycmF5IG9mIGdyb3VwZWRcbiAgICAgKiBlbGVtZW50cyBhbmQgY3JlYXRlcyBhbiBhcnJheSByZWdyb3VwaW5nIHRoZSBlbGVtZW50cyB0byB0aGVpciBwcmUtemlwXG4gICAgICogY29uZmlndXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjIuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcmVncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgemlwcGVkID0gXy56aXAoWydhJywgJ2InXSwgWzEsIDJdLCBbdHJ1ZSwgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBbWydhJywgMSwgdHJ1ZV0sIFsnYicsIDIsIGZhbHNlXV1cbiAgICAgKlxuICAgICAqIF8udW56aXAoemlwcGVkKTtcbiAgICAgKiAvLyA9PiBbWydhJywgJ2InXSwgWzEsIDJdLCBbdHJ1ZSwgZmFsc2VdXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuemlwKGFycmF5KSB7XG4gICAgICBpZiAoIShhcnJheSAmJiBhcnJheS5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSAwO1xuICAgICAgYXJyYXkgPSBhcnJheUZpbHRlcihhcnJheSwgZnVuY3Rpb24oZ3JvdXApIHtcbiAgICAgICAgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KGdyb3VwKSkge1xuICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChncm91cC5sZW5ndGgsIGxlbmd0aCk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGJhc2VUaW1lcyhsZW5ndGgsIGZ1bmN0aW9uKGluZGV4KSB7XG4gICAgICAgIHJldHVybiBhcnJheU1hcChhcnJheSwgYmFzZVByb3BlcnR5KGluZGV4KSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuemlwYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgdG8gc3BlY2lmeVxuICAgICAqIGhvdyByZWdyb3VwZWQgdmFsdWVzIHNob3VsZCBiZSBjb21iaW5lZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aGVcbiAgICAgKiBlbGVtZW50cyBvZiBlYWNoIGdyb3VwOiAoLi4uZ3JvdXApLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIHRvIGNvbWJpbmVcbiAgICAgKiAgcmVncm91cGVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiByZWdyb3VwZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB6aXBwZWQgPSBfLnppcChbMSwgMl0sIFsxMCwgMjBdLCBbMTAwLCAyMDBdKTtcbiAgICAgKiAvLyA9PiBbWzEsIDEwLCAxMDBdLCBbMiwgMjAsIDIwMF1dXG4gICAgICpcbiAgICAgKiBfLnVuemlwV2l0aCh6aXBwZWQsIF8uYWRkKTtcbiAgICAgKiAvLyA9PiBbMywgMzAsIDMwMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bnppcFdpdGgoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICBpZiAoIShhcnJheSAmJiBhcnJheS5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSB1bnppcChhcnJheSk7XG4gICAgICBpZiAoaXRlcmF0ZWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5TWFwKHJlc3VsdCwgZnVuY3Rpb24oZ3JvdXApIHtcbiAgICAgICAgcmV0dXJuIGFwcGx5KGl0ZXJhdGVlLCB1bmRlZmluZWQsIGdyb3VwKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgZXhjbHVkaW5nIGFsbCBnaXZlbiB2YWx1ZXMgdXNpbmdcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ucHVsbGAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0gey4uLip9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQHNlZSBfLmRpZmZlcmVuY2UsIF8ueG9yXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ud2l0aG91dChbMiwgMSwgMiwgM10sIDEsIDIpO1xuICAgICAqIC8vID0+IFszXVxuICAgICAqL1xuICAgIHZhciB3aXRob3V0ID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXksIHZhbHVlcykge1xuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KGFycmF5KVxuICAgICAgICA/IGJhc2VEaWZmZXJlbmNlKGFycmF5LCB2YWx1ZXMpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMgdGhhdCBpcyB0aGVcbiAgICAgKiBbc3ltbWV0cmljIGRpZmZlcmVuY2VdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N5bW1ldHJpY19kaWZmZXJlbmNlKVxuICAgICAqIG9mIHRoZSBnaXZlbiBhcnJheXMuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzIGRldGVybWluZWQgYnkgdGhlIG9yZGVyXG4gICAgICogdGhleSBvY2N1ciBpbiB0aGUgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAc2VlIF8uZGlmZmVyZW5jZSwgXy53aXRob3V0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ueG9yKFsyLCAxXSwgWzIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMSwgM11cbiAgICAgKi9cbiAgICB2YXIgeG9yID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICByZXR1cm4gYmFzZVhvcihhcnJheUZpbHRlcihhcnJheXMsIGlzQXJyYXlMaWtlT2JqZWN0KSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnhvcmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IG9mIGVhY2ggYGFycmF5c2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvbiBieVxuICAgICAqIHdoaWNoIGJ5IHdoaWNoIHRoZXkncmUgY29tcGFyZWQuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzIGRldGVybWluZWRcbiAgICAgKiBieSB0aGUgb3JkZXIgdGhleSBvY2N1ciBpbiB0aGUgYXJyYXlzLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZVxuICAgICAqIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ueG9yQnkoWzIuMSwgMS4yXSwgWzIuMywgMy40XSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzEuMiwgMy40XVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy54b3JCeShbeyAneCc6IDEgfV0sIFt7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDIgfV1cbiAgICAgKi9cbiAgICB2YXIgeG9yQnkgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBpdGVyYXRlZSA9IGxhc3QoYXJyYXlzKTtcbiAgICAgIGlmIChpc0FycmF5TGlrZU9iamVjdChpdGVyYXRlZSkpIHtcbiAgICAgICAgaXRlcmF0ZWUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVhvcihhcnJheUZpbHRlcihhcnJheXMsIGlzQXJyYXlMaWtlT2JqZWN0KSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ueG9yYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlzYC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXNcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyIGluIHRoZSBhcnJheXMuIFRoZSBjb21wYXJhdG9yIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV07XG4gICAgICogdmFyIG90aGVycyA9IFt7ICd4JzogMSwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gICAgICpcbiAgICAgKiBfLnhvcldpdGgob2JqZWN0cywgb3RoZXJzLCBfLmlzRXF1YWwpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMiwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDEgfV1cbiAgICAgKi9cbiAgICB2YXIgeG9yV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGNvbXBhcmF0b3IgPSBsYXN0KGFycmF5cyk7XG4gICAgICBjb21wYXJhdG9yID0gdHlwZW9mIGNvbXBhcmF0b3IgPT0gJ2Z1bmN0aW9uJyA/IGNvbXBhcmF0b3IgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gYmFzZVhvcihhcnJheUZpbHRlcihhcnJheXMsIGlzQXJyYXlMaWtlT2JqZWN0KSwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cywgdGhlIGZpcnN0IG9mIHdoaWNoIGNvbnRhaW5zIHRoZVxuICAgICAqIGZpcnN0IGVsZW1lbnRzIG9mIHRoZSBnaXZlbiBhcnJheXMsIHRoZSBzZWNvbmQgb2Ygd2hpY2ggY29udGFpbnMgdGhlXG4gICAgICogc2Vjb25kIGVsZW1lbnRzIG9mIHRoZSBnaXZlbiBhcnJheXMsIGFuZCBzbyBvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnppcChbJ2EnLCAnYiddLCBbMSwgMl0sIFt0cnVlLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IFtbJ2EnLCAxLCB0cnVlXSwgWydiJywgMiwgZmFsc2VdXVxuICAgICAqL1xuICAgIHZhciB6aXAgPSBiYXNlUmVzdCh1bnppcCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZyb21QYWlyc2AgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyB0d28gYXJyYXlzLFxuICAgICAqIG9uZSBvZiBwcm9wZXJ0eSBpZGVudGlmaWVycyBhbmQgb25lIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gW3Byb3BzPVtdXSBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3ZhbHVlcz1bXV0gVGhlIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnppcE9iamVjdChbJ2EnLCAnYiddLCBbMSwgMl0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHppcE9iamVjdChwcm9wcywgdmFsdWVzKSB7XG4gICAgICByZXR1cm4gYmFzZVppcE9iamVjdChwcm9wcyB8fCBbXSwgdmFsdWVzIHx8IFtdLCBhc3NpZ25WYWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy56aXBPYmplY3RgIGV4Y2VwdCB0aGF0IGl0IHN1cHBvcnRzIHByb3BlcnR5IHBhdGhzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gW3Byb3BzPVtdXSBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3ZhbHVlcz1bXV0gVGhlIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnppcE9iamVjdERlZXAoWydhLmJbMF0uYycsICdhLmJbMV0uZCddLCBbMSwgMl0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiB7ICdiJzogW3sgJ2MnOiAxIH0sIHsgJ2QnOiAyIH1dIH0gfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHppcE9iamVjdERlZXAocHJvcHMsIHZhbHVlcykge1xuICAgICAgcmV0dXJuIGJhc2VaaXBPYmplY3QocHJvcHMgfHwgW10sIHZhbHVlcyB8fCBbXSwgYmFzZVNldCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy56aXBgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB0byBzcGVjaWZ5XG4gICAgICogaG93IGdyb3VwZWQgdmFsdWVzIHNob3VsZCBiZSBjb21iaW5lZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aGVcbiAgICAgKiBlbGVtZW50cyBvZiBlYWNoIGdyb3VwOiAoLi4uZ3JvdXApLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBwcm9jZXNzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gdG8gY29tYmluZVxuICAgICAqICBncm91cGVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnppcFdpdGgoWzEsIDJdLCBbMTAsIDIwXSwgWzEwMCwgMjAwXSwgZnVuY3Rpb24oYSwgYiwgYykge1xuICAgICAqICAgcmV0dXJuIGEgKyBiICsgYztcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBbMTExLCAyMjJdXG4gICAgICovXG4gICAgdmFyIHppcFdpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheXMubGVuZ3RoLFxuICAgICAgICAgIGl0ZXJhdGVlID0gbGVuZ3RoID4gMSA/IGFycmF5c1tsZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcblxuICAgICAgaXRlcmF0ZWUgPSB0eXBlb2YgaXRlcmF0ZWUgPT0gJ2Z1bmN0aW9uJyA/IChhcnJheXMucG9wKCksIGl0ZXJhdGVlKSA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB1bnppcFdpdGgoYXJyYXlzLCBpdGVyYXRlZSk7XG4gICAgfSk7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZSB0aGF0IHdyYXBzIGB2YWx1ZWAgd2l0aCBleHBsaWNpdCBtZXRob2RcbiAgICAgKiBjaGFpbiBzZXF1ZW5jZXMgZW5hYmxlZC4gVGhlIHJlc3VsdCBvZiBzdWNoIHNlcXVlbmNlcyBtdXN0IGJlIHVud3JhcHBlZFxuICAgICAqIHdpdGggYF8jdmFsdWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMy4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHdyYXAuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhZ2UnOiAzNiB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIHZhciB5b3VuZ2VzdCA9IF9cbiAgICAgKiAgIC5jaGFpbih1c2VycylcbiAgICAgKiAgIC5zb3J0QnkoJ2FnZScpXG4gICAgICogICAubWFwKGZ1bmN0aW9uKG8pIHtcbiAgICAgKiAgICAgcmV0dXJuIG8udXNlciArICcgaXMgJyArIG8uYWdlO1xuICAgICAqICAgfSlcbiAgICAgKiAgIC5oZWFkKClcbiAgICAgKiAgIC52YWx1ZSgpO1xuICAgICAqIC8vID0+ICdwZWJibGVzIGlzIDEnXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2hhaW4odmFsdWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSBsb2Rhc2godmFsdWUpO1xuICAgICAgcmVzdWx0Ll9fY2hhaW5fXyA9IHRydWU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGludm9rZXMgYGludGVyY2VwdG9yYCBhbmQgcmV0dXJucyBgdmFsdWVgLiBUaGUgaW50ZXJjZXB0b3JcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OyAodmFsdWUpLiBUaGUgcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0b1xuICAgICAqIFwidGFwIGludG9cIiBhIG1ldGhvZCBjaGFpbiBzZXF1ZW5jZSBpbiBvcmRlciB0byBtb2RpZnkgaW50ZXJtZWRpYXRlIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvdmlkZSB0byBgaW50ZXJjZXB0b3JgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGludGVyY2VwdG9yIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgYHZhbHVlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXyhbMSwgMiwgM10pXG4gICAgICogIC50YXAoZnVuY3Rpb24oYXJyYXkpIHtcbiAgICAgKiAgICAvLyBNdXRhdGUgaW5wdXQgYXJyYXkuXG4gICAgICogICAgYXJyYXkucG9wKCk7XG4gICAgICogIH0pXG4gICAgICogIC5yZXZlcnNlKClcbiAgICAgKiAgLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFwKHZhbHVlLCBpbnRlcmNlcHRvcikge1xuICAgICAgaW50ZXJjZXB0b3IodmFsdWUpO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udGFwYCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSByZXN1bHQgb2YgYGludGVyY2VwdG9yYC5cbiAgICAgKiBUaGUgcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0byBcInBhc3MgdGhydVwiIHZhbHVlcyByZXBsYWNpbmcgaW50ZXJtZWRpYXRlXG4gICAgICogcmVzdWx0cyBpbiBhIG1ldGhvZCBjaGFpbiBzZXF1ZW5jZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm92aWRlIHRvIGBpbnRlcmNlcHRvcmAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaW50ZXJjZXB0b3IgVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGBpbnRlcmNlcHRvcmAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8oJyAgYWJjICAnKVxuICAgICAqICAuY2hhaW4oKVxuICAgICAqICAudHJpbSgpXG4gICAgICogIC50aHJ1KGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICogICAgcmV0dXJuIFt2YWx1ZV07XG4gICAgICogIH0pXG4gICAgICogIC52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsnYWJjJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0aHJ1KHZhbHVlLCBpbnRlcmNlcHRvcikge1xuICAgICAgcmV0dXJuIGludGVyY2VwdG9yKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB0aGUgd3JhcHBlciB2ZXJzaW9uIG9mIGBfLmF0YC5cbiAgICAgKlxuICAgICAqIEBuYW1lIGF0XG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfSwgNF0gfTtcbiAgICAgKlxuICAgICAqIF8ob2JqZWN0KS5hdChbJ2FbMF0uYi5jJywgJ2FbMV0nXSkudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbMywgNF1cbiAgICAgKi9cbiAgICB2YXIgd3JhcHBlckF0ID0gZmxhdFJlc3QoZnVuY3Rpb24ocGF0aHMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBwYXRocy5sZW5ndGgsXG4gICAgICAgICAgc3RhcnQgPSBsZW5ndGggPyBwYXRoc1swXSA6IDAsXG4gICAgICAgICAgdmFsdWUgPSB0aGlzLl9fd3JhcHBlZF9fLFxuICAgICAgICAgIGludGVyY2VwdG9yID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBiYXNlQXQob2JqZWN0LCBwYXRocyk7IH07XG5cbiAgICAgIGlmIChsZW5ndGggPiAxIHx8IHRoaXMuX19hY3Rpb25zX18ubGVuZ3RoIHx8XG4gICAgICAgICAgISh2YWx1ZSBpbnN0YW5jZW9mIExhenlXcmFwcGVyKSB8fCAhaXNJbmRleChzdGFydCkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGhydShpbnRlcmNlcHRvcik7XG4gICAgICB9XG4gICAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKHN0YXJ0LCArc3RhcnQgKyAobGVuZ3RoID8gMSA6IDApKTtcbiAgICAgIHZhbHVlLl9fYWN0aW9uc19fLnB1c2goe1xuICAgICAgICAnZnVuYyc6IHRocnUsXG4gICAgICAgICdhcmdzJzogW2ludGVyY2VwdG9yXSxcbiAgICAgICAgJ3RoaXNBcmcnOiB1bmRlZmluZWRcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHZhbHVlLCB0aGlzLl9fY2hhaW5fXykudGhydShmdW5jdGlvbihhcnJheSkge1xuICAgICAgICBpZiAobGVuZ3RoICYmICFhcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICBhcnJheS5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFycmF5O1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZSB3aXRoIGV4cGxpY2l0IG1ldGhvZCBjaGFpbiBzZXF1ZW5jZXMgZW5hYmxlZC5cbiAgICAgKlxuICAgICAqIEBuYW1lIGNoYWluXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIEEgc2VxdWVuY2Ugd2l0aG91dCBleHBsaWNpdCBjaGFpbmluZy5cbiAgICAgKiBfKHVzZXJzKS5oZWFkKCk7XG4gICAgICogLy8gPT4geyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYgfVxuICAgICAqXG4gICAgICogLy8gQSBzZXF1ZW5jZSB3aXRoIGV4cGxpY2l0IGNoYWluaW5nLlxuICAgICAqIF8odXNlcnMpXG4gICAgICogICAuY2hhaW4oKVxuICAgICAqICAgLmhlYWQoKVxuICAgICAqICAgLnBpY2soJ3VzZXInKVxuICAgICAqICAgLnZhbHVlKCk7XG4gICAgICogLy8gPT4geyAndXNlcic6ICdiYXJuZXknIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyQ2hhaW4oKSB7XG4gICAgICByZXR1cm4gY2hhaW4odGhpcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhlY3V0ZXMgdGhlIGNoYWluIHNlcXVlbmNlIGFuZCByZXR1cm5zIHRoZSB3cmFwcGVkIHJlc3VsdC5cbiAgICAgKlxuICAgICAqIEBuYW1lIGNvbW1pdFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMi4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMl07XG4gICAgICogdmFyIHdyYXBwZWQgPSBfKGFycmF5KS5wdXNoKDMpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogd3JhcHBlZCA9IHdyYXBwZWQuY29tbWl0KCk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogd3JhcHBlZC5sYXN0KCk7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJDb21taXQoKSB7XG4gICAgICByZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIodGhpcy52YWx1ZSgpLCB0aGlzLl9fY2hhaW5fXyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbmV4dCB2YWx1ZSBvbiBhIHdyYXBwZWQgb2JqZWN0IGZvbGxvd2luZyB0aGVcbiAgICAgKiBbaXRlcmF0b3IgcHJvdG9jb2xdKGh0dHBzOi8vbWRuLmlvL2l0ZXJhdGlvbl9wcm90b2NvbHMjaXRlcmF0b3IpLlxuICAgICAqXG4gICAgICogQG5hbWUgbmV4dFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5leHQgaXRlcmF0b3IgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB3cmFwcGVkID0gXyhbMSwgMl0pO1xuICAgICAqXG4gICAgICogd3JhcHBlZC5uZXh0KCk7XG4gICAgICogLy8gPT4geyAnZG9uZSc6IGZhbHNlLCAndmFsdWUnOiAxIH1cbiAgICAgKlxuICAgICAqIHdyYXBwZWQubmV4dCgpO1xuICAgICAqIC8vID0+IHsgJ2RvbmUnOiBmYWxzZSwgJ3ZhbHVlJzogMiB9XG4gICAgICpcbiAgICAgKiB3cmFwcGVkLm5leHQoKTtcbiAgICAgKiAvLyA9PiB7ICdkb25lJzogdHJ1ZSwgJ3ZhbHVlJzogdW5kZWZpbmVkIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyTmV4dCgpIHtcbiAgICAgIGlmICh0aGlzLl9fdmFsdWVzX18gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9fdmFsdWVzX18gPSB0b0FycmF5KHRoaXMudmFsdWUoKSk7XG4gICAgICB9XG4gICAgICB2YXIgZG9uZSA9IHRoaXMuX19pbmRleF9fID49IHRoaXMuX192YWx1ZXNfXy5sZW5ndGgsXG4gICAgICAgICAgdmFsdWUgPSBkb25lID8gdW5kZWZpbmVkIDogdGhpcy5fX3ZhbHVlc19fW3RoaXMuX19pbmRleF9fKytdO1xuXG4gICAgICByZXR1cm4geyAnZG9uZSc6IGRvbmUsICd2YWx1ZSc6IHZhbHVlIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW5hYmxlcyB0aGUgd3JhcHBlciB0byBiZSBpdGVyYWJsZS5cbiAgICAgKlxuICAgICAqIEBuYW1lIFN5bWJvbC5pdGVyYXRvclxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIHdyYXBwZXIgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oWzEsIDJdKTtcbiAgICAgKlxuICAgICAqIHdyYXBwZWRbU3ltYm9sLml0ZXJhdG9yXSgpID09PSB3cmFwcGVkO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIEFycmF5LmZyb20od3JhcHBlZCk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlclRvSXRlcmF0b3IoKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgdGhlIGNoYWluIHNlcXVlbmNlIHBsYW50aW5nIGB2YWx1ZWAgYXMgdGhlIHdyYXBwZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAbmFtZSBwbGFudFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMi4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHBsYW50LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICAgICAqICAgcmV0dXJuIG4gKiBuO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciB3cmFwcGVkID0gXyhbMSwgMl0pLm1hcChzcXVhcmUpO1xuICAgICAqIHZhciBvdGhlciA9IHdyYXBwZWQucGxhbnQoWzMsIDRdKTtcbiAgICAgKlxuICAgICAqIG90aGVyLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWzksIDE2XVxuICAgICAqXG4gICAgICogd3JhcHBlZC52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsxLCA0XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJQbGFudCh2YWx1ZSkge1xuICAgICAgdmFyIHJlc3VsdCxcbiAgICAgICAgICBwYXJlbnQgPSB0aGlzO1xuXG4gICAgICB3aGlsZSAocGFyZW50IGluc3RhbmNlb2YgYmFzZUxvZGFzaCkge1xuICAgICAgICB2YXIgY2xvbmUgPSB3cmFwcGVyQ2xvbmUocGFyZW50KTtcbiAgICAgICAgY2xvbmUuX19pbmRleF9fID0gMDtcbiAgICAgICAgY2xvbmUuX192YWx1ZXNfXyA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIHByZXZpb3VzLl9fd3JhcHBlZF9fID0gY2xvbmU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gY2xvbmU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHByZXZpb3VzID0gY2xvbmU7XG4gICAgICAgIHBhcmVudCA9IHBhcmVudC5fX3dyYXBwZWRfXztcbiAgICAgIH1cbiAgICAgIHByZXZpb3VzLl9fd3JhcHBlZF9fID0gdmFsdWU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHRoZSB3cmFwcGVyIHZlcnNpb24gb2YgYF8ucmV2ZXJzZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyB0aGUgd3JhcHBlZCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBuYW1lIHJldmVyc2VcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICAgICAqXG4gICAgICogXyhhcnJheSkucmV2ZXJzZSgpLnZhbHVlKClcbiAgICAgKiAvLyA9PiBbMywgMiwgMV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMywgMiwgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyUmV2ZXJzZSgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IHRoaXMuX193cmFwcGVkX187XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcikge1xuICAgICAgICB2YXIgd3JhcHBlZCA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgpIHtcbiAgICAgICAgICB3cmFwcGVkID0gbmV3IExhenlXcmFwcGVyKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHdyYXBwZWQgPSB3cmFwcGVkLnJldmVyc2UoKTtcbiAgICAgICAgd3JhcHBlZC5fX2FjdGlvbnNfXy5wdXNoKHtcbiAgICAgICAgICAnZnVuYyc6IHRocnUsXG4gICAgICAgICAgJ2FyZ3MnOiBbcmV2ZXJzZV0sXG4gICAgICAgICAgJ3RoaXNBcmcnOiB1bmRlZmluZWRcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXcgTG9kYXNoV3JhcHBlcih3cmFwcGVkLCB0aGlzLl9fY2hhaW5fXyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy50aHJ1KHJldmVyc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIHRoZSBjaGFpbiBzZXF1ZW5jZSB0byByZXNvbHZlIHRoZSB1bndyYXBwZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAbmFtZSB2YWx1ZVxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGFsaWFzIHRvSlNPTiwgdmFsdWVPZlxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfKFsxLCAyLCAzXSkudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyVmFsdWUoKSB7XG4gICAgICByZXR1cm4gYmFzZVdyYXBwZXJWYWx1ZSh0aGlzLl9fd3JhcHBlZF9fLCB0aGlzLl9fYWN0aW9uc19fKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiBrZXlzIGdlbmVyYXRlZCBmcm9tIHRoZSByZXN1bHRzIG9mIHJ1bm5pbmdcbiAgICAgKiBlYWNoIGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIHRocnUgYGl0ZXJhdGVlYC4gVGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgb2ZcbiAgICAgKiBlYWNoIGtleSBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBrZXkgd2FzIHJldHVybmVkIGJ5IGBpdGVyYXRlZWAuIFRoZVxuICAgICAqIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC41LjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSBrZXlzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbXBvc2VkIGFnZ3JlZ2F0ZSBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY291bnRCeShbNi4xLCA0LjIsIDYuM10sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IHsgJzQnOiAxLCAnNic6IDIgfVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5jb3VudEJ5KFsnb25lJywgJ3R3bycsICd0aHJlZSddLCAnbGVuZ3RoJyk7XG4gICAgICogLy8gPT4geyAnMyc6IDIsICc1JzogMSB9XG4gICAgICovXG4gICAgdmFyIGNvdW50QnkgPSBjcmVhdGVBZ2dyZWdhdG9yKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LCBrZXkpKSB7XG4gICAgICAgICsrcmVzdWx0W2tleV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUocmVzdWx0LCBrZXksIDEpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciAqKmFsbCoqIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYC5cbiAgICAgKiBJdGVyYXRpb24gaXMgc3RvcHBlZCBvbmNlIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIHJldHVybnMgYHRydWVgIGZvclxuICAgICAqIFtlbXB0eSBjb2xsZWN0aW9uc10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRW1wdHlfc2V0KSBiZWNhdXNlXG4gICAgICogW2V2ZXJ5dGhpbmcgaXMgdHJ1ZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVmFjdW91c190cnV0aCkgb2ZcbiAgICAgKiBlbGVtZW50cyBvZiBlbXB0eSBjb2xsZWN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbGwgZWxlbWVudHMgcGFzcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZXZlcnkoW3RydWUsIDEsIG51bGwsICd5ZXMnXSwgQm9vbGVhbik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZXZlcnkodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5ldmVyeSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZXZlcnkodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGV2ZXJ5KGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZ3VhcmQpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RXZlcnkgOiBiYXNlRXZlcnk7XG4gICAgICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBndWFyZCkpIHtcbiAgICAgICAgcHJlZGljYXRlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAsIHJldHVybmluZyBhbiBhcnJheSBvZiBhbGwgZWxlbWVudHNcbiAgICAgKiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHRocmVlXG4gICAgICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnJlbW92ZWAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gICAgICogQHNlZSBfLnJlamVjdFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcih1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgeyAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIENvbWJpbmluZyBzZXZlcmFsIHByZWRpY2F0ZXMgdXNpbmcgYF8ub3ZlckV2ZXJ5YCBvciBgXy5vdmVyU29tZWAuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIF8ub3ZlclNvbWUoW3sgJ2FnZSc6IDM2IH0sIFsnYWdlJywgNDBdXSkpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdiYXJuZXknXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbHRlcihjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RmlsdGVyIDogYmFzZUZpbHRlcjtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gLCByZXR1cm5pbmcgdGhlIGZpcnN0IGVsZW1lbnRcbiAgICAgKiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHRocmVlXG4gICAgICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PTBdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF0Y2hlZCBlbGVtZW50LCBlbHNlIGB1bmRlZmluZWRgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEsICAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmluZCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2UgPCA0MDsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0IGZvciAnYmFybmV5J1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmQodXNlcnMsIHsgJ2FnZSc6IDEsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdCBmb3IgJ3BlYmJsZXMnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0IGZvciAnZnJlZCdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZCh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdCBmb3IgJ2Jhcm5leSdcbiAgICAgKi9cbiAgICB2YXIgZmluZCA9IGNyZWF0ZUZpbmQoZmluZEluZGV4KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZGAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGBjb2xsZWN0aW9uYCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PWNvbGxlY3Rpb24ubGVuZ3RoLTFdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF0Y2hlZCBlbGVtZW50LCBlbHNlIGB1bmRlZmluZWRgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZpbmRMYXN0KFsxLCAyLCAzLCA0XSwgZnVuY3Rpb24obikge1xuICAgICAqICAgcmV0dXJuIG4gJSAyID09IDE7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIHZhciBmaW5kTGFzdCA9IGNyZWF0ZUZpbmQoZmluZExhc3RJbmRleCk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZmxhdHRlbmVkIGFycmF5IG9mIHZhbHVlcyBieSBydW5uaW5nIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmBcbiAgICAgKiB0aHJ1IGBpdGVyYXRlZWAgYW5kIGZsYXR0ZW5pbmcgdGhlIG1hcHBlZCByZXN1bHRzLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGR1cGxpY2F0ZShuKSB7XG4gICAgICogICByZXR1cm4gW24sIG5dO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8uZmxhdE1hcChbMSwgMl0sIGR1cGxpY2F0ZSk7XG4gICAgICogLy8gPT4gWzEsIDEsIDIsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdE1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VGbGF0dGVuKG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSksIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmxhdE1hcGAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgZmxhdHRlbnMgdGhlXG4gICAgICogbWFwcGVkIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGR1cGxpY2F0ZShuKSB7XG4gICAgICogICByZXR1cm4gW1tbbiwgbl1dXTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmZsYXRNYXBEZWVwKFsxLCAyXSwgZHVwbGljYXRlKTtcbiAgICAgKiAvLyA9PiBbMSwgMSwgMiwgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0TWFwRGVlcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VGbGF0dGVuKG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSksIElORklOSVRZKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZsYXRNYXBgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGZsYXR0ZW5zIHRoZVxuICAgICAqIG1hcHBlZCByZXN1bHRzIHVwIHRvIGBkZXB0aGAgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RlcHRoPTFdIFRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGR1cGxpY2F0ZShuKSB7XG4gICAgICogICByZXR1cm4gW1tbbiwgbl1dXTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmZsYXRNYXBEZXB0aChbMSwgMl0sIGR1cGxpY2F0ZSwgMik7XG4gICAgICogLy8gPT4gW1sxLCAxXSwgWzIsIDJdXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXRNYXBEZXB0aChjb2xsZWN0aW9uLCBpdGVyYXRlZSwgZGVwdGgpIHtcbiAgICAgIGRlcHRoID0gZGVwdGggPT09IHVuZGVmaW5lZCA/IDEgOiB0b0ludGVnZXIoZGVwdGgpO1xuICAgICAgcmV0dXJuIGJhc2VGbGF0dGVuKG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSksIGRlcHRoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIGVsZW1lbnQuXG4gICAgICogVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogQXMgd2l0aCBvdGhlciBcIkNvbGxlY3Rpb25zXCIgbWV0aG9kcywgb2JqZWN0cyB3aXRoIGEgXCJsZW5ndGhcIlxuICAgICAqIHByb3BlcnR5IGFyZSBpdGVyYXRlZCBsaWtlIGFycmF5cy4gVG8gYXZvaWQgdGhpcyBiZWhhdmlvciB1c2UgYF8uZm9ySW5gXG4gICAgICogb3IgYF8uZm9yT3duYCBmb3Igb2JqZWN0IGl0ZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBhbGlhcyBlYWNoXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gICAgICogQHNlZSBfLmZvckVhY2hSaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZvckVhY2goWzEsIDJdLCBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAqICAgY29uc29sZS5sb2codmFsdWUpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgYDFgIHRoZW4gYDJgLlxuICAgICAqXG4gICAgICogXy5mb3JFYWNoKHsgJ2EnOiAxLCAnYic6IDIgfSwgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdhJyB0aGVuICdiJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JFYWNoKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUVhY2ggOiBiYXNlRWFjaDtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mb3JFYWNoYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mXG4gICAgICogYGNvbGxlY3Rpb25gIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBhbGlhcyBlYWNoUmlnaHRcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAgICAgKiBAc2VlIF8uZm9yRWFjaFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZvckVhY2hSaWdodChbMSwgMl0sIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICogICBjb25zb2xlLmxvZyh2YWx1ZSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyBgMmAgdGhlbiBgMWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZm9yRWFjaFJpZ2h0KGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUVhY2hSaWdodCA6IGJhc2VFYWNoUmlnaHQ7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIGtleXMgZ2VuZXJhdGVkIGZyb20gdGhlIHJlc3VsdHMgb2YgcnVubmluZ1xuICAgICAqIGVhY2ggZWxlbWVudCBvZiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLiBUaGUgb3JkZXIgb2YgZ3JvdXBlZCB2YWx1ZXNcbiAgICAgKiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyIGluIGBjb2xsZWN0aW9uYC4gVGhlIGNvcnJlc3BvbmRpbmdcbiAgICAgKiB2YWx1ZSBvZiBlYWNoIGtleSBpcyBhbiBhcnJheSBvZiBlbGVtZW50cyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aGVcbiAgICAgKiBrZXkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb21wb3NlZCBhZ2dyZWdhdGUgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmdyb3VwQnkoWzYuMSwgNC4yLCA2LjNdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiB7ICc0JzogWzQuMl0sICc2JzogWzYuMSwgNi4zXSB9XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmdyb3VwQnkoWydvbmUnLCAndHdvJywgJ3RocmVlJ10sICdsZW5ndGgnKTtcbiAgICAgKiAvLyA9PiB7ICczJzogWydvbmUnLCAndHdvJ10sICc1JzogWyd0aHJlZSddIH1cbiAgICAgKi9cbiAgICB2YXIgZ3JvdXBCeSA9IGNyZWF0ZUFnZ3JlZ2F0b3IoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChyZXN1bHQsIGtleSkpIHtcbiAgICAgICAgcmVzdWx0W2tleV0ucHVzaCh2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUocmVzdWx0LCBrZXksIFt2YWx1ZV0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgaW4gYGNvbGxlY3Rpb25gLiBJZiBgY29sbGVjdGlvbmAgaXMgYSBzdHJpbmcsIGl0J3NcbiAgICAgKiBjaGVja2VkIGZvciBhIHN1YnN0cmluZyBvZiBgdmFsdWVgLCBvdGhlcndpc2VcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGlzIHVzZWQgZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLiBJZiBgZnJvbUluZGV4YCBpcyBuZWdhdGl2ZSwgaXQncyB1c2VkIGFzXG4gICAgICogdGhlIG9mZnNldCBmcm9tIHRoZSBlbmQgb2YgYGNvbGxlY3Rpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdHxzdHJpbmd9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PTBdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5yZWR1Y2VgLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW5jbHVkZXMoWzEsIDIsIDNdLCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluY2x1ZGVzKFsxLCAyLCAzXSwgMSwgMik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaW5jbHVkZXMoeyAnYSc6IDEsICdiJzogMiB9LCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluY2x1ZGVzKCdhYmNkJywgJ2JjJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluY2x1ZGVzKGNvbGxlY3Rpb24sIHZhbHVlLCBmcm9tSW5kZXgsIGd1YXJkKSB7XG4gICAgICBjb2xsZWN0aW9uID0gaXNBcnJheUxpa2UoY29sbGVjdGlvbikgPyBjb2xsZWN0aW9uIDogdmFsdWVzKGNvbGxlY3Rpb24pO1xuICAgICAgZnJvbUluZGV4ID0gKGZyb21JbmRleCAmJiAhZ3VhcmQpID8gdG9JbnRlZ2VyKGZyb21JbmRleCkgOiAwO1xuXG4gICAgICB2YXIgbGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGg7XG4gICAgICBpZiAoZnJvbUluZGV4IDwgMCkge1xuICAgICAgICBmcm9tSW5kZXggPSBuYXRpdmVNYXgobGVuZ3RoICsgZnJvbUluZGV4LCAwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc1N0cmluZyhjb2xsZWN0aW9uKVxuICAgICAgICA/IChmcm9tSW5kZXggPD0gbGVuZ3RoICYmIGNvbGxlY3Rpb24uaW5kZXhPZih2YWx1ZSwgZnJvbUluZGV4KSA+IC0xKVxuICAgICAgICA6ICghIWxlbmd0aCAmJiBiYXNlSW5kZXhPZihjb2xsZWN0aW9uLCB2YWx1ZSwgZnJvbUluZGV4KSA+IC0xKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VzIHRoZSBtZXRob2QgYXQgYHBhdGhgIG9mIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAsIHJldHVybmluZ1xuICAgICAqIGFuIGFycmF5IG9mIHRoZSByZXN1bHRzIG9mIGVhY2ggaW52b2tlZCBtZXRob2QuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50c1xuICAgICAqIGFyZSBwcm92aWRlZCB0byBlYWNoIGludm9rZWQgbWV0aG9kLiBJZiBgcGF0aGAgaXMgYSBmdW5jdGlvbiwgaXQncyBpbnZva2VkXG4gICAgICogZm9yLCBhbmQgYHRoaXNgIGJvdW5kIHRvLCBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtBcnJheXxGdW5jdGlvbnxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIG1ldGhvZCB0byBpbnZva2Ugb3JcbiAgICAgKiAgdGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0gey4uLip9IFthcmdzXSBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBlYWNoIG1ldGhvZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbnZva2VNYXAoW1s1LCAxLCA3XSwgWzMsIDIsIDFdXSwgJ3NvcnQnKTtcbiAgICAgKiAvLyA9PiBbWzEsIDUsIDddLCBbMSwgMiwgM11dXG4gICAgICpcbiAgICAgKiBfLmludm9rZU1hcChbMTIzLCA0NTZdLCBTdHJpbmcucHJvdG90eXBlLnNwbGl0LCAnJyk7XG4gICAgICogLy8gPT4gW1snMScsICcyJywgJzMnXSwgWyc0JywgJzUnLCAnNiddXVxuICAgICAqL1xuICAgIHZhciBpbnZva2VNYXAgPSBiYXNlUmVzdChmdW5jdGlvbihjb2xsZWN0aW9uLCBwYXRoLCBhcmdzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBpc0Z1bmMgPSB0eXBlb2YgcGF0aCA9PSAnZnVuY3Rpb24nLFxuICAgICAgICAgIHJlc3VsdCA9IGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pID8gQXJyYXkoY29sbGVjdGlvbi5sZW5ndGgpIDogW107XG5cbiAgICAgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHJlc3VsdFsrK2luZGV4XSA9IGlzRnVuYyA/IGFwcGx5KHBhdGgsIHZhbHVlLCBhcmdzKSA6IGJhc2VJbnZva2UodmFsdWUsIHBhdGgsIGFyZ3MpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2Yga2V5cyBnZW5lcmF0ZWQgZnJvbSB0aGUgcmVzdWx0cyBvZiBydW5uaW5nXG4gICAgICogZWFjaCBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYCB0aHJ1IGBpdGVyYXRlZWAuIFRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIG9mXG4gICAgICogZWFjaCBrZXkgaXMgdGhlIGxhc3QgZWxlbWVudCByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aGUga2V5LiBUaGVcbiAgICAgKiBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb21wb3NlZCBhZ2dyZWdhdGUgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbXG4gICAgICogICB7ICdkaXInOiAnbGVmdCcsICdjb2RlJzogOTcgfSxcbiAgICAgKiAgIHsgJ2Rpcic6ICdyaWdodCcsICdjb2RlJzogMTAwIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5rZXlCeShhcnJheSwgZnVuY3Rpb24obykge1xuICAgICAqICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoby5jb2RlKTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogeyAnZGlyJzogJ2xlZnQnLCAnY29kZSc6IDk3IH0sICdkJzogeyAnZGlyJzogJ3JpZ2h0JywgJ2NvZGUnOiAxMDAgfSB9XG4gICAgICpcbiAgICAgKiBfLmtleUJ5KGFycmF5LCAnZGlyJyk7XG4gICAgICogLy8gPT4geyAnbGVmdCc6IHsgJ2Rpcic6ICdsZWZ0JywgJ2NvZGUnOiA5NyB9LCAncmlnaHQnOiB7ICdkaXInOiAncmlnaHQnLCAnY29kZSc6IDEwMCB9IH1cbiAgICAgKi9cbiAgICB2YXIga2V5QnkgPSBjcmVhdGVBZ2dyZWdhdG9yKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCB2YWx1ZSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHZhbHVlcyBieSBydW5uaW5nIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAgdGhydVxuICAgICAqIGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOlxuICAgICAqICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqIE1hbnkgbG9kYXNoIG1ldGhvZHMgYXJlIGd1YXJkZWQgdG8gd29yayBhcyBpdGVyYXRlZXMgZm9yIG1ldGhvZHMgbGlrZVxuICAgICAqIGBfLmV2ZXJ5YCwgYF8uZmlsdGVyYCwgYF8ubWFwYCwgYF8ubWFwVmFsdWVzYCwgYF8ucmVqZWN0YCwgYW5kIGBfLnNvbWVgLlxuICAgICAqXG4gICAgICogVGhlIGd1YXJkZWQgbWV0aG9kcyBhcmU6XG4gICAgICogYGFyeWAsIGBjaHVua2AsIGBjdXJyeWAsIGBjdXJyeVJpZ2h0YCwgYGRyb3BgLCBgZHJvcFJpZ2h0YCwgYGV2ZXJ5YCxcbiAgICAgKiBgZmlsbGAsIGBpbnZlcnRgLCBgcGFyc2VJbnRgLCBgcmFuZG9tYCwgYHJhbmdlYCwgYHJhbmdlUmlnaHRgLCBgcmVwZWF0YCxcbiAgICAgKiBgc2FtcGxlU2l6ZWAsIGBzbGljZWAsIGBzb21lYCwgYHNvcnRCeWAsIGBzcGxpdGAsIGB0YWtlYCwgYHRha2VSaWdodGAsXG4gICAgICogYHRlbXBsYXRlYCwgYHRyaW1gLCBgdHJpbUVuZGAsIGB0cmltU3RhcnRgLCBhbmQgYHdvcmRzYFxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICAgICAqICAgcmV0dXJuIG4gKiBuO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8ubWFwKFs0LCA4XSwgc3F1YXJlKTtcbiAgICAgKiAvLyA9PiBbMTYsIDY0XVxuICAgICAqXG4gICAgICogXy5tYXAoeyAnYSc6IDQsICdiJzogOCB9LCBzcXVhcmUpO1xuICAgICAqIC8vID0+IFsxNiwgNjRdIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1hcCh1c2VycywgJ3VzZXInKTtcbiAgICAgKiAvLyA9PiBbJ2Jhcm5leScsICdmcmVkJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5TWFwIDogYmFzZU1hcDtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zb3J0QnlgIGV4Y2VwdCB0aGF0IGl0IGFsbG93cyBzcGVjaWZ5aW5nIHRoZSBzb3J0XG4gICAgICogb3JkZXJzIG9mIHRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS4gSWYgYG9yZGVyc2AgaXMgdW5zcGVjaWZpZWQsIGFsbCB2YWx1ZXNcbiAgICAgKiBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlci4gT3RoZXJ3aXNlLCBzcGVjaWZ5IGFuIG9yZGVyIG9mIFwiZGVzY1wiIGZvclxuICAgICAqIGRlc2NlbmRpbmcgb3IgXCJhc2NcIiBmb3IgYXNjZW5kaW5nIHNvcnQgb3JkZXIgb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0FycmF5W118RnVuY3Rpb25bXXxPYmplY3RbXXxzdHJpbmdbXX0gW2l0ZXJhdGVlcz1bXy5pZGVudGl0eV1dXG4gICAgICogIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBbb3JkZXJzXSBUaGUgc29ydCBvcmRlcnMgb2YgYGl0ZXJhdGVlc2AuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ucmVkdWNlYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzb3J0ZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQ4IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNCB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gU29ydCBieSBgdXNlcmAgaW4gYXNjZW5kaW5nIG9yZGVyIGFuZCBieSBgYWdlYCBpbiBkZXNjZW5kaW5nIG9yZGVyLlxuICAgICAqIF8ub3JkZXJCeSh1c2VycywgWyd1c2VyJywgJ2FnZSddLCBbJ2FzYycsICdkZXNjJ10pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM2XSwgWydiYXJuZXknLCAzNF0sIFsnZnJlZCcsIDQ4XSwgWydmcmVkJywgNDBdXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9yZGVyQnkoY29sbGVjdGlvbiwgaXRlcmF0ZWVzLCBvcmRlcnMsIGd1YXJkKSB7XG4gICAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNBcnJheShpdGVyYXRlZXMpKSB7XG4gICAgICAgIGl0ZXJhdGVlcyA9IGl0ZXJhdGVlcyA9PSBudWxsID8gW10gOiBbaXRlcmF0ZWVzXTtcbiAgICAgIH1cbiAgICAgIG9yZGVycyA9IGd1YXJkID8gdW5kZWZpbmVkIDogb3JkZXJzO1xuICAgICAgaWYgKCFpc0FycmF5KG9yZGVycykpIHtcbiAgICAgICAgb3JkZXJzID0gb3JkZXJzID09IG51bGwgPyBbXSA6IFtvcmRlcnNdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VPcmRlckJ5KGNvbGxlY3Rpb24sIGl0ZXJhdGVlcywgb3JkZXJzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGVsZW1lbnRzIHNwbGl0IGludG8gdHdvIGdyb3VwcywgdGhlIGZpcnN0IG9mIHdoaWNoXG4gICAgICogY29udGFpbnMgZWxlbWVudHMgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLCB0aGUgc2Vjb25kIG9mIHdoaWNoXG4gICAgICogY29udGFpbnMgZWxlbWVudHMgYHByZWRpY2F0ZWAgcmV0dXJucyBmYWxzZXkgZm9yLiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSwgICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ucGFydGl0aW9uKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snZnJlZCddLCBbJ2Jhcm5leScsICdwZWJibGVzJ11dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucGFydGl0aW9uKHVzZXJzLCB7ICdhZ2UnOiAxLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1sncGViYmxlcyddLCBbJ2Jhcm5leScsICdmcmVkJ11dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5wYXJ0aXRpb24odXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAncGViYmxlcyddLCBbJ2ZyZWQnXV1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucGFydGl0aW9uKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snZnJlZCddLCBbJ2Jhcm5leScsICdwZWJibGVzJ11dXG4gICAgICovXG4gICAgdmFyIHBhcnRpdGlvbiA9IGNyZWF0ZUFnZ3JlZ2F0b3IoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICByZXN1bHRba2V5ID8gMCA6IDFdLnB1c2godmFsdWUpO1xuICAgIH0sIGZ1bmN0aW9uKCkgeyByZXR1cm4gW1tdLCBbXV07IH0pO1xuXG4gICAgLyoqXG4gICAgICogUmVkdWNlcyBgY29sbGVjdGlvbmAgdG8gYSB2YWx1ZSB3aGljaCBpcyB0aGUgYWNjdW11bGF0ZWQgcmVzdWx0IG9mIHJ1bm5pbmdcbiAgICAgKiBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gIHRocnUgYGl0ZXJhdGVlYCwgd2hlcmUgZWFjaCBzdWNjZXNzaXZlXG4gICAgICogaW52b2NhdGlvbiBpcyBzdXBwbGllZCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBwcmV2aW91cy4gSWYgYGFjY3VtdWxhdG9yYFxuICAgICAqIGlzIG5vdCBnaXZlbiwgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIGlzIHVzZWQgYXMgdGhlIGluaXRpYWxcbiAgICAgKiB2YWx1ZS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBmb3VyIGFyZ3VtZW50czpcbiAgICAgKiAoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogTWFueSBsb2Rhc2ggbWV0aG9kcyBhcmUgZ3VhcmRlZCB0byB3b3JrIGFzIGl0ZXJhdGVlcyBmb3IgbWV0aG9kcyBsaWtlXG4gICAgICogYF8ucmVkdWNlYCwgYF8ucmVkdWNlUmlnaHRgLCBhbmQgYF8udHJhbnNmb3JtYC5cbiAgICAgKlxuICAgICAqIFRoZSBndWFyZGVkIG1ldGhvZHMgYXJlOlxuICAgICAqIGBhc3NpZ25gLCBgZGVmYXVsdHNgLCBgZGVmYXVsdHNEZWVwYCwgYGluY2x1ZGVzYCwgYG1lcmdlYCwgYG9yZGVyQnlgLFxuICAgICAqIGFuZCBgc29ydEJ5YFxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBpbml0aWFsIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8ucmVkdWNlUmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yZWR1Y2UoWzEsIDJdLCBmdW5jdGlvbihzdW0sIG4pIHtcbiAgICAgKiAgIHJldHVybiBzdW0gKyBuO1xuICAgICAqIH0sIDApO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8ucmVkdWNlKHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9LCBmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIChyZXN1bHRbdmFsdWVdIHx8IChyZXN1bHRbdmFsdWVdID0gW10pKS5wdXNoKGtleSk7XG4gICAgICogICByZXR1cm4gcmVzdWx0O1xuICAgICAqIH0sIHt9KTtcbiAgICAgKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVkdWNlKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlSZWR1Y2UgOiBiYXNlUmVkdWNlLFxuICAgICAgICAgIGluaXRBY2N1bSA9IGFyZ3VtZW50cy5sZW5ndGggPCAzO1xuXG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgNCksIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0sIGJhc2VFYWNoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnJlZHVjZWAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGBjb2xsZWN0aW9uYCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5yZWR1Y2VcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gW1swLCAxXSwgWzIsIDNdLCBbNCwgNV1dO1xuICAgICAqXG4gICAgICogXy5yZWR1Y2VSaWdodChhcnJheSwgZnVuY3Rpb24oZmxhdHRlbmVkLCBvdGhlcikge1xuICAgICAqICAgcmV0dXJuIGZsYXR0ZW5lZC5jb25jYXQob3RoZXIpO1xuICAgICAqIH0sIFtdKTtcbiAgICAgKiAvLyA9PiBbNCwgNSwgMiwgMywgMCwgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZWR1Y2VSaWdodChjb2xsZWN0aW9uLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5UmVkdWNlUmlnaHQgOiBiYXNlUmVkdWNlLFxuICAgICAgICAgIGluaXRBY2N1bSA9IGFyZ3VtZW50cy5sZW5ndGggPCAzO1xuXG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgNCksIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0sIGJhc2VFYWNoUmlnaHQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5maWx0ZXJgOyB0aGlzIG1ldGhvZCByZXR1cm5zIHRoZSBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmBcbiAgICAgKiB0aGF0IGBwcmVkaWNhdGVgIGRvZXMgKipub3QqKiByZXR1cm4gdHJ1dGh5IGZvci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAgICAgKiBAc2VlIF8uZmlsdGVyXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ucmVqZWN0KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucmVqZWN0KHVzZXJzLCB7ICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucmVqZWN0KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucmVqZWN0KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlamVjdChjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RmlsdGVyIDogYmFzZUZpbHRlcjtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIG5lZ2F0ZShnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIHJhbmRvbSBlbGVtZW50IGZyb20gYGNvbGxlY3Rpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzYW1wbGUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNhbXBsZShbMSwgMiwgMywgNF0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzYW1wbGUoY29sbGVjdGlvbikge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlTYW1wbGUgOiBiYXNlU2FtcGxlO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBgbmAgcmFuZG9tIGVsZW1lbnRzIGF0IHVuaXF1ZSBrZXlzIGZyb20gYGNvbGxlY3Rpb25gIHVwIHRvIHRoZVxuICAgICAqIHNpemUgb2YgYGNvbGxlY3Rpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzYW1wbGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gc2FtcGxlLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc2FtcGxlU2l6ZShbMSwgMiwgM10sIDIpO1xuICAgICAqIC8vID0+IFszLCAxXVxuICAgICAqXG4gICAgICogXy5zYW1wbGVTaXplKFsxLCAyLCAzXSwgNCk7XG4gICAgICogLy8gPT4gWzIsIDMsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2FtcGxlU2l6ZShjb2xsZWN0aW9uLCBuLCBndWFyZCkge1xuICAgICAgaWYgKChndWFyZCA/IGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIG4sIGd1YXJkKSA6IG4gPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgbiA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgfVxuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlTYW1wbGVTaXplIDogYmFzZVNhbXBsZVNpemU7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHNodWZmbGVkIHZhbHVlcywgdXNpbmcgYSB2ZXJzaW9uIG9mIHRoZVxuICAgICAqIFtGaXNoZXItWWF0ZXMgc2h1ZmZsZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmlzaGVyLVlhdGVzX3NodWZmbGUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzaHVmZmxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNodWZmbGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNodWZmbGUoWzEsIDIsIDMsIDRdKTtcbiAgICAgKiAvLyA9PiBbNCwgMSwgMywgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzaHVmZmxlKGNvbGxlY3Rpb24pIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5U2h1ZmZsZSA6IGJhc2VTaHVmZmxlO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgc2l6ZSBvZiBgY29sbGVjdGlvbmAgYnkgcmV0dXJuaW5nIGl0cyBsZW5ndGggZm9yIGFycmF5LWxpa2VcbiAgICAgKiB2YWx1ZXMgb3IgdGhlIG51bWJlciBvZiBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBmb3Igb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R8c3RyaW5nfSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29sbGVjdGlvbiBzaXplLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNpemUoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnNpemUoeyAnYSc6IDEsICdiJzogMiB9KTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICpcbiAgICAgKiBfLnNpemUoJ3BlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiA3XG4gICAgICovXG4gICAgZnVuY3Rpb24gc2l6ZShjb2xsZWN0aW9uKSB7XG4gICAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgICAgaWYgKGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgICAgIHJldHVybiBpc1N0cmluZyhjb2xsZWN0aW9uKSA/IHN0cmluZ1NpemUoY29sbGVjdGlvbikgOiBjb2xsZWN0aW9uLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIHZhciB0YWcgPSBnZXRUYWcoY29sbGVjdGlvbik7XG4gICAgICBpZiAodGFnID09IG1hcFRhZyB8fCB0YWcgPT0gc2V0VGFnKSB7XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uLnNpemU7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUtleXMoY29sbGVjdGlvbikubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgKiphbnkqKiBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYC5cbiAgICAgKiBJdGVyYXRpb24gaXMgc3RvcHBlZCBvbmNlIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29tZShbbnVsbCwgMCwgJ3llcycsIGZhbHNlXSwgQm9vbGVhbik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc29tZSh1c2VycywgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnNvbWUodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnNvbWUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29tZShjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGd1YXJkKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVNvbWUgOiBiYXNlU29tZTtcbiAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGd1YXJkKSkge1xuICAgICAgICBwcmVkaWNhdGUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGVsZW1lbnRzLCBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IHRoZSByZXN1bHRzIG9mXG4gICAgICogcnVubmluZyBlYWNoIGVsZW1lbnQgaW4gYSBjb2xsZWN0aW9uIHRocnUgZWFjaCBpdGVyYXRlZS4gVGhpcyBtZXRob2RcbiAgICAgKiBwZXJmb3JtcyBhIHN0YWJsZSBzb3J0LCB0aGF0IGlzLCBpdCBwcmVzZXJ2ZXMgdGhlIG9yaWdpbmFsIHNvcnQgb3JkZXIgb2ZcbiAgICAgKiBlcXVhbCBlbGVtZW50cy4gVGhlIGl0ZXJhdGVlcyBhcmUgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbaXRlcmF0ZWVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIGl0ZXJhdGVlcyB0byBzb3J0IGJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDggfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiAzMCB9LFxuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzQgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnNvcnRCeSh1c2VycywgW2Z1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlcjsgfV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM2XSwgWydiYXJuZXknLCAzNF0sIFsnZnJlZCcsIDQ4XSwgWydmcmVkJywgMzBdXVxuICAgICAqXG4gICAgICogXy5zb3J0QnkodXNlcnMsIFsndXNlcicsICdhZ2UnXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgMzRdLCBbJ2Jhcm5leScsIDM2XSwgWydmcmVkJywgMzBdLCBbJ2ZyZWQnLCA0OF1dXG4gICAgICovXG4gICAgdmFyIHNvcnRCeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGl0ZXJhdGVlcykge1xuICAgICAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gaXRlcmF0ZWVzLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggPiAxICYmIGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIGl0ZXJhdGVlc1swXSwgaXRlcmF0ZWVzWzFdKSkge1xuICAgICAgICBpdGVyYXRlZXMgPSBbXTtcbiAgICAgIH0gZWxzZSBpZiAobGVuZ3RoID4gMiAmJiBpc0l0ZXJhdGVlQ2FsbChpdGVyYXRlZXNbMF0sIGl0ZXJhdGVlc1sxXSwgaXRlcmF0ZWVzWzJdKSkge1xuICAgICAgICBpdGVyYXRlZXMgPSBbaXRlcmF0ZWVzWzBdXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBiYXNlRmxhdHRlbihpdGVyYXRlZXMsIDEpLCBbXSk7XG4gICAgfSk7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB0aW1lc3RhbXAgb2YgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdGhhdCBoYXZlIGVsYXBzZWQgc2luY2VcbiAgICAgKiB0aGUgVW5peCBlcG9jaCAoMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjQuMFxuICAgICAqIEBjYXRlZ29yeSBEYXRlXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXN0YW1wLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlZmVyKGZ1bmN0aW9uKHN0YW1wKSB7XG4gICAgICogICBjb25zb2xlLmxvZyhfLm5vdygpIC0gc3RhbXApO1xuICAgICAqIH0sIF8ubm93KCkpO1xuICAgICAqIC8vID0+IExvZ3MgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaXQgdG9vayBmb3IgdGhlIGRlZmVycmVkIGludm9jYXRpb24uXG4gICAgICovXG4gICAgdmFyIG5vdyA9IGN0eE5vdyB8fCBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiByb290LkRhdGUubm93KCk7XG4gICAgfTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5iZWZvcmVgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzXG4gICAgICogYGZ1bmNgIG9uY2UgaXQncyBjYWxsZWQgYG5gIG9yIG1vcmUgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGNhbGxzIGJlZm9yZSBgZnVuY2AgaXMgaW52b2tlZC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZXN0cmljdGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgc2F2ZXMgPSBbJ3Byb2ZpbGUnLCAnc2V0dGluZ3MnXTtcbiAgICAgKlxuICAgICAqIHZhciBkb25lID0gXy5hZnRlcihzYXZlcy5sZW5ndGgsIGZ1bmN0aW9uKCkge1xuICAgICAqICAgY29uc29sZS5sb2coJ2RvbmUgc2F2aW5nIScpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogXy5mb3JFYWNoKHNhdmVzLCBmdW5jdGlvbih0eXBlKSB7XG4gICAgICogICBhc3luY1NhdmUoeyAndHlwZSc6IHR5cGUsICdjb21wbGV0ZSc6IGRvbmUgfSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyAnZG9uZSBzYXZpbmchJyBhZnRlciB0aGUgdHdvIGFzeW5jIHNhdmVzIGhhdmUgY29tcGxldGVkLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFmdGVyKG4sIGZ1bmMpIHtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIG4gPSB0b0ludGVnZXIobik7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICgtLW4gPCAxKSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCwgd2l0aCB1cCB0byBgbmAgYXJndW1lbnRzLFxuICAgICAqIGlnbm9yaW5nIGFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj1mdW5jLmxlbmd0aF0gVGhlIGFyaXR5IGNhcC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tYXAoWyc2JywgJzgnLCAnMTAnXSwgXy5hcnkocGFyc2VJbnQsIDEpKTtcbiAgICAgKiAvLyA9PiBbNiwgOCwgMTBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXJ5KGZ1bmMsIG4sIGd1YXJkKSB7XG4gICAgICBuID0gZ3VhcmQgPyB1bmRlZmluZWQgOiBuO1xuICAgICAgbiA9IChmdW5jICYmIG4gPT0gbnVsbCkgPyBmdW5jLmxlbmd0aCA6IG47XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX0FSWV9GTEFHLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgLCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBhbmQgYXJndW1lbnRzXG4gICAgICogb2YgdGhlIGNyZWF0ZWQgZnVuY3Rpb24sIHdoaWxlIGl0J3MgY2FsbGVkIGxlc3MgdGhhbiBgbmAgdGltZXMuIFN1YnNlcXVlbnRcbiAgICAgKiBjYWxscyB0byB0aGUgY3JlYXRlZCBmdW5jdGlvbiByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2AgaW52b2NhdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgY2FsbHMgYXQgd2hpY2ggYGZ1bmNgIGlzIG5vIGxvbmdlciBpbnZva2VkLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlc3RyaWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJlc3RyaWN0ZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCBfLmJlZm9yZSg1LCBhZGRDb250YWN0VG9MaXN0KSk7XG4gICAgICogLy8gPT4gQWxsb3dzIGFkZGluZyB1cCB0byA0IGNvbnRhY3RzIHRvIHRoZSBsaXN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJlZm9yZShuLCBmdW5jKSB7XG4gICAgICB2YXIgcmVzdWx0O1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKC0tbiA+IDApIHtcbiAgICAgICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG4gPD0gMSkge1xuICAgICAgICAgIGZ1bmMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgXG4gICAgICogYW5kIGBwYXJ0aWFsc2AgcHJlcGVuZGVkIHRvIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBUaGUgYF8uYmluZC5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljIGJ1aWxkcyxcbiAgICAgKiBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIG5hdGl2ZSBgRnVuY3Rpb24jYmluZGAsIHRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiXG4gICAgICogcHJvcGVydHkgb2YgYm91bmQgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYmluZC5cbiAgICAgKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0gey4uLip9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBib3VuZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZ3JlZXQoZ3JlZXRpbmcsIHB1bmN0dWF0aW9uKSB7XG4gICAgICogICByZXR1cm4gZ3JlZXRpbmcgKyAnICcgKyB0aGlzLnVzZXIgKyBwdW5jdHVhdGlvbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAndXNlcic6ICdmcmVkJyB9O1xuICAgICAqXG4gICAgICogdmFyIGJvdW5kID0gXy5iaW5kKGdyZWV0LCBvYmplY3QsICdoaScpO1xuICAgICAqIGJvdW5kKCchJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQhJ1xuICAgICAqXG4gICAgICogLy8gQm91bmQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogdmFyIGJvdW5kID0gXy5iaW5kKGdyZWV0LCBvYmplY3QsIF8sICchJyk7XG4gICAgICogYm91bmQoJ2hpJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQhJ1xuICAgICAqL1xuICAgIHZhciBiaW5kID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgdGhpc0FyZywgcGFydGlhbHMpIHtcbiAgICAgIHZhciBiaXRtYXNrID0gV1JBUF9CSU5EX0ZMQUc7XG4gICAgICBpZiAocGFydGlhbHMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBob2xkZXJzID0gcmVwbGFjZUhvbGRlcnMocGFydGlhbHMsIGdldEhvbGRlcihiaW5kKSk7XG4gICAgICAgIGJpdG1hc2sgfD0gV1JBUF9QQVJUSUFMX0ZMQUc7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBwYXJ0aWFscywgaG9sZGVycyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSBtZXRob2QgYXQgYG9iamVjdFtrZXldYCB3aXRoIGBwYXJ0aWFsc2BcbiAgICAgKiBwcmVwZW5kZWQgdG8gdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSBgXy5iaW5kYCBieSBhbGxvd2luZyBib3VuZCBmdW5jdGlvbnMgdG8gcmVmZXJlbmNlXG4gICAgICogbWV0aG9kcyB0aGF0IG1heSBiZSByZWRlZmluZWQgb3IgZG9uJ3QgeWV0IGV4aXN0LiBTZWVcbiAgICAgKiBbUGV0ZXIgTWljaGF1eCdzIGFydGljbGVdKGh0dHA6Ly9wZXRlci5taWNoYXV4LmNhL2FydGljbGVzL2xhenktZnVuY3Rpb24tZGVmaW5pdGlvbi1wYXR0ZXJuKVxuICAgICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICpcbiAgICAgKiBUaGUgYF8uYmluZEtleS5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljXG4gICAgICogYnVpbGRzLCBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGludm9rZSB0aGUgbWV0aG9kIG9uLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgbWV0aG9kLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIGJlIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJvdW5kIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0ge1xuICAgICAqICAgJ3VzZXInOiAnZnJlZCcsXG4gICAgICogICAnZ3JlZXQnOiBmdW5jdGlvbihncmVldGluZywgcHVuY3R1YXRpb24pIHtcbiAgICAgKiAgICAgcmV0dXJuIGdyZWV0aW5nICsgJyAnICsgdGhpcy51c2VyICsgcHVuY3R1YXRpb247XG4gICAgICogICB9XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIHZhciBib3VuZCA9IF8uYmluZEtleShvYmplY3QsICdncmVldCcsICdoaScpO1xuICAgICAqIGJvdW5kKCchJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQhJ1xuICAgICAqXG4gICAgICogb2JqZWN0LmdyZWV0ID0gZnVuY3Rpb24oZ3JlZXRpbmcsIHB1bmN0dWF0aW9uKSB7XG4gICAgICogICByZXR1cm4gZ3JlZXRpbmcgKyAneWEgJyArIHRoaXMudXNlciArIHB1bmN0dWF0aW9uO1xuICAgICAqIH07XG4gICAgICpcbiAgICAgKiBib3VuZCgnIScpO1xuICAgICAqIC8vID0+ICdoaXlhIGZyZWQhJ1xuICAgICAqXG4gICAgICogLy8gQm91bmQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogdmFyIGJvdW5kID0gXy5iaW5kS2V5KG9iamVjdCwgJ2dyZWV0JywgXywgJyEnKTtcbiAgICAgKiBib3VuZCgnaGknKTtcbiAgICAgKiAvLyA9PiAnaGl5YSBmcmVkISdcbiAgICAgKi9cbiAgICB2YXIgYmluZEtleSA9IGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwga2V5LCBwYXJ0aWFscykge1xuICAgICAgdmFyIGJpdG1hc2sgPSBXUkFQX0JJTkRfRkxBRyB8IFdSQVBfQklORF9LRVlfRkxBRztcbiAgICAgIGlmIChwYXJ0aWFscy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGhvbGRlcnMgPSByZXBsYWNlSG9sZGVycyhwYXJ0aWFscywgZ2V0SG9sZGVyKGJpbmRLZXkpKTtcbiAgICAgICAgYml0bWFzayB8PSBXUkFQX1BBUlRJQUxfRkxBRztcbiAgICAgIH1cbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGtleSwgYml0bWFzaywgb2JqZWN0LCBwYXJ0aWFscywgaG9sZGVycyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIGFyZ3VtZW50cyBvZiBgZnVuY2AgYW5kIGVpdGhlciBpbnZva2VzXG4gICAgICogYGZ1bmNgIHJldHVybmluZyBpdHMgcmVzdWx0LCBpZiBhdCBsZWFzdCBgYXJpdHlgIG51bWJlciBvZiBhcmd1bWVudHMgaGF2ZVxuICAgICAqIGJlZW4gcHJvdmlkZWQsIG9yIHJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhlIHJlbWFpbmluZyBgZnVuY2BcbiAgICAgKiBhcmd1bWVudHMsIGFuZCBzbyBvbi4gVGhlIGFyaXR5IG9mIGBmdW5jYCBtYXkgYmUgc3BlY2lmaWVkIGlmIGBmdW5jLmxlbmd0aGBcbiAgICAgKiBpcyBub3Qgc3VmZmljaWVudC5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5jdXJyeS5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljIGJ1aWxkcyxcbiAgICAgKiBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwcm92aWRlZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgZG9lc24ndCBzZXQgdGhlIFwibGVuZ3RoXCIgcHJvcGVydHkgb2YgY3VycmllZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjdXJyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5PWZ1bmMubGVuZ3RoXSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY3VycmllZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFiYyA9IGZ1bmN0aW9uKGEsIGIsIGMpIHtcbiAgICAgKiAgIHJldHVybiBbYSwgYiwgY107XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIHZhciBjdXJyaWVkID0gXy5jdXJyeShhYmMpO1xuICAgICAqXG4gICAgICogY3VycmllZCgxKSgyKSgzKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMSwgMikoMyk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDEsIDIsIDMpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogLy8gQ3VycmllZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiBjdXJyaWVkKDEpKF8sIDMpKDIpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGN1cnJ5KGZ1bmMsIGFyaXR5LCBndWFyZCkge1xuICAgICAgYXJpdHkgPSBndWFyZCA/IHVuZGVmaW5lZCA6IGFyaXR5O1xuICAgICAgdmFyIHJlc3VsdCA9IGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9DVVJSWV9GTEFHLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgYXJpdHkpO1xuICAgICAgcmVzdWx0LnBsYWNlaG9sZGVyID0gY3VycnkucGxhY2Vob2xkZXI7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY3VycnlgIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhcmUgYXBwbGllZCB0byBgZnVuY2BcbiAgICAgKiBpbiB0aGUgbWFubmVyIG9mIGBfLnBhcnRpYWxSaWdodGAgaW5zdGVhZCBvZiBgXy5wYXJ0aWFsYC5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5jdXJyeVJpZ2h0LnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWNcbiAgICAgKiBidWlsZHMsIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBjdXJyaWVkIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGN1cnJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHk9ZnVuYy5sZW5ndGhdIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjdXJyaWVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYWJjID0gZnVuY3Rpb24oYSwgYiwgYykge1xuICAgICAqICAgcmV0dXJuIFthLCBiLCBjXTtcbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogdmFyIGN1cnJpZWQgPSBfLmN1cnJ5UmlnaHQoYWJjKTtcbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMykoMikoMSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDIsIDMpKDEpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogY3VycmllZCgxLCAyLCAzKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIC8vIEN1cnJpZWQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogY3VycmllZCgzKSgxLCBfKSgyKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjdXJyeVJpZ2h0KGZ1bmMsIGFyaXR5LCBndWFyZCkge1xuICAgICAgYXJpdHkgPSBndWFyZCA/IHVuZGVmaW5lZCA6IGFyaXR5O1xuICAgICAgdmFyIHJlc3VsdCA9IGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9DVVJSWV9SSUdIVF9GTEFHLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgYXJpdHkpO1xuICAgICAgcmVzdWx0LnBsYWNlaG9sZGVyID0gY3VycnlSaWdodC5wbGFjZWhvbGRlcjtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGRlYm91bmNlZCBmdW5jdGlvbiB0aGF0IGRlbGF5cyBpbnZva2luZyBgZnVuY2AgdW50aWwgYWZ0ZXIgYHdhaXRgXG4gICAgICogbWlsbGlzZWNvbmRzIGhhdmUgZWxhcHNlZCBzaW5jZSB0aGUgbGFzdCB0aW1lIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gd2FzXG4gICAgICogaW52b2tlZC4gVGhlIGRlYm91bmNlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGAgbWV0aG9kIHRvIGNhbmNlbFxuICAgICAqIGRlbGF5ZWQgYGZ1bmNgIGludm9jYXRpb25zIGFuZCBhIGBmbHVzaGAgbWV0aG9kIHRvIGltbWVkaWF0ZWx5IGludm9rZSB0aGVtLlxuICAgICAqIFByb3ZpZGUgYG9wdGlvbnNgIHRvIGluZGljYXRlIHdoZXRoZXIgYGZ1bmNgIHNob3VsZCBiZSBpbnZva2VkIG9uIHRoZVxuICAgICAqIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIGB3YWl0YCB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRoZSBsYXN0IGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uLiBTdWJzZXF1ZW50XG4gICAgICogY2FsbHMgdG8gdGhlIGRlYm91bmNlZCBmdW5jdGlvbiByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2BcbiAgICAgKiBpbnZvY2F0aW9uLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIElmIGBsZWFkaW5nYCBhbmQgYHRyYWlsaW5nYCBvcHRpb25zIGFyZSBgdHJ1ZWAsIGBmdW5jYCBpc1xuICAgICAqIGludm9rZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uXG4gICAgICogaXMgaW52b2tlZCBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIGB3YWl0YCB0aW1lb3V0LlxuICAgICAqXG4gICAgICogSWYgYHdhaXRgIGlzIGAwYCBhbmQgYGxlYWRpbmdgIGlzIGBmYWxzZWAsIGBmdW5jYCBpbnZvY2F0aW9uIGlzIGRlZmVycmVkXG4gICAgICogdW50aWwgdG8gdGhlIG5leHQgdGljaywgc2ltaWxhciB0byBgc2V0VGltZW91dGAgd2l0aCBhIHRpbWVvdXQgb2YgYDBgLlxuICAgICAqXG4gICAgICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vZGVib3VuY2luZy10aHJvdHRsaW5nLWV4cGxhaW5lZC1leGFtcGxlcy8pXG4gICAgICogZm9yIGRldGFpbHMgb3ZlciB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBgXy5kZWJvdW5jZWAgYW5kIGBfLnRocm90dGxlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlYm91bmNlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbd2FpdD0wXSBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxlYWRpbmc9ZmFsc2VdXG4gICAgICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIGxlYWRpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubWF4V2FpdF1cbiAgICAgKiAgVGhlIG1heGltdW0gdGltZSBgZnVuY2AgaXMgYWxsb3dlZCB0byBiZSBkZWxheWVkIGJlZm9yZSBpdCdzIGludm9rZWQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy50cmFpbGluZz10cnVlXVxuICAgICAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGRlYm91bmNlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gQXZvaWQgY29zdGx5IGNhbGN1bGF0aW9ucyB3aGlsZSB0aGUgd2luZG93IHNpemUgaXMgaW4gZmx1eC5cbiAgICAgKiBqUXVlcnkod2luZG93KS5vbigncmVzaXplJywgXy5kZWJvdW5jZShjYWxjdWxhdGVMYXlvdXQsIDE1MCkpO1xuICAgICAqXG4gICAgICogLy8gSW52b2tlIGBzZW5kTWFpbGAgd2hlbiBjbGlja2VkLCBkZWJvdW5jaW5nIHN1YnNlcXVlbnQgY2FsbHMuXG4gICAgICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIF8uZGVib3VuY2Uoc2VuZE1haWwsIDMwMCwge1xuICAgICAqICAgJ2xlYWRpbmcnOiB0cnVlLFxuICAgICAqICAgJ3RyYWlsaW5nJzogZmFsc2VcbiAgICAgKiB9KSk7XG4gICAgICpcbiAgICAgKiAvLyBFbnN1cmUgYGJhdGNoTG9nYCBpcyBpbnZva2VkIG9uY2UgYWZ0ZXIgMSBzZWNvbmQgb2YgZGVib3VuY2VkIGNhbGxzLlxuICAgICAqIHZhciBkZWJvdW5jZWQgPSBfLmRlYm91bmNlKGJhdGNoTG9nLCAyNTAsIHsgJ21heFdhaXQnOiAxMDAwIH0pO1xuICAgICAqIHZhciBzb3VyY2UgPSBuZXcgRXZlbnRTb3VyY2UoJy9zdHJlYW0nKTtcbiAgICAgKiBqUXVlcnkoc291cmNlKS5vbignbWVzc2FnZScsIGRlYm91bmNlZCk7XG4gICAgICpcbiAgICAgKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIGRlYm91bmNlZCBpbnZvY2F0aW9uLlxuICAgICAqIGpRdWVyeSh3aW5kb3cpLm9uKCdwb3BzdGF0ZScsIGRlYm91bmNlZC5jYW5jZWwpO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgICAgIHZhciBsYXN0QXJncyxcbiAgICAgICAgICBsYXN0VGhpcyxcbiAgICAgICAgICBtYXhXYWl0LFxuICAgICAgICAgIHJlc3VsdCxcbiAgICAgICAgICB0aW1lcklkLFxuICAgICAgICAgIGxhc3RDYWxsVGltZSxcbiAgICAgICAgICBsYXN0SW52b2tlVGltZSA9IDAsXG4gICAgICAgICAgbGVhZGluZyA9IGZhbHNlLFxuICAgICAgICAgIG1heGluZyA9IGZhbHNlLFxuICAgICAgICAgIHRyYWlsaW5nID0gdHJ1ZTtcblxuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgd2FpdCA9IHRvTnVtYmVyKHdhaXQpIHx8IDA7XG4gICAgICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICAgICAgbGVhZGluZyA9ICEhb3B0aW9ucy5sZWFkaW5nO1xuICAgICAgICBtYXhpbmcgPSAnbWF4V2FpdCcgaW4gb3B0aW9ucztcbiAgICAgICAgbWF4V2FpdCA9IG1heGluZyA/IG5hdGl2ZU1heCh0b051bWJlcihvcHRpb25zLm1heFdhaXQpIHx8IDAsIHdhaXQpIDogbWF4V2FpdDtcbiAgICAgICAgdHJhaWxpbmcgPSAndHJhaWxpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMudHJhaWxpbmcgOiB0cmFpbGluZztcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gaW52b2tlRnVuYyh0aW1lKSB7XG4gICAgICAgIHZhciBhcmdzID0gbGFzdEFyZ3MsXG4gICAgICAgICAgICB0aGlzQXJnID0gbGFzdFRoaXM7XG5cbiAgICAgICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBsZWFkaW5nRWRnZSh0aW1lKSB7XG4gICAgICAgIC8vIFJlc2V0IGFueSBgbWF4V2FpdGAgdGltZXIuXG4gICAgICAgIGxhc3RJbnZva2VUaW1lID0gdGltZTtcbiAgICAgICAgLy8gU3RhcnQgdGhlIHRpbWVyIGZvciB0aGUgdHJhaWxpbmcgZWRnZS5cbiAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAgICAgLy8gSW52b2tlIHRoZSBsZWFkaW5nIGVkZ2UuXG4gICAgICAgIHJldHVybiBsZWFkaW5nID8gaW52b2tlRnVuYyh0aW1lKSA6IHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gcmVtYWluaW5nV2FpdCh0aW1lKSB7XG4gICAgICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lLFxuICAgICAgICAgICAgdGltZVdhaXRpbmcgPSB3YWl0IC0gdGltZVNpbmNlTGFzdENhbGw7XG5cbiAgICAgICAgcmV0dXJuIG1heGluZ1xuICAgICAgICAgID8gbmF0aXZlTWluKHRpbWVXYWl0aW5nLCBtYXhXYWl0IC0gdGltZVNpbmNlTGFzdEludm9rZSlcbiAgICAgICAgICA6IHRpbWVXYWl0aW5nO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBzaG91bGRJbnZva2UodGltZSkge1xuICAgICAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICAgICAgdGltZVNpbmNlTGFzdEludm9rZSA9IHRpbWUgLSBsYXN0SW52b2tlVGltZTtcblxuICAgICAgICAvLyBFaXRoZXIgdGhpcyBpcyB0aGUgZmlyc3QgY2FsbCwgYWN0aXZpdHkgaGFzIHN0b3BwZWQgYW5kIHdlJ3JlIGF0IHRoZVxuICAgICAgICAvLyB0cmFpbGluZyBlZGdlLCB0aGUgc3lzdGVtIHRpbWUgaGFzIGdvbmUgYmFja3dhcmRzIGFuZCB3ZSdyZSB0cmVhdGluZ1xuICAgICAgICAvLyBpdCBhcyB0aGUgdHJhaWxpbmcgZWRnZSwgb3Igd2UndmUgaGl0IHRoZSBgbWF4V2FpdGAgbGltaXQuXG4gICAgICAgIHJldHVybiAobGFzdENhbGxUaW1lID09PSB1bmRlZmluZWQgfHwgKHRpbWVTaW5jZUxhc3RDYWxsID49IHdhaXQpIHx8XG4gICAgICAgICAgKHRpbWVTaW5jZUxhc3RDYWxsIDwgMCkgfHwgKG1heGluZyAmJiB0aW1lU2luY2VMYXN0SW52b2tlID49IG1heFdhaXQpKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gdGltZXJFeHBpcmVkKCkge1xuICAgICAgICB2YXIgdGltZSA9IG5vdygpO1xuICAgICAgICBpZiAoc2hvdWxkSW52b2tlKHRpbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIHRyYWlsaW5nRWRnZSh0aW1lKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZXN0YXJ0IHRoZSB0aW1lci5cbiAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCByZW1haW5pbmdXYWl0KHRpbWUpKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gdHJhaWxpbmdFZGdlKHRpbWUpIHtcbiAgICAgICAgdGltZXJJZCA9IHVuZGVmaW5lZDtcblxuICAgICAgICAvLyBPbmx5IGludm9rZSBpZiB3ZSBoYXZlIGBsYXN0QXJnc2Agd2hpY2ggbWVhbnMgYGZ1bmNgIGhhcyBiZWVuXG4gICAgICAgIC8vIGRlYm91bmNlZCBhdCBsZWFzdCBvbmNlLlxuICAgICAgICBpZiAodHJhaWxpbmcgJiYgbGFzdEFyZ3MpIHtcbiAgICAgICAgICByZXR1cm4gaW52b2tlRnVuYyh0aW1lKTtcbiAgICAgICAgfVxuICAgICAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgICAgIGlmICh0aW1lcklkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXJJZCk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdEludm9rZVRpbWUgPSAwO1xuICAgICAgICBsYXN0QXJncyA9IGxhc3RDYWxsVGltZSA9IGxhc3RUaGlzID0gdGltZXJJZCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgICAgIHJldHVybiB0aW1lcklkID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiB0cmFpbGluZ0VkZ2Uobm93KCkpO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBkZWJvdW5jZWQoKSB7XG4gICAgICAgIHZhciB0aW1lID0gbm93KCksXG4gICAgICAgICAgICBpc0ludm9raW5nID0gc2hvdWxkSW52b2tlKHRpbWUpO1xuXG4gICAgICAgIGxhc3RBcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBsYXN0VGhpcyA9IHRoaXM7XG4gICAgICAgIGxhc3RDYWxsVGltZSA9IHRpbWU7XG5cbiAgICAgICAgaWYgKGlzSW52b2tpbmcpIHtcbiAgICAgICAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gbGVhZGluZ0VkZ2UobGFzdENhbGxUaW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1heGluZykge1xuICAgICAgICAgICAgLy8gSGFuZGxlIGludm9jYXRpb25zIGluIGEgdGlnaHQgbG9vcC5cbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICAgICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgICAgICAgICByZXR1cm4gaW52b2tlRnVuYyhsYXN0Q2FsbFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgZGVib3VuY2VkLmNhbmNlbCA9IGNhbmNlbDtcbiAgICAgIGRlYm91bmNlZC5mbHVzaCA9IGZsdXNoO1xuICAgICAgcmV0dXJuIGRlYm91bmNlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWZlcnMgaW52b2tpbmcgdGhlIGBmdW5jYCB1bnRpbCB0aGUgY3VycmVudCBjYWxsIHN0YWNrIGhhcyBjbGVhcmVkLiBBbnlcbiAgICAgKiBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQgdG8gYGZ1bmNgIHdoZW4gaXQncyBpbnZva2VkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVmZXIuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXIgaWQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmZXIoZnVuY3Rpb24odGV4dCkge1xuICAgICAqICAgY29uc29sZS5sb2codGV4dCk7XG4gICAgICogfSwgJ2RlZmVycmVkJyk7XG4gICAgICogLy8gPT4gTG9ncyAnZGVmZXJyZWQnIGFmdGVyIG9uZSBtaWxsaXNlY29uZC5cbiAgICAgKi9cbiAgICB2YXIgZGVmZXIgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCBhcmdzKSB7XG4gICAgICByZXR1cm4gYmFzZURlbGF5KGZ1bmMsIDEsIGFyZ3MpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogSW52b2tlcyBgZnVuY2AgYWZ0ZXIgYHdhaXRgIG1pbGxpc2Vjb25kcy4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZVxuICAgICAqIHByb3ZpZGVkIHRvIGBmdW5jYCB3aGVuIGl0J3MgaW52b2tlZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlbGF5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3YWl0IFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5IGludm9jYXRpb24uXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXIgaWQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVsYXkoZnVuY3Rpb24odGV4dCkge1xuICAgICAqICAgY29uc29sZS5sb2codGV4dCk7XG4gICAgICogfSwgMTAwMCwgJ2xhdGVyJyk7XG4gICAgICogLy8gPT4gTG9ncyAnbGF0ZXInIGFmdGVyIG9uZSBzZWNvbmQuXG4gICAgICovXG4gICAgdmFyIGRlbGF5ID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgd2FpdCwgYXJncykge1xuICAgICAgcmV0dXJuIGJhc2VEZWxheShmdW5jLCB0b051bWJlcih3YWl0KSB8fCAwLCBhcmdzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggYXJndW1lbnRzIHJldmVyc2VkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZmxpcCBhcmd1bWVudHMgZm9yLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZsaXBwZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmbGlwcGVkID0gXy5mbGlwKGZ1bmN0aW9uKCkge1xuICAgICAqICAgcmV0dXJuIF8udG9BcnJheShhcmd1bWVudHMpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogZmxpcHBlZCgnYScsICdiJywgJ2MnLCAnZCcpO1xuICAgICAqIC8vID0+IFsnZCcsICdjJywgJ2InLCAnYSddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxpcChmdW5jKSB7XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX0ZMSVBfRkxBRyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgbWVtb2l6ZXMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuIElmIGByZXNvbHZlcmAgaXNcbiAgICAgKiBwcm92aWRlZCwgaXQgZGV0ZXJtaW5lcyB0aGUgY2FjaGUga2V5IGZvciBzdG9yaW5nIHRoZSByZXN1bHQgYmFzZWQgb24gdGhlXG4gICAgICogYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbi4gQnkgZGVmYXVsdCwgdGhlIGZpcnN0IGFyZ3VtZW50XG4gICAgICogcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uIGlzIHVzZWQgYXMgdGhlIG1hcCBjYWNoZSBrZXkuIFRoZSBgZnVuY2BcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZSBtZW1vaXplZCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGUgY2FjaGUgaXMgZXhwb3NlZCBhcyB0aGUgYGNhY2hlYCBwcm9wZXJ0eSBvbiB0aGUgbWVtb2l6ZWRcbiAgICAgKiBmdW5jdGlvbi4gSXRzIGNyZWF0aW9uIG1heSBiZSBjdXN0b21pemVkIGJ5IHJlcGxhY2luZyB0aGUgYF8ubWVtb2l6ZS5DYWNoZWBcbiAgICAgKiBjb25zdHJ1Y3RvciB3aXRoIG9uZSB3aG9zZSBpbnN0YW5jZXMgaW1wbGVtZW50IHRoZVxuICAgICAqIFtgTWFwYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcHJvcGVydGllcy1vZi10aGUtbWFwLXByb3RvdHlwZS1vYmplY3QpXG4gICAgICogbWV0aG9kIGludGVyZmFjZSBvZiBgY2xlYXJgLCBgZGVsZXRlYCwgYGdldGAsIGBoYXNgLCBhbmQgYHNldGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3Jlc29sdmVyXSBUaGUgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0aGUgY2FjaGUga2V5LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1lbW9pemVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiB9O1xuICAgICAqIHZhciBvdGhlciA9IHsgJ2MnOiAzLCAnZCc6IDQgfTtcbiAgICAgKlxuICAgICAqIHZhciB2YWx1ZXMgPSBfLm1lbW9pemUoXy52YWx1ZXMpO1xuICAgICAqIHZhbHVlcyhvYmplY3QpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogdmFsdWVzKG90aGVyKTtcbiAgICAgKiAvLyA9PiBbMywgNF1cbiAgICAgKlxuICAgICAqIG9iamVjdC5hID0gMjtcbiAgICAgKiB2YWx1ZXMob2JqZWN0KTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIC8vIE1vZGlmeSB0aGUgcmVzdWx0IGNhY2hlLlxuICAgICAqIHZhbHVlcy5jYWNoZS5zZXQob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAgICAgKiB2YWx1ZXMob2JqZWN0KTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYiddXG4gICAgICpcbiAgICAgKiAvLyBSZXBsYWNlIGBfLm1lbW9pemUuQ2FjaGVgLlxuICAgICAqIF8ubWVtb2l6ZS5DYWNoZSA9IFdlYWtNYXA7XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWVtb2l6ZShmdW5jLCByZXNvbHZlcikge1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicgfHwgKHJlc29sdmVyICE9IG51bGwgJiYgdHlwZW9mIHJlc29sdmVyICE9ICdmdW5jdGlvbicpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHZhciBtZW1vaXplZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgICAgIGtleSA9IHJlc29sdmVyID8gcmVzb2x2ZXIuYXBwbHkodGhpcywgYXJncykgOiBhcmdzWzBdLFxuICAgICAgICAgICAgY2FjaGUgPSBtZW1vaXplZC5jYWNoZTtcblxuICAgICAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIG1lbW9pemVkLmNhY2hlID0gY2FjaGUuc2V0KGtleSwgcmVzdWx0KSB8fCBjYWNoZTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgICBtZW1vaXplZC5jYWNoZSA9IG5ldyAobWVtb2l6ZS5DYWNoZSB8fCBNYXBDYWNoZSk7XG4gICAgICByZXR1cm4gbWVtb2l6ZWQ7XG4gICAgfVxuXG4gICAgLy8gRXhwb3NlIGBNYXBDYWNoZWAuXG4gICAgbWVtb2l6ZS5DYWNoZSA9IE1hcENhY2hlO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgbmVnYXRlcyB0aGUgcmVzdWx0IG9mIHRoZSBwcmVkaWNhdGUgYGZ1bmNgLiBUaGVcbiAgICAgKiBgZnVuY2AgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgYW5kIGFyZ3VtZW50cyBvZiB0aGVcbiAgICAgKiBjcmVhdGVkIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBwcmVkaWNhdGUgdG8gbmVnYXRlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG5lZ2F0ZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGlzRXZlbihuKSB7XG4gICAgICogICByZXR1cm4gbiAlIDIgPT0gMDtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcihbMSwgMiwgMywgNCwgNSwgNl0sIF8ubmVnYXRlKGlzRXZlbikpO1xuICAgICAqIC8vID0+IFsxLCAzLCA1XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5lZ2F0ZShwcmVkaWNhdGUpIHtcbiAgICAgIGlmICh0eXBlb2YgcHJlZGljYXRlICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgICAgIGNhc2UgMDogcmV0dXJuICFwcmVkaWNhdGUuY2FsbCh0aGlzKTtcbiAgICAgICAgICBjYXNlIDE6IHJldHVybiAhcHJlZGljYXRlLmNhbGwodGhpcywgYXJnc1swXSk7XG4gICAgICAgICAgY2FzZSAyOiByZXR1cm4gIXByZWRpY2F0ZS5jYWxsKHRoaXMsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuICFwcmVkaWNhdGUuY2FsbCh0aGlzLCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIXByZWRpY2F0ZS5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaXMgcmVzdHJpY3RlZCB0byBpbnZva2luZyBgZnVuY2Agb25jZS4gUmVwZWF0IGNhbGxzXG4gICAgICogdG8gdGhlIGZ1bmN0aW9uIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IGludm9jYXRpb24uIFRoZSBgZnVuY2AgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIGFuZCBhcmd1bWVudHMgb2YgdGhlIGNyZWF0ZWQgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZXN0cmljdGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgaW5pdGlhbGl6ZSA9IF8ub25jZShjcmVhdGVBcHBsaWNhdGlvbik7XG4gICAgICogaW5pdGlhbGl6ZSgpO1xuICAgICAqIGluaXRpYWxpemUoKTtcbiAgICAgKiAvLyA9PiBgY3JlYXRlQXBwbGljYXRpb25gIGlzIGludm9rZWQgb25jZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9uY2UoZnVuYykge1xuICAgICAgcmV0dXJuIGJlZm9yZSgyLCBmdW5jKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudHMgdHJhbnNmb3JtZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbdHJhbnNmb3Jtcz1bXy5pZGVudGl0eV1dXG4gICAgICogIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm1zLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBkb3VibGVkKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICAgICAqICAgcmV0dXJuIG4gKiBuO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyQXJncyhmdW5jdGlvbih4LCB5KSB7XG4gICAgICogICByZXR1cm4gW3gsIHldO1xuICAgICAqIH0sIFtzcXVhcmUsIGRvdWJsZWRdKTtcbiAgICAgKlxuICAgICAqIGZ1bmMoOSwgMyk7XG4gICAgICogLy8gPT4gWzgxLCA2XVxuICAgICAqXG4gICAgICogZnVuYygxMCwgNSk7XG4gICAgICogLy8gPT4gWzEwMCwgMTBdXG4gICAgICovXG4gICAgdmFyIG92ZXJBcmdzID0gY2FzdFJlc3QoZnVuY3Rpb24oZnVuYywgdHJhbnNmb3Jtcykge1xuICAgICAgdHJhbnNmb3JtcyA9ICh0cmFuc2Zvcm1zLmxlbmd0aCA9PSAxICYmIGlzQXJyYXkodHJhbnNmb3Jtc1swXSkpXG4gICAgICAgID8gYXJyYXlNYXAodHJhbnNmb3Jtc1swXSwgYmFzZVVuYXJ5KGdldEl0ZXJhdGVlKCkpKVxuICAgICAgICA6IGFycmF5TWFwKGJhc2VGbGF0dGVuKHRyYW5zZm9ybXMsIDEpLCBiYXNlVW5hcnkoZ2V0SXRlcmF0ZWUoKSkpO1xuXG4gICAgICB2YXIgZnVuY3NMZW5ndGggPSB0cmFuc2Zvcm1zLmxlbmd0aDtcbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWluKGFyZ3MubGVuZ3RoLCBmdW5jc0xlbmd0aCk7XG5cbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBhcmdzW2luZGV4XSA9IHRyYW5zZm9ybXNbaW5kZXhdLmNhbGwodGhpcywgYXJnc1tpbmRleF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcHBseShmdW5jLCB0aGlzLCBhcmdzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBgcGFydGlhbHNgIHByZXBlbmRlZCB0byB0aGVcbiAgICAgKiBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYmluZGAgZXhjZXB0IGl0IGRvZXMgKipub3QqKlxuICAgICAqIGFsdGVyIHRoZSBgdGhpc2AgYmluZGluZy5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5wYXJ0aWFsLnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWNcbiAgICAgKiBidWlsZHMsIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBwYXJ0aWFsbHlcbiAgICAgKiBhcHBsaWVkIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjIuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHBhcnRpYWxseSBhcHBseSBhcmd1bWVudHMgdG8uXG4gICAgICogQHBhcmFtIHsuLi4qfSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcGFydGlhbGx5IGFwcGxpZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGdyZWV0KGdyZWV0aW5nLCBuYW1lKSB7XG4gICAgICogICByZXR1cm4gZ3JlZXRpbmcgKyAnICcgKyBuYW1lO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBzYXlIZWxsb1RvID0gXy5wYXJ0aWFsKGdyZWV0LCAnaGVsbG8nKTtcbiAgICAgKiBzYXlIZWxsb1RvKCdmcmVkJyk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBQYXJ0aWFsbHkgYXBwbGllZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiB2YXIgZ3JlZXRGcmVkID0gXy5wYXJ0aWFsKGdyZWV0LCBfLCAnZnJlZCcpO1xuICAgICAqIGdyZWV0RnJlZCgnaGknKTtcbiAgICAgKiAvLyA9PiAnaGkgZnJlZCdcbiAgICAgKi9cbiAgICB2YXIgcGFydGlhbCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIHBhcnRpYWxzKSB7XG4gICAgICB2YXIgaG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKHBhcnRpYWxzLCBnZXRIb2xkZXIocGFydGlhbCkpO1xuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9QQVJUSUFMX0ZMQUcsIHVuZGVmaW5lZCwgcGFydGlhbHMsIGhvbGRlcnMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wYXJ0aWFsYCBleGNlcHQgdGhhdCBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHNcbiAgICAgKiBhcmUgYXBwZW5kZWQgdG8gdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5wYXJ0aWFsUmlnaHQucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpY1xuICAgICAqIGJ1aWxkcywgbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IG9mIHBhcnRpYWxseVxuICAgICAqIGFwcGxpZWQgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcGFydGlhbGx5IGFwcGx5IGFyZ3VtZW50cyB0by5cbiAgICAgKiBAcGFyYW0gey4uLip9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBwYXJ0aWFsbHkgYXBwbGllZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZ3JlZXQoZ3JlZXRpbmcsIG5hbWUpIHtcbiAgICAgKiAgIHJldHVybiBncmVldGluZyArICcgJyArIG5hbWU7XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGdyZWV0RnJlZCA9IF8ucGFydGlhbFJpZ2h0KGdyZWV0LCAnZnJlZCcpO1xuICAgICAqIGdyZWV0RnJlZCgnaGknKTtcbiAgICAgKiAvLyA9PiAnaGkgZnJlZCdcbiAgICAgKlxuICAgICAqIC8vIFBhcnRpYWxseSBhcHBsaWVkIHdpdGggcGxhY2Vob2xkZXJzLlxuICAgICAqIHZhciBzYXlIZWxsb1RvID0gXy5wYXJ0aWFsUmlnaHQoZ3JlZXQsICdoZWxsbycsIF8pO1xuICAgICAqIHNheUhlbGxvVG8oJ2ZyZWQnKTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gZnJlZCdcbiAgICAgKi9cbiAgICB2YXIgcGFydGlhbFJpZ2h0ID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgcGFydGlhbHMpIHtcbiAgICAgIHZhciBob2xkZXJzID0gcmVwbGFjZUhvbGRlcnMocGFydGlhbHMsIGdldEhvbGRlcihwYXJ0aWFsUmlnaHQpKTtcbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHLCB1bmRlZmluZWQsIHBhcnRpYWxzLCBob2xkZXJzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggYXJndW1lbnRzIGFycmFuZ2VkIGFjY29yZGluZ1xuICAgICAqIHRvIHRoZSBzcGVjaWZpZWQgYGluZGV4ZXNgIHdoZXJlIHRoZSBhcmd1bWVudCB2YWx1ZSBhdCB0aGUgZmlyc3QgaW5kZXggaXNcbiAgICAgKiBwcm92aWRlZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQsIHRoZSBhcmd1bWVudCB2YWx1ZSBhdCB0aGUgc2Vjb25kIGluZGV4IGlzXG4gICAgICogcHJvdmlkZWQgYXMgdGhlIHNlY29uZCBhcmd1bWVudCwgYW5kIHNvIG9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVhcnJhbmdlIGFyZ3VtZW50cyBmb3IuXG4gICAgICogQHBhcmFtIHsuLi4obnVtYmVyfG51bWJlcltdKX0gaW5kZXhlcyBUaGUgYXJyYW5nZWQgYXJndW1lbnQgaW5kZXhlcy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHJlYXJnZWQgPSBfLnJlYXJnKGZ1bmN0aW9uKGEsIGIsIGMpIHtcbiAgICAgKiAgIHJldHVybiBbYSwgYiwgY107XG4gICAgICogfSwgWzIsIDAsIDFdKTtcbiAgICAgKlxuICAgICAqIHJlYXJnZWQoJ2InLCAnYycsICdhJylcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYicsICdjJ11cbiAgICAgKi9cbiAgICB2YXIgcmVhcmcgPSBmbGF0UmVzdChmdW5jdGlvbihmdW5jLCBpbmRleGVzKSB7XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX1JFQVJHX0ZMQUcsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGluZGV4ZXMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlXG4gICAgICogY3JlYXRlZCBmdW5jdGlvbiBhbmQgYXJndW1lbnRzIGZyb20gYHN0YXJ0YCBhbmQgYmV5b25kIHByb3ZpZGVkIGFzXG4gICAgICogYW4gYXJyYXkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb24gdGhlXG4gICAgICogW3Jlc3QgcGFyYW1ldGVyXShodHRwczovL21kbi5pby9yZXN0X3BhcmFtZXRlcnMpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBzYXkgPSBfLnJlc3QoZnVuY3Rpb24od2hhdCwgbmFtZXMpIHtcbiAgICAgKiAgIHJldHVybiB3aGF0ICsgJyAnICsgXy5pbml0aWFsKG5hbWVzKS5qb2luKCcsICcpICtcbiAgICAgKiAgICAgKF8uc2l6ZShuYW1lcykgPiAxID8gJywgJiAnIDogJycpICsgXy5sYXN0KG5hbWVzKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIHNheSgnaGVsbG8nLCAnZnJlZCcsICdiYXJuZXknLCAncGViYmxlcycpO1xuICAgICAqIC8vID0+ICdoZWxsbyBmcmVkLCBiYXJuZXksICYgcGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXN0KGZ1bmMsIHN0YXJ0KSB7XG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICBzdGFydCA9IHN0YXJ0ID09PSB1bmRlZmluZWQgPyBzdGFydCA6IHRvSW50ZWdlcihzdGFydCk7XG4gICAgICByZXR1cm4gYmFzZVJlc3QoZnVuYywgc3RhcnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZVxuICAgICAqIGNyZWF0ZSBmdW5jdGlvbiBhbmQgYW4gYXJyYXkgb2YgYXJndW1lbnRzIG11Y2ggbGlrZVxuICAgICAqIFtgRnVuY3Rpb24jYXBwbHlgXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5KS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGVcbiAgICAgKiBbc3ByZWFkIG9wZXJhdG9yXShodHRwczovL21kbi5pby9zcHJlYWRfb3BlcmF0b3IpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMi4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gc3ByZWFkIGFyZ3VtZW50cyBvdmVyLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSBzcHJlYWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBzYXkgPSBfLnNwcmVhZChmdW5jdGlvbih3aG8sIHdoYXQpIHtcbiAgICAgKiAgIHJldHVybiB3aG8gKyAnIHNheXMgJyArIHdoYXQ7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBzYXkoWydmcmVkJywgJ2hlbGxvJ10pO1xuICAgICAqIC8vID0+ICdmcmVkIHNheXMgaGVsbG8nXG4gICAgICpcbiAgICAgKiB2YXIgbnVtYmVycyA9IFByb21pc2UuYWxsKFtcbiAgICAgKiAgIFByb21pc2UucmVzb2x2ZSg0MCksXG4gICAgICogICBQcm9taXNlLnJlc29sdmUoMzYpXG4gICAgICogXSk7XG4gICAgICpcbiAgICAgKiBudW1iZXJzLnRoZW4oXy5zcHJlYWQoZnVuY3Rpb24oeCwgeSkge1xuICAgICAqICAgcmV0dXJuIHggKyB5O1xuICAgICAqIH0pKTtcbiAgICAgKiAvLyA9PiBhIFByb21pc2Ugb2YgNzZcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzcHJlYWQoZnVuYywgc3RhcnQpIHtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHN0YXJ0ID0gc3RhcnQgPT0gbnVsbCA/IDAgOiBuYXRpdmVNYXgodG9JbnRlZ2VyKHN0YXJ0KSwgMCk7XG4gICAgICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgICB2YXIgYXJyYXkgPSBhcmdzW3N0YXJ0XSxcbiAgICAgICAgICAgIG90aGVyQXJncyA9IGNhc3RTbGljZShhcmdzLCAwLCBzdGFydCk7XG5cbiAgICAgICAgaWYgKGFycmF5KSB7XG4gICAgICAgICAgYXJyYXlQdXNoKG90aGVyQXJncywgYXJyYXkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcHBseShmdW5jLCB0aGlzLCBvdGhlckFyZ3MpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHRocm90dGxlZCBmdW5jdGlvbiB0aGF0IG9ubHkgaW52b2tlcyBgZnVuY2AgYXQgbW9zdCBvbmNlIHBlclxuICAgICAqIGV2ZXJ5IGB3YWl0YCBtaWxsaXNlY29uZHMuIFRoZSB0aHJvdHRsZWQgZnVuY3Rpb24gY29tZXMgd2l0aCBhIGBjYW5jZWxgXG4gICAgICogbWV0aG9kIHRvIGNhbmNlbCBkZWxheWVkIGBmdW5jYCBpbnZvY2F0aW9ucyBhbmQgYSBgZmx1c2hgIG1ldGhvZCB0b1xuICAgICAqIGltbWVkaWF0ZWx5IGludm9rZSB0aGVtLiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYFxuICAgICAqIHNob3VsZCBiZSBpbnZva2VkIG9uIHRoZSBsZWFkaW5nIGFuZC9vciB0cmFpbGluZyBlZGdlIG9mIHRoZSBgd2FpdGBcbiAgICAgKiB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWQgd2l0aCB0aGUgbGFzdCBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlXG4gICAgICogdGhyb3R0bGVkIGZ1bmN0aW9uLiBTdWJzZXF1ZW50IGNhbGxzIHRvIHRoZSB0aHJvdHRsZWQgZnVuY3Rpb24gcmV0dXJuIHRoZVxuICAgICAqIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2AgaW52b2NhdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAgICAgKiBpbnZva2VkIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0IG9ubHkgaWYgdGhlIHRocm90dGxlZCBmdW5jdGlvblxuICAgICAqIGlzIGludm9rZWQgbW9yZSB0aGFuIG9uY2UgZHVyaW5nIHRoZSBgd2FpdGAgdGltZW91dC5cbiAgICAgKlxuICAgICAqIElmIGB3YWl0YCBpcyBgMGAgYW5kIGBsZWFkaW5nYCBpcyBgZmFsc2VgLCBgZnVuY2AgaW52b2NhdGlvbiBpcyBkZWZlcnJlZFxuICAgICAqIHVudGlsIHRvIHRoZSBuZXh0IHRpY2ssIHNpbWlsYXIgdG8gYHNldFRpbWVvdXRgIHdpdGggYSB0aW1lb3V0IG9mIGAwYC5cbiAgICAgKlxuICAgICAqIFNlZSBbRGF2aWQgQ29yYmFjaG8ncyBhcnRpY2xlXShodHRwczovL2Nzcy10cmlja3MuY29tL2RlYm91bmNpbmctdGhyb3R0bGluZy1leHBsYWluZWQtZXhhbXBsZXMvKVxuICAgICAqIGZvciBkZXRhaWxzIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYF8udGhyb3R0bGVgIGFuZCBgXy5kZWJvdW5jZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB0aHJvdHRsZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gdGhyb3R0bGUgaW52b2NhdGlvbnMgdG8uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sZWFkaW5nPXRydWVdXG4gICAgICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIGxlYWRpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnRyYWlsaW5nPXRydWVdXG4gICAgICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgdGhyb3R0bGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBBdm9pZCBleGNlc3NpdmVseSB1cGRhdGluZyB0aGUgcG9zaXRpb24gd2hpbGUgc2Nyb2xsaW5nLlxuICAgICAqIGpRdWVyeSh3aW5kb3cpLm9uKCdzY3JvbGwnLCBfLnRocm90dGxlKHVwZGF0ZVBvc2l0aW9uLCAxMDApKTtcbiAgICAgKlxuICAgICAqIC8vIEludm9rZSBgcmVuZXdUb2tlbmAgd2hlbiB0aGUgY2xpY2sgZXZlbnQgaXMgZmlyZWQsIGJ1dCBub3QgbW9yZSB0aGFuIG9uY2UgZXZlcnkgNSBtaW51dGVzLlxuICAgICAqIHZhciB0aHJvdHRsZWQgPSBfLnRocm90dGxlKHJlbmV3VG9rZW4sIDMwMDAwMCwgeyAndHJhaWxpbmcnOiBmYWxzZSB9KTtcbiAgICAgKiBqUXVlcnkoZWxlbWVudCkub24oJ2NsaWNrJywgdGhyb3R0bGVkKTtcbiAgICAgKlxuICAgICAqIC8vIENhbmNlbCB0aGUgdHJhaWxpbmcgdGhyb3R0bGVkIGludm9jYXRpb24uXG4gICAgICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgdGhyb3R0bGVkLmNhbmNlbCk7XG4gICAgICovXG4gICAgZnVuY3Rpb24gdGhyb3R0bGUoZnVuYywgd2FpdCwgb3B0aW9ucykge1xuICAgICAgdmFyIGxlYWRpbmcgPSB0cnVlLFxuICAgICAgICAgIHRyYWlsaW5nID0gdHJ1ZTtcblxuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIGxlYWRpbmcgPSAnbGVhZGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy5sZWFkaW5nIDogbGVhZGluZztcbiAgICAgICAgdHJhaWxpbmcgPSAndHJhaWxpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMudHJhaWxpbmcgOiB0cmFpbGluZztcbiAgICAgIH1cbiAgICAgIHJldHVybiBkZWJvdW5jZShmdW5jLCB3YWl0LCB7XG4gICAgICAgICdsZWFkaW5nJzogbGVhZGluZyxcbiAgICAgICAgJ21heFdhaXQnOiB3YWl0LFxuICAgICAgICAndHJhaWxpbmcnOiB0cmFpbGluZ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB1cCB0byBvbmUgYXJndW1lbnQsIGlnbm9yaW5nIGFueVxuICAgICAqIGFkZGl0aW9uYWwgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1hcChbJzYnLCAnOCcsICcxMCddLCBfLnVuYXJ5KHBhcnNlSW50KSk7XG4gICAgICogLy8gPT4gWzYsIDgsIDEwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuYXJ5KGZ1bmMpIHtcbiAgICAgIHJldHVybiBhcnkoZnVuYywgMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcHJvdmlkZXMgYHZhbHVlYCB0byBgd3JhcHBlcmAgYXMgaXRzIGZpcnN0XG4gICAgICogYXJndW1lbnQuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgZnVuY3Rpb24gYXJlIGFwcGVuZGVkXG4gICAgICogdG8gdGhvc2UgcHJvdmlkZWQgdG8gdGhlIGB3cmFwcGVyYC4gVGhlIHdyYXBwZXIgaXMgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2BcbiAgICAgKiBiaW5kaW5nIG9mIHRoZSBjcmVhdGVkIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbd3JhcHBlcj1pZGVudGl0eV0gVGhlIHdyYXBwZXIgZnVuY3Rpb24uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBwID0gXy53cmFwKF8uZXNjYXBlLCBmdW5jdGlvbihmdW5jLCB0ZXh0KSB7XG4gICAgICogICByZXR1cm4gJzxwPicgKyBmdW5jKHRleHQpICsgJzwvcD4nO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogcCgnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiAnPHA+ZnJlZCwgYmFybmV5LCAmYW1wOyBwZWJibGVzPC9wPidcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwKHZhbHVlLCB3cmFwcGVyKSB7XG4gICAgICByZXR1cm4gcGFydGlhbChjYXN0RnVuY3Rpb24od3JhcHBlciksIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDYXN0cyBgdmFsdWVgIGFzIGFuIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjQuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3QgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY2FzdEFycmF5KDEpO1xuICAgICAqIC8vID0+IFsxXVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkoeyAnYSc6IDEgfSk7XG4gICAgICogLy8gPT4gW3sgJ2EnOiAxIH1dXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSgnYWJjJyk7XG4gICAgICogLy8gPT4gWydhYmMnXVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkobnVsbCk7XG4gICAgICogLy8gPT4gW251bGxdXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSh1bmRlZmluZWQpO1xuICAgICAqIC8vID0+IFt1bmRlZmluZWRdXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSgpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMiwgM107XG4gICAgICogY29uc29sZS5sb2coXy5jYXN0QXJyYXkoYXJyYXkpID09PSBhcnJheSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhc3RBcnJheSgpIHtcbiAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgdmFsdWUgPSBhcmd1bWVudHNbMF07XG4gICAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNoYWxsb3cgY2xvbmUgb2YgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uIHRoZVxuICAgICAqIFtzdHJ1Y3R1cmVkIGNsb25lIGFsZ29yaXRobV0oaHR0cHM6Ly9tZG4uaW8vU3RydWN0dXJlZF9jbG9uZV9hbGdvcml0aG0pXG4gICAgICogYW5kIHN1cHBvcnRzIGNsb25pbmcgYXJyYXlzLCBhcnJheSBidWZmZXJzLCBib29sZWFucywgZGF0ZSBvYmplY3RzLCBtYXBzLFxuICAgICAqIG51bWJlcnMsIGBPYmplY3RgIG9iamVjdHMsIHJlZ2V4ZXMsIHNldHMsIHN0cmluZ3MsIHN5bWJvbHMsIGFuZCB0eXBlZFxuICAgICAqIGFycmF5cy4gVGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnRpZXMgb2YgYGFyZ3VtZW50c2Agb2JqZWN0cyBhcmUgY2xvbmVkXG4gICAgICogYXMgcGxhaW4gb2JqZWN0cy4gQW4gZW1wdHkgb2JqZWN0IGlzIHJldHVybmVkIGZvciB1bmNsb25lYWJsZSB2YWx1ZXMgc3VjaFxuICAgICAqIGFzIGVycm9yIG9iamVjdHMsIGZ1bmN0aW9ucywgRE9NIG5vZGVzLCBhbmQgV2Vha01hcHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLmNsb25lRGVlcFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAgICAgKlxuICAgICAqIHZhciBzaGFsbG93ID0gXy5jbG9uZShvYmplY3RzKTtcbiAgICAgKiBjb25zb2xlLmxvZyhzaGFsbG93WzBdID09PSBvYmplY3RzWzBdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmUodmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX1NZTUJPTFNfRkxBRyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIGNsb25lZCB2YWx1ZS4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsXG4gICAgICogY2xvbmluZyBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGhcbiAgICAgKiB1cCB0byBmb3VyIGFyZ3VtZW50czsgKHZhbHVlIFssIGluZGV4fGtleSwgb2JqZWN0LCBzdGFja10pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLmNsb25lRGVlcFdpdGhcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcih2YWx1ZSkge1xuICAgICAqICAgaWYgKF8uaXNFbGVtZW50KHZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gdmFsdWUuY2xvbmVOb2RlKGZhbHNlKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZWwgPSBfLmNsb25lV2l0aChkb2N1bWVudC5ib2R5LCBjdXN0b21pemVyKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGVsID09PSBkb2N1bWVudC5ib2R5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqIGNvbnNvbGUubG9nKGVsLm5vZGVOYW1lKTtcbiAgICAgKiAvLyA9PiAnQk9EWSdcbiAgICAgKiBjb25zb2xlLmxvZyhlbC5jaGlsZE5vZGVzLmxlbmd0aCk7XG4gICAgICogLy8gPT4gMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lV2l0aCh2YWx1ZSwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfU1lNQk9MU19GTEFHLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmNsb25lYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBjbG9uZXMgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmVjdXJzaXZlbHkgY2xvbmUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGRlZXAgY2xvbmVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5jbG9uZVxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAgICAgKlxuICAgICAqIHZhciBkZWVwID0gXy5jbG9uZURlZXAob2JqZWN0cyk7XG4gICAgICogY29uc29sZS5sb2coZGVlcFswXSA9PT0gb2JqZWN0c1swXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZURlZXAodmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX0RFRVBfRkxBRyB8IENMT05FX1NZTUJPTFNfRkxBRyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZVdpdGhgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGNsb25lcyBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZWN1cnNpdmVseSBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBkZWVwIGNsb25lZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8uY2xvbmVXaXRoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIodmFsdWUpIHtcbiAgICAgKiAgIGlmIChfLmlzRWxlbWVudCh2YWx1ZSkpIHtcbiAgICAgKiAgICAgcmV0dXJuIHZhbHVlLmNsb25lTm9kZSh0cnVlKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZWwgPSBfLmNsb25lRGVlcFdpdGgoZG9jdW1lbnQuYm9keSwgY3VzdG9taXplcik7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhlbCA9PT0gZG9jdW1lbnQuYm9keSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKiBjb25zb2xlLmxvZyhlbC5ub2RlTmFtZSk7XG4gICAgICogLy8gPT4gJ0JPRFknXG4gICAgICogY29uc29sZS5sb2coZWwuY2hpbGROb2Rlcy5sZW5ndGgpO1xuICAgICAqIC8vID0+IDIwXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVEZWVwV2l0aCh2YWx1ZSwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfREVFUF9GTEFHIHwgQ0xPTkVfU1lNQk9MU19GTEFHLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYG9iamVjdGAgY29uZm9ybXMgdG8gYHNvdXJjZWAgYnkgaW52b2tpbmcgdGhlIHByZWRpY2F0ZVxuICAgICAqIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgZXF1aXZhbGVudCB0byBgXy5jb25mb3Jtc2Agd2hlbiBgc291cmNlYCBpc1xuICAgICAqIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTQuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgY29uZm9ybXMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAgICAgKlxuICAgICAqIF8uY29uZm9ybXNUbyhvYmplY3QsIHsgJ2InOiBmdW5jdGlvbihuKSB7IHJldHVybiBuID4gMTsgfSB9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmNvbmZvcm1zVG8ob2JqZWN0LCB7ICdiJzogZnVuY3Rpb24obikgeyByZXR1cm4gbiA+IDI7IH0gfSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25mb3Jtc1RvKG9iamVjdCwgc291cmNlKSB7XG4gICAgICByZXR1cm4gc291cmNlID09IG51bGwgfHwgYmFzZUNvbmZvcm1zVG8ob2JqZWN0LCBzb3VyY2UsIGtleXMoc291cmNlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgYVxuICAgICAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGVxdWl2YWxlbnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAgICAgKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICAgICAqXG4gICAgICogXy5lcShvYmplY3QsIG9iamVjdCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5lcShvYmplY3QsIG90aGVyKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5lcSgnYScsICdhJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5lcSgnYScsIE9iamVjdCgnYScpKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5lcShOYU4sIE5hTik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVxKHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSBvdGhlciB8fCAodmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy45LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gYG90aGVyYCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBzZWUgXy5sdFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmd0KDMsIDEpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uZ3QoMywgMyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uZ3QoMSwgMyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgZ3QgPSBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKGJhc2VHdCk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYG90aGVyYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjkuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0b1xuICAgICAqICBgb3RoZXJgLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQHNlZSBfLmx0ZVxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmd0ZSgzLCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmd0ZSgzLCAzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmd0ZSgxLCAzKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBndGUgPSBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKGZ1bmN0aW9uKHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIHZhbHVlID49IG90aGVyO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FyZ3VtZW50cyhbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzQXJndW1lbnRzID0gYmFzZUlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID8gYmFzZUlzQXJndW1lbnRzIDogZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICAgICAhcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheSgnYWJjJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheShfLm5vb3ApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlCdWZmZXJgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjMuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXkgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUJ1ZmZlcihuZXcgQXJyYXlCdWZmZXIoMikpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUJ1ZmZlcihuZXcgQXJyYXkoMikpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzQXJyYXlCdWZmZXIgPSBub2RlSXNBcnJheUJ1ZmZlciA/IGJhc2VVbmFyeShub2RlSXNBcnJheUJ1ZmZlcikgOiBiYXNlSXNBcnJheUJ1ZmZlcjtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UuIEEgdmFsdWUgaXMgY29uc2lkZXJlZCBhcnJheS1saWtlIGlmIGl0J3NcbiAgICAgKiBub3QgYSBmdW5jdGlvbiBhbmQgaGFzIGEgYHZhbHVlLmxlbmd0aGAgdGhhdCdzIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yXG4gICAgICogZXF1YWwgdG8gYDBgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE51bWJlci5NQVhfU0FGRV9JTlRFR0VSYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlKCdhYmMnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlKF8ubm9vcCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0FycmF5TGlrZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhaXNGdW5jdGlvbih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0FycmF5TGlrZWAgZXhjZXB0IHRoYXQgaXQgYWxzbyBjaGVja3MgaWYgYHZhbHVlYFxuICAgICAqIGlzIGFuIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXktbGlrZSBvYmplY3QsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZU9iamVjdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2VPYmplY3QoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZU9iamVjdCgnYWJjJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2VPYmplY3QoXy5ub29wKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0FycmF5TGlrZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGJvb2xlYW4gcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBib29sZWFuLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNCb29sZWFuKGZhbHNlKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQm9vbGVhbihudWxsKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzQm9vbGVhbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSBmYWxzZSB8fFxuICAgICAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBib29sVGFnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjMuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0J1ZmZlcihuZXcgQnVmZmVyKDIpKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQnVmZmVyKG5ldyBVaW50OEFycmF5KDIpKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0J1ZmZlciA9IG5hdGl2ZUlzQnVmZmVyIHx8IHN0dWJGYWxzZTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRGF0ZWAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGRhdGUgb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNEYXRlKG5ldyBEYXRlKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRGF0ZSgnTW9uIEFwcmlsIDIzIDIwMTInKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0RhdGUgPSBub2RlSXNEYXRlID8gYmFzZVVuYXJ5KG5vZGVJc0RhdGUpIDogYmFzZUlzRGF0ZTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIERPTSBlbGVtZW50LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIERPTSBlbGVtZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNFbGVtZW50KGRvY3VtZW50LmJvZHkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNFbGVtZW50KCc8Ym9keT4nKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRWxlbWVudCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgdmFsdWUubm9kZVR5cGUgPT09IDEgJiYgIWlzUGxhaW5PYmplY3QodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGVtcHR5IG9iamVjdCwgY29sbGVjdGlvbiwgbWFwLCBvciBzZXQuXG4gICAgICpcbiAgICAgKiBPYmplY3RzIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBubyBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWRcbiAgICAgKiBwcm9wZXJ0aWVzLlxuICAgICAqXG4gICAgICogQXJyYXktbGlrZSB2YWx1ZXMgc3VjaCBhcyBgYXJndW1lbnRzYCBvYmplY3RzLCBhcnJheXMsIGJ1ZmZlcnMsIHN0cmluZ3MsIG9yXG4gICAgICogalF1ZXJ5LWxpa2UgY29sbGVjdGlvbnMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIGEgYGxlbmd0aGAgb2YgYDBgLlxuICAgICAqIFNpbWlsYXJseSwgbWFwcyBhbmQgc2V0cyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgYSBgc2l6ZWAgb2YgYDBgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBlbXB0eSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRW1wdHkobnVsbCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0VtcHR5KHRydWUpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNFbXB0eSgxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRW1wdHkoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0VtcHR5KHsgJ2EnOiAxIH0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkge1xuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoaXNBcnJheUxpa2UodmFsdWUpICYmXG4gICAgICAgICAgKGlzQXJyYXkodmFsdWUpIHx8IHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUuc3BsaWNlID09ICdmdW5jdGlvbicgfHxcbiAgICAgICAgICAgIGlzQnVmZmVyKHZhbHVlKSB8fCBpc1R5cGVkQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzKHZhbHVlKSkpIHtcbiAgICAgICAgcmV0dXJuICF2YWx1ZS5sZW5ndGg7XG4gICAgICB9XG4gICAgICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKTtcbiAgICAgIGlmICh0YWcgPT0gbWFwVGFnIHx8IHRhZyA9PSBzZXRUYWcpIHtcbiAgICAgICAgcmV0dXJuICF2YWx1ZS5zaXplO1xuICAgICAgfVxuICAgICAgaWYgKGlzUHJvdG90eXBlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gIWJhc2VLZXlzKHZhbHVlKS5sZW5ndGg7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGEgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmVcbiAgICAgKiBlcXVpdmFsZW50LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIHN1cHBvcnRzIGNvbXBhcmluZyBhcnJheXMsIGFycmF5IGJ1ZmZlcnMsIGJvb2xlYW5zLFxuICAgICAqIGRhdGUgb2JqZWN0cywgZXJyb3Igb2JqZWN0cywgbWFwcywgbnVtYmVycywgYE9iamVjdGAgb2JqZWN0cywgcmVnZXhlcyxcbiAgICAgKiBzZXRzLCBzdHJpbmdzLCBzeW1ib2xzLCBhbmQgdHlwZWQgYXJyYXlzLiBgT2JqZWN0YCBvYmplY3RzIGFyZSBjb21wYXJlZFxuICAgICAqIGJ5IHRoZWlyIG93biwgbm90IGluaGVyaXRlZCwgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLiBGdW5jdGlvbnMgYW5kIERPTVxuICAgICAqIG5vZGVzIGFyZSBjb21wYXJlZCBieSBzdHJpY3QgZXF1YWxpdHksIGkuZS4gYD09PWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAgICAgKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICAgICAqXG4gICAgICogXy5pc0VxdWFsKG9iamVjdCwgb3RoZXIpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIG9iamVjdCA9PT0gb3RoZXI7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0VxdWFsKHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0VxdWFsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gY29tcGFyZSB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLCBjb21wYXJpc29uc1xuICAgICAqIGFyZSBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGggdXAgdG9cbiAgICAgKiBzaXggYXJndW1lbnRzOiAob2JqVmFsdWUsIG90aFZhbHVlIFssIGluZGV4fGtleSwgb2JqZWN0LCBvdGhlciwgc3RhY2tdKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGlzR3JlZXRpbmcodmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiAvXmgoPzppfGVsbG8pJC8udGVzdCh2YWx1ZSk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgb3RoVmFsdWUpIHtcbiAgICAgKiAgIGlmIChpc0dyZWV0aW5nKG9ialZhbHVlKSAmJiBpc0dyZWV0aW5nKG90aFZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbJ2hlbGxvJywgJ2dvb2RieWUnXTtcbiAgICAgKiB2YXIgb3RoZXIgPSBbJ2hpJywgJ2dvb2RieWUnXTtcbiAgICAgKlxuICAgICAqIF8uaXNFcXVhbFdpdGgoYXJyYXksIG90aGVyLCBjdXN0b21pemVyKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNFcXVhbFdpdGgodmFsdWUsIG90aGVyLCBjdXN0b21pemVyKSB7XG4gICAgICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gICAgICB2YXIgcmVzdWx0ID0gY3VzdG9taXplciA/IGN1c3RvbWl6ZXIodmFsdWUsIG90aGVyKSA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlciwgdW5kZWZpbmVkLCBjdXN0b21pemVyKSA6ICEhcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGBFcnJvcmAsIGBFdmFsRXJyb3JgLCBgUmFuZ2VFcnJvcmAsIGBSZWZlcmVuY2VFcnJvcmAsXG4gICAgICogYFN5bnRheEVycm9yYCwgYFR5cGVFcnJvcmAsIG9yIGBVUklFcnJvcmAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBlcnJvciBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0Vycm9yKG5ldyBFcnJvcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Vycm9yKEVycm9yKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRXJyb3IodmFsdWUpIHtcbiAgICAgIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gICAgICByZXR1cm4gdGFnID09IGVycm9yVGFnIHx8IHRhZyA9PSBkb21FeGNUYWcgfHxcbiAgICAgICAgKHR5cGVvZiB2YWx1ZS5tZXNzYWdlID09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWx1ZS5uYW1lID09ICdzdHJpbmcnICYmICFpc1BsYWluT2JqZWN0KHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBmaW5pdGUgcHJpbWl0aXZlIG51bWJlci5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgTnVtYmVyLmlzRmluaXRlYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzRmluaXRlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmaW5pdGUgbnVtYmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNGaW5pdGUoMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRmluaXRlKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0Zpbml0ZSgnMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNGaW5pdGUodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiYgbmF0aXZlSXNGaW5pdGUodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmdW5jdGlvbiwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRnVuY3Rpb24oXyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Z1bmN0aW9uKC9hYmMvKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAgICAgLy8gaW4gU2FmYXJpIDkgd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXlzIGFuZCBvdGhlciBjb25zdHJ1Y3RvcnMuXG4gICAgICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gICAgICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZyB8fCB0YWcgPT0gYXN5bmNUYWcgfHwgdGFnID09IHByb3h5VGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGludGVnZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYE51bWJlci5pc0ludGVnZXJgXShodHRwczovL21kbi5pby9OdW1iZXIvaXNJbnRlZ2VyKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gaW50ZWdlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzSW50ZWdlcigzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0ludGVnZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzSW50ZWdlcignMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNJbnRlZ2VyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIHZhbHVlID09IHRvSW50ZWdlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gICAgICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0xlbmd0aCgzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTGVuZ3RoKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzTGVuZ3RoKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0xlbmd0aCgnMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICAgICAgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZVxuICAgICAqIFtsYW5ndWFnZSB0eXBlXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcylcbiAgICAgKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0KHt9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdChfLm5vb3ApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3QobnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICAgICAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdExpa2Uoe30pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYE1hcGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG1hcCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTWFwKG5ldyBNYXApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNNYXAobmV3IFdlYWtNYXApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzTWFwID0gbm9kZUlzTWFwID8gYmFzZVVuYXJ5KG5vZGVJc01hcCkgOiBiYXNlSXNNYXA7XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhIHBhcnRpYWwgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gYG9iamVjdGAgYW5kIGBzb3VyY2VgIHRvXG4gICAgICogZGV0ZXJtaW5lIGlmIGBvYmplY3RgIGNvbnRhaW5zIGVxdWl2YWxlbnQgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8gYF8ubWF0Y2hlc2Agd2hlbiBgc291cmNlYCBpc1xuICAgICAqIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqXG4gICAgICogUGFydGlhbCBjb21wYXJpc29ucyB3aWxsIG1hdGNoIGVtcHR5IGFycmF5IGFuZCBlbXB0eSBvYmplY3QgYHNvdXJjZWBcbiAgICAgKiB2YWx1ZXMgYWdhaW5zdCBhbnkgYXJyYXkgb3Igb2JqZWN0IHZhbHVlLCByZXNwZWN0aXZlbHkuIFNlZSBgXy5pc0VxdWFsYFxuICAgICAqIGZvciBhIGxpc3Qgb2Ygc3VwcG9ydGVkIHZhbHVlIGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyIH07XG4gICAgICpcbiAgICAgKiBfLmlzTWF0Y2gob2JqZWN0LCB7ICdiJzogMiB9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTWF0Y2gob2JqZWN0LCB7ICdiJzogMSB9KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTWF0Y2gob2JqZWN0LCBzb3VyY2UpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT09IHNvdXJjZSB8fCBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgZ2V0TWF0Y2hEYXRhKHNvdXJjZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNNYXRjaGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgdmFsdWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCwgY29tcGFyaXNvbnNcbiAgICAgKiBhcmUgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIGZpdmVcbiAgICAgKiBhcmd1bWVudHM6IChvYmpWYWx1ZSwgc3JjVmFsdWUsIGluZGV4fGtleSwgb2JqZWN0LCBzb3VyY2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGlzR3JlZXRpbmcodmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiAvXmgoPzppfGVsbG8pJC8udGVzdCh2YWx1ZSk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAgICAgKiAgIGlmIChpc0dyZWV0aW5nKG9ialZhbHVlKSAmJiBpc0dyZWV0aW5nKHNyY1ZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnZ3JlZXRpbmcnOiAnaGVsbG8nIH07XG4gICAgICogdmFyIHNvdXJjZSA9IHsgJ2dyZWV0aW5nJzogJ2hpJyB9O1xuICAgICAqXG4gICAgICogXy5pc01hdGNoV2l0aChvYmplY3QsIHNvdXJjZSwgY3VzdG9taXplcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTWF0Y2hXaXRoKG9iamVjdCwgc291cmNlLCBjdXN0b21pemVyKSB7XG4gICAgICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIGdldE1hdGNoRGF0YShzb3VyY2UpLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgTmFOYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgTnVtYmVyLmlzTmFOYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzTmFOKSBhbmQgaXMgbm90IHRoZSBzYW1lIGFzXG4gICAgICogZ2xvYmFsIFtgaXNOYU5gXShodHRwczovL21kbi5pby9pc05hTikgd2hpY2ggcmV0dXJucyBgdHJ1ZWAgZm9yXG4gICAgICogYHVuZGVmaW5lZGAgYW5kIG90aGVyIG5vbi1udW1iZXIgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgTmFOYCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTmFOKE5hTik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc05hTihuZXcgTnVtYmVyKE5hTikpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGlzTmFOKHVuZGVmaW5lZCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc05hTih1bmRlZmluZWQpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNOYU4odmFsdWUpIHtcbiAgICAgIC8vIEFuIGBOYU5gIHByaW1pdGl2ZSBpcyB0aGUgb25seSB2YWx1ZSB0aGF0IGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuXG4gICAgICAvLyBQZXJmb3JtIHRoZSBgdG9TdHJpbmdUYWdgIGNoZWNrIGZpcnN0IHRvIGF2b2lkIGVycm9ycyB3aXRoIHNvbWVcbiAgICAgIC8vIEFjdGl2ZVggb2JqZWN0cyBpbiBJRS5cbiAgICAgIHJldHVybiBpc051bWJlcih2YWx1ZSkgJiYgdmFsdWUgIT0gK3ZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcHJpc3RpbmUgbmF0aXZlIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGNhbid0IHJlbGlhYmx5IGRldGVjdCBuYXRpdmUgZnVuY3Rpb25zIGluIHRoZSBwcmVzZW5jZVxuICAgICAqIG9mIHRoZSBjb3JlLWpzIHBhY2thZ2UgYmVjYXVzZSBjb3JlLWpzIGNpcmN1bXZlbnRzIHRoaXMga2luZCBvZiBkZXRlY3Rpb24uXG4gICAgICogRGVzcGl0ZSBtdWx0aXBsZSByZXF1ZXN0cywgdGhlIGNvcmUtanMgbWFpbnRhaW5lciBoYXMgbWFkZSBpdCBjbGVhcjogYW55XG4gICAgICogYXR0ZW1wdCB0byBmaXggdGhlIGRldGVjdGlvbiB3aWxsIGJlIG9ic3RydWN0ZWQuIEFzIGEgcmVzdWx0LCB3ZSdyZSBsZWZ0XG4gICAgICogd2l0aCBsaXR0bGUgY2hvaWNlIGJ1dCB0byB0aHJvdyBhbiBlcnJvci4gVW5mb3J0dW5hdGVseSwgdGhpcyBhbHNvIGFmZmVjdHNcbiAgICAgKiBwYWNrYWdlcywgbGlrZSBbYmFiZWwtcG9seWZpbGxdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2JhYmVsLXBvbHlmaWxsKSxcbiAgICAgKiB3aGljaCByZWx5IG9uIGNvcmUtanMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNOYXRpdmUoQXJyYXkucHJvdG90eXBlLnB1c2gpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOYXRpdmUoXyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc05hdGl2ZSh2YWx1ZSkge1xuICAgICAgaWYgKGlzTWFza2FibGUodmFsdWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihDT1JFX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VJc05hdGl2ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYG51bGxgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgbnVsbGAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc051bGwobnVsbCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc051bGwodm9pZCAwKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTnVsbCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbnVsbGlzaCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTmlsKG51bGwpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOaWwodm9pZCAwKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTmlsKE5hTik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc05pbCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBOdW1iZXJgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVG8gZXhjbHVkZSBgSW5maW5pdHlgLCBgLUluZmluaXR5YCwgYW5kIGBOYU5gLCB3aGljaCBhcmVcbiAgICAgKiBjbGFzc2lmaWVkIGFzIG51bWJlcnMsIHVzZSB0aGUgYF8uaXNGaW5pdGVgIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBudW1iZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc051bWJlcigzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOdW1iZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOdW1iZXIoJzMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInIHx8XG4gICAgICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IG51bWJlclRhZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIHRoYXQgaXMsIGFuIG9iamVjdCBjcmVhdGVkIGJ5IHRoZVxuICAgICAqIGBPYmplY3RgIGNvbnN0cnVjdG9yIG9yIG9uZSB3aXRoIGEgYFtbUHJvdG90eXBlXV1gIG9mIGBudWxsYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjguMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmlzUGxhaW5PYmplY3QobmV3IEZvbyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNQbGFpbk9iamVjdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzUGxhaW5PYmplY3QoeyAneCc6IDAsICd5JzogMCB9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzUGxhaW5PYmplY3QoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgICAgIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fCBiYXNlR2V0VGFnKHZhbHVlKSAhPSBvYmplY3RUYWcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHByb3RvID0gZ2V0UHJvdG90eXBlKHZhbHVlKTtcbiAgICAgIGlmIChwcm90byA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHZhciBDdG9yID0gaGFzT3duUHJvcGVydHkuY2FsbChwcm90bywgJ2NvbnN0cnVjdG9yJykgJiYgcHJvdG8uY29uc3RydWN0b3I7XG4gICAgICByZXR1cm4gdHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yIGluc3RhbmNlb2YgQ3RvciAmJlxuICAgICAgICBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA9PSBvYmplY3RDdG9yU3RyaW5nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgUmVnRXhwYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcmVnZXhwLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNSZWdFeHAoL2FiYy8pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNSZWdFeHAoJy9hYmMvJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNSZWdFeHAgPSBub2RlSXNSZWdFeHAgPyBiYXNlVW5hcnkobm9kZUlzUmVnRXhwKSA6IGJhc2VJc1JlZ0V4cDtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgc2FmZSBpbnRlZ2VyLiBBbiBpbnRlZ2VyIGlzIHNhZmUgaWYgaXQncyBhbiBJRUVFLTc1NFxuICAgICAqIGRvdWJsZSBwcmVjaXNpb24gbnVtYmVyIHdoaWNoIGlzbid0IHRoZSByZXN1bHQgb2YgYSByb3VuZGVkIHVuc2FmZSBpbnRlZ2VyLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BOdW1iZXIuaXNTYWZlSW50ZWdlcmBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc1NhZmVJbnRlZ2VyKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzYWZlIGludGVnZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1NhZmVJbnRlZ2VyKDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNTYWZlSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc1NhZmVJbnRlZ2VyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc1NhZmVJbnRlZ2VyKCczJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1NhZmVJbnRlZ2VyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNJbnRlZ2VyKHZhbHVlKSAmJiB2YWx1ZSA+PSAtTUFYX1NBRkVfSU5URUdFUiAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU2V0YCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2V0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNTZXQobmV3IFNldCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1NldChuZXcgV2Vha1NldCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNTZXQgPSBub2RlSXNTZXQgPyBiYXNlVW5hcnkobm9kZUlzU2V0KSA6IGJhc2VJc1NldDtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3RyaW5nYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN0cmluZywgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzU3RyaW5nKCdhYmMnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzU3RyaW5nKDEpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHxcbiAgICAgICAgKCFpc0FycmF5KHZhbHVlKSAmJiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN0cmluZ1RhZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3ltYm9sLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNTeW1ib2woU3ltYm9sLml0ZXJhdG9yKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzU3ltYm9sKCdhYmMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzeW1ib2wnIHx8XG4gICAgICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN5bWJvbFRhZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNUeXBlZEFycmF5ID0gbm9kZUlzVHlwZWRBcnJheSA/IGJhc2VVbmFyeShub2RlSXNUeXBlZEFycmF5KSA6IGJhc2VJc1R5cGVkQXJyYXk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYHVuZGVmaW5lZGAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1VuZGVmaW5lZCh2b2lkIDApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNVbmRlZmluZWQobnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBXZWFrTWFwYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgd2VhayBtYXAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1dlYWtNYXAobmV3IFdlYWtNYXApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNXZWFrTWFwKG5ldyBNYXApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNXZWFrTWFwKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IHdlYWtNYXBUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBXZWFrU2V0YCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgd2VhayBzZXQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1dlYWtTZXQobmV3IFdlYWtTZXQpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNXZWFrU2V0KG5ldyBTZXQpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNXZWFrU2V0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSB3ZWFrU2V0VGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBgb3RoZXJgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIGBvdGhlcmAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAc2VlIF8uZ3RcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sdCgxLCAzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmx0KDMsIDMpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmx0KDMsIDEpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGx0ID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihiYXNlTHQpO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBvdGhlcmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy45LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG9cbiAgICAgKiAgYG90aGVyYCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBzZWUgXy5ndGVcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sdGUoMSwgMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5sdGUoMywgMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5sdGUoMywgMSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgbHRlID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihmdW5jdGlvbih2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA8PSBvdGhlcjtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYW4gYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9BcnJheSh7ICdhJzogMSwgJ2InOiAyIH0pO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogXy50b0FycmF5KCdhYmMnKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYicsICdjJ11cbiAgICAgKlxuICAgICAqIF8udG9BcnJheSgxKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqXG4gICAgICogXy50b0FycmF5KG51bGwpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9BcnJheSh2YWx1ZSkge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBpZiAoaXNBcnJheUxpa2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBpc1N0cmluZyh2YWx1ZSkgPyBzdHJpbmdUb0FycmF5KHZhbHVlKSA6IGNvcHlBcnJheSh2YWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAoc3ltSXRlcmF0b3IgJiYgdmFsdWVbc3ltSXRlcmF0b3JdKSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRvclRvQXJyYXkodmFsdWVbc3ltSXRlcmF0b3JdKCkpO1xuICAgICAgfVxuICAgICAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSksXG4gICAgICAgICAgZnVuYyA9IHRhZyA9PSBtYXBUYWcgPyBtYXBUb0FycmF5IDogKHRhZyA9PSBzZXRUYWcgPyBzZXRUb0FycmF5IDogdmFsdWVzKTtcblxuICAgICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBmaW5pdGUgbnVtYmVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTIuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvRmluaXRlKDMuMik7XG4gICAgICogLy8gPT4gMy4yXG4gICAgICpcbiAgICAgKiBfLnRvRmluaXRlKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IDVlLTMyNFxuICAgICAqXG4gICAgICogXy50b0Zpbml0ZShJbmZpbml0eSk7XG4gICAgICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAgICAgKlxuICAgICAqIF8udG9GaW5pdGUoJzMuMicpO1xuICAgICAqIC8vID0+IDMuMlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvRmluaXRlKHZhbHVlKSB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogMDtcbiAgICAgIH1cbiAgICAgIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICAgICAgaWYgKHZhbHVlID09PSBJTkZJTklUWSB8fCB2YWx1ZSA9PT0gLUlORklOSVRZKSB7XG4gICAgICAgIHZhciBzaWduID0gKHZhbHVlIDwgMCA/IC0xIDogMSk7XG4gICAgICAgIHJldHVybiBzaWduICogTUFYX0lOVEVHRVI7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHZhbHVlID8gdmFsdWUgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYW4gaW50ZWdlci5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gICAgICogW2BUb0ludGVnZXJgXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9pbnRlZ2VyKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b0ludGVnZXIoMy4yKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnRvSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiBfLnRvSW50ZWdlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAgICAgKlxuICAgICAqIF8udG9JbnRlZ2VyKCczLjInKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9JbnRlZ2VyKHZhbHVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdG9GaW5pdGUodmFsdWUpLFxuICAgICAgICAgIHJlbWFpbmRlciA9IHJlc3VsdCAlIDE7XG5cbiAgICAgIHJldHVybiByZXN1bHQgPT09IHJlc3VsdCA/IChyZW1haW5kZXIgPyByZXN1bHQgLSByZW1haW5kZXIgOiByZXN1bHQpIDogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIgc3VpdGFibGUgZm9yIHVzZSBhcyB0aGUgbGVuZ3RoIG9mIGFuXG4gICAgICogYXJyYXktbGlrZSBvYmplY3QuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvTGVuZ3RoKDMuMik7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy50b0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiBfLnRvTGVuZ3RoKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiA0Mjk0OTY3Mjk1XG4gICAgICpcbiAgICAgKiBfLnRvTGVuZ3RoKCczLjInKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9MZW5ndGgodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA/IGJhc2VDbGFtcCh0b0ludGVnZXIodmFsdWUpLCAwLCBNQVhfQVJSQVlfTEVOR1RIKSA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIG51bWJlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9OdW1iZXIoMy4yKTtcbiAgICAgKiAvLyA9PiAzLjJcbiAgICAgKlxuICAgICAqIF8udG9OdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gNWUtMzI0XG4gICAgICpcbiAgICAgKiBfLnRvTnVtYmVyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBJbmZpbml0eVxuICAgICAqXG4gICAgICogXy50b051bWJlcignMy4yJyk7XG4gICAgICogLy8gPT4gMy4yXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gTkFOO1xuICAgICAgfVxuICAgICAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICB2YXIgb3RoZXIgPSB0eXBlb2YgdmFsdWUudmFsdWVPZiA9PSAnZnVuY3Rpb24nID8gdmFsdWUudmFsdWVPZigpIDogdmFsdWU7XG4gICAgICAgIHZhbHVlID0gaXNPYmplY3Qob3RoZXIpID8gKG90aGVyICsgJycpIDogb3RoZXI7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogK3ZhbHVlO1xuICAgICAgfVxuICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHJlVHJpbSwgJycpO1xuICAgICAgdmFyIGlzQmluYXJ5ID0gcmVJc0JpbmFyeS50ZXN0KHZhbHVlKTtcbiAgICAgIHJldHVybiAoaXNCaW5hcnkgfHwgcmVJc09jdGFsLnRlc3QodmFsdWUpKVxuICAgICAgICA/IGZyZWVQYXJzZUludCh2YWx1ZS5zbGljZSgyKSwgaXNCaW5hcnkgPyAyIDogOClcbiAgICAgICAgOiAocmVJc0JhZEhleC50ZXN0KHZhbHVlKSA/IE5BTiA6ICt2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHBsYWluIG9iamVjdCBmbGF0dGVuaW5nIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZ1xuICAgICAqIGtleWVkIHByb3BlcnRpZXMgb2YgYHZhbHVlYCB0byBvd24gcHJvcGVydGllcyBvZiB0aGUgcGxhaW4gb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBwbGFpbiBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8uYXNzaWduKHsgJ2EnOiAxIH0sIG5ldyBGb28pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqXG4gICAgICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgXy50b1BsYWluT2JqZWN0KG5ldyBGb28pKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgICAgIHJldHVybiBjb3B5T2JqZWN0KHZhbHVlLCBrZXlzSW4odmFsdWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc2FmZSBpbnRlZ2VyLiBBIHNhZmUgaW50ZWdlciBjYW4gYmUgY29tcGFyZWQgYW5kXG4gICAgICogcmVwcmVzZW50ZWQgY29ycmVjdGx5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvU2FmZUludGVnZXIoMy4yKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnRvU2FmZUludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogXy50b1NhZmVJbnRlZ2VyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiA5MDA3MTk5MjU0NzQwOTkxXG4gICAgICpcbiAgICAgKiBfLnRvU2FmZUludGVnZXIoJzMuMicpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1NhZmVJbnRlZ2VyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgPyBiYXNlQ2xhbXAodG9JbnRlZ2VyKHZhbHVlKSwgLU1BWF9TQUZFX0lOVEVHRVIsIE1BWF9TQUZFX0lOVEVHRVIpXG4gICAgICAgIDogKHZhbHVlID09PSAwID8gdmFsdWUgOiAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nLiBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgZm9yIGBudWxsYFxuICAgICAqIGFuZCBgdW5kZWZpbmVkYCB2YWx1ZXMuIFRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9TdHJpbmcobnVsbCk7XG4gICAgICogLy8gPT4gJydcbiAgICAgKlxuICAgICAqIF8udG9TdHJpbmcoLTApO1xuICAgICAqIC8vID0+ICctMCdcbiAgICAgKlxuICAgICAqIF8udG9TdHJpbmcoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiAnMSwyLDMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9TdHJpbmcodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJycgOiBiYXNlVG9TdHJpbmcodmFsdWUpO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIEFzc2lnbnMgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlIG9iamVjdHMgdG8gdGhlXG4gICAgICogZGVzdGluYXRpb24gb2JqZWN0LiBTb3VyY2Ugb2JqZWN0cyBhcmUgYXBwbGllZCBmcm9tIGxlZnQgdG8gcmlnaHQuXG4gICAgICogU3Vic2VxdWVudCBzb3VyY2VzIG92ZXJ3cml0ZSBwcm9wZXJ0eSBhc3NpZ25tZW50cyBvZiBwcmV2aW91cyBzb3VyY2VzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAgYW5kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAgICAgKiBbYE9iamVjdC5hc3NpZ25gXShodHRwczovL21kbi5pby9PYmplY3QvYXNzaWduKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmFzc2lnbkluXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gQmFyKCkge1xuICAgICAqICAgdGhpcy5jID0gMztcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmIgPSAyO1xuICAgICAqIEJhci5wcm90b3R5cGUuZCA9IDQ7XG4gICAgICpcbiAgICAgKiBfLmFzc2lnbih7ICdhJzogMCB9LCBuZXcgRm9vLCBuZXcgQmFyKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2MnOiAzIH1cbiAgICAgKi9cbiAgICB2YXIgYXNzaWduID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UpIHtcbiAgICAgIGlmIChpc1Byb3RvdHlwZShzb3VyY2UpIHx8IGlzQXJyYXlMaWtlKHNvdXJjZSkpIHtcbiAgICAgICAgY29weU9iamVjdChzb3VyY2UsIGtleXMoc291cmNlKSwgb2JqZWN0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgc291cmNlW2tleV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmFzc2lnbmAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBvd24gYW5kXG4gICAgICogaW5oZXJpdGVkIHNvdXJjZSBwcm9wZXJ0aWVzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAYWxpYXMgZXh0ZW5kXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5hc3NpZ25cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBCYXIoKSB7XG4gICAgICogICB0aGlzLmMgPSAzO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYiA9IDI7XG4gICAgICogQmFyLnByb3RvdHlwZS5kID0gNDtcbiAgICAgKlxuICAgICAqIF8uYXNzaWduSW4oeyAnYSc6IDAgfSwgbmV3IEZvbywgbmV3IEJhcik7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzLCAnZCc6IDQgfVxuICAgICAqL1xuICAgIHZhciBhc3NpZ25JbiA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlKSB7XG4gICAgICBjb3B5T2JqZWN0KHNvdXJjZSwga2V5c0luKHNvdXJjZSksIG9iamVjdCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmFzc2lnbkluYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgYXNzaWduZWQgdmFsdWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJuc1xuICAgICAqIGB1bmRlZmluZWRgLCBhc3NpZ25tZW50IGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgXG4gICAgICogaXMgaW52b2tlZCB3aXRoIGZpdmUgYXJndW1lbnRzOiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGFsaWFzIGV4dGVuZFdpdGhcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBzb3VyY2VzIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uYXNzaWduV2l0aFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSkge1xuICAgICAqICAgcmV0dXJuIF8uaXNVbmRlZmluZWQob2JqVmFsdWUpID8gc3JjVmFsdWUgOiBvYmpWYWx1ZTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZGVmYXVsdHMgPSBfLnBhcnRpYWxSaWdodChfLmFzc2lnbkluV2l0aCwgY3VzdG9taXplcik7XG4gICAgICpcbiAgICAgKiBkZWZhdWx0cyh7ICdhJzogMSB9LCB7ICdiJzogMiB9LCB7ICdhJzogMyB9KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKi9cbiAgICB2YXIgYXNzaWduSW5XaXRoID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyKSB7XG4gICAgICBjb3B5T2JqZWN0KHNvdXJjZSwga2V5c0luKHNvdXJjZSksIG9iamVjdCwgY3VzdG9taXplcik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmFzc2lnbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIGFzc2lnbmVkIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnNcbiAgICAgKiBgdW5kZWZpbmVkYCwgYXNzaWdubWVudCBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYFxuICAgICAqIGlzIGludm9rZWQgd2l0aCBmaXZlIGFyZ3VtZW50czogKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IHNvdXJjZXMgVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5hc3NpZ25JbldpdGhcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiBfLmlzVW5kZWZpbmVkKG9ialZhbHVlKSA/IHNyY1ZhbHVlIDogb2JqVmFsdWU7XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGRlZmF1bHRzID0gXy5wYXJ0aWFsUmlnaHQoXy5hc3NpZ25XaXRoLCBjdXN0b21pemVyKTtcbiAgICAgKlxuICAgICAqIGRlZmF1bHRzKHsgJ2EnOiAxIH0sIHsgJ2InOiAyIH0sIHsgJ2EnOiAzIH0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqL1xuICAgIHZhciBhc3NpZ25XaXRoID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyKSB7XG4gICAgICBjb3B5T2JqZWN0KHNvdXJjZSwga2V5cyhzb3VyY2UpLCBvYmplY3QsIGN1c3RvbWl6ZXIpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBgcGF0aHNgIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHBpY2tlZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH0sIDRdIH07XG4gICAgICpcbiAgICAgKiBfLmF0KG9iamVjdCwgWydhWzBdLmIuYycsICdhWzFdJ10pO1xuICAgICAqIC8vID0+IFszLCA0XVxuICAgICAqL1xuICAgIHZhciBhdCA9IGZsYXRSZXN0KGJhc2VBdCk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCB0aGF0IGluaGVyaXRzIGZyb20gdGhlIGBwcm90b3R5cGVgIG9iamVjdC4gSWYgYVxuICAgICAqIGBwcm9wZXJ0aWVzYCBvYmplY3QgaXMgZ2l2ZW4sIGl0cyBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllc1xuICAgICAqIGFyZSBhc3NpZ25lZCB0byB0aGUgY3JlYXRlZCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IHByb3RvdHlwZSBUaGUgb2JqZWN0IHRvIGluaGVyaXQgZnJvbS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3Byb3BlcnRpZXNdIFRoZSBwcm9wZXJ0aWVzIHRvIGFzc2lnbiB0byB0aGUgb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIFNoYXBlKCkge1xuICAgICAqICAgdGhpcy54ID0gMDtcbiAgICAgKiAgIHRoaXMueSA9IDA7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gQ2lyY2xlKCkge1xuICAgICAqICAgU2hhcGUuY2FsbCh0aGlzKTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBDaXJjbGUucHJvdG90eXBlID0gXy5jcmVhdGUoU2hhcGUucHJvdG90eXBlLCB7XG4gICAgICogICAnY29uc3RydWN0b3InOiBDaXJjbGVcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIHZhciBjaXJjbGUgPSBuZXcgQ2lyY2xlO1xuICAgICAqIGNpcmNsZSBpbnN0YW5jZW9mIENpcmNsZTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBjaXJjbGUgaW5zdGFuY2VvZiBTaGFwZTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlKHByb3RvdHlwZSwgcHJvcGVydGllcykge1xuICAgICAgdmFyIHJlc3VsdCA9IGJhc2VDcmVhdGUocHJvdG90eXBlKTtcbiAgICAgIHJldHVybiBwcm9wZXJ0aWVzID09IG51bGwgPyByZXN1bHQgOiBiYXNlQXNzaWduKHJlc3VsdCwgcHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXNzaWducyBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIHNvdXJjZVxuICAgICAqIG9iamVjdHMgdG8gdGhlIGRlc3RpbmF0aW9uIG9iamVjdCBmb3IgYWxsIGRlc3RpbmF0aW9uIHByb3BlcnRpZXMgdGhhdFxuICAgICAqIHJlc29sdmUgdG8gYHVuZGVmaW5lZGAuIFNvdXJjZSBvYmplY3RzIGFyZSBhcHBsaWVkIGZyb20gbGVmdCB0byByaWdodC5cbiAgICAgKiBPbmNlIGEgcHJvcGVydHkgaXMgc2V0LCBhZGRpdGlvbmFsIHZhbHVlcyBvZiB0aGUgc2FtZSBwcm9wZXJ0eSBhcmUgaWdub3JlZC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5kZWZhdWx0c0RlZXBcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWZhdWx0cyh7ICdhJzogMSB9LCB7ICdiJzogMiB9LCB7ICdhJzogMyB9KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKi9cbiAgICB2YXIgZGVmYXVsdHMgPSBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIHNvdXJjZXMpIHtcbiAgICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuXG4gICAgICB2YXIgaW5kZXggPSAtMTtcbiAgICAgIHZhciBsZW5ndGggPSBzb3VyY2VzLmxlbmd0aDtcbiAgICAgIHZhciBndWFyZCA9IGxlbmd0aCA+IDIgPyBzb3VyY2VzWzJdIDogdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoc291cmNlc1swXSwgc291cmNlc1sxXSwgZ3VhcmQpKSB7XG4gICAgICAgIGxlbmd0aCA9IDE7XG4gICAgICB9XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2luZGV4XTtcbiAgICAgICAgdmFyIHByb3BzID0ga2V5c0luKHNvdXJjZSk7XG4gICAgICAgIHZhciBwcm9wc0luZGV4ID0gLTE7XG4gICAgICAgIHZhciBwcm9wc0xlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICAgICAgICB3aGlsZSAoKytwcm9wc0luZGV4IDwgcHJvcHNMZW5ndGgpIHtcbiAgICAgICAgICB2YXIga2V5ID0gcHJvcHNbcHJvcHNJbmRleF07XG4gICAgICAgICAgdmFyIHZhbHVlID0gb2JqZWN0W2tleV07XG5cbiAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAoZXEodmFsdWUsIG9iamVjdFByb3RvW2tleV0pICYmICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpIHtcbiAgICAgICAgICAgIG9iamVjdFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmRlZmF1bHRzYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBhc3NpZ25zXG4gICAgICogZGVmYXVsdCBwcm9wZXJ0aWVzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4xMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5kZWZhdWx0c1xuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlZmF1bHRzRGVlcCh7ICdhJzogeyAnYic6IDIgfSB9LCB7ICdhJzogeyAnYic6IDEsICdjJzogMyB9IH0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiB7ICdiJzogMiwgJ2MnOiAzIH0gfVxuICAgICAqL1xuICAgIHZhciBkZWZhdWx0c0RlZXAgPSBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICBhcmdzLnB1c2godW5kZWZpbmVkLCBjdXN0b21EZWZhdWx0c01lcmdlKTtcbiAgICAgIHJldHVybiBhcHBseShtZXJnZVdpdGgsIHVuZGVmaW5lZCwgYXJncyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZpbmRgIGV4Y2VwdCB0aGF0IGl0IHJldHVybnMgdGhlIGtleSBvZiB0aGUgZmlyc3RcbiAgICAgKiBlbGVtZW50IGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciBpbnN0ZWFkIG9mIHRoZSBlbGVtZW50IGl0c2VsZi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjEuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge3N0cmluZ3x1bmRlZmluZWR9IFJldHVybnMgdGhlIGtleSBvZiB0aGUgbWF0Y2hlZCBlbGVtZW50LFxuICAgICAqICBlbHNlIGB1bmRlZmluZWRgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSB7XG4gICAgICogICAnYmFybmV5JzogIHsgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgJ2ZyZWQnOiAgICB7ICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICAncGViYmxlcyc6IHsgJ2FnZSc6IDEsICAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIF8uZmluZEtleSh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2UgPCA0MDsgfSk7XG4gICAgICogLy8gPT4gJ2Jhcm5leScgKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kS2V5KHVzZXJzLCB7ICdhZ2UnOiAxLCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgKiAvLyA9PiAncGViYmxlcydcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRLZXkodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiAnZnJlZCdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZEtleSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+ICdiYXJuZXknXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmluZEtleShvYmplY3QsIHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIGJhc2VGaW5kS2V5KG9iamVjdCwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgYmFzZUZvck93bik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kS2V5YCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mXG4gICAgICogYSBjb2xsZWN0aW9uIGluIHRoZSBvcHBvc2l0ZSBvcmRlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge3N0cmluZ3x1bmRlZmluZWR9IFJldHVybnMgdGhlIGtleSBvZiB0aGUgbWF0Y2hlZCBlbGVtZW50LFxuICAgICAqICBlbHNlIGB1bmRlZmluZWRgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSB7XG4gICAgICogICAnYmFybmV5JzogIHsgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgJ2ZyZWQnOiAgICB7ICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICAncGViYmxlcyc6IHsgJ2FnZSc6IDEsICAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIF8uZmluZExhc3RLZXkodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uYWdlIDwgNDA7IH0pO1xuICAgICAqIC8vID0+IHJldHVybnMgJ3BlYmJsZXMnIGFzc3VtaW5nIGBfLmZpbmRLZXlgIHJldHVybnMgJ2Jhcm5leSdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kTGFzdEtleSh1c2VycywgeyAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+ICdiYXJuZXknXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kTGFzdEtleSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+ICdmcmVkJ1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kTGFzdEtleSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+ICdwZWJibGVzJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbmRMYXN0S2V5KG9iamVjdCwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gYmFzZUZpbmRLZXkob2JqZWN0LCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpLCBiYXNlRm9yT3duUmlnaHQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEl0ZXJhdGVzIG92ZXIgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBhblxuICAgICAqIG9iamVjdCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIHByb3BlcnR5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGtleSwgb2JqZWN0KS4gSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0XG4gICAgICogaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5mb3JJblJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmZvckluKG5ldyBGb28sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKGtleSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyAnYScsICdiJywgdGhlbiAnYycgKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZCkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZm9ySW4ob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsXG4gICAgICAgID8gb2JqZWN0XG4gICAgICAgIDogYmFzZUZvcihvYmplY3QsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSwga2V5c0luKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZvckluYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIHByb3BlcnRpZXMgb2ZcbiAgICAgKiBgb2JqZWN0YCBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5mb3JJblxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5mb3JJblJpZ2h0KG5ldyBGb28sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKGtleSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyAnYycsICdiJywgdGhlbiAnYScgYXNzdW1pbmcgYF8uZm9ySW5gIGxvZ3MgJ2EnLCAnYicsIHRoZW4gJ2MnLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvckluUmlnaHQob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsXG4gICAgICAgID8gb2JqZWN0XG4gICAgICAgIDogYmFzZUZvclJpZ2h0KG9iamVjdCwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpLCBrZXlzSW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEl0ZXJhdGVzIG92ZXIgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2YgYW4gb2JqZWN0IGFuZFxuICAgICAqIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICAgICAqIGFyZ3VtZW50czogKHZhbHVlLCBrZXksIG9iamVjdCkuIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb25cbiAgICAgKiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZm9yT3duUmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8uZm9yT3duKG5ldyBGb28sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKGtleSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyAnYScgdGhlbiAnYicgKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZCkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZm9yT3duKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgYmFzZUZvck93bihvYmplY3QsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mb3JPd25gIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgcHJvcGVydGllcyBvZlxuICAgICAqIGBvYmplY3RgIGluIHRoZSBvcHBvc2l0ZSBvcmRlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmZvck93blxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5mb3JPd25SaWdodChuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2InIHRoZW4gJ2EnIGFzc3VtaW5nIGBfLmZvck93bmAgbG9ncyAnYScgdGhlbiAnYicuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZm9yT3duUmlnaHQob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yT3duUmlnaHQob2JqZWN0LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZnVuY3Rpb24gcHJvcGVydHkgbmFtZXMgZnJvbSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0aWVzXG4gICAgICogb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBuYW1lcy5cbiAgICAgKiBAc2VlIF8uZnVuY3Rpb25zSW5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gXy5jb25zdGFudCgnYScpO1xuICAgICAqICAgdGhpcy5iID0gXy5jb25zdGFudCgnYicpO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IF8uY29uc3RhbnQoJ2MnKTtcbiAgICAgKlxuICAgICAqIF8uZnVuY3Rpb25zKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFsnYScsICdiJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmdW5jdGlvbnMob2JqZWN0KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBbXSA6IGJhc2VGdW5jdGlvbnMob2JqZWN0LCBrZXlzKG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZnVuY3Rpb24gcHJvcGVydHkgbmFtZXMgZnJvbSBvd24gYW5kIGluaGVyaXRlZFxuICAgICAqIGVudW1lcmFibGUgcHJvcGVydGllcyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGZ1bmN0aW9uIG5hbWVzLlxuICAgICAqIEBzZWUgXy5mdW5jdGlvbnNcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gXy5jb25zdGFudCgnYScpO1xuICAgICAqICAgdGhpcy5iID0gXy5jb25zdGFudCgnYicpO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IF8uY29uc3RhbnQoJ2MnKTtcbiAgICAgKlxuICAgICAqIF8uZnVuY3Rpb25zSW4obmV3IEZvbyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZnVuY3Rpb25zSW4ob2JqZWN0KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBbXSA6IGJhc2VGdW5jdGlvbnMob2JqZWN0LCBrZXlzSW4ob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGBvYmplY3RgLiBJZiB0aGUgcmVzb2x2ZWQgdmFsdWUgaXNcbiAgICAgKiBgdW5kZWZpbmVkYCwgdGhlIGBkZWZhdWx0VmFsdWVgIGlzIHJldHVybmVkIGluIGl0cyBwbGFjZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjcuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcGFyYW0geyp9IFtkZWZhdWx0VmFsdWVdIFRoZSB2YWx1ZSByZXR1cm5lZCBmb3IgYHVuZGVmaW5lZGAgcmVzb2x2ZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfV0gfTtcbiAgICAgKlxuICAgICAqIF8uZ2V0KG9iamVjdCwgJ2FbMF0uYi5jJyk7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy5nZXQob2JqZWN0LCBbJ2EnLCAnMCcsICdiJywgJ2MnXSk7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy5nZXQob2JqZWN0LCAnYS5iLmMnLCAnZGVmYXVsdCcpO1xuICAgICAqIC8vID0+ICdkZWZhdWx0J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldChvYmplY3QsIHBhdGgsIGRlZmF1bHRWYWx1ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gdW5kZWZpbmVkID8gZGVmYXVsdFZhbHVlIDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcGF0aGAgaXMgYSBkaXJlY3QgcHJvcGVydHkgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogeyAnYic6IDIgfSB9O1xuICAgICAqIHZhciBvdGhlciA9IF8uY3JlYXRlKHsgJ2EnOiBfLmNyZWF0ZSh7ICdiJzogMiB9KSB9KTtcbiAgICAgKlxuICAgICAqIF8uaGFzKG9iamVjdCwgJ2EnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhcyhvYmplY3QsICdhLmInKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhcyhvYmplY3QsIFsnYScsICdiJ10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaGFzKG90aGVyLCAnYScpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzKG9iamVjdCwgcGF0aCkge1xuICAgICAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBiYXNlSGFzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHBhdGhgIGlzIGEgZGlyZWN0IG9yIGluaGVyaXRlZCBwcm9wZXJ0eSBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IF8uY3JlYXRlKHsgJ2EnOiBfLmNyZWF0ZSh7ICdiJzogMiB9KSB9KTtcbiAgICAgKlxuICAgICAqIF8uaGFzSW4ob2JqZWN0LCAnYScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaGFzSW4ob2JqZWN0LCAnYS5iJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXNJbihvYmplY3QsIFsnYScsICdiJ10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaGFzSW4ob2JqZWN0LCAnYicpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzSW4ob2JqZWN0LCBwYXRoKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzUGF0aChvYmplY3QsIHBhdGgsIGJhc2VIYXNJbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlIGludmVydGVkIGtleXMgYW5kIHZhbHVlcyBvZiBgb2JqZWN0YC5cbiAgICAgKiBJZiBgb2JqZWN0YCBjb250YWlucyBkdXBsaWNhdGUgdmFsdWVzLCBzdWJzZXF1ZW50IHZhbHVlcyBvdmVyd3JpdGVcbiAgICAgKiBwcm9wZXJ0eSBhc3NpZ25tZW50cyBvZiBwcmV2aW91cyB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGludmVydC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgaW52ZXJ0ZWQgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAxIH07XG4gICAgICpcbiAgICAgKiBfLmludmVydChvYmplY3QpO1xuICAgICAqIC8vID0+IHsgJzEnOiAnYycsICcyJzogJ2InIH1cbiAgICAgKi9cbiAgICB2YXIgaW52ZXJ0ID0gY3JlYXRlSW52ZXJ0ZXIoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJlxuICAgICAgICAgIHR5cGVvZiB2YWx1ZS50b1N0cmluZyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHZhbHVlID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdFt2YWx1ZV0gPSBrZXk7XG4gICAgfSwgY29uc3RhbnQoaWRlbnRpdHkpKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaW52ZXJ0YCBleGNlcHQgdGhhdCB0aGUgaW52ZXJ0ZWQgb2JqZWN0IGlzIGdlbmVyYXRlZFxuICAgICAqIGZyb20gdGhlIHJlc3VsdHMgb2YgcnVubmluZyBlYWNoIGVsZW1lbnQgb2YgYG9iamVjdGAgdGhydSBgaXRlcmF0ZWVgLiBUaGVcbiAgICAgKiBjb3JyZXNwb25kaW5nIGludmVydGVkIHZhbHVlIG9mIGVhY2ggaW52ZXJ0ZWQga2V5IGlzIGFuIGFycmF5IG9mIGtleXNcbiAgICAgKiByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aGUgaW52ZXJ0ZWQgdmFsdWUuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkXG4gICAgICogd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGludmVydC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGludmVydGVkIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9O1xuICAgICAqXG4gICAgICogXy5pbnZlcnRCeShvYmplY3QpO1xuICAgICAqIC8vID0+IHsgJzEnOiBbJ2EnLCAnYyddLCAnMic6IFsnYiddIH1cbiAgICAgKlxuICAgICAqIF8uaW52ZXJ0Qnkob2JqZWN0LCBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAqICAgcmV0dXJuICdncm91cCcgKyB2YWx1ZTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiB7ICdncm91cDEnOiBbJ2EnLCAnYyddLCAnZ3JvdXAyJzogWydiJ10gfVxuICAgICAqL1xuICAgIHZhciBpbnZlcnRCeSA9IGNyZWF0ZUludmVydGVyKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiZcbiAgICAgICAgICB0eXBlb2YgdmFsdWUudG9TdHJpbmcgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB2YWx1ZSA9IG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChyZXN1bHQsIHZhbHVlKSkge1xuICAgICAgICByZXN1bHRbdmFsdWVdLnB1c2goa2V5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdFt2YWx1ZV0gPSBba2V5XTtcbiAgICAgIH1cbiAgICB9LCBnZXRJdGVyYXRlZSk7XG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VzIHRoZSBtZXRob2QgYXQgYHBhdGhgIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgbWV0aG9kIHRvIGludm9rZS5cbiAgICAgKiBAcGFyYW0gey4uLip9IFthcmdzXSBUaGUgYXJndW1lbnRzIHRvIGludm9rZSB0aGUgbWV0aG9kIHdpdGguXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgaW52b2tlZCBtZXRob2QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogWzEsIDIsIDMsIDRdIH0gfV0gfTtcbiAgICAgKlxuICAgICAqIF8uaW52b2tlKG9iamVjdCwgJ2FbMF0uYi5jLnNsaWNlJywgMSwgMyk7XG4gICAgICogLy8gPT4gWzIsIDNdXG4gICAgICovXG4gICAgdmFyIGludm9rZSA9IGJhc2VSZXN0KGJhc2VJbnZva2UpO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy4gU2VlIHRoZVxuICAgICAqIFtFUyBzcGVjXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5rZXlzKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFsnYScsICdiJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKlxuICAgICAqIF8ua2V5cygnaGknKTtcbiAgICAgKiAvLyA9PiBbJzAnLCAnMSddXG4gICAgICovXG4gICAgZnVuY3Rpb24ga2V5cyhvYmplY3QpIHtcbiAgICAgIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QpIDogYmFzZUtleXMob2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmtleXNJbihuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYicsICdjJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBrZXlzSW4ob2JqZWN0KSB7XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0LCB0cnVlKSA6IGJhc2VLZXlzSW4ob2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8ubWFwVmFsdWVzYDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhbiBvYmplY3Qgd2l0aCB0aGVcbiAgICAgKiBzYW1lIHZhbHVlcyBhcyBgb2JqZWN0YCBhbmQga2V5cyBnZW5lcmF0ZWQgYnkgcnVubmluZyBlYWNoIG93biBlbnVtZXJhYmxlXG4gICAgICogc3RyaW5nIGtleWVkIHByb3BlcnR5IG9mIGBvYmplY3RgIHRocnUgYGl0ZXJhdGVlYC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBrZXksIG9iamVjdCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy44LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIG9iamVjdC5cbiAgICAgKiBAc2VlIF8ubWFwVmFsdWVzXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubWFwS2V5cyh7ICdhJzogMSwgJ2InOiAyIH0sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIHJldHVybiBrZXkgKyB2YWx1ZTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiB7ICdhMSc6IDEsICdiMic6IDIgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcEtleXMob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgICAgaXRlcmF0ZWUgPSBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyk7XG5cbiAgICAgIGJhc2VGb3JPd24ob2JqZWN0LCBmdW5jdGlvbih2YWx1ZSwga2V5LCBvYmplY3QpIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwgaXRlcmF0ZWUodmFsdWUsIGtleSwgb2JqZWN0KSwgdmFsdWUpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUga2V5cyBhcyBgb2JqZWN0YCBhbmQgdmFsdWVzIGdlbmVyYXRlZFxuICAgICAqIGJ5IHJ1bm5pbmcgZWFjaCBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydHkgb2YgYG9iamVjdGAgdGhydVxuICAgICAqIGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOlxuICAgICAqICh2YWx1ZSwga2V5LCBvYmplY3QpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBvYmplY3QuXG4gICAgICogQHNlZSBfLm1hcEtleXNcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0ge1xuICAgICAqICAgJ2ZyZWQnOiAgICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAgfSxcbiAgICAgKiAgICdwZWJibGVzJzogeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEgfVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiBfLm1hcFZhbHVlcyh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2U7IH0pO1xuICAgICAqIC8vID0+IHsgJ2ZyZWQnOiA0MCwgJ3BlYmJsZXMnOiAxIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWFwVmFsdWVzKHVzZXJzLCAnYWdlJyk7XG4gICAgICogLy8gPT4geyAnZnJlZCc6IDQwLCAncGViYmxlcyc6IDEgfSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcFZhbHVlcyhvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgICBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKTtcblxuICAgICAgYmFzZUZvck93bihvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBrZXksIG9iamVjdCkge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUocmVzdWx0LCBrZXksIGl0ZXJhdGVlKHZhbHVlLCBrZXksIG9iamVjdCkpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBtZXJnZXMgb3duIGFuZFxuICAgICAqIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIHNvdXJjZSBvYmplY3RzIGludG8gdGhlXG4gICAgICogZGVzdGluYXRpb24gb2JqZWN0LiBTb3VyY2UgcHJvcGVydGllcyB0aGF0IHJlc29sdmUgdG8gYHVuZGVmaW5lZGAgYXJlXG4gICAgICogc2tpcHBlZCBpZiBhIGRlc3RpbmF0aW9uIHZhbHVlIGV4aXN0cy4gQXJyYXkgYW5kIHBsYWluIG9iamVjdCBwcm9wZXJ0aWVzXG4gICAgICogYXJlIG1lcmdlZCByZWN1cnNpdmVseS4gT3RoZXIgb2JqZWN0cyBhbmQgdmFsdWUgdHlwZXMgYXJlIG92ZXJyaWRkZW4gYnlcbiAgICAgKiBhc3NpZ25tZW50LiBTb3VyY2Ugb2JqZWN0cyBhcmUgYXBwbGllZCBmcm9tIGxlZnQgdG8gcmlnaHQuIFN1YnNlcXVlbnRcbiAgICAgKiBzb3VyY2VzIG92ZXJ3cml0ZSBwcm9wZXJ0eSBhc3NpZ25tZW50cyBvZiBwcmV2aW91cyBzb3VyY2VzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC41LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7XG4gICAgICogICAnYSc6IFt7ICdiJzogMiB9LCB7ICdkJzogNCB9XVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiB2YXIgb3RoZXIgPSB7XG4gICAgICogICAnYSc6IFt7ICdjJzogMyB9LCB7ICdlJzogNSB9XVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiBfLm1lcmdlKG9iamVjdCwgb3RoZXIpO1xuICAgICAqIC8vID0+IHsgJ2EnOiBbeyAnYic6IDIsICdjJzogMyB9LCB7ICdkJzogNCwgJ2UnOiA1IH1dIH1cbiAgICAgKi9cbiAgICB2YXIgbWVyZ2UgPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgpIHtcbiAgICAgIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5tZXJnZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIG1lcmdlZCB2YWx1ZXMgb2YgdGhlIGRlc3RpbmF0aW9uIGFuZCBzb3VyY2VcbiAgICAgKiBwcm9wZXJ0aWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCwgbWVyZ2luZyBpcyBoYW5kbGVkIGJ5IHRoZVxuICAgICAqIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWQgd2l0aCBzaXggYXJndW1lbnRzOlxuICAgICAqIChvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gc291cmNlcyBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSkge1xuICAgICAqICAgaWYgKF8uaXNBcnJheShvYmpWYWx1ZSkpIHtcbiAgICAgKiAgICAgcmV0dXJuIG9ialZhbHVlLmNvbmNhdChzcmNWYWx1ZSk7XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbMV0sICdiJzogWzJdIH07XG4gICAgICogdmFyIG90aGVyID0geyAnYSc6IFszXSwgJ2InOiBbNF0gfTtcbiAgICAgKlxuICAgICAqIF8ubWVyZ2VXaXRoKG9iamVjdCwgb3RoZXIsIGN1c3RvbWl6ZXIpO1xuICAgICAqIC8vID0+IHsgJ2EnOiBbMSwgM10sICdiJzogWzIsIDRdIH1cbiAgICAgKi9cbiAgICB2YXIgbWVyZ2VXaXRoID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyKSB7XG4gICAgICBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5waWNrYDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlXG4gICAgICogb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBwYXRocyBvZiBgb2JqZWN0YCB0aGF0IGFyZSBub3Qgb21pdHRlZC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBjb25zaWRlcmFibHkgc2xvd2VyIHRoYW4gYF8ucGlja2AuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBbcGF0aHNdIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBvbWl0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICAgICAqXG4gICAgICogXy5vbWl0KG9iamVjdCwgWydhJywgJ2MnXSk7XG4gICAgICogLy8gPT4geyAnYic6ICcyJyB9XG4gICAgICovXG4gICAgdmFyIG9taXQgPSBmbGF0UmVzdChmdW5jdGlvbihvYmplY3QsIHBhdGhzKSB7XG4gICAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHZhciBpc0RlZXAgPSBmYWxzZTtcbiAgICAgIHBhdGhzID0gYXJyYXlNYXAocGF0aHMsIGZ1bmN0aW9uKHBhdGgpIHtcbiAgICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG4gICAgICAgIGlzRGVlcCB8fCAoaXNEZWVwID0gcGF0aC5sZW5ndGggPiAxKTtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICB9KTtcbiAgICAgIGNvcHlPYmplY3Qob2JqZWN0LCBnZXRBbGxLZXlzSW4ob2JqZWN0KSwgcmVzdWx0KTtcbiAgICAgIGlmIChpc0RlZXApIHtcbiAgICAgICAgcmVzdWx0ID0gYmFzZUNsb25lKHJlc3VsdCwgQ0xPTkVfREVFUF9GTEFHIHwgQ0xPTkVfRkxBVF9GTEFHIHwgQ0xPTkVfU1lNQk9MU19GTEFHLCBjdXN0b21PbWl0Q2xvbmUpO1xuICAgICAgfVxuICAgICAgdmFyIGxlbmd0aCA9IHBhdGhzLmxlbmd0aDtcbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICBiYXNlVW5zZXQocmVzdWx0LCBwYXRoc1tsZW5ndGhdKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8ucGlja0J5YDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2ZcbiAgICAgKiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBgb2JqZWN0YCB0aGF0XG4gICAgICogYHByZWRpY2F0ZWAgZG9lc24ndCByZXR1cm4gdHJ1dGh5IGZvci4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdHdvXG4gICAgICogYXJndW1lbnRzOiAodmFsdWUsIGtleSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBwcm9wZXJ0eS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAgICAgKlxuICAgICAqIF8ub21pdEJ5KG9iamVjdCwgXy5pc051bWJlcik7XG4gICAgICogLy8gPT4geyAnYic6ICcyJyB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gb21pdEJ5KG9iamVjdCwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gcGlja0J5KG9iamVjdCwgbmVnYXRlKGdldEl0ZXJhdGVlKHByZWRpY2F0ZSkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGUgcGlja2VkIGBvYmplY3RgIHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBbcGF0aHNdIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICAgICAqXG4gICAgICogXy5waWNrKG9iamVjdCwgWydhJywgJ2MnXSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdjJzogMyB9XG4gICAgICovXG4gICAgdmFyIHBpY2sgPSBmbGF0UmVzdChmdW5jdGlvbihvYmplY3QsIHBhdGhzKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB7fSA6IGJhc2VQaWNrKG9iamVjdCwgcGF0aHMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlIGBvYmplY3RgIHByb3BlcnRpZXMgYHByZWRpY2F0ZWAgcmV0dXJuc1xuICAgICAqIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHR3byBhcmd1bWVudHM6ICh2YWx1ZSwga2V5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIHByb3BlcnR5LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICAgICAqXG4gICAgICogXy5waWNrQnkob2JqZWN0LCBfLmlzTnVtYmVyKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2MnOiAzIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwaWNrQnkob2JqZWN0LCBwcmVkaWNhdGUpIHtcbiAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICB2YXIgcHJvcHMgPSBhcnJheU1hcChnZXRBbGxLZXlzSW4ob2JqZWN0KSwgZnVuY3Rpb24ocHJvcCkge1xuICAgICAgICByZXR1cm4gW3Byb3BdO1xuICAgICAgfSk7XG4gICAgICBwcmVkaWNhdGUgPSBnZXRJdGVyYXRlZShwcmVkaWNhdGUpO1xuICAgICAgcmV0dXJuIGJhc2VQaWNrQnkob2JqZWN0LCBwcm9wcywgZnVuY3Rpb24odmFsdWUsIHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIHByZWRpY2F0ZSh2YWx1ZSwgcGF0aFswXSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmdldGAgZXhjZXB0IHRoYXQgaWYgdGhlIHJlc29sdmVkIHZhbHVlIGlzIGFcbiAgICAgKiBmdW5jdGlvbiBpdCdzIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgaXRzIHBhcmVudCBvYmplY3QgYW5kXG4gICAgICogaXRzIHJlc3VsdCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHJlc29sdmUuXG4gICAgICogQHBhcmFtIHsqfSBbZGVmYXVsdFZhbHVlXSBUaGUgdmFsdWUgcmV0dXJuZWQgZm9yIGB1bmRlZmluZWRgIHJlc29sdmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjMSc6IDMsICdjMic6IF8uY29uc3RhbnQoNCkgfSB9XSB9O1xuICAgICAqXG4gICAgICogXy5yZXN1bHQob2JqZWN0LCAnYVswXS5iLmMxJyk7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy5yZXN1bHQob2JqZWN0LCAnYVswXS5iLmMyJyk7XG4gICAgICogLy8gPT4gNFxuICAgICAqXG4gICAgICogXy5yZXN1bHQob2JqZWN0LCAnYVswXS5iLmMzJywgJ2RlZmF1bHQnKTtcbiAgICAgKiAvLyA9PiAnZGVmYXVsdCdcbiAgICAgKlxuICAgICAqIF8ucmVzdWx0KG9iamVjdCwgJ2FbMF0uYi5jMycsIF8uY29uc3RhbnQoJ2RlZmF1bHQnKSk7XG4gICAgICogLy8gPT4gJ2RlZmF1bHQnXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVzdWx0KG9iamVjdCwgcGF0aCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGg7XG5cbiAgICAgIC8vIEVuc3VyZSB0aGUgbG9vcCBpcyBlbnRlcmVkIHdoZW4gcGF0aCBpcyBlbXB0eS5cbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIGxlbmd0aCA9IDE7XG4gICAgICAgIG9iamVjdCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W3RvS2V5KHBhdGhbaW5kZXhdKV07XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaW5kZXggPSBsZW5ndGg7XG4gICAgICAgICAgdmFsdWUgPSBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgb2JqZWN0ID0gaXNGdW5jdGlvbih2YWx1ZSkgPyB2YWx1ZS5jYWxsKG9iamVjdCkgOiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGBvYmplY3RgLiBJZiBhIHBvcnRpb24gb2YgYHBhdGhgIGRvZXNuJ3QgZXhpc3QsXG4gICAgICogaXQncyBjcmVhdGVkLiBBcnJheXMgYXJlIGNyZWF0ZWQgZm9yIG1pc3NpbmcgaW5kZXggcHJvcGVydGllcyB3aGlsZSBvYmplY3RzXG4gICAgICogYXJlIGNyZWF0ZWQgZm9yIGFsbCBvdGhlciBtaXNzaW5nIHByb3BlcnRpZXMuIFVzZSBgXy5zZXRXaXRoYCB0byBjdXN0b21pemVcbiAgICAgKiBgcGF0aGAgY3JlYXRpb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjcuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLnNldChvYmplY3QsICdhWzBdLmIuYycsIDQpO1xuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdC5hWzBdLmIuYyk7XG4gICAgICogLy8gPT4gNFxuICAgICAqXG4gICAgICogXy5zZXQob2JqZWN0LCBbJ3gnLCAnMCcsICd5JywgJ3onXSwgNSk7XG4gICAgICogY29uc29sZS5sb2cob2JqZWN0LnhbMF0ueS56KTtcbiAgICAgKiAvLyA9PiA1XG4gICAgICovXG4gICAgZnVuY3Rpb24gc2V0KG9iamVjdCwgcGF0aCwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IG9iamVjdCA6IGJhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zZXRgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCB0byBwcm9kdWNlIHRoZSBvYmplY3RzIG9mIGBwYXRoYC4gIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgXG4gICAgICogcGF0aCBjcmVhdGlvbiBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6IChuc1ZhbHVlLCBrZXksIG5zT2JqZWN0KS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7fTtcbiAgICAgKlxuICAgICAqIF8uc2V0V2l0aChvYmplY3QsICdbMF1bMV0nLCAnYScsIE9iamVjdCk7XG4gICAgICogLy8gPT4geyAnMCc6IHsgJzEnOiAnYScgfSB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gc2V0V2l0aChvYmplY3QsIHBhdGgsIHZhbHVlLCBjdXN0b21pemVyKSB7XG4gICAgICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdmFsdWUsIGN1c3RvbWl6ZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkLXZhbHVlIHBhaXJzIGZvciBgb2JqZWN0YFxuICAgICAqIHdoaWNoIGNhbiBiZSBjb25zdW1lZCBieSBgXy5mcm9tUGFpcnNgLiBJZiBgb2JqZWN0YCBpcyBhIG1hcCBvciBzZXQsIGl0c1xuICAgICAqIGVudHJpZXMgYXJlIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGFsaWFzIGVudHJpZXNcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy50b1BhaXJzKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFtbJ2EnLCAxXSwgWydiJywgMl1dIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgdmFyIHRvUGFpcnMgPSBjcmVhdGVUb1BhaXJzKGtleXMpO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZC12YWx1ZSBwYWlyc1xuICAgICAqIGZvciBgb2JqZWN0YCB3aGljaCBjYW4gYmUgY29uc3VtZWQgYnkgYF8uZnJvbVBhaXJzYC4gSWYgYG9iamVjdGAgaXMgYSBtYXBcbiAgICAgKiBvciBzZXQsIGl0cyBlbnRyaWVzIGFyZSByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBhbGlhcyBlbnRyaWVzSW5cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy50b1BhaXJzSW4obmV3IEZvbyk7XG4gICAgICogLy8gPT4gW1snYScsIDFdLCBbJ2InLCAyXSwgWydjJywgM11dIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgdmFyIHRvUGFpcnNJbiA9IGNyZWF0ZVRvUGFpcnMoa2V5c0luKTtcblxuICAgIC8qKlxuICAgICAqIEFuIGFsdGVybmF0aXZlIHRvIGBfLnJlZHVjZWA7IHRoaXMgbWV0aG9kIHRyYW5zZm9ybXMgYG9iamVjdGAgdG8gYSBuZXdcbiAgICAgKiBgYWNjdW11bGF0b3JgIG9iamVjdCB3aGljaCBpcyB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgZWFjaCBvZiBpdHMgb3duXG4gICAgICogZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyB0aHJ1IGBpdGVyYXRlZWAsIHdpdGggZWFjaCBpbnZvY2F0aW9uXG4gICAgICogcG90ZW50aWFsbHkgbXV0YXRpbmcgdGhlIGBhY2N1bXVsYXRvcmAgb2JqZWN0LiBJZiBgYWNjdW11bGF0b3JgIGlzIG5vdFxuICAgICAqIHByb3ZpZGVkLCBhIG5ldyBvYmplY3Qgd2l0aCB0aGUgc2FtZSBgW1tQcm90b3R5cGVdXWAgd2lsbCBiZSB1c2VkLiBUaGVcbiAgICAgKiBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggZm91ciBhcmd1bWVudHM6IChhY2N1bXVsYXRvciwgdmFsdWUsIGtleSwgb2JqZWN0KS5cbiAgICAgKiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGN1c3RvbSBhY2N1bXVsYXRvciB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udHJhbnNmb3JtKFsyLCAzLCA0XSwgZnVuY3Rpb24ocmVzdWx0LCBuKSB7XG4gICAgICogICByZXN1bHQucHVzaChuICo9IG4pO1xuICAgICAqICAgcmV0dXJuIG4gJSAyID09IDA7XG4gICAgICogfSwgW10pO1xuICAgICAqIC8vID0+IFs0LCA5XVxuICAgICAqXG4gICAgICogXy50cmFuc2Zvcm0oeyAnYSc6IDEsICdiJzogMiwgJ2MnOiAxIH0sIGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAqICAgKHJlc3VsdFt2YWx1ZV0gfHwgKHJlc3VsdFt2YWx1ZV0gPSBbXSkpLnB1c2goa2V5KTtcbiAgICAgKiB9LCB7fSk7XG4gICAgICogLy8gPT4geyAnMSc6IFsnYScsICdjJ10sICcyJzogWydiJ10gfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRyYW5zZm9ybShvYmplY3QsIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICAgICAgdmFyIGlzQXJyID0gaXNBcnJheShvYmplY3QpLFxuICAgICAgICAgIGlzQXJyTGlrZSA9IGlzQXJyIHx8IGlzQnVmZmVyKG9iamVjdCkgfHwgaXNUeXBlZEFycmF5KG9iamVjdCk7XG5cbiAgICAgIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDQpO1xuICAgICAgaWYgKGFjY3VtdWxhdG9yID09IG51bGwpIHtcbiAgICAgICAgdmFyIEN0b3IgPSBvYmplY3QgJiYgb2JqZWN0LmNvbnN0cnVjdG9yO1xuICAgICAgICBpZiAoaXNBcnJMaWtlKSB7XG4gICAgICAgICAgYWNjdW11bGF0b3IgPSBpc0FyciA/IG5ldyBDdG9yIDogW107XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICAgIGFjY3VtdWxhdG9yID0gaXNGdW5jdGlvbihDdG9yKSA/IGJhc2VDcmVhdGUoZ2V0UHJvdG90eXBlKG9iamVjdCkpIDoge307XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgYWNjdW11bGF0b3IgPSB7fTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgKGlzQXJyTGlrZSA/IGFycmF5RWFjaCA6IGJhc2VGb3JPd24pKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXgsIG9iamVjdCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHRoZSBwcm9wZXJ0eSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byB1bnNldC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHByb3BlcnR5IGlzIGRlbGV0ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiA3IH0gfV0gfTtcbiAgICAgKiBfLnVuc2V0KG9iamVjdCwgJ2FbMF0uYi5jJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogW3sgJ2InOiB7fSB9XSB9O1xuICAgICAqXG4gICAgICogXy51bnNldChvYmplY3QsIFsnYScsICcwJywgJ2InLCAnYyddKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QpO1xuICAgICAqIC8vID0+IHsgJ2EnOiBbeyAnYic6IHt9IH1dIH07XG4gICAgICovXG4gICAgZnVuY3Rpb24gdW5zZXQob2JqZWN0LCBwYXRoKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB0cnVlIDogYmFzZVVuc2V0KG9iamVjdCwgcGF0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zZXRgIGV4Y2VwdCB0aGF0IGFjY2VwdHMgYHVwZGF0ZXJgIHRvIHByb2R1Y2UgdGhlXG4gICAgICogdmFsdWUgdG8gc2V0LiBVc2UgYF8udXBkYXRlV2l0aGAgdG8gY3VzdG9taXplIGBwYXRoYCBjcmVhdGlvbi4gVGhlIGB1cGRhdGVyYFxuICAgICAqIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjYuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gdXBkYXRlciBUaGUgZnVuY3Rpb24gdG8gcHJvZHVjZSB0aGUgdXBkYXRlZCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICAgICAqXG4gICAgICogXy51cGRhdGUob2JqZWN0LCAnYVswXS5iLmMnLCBmdW5jdGlvbihuKSB7IHJldHVybiBuICogbjsgfSk7XG4gICAgICogY29uc29sZS5sb2cob2JqZWN0LmFbMF0uYi5jKTtcbiAgICAgKiAvLyA9PiA5XG4gICAgICpcbiAgICAgKiBfLnVwZGF0ZShvYmplY3QsICd4WzBdLnkueicsIGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gPyBuICsgMSA6IDA7IH0pO1xuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdC54WzBdLnkueik7XG4gICAgICogLy8gPT4gMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVwZGF0ZShvYmplY3QsIHBhdGgsIHVwZGF0ZXIpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IG9iamVjdCA6IGJhc2VVcGRhdGUob2JqZWN0LCBwYXRoLCBjYXN0RnVuY3Rpb24odXBkYXRlcikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udXBkYXRlYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgb2JqZWN0cyBvZiBgcGF0aGAuICBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYFxuICAgICAqIHBhdGggY3JlYXRpb24gaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAobnNWYWx1ZSwga2V5LCBuc09iamVjdCkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjYuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gdXBkYXRlciBUaGUgZnVuY3Rpb24gdG8gcHJvZHVjZSB0aGUgdXBkYXRlZCB2YWx1ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHt9O1xuICAgICAqXG4gICAgICogXy51cGRhdGVXaXRoKG9iamVjdCwgJ1swXVsxXScsIF8uY29uc3RhbnQoJ2EnKSwgT2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICcwJzogeyAnMSc6ICdhJyB9IH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1cGRhdGVXaXRoKG9iamVjdCwgcGF0aCwgdXBkYXRlciwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogYmFzZVVwZGF0ZShvYmplY3QsIHBhdGgsIGNhc3RGdW5jdGlvbih1cGRhdGVyKSwgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5IHZhbHVlcyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8udmFsdWVzKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFsxLCAyXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqXG4gICAgICogXy52YWx1ZXMoJ2hpJyk7XG4gICAgICogLy8gPT4gWydoJywgJ2knXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHZhbHVlcyhvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IFtdIDogYmFzZVZhbHVlcyhvYmplY3QsIGtleXMob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydHlcbiAgICAgKiB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLnZhbHVlc0luKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHZhbHVlc0luKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gW10gOiBiYXNlVmFsdWVzKG9iamVjdCwga2V5c0luKG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENsYW1wcyBgbnVtYmVyYCB3aXRoaW4gdGhlIGluY2x1c2l2ZSBgbG93ZXJgIGFuZCBgdXBwZXJgIGJvdW5kcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBOdW1iZXJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gY2xhbXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsb3dlcl0gVGhlIGxvd2VyIGJvdW5kLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB1cHBlciBUaGUgdXBwZXIgYm91bmQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY2xhbXBlZCBudW1iZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY2xhbXAoLTEwLCAtNSwgNSk7XG4gICAgICogLy8gPT4gLTVcbiAgICAgKlxuICAgICAqIF8uY2xhbXAoMTAsIC01LCA1KTtcbiAgICAgKiAvLyA9PiA1XG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xhbXAobnVtYmVyLCBsb3dlciwgdXBwZXIpIHtcbiAgICAgIGlmICh1cHBlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHVwcGVyID0gbG93ZXI7XG4gICAgICAgIGxvd2VyID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgaWYgKHVwcGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdXBwZXIgPSB0b051bWJlcih1cHBlcik7XG4gICAgICAgIHVwcGVyID0gdXBwZXIgPT09IHVwcGVyID8gdXBwZXIgOiAwO1xuICAgICAgfVxuICAgICAgaWYgKGxvd2VyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbG93ZXIgPSB0b051bWJlcihsb3dlcik7XG4gICAgICAgIGxvd2VyID0gbG93ZXIgPT09IGxvd2VyID8gbG93ZXIgOiAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VDbGFtcCh0b051bWJlcihudW1iZXIpLCBsb3dlciwgdXBwZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgbmAgaXMgYmV0d2VlbiBgc3RhcnRgIGFuZCB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGBlbmRgLiBJZlxuICAgICAqIGBlbmRgIGlzIG5vdCBzcGVjaWZpZWQsIGl0J3Mgc2V0IHRvIGBzdGFydGAgd2l0aCBgc3RhcnRgIHRoZW4gc2V0IHRvIGAwYC5cbiAgICAgKiBJZiBgc3RhcnRgIGlzIGdyZWF0ZXIgdGhhbiBgZW5kYCB0aGUgcGFyYW1zIGFyZSBzd2FwcGVkIHRvIHN1cHBvcnRcbiAgICAgKiBuZWdhdGl2ZSByYW5nZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTnVtYmVyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciBUaGUgbnVtYmVyIHRvIGNoZWNrLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgbnVtYmVyYCBpcyBpbiB0aGUgcmFuZ2UsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAc2VlIF8ucmFuZ2UsIF8ucmFuZ2VSaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoMywgMiwgNCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDQsIDgpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSg0LCAyKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDIsIDIpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoMS4yLCAyKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoNS4yLCA0KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKC0zLCAtMiwgLTYpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpblJhbmdlKG51bWJlciwgc3RhcnQsIGVuZCkge1xuICAgICAgc3RhcnQgPSB0b0Zpbml0ZShzdGFydCk7XG4gICAgICBpZiAoZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZW5kID0gc3RhcnQ7XG4gICAgICAgIHN0YXJ0ID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVuZCA9IHRvRmluaXRlKGVuZCk7XG4gICAgICB9XG4gICAgICBudW1iZXIgPSB0b051bWJlcihudW1iZXIpO1xuICAgICAgcmV0dXJuIGJhc2VJblJhbmdlKG51bWJlciwgc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvZHVjZXMgYSByYW5kb20gbnVtYmVyIGJldHdlZW4gdGhlIGluY2x1c2l2ZSBgbG93ZXJgIGFuZCBgdXBwZXJgIGJvdW5kcy5cbiAgICAgKiBJZiBvbmx5IG9uZSBhcmd1bWVudCBpcyBwcm92aWRlZCBhIG51bWJlciBiZXR3ZWVuIGAwYCBhbmQgdGhlIGdpdmVuIG51bWJlclxuICAgICAqIGlzIHJldHVybmVkLiBJZiBgZmxvYXRpbmdgIGlzIGB0cnVlYCwgb3IgZWl0aGVyIGBsb3dlcmAgb3IgYHVwcGVyYCBhcmVcbiAgICAgKiBmbG9hdHMsIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGlzIHJldHVybmVkIGluc3RlYWQgb2YgYW4gaW50ZWdlci5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBKYXZhU2NyaXB0IGZvbGxvd3MgdGhlIElFRUUtNzU0IHN0YW5kYXJkIGZvciByZXNvbHZpbmdcbiAgICAgKiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgd2hpY2ggY2FuIHByb2R1Y2UgdW5leHBlY3RlZCByZXN1bHRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNy4wXG4gICAgICogQGNhdGVnb3J5IE51bWJlclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbG93ZXI9MF0gVGhlIGxvd2VyIGJvdW5kLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbdXBwZXI9MV0gVGhlIHVwcGVyIGJvdW5kLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zsb2F0aW5nXSBTcGVjaWZ5IHJldHVybmluZyBhIGZsb2F0aW5nLXBvaW50IG51bWJlci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByYW5kb20gbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJhbmRvbSgwLCA1KTtcbiAgICAgKiAvLyA9PiBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgNVxuICAgICAqXG4gICAgICogXy5yYW5kb20oNSk7XG4gICAgICogLy8gPT4gYWxzbyBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgNVxuICAgICAqXG4gICAgICogXy5yYW5kb20oNSwgdHJ1ZSk7XG4gICAgICogLy8gPT4gYSBmbG9hdGluZy1wb2ludCBudW1iZXIgYmV0d2VlbiAwIGFuZCA1XG4gICAgICpcbiAgICAgKiBfLnJhbmRvbSgxLjIsIDUuMik7XG4gICAgICogLy8gPT4gYSBmbG9hdGluZy1wb2ludCBudW1iZXIgYmV0d2VlbiAxLjIgYW5kIDUuMlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJhbmRvbShsb3dlciwgdXBwZXIsIGZsb2F0aW5nKSB7XG4gICAgICBpZiAoZmxvYXRpbmcgJiYgdHlwZW9mIGZsb2F0aW5nICE9ICdib29sZWFuJyAmJiBpc0l0ZXJhdGVlQ2FsbChsb3dlciwgdXBwZXIsIGZsb2F0aW5nKSkge1xuICAgICAgICB1cHBlciA9IGZsb2F0aW5nID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgaWYgKGZsb2F0aW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB1cHBlciA9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICBmbG9hdGluZyA9IHVwcGVyO1xuICAgICAgICAgIHVwcGVyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBsb3dlciA9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICBmbG9hdGluZyA9IGxvd2VyO1xuICAgICAgICAgIGxvd2VyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobG93ZXIgPT09IHVuZGVmaW5lZCAmJiB1cHBlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxvd2VyID0gMDtcbiAgICAgICAgdXBwZXIgPSAxO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGxvd2VyID0gdG9GaW5pdGUobG93ZXIpO1xuICAgICAgICBpZiAodXBwZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHVwcGVyID0gbG93ZXI7XG4gICAgICAgICAgbG93ZXIgPSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVwcGVyID0gdG9GaW5pdGUodXBwZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobG93ZXIgPiB1cHBlcikge1xuICAgICAgICB2YXIgdGVtcCA9IGxvd2VyO1xuICAgICAgICBsb3dlciA9IHVwcGVyO1xuICAgICAgICB1cHBlciA9IHRlbXA7XG4gICAgICB9XG4gICAgICBpZiAoZmxvYXRpbmcgfHwgbG93ZXIgJSAxIHx8IHVwcGVyICUgMSkge1xuICAgICAgICB2YXIgcmFuZCA9IG5hdGl2ZVJhbmRvbSgpO1xuICAgICAgICByZXR1cm4gbmF0aXZlTWluKGxvd2VyICsgKHJhbmQgKiAodXBwZXIgLSBsb3dlciArIGZyZWVQYXJzZUZsb2F0KCcxZS0nICsgKChyYW5kICsgJycpLmxlbmd0aCAtIDEpKSkpLCB1cHBlcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVJhbmRvbShsb3dlciwgdXBwZXIpO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIFtjYW1lbCBjYXNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYW1lbENhc2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY2FtZWwgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNhbWVsQ2FzZSgnRm9vIEJhcicpO1xuICAgICAqIC8vID0+ICdmb29CYXInXG4gICAgICpcbiAgICAgKiBfLmNhbWVsQ2FzZSgnLS1mb28tYmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnZm9vQmFyJ1xuICAgICAqXG4gICAgICogXy5jYW1lbENhc2UoJ19fRk9PX0JBUl9fJyk7XG4gICAgICogLy8gPT4gJ2Zvb0JhcidcbiAgICAgKi9cbiAgICB2YXIgY2FtZWxDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICB3b3JkID0gd29yZC50b0xvd2VyQ2FzZSgpO1xuICAgICAgcmV0dXJuIHJlc3VsdCArIChpbmRleCA/IGNhcGl0YWxpemUod29yZCkgOiB3b3JkKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYHN0cmluZ2AgdG8gdXBwZXIgY2FzZSBhbmQgdGhlIHJlbWFpbmluZ1xuICAgICAqIHRvIGxvd2VyIGNhc2UuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY2FwaXRhbGl6ZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjYXBpdGFsaXplZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY2FwaXRhbGl6ZSgnRlJFRCcpO1xuICAgICAqIC8vID0+ICdGcmVkJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhcGl0YWxpemUoc3RyaW5nKSB7XG4gICAgICByZXR1cm4gdXBwZXJGaXJzdCh0b1N0cmluZyhzdHJpbmcpLnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlYnVycnMgYHN0cmluZ2AgYnkgY29udmVydGluZ1xuICAgICAqIFtMYXRpbi0xIFN1cHBsZW1lbnRdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhdGluLTFfU3VwcGxlbWVudF8oVW5pY29kZV9ibG9jaykjQ2hhcmFjdGVyX3RhYmxlKVxuICAgICAqIGFuZCBbTGF0aW4gRXh0ZW5kZWQtQV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGF0aW5fRXh0ZW5kZWQtQSlcbiAgICAgKiBsZXR0ZXJzIHRvIGJhc2ljIExhdGluIGxldHRlcnMgYW5kIHJlbW92aW5nXG4gICAgICogW2NvbWJpbmluZyBkaWFjcml0aWNhbCBtYXJrc10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29tYmluaW5nX0RpYWNyaXRpY2FsX01hcmtzKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBkZWJ1cnIuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZGVidXJyZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlYnVycignZMOpasOgIHZ1Jyk7XG4gICAgICogLy8gPT4gJ2RlamEgdnUnXG4gICAgICovXG4gICAgZnVuY3Rpb24gZGVidXJyKHN0cmluZykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHJldHVybiBzdHJpbmcgJiYgc3RyaW5nLnJlcGxhY2UocmVMYXRpbiwgZGVidXJyTGV0dGVyKS5yZXBsYWNlKHJlQ29tYm9NYXJrLCAnJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBzdHJpbmdgIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gdGFyZ2V0IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdGFyZ2V0XSBUaGUgc3RyaW5nIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwb3NpdGlvbj1zdHJpbmcubGVuZ3RoXSBUaGUgcG9zaXRpb24gdG8gc2VhcmNoIHVwIHRvLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgc3RyaW5nYCBlbmRzIHdpdGggYHRhcmdldGAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5lbmRzV2l0aCgnYWJjJywgJ2MnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmVuZHNXaXRoKCdhYmMnLCAnYicpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmVuZHNXaXRoKCdhYmMnLCAnYicsIDIpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlbmRzV2l0aChzdHJpbmcsIHRhcmdldCwgcG9zaXRpb24pIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICB0YXJnZXQgPSBiYXNlVG9TdHJpbmcodGFyZ2V0KTtcblxuICAgICAgdmFyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7XG4gICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uID09PSB1bmRlZmluZWRcbiAgICAgICAgPyBsZW5ndGhcbiAgICAgICAgOiBiYXNlQ2xhbXAodG9JbnRlZ2VyKHBvc2l0aW9uKSwgMCwgbGVuZ3RoKTtcblxuICAgICAgdmFyIGVuZCA9IHBvc2l0aW9uO1xuICAgICAgcG9zaXRpb24gLT0gdGFyZ2V0Lmxlbmd0aDtcbiAgICAgIHJldHVybiBwb3NpdGlvbiA+PSAwICYmIHN0cmluZy5zbGljZShwb3NpdGlvbiwgZW5kKSA9PSB0YXJnZXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIGNoYXJhY3RlcnMgXCImXCIsIFwiPFwiLCBcIj5cIiwgJ1wiJywgYW5kIFwiJ1wiIGluIGBzdHJpbmdgIHRvIHRoZWlyXG4gICAgICogY29ycmVzcG9uZGluZyBIVE1MIGVudGl0aWVzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vIG90aGVyIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQuIFRvIGVzY2FwZSBhZGRpdGlvbmFsXG4gICAgICogY2hhcmFjdGVycyB1c2UgYSB0aGlyZC1wYXJ0eSBsaWJyYXJ5IGxpa2UgW19oZV9dKGh0dHBzOi8vbXRocy5iZS9oZSkuXG4gICAgICpcbiAgICAgKiBUaG91Z2ggdGhlIFwiPlwiIGNoYXJhY3RlciBpcyBlc2NhcGVkIGZvciBzeW1tZXRyeSwgY2hhcmFjdGVycyBsaWtlXG4gICAgICogXCI+XCIgYW5kIFwiL1wiIGRvbid0IG5lZWQgZXNjYXBpbmcgaW4gSFRNTCBhbmQgaGF2ZSBubyBzcGVjaWFsIG1lYW5pbmdcbiAgICAgKiB1bmxlc3MgdGhleSdyZSBwYXJ0IG9mIGEgdGFnIG9yIHVucXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZS4gU2VlXG4gICAgICogW01hdGhpYXMgQnluZW5zJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2FtYmlndW91cy1hbXBlcnNhbmRzKVxuICAgICAqICh1bmRlciBcInNlbWktcmVsYXRlZCBmdW4gZmFjdFwiKSBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqXG4gICAgICogV2hlbiB3b3JraW5nIHdpdGggSFRNTCB5b3Ugc2hvdWxkIGFsd2F5c1xuICAgICAqIFtxdW90ZSBhdHRyaWJ1dGUgdmFsdWVzXShodHRwOi8vd29ua28uY29tL3Bvc3QvaHRtbC1lc2NhcGluZykgdG8gcmVkdWNlXG4gICAgICogWFNTIHZlY3RvcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gZXNjYXBlLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVzY2FwZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmVzY2FwZSgnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiAnZnJlZCwgYmFybmV5LCAmYW1wOyBwZWJibGVzJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVzY2FwZShzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICByZXR1cm4gKHN0cmluZyAmJiByZUhhc1VuZXNjYXBlZEh0bWwudGVzdChzdHJpbmcpKVxuICAgICAgICA/IHN0cmluZy5yZXBsYWNlKHJlVW5lc2NhcGVkSHRtbCwgZXNjYXBlSHRtbENoYXIpXG4gICAgICAgIDogc3RyaW5nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVzY2FwZXMgdGhlIGBSZWdFeHBgIHNwZWNpYWwgY2hhcmFjdGVycyBcIl5cIiwgXCIkXCIsIFwiXFxcIiwgXCIuXCIsIFwiKlwiLCBcIitcIixcbiAgICAgKiBcIj9cIiwgXCIoXCIsIFwiKVwiLCBcIltcIiwgXCJdXCIsIFwie1wiLCBcIn1cIiwgYW5kIFwifFwiIGluIGBzdHJpbmdgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGVzY2FwZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5lc2NhcGVSZWdFeHAoJ1tsb2Rhc2hdKGh0dHBzOi8vbG9kYXNoLmNvbS8pJyk7XG4gICAgICogLy8gPT4gJ1xcW2xvZGFzaFxcXVxcKGh0dHBzOi8vbG9kYXNoXFwuY29tL1xcKSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcmV0dXJuIChzdHJpbmcgJiYgcmVIYXNSZWdFeHBDaGFyLnRlc3Qoc3RyaW5nKSlcbiAgICAgICAgPyBzdHJpbmcucmVwbGFjZShyZVJlZ0V4cENoYXIsICdcXFxcJCYnKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0b1xuICAgICAqIFtrZWJhYiBjYXNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MZXR0ZXJfY2FzZSNTcGVjaWFsX2Nhc2Vfc3R5bGVzKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGtlYmFiIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5rZWJhYkNhc2UoJ0ZvbyBCYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vLWJhcidcbiAgICAgKlxuICAgICAqIF8ua2ViYWJDYXNlKCdmb29CYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vLWJhcidcbiAgICAgKlxuICAgICAqIF8ua2ViYWJDYXNlKCdfX0ZPT19CQVJfXycpO1xuICAgICAqIC8vID0+ICdmb28tYmFyJ1xuICAgICAqL1xuICAgIHZhciBrZWJhYkNhc2UgPSBjcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCwgd29yZCwgaW5kZXgpIHtcbiAgICAgIHJldHVybiByZXN1bHQgKyAoaW5kZXggPyAnLScgOiAnJykgKyB3b3JkLnRvTG93ZXJDYXNlKCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgc3BhY2Ugc2VwYXJhdGVkIHdvcmRzLCB0byBsb3dlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgbG93ZXIgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmxvd2VyQ2FzZSgnLS1Gb28tQmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnZm9vIGJhcidcbiAgICAgKlxuICAgICAqIF8ubG93ZXJDYXNlKCdmb29CYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vIGJhcidcbiAgICAgKlxuICAgICAqIF8ubG93ZXJDYXNlKCdfX0ZPT19CQVJfXycpO1xuICAgICAqIC8vID0+ICdmb28gYmFyJ1xuICAgICAqL1xuICAgIHZhciBsb3dlckNhc2UgPSBjcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCwgd29yZCwgaW5kZXgpIHtcbiAgICAgIHJldHVybiByZXN1bHQgKyAoaW5kZXggPyAnICcgOiAnJykgKyB3b3JkLnRvTG93ZXJDYXNlKCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGBzdHJpbmdgIHRvIGxvd2VyIGNhc2UuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmxvd2VyRmlyc3QoJ0ZyZWQnKTtcbiAgICAgKiAvLyA9PiAnZnJlZCdcbiAgICAgKlxuICAgICAqIF8ubG93ZXJGaXJzdCgnRlJFRCcpO1xuICAgICAqIC8vID0+ICdmUkVEJ1xuICAgICAqL1xuICAgIHZhciBsb3dlckZpcnN0ID0gY3JlYXRlQ2FzZUZpcnN0KCd0b0xvd2VyQ2FzZScpO1xuXG4gICAgLyoqXG4gICAgICogUGFkcyBgc3RyaW5nYCBvbiB0aGUgbGVmdCBhbmQgcmlnaHQgc2lkZXMgaWYgaXQncyBzaG9ydGVyIHRoYW4gYGxlbmd0aGAuXG4gICAgICogUGFkZGluZyBjaGFyYWN0ZXJzIGFyZSB0cnVuY2F0ZWQgaWYgdGhleSBjYW4ndCBiZSBldmVubHkgZGl2aWRlZCBieSBgbGVuZ3RoYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBwYWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9MF0gVGhlIHBhZGRpbmcgbGVuZ3RoLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9JyAnXSBUaGUgc3RyaW5nIHVzZWQgYXMgcGFkZGluZy5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBwYWRkZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnBhZCgnYWJjJywgOCk7XG4gICAgICogLy8gPT4gJyAgYWJjICAgJ1xuICAgICAqXG4gICAgICogXy5wYWQoJ2FiYycsIDgsICdfLScpO1xuICAgICAqIC8vID0+ICdfLWFiY18tXydcbiAgICAgKlxuICAgICAqIF8ucGFkKCdhYmMnLCAzKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBhZChzdHJpbmcsIGxlbmd0aCwgY2hhcnMpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBsZW5ndGggPSB0b0ludGVnZXIobGVuZ3RoKTtcblxuICAgICAgdmFyIHN0ckxlbmd0aCA9IGxlbmd0aCA/IHN0cmluZ1NpemUoc3RyaW5nKSA6IDA7XG4gICAgICBpZiAoIWxlbmd0aCB8fCBzdHJMZW5ndGggPj0gbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICB9XG4gICAgICB2YXIgbWlkID0gKGxlbmd0aCAtIHN0ckxlbmd0aCkgLyAyO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgY3JlYXRlUGFkZGluZyhuYXRpdmVGbG9vcihtaWQpLCBjaGFycykgK1xuICAgICAgICBzdHJpbmcgK1xuICAgICAgICBjcmVhdGVQYWRkaW5nKG5hdGl2ZUNlaWwobWlkKSwgY2hhcnMpXG4gICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhZHMgYHN0cmluZ2Agb24gdGhlIHJpZ2h0IHNpZGUgaWYgaXQncyBzaG9ydGVyIHRoYW4gYGxlbmd0aGAuIFBhZGRpbmdcbiAgICAgKiBjaGFyYWN0ZXJzIGFyZSB0cnVuY2F0ZWQgaWYgdGhleSBleGNlZWQgYGxlbmd0aGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcGFkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPTBdIFRoZSBwYWRkaW5nIGxlbmd0aC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5wYWRFbmQoJ2FiYycsIDYpO1xuICAgICAqIC8vID0+ICdhYmMgICAnXG4gICAgICpcbiAgICAgKiBfLnBhZEVuZCgnYWJjJywgNiwgJ18tJyk7XG4gICAgICogLy8gPT4gJ2FiY18tXydcbiAgICAgKlxuICAgICAqIF8ucGFkRW5kKCdhYmMnLCAzKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBhZEVuZChzdHJpbmcsIGxlbmd0aCwgY2hhcnMpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBsZW5ndGggPSB0b0ludGVnZXIobGVuZ3RoKTtcblxuICAgICAgdmFyIHN0ckxlbmd0aCA9IGxlbmd0aCA/IHN0cmluZ1NpemUoc3RyaW5nKSA6IDA7XG4gICAgICByZXR1cm4gKGxlbmd0aCAmJiBzdHJMZW5ndGggPCBsZW5ndGgpXG4gICAgICAgID8gKHN0cmluZyArIGNyZWF0ZVBhZGRpbmcobGVuZ3RoIC0gc3RyTGVuZ3RoLCBjaGFycykpXG4gICAgICAgIDogc3RyaW5nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhZHMgYHN0cmluZ2Agb24gdGhlIGxlZnQgc2lkZSBpZiBpdCdzIHNob3J0ZXIgdGhhbiBgbGVuZ3RoYC4gUGFkZGluZ1xuICAgICAqIGNoYXJhY3RlcnMgYXJlIHRydW5jYXRlZCBpZiB0aGV5IGV4Y2VlZCBgbGVuZ3RoYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBwYWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9MF0gVGhlIHBhZGRpbmcgbGVuZ3RoLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9JyAnXSBUaGUgc3RyaW5nIHVzZWQgYXMgcGFkZGluZy5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBwYWRkZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnBhZFN0YXJ0KCdhYmMnLCA2KTtcbiAgICAgKiAvLyA9PiAnICAgYWJjJ1xuICAgICAqXG4gICAgICogXy5wYWRTdGFydCgnYWJjJywgNiwgJ18tJyk7XG4gICAgICogLy8gPT4gJ18tX2FiYydcbiAgICAgKlxuICAgICAqIF8ucGFkU3RhcnQoJ2FiYycsIDMpO1xuICAgICAqIC8vID0+ICdhYmMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gcGFkU3RhcnQoc3RyaW5nLCBsZW5ndGgsIGNoYXJzKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgbGVuZ3RoID0gdG9JbnRlZ2VyKGxlbmd0aCk7XG5cbiAgICAgIHZhciBzdHJMZW5ndGggPSBsZW5ndGggPyBzdHJpbmdTaXplKHN0cmluZykgOiAwO1xuICAgICAgcmV0dXJuIChsZW5ndGggJiYgc3RyTGVuZ3RoIDwgbGVuZ3RoKVxuICAgICAgICA/IChjcmVhdGVQYWRkaW5nKGxlbmd0aCAtIHN0ckxlbmd0aCwgY2hhcnMpICsgc3RyaW5nKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBhbiBpbnRlZ2VyIG9mIHRoZSBzcGVjaWZpZWQgcmFkaXguIElmIGByYWRpeGAgaXNcbiAgICAgKiBgdW5kZWZpbmVkYCBvciBgMGAsIGEgYHJhZGl4YCBvZiBgMTBgIGlzIHVzZWQgdW5sZXNzIGB2YWx1ZWAgaXMgYVxuICAgICAqIGhleGFkZWNpbWFsLCBpbiB3aGljaCBjYXNlIGEgYHJhZGl4YCBvZiBgMTZgIGlzIHVzZWQuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgYWxpZ25zIHdpdGggdGhlXG4gICAgICogW0VTNSBpbXBsZW1lbnRhdGlvbl0oaHR0cHM6Ly9lczUuZ2l0aHViLmlvLyN4MTUuMS4yLjIpIG9mIGBwYXJzZUludGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtyYWRpeD0xMF0gVGhlIHJhZGl4IHRvIGludGVycHJldCBgdmFsdWVgIGJ5LlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucGFyc2VJbnQoJzA4Jyk7XG4gICAgICogLy8gPT4gOFxuICAgICAqXG4gICAgICogXy5tYXAoWyc2JywgJzA4JywgJzEwJ10sIF8ucGFyc2VJbnQpO1xuICAgICAqIC8vID0+IFs2LCA4LCAxMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYXJzZUludChzdHJpbmcsIHJhZGl4LCBndWFyZCkge1xuICAgICAgaWYgKGd1YXJkIHx8IHJhZGl4ID09IG51bGwpIHtcbiAgICAgICAgcmFkaXggPSAwO1xuICAgICAgfSBlbHNlIGlmIChyYWRpeCkge1xuICAgICAgICByYWRpeCA9ICtyYWRpeDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuYXRpdmVQYXJzZUludCh0b1N0cmluZyhzdHJpbmcpLnJlcGxhY2UocmVUcmltU3RhcnQsICcnKSwgcmFkaXggfHwgMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVwZWF0cyB0aGUgZ2l2ZW4gc3RyaW5nIGBuYCB0aW1lcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byByZXBlYXQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gcmVwZWF0IHRoZSBzdHJpbmcuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByZXBlYXRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmVwZWF0KCcqJywgMyk7XG4gICAgICogLy8gPT4gJyoqKidcbiAgICAgKlxuICAgICAqIF8ucmVwZWF0KCdhYmMnLCAyKTtcbiAgICAgKiAvLyA9PiAnYWJjYWJjJ1xuICAgICAqXG4gICAgICogXy5yZXBlYXQoJ2FiYycsIDApO1xuICAgICAqIC8vID0+ICcnXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVwZWF0KHN0cmluZywgbiwgZ3VhcmQpIHtcbiAgICAgIGlmICgoZ3VhcmQgPyBpc0l0ZXJhdGVlQ2FsbChzdHJpbmcsIG4sIGd1YXJkKSA6IG4gPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgbiA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VSZXBlYXQodG9TdHJpbmcoc3RyaW5nKSwgbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVwbGFjZXMgbWF0Y2hlcyBmb3IgYHBhdHRlcm5gIGluIGBzdHJpbmdgIHdpdGggYHJlcGxhY2VtZW50YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgU3RyaW5nI3JlcGxhY2VgXShodHRwczovL21kbi5pby9TdHJpbmcvcmVwbGFjZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfHN0cmluZ30gcGF0dGVybiBUaGUgcGF0dGVybiB0byByZXBsYWNlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb258c3RyaW5nfSByZXBsYWNlbWVudCBUaGUgbWF0Y2ggcmVwbGFjZW1lbnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgbW9kaWZpZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJlcGxhY2UoJ0hpIEZyZWQnLCAnRnJlZCcsICdCYXJuZXknKTtcbiAgICAgKiAvLyA9PiAnSGkgQmFybmV5J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlcGxhY2UoKSB7XG4gICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgICBzdHJpbmcgPSB0b1N0cmluZyhhcmdzWzBdKTtcblxuICAgICAgcmV0dXJuIGFyZ3MubGVuZ3RoIDwgMyA/IHN0cmluZyA6IHN0cmluZy5yZXBsYWNlKGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvXG4gICAgICogW3NuYWtlIGNhc2VdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NuYWtlX2Nhc2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc25ha2UgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNuYWtlQ2FzZSgnRm9vIEJhcicpO1xuICAgICAqIC8vID0+ICdmb29fYmFyJ1xuICAgICAqXG4gICAgICogXy5zbmFrZUNhc2UoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdmb29fYmFyJ1xuICAgICAqXG4gICAgICogXy5zbmFrZUNhc2UoJy0tRk9PLUJBUi0tJyk7XG4gICAgICogLy8gPT4gJ2Zvb19iYXInXG4gICAgICovXG4gICAgdmFyIHNuYWtlQ2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHJlc3VsdCArIChpbmRleCA/ICdfJyA6ICcnKSArIHdvcmQudG9Mb3dlckNhc2UoKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFNwbGl0cyBgc3RyaW5nYCBieSBgc2VwYXJhdG9yYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgU3RyaW5nI3NwbGl0YF0oaHR0cHM6Ly9tZG4uaW8vU3RyaW5nL3NwbGl0KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBzcGxpdC5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IHNlcGFyYXRvciBUaGUgc2VwYXJhdG9yIHBhdHRlcm4gdG8gc3BsaXQgYnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsaW1pdF0gVGhlIGxlbmd0aCB0byB0cnVuY2F0ZSByZXN1bHRzIHRvLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc3RyaW5nIHNlZ21lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNwbGl0KCdhLWItYycsICctJywgMik7XG4gICAgICogLy8gPT4gWydhJywgJ2InXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNwbGl0KHN0cmluZywgc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgICAgaWYgKGxpbWl0ICYmIHR5cGVvZiBsaW1pdCAhPSAnbnVtYmVyJyAmJiBpc0l0ZXJhdGVlQ2FsbChzdHJpbmcsIHNlcGFyYXRvciwgbGltaXQpKSB7XG4gICAgICAgIHNlcGFyYXRvciA9IGxpbWl0ID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgbGltaXQgPSBsaW1pdCA9PT0gdW5kZWZpbmVkID8gTUFYX0FSUkFZX0xFTkdUSCA6IGxpbWl0ID4+PiAwO1xuICAgICAgaWYgKCFsaW1pdCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgaWYgKHN0cmluZyAmJiAoXG4gICAgICAgICAgICB0eXBlb2Ygc2VwYXJhdG9yID09ICdzdHJpbmcnIHx8XG4gICAgICAgICAgICAoc2VwYXJhdG9yICE9IG51bGwgJiYgIWlzUmVnRXhwKHNlcGFyYXRvcikpXG4gICAgICAgICAgKSkge1xuICAgICAgICBzZXBhcmF0b3IgPSBiYXNlVG9TdHJpbmcoc2VwYXJhdG9yKTtcbiAgICAgICAgaWYgKCFzZXBhcmF0b3IgJiYgaGFzVW5pY29kZShzdHJpbmcpKSB7XG4gICAgICAgICAgcmV0dXJuIGNhc3RTbGljZShzdHJpbmdUb0FycmF5KHN0cmluZyksIDAsIGxpbWl0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHN0cmluZy5zcGxpdChzZXBhcmF0b3IsIGxpbWl0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0b1xuICAgICAqIFtzdGFydCBjYXNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MZXR0ZXJfY2FzZSNTdHlsaXN0aWNfb3Jfc3BlY2lhbGlzZWRfdXNhZ2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMS4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RhcnQgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0Q2FzZSgnLS1mb28tYmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnRm9vIEJhcidcbiAgICAgKlxuICAgICAqIF8uc3RhcnRDYXNlKCdmb29CYXInKTtcbiAgICAgKiAvLyA9PiAnRm9vIEJhcidcbiAgICAgKlxuICAgICAqIF8uc3RhcnRDYXNlKCdfX0ZPT19CQVJfXycpO1xuICAgICAqIC8vID0+ICdGT08gQkFSJ1xuICAgICAqL1xuICAgIHZhciBzdGFydENhc2UgPSBjcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCwgd29yZCwgaW5kZXgpIHtcbiAgICAgIHJldHVybiByZXN1bHQgKyAoaW5kZXggPyAnICcgOiAnJykgKyB1cHBlckZpcnN0KHdvcmQpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBzdHJpbmdgIHN0YXJ0cyB3aXRoIHRoZSBnaXZlbiB0YXJnZXQgc3RyaW5nLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFt0YXJnZXRdIFRoZSBzdHJpbmcgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3Bvc2l0aW9uPTBdIFRoZSBwb3NpdGlvbiB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHN0cmluZ2Agc3RhcnRzIHdpdGggYHRhcmdldGAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zdGFydHNXaXRoKCdhYmMnLCAnYScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uc3RhcnRzV2l0aCgnYWJjJywgJ2InKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5zdGFydHNXaXRoKCdhYmMnLCAnYicsIDEpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFydHNXaXRoKHN0cmluZywgdGFyZ2V0LCBwb3NpdGlvbikge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24gPT0gbnVsbFxuICAgICAgICA/IDBcbiAgICAgICAgOiBiYXNlQ2xhbXAodG9JbnRlZ2VyKHBvc2l0aW9uKSwgMCwgc3RyaW5nLmxlbmd0aCk7XG5cbiAgICAgIHRhcmdldCA9IGJhc2VUb1N0cmluZyh0YXJnZXQpO1xuICAgICAgcmV0dXJuIHN0cmluZy5zbGljZShwb3NpdGlvbiwgcG9zaXRpb24gKyB0YXJnZXQubGVuZ3RoKSA9PSB0YXJnZXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNvbXBpbGVkIHRlbXBsYXRlIGZ1bmN0aW9uIHRoYXQgY2FuIGludGVycG9sYXRlIGRhdGEgcHJvcGVydGllc1xuICAgICAqIGluIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXJzLCBIVE1MLWVzY2FwZSBpbnRlcnBvbGF0ZWQgZGF0YSBwcm9wZXJ0aWVzIGluXG4gICAgICogXCJlc2NhcGVcIiBkZWxpbWl0ZXJzLCBhbmQgZXhlY3V0ZSBKYXZhU2NyaXB0IGluIFwiZXZhbHVhdGVcIiBkZWxpbWl0ZXJzLiBEYXRhXG4gICAgICogcHJvcGVydGllcyBtYXkgYmUgYWNjZXNzZWQgYXMgZnJlZSB2YXJpYWJsZXMgaW4gdGhlIHRlbXBsYXRlLiBJZiBhIHNldHRpbmdcbiAgICAgKiBvYmplY3QgaXMgZ2l2ZW4sIGl0IHRha2VzIHByZWNlZGVuY2Ugb3ZlciBgXy50ZW1wbGF0ZVNldHRpbmdzYCB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSW4gdGhlIGRldmVsb3BtZW50IGJ1aWxkIGBfLnRlbXBsYXRlYCB1dGlsaXplc1xuICAgICAqIFtzb3VyY2VVUkxzXShodHRwOi8vd3d3Lmh0bWw1cm9ja3MuY29tL2VuL3R1dG9yaWFscy9kZXZlbG9wZXJ0b29scy9zb3VyY2VtYXBzLyN0b2Mtc291cmNldXJsKVxuICAgICAqIGZvciBlYXNpZXIgZGVidWdnaW5nLlxuICAgICAqXG4gICAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gcHJlY29tcGlsaW5nIHRlbXBsYXRlcyBzZWVcbiAgICAgKiBbbG9kYXNoJ3MgY3VzdG9tIGJ1aWxkcyBkb2N1bWVudGF0aW9uXShodHRwczovL2xvZGFzaC5jb20vY3VzdG9tLWJ1aWxkcykuXG4gICAgICpcbiAgICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBDaHJvbWUgZXh0ZW5zaW9uIHNhbmRib3hlcyBzZWVcbiAgICAgKiBbQ2hyb21lJ3MgZXh0ZW5zaW9ucyBkb2N1bWVudGF0aW9uXShodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2V4dGVuc2lvbnMvc2FuZGJveGluZ0V2YWwpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgdGVtcGxhdGUgc3RyaW5nLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfSBbb3B0aW9ucy5lc2NhcGU9Xy50ZW1wbGF0ZVNldHRpbmdzLmVzY2FwZV1cbiAgICAgKiAgVGhlIEhUTUwgXCJlc2NhcGVcIiBkZWxpbWl0ZXIuXG4gICAgICogQHBhcmFtIHtSZWdFeHB9IFtvcHRpb25zLmV2YWx1YXRlPV8udGVtcGxhdGVTZXR0aW5ncy5ldmFsdWF0ZV1cbiAgICAgKiAgVGhlIFwiZXZhbHVhdGVcIiBkZWxpbWl0ZXIuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zLmltcG9ydHM9Xy50ZW1wbGF0ZVNldHRpbmdzLmltcG9ydHNdXG4gICAgICogIEFuIG9iamVjdCB0byBpbXBvcnQgaW50byB0aGUgdGVtcGxhdGUgYXMgZnJlZSB2YXJpYWJsZXMuXG4gICAgICogQHBhcmFtIHtSZWdFeHB9IFtvcHRpb25zLmludGVycG9sYXRlPV8udGVtcGxhdGVTZXR0aW5ncy5pbnRlcnBvbGF0ZV1cbiAgICAgKiAgVGhlIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnNvdXJjZVVSTD0nbG9kYXNoLnRlbXBsYXRlU291cmNlc1tuXSddXG4gICAgICogIFRoZSBzb3VyY2VVUkwgb2YgdGhlIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy52YXJpYWJsZT0nb2JqJ11cbiAgICAgKiAgVGhlIGRhdGEgb2JqZWN0IHZhcmlhYmxlIG5hbWUuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGNvbXBpbGVkIHRlbXBsYXRlIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIgdG8gY3JlYXRlIGEgY29tcGlsZWQgdGVtcGxhdGUuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8gPCU9IHVzZXIgJT4hJyk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcic6ICdmcmVkJyB9KTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gZnJlZCEnXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIEhUTUwgXCJlc2NhcGVcIiBkZWxpbWl0ZXIgdG8gZXNjYXBlIGRhdGEgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzxiPjwlLSB2YWx1ZSAlPjwvYj4nKTtcbiAgICAgKiBjb21waWxlZCh7ICd2YWx1ZSc6ICc8c2NyaXB0PicgfSk7XG4gICAgICogLy8gPT4gJzxiPiZsdDtzY3JpcHQmZ3Q7PC9iPidcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgXCJldmFsdWF0ZVwiIGRlbGltaXRlciB0byBleGVjdXRlIEphdmFTY3JpcHQgYW5kIGdlbmVyYXRlIEhUTUwuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPCUgXy5mb3JFYWNoKHVzZXJzLCBmdW5jdGlvbih1c2VyKSB7ICU+PGxpPjwlLSB1c2VyICU+PC9saT48JSB9KTsgJT4nKTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2Vycyc6IFsnZnJlZCcsICdiYXJuZXknXSB9KTtcbiAgICAgKiAvLyA9PiAnPGxpPmZyZWQ8L2xpPjxsaT5iYXJuZXk8L2xpPidcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgaW50ZXJuYWwgYHByaW50YCBmdW5jdGlvbiBpbiBcImV2YWx1YXRlXCIgZGVsaW1pdGVycy5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCc8JSBwcmludChcImhlbGxvIFwiICsgdXNlcik7ICU+IScpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXInOiAnYmFybmV5JyB9KTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gYmFybmV5ISdcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgRVMgdGVtcGxhdGUgbGl0ZXJhbCBkZWxpbWl0ZXIgYXMgYW4gXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlci5cbiAgICAgKiAvLyBEaXNhYmxlIHN1cHBvcnQgYnkgcmVwbGFjaW5nIHRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hlbGxvICR7IHVzZXIgfSEnKTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2VyJzogJ3BlYmJsZXMnIH0pO1xuICAgICAqIC8vID0+ICdoZWxsbyBwZWJibGVzISdcbiAgICAgKlxuICAgICAqIC8vIFVzZSBiYWNrc2xhc2hlcyB0byB0cmVhdCBkZWxpbWl0ZXJzIGFzIHBsYWluIHRleHQuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPCU9IFwiXFxcXDwlLSB2YWx1ZSAlXFxcXD5cIiAlPicpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3ZhbHVlJzogJ2lnbm9yZWQnIH0pO1xuICAgICAqIC8vID0+ICc8JS0gdmFsdWUgJT4nXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGBpbXBvcnRzYCBvcHRpb24gdG8gaW1wb3J0IGBqUXVlcnlgIGFzIGBqcWAuXG4gICAgICogdmFyIHRleHQgPSAnPCUganEuZWFjaCh1c2VycywgZnVuY3Rpb24odXNlcikgeyAlPjxsaT48JS0gdXNlciAlPjwvbGk+PCUgfSk7ICU+JztcbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKHRleHQsIHsgJ2ltcG9ydHMnOiB7ICdqcSc6IGpRdWVyeSB9IH0pO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXJzJzogWydmcmVkJywgJ2Jhcm5leSddIH0pO1xuICAgICAqIC8vID0+ICc8bGk+ZnJlZDwvbGk+PGxpPmJhcm5leTwvbGk+J1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBgc291cmNlVVJMYCBvcHRpb24gdG8gc3BlY2lmeSBhIGN1c3RvbSBzb3VyY2VVUkwgZm9yIHRoZSB0ZW1wbGF0ZS5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyA8JT0gdXNlciAlPiEnLCB7ICdzb3VyY2VVUkwnOiAnL2Jhc2ljL2dyZWV0aW5nLmpzdCcgfSk7XG4gICAgICogY29tcGlsZWQoZGF0YSk7XG4gICAgICogLy8gPT4gRmluZCB0aGUgc291cmNlIG9mIFwiZ3JlZXRpbmcuanN0XCIgdW5kZXIgdGhlIFNvdXJjZXMgdGFiIG9yIFJlc291cmNlcyBwYW5lbCBvZiB0aGUgd2ViIGluc3BlY3Rvci5cbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgYHZhcmlhYmxlYCBvcHRpb24gdG8gZW5zdXJlIGEgd2l0aC1zdGF0ZW1lbnQgaXNuJ3QgdXNlZCBpbiB0aGUgY29tcGlsZWQgdGVtcGxhdGUuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGkgPCU9IGRhdGEudXNlciAlPiEnLCB7ICd2YXJpYWJsZSc6ICdkYXRhJyB9KTtcbiAgICAgKiBjb21waWxlZC5zb3VyY2U7XG4gICAgICogLy8gPT4gZnVuY3Rpb24oZGF0YSkge1xuICAgICAqIC8vICAgdmFyIF9fdCwgX19wID0gJyc7XG4gICAgICogLy8gICBfX3AgKz0gJ2hpICcgKyAoKF9fdCA9ICggZGF0YS51c2VyICkpID09IG51bGwgPyAnJyA6IF9fdCkgKyAnISc7XG4gICAgICogLy8gICByZXR1cm4gX19wO1xuICAgICAqIC8vIH1cbiAgICAgKlxuICAgICAqIC8vIFVzZSBjdXN0b20gdGVtcGxhdGUgZGVsaW1pdGVycy5cbiAgICAgKiBfLnRlbXBsYXRlU2V0dGluZ3MuaW50ZXJwb2xhdGUgPSAve3soW1xcc1xcU10rPyl9fS9nO1xuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hlbGxvIHt7IHVzZXIgfX0hJyk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcic6ICdtdXN0YWNoZScgfSk7XG4gICAgICogLy8gPT4gJ2hlbGxvIG11c3RhY2hlISdcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgYHNvdXJjZWAgcHJvcGVydHkgdG8gaW5saW5lIGNvbXBpbGVkIHRlbXBsYXRlcyBmb3IgbWVhbmluZ2Z1bFxuICAgICAqIC8vIGxpbmUgbnVtYmVycyBpbiBlcnJvciBtZXNzYWdlcyBhbmQgc3RhY2sgdHJhY2VzLlxuICAgICAqIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICdqc3QuanMnKSwgJ1xcXG4gICAgICogICB2YXIgSlNUID0ge1xcXG4gICAgICogICAgIFwibWFpblwiOiAnICsgXy50ZW1wbGF0ZShtYWluVGV4dCkuc291cmNlICsgJ1xcXG4gICAgICogICB9O1xcXG4gICAgICogJyk7XG4gICAgICovXG4gICAgZnVuY3Rpb24gdGVtcGxhdGUoc3RyaW5nLCBvcHRpb25zLCBndWFyZCkge1xuICAgICAgLy8gQmFzZWQgb24gSm9obiBSZXNpZydzIGB0bXBsYCBpbXBsZW1lbnRhdGlvblxuICAgICAgLy8gKGh0dHA6Ly9lam9obi5vcmcvYmxvZy9qYXZhc2NyaXB0LW1pY3JvLXRlbXBsYXRpbmcvKVxuICAgICAgLy8gYW5kIExhdXJhIERva3Rvcm92YSdzIGRvVC5qcyAoaHR0cHM6Ly9naXRodWIuY29tL29sYWRvL2RvVCkuXG4gICAgICB2YXIgc2V0dGluZ3MgPSBsb2Rhc2gudGVtcGxhdGVTZXR0aW5ncztcblxuICAgICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHN0cmluZywgb3B0aW9ucywgZ3VhcmQpKSB7XG4gICAgICAgIG9wdGlvbnMgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgb3B0aW9ucyA9IGFzc2lnbkluV2l0aCh7fSwgb3B0aW9ucywgc2V0dGluZ3MsIGN1c3RvbURlZmF1bHRzQXNzaWduSW4pO1xuXG4gICAgICB2YXIgaW1wb3J0cyA9IGFzc2lnbkluV2l0aCh7fSwgb3B0aW9ucy5pbXBvcnRzLCBzZXR0aW5ncy5pbXBvcnRzLCBjdXN0b21EZWZhdWx0c0Fzc2lnbkluKSxcbiAgICAgICAgICBpbXBvcnRzS2V5cyA9IGtleXMoaW1wb3J0cyksXG4gICAgICAgICAgaW1wb3J0c1ZhbHVlcyA9IGJhc2VWYWx1ZXMoaW1wb3J0cywgaW1wb3J0c0tleXMpO1xuXG4gICAgICB2YXIgaXNFc2NhcGluZyxcbiAgICAgICAgICBpc0V2YWx1YXRpbmcsXG4gICAgICAgICAgaW5kZXggPSAwLFxuICAgICAgICAgIGludGVycG9sYXRlID0gb3B0aW9ucy5pbnRlcnBvbGF0ZSB8fCByZU5vTWF0Y2gsXG4gICAgICAgICAgc291cmNlID0gXCJfX3AgKz0gJ1wiO1xuXG4gICAgICAvLyBDb21waWxlIHRoZSByZWdleHAgdG8gbWF0Y2ggZWFjaCBkZWxpbWl0ZXIuXG4gICAgICB2YXIgcmVEZWxpbWl0ZXJzID0gUmVnRXhwKFxuICAgICAgICAob3B0aW9ucy5lc2NhcGUgfHwgcmVOb01hdGNoKS5zb3VyY2UgKyAnfCcgK1xuICAgICAgICBpbnRlcnBvbGF0ZS5zb3VyY2UgKyAnfCcgK1xuICAgICAgICAoaW50ZXJwb2xhdGUgPT09IHJlSW50ZXJwb2xhdGUgPyByZUVzVGVtcGxhdGUgOiByZU5vTWF0Y2gpLnNvdXJjZSArICd8JyArXG4gICAgICAgIChvcHRpb25zLmV2YWx1YXRlIHx8IHJlTm9NYXRjaCkuc291cmNlICsgJ3wkJ1xuICAgICAgLCAnZycpO1xuXG4gICAgICAvLyBVc2UgYSBzb3VyY2VVUkwgZm9yIGVhc2llciBkZWJ1Z2dpbmcuXG4gICAgICAvLyBUaGUgc291cmNlVVJMIGdldHMgaW5qZWN0ZWQgaW50byB0aGUgc291cmNlIHRoYXQncyBldmFsLWVkLCBzbyBiZSBjYXJlZnVsXG4gICAgICAvLyB0byBub3JtYWxpemUgYWxsIGtpbmRzIG9mIHdoaXRlc3BhY2UsIHNvIGUuZy4gbmV3bGluZXMgKGFuZCB1bmljb2RlIHZlcnNpb25zIG9mIGl0KSBjYW4ndCBzbmVhayBpblxuICAgICAgLy8gYW5kIGVzY2FwZSB0aGUgY29tbWVudCwgdGh1cyBpbmplY3RpbmcgY29kZSB0aGF0IGdldHMgZXZhbGVkLlxuICAgICAgdmFyIHNvdXJjZVVSTCA9ICcvLyMgc291cmNlVVJMPScgK1xuICAgICAgICAoaGFzT3duUHJvcGVydHkuY2FsbChvcHRpb25zLCAnc291cmNlVVJMJylcbiAgICAgICAgICA/IChvcHRpb25zLnNvdXJjZVVSTCArICcnKS5yZXBsYWNlKC9cXHMvZywgJyAnKVxuICAgICAgICAgIDogKCdsb2Rhc2gudGVtcGxhdGVTb3VyY2VzWycgKyAoKyt0ZW1wbGF0ZUNvdW50ZXIpICsgJ10nKVxuICAgICAgICApICsgJ1xcbic7XG5cbiAgICAgIHN0cmluZy5yZXBsYWNlKHJlRGVsaW1pdGVycywgZnVuY3Rpb24obWF0Y2gsIGVzY2FwZVZhbHVlLCBpbnRlcnBvbGF0ZVZhbHVlLCBlc1RlbXBsYXRlVmFsdWUsIGV2YWx1YXRlVmFsdWUsIG9mZnNldCkge1xuICAgICAgICBpbnRlcnBvbGF0ZVZhbHVlIHx8IChpbnRlcnBvbGF0ZVZhbHVlID0gZXNUZW1wbGF0ZVZhbHVlKTtcblxuICAgICAgICAvLyBFc2NhcGUgY2hhcmFjdGVycyB0aGF0IGNhbid0IGJlIGluY2x1ZGVkIGluIHN0cmluZyBsaXRlcmFscy5cbiAgICAgICAgc291cmNlICs9IHN0cmluZy5zbGljZShpbmRleCwgb2Zmc2V0KS5yZXBsYWNlKHJlVW5lc2NhcGVkU3RyaW5nLCBlc2NhcGVTdHJpbmdDaGFyKTtcblxuICAgICAgICAvLyBSZXBsYWNlIGRlbGltaXRlcnMgd2l0aCBzbmlwcGV0cy5cbiAgICAgICAgaWYgKGVzY2FwZVZhbHVlKSB7XG4gICAgICAgICAgaXNFc2NhcGluZyA9IHRydWU7XG4gICAgICAgICAgc291cmNlICs9IFwiJyArXFxuX19lKFwiICsgZXNjYXBlVmFsdWUgKyBcIikgK1xcbidcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZhbHVhdGVWYWx1ZSkge1xuICAgICAgICAgIGlzRXZhbHVhdGluZyA9IHRydWU7XG4gICAgICAgICAgc291cmNlICs9IFwiJztcXG5cIiArIGV2YWx1YXRlVmFsdWUgKyBcIjtcXG5fX3AgKz0gJ1wiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnRlcnBvbGF0ZVZhbHVlKSB7XG4gICAgICAgICAgc291cmNlICs9IFwiJyArXFxuKChfX3QgPSAoXCIgKyBpbnRlcnBvbGF0ZVZhbHVlICsgXCIpKSA9PSBudWxsID8gJycgOiBfX3QpICtcXG4nXCI7XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXggPSBvZmZzZXQgKyBtYXRjaC5sZW5ndGg7XG5cbiAgICAgICAgLy8gVGhlIEpTIGVuZ2luZSBlbWJlZGRlZCBpbiBBZG9iZSBwcm9kdWN0cyBuZWVkcyBgbWF0Y2hgIHJldHVybmVkIGluXG4gICAgICAgIC8vIG9yZGVyIHRvIHByb2R1Y2UgdGhlIGNvcnJlY3QgYG9mZnNldGAgdmFsdWUuXG4gICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgIH0pO1xuXG4gICAgICBzb3VyY2UgKz0gXCInO1xcblwiO1xuXG4gICAgICAvLyBJZiBgdmFyaWFibGVgIGlzIG5vdCBzcGVjaWZpZWQgd3JhcCBhIHdpdGgtc3RhdGVtZW50IGFyb3VuZCB0aGUgZ2VuZXJhdGVkXG4gICAgICAvLyBjb2RlIHRvIGFkZCB0aGUgZGF0YSBvYmplY3QgdG8gdGhlIHRvcCBvZiB0aGUgc2NvcGUgY2hhaW4uXG4gICAgICB2YXIgdmFyaWFibGUgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9wdGlvbnMsICd2YXJpYWJsZScpICYmIG9wdGlvbnMudmFyaWFibGU7XG4gICAgICBpZiAoIXZhcmlhYmxlKSB7XG4gICAgICAgIHNvdXJjZSA9ICd3aXRoIChvYmopIHtcXG4nICsgc291cmNlICsgJ1xcbn1cXG4nO1xuICAgICAgfVxuICAgICAgLy8gQ2xlYW51cCBjb2RlIGJ5IHN0cmlwcGluZyBlbXB0eSBzdHJpbmdzLlxuICAgICAgc291cmNlID0gKGlzRXZhbHVhdGluZyA/IHNvdXJjZS5yZXBsYWNlKHJlRW1wdHlTdHJpbmdMZWFkaW5nLCAnJykgOiBzb3VyY2UpXG4gICAgICAgIC5yZXBsYWNlKHJlRW1wdHlTdHJpbmdNaWRkbGUsICckMScpXG4gICAgICAgIC5yZXBsYWNlKHJlRW1wdHlTdHJpbmdUcmFpbGluZywgJyQxOycpO1xuXG4gICAgICAvLyBGcmFtZSBjb2RlIGFzIHRoZSBmdW5jdGlvbiBib2R5LlxuICAgICAgc291cmNlID0gJ2Z1bmN0aW9uKCcgKyAodmFyaWFibGUgfHwgJ29iaicpICsgJykge1xcbicgK1xuICAgICAgICAodmFyaWFibGVcbiAgICAgICAgICA/ICcnXG4gICAgICAgICAgOiAnb2JqIHx8IChvYmogPSB7fSk7XFxuJ1xuICAgICAgICApICtcbiAgICAgICAgXCJ2YXIgX190LCBfX3AgPSAnJ1wiICtcbiAgICAgICAgKGlzRXNjYXBpbmdcbiAgICAgICAgICAgPyAnLCBfX2UgPSBfLmVzY2FwZSdcbiAgICAgICAgICAgOiAnJ1xuICAgICAgICApICtcbiAgICAgICAgKGlzRXZhbHVhdGluZ1xuICAgICAgICAgID8gJywgX19qID0gQXJyYXkucHJvdG90eXBlLmpvaW47XFxuJyArXG4gICAgICAgICAgICBcImZ1bmN0aW9uIHByaW50KCkgeyBfX3AgKz0gX19qLmNhbGwoYXJndW1lbnRzLCAnJykgfVxcblwiXG4gICAgICAgICAgOiAnO1xcbidcbiAgICAgICAgKSArXG4gICAgICAgIHNvdXJjZSArXG4gICAgICAgICdyZXR1cm4gX19wXFxufSc7XG5cbiAgICAgIHZhciByZXN1bHQgPSBhdHRlbXB0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gRnVuY3Rpb24oaW1wb3J0c0tleXMsIHNvdXJjZVVSTCArICdyZXR1cm4gJyArIHNvdXJjZSlcbiAgICAgICAgICAuYXBwbHkodW5kZWZpbmVkLCBpbXBvcnRzVmFsdWVzKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBQcm92aWRlIHRoZSBjb21waWxlZCBmdW5jdGlvbidzIHNvdXJjZSBieSBpdHMgYHRvU3RyaW5nYCBtZXRob2Qgb3JcbiAgICAgIC8vIHRoZSBgc291cmNlYCBwcm9wZXJ0eSBhcyBhIGNvbnZlbmllbmNlIGZvciBpbmxpbmluZyBjb21waWxlZCB0ZW1wbGF0ZXMuXG4gICAgICByZXN1bHQuc291cmNlID0gc291cmNlO1xuICAgICAgaWYgKGlzRXJyb3IocmVzdWx0KSkge1xuICAgICAgICB0aHJvdyByZXN1bHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgLCBhcyBhIHdob2xlLCB0byBsb3dlciBjYXNlIGp1c3QgbGlrZVxuICAgICAqIFtTdHJpbmcjdG9Mb3dlckNhc2VdKGh0dHBzOi8vbWRuLmlvL3RvTG93ZXJDYXNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGxvd2VyIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b0xvd2VyKCctLUZvby1CYXItLScpO1xuICAgICAqIC8vID0+ICctLWZvby1iYXItLSdcbiAgICAgKlxuICAgICAqIF8udG9Mb3dlcignZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvb2JhcidcbiAgICAgKlxuICAgICAqIF8udG9Mb3dlcignX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnX19mb29fYmFyX18nXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9Mb3dlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHRvU3RyaW5nKHZhbHVlKS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgLCBhcyBhIHdob2xlLCB0byB1cHBlciBjYXNlIGp1c3QgbGlrZVxuICAgICAqIFtTdHJpbmcjdG9VcHBlckNhc2VdKGh0dHBzOi8vbWRuLmlvL3RvVXBwZXJDYXNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVwcGVyIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b1VwcGVyKCctLWZvby1iYXItLScpO1xuICAgICAqIC8vID0+ICctLUZPTy1CQVItLSdcbiAgICAgKlxuICAgICAqIF8udG9VcHBlcignZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ0ZPT0JBUidcbiAgICAgKlxuICAgICAqIF8udG9VcHBlcignX19mb29fYmFyX18nKTtcbiAgICAgKiAvLyA9PiAnX19GT09fQkFSX18nXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9VcHBlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHRvU3RyaW5nKHZhbHVlKS50b1VwcGVyQ2FzZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBvciBzcGVjaWZpZWQgY2hhcmFjdGVycyBmcm9tIGBzdHJpbmdgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz13aGl0ZXNwYWNlXSBUaGUgY2hhcmFjdGVycyB0byB0cmltLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udHJpbSgnICBhYmMgICcpO1xuICAgICAqIC8vID0+ICdhYmMnXG4gICAgICpcbiAgICAgKiBfLnRyaW0oJy1fLWFiYy1fLScsICdfLScpO1xuICAgICAqIC8vID0+ICdhYmMnXG4gICAgICpcbiAgICAgKiBfLm1hcChbJyAgZm9vICAnLCAnICBiYXIgICddLCBfLnRyaW0pO1xuICAgICAqIC8vID0+IFsnZm9vJywgJ2JhciddXG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJpbShzdHJpbmcsIGNoYXJzLCBndWFyZCkge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGlmIChzdHJpbmcgJiYgKGd1YXJkIHx8IGNoYXJzID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZShyZVRyaW0sICcnKTtcbiAgICAgIH1cbiAgICAgIGlmICghc3RyaW5nIHx8ICEoY2hhcnMgPSBiYXNlVG9TdHJpbmcoY2hhcnMpKSkge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgfVxuICAgICAgdmFyIHN0clN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KHN0cmluZyksXG4gICAgICAgICAgY2hyU3ltYm9scyA9IHN0cmluZ1RvQXJyYXkoY2hhcnMpLFxuICAgICAgICAgIHN0YXJ0ID0gY2hhcnNTdGFydEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpLFxuICAgICAgICAgIGVuZCA9IGNoYXJzRW5kSW5kZXgoc3RyU3ltYm9scywgY2hyU3ltYm9scykgKyAxO1xuXG4gICAgICByZXR1cm4gY2FzdFNsaWNlKHN0clN5bWJvbHMsIHN0YXJ0LCBlbmQpLmpvaW4oJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdHJhaWxpbmcgd2hpdGVzcGFjZSBvciBzcGVjaWZpZWQgY2hhcmFjdGVycyBmcm9tIGBzdHJpbmdgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz13aGl0ZXNwYWNlXSBUaGUgY2hhcmFjdGVycyB0byB0cmltLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udHJpbUVuZCgnICBhYmMgICcpO1xuICAgICAqIC8vID0+ICcgIGFiYydcbiAgICAgKlxuICAgICAqIF8udHJpbUVuZCgnLV8tYWJjLV8tJywgJ18tJyk7XG4gICAgICogLy8gPT4gJy1fLWFiYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0cmltRW5kKHN0cmluZywgY2hhcnMsIGd1YXJkKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgaWYgKHN0cmluZyAmJiAoZ3VhcmQgfHwgY2hhcnMgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKHJlVHJpbUVuZCwgJycpO1xuICAgICAgfVxuICAgICAgaWYgKCFzdHJpbmcgfHwgIShjaGFycyA9IGJhc2VUb1N0cmluZyhjaGFycykpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICB9XG4gICAgICB2YXIgc3RyU3ltYm9scyA9IHN0cmluZ1RvQXJyYXkoc3RyaW5nKSxcbiAgICAgICAgICBlbmQgPSBjaGFyc0VuZEluZGV4KHN0clN5bWJvbHMsIHN0cmluZ1RvQXJyYXkoY2hhcnMpKSArIDE7XG5cbiAgICAgIHJldHVybiBjYXN0U2xpY2Uoc3RyU3ltYm9scywgMCwgZW5kKS5qb2luKCcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGxlYWRpbmcgd2hpdGVzcGFjZSBvciBzcGVjaWZpZWQgY2hhcmFjdGVycyBmcm9tIGBzdHJpbmdgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz13aGl0ZXNwYWNlXSBUaGUgY2hhcmFjdGVycyB0byB0cmltLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udHJpbVN0YXJ0KCcgIGFiYyAgJyk7XG4gICAgICogLy8gPT4gJ2FiYyAgJ1xuICAgICAqXG4gICAgICogXy50cmltU3RhcnQoJy1fLWFiYy1fLScsICdfLScpO1xuICAgICAqIC8vID0+ICdhYmMtXy0nXG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJpbVN0YXJ0KHN0cmluZywgY2hhcnMsIGd1YXJkKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgaWYgKHN0cmluZyAmJiAoZ3VhcmQgfHwgY2hhcnMgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJyk7XG4gICAgICB9XG4gICAgICBpZiAoIXN0cmluZyB8fCAhKGNoYXJzID0gYmFzZVRvU3RyaW5nKGNoYXJzKSkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIH1cbiAgICAgIHZhciBzdHJTeW1ib2xzID0gc3RyaW5nVG9BcnJheShzdHJpbmcpLFxuICAgICAgICAgIHN0YXJ0ID0gY2hhcnNTdGFydEluZGV4KHN0clN5bWJvbHMsIHN0cmluZ1RvQXJyYXkoY2hhcnMpKTtcblxuICAgICAgcmV0dXJuIGNhc3RTbGljZShzdHJTeW1ib2xzLCBzdGFydCkuam9pbignJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJ1bmNhdGVzIGBzdHJpbmdgIGlmIGl0J3MgbG9uZ2VyIHRoYW4gdGhlIGdpdmVuIG1heGltdW0gc3RyaW5nIGxlbmd0aC5cbiAgICAgKiBUaGUgbGFzdCBjaGFyYWN0ZXJzIG9mIHRoZSB0cnVuY2F0ZWQgc3RyaW5nIGFyZSByZXBsYWNlZCB3aXRoIHRoZSBvbWlzc2lvblxuICAgICAqIHN0cmluZyB3aGljaCBkZWZhdWx0cyB0byBcIi4uLlwiLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHRydW5jYXRlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5sZW5ndGg9MzBdIFRoZSBtYXhpbXVtIHN0cmluZyBsZW5ndGguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLm9taXNzaW9uPScuLi4nXSBUaGUgc3RyaW5nIHRvIGluZGljYXRlIHRleHQgaXMgb21pdHRlZC5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IFtvcHRpb25zLnNlcGFyYXRvcl0gVGhlIHNlcGFyYXRvciBwYXR0ZXJuIHRvIHRydW5jYXRlIHRvLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRydW5jYXRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nKTtcbiAgICAgKiAvLyA9PiAnaGktZGlkZGx5LWhvIHRoZXJlLCBuZWlnaGJvLi4uJ1xuICAgICAqXG4gICAgICogXy50cnVuY2F0ZSgnaGktZGlkZGx5LWhvIHRoZXJlLCBuZWlnaGJvcmlubycsIHtcbiAgICAgKiAgICdsZW5ndGgnOiAyNCxcbiAgICAgKiAgICdzZXBhcmF0b3InOiAnICdcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiAnaGktZGlkZGx5LWhvIHRoZXJlLC4uLidcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nLCB7XG4gICAgICogICAnbGVuZ3RoJzogMjQsXG4gICAgICogICAnc2VwYXJhdG9yJzogLyw/ICsvXG4gICAgICogfSk7XG4gICAgICogLy8gPT4gJ2hpLWRpZGRseS1obyB0aGVyZS4uLidcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nLCB7XG4gICAgICogICAnb21pc3Npb24nOiAnIFsuLi5dJ1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+ICdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWcgWy4uLl0nXG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJ1bmNhdGUoc3RyaW5nLCBvcHRpb25zKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gREVGQVVMVF9UUlVOQ19MRU5HVEgsXG4gICAgICAgICAgb21pc3Npb24gPSBERUZBVUxUX1RSVU5DX09NSVNTSU9OO1xuXG4gICAgICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICAgICAgdmFyIHNlcGFyYXRvciA9ICdzZXBhcmF0b3InIGluIG9wdGlvbnMgPyBvcHRpb25zLnNlcGFyYXRvciA6IHNlcGFyYXRvcjtcbiAgICAgICAgbGVuZ3RoID0gJ2xlbmd0aCcgaW4gb3B0aW9ucyA/IHRvSW50ZWdlcihvcHRpb25zLmxlbmd0aCkgOiBsZW5ndGg7XG4gICAgICAgIG9taXNzaW9uID0gJ29taXNzaW9uJyBpbiBvcHRpb25zID8gYmFzZVRvU3RyaW5nKG9wdGlvbnMub21pc3Npb24pIDogb21pc3Npb247XG4gICAgICB9XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuXG4gICAgICB2YXIgc3RyTGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcbiAgICAgIGlmIChoYXNVbmljb2RlKHN0cmluZykpIHtcbiAgICAgICAgdmFyIHN0clN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KHN0cmluZyk7XG4gICAgICAgIHN0ckxlbmd0aCA9IHN0clN5bWJvbHMubGVuZ3RoO1xuICAgICAgfVxuICAgICAgaWYgKGxlbmd0aCA+PSBzdHJMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIH1cbiAgICAgIHZhciBlbmQgPSBsZW5ndGggLSBzdHJpbmdTaXplKG9taXNzaW9uKTtcbiAgICAgIGlmIChlbmQgPCAxKSB7XG4gICAgICAgIHJldHVybiBvbWlzc2lvbjtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSBzdHJTeW1ib2xzXG4gICAgICAgID8gY2FzdFNsaWNlKHN0clN5bWJvbHMsIDAsIGVuZCkuam9pbignJylcbiAgICAgICAgOiBzdHJpbmcuc2xpY2UoMCwgZW5kKTtcblxuICAgICAgaWYgKHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQgKyBvbWlzc2lvbjtcbiAgICAgIH1cbiAgICAgIGlmIChzdHJTeW1ib2xzKSB7XG4gICAgICAgIGVuZCArPSAocmVzdWx0Lmxlbmd0aCAtIGVuZCk7XG4gICAgICB9XG4gICAgICBpZiAoaXNSZWdFeHAoc2VwYXJhdG9yKSkge1xuICAgICAgICBpZiAoc3RyaW5nLnNsaWNlKGVuZCkuc2VhcmNoKHNlcGFyYXRvcikpIHtcbiAgICAgICAgICB2YXIgbWF0Y2gsXG4gICAgICAgICAgICAgIHN1YnN0cmluZyA9IHJlc3VsdDtcblxuICAgICAgICAgIGlmICghc2VwYXJhdG9yLmdsb2JhbCkge1xuICAgICAgICAgICAgc2VwYXJhdG9yID0gUmVnRXhwKHNlcGFyYXRvci5zb3VyY2UsIHRvU3RyaW5nKHJlRmxhZ3MuZXhlYyhzZXBhcmF0b3IpKSArICdnJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNlcGFyYXRvci5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgIHdoaWxlICgobWF0Y2ggPSBzZXBhcmF0b3IuZXhlYyhzdWJzdHJpbmcpKSkge1xuICAgICAgICAgICAgdmFyIG5ld0VuZCA9IG1hdGNoLmluZGV4O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc2xpY2UoMCwgbmV3RW5kID09PSB1bmRlZmluZWQgPyBlbmQgOiBuZXdFbmQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHN0cmluZy5pbmRleE9mKGJhc2VUb1N0cmluZyhzZXBhcmF0b3IpLCBlbmQpICE9IGVuZCkge1xuICAgICAgICB2YXIgaW5kZXggPSByZXN1bHQubGFzdEluZGV4T2Yoc2VwYXJhdG9yKTtcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc2xpY2UoMCwgaW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0ICsgb21pc3Npb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGludmVyc2Ugb2YgYF8uZXNjYXBlYDsgdGhpcyBtZXRob2QgY29udmVydHMgdGhlIEhUTUwgZW50aXRpZXNcbiAgICAgKiBgJmFtcDtgLCBgJmx0O2AsIGAmZ3Q7YCwgYCZxdW90O2AsIGFuZCBgJiMzOTtgIGluIGBzdHJpbmdgIHRvXG4gICAgICogdGhlaXIgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vIG90aGVyIEhUTUwgZW50aXRpZXMgYXJlIHVuZXNjYXBlZC4gVG8gdW5lc2NhcGUgYWRkaXRpb25hbFxuICAgICAqIEhUTUwgZW50aXRpZXMgdXNlIGEgdGhpcmQtcGFydHkgbGlicmFyeSBsaWtlIFtfaGVfXShodHRwczovL210aHMuYmUvaGUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNi4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHVuZXNjYXBlLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuZXNjYXBlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5lc2NhcGUoJ2ZyZWQsIGJhcm5leSwgJmFtcDsgcGViYmxlcycpO1xuICAgICAqIC8vID0+ICdmcmVkLCBiYXJuZXksICYgcGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmVzY2FwZShzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICByZXR1cm4gKHN0cmluZyAmJiByZUhhc0VzY2FwZWRIdG1sLnRlc3Qoc3RyaW5nKSlcbiAgICAgICAgPyBzdHJpbmcucmVwbGFjZShyZUVzY2FwZWRIdG1sLCB1bmVzY2FwZUh0bWxDaGFyKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgc3BhY2Ugc2VwYXJhdGVkIHdvcmRzLCB0byB1cHBlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdXBwZXIgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVwcGVyQ2FzZSgnLS1mb28tYmFyJyk7XG4gICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICpcbiAgICAgKiBfLnVwcGVyQ2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICpcbiAgICAgKiBfLnVwcGVyQ2FzZSgnX19mb29fYmFyX18nKTtcbiAgICAgKiAvLyA9PiAnRk9PIEJBUidcbiAgICAgKi9cbiAgICB2YXIgdXBwZXJDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJyAnIDogJycpICsgd29yZC50b1VwcGVyQ2FzZSgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBgc3RyaW5nYCB0byB1cHBlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51cHBlckZpcnN0KCdmcmVkJyk7XG4gICAgICogLy8gPT4gJ0ZyZWQnXG4gICAgICpcbiAgICAgKiBfLnVwcGVyRmlyc3QoJ0ZSRUQnKTtcbiAgICAgKiAvLyA9PiAnRlJFRCdcbiAgICAgKi9cbiAgICB2YXIgdXBwZXJGaXJzdCA9IGNyZWF0ZUNhc2VGaXJzdCgndG9VcHBlckNhc2UnKTtcblxuICAgIC8qKlxuICAgICAqIFNwbGl0cyBgc3RyaW5nYCBpbnRvIGFuIGFycmF5IG9mIGl0cyB3b3Jkcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfHN0cmluZ30gW3BhdHRlcm5dIFRoZSBwYXR0ZXJuIHRvIG1hdGNoIHdvcmRzLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB3b3JkcyBvZiBgc3RyaW5nYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy53b3JkcygnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiBbJ2ZyZWQnLCAnYmFybmV5JywgJ3BlYmJsZXMnXVxuICAgICAqXG4gICAgICogXy53b3JkcygnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnLCAvW14sIF0rL2cpO1xuICAgICAqIC8vID0+IFsnZnJlZCcsICdiYXJuZXknLCAnJicsICdwZWJibGVzJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3b3JkcyhzdHJpbmcsIHBhdHRlcm4sIGd1YXJkKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcGF0dGVybiA9IGd1YXJkID8gdW5kZWZpbmVkIDogcGF0dGVybjtcblxuICAgICAgaWYgKHBhdHRlcm4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gaGFzVW5pY29kZVdvcmQoc3RyaW5nKSA/IHVuaWNvZGVXb3JkcyhzdHJpbmcpIDogYXNjaWlXb3JkcyhzdHJpbmcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN0cmluZy5tYXRjaChwYXR0ZXJuKSB8fCBbXTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBBdHRlbXB0cyB0byBpbnZva2UgYGZ1bmNgLCByZXR1cm5pbmcgZWl0aGVyIHRoZSByZXN1bHQgb3IgdGhlIGNhdWdodCBlcnJvclxuICAgICAqIG9iamVjdC4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZSBwcm92aWRlZCB0byBgZnVuY2Agd2hlbiBpdCdzIGludm9rZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGF0dGVtcHQuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGBmdW5jYCByZXN1bHQgb3IgZXJyb3Igb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBBdm9pZCB0aHJvd2luZyBlcnJvcnMgZm9yIGludmFsaWQgc2VsZWN0b3JzLlxuICAgICAqIHZhciBlbGVtZW50cyA9IF8uYXR0ZW1wdChmdW5jdGlvbihzZWxlY3Rvcikge1xuICAgICAqICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xuICAgICAqIH0sICc+Xz4nKTtcbiAgICAgKlxuICAgICAqIGlmIChfLmlzRXJyb3IoZWxlbWVudHMpKSB7XG4gICAgICogICBlbGVtZW50cyA9IFtdO1xuICAgICAqIH1cbiAgICAgKi9cbiAgICB2YXIgYXR0ZW1wdCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIGFyZ3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhcHBseShmdW5jLCB1bmRlZmluZWQsIGFyZ3MpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gaXNFcnJvcihlKSA/IGUgOiBuZXcgRXJyb3IoZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBCaW5kcyBtZXRob2RzIG9mIGFuIG9iamVjdCB0byB0aGUgb2JqZWN0IGl0c2VsZiwgb3ZlcndyaXRpbmcgdGhlIGV4aXN0aW5nXG4gICAgICogbWV0aG9kLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IG9mIGJvdW5kIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGJpbmQgYW5kIGFzc2lnbiB0aGUgYm91bmQgbWV0aG9kcyB0by5cbiAgICAgKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBtZXRob2ROYW1lcyBUaGUgb2JqZWN0IG1ldGhvZCBuYW1lcyB0byBiaW5kLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB2aWV3ID0ge1xuICAgICAqICAgJ2xhYmVsJzogJ2RvY3MnLFxuICAgICAqICAgJ2NsaWNrJzogZnVuY3Rpb24oKSB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdjbGlja2VkICcgKyB0aGlzLmxhYmVsKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5iaW5kQWxsKHZpZXcsIFsnY2xpY2snXSk7XG4gICAgICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIHZpZXcuY2xpY2spO1xuICAgICAqIC8vID0+IExvZ3MgJ2NsaWNrZWQgZG9jcycgd2hlbiBjbGlja2VkLlxuICAgICAqL1xuICAgIHZhciBiaW5kQWxsID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBtZXRob2ROYW1lcykge1xuICAgICAgYXJyYXlFYWNoKG1ldGhvZE5hbWVzLCBmdW5jdGlvbihrZXkpIHtcbiAgICAgICAga2V5ID0gdG9LZXkoa2V5KTtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBiaW5kKG9iamVjdFtrZXldLCBvYmplY3QpKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGl0ZXJhdGVzIG92ZXIgYHBhaXJzYCBhbmQgaW52b2tlcyB0aGUgY29ycmVzcG9uZGluZ1xuICAgICAqIGZ1bmN0aW9uIG9mIHRoZSBmaXJzdCBwcmVkaWNhdGUgdG8gcmV0dXJuIHRydXRoeS4gVGhlIHByZWRpY2F0ZS1mdW5jdGlvblxuICAgICAqIHBhaXJzIGFyZSBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIGFuZCBhcmd1bWVudHMgb2YgdGhlIGNyZWF0ZWRcbiAgICAgKiBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtBcnJheX0gcGFpcnMgVGhlIHByZWRpY2F0ZS1mdW5jdGlvbiBwYWlycy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb21wb3NpdGUgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5jb25kKFtcbiAgICAgKiAgIFtfLm1hdGNoZXMoeyAnYSc6IDEgfSksICAgICAgICAgICBfLmNvbnN0YW50KCdtYXRjaGVzIEEnKV0sXG4gICAgICogICBbXy5jb25mb3Jtcyh7ICdiJzogXy5pc051bWJlciB9KSwgXy5jb25zdGFudCgnbWF0Y2hlcyBCJyldLFxuICAgICAqICAgW18uc3R1YlRydWUsICAgICAgICAgICAgICAgICAgICAgIF8uY29uc3RhbnQoJ25vIG1hdGNoJyldXG4gICAgICogXSk7XG4gICAgICpcbiAgICAgKiBmdW5jKHsgJ2EnOiAxLCAnYic6IDIgfSk7XG4gICAgICogLy8gPT4gJ21hdGNoZXMgQSdcbiAgICAgKlxuICAgICAqIGZ1bmMoeyAnYSc6IDAsICdiJzogMSB9KTtcbiAgICAgKiAvLyA9PiAnbWF0Y2hlcyBCJ1xuICAgICAqXG4gICAgICogZnVuYyh7ICdhJzogJzEnLCAnYic6ICcyJyB9KTtcbiAgICAgKiAvLyA9PiAnbm8gbWF0Y2gnXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29uZChwYWlycykge1xuICAgICAgdmFyIGxlbmd0aCA9IHBhaXJzID09IG51bGwgPyAwIDogcGFpcnMubGVuZ3RoLFxuICAgICAgICAgIHRvSXRlcmF0ZWUgPSBnZXRJdGVyYXRlZSgpO1xuXG4gICAgICBwYWlycyA9ICFsZW5ndGggPyBbXSA6IGFycmF5TWFwKHBhaXJzLCBmdW5jdGlvbihwYWlyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcGFpclsxXSAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbdG9JdGVyYXRlZShwYWlyWzBdKSwgcGFpclsxXV07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gLTE7XG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgdmFyIHBhaXIgPSBwYWlyc1tpbmRleF07XG4gICAgICAgICAgaWYgKGFwcGx5KHBhaXJbMF0sIHRoaXMsIGFyZ3MpKSB7XG4gICAgICAgICAgICByZXR1cm4gYXBwbHkocGFpclsxXSwgdGhpcywgYXJncyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSBwcmVkaWNhdGUgcHJvcGVydGllcyBvZiBgc291cmNlYCB3aXRoXG4gICAgICogdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgdmFsdWVzIG9mIGEgZ2l2ZW4gb2JqZWN0LCByZXR1cm5pbmcgYHRydWVgIGlmXG4gICAgICogYWxsIHByZWRpY2F0ZXMgcmV0dXJuIHRydXRoeSwgZWxzZSBgZmFsc2VgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoZSBjcmVhdGVkIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gYF8uY29uZm9ybXNUb2Agd2l0aFxuICAgICAqIGBzb3VyY2VgIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgcHJlZGljYXRlcyB0byBjb25mb3JtIHRvLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW1xuICAgICAqICAgeyAnYSc6IDIsICdiJzogMSB9LFxuICAgICAqICAgeyAnYSc6IDEsICdiJzogMiB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmlsdGVyKG9iamVjdHMsIF8uY29uZm9ybXMoeyAnYic6IGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gPiAxOyB9IH0pKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEsICdiJzogMiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbmZvcm1zKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIGJhc2VDb25mb3JtcyhiYXNlQ2xvbmUoc291cmNlLCBDTE9ORV9ERUVQX0ZMQUcpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi40LjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJldHVybiBmcm9tIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29uc3RhbnQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLmNvbnN0YW50KHsgJ2EnOiAxIH0pKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdHMpO1xuICAgICAqIC8vID0+IFt7ICdhJzogMSB9LCB7ICdhJzogMSB9XVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0c1swXSA9PT0gb2JqZWN0c1sxXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbnN0YW50KHZhbHVlKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGB2YWx1ZWAgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBkZWZhdWx0IHZhbHVlIHNob3VsZCBiZSByZXR1cm5lZCBpblxuICAgICAqIGl0cyBwbGFjZS4gVGhlIGBkZWZhdWx0VmFsdWVgIGlzIHJldHVybmVkIGlmIGB2YWx1ZWAgaXMgYE5hTmAsIGBudWxsYCxcbiAgICAgKiBvciBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjE0LjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEBwYXJhbSB7Kn0gZGVmYXVsdFZhbHVlIFRoZSBkZWZhdWx0IHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWZhdWx0VG8oMSwgMTApO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIF8uZGVmYXVsdFRvKHVuZGVmaW5lZCwgMTApO1xuICAgICAqIC8vID0+IDEwXG4gICAgICovXG4gICAgZnVuY3Rpb24gZGVmYXVsdFRvKHZhbHVlLCBkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHJldHVybiAodmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSAhPT0gdmFsdWUpID8gZGVmYXVsdFZhbHVlIDogdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIGludm9raW5nIHRoZSBnaXZlbiBmdW5jdGlvbnNcbiAgICAgKiB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGUgY3JlYXRlZCBmdW5jdGlvbiwgd2hlcmUgZWFjaCBzdWNjZXNzaXZlXG4gICAgICogaW52b2NhdGlvbiBpcyBzdXBwbGllZCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBwcmV2aW91cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtmdW5jc10gVGhlIGZ1bmN0aW9ucyB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29tcG9zaXRlIGZ1bmN0aW9uLlxuICAgICAqIEBzZWUgXy5mbG93UmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgYWRkU3F1YXJlID0gXy5mbG93KFtfLmFkZCwgc3F1YXJlXSk7XG4gICAgICogYWRkU3F1YXJlKDEsIDIpO1xuICAgICAqIC8vID0+IDlcbiAgICAgKi9cbiAgICB2YXIgZmxvdyA9IGNyZWF0ZUZsb3coKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmxvd2AgZXhjZXB0IHRoYXQgaXQgY3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXRcbiAgICAgKiBpbnZva2VzIHRoZSBnaXZlbiBmdW5jdGlvbnMgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW2Z1bmNzXSBUaGUgZnVuY3Rpb25zIHRvIGludm9rZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb21wb3NpdGUgZnVuY3Rpb24uXG4gICAgICogQHNlZSBfLmZsb3dcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgYWRkU3F1YXJlID0gXy5mbG93UmlnaHQoW3NxdWFyZSwgXy5hZGRdKTtcbiAgICAgKiBhZGRTcXVhcmUoMSwgMik7XG4gICAgICogLy8gPT4gOVxuICAgICAqL1xuICAgIHZhciBmbG93UmlnaHQgPSBjcmVhdGVGbG93KHRydWUpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZmlyc3QgYXJndW1lbnQgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgQW55IHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIGB2YWx1ZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coXy5pZGVudGl0eShvYmplY3QpID09PSBvYmplY3QpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpZGVudGl0eSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGFyZ3VtZW50cyBvZiB0aGUgY3JlYXRlZFxuICAgICAqIGZ1bmN0aW9uLiBJZiBgZnVuY2AgaXMgYSBwcm9wZXJ0eSBuYW1lLCB0aGUgY3JlYXRlZCBmdW5jdGlvbiByZXR1cm5zIHRoZVxuICAgICAqIHByb3BlcnR5IHZhbHVlIGZvciBhIGdpdmVuIGVsZW1lbnQuIElmIGBmdW5jYCBpcyBhbiBhcnJheSBvciBvYmplY3QsIHRoZVxuICAgICAqIGNyZWF0ZWQgZnVuY3Rpb24gcmV0dXJucyBgdHJ1ZWAgZm9yIGVsZW1lbnRzIHRoYXQgY29udGFpbiB0aGUgZXF1aXZhbGVudFxuICAgICAqIHNvdXJjZSBwcm9wZXJ0aWVzLCBvdGhlcndpc2UgaXQgcmV0dXJucyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IFtmdW5jPV8uaWRlbnRpdHldIFRoZSB2YWx1ZSB0byBjb252ZXJ0IHRvIGEgY2FsbGJhY2suXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBjYWxsYmFjay5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgXy5pdGVyYXRlZSh7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiB0cnVlIH0pKTtcbiAgICAgKiAvLyA9PiBbeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH1dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIF8uaXRlcmF0ZWUoWyd1c2VyJywgJ2ZyZWQnXSkpO1xuICAgICAqIC8vID0+IFt7ICd1c2VyJzogJ2ZyZWQnLCAnYWdlJzogNDAgfV1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWFwKHVzZXJzLCBfLml0ZXJhdGVlKCd1c2VyJykpO1xuICAgICAqIC8vID0+IFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gQ3JlYXRlIGN1c3RvbSBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqIF8uaXRlcmF0ZWUgPSBfLndyYXAoXy5pdGVyYXRlZSwgZnVuY3Rpb24oaXRlcmF0ZWUsIGZ1bmMpIHtcbiAgICAgKiAgIHJldHVybiAhXy5pc1JlZ0V4cChmdW5jKSA/IGl0ZXJhdGVlKGZ1bmMpIDogZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICogICAgIHJldHVybiBmdW5jLnRlc3Qoc3RyaW5nKTtcbiAgICAgKiAgIH07XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcihbJ2FiYycsICdkZWYnXSwgL2VmLyk7XG4gICAgICogLy8gPT4gWydkZWYnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGl0ZXJhdGVlKGZ1bmMpIHtcbiAgICAgIHJldHVybiBiYXNlSXRlcmF0ZWUodHlwZW9mIGZ1bmMgPT0gJ2Z1bmN0aW9uJyA/IGZ1bmMgOiBiYXNlQ2xvbmUoZnVuYywgQ0xPTkVfREVFUF9GTEFHKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIGEgZ2l2ZW5cbiAgICAgKiBvYmplY3QgYW5kIGBzb3VyY2VgLCByZXR1cm5pbmcgYHRydWVgIGlmIHRoZSBnaXZlbiBvYmplY3QgaGFzIGVxdWl2YWxlbnRcbiAgICAgKiBwcm9wZXJ0eSB2YWx1ZXMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGUgY3JlYXRlZCBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIGBfLmlzTWF0Y2hgIHdpdGggYHNvdXJjZWBcbiAgICAgKiBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIFBhcnRpYWwgY29tcGFyaXNvbnMgd2lsbCBtYXRjaCBlbXB0eSBhcnJheSBhbmQgZW1wdHkgb2JqZWN0IGBzb3VyY2VgXG4gICAgICogdmFsdWVzIGFnYWluc3QgYW55IGFycmF5IG9yIG9iamVjdCB2YWx1ZSwgcmVzcGVjdGl2ZWx5LiBTZWUgYF8uaXNFcXVhbGBcbiAgICAgKiBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCB2YWx1ZSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBNdWx0aXBsZSB2YWx1ZXMgY2FuIGJlIGNoZWNrZWQgYnkgY29tYmluaW5nIHNldmVyYWwgbWF0Y2hlcnNcbiAgICAgKiB1c2luZyBgXy5vdmVyU29tZWBcbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9LFxuICAgICAqICAgeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maWx0ZXIob2JqZWN0cywgXy5tYXRjaGVzKHsgJ2EnOiA0LCAnYyc6IDYgfSkpO1xuICAgICAqIC8vID0+IFt7ICdhJzogNCwgJ2InOiA1LCAnYyc6IDYgfV1cbiAgICAgKlxuICAgICAqIC8vIENoZWNraW5nIGZvciBzZXZlcmFsIHBvc3NpYmxlIHZhbHVlc1xuICAgICAqIF8uZmlsdGVyKG9iamVjdHMsIF8ub3ZlclNvbWUoW18ubWF0Y2hlcyh7ICdhJzogMSB9KSwgXy5tYXRjaGVzKHsgJ2EnOiA0IH0pXSkpO1xuICAgICAqIC8vID0+IFt7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfSwgeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF0Y2hlcyhzb3VyY2UpIHtcbiAgICAgIHJldHVybiBiYXNlTWF0Y2hlcyhiYXNlQ2xvbmUoc291cmNlLCBDTE9ORV9ERUVQX0ZMQUcpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhIHBhcnRpYWwgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gdGhlXG4gICAgICogdmFsdWUgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0IHRvIGBzcmNWYWx1ZWAsIHJldHVybmluZyBgdHJ1ZWAgaWYgdGhlXG4gICAgICogb2JqZWN0IHZhbHVlIGlzIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBQYXJ0aWFsIGNvbXBhcmlzb25zIHdpbGwgbWF0Y2ggZW1wdHkgYXJyYXkgYW5kIGVtcHR5IG9iamVjdFxuICAgICAqIGBzcmNWYWx1ZWAgdmFsdWVzIGFnYWluc3QgYW55IGFycmF5IG9yIG9iamVjdCB2YWx1ZSwgcmVzcGVjdGl2ZWx5LiBTZWVcbiAgICAgKiBgXy5pc0VxdWFsYCBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCB2YWx1ZSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBNdWx0aXBsZSB2YWx1ZXMgY2FuIGJlIGNoZWNrZWQgYnkgY29tYmluaW5nIHNldmVyYWwgbWF0Y2hlcnNcbiAgICAgKiB1c2luZyBgXy5vdmVyU29tZWBcbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9LFxuICAgICAqICAgeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maW5kKG9iamVjdHMsIF8ubWF0Y2hlc1Byb3BlcnR5KCdhJywgNCkpO1xuICAgICAqIC8vID0+IHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XG4gICAgICpcbiAgICAgKiAvLyBDaGVja2luZyBmb3Igc2V2ZXJhbCBwb3NzaWJsZSB2YWx1ZXNcbiAgICAgKiBfLmZpbHRlcihvYmplY3RzLCBfLm92ZXJTb21lKFtfLm1hdGNoZXNQcm9wZXJ0eSgnYScsIDEpLCBfLm1hdGNoZXNQcm9wZXJ0eSgnYScsIDQpXSkpO1xuICAgICAqIC8vID0+IFt7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfSwgeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF0Y2hlc1Byb3BlcnR5KHBhdGgsIHNyY1ZhbHVlKSB7XG4gICAgICByZXR1cm4gYmFzZU1hdGNoZXNQcm9wZXJ0eShwYXRoLCBiYXNlQ2xvbmUoc3JjVmFsdWUsIENMT05FX0RFRVBfRkxBRykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIG1ldGhvZCBhdCBgcGF0aGAgb2YgYSBnaXZlbiBvYmplY3QuXG4gICAgICogQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZSBwcm92aWRlZCB0byB0aGUgaW52b2tlZCBtZXRob2QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy43LjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBtZXRob2QgdG8gaW52b2tlLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIHRoZSBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBpbnZva2VyIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiB7ICdiJzogXy5jb25zdGFudCgyKSB9IH0sXG4gICAgICogICB7ICdhJzogeyAnYic6IF8uY29uc3RhbnQoMSkgfSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ubWFwKG9iamVjdHMsIF8ubWV0aG9kKCdhLmInKSk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICpcbiAgICAgKiBfLm1hcChvYmplY3RzLCBfLm1ldGhvZChbJ2EnLCAnYiddKSk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICovXG4gICAgdmFyIG1ldGhvZCA9IGJhc2VSZXN0KGZ1bmN0aW9uKHBhdGgsIGFyZ3MpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VJbnZva2Uob2JqZWN0LCBwYXRoLCBhcmdzKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8ubWV0aG9kYDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlc1xuICAgICAqIHRoZSBtZXRob2QgYXQgYSBnaXZlbiBwYXRoIG9mIGBvYmplY3RgLiBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgYXJlXG4gICAgICogcHJvdmlkZWQgdG8gdGhlIGludm9rZWQgbWV0aG9kLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgdGhlIG1ldGhvZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGludm9rZXIgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IF8udGltZXMoMywgXy5jb25zdGFudCksXG4gICAgICogICAgIG9iamVjdCA9IHsgJ2EnOiBhcnJheSwgJ2InOiBhcnJheSwgJ2MnOiBhcnJheSB9O1xuICAgICAqXG4gICAgICogXy5tYXAoWydhWzJdJywgJ2NbMF0nXSwgXy5tZXRob2RPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKlxuICAgICAqIF8ubWFwKFtbJ2EnLCAnMiddLCBbJ2MnLCAnMCddXSwgXy5tZXRob2RPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKi9cbiAgICB2YXIgbWV0aG9kT2YgPSBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIGFyZ3MpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihwYXRoKSB7XG4gICAgICAgIHJldHVybiBiYXNlSW52b2tlKG9iamVjdCwgcGF0aCwgYXJncyk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQWRkcyBhbGwgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIGZ1bmN0aW9uIHByb3BlcnRpZXMgb2YgYSBzb3VyY2VcbiAgICAgKiBvYmplY3QgdG8gdGhlIGRlc3RpbmF0aW9uIG9iamVjdC4gSWYgYG9iamVjdGAgaXMgYSBmdW5jdGlvbiwgdGhlbiBtZXRob2RzXG4gICAgICogYXJlIGFkZGVkIHRvIGl0cyBwcm90b3R5cGUgYXMgd2VsbC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVc2UgYF8ucnVuSW5Db250ZXh0YCB0byBjcmVhdGUgYSBwcmlzdGluZSBgbG9kYXNoYCBmdW5jdGlvbiB0b1xuICAgICAqIGF2b2lkIGNvbmZsaWN0cyBjYXVzZWQgYnkgbW9kaWZ5aW5nIHRoZSBvcmlnaW5hbC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbnxPYmplY3R9IFtvYmplY3Q9bG9kYXNoXSBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBmdW5jdGlvbnMgdG8gYWRkLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuY2hhaW49dHJ1ZV0gU3BlY2lmeSB3aGV0aGVyIG1peGlucyBhcmUgY2hhaW5hYmxlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbnxPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHZvd2VscyhzdHJpbmcpIHtcbiAgICAgKiAgIHJldHVybiBfLmZpbHRlcihzdHJpbmcsIGZ1bmN0aW9uKHYpIHtcbiAgICAgKiAgICAgcmV0dXJuIC9bYWVpb3VdL2kudGVzdCh2KTtcbiAgICAgKiAgIH0pO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8ubWl4aW4oeyAndm93ZWxzJzogdm93ZWxzIH0pO1xuICAgICAqIF8udm93ZWxzKCdmcmVkJyk7XG4gICAgICogLy8gPT4gWydlJ11cbiAgICAgKlxuICAgICAqIF8oJ2ZyZWQnKS52b3dlbHMoKS52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsnZSddXG4gICAgICpcbiAgICAgKiBfLm1peGluKHsgJ3Zvd2Vscyc6IHZvd2VscyB9LCB7ICdjaGFpbic6IGZhbHNlIH0pO1xuICAgICAqIF8oJ2ZyZWQnKS52b3dlbHMoKTtcbiAgICAgKiAvLyA9PiBbJ2UnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1peGluKG9iamVjdCwgc291cmNlLCBvcHRpb25zKSB7XG4gICAgICB2YXIgcHJvcHMgPSBrZXlzKHNvdXJjZSksXG4gICAgICAgICAgbWV0aG9kTmFtZXMgPSBiYXNlRnVuY3Rpb25zKHNvdXJjZSwgcHJvcHMpO1xuXG4gICAgICBpZiAob3B0aW9ucyA9PSBudWxsICYmXG4gICAgICAgICAgIShpc09iamVjdChzb3VyY2UpICYmIChtZXRob2ROYW1lcy5sZW5ndGggfHwgIXByb3BzLmxlbmd0aCkpKSB7XG4gICAgICAgIG9wdGlvbnMgPSBzb3VyY2U7XG4gICAgICAgIHNvdXJjZSA9IG9iamVjdDtcbiAgICAgICAgb2JqZWN0ID0gdGhpcztcbiAgICAgICAgbWV0aG9kTmFtZXMgPSBiYXNlRnVuY3Rpb25zKHNvdXJjZSwga2V5cyhzb3VyY2UpKTtcbiAgICAgIH1cbiAgICAgIHZhciBjaGFpbiA9ICEoaXNPYmplY3Qob3B0aW9ucykgJiYgJ2NoYWluJyBpbiBvcHRpb25zKSB8fCAhIW9wdGlvbnMuY2hhaW4sXG4gICAgICAgICAgaXNGdW5jID0gaXNGdW5jdGlvbihvYmplY3QpO1xuXG4gICAgICBhcnJheUVhY2gobWV0aG9kTmFtZXMsIGZ1bmN0aW9uKG1ldGhvZE5hbWUpIHtcbiAgICAgICAgdmFyIGZ1bmMgPSBzb3VyY2VbbWV0aG9kTmFtZV07XG4gICAgICAgIG9iamVjdFttZXRob2ROYW1lXSA9IGZ1bmM7XG4gICAgICAgIGlmIChpc0Z1bmMpIHtcbiAgICAgICAgICBvYmplY3QucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgY2hhaW5BbGwgPSB0aGlzLl9fY2hhaW5fXztcbiAgICAgICAgICAgIGlmIChjaGFpbiB8fCBjaGFpbkFsbCkge1xuICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gb2JqZWN0KHRoaXMuX193cmFwcGVkX18pLFxuICAgICAgICAgICAgICAgICAgYWN0aW9ucyA9IHJlc3VsdC5fX2FjdGlvbnNfXyA9IGNvcHlBcnJheSh0aGlzLl9fYWN0aW9uc19fKTtcblxuICAgICAgICAgICAgICBhY3Rpb25zLnB1c2goeyAnZnVuYyc6IGZ1bmMsICdhcmdzJzogYXJndW1lbnRzLCAndGhpc0FyZyc6IG9iamVjdCB9KTtcbiAgICAgICAgICAgICAgcmVzdWx0Ll9fY2hhaW5fXyA9IGNoYWluQWxsO1xuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkob2JqZWN0LCBhcnJheVB1c2goW3RoaXMudmFsdWUoKV0sIGFyZ3VtZW50cykpO1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldmVydHMgdGhlIGBfYCB2YXJpYWJsZSB0byBpdHMgcHJldmlvdXMgdmFsdWUgYW5kIHJldHVybnMgYSByZWZlcmVuY2UgdG9cbiAgICAgKiB0aGUgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBsb2Rhc2ggPSBfLm5vQ29uZmxpY3QoKTtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBub0NvbmZsaWN0KCkge1xuICAgICAgaWYgKHJvb3QuXyA9PT0gdGhpcykge1xuICAgICAgICByb290Ll8gPSBvbGREYXNoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGltZXMoMiwgXy5ub29wKTtcbiAgICAgKiAvLyA9PiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdXG4gICAgICovXG4gICAgZnVuY3Rpb24gbm9vcCgpIHtcbiAgICAgIC8vIE5vIG9wZXJhdGlvbiBwZXJmb3JtZWQuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgZ2V0cyB0aGUgYXJndW1lbnQgYXQgaW5kZXggYG5gLiBJZiBgbmAgaXMgbmVnYXRpdmUsXG4gICAgICogdGhlIG50aCBhcmd1bWVudCBmcm9tIHRoZSBlbmQgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0wXSBUaGUgaW5kZXggb2YgdGhlIGFyZ3VtZW50IHRvIHJldHVybi5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBwYXNzLXRocnUgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5udGhBcmcoMSk7XG4gICAgICogZnVuYygnYScsICdiJywgJ2MnLCAnZCcpO1xuICAgICAqIC8vID0+ICdiJ1xuICAgICAqXG4gICAgICogdmFyIGZ1bmMgPSBfLm50aEFyZygtMik7XG4gICAgICogZnVuYygnYScsICdiJywgJ2MnLCAnZCcpO1xuICAgICAqIC8vID0+ICdjJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIG50aEFyZyhuKSB7XG4gICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VOdGgoYXJncywgbik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBpdGVyYXRlZXNgIHdpdGggdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlc1xuICAgICAqIGFuZCByZXR1cm5zIHRoZWlyIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbaXRlcmF0ZWVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIGl0ZXJhdGVlcyB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyKFtNYXRoLm1heCwgTWF0aC5taW5dKTtcbiAgICAgKlxuICAgICAqIGZ1bmMoMSwgMiwgMywgNCk7XG4gICAgICogLy8gPT4gWzQsIDFdXG4gICAgICovXG4gICAgdmFyIG92ZXIgPSBjcmVhdGVPdmVyKGFycmF5TWFwKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiAqKmFsbCoqIG9mIHRoZSBgcHJlZGljYXRlc2AgcmV0dXJuXG4gICAgICogdHJ1dGh5IHdoZW4gaW52b2tlZCB3aXRoIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBGb2xsb3dpbmcgc2hvcnRoYW5kcyBhcmUgcG9zc2libGUgZm9yIHByb3ZpZGluZyBwcmVkaWNhdGVzLlxuICAgICAqIFBhc3MgYW4gYE9iamVjdGAgYW5kIGl0IHdpbGwgYmUgdXNlZCBhcyBhbiBwYXJhbWV0ZXIgZm9yIGBfLm1hdGNoZXNgIHRvIGNyZWF0ZSB0aGUgcHJlZGljYXRlLlxuICAgICAqIFBhc3MgYW4gYEFycmF5YCBvZiBwYXJhbWV0ZXJzIGZvciBgXy5tYXRjaGVzUHJvcGVydHlgIGFuZCB0aGUgcHJlZGljYXRlIHdpbGwgYmUgY3JlYXRlZCB1c2luZyB0aGVtLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW3ByZWRpY2F0ZXM9W18uaWRlbnRpdHldXVxuICAgICAqICBUaGUgcHJlZGljYXRlcyB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGZ1bmMgPSBfLm92ZXJFdmVyeShbQm9vbGVhbiwgaXNGaW5pdGVdKTtcbiAgICAgKlxuICAgICAqIGZ1bmMoJzEnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBmdW5jKG51bGwpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBmdW5jKE5hTik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgb3ZlckV2ZXJ5ID0gY3JlYXRlT3ZlcihhcnJheUV2ZXJ5KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiAqKmFueSoqIG9mIHRoZSBgcHJlZGljYXRlc2AgcmV0dXJuXG4gICAgICogdHJ1dGh5IHdoZW4gaW52b2tlZCB3aXRoIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBGb2xsb3dpbmcgc2hvcnRoYW5kcyBhcmUgcG9zc2libGUgZm9yIHByb3ZpZGluZyBwcmVkaWNhdGVzLlxuICAgICAqIFBhc3MgYW4gYE9iamVjdGAgYW5kIGl0IHdpbGwgYmUgdXNlZCBhcyBhbiBwYXJhbWV0ZXIgZm9yIGBfLm1hdGNoZXNgIHRvIGNyZWF0ZSB0aGUgcHJlZGljYXRlLlxuICAgICAqIFBhc3MgYW4gYEFycmF5YCBvZiBwYXJhbWV0ZXJzIGZvciBgXy5tYXRjaGVzUHJvcGVydHlgIGFuZCB0aGUgcHJlZGljYXRlIHdpbGwgYmUgY3JlYXRlZCB1c2luZyB0aGVtLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW3ByZWRpY2F0ZXM9W18uaWRlbnRpdHldXVxuICAgICAqICBUaGUgcHJlZGljYXRlcyB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGZ1bmMgPSBfLm92ZXJTb21lKFtCb29sZWFuLCBpc0Zpbml0ZV0pO1xuICAgICAqXG4gICAgICogZnVuYygnMScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGZ1bmMobnVsbCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogZnVuYyhOYU4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiB2YXIgbWF0Y2hlc0Z1bmMgPSBfLm92ZXJTb21lKFt7ICdhJzogMSB9LCB7ICdhJzogMiB9XSlcbiAgICAgKiB2YXIgbWF0Y2hlc1Byb3BlcnR5RnVuYyA9IF8ub3ZlclNvbWUoW1snYScsIDFdLCBbJ2EnLCAyXV0pXG4gICAgICovXG4gICAgdmFyIG92ZXJTb21lID0gY3JlYXRlT3ZlcihhcnJheVNvbWUpO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiB7ICdiJzogMiB9IH0sXG4gICAgICogICB7ICdhJzogeyAnYic6IDEgfSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ubWFwKG9iamVjdHMsIF8ucHJvcGVydHkoJ2EuYicpKTtcbiAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgKlxuICAgICAqIF8ubWFwKF8uc29ydEJ5KG9iamVjdHMsIF8ucHJvcGVydHkoWydhJywgJ2InXSkpLCAnYS5iJyk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gcHJvcGVydHkocGF0aCkge1xuICAgICAgcmV0dXJuIGlzS2V5KHBhdGgpID8gYmFzZVByb3BlcnR5KHRvS2V5KHBhdGgpKSA6IGJhc2VQcm9wZXJ0eURlZXAocGF0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLnByb3BlcnR5YDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJuc1xuICAgICAqIHRoZSB2YWx1ZSBhdCBhIGdpdmVuIHBhdGggb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzAsIDEsIDJdLFxuICAgICAqICAgICBvYmplY3QgPSB7ICdhJzogYXJyYXksICdiJzogYXJyYXksICdjJzogYXJyYXkgfTtcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnYVsyXScsICdjWzBdJ10sIF8ucHJvcGVydHlPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKlxuICAgICAqIF8ubWFwKFtbJ2EnLCAnMiddLCBbJ2MnLCAnMCddXSwgXy5wcm9wZXJ0eU9mKG9iamVjdCkpO1xuICAgICAqIC8vID0+IFsyLCAwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHByb3BlcnR5T2Yob2JqZWN0KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgbnVtYmVycyAocG9zaXRpdmUgYW5kL29yIG5lZ2F0aXZlKSBwcm9ncmVzc2luZyBmcm9tXG4gICAgICogYHN0YXJ0YCB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGBlbmRgLiBBIHN0ZXAgb2YgYC0xYCBpcyB1c2VkIGlmIGEgbmVnYXRpdmVcbiAgICAgKiBgc3RhcnRgIGlzIHNwZWNpZmllZCB3aXRob3V0IGFuIGBlbmRgIG9yIGBzdGVwYC4gSWYgYGVuZGAgaXMgbm90IHNwZWNpZmllZCxcbiAgICAgKiBpdCdzIHNldCB0byBgc3RhcnRgIHdpdGggYHN0YXJ0YCB0aGVuIHNldCB0byBgMGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSmF2YVNjcmlwdCBmb2xsb3dzIHRoZSBJRUVFLTc1NCBzdGFuZGFyZCBmb3IgcmVzb2x2aW5nXG4gICAgICogZmxvYXRpbmctcG9pbnQgdmFsdWVzIHdoaWNoIGNhbiBwcm9kdWNlIHVuZXhwZWN0ZWQgcmVzdWx0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGVwPTFdIFRoZSB2YWx1ZSB0byBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IGJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZ2Ugb2YgbnVtYmVycy5cbiAgICAgKiBAc2VlIF8uaW5SYW5nZSwgXy5yYW5nZVJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoNCk7XG4gICAgICogLy8gPT4gWzAsIDEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKC00KTtcbiAgICAgKiAvLyA9PiBbMCwgLTEsIC0yLCAtM11cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMSwgNSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDMsIDRdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDAsIDIwLCA1KTtcbiAgICAgKiAvLyA9PiBbMCwgNSwgMTAsIDE1XVxuICAgICAqXG4gICAgICogXy5yYW5nZSgwLCAtNCwgLTEpO1xuICAgICAqIC8vID0+IFswLCAtMSwgLTIsIC0zXVxuICAgICAqXG4gICAgICogXy5yYW5nZSgxLCA0LCAwKTtcbiAgICAgKiAvLyA9PiBbMSwgMSwgMV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMCk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICB2YXIgcmFuZ2UgPSBjcmVhdGVSYW5nZSgpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5yYW5nZWAgZXhjZXB0IHRoYXQgaXQgcG9wdWxhdGVzIHZhbHVlcyBpblxuICAgICAqIGRlc2NlbmRpbmcgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RlcD0xXSBUaGUgdmFsdWUgdG8gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmdlIG9mIG51bWJlcnMuXG4gICAgICogQHNlZSBfLmluUmFuZ2UsIF8ucmFuZ2VcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yYW5nZVJpZ2h0KDQpO1xuICAgICAqIC8vID0+IFszLCAyLCAxLCAwXVxuICAgICAqXG4gICAgICogXy5yYW5nZVJpZ2h0KC00KTtcbiAgICAgKiAvLyA9PiBbLTMsIC0yLCAtMSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgxLCA1KTtcbiAgICAgKiAvLyA9PiBbNCwgMywgMiwgMV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgwLCAyMCwgNSk7XG4gICAgICogLy8gPT4gWzE1LCAxMCwgNSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgwLCAtNCwgLTEpO1xuICAgICAqIC8vID0+IFstMywgLTIsIC0xLCAwXVxuICAgICAqXG4gICAgICogXy5yYW5nZVJpZ2h0KDEsIDQsIDApO1xuICAgICAqIC8vID0+IFsxLCAxLCAxXVxuICAgICAqXG4gICAgICogXy5yYW5nZVJpZ2h0KDApO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgdmFyIHJhbmdlUmlnaHQgPSBjcmVhdGVSYW5nZSh0cnVlKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgZW1wdHkgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xMy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBlbXB0eSBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5cyA9IF8udGltZXMoMiwgXy5zdHViQXJyYXkpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXlzKTtcbiAgICAgKiAvLyA9PiBbW10sIFtdXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXlzWzBdID09PSBhcnJheXNbMV0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1YkFycmF5KCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGltZXMoMiwgXy5zdHViRmFsc2UpO1xuICAgICAqIC8vID0+IFtmYWxzZSwgZmFsc2VdXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1YkZhbHNlKCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgZW1wdHkgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGVtcHR5IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBfLnRpbWVzKDIsIF8uc3R1Yk9iamVjdCk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAgICAgKiAvLyA9PiBbe30sIHt9XVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0c1swXSA9PT0gb2JqZWN0c1sxXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdHViT2JqZWN0KCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZW1wdHkgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRpbWVzKDIsIF8uc3R1YlN0cmluZyk7XG4gICAgICogLy8gPT4gWycnLCAnJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdHViU3RyaW5nKCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYHRydWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRpbWVzKDIsIF8uc3R1YlRydWUpO1xuICAgICAqIC8vID0+IFt0cnVlLCB0cnVlXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0dWJUcnVlKCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW52b2tlcyB0aGUgaXRlcmF0ZWUgYG5gIHRpbWVzLCByZXR1cm5pbmcgYW4gYXJyYXkgb2YgdGhlIHJlc3VsdHMgb2ZcbiAgICAgKiBlYWNoIGludm9jYXRpb24uIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OyAoaW5kZXgpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIGludm9rZSBgaXRlcmF0ZWVgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50aW1lcygzLCBTdHJpbmcpO1xuICAgICAqIC8vID0+IFsnMCcsICcxJywgJzInXVxuICAgICAqXG4gICAgICogIF8udGltZXMoNCwgXy5jb25zdGFudCgwKSk7XG4gICAgICogLy8gPT4gWzAsIDAsIDAsIDBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgICAgIG4gPSB0b0ludGVnZXIobik7XG4gICAgICBpZiAobiA8IDEgfHwgbiA+IE1BWF9TQUZFX0lOVEVHRVIpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gTUFYX0FSUkFZX0xFTkdUSCxcbiAgICAgICAgICBsZW5ndGggPSBuYXRpdmVNaW4obiwgTUFYX0FSUkFZX0xFTkdUSCk7XG5cbiAgICAgIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUpO1xuICAgICAgbiAtPSBNQVhfQVJSQVlfTEVOR1RIO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gYmFzZVRpbWVzKGxlbmd0aCwgaXRlcmF0ZWUpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgICAgIGl0ZXJhdGVlKGluZGV4KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b1BhdGgoJ2EuYi5jJyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddXG4gICAgICpcbiAgICAgKiBfLnRvUGF0aCgnYVswXS5iLmMnKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnMCcsICdiJywgJ2MnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvUGF0aCh2YWx1ZSkge1xuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgdG9LZXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzU3ltYm9sKHZhbHVlKSA/IFt2YWx1ZV0gOiBjb3B5QXJyYXkoc3RyaW5nVG9QYXRoKHRvU3RyaW5nKHZhbHVlKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBhIHVuaXF1ZSBJRC4gSWYgYHByZWZpeGAgaXMgZ2l2ZW4sIHRoZSBJRCBpcyBhcHBlbmRlZCB0byBpdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtwcmVmaXg9JyddIFRoZSB2YWx1ZSB0byBwcmVmaXggdGhlIElEIHdpdGguXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdW5pcXVlIElELlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaXF1ZUlkKCdjb250YWN0XycpO1xuICAgICAqIC8vID0+ICdjb250YWN0XzEwNCdcbiAgICAgKlxuICAgICAqIF8udW5pcXVlSWQoKTtcbiAgICAgKiAvLyA9PiAnMTA1J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuaXF1ZUlkKHByZWZpeCkge1xuICAgICAgdmFyIGlkID0gKytpZENvdW50ZXI7XG4gICAgICByZXR1cm4gdG9TdHJpbmcocHJlZml4KSArIGlkO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIEFkZHMgdHdvIG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy40LjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBhdWdlbmQgVGhlIGZpcnN0IG51bWJlciBpbiBhbiBhZGRpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYWRkZW5kIFRoZSBzZWNvbmQgbnVtYmVyIGluIGFuIGFkZGl0aW9uLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRvdGFsLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmFkZCg2LCA0KTtcbiAgICAgKiAvLyA9PiAxMFxuICAgICAqL1xuICAgIHZhciBhZGQgPSBjcmVhdGVNYXRoT3BlcmF0aW9uKGZ1bmN0aW9uKGF1Z2VuZCwgYWRkZW5kKSB7XG4gICAgICByZXR1cm4gYXVnZW5kICsgYWRkZW5kO1xuICAgIH0sIDApO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYG51bWJlcmAgcm91bmRlZCB1cCB0byBgcHJlY2lzaW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byByb3VuZCB1cC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3ByZWNpc2lvbj0wXSBUaGUgcHJlY2lzaW9uIHRvIHJvdW5kIHVwIHRvLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJvdW5kZWQgdXAgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNlaWwoNC4wMDYpO1xuICAgICAqIC8vID0+IDVcbiAgICAgKlxuICAgICAqIF8uY2VpbCg2LjAwNCwgMik7XG4gICAgICogLy8gPT4gNi4wMVxuICAgICAqXG4gICAgICogXy5jZWlsKDYwNDAsIC0yKTtcbiAgICAgKiAvLyA9PiA2MTAwXG4gICAgICovXG4gICAgdmFyIGNlaWwgPSBjcmVhdGVSb3VuZCgnY2VpbCcpO1xuXG4gICAgLyoqXG4gICAgICogRGl2aWRlIHR3byBudW1iZXJzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNy4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGl2aWRlbmQgVGhlIGZpcnN0IG51bWJlciBpbiBhIGRpdmlzaW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkaXZpc29yIFRoZSBzZWNvbmQgbnVtYmVyIGluIGEgZGl2aXNpb24uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcXVvdGllbnQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGl2aWRlKDYsIDQpO1xuICAgICAqIC8vID0+IDEuNVxuICAgICAqL1xuICAgIHZhciBkaXZpZGUgPSBjcmVhdGVNYXRoT3BlcmF0aW9uKGZ1bmN0aW9uKGRpdmlkZW5kLCBkaXZpc29yKSB7XG4gICAgICByZXR1cm4gZGl2aWRlbmQgLyBkaXZpc29yO1xuICAgIH0sIDEpO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYG51bWJlcmAgcm91bmRlZCBkb3duIHRvIGBwcmVjaXNpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMTAuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciBUaGUgbnVtYmVyIHRvIHJvdW5kIGRvd24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MF0gVGhlIHByZWNpc2lvbiB0byByb3VuZCBkb3duIHRvLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJvdW5kZWQgZG93biBudW1iZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZmxvb3IoNC4wMDYpO1xuICAgICAqIC8vID0+IDRcbiAgICAgKlxuICAgICAqIF8uZmxvb3IoMC4wNDYsIDIpO1xuICAgICAqIC8vID0+IDAuMDRcbiAgICAgKlxuICAgICAqIF8uZmxvb3IoNDA2MCwgLTIpO1xuICAgICAqIC8vID0+IDQwMDBcbiAgICAgKi9cbiAgICB2YXIgZmxvb3IgPSBjcmVhdGVSb3VuZCgnZmxvb3InKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIHRoZSBtYXhpbXVtIHZhbHVlIG9mIGBhcnJheWAuIElmIGBhcnJheWAgaXMgZW1wdHkgb3IgZmFsc2V5LFxuICAgICAqIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXhpbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1heChbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDhcbiAgICAgKlxuICAgICAqIF8ubWF4KFtdKTtcbiAgICAgKiAvLyA9PiB1bmRlZmluZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXgoYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgaWRlbnRpdHksIGJhc2VHdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5tYXhgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnkgd2hpY2hcbiAgICAgKiB0aGUgdmFsdWUgaXMgcmFua2VkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ24nOiAxIH0sIHsgJ24nOiAyIH1dO1xuICAgICAqXG4gICAgICogXy5tYXhCeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IHsgJ24nOiAyIH1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWF4Qnkob2JqZWN0cywgJ24nKTtcbiAgICAgKiAvLyA9PiB7ICduJzogMiB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF4QnkoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgYmFzZUd0KVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgbWVhbiBvZiB0aGUgdmFsdWVzIGluIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbWVhbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tZWFuKFs0LCAyLCA4LCA2XSk7XG4gICAgICogLy8gPT4gNVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lYW4oYXJyYXkpIHtcbiAgICAgIHJldHVybiBiYXNlTWVhbihhcnJheSwgaWRlbnRpdHkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWVhbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IGluIGBhcnJheWAgdG8gZ2VuZXJhdGUgdGhlIHZhbHVlIHRvIGJlIGF2ZXJhZ2VkLlxuICAgICAqIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNy4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBtZWFuLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogNCB9LCB7ICduJzogMiB9LCB7ICduJzogOCB9LCB7ICduJzogNiB9XTtcbiAgICAgKlxuICAgICAqIF8ubWVhbkJ5KG9iamVjdHMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubjsgfSk7XG4gICAgICogLy8gPT4gNVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5tZWFuQnkob2JqZWN0cywgJ24nKTtcbiAgICAgKiAvLyA9PiA1XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWVhbkJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VNZWFuKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIHRoZSBtaW5pbXVtIHZhbHVlIG9mIGBhcnJheWAuIElmIGBhcnJheWAgaXMgZW1wdHkgb3IgZmFsc2V5LFxuICAgICAqIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1pbihbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKlxuICAgICAqIF8ubWluKFtdKTtcbiAgICAgKiAvLyA9PiB1bmRlZmluZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtaW4oYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgaWRlbnRpdHksIGJhc2VMdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5taW5gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnkgd2hpY2hcbiAgICAgKiB0aGUgdmFsdWUgaXMgcmFua2VkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1pbmltdW0gdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ24nOiAxIH0sIHsgJ24nOiAyIH1dO1xuICAgICAqXG4gICAgICogXy5taW5CeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IHsgJ24nOiAxIH1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWluQnkob2JqZWN0cywgJ24nKTtcbiAgICAgKiAvLyA9PiB7ICduJzogMSB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWluQnkoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgYmFzZUx0KVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNdWx0aXBseSB0d28gbnVtYmVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG11bHRpcGxpZXIgVGhlIGZpcnN0IG51bWJlciBpbiBhIG11bHRpcGxpY2F0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtdWx0aXBsaWNhbmQgVGhlIHNlY29uZCBudW1iZXIgaW4gYSBtdWx0aXBsaWNhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBwcm9kdWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm11bHRpcGx5KDYsIDQpO1xuICAgICAqIC8vID0+IDI0XG4gICAgICovXG4gICAgdmFyIG11bHRpcGx5ID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihtdWx0aXBsaWVyLCBtdWx0aXBsaWNhbmQpIHtcbiAgICAgIHJldHVybiBtdWx0aXBsaWVyICogbXVsdGlwbGljYW5kO1xuICAgIH0sIDEpO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYG51bWJlcmAgcm91bmRlZCB0byBgcHJlY2lzaW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byByb3VuZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3ByZWNpc2lvbj0wXSBUaGUgcHJlY2lzaW9uIHRvIHJvdW5kIHRvLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJvdW5kZWQgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJvdW5kKDQuMDA2KTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICpcbiAgICAgKiBfLnJvdW5kKDQuMDA2LCAyKTtcbiAgICAgKiAvLyA9PiA0LjAxXG4gICAgICpcbiAgICAgKiBfLnJvdW5kKDQwNjAsIC0yKTtcbiAgICAgKiAvLyA9PiA0MTAwXG4gICAgICovXG4gICAgdmFyIHJvdW5kID0gY3JlYXRlUm91bmQoJ3JvdW5kJyk7XG5cbiAgICAvKipcbiAgICAgKiBTdWJ0cmFjdCB0d28gbnVtYmVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG1pbnVlbmQgVGhlIGZpcnN0IG51bWJlciBpbiBhIHN1YnRyYWN0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdWJ0cmFoZW5kIFRoZSBzZWNvbmQgbnVtYmVyIGluIGEgc3VidHJhY3Rpb24uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgZGlmZmVyZW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zdWJ0cmFjdCg2LCA0KTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICovXG4gICAgdmFyIHN1YnRyYWN0ID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihtaW51ZW5kLCBzdWJ0cmFoZW5kKSB7XG4gICAgICByZXR1cm4gbWludWVuZCAtIHN1YnRyYWhlbmQ7XG4gICAgfSwgMCk7XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgc3VtIG9mIHRoZSB2YWx1ZXMgaW4gYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjQuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdW0uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3VtKFs0LCAyLCA4LCA2XSk7XG4gICAgICogLy8gPT4gMjBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdW0oYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VTdW0oYXJyYXksIGlkZW50aXR5KVxuICAgICAgICA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zdW1gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSB2YWx1ZSB0byBiZSBzdW1tZWQuXG4gICAgICogVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN1bS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAnbic6IDQgfSwgeyAnbic6IDIgfSwgeyAnbic6IDggfSwgeyAnbic6IDYgfV07XG4gICAgICpcbiAgICAgKiBfLnN1bUJ5KG9iamVjdHMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubjsgfSk7XG4gICAgICogLy8gPT4gMjBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc3VtQnkob2JqZWN0cywgJ24nKTtcbiAgICAgKiAvLyA9PiAyMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN1bUJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZVN1bShhcnJheSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKVxuICAgICAgICA6IDA7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLy8gQWRkIG1ldGhvZHMgdGhhdCByZXR1cm4gd3JhcHBlZCB2YWx1ZXMgaW4gY2hhaW4gc2VxdWVuY2VzLlxuICAgIGxvZGFzaC5hZnRlciA9IGFmdGVyO1xuICAgIGxvZGFzaC5hcnkgPSBhcnk7XG4gICAgbG9kYXNoLmFzc2lnbiA9IGFzc2lnbjtcbiAgICBsb2Rhc2guYXNzaWduSW4gPSBhc3NpZ25JbjtcbiAgICBsb2Rhc2guYXNzaWduSW5XaXRoID0gYXNzaWduSW5XaXRoO1xuICAgIGxvZGFzaC5hc3NpZ25XaXRoID0gYXNzaWduV2l0aDtcbiAgICBsb2Rhc2guYXQgPSBhdDtcbiAgICBsb2Rhc2guYmVmb3JlID0gYmVmb3JlO1xuICAgIGxvZGFzaC5iaW5kID0gYmluZDtcbiAgICBsb2Rhc2guYmluZEFsbCA9IGJpbmRBbGw7XG4gICAgbG9kYXNoLmJpbmRLZXkgPSBiaW5kS2V5O1xuICAgIGxvZGFzaC5jYXN0QXJyYXkgPSBjYXN0QXJyYXk7XG4gICAgbG9kYXNoLmNoYWluID0gY2hhaW47XG4gICAgbG9kYXNoLmNodW5rID0gY2h1bms7XG4gICAgbG9kYXNoLmNvbXBhY3QgPSBjb21wYWN0O1xuICAgIGxvZGFzaC5jb25jYXQgPSBjb25jYXQ7XG4gICAgbG9kYXNoLmNvbmQgPSBjb25kO1xuICAgIGxvZGFzaC5jb25mb3JtcyA9IGNvbmZvcm1zO1xuICAgIGxvZGFzaC5jb25zdGFudCA9IGNvbnN0YW50O1xuICAgIGxvZGFzaC5jb3VudEJ5ID0gY291bnRCeTtcbiAgICBsb2Rhc2guY3JlYXRlID0gY3JlYXRlO1xuICAgIGxvZGFzaC5jdXJyeSA9IGN1cnJ5O1xuICAgIGxvZGFzaC5jdXJyeVJpZ2h0ID0gY3VycnlSaWdodDtcbiAgICBsb2Rhc2guZGVib3VuY2UgPSBkZWJvdW5jZTtcbiAgICBsb2Rhc2guZGVmYXVsdHMgPSBkZWZhdWx0cztcbiAgICBsb2Rhc2guZGVmYXVsdHNEZWVwID0gZGVmYXVsdHNEZWVwO1xuICAgIGxvZGFzaC5kZWZlciA9IGRlZmVyO1xuICAgIGxvZGFzaC5kZWxheSA9IGRlbGF5O1xuICAgIGxvZGFzaC5kaWZmZXJlbmNlID0gZGlmZmVyZW5jZTtcbiAgICBsb2Rhc2guZGlmZmVyZW5jZUJ5ID0gZGlmZmVyZW5jZUJ5O1xuICAgIGxvZGFzaC5kaWZmZXJlbmNlV2l0aCA9IGRpZmZlcmVuY2VXaXRoO1xuICAgIGxvZGFzaC5kcm9wID0gZHJvcDtcbiAgICBsb2Rhc2guZHJvcFJpZ2h0ID0gZHJvcFJpZ2h0O1xuICAgIGxvZGFzaC5kcm9wUmlnaHRXaGlsZSA9IGRyb3BSaWdodFdoaWxlO1xuICAgIGxvZGFzaC5kcm9wV2hpbGUgPSBkcm9wV2hpbGU7XG4gICAgbG9kYXNoLmZpbGwgPSBmaWxsO1xuICAgIGxvZGFzaC5maWx0ZXIgPSBmaWx0ZXI7XG4gICAgbG9kYXNoLmZsYXRNYXAgPSBmbGF0TWFwO1xuICAgIGxvZGFzaC5mbGF0TWFwRGVlcCA9IGZsYXRNYXBEZWVwO1xuICAgIGxvZGFzaC5mbGF0TWFwRGVwdGggPSBmbGF0TWFwRGVwdGg7XG4gICAgbG9kYXNoLmZsYXR0ZW4gPSBmbGF0dGVuO1xuICAgIGxvZGFzaC5mbGF0dGVuRGVlcCA9IGZsYXR0ZW5EZWVwO1xuICAgIGxvZGFzaC5mbGF0dGVuRGVwdGggPSBmbGF0dGVuRGVwdGg7XG4gICAgbG9kYXNoLmZsaXAgPSBmbGlwO1xuICAgIGxvZGFzaC5mbG93ID0gZmxvdztcbiAgICBsb2Rhc2guZmxvd1JpZ2h0ID0gZmxvd1JpZ2h0O1xuICAgIGxvZGFzaC5mcm9tUGFpcnMgPSBmcm9tUGFpcnM7XG4gICAgbG9kYXNoLmZ1bmN0aW9ucyA9IGZ1bmN0aW9ucztcbiAgICBsb2Rhc2guZnVuY3Rpb25zSW4gPSBmdW5jdGlvbnNJbjtcbiAgICBsb2Rhc2guZ3JvdXBCeSA9IGdyb3VwQnk7XG4gICAgbG9kYXNoLmluaXRpYWwgPSBpbml0aWFsO1xuICAgIGxvZGFzaC5pbnRlcnNlY3Rpb24gPSBpbnRlcnNlY3Rpb247XG4gICAgbG9kYXNoLmludGVyc2VjdGlvbkJ5ID0gaW50ZXJzZWN0aW9uQnk7XG4gICAgbG9kYXNoLmludGVyc2VjdGlvbldpdGggPSBpbnRlcnNlY3Rpb25XaXRoO1xuICAgIGxvZGFzaC5pbnZlcnQgPSBpbnZlcnQ7XG4gICAgbG9kYXNoLmludmVydEJ5ID0gaW52ZXJ0Qnk7XG4gICAgbG9kYXNoLmludm9rZU1hcCA9IGludm9rZU1hcDtcbiAgICBsb2Rhc2guaXRlcmF0ZWUgPSBpdGVyYXRlZTtcbiAgICBsb2Rhc2gua2V5QnkgPSBrZXlCeTtcbiAgICBsb2Rhc2gua2V5cyA9IGtleXM7XG4gICAgbG9kYXNoLmtleXNJbiA9IGtleXNJbjtcbiAgICBsb2Rhc2gubWFwID0gbWFwO1xuICAgIGxvZGFzaC5tYXBLZXlzID0gbWFwS2V5cztcbiAgICBsb2Rhc2gubWFwVmFsdWVzID0gbWFwVmFsdWVzO1xuICAgIGxvZGFzaC5tYXRjaGVzID0gbWF0Y2hlcztcbiAgICBsb2Rhc2gubWF0Y2hlc1Byb3BlcnR5ID0gbWF0Y2hlc1Byb3BlcnR5O1xuICAgIGxvZGFzaC5tZW1vaXplID0gbWVtb2l6ZTtcbiAgICBsb2Rhc2gubWVyZ2UgPSBtZXJnZTtcbiAgICBsb2Rhc2gubWVyZ2VXaXRoID0gbWVyZ2VXaXRoO1xuICAgIGxvZGFzaC5tZXRob2QgPSBtZXRob2Q7XG4gICAgbG9kYXNoLm1ldGhvZE9mID0gbWV0aG9kT2Y7XG4gICAgbG9kYXNoLm1peGluID0gbWl4aW47XG4gICAgbG9kYXNoLm5lZ2F0ZSA9IG5lZ2F0ZTtcbiAgICBsb2Rhc2gubnRoQXJnID0gbnRoQXJnO1xuICAgIGxvZGFzaC5vbWl0ID0gb21pdDtcbiAgICBsb2Rhc2gub21pdEJ5ID0gb21pdEJ5O1xuICAgIGxvZGFzaC5vbmNlID0gb25jZTtcbiAgICBsb2Rhc2gub3JkZXJCeSA9IG9yZGVyQnk7XG4gICAgbG9kYXNoLm92ZXIgPSBvdmVyO1xuICAgIGxvZGFzaC5vdmVyQXJncyA9IG92ZXJBcmdzO1xuICAgIGxvZGFzaC5vdmVyRXZlcnkgPSBvdmVyRXZlcnk7XG4gICAgbG9kYXNoLm92ZXJTb21lID0gb3ZlclNvbWU7XG4gICAgbG9kYXNoLnBhcnRpYWwgPSBwYXJ0aWFsO1xuICAgIGxvZGFzaC5wYXJ0aWFsUmlnaHQgPSBwYXJ0aWFsUmlnaHQ7XG4gICAgbG9kYXNoLnBhcnRpdGlvbiA9IHBhcnRpdGlvbjtcbiAgICBsb2Rhc2gucGljayA9IHBpY2s7XG4gICAgbG9kYXNoLnBpY2tCeSA9IHBpY2tCeTtcbiAgICBsb2Rhc2gucHJvcGVydHkgPSBwcm9wZXJ0eTtcbiAgICBsb2Rhc2gucHJvcGVydHlPZiA9IHByb3BlcnR5T2Y7XG4gICAgbG9kYXNoLnB1bGwgPSBwdWxsO1xuICAgIGxvZGFzaC5wdWxsQWxsID0gcHVsbEFsbDtcbiAgICBsb2Rhc2gucHVsbEFsbEJ5ID0gcHVsbEFsbEJ5O1xuICAgIGxvZGFzaC5wdWxsQWxsV2l0aCA9IHB1bGxBbGxXaXRoO1xuICAgIGxvZGFzaC5wdWxsQXQgPSBwdWxsQXQ7XG4gICAgbG9kYXNoLnJhbmdlID0gcmFuZ2U7XG4gICAgbG9kYXNoLnJhbmdlUmlnaHQgPSByYW5nZVJpZ2h0O1xuICAgIGxvZGFzaC5yZWFyZyA9IHJlYXJnO1xuICAgIGxvZGFzaC5yZWplY3QgPSByZWplY3Q7XG4gICAgbG9kYXNoLnJlbW92ZSA9IHJlbW92ZTtcbiAgICBsb2Rhc2gucmVzdCA9IHJlc3Q7XG4gICAgbG9kYXNoLnJldmVyc2UgPSByZXZlcnNlO1xuICAgIGxvZGFzaC5zYW1wbGVTaXplID0gc2FtcGxlU2l6ZTtcbiAgICBsb2Rhc2guc2V0ID0gc2V0O1xuICAgIGxvZGFzaC5zZXRXaXRoID0gc2V0V2l0aDtcbiAgICBsb2Rhc2guc2h1ZmZsZSA9IHNodWZmbGU7XG4gICAgbG9kYXNoLnNsaWNlID0gc2xpY2U7XG4gICAgbG9kYXNoLnNvcnRCeSA9IHNvcnRCeTtcbiAgICBsb2Rhc2guc29ydGVkVW5pcSA9IHNvcnRlZFVuaXE7XG4gICAgbG9kYXNoLnNvcnRlZFVuaXFCeSA9IHNvcnRlZFVuaXFCeTtcbiAgICBsb2Rhc2guc3BsaXQgPSBzcGxpdDtcbiAgICBsb2Rhc2guc3ByZWFkID0gc3ByZWFkO1xuICAgIGxvZGFzaC50YWlsID0gdGFpbDtcbiAgICBsb2Rhc2gudGFrZSA9IHRha2U7XG4gICAgbG9kYXNoLnRha2VSaWdodCA9IHRha2VSaWdodDtcbiAgICBsb2Rhc2gudGFrZVJpZ2h0V2hpbGUgPSB0YWtlUmlnaHRXaGlsZTtcbiAgICBsb2Rhc2gudGFrZVdoaWxlID0gdGFrZVdoaWxlO1xuICAgIGxvZGFzaC50YXAgPSB0YXA7XG4gICAgbG9kYXNoLnRocm90dGxlID0gdGhyb3R0bGU7XG4gICAgbG9kYXNoLnRocnUgPSB0aHJ1O1xuICAgIGxvZGFzaC50b0FycmF5ID0gdG9BcnJheTtcbiAgICBsb2Rhc2gudG9QYWlycyA9IHRvUGFpcnM7XG4gICAgbG9kYXNoLnRvUGFpcnNJbiA9IHRvUGFpcnNJbjtcbiAgICBsb2Rhc2gudG9QYXRoID0gdG9QYXRoO1xuICAgIGxvZGFzaC50b1BsYWluT2JqZWN0ID0gdG9QbGFpbk9iamVjdDtcbiAgICBsb2Rhc2gudHJhbnNmb3JtID0gdHJhbnNmb3JtO1xuICAgIGxvZGFzaC51bmFyeSA9IHVuYXJ5O1xuICAgIGxvZGFzaC51bmlvbiA9IHVuaW9uO1xuICAgIGxvZGFzaC51bmlvbkJ5ID0gdW5pb25CeTtcbiAgICBsb2Rhc2gudW5pb25XaXRoID0gdW5pb25XaXRoO1xuICAgIGxvZGFzaC51bmlxID0gdW5pcTtcbiAgICBsb2Rhc2gudW5pcUJ5ID0gdW5pcUJ5O1xuICAgIGxvZGFzaC51bmlxV2l0aCA9IHVuaXFXaXRoO1xuICAgIGxvZGFzaC51bnNldCA9IHVuc2V0O1xuICAgIGxvZGFzaC51bnppcCA9IHVuemlwO1xuICAgIGxvZGFzaC51bnppcFdpdGggPSB1bnppcFdpdGg7XG4gICAgbG9kYXNoLnVwZGF0ZSA9IHVwZGF0ZTtcbiAgICBsb2Rhc2gudXBkYXRlV2l0aCA9IHVwZGF0ZVdpdGg7XG4gICAgbG9kYXNoLnZhbHVlcyA9IHZhbHVlcztcbiAgICBsb2Rhc2gudmFsdWVzSW4gPSB2YWx1ZXNJbjtcbiAgICBsb2Rhc2gud2l0aG91dCA9IHdpdGhvdXQ7XG4gICAgbG9kYXNoLndvcmRzID0gd29yZHM7XG4gICAgbG9kYXNoLndyYXAgPSB3cmFwO1xuICAgIGxvZGFzaC54b3IgPSB4b3I7XG4gICAgbG9kYXNoLnhvckJ5ID0geG9yQnk7XG4gICAgbG9kYXNoLnhvcldpdGggPSB4b3JXaXRoO1xuICAgIGxvZGFzaC56aXAgPSB6aXA7XG4gICAgbG9kYXNoLnppcE9iamVjdCA9IHppcE9iamVjdDtcbiAgICBsb2Rhc2guemlwT2JqZWN0RGVlcCA9IHppcE9iamVjdERlZXA7XG4gICAgbG9kYXNoLnppcFdpdGggPSB6aXBXaXRoO1xuXG4gICAgLy8gQWRkIGFsaWFzZXMuXG4gICAgbG9kYXNoLmVudHJpZXMgPSB0b1BhaXJzO1xuICAgIGxvZGFzaC5lbnRyaWVzSW4gPSB0b1BhaXJzSW47XG4gICAgbG9kYXNoLmV4dGVuZCA9IGFzc2lnbkluO1xuICAgIGxvZGFzaC5leHRlbmRXaXRoID0gYXNzaWduSW5XaXRoO1xuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYGxvZGFzaC5wcm90b3R5cGVgLlxuICAgIG1peGluKGxvZGFzaCwgbG9kYXNoKTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8vIEFkZCBtZXRob2RzIHRoYXQgcmV0dXJuIHVud3JhcHBlZCB2YWx1ZXMgaW4gY2hhaW4gc2VxdWVuY2VzLlxuICAgIGxvZGFzaC5hZGQgPSBhZGQ7XG4gICAgbG9kYXNoLmF0dGVtcHQgPSBhdHRlbXB0O1xuICAgIGxvZGFzaC5jYW1lbENhc2UgPSBjYW1lbENhc2U7XG4gICAgbG9kYXNoLmNhcGl0YWxpemUgPSBjYXBpdGFsaXplO1xuICAgIGxvZGFzaC5jZWlsID0gY2VpbDtcbiAgICBsb2Rhc2guY2xhbXAgPSBjbGFtcDtcbiAgICBsb2Rhc2guY2xvbmUgPSBjbG9uZTtcbiAgICBsb2Rhc2guY2xvbmVEZWVwID0gY2xvbmVEZWVwO1xuICAgIGxvZGFzaC5jbG9uZURlZXBXaXRoID0gY2xvbmVEZWVwV2l0aDtcbiAgICBsb2Rhc2guY2xvbmVXaXRoID0gY2xvbmVXaXRoO1xuICAgIGxvZGFzaC5jb25mb3Jtc1RvID0gY29uZm9ybXNUbztcbiAgICBsb2Rhc2guZGVidXJyID0gZGVidXJyO1xuICAgIGxvZGFzaC5kZWZhdWx0VG8gPSBkZWZhdWx0VG87XG4gICAgbG9kYXNoLmRpdmlkZSA9IGRpdmlkZTtcbiAgICBsb2Rhc2guZW5kc1dpdGggPSBlbmRzV2l0aDtcbiAgICBsb2Rhc2guZXEgPSBlcTtcbiAgICBsb2Rhc2guZXNjYXBlID0gZXNjYXBlO1xuICAgIGxvZGFzaC5lc2NhcGVSZWdFeHAgPSBlc2NhcGVSZWdFeHA7XG4gICAgbG9kYXNoLmV2ZXJ5ID0gZXZlcnk7XG4gICAgbG9kYXNoLmZpbmQgPSBmaW5kO1xuICAgIGxvZGFzaC5maW5kSW5kZXggPSBmaW5kSW5kZXg7XG4gICAgbG9kYXNoLmZpbmRLZXkgPSBmaW5kS2V5O1xuICAgIGxvZGFzaC5maW5kTGFzdCA9IGZpbmRMYXN0O1xuICAgIGxvZGFzaC5maW5kTGFzdEluZGV4ID0gZmluZExhc3RJbmRleDtcbiAgICBsb2Rhc2guZmluZExhc3RLZXkgPSBmaW5kTGFzdEtleTtcbiAgICBsb2Rhc2guZmxvb3IgPSBmbG9vcjtcbiAgICBsb2Rhc2guZm9yRWFjaCA9IGZvckVhY2g7XG4gICAgbG9kYXNoLmZvckVhY2hSaWdodCA9IGZvckVhY2hSaWdodDtcbiAgICBsb2Rhc2guZm9ySW4gPSBmb3JJbjtcbiAgICBsb2Rhc2guZm9ySW5SaWdodCA9IGZvckluUmlnaHQ7XG4gICAgbG9kYXNoLmZvck93biA9IGZvck93bjtcbiAgICBsb2Rhc2guZm9yT3duUmlnaHQgPSBmb3JPd25SaWdodDtcbiAgICBsb2Rhc2guZ2V0ID0gZ2V0O1xuICAgIGxvZGFzaC5ndCA9IGd0O1xuICAgIGxvZGFzaC5ndGUgPSBndGU7XG4gICAgbG9kYXNoLmhhcyA9IGhhcztcbiAgICBsb2Rhc2guaGFzSW4gPSBoYXNJbjtcbiAgICBsb2Rhc2guaGVhZCA9IGhlYWQ7XG4gICAgbG9kYXNoLmlkZW50aXR5ID0gaWRlbnRpdHk7XG4gICAgbG9kYXNoLmluY2x1ZGVzID0gaW5jbHVkZXM7XG4gICAgbG9kYXNoLmluZGV4T2YgPSBpbmRleE9mO1xuICAgIGxvZGFzaC5pblJhbmdlID0gaW5SYW5nZTtcbiAgICBsb2Rhc2guaW52b2tlID0gaW52b2tlO1xuICAgIGxvZGFzaC5pc0FyZ3VtZW50cyA9IGlzQXJndW1lbnRzO1xuICAgIGxvZGFzaC5pc0FycmF5ID0gaXNBcnJheTtcbiAgICBsb2Rhc2guaXNBcnJheUJ1ZmZlciA9IGlzQXJyYXlCdWZmZXI7XG4gICAgbG9kYXNoLmlzQXJyYXlMaWtlID0gaXNBcnJheUxpa2U7XG4gICAgbG9kYXNoLmlzQXJyYXlMaWtlT2JqZWN0ID0gaXNBcnJheUxpa2VPYmplY3Q7XG4gICAgbG9kYXNoLmlzQm9vbGVhbiA9IGlzQm9vbGVhbjtcbiAgICBsb2Rhc2guaXNCdWZmZXIgPSBpc0J1ZmZlcjtcbiAgICBsb2Rhc2guaXNEYXRlID0gaXNEYXRlO1xuICAgIGxvZGFzaC5pc0VsZW1lbnQgPSBpc0VsZW1lbnQ7XG4gICAgbG9kYXNoLmlzRW1wdHkgPSBpc0VtcHR5O1xuICAgIGxvZGFzaC5pc0VxdWFsID0gaXNFcXVhbDtcbiAgICBsb2Rhc2guaXNFcXVhbFdpdGggPSBpc0VxdWFsV2l0aDtcbiAgICBsb2Rhc2guaXNFcnJvciA9IGlzRXJyb3I7XG4gICAgbG9kYXNoLmlzRmluaXRlID0gaXNGaW5pdGU7XG4gICAgbG9kYXNoLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uO1xuICAgIGxvZGFzaC5pc0ludGVnZXIgPSBpc0ludGVnZXI7XG4gICAgbG9kYXNoLmlzTGVuZ3RoID0gaXNMZW5ndGg7XG4gICAgbG9kYXNoLmlzTWFwID0gaXNNYXA7XG4gICAgbG9kYXNoLmlzTWF0Y2ggPSBpc01hdGNoO1xuICAgIGxvZGFzaC5pc01hdGNoV2l0aCA9IGlzTWF0Y2hXaXRoO1xuICAgIGxvZGFzaC5pc05hTiA9IGlzTmFOO1xuICAgIGxvZGFzaC5pc05hdGl2ZSA9IGlzTmF0aXZlO1xuICAgIGxvZGFzaC5pc05pbCA9IGlzTmlsO1xuICAgIGxvZGFzaC5pc051bGwgPSBpc051bGw7XG4gICAgbG9kYXNoLmlzTnVtYmVyID0gaXNOdW1iZXI7XG4gICAgbG9kYXNoLmlzT2JqZWN0ID0gaXNPYmplY3Q7XG4gICAgbG9kYXNoLmlzT2JqZWN0TGlrZSA9IGlzT2JqZWN0TGlrZTtcbiAgICBsb2Rhc2guaXNQbGFpbk9iamVjdCA9IGlzUGxhaW5PYmplY3Q7XG4gICAgbG9kYXNoLmlzUmVnRXhwID0gaXNSZWdFeHA7XG4gICAgbG9kYXNoLmlzU2FmZUludGVnZXIgPSBpc1NhZmVJbnRlZ2VyO1xuICAgIGxvZGFzaC5pc1NldCA9IGlzU2V0O1xuICAgIGxvZGFzaC5pc1N0cmluZyA9IGlzU3RyaW5nO1xuICAgIGxvZGFzaC5pc1N5bWJvbCA9IGlzU3ltYm9sO1xuICAgIGxvZGFzaC5pc1R5cGVkQXJyYXkgPSBpc1R5cGVkQXJyYXk7XG4gICAgbG9kYXNoLmlzVW5kZWZpbmVkID0gaXNVbmRlZmluZWQ7XG4gICAgbG9kYXNoLmlzV2Vha01hcCA9IGlzV2Vha01hcDtcbiAgICBsb2Rhc2guaXNXZWFrU2V0ID0gaXNXZWFrU2V0O1xuICAgIGxvZGFzaC5qb2luID0gam9pbjtcbiAgICBsb2Rhc2gua2ViYWJDYXNlID0ga2ViYWJDYXNlO1xuICAgIGxvZGFzaC5sYXN0ID0gbGFzdDtcbiAgICBsb2Rhc2gubGFzdEluZGV4T2YgPSBsYXN0SW5kZXhPZjtcbiAgICBsb2Rhc2gubG93ZXJDYXNlID0gbG93ZXJDYXNlO1xuICAgIGxvZGFzaC5sb3dlckZpcnN0ID0gbG93ZXJGaXJzdDtcbiAgICBsb2Rhc2gubHQgPSBsdDtcbiAgICBsb2Rhc2gubHRlID0gbHRlO1xuICAgIGxvZGFzaC5tYXggPSBtYXg7XG4gICAgbG9kYXNoLm1heEJ5ID0gbWF4Qnk7XG4gICAgbG9kYXNoLm1lYW4gPSBtZWFuO1xuICAgIGxvZGFzaC5tZWFuQnkgPSBtZWFuQnk7XG4gICAgbG9kYXNoLm1pbiA9IG1pbjtcbiAgICBsb2Rhc2gubWluQnkgPSBtaW5CeTtcbiAgICBsb2Rhc2guc3R1YkFycmF5ID0gc3R1YkFycmF5O1xuICAgIGxvZGFzaC5zdHViRmFsc2UgPSBzdHViRmFsc2U7XG4gICAgbG9kYXNoLnN0dWJPYmplY3QgPSBzdHViT2JqZWN0O1xuICAgIGxvZGFzaC5zdHViU3RyaW5nID0gc3R1YlN0cmluZztcbiAgICBsb2Rhc2guc3R1YlRydWUgPSBzdHViVHJ1ZTtcbiAgICBsb2Rhc2gubXVsdGlwbHkgPSBtdWx0aXBseTtcbiAgICBsb2Rhc2gubnRoID0gbnRoO1xuICAgIGxvZGFzaC5ub0NvbmZsaWN0ID0gbm9Db25mbGljdDtcbiAgICBsb2Rhc2gubm9vcCA9IG5vb3A7XG4gICAgbG9kYXNoLm5vdyA9IG5vdztcbiAgICBsb2Rhc2gucGFkID0gcGFkO1xuICAgIGxvZGFzaC5wYWRFbmQgPSBwYWRFbmQ7XG4gICAgbG9kYXNoLnBhZFN0YXJ0ID0gcGFkU3RhcnQ7XG4gICAgbG9kYXNoLnBhcnNlSW50ID0gcGFyc2VJbnQ7XG4gICAgbG9kYXNoLnJhbmRvbSA9IHJhbmRvbTtcbiAgICBsb2Rhc2gucmVkdWNlID0gcmVkdWNlO1xuICAgIGxvZGFzaC5yZWR1Y2VSaWdodCA9IHJlZHVjZVJpZ2h0O1xuICAgIGxvZGFzaC5yZXBlYXQgPSByZXBlYXQ7XG4gICAgbG9kYXNoLnJlcGxhY2UgPSByZXBsYWNlO1xuICAgIGxvZGFzaC5yZXN1bHQgPSByZXN1bHQ7XG4gICAgbG9kYXNoLnJvdW5kID0gcm91bmQ7XG4gICAgbG9kYXNoLnJ1bkluQ29udGV4dCA9IHJ1bkluQ29udGV4dDtcbiAgICBsb2Rhc2guc2FtcGxlID0gc2FtcGxlO1xuICAgIGxvZGFzaC5zaXplID0gc2l6ZTtcbiAgICBsb2Rhc2guc25ha2VDYXNlID0gc25ha2VDYXNlO1xuICAgIGxvZGFzaC5zb21lID0gc29tZTtcbiAgICBsb2Rhc2guc29ydGVkSW5kZXggPSBzb3J0ZWRJbmRleDtcbiAgICBsb2Rhc2guc29ydGVkSW5kZXhCeSA9IHNvcnRlZEluZGV4Qnk7XG4gICAgbG9kYXNoLnNvcnRlZEluZGV4T2YgPSBzb3J0ZWRJbmRleE9mO1xuICAgIGxvZGFzaC5zb3J0ZWRMYXN0SW5kZXggPSBzb3J0ZWRMYXN0SW5kZXg7XG4gICAgbG9kYXNoLnNvcnRlZExhc3RJbmRleEJ5ID0gc29ydGVkTGFzdEluZGV4Qnk7XG4gICAgbG9kYXNoLnNvcnRlZExhc3RJbmRleE9mID0gc29ydGVkTGFzdEluZGV4T2Y7XG4gICAgbG9kYXNoLnN0YXJ0Q2FzZSA9IHN0YXJ0Q2FzZTtcbiAgICBsb2Rhc2guc3RhcnRzV2l0aCA9IHN0YXJ0c1dpdGg7XG4gICAgbG9kYXNoLnN1YnRyYWN0ID0gc3VidHJhY3Q7XG4gICAgbG9kYXNoLnN1bSA9IHN1bTtcbiAgICBsb2Rhc2guc3VtQnkgPSBzdW1CeTtcbiAgICBsb2Rhc2gudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICBsb2Rhc2gudGltZXMgPSB0aW1lcztcbiAgICBsb2Rhc2gudG9GaW5pdGUgPSB0b0Zpbml0ZTtcbiAgICBsb2Rhc2gudG9JbnRlZ2VyID0gdG9JbnRlZ2VyO1xuICAgIGxvZGFzaC50b0xlbmd0aCA9IHRvTGVuZ3RoO1xuICAgIGxvZGFzaC50b0xvd2VyID0gdG9Mb3dlcjtcbiAgICBsb2Rhc2gudG9OdW1iZXIgPSB0b051bWJlcjtcbiAgICBsb2Rhc2gudG9TYWZlSW50ZWdlciA9IHRvU2FmZUludGVnZXI7XG4gICAgbG9kYXNoLnRvU3RyaW5nID0gdG9TdHJpbmc7XG4gICAgbG9kYXNoLnRvVXBwZXIgPSB0b1VwcGVyO1xuICAgIGxvZGFzaC50cmltID0gdHJpbTtcbiAgICBsb2Rhc2gudHJpbUVuZCA9IHRyaW1FbmQ7XG4gICAgbG9kYXNoLnRyaW1TdGFydCA9IHRyaW1TdGFydDtcbiAgICBsb2Rhc2gudHJ1bmNhdGUgPSB0cnVuY2F0ZTtcbiAgICBsb2Rhc2gudW5lc2NhcGUgPSB1bmVzY2FwZTtcbiAgICBsb2Rhc2gudW5pcXVlSWQgPSB1bmlxdWVJZDtcbiAgICBsb2Rhc2gudXBwZXJDYXNlID0gdXBwZXJDYXNlO1xuICAgIGxvZGFzaC51cHBlckZpcnN0ID0gdXBwZXJGaXJzdDtcblxuICAgIC8vIEFkZCBhbGlhc2VzLlxuICAgIGxvZGFzaC5lYWNoID0gZm9yRWFjaDtcbiAgICBsb2Rhc2guZWFjaFJpZ2h0ID0gZm9yRWFjaFJpZ2h0O1xuICAgIGxvZGFzaC5maXJzdCA9IGhlYWQ7XG5cbiAgICBtaXhpbihsb2Rhc2gsIChmdW5jdGlvbigpIHtcbiAgICAgIHZhciBzb3VyY2UgPSB7fTtcbiAgICAgIGJhc2VGb3JPd24obG9kYXNoLCBmdW5jdGlvbihmdW5jLCBtZXRob2ROYW1lKSB7XG4gICAgICAgIGlmICghaGFzT3duUHJvcGVydHkuY2FsbChsb2Rhc2gucHJvdG90eXBlLCBtZXRob2ROYW1lKSkge1xuICAgICAgICAgIHNvdXJjZVttZXRob2ROYW1lXSA9IGZ1bmM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9KCkpLCB7ICdjaGFpbic6IGZhbHNlIH0pO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogVGhlIHNlbWFudGljIHZlcnNpb24gbnVtYmVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICBsb2Rhc2guVkVSU0lPTiA9IFZFUlNJT047XG5cbiAgICAvLyBBc3NpZ24gZGVmYXVsdCBwbGFjZWhvbGRlcnMuXG4gICAgYXJyYXlFYWNoKFsnYmluZCcsICdiaW5kS2V5JywgJ2N1cnJ5JywgJ2N1cnJ5UmlnaHQnLCAncGFydGlhbCcsICdwYXJ0aWFsUmlnaHQnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSkge1xuICAgICAgbG9kYXNoW21ldGhvZE5hbWVdLnBsYWNlaG9sZGVyID0gbG9kYXNoO1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyBmb3IgYF8uZHJvcGAgYW5kIGBfLnRha2VgIHZhcmlhbnRzLlxuICAgIGFycmF5RWFjaChbJ2Ryb3AnLCAndGFrZSddLCBmdW5jdGlvbihtZXRob2ROYW1lLCBpbmRleCkge1xuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24obikge1xuICAgICAgICBuID0gbiA9PT0gdW5kZWZpbmVkID8gMSA6IG5hdGl2ZU1heCh0b0ludGVnZXIobiksIDApO1xuXG4gICAgICAgIHZhciByZXN1bHQgPSAodGhpcy5fX2ZpbHRlcmVkX18gJiYgIWluZGV4KVxuICAgICAgICAgID8gbmV3IExhenlXcmFwcGVyKHRoaXMpXG4gICAgICAgICAgOiB0aGlzLmNsb25lKCk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5fX2ZpbHRlcmVkX18pIHtcbiAgICAgICAgICByZXN1bHQuX190YWtlQ291bnRfXyA9IG5hdGl2ZU1pbihuLCByZXN1bHQuX190YWtlQ291bnRfXyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0Ll9fdmlld3NfXy5wdXNoKHtcbiAgICAgICAgICAgICdzaXplJzogbmF0aXZlTWluKG4sIE1BWF9BUlJBWV9MRU5HVEgpLFxuICAgICAgICAgICAgJ3R5cGUnOiBtZXRob2ROYW1lICsgKHJlc3VsdC5fX2Rpcl9fIDwgMCA/ICdSaWdodCcgOiAnJylcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWUgKyAnUmlnaHQnXSA9IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmV2ZXJzZSgpW21ldGhvZE5hbWVdKG4pLnJldmVyc2UoKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYExhenlXcmFwcGVyYCBtZXRob2RzIHRoYXQgYWNjZXB0IGFuIGBpdGVyYXRlZWAgdmFsdWUuXG4gICAgYXJyYXlFYWNoKFsnZmlsdGVyJywgJ21hcCcsICd0YWtlV2hpbGUnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSwgaW5kZXgpIHtcbiAgICAgIHZhciB0eXBlID0gaW5kZXggKyAxLFxuICAgICAgICAgIGlzRmlsdGVyID0gdHlwZSA9PSBMQVpZX0ZJTFRFUl9GTEFHIHx8IHR5cGUgPT0gTEFaWV9XSElMRV9GTEFHO1xuXG4gICAgICBMYXp5V3JhcHBlci5wcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5jbG9uZSgpO1xuICAgICAgICByZXN1bHQuX19pdGVyYXRlZXNfXy5wdXNoKHtcbiAgICAgICAgICAnaXRlcmF0ZWUnOiBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyksXG4gICAgICAgICAgJ3R5cGUnOiB0eXBlXG4gICAgICAgIH0pO1xuICAgICAgICByZXN1bHQuX19maWx0ZXJlZF9fID0gcmVzdWx0Ll9fZmlsdGVyZWRfXyB8fCBpc0ZpbHRlcjtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYExhenlXcmFwcGVyYCBtZXRob2RzIGZvciBgXy5oZWFkYCBhbmQgYF8ubGFzdGAuXG4gICAgYXJyYXlFYWNoKFsnaGVhZCcsICdsYXN0J10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUsIGluZGV4KSB7XG4gICAgICB2YXIgdGFrZU5hbWUgPSAndGFrZScgKyAoaW5kZXggPyAnUmlnaHQnIDogJycpO1xuXG4gICAgICBMYXp5V3JhcHBlci5wcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbdGFrZU5hbWVdKDEpLnZhbHVlKClbMF07XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyBmb3IgYF8uaW5pdGlhbGAgYW5kIGBfLnRhaWxgLlxuICAgIGFycmF5RWFjaChbJ2luaXRpYWwnLCAndGFpbCddLCBmdW5jdGlvbihtZXRob2ROYW1lLCBpbmRleCkge1xuICAgICAgdmFyIGRyb3BOYW1lID0gJ2Ryb3AnICsgKGluZGV4ID8gJycgOiAnUmlnaHQnKTtcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9fZmlsdGVyZWRfXyA/IG5ldyBMYXp5V3JhcHBlcih0aGlzKSA6IHRoaXNbZHJvcE5hbWVdKDEpO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5jb21wYWN0ID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXIoaWRlbnRpdHkpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKHByZWRpY2F0ZSkuaGVhZCgpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuZmluZExhc3QgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnJldmVyc2UoKS5maW5kKHByZWRpY2F0ZSk7XG4gICAgfTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5pbnZva2VNYXAgPSBiYXNlUmVzdChmdW5jdGlvbihwYXRoLCBhcmdzKSB7XG4gICAgICBpZiAodHlwZW9mIHBhdGggPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IExhenlXcmFwcGVyKHRoaXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBiYXNlSW52b2tlKHZhbHVlLCBwYXRoLCBhcmdzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnJlamVjdCA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKG5lZ2F0ZShnZXRJdGVyYXRlZShwcmVkaWNhdGUpKSk7XG4gICAgfTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgICAgIHN0YXJ0ID0gdG9JbnRlZ2VyKHN0YXJ0KTtcblxuICAgICAgdmFyIHJlc3VsdCA9IHRoaXM7XG4gICAgICBpZiAocmVzdWx0Ll9fZmlsdGVyZWRfXyAmJiAoc3RhcnQgPiAwIHx8IGVuZCA8IDApKSB7XG4gICAgICAgIHJldHVybiBuZXcgTGF6eVdyYXBwZXIocmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGlmIChzdGFydCA8IDApIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnRha2VSaWdodCgtc3RhcnQpO1xuICAgICAgfSBlbHNlIGlmIChzdGFydCkge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQuZHJvcChzdGFydCk7XG4gICAgICB9XG4gICAgICBpZiAoZW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZW5kID0gdG9JbnRlZ2VyKGVuZCk7XG4gICAgICAgIHJlc3VsdCA9IGVuZCA8IDAgPyByZXN1bHQuZHJvcFJpZ2h0KC1lbmQpIDogcmVzdWx0LnRha2UoZW5kIC0gc3RhcnQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnRha2VSaWdodFdoaWxlID0gZnVuY3Rpb24ocHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXZlcnNlKCkudGFrZVdoaWxlKHByZWRpY2F0ZSkucmV2ZXJzZSgpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMudGFrZShNQVhfQVJSQVlfTEVOR1RIKTtcbiAgICB9O1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyB0byBgbG9kYXNoLnByb3RvdHlwZWAuXG4gICAgYmFzZUZvck93bihMYXp5V3JhcHBlci5wcm90b3R5cGUsIGZ1bmN0aW9uKGZ1bmMsIG1ldGhvZE5hbWUpIHtcbiAgICAgIHZhciBjaGVja0l0ZXJhdGVlID0gL14oPzpmaWx0ZXJ8ZmluZHxtYXB8cmVqZWN0KXxXaGlsZSQvLnRlc3QobWV0aG9kTmFtZSksXG4gICAgICAgICAgaXNUYWtlciA9IC9eKD86aGVhZHxsYXN0KSQvLnRlc3QobWV0aG9kTmFtZSksXG4gICAgICAgICAgbG9kYXNoRnVuYyA9IGxvZGFzaFtpc1Rha2VyID8gKCd0YWtlJyArIChtZXRob2ROYW1lID09ICdsYXN0JyA/ICdSaWdodCcgOiAnJykpIDogbWV0aG9kTmFtZV0sXG4gICAgICAgICAgcmV0VW53cmFwcGVkID0gaXNUYWtlciB8fCAvXmZpbmQvLnRlc3QobWV0aG9kTmFtZSk7XG5cbiAgICAgIGlmICghbG9kYXNoRnVuYykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsb2Rhc2gucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuX193cmFwcGVkX18sXG4gICAgICAgICAgICBhcmdzID0gaXNUYWtlciA/IFsxXSA6IGFyZ3VtZW50cyxcbiAgICAgICAgICAgIGlzTGF6eSA9IHZhbHVlIGluc3RhbmNlb2YgTGF6eVdyYXBwZXIsXG4gICAgICAgICAgICBpdGVyYXRlZSA9IGFyZ3NbMF0sXG4gICAgICAgICAgICB1c2VMYXp5ID0gaXNMYXp5IHx8IGlzQXJyYXkodmFsdWUpO1xuXG4gICAgICAgIHZhciBpbnRlcmNlcHRvciA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IGxvZGFzaEZ1bmMuYXBwbHkobG9kYXNoLCBhcnJheVB1c2goW3ZhbHVlXSwgYXJncykpO1xuICAgICAgICAgIHJldHVybiAoaXNUYWtlciAmJiBjaGFpbkFsbCkgPyByZXN1bHRbMF0gOiByZXN1bHQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHVzZUxhenkgJiYgY2hlY2tJdGVyYXRlZSAmJiB0eXBlb2YgaXRlcmF0ZWUgPT0gJ2Z1bmN0aW9uJyAmJiBpdGVyYXRlZS5sZW5ndGggIT0gMSkge1xuICAgICAgICAgIC8vIEF2b2lkIGxhenkgdXNlIGlmIHRoZSBpdGVyYXRlZSBoYXMgYSBcImxlbmd0aFwiIHZhbHVlIG90aGVyIHRoYW4gYDFgLlxuICAgICAgICAgIGlzTGF6eSA9IHVzZUxhenkgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY2hhaW5BbGwgPSB0aGlzLl9fY2hhaW5fXyxcbiAgICAgICAgICAgIGlzSHlicmlkID0gISF0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCxcbiAgICAgICAgICAgIGlzVW53cmFwcGVkID0gcmV0VW53cmFwcGVkICYmICFjaGFpbkFsbCxcbiAgICAgICAgICAgIG9ubHlMYXp5ID0gaXNMYXp5ICYmICFpc0h5YnJpZDtcblxuICAgICAgICBpZiAoIXJldFVud3JhcHBlZCAmJiB1c2VMYXp5KSB7XG4gICAgICAgICAgdmFsdWUgPSBvbmx5TGF6eSA/IHZhbHVlIDogbmV3IExhenlXcmFwcGVyKHRoaXMpO1xuICAgICAgICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHZhbHVlLCBhcmdzKTtcbiAgICAgICAgICByZXN1bHQuX19hY3Rpb25zX18ucHVzaCh7ICdmdW5jJzogdGhydSwgJ2FyZ3MnOiBbaW50ZXJjZXB0b3JdLCAndGhpc0FyZyc6IHVuZGVmaW5lZCB9KTtcbiAgICAgICAgICByZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIocmVzdWx0LCBjaGFpbkFsbCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzVW53cmFwcGVkICYmIG9ubHlMYXp5KSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gdGhpcy50aHJ1KGludGVyY2VwdG9yKTtcbiAgICAgICAgcmV0dXJuIGlzVW53cmFwcGVkID8gKGlzVGFrZXIgPyByZXN1bHQudmFsdWUoKVswXSA6IHJlc3VsdC52YWx1ZSgpKSA6IHJlc3VsdDtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYEFycmF5YCBtZXRob2RzIHRvIGBsb2Rhc2gucHJvdG90eXBlYC5cbiAgICBhcnJheUVhY2goWydwb3AnLCAncHVzaCcsICdzaGlmdCcsICdzb3J0JywgJ3NwbGljZScsICd1bnNoaWZ0J10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUpIHtcbiAgICAgIHZhciBmdW5jID0gYXJyYXlQcm90b1ttZXRob2ROYW1lXSxcbiAgICAgICAgICBjaGFpbk5hbWUgPSAvXig/OnB1c2h8c29ydHx1bnNoaWZ0KSQvLnRlc3QobWV0aG9kTmFtZSkgPyAndGFwJyA6ICd0aHJ1JyxcbiAgICAgICAgICByZXRVbndyYXBwZWQgPSAvXig/OnBvcHxzaGlmdCkkLy50ZXN0KG1ldGhvZE5hbWUpO1xuXG4gICAgICBsb2Rhc2gucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBpZiAocmV0VW53cmFwcGVkICYmICF0aGlzLl9fY2hhaW5fXykge1xuICAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWUoKTtcbiAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseShpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW10sIGFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzW2NoYWluTmFtZV0oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseShpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW10sIGFyZ3MpO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBNYXAgbWluaWZpZWQgbWV0aG9kIG5hbWVzIHRvIHRoZWlyIHJlYWwgbmFtZXMuXG4gICAgYmFzZUZvck93bihMYXp5V3JhcHBlci5wcm90b3R5cGUsIGZ1bmN0aW9uKGZ1bmMsIG1ldGhvZE5hbWUpIHtcbiAgICAgIHZhciBsb2Rhc2hGdW5jID0gbG9kYXNoW21ldGhvZE5hbWVdO1xuICAgICAgaWYgKGxvZGFzaEZ1bmMpIHtcbiAgICAgICAgdmFyIGtleSA9IGxvZGFzaEZ1bmMubmFtZSArICcnO1xuICAgICAgICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwocmVhbE5hbWVzLCBrZXkpKSB7XG4gICAgICAgICAgcmVhbE5hbWVzW2tleV0gPSBbXTtcbiAgICAgICAgfVxuICAgICAgICByZWFsTmFtZXNba2V5XS5wdXNoKHsgJ25hbWUnOiBtZXRob2ROYW1lLCAnZnVuYyc6IGxvZGFzaEZ1bmMgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZWFsTmFtZXNbY3JlYXRlSHlicmlkKHVuZGVmaW5lZCwgV1JBUF9CSU5EX0tFWV9GTEFHKS5uYW1lXSA9IFt7XG4gICAgICAnbmFtZSc6ICd3cmFwcGVyJyxcbiAgICAgICdmdW5jJzogdW5kZWZpbmVkXG4gICAgfV07XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgTGF6eVdyYXBwZXJgLlxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5jbG9uZSA9IGxhenlDbG9uZTtcbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUucmV2ZXJzZSA9IGxhenlSZXZlcnNlO1xuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS52YWx1ZSA9IGxhenlWYWx1ZTtcblxuICAgIC8vIEFkZCBjaGFpbiBzZXF1ZW5jZSBtZXRob2RzIHRvIHRoZSBgbG9kYXNoYCB3cmFwcGVyLlxuICAgIGxvZGFzaC5wcm90b3R5cGUuYXQgPSB3cmFwcGVyQXQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5jaGFpbiA9IHdyYXBwZXJDaGFpbjtcbiAgICBsb2Rhc2gucHJvdG90eXBlLmNvbW1pdCA9IHdyYXBwZXJDb21taXQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5uZXh0ID0gd3JhcHBlck5leHQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5wbGFudCA9IHdyYXBwZXJQbGFudDtcbiAgICBsb2Rhc2gucHJvdG90eXBlLnJldmVyc2UgPSB3cmFwcGVyUmV2ZXJzZTtcbiAgICBsb2Rhc2gucHJvdG90eXBlLnRvSlNPTiA9IGxvZGFzaC5wcm90b3R5cGUudmFsdWVPZiA9IGxvZGFzaC5wcm90b3R5cGUudmFsdWUgPSB3cmFwcGVyVmFsdWU7XG5cbiAgICAvLyBBZGQgbGF6eSBhbGlhc2VzLlxuICAgIGxvZGFzaC5wcm90b3R5cGUuZmlyc3QgPSBsb2Rhc2gucHJvdG90eXBlLmhlYWQ7XG5cbiAgICBpZiAoc3ltSXRlcmF0b3IpIHtcbiAgICAgIGxvZGFzaC5wcm90b3R5cGVbc3ltSXRlcmF0b3JdID0gd3JhcHBlclRvSXRlcmF0b3I7XG4gICAgfVxuICAgIHJldHVybiBsb2Rhc2g7XG4gIH0pO1xuXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gIC8vIEV4cG9ydCBsb2Rhc2guXG4gIHZhciBfID0gcnVuSW5Db250ZXh0KCk7XG5cbiAgLy8gU29tZSBBTUQgYnVpbGQgb3B0aW1pemVycywgbGlrZSByLmpzLCBjaGVjayBmb3IgY29uZGl0aW9uIHBhdHRlcm5zIGxpa2U6XG4gIGlmICh0eXBlb2YgZGVmaW5lID09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRlZmluZS5hbWQgPT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuICAgIC8vIEV4cG9zZSBMb2Rhc2ggb24gdGhlIGdsb2JhbCBvYmplY3QgdG8gcHJldmVudCBlcnJvcnMgd2hlbiBMb2Rhc2ggaXNcbiAgICAvLyBsb2FkZWQgYnkgYSBzY3JpcHQgdGFnIGluIHRoZSBwcmVzZW5jZSBvZiBhbiBBTUQgbG9hZGVyLlxuICAgIC8vIFNlZSBodHRwOi8vcmVxdWlyZWpzLm9yZy9kb2NzL2Vycm9ycy5odG1sI21pc21hdGNoIGZvciBtb3JlIGRldGFpbHMuXG4gICAgLy8gVXNlIGBfLm5vQ29uZmxpY3RgIHRvIHJlbW92ZSBMb2Rhc2ggZnJvbSB0aGUgZ2xvYmFsIG9iamVjdC5cbiAgICByb290Ll8gPSBfO1xuXG4gICAgLy8gRGVmaW5lIGFzIGFuIGFub255bW91cyBtb2R1bGUgc28sIHRocm91Z2ggcGF0aCBtYXBwaW5nLCBpdCBjYW4gYmVcbiAgICAvLyByZWZlcmVuY2VkIGFzIHRoZSBcInVuZGVyc2NvcmVcIiBtb2R1bGUuXG4gICAgZGVmaW5lKGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIF87XG4gICAgfSk7XG4gIH1cbiAgLy8gQ2hlY2sgZm9yIGBleHBvcnRzYCBhZnRlciBgZGVmaW5lYCBpbiBjYXNlIGEgYnVpbGQgb3B0aW1pemVyIGFkZHMgaXQuXG4gIGVsc2UgaWYgKGZyZWVNb2R1bGUpIHtcbiAgICAvLyBFeHBvcnQgZm9yIE5vZGUuanMuXG4gICAgKGZyZWVNb2R1bGUuZXhwb3J0cyA9IF8pLl8gPSBfO1xuICAgIC8vIEV4cG9ydCBmb3IgQ29tbW9uSlMgc3VwcG9ydC5cbiAgICBmcmVlRXhwb3J0cy5fID0gXztcbiAgfVxuICBlbHNlIHtcbiAgICAvLyBFeHBvcnQgdG8gdGhlIGdsb2JhbCBvYmplY3QuXG4gICAgcm9vdC5fID0gXztcbiAgfVxufS5jYWxsKHRoaXMpKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG5mdW5jdGlvbiBlbmNvZGUodmFsKSB7XG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQodmFsKS5cbiAgICByZXBsYWNlKC8lNDAvZ2ksICdAJykuXG4gICAgcmVwbGFjZSgvJTNBL2dpLCAnOicpLlxuICAgIHJlcGxhY2UoLyUyNC9nLCAnJCcpLlxuICAgIHJlcGxhY2UoLyUyQy9naSwgJywnKS5cbiAgICByZXBsYWNlKC8lMjAvZywgJysnKS5cbiAgICByZXBsYWNlKC8lNUIvZ2ksICdbJykuXG4gICAgcmVwbGFjZSgvJTVEL2dpLCAnXScpO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgVVJMIGJ5IGFwcGVuZGluZyBwYXJhbXMgdG8gdGhlIGVuZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIGJhc2Ugb2YgdGhlIHVybCAoZS5nLiwgaHR0cDovL3d3dy5nb29nbGUuY29tKVxuICogQHBhcmFtIHtvYmplY3R9IFtwYXJhbXNdIFRoZSBwYXJhbXMgdG8gYmUgYXBwZW5kZWRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBmb3JtYXR0ZWQgdXJsXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYnVpbGRVUkwodXJsLCBwYXJhbXMsIHBhcmFtc1NlcmlhbGl6ZXIpIHtcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gIGlmICghcGFyYW1zKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIHZhciBzZXJpYWxpemVkUGFyYW1zO1xuICBpZiAocGFyYW1zU2VyaWFsaXplcikge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBwYXJhbXNTZXJpYWxpemVyKHBhcmFtcyk7XG4gIH0gZWxzZSBpZiAodXRpbHMuaXNVUkxTZWFyY2hQYXJhbXMocGFyYW1zKSkge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgcGFydHMgPSBbXTtcblxuICAgIHV0aWxzLmZvckVhY2gocGFyYW1zLCBmdW5jdGlvbiBzZXJpYWxpemUodmFsLCBrZXkpIHtcbiAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdHlwZW9mIHZhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodXRpbHMuaXNBcnJheSh2YWwpKSB7XG4gICAgICAgIGtleSA9IGtleSArICdbXSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWwgPSBbdmFsXTtcbiAgICAgIH1cblxuICAgICAgdXRpbHMuZm9yRWFjaCh2YWwsIGZ1bmN0aW9uIHBhcnNlVmFsdWUodikge1xuICAgICAgICBpZiAodXRpbHMuaXNEYXRlKHYpKSB7XG4gICAgICAgICAgdiA9IHYudG9JU09TdHJpbmcoKTtcbiAgICAgICAgfSBlbHNlIGlmICh1dGlscy5pc09iamVjdCh2KSkge1xuICAgICAgICAgIHYgPSBKU09OLnN0cmluZ2lmeSh2KTtcbiAgICAgICAgfVxuICAgICAgICBwYXJ0cy5wdXNoKGVuY29kZShrZXkpICsgJz0nICsgZW5jb2RlKHYpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHBhcnRzLmpvaW4oJyYnKTtcbiAgfVxuXG4gIGlmIChzZXJpYWxpemVkUGFyYW1zKSB7XG4gICAgdmFyIGhhc2htYXJrSW5kZXggPSB1cmwuaW5kZXhPZignIycpO1xuICAgIGlmIChoYXNobWFya0luZGV4ICE9PSAtMSkge1xuICAgICAgdXJsID0gdXJsLnNsaWNlKDAsIGhhc2htYXJrSW5kZXgpO1xuICAgIH1cblxuICAgIHVybCArPSAodXJsLmluZGV4T2YoJz8nKSA9PT0gLTEgPyAnPycgOiAnJicpICsgc2VyaWFsaXplZFBhcmFtcztcbiAgfVxuXG4gIHJldHVybiB1cmw7XG59O1xuIiwiXG52YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQWxlcnQudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9ZjBhYThlYjAmc2NvcGVkPXRydWUmbGFuZz1zY3NzJlwiKTtcblxuaWYodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG5cbnZhciB0cmFuc2Zvcm07XG52YXIgaW5zZXJ0SW50bztcblxuXG5cbnZhciBvcHRpb25zID0ge1wiaG1yXCI6dHJ1ZX1cblxub3B0aW9ucy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm1cbm9wdGlvbnMuaW5zZXJ0SW50byA9IHVuZGVmaW5lZDtcblxudmFyIHVwZGF0ZSA9IHJlcXVpcmUoXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzLmpzXCIpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5pZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2FscztcblxuaWYobW9kdWxlLmhvdCkge1xuXHRtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BbGVydC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1mMGFhOGViMCZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3MmXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BbGVydC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1mMGFhOGViMCZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3MmXCIpO1xuXG5cdFx0aWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG5cblx0XHR2YXIgbG9jYWxzID0gKGZ1bmN0aW9uKGEsIGIpIHtcblx0XHRcdHZhciBrZXksIGlkeCA9IDA7XG5cblx0XHRcdGZvcihrZXkgaW4gYSkge1xuXHRcdFx0XHRpZighYiB8fCBhW2tleV0gIT09IGJba2V5XSkgcmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRpZHgrKztcblx0XHRcdH1cblxuXHRcdFx0Zm9yKGtleSBpbiBiKSBpZHgtLTtcblxuXHRcdFx0cmV0dXJuIGlkeCA9PT0gMDtcblx0XHR9KGNvbnRlbnQubG9jYWxzLCBuZXdDb250ZW50LmxvY2FscykpO1xuXG5cdFx0aWYoIWxvY2FscykgdGhyb3cgbmV3IEVycm9yKCdBYm9ydGluZyBDU1MgSE1SIGR1ZSB0byBjaGFuZ2VkIGNzcy1tb2R1bGVzIGxvY2Fscy4nKTtcblxuXHRcdHVwZGF0ZShuZXdDb250ZW50KTtcblx0fSk7XG5cblx0bW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG59IiwidmFyIHJlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ2J1dHRvbicse3N0YXRpY0NsYXNzOlwiYnV0dG9uLWJhc2VcIixjbGFzczpfdm0uYnV0dG9uU3R5bGUsYXR0cnM6e1widHlwZVwiOlwiYnV0dG9uXCJ9fSxbKF92bS5sb2FkaW5nKT9fYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJpY29uXCJ9LFtfYygncmVmcmVzaC1jdy1pY29uJyx7c3RhdGljQ2xhc3M6XCJzeW5jLWFsdFwiLGF0dHJzOntcInNpemVcIjpcIjE2XCJ9fSldLDEpOl92bS5fZSgpLF92bS5fdihcIiBcIiksX2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwiY29udGVudFwifSxbKCEgX3ZtLmxvYWRpbmcpP192bS5fdChcImRlZmF1bHRcIik6X3ZtLl9lKCldLDIpXSl9XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSIsImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P3JlZi0tNC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQnV0dG9uQmFzZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P3JlZi0tNC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQnV0dG9uQmFzZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCI8dGVtcGxhdGU+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbi1iYXNlXCIgOmNsYXNzPVwiYnV0dG9uU3R5bGVcIiB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgIDxkaXYgdi1pZj1cImxvYWRpbmdcIiBjbGFzcz1cImljb25cIj5cbiAgICAgICAgICAgIDxyZWZyZXNoLWN3LWljb24gc2l6ZT1cIjE2XCIgY2xhc3M9XCJzeW5jLWFsdFwiIC8+XG5cdFx0PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgICAgICA8c2xvdCB2LWlmPVwiISBsb2FkaW5nXCI+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2J1dHRvbj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgaW1wb3J0IHsgUmVmcmVzaEN3SWNvbiB9IGZyb20gJ3Z1ZS1mZWF0aGVyLWljb25zJ1xuXG4gICAgZXhwb3J0IGRlZmF1bHQge1xuICAgICAgICBuYW1lOiAnQnV0dG9uQmFzZScsXG4gICAgICAgIHByb3BzOiBbJ2J1dHRvblN0eWxlJywgJ2xvYWRpbmcnXSxcbiAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgUmVmcmVzaEN3SWNvbixcbiAgICAgICAgfVxuICAgIH1cbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkIGxhbmc9XCJzY3NzXCI+XG4gICAgQGltcG9ydCAnQGFzc2V0cy92dWVmaWxlbWFuYWdlci9fdmFyaWFibGVzJztcbiAgICBAaW1wb3J0ICdAYXNzZXRzL3Z1ZWZpbGVtYW5hZ2VyL19taXhpbnMnO1xuXG4gICAgLmJ1dHRvbi1iYXNlIHtcbiAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKDE1KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0cmFuc2l0aW9uOiAwLjE1cyBhbGwgZWFzZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMjhweDtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAgICAgLmljb24ge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAmOmFjdGl2ZSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi50aGVtZS1zb2xpZCB7XG5cbiAgICAgICAgICAgIC5jb250ZW50IHtcbiAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLmRhbmdlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKCRkYW5nZXIsIC4xKTtcblxuICAgICAgICAgICAgLmNvbnRlbnQge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkZGFuZ2VyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwb2x5bGluZSwgcGF0aCB7XG4gICAgICAgICAgICAgICAgc3Ryb2tlOiAkZGFuZ2VyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5kYW5nZXItc29saWQge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGRhbmdlcjtcblxuICAgICAgICAgICAgLmNvbnRlbnQge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcG9seWxpbmUsIHBhdGgge1xuICAgICAgICAgICAgICAgIHN0cm9rZTogd2hpdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLnNlY29uZGFyeSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkbGlnaHRfYmFja2dyb3VuZDtcblxuICAgICAgICAgICAgLmNvbnRlbnQge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkdGV4dDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcG9seWxpbmUsIHBhdGgge1xuICAgICAgICAgICAgICAgIHN0cm9rZTogJHRleHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc3luYy1hbHQge1xuICAgICAgICBhbmltYXRpb246IHNwaW4gMXMgbGluZWFyIGluZmluaXRlO1xuICAgIH1cblxuICAgIEBrZXlmcmFtZXMgc3BpbiB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDApO1xuICAgICAgICB9XG4gICAgICAgIDEwMCUge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcblxuICAgICAgICAuYnV0dG9uLWJhc2Uge1xuXG4gICAgICAgICAgICAmLnNlY29uZGFyeSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJGRhcmtfbW9kZV9mb3JlZ3JvdW5kO1xuXG4gICAgICAgICAgICAgICAgLmNvbnRlbnQge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGRhcmtfbW9kZV90ZXh0X3ByaW1hcnk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcG9seWxpbmUsIHBhdGgge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAucG9wdXAtd3JhcHBlciB7XG4gICAgICAgICAgICAuYnV0dG9uLWJhc2Uuc2Vjb25kYXJ5IHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaWdodGVuKCRkYXJrX21vZGVfZm9yZWdyb3VuZCwgMyUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vQnV0dG9uQmFzZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDAxYzc5NDImc2NvcGVkPXRydWUmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQnV0dG9uQmFzZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0J1dHRvbkJhc2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5pbXBvcnQgc3R5bGUwIGZyb20gXCIuL0J1dHRvbkJhc2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NDAxYzc5NDImc2NvcGVkPXRydWUmbGFuZz1zY3NzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCI0MDFjNzk0MlwiLFxuICBudWxsXG4gIFxuKVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBVcGRhdGUgYW4gRXJyb3Igd2l0aCB0aGUgc3BlY2lmaWVkIGNvbmZpZywgZXJyb3IgY29kZSwgYW5kIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSB7RXJyb3J9IGVycm9yIFRoZSBlcnJvciB0byB1cGRhdGUuXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIFRoZSBjb25maWcuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2NvZGVdIFRoZSBlcnJvciBjb2RlIChmb3IgZXhhbXBsZSwgJ0VDT05OQUJPUlRFRCcpLlxuICogQHBhcmFtIHtPYmplY3R9IFtyZXF1ZXN0XSBUaGUgcmVxdWVzdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVzcG9uc2VdIFRoZSByZXNwb25zZS5cbiAqIEByZXR1cm5zIHtFcnJvcn0gVGhlIGVycm9yLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGVuaGFuY2VFcnJvcihlcnJvciwgY29uZmlnLCBjb2RlLCByZXF1ZXN0LCByZXNwb25zZSkge1xuICBlcnJvci5jb25maWcgPSBjb25maWc7XG4gIGlmIChjb2RlKSB7XG4gICAgZXJyb3IuY29kZSA9IGNvZGU7XG4gIH1cblxuICBlcnJvci5yZXF1ZXN0ID0gcmVxdWVzdDtcbiAgZXJyb3IucmVzcG9uc2UgPSByZXNwb25zZTtcbiAgZXJyb3IuaXNBeGlvc0Vycm9yID0gdHJ1ZTtcblxuICBlcnJvci50b0pTT04gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gU3RhbmRhcmRcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIC8vIE1pY3Jvc29mdFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICBudW1iZXI6IHRoaXMubnVtYmVyLFxuICAgICAgLy8gTW96aWxsYVxuICAgICAgZmlsZU5hbWU6IHRoaXMuZmlsZU5hbWUsXG4gICAgICBsaW5lTnVtYmVyOiB0aGlzLmxpbmVOdW1iZXIsXG4gICAgICBjb2x1bW5OdW1iZXI6IHRoaXMuY29sdW1uTnVtYmVyLFxuICAgICAgc3RhY2s6IHRoaXMuc3RhY2ssXG4gICAgICAvLyBBeGlvc1xuICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZyxcbiAgICAgIGNvZGU6IHRoaXMuY29kZVxuICAgIH07XG4gIH07XG4gIHJldHVybiBlcnJvcjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAoXG4gIHV0aWxzLmlzU3RhbmRhcmRCcm93c2VyRW52KCkgP1xuXG4gIC8vIFN0YW5kYXJkIGJyb3dzZXIgZW52cyBoYXZlIGZ1bGwgc3VwcG9ydCBvZiB0aGUgQVBJcyBuZWVkZWQgdG8gdGVzdFxuICAvLyB3aGV0aGVyIHRoZSByZXF1ZXN0IFVSTCBpcyBvZiB0aGUgc2FtZSBvcmlnaW4gYXMgY3VycmVudCBsb2NhdGlvbi5cbiAgICAoZnVuY3Rpb24gc3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgICAgdmFyIG1zaWUgPSAvKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuICAgICAgdmFyIHVybFBhcnNpbmdOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgdmFyIG9yaWdpblVSTDtcblxuICAgICAgLyoqXG4gICAgKiBQYXJzZSBhIFVSTCB0byBkaXNjb3ZlciBpdCdzIGNvbXBvbmVudHNcbiAgICAqXG4gICAgKiBAcGFyYW0ge1N0cmluZ30gdXJsIFRoZSBVUkwgdG8gYmUgcGFyc2VkXG4gICAgKiBAcmV0dXJucyB7T2JqZWN0fVxuICAgICovXG4gICAgICBmdW5jdGlvbiByZXNvbHZlVVJMKHVybCkge1xuICAgICAgICB2YXIgaHJlZiA9IHVybDtcblxuICAgICAgICBpZiAobXNpZSkge1xuICAgICAgICAvLyBJRSBuZWVkcyBhdHRyaWJ1dGUgc2V0IHR3aWNlIHRvIG5vcm1hbGl6ZSBwcm9wZXJ0aWVzXG4gICAgICAgICAgdXJsUGFyc2luZ05vZGUuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZik7XG4gICAgICAgICAgaHJlZiA9IHVybFBhcnNpbmdOb2RlLmhyZWY7XG4gICAgICAgIH1cblxuICAgICAgICB1cmxQYXJzaW5nTm9kZS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmKTtcblxuICAgICAgICAvLyB1cmxQYXJzaW5nTm9kZSBwcm92aWRlcyB0aGUgVXJsVXRpbHMgaW50ZXJmYWNlIC0gaHR0cDovL3VybC5zcGVjLndoYXR3Zy5vcmcvI3VybHV0aWxzXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaHJlZjogdXJsUGFyc2luZ05vZGUuaHJlZixcbiAgICAgICAgICBwcm90b2NvbDogdXJsUGFyc2luZ05vZGUucHJvdG9jb2wgPyB1cmxQYXJzaW5nTm9kZS5wcm90b2NvbC5yZXBsYWNlKC86JC8sICcnKSA6ICcnLFxuICAgICAgICAgIGhvc3Q6IHVybFBhcnNpbmdOb2RlLmhvc3QsXG4gICAgICAgICAgc2VhcmNoOiB1cmxQYXJzaW5nTm9kZS5zZWFyY2ggPyB1cmxQYXJzaW5nTm9kZS5zZWFyY2gucmVwbGFjZSgvXlxcPy8sICcnKSA6ICcnLFxuICAgICAgICAgIGhhc2g6IHVybFBhcnNpbmdOb2RlLmhhc2ggPyB1cmxQYXJzaW5nTm9kZS5oYXNoLnJlcGxhY2UoL14jLywgJycpIDogJycsXG4gICAgICAgICAgaG9zdG5hbWU6IHVybFBhcnNpbmdOb2RlLmhvc3RuYW1lLFxuICAgICAgICAgIHBvcnQ6IHVybFBhcnNpbmdOb2RlLnBvcnQsXG4gICAgICAgICAgcGF0aG5hbWU6ICh1cmxQYXJzaW5nTm9kZS5wYXRobmFtZS5jaGFyQXQoMCkgPT09ICcvJykgP1xuICAgICAgICAgICAgdXJsUGFyc2luZ05vZGUucGF0aG5hbWUgOlxuICAgICAgICAgICAgJy8nICsgdXJsUGFyc2luZ05vZGUucGF0aG5hbWVcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgb3JpZ2luVVJMID0gcmVzb2x2ZVVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG5cbiAgICAgIC8qKlxuICAgICogRGV0ZXJtaW5lIGlmIGEgVVJMIHNoYXJlcyB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIGN1cnJlbnQgbG9jYXRpb25cbiAgICAqXG4gICAgKiBAcGFyYW0ge1N0cmluZ30gcmVxdWVzdFVSTCBUaGUgVVJMIHRvIHRlc3RcbiAgICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIFVSTCBzaGFyZXMgdGhlIHNhbWUgb3JpZ2luLCBvdGhlcndpc2UgZmFsc2VcbiAgICAqL1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIGlzVVJMU2FtZU9yaWdpbihyZXF1ZXN0VVJMKSB7XG4gICAgICAgIHZhciBwYXJzZWQgPSAodXRpbHMuaXNTdHJpbmcocmVxdWVzdFVSTCkpID8gcmVzb2x2ZVVSTChyZXF1ZXN0VVJMKSA6IHJlcXVlc3RVUkw7XG4gICAgICAgIHJldHVybiAocGFyc2VkLnByb3RvY29sID09PSBvcmlnaW5VUkwucHJvdG9jb2wgJiZcbiAgICAgICAgICAgIHBhcnNlZC5ob3N0ID09PSBvcmlnaW5VUkwuaG9zdCk7XG4gICAgICB9O1xuICAgIH0pKCkgOlxuXG4gIC8vIE5vbiBzdGFuZGFyZCBicm93c2VyIGVudnMgKHdlYiB3b3JrZXJzLCByZWFjdC1uYXRpdmUpIGxhY2sgbmVlZGVkIHN1cHBvcnQuXG4gICAgKGZ1bmN0aW9uIG5vblN0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiBpc1VSTFNhbWVPcmlnaW4oKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfTtcbiAgICB9KSgpXG4pO1xuIiwiXG52YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIik7XG5cbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuXG52YXIgdHJhbnNmb3JtO1xudmFyIGluc2VydEludG87XG5cblxuXG52YXIgb3B0aW9ucyA9IHtcImhtclwiOnRydWV9XG5cbm9wdGlvbnMudHJhbnNmb3JtID0gdHJhbnNmb3JtXG5vcHRpb25zLmluc2VydEludG8gPSB1bmRlZmluZWQ7XG5cbnZhciB1cGRhdGUgPSByZXF1aXJlKFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlcy5qc1wiKShjb250ZW50LCBvcHRpb25zKTtcblxuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG5cbmlmKG1vZHVsZS5ob3QpIHtcblx0bW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIiwgZnVuY3Rpb24oKSB7XG5cdFx0dmFyIG5ld0NvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS03LTIhLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTctMyEuLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FwcC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIpO1xuXG5cdFx0aWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG5cblx0XHR2YXIgbG9jYWxzID0gKGZ1bmN0aW9uKGEsIGIpIHtcblx0XHRcdHZhciBrZXksIGlkeCA9IDA7XG5cblx0XHRcdGZvcihrZXkgaW4gYSkge1xuXHRcdFx0XHRpZighYiB8fCBhW2tleV0gIT09IGJba2V5XSkgcmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRpZHgrKztcblx0XHRcdH1cblxuXHRcdFx0Zm9yKGtleSBpbiBiKSBpZHgtLTtcblxuXHRcdFx0cmV0dXJuIGlkeCA9PT0gMDtcblx0XHR9KGNvbnRlbnQubG9jYWxzLCBuZXdDb250ZW50LmxvY2FscykpO1xuXG5cdFx0aWYoIWxvY2FscykgdGhyb3cgbmV3IEVycm9yKCdBYm9ydGluZyBDU1MgSE1SIGR1ZSB0byBjaGFuZ2VkIGNzcy1tb2R1bGVzIGxvY2Fscy4nKTtcblxuXHRcdHVwZGF0ZShuZXdDb250ZW50KTtcblx0fSk7XG5cblx0bW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG59IiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVXNlclByb2ZpbGVNb2JpbGVNZW51LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTQ0YzZmYzA1JnNjb3BlZD10cnVlJmxhbmc9c2NzcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVXNlclByb2ZpbGVNb2JpbGVNZW51LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTQ0YzZmYzA1JnNjb3BlZD10cnVlJmxhbmc9c2NzcyZcIiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGNyZWF0ZUVycm9yID0gcmVxdWlyZSgnLi9jcmVhdGVFcnJvcicpO1xuXG4vKipcbiAqIFJlc29sdmUgb3IgcmVqZWN0IGEgUHJvbWlzZSBiYXNlZCBvbiByZXNwb25zZSBzdGF0dXMuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVzb2x2ZSBBIGZ1bmN0aW9uIHRoYXQgcmVzb2x2ZXMgdGhlIHByb21pc2UuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWplY3QgQSBmdW5jdGlvbiB0aGF0IHJlamVjdHMgdGhlIHByb21pc2UuXG4gKiBAcGFyYW0ge29iamVjdH0gcmVzcG9uc2UgVGhlIHJlc3BvbnNlLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHJlc3BvbnNlKSB7XG4gIHZhciB2YWxpZGF0ZVN0YXR1cyA9IHJlc3BvbnNlLmNvbmZpZy52YWxpZGF0ZVN0YXR1cztcbiAgaWYgKCF2YWxpZGF0ZVN0YXR1cyB8fCB2YWxpZGF0ZVN0YXR1cyhyZXNwb25zZS5zdGF0dXMpKSB7XG4gICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gIH0gZWxzZSB7XG4gICAgcmVqZWN0KGNyZWF0ZUVycm9yKFxuICAgICAgJ1JlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgJyArIHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgIHJlc3BvbnNlLmNvbmZpZyxcbiAgICAgIG51bGwsXG4gICAgICByZXNwb25zZS5yZXF1ZXN0LFxuICAgICAgcmVzcG9uc2VcbiAgICApKTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcblxuLyoqXG4gKiBDb25maWctc3BlY2lmaWMgbWVyZ2UtZnVuY3Rpb24gd2hpY2ggY3JlYXRlcyBhIG5ldyBjb25maWctb2JqZWN0XG4gKiBieSBtZXJnaW5nIHR3byBjb25maWd1cmF0aW9uIG9iamVjdHMgdG9nZXRoZXIuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZzFcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBOZXcgb2JqZWN0IHJlc3VsdGluZyBmcm9tIG1lcmdpbmcgY29uZmlnMiB0byBjb25maWcxXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbWVyZ2VDb25maWcoY29uZmlnMSwgY29uZmlnMikge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgY29uZmlnMiA9IGNvbmZpZzIgfHwge307XG4gIHZhciBjb25maWcgPSB7fTtcblxuICB2YXIgdmFsdWVGcm9tQ29uZmlnMktleXMgPSBbJ3VybCcsICdtZXRob2QnLCAncGFyYW1zJywgJ2RhdGEnXTtcbiAgdmFyIG1lcmdlRGVlcFByb3BlcnRpZXNLZXlzID0gWydoZWFkZXJzJywgJ2F1dGgnLCAncHJveHknXTtcbiAgdmFyIGRlZmF1bHRUb0NvbmZpZzJLZXlzID0gW1xuICAgICdiYXNlVVJMJywgJ3VybCcsICd0cmFuc2Zvcm1SZXF1ZXN0JywgJ3RyYW5zZm9ybVJlc3BvbnNlJywgJ3BhcmFtc1NlcmlhbGl6ZXInLFxuICAgICd0aW1lb3V0JywgJ3dpdGhDcmVkZW50aWFscycsICdhZGFwdGVyJywgJ3Jlc3BvbnNlVHlwZScsICd4c3JmQ29va2llTmFtZScsXG4gICAgJ3hzcmZIZWFkZXJOYW1lJywgJ29uVXBsb2FkUHJvZ3Jlc3MnLCAnb25Eb3dubG9hZFByb2dyZXNzJyxcbiAgICAnbWF4Q29udGVudExlbmd0aCcsICd2YWxpZGF0ZVN0YXR1cycsICdtYXhSZWRpcmVjdHMnLCAnaHR0cEFnZW50JyxcbiAgICAnaHR0cHNBZ2VudCcsICdjYW5jZWxUb2tlbicsICdzb2NrZXRQYXRoJ1xuICBdO1xuXG4gIHV0aWxzLmZvckVhY2godmFsdWVGcm9tQ29uZmlnMktleXMsIGZ1bmN0aW9uIHZhbHVlRnJvbUNvbmZpZzIocHJvcCkge1xuICAgIGlmICh0eXBlb2YgY29uZmlnMltwcm9wXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbmZpZ1twcm9wXSA9IGNvbmZpZzJbcHJvcF07XG4gICAgfVxuICB9KTtcblxuICB1dGlscy5mb3JFYWNoKG1lcmdlRGVlcFByb3BlcnRpZXNLZXlzLCBmdW5jdGlvbiBtZXJnZURlZXBQcm9wZXJ0aWVzKHByb3ApIHtcbiAgICBpZiAodXRpbHMuaXNPYmplY3QoY29uZmlnMltwcm9wXSkpIHtcbiAgICAgIGNvbmZpZ1twcm9wXSA9IHV0aWxzLmRlZXBNZXJnZShjb25maWcxW3Byb3BdLCBjb25maWcyW3Byb3BdKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb25maWcyW3Byb3BdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uZmlnW3Byb3BdID0gY29uZmlnMltwcm9wXTtcbiAgICB9IGVsc2UgaWYgKHV0aWxzLmlzT2JqZWN0KGNvbmZpZzFbcHJvcF0pKSB7XG4gICAgICBjb25maWdbcHJvcF0gPSB1dGlscy5kZWVwTWVyZ2UoY29uZmlnMVtwcm9wXSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgY29uZmlnMVtwcm9wXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbmZpZ1twcm9wXSA9IGNvbmZpZzFbcHJvcF07XG4gICAgfVxuICB9KTtcblxuICB1dGlscy5mb3JFYWNoKGRlZmF1bHRUb0NvbmZpZzJLZXlzLCBmdW5jdGlvbiBkZWZhdWx0VG9Db25maWcyKHByb3ApIHtcbiAgICBpZiAodHlwZW9mIGNvbmZpZzJbcHJvcF0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25maWdbcHJvcF0gPSBjb25maWcyW3Byb3BdO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbmZpZzFbcHJvcF0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25maWdbcHJvcF0gPSBjb25maWcxW3Byb3BdO1xuICAgIH1cbiAgfSk7XG5cbiAgdmFyIGF4aW9zS2V5cyA9IHZhbHVlRnJvbUNvbmZpZzJLZXlzXG4gICAgLmNvbmNhdChtZXJnZURlZXBQcm9wZXJ0aWVzS2V5cylcbiAgICAuY29uY2F0KGRlZmF1bHRUb0NvbmZpZzJLZXlzKTtcblxuICB2YXIgb3RoZXJLZXlzID0gT2JqZWN0XG4gICAgLmtleXMoY29uZmlnMilcbiAgICAuZmlsdGVyKGZ1bmN0aW9uIGZpbHRlckF4aW9zS2V5cyhrZXkpIHtcbiAgICAgIHJldHVybiBheGlvc0tleXMuaW5kZXhPZihrZXkpID09PSAtMTtcbiAgICB9KTtcblxuICB1dGlscy5mb3JFYWNoKG90aGVyS2V5cywgZnVuY3Rpb24gb3RoZXJLZXlzRGVmYXVsdFRvQ29uZmlnMihwcm9wKSB7XG4gICAgaWYgKHR5cGVvZiBjb25maWcyW3Byb3BdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uZmlnW3Byb3BdID0gY29uZmlnMltwcm9wXTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb25maWcxW3Byb3BdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uZmlnW3Byb3BdID0gY29uZmlnMVtwcm9wXTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBjb25maWc7XG59O1xuIiwiZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2xpYi9jc3MtYmFzZS5qc1wiKShmYWxzZSk7XG4vLyBpbXBvcnRzXG5cblxuLy8gbW9kdWxlXG5leHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCIubW9iaWxlLWhlYWRlcltkYXRhLXYtNDNjZTFjZDBdIHtcXG4gIHBhZGRpbmc6IDEwcHggMDtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGJhY2tncm91bmQ6IHdoaXRlO1xcbiAgcG9zaXRpb246IC13ZWJraXQtc3RpY2t5O1xcbiAgcG9zaXRpb246IHN0aWNreTtcXG4gIGRpc3BsYXk6IG5vbmU7XFxuICB6LWluZGV4OiA2O1xcbiAgdG9wOiAwO1xcbn1cXG4ubW9iaWxlLWhlYWRlciA+IGRpdltkYXRhLXYtNDNjZTFjZDBdIHtcXG4gIGZsZXgtZ3JvdzogMTtcXG4gIGFsaWduLXNlbGY6IGNlbnRlcjtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxufVxcbi5tb2JpbGUtaGVhZGVyIC5nby1iYWNrW2RhdGEtdi00M2NlMWNkMF0ge1xcbiAgdGV4dC1hbGlnbjogbGVmdDtcXG59XFxuLm1vYmlsZS1oZWFkZXIgLmxvY2F0aW9uLW5hbWVbZGF0YS12LTQzY2UxY2QwXSB7XFxuICBsaW5lLWhlaWdodDogMTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXG4gIGZvbnQtc2l6ZTogMC45Mzc1ZW07XFxuICBjb2xvcjogIzFCMjUzOTtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICBtYXgtd2lkdGg6IDIyMHB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbn1cXG4ubW9iaWxlLWhlYWRlciAubW9iaWxlLW1lbnVbZGF0YS12LTQzY2UxY2QwXSB7XFxuICB0ZXh0LWFsaWduOiByaWdodDtcXG59XFxuLm1vYmlsZS1oZWFkZXIgLmljb25bZGF0YS12LTQzY2UxY2QwXSB7XFxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbiAgbWFyZ2luLXRvcDogLTRweDtcXG59XFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2OTBweCkge1xcbi5tb2JpbGUtaGVhZGVyW2RhdGEtdi00M2NlMWNkMF0ge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xcbn1cXG59XFxuQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xcbi5tb2JpbGUtaGVhZGVyW2RhdGEtdi00M2NlMWNkMF0ge1xcbiAgICBiYWNrZ3JvdW5kOiAjMTMxNDE0O1xcbn1cXG4ubW9iaWxlLWhlYWRlciAubG9jYXRpb24tbmFtZVtkYXRhLXYtNDNjZTFjZDBdIHtcXG4gICAgY29sb3I6ICNiZWM2Y2Y7XFxufVxcbn1cXG5cIiwgXCJcIl0pO1xuXG4vLyBleHBvcnRzXG4iLCJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5tb2JpbGUtbmF2aWdhdGlvbltkYXRhLXYtMjI2OTliMjVdIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgYm90dG9tOiAwO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgei1pbmRleDogOTk7XFxufVxcbi5tb2JpbGUtbmF2aWdhdGlvbiAubW9iaWxlLW1lbnUtbGFiZWxbZGF0YS12LTIyNjk5YjI1XSB7XFxuICBtYXJnaW4tdG9wOiAzMHB4O1xcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xcbiAgZm9udC1zaXplOiAwLjY4NzVlbTtcXG4gIGNvbG9yOiByZ2JhKDI3LCAzNywgNTcsIDAuNyk7XFxuICBkaXNwbGF5OiBibG9jaztcXG59XFxuLm1vYmlsZS1uYXZpZ2F0aW9uIC5tb2JpbGUtbWVudS1sYWJlbFtkYXRhLXYtMjI2OTliMjVdOmZpcnN0LWNoaWxkIHtcXG4gIG1hcmdpbi10b3A6IDA7XFxufVxcbkBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcXG4ubW9iaWxlLW5hdmlnYXRpb24gLm1vYmlsZS1tZW51LWxhYmVsW2RhdGEtdi0yMjY5OWIyNV0ge1xcbiAgICBjb2xvcjogIzdkODU4YztcXG59XFxufVxcblwiLCBcIlwiXSk7XG5cbi8vIGV4cG9ydHNcbiIsImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikoZmFsc2UpO1xuLy8gaW1wb3J0c1xuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiQGltcG9ydCB1cmwoaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1OdW5pdG86d2dodEAyMDA7MzAwOzQwMDs2MDA7NzAwOzgwMDs5MDAmZGlzcGxheT1zd2FwKTtcIiwgXCJcIl0pO1xuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIlt2LWNsb2FrXSxcXG5bdi1jbG9ha10gPiAqIHtcXG4gIGRpc3BsYXk6IG5vbmU7XFxufVxcbioge1xcbiAgb3V0bGluZTogMDtcXG4gIG1hcmdpbjogMDtcXG4gIHBhZGRpbmc6IDA7XFxuICBmb250LWZhbWlseTogJ051bml0bycsIHNhbnMtc2VyaWY7XFxuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcXG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApO1xcbiAgZm9udC1zaXplOiAxNnB4O1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgY29sb3I6ICMxQjI1Mzk7XFxufVxcbiNhdXRoIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbn1cXG4jdnVlZmlsZW1hbmFnZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBvdmVyZmxvdy15OiBhdXRvO1xcbiAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7XFxufVxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjkwcHgpIHtcXG4uaXMtc2NhbGVkLWRvd24ge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpO1xcbn1cXG59XFxuQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xcbioge1xcbiAgICBjb2xvcjogI2JlYzZjZjtcXG59XFxuYm9keSwgaHRtbCB7XFxuICAgIGJhY2tncm91bmQ6ICMxMzE0MTQ7XFxuICAgIGNvbG9yOiAjYmVjNmNmO1xcbn1cXG5ib2R5IGltZywgaHRtbCBpbWcge1xcbiAgICBvcGFjaXR5OiAuOTU7XFxufVxcbn1cXG5cIiwgXCJcIl0pO1xuXG4vLyBleHBvcnRzXG4iLCJ2YXIgc2NvcGUgPSAodHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBnbG9iYWwpIHx8XG4gICAgICAgICAgICAodHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgJiYgc2VsZikgfHxcbiAgICAgICAgICAgIHdpbmRvdztcbnZhciBhcHBseSA9IEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseTtcblxuLy8gRE9NIEFQSXMsIGZvciBjb21wbGV0ZW5lc3NcblxuZXhwb3J0cy5zZXRUaW1lb3V0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgVGltZW91dChhcHBseS5jYWxsKHNldFRpbWVvdXQsIHNjb3BlLCBhcmd1bWVudHMpLCBjbGVhclRpbWVvdXQpO1xufTtcbmV4cG9ydHMuc2V0SW50ZXJ2YWwgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBUaW1lb3V0KGFwcGx5LmNhbGwoc2V0SW50ZXJ2YWwsIHNjb3BlLCBhcmd1bWVudHMpLCBjbGVhckludGVydmFsKTtcbn07XG5leHBvcnRzLmNsZWFyVGltZW91dCA9XG5leHBvcnRzLmNsZWFySW50ZXJ2YWwgPSBmdW5jdGlvbih0aW1lb3V0KSB7XG4gIGlmICh0aW1lb3V0KSB7XG4gICAgdGltZW91dC5jbG9zZSgpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBUaW1lb3V0KGlkLCBjbGVhckZuKSB7XG4gIHRoaXMuX2lkID0gaWQ7XG4gIHRoaXMuX2NsZWFyRm4gPSBjbGVhckZuO1xufVxuVGltZW91dC5wcm90b3R5cGUudW5yZWYgPSBUaW1lb3V0LnByb3RvdHlwZS5yZWYgPSBmdW5jdGlvbigpIHt9O1xuVGltZW91dC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5fY2xlYXJGbi5jYWxsKHNjb3BlLCB0aGlzLl9pZCk7XG59O1xuXG4vLyBEb2VzIG5vdCBzdGFydCB0aGUgdGltZSwganVzdCBzZXRzIHVwIHRoZSBtZW1iZXJzIG5lZWRlZC5cbmV4cG9ydHMuZW5yb2xsID0gZnVuY3Rpb24oaXRlbSwgbXNlY3MpIHtcbiAgY2xlYXJUaW1lb3V0KGl0ZW0uX2lkbGVUaW1lb3V0SWQpO1xuICBpdGVtLl9pZGxlVGltZW91dCA9IG1zZWNzO1xufTtcblxuZXhwb3J0cy51bmVucm9sbCA9IGZ1bmN0aW9uKGl0ZW0pIHtcbiAgY2xlYXJUaW1lb3V0KGl0ZW0uX2lkbGVUaW1lb3V0SWQpO1xuICBpdGVtLl9pZGxlVGltZW91dCA9IC0xO1xufTtcblxuZXhwb3J0cy5fdW5yZWZBY3RpdmUgPSBleHBvcnRzLmFjdGl2ZSA9IGZ1bmN0aW9uKGl0ZW0pIHtcbiAgY2xlYXJUaW1lb3V0KGl0ZW0uX2lkbGVUaW1lb3V0SWQpO1xuXG4gIHZhciBtc2VjcyA9IGl0ZW0uX2lkbGVUaW1lb3V0O1xuICBpZiAobXNlY3MgPj0gMCkge1xuICAgIGl0ZW0uX2lkbGVUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uIG9uVGltZW91dCgpIHtcbiAgICAgIGlmIChpdGVtLl9vblRpbWVvdXQpXG4gICAgICAgIGl0ZW0uX29uVGltZW91dCgpO1xuICAgIH0sIG1zZWNzKTtcbiAgfVxufTtcblxuLy8gc2V0aW1tZWRpYXRlIGF0dGFjaGVzIGl0c2VsZiB0byB0aGUgZ2xvYmFsIG9iamVjdFxucmVxdWlyZShcInNldGltbWVkaWF0ZVwiKTtcbi8vIE9uIHNvbWUgZXhvdGljIGVudmlyb25tZW50cywgaXQncyBub3QgY2xlYXIgd2hpY2ggb2JqZWN0IGBzZXRpbW1lZGlhdGVgIHdhc1xuLy8gYWJsZSB0byBpbnN0YWxsIG9udG8uICBTZWFyY2ggZWFjaCBwb3NzaWJpbGl0eSBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGVcbi8vIGBzZXRpbW1lZGlhdGVgIGxpYnJhcnkuXG5leHBvcnRzLnNldEltbWVkaWF0ZSA9ICh0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiAmJiBzZWxmLnNldEltbWVkaWF0ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgJiYgZ2xvYmFsLnNldEltbWVkaWF0ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMgJiYgdGhpcy5zZXRJbW1lZGlhdGUpO1xuZXhwb3J0cy5jbGVhckltbWVkaWF0ZSA9ICh0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiAmJiBzZWxmLmNsZWFySW1tZWRpYXRlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiICYmIGdsb2JhbC5jbGVhckltbWVkaWF0ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcyAmJiB0aGlzLmNsZWFySW1tZWRpYXRlKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xudmFyIHRyYW5zZm9ybURhdGEgPSByZXF1aXJlKCcuL3RyYW5zZm9ybURhdGEnKTtcbnZhciBpc0NhbmNlbCA9IHJlcXVpcmUoJy4uL2NhbmNlbC9pc0NhbmNlbCcpO1xudmFyIGRlZmF1bHRzID0gcmVxdWlyZSgnLi4vZGVmYXVsdHMnKTtcblxuLyoqXG4gKiBUaHJvd3MgYSBgQ2FuY2VsYCBpZiBjYW5jZWxsYXRpb24gaGFzIGJlZW4gcmVxdWVzdGVkLlxuICovXG5mdW5jdGlvbiB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZykge1xuICBpZiAoY29uZmlnLmNhbmNlbFRva2VuKSB7XG4gICAgY29uZmlnLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKTtcbiAgfVxufVxuXG4vKipcbiAqIERpc3BhdGNoIGEgcmVxdWVzdCB0byB0aGUgc2VydmVyIHVzaW5nIHRoZSBjb25maWd1cmVkIGFkYXB0ZXIuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnIHRoYXQgaXMgdG8gYmUgdXNlZCBmb3IgdGhlIHJlcXVlc3RcbiAqIEByZXR1cm5zIHtQcm9taXNlfSBUaGUgUHJvbWlzZSB0byBiZSBmdWxmaWxsZWRcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBkaXNwYXRjaFJlcXVlc3QoY29uZmlnKSB7XG4gIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcblxuICAvLyBFbnN1cmUgaGVhZGVycyBleGlzdFxuICBjb25maWcuaGVhZGVycyA9IGNvbmZpZy5oZWFkZXJzIHx8IHt9O1xuXG4gIC8vIFRyYW5zZm9ybSByZXF1ZXN0IGRhdGFcbiAgY29uZmlnLmRhdGEgPSB0cmFuc2Zvcm1EYXRhKFxuICAgIGNvbmZpZy5kYXRhLFxuICAgIGNvbmZpZy5oZWFkZXJzLFxuICAgIGNvbmZpZy50cmFuc2Zvcm1SZXF1ZXN0XG4gICk7XG5cbiAgLy8gRmxhdHRlbiBoZWFkZXJzXG4gIGNvbmZpZy5oZWFkZXJzID0gdXRpbHMubWVyZ2UoXG4gICAgY29uZmlnLmhlYWRlcnMuY29tbW9uIHx8IHt9LFxuICAgIGNvbmZpZy5oZWFkZXJzW2NvbmZpZy5tZXRob2RdIHx8IHt9LFxuICAgIGNvbmZpZy5oZWFkZXJzXG4gICk7XG5cbiAgdXRpbHMuZm9yRWFjaChcbiAgICBbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCcsICdwb3N0JywgJ3B1dCcsICdwYXRjaCcsICdjb21tb24nXSxcbiAgICBmdW5jdGlvbiBjbGVhbkhlYWRlckNvbmZpZyhtZXRob2QpIHtcbiAgICAgIGRlbGV0ZSBjb25maWcuaGVhZGVyc1ttZXRob2RdO1xuICAgIH1cbiAgKTtcblxuICB2YXIgYWRhcHRlciA9IGNvbmZpZy5hZGFwdGVyIHx8IGRlZmF1bHRzLmFkYXB0ZXI7XG5cbiAgcmV0dXJuIGFkYXB0ZXIoY29uZmlnKS50aGVuKGZ1bmN0aW9uIG9uQWRhcHRlclJlc29sdXRpb24ocmVzcG9uc2UpIHtcbiAgICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgICAvLyBUcmFuc2Zvcm0gcmVzcG9uc2UgZGF0YVxuICAgIHJlc3BvbnNlLmRhdGEgPSB0cmFuc2Zvcm1EYXRhKFxuICAgICAgcmVzcG9uc2UuZGF0YSxcbiAgICAgIHJlc3BvbnNlLmhlYWRlcnMsXG4gICAgICBjb25maWcudHJhbnNmb3JtUmVzcG9uc2VcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9LCBmdW5jdGlvbiBvbkFkYXB0ZXJSZWplY3Rpb24ocmVhc29uKSB7XG4gICAgaWYgKCFpc0NhbmNlbChyZWFzb24pKSB7XG4gICAgICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgICAgIC8vIFRyYW5zZm9ybSByZXNwb25zZSBkYXRhXG4gICAgICBpZiAocmVhc29uICYmIHJlYXNvbi5yZXNwb25zZSkge1xuICAgICAgICByZWFzb24ucmVzcG9uc2UuZGF0YSA9IHRyYW5zZm9ybURhdGEoXG4gICAgICAgICAgcmVhc29uLnJlc3BvbnNlLmRhdGEsXG4gICAgICAgICAgcmVhc29uLnJlc3BvbnNlLmhlYWRlcnMsXG4gICAgICAgICAgY29uZmlnLnRyYW5zZm9ybVJlc3BvbnNlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlYXNvbik7XG4gIH0pO1xufTtcbiIsImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikoZmFsc2UpO1xuLy8gaW1wb3J0c1xuXG5cbi8vIG1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLmZhZGUtZW50ZXItYWN0aXZlW2RhdGEtdi0zNmMzNjdmZV0sXFxuLmZhZGUtbGVhdmUtYWN0aXZlW2RhdGEtdi0zNmMzNjdmZV0ge1xcbiAgdHJhbnNpdGlvbjogMC4zcyBlYXNlO1xcbn1cXG4uZmFkZS1lbnRlcltkYXRhLXYtMzZjMzY3ZmVdLFxcbi5mYWRlLWxlYXZlLXRvW2RhdGEtdi0zNmMzNjdmZV0ge1xcbiAgb3BhY2l0eTogMDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG59XFxuLnRvYXN0ci1jb250ZW50LXdyYXBwZXJbZGF0YS12LTM2YzM2N2ZlXSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIHBhZGRpbmc6IDE1cHg7XFxuICBib3gtc2hhZG93OiAwIDEwcHggMzBweCByZ2JhKDAsIDAsIDAsIDAuNyk7XFxufVxcbi5wcm9ncmVzc2JhcltkYXRhLXYtMzZjMzY3ZmVdIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGJvdHRvbTogMDtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG4gIG9wYWNpdHk6IDAuMzU7XFxufVxcbi5wcm9ncmVzc2JhciBzcGFuW2RhdGEtdi0zNmMzNjdmZV0ge1xcbiAgd2lkdGg6IDA7XFxuICBoZWlnaHQ6IDNweDtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgYmFja2dyb3VuZDogIzAwQkM3RTtcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBwcm9ncmVzc2Jhci1kYXRhLXYtMzZjMzY3ZmUgNXMgbGluZWFyO1xcbiAgICAgICAgICBhbmltYXRpb246IHByb2dyZXNzYmFyLWRhdGEtdi0zNmMzNjdmZSA1cyBsaW5lYXI7XFxufVxcbkAtd2Via2l0LWtleWZyYW1lcyBwcm9ncmVzc2Jhci1kYXRhLXYtMzZjMzY3ZmUge1xcbjAlIHtcXG4gICAgd2lkdGg6IDA7XFxufVxcbjEwMCUge1xcbiAgICB3aWR0aDogMTAwJTtcXG59XFxufVxcbkBrZXlmcmFtZXMgcHJvZ3Jlc3NiYXItZGF0YS12LTM2YzM2N2ZlIHtcXG4wJSB7XFxuICAgIHdpZHRoOiAwO1xcbn1cXG4xMDAlIHtcXG4gICAgd2lkdGg6IDEwMCU7XFxufVxcbn1cXG4udG9hc3RyLWl0ZW1bZGF0YS12LTM2YzM2N2ZlXSB7XFxuICBtYXgtd2lkdGg6IDMyMHB4O1xcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIGJvcmRlci1yYWRpdXM6IDhweDtcXG59XFxuLnRvYXN0ci1pdGVtIC50b2FzdHItZGVzY3JpcHRpb25bZGF0YS12LTM2YzM2N2ZlXSB7XFxuICBmb250LXNpemU6IDAuOTM3NWVtO1xcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxufVxcbi50b2FzdHItaXRlbSAudG9hc3RyLWljb25bZGF0YS12LTM2YzM2N2ZlXSB7XFxuICBoZWlnaHQ6IDQycHg7XFxuICB3aWR0aDogNDJweDtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgcGFkZGluZzogMDtcXG4gIGZvbnQtc2l6ZTogMjBweDtcXG4gIG1hcmdpbi1yaWdodDogMTBweDtcXG59XFxuLnRvYXN0ci1pdGVtLnN1Y2Nlc3NbZGF0YS12LTM2YzM2N2ZlXSB7XFxuICBiYWNrZ3JvdW5kOiAjRUNGN0YyO1xcbn1cXG4udG9hc3RyLWl0ZW0uc3VjY2VzcyBwb2x5bGluZVtkYXRhLXYtMzZjMzY3ZmVdIHtcXG4gIHN0cm9rZTogIzAwQkM3RTtcXG59XFxuLnRvYXN0ci1pdGVtLnN1Y2Nlc3MgLnRvYXN0ci1kZXNjcmlwdGlvbltkYXRhLXYtMzZjMzY3ZmVdIHtcXG4gIGNvbG9yOiAjMDBCQzdFO1xcbn1cXG4udG9hc3RyLWl0ZW0uZGFuZ2VyW2RhdGEtdi0zNmMzNjdmZV0ge1xcbiAgYmFja2dyb3VuZDogcmdiYSgyNTMsIDU3LCAxMjIsIDAuMSk7XFxufVxcbi50b2FzdHItaXRlbS5kYW5nZXIgcG9seWxpbmVbZGF0YS12LTM2YzM2N2ZlXSB7XFxuICBzdHJva2U6ICNmZDM5N2E7XFxufVxcbi50b2FzdHItaXRlbS5kYW5nZXIgLnRvYXN0ci1kZXNjcmlwdGlvbltkYXRhLXYtMzZjMzY3ZmVdIHtcXG4gIGNvbG9yOiAjZmQzOTdhO1xcbn1cXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY5MHB4KSB7XFxuLnRvYXN0ci1pdGVtW2RhdGEtdi0zNmMzNjdmZV0ge1xcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xcbiAgICBtYXgtd2lkdGg6IDEwMCU7XFxufVxcbi5mYWRlLWVudGVyW2RhdGEtdi0zNmMzNjdmZV0sXFxuICAuZmFkZS1sZWF2ZS10b1tkYXRhLXYtMzZjMzY3ZmVdIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xcbn1cXG59XFxuQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xcbi50b2FzdHItaXRlbS5zdWNjZXNzW2RhdGEtdi0zNmMzNjdmZV0sIC50b2FzdHItaXRlbS5kYW5nZXJbZGF0YS12LTM2YzM2N2ZlXSB7XFxuICAgIGJhY2tncm91bmQ6ICMxZTIwMjQ7XFxufVxcbn1cXG5cIiwgXCJcIl0pO1xuXG4vLyBleHBvcnRzXG4iLCJpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vdnVlLmNvbW1vbi5wcm9kLmpzJylcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi92dWUuY29tbW9uLmRldi5qcycpXG59XG4iLCIoZnVuY3Rpb24gKGdsb2JhbCwgdW5kZWZpbmVkKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICBpZiAoZ2xvYmFsLnNldEltbWVkaWF0ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIG5leHRIYW5kbGUgPSAxOyAvLyBTcGVjIHNheXMgZ3JlYXRlciB0aGFuIHplcm9cbiAgICB2YXIgdGFza3NCeUhhbmRsZSA9IHt9O1xuICAgIHZhciBjdXJyZW50bHlSdW5uaW5nQVRhc2sgPSBmYWxzZTtcbiAgICB2YXIgZG9jID0gZ2xvYmFsLmRvY3VtZW50O1xuICAgIHZhciByZWdpc3RlckltbWVkaWF0ZTtcblxuICAgIGZ1bmN0aW9uIHNldEltbWVkaWF0ZShjYWxsYmFjaykge1xuICAgICAgLy8gQ2FsbGJhY2sgY2FuIGVpdGhlciBiZSBhIGZ1bmN0aW9uIG9yIGEgc3RyaW5nXG4gICAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgY2FsbGJhY2sgPSBuZXcgRnVuY3Rpb24oXCJcIiArIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICAgIC8vIENvcHkgZnVuY3Rpb24gYXJndW1lbnRzXG4gICAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBhcmdzW2ldID0gYXJndW1lbnRzW2kgKyAxXTtcbiAgICAgIH1cbiAgICAgIC8vIFN0b3JlIGFuZCByZWdpc3RlciB0aGUgdGFza1xuICAgICAgdmFyIHRhc2sgPSB7IGNhbGxiYWNrOiBjYWxsYmFjaywgYXJnczogYXJncyB9O1xuICAgICAgdGFza3NCeUhhbmRsZVtuZXh0SGFuZGxlXSA9IHRhc2s7XG4gICAgICByZWdpc3RlckltbWVkaWF0ZShuZXh0SGFuZGxlKTtcbiAgICAgIHJldHVybiBuZXh0SGFuZGxlKys7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaGFuZGxlKSB7XG4gICAgICAgIGRlbGV0ZSB0YXNrc0J5SGFuZGxlW2hhbmRsZV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcnVuKHRhc2spIHtcbiAgICAgICAgdmFyIGNhbGxiYWNrID0gdGFzay5jYWxsYmFjaztcbiAgICAgICAgdmFyIGFyZ3MgPSB0YXNrLmFyZ3M7XG4gICAgICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBjYWxsYmFjayhhcmdzWzBdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBjYWxsYmFjayhhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBjYWxsYmFjayhhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgY2FsbGJhY2suYXBwbHkodW5kZWZpbmVkLCBhcmdzKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcnVuSWZQcmVzZW50KGhhbmRsZSkge1xuICAgICAgICAvLyBGcm9tIHRoZSBzcGVjOiBcIldhaXQgdW50aWwgYW55IGludm9jYXRpb25zIG9mIHRoaXMgYWxnb3JpdGhtIHN0YXJ0ZWQgYmVmb3JlIHRoaXMgb25lIGhhdmUgY29tcGxldGVkLlwiXG4gICAgICAgIC8vIFNvIGlmIHdlJ3JlIGN1cnJlbnRseSBydW5uaW5nIGEgdGFzaywgd2UnbGwgbmVlZCB0byBkZWxheSB0aGlzIGludm9jYXRpb24uXG4gICAgICAgIGlmIChjdXJyZW50bHlSdW5uaW5nQVRhc2spIHtcbiAgICAgICAgICAgIC8vIERlbGF5IGJ5IGRvaW5nIGEgc2V0VGltZW91dC4gc2V0SW1tZWRpYXRlIHdhcyB0cmllZCBpbnN0ZWFkLCBidXQgaW4gRmlyZWZveCA3IGl0IGdlbmVyYXRlZCBhXG4gICAgICAgICAgICAvLyBcInRvbyBtdWNoIHJlY3Vyc2lvblwiIGVycm9yLlxuICAgICAgICAgICAgc2V0VGltZW91dChydW5JZlByZXNlbnQsIDAsIGhhbmRsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgdGFzayA9IHRhc2tzQnlIYW5kbGVbaGFuZGxlXTtcbiAgICAgICAgICAgIGlmICh0YXNrKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudGx5UnVubmluZ0FUYXNrID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBydW4odGFzayk7XG4gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbW1lZGlhdGUoaGFuZGxlKTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudGx5UnVubmluZ0FUYXNrID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zdGFsbE5leHRUaWNrSW1wbGVtZW50YXRpb24oKSB7XG4gICAgICAgIHJlZ2lzdGVySW1tZWRpYXRlID0gZnVuY3Rpb24oaGFuZGxlKSB7XG4gICAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHsgcnVuSWZQcmVzZW50KGhhbmRsZSk7IH0pO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNhblVzZVBvc3RNZXNzYWdlKCkge1xuICAgICAgICAvLyBUaGUgdGVzdCBhZ2FpbnN0IGBpbXBvcnRTY3JpcHRzYCBwcmV2ZW50cyB0aGlzIGltcGxlbWVudGF0aW9uIGZyb20gYmVpbmcgaW5zdGFsbGVkIGluc2lkZSBhIHdlYiB3b3JrZXIsXG4gICAgICAgIC8vIHdoZXJlIGBnbG9iYWwucG9zdE1lc3NhZ2VgIG1lYW5zIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudCBhbmQgY2FuJ3QgYmUgdXNlZCBmb3IgdGhpcyBwdXJwb3NlLlxuICAgICAgICBpZiAoZ2xvYmFsLnBvc3RNZXNzYWdlICYmICFnbG9iYWwuaW1wb3J0U2NyaXB0cykge1xuICAgICAgICAgICAgdmFyIHBvc3RNZXNzYWdlSXNBc3luY2hyb25vdXMgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIG9sZE9uTWVzc2FnZSA9IGdsb2JhbC5vbm1lc3NhZ2U7XG4gICAgICAgICAgICBnbG9iYWwub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcG9zdE1lc3NhZ2VJc0FzeW5jaHJvbm91cyA9IGZhbHNlO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGdsb2JhbC5wb3N0TWVzc2FnZShcIlwiLCBcIipcIik7XG4gICAgICAgICAgICBnbG9iYWwub25tZXNzYWdlID0gb2xkT25NZXNzYWdlO1xuICAgICAgICAgICAgcmV0dXJuIHBvc3RNZXNzYWdlSXNBc3luY2hyb25vdXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsUG9zdE1lc3NhZ2VJbXBsZW1lbnRhdGlvbigpIHtcbiAgICAgICAgLy8gSW5zdGFsbHMgYW4gZXZlbnQgaGFuZGxlciBvbiBgZ2xvYmFsYCBmb3IgdGhlIGBtZXNzYWdlYCBldmVudDogc2VlXG4gICAgICAgIC8vICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vRE9NL3dpbmRvdy5wb3N0TWVzc2FnZVxuICAgICAgICAvLyAqIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL2NvbW1zLmh0bWwjY3Jvc3NEb2N1bWVudE1lc3NhZ2VzXG5cbiAgICAgICAgdmFyIG1lc3NhZ2VQcmVmaXggPSBcInNldEltbWVkaWF0ZSRcIiArIE1hdGgucmFuZG9tKCkgKyBcIiRcIjtcbiAgICAgICAgdmFyIG9uR2xvYmFsTWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuc291cmNlID09PSBnbG9iYWwgJiZcbiAgICAgICAgICAgICAgICB0eXBlb2YgZXZlbnQuZGF0YSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgICAgIGV2ZW50LmRhdGEuaW5kZXhPZihtZXNzYWdlUHJlZml4KSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJ1bklmUHJlc2VudCgrZXZlbnQuZGF0YS5zbGljZShtZXNzYWdlUHJlZml4Lmxlbmd0aCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICAgICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIG9uR2xvYmFsTWVzc2FnZSwgZmFsc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ2xvYmFsLmF0dGFjaEV2ZW50KFwib25tZXNzYWdlXCIsIG9uR2xvYmFsTWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZWdpc3RlckltbWVkaWF0ZSA9IGZ1bmN0aW9uKGhhbmRsZSkge1xuICAgICAgICAgICAgZ2xvYmFsLnBvc3RNZXNzYWdlKG1lc3NhZ2VQcmVmaXggKyBoYW5kbGUsIFwiKlwiKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsTWVzc2FnZUNoYW5uZWxJbXBsZW1lbnRhdGlvbigpIHtcbiAgICAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICAgICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgdmFyIGhhbmRsZSA9IGV2ZW50LmRhdGE7XG4gICAgICAgICAgICBydW5JZlByZXNlbnQoaGFuZGxlKTtcbiAgICAgICAgfTtcblxuICAgICAgICByZWdpc3RlckltbWVkaWF0ZSA9IGZ1bmN0aW9uKGhhbmRsZSkge1xuICAgICAgICAgICAgY2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZShoYW5kbGUpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluc3RhbGxSZWFkeVN0YXRlQ2hhbmdlSW1wbGVtZW50YXRpb24oKSB7XG4gICAgICAgIHZhciBodG1sID0gZG9jLmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgcmVnaXN0ZXJJbW1lZGlhdGUgPSBmdW5jdGlvbihoYW5kbGUpIHtcbiAgICAgICAgICAgIC8vIENyZWF0ZSBhIDxzY3JpcHQ+IGVsZW1lbnQ7IGl0cyByZWFkeXN0YXRlY2hhbmdlIGV2ZW50IHdpbGwgYmUgZmlyZWQgYXN5bmNocm9ub3VzbHkgb25jZSBpdCBpcyBpbnNlcnRlZFxuICAgICAgICAgICAgLy8gaW50byB0aGUgZG9jdW1lbnQuIERvIHNvLCB0aHVzIHF1ZXVpbmcgdXAgdGhlIHRhc2suIFJlbWVtYmVyIHRvIGNsZWFuIHVwIG9uY2UgaXQncyBiZWVuIGNhbGxlZC5cbiAgICAgICAgICAgIHZhciBzY3JpcHQgPSBkb2MuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgICAgICAgICAgIHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcnVuSWZQcmVzZW50KGhhbmRsZSk7XG4gICAgICAgICAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgaHRtbC5yZW1vdmVDaGlsZChzY3JpcHQpO1xuICAgICAgICAgICAgICAgIHNjcmlwdCA9IG51bGw7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaHRtbC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluc3RhbGxTZXRUaW1lb3V0SW1wbGVtZW50YXRpb24oKSB7XG4gICAgICAgIHJlZ2lzdGVySW1tZWRpYXRlID0gZnVuY3Rpb24oaGFuZGxlKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KHJ1bklmUHJlc2VudCwgMCwgaGFuZGxlKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBJZiBzdXBwb3J0ZWQsIHdlIHNob3VsZCBhdHRhY2ggdG8gdGhlIHByb3RvdHlwZSBvZiBnbG9iYWwsIHNpbmNlIHRoYXQgaXMgd2hlcmUgc2V0VGltZW91dCBldCBhbC4gbGl2ZS5cbiAgICB2YXIgYXR0YWNoVG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKGdsb2JhbCk7XG4gICAgYXR0YWNoVG8gPSBhdHRhY2hUbyAmJiBhdHRhY2hUby5zZXRUaW1lb3V0ID8gYXR0YWNoVG8gOiBnbG9iYWw7XG5cbiAgICAvLyBEb24ndCBnZXQgZm9vbGVkIGJ5IGUuZy4gYnJvd3NlcmlmeSBlbnZpcm9ubWVudHMuXG4gICAgaWYgKHt9LnRvU3RyaW5nLmNhbGwoZ2xvYmFsLnByb2Nlc3MpID09PSBcIltvYmplY3QgcHJvY2Vzc11cIikge1xuICAgICAgICAvLyBGb3IgTm9kZS5qcyBiZWZvcmUgMC45XG4gICAgICAgIGluc3RhbGxOZXh0VGlja0ltcGxlbWVudGF0aW9uKCk7XG5cbiAgICB9IGVsc2UgaWYgKGNhblVzZVBvc3RNZXNzYWdlKCkpIHtcbiAgICAgICAgLy8gRm9yIG5vbi1JRTEwIG1vZGVybiBicm93c2Vyc1xuICAgICAgICBpbnN0YWxsUG9zdE1lc3NhZ2VJbXBsZW1lbnRhdGlvbigpO1xuXG4gICAgfSBlbHNlIGlmIChnbG9iYWwuTWVzc2FnZUNoYW5uZWwpIHtcbiAgICAgICAgLy8gRm9yIHdlYiB3b3JrZXJzLCB3aGVyZSBzdXBwb3J0ZWRcbiAgICAgICAgaW5zdGFsbE1lc3NhZ2VDaGFubmVsSW1wbGVtZW50YXRpb24oKTtcblxuICAgIH0gZWxzZSBpZiAoZG9jICYmIFwib25yZWFkeXN0YXRlY2hhbmdlXCIgaW4gZG9jLmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIikpIHtcbiAgICAgICAgLy8gRm9yIElFIDbigJM4XG4gICAgICAgIGluc3RhbGxSZWFkeVN0YXRlQ2hhbmdlSW1wbGVtZW50YXRpb24oKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEZvciBvbGRlciBicm93c2Vyc1xuICAgICAgICBpbnN0YWxsU2V0VGltZW91dEltcGxlbWVudGF0aW9uKCk7XG4gICAgfVxuXG4gICAgYXR0YWNoVG8uc2V0SW1tZWRpYXRlID0gc2V0SW1tZWRpYXRlO1xuICAgIGF0dGFjaFRvLmNsZWFySW1tZWRpYXRlID0gY2xlYXJJbW1lZGlhdGU7XG59KHR5cGVvZiBzZWxmID09PSBcInVuZGVmaW5lZFwiID8gdHlwZW9mIGdsb2JhbCA9PT0gXCJ1bmRlZmluZWRcIiA/IHRoaXMgOiBnbG9iYWwgOiBzZWxmKSk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuXHRpZiAoIW1vZHVsZS53ZWJwYWNrUG9seWZpbGwpIHtcblx0XHRtb2R1bGUuZGVwcmVjYXRlID0gZnVuY3Rpb24oKSB7fTtcblx0XHRtb2R1bGUucGF0aHMgPSBbXTtcblx0XHQvLyBtb2R1bGUucGFyZW50ID0gdW5kZWZpbmVkIGJ5IGRlZmF1bHRcblx0XHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJsb2FkZWRcIiwge1xuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBtb2R1bGUubDtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImlkXCIsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0bW9kdWxlLndlYnBhY2tQb2x5ZmlsbCA9IDE7XG5cdH1cblx0cmV0dXJuIG1vZHVsZTtcbn07XG4iLCJcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Db29raWVEaXNjbGFpbWVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTg3Y2RjMWY4Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIik7XG5cbmlmKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuXG52YXIgdHJhbnNmb3JtO1xudmFyIGluc2VydEludG87XG5cblxuXG52YXIgb3B0aW9ucyA9IHtcImhtclwiOnRydWV9XG5cbm9wdGlvbnMudHJhbnNmb3JtID0gdHJhbnNmb3JtXG5vcHRpb25zLmluc2VydEludG8gPSB1bmRlZmluZWQ7XG5cbnZhciB1cGRhdGUgPSByZXF1aXJlKFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvbGliL2FkZFN0eWxlcy5qc1wiKShjb250ZW50LCBvcHRpb25zKTtcblxuaWYoY29udGVudC5sb2NhbHMpIG1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHM7XG5cbmlmKG1vZHVsZS5ob3QpIHtcblx0bW9kdWxlLmhvdC5hY2NlcHQoXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ29va2llRGlzY2xhaW1lci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD04N2NkYzFmOCZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Db29raWVEaXNjbGFpbWVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTg3Y2RjMWY4Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIik7XG5cblx0XHRpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcblxuXHRcdHZhciBsb2NhbHMgPSAoZnVuY3Rpb24oYSwgYikge1xuXHRcdFx0dmFyIGtleSwgaWR4ID0gMDtcblxuXHRcdFx0Zm9yKGtleSBpbiBhKSB7XG5cdFx0XHRcdGlmKCFiIHx8IGFba2V5XSAhPT0gYltrZXldKSByZXR1cm4gZmFsc2U7XG5cdFx0XHRcdGlkeCsrO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3Ioa2V5IGluIGIpIGlkeC0tO1xuXG5cdFx0XHRyZXR1cm4gaWR4ID09PSAwO1xuXHRcdH0oY29udGVudC5sb2NhbHMsIG5ld0NvbnRlbnQubG9jYWxzKSk7XG5cblx0XHRpZighbG9jYWxzKSB0aHJvdyBuZXcgRXJyb3IoJ0Fib3J0aW5nIENTUyBITVIgZHVlIHRvIGNoYW5nZWQgY3NzLW1vZHVsZXMgbG9jYWxzLicpO1xuXG5cdFx0dXBkYXRlKG5ld0NvbnRlbnQpO1xuXHR9KTtcblxuXHRtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcbn0iLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9CdXR0b25CYXNlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTQwMWM3OTQyJnNjb3BlZD10cnVlJmxhbmc9c2NzcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQnV0dG9uQmFzZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD00MDFjNzk0MiZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3MmXCIiLCIvKlxuXHRNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuXHRBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xuXG52YXIgc3R5bGVzSW5Eb20gPSB7fTtcblxudmFyXHRtZW1vaXplID0gZnVuY3Rpb24gKGZuKSB7XG5cdHZhciBtZW1vO1xuXG5cdHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdFx0aWYgKHR5cGVvZiBtZW1vID09PSBcInVuZGVmaW5lZFwiKSBtZW1vID0gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0XHRyZXR1cm4gbWVtbztcblx0fTtcbn07XG5cbnZhciBpc09sZElFID0gbWVtb2l6ZShmdW5jdGlvbiAoKSB7XG5cdC8vIFRlc3QgZm9yIElFIDw9IDkgYXMgcHJvcG9zZWQgYnkgQnJvd3NlcmhhY2tzXG5cdC8vIEBzZWUgaHR0cDovL2Jyb3dzZXJoYWNrcy5jb20vI2hhY2stZTcxZDg2OTJmNjUzMzQxNzNmZWU3MTVjMjIyY2I4MDVcblx0Ly8gVGVzdHMgZm9yIGV4aXN0ZW5jZSBvZiBzdGFuZGFyZCBnbG9iYWxzIGlzIHRvIGFsbG93IHN0eWxlLWxvYWRlclxuXHQvLyB0byBvcGVyYXRlIGNvcnJlY3RseSBpbnRvIG5vbi1zdGFuZGFyZCBlbnZpcm9ubWVudHNcblx0Ly8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay1jb250cmliL3N0eWxlLWxvYWRlci9pc3N1ZXMvMTc3XG5cdHJldHVybiB3aW5kb3cgJiYgZG9jdW1lbnQgJiYgZG9jdW1lbnQuYWxsICYmICF3aW5kb3cuYXRvYjtcbn0pO1xuXG52YXIgZ2V0VGFyZ2V0ID0gZnVuY3Rpb24gKHRhcmdldCwgcGFyZW50KSB7XG4gIGlmIChwYXJlbnQpe1xuICAgIHJldHVybiBwYXJlbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpO1xuICB9XG4gIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldCk7XG59O1xuXG52YXIgZ2V0RWxlbWVudCA9IChmdW5jdGlvbiAoZm4pIHtcblx0dmFyIG1lbW8gPSB7fTtcblxuXHRyZXR1cm4gZnVuY3Rpb24odGFyZ2V0LCBwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiBwYXNzaW5nIGZ1bmN0aW9uIGluIG9wdGlvbnMsIHRoZW4gdXNlIGl0IGZvciByZXNvbHZlIFwiaGVhZFwiIGVsZW1lbnQuXG4gICAgICAgICAgICAgICAgLy8gVXNlZnVsIGZvciBTaGFkb3cgUm9vdCBzdHlsZSBpLmVcbiAgICAgICAgICAgICAgICAvLyB7XG4gICAgICAgICAgICAgICAgLy8gICBpbnNlcnRJbnRvOiBmdW5jdGlvbiAoKSB7IHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2Zvb1wiKS5zaGFkb3dSb290IH1cbiAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0YXJnZXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBtZW1vW3RhcmdldF0gPT09IFwidW5kZWZpbmVkXCIpIHtcblx0XHRcdHZhciBzdHlsZVRhcmdldCA9IGdldFRhcmdldC5jYWxsKHRoaXMsIHRhcmdldCwgcGFyZW50KTtcblx0XHRcdC8vIFNwZWNpYWwgY2FzZSB0byByZXR1cm4gaGVhZCBvZiBpZnJhbWUgaW5zdGVhZCBvZiBpZnJhbWUgaXRzZWxmXG5cdFx0XHRpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Ly8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhY2Nlc3MgdG8gaWZyYW1lIGlzIGJsb2NrZWRcblx0XHRcdFx0XHQvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuXHRcdFx0XHRcdHN0eWxlVGFyZ2V0ID0gc3R5bGVUYXJnZXQuY29udGVudERvY3VtZW50LmhlYWQ7XG5cdFx0XHRcdH0gY2F0Y2goZSkge1xuXHRcdFx0XHRcdHN0eWxlVGFyZ2V0ID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0bWVtb1t0YXJnZXRdID0gc3R5bGVUYXJnZXQ7XG5cdFx0fVxuXHRcdHJldHVybiBtZW1vW3RhcmdldF1cblx0fTtcbn0pKCk7XG5cbnZhciBzaW5nbGV0b24gPSBudWxsO1xudmFyXHRzaW5nbGV0b25Db3VudGVyID0gMDtcbnZhclx0c3R5bGVzSW5zZXJ0ZWRBdFRvcCA9IFtdO1xuXG52YXJcdGZpeFVybHMgPSByZXF1aXJlKFwiLi91cmxzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGxpc3QsIG9wdGlvbnMpIHtcblx0aWYgKHR5cGVvZiBERUJVRyAhPT0gXCJ1bmRlZmluZWRcIiAmJiBERUJVRykge1xuXHRcdGlmICh0eXBlb2YgZG9jdW1lbnQgIT09IFwib2JqZWN0XCIpIHRocm93IG5ldyBFcnJvcihcIlRoZSBzdHlsZS1sb2FkZXIgY2Fubm90IGJlIHVzZWQgaW4gYSBub24tYnJvd3NlciBlbnZpcm9ubWVudFwiKTtcblx0fVxuXG5cdG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG5cdG9wdGlvbnMuYXR0cnMgPSB0eXBlb2Ygb3B0aW9ucy5hdHRycyA9PT0gXCJvYmplY3RcIiA/IG9wdGlvbnMuYXR0cnMgOiB7fTtcblxuXHQvLyBGb3JjZSBzaW5nbGUtdGFnIHNvbHV0aW9uIG9uIElFNi05LCB3aGljaCBoYXMgYSBoYXJkIGxpbWl0IG9uIHRoZSAjIG9mIDxzdHlsZT5cblx0Ly8gdGFncyBpdCB3aWxsIGFsbG93IG9uIGEgcGFnZVxuXHRpZiAoIW9wdGlvbnMuc2luZ2xldG9uICYmIHR5cGVvZiBvcHRpb25zLnNpbmdsZXRvbiAhPT0gXCJib29sZWFuXCIpIG9wdGlvbnMuc2luZ2xldG9uID0gaXNPbGRJRSgpO1xuXG5cdC8vIEJ5IGRlZmF1bHQsIGFkZCA8c3R5bGU+IHRhZ3MgdG8gdGhlIDxoZWFkPiBlbGVtZW50XG4gICAgICAgIGlmICghb3B0aW9ucy5pbnNlcnRJbnRvKSBvcHRpb25zLmluc2VydEludG8gPSBcImhlYWRcIjtcblxuXHQvLyBCeSBkZWZhdWx0LCBhZGQgPHN0eWxlPiB0YWdzIHRvIHRoZSBib3R0b20gb2YgdGhlIHRhcmdldFxuXHRpZiAoIW9wdGlvbnMuaW5zZXJ0QXQpIG9wdGlvbnMuaW5zZXJ0QXQgPSBcImJvdHRvbVwiO1xuXG5cdHZhciBzdHlsZXMgPSBsaXN0VG9TdHlsZXMobGlzdCwgb3B0aW9ucyk7XG5cblx0YWRkU3R5bGVzVG9Eb20oc3R5bGVzLCBvcHRpb25zKTtcblxuXHRyZXR1cm4gZnVuY3Rpb24gdXBkYXRlIChuZXdMaXN0KSB7XG5cdFx0dmFyIG1heVJlbW92ZSA9IFtdO1xuXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBpdGVtID0gc3R5bGVzW2ldO1xuXHRcdFx0dmFyIGRvbVN0eWxlID0gc3R5bGVzSW5Eb21baXRlbS5pZF07XG5cblx0XHRcdGRvbVN0eWxlLnJlZnMtLTtcblx0XHRcdG1heVJlbW92ZS5wdXNoKGRvbVN0eWxlKTtcblx0XHR9XG5cblx0XHRpZihuZXdMaXN0KSB7XG5cdFx0XHR2YXIgbmV3U3R5bGVzID0gbGlzdFRvU3R5bGVzKG5ld0xpc3QsIG9wdGlvbnMpO1xuXHRcdFx0YWRkU3R5bGVzVG9Eb20obmV3U3R5bGVzLCBvcHRpb25zKTtcblx0XHR9XG5cblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IG1heVJlbW92ZS5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGRvbVN0eWxlID0gbWF5UmVtb3ZlW2ldO1xuXG5cdFx0XHRpZihkb21TdHlsZS5yZWZzID09PSAwKSB7XG5cdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgZG9tU3R5bGUucGFydHMubGVuZ3RoOyBqKyspIGRvbVN0eWxlLnBhcnRzW2pdKCk7XG5cblx0XHRcdFx0ZGVsZXRlIHN0eWxlc0luRG9tW2RvbVN0eWxlLmlkXTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG59O1xuXG5mdW5jdGlvbiBhZGRTdHlsZXNUb0RvbSAoc3R5bGVzLCBvcHRpb25zKSB7XG5cdGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0dmFyIGl0ZW0gPSBzdHlsZXNbaV07XG5cdFx0dmFyIGRvbVN0eWxlID0gc3R5bGVzSW5Eb21baXRlbS5pZF07XG5cblx0XHRpZihkb21TdHlsZSkge1xuXHRcdFx0ZG9tU3R5bGUucmVmcysrO1xuXG5cdFx0XHRmb3IodmFyIGogPSAwOyBqIDwgZG9tU3R5bGUucGFydHMubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0ZG9tU3R5bGUucGFydHNbal0oaXRlbS5wYXJ0c1tqXSk7XG5cdFx0XHR9XG5cblx0XHRcdGZvcig7IGogPCBpdGVtLnBhcnRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdGRvbVN0eWxlLnBhcnRzLnB1c2goYWRkU3R5bGUoaXRlbS5wYXJ0c1tqXSwgb3B0aW9ucykpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR2YXIgcGFydHMgPSBbXTtcblxuXHRcdFx0Zm9yKHZhciBqID0gMDsgaiA8IGl0ZW0ucGFydHMubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0cGFydHMucHVzaChhZGRTdHlsZShpdGVtLnBhcnRzW2pdLCBvcHRpb25zKSk7XG5cdFx0XHR9XG5cblx0XHRcdHN0eWxlc0luRG9tW2l0ZW0uaWRdID0ge2lkOiBpdGVtLmlkLCByZWZzOiAxLCBwYXJ0czogcGFydHN9O1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBsaXN0VG9TdHlsZXMgKGxpc3QsIG9wdGlvbnMpIHtcblx0dmFyIHN0eWxlcyA9IFtdO1xuXHR2YXIgbmV3U3R5bGVzID0ge307XG5cblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0dmFyIGl0ZW0gPSBsaXN0W2ldO1xuXHRcdHZhciBpZCA9IG9wdGlvbnMuYmFzZSA/IGl0ZW1bMF0gKyBvcHRpb25zLmJhc2UgOiBpdGVtWzBdO1xuXHRcdHZhciBjc3MgPSBpdGVtWzFdO1xuXHRcdHZhciBtZWRpYSA9IGl0ZW1bMl07XG5cdFx0dmFyIHNvdXJjZU1hcCA9IGl0ZW1bM107XG5cdFx0dmFyIHBhcnQgPSB7Y3NzOiBjc3MsIG1lZGlhOiBtZWRpYSwgc291cmNlTWFwOiBzb3VyY2VNYXB9O1xuXG5cdFx0aWYoIW5ld1N0eWxlc1tpZF0pIHN0eWxlcy5wdXNoKG5ld1N0eWxlc1tpZF0gPSB7aWQ6IGlkLCBwYXJ0czogW3BhcnRdfSk7XG5cdFx0ZWxzZSBuZXdTdHlsZXNbaWRdLnBhcnRzLnB1c2gocGFydCk7XG5cdH1cblxuXHRyZXR1cm4gc3R5bGVzO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRTdHlsZUVsZW1lbnQgKG9wdGlvbnMsIHN0eWxlKSB7XG5cdHZhciB0YXJnZXQgPSBnZXRFbGVtZW50KG9wdGlvbnMuaW5zZXJ0SW50bylcblxuXHRpZiAoIXRhcmdldCkge1xuXHRcdHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGZpbmQgYSBzdHlsZSB0YXJnZXQuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB0aGUgdmFsdWUgZm9yIHRoZSAnaW5zZXJ0SW50bycgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuXHR9XG5cblx0dmFyIGxhc3RTdHlsZUVsZW1lbnRJbnNlcnRlZEF0VG9wID0gc3R5bGVzSW5zZXJ0ZWRBdFRvcFtzdHlsZXNJbnNlcnRlZEF0VG9wLmxlbmd0aCAtIDFdO1xuXG5cdGlmIChvcHRpb25zLmluc2VydEF0ID09PSBcInRvcFwiKSB7XG5cdFx0aWYgKCFsYXN0U3R5bGVFbGVtZW50SW5zZXJ0ZWRBdFRvcCkge1xuXHRcdFx0dGFyZ2V0Lmluc2VydEJlZm9yZShzdHlsZSwgdGFyZ2V0LmZpcnN0Q2hpbGQpO1xuXHRcdH0gZWxzZSBpZiAobGFzdFN0eWxlRWxlbWVudEluc2VydGVkQXRUb3AubmV4dFNpYmxpbmcpIHtcblx0XHRcdHRhcmdldC5pbnNlcnRCZWZvcmUoc3R5bGUsIGxhc3RTdHlsZUVsZW1lbnRJbnNlcnRlZEF0VG9wLm5leHRTaWJsaW5nKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGFyZ2V0LmFwcGVuZENoaWxkKHN0eWxlKTtcblx0XHR9XG5cdFx0c3R5bGVzSW5zZXJ0ZWRBdFRvcC5wdXNoKHN0eWxlKTtcblx0fSBlbHNlIGlmIChvcHRpb25zLmluc2VydEF0ID09PSBcImJvdHRvbVwiKSB7XG5cdFx0dGFyZ2V0LmFwcGVuZENoaWxkKHN0eWxlKTtcblx0fSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9ucy5pbnNlcnRBdCA9PT0gXCJvYmplY3RcIiAmJiBvcHRpb25zLmluc2VydEF0LmJlZm9yZSkge1xuXHRcdHZhciBuZXh0U2libGluZyA9IGdldEVsZW1lbnQob3B0aW9ucy5pbnNlcnRBdC5iZWZvcmUsIHRhcmdldCk7XG5cdFx0dGFyZ2V0Lmluc2VydEJlZm9yZShzdHlsZSwgbmV4dFNpYmxpbmcpO1xuXHR9IGVsc2Uge1xuXHRcdHRocm93IG5ldyBFcnJvcihcIltTdHlsZSBMb2FkZXJdXFxuXFxuIEludmFsaWQgdmFsdWUgZm9yIHBhcmFtZXRlciAnaW5zZXJ0QXQnICgnb3B0aW9ucy5pbnNlcnRBdCcpIGZvdW5kLlxcbiBNdXN0IGJlICd0b3AnLCAnYm90dG9tJywgb3IgT2JqZWN0LlxcbiAoaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2stY29udHJpYi9zdHlsZS1sb2FkZXIjaW5zZXJ0YXQpXFxuXCIpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudCAoc3R5bGUpIHtcblx0aWYgKHN0eWxlLnBhcmVudE5vZGUgPT09IG51bGwpIHJldHVybiBmYWxzZTtcblx0c3R5bGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZSk7XG5cblx0dmFyIGlkeCA9IHN0eWxlc0luc2VydGVkQXRUb3AuaW5kZXhPZihzdHlsZSk7XG5cdGlmKGlkeCA+PSAwKSB7XG5cdFx0c3R5bGVzSW5zZXJ0ZWRBdFRvcC5zcGxpY2UoaWR4LCAxKTtcblx0fVxufVxuXG5mdW5jdGlvbiBjcmVhdGVTdHlsZUVsZW1lbnQgKG9wdGlvbnMpIHtcblx0dmFyIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuXG5cdGlmKG9wdGlvbnMuYXR0cnMudHlwZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0b3B0aW9ucy5hdHRycy50eXBlID0gXCJ0ZXh0L2Nzc1wiO1xuXHR9XG5cblx0aWYob3B0aW9ucy5hdHRycy5ub25jZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0dmFyIG5vbmNlID0gZ2V0Tm9uY2UoKTtcblx0XHRpZiAobm9uY2UpIHtcblx0XHRcdG9wdGlvbnMuYXR0cnMubm9uY2UgPSBub25jZTtcblx0XHR9XG5cdH1cblxuXHRhZGRBdHRycyhzdHlsZSwgb3B0aW9ucy5hdHRycyk7XG5cdGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zLCBzdHlsZSk7XG5cblx0cmV0dXJuIHN0eWxlO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMaW5rRWxlbWVudCAob3B0aW9ucykge1xuXHR2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIpO1xuXG5cdGlmKG9wdGlvbnMuYXR0cnMudHlwZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0b3B0aW9ucy5hdHRycy50eXBlID0gXCJ0ZXh0L2Nzc1wiO1xuXHR9XG5cdG9wdGlvbnMuYXR0cnMucmVsID0gXCJzdHlsZXNoZWV0XCI7XG5cblx0YWRkQXR0cnMobGluaywgb3B0aW9ucy5hdHRycyk7XG5cdGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zLCBsaW5rKTtcblxuXHRyZXR1cm4gbGluaztcbn1cblxuZnVuY3Rpb24gYWRkQXR0cnMgKGVsLCBhdHRycykge1xuXHRPYmplY3Qua2V5cyhhdHRycykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG5cdFx0ZWwuc2V0QXR0cmlidXRlKGtleSwgYXR0cnNba2V5XSk7XG5cdH0pO1xufVxuXG5mdW5jdGlvbiBnZXROb25jZSgpIHtcblx0aWYgKHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyA9PT0gJ3VuZGVmaW5lZCcpIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdHJldHVybiBfX3dlYnBhY2tfbm9uY2VfXztcbn1cblxuZnVuY3Rpb24gYWRkU3R5bGUgKG9iaiwgb3B0aW9ucykge1xuXHR2YXIgc3R5bGUsIHVwZGF0ZSwgcmVtb3ZlLCByZXN1bHQ7XG5cblx0Ly8gSWYgYSB0cmFuc2Zvcm0gZnVuY3Rpb24gd2FzIGRlZmluZWQsIHJ1biBpdCBvbiB0aGUgY3NzXG5cdGlmIChvcHRpb25zLnRyYW5zZm9ybSAmJiBvYmouY3NzKSB7XG5cdCAgICByZXN1bHQgPSB0eXBlb2Ygb3B0aW9ucy50cmFuc2Zvcm0gPT09ICdmdW5jdGlvbidcblx0XHQgPyBvcHRpb25zLnRyYW5zZm9ybShvYmouY3NzKSBcblx0XHQgOiBvcHRpb25zLnRyYW5zZm9ybS5kZWZhdWx0KG9iai5jc3MpO1xuXG5cdCAgICBpZiAocmVzdWx0KSB7XG5cdCAgICBcdC8vIElmIHRyYW5zZm9ybSByZXR1cm5zIGEgdmFsdWUsIHVzZSB0aGF0IGluc3RlYWQgb2YgdGhlIG9yaWdpbmFsIGNzcy5cblx0ICAgIFx0Ly8gVGhpcyBhbGxvd3MgcnVubmluZyBydW50aW1lIHRyYW5zZm9ybWF0aW9ucyBvbiB0aGUgY3NzLlxuXHQgICAgXHRvYmouY3NzID0gcmVzdWx0O1xuXHQgICAgfSBlbHNlIHtcblx0ICAgIFx0Ly8gSWYgdGhlIHRyYW5zZm9ybSBmdW5jdGlvbiByZXR1cm5zIGEgZmFsc3kgdmFsdWUsIGRvbid0IGFkZCB0aGlzIGNzcy5cblx0ICAgIFx0Ly8gVGhpcyBhbGxvd3MgY29uZGl0aW9uYWwgbG9hZGluZyBvZiBjc3Ncblx0ICAgIFx0cmV0dXJuIGZ1bmN0aW9uKCkge1xuXHQgICAgXHRcdC8vIG5vb3Bcblx0ICAgIFx0fTtcblx0ICAgIH1cblx0fVxuXG5cdGlmIChvcHRpb25zLnNpbmdsZXRvbikge1xuXHRcdHZhciBzdHlsZUluZGV4ID0gc2luZ2xldG9uQ291bnRlcisrO1xuXG5cdFx0c3R5bGUgPSBzaW5nbGV0b24gfHwgKHNpbmdsZXRvbiA9IGNyZWF0ZVN0eWxlRWxlbWVudChvcHRpb25zKSk7XG5cblx0XHR1cGRhdGUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGUsIHN0eWxlSW5kZXgsIGZhbHNlKTtcblx0XHRyZW1vdmUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGUsIHN0eWxlSW5kZXgsIHRydWUpO1xuXG5cdH0gZWxzZSBpZiAoXG5cdFx0b2JqLnNvdXJjZU1hcCAmJlxuXHRcdHR5cGVvZiBVUkwgPT09IFwiZnVuY3Rpb25cIiAmJlxuXHRcdHR5cGVvZiBVUkwuY3JlYXRlT2JqZWN0VVJMID09PSBcImZ1bmN0aW9uXCIgJiZcblx0XHR0eXBlb2YgVVJMLnJldm9rZU9iamVjdFVSTCA9PT0gXCJmdW5jdGlvblwiICYmXG5cdFx0dHlwZW9mIEJsb2IgPT09IFwiZnVuY3Rpb25cIiAmJlxuXHRcdHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCJcblx0KSB7XG5cdFx0c3R5bGUgPSBjcmVhdGVMaW5rRWxlbWVudChvcHRpb25zKTtcblx0XHR1cGRhdGUgPSB1cGRhdGVMaW5rLmJpbmQobnVsbCwgc3R5bGUsIG9wdGlvbnMpO1xuXHRcdHJlbW92ZSA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZSk7XG5cblx0XHRcdGlmKHN0eWxlLmhyZWYpIFVSTC5yZXZva2VPYmplY3RVUkwoc3R5bGUuaHJlZik7XG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHRzdHlsZSA9IGNyZWF0ZVN0eWxlRWxlbWVudChvcHRpb25zKTtcblx0XHR1cGRhdGUgPSBhcHBseVRvVGFnLmJpbmQobnVsbCwgc3R5bGUpO1xuXHRcdHJlbW92ZSA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZSk7XG5cdFx0fTtcblx0fVxuXG5cdHVwZGF0ZShvYmopO1xuXG5cdHJldHVybiBmdW5jdGlvbiB1cGRhdGVTdHlsZSAobmV3T2JqKSB7XG5cdFx0aWYgKG5ld09iaikge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRuZXdPYmouY3NzID09PSBvYmouY3NzICYmXG5cdFx0XHRcdG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmXG5cdFx0XHRcdG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXBcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdHVwZGF0ZShvYmogPSBuZXdPYmopO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZW1vdmUoKTtcblx0XHR9XG5cdH07XG59XG5cbnZhciByZXBsYWNlVGV4dCA9IChmdW5jdGlvbiAoKSB7XG5cdHZhciB0ZXh0U3RvcmUgPSBbXTtcblxuXHRyZXR1cm4gZnVuY3Rpb24gKGluZGV4LCByZXBsYWNlbWVudCkge1xuXHRcdHRleHRTdG9yZVtpbmRleF0gPSByZXBsYWNlbWVudDtcblxuXHRcdHJldHVybiB0ZXh0U3RvcmUuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xcbicpO1xuXHR9O1xufSkoKTtcblxuZnVuY3Rpb24gYXBwbHlUb1NpbmdsZXRvblRhZyAoc3R5bGUsIGluZGV4LCByZW1vdmUsIG9iaikge1xuXHR2YXIgY3NzID0gcmVtb3ZlID8gXCJcIiA6IG9iai5jc3M7XG5cblx0aWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcblx0XHRzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSByZXBsYWNlVGV4dChpbmRleCwgY3NzKTtcblx0fSBlbHNlIHtcblx0XHR2YXIgY3NzTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcyk7XG5cdFx0dmFyIGNoaWxkTm9kZXMgPSBzdHlsZS5jaGlsZE5vZGVzO1xuXG5cdFx0aWYgKGNoaWxkTm9kZXNbaW5kZXhdKSBzdHlsZS5yZW1vdmVDaGlsZChjaGlsZE5vZGVzW2luZGV4XSk7XG5cblx0XHRpZiAoY2hpbGROb2Rlcy5sZW5ndGgpIHtcblx0XHRcdHN0eWxlLmluc2VydEJlZm9yZShjc3NOb2RlLCBjaGlsZE5vZGVzW2luZGV4XSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN0eWxlLmFwcGVuZENoaWxkKGNzc05vZGUpO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBhcHBseVRvVGFnIChzdHlsZSwgb2JqKSB7XG5cdHZhciBjc3MgPSBvYmouY3NzO1xuXHR2YXIgbWVkaWEgPSBvYmoubWVkaWE7XG5cblx0aWYobWVkaWEpIHtcblx0XHRzdHlsZS5zZXRBdHRyaWJ1dGUoXCJtZWRpYVwiLCBtZWRpYSlcblx0fVxuXG5cdGlmKHN0eWxlLnN0eWxlU2hlZXQpIHtcblx0XHRzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG5cdH0gZWxzZSB7XG5cdFx0d2hpbGUoc3R5bGUuZmlyc3RDaGlsZCkge1xuXHRcdFx0c3R5bGUucmVtb3ZlQ2hpbGQoc3R5bGUuZmlyc3RDaGlsZCk7XG5cdFx0fVxuXG5cdFx0c3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG5cdH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlTGluayAobGluaywgb3B0aW9ucywgb2JqKSB7XG5cdHZhciBjc3MgPSBvYmouY3NzO1xuXHR2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcblxuXHQvKlxuXHRcdElmIGNvbnZlcnRUb0Fic29sdXRlVXJscyBpc24ndCBkZWZpbmVkLCBidXQgc291cmNlbWFwcyBhcmUgZW5hYmxlZFxuXHRcdGFuZCB0aGVyZSBpcyBubyBwdWJsaWNQYXRoIGRlZmluZWQgdGhlbiBsZXRzIHR1cm4gY29udmVydFRvQWJzb2x1dGVVcmxzXG5cdFx0b24gYnkgZGVmYXVsdC4gIE90aGVyd2lzZSBkZWZhdWx0IHRvIHRoZSBjb252ZXJ0VG9BYnNvbHV0ZVVybHMgb3B0aW9uXG5cdFx0ZGlyZWN0bHlcblx0Ki9cblx0dmFyIGF1dG9GaXhVcmxzID0gb3B0aW9ucy5jb252ZXJ0VG9BYnNvbHV0ZVVybHMgPT09IHVuZGVmaW5lZCAmJiBzb3VyY2VNYXA7XG5cblx0aWYgKG9wdGlvbnMuY29udmVydFRvQWJzb2x1dGVVcmxzIHx8IGF1dG9GaXhVcmxzKSB7XG5cdFx0Y3NzID0gZml4VXJscyhjc3MpO1xuXHR9XG5cblx0aWYgKHNvdXJjZU1hcCkge1xuXHRcdC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI2NjAzODc1XG5cdFx0Y3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIiArIGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSkgKyBcIiAqL1wiO1xuXHR9XG5cblx0dmFyIGJsb2IgPSBuZXcgQmxvYihbY3NzXSwgeyB0eXBlOiBcInRleHQvY3NzXCIgfSk7XG5cblx0dmFyIG9sZFNyYyA9IGxpbmsuaHJlZjtcblxuXHRsaW5rLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuXG5cdGlmKG9sZFNyYykgVVJMLnJldm9rZU9iamVjdFVSTChvbGRTcmMpO1xufVxuIiwidmFyIHJlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ3RyYW5zaXRpb24nLHthdHRyczp7XCJuYW1lXCI6XCJwb3B1cFwifX0sWyhfdm0uaXNWaXNpYmxlV3JhcHBlcik/X2MoJ2Rpdicse3N0YXRpY0NsYXNzOlwicG9wdXBcIixvbjp7XCJjbGlja1wiOmZ1bmN0aW9uKCRldmVudCl7aWYoJGV2ZW50LnRhcmdldCAhPT0gJGV2ZW50LmN1cnJlbnRUYXJnZXQpeyByZXR1cm4gbnVsbDsgfXJldHVybiBfdm0uY2xvc2VQb3B1cCgkZXZlbnQpfX19LFtfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJwb3B1cC13cmFwcGVyXCJ9LFtfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJwb3B1cC1pbWFnZVwifSxbX2MoJ3NwYW4nLHtzdGF0aWNDbGFzczpcImVtb2ppXCJ9LFtfdm0uX3YoX3ZtLl9zKF92bS5lbW9qaSkpXSldKSxfdm0uX3YoXCIgXCIpLF9jKCdkaXYnLHtzdGF0aWNDbGFzczpcInBvcHVwLWNvbnRlbnRcIn0sWyhfdm0udGl0bGUpP19jKCdoMScse3N0YXRpY0NsYXNzOlwidGl0bGVcIn0sW192bS5fdihfdm0uX3MoX3ZtLnRpdGxlKSldKTpfdm0uX2UoKSxfdm0uX3YoXCIgXCIpLChfdm0ubWVzc2FnZSk/X2MoJ3AnLHtzdGF0aWNDbGFzczpcIm1lc3NhZ2VcIn0sW192bS5fdihfdm0uX3MoX3ZtLm1lc3NhZ2UpKV0pOl92bS5fZSgpXSksX3ZtLl92KFwiIFwiKSxfYygnZGl2Jyx7c3RhdGljQ2xhc3M6XCJwb3B1cC1hY3Rpb25zXCJ9LFtfYygnQnV0dG9uQmFzZScse3N0YXRpY0NsYXNzOlwiYWN0aW9uLWNvbmZpcm1cIixhdHRyczp7XCJidXR0b24tc3R5bGVcIjpfdm0uYnV0dG9uU3R5bGV9LG5hdGl2ZU9uOntcImNsaWNrXCI6ZnVuY3Rpb24oJGV2ZW50KXtyZXR1cm4gX3ZtLmNsb3NlUG9wdXAoJGV2ZW50KX19fSxbX3ZtLl92KF92bS5fcyhfdm0uYnV0dG9uKStcIlxcbiAgICAgICAgICAgICAgICBcIildKV0sMSldKV0pOl92bS5fZSgpXSl9XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSIsImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P3JlZi0tNC0wIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQWxlcnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9yZWYtLTQtMCEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FsZXJ0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiIsIjx0ZW1wbGF0ZT5cbiAgICA8dHJhbnNpdGlvbiBuYW1lPVwicG9wdXBcIj5cbiAgICAgICAgPGRpdiBAY2xpY2suc2VsZj1cImNsb3NlUG9wdXBcIiBjbGFzcz1cInBvcHVwXCIgdi1pZj1cImlzVmlzaWJsZVdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWltYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZW1vamlcIj57eyBlbW9qaSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8aDEgdi1pZj1cInRpdGxlXCIgY2xhc3M9XCJ0aXRsZVwiPnt7IHRpdGxlIH19PC9oMT5cbiAgICAgICAgICAgICAgICAgICAgPHAgdi1pZj1cIm1lc3NhZ2VcIiBjbGFzcz1cIm1lc3NhZ2VcIj57eyBtZXNzYWdlIH19PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b25CYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrLm5hdGl2ZT1cImNsb3NlUG9wdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpidXR0b24tc3R5bGU9XCJidXR0b25TdHlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24tY29uZmlybVwiXG4gICAgICAgICAgICAgICAgICAgID57eyBidXR0b24gfX1cbiAgICAgICAgICAgICAgICAgICAgPC9CdXR0b25CYXNlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvdHJhbnNpdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gICAgaW1wb3J0IEJ1dHRvbkJhc2UgZnJvbSAnQC9jb21wb25lbnRzL0ZpbGVzVmlldy9CdXR0b25CYXNlJ1xuICAgIGltcG9ydCB7ZXZlbnRzfSBmcm9tICdAL2J1cydcblxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgbmFtZTogJ0FsZXJ0UG9wdXAnLFxuICAgICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgICAgICBCdXR0b25CYXNlXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGEoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGlzVmlzaWJsZVdyYXBwZXI6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGJ1dHRvblN0eWxlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgYnV0dG9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZW1vamk6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWV0aG9kczoge1xuICAgICAgICAgICAgY2xvc2VQb3B1cCgpIHtcbiAgICAgICAgICAgICAgICBldmVudHMuJGVtaXQoJ3BvcHVwOmNsb3NlJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW91bnRlZCgpIHtcbiAgICAgICAgICAgIC8vIFNob3cgYWxlcnRcbiAgICAgICAgICAgIGV2ZW50cy4kb24oJ2FsZXJ0Om9wZW4nLCBhcmdzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzVmlzaWJsZVdyYXBwZXIgPSB0cnVlXG5cbiAgICAgICAgICAgICAgICB0aGlzLnRpdGxlID0gYXJncy50aXRsZVxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZSA9IGFyZ3MubWVzc2FnZVxuXG4gICAgICAgICAgICAgICAgdGhpcy5idXR0b24gPSB0aGlzLiR0KCdhbGVydHMuZXJyb3JfY29uZmlybScpXG4gICAgICAgICAgICAgICAgdGhpcy5lbW9qaSA9ICfwn5ii8J+YovCfmKInXG4gICAgICAgICAgICAgICAgdGhpcy5idXR0b25TdHlsZSA9ICdkYW5nZXItc29saWQnXG5cbiAgICAgICAgICAgICAgICBpZiAoYXJncy5lbW9qaSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtb2ppID0gYXJncy5lbW9qaVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChhcmdzLmJ1dHRvblN0eWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnV0dG9uU3R5bGUgPSBhcmdzLmJ1dHRvblN0eWxlXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGFyZ3MuYnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnV0dG9uID0gYXJncy5idXR0b25cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAvLyBTaG93IGFsZXJ0XG4gICAgICAgICAgICBldmVudHMuJG9uKCdzdWNjZXNzOm9wZW4nLCBhcmdzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzVmlzaWJsZVdyYXBwZXIgPSB0cnVlXG5cbiAgICAgICAgICAgICAgICB0aGlzLnRpdGxlID0gYXJncy50aXRsZVxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZSA9IGFyZ3MubWVzc2FnZVxuXG4gICAgICAgICAgICAgICAgdGhpcy5idXR0b24gPSB0aGlzLiR0KCdhbGVydHMuc3VjY2Vzc19jb25maXJtJylcbiAgICAgICAgICAgICAgICB0aGlzLmVtb2ppID0gJ/CfpbPwn6Wz8J+lsydcbiAgICAgICAgICAgICAgICB0aGlzLmJ1dHRvblN0eWxlID0gJ3RoZW1lJ1xuXG4gICAgICAgICAgICAgICAgaWYgKGFyZ3MuZW1vamkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbW9qaSA9IGFyZ3MuZW1vamlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAvLyBDbG9zZSBwb3B1cFxuICAgICAgICAgICAgZXZlbnRzLiRvbigncG9wdXA6Y2xvc2UnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1Zpc2libGVXcmFwcGVyID0gZmFsc2VcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICB9XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZCBsYW5nPVwic2Nzc1wiPlxuICAgIEBpbXBvcnQgJ0Bhc3NldHMvdnVlZmlsZW1hbmFnZXIvX3ZhcmlhYmxlcyc7XG4gICAgQGltcG9ydCAnQGFzc2V0cy92dWVmaWxlbWFuYWdlci9fbWl4aW5zJztcblxuICAgIC5wb3B1cCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICB6LWluZGV4OiAyMDtcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICAucG9wdXAtd3JhcHBlciB7XG4gICAgICAgIHotaW5kZXg6IDEyO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBtYXgtd2lkdGg6IDQ4MHB4O1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHNjYWxlKDEpO1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgcGFkZGluZzogMjBweDtcbiAgICAgICAgYm94LXNoYWRvdzogJGxpZ2h0X21vZGVfcG9wdXBfc2hhZG93O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgfVxuXG4gICAgLnBvcHVwLWltYWdlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDtcblxuICAgICAgICAuZW1vamkge1xuICAgICAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKDU2KTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnBvcHVwLWNvbnRlbnQge1xuXG4gICAgICAgIC50aXRsZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoMjIpO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICAgICAgICBjb2xvcjogJHRleHQ7XG4gICAgICAgIH1cblxuICAgICAgICAubWVzc2FnZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoMTYpO1xuICAgICAgICAgICAgY29sb3I6ICMzMzM7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucG9wdXAtYWN0aW9ucyB7XG4gICAgICAgIG1hcmdpbi10b3A6IDMwcHg7XG5cbiAgICAgICAgLmFjdGlvbi1jb25maXJtIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2OTBweCkge1xuICAgICAgICAucG9wdXAtd3JhcHBlciB7XG4gICAgICAgICAgICBwYWRkaW5nOiA0MHB4IDIwcHggMjBweDtcbiAgICAgICAgICAgIGxlZnQ6IDE1cHg7XG4gICAgICAgICAgICByaWdodDogMTVweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgICAgICAgLnBvcHVwLXdyYXBwZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGRhcmtfbW9kZV9mb3JlZ3JvdW5kO1xuICAgICAgICB9XG4gICAgICAgIC5wb3B1cC1jb250ZW50IHtcbiAgICAgICAgICAgIC50aXRsZSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRkYXJrX21vZGVfdGV4dF9wcmltYXJ5O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubWVzc2FnZSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRkYXJrX21vZGVfdGV4dF9zZWNvbmRhcnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbmltYXRpb25zXG4gICAgLnBvcHVwLWVudGVyLWFjdGl2ZSB7XG4gICAgICAgIGFuaW1hdGlvbjogcG9wdXAtaW4gMC4zNXMgMC4xNXMgZWFzZSBib3RoO1xuICAgIH1cblxuICAgIC5wb3B1cC1sZWF2ZS1hY3RpdmUge1xuICAgICAgICBhbmltYXRpb246IHBvcHVwLWluIDAuMTVzIGVhc2UgcmV2ZXJzZTtcbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIHBvcHVwLWluIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC43KTtcbiAgICAgICAgfVxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgICB9XG4gICAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vQWxlcnQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWYwYWE4ZWIwJnNjb3BlZD10cnVlJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FsZXJ0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vQWxlcnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5pbXBvcnQgc3R5bGUwIGZyb20gXCIuL0FsZXJ0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPWYwYWE4ZWIwJnNjb3BlZD10cnVlJmxhbmc9c2NzcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIFwiZjBhYThlYjBcIixcbiAgbnVsbFxuICBcbilcblxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5jb29raWUtd3JhcHBlcltkYXRhLXYtODdjZGMxZjhdIHtcXG4gIHBhZGRpbmc6IDIwcHg7XFxuICBib3JkZXItcmFkaXVzOiA4cHg7XFxuICBib3gtc2hhZG93OiAwIDEwcHggMjBweCAtMTBweCByZ2JhKDI1LCA1NCwgNjAsIDAuMSk7XFxuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG4gIGJvdHRvbTogMDtcXG4gIGxlZnQ6IDExNXB4O1xcbiAgbWF4LXdpZHRoOiAyMjVweDtcXG4gIHotaW5kZXg6IDM7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XFxufVxcbi5jb29raWUtd3JhcHBlciAuY2xvc2UtaWNvbltkYXRhLXYtODdjZGMxZjhdIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHJpZ2h0OiAtNHB4O1xcbiAgdG9wOiAtNHB4O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgcGFkZGluZzogMTJweDtcXG59XFxuLmNvb2tpZS13cmFwcGVyIC5jbG9zZS1pY29uIGxpbmVbZGF0YS12LTg3Y2RjMWY4XSB7XFxuICBzdHJva2U6IHJnYmEoMjcsIDM3LCA1NywgMC43KTtcXG59XFxuLmNvb2tpZS13cmFwcGVyIHBbZGF0YS12LTg3Y2RjMWY4XSB7XFxuICBmb250LXNpemU6IDEycHg7XFxuICBsaW5lLWhlaWdodDogMS42O1xcbn1cXG4uY29va2llLXdyYXBwZXIgcCBhW2RhdGEtdi04N2NkYzFmOF0ge1xcbiAgZm9udC1zaXplOiAxMnB4O1xcbiAgY29sb3I6ICMwMEJDN0U7XFxufVxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjkwcHgpIHtcXG4uY29va2llLXdyYXBwZXJbZGF0YS12LTg3Y2RjMWY4XSB7XFxuICAgIHBhZGRpbmc6IDEwcHggMTVweDtcXG4gICAgbGVmdDogMDtcXG4gICAgcmlnaHQ6IDA7XFxuICAgIG1heC13aWR0aDogMTAwJTtcXG59XFxuLmNvb2tpZS13cmFwcGVyIHBbZGF0YS12LTg3Y2RjMWY4XSB7XFxuICAgIG1heC13aWR0aDogMzAwcHg7XFxufVxcbn1cXG5AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XFxuLmNvb2tpZS13cmFwcGVyW2RhdGEtdi04N2NkYzFmOF0ge1xcbiAgICBiYWNrZ3JvdW5kOiAjMWUyMDI0O1xcbn1cXG4uY29va2llLXdyYXBwZXIgcFtkYXRhLXYtODdjZGMxZjhdIHtcXG4gICAgY29sb3I6ICNiZWM2Y2Y7XFxufVxcbi5jb29raWUtd3JhcHBlciAuY2xvc2UtaWNvbiBsaW5lW2RhdGEtdi04N2NkYzFmOF0ge1xcbiAgICBzdHJva2U6ICNiZWM2Y2Y7XFxufVxcbn1cXG5cIiwgXCJcIl0pO1xuXG4vLyBleHBvcnRzXG4iLCJcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9WaWduZXR0ZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD02MDJlNTVhNCZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCIpO1xuXG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcblxudmFyIHRyYW5zZm9ybTtcbnZhciBpbnNlcnRJbnRvO1xuXG5cblxudmFyIG9wdGlvbnMgPSB7XCJobXJcIjp0cnVlfVxuXG5vcHRpb25zLnRyYW5zZm9ybSA9IHRyYW5zZm9ybVxub3B0aW9ucy5pbnNlcnRJbnRvID0gdW5kZWZpbmVkO1xuXG52YXIgdXBkYXRlID0gcmVxdWlyZShcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXMuanNcIikoY29udGVudCwgb3B0aW9ucyk7XG5cbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuXG5pZihtb2R1bGUuaG90KSB7XG5cdG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS03LTIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTctMyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1ZpZ25ldHRlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTYwMmU1NWE0Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIiwgZnVuY3Rpb24oKSB7XG5cdFx0dmFyIG5ld0NvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS03LTIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTctMyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1ZpZ25ldHRlLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTYwMmU1NWE0Jmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIik7XG5cblx0XHRpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcblxuXHRcdHZhciBsb2NhbHMgPSAoZnVuY3Rpb24oYSwgYikge1xuXHRcdFx0dmFyIGtleSwgaWR4ID0gMDtcblxuXHRcdFx0Zm9yKGtleSBpbiBhKSB7XG5cdFx0XHRcdGlmKCFiIHx8IGFba2V5XSAhPT0gYltrZXldKSByZXR1cm4gZmFsc2U7XG5cdFx0XHRcdGlkeCsrO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3Ioa2V5IGluIGIpIGlkeC0tO1xuXG5cdFx0XHRyZXR1cm4gaWR4ID09PSAwO1xuXHRcdH0oY29udGVudC5sb2NhbHMsIG5ld0NvbnRlbnQubG9jYWxzKSk7XG5cblx0XHRpZighbG9jYWxzKSB0aHJvdyBuZXcgRXJyb3IoJ0Fib3J0aW5nIENTUyBITVIgZHVlIHRvIGNoYW5nZWQgY3NzLW1vZHVsZXMgbG9jYWxzLicpO1xuXG5cdFx0dXBkYXRlKG5ld0NvbnRlbnQpO1xuXHR9KTtcblxuXHRtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcbn0iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQSBgQ2FuY2VsYCBpcyBhbiBvYmplY3QgdGhhdCBpcyB0aHJvd24gd2hlbiBhbiBvcGVyYXRpb24gaXMgY2FuY2VsZWQuXG4gKlxuICogQGNsYXNzXG4gKiBAcGFyYW0ge3N0cmluZz19IG1lc3NhZ2UgVGhlIG1lc3NhZ2UuXG4gKi9cbmZ1bmN0aW9uIENhbmNlbChtZXNzYWdlKSB7XG4gIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG59XG5cbkNhbmNlbC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuICdDYW5jZWwnICsgKHRoaXMubWVzc2FnZSA/ICc6ICcgKyB0aGlzLm1lc3NhZ2UgOiAnJyk7XG59O1xuXG5DYW5jZWwucHJvdG90eXBlLl9fQ0FOQ0VMX18gPSB0cnVlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IENhbmNlbDtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgdXRpbHMuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSA/XG5cbiAgLy8gU3RhbmRhcmQgYnJvd3NlciBlbnZzIHN1cHBvcnQgZG9jdW1lbnQuY29va2llXG4gICAgKGZ1bmN0aW9uIHN0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbiB3cml0ZShuYW1lLCB2YWx1ZSwgZXhwaXJlcywgcGF0aCwgZG9tYWluLCBzZWN1cmUpIHtcbiAgICAgICAgICB2YXIgY29va2llID0gW107XG4gICAgICAgICAgY29va2llLnB1c2gobmFtZSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpO1xuXG4gICAgICAgICAgaWYgKHV0aWxzLmlzTnVtYmVyKGV4cGlyZXMpKSB7XG4gICAgICAgICAgICBjb29raWUucHVzaCgnZXhwaXJlcz0nICsgbmV3IERhdGUoZXhwaXJlcykudG9HTVRTdHJpbmcoKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHV0aWxzLmlzU3RyaW5nKHBhdGgpKSB7XG4gICAgICAgICAgICBjb29raWUucHVzaCgncGF0aD0nICsgcGF0aCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHV0aWxzLmlzU3RyaW5nKGRvbWFpbikpIHtcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdkb21haW49JyArIGRvbWFpbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlY3VyZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgY29va2llLnB1c2goJ3NlY3VyZScpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNvb2tpZS5qb2luKCc7ICcpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHJlYWQ6IGZ1bmN0aW9uIHJlYWQobmFtZSkge1xuICAgICAgICAgIHZhciBtYXRjaCA9IGRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCcoXnw7XFxcXHMqKSgnICsgbmFtZSArICcpPShbXjtdKiknKSk7XG4gICAgICAgICAgcmV0dXJuIChtYXRjaCA/IGRlY29kZVVSSUNvbXBvbmVudChtYXRjaFszXSkgOiBudWxsKTtcbiAgICAgICAgfSxcblxuICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZShuYW1lKSB7XG4gICAgICAgICAgdGhpcy53cml0ZShuYW1lLCAnJywgRGF0ZS5ub3coKSAtIDg2NDAwMDAwKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KSgpIDpcblxuICAvLyBOb24gc3RhbmRhcmQgYnJvd3NlciBlbnYgKHdlYiB3b3JrZXJzLCByZWFjdC1uYXRpdmUpIGxhY2sgbmVlZGVkIHN1cHBvcnQuXG4gICAgKGZ1bmN0aW9uIG5vblN0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbiB3cml0ZSgpIHt9LFxuICAgICAgICByZWFkOiBmdW5jdGlvbiByZWFkKCkgeyByZXR1cm4gbnVsbDsgfSxcbiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7fVxuICAgICAgfTtcbiAgICB9KSgpXG4pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNBYnNvbHV0ZVVSTCA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvaXNBYnNvbHV0ZVVSTCcpO1xudmFyIGNvbWJpbmVVUkxzID0gcmVxdWlyZSgnLi4vaGVscGVycy9jb21iaW5lVVJMcycpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgVVJMIGJ5IGNvbWJpbmluZyB0aGUgYmFzZVVSTCB3aXRoIHRoZSByZXF1ZXN0ZWRVUkwsXG4gKiBvbmx5IHdoZW4gdGhlIHJlcXVlc3RlZFVSTCBpcyBub3QgYWxyZWFkeSBhbiBhYnNvbHV0ZSBVUkwuXG4gKiBJZiB0aGUgcmVxdWVzdFVSTCBpcyBhYnNvbHV0ZSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSByZXF1ZXN0ZWRVUkwgdW50b3VjaGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVVJMIFRoZSBiYXNlIFVSTFxuICogQHBhcmFtIHtzdHJpbmd9IHJlcXVlc3RlZFVSTCBBYnNvbHV0ZSBvciByZWxhdGl2ZSBVUkwgdG8gY29tYmluZVxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbWJpbmVkIGZ1bGwgcGF0aFxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJ1aWxkRnVsbFBhdGgoYmFzZVVSTCwgcmVxdWVzdGVkVVJMKSB7XG4gIGlmIChiYXNlVVJMICYmICFpc0Fic29sdXRlVVJMKHJlcXVlc3RlZFVSTCkpIHtcbiAgICByZXR1cm4gY29tYmluZVVSTHMoYmFzZVVSTCwgcmVxdWVzdGVkVVJMKTtcbiAgfVxuICByZXR1cm4gcmVxdWVzdGVkVVJMO1xufTtcbiIsIlxudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS03LTIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTctMyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FkbWluTW9iaWxlTWVudS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0yMjY5OWIyNSZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3MmXCIpO1xuXG5pZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcblxudmFyIHRyYW5zZm9ybTtcbnZhciBpbnNlcnRJbnRvO1xuXG5cblxudmFyIG9wdGlvbnMgPSB7XCJobXJcIjp0cnVlfVxuXG5vcHRpb25zLnRyYW5zZm9ybSA9IHRyYW5zZm9ybVxub3B0aW9ucy5pbnNlcnRJbnRvID0gdW5kZWZpbmVkO1xuXG52YXIgdXBkYXRlID0gcmVxdWlyZShcIiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXMuanNcIikoY29udGVudCwgb3B0aW9ucyk7XG5cbmlmKGNvbnRlbnQubG9jYWxzKSBtb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzO1xuXG5pZihtb2R1bGUuaG90KSB7XG5cdG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9pbmRleC5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS03LTIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTctMyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FkbWluTW9iaWxlTWVudS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0yMjY5OWIyNSZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3MmXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHZhciBuZXdDb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9BZG1pbk1vYmlsZU1lbnUudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MjI2OTliMjUmc2NvcGVkPXRydWUmbGFuZz1zY3NzJlwiKTtcblxuXHRcdGlmKHR5cGVvZiBuZXdDb250ZW50ID09PSAnc3RyaW5nJykgbmV3Q29udGVudCA9IFtbbW9kdWxlLmlkLCBuZXdDb250ZW50LCAnJ11dO1xuXG5cdFx0dmFyIGxvY2FscyA9IChmdW5jdGlvbihhLCBiKSB7XG5cdFx0XHR2YXIga2V5LCBpZHggPSAwO1xuXG5cdFx0XHRmb3Ioa2V5IGluIGEpIHtcblx0XHRcdFx0aWYoIWIgfHwgYVtrZXldICE9PSBiW2tleV0pIHJldHVybiBmYWxzZTtcblx0XHRcdFx0aWR4Kys7XG5cdFx0XHR9XG5cblx0XHRcdGZvcihrZXkgaW4gYikgaWR4LS07XG5cblx0XHRcdHJldHVybiBpZHggPT09IDA7XG5cdFx0fShjb250ZW50LmxvY2FscywgbmV3Q29udGVudC5sb2NhbHMpKTtcblxuXHRcdGlmKCFsb2NhbHMpIHRocm93IG5ldyBFcnJvcignQWJvcnRpbmcgQ1NTIEhNUiBkdWUgdG8gY2hhbmdlZCBjc3MtbW9kdWxlcyBsb2NhbHMuJyk7XG5cblx0XHR1cGRhdGUobmV3Q29udGVudCk7XG5cdH0pO1xuXG5cdG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHsgdXBkYXRlKCk7IH0pO1xufSIsIid1c2Ugc3RyaWN0JztcblxudmFyIENhbmNlbCA9IHJlcXVpcmUoJy4vQ2FuY2VsJyk7XG5cbi8qKlxuICogQSBgQ2FuY2VsVG9rZW5gIGlzIGFuIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlcXVlc3QgY2FuY2VsbGF0aW9uIG9mIGFuIG9wZXJhdGlvbi5cbiAqXG4gKiBAY2xhc3NcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGV4ZWN1dG9yIFRoZSBleGVjdXRvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gQ2FuY2VsVG9rZW4oZXhlY3V0b3IpIHtcbiAgaWYgKHR5cGVvZiBleGVjdXRvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2V4ZWN1dG9yIG11c3QgYmUgYSBmdW5jdGlvbi4nKTtcbiAgfVxuXG4gIHZhciByZXNvbHZlUHJvbWlzZTtcbiAgdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gcHJvbWlzZUV4ZWN1dG9yKHJlc29sdmUpIHtcbiAgICByZXNvbHZlUHJvbWlzZSA9IHJlc29sdmU7XG4gIH0pO1xuXG4gIHZhciB0b2tlbiA9IHRoaXM7XG4gIGV4ZWN1dG9yKGZ1bmN0aW9uIGNhbmNlbChtZXNzYWdlKSB7XG4gICAgaWYgKHRva2VuLnJlYXNvbikge1xuICAgICAgLy8gQ2FuY2VsbGF0aW9uIGhhcyBhbHJlYWR5IGJlZW4gcmVxdWVzdGVkXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdG9rZW4ucmVhc29uID0gbmV3IENhbmNlbChtZXNzYWdlKTtcbiAgICByZXNvbHZlUHJvbWlzZSh0b2tlbi5yZWFzb24pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBUaHJvd3MgYSBgQ2FuY2VsYCBpZiBjYW5jZWxsYXRpb24gaGFzIGJlZW4gcmVxdWVzdGVkLlxuICovXG5DYW5jZWxUb2tlbi5wcm90b3R5cGUudGhyb3dJZlJlcXVlc3RlZCA9IGZ1bmN0aW9uIHRocm93SWZSZXF1ZXN0ZWQoKSB7XG4gIGlmICh0aGlzLnJlYXNvbikge1xuICAgIHRocm93IHRoaXMucmVhc29uO1xuICB9XG59O1xuXG4vKipcbiAqIFJldHVybnMgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMgYSBuZXcgYENhbmNlbFRva2VuYCBhbmQgYSBmdW5jdGlvbiB0aGF0LCB3aGVuIGNhbGxlZCxcbiAqIGNhbmNlbHMgdGhlIGBDYW5jZWxUb2tlbmAuXG4gKi9cbkNhbmNlbFRva2VuLnNvdXJjZSA9IGZ1bmN0aW9uIHNvdXJjZSgpIHtcbiAgdmFyIGNhbmNlbDtcbiAgdmFyIHRva2VuID0gbmV3IENhbmNlbFRva2VuKGZ1bmN0aW9uIGV4ZWN1dG9yKGMpIHtcbiAgICBjYW5jZWwgPSBjO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICB0b2tlbjogdG9rZW4sXG4gICAgY2FuY2VsOiBjYW5jZWxcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQ2FuY2VsVG9rZW47XG4iLCJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5idXR0b24tYmFzZVtkYXRhLXYtNDAxYzc5NDJdIHtcXG4gIGZvbnQtc2l6ZTogMC45Mzc1ZW07XFxuICBmb250LXdlaWdodDogNzAwO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgdHJhbnNpdGlvbjogMC4xNXMgYWxsIGVhc2U7XFxuICBib3JkZXItcmFkaXVzOiA4cHg7XFxuICBib3JkZXI6IDA7XFxuICBwYWRkaW5nOiAxMHB4IDI4cHg7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG59XFxuLmJ1dHRvbi1iYXNlIC5pY29uW2RhdGEtdi00MDFjNzk0Ml0ge1xcbiAgbGluZS1oZWlnaHQ6IDE7XFxuICBtYXJnaW4tcmlnaHQ6IDEwcHg7XFxufVxcbi5idXR0b24tYmFzZVtkYXRhLXYtNDAxYzc5NDJdOmFjdGl2ZSB7XFxuICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpO1xcbn1cXG4uYnV0dG9uLWJhc2UudGhlbWUtc29saWQgLmNvbnRlbnRbZGF0YS12LTQwMWM3OTQyXSB7XFxuICBjb2xvcjogd2hpdGU7XFxufVxcbi5idXR0b24tYmFzZS5kYW5nZXJbZGF0YS12LTQwMWM3OTQyXSB7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDI1MywgNTcsIDEyMiwgMC4xKTtcXG59XFxuLmJ1dHRvbi1iYXNlLmRhbmdlciAuY29udGVudFtkYXRhLXYtNDAxYzc5NDJdIHtcXG4gIGNvbG9yOiAjZmQzOTdhO1xcbn1cXG4uYnV0dG9uLWJhc2UuZGFuZ2VyIHBvbHlsaW5lW2RhdGEtdi00MDFjNzk0Ml0sIC5idXR0b24tYmFzZS5kYW5nZXIgcGF0aFtkYXRhLXYtNDAxYzc5NDJdIHtcXG4gIHN0cm9rZTogI2ZkMzk3YTtcXG59XFxuLmJ1dHRvbi1iYXNlLmRhbmdlci1zb2xpZFtkYXRhLXYtNDAxYzc5NDJdIHtcXG4gIGJhY2tncm91bmQ6ICNmZDM5N2E7XFxufVxcbi5idXR0b24tYmFzZS5kYW5nZXItc29saWQgLmNvbnRlbnRbZGF0YS12LTQwMWM3OTQyXSB7XFxuICBjb2xvcjogd2hpdGU7XFxufVxcbi5idXR0b24tYmFzZS5kYW5nZXItc29saWQgcG9seWxpbmVbZGF0YS12LTQwMWM3OTQyXSwgLmJ1dHRvbi1iYXNlLmRhbmdlci1zb2xpZCBwYXRoW2RhdGEtdi00MDFjNzk0Ml0ge1xcbiAgc3Ryb2tlOiB3aGl0ZTtcXG59XFxuLmJ1dHRvbi1iYXNlLnNlY29uZGFyeVtkYXRhLXYtNDAxYzc5NDJdIHtcXG4gIGJhY2tncm91bmQ6ICNmNGY1ZjY7XFxufVxcbi5idXR0b24tYmFzZS5zZWNvbmRhcnkgLmNvbnRlbnRbZGF0YS12LTQwMWM3OTQyXSB7XFxuICBjb2xvcjogIzFCMjUzOTtcXG59XFxuLmJ1dHRvbi1iYXNlLnNlY29uZGFyeSBwb2x5bGluZVtkYXRhLXYtNDAxYzc5NDJdLCAuYnV0dG9uLWJhc2Uuc2Vjb25kYXJ5IHBhdGhbZGF0YS12LTQwMWM3OTQyXSB7XFxuICBzdHJva2U6ICMxQjI1Mzk7XFxufVxcbi5zeW5jLWFsdFtkYXRhLXYtNDAxYzc5NDJdIHtcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBzcGluLWRhdGEtdi00MDFjNzk0MiAxcyBsaW5lYXIgaW5maW5pdGU7XFxuICAgICAgICAgIGFuaW1hdGlvbjogc3Bpbi1kYXRhLXYtNDAxYzc5NDIgMXMgbGluZWFyIGluZmluaXRlO1xcbn1cXG5ALXdlYmtpdC1rZXlmcmFtZXMgc3Bpbi1kYXRhLXYtNDAxYzc5NDIge1xcbjAlIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMCk7XFxufVxcbjEwMCUge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbn1cXG59XFxuQGtleWZyYW1lcyBzcGluLWRhdGEtdi00MDFjNzk0MiB7XFxuMCUge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwKTtcXG59XFxuMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxufVxcbn1cXG5AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XFxuLmJ1dHRvbi1iYXNlLnNlY29uZGFyeVtkYXRhLXYtNDAxYzc5NDJdIHtcXG4gICAgYmFja2dyb3VuZDogIzFlMjAyNDtcXG59XFxuLmJ1dHRvbi1iYXNlLnNlY29uZGFyeSAuY29udGVudFtkYXRhLXYtNDAxYzc5NDJdIHtcXG4gICAgY29sb3I6ICNiZWM2Y2Y7XFxufVxcbi5idXR0b24tYmFzZS5zZWNvbmRhcnkgcG9seWxpbmVbZGF0YS12LTQwMWM3OTQyXSwgLmJ1dHRvbi1iYXNlLnNlY29uZGFyeSBwYXRoW2RhdGEtdi00MDFjNzk0Ml0ge1xcbiAgICBjb2xvcjogaW5oZXJpdDtcXG59XFxuLnBvcHVwLXdyYXBwZXIgLmJ1dHRvbi1iYXNlLnNlY29uZGFyeVtkYXRhLXYtNDAxYzc5NDJdIHtcXG4gICAgYmFja2dyb3VuZDogIzI1MjcyYztcXG59XFxufVxcblwiLCBcIlwiXSk7XG5cbi8vIGV4cG9ydHNcbiIsInZhciBuZXN0UkUgPSAvXihhdHRyc3xwcm9wc3xvbnxuYXRpdmVPbnxjbGFzc3xzdHlsZXxob29rKSQvXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbWVyZ2VKU1hQcm9wcyAob2Jqcykge1xuICByZXR1cm4gb2Jqcy5yZWR1Y2UoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICB2YXIgYWEsIGJiLCBrZXksIG5lc3RlZEtleSwgdGVtcFxuICAgIGZvciAoa2V5IGluIGIpIHtcbiAgICAgIGFhID0gYVtrZXldXG4gICAgICBiYiA9IGJba2V5XVxuICAgICAgaWYgKGFhICYmIG5lc3RSRS50ZXN0KGtleSkpIHtcbiAgICAgICAgLy8gbm9ybWFsaXplIGNsYXNzXG4gICAgICAgIGlmIChrZXkgPT09ICdjbGFzcycpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGFhID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGVtcCA9IGFhXG4gICAgICAgICAgICBhW2tleV0gPSBhYSA9IHt9XG4gICAgICAgICAgICBhYVt0ZW1wXSA9IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHR5cGVvZiBiYiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRlbXAgPSBiYlxuICAgICAgICAgICAgYltrZXldID0gYmIgPSB7fVxuICAgICAgICAgICAgYmJbdGVtcF0gPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChrZXkgPT09ICdvbicgfHwga2V5ID09PSAnbmF0aXZlT24nIHx8IGtleSA9PT0gJ2hvb2snKSB7XG4gICAgICAgICAgLy8gbWVyZ2UgZnVuY3Rpb25zXG4gICAgICAgICAgZm9yIChuZXN0ZWRLZXkgaW4gYmIpIHtcbiAgICAgICAgICAgIGFhW25lc3RlZEtleV0gPSBtZXJnZUZuKGFhW25lc3RlZEtleV0sIGJiW25lc3RlZEtleV0pXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYWEpKSB7XG4gICAgICAgICAgYVtrZXldID0gYWEuY29uY2F0KGJiKVxuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYmIpKSB7XG4gICAgICAgICAgYVtrZXldID0gW2FhXS5jb25jYXQoYmIpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9yIChuZXN0ZWRLZXkgaW4gYmIpIHtcbiAgICAgICAgICAgIGFhW25lc3RlZEtleV0gPSBiYltuZXN0ZWRLZXldXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhW2tleV0gPSBiW2tleV1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFcbiAgfSwge30pXG59XG5cbmZ1bmN0aW9uIG1lcmdlRm4gKGEsIGIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBhICYmIGEuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICAgIGIgJiYgYi5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxudmFyIHJ1bnRpbWUgPSAoZnVuY3Rpb24gKGV4cG9ydHMpIHtcbiAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgdmFyIE9wID0gT2JqZWN0LnByb3RvdHlwZTtcbiAgdmFyIGhhc093biA9IE9wLmhhc093blByb3BlcnR5O1xuICB2YXIgdW5kZWZpbmVkOyAvLyBNb3JlIGNvbXByZXNzaWJsZSB0aGFuIHZvaWQgMC5cbiAgdmFyICRTeW1ib2wgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgPyBTeW1ib2wgOiB7fTtcbiAgdmFyIGl0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5pdGVyYXRvciB8fCBcIkBAaXRlcmF0b3JcIjtcbiAgdmFyIGFzeW5jSXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLmFzeW5jSXRlcmF0b3IgfHwgXCJAQGFzeW5jSXRlcmF0b3JcIjtcbiAgdmFyIHRvU3RyaW5nVGFnU3ltYm9sID0gJFN5bWJvbC50b1N0cmluZ1RhZyB8fCBcIkBAdG9TdHJpbmdUYWdcIjtcblxuICBmdW5jdGlvbiB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gSWYgb3V0ZXJGbiBwcm92aWRlZCBhbmQgb3V0ZXJGbi5wcm90b3R5cGUgaXMgYSBHZW5lcmF0b3IsIHRoZW4gb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IuXG4gICAgdmFyIHByb3RvR2VuZXJhdG9yID0gb3V0ZXJGbiAmJiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvciA/IG91dGVyRm4gOiBHZW5lcmF0b3I7XG4gICAgdmFyIGdlbmVyYXRvciA9IE9iamVjdC5jcmVhdGUocHJvdG9HZW5lcmF0b3IucHJvdG90eXBlKTtcbiAgICB2YXIgY29udGV4dCA9IG5ldyBDb250ZXh0KHRyeUxvY3NMaXN0IHx8IFtdKTtcblxuICAgIC8vIFRoZSAuX2ludm9rZSBtZXRob2QgdW5pZmllcyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMuXG4gICAgZ2VuZXJhdG9yLl9pbnZva2UgPSBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfVxuICBleHBvcnRzLndyYXAgPSB3cmFwO1xuXG4gIC8vIFRyeS9jYXRjaCBoZWxwZXIgdG8gbWluaW1pemUgZGVvcHRpbWl6YXRpb25zLiBSZXR1cm5zIGEgY29tcGxldGlvblxuICAvLyByZWNvcmQgbGlrZSBjb250ZXh0LnRyeUVudHJpZXNbaV0uY29tcGxldGlvbi4gVGhpcyBpbnRlcmZhY2UgY291bGRcbiAgLy8gaGF2ZSBiZWVuIChhbmQgd2FzIHByZXZpb3VzbHkpIGRlc2lnbmVkIHRvIHRha2UgYSBjbG9zdXJlIHRvIGJlXG4gIC8vIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHMsIGJ1dCBpbiBhbGwgdGhlIGNhc2VzIHdlIGNhcmUgYWJvdXQgd2VcbiAgLy8gYWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1ldGhvZCB3ZSB3YW50IHRvIGNhbGwsIHNvIHRoZXJlJ3Mgbm8gbmVlZFxuICAvLyB0byBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gb2JqZWN0LiBXZSBjYW4gZXZlbiBnZXQgYXdheSB3aXRoIGFzc3VtaW5nXG4gIC8vIHRoZSBtZXRob2QgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQsIHNpbmNlIHRoYXQgaGFwcGVucyB0byBiZSB0cnVlXG4gIC8vIGluIGV2ZXJ5IGNhc2UsIHNvIHdlIGRvbid0IGhhdmUgdG8gdG91Y2ggdGhlIGFyZ3VtZW50cyBvYmplY3QuIFRoZVxuICAvLyBvbmx5IGFkZGl0aW9uYWwgYWxsb2NhdGlvbiByZXF1aXJlZCBpcyB0aGUgY29tcGxldGlvbiByZWNvcmQsIHdoaWNoXG4gIC8vIGhhcyBhIHN0YWJsZSBzaGFwZSBhbmQgc28gaG9wZWZ1bGx5IHNob3VsZCBiZSBjaGVhcCB0byBhbGxvY2F0ZS5cbiAgZnVuY3Rpb24gdHJ5Q2F0Y2goZm4sIG9iaiwgYXJnKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwibm9ybWFsXCIsIGFyZzogZm4uY2FsbChvYmosIGFyZykgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwidGhyb3dcIiwgYXJnOiBlcnIgfTtcbiAgICB9XG4gIH1cblxuICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRTdGFydCA9IFwic3VzcGVuZGVkU3RhcnRcIjtcbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkWWllbGQgPSBcInN1c3BlbmRlZFlpZWxkXCI7XG4gIHZhciBHZW5TdGF0ZUV4ZWN1dGluZyA9IFwiZXhlY3V0aW5nXCI7XG4gIHZhciBHZW5TdGF0ZUNvbXBsZXRlZCA9IFwiY29tcGxldGVkXCI7XG5cbiAgLy8gUmV0dXJuaW5nIHRoaXMgb2JqZWN0IGZyb20gdGhlIGlubmVyRm4gaGFzIHRoZSBzYW1lIGVmZmVjdCBhc1xuICAvLyBicmVha2luZyBvdXQgb2YgdGhlIGRpc3BhdGNoIHN3aXRjaCBzdGF0ZW1lbnQuXG4gIHZhciBDb250aW51ZVNlbnRpbmVsID0ge307XG5cbiAgLy8gRHVtbXkgY29uc3RydWN0b3IgZnVuY3Rpb25zIHRoYXQgd2UgdXNlIGFzIHRoZSAuY29uc3RydWN0b3IgYW5kXG4gIC8vIC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgcHJvcGVydGllcyBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIEdlbmVyYXRvclxuICAvLyBvYmplY3RzLiBGb3IgZnVsbCBzcGVjIGNvbXBsaWFuY2UsIHlvdSBtYXkgd2lzaCB0byBjb25maWd1cmUgeW91clxuICAvLyBtaW5pZmllciBub3QgdG8gbWFuZ2xlIHRoZSBuYW1lcyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zLlxuICBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge31cblxuICAvLyBUaGlzIGlzIGEgcG9seWZpbGwgZm9yICVJdGVyYXRvclByb3RvdHlwZSUgZm9yIGVudmlyb25tZW50cyB0aGF0XG4gIC8vIGRvbid0IG5hdGl2ZWx5IHN1cHBvcnQgaXQuXG4gIHZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuICBJdGVyYXRvclByb3RvdHlwZVtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgdmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuICB2YXIgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90byAmJiBnZXRQcm90byhnZXRQcm90byh2YWx1ZXMoW10pKSk7XG4gIGlmIChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAmJlxuICAgICAgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgIT09IE9wICYmXG4gICAgICBoYXNPd24uY2FsbChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSwgaXRlcmF0b3JTeW1ib2wpKSB7XG4gICAgLy8gVGhpcyBlbnZpcm9ubWVudCBoYXMgYSBuYXRpdmUgJUl0ZXJhdG9yUHJvdG90eXBlJTsgdXNlIGl0IGluc3RlYWRcbiAgICAvLyBvZiB0aGUgcG9seWZpbGwuXG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBOYXRpdmVJdGVyYXRvclByb3RvdHlwZTtcbiAgfVxuXG4gIHZhciBHcCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9XG4gICAgR2VuZXJhdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUpO1xuICBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHcC5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uO1xuICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZVt0b1N0cmluZ1RhZ1N5bWJvbF0gPVxuICAgIEdlbmVyYXRvckZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gXCJHZW5lcmF0b3JGdW5jdGlvblwiO1xuXG4gIC8vIEhlbHBlciBmb3IgZGVmaW5pbmcgdGhlIC5uZXh0LCAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMgb2YgdGhlXG4gIC8vIEl0ZXJhdG9yIGludGVyZmFjZSBpbiB0ZXJtcyBvZiBhIHNpbmdsZSAuX2ludm9rZSBtZXRob2QuXG4gIGZ1bmN0aW9uIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhwcm90b3R5cGUpIHtcbiAgICBbXCJuZXh0XCIsIFwidGhyb3dcIiwgXCJyZXR1cm5cIl0uZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHtcbiAgICAgIHByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24oYXJnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnZva2UobWV0aG9kLCBhcmcpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIGV4cG9ydHMuaXNHZW5lcmF0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uKGdlbkZ1bikge1xuICAgIHZhciBjdG9yID0gdHlwZW9mIGdlbkZ1biA9PT0gXCJmdW5jdGlvblwiICYmIGdlbkZ1bi5jb25zdHJ1Y3RvcjtcbiAgICByZXR1cm4gY3RvclxuICAgICAgPyBjdG9yID09PSBHZW5lcmF0b3JGdW5jdGlvbiB8fFxuICAgICAgICAvLyBGb3IgdGhlIG5hdGl2ZSBHZW5lcmF0b3JGdW5jdGlvbiBjb25zdHJ1Y3RvciwgdGhlIGJlc3Qgd2UgY2FuXG4gICAgICAgIC8vIGRvIGlzIHRvIGNoZWNrIGl0cyAubmFtZSBwcm9wZXJ0eS5cbiAgICAgICAgKGN0b3IuZGlzcGxheU5hbWUgfHwgY3Rvci5uYW1lKSA9PT0gXCJHZW5lcmF0b3JGdW5jdGlvblwiXG4gICAgICA6IGZhbHNlO1xuICB9O1xuXG4gIGV4cG9ydHMubWFyayA9IGZ1bmN0aW9uKGdlbkZ1bikge1xuICAgIGlmIChPYmplY3Quc2V0UHJvdG90eXBlT2YpIHtcbiAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihnZW5GdW4sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ2VuRnVuLl9fcHJvdG9fXyA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICAgICAgaWYgKCEodG9TdHJpbmdUYWdTeW1ib2wgaW4gZ2VuRnVuKSkge1xuICAgICAgICBnZW5GdW5bdG9TdHJpbmdUYWdTeW1ib2xdID0gXCJHZW5lcmF0b3JGdW5jdGlvblwiO1xuICAgICAgfVxuICAgIH1cbiAgICBnZW5GdW4ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShHcCk7XG4gICAgcmV0dXJuIGdlbkZ1bjtcbiAgfTtcblxuICAvLyBXaXRoaW4gdGhlIGJvZHkgb2YgYW55IGFzeW5jIGZ1bmN0aW9uLCBgYXdhaXQgeGAgaXMgdHJhbnNmb3JtZWQgdG9cbiAgLy8gYHlpZWxkIHJlZ2VuZXJhdG9yUnVudGltZS5hd3JhcCh4KWAsIHNvIHRoYXQgdGhlIHJ1bnRpbWUgY2FuIHRlc3RcbiAgLy8gYGhhc093bi5jYWxsKHZhbHVlLCBcIl9fYXdhaXRcIilgIHRvIGRldGVybWluZSBpZiB0aGUgeWllbGRlZCB2YWx1ZSBpc1xuICAvLyBtZWFudCB0byBiZSBhd2FpdGVkLlxuICBleHBvcnRzLmF3cmFwID0gZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIHsgX19hd2FpdDogYXJnIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gQXN5bmNJdGVyYXRvcihnZW5lcmF0b3IsIFByb21pc2VJbXBsKSB7XG4gICAgZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChnZW5lcmF0b3JbbWV0aG9kXSwgZ2VuZXJhdG9yLCBhcmcpO1xuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgcmVqZWN0KHJlY29yZC5hcmcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHJlY29yZC5hcmc7XG4gICAgICAgIHZhciB2YWx1ZSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgaWYgKHZhbHVlICYmXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKHZhbHVlLCBcIl9fYXdhaXRcIikpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZUltcGwucmVzb2x2ZSh2YWx1ZS5fX2F3YWl0KS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgICBpbnZva2UoXCJuZXh0XCIsIHZhbHVlLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0sIGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgICAgaW52b2tlKFwidGhyb3dcIiwgZXJyLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2VJbXBsLnJlc29sdmUodmFsdWUpLnRoZW4oZnVuY3Rpb24odW53cmFwcGVkKSB7XG4gICAgICAgICAgLy8gV2hlbiBhIHlpZWxkZWQgUHJvbWlzZSBpcyByZXNvbHZlZCwgaXRzIGZpbmFsIHZhbHVlIGJlY29tZXNcbiAgICAgICAgICAvLyB0aGUgLnZhbHVlIG9mIHRoZSBQcm9taXNlPHt2YWx1ZSxkb25lfT4gcmVzdWx0IGZvciB0aGVcbiAgICAgICAgICAvLyBjdXJyZW50IGl0ZXJhdGlvbi5cbiAgICAgICAgICByZXN1bHQudmFsdWUgPSB1bndyYXBwZWQ7XG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9LCBmdW5jdGlvbihlcnJvcikge1xuICAgICAgICAgIC8vIElmIGEgcmVqZWN0ZWQgUHJvbWlzZSB3YXMgeWllbGRlZCwgdGhyb3cgdGhlIHJlamVjdGlvbiBiYWNrXG4gICAgICAgICAgLy8gaW50byB0aGUgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNvIGl0IGNhbiBiZSBoYW5kbGVkIHRoZXJlLlxuICAgICAgICAgIHJldHVybiBpbnZva2UoXCJ0aHJvd1wiLCBlcnJvciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHByZXZpb3VzUHJvbWlzZTtcblxuICAgIGZ1bmN0aW9uIGVucXVldWUobWV0aG9kLCBhcmcpIHtcbiAgICAgIGZ1bmN0aW9uIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2VJbXBsKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcmV2aW91c1Byb21pc2UgPVxuICAgICAgICAvLyBJZiBlbnF1ZXVlIGhhcyBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoZW4gd2Ugd2FudCB0byB3YWl0IHVudGlsXG4gICAgICAgIC8vIGFsbCBwcmV2aW91cyBQcm9taXNlcyBoYXZlIGJlZW4gcmVzb2x2ZWQgYmVmb3JlIGNhbGxpbmcgaW52b2tlLFxuICAgICAgICAvLyBzbyB0aGF0IHJlc3VsdHMgYXJlIGFsd2F5cyBkZWxpdmVyZWQgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIElmXG4gICAgICAgIC8vIGVucXVldWUgaGFzIG5vdCBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoZW4gaXQgaXMgaW1wb3J0YW50IHRvXG4gICAgICAgIC8vIGNhbGwgaW52b2tlIGltbWVkaWF0ZWx5LCB3aXRob3V0IHdhaXRpbmcgb24gYSBjYWxsYmFjayB0byBmaXJlLFxuICAgICAgICAvLyBzbyB0aGF0IHRoZSBhc3luYyBnZW5lcmF0b3IgZnVuY3Rpb24gaGFzIHRoZSBvcHBvcnR1bml0eSB0byBkb1xuICAgICAgICAvLyBhbnkgbmVjZXNzYXJ5IHNldHVwIGluIGEgcHJlZGljdGFibGUgd2F5LiBUaGlzIHByZWRpY3RhYmlsaXR5XG4gICAgICAgIC8vIGlzIHdoeSB0aGUgUHJvbWlzZSBjb25zdHJ1Y3RvciBzeW5jaHJvbm91c2x5IGludm9rZXMgaXRzXG4gICAgICAgIC8vIGV4ZWN1dG9yIGNhbGxiYWNrLCBhbmQgd2h5IGFzeW5jIGZ1bmN0aW9ucyBzeW5jaHJvbm91c2x5XG4gICAgICAgIC8vIGV4ZWN1dGUgY29kZSBiZWZvcmUgdGhlIGZpcnN0IGF3YWl0LiBTaW5jZSB3ZSBpbXBsZW1lbnQgc2ltcGxlXG4gICAgICAgIC8vIGFzeW5jIGZ1bmN0aW9ucyBpbiB0ZXJtcyBvZiBhc3luYyBnZW5lcmF0b3JzLCBpdCBpcyBlc3BlY2lhbGx5XG4gICAgICAgIC8vIGltcG9ydGFudCB0byBnZXQgdGhpcyByaWdodCwgZXZlbiB0aG91Z2ggaXQgcmVxdWlyZXMgY2FyZS5cbiAgICAgICAgcHJldmlvdXNQcm9taXNlID8gcHJldmlvdXNQcm9taXNlLnRoZW4oXG4gICAgICAgICAgY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcsXG4gICAgICAgICAgLy8gQXZvaWQgcHJvcGFnYXRpbmcgZmFpbHVyZXMgdG8gUHJvbWlzZXMgcmV0dXJuZWQgYnkgbGF0ZXJcbiAgICAgICAgICAvLyBpbnZvY2F0aW9ucyBvZiB0aGUgaXRlcmF0b3IuXG4gICAgICAgICAgY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmdcbiAgICAgICAgKSA6IGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCk7XG4gICAgfVxuXG4gICAgLy8gRGVmaW5lIHRoZSB1bmlmaWVkIGhlbHBlciBtZXRob2QgdGhhdCBpcyB1c2VkIHRvIGltcGxlbWVudCAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIChzZWUgZGVmaW5lSXRlcmF0b3JNZXRob2RzKS5cbiAgICB0aGlzLl9pbnZva2UgPSBlbnF1ZXVlO1xuICB9XG5cbiAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEFzeW5jSXRlcmF0b3IucHJvdG90eXBlKTtcbiAgQXN5bmNJdGVyYXRvci5wcm90b3R5cGVbYXN5bmNJdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIGV4cG9ydHMuQXN5bmNJdGVyYXRvciA9IEFzeW5jSXRlcmF0b3I7XG5cbiAgLy8gTm90ZSB0aGF0IHNpbXBsZSBhc3luYyBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIG9uIHRvcCBvZlxuICAvLyBBc3luY0l0ZXJhdG9yIG9iamVjdHM7IHRoZXkganVzdCByZXR1cm4gYSBQcm9taXNlIGZvciB0aGUgdmFsdWUgb2ZcbiAgLy8gdGhlIGZpbmFsIHJlc3VsdCBwcm9kdWNlZCBieSB0aGUgaXRlcmF0b3IuXG4gIGV4cG9ydHMuYXN5bmMgPSBmdW5jdGlvbihpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCwgUHJvbWlzZUltcGwpIHtcbiAgICBpZiAoUHJvbWlzZUltcGwgPT09IHZvaWQgMCkgUHJvbWlzZUltcGwgPSBQcm9taXNlO1xuXG4gICAgdmFyIGl0ZXIgPSBuZXcgQXN5bmNJdGVyYXRvcihcbiAgICAgIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpLFxuICAgICAgUHJvbWlzZUltcGxcbiAgICApO1xuXG4gICAgcmV0dXJuIGV4cG9ydHMuaXNHZW5lcmF0b3JGdW5jdGlvbihvdXRlckZuKVxuICAgICAgPyBpdGVyIC8vIElmIG91dGVyRm4gaXMgYSBnZW5lcmF0b3IsIHJldHVybiB0aGUgZnVsbCBpdGVyYXRvci5cbiAgICAgIDogaXRlci5uZXh0KCkudGhlbihmdW5jdGlvbihyZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0LmRvbmUgPyByZXN1bHQudmFsdWUgOiBpdGVyLm5leHQoKTtcbiAgICAgICAgfSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KSB7XG4gICAgdmFyIHN0YXRlID0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydDtcblxuICAgIHJldHVybiBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcpIHtcbiAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVFeGVjdXRpbmcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZ1wiKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUNvbXBsZXRlZCkge1xuICAgICAgICBpZiAobWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICB0aHJvdyBhcmc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCZSBmb3JnaXZpbmcsIHBlciAyNS4zLjMuMy4zIG9mIHRoZSBzcGVjOlxuICAgICAgICAvLyBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtZ2VuZXJhdG9ycmVzdW1lXG4gICAgICAgIHJldHVybiBkb25lUmVzdWx0KCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQubWV0aG9kID0gbWV0aG9kO1xuICAgICAgY29udGV4dC5hcmcgPSBhcmc7XG5cbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHZhciBkZWxlZ2F0ZSA9IGNvbnRleHQuZGVsZWdhdGU7XG4gICAgICAgIGlmIChkZWxlZ2F0ZSkge1xuICAgICAgICAgIHZhciBkZWxlZ2F0ZVJlc3VsdCA9IG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpO1xuICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCkge1xuICAgICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0ID09PSBDb250aW51ZVNlbnRpbmVsKSBjb250aW51ZTtcbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZVJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwibmV4dFwiKSB7XG4gICAgICAgICAgLy8gU2V0dGluZyBjb250ZXh0Ll9zZW50IGZvciBsZWdhY3kgc3VwcG9ydCBvZiBCYWJlbCdzXG4gICAgICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgICAgICBjb250ZXh0LnNlbnQgPSBjb250ZXh0Ll9zZW50ID0gY29udGV4dC5hcmc7XG5cbiAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0KSB7XG4gICAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkO1xuICAgICAgICAgICAgdGhyb3cgY29udGV4dC5hcmc7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZyk7XG5cbiAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJyZXR1cm5cIikge1xuICAgICAgICAgIGNvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIGNvbnRleHQuYXJnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXRlID0gR2VuU3RhdGVFeGVjdXRpbmc7XG5cbiAgICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIpIHtcbiAgICAgICAgICAvLyBJZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGZyb20gaW5uZXJGbiwgd2UgbGVhdmUgc3RhdGUgPT09XG4gICAgICAgICAgLy8gR2VuU3RhdGVFeGVjdXRpbmcgYW5kIGxvb3AgYmFjayBmb3IgYW5vdGhlciBpbnZvY2F0aW9uLlxuICAgICAgICAgIHN0YXRlID0gY29udGV4dC5kb25lXG4gICAgICAgICAgICA/IEdlblN0YXRlQ29tcGxldGVkXG4gICAgICAgICAgICA6IEdlblN0YXRlU3VzcGVuZGVkWWllbGQ7XG5cbiAgICAgICAgICBpZiAocmVjb3JkLmFyZyA9PT0gQ29udGludWVTZW50aW5lbCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiByZWNvcmQuYXJnLFxuICAgICAgICAgICAgZG9uZTogY29udGV4dC5kb25lXG4gICAgICAgICAgfTtcblxuICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkO1xuICAgICAgICAgIC8vIERpc3BhdGNoIHRoZSBleGNlcHRpb24gYnkgbG9vcGluZyBiYWNrIGFyb3VuZCB0byB0aGVcbiAgICAgICAgICAvLyBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKSBjYWxsIGFib3ZlLlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvLyBDYWxsIGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXShjb250ZXh0LmFyZykgYW5kIGhhbmRsZSB0aGVcbiAgLy8gcmVzdWx0LCBlaXRoZXIgYnkgcmV0dXJuaW5nIGEgeyB2YWx1ZSwgZG9uZSB9IHJlc3VsdCBmcm9tIHRoZVxuICAvLyBkZWxlZ2F0ZSBpdGVyYXRvciwgb3IgYnkgbW9kaWZ5aW5nIGNvbnRleHQubWV0aG9kIGFuZCBjb250ZXh0LmFyZyxcbiAgLy8gc2V0dGluZyBjb250ZXh0LmRlbGVnYXRlIHRvIG51bGwsIGFuZCByZXR1cm5pbmcgdGhlIENvbnRpbnVlU2VudGluZWwuXG4gIGZ1bmN0aW9uIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpIHtcbiAgICB2YXIgbWV0aG9kID0gZGVsZWdhdGUuaXRlcmF0b3JbY29udGV4dC5tZXRob2RdO1xuICAgIGlmIChtZXRob2QgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gQSAudGhyb3cgb3IgLnJldHVybiB3aGVuIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgbm8gLnRocm93XG4gICAgICAvLyBtZXRob2QgYWx3YXlzIHRlcm1pbmF0ZXMgdGhlIHlpZWxkKiBsb29wLlxuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG5cbiAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIC8vIE5vdGU6IFtcInJldHVyblwiXSBtdXN0IGJlIHVzZWQgZm9yIEVTMyBwYXJzaW5nIGNvbXBhdGliaWxpdHkuXG4gICAgICAgIGlmIChkZWxlZ2F0ZS5pdGVyYXRvcltcInJldHVyblwiXSkge1xuICAgICAgICAgIC8vIElmIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgYSByZXR1cm4gbWV0aG9kLCBnaXZlIGl0IGFcbiAgICAgICAgICAvLyBjaGFuY2UgdG8gY2xlYW4gdXAuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICAgIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgIC8vIElmIG1heWJlSW52b2tlRGVsZWdhdGUoY29udGV4dCkgY2hhbmdlZCBjb250ZXh0Lm1ldGhvZCBmcm9tXG4gICAgICAgICAgICAvLyBcInJldHVyblwiIHRvIFwidGhyb3dcIiwgbGV0IHRoYXQgb3ZlcnJpZGUgdGhlIFR5cGVFcnJvciBiZWxvdy5cbiAgICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICd0aHJvdycgbWV0aG9kXCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2gobWV0aG9kLCBkZWxlZ2F0ZS5pdGVyYXRvciwgY29udGV4dC5hcmcpO1xuXG4gICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICB2YXIgaW5mbyA9IHJlY29yZC5hcmc7XG5cbiAgICBpZiAoISBpbmZvKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcihcIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0XCIpO1xuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICBpZiAoaW5mby5kb25lKSB7XG4gICAgICAvLyBBc3NpZ24gdGhlIHJlc3VsdCBvZiB0aGUgZmluaXNoZWQgZGVsZWdhdGUgdG8gdGhlIHRlbXBvcmFyeVxuICAgICAgLy8gdmFyaWFibGUgc3BlY2lmaWVkIGJ5IGRlbGVnYXRlLnJlc3VsdE5hbWUgKHNlZSBkZWxlZ2F0ZVlpZWxkKS5cbiAgICAgIGNvbnRleHRbZGVsZWdhdGUucmVzdWx0TmFtZV0gPSBpbmZvLnZhbHVlO1xuXG4gICAgICAvLyBSZXN1bWUgZXhlY3V0aW9uIGF0IHRoZSBkZXNpcmVkIGxvY2F0aW9uIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0Lm5leHQgPSBkZWxlZ2F0ZS5uZXh0TG9jO1xuXG4gICAgICAvLyBJZiBjb250ZXh0Lm1ldGhvZCB3YXMgXCJ0aHJvd1wiIGJ1dCB0aGUgZGVsZWdhdGUgaGFuZGxlZCB0aGVcbiAgICAgIC8vIGV4Y2VwdGlvbiwgbGV0IHRoZSBvdXRlciBnZW5lcmF0b3IgcHJvY2VlZCBub3JtYWxseS4gSWZcbiAgICAgIC8vIGNvbnRleHQubWV0aG9kIHdhcyBcIm5leHRcIiwgZm9yZ2V0IGNvbnRleHQuYXJnIHNpbmNlIGl0IGhhcyBiZWVuXG4gICAgICAvLyBcImNvbnN1bWVkXCIgYnkgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yLiBJZiBjb250ZXh0Lm1ldGhvZCB3YXNcbiAgICAgIC8vIFwicmV0dXJuXCIsIGFsbG93IHRoZSBvcmlnaW5hbCAucmV0dXJuIGNhbGwgdG8gY29udGludWUgaW4gdGhlXG4gICAgICAvLyBvdXRlciBnZW5lcmF0b3IuXG4gICAgICBpZiAoY29udGV4dC5tZXRob2QgIT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmUteWllbGQgdGhlIHJlc3VsdCByZXR1cm5lZCBieSB0aGUgZGVsZWdhdGUgbWV0aG9kLlxuICAgICAgcmV0dXJuIGluZm87XG4gICAgfVxuXG4gICAgLy8gVGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGlzIGZpbmlzaGVkLCBzbyBmb3JnZXQgaXQgYW5kIGNvbnRpbnVlIHdpdGhcbiAgICAvLyB0aGUgb3V0ZXIgZ2VuZXJhdG9yLlxuICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICB9XG5cbiAgLy8gRGVmaW5lIEdlbmVyYXRvci5wcm90b3R5cGUue25leHQsdGhyb3cscmV0dXJufSBpbiB0ZXJtcyBvZiB0aGVcbiAgLy8gdW5pZmllZCAuX2ludm9rZSBoZWxwZXIgbWV0aG9kLlxuICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoR3ApO1xuXG4gIEdwW3RvU3RyaW5nVGFnU3ltYm9sXSA9IFwiR2VuZXJhdG9yXCI7XG5cbiAgLy8gQSBHZW5lcmF0b3Igc2hvdWxkIGFsd2F5cyByZXR1cm4gaXRzZWxmIGFzIHRoZSBpdGVyYXRvciBvYmplY3Qgd2hlbiB0aGVcbiAgLy8gQEBpdGVyYXRvciBmdW5jdGlvbiBpcyBjYWxsZWQgb24gaXQuIFNvbWUgYnJvd3NlcnMnIGltcGxlbWVudGF0aW9ucyBvZiB0aGVcbiAgLy8gaXRlcmF0b3IgcHJvdG90eXBlIGNoYWluIGluY29ycmVjdGx5IGltcGxlbWVudCB0aGlzLCBjYXVzaW5nIHRoZSBHZW5lcmF0b3JcbiAgLy8gb2JqZWN0IHRvIG5vdCBiZSByZXR1cm5lZCBmcm9tIHRoaXMgY2FsbC4gVGhpcyBlbnN1cmVzIHRoYXQgZG9lc24ndCBoYXBwZW4uXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvaXNzdWVzLzI3NCBmb3IgbW9yZSBkZXRhaWxzLlxuICBHcFtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBHcC50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBcIltvYmplY3QgR2VuZXJhdG9yXVwiO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHB1c2hUcnlFbnRyeShsb2NzKSB7XG4gICAgdmFyIGVudHJ5ID0geyB0cnlMb2M6IGxvY3NbMF0gfTtcblxuICAgIGlmICgxIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmNhdGNoTG9jID0gbG9jc1sxXTtcbiAgICB9XG5cbiAgICBpZiAoMiBpbiBsb2NzKSB7XG4gICAgICBlbnRyeS5maW5hbGx5TG9jID0gbG9jc1syXTtcbiAgICAgIGVudHJ5LmFmdGVyTG9jID0gbG9jc1szXTtcbiAgICB9XG5cbiAgICB0aGlzLnRyeUVudHJpZXMucHVzaChlbnRyeSk7XG4gIH1cblxuICBmdW5jdGlvbiByZXNldFRyeUVudHJ5KGVudHJ5KSB7XG4gICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb24gfHwge307XG4gICAgcmVjb3JkLnR5cGUgPSBcIm5vcm1hbFwiO1xuICAgIGRlbGV0ZSByZWNvcmQuYXJnO1xuICAgIGVudHJ5LmNvbXBsZXRpb24gPSByZWNvcmQ7XG4gIH1cblxuICBmdW5jdGlvbiBDb250ZXh0KHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gVGhlIHJvb3QgZW50cnkgb2JqZWN0IChlZmZlY3RpdmVseSBhIHRyeSBzdGF0ZW1lbnQgd2l0aG91dCBhIGNhdGNoXG4gICAgLy8gb3IgYSBmaW5hbGx5IGJsb2NrKSBnaXZlcyB1cyBhIHBsYWNlIHRvIHN0b3JlIHZhbHVlcyB0aHJvd24gZnJvbVxuICAgIC8vIGxvY2F0aW9ucyB3aGVyZSB0aGVyZSBpcyBubyBlbmNsb3NpbmcgdHJ5IHN0YXRlbWVudC5cbiAgICB0aGlzLnRyeUVudHJpZXMgPSBbeyB0cnlMb2M6IFwicm9vdFwiIH1dO1xuICAgIHRyeUxvY3NMaXN0LmZvckVhY2gocHVzaFRyeUVudHJ5LCB0aGlzKTtcbiAgICB0aGlzLnJlc2V0KHRydWUpO1xuICB9XG5cbiAgZXhwb3J0cy5rZXlzID0gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICB9XG4gICAga2V5cy5yZXZlcnNlKCk7XG5cbiAgICAvLyBSYXRoZXIgdGhhbiByZXR1cm5pbmcgYW4gb2JqZWN0IHdpdGggYSBuZXh0IG1ldGhvZCwgd2Uga2VlcFxuICAgIC8vIHRoaW5ncyBzaW1wbGUgYW5kIHJldHVybiB0aGUgbmV4dCBmdW5jdGlvbiBpdHNlbGYuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICB3aGlsZSAoa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGtleSA9IGtleXMucG9wKCk7XG4gICAgICAgIGlmIChrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgbmV4dC52YWx1ZSA9IGtleTtcbiAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUbyBhdm9pZCBjcmVhdGluZyBhbiBhZGRpdGlvbmFsIG9iamVjdCwgd2UganVzdCBoYW5nIHRoZSAudmFsdWVcbiAgICAgIC8vIGFuZCAuZG9uZSBwcm9wZXJ0aWVzIG9mZiB0aGUgbmV4dCBmdW5jdGlvbiBvYmplY3QgaXRzZWxmLiBUaGlzXG4gICAgICAvLyBhbHNvIGVuc3VyZXMgdGhhdCB0aGUgbWluaWZpZXIgd2lsbCBub3QgYW5vbnltaXplIHRoZSBmdW5jdGlvbi5cbiAgICAgIG5leHQuZG9uZSA9IHRydWU7XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIHZhbHVlcyhpdGVyYWJsZSkge1xuICAgIGlmIChpdGVyYWJsZSkge1xuICAgICAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gaXRlcmFibGVbaXRlcmF0b3JTeW1ib2xdO1xuICAgICAgaWYgKGl0ZXJhdG9yTWV0aG9kKSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRvck1ldGhvZC5jYWxsKGl0ZXJhYmxlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBpdGVyYWJsZS5uZXh0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhYmxlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzTmFOKGl0ZXJhYmxlLmxlbmd0aCkpIHtcbiAgICAgICAgdmFyIGkgPSAtMSwgbmV4dCA9IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICAgICAgd2hpbGUgKCsraSA8IGl0ZXJhYmxlLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKGhhc093bi5jYWxsKGl0ZXJhYmxlLCBpKSkge1xuICAgICAgICAgICAgICBuZXh0LnZhbHVlID0gaXRlcmFibGVbaV07XG4gICAgICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBuZXh0LnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgIG5leHQuZG9uZSA9IHRydWU7XG5cbiAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gbmV4dC5uZXh0ID0gbmV4dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gYW4gaXRlcmF0b3Igd2l0aCBubyB2YWx1ZXMuXG4gICAgcmV0dXJuIHsgbmV4dDogZG9uZVJlc3VsdCB9O1xuICB9XG4gIGV4cG9ydHMudmFsdWVzID0gdmFsdWVzO1xuXG4gIGZ1bmN0aW9uIGRvbmVSZXN1bHQoKSB7XG4gICAgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICB9XG5cbiAgQ29udGV4dC5wcm90b3R5cGUgPSB7XG4gICAgY29uc3RydWN0b3I6IENvbnRleHQsXG5cbiAgICByZXNldDogZnVuY3Rpb24oc2tpcFRlbXBSZXNldCkge1xuICAgICAgdGhpcy5wcmV2ID0gMDtcbiAgICAgIHRoaXMubmV4dCA9IDA7XG4gICAgICAvLyBSZXNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgIHRoaXMuc2VudCA9IHRoaXMuX3NlbnQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICB0aGlzLm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKHJlc2V0VHJ5RW50cnkpO1xuXG4gICAgICBpZiAoIXNraXBUZW1wUmVzZXQpIHtcbiAgICAgICAgZm9yICh2YXIgbmFtZSBpbiB0aGlzKSB7XG4gICAgICAgICAgLy8gTm90IHN1cmUgYWJvdXQgdGhlIG9wdGltYWwgb3JkZXIgb2YgdGhlc2UgY29uZGl0aW9uczpcbiAgICAgICAgICBpZiAobmFtZS5jaGFyQXQoMCkgPT09IFwidFwiICYmXG4gICAgICAgICAgICAgIGhhc093bi5jYWxsKHRoaXMsIG5hbWUpICYmXG4gICAgICAgICAgICAgICFpc05hTigrbmFtZS5zbGljZSgxKSkpIHtcbiAgICAgICAgICAgIHRoaXNbbmFtZV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIHN0b3A6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcblxuICAgICAgdmFyIHJvb3RFbnRyeSA9IHRoaXMudHJ5RW50cmllc1swXTtcbiAgICAgIHZhciByb290UmVjb3JkID0gcm9vdEVudHJ5LmNvbXBsZXRpb247XG4gICAgICBpZiAocm9vdFJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcm9vdFJlY29yZC5hcmc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnJ2YWw7XG4gICAgfSxcblxuICAgIGRpc3BhdGNoRXhjZXB0aW9uOiBmdW5jdGlvbihleGNlcHRpb24pIHtcbiAgICAgIGlmICh0aGlzLmRvbmUpIHtcbiAgICAgICAgdGhyb3cgZXhjZXB0aW9uO1xuICAgICAgfVxuXG4gICAgICB2YXIgY29udGV4dCA9IHRoaXM7XG4gICAgICBmdW5jdGlvbiBoYW5kbGUobG9jLCBjYXVnaHQpIHtcbiAgICAgICAgcmVjb3JkLnR5cGUgPSBcInRocm93XCI7XG4gICAgICAgIHJlY29yZC5hcmcgPSBleGNlcHRpb247XG4gICAgICAgIGNvbnRleHQubmV4dCA9IGxvYztcblxuICAgICAgICBpZiAoY2F1Z2h0KSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGRpc3BhdGNoZWQgZXhjZXB0aW9uIHdhcyBjYXVnaHQgYnkgYSBjYXRjaCBibG9jayxcbiAgICAgICAgICAvLyB0aGVuIGxldCB0aGF0IGNhdGNoIGJsb2NrIGhhbmRsZSB0aGUgZXhjZXB0aW9uIG5vcm1hbGx5LlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gISEgY2F1Z2h0O1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gXCJyb290XCIpIHtcbiAgICAgICAgICAvLyBFeGNlcHRpb24gdGhyb3duIG91dHNpZGUgb2YgYW55IHRyeSBibG9jayB0aGF0IGNvdWxkIGhhbmRsZVxuICAgICAgICAgIC8vIGl0LCBzbyBzZXQgdGhlIGNvbXBsZXRpb24gdmFsdWUgb2YgdGhlIGVudGlyZSBmdW5jdGlvbiB0b1xuICAgICAgICAgIC8vIHRocm93IHRoZSBleGNlcHRpb24uXG4gICAgICAgICAgcmV0dXJuIGhhbmRsZShcImVuZFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2KSB7XG4gICAgICAgICAgdmFyIGhhc0NhdGNoID0gaGFzT3duLmNhbGwoZW50cnksIFwiY2F0Y2hMb2NcIik7XG4gICAgICAgICAgdmFyIGhhc0ZpbmFsbHkgPSBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpO1xuXG4gICAgICAgICAgaWYgKGhhc0NhdGNoICYmIGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNDYXRjaCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNGaW5hbGx5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBhYnJ1cHQ6IGZ1bmN0aW9uKHR5cGUsIGFyZykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2ICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpICYmXG4gICAgICAgICAgICB0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgdmFyIGZpbmFsbHlFbnRyeSA9IGVudHJ5O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkgJiZcbiAgICAgICAgICAodHlwZSA9PT0gXCJicmVha1wiIHx8XG4gICAgICAgICAgIHR5cGUgPT09IFwiY29udGludWVcIikgJiZcbiAgICAgICAgICBmaW5hbGx5RW50cnkudHJ5TG9jIDw9IGFyZyAmJlxuICAgICAgICAgIGFyZyA8PSBmaW5hbGx5RW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAvLyBJZ25vcmUgdGhlIGZpbmFsbHkgZW50cnkgaWYgY29udHJvbCBpcyBub3QganVtcGluZyB0byBhXG4gICAgICAgIC8vIGxvY2F0aW9uIG91dHNpZGUgdGhlIHRyeS9jYXRjaCBibG9jay5cbiAgICAgICAgZmluYWxseUVudHJ5ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlY29yZCA9IGZpbmFsbHlFbnRyeSA/IGZpbmFsbHlFbnRyeS5jb21wbGV0aW9uIDoge307XG4gICAgICByZWNvcmQudHlwZSA9IHR5cGU7XG4gICAgICByZWNvcmQuYXJnID0gYXJnO1xuXG4gICAgICBpZiAoZmluYWxseUVudHJ5KSB7XG4gICAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIHRoaXMubmV4dCA9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jO1xuICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuY29tcGxldGUocmVjb3JkKTtcbiAgICB9LFxuXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uKHJlY29yZCwgYWZ0ZXJMb2MpIHtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHRocm93IHJlY29yZC5hcmc7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJicmVha1wiIHx8XG4gICAgICAgICAgcmVjb3JkLnR5cGUgPT09IFwiY29udGludWVcIikge1xuICAgICAgICB0aGlzLm5leHQgPSByZWNvcmQuYXJnO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJyZXR1cm5cIikge1xuICAgICAgICB0aGlzLnJ2YWwgPSB0aGlzLmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgIHRoaXMubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gXCJlbmRcIjtcbiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIgJiYgYWZ0ZXJMb2MpIHtcbiAgICAgICAgdGhpcy5uZXh0ID0gYWZ0ZXJMb2M7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH0sXG5cbiAgICBmaW5pc2g6IGZ1bmN0aW9uKGZpbmFsbHlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkuZmluYWxseUxvYyA9PT0gZmluYWxseUxvYykge1xuICAgICAgICAgIHRoaXMuY29tcGxldGUoZW50cnkuY29tcGxldGlvbiwgZW50cnkuYWZ0ZXJMb2MpO1xuICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIFwiY2F0Y2hcIjogZnVuY3Rpb24odHJ5TG9jKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gdHJ5TG9jKSB7XG4gICAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG4gICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgIHZhciB0aHJvd24gPSByZWNvcmQuYXJnO1xuICAgICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aHJvd247XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVGhlIGNvbnRleHQuY2F0Y2ggbWV0aG9kIG11c3Qgb25seSBiZSBjYWxsZWQgd2l0aCBhIGxvY2F0aW9uXG4gICAgICAvLyBhcmd1bWVudCB0aGF0IGNvcnJlc3BvbmRzIHRvIGEga25vd24gY2F0Y2ggYmxvY2suXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHRcIik7XG4gICAgfSxcblxuICAgIGRlbGVnYXRlWWllbGQ6IGZ1bmN0aW9uKGl0ZXJhYmxlLCByZXN1bHROYW1lLCBuZXh0TG9jKSB7XG4gICAgICB0aGlzLmRlbGVnYXRlID0ge1xuICAgICAgICBpdGVyYXRvcjogdmFsdWVzKGl0ZXJhYmxlKSxcbiAgICAgICAgcmVzdWx0TmFtZTogcmVzdWx0TmFtZSxcbiAgICAgICAgbmV4dExvYzogbmV4dExvY1xuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAvLyBEZWxpYmVyYXRlbHkgZm9yZ2V0IHRoZSBsYXN0IHNlbnQgdmFsdWUgc28gdGhhdCB3ZSBkb24ndFxuICAgICAgICAvLyBhY2NpZGVudGFsbHkgcGFzcyBpdCBvbiB0byB0aGUgZGVsZWdhdGUuXG4gICAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG4gIH07XG5cbiAgLy8gUmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyBhcyBhIENvbW1vbkpTIG1vZHVsZVxuICAvLyBvciBub3QsIHJldHVybiB0aGUgcnVudGltZSBvYmplY3Qgc28gdGhhdCB3ZSBjYW4gZGVjbGFyZSB0aGUgdmFyaWFibGVcbiAgLy8gcmVnZW5lcmF0b3JSdW50aW1lIGluIHRoZSBvdXRlciBzY29wZSwgd2hpY2ggYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlXG4gIC8vIGluamVjdGVkIGVhc2lseSBieSBgYmluL3JlZ2VuZXJhdG9yIC0taW5jbHVkZS1ydW50aW1lIHNjcmlwdC5qc2AuXG4gIHJldHVybiBleHBvcnRzO1xuXG59KFxuICAvLyBJZiB0aGlzIHNjcmlwdCBpcyBleGVjdXRpbmcgYXMgYSBDb21tb25KUyBtb2R1bGUsIHVzZSBtb2R1bGUuZXhwb3J0c1xuICAvLyBhcyB0aGUgcmVnZW5lcmF0b3JSdW50aW1lIG5hbWVzcGFjZS4gT3RoZXJ3aXNlIGNyZWF0ZSBhIG5ldyBlbXB0eVxuICAvLyBvYmplY3QuIEVpdGhlciB3YXksIHRoZSByZXN1bHRpbmcgb2JqZWN0IHdpbGwgYmUgdXNlZCB0byBpbml0aWFsaXplXG4gIC8vIHRoZSByZWdlbmVyYXRvclJ1bnRpbWUgdmFyaWFibGUgYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuXG4gIHR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCIgPyBtb2R1bGUuZXhwb3J0cyA6IHt9XG4pKTtcblxudHJ5IHtcbiAgcmVnZW5lcmF0b3JSdW50aW1lID0gcnVudGltZTtcbn0gY2F0Y2ggKGFjY2lkZW50YWxTdHJpY3RNb2RlKSB7XG4gIC8vIFRoaXMgbW9kdWxlIHNob3VsZCBub3QgYmUgcnVubmluZyBpbiBzdHJpY3QgbW9kZSwgc28gdGhlIGFib3ZlXG4gIC8vIGFzc2lnbm1lbnQgc2hvdWxkIGFsd2F5cyB3b3JrIHVubGVzcyBzb21ldGhpbmcgaXMgbWlzY29uZmlndXJlZC4gSnVzdFxuICAvLyBpbiBjYXNlIHJ1bnRpbWUuanMgYWNjaWRlbnRhbGx5IHJ1bnMgaW4gc3RyaWN0IG1vZGUsIHdlIGNhbiBlc2NhcGVcbiAgLy8gc3RyaWN0IG1vZGUgdXNpbmcgYSBnbG9iYWwgRnVuY3Rpb24gY2FsbC4gVGhpcyBjb3VsZCBjb25jZWl2YWJseSBmYWlsXG4gIC8vIGlmIGEgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZm9yYmlkcyB1c2luZyBGdW5jdGlvbiwgYnV0IGluIHRoYXQgY2FzZVxuICAvLyB0aGUgcHJvcGVyIHNvbHV0aW9uIGlzIHRvIGZpeCB0aGUgYWNjaWRlbnRhbCBzdHJpY3QgbW9kZSBwcm9ibGVtLiBJZlxuICAvLyB5b3UndmUgbWlzY29uZmlndXJlZCB5b3VyIGJ1bmRsZXIgdG8gZm9yY2Ugc3RyaWN0IG1vZGUgYW5kIGFwcGxpZWQgYVxuICAvLyBDU1AgdG8gZm9yYmlkIEZ1bmN0aW9uLCBhbmQgeW91J3JlIG5vdCB3aWxsaW5nIHRvIGZpeCBlaXRoZXIgb2YgdGhvc2VcbiAgLy8gcHJvYmxlbXMsIHBsZWFzZSBkZXRhaWwgeW91ciB1bmlxdWUgcHJlZGljYW1lbnQgaW4gYSBHaXRIdWIgaXNzdWUuXG4gIEZ1bmN0aW9uKFwiclwiLCBcInJlZ2VuZXJhdG9yUnVudGltZSA9IHJcIikocnVudGltZSk7XG59XG4iLCJcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Vc2VyUHJvZmlsZU1vYmlsZU1lbnUudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NDRjNmZjMDUmc2NvcGVkPXRydWUmbGFuZz1zY3NzJlwiKTtcblxuaWYodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG5cbnZhciB0cmFuc2Zvcm07XG52YXIgaW5zZXJ0SW50bztcblxuXG5cbnZhciBvcHRpb25zID0ge1wiaG1yXCI6dHJ1ZX1cblxub3B0aW9ucy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm1cbm9wdGlvbnMuaW5zZXJ0SW50byA9IHVuZGVmaW5lZDtcblxudmFyIHVwZGF0ZSA9IHJlcXVpcmUoXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzLmpzXCIpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5pZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2FscztcblxuaWYobW9kdWxlLmhvdCkge1xuXHRtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Vc2VyUHJvZmlsZU1vYmlsZU1lbnUudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NDRjNmZjMDUmc2NvcGVkPXRydWUmbGFuZz1zY3NzJlwiLCBmdW5jdGlvbigpIHtcblx0XHR2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVXNlclByb2ZpbGVNb2JpbGVNZW51LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTQ0YzZmYzA1JnNjb3BlZD10cnVlJmxhbmc9c2NzcyZcIik7XG5cblx0XHRpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcblxuXHRcdHZhciBsb2NhbHMgPSAoZnVuY3Rpb24oYSwgYikge1xuXHRcdFx0dmFyIGtleSwgaWR4ID0gMDtcblxuXHRcdFx0Zm9yKGtleSBpbiBhKSB7XG5cdFx0XHRcdGlmKCFiIHx8IGFba2V5XSAhPT0gYltrZXldKSByZXR1cm4gZmFsc2U7XG5cdFx0XHRcdGlkeCsrO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3Ioa2V5IGluIGIpIGlkeC0tO1xuXG5cdFx0XHRyZXR1cm4gaWR4ID09PSAwO1xuXHRcdH0oY29udGVudC5sb2NhbHMsIG5ld0NvbnRlbnQubG9jYWxzKSk7XG5cblx0XHRpZighbG9jYWxzKSB0aHJvdyBuZXcgRXJyb3IoJ0Fib3J0aW5nIENTUyBITVIgZHVlIHRvIGNoYW5nZWQgY3NzLW1vZHVsZXMgbG9jYWxzLicpO1xuXG5cdFx0dXBkYXRlKG5ld0NvbnRlbnQpO1xuXHR9KTtcblxuXHRtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcbn0iLCJleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzXCIpKGZhbHNlKTtcbi8vIGltcG9ydHNcblxuXG4vLyBtb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5wb3B1cFtkYXRhLXYtZjBhYThlYjBdIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG4gIGJvdHRvbTogMDtcXG4gIHotaW5kZXg6IDIwO1xcbiAgb3ZlcmZsb3c6IGF1dG87XFxuICBoZWlnaHQ6IDEwMCU7XFxufVxcbi5wb3B1cC13cmFwcGVyW2RhdGEtdi1mMGFhOGViMF0ge1xcbiAgei1pbmRleDogMTI7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICBtYXgtd2lkdGg6IDQ4MHB4O1xcbiAgdG9wOiA1MCU7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgc2NhbGUoMSk7XFxuICBtYXJnaW46IDAgYXV0bztcXG4gIHBhZGRpbmc6IDIwcHg7XFxuICBib3gtc2hhZG93OiAwIDJweCA0MHB4IHJnYmEoMjYsIDM4LCA3NCwgMC4xMik7XFxuICBib3JkZXItcmFkaXVzOiA4cHg7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG59XFxuLnBvcHVwLWltYWdlW2RhdGEtdi1mMGFhOGViMF0ge1xcbiAgbWFyZ2luLWJvdHRvbTogMzBweDtcXG59XFxuLnBvcHVwLWltYWdlIC5lbW9qaVtkYXRhLXYtZjBhYThlYjBdIHtcXG4gIGZvbnQtc2l6ZTogMy41ZW07XFxuICBsaW5lLWhlaWdodDogMTtcXG59XFxuLnBvcHVwLWNvbnRlbnQgLnRpdGxlW2RhdGEtdi1mMGFhOGViMF0ge1xcbiAgZm9udC1zaXplOiAxLjM3NWVtO1xcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcXG4gIGZvbnQtd2VpZ2h0OiA4MDA7XFxuICBjb2xvcjogIzFCMjUzOTtcXG59XFxuLnBvcHVwLWNvbnRlbnQgLm1lc3NhZ2VbZGF0YS12LWYwYWE4ZWIwXSB7XFxuICBmb250LXNpemU6IDFlbTtcXG4gIGNvbG9yOiAjMzMzO1xcbiAgbWFyZ2luLXRvcDogNXB4O1xcbn1cXG4ucG9wdXAtYWN0aW9uc1tkYXRhLXYtZjBhYThlYjBdIHtcXG4gIG1hcmdpbi10b3A6IDMwcHg7XFxufVxcbi5wb3B1cC1hY3Rpb25zIC5hY3Rpb24tY29uZmlybVtkYXRhLXYtZjBhYThlYjBdIHtcXG4gIHdpZHRoOiAxMDAlO1xcbn1cXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY5MHB4KSB7XFxuLnBvcHVwLXdyYXBwZXJbZGF0YS12LWYwYWE4ZWIwXSB7XFxuICAgIHBhZGRpbmc6IDQwcHggMjBweCAyMHB4O1xcbiAgICBsZWZ0OiAxNXB4O1xcbiAgICByaWdodDogMTVweDtcXG59XFxufVxcbkBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcXG4ucG9wdXAtd3JhcHBlcltkYXRhLXYtZjBhYThlYjBdIHtcXG4gICAgYmFja2dyb3VuZDogIzFlMjAyNDtcXG59XFxuLnBvcHVwLWNvbnRlbnQgLnRpdGxlW2RhdGEtdi1mMGFhOGViMF0ge1xcbiAgICBjb2xvcjogI2JlYzZjZjtcXG59XFxuLnBvcHVwLWNvbnRlbnQgLm1lc3NhZ2VbZGF0YS12LWYwYWE4ZWIwXSB7XFxuICAgIGNvbG9yOiAjN2Q4NThjO1xcbn1cXG59XFxuLnBvcHVwLWVudGVyLWFjdGl2ZVtkYXRhLXYtZjBhYThlYjBdIHtcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBwb3B1cC1pbi1kYXRhLXYtZjBhYThlYjAgMC4zNXMgMC4xNXMgZWFzZSBib3RoO1xcbiAgICAgICAgICBhbmltYXRpb246IHBvcHVwLWluLWRhdGEtdi1mMGFhOGViMCAwLjM1cyAwLjE1cyBlYXNlIGJvdGg7XFxufVxcbi5wb3B1cC1sZWF2ZS1hY3RpdmVbZGF0YS12LWYwYWE4ZWIwXSB7XFxuICBhbmltYXRpb246IHBvcHVwLWluLWRhdGEtdi1mMGFhOGViMCAwLjE1cyBlYXNlIHJldmVyc2U7XFxufVxcbkAtd2Via2l0LWtleWZyYW1lcyBwb3B1cC1pbi1kYXRhLXYtZjBhYThlYjAge1xcbjAlIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjcpO1xcbn1cXG4xMDAlIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcXG59XFxufVxcbkBrZXlmcmFtZXMgcG9wdXAtaW4tZGF0YS12LWYwYWE4ZWIwIHtcXG4wJSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICAgIHRyYW5zZm9ybTogc2NhbGUoMC43KTtcXG59XFxuMTAwJSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XFxufVxcbn1cXG5cIiwgXCJcIl0pO1xuXG4vLyBleHBvcnRzXG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWdlbmVyYXRvci1ydW50aW1lXCIpO1xuIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTWVudUl0ZW1MaXN0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVjYTk3ZmZlJnNjb3BlZD10cnVlJmxhbmc9c2NzcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTWVudUl0ZW1MaXN0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTVjYTk3ZmZlJnNjb3BlZD10cnVlJmxhbmc9c2NzcyZcIiIsImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikoZmFsc2UpO1xuLy8gaW1wb3J0c1xuXG5cbi8vIG1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLnZpZ25ldHRlW2RhdGEtdi02MDJlNTVhNF0ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgcmlnaHQ6IDA7XFxuICBsZWZ0OiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgei1pbmRleDogMTg7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDksIDgsIDEyLCAwLjM1KTtcXG59XFxuQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xcbi52aWduZXR0ZVtkYXRhLXYtNjAyZTU1YTRdIHtcXG4gICAgYmFja2dyb3VuZDogcmdiYSgyMiwgMjMsIDI3LCAwLjcpO1xcbn1cXG59XFxuLnZpZ25ldHRlLWVudGVyLWFjdGl2ZVtkYXRhLXYtNjAyZTU1YTRdIHtcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiB2aWduZXR0ZS1pbi1kYXRhLXYtNjAyZTU1YTQgMC4zNXMgZWFzZTtcXG4gICAgICAgICAgYW5pbWF0aW9uOiB2aWduZXR0ZS1pbi1kYXRhLXYtNjAyZTU1YTQgMC4zNXMgZWFzZTtcXG59XFxuLnZpZ25ldHRlLWxlYXZlLWFjdGl2ZVtkYXRhLXYtNjAyZTU1YTRdIHtcXG4gIGFuaW1hdGlvbjogdmlnbmV0dGUtaW4tZGF0YS12LTYwMmU1NWE0IDAuMTVzIGVhc2UgcmV2ZXJzZTtcXG59XFxuQC13ZWJraXQta2V5ZnJhbWVzIHZpZ25ldHRlLWluLWRhdGEtdi02MDJlNTVhNCB7XFxuMCUge1xcbiAgICBvcGFjaXR5OiAwO1xcbn1cXG4xMDAlIHtcXG4gICAgb3BhY2l0eTogMTtcXG59XFxufVxcbkBrZXlmcmFtZXMgdmlnbmV0dGUtaW4tZGF0YS12LTYwMmU1NWE0IHtcXG4wJSB7XFxuICAgIG9wYWNpdHk6IDA7XFxufVxcbjEwMCUge1xcbiAgICBvcGFjaXR5OiAxO1xcbn1cXG59XFxuXCIsIFwiXCJdKTtcblxuLy8gZXhwb3J0c1xuIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTW9iaWxlSGVhZGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTQzY2UxY2QwJnNjb3BlZD10cnVlJmxhbmc9c2NzcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTW9iaWxlSGVhZGVyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTQzY2UxY2QwJnNjb3BlZD10cnVlJmxhbmc9c2NzcyZcIiIsImltcG9ydCB7IHBhcnNlLCBpY29uLCBjb25maWcsIHRleHQgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZm9udGF3ZXNvbWUtc3ZnLWNvcmUnO1xuXG52YXIgY29tbW9uanNHbG9iYWwgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHt9O1xuXG5mdW5jdGlvbiBjcmVhdGVDb21tb25qc01vZHVsZShmbiwgbW9kdWxlKSB7XG5cdHJldHVybiBtb2R1bGUgPSB7IGV4cG9ydHM6IHt9IH0sIGZuKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMpLCBtb2R1bGUuZXhwb3J0cztcbn1cblxudmFyIGh1bXBzID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSkge1xuKGZ1bmN0aW9uKGdsb2JhbCkge1xuXG4gIHZhciBfcHJvY2Vzc0tleXMgPSBmdW5jdGlvbihjb252ZXJ0LCBvYmosIG9wdGlvbnMpIHtcbiAgICBpZighX2lzT2JqZWN0KG9iaikgfHwgX2lzRGF0ZShvYmopIHx8IF9pc1JlZ0V4cChvYmopIHx8IF9pc0Jvb2xlYW4ob2JqKSB8fCBfaXNGdW5jdGlvbihvYmopKSB7XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH1cblxuICAgIHZhciBvdXRwdXQsXG4gICAgICAgIGkgPSAwLFxuICAgICAgICBsID0gMDtcblxuICAgIGlmKF9pc0FycmF5KG9iaikpIHtcbiAgICAgIG91dHB1dCA9IFtdO1xuICAgICAgZm9yKGw9b2JqLmxlbmd0aDsgaTxsOyBpKyspIHtcbiAgICAgICAgb3V0cHV0LnB1c2goX3Byb2Nlc3NLZXlzKGNvbnZlcnQsIG9ialtpXSwgb3B0aW9ucykpO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIG91dHB1dCA9IHt9O1xuICAgICAgZm9yKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICAgIGlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICBvdXRwdXRbY29udmVydChrZXksIG9wdGlvbnMpXSA9IF9wcm9jZXNzS2V5cyhjb252ZXJ0LCBvYmpba2V5XSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfTtcblxuICAvLyBTdHJpbmcgY29udmVyc2lvbiBtZXRob2RzXG5cbiAgdmFyIHNlcGFyYXRlV29yZHMgPSBmdW5jdGlvbihzdHJpbmcsIG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICB2YXIgc2VwYXJhdG9yID0gb3B0aW9ucy5zZXBhcmF0b3IgfHwgJ18nO1xuICAgIHZhciBzcGxpdCA9IG9wdGlvbnMuc3BsaXQgfHwgLyg/PVtBLVpdKS87XG5cbiAgICByZXR1cm4gc3RyaW5nLnNwbGl0KHNwbGl0KS5qb2luKHNlcGFyYXRvcik7XG4gIH07XG5cbiAgdmFyIGNhbWVsaXplID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgaWYgKF9pc051bWVyaWNhbChzdHJpbmcpKSB7XG4gICAgICByZXR1cm4gc3RyaW5nO1xuICAgIH1cbiAgICBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZSgvW1xcLV9cXHNdKyguKT8vZywgZnVuY3Rpb24obWF0Y2gsIGNocikge1xuICAgICAgcmV0dXJuIGNociA/IGNoci50b1VwcGVyQ2FzZSgpIDogJyc7XG4gICAgfSk7XG4gICAgLy8gRW5zdXJlIDFzdCBjaGFyIGlzIGFsd2F5cyBsb3dlcmNhc2VcbiAgICByZXR1cm4gc3RyaW5nLnN1YnN0cigwLCAxKS50b0xvd2VyQ2FzZSgpICsgc3RyaW5nLnN1YnN0cigxKTtcbiAgfTtcblxuICB2YXIgcGFzY2FsaXplID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgdmFyIGNhbWVsaXplZCA9IGNhbWVsaXplKHN0cmluZyk7XG4gICAgLy8gRW5zdXJlIDFzdCBjaGFyIGlzIGFsd2F5cyB1cHBlcmNhc2VcbiAgICByZXR1cm4gY2FtZWxpemVkLnN1YnN0cigwLCAxKS50b1VwcGVyQ2FzZSgpICsgY2FtZWxpemVkLnN1YnN0cigxKTtcbiAgfTtcblxuICB2YXIgZGVjYW1lbGl6ZSA9IGZ1bmN0aW9uKHN0cmluZywgb3B0aW9ucykge1xuICAgIHJldHVybiBzZXBhcmF0ZVdvcmRzKHN0cmluZywgb3B0aW9ucykudG9Mb3dlckNhc2UoKTtcbiAgfTtcblxuICAvLyBVdGlsaXRpZXNcbiAgLy8gVGFrZW4gZnJvbSBVbmRlcnNjb3JlLmpzXG5cbiAgdmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuICB2YXIgX2lzRnVuY3Rpb24gPSBmdW5jdGlvbihvYmopIHtcbiAgICByZXR1cm4gdHlwZW9mKG9iaikgPT09ICdmdW5jdGlvbic7XG4gIH07XG4gIHZhciBfaXNPYmplY3QgPSBmdW5jdGlvbihvYmopIHtcbiAgICByZXR1cm4gb2JqID09PSBPYmplY3Qob2JqKTtcbiAgfTtcbiAgdmFyIF9pc0FycmF5ID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgcmV0dXJuIHRvU3RyaW5nLmNhbGwob2JqKSA9PSAnW29iamVjdCBBcnJheV0nO1xuICB9O1xuICB2YXIgX2lzRGF0ZSA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHJldHVybiB0b1N0cmluZy5jYWxsKG9iaikgPT0gJ1tvYmplY3QgRGF0ZV0nO1xuICB9O1xuICB2YXIgX2lzUmVnRXhwID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgcmV0dXJuIHRvU3RyaW5nLmNhbGwob2JqKSA9PSAnW29iamVjdCBSZWdFeHBdJztcbiAgfTtcbiAgdmFyIF9pc0Jvb2xlYW4gPSBmdW5jdGlvbihvYmopIHtcbiAgICByZXR1cm4gdG9TdHJpbmcuY2FsbChvYmopID09ICdbb2JqZWN0IEJvb2xlYW5dJztcbiAgfTtcblxuICAvLyBQZXJmb3JtYW50IHdheSB0byBkZXRlcm1pbmUgaWYgb2JqIGNvZXJjZXMgdG8gYSBudW1iZXJcbiAgdmFyIF9pc051bWVyaWNhbCA9IGZ1bmN0aW9uKG9iaikge1xuICAgIG9iaiA9IG9iaiAtIDA7XG4gICAgcmV0dXJuIG9iaiA9PT0gb2JqO1xuICB9O1xuXG4gIC8vIFNldHMgdXAgZnVuY3Rpb24gd2hpY2ggaGFuZGxlcyBwcm9jZXNzaW5nIGtleXNcbiAgLy8gYWxsb3dpbmcgdGhlIGNvbnZlcnQgZnVuY3Rpb24gdG8gYmUgbW9kaWZpZWQgYnkgYSBjYWxsYmFja1xuICB2YXIgX3Byb2Nlc3NvciA9IGZ1bmN0aW9uKGNvbnZlcnQsIG9wdGlvbnMpIHtcbiAgICB2YXIgY2FsbGJhY2sgPSBvcHRpb25zICYmICdwcm9jZXNzJyBpbiBvcHRpb25zID8gb3B0aW9ucy5wcm9jZXNzIDogb3B0aW9ucztcblxuICAgIGlmKHR5cGVvZihjYWxsYmFjaykgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBjb252ZXJ0O1xuICAgIH1cblxuICAgIHJldHVybiBmdW5jdGlvbihzdHJpbmcsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhzdHJpbmcsIGNvbnZlcnQsIG9wdGlvbnMpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgaHVtcHMgPSB7XG4gICAgY2FtZWxpemU6IGNhbWVsaXplLFxuICAgIGRlY2FtZWxpemU6IGRlY2FtZWxpemUsXG4gICAgcGFzY2FsaXplOiBwYXNjYWxpemUsXG4gICAgZGVwYXNjYWxpemU6IGRlY2FtZWxpemUsXG4gICAgY2FtZWxpemVLZXlzOiBmdW5jdGlvbihvYmplY3QsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBfcHJvY2Vzc0tleXMoX3Byb2Nlc3NvcihjYW1lbGl6ZSwgb3B0aW9ucyksIG9iamVjdCk7XG4gICAgfSxcbiAgICBkZWNhbWVsaXplS2V5czogZnVuY3Rpb24ob2JqZWN0LCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gX3Byb2Nlc3NLZXlzKF9wcm9jZXNzb3IoZGVjYW1lbGl6ZSwgb3B0aW9ucyksIG9iamVjdCwgb3B0aW9ucyk7XG4gICAgfSxcbiAgICBwYXNjYWxpemVLZXlzOiBmdW5jdGlvbihvYmplY3QsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBfcHJvY2Vzc0tleXMoX3Byb2Nlc3NvcihwYXNjYWxpemUsIG9wdGlvbnMpLCBvYmplY3QpO1xuICAgIH0sXG4gICAgZGVwYXNjYWxpemVLZXlzOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZWNhbWVsaXplS2V5cy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH1cbiAgfTtcblxuICBpZiAodHlwZW9mIHVuZGVmaW5lZCA9PT0gJ2Z1bmN0aW9uJyAmJiB1bmRlZmluZWQuYW1kKSB7XG4gICAgdW5kZWZpbmVkKGh1bXBzKTtcbiAgfSBlbHNlIGlmICgnb2JqZWN0JyAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IGh1bXBzO1xuICB9IGVsc2Uge1xuICAgIGdsb2JhbC5odW1wcyA9IGh1bXBzO1xuICB9XG5cbn0pKGNvbW1vbmpzR2xvYmFsKTtcbn0pO1xuXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gdHlwZW9mIG9iajtcbn0gOiBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqO1xufTtcblxudmFyIGRlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24gKG9iaiwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5IGluIG9iaikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59O1xuXG52YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufTtcblxudmFyIG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKG9iaiwga2V5cykge1xuICB2YXIgdGFyZ2V0ID0ge307XG5cbiAgZm9yICh2YXIgaSBpbiBvYmopIHtcbiAgICBpZiAoa2V5cy5pbmRleE9mKGkpID49IDApIGNvbnRpbnVlO1xuICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgaSkpIGNvbnRpbnVlO1xuICAgIHRhcmdldFtpXSA9IG9ialtpXTtcbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59O1xuXG52YXIgdG9Db25zdW1hYmxlQXJyYXkgPSBmdW5jdGlvbiAoYXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgYXJyMiA9IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSBhcnIyW2ldID0gYXJyW2ldO1xuXG4gICAgcmV0dXJuIGFycjI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oYXJyKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gc3R5bGVUb09iamVjdChzdHlsZSkge1xuICByZXR1cm4gc3R5bGUuc3BsaXQoJzsnKS5tYXAoZnVuY3Rpb24gKHMpIHtcbiAgICByZXR1cm4gcy50cmltKCk7XG4gIH0pLmZpbHRlcihmdW5jdGlvbiAocykge1xuICAgIHJldHVybiBzO1xuICB9KS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGFpcikge1xuICAgIHZhciBpID0gcGFpci5pbmRleE9mKCc6Jyk7XG4gICAgdmFyIHByb3AgPSBodW1wcy5jYW1lbGl6ZShwYWlyLnNsaWNlKDAsIGkpKTtcbiAgICB2YXIgdmFsdWUgPSBwYWlyLnNsaWNlKGkgKyAxKS50cmltKCk7XG5cbiAgICBhY2NbcHJvcF0gPSB2YWx1ZTtcblxuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbn1cblxuZnVuY3Rpb24gY2xhc3NUb09iamVjdChjbHMpIHtcbiAgcmV0dXJuIGNscy5zcGxpdCgvXFxzKy8pLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBjKSB7XG4gICAgYWNjW2NdID0gdHJ1ZTtcblxuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbn1cblxuZnVuY3Rpb24gY29tYmluZUNsYXNzT2JqZWN0cygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIG9ianMgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBvYmpzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuIG9ianMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIG9iaikge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgIGFjYyA9IGFjYy5jb25jYXQob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWNjLnB1c2gob2JqKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXSk7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnQoaCwgZWxlbWVudCkge1xuICB2YXIgcHJvcHMgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHt9O1xuICB2YXIgZGF0YSA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDoge307XG5cbiAgdmFyIGNoaWxkcmVuID0gKGVsZW1lbnQuY2hpbGRyZW4gfHwgW10pLm1hcChjb252ZXJ0LmJpbmQobnVsbCwgaCkpO1xuXG4gIHZhciBtaXhpbnMgPSBPYmplY3Qua2V5cyhlbGVtZW50LmF0dHJpYnV0ZXMgfHwge30pLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBrZXkpIHtcbiAgICB2YXIgdmFsID0gZWxlbWVudC5hdHRyaWJ1dGVzW2tleV07XG5cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgY2FzZSAnY2xhc3MnOlxuICAgICAgICBhY2NbJ2NsYXNzJ10gPSBjbGFzc1RvT2JqZWN0KHZhbCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc3R5bGUnOlxuICAgICAgICBhY2NbJ3N0eWxlJ10gPSBzdHlsZVRvT2JqZWN0KHZhbCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYWNjLmF0dHJzW2tleV0gPSB2YWw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfSwgeyAnY2xhc3MnOiB7fSwgc3R5bGU6IHt9LCBhdHRyczoge30gfSk7XG5cbiAgdmFyIF9kYXRhJGNsYXNzID0gZGF0YS5jbGFzcyxcbiAgICAgIGRDbGFzcyA9IF9kYXRhJGNsYXNzID09PSB1bmRlZmluZWQgPyB7fSA6IF9kYXRhJGNsYXNzLFxuICAgICAgX2RhdGEkc3R5bGUgPSBkYXRhLnN0eWxlLFxuICAgICAgZFN0eWxlID0gX2RhdGEkc3R5bGUgPT09IHVuZGVmaW5lZCA/IHt9IDogX2RhdGEkc3R5bGUsXG4gICAgICBfZGF0YSRhdHRycyA9IGRhdGEuYXR0cnMsXG4gICAgICBkQXR0cnMgPSBfZGF0YSRhdHRycyA9PT0gdW5kZWZpbmVkID8ge30gOiBfZGF0YSRhdHRycyxcbiAgICAgIHJlbWFpbmluZ0RhdGEgPSBvYmplY3RXaXRob3V0UHJvcGVydGllcyhkYXRhLCBbJ2NsYXNzJywgJ3N0eWxlJywgJ2F0dHJzJ10pO1xuXG5cbiAgaWYgKHR5cGVvZiBlbGVtZW50ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBlbGVtZW50O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBoKGVsZW1lbnQudGFnLCBfZXh0ZW5kcyh7XG4gICAgICBjbGFzczogY29tYmluZUNsYXNzT2JqZWN0cyhtaXhpbnMuY2xhc3MsIGRDbGFzcyksXG4gICAgICBzdHlsZTogX2V4dGVuZHMoe30sIG1peGlucy5zdHlsZSwgZFN0eWxlKSxcbiAgICAgIGF0dHJzOiBfZXh0ZW5kcyh7fSwgbWl4aW5zLmF0dHJzLCBkQXR0cnMpXG4gICAgfSwgcmVtYWluaW5nRGF0YSwge1xuICAgICAgcHJvcHM6IHByb3BzXG4gICAgfSksIGNoaWxkcmVuKTtcbiAgfVxufVxuXG52YXIgUFJPRFVDVElPTiA9IGZhbHNlO1xuXG50cnkge1xuICBQUk9EVUNUSU9OID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJztcbn0gY2F0Y2ggKGUpIHt9XG5cbmZ1bmN0aW9uIGxvZyAoKSB7XG4gIGlmICghUFJPRFVDVElPTiAmJiBjb25zb2xlICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdmFyIF9jb25zb2xlO1xuXG4gICAgKF9jb25zb2xlID0gY29uc29sZSkuZXJyb3IuYXBwbHkoX2NvbnNvbGUsIGFyZ3VtZW50cyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gb2JqZWN0V2l0aEtleShrZXksIHZhbHVlKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwIHx8ICFBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZSA/IGRlZmluZVByb3BlcnR5KHt9LCBrZXksIHZhbHVlKSA6IHt9O1xufVxuXG5mdW5jdGlvbiBjbGFzc0xpc3QocHJvcHMpIHtcbiAgdmFyIF9jbGFzc2VzO1xuXG4gIHZhciBjbGFzc2VzID0gKF9jbGFzc2VzID0ge1xuICAgICdmYS1zcGluJzogcHJvcHMuc3BpbixcbiAgICAnZmEtcHVsc2UnOiBwcm9wcy5wdWxzZSxcbiAgICAnZmEtZncnOiBwcm9wcy5maXhlZFdpZHRoLFxuICAgICdmYS1ib3JkZXInOiBwcm9wcy5ib3JkZXIsXG4gICAgJ2ZhLWxpJzogcHJvcHMubGlzdEl0ZW0sXG4gICAgJ2ZhLWludmVyc2UnOiBwcm9wcy5pbnZlcnNlLFxuICAgICdmYS1mbGlwLWhvcml6b250YWwnOiBwcm9wcy5mbGlwID09PSAnaG9yaXpvbnRhbCcgfHwgcHJvcHMuZmxpcCA9PT0gJ2JvdGgnLFxuICAgICdmYS1mbGlwLXZlcnRpY2FsJzogcHJvcHMuZmxpcCA9PT0gJ3ZlcnRpY2FsJyB8fCBwcm9wcy5mbGlwID09PSAnYm90aCdcbiAgfSwgZGVmaW5lUHJvcGVydHkoX2NsYXNzZXMsICdmYS0nICsgcHJvcHMuc2l6ZSwgcHJvcHMuc2l6ZSAhPT0gbnVsbCksIGRlZmluZVByb3BlcnR5KF9jbGFzc2VzLCAnZmEtcm90YXRlLScgKyBwcm9wcy5yb3RhdGlvbiwgcHJvcHMucm90YXRpb24gIT09IG51bGwpLCBkZWZpbmVQcm9wZXJ0eShfY2xhc3NlcywgJ2ZhLXB1bGwtJyArIHByb3BzLnB1bGwsIHByb3BzLnB1bGwgIT09IG51bGwpLCBkZWZpbmVQcm9wZXJ0eShfY2xhc3NlcywgJ2ZhLXN3YXAtb3BhY2l0eScsIHByb3BzLnN3YXBPcGFjaXR5KSwgX2NsYXNzZXMpO1xuXG4gIHJldHVybiBPYmplY3Qua2V5cyhjbGFzc2VzKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBjbGFzc2VzW2tleV0gPyBrZXkgOiBudWxsO1xuICB9KS5maWx0ZXIoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBrZXk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRTdGF0aWNDbGFzcyh0bywgd2hhdCkge1xuICB2YXIgdmFsID0gKHRvIHx8ICcnKS5sZW5ndGggPT09IDAgPyBbXSA6IFt0b107XG5cbiAgcmV0dXJuIHZhbC5jb25jYXQod2hhdCkuam9pbignICcpO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVJY29uQXJncyhpY29uJCQxKSB7XG4gIGlmIChpY29uJCQxID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoKHR5cGVvZiBpY29uJCQxID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihpY29uJCQxKSkgPT09ICdvYmplY3QnICYmIGljb24kJDEucHJlZml4ICYmIGljb24kJDEuaWNvbk5hbWUpIHtcbiAgICByZXR1cm4gaWNvbiQkMTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KGljb24kJDEpICYmIGljb24kJDEubGVuZ3RoID09PSAyKSB7XG4gICAgcmV0dXJuIHsgcHJlZml4OiBpY29uJCQxWzBdLCBpY29uTmFtZTogaWNvbiQkMVsxXSB9O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBpY29uJCQxID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB7IHByZWZpeDogJ2ZhcycsIGljb25OYW1lOiBpY29uJCQxIH07XG4gIH1cbn1cblxudmFyIEZvbnRBd2Vzb21lSWNvbiA9IHtcbiAgbmFtZTogJ0ZvbnRBd2Vzb21lSWNvbicsXG5cbiAgZnVuY3Rpb25hbDogdHJ1ZSxcblxuICBwcm9wczoge1xuICAgIGJvcmRlcjoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBmaXhlZFdpZHRoOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIGZsaXA6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gWydob3Jpem9udGFsJywgJ3ZlcnRpY2FsJywgJ2JvdGgnXS5pbmRleE9mKHZhbHVlKSA+IC0xO1xuICAgICAgfVxuICAgIH0sXG4gICAgaWNvbjoge1xuICAgICAgdHlwZTogW09iamVjdCwgQXJyYXksIFN0cmluZ10sXG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH0sXG4gICAgbWFzazoge1xuICAgICAgdHlwZTogW09iamVjdCwgQXJyYXksIFN0cmluZ10sXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgICBsaXN0SXRlbToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBwdWxsOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgdmFsaWRhdG9yOiBmdW5jdGlvbiB2YWxpZGF0b3IodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIFsncmlnaHQnLCAnbGVmdCddLmluZGV4T2YodmFsdWUpID4gLTE7XG4gICAgICB9XG4gICAgfSxcbiAgICBwdWxzZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICByb3RhdGlvbjoge1xuICAgICAgdHlwZTogW1N0cmluZywgTnVtYmVyXSxcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB2YWxpZGF0b3I6IGZ1bmN0aW9uIHZhbGlkYXRvcih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gWzkwLCAxODAsIDI3MF0uaW5kZXhPZihwYXJzZUludCh2YWx1ZSwgMTApKSA+IC0xO1xuICAgICAgfVxuICAgIH0sXG4gICAgc3dhcE9wYWNpdHk6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBbJ2xnJywgJ3hzJywgJ3NtJywgJzF4JywgJzJ4JywgJzN4JywgJzR4JywgJzV4JywgJzZ4JywgJzd4JywgJzh4JywgJzl4JywgJzEweCddLmluZGV4T2YodmFsdWUpID4gLTE7XG4gICAgICB9XG4gICAgfSxcbiAgICBzcGluOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIHRyYW5zZm9ybToge1xuICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIHN5bWJvbDoge1xuICAgICAgdHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgdGl0bGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IG51bGxcbiAgICB9LFxuICAgIGludmVyc2U6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihjcmVhdGVFbGVtZW50LCBjb250ZXh0KSB7XG4gICAgdmFyIHByb3BzID0gY29udGV4dC5wcm9wcztcbiAgICB2YXIgaWNvbkFyZ3MgPSBwcm9wcy5pY29uLFxuICAgICAgICBtYXNrQXJncyA9IHByb3BzLm1hc2ssXG4gICAgICAgIHN5bWJvbCA9IHByb3BzLnN5bWJvbCxcbiAgICAgICAgdGl0bGUgPSBwcm9wcy50aXRsZTtcblxuICAgIHZhciBpY29uJCQxID0gbm9ybWFsaXplSWNvbkFyZ3MoaWNvbkFyZ3MpO1xuICAgIHZhciBjbGFzc2VzID0gb2JqZWN0V2l0aEtleSgnY2xhc3NlcycsIGNsYXNzTGlzdChwcm9wcykpO1xuICAgIHZhciB0cmFuc2Zvcm0gPSBvYmplY3RXaXRoS2V5KCd0cmFuc2Zvcm0nLCB0eXBlb2YgcHJvcHMudHJhbnNmb3JtID09PSAnc3RyaW5nJyA/IHBhcnNlLnRyYW5zZm9ybShwcm9wcy50cmFuc2Zvcm0pIDogcHJvcHMudHJhbnNmb3JtKTtcbiAgICB2YXIgbWFzayA9IG9iamVjdFdpdGhLZXkoJ21hc2snLCBub3JtYWxpemVJY29uQXJncyhtYXNrQXJncykpO1xuXG4gICAgdmFyIHJlbmRlcmVkSWNvbiA9IGljb24oaWNvbiQkMSwgX2V4dGVuZHMoe30sIGNsYXNzZXMsIHRyYW5zZm9ybSwgbWFzaywgeyBzeW1ib2w6IHN5bWJvbCwgdGl0bGU6IHRpdGxlIH0pKTtcblxuICAgIGlmICghcmVuZGVyZWRJY29uKSB7XG4gICAgICByZXR1cm4gbG9nKCdDb3VsZCBub3QgZmluZCBvbmUgb3IgbW9yZSBpY29uKHMpJywgaWNvbiQkMSwgbWFzayk7XG4gICAgfVxuXG4gICAgdmFyIGFic3RyYWN0ID0gcmVuZGVyZWRJY29uLmFic3RyYWN0O1xuXG4gICAgdmFyIGNvbnZlcnRDdXJyeSA9IGNvbnZlcnQuYmluZChudWxsLCBjcmVhdGVFbGVtZW50KTtcblxuICAgIHJldHVybiBjb252ZXJ0Q3VycnkoYWJzdHJhY3RbMF0sIHt9LCBjb250ZXh0LmRhdGEpO1xuICB9XG59O1xuXG52YXIgRm9udEF3ZXNvbWVMYXllcnMgPSB7XG4gIG5hbWU6ICdGb250QXdlc29tZUxheWVycycsXG5cbiAgZnVuY3Rpb25hbDogdHJ1ZSxcblxuICBwcm9wczoge1xuICAgIGZpeGVkV2lkdGg6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihjcmVhdGVFbGVtZW50LCBjb250ZXh0KSB7XG4gICAgdmFyIGZhbWlseVByZWZpeCA9IGNvbmZpZy5mYW1pbHlQcmVmaXg7XG4gICAgdmFyIHN0YXRpY0NsYXNzID0gY29udGV4dC5kYXRhLnN0YXRpY0NsYXNzO1xuXG5cbiAgICB2YXIgY2xhc3NlcyA9IFtmYW1pbHlQcmVmaXggKyAnLWxheWVycyddLmNvbmNhdCh0b0NvbnN1bWFibGVBcnJheShjb250ZXh0LnByb3BzLmZpeGVkV2lkdGggPyBbZmFtaWx5UHJlZml4ICsgJy1mdyddIDogW10pKTtcblxuICAgIHJldHVybiBjcmVhdGVFbGVtZW50KCdkaXYnLCBfZXh0ZW5kcyh7fSwgY29udGV4dC5kYXRhLCB7XG4gICAgICBzdGF0aWNDbGFzczogYWRkU3RhdGljQ2xhc3Moc3RhdGljQ2xhc3MsIGNsYXNzZXMpXG4gICAgfSksIGNvbnRleHQuY2hpbGRyZW4pO1xuICB9XG59O1xuXG52YXIgRm9udEF3ZXNvbWVMYXllcnNUZXh0ID0ge1xuICBuYW1lOiAnRm9udEF3ZXNvbWVMYXllcnNUZXh0JyxcblxuICBmdW5jdGlvbmFsOiB0cnVlLFxuXG4gIHByb3BzOiB7XG4gICAgdmFsdWU6IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIE51bWJlcl0sXG4gICAgICBkZWZhdWx0OiAnJ1xuICAgIH0sXG4gICAgdHJhbnNmb3JtOiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gICAgY291bnRlcjoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcbiAgICBwb3NpdGlvbjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBbJ2JvdHRvbS1sZWZ0JywgJ2JvdHRvbS1yaWdodCcsICd0b3AtbGVmdCcsICd0b3AtcmlnaHQnXS5pbmRleE9mKHZhbHVlKSA+IC0xO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihjcmVhdGVFbGVtZW50LCBjb250ZXh0KSB7XG4gICAgdmFyIGZhbWlseVByZWZpeCA9IGNvbmZpZy5mYW1pbHlQcmVmaXg7XG4gICAgdmFyIHByb3BzID0gY29udGV4dC5wcm9wcztcblxuXG4gICAgdmFyIGNsYXNzZXMgPSBvYmplY3RXaXRoS2V5KCdjbGFzc2VzJywgW10uY29uY2F0KHRvQ29uc3VtYWJsZUFycmF5KHByb3BzLmNvdW50ZXIgPyBbZmFtaWx5UHJlZml4ICsgJy1sYXllcnMtY291bnRlciddIDogW10pLCB0b0NvbnN1bWFibGVBcnJheShwcm9wcy5wb3NpdGlvbiA/IFtmYW1pbHlQcmVmaXggKyAnLWxheWVycy0nICsgcHJvcHMucG9zaXRpb25dIDogW10pKSk7XG5cbiAgICB2YXIgdHJhbnNmb3JtID0gb2JqZWN0V2l0aEtleSgndHJhbnNmb3JtJywgdHlwZW9mIHByb3BzLnRyYW5zZm9ybSA9PT0gJ3N0cmluZycgPyBwYXJzZS50cmFuc2Zvcm0ocHJvcHMudHJhbnNmb3JtKSA6IHByb3BzLnRyYW5zZm9ybSk7XG5cbiAgICB2YXIgcmVuZGVyZWRUZXh0ID0gdGV4dChwcm9wcy52YWx1ZS50b1N0cmluZygpLCBfZXh0ZW5kcyh7fSwgdHJhbnNmb3JtLCBjbGFzc2VzKSk7XG5cbiAgICB2YXIgYWJzdHJhY3QgPSByZW5kZXJlZFRleHQuYWJzdHJhY3Q7XG5cblxuICAgIGlmIChwcm9wcy5jb3VudGVyKSB7XG4gICAgICBhYnN0cmFjdFswXS5hdHRyaWJ1dGVzLmNsYXNzID0gYWJzdHJhY3RbMF0uYXR0cmlidXRlcy5jbGFzcy5yZXBsYWNlKCdmYS1sYXllcnMtdGV4dCcsICcnKTtcbiAgICB9XG5cbiAgICB2YXIgY29udmVydEN1cnJ5ID0gY29udmVydC5iaW5kKG51bGwsIGNyZWF0ZUVsZW1lbnQpO1xuXG4gICAgcmV0dXJuIGNvbnZlcnRDdXJyeShhYnN0cmFjdFswXSwge30sIGNvbnRleHQuZGF0YSk7XG4gIH1cbn07XG5cbmV4cG9ydCB7IEZvbnRBd2Vzb21lSWNvbiwgRm9udEF3ZXNvbWVMYXllcnMsIEZvbnRBd2Vzb21lTGF5ZXJzVGV4dCB9O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG52YXIgc2V0dGxlID0gcmVxdWlyZSgnLi8uLi9jb3JlL3NldHRsZScpO1xudmFyIGJ1aWxkVVJMID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2J1aWxkVVJMJyk7XG52YXIgYnVpbGRGdWxsUGF0aCA9IHJlcXVpcmUoJy4uL2NvcmUvYnVpbGRGdWxsUGF0aCcpO1xudmFyIHBhcnNlSGVhZGVycyA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9wYXJzZUhlYWRlcnMnKTtcbnZhciBpc1VSTFNhbWVPcmlnaW4gPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvaXNVUkxTYW1lT3JpZ2luJyk7XG52YXIgY3JlYXRlRXJyb3IgPSByZXF1aXJlKCcuLi9jb3JlL2NyZWF0ZUVycm9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24geGhyQWRhcHRlcihjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIGRpc3BhdGNoWGhyUmVxdWVzdChyZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YXIgcmVxdWVzdERhdGEgPSBjb25maWcuZGF0YTtcbiAgICB2YXIgcmVxdWVzdEhlYWRlcnMgPSBjb25maWcuaGVhZGVycztcblxuICAgIGlmICh1dGlscy5pc0Zvcm1EYXRhKHJlcXVlc3REYXRhKSkge1xuICAgICAgZGVsZXRlIHJlcXVlc3RIZWFkZXJzWydDb250ZW50LVR5cGUnXTsgLy8gTGV0IHRoZSBicm93c2VyIHNldCBpdFxuICAgIH1cblxuICAgIHZhciByZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG5cbiAgICAvLyBIVFRQIGJhc2ljIGF1dGhlbnRpY2F0aW9uXG4gICAgaWYgKGNvbmZpZy5hdXRoKSB7XG4gICAgICB2YXIgdXNlcm5hbWUgPSBjb25maWcuYXV0aC51c2VybmFtZSB8fCAnJztcbiAgICAgIHZhciBwYXNzd29yZCA9IGNvbmZpZy5hdXRoLnBhc3N3b3JkIHx8ICcnO1xuICAgICAgcmVxdWVzdEhlYWRlcnMuQXV0aG9yaXphdGlvbiA9ICdCYXNpYyAnICsgYnRvYSh1c2VybmFtZSArICc6JyArIHBhc3N3b3JkKTtcbiAgICB9XG5cbiAgICB2YXIgZnVsbFBhdGggPSBidWlsZEZ1bGxQYXRoKGNvbmZpZy5iYXNlVVJMLCBjb25maWcudXJsKTtcbiAgICByZXF1ZXN0Lm9wZW4oY29uZmlnLm1ldGhvZC50b1VwcGVyQ2FzZSgpLCBidWlsZFVSTChmdWxsUGF0aCwgY29uZmlnLnBhcmFtcywgY29uZmlnLnBhcmFtc1NlcmlhbGl6ZXIpLCB0cnVlKTtcblxuICAgIC8vIFNldCB0aGUgcmVxdWVzdCB0aW1lb3V0IGluIE1TXG4gICAgcmVxdWVzdC50aW1lb3V0ID0gY29uZmlnLnRpbWVvdXQ7XG5cbiAgICAvLyBMaXN0ZW4gZm9yIHJlYWR5IHN0YXRlXG4gICAgcmVxdWVzdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiBoYW5kbGVMb2FkKCkge1xuICAgICAgaWYgKCFyZXF1ZXN0IHx8IHJlcXVlc3QucmVhZHlTdGF0ZSAhPT0gNCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSByZXF1ZXN0IGVycm9yZWQgb3V0IGFuZCB3ZSBkaWRuJ3QgZ2V0IGEgcmVzcG9uc2UsIHRoaXMgd2lsbCBiZVxuICAgICAgLy8gaGFuZGxlZCBieSBvbmVycm9yIGluc3RlYWRcbiAgICAgIC8vIFdpdGggb25lIGV4Y2VwdGlvbjogcmVxdWVzdCB0aGF0IHVzaW5nIGZpbGU6IHByb3RvY29sLCBtb3N0IGJyb3dzZXJzXG4gICAgICAvLyB3aWxsIHJldHVybiBzdGF0dXMgYXMgMCBldmVuIHRob3VnaCBpdCdzIGEgc3VjY2Vzc2Z1bCByZXF1ZXN0XG4gICAgICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IDAgJiYgIShyZXF1ZXN0LnJlc3BvbnNlVVJMICYmIHJlcXVlc3QucmVzcG9uc2VVUkwuaW5kZXhPZignZmlsZTonKSA9PT0gMCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBQcmVwYXJlIHRoZSByZXNwb25zZVxuICAgICAgdmFyIHJlc3BvbnNlSGVhZGVycyA9ICdnZXRBbGxSZXNwb25zZUhlYWRlcnMnIGluIHJlcXVlc3QgPyBwYXJzZUhlYWRlcnMocmVxdWVzdC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkgOiBudWxsO1xuICAgICAgdmFyIHJlc3BvbnNlRGF0YSA9ICFjb25maWcucmVzcG9uc2VUeXBlIHx8IGNvbmZpZy5yZXNwb25zZVR5cGUgPT09ICd0ZXh0JyA/IHJlcXVlc3QucmVzcG9uc2VUZXh0IDogcmVxdWVzdC5yZXNwb25zZTtcbiAgICAgIHZhciByZXNwb25zZSA9IHtcbiAgICAgICAgZGF0YTogcmVzcG9uc2VEYXRhLFxuICAgICAgICBzdGF0dXM6IHJlcXVlc3Quc3RhdHVzLFxuICAgICAgICBzdGF0dXNUZXh0OiByZXF1ZXN0LnN0YXR1c1RleHQsXG4gICAgICAgIGhlYWRlcnM6IHJlc3BvbnNlSGVhZGVycyxcbiAgICAgICAgY29uZmlnOiBjb25maWcsXG4gICAgICAgIHJlcXVlc3Q6IHJlcXVlc3RcbiAgICAgIH07XG5cbiAgICAgIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHJlc3BvbnNlKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSBicm93c2VyIHJlcXVlc3QgY2FuY2VsbGF0aW9uIChhcyBvcHBvc2VkIHRvIGEgbWFudWFsIGNhbmNlbGxhdGlvbilcbiAgICByZXF1ZXN0Lm9uYWJvcnQgPSBmdW5jdGlvbiBoYW5kbGVBYm9ydCgpIHtcbiAgICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJlamVjdChjcmVhdGVFcnJvcignUmVxdWVzdCBhYm9ydGVkJywgY29uZmlnLCAnRUNPTk5BQk9SVEVEJywgcmVxdWVzdCkpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gSGFuZGxlIGxvdyBsZXZlbCBuZXR3b3JrIGVycm9yc1xuICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uIGhhbmRsZUVycm9yKCkge1xuICAgICAgLy8gUmVhbCBlcnJvcnMgYXJlIGhpZGRlbiBmcm9tIHVzIGJ5IHRoZSBicm93c2VyXG4gICAgICAvLyBvbmVycm9yIHNob3VsZCBvbmx5IGZpcmUgaWYgaXQncyBhIG5ldHdvcmsgZXJyb3JcbiAgICAgIHJlamVjdChjcmVhdGVFcnJvcignTmV0d29yayBFcnJvcicsIGNvbmZpZywgbnVsbCwgcmVxdWVzdCkpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gSGFuZGxlIHRpbWVvdXRcbiAgICByZXF1ZXN0Lm9udGltZW91dCA9IGZ1bmN0aW9uIGhhbmRsZVRpbWVvdXQoKSB7XG4gICAgICB2YXIgdGltZW91dEVycm9yTWVzc2FnZSA9ICd0aW1lb3V0IG9mICcgKyBjb25maWcudGltZW91dCArICdtcyBleGNlZWRlZCc7XG4gICAgICBpZiAoY29uZmlnLnRpbWVvdXRFcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgdGltZW91dEVycm9yTWVzc2FnZSA9IGNvbmZpZy50aW1lb3V0RXJyb3JNZXNzYWdlO1xuICAgICAgfVxuICAgICAgcmVqZWN0KGNyZWF0ZUVycm9yKHRpbWVvdXRFcnJvck1lc3NhZ2UsIGNvbmZpZywgJ0VDT05OQUJPUlRFRCcsXG4gICAgICAgIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEFkZCB4c3JmIGhlYWRlclxuICAgIC8vIFRoaXMgaXMgb25seSBkb25lIGlmIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIGVudmlyb25tZW50LlxuICAgIC8vIFNwZWNpZmljYWxseSBub3QgaWYgd2UncmUgaW4gYSB3ZWIgd29ya2VyLCBvciByZWFjdC1uYXRpdmUuXG4gICAgaWYgKHV0aWxzLmlzU3RhbmRhcmRCcm93c2VyRW52KCkpIHtcbiAgICAgIHZhciBjb29raWVzID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2Nvb2tpZXMnKTtcblxuICAgICAgLy8gQWRkIHhzcmYgaGVhZGVyXG4gICAgICB2YXIgeHNyZlZhbHVlID0gKGNvbmZpZy53aXRoQ3JlZGVudGlhbHMgfHwgaXNVUkxTYW1lT3JpZ2luKGZ1bGxQYXRoKSkgJiYgY29uZmlnLnhzcmZDb29raWVOYW1lID9cbiAgICAgICAgY29va2llcy5yZWFkKGNvbmZpZy54c3JmQ29va2llTmFtZSkgOlxuICAgICAgICB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICh4c3JmVmFsdWUpIHtcbiAgICAgICAgcmVxdWVzdEhlYWRlcnNbY29uZmlnLnhzcmZIZWFkZXJOYW1lXSA9IHhzcmZWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgaGVhZGVycyB0byB0aGUgcmVxdWVzdFxuICAgIGlmICgnc2V0UmVxdWVzdEhlYWRlcicgaW4gcmVxdWVzdCkge1xuICAgICAgdXRpbHMuZm9yRWFjaChyZXF1ZXN0SGVhZGVycywgZnVuY3Rpb24gc2V0UmVxdWVzdEhlYWRlcih2YWwsIGtleSkge1xuICAgICAgICBpZiAodHlwZW9mIHJlcXVlc3REYXRhID09PSAndW5kZWZpbmVkJyAmJiBrZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2NvbnRlbnQtdHlwZScpIHtcbiAgICAgICAgICAvLyBSZW1vdmUgQ29udGVudC1UeXBlIGlmIGRhdGEgaXMgdW5kZWZpbmVkXG4gICAgICAgICAgZGVsZXRlIHJlcXVlc3RIZWFkZXJzW2tleV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gT3RoZXJ3aXNlIGFkZCBoZWFkZXIgdG8gdGhlIHJlcXVlc3RcbiAgICAgICAgICByZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIoa2V5LCB2YWwpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBZGQgd2l0aENyZWRlbnRpYWxzIHRvIHJlcXVlc3QgaWYgbmVlZGVkXG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcud2l0aENyZWRlbnRpYWxzKSkge1xuICAgICAgcmVxdWVzdC53aXRoQ3JlZGVudGlhbHMgPSAhIWNvbmZpZy53aXRoQ3JlZGVudGlhbHM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHJlc3BvbnNlVHlwZSB0byByZXF1ZXN0IGlmIG5lZWRlZFxuICAgIGlmIChjb25maWcucmVzcG9uc2VUeXBlKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXF1ZXN0LnJlc3BvbnNlVHlwZSA9IGNvbmZpZy5yZXNwb25zZVR5cGU7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIEV4cGVjdGVkIERPTUV4Y2VwdGlvbiB0aHJvd24gYnkgYnJvd3NlcnMgbm90IGNvbXBhdGlibGUgWE1MSHR0cFJlcXVlc3QgTGV2ZWwgMi5cbiAgICAgICAgLy8gQnV0LCB0aGlzIGNhbiBiZSBzdXBwcmVzc2VkIGZvciAnanNvbicgdHlwZSBhcyBpdCBjYW4gYmUgcGFyc2VkIGJ5IGRlZmF1bHQgJ3RyYW5zZm9ybVJlc3BvbnNlJyBmdW5jdGlvbi5cbiAgICAgICAgaWYgKGNvbmZpZy5yZXNwb25zZVR5cGUgIT09ICdqc29uJykge1xuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgcHJvZ3Jlc3MgaWYgbmVlZGVkXG4gICAgaWYgKHR5cGVvZiBjb25maWcub25Eb3dubG9hZFByb2dyZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgY29uZmlnLm9uRG93bmxvYWRQcm9ncmVzcyk7XG4gICAgfVxuXG4gICAgLy8gTm90IGFsbCBicm93c2VycyBzdXBwb3J0IHVwbG9hZCBldmVudHNcbiAgICBpZiAodHlwZW9mIGNvbmZpZy5vblVwbG9hZFByb2dyZXNzID09PSAnZnVuY3Rpb24nICYmIHJlcXVlc3QudXBsb2FkKSB7XG4gICAgICByZXF1ZXN0LnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIGNvbmZpZy5vblVwbG9hZFByb2dyZXNzKTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLmNhbmNlbFRva2VuKSB7XG4gICAgICAvLyBIYW5kbGUgY2FuY2VsbGF0aW9uXG4gICAgICBjb25maWcuY2FuY2VsVG9rZW4ucHJvbWlzZS50aGVuKGZ1bmN0aW9uIG9uQ2FuY2VsZWQoY2FuY2VsKSB7XG4gICAgICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcXVlc3QuYWJvcnQoKTtcbiAgICAgICAgcmVqZWN0KGNhbmNlbCk7XG4gICAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmVxdWVzdERhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVxdWVzdERhdGEgPSBudWxsO1xuICAgIH1cblxuICAgIC8vIFNlbmQgdGhlIHJlcXVlc3RcbiAgICByZXF1ZXN0LnNlbmQocmVxdWVzdERhdGEpO1xuICB9KTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL2F4aW9zJyk7IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbi8vIEhlYWRlcnMgd2hvc2UgZHVwbGljYXRlcyBhcmUgaWdub3JlZCBieSBub2RlXG4vLyBjLmYuIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfbWVzc2FnZV9oZWFkZXJzXG52YXIgaWdub3JlRHVwbGljYXRlT2YgPSBbXG4gICdhZ2UnLCAnYXV0aG9yaXphdGlvbicsICdjb250ZW50LWxlbmd0aCcsICdjb250ZW50LXR5cGUnLCAnZXRhZycsXG4gICdleHBpcmVzJywgJ2Zyb20nLCAnaG9zdCcsICdpZi1tb2RpZmllZC1zaW5jZScsICdpZi11bm1vZGlmaWVkLXNpbmNlJyxcbiAgJ2xhc3QtbW9kaWZpZWQnLCAnbG9jYXRpb24nLCAnbWF4LWZvcndhcmRzJywgJ3Byb3h5LWF1dGhvcml6YXRpb24nLFxuICAncmVmZXJlcicsICdyZXRyeS1hZnRlcicsICd1c2VyLWFnZW50J1xuXTtcblxuLyoqXG4gKiBQYXJzZSBoZWFkZXJzIGludG8gYW4gb2JqZWN0XG4gKlxuICogYGBgXG4gKiBEYXRlOiBXZWQsIDI3IEF1ZyAyMDE0IDA4OjU4OjQ5IEdNVFxuICogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXG4gKiBDb25uZWN0aW9uOiBrZWVwLWFsaXZlXG4gKiBUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxuICogYGBgXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGhlYWRlcnMgSGVhZGVycyBuZWVkaW5nIHRvIGJlIHBhcnNlZFxuICogQHJldHVybnMge09iamVjdH0gSGVhZGVycyBwYXJzZWQgaW50byBhbiBvYmplY3RcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwYXJzZUhlYWRlcnMoaGVhZGVycykge1xuICB2YXIgcGFyc2VkID0ge307XG4gIHZhciBrZXk7XG4gIHZhciB2YWw7XG4gIHZhciBpO1xuXG4gIGlmICghaGVhZGVycykgeyByZXR1cm4gcGFyc2VkOyB9XG5cbiAgdXRpbHMuZm9yRWFjaChoZWFkZXJzLnNwbGl0KCdcXG4nKSwgZnVuY3Rpb24gcGFyc2VyKGxpbmUpIHtcbiAgICBpID0gbGluZS5pbmRleE9mKCc6Jyk7XG4gICAga2V5ID0gdXRpbHMudHJpbShsaW5lLnN1YnN0cigwLCBpKSkudG9Mb3dlckNhc2UoKTtcbiAgICB2YWwgPSB1dGlscy50cmltKGxpbmUuc3Vic3RyKGkgKyAxKSk7XG5cbiAgICBpZiAoa2V5KSB7XG4gICAgICBpZiAocGFyc2VkW2tleV0gJiYgaWdub3JlRHVwbGljYXRlT2YuaW5kZXhPZihrZXkpID49IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGtleSA9PT0gJ3NldC1jb29raWUnKSB7XG4gICAgICAgIHBhcnNlZFtrZXldID0gKHBhcnNlZFtrZXldID8gcGFyc2VkW2tleV0gOiBbXSkuY29uY2F0KFt2YWxdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnNlZFtrZXldID0gcGFyc2VkW2tleV0gPyBwYXJzZWRba2V5XSArICcsICcgKyB2YWwgOiB2YWw7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcGFyc2VkO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG4vKipcbiAqIFRyYW5zZm9ybSB0aGUgZGF0YSBmb3IgYSByZXF1ZXN0IG9yIGEgcmVzcG9uc2VcbiAqXG4gKiBAcGFyYW0ge09iamVjdHxTdHJpbmd9IGRhdGEgVGhlIGRhdGEgdG8gYmUgdHJhbnNmb3JtZWRcbiAqIEBwYXJhbSB7QXJyYXl9IGhlYWRlcnMgVGhlIGhlYWRlcnMgZm9yIHRoZSByZXF1ZXN0IG9yIHJlc3BvbnNlXG4gKiBAcGFyYW0ge0FycmF5fEZ1bmN0aW9ufSBmbnMgQSBzaW5nbGUgZnVuY3Rpb24gb3IgQXJyYXkgb2YgZnVuY3Rpb25zXG4gKiBAcmV0dXJucyB7Kn0gVGhlIHJlc3VsdGluZyB0cmFuc2Zvcm1lZCBkYXRhXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdHJhbnNmb3JtRGF0YShkYXRhLCBoZWFkZXJzLCBmbnMpIHtcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gIHV0aWxzLmZvckVhY2goZm5zLCBmdW5jdGlvbiB0cmFuc2Zvcm0oZm4pIHtcbiAgICBkYXRhID0gZm4oZGF0YSwgaGVhZGVycyk7XG4gIH0pO1xuXG4gIHJldHVybiBkYXRhO1xufTtcbiIsImltcG9ydCBWdWUgZnJvbSAndnVlJ1xuZXhwb3J0IGNvbnN0IGV2ZW50cyA9IG5ldyBWdWUoKVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYmluZCA9IHJlcXVpcmUoJy4vaGVscGVycy9iaW5kJyk7XG5cbi8qZ2xvYmFsIHRvU3RyaW5nOnRydWUqL1xuXG4vLyB1dGlscyBpcyBhIGxpYnJhcnkgb2YgZ2VuZXJpYyBoZWxwZXIgZnVuY3Rpb25zIG5vbi1zcGVjaWZpYyB0byBheGlvc1xuXG52YXIgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIEFycmF5XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gQXJyYXksIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5KHZhbCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBBcnJheV0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIHVuZGVmaW5lZFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB1bmRlZmluZWQsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICd1bmRlZmluZWQnO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgQnVmZmVyXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBCdWZmZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0J1ZmZlcih2YWwpIHtcbiAgcmV0dXJuIHZhbCAhPT0gbnVsbCAmJiAhaXNVbmRlZmluZWQodmFsKSAmJiB2YWwuY29uc3RydWN0b3IgIT09IG51bGwgJiYgIWlzVW5kZWZpbmVkKHZhbC5jb25zdHJ1Y3RvcilcbiAgICAmJiB0eXBlb2YgdmFsLmNvbnN0cnVjdG9yLmlzQnVmZmVyID09PSAnZnVuY3Rpb24nICYmIHZhbC5jb25zdHJ1Y3Rvci5pc0J1ZmZlcih2YWwpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIEFycmF5QnVmZmVyXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gQXJyYXlCdWZmZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5QnVmZmVyKHZhbCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRm9ybURhdGFcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBGb3JtRGF0YSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRm9ybURhdGEodmFsKSB7XG4gIHJldHVybiAodHlwZW9mIEZvcm1EYXRhICE9PSAndW5kZWZpbmVkJykgJiYgKHZhbCBpbnN0YW5jZW9mIEZvcm1EYXRhKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIHZpZXcgb24gYW4gQXJyYXlCdWZmZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIHZpZXcgb24gYW4gQXJyYXlCdWZmZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5QnVmZmVyVmlldyh2YWwpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKCh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnKSAmJiAoQXJyYXlCdWZmZXIuaXNWaWV3KSkge1xuICAgIHJlc3VsdCA9IEFycmF5QnVmZmVyLmlzVmlldyh2YWwpO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdCA9ICh2YWwpICYmICh2YWwuYnVmZmVyKSAmJiAodmFsLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgU3RyaW5nXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBTdHJpbmcsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N0cmluZyh2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgTnVtYmVyXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBOdW1iZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc051bWJlcih2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdudW1iZXInO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIE9iamVjdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIE9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbCkge1xuICByZXR1cm4gdmFsICE9PSBudWxsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRGF0ZVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRGF0ZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRGF0ZSh2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRmlsZVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRmlsZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRmlsZSh2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRmlsZV0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgQmxvYlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgQmxvYiwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQmxvYih2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgQmxvYl0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEZ1bmN0aW9uLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFN0cmVhbVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgU3RyZWFtLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJlYW0odmFsKSB7XG4gIHJldHVybiBpc09iamVjdCh2YWwpICYmIGlzRnVuY3Rpb24odmFsLnBpcGUpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzVVJMU2VhcmNoUGFyYW1zKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIFVSTFNlYXJjaFBhcmFtcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsIGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zO1xufVxuXG4vKipcbiAqIFRyaW0gZXhjZXNzIHdoaXRlc3BhY2Ugb2ZmIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBhIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgVGhlIFN0cmluZyB0byB0cmltXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgU3RyaW5nIGZyZWVkIG9mIGV4Y2VzcyB3aGl0ZXNwYWNlXG4gKi9cbmZ1bmN0aW9uIHRyaW0oc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvXlxccyovLCAnJykucmVwbGFjZSgvXFxzKiQvLCAnJyk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIGVudmlyb25tZW50XG4gKlxuICogVGhpcyBhbGxvd3MgYXhpb3MgdG8gcnVuIGluIGEgd2ViIHdvcmtlciwgYW5kIHJlYWN0LW5hdGl2ZS5cbiAqIEJvdGggZW52aXJvbm1lbnRzIHN1cHBvcnQgWE1MSHR0cFJlcXVlc3QsIGJ1dCBub3QgZnVsbHkgc3RhbmRhcmQgZ2xvYmFscy5cbiAqXG4gKiB3ZWIgd29ya2VyczpcbiAqICB0eXBlb2Ygd2luZG93IC0+IHVuZGVmaW5lZFxuICogIHR5cGVvZiBkb2N1bWVudCAtPiB1bmRlZmluZWRcbiAqXG4gKiByZWFjdC1uYXRpdmU6XG4gKiAgbmF2aWdhdG9yLnByb2R1Y3QgLT4gJ1JlYWN0TmF0aXZlJ1xuICogbmF0aXZlc2NyaXB0XG4gKiAgbmF2aWdhdG9yLnByb2R1Y3QgLT4gJ05hdGl2ZVNjcmlwdCcgb3IgJ05TJ1xuICovXG5mdW5jdGlvbiBpc1N0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgaWYgKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIChuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ1JlYWN0TmF0aXZlJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci5wcm9kdWN0ID09PSAnTmF0aXZlU2NyaXB0JyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci5wcm9kdWN0ID09PSAnTlMnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gKFxuICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmXG4gICAgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJ1xuICApO1xufVxuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBhbiBBcnJheSBvciBhbiBPYmplY3QgaW52b2tpbmcgYSBmdW5jdGlvbiBmb3IgZWFjaCBpdGVtLlxuICpcbiAqIElmIGBvYmpgIGlzIGFuIEFycmF5IGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIHBhc3NpbmdcbiAqIHRoZSB2YWx1ZSwgaW5kZXgsIGFuZCBjb21wbGV0ZSBhcnJheSBmb3IgZWFjaCBpdGVtLlxuICpcbiAqIElmICdvYmonIGlzIGFuIE9iamVjdCBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBwYXNzaW5nXG4gKiB0aGUgdmFsdWUsIGtleSwgYW5kIGNvbXBsZXRlIG9iamVjdCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gb2JqIFRoZSBvYmplY3QgdG8gaXRlcmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGNhbGxiYWNrIHRvIGludm9rZSBmb3IgZWFjaCBpdGVtXG4gKi9cbmZ1bmN0aW9uIGZvckVhY2gob2JqLCBmbikge1xuICAvLyBEb24ndCBib3RoZXIgaWYgbm8gdmFsdWUgcHJvdmlkZWRcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIEZvcmNlIGFuIGFycmF5IGlmIG5vdCBhbHJlYWR5IHNvbWV0aGluZyBpdGVyYWJsZVxuICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgICBvYmogPSBbb2JqXTtcbiAgfVxuXG4gIGlmIChpc0FycmF5KG9iaikpIHtcbiAgICAvLyBJdGVyYXRlIG92ZXIgYXJyYXkgdmFsdWVzXG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBvYmoubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIG9ialtpXSwgaSwgb2JqKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gSXRlcmF0ZSBvdmVyIG9iamVjdCBrZXlzXG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgZm4uY2FsbChudWxsLCBvYmpba2V5XSwga2V5LCBvYmopO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFjY2VwdHMgdmFyYXJncyBleHBlY3RpbmcgZWFjaCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3QsIHRoZW5cbiAqIGltbXV0YWJseSBtZXJnZXMgdGhlIHByb3BlcnRpZXMgb2YgZWFjaCBvYmplY3QgYW5kIHJldHVybnMgcmVzdWx0LlxuICpcbiAqIFdoZW4gbXVsdGlwbGUgb2JqZWN0cyBjb250YWluIHRoZSBzYW1lIGtleSB0aGUgbGF0ZXIgb2JqZWN0IGluXG4gKiB0aGUgYXJndW1lbnRzIGxpc3Qgd2lsbCB0YWtlIHByZWNlZGVuY2UuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGBqc1xuICogdmFyIHJlc3VsdCA9IG1lcmdlKHtmb286IDEyM30sIHtmb286IDQ1Nn0pO1xuICogY29uc29sZS5sb2cocmVzdWx0LmZvbyk7IC8vIG91dHB1dHMgNDU2XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqMSBPYmplY3QgdG8gbWVyZ2VcbiAqIEByZXR1cm5zIHtPYmplY3R9IFJlc3VsdCBvZiBhbGwgbWVyZ2UgcHJvcGVydGllc1xuICovXG5mdW5jdGlvbiBtZXJnZSgvKiBvYmoxLCBvYmoyLCBvYmozLCAuLi4gKi8pIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBmdW5jdGlvbiBhc3NpZ25WYWx1ZSh2YWwsIGtleSkge1xuICAgIGlmICh0eXBlb2YgcmVzdWx0W2tleV0gPT09ICdvYmplY3QnICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXN1bHRba2V5XSA9IG1lcmdlKHJlc3VsdFtrZXldLCB2YWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRba2V5XSA9IHZhbDtcbiAgICB9XG4gIH1cblxuICBmb3IgKHZhciBpID0gMCwgbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBmb3JFYWNoKGFyZ3VtZW50c1tpXSwgYXNzaWduVmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gZXF1YWwgdG8gbWVyZ2Ugd2l0aCB0aGUgZGlmZmVyZW5jZSBiZWluZyB0aGF0IG5vIHJlZmVyZW5jZVxuICogdG8gb3JpZ2luYWwgb2JqZWN0cyBpcyBrZXB0LlxuICpcbiAqIEBzZWUgbWVyZ2VcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmoxIE9iamVjdCB0byBtZXJnZVxuICogQHJldHVybnMge09iamVjdH0gUmVzdWx0IG9mIGFsbCBtZXJnZSBwcm9wZXJ0aWVzXG4gKi9cbmZ1bmN0aW9uIGRlZXBNZXJnZSgvKiBvYmoxLCBvYmoyLCBvYmozLCAuLi4gKi8pIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBmdW5jdGlvbiBhc3NpZ25WYWx1ZSh2YWwsIGtleSkge1xuICAgIGlmICh0eXBlb2YgcmVzdWx0W2tleV0gPT09ICdvYmplY3QnICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXN1bHRba2V5XSA9IGRlZXBNZXJnZShyZXN1bHRba2V5XSwgdmFsKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXN1bHRba2V5XSA9IGRlZXBNZXJnZSh7fSwgdmFsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0W2tleV0gPSB2YWw7XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgZm9yRWFjaChhcmd1bWVudHNbaV0sIGFzc2lnblZhbHVlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEV4dGVuZHMgb2JqZWN0IGEgYnkgbXV0YWJseSBhZGRpbmcgdG8gaXQgdGhlIHByb3BlcnRpZXMgb2Ygb2JqZWN0IGIuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGEgVGhlIG9iamVjdCB0byBiZSBleHRlbmRlZFxuICogQHBhcmFtIHtPYmplY3R9IGIgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbVxuICogQHBhcmFtIHtPYmplY3R9IHRoaXNBcmcgVGhlIG9iamVjdCB0byBiaW5kIGZ1bmN0aW9uIHRvXG4gKiBAcmV0dXJuIHtPYmplY3R9IFRoZSByZXN1bHRpbmcgdmFsdWUgb2Ygb2JqZWN0IGFcbiAqL1xuZnVuY3Rpb24gZXh0ZW5kKGEsIGIsIHRoaXNBcmcpIHtcbiAgZm9yRWFjaChiLCBmdW5jdGlvbiBhc3NpZ25WYWx1ZSh2YWwsIGtleSkge1xuICAgIGlmICh0aGlzQXJnICYmIHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGFba2V5XSA9IGJpbmQodmFsLCB0aGlzQXJnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYVtrZXldID0gdmFsO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBhO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgaXNBcnJheTogaXNBcnJheSxcbiAgaXNBcnJheUJ1ZmZlcjogaXNBcnJheUJ1ZmZlcixcbiAgaXNCdWZmZXI6IGlzQnVmZmVyLFxuICBpc0Zvcm1EYXRhOiBpc0Zvcm1EYXRhLFxuICBpc0FycmF5QnVmZmVyVmlldzogaXNBcnJheUJ1ZmZlclZpZXcsXG4gIGlzU3RyaW5nOiBpc1N0cmluZyxcbiAgaXNOdW1iZXI6IGlzTnVtYmVyLFxuICBpc09iamVjdDogaXNPYmplY3QsXG4gIGlzVW5kZWZpbmVkOiBpc1VuZGVmaW5lZCxcbiAgaXNEYXRlOiBpc0RhdGUsXG4gIGlzRmlsZTogaXNGaWxlLFxuICBpc0Jsb2I6IGlzQmxvYixcbiAgaXNGdW5jdGlvbjogaXNGdW5jdGlvbixcbiAgaXNTdHJlYW06IGlzU3RyZWFtLFxuICBpc1VSTFNlYXJjaFBhcmFtczogaXNVUkxTZWFyY2hQYXJhbXMsXG4gIGlzU3RhbmRhcmRCcm93c2VyRW52OiBpc1N0YW5kYXJkQnJvd3NlckVudixcbiAgZm9yRWFjaDogZm9yRWFjaCxcbiAgbWVyZ2U6IG1lcmdlLFxuICBkZWVwTWVyZ2U6IGRlZXBNZXJnZSxcbiAgZXh0ZW5kOiBleHRlbmQsXG4gIHRyaW06IHRyaW1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbm9ybWFsaXplSGVhZGVyTmFtZShoZWFkZXJzLCBub3JtYWxpemVkTmFtZSkge1xuICB1dGlscy5mb3JFYWNoKGhlYWRlcnMsIGZ1bmN0aW9uIHByb2Nlc3NIZWFkZXIodmFsdWUsIG5hbWUpIHtcbiAgICBpZiAobmFtZSAhPT0gbm9ybWFsaXplZE5hbWUgJiYgbmFtZS50b1VwcGVyQ2FzZSgpID09PSBub3JtYWxpemVkTmFtZS50b1VwcGVyQ2FzZSgpKSB7XG4gICAgICBoZWFkZXJzW25vcm1hbGl6ZWROYW1lXSA9IHZhbHVlO1xuICAgICAgZGVsZXRlIGhlYWRlcnNbbmFtZV07XG4gICAgfVxuICB9KTtcbn07XG4iLCJ2YXIgZztcblxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcbmcgPSAoZnVuY3Rpb24oKSB7XG5cdHJldHVybiB0aGlzO1xufSkoKTtcblxudHJ5IHtcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXG5cdGcgPSBnIHx8IG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XG59IGNhdGNoIChlKSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXG5cdGlmICh0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKSBnID0gd2luZG93O1xufVxuXG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmluZWQsIGJ1dCBub3RoaW5nIHRvIGRvIGFib3V0IGl0Li4uXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGc7XG4iLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tNy0yIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS03LTMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Ub2FzdHJJdGVtLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTM2YzM2N2ZlJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTctMiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tNy0zIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vVG9hc3RySXRlbS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0zNmMzNjdmZSZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCIiLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi9oZWxwZXJzL2JpbmQnKTtcbnZhciBBeGlvcyA9IHJlcXVpcmUoJy4vY29yZS9BeGlvcycpO1xudmFyIG1lcmdlQ29uZmlnID0gcmVxdWlyZSgnLi9jb3JlL21lcmdlQ29uZmlnJyk7XG52YXIgZGVmYXVsdHMgPSByZXF1aXJlKCcuL2RlZmF1bHRzJyk7XG5cbi8qKlxuICogQ3JlYXRlIGFuIGluc3RhbmNlIG9mIEF4aW9zXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGRlZmF1bHRDb25maWcgVGhlIGRlZmF1bHQgY29uZmlnIGZvciB0aGUgaW5zdGFuY2VcbiAqIEByZXR1cm4ge0F4aW9zfSBBIG5ldyBpbnN0YW5jZSBvZiBBeGlvc1xuICovXG5mdW5jdGlvbiBjcmVhdGVJbnN0YW5jZShkZWZhdWx0Q29uZmlnKSB7XG4gIHZhciBjb250ZXh0ID0gbmV3IEF4aW9zKGRlZmF1bHRDb25maWcpO1xuICB2YXIgaW5zdGFuY2UgPSBiaW5kKEF4aW9zLnByb3RvdHlwZS5yZXF1ZXN0LCBjb250ZXh0KTtcblxuICAvLyBDb3B5IGF4aW9zLnByb3RvdHlwZSB0byBpbnN0YW5jZVxuICB1dGlscy5leHRlbmQoaW5zdGFuY2UsIEF4aW9zLnByb3RvdHlwZSwgY29udGV4dCk7XG5cbiAgLy8gQ29weSBjb250ZXh0IHRvIGluc3RhbmNlXG4gIHV0aWxzLmV4dGVuZChpbnN0YW5jZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGluc3RhbmNlO1xufVxuXG4vLyBDcmVhdGUgdGhlIGRlZmF1bHQgaW5zdGFuY2UgdG8gYmUgZXhwb3J0ZWRcbnZhciBheGlvcyA9IGNyZWF0ZUluc3RhbmNlKGRlZmF1bHRzKTtcblxuLy8gRXhwb3NlIEF4aW9zIGNsYXNzIHRvIGFsbG93IGNsYXNzIGluaGVyaXRhbmNlXG5heGlvcy5BeGlvcyA9IEF4aW9zO1xuXG4vLyBGYWN0b3J5IGZvciBjcmVhdGluZyBuZXcgaW5zdGFuY2VzXG5heGlvcy5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUoaW5zdGFuY2VDb25maWcpIHtcbiAgcmV0dXJuIGNyZWF0ZUluc3RhbmNlKG1lcmdlQ29uZmlnKGF4aW9zLmRlZmF1bHRzLCBpbnN0YW5jZUNvbmZpZykpO1xufTtcblxuLy8gRXhwb3NlIENhbmNlbCAmIENhbmNlbFRva2VuXG5heGlvcy5DYW5jZWwgPSByZXF1aXJlKCcuL2NhbmNlbC9DYW5jZWwnKTtcbmF4aW9zLkNhbmNlbFRva2VuID0gcmVxdWlyZSgnLi9jYW5jZWwvQ2FuY2VsVG9rZW4nKTtcbmF4aW9zLmlzQ2FuY2VsID0gcmVxdWlyZSgnLi9jYW5jZWwvaXNDYW5jZWwnKTtcblxuLy8gRXhwb3NlIGFsbC9zcHJlYWRcbmF4aW9zLmFsbCA9IGZ1bmN0aW9uIGFsbChwcm9taXNlcykge1xuICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xufTtcbmF4aW9zLnNwcmVhZCA9IHJlcXVpcmUoJy4vaGVscGVycy9zcHJlYWQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBheGlvcztcblxuLy8gQWxsb3cgdXNlIG9mIGRlZmF1bHQgaW1wb3J0IHN5bnRheCBpbiBUeXBlU2NyaXB0XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gYXhpb3M7XG4iXSwic291cmNlUm9vdCI6IiJ9 |