@vacayou/tripfusion-js-sdk 1.12.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/main.js +2 -2
  2. package/package.json +33 -34
package/dist/main.js CHANGED
@@ -1,2 +1,2 @@
1
- (()=>{var n={365:(n,t,e)=>{"use strict";e.d(t,{A:()=>s});var r=e(354),i=e.n(r),o=e(314),a=e.n(o)()(i());a.push([n.id,"@import url(https://use.typekit.net/sag8ceb.css);"]),a.push([n.id,'#tripfusion-loader {\n color: white;\n margin-right: -50%;\n position: absolute;\n top: 50%;\n left: 50%;\n font-family: futura-lt-w01-book, futura-lt-w05-book, Arial, Helvetica, sans-serif;\n transform: translate(-50%, -50%);\n}\n\n#tripfusion-loader span {\n font-weight: bold;\n font-size: 1.3rem;\n}\n\n#tripfusion-resume-panel {\n max-width: 250px;\n position: fixed;\n overflow: hidden;\n cursor: pointer;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n padding: 12px 24px;\n box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.25), 0px 4px 4px rgba(0, 0, 0, 0.1);\n right: 30px;\n z-index: 100000000000;\n bottom: 40px;\n border: none;\n transform: translateX(400px);\n border-radius: 16px;\n color: white;\n font-size: 1rem;\n font-family: sweet-sans-pro, sans-serif;\n}\n\n.tripfusion-resume-panel__header {\n display: flex;\n justify-content: space-between;\n gap: 2em;\n align-items: center;\n}\n\n.tripfusion-resume-panel__header svg {\n width: 18px;\n height: 18px;\n fill: white;\n flex-shrink: 0;\n}\n\n.tripfusion-resume-panel__header span,\n.tripfusion-resume-panel__subheader {\n font-weight: 700;\n line-height: 1.2;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.tripfusion-resume-panel__footer {\n font-family: Roboto, Helvetica, Arial, sans-serif;\n font-size: 0.8rem;\n font-weight: 400;\n}\n\n#tripfusion-widget-wrapper {\n background: rgba(0, 0, 0, 0);\n position: fixed;\n top: 0;\n right: 0;\n width: 100%;\n transition: background 0.5s ease-out;\n}\n\n#tripfusion-widget {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0px;\n right: 0px;\n}\n\n#tripfusion-widget-inner-wrapper {\n position: fixed;\n display: flex;\n flex-direction: column;\n min-width: 320px;\n width: 100%;\n height: 100%;\n right: 0px;\n bottom: 0px;\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.2);\n font-family: "Roboto", "Helvetica", "Arial", sans-serif;\n font-weight: 400;\n font-size: 1rem;\n line-height: 1.5;\n letter-spacing: 0.00938em;\n}\n\n@media (min-width: 768px) {\n #tripfusion-widget-inner-wrapper {\n height: calc(100% - 40px);\n right: 20px;\n bottom: 20px;\n width: 500px;\n }\n}\n\n#tripfusion-widget-header {\n height: 60px;\n border-bottom: 1px solid #f1f1f1;\n padding: 0 16px 0 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n color: white;\n}\n\n#tripfusion-widget-iframe {\n height: 100%;\n border: none;\n}\n\n#tripfusion-widget-header-title {\n font-family: sweet-sans-pro, sans-serif;\n line-height: 1.2;\n font-weight: 700;\n font-size: 1rem;\n letter-spacing: 1.5px;\n text-transform: uppercase;\n}\n\n#tripfusion-widget-close-button {\n overflow: hidden;\n position: relative;\n border: none;\n padding: 0;\n width: 2em;\n height: 2em;\n border-radius: 50%;\n background: transparent;\n font: inherit;\n text-indent: 100%;\n cursor: pointer;\n\n &:focus {\n outline: solid 0 transparent;\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n &:hover {\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n &:before,\n &:after {\n position: absolute;\n top: 25%;\n left: calc(50% - 0.0625em);\n width: 0.125em;\n height: 50%;\n border-radius: 0.125em;\n transform: rotate(45deg);\n background: currentcolor;\n color: white;\n content: "";\n }\n\n &:after {\n transform: rotate(-45deg);\n }\n}\n\n.tripfusion-resume-panel--slide-in {\n -webkit-transition: 500ms;\n -moz-transition: 500ms;\n transition: 500ms;\n transform: translateX(0) !important;\n}\n\n.tripfusion-resume-panel--slide-out {\n -webkit-transition: 500ms;\n -moz-transition: 500ms;\n transition: 500ms;\n transform: translateX(400px) !important;\n}\n\n.tripfusion-resume-panel--resize-in {\n width: 46px !important;\n height: 46px !important;\n transition: 500ms;\n right: 30px !important;\n}\n\n.tripfusion-resume-panel--resize-in:hover {\n width: 217px !important;\n height: 46px !important;\n transition: all 300ms linear;\n cursor: pointer;\n}\n\n.tripfusion-resume-panel--resize-out {\n width: 46px !important;\n height: 46px !important;\n transition: 500ms;\n right: -100px !important;\n}\n\n.slide-in {\n transform: translateX(100%);\n -webkit-transform: translateX(100%);\n animation: slide-in 0.8s forwards !important;\n -webkit-animation: slide-in 0.8s forwards !important;\n z-index: 1000000000000;\n}\n\n.slide-out {\n transform: translateX(100%);\n -webkit-transform: translateX(100%);\n animation: slide-out 1s forwards !important;\n -webkit-animation: slide-out 1s forwards !important;\n z-index: -1000000000000;\n}\n\n@media screen and (max-width: 495px) {\n .slide-in {\n transform: translateY(100%);\n -webkit-transform: translateY(100%);\n animation: slide-up 0.8s forwards !important;\n -webkit-animation: slide-up 0.8s forwards !important;\n z-index: 1000000000000;\n }\n\n .slide-out {\n transform: translateY(100%);\n -webkit-transform: translateY(100%);\n animation: slide-down 0.5s forwards !important;\n -webkit-animation: slide-down 1s forwards !important;\n z-index: -1000000000000;\n }\n}\n\n@keyframes slide-in {\n 100% {\n transform: translateX(0%);\n }\n}\n\n@-webkit-keyframes slide-in {\n 100% {\n -webkit-transform: translateX(0%);\n }\n}\n\n@keyframes slide-up {\n 100% {\n transform: translateY(0%);\n }\n}\n\n@-webkit-keyframes slide-up {\n 100% {\n -webkit-transform: translateY(0%);\n }\n}\n\n@keyframes slide-out {\n 0% {\n transform: translateX(0%);\n }\n\n 100% {\n transform: translateX(100%);\n }\n}\n\n@-webkit-keyframes slide-out {\n 0% {\n -webkit-transform: translateX(0%);\n }\n\n 100% {\n -webkit-transform: translateX(100%);\n }\n}\n\n@keyframes slide-down {\n 0% {\n transform: translateY(0%);\n }\n\n 100% {\n transform: translateY(100%);\n }\n}\n\n@-webkit-keyframes slide-down {\n 0% {\n -webkit-transform: translateY(0%);\n }\n\n 100% {\n -webkit-transform: translateY(100%);\n }\n}\n',"",{version:3,sources:["webpack://./src/styles.css"],names:[],mappings:"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",sourcesContent:['@import url("https://use.typekit.net/sag8ceb.css");\n\n#tripfusion-loader {\n color: white;\n margin-right: -50%;\n position: absolute;\n top: 50%;\n left: 50%;\n font-family: futura-lt-w01-book, futura-lt-w05-book, Arial, Helvetica, sans-serif;\n transform: translate(-50%, -50%);\n}\n\n#tripfusion-loader span {\n font-weight: bold;\n font-size: 1.3rem;\n}\n\n#tripfusion-resume-panel {\n max-width: 250px;\n position: fixed;\n overflow: hidden;\n cursor: pointer;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n padding: 12px 24px;\n box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.25), 0px 4px 4px rgba(0, 0, 0, 0.1);\n right: 30px;\n z-index: 100000000000;\n bottom: 40px;\n border: none;\n transform: translateX(400px);\n border-radius: 16px;\n color: white;\n font-size: 1rem;\n font-family: sweet-sans-pro, sans-serif;\n}\n\n.tripfusion-resume-panel__header {\n display: flex;\n justify-content: space-between;\n gap: 2em;\n align-items: center;\n}\n\n.tripfusion-resume-panel__header svg {\n width: 18px;\n height: 18px;\n fill: white;\n flex-shrink: 0;\n}\n\n.tripfusion-resume-panel__header span,\n.tripfusion-resume-panel__subheader {\n font-weight: 700;\n line-height: 1.2;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.tripfusion-resume-panel__footer {\n font-family: Roboto, Helvetica, Arial, sans-serif;\n font-size: 0.8rem;\n font-weight: 400;\n}\n\n#tripfusion-widget-wrapper {\n background: rgba(0, 0, 0, 0);\n position: fixed;\n top: 0;\n right: 0;\n width: 100%;\n transition: background 0.5s ease-out;\n}\n\n#tripfusion-widget {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0px;\n right: 0px;\n}\n\n#tripfusion-widget-inner-wrapper {\n position: fixed;\n display: flex;\n flex-direction: column;\n min-width: 320px;\n width: 100%;\n height: 100%;\n right: 0px;\n bottom: 0px;\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.2);\n font-family: "Roboto", "Helvetica", "Arial", sans-serif;\n font-weight: 400;\n font-size: 1rem;\n line-height: 1.5;\n letter-spacing: 0.00938em;\n}\n\n@media (min-width: 768px) {\n #tripfusion-widget-inner-wrapper {\n height: calc(100% - 40px);\n right: 20px;\n bottom: 20px;\n width: 500px;\n }\n}\n\n#tripfusion-widget-header {\n height: 60px;\n border-bottom: 1px solid #f1f1f1;\n padding: 0 16px 0 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n color: white;\n}\n\n#tripfusion-widget-iframe {\n height: 100%;\n border: none;\n}\n\n#tripfusion-widget-header-title {\n font-family: sweet-sans-pro, sans-serif;\n line-height: 1.2;\n font-weight: 700;\n font-size: 1rem;\n letter-spacing: 1.5px;\n text-transform: uppercase;\n}\n\n#tripfusion-widget-close-button {\n overflow: hidden;\n position: relative;\n border: none;\n padding: 0;\n width: 2em;\n height: 2em;\n border-radius: 50%;\n background: transparent;\n font: inherit;\n text-indent: 100%;\n cursor: pointer;\n\n &:focus {\n outline: solid 0 transparent;\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n &:hover {\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n &:before,\n &:after {\n position: absolute;\n top: 25%;\n left: calc(50% - 0.0625em);\n width: 0.125em;\n height: 50%;\n border-radius: 0.125em;\n transform: rotate(45deg);\n background: currentcolor;\n color: white;\n content: "";\n }\n\n &:after {\n transform: rotate(-45deg);\n }\n}\n\n.tripfusion-resume-panel--slide-in {\n -webkit-transition: 500ms;\n -moz-transition: 500ms;\n transition: 500ms;\n transform: translateX(0) !important;\n}\n\n.tripfusion-resume-panel--slide-out {\n -webkit-transition: 500ms;\n -moz-transition: 500ms;\n transition: 500ms;\n transform: translateX(400px) !important;\n}\n\n.tripfusion-resume-panel--resize-in {\n width: 46px !important;\n height: 46px !important;\n transition: 500ms;\n right: 30px !important;\n}\n\n.tripfusion-resume-panel--resize-in:hover {\n width: 217px !important;\n height: 46px !important;\n transition: all 300ms linear;\n cursor: pointer;\n}\n\n.tripfusion-resume-panel--resize-out {\n width: 46px !important;\n height: 46px !important;\n transition: 500ms;\n right: -100px !important;\n}\n\n.slide-in {\n transform: translateX(100%);\n -webkit-transform: translateX(100%);\n animation: slide-in 0.8s forwards !important;\n -webkit-animation: slide-in 0.8s forwards !important;\n z-index: 1000000000000;\n}\n\n.slide-out {\n transform: translateX(100%);\n -webkit-transform: translateX(100%);\n animation: slide-out 1s forwards !important;\n -webkit-animation: slide-out 1s forwards !important;\n z-index: -1000000000000;\n}\n\n@media screen and (max-width: 495px) {\n .slide-in {\n transform: translateY(100%);\n -webkit-transform: translateY(100%);\n animation: slide-up 0.8s forwards !important;\n -webkit-animation: slide-up 0.8s forwards !important;\n z-index: 1000000000000;\n }\n\n .slide-out {\n transform: translateY(100%);\n -webkit-transform: translateY(100%);\n animation: slide-down 0.5s forwards !important;\n -webkit-animation: slide-down 1s forwards !important;\n z-index: -1000000000000;\n }\n}\n\n@keyframes slide-in {\n 100% {\n transform: translateX(0%);\n }\n}\n\n@-webkit-keyframes slide-in {\n 100% {\n -webkit-transform: translateX(0%);\n }\n}\n\n@keyframes slide-up {\n 100% {\n transform: translateY(0%);\n }\n}\n\n@-webkit-keyframes slide-up {\n 100% {\n -webkit-transform: translateY(0%);\n }\n}\n\n@keyframes slide-out {\n 0% {\n transform: translateX(0%);\n }\n\n 100% {\n transform: translateX(100%);\n }\n}\n\n@-webkit-keyframes slide-out {\n 0% {\n -webkit-transform: translateX(0%);\n }\n\n 100% {\n -webkit-transform: translateX(100%);\n }\n}\n\n@keyframes slide-down {\n 0% {\n transform: translateY(0%);\n }\n\n 100% {\n transform: translateY(100%);\n }\n}\n\n@-webkit-keyframes slide-down {\n 0% {\n -webkit-transform: translateY(0%);\n }\n\n 100% {\n -webkit-transform: translateY(100%);\n }\n}\n'],sourceRoot:""}]);const s=a},314:n=>{"use strict";n.exports=function(n){var t=[];return t.toString=function(){return this.map((function(t){var e="",r=void 0!==t[5];return t[4]&&(e+="@supports (".concat(t[4],") {")),t[2]&&(e+="@media ".concat(t[2]," {")),r&&(e+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),e+=n(t),r&&(e+="}"),t[2]&&(e+="}"),t[4]&&(e+="}"),e})).join("")},t.i=function(n,e,r,i,o){"string"==typeof n&&(n=[[null,n,void 0]]);var a={};if(r)for(var s=0;s<this.length;s++){var u=this[s][0];null!=u&&(a[u]=!0)}for(var c=0;c<n.length;c++){var l=[].concat(n[c]);r&&a[l[0]]||(void 0!==o&&(void 0===l[5]||(l[1]="@layer".concat(l[5].length>0?" ".concat(l[5]):""," {").concat(l[1],"}")),l[5]=o),e&&(l[2]?(l[1]="@media ".concat(l[2]," {").concat(l[1],"}"),l[2]=e):l[2]=e),i&&(l[4]?(l[1]="@supports (".concat(l[4],") {").concat(l[1],"}"),l[4]=i):l[4]="".concat(i)),t.push(l))}},t}},354:n=>{"use strict";n.exports=function(n){var t=n[1],e=n[3];if(!e)return t;if("function"==typeof btoa){var r=btoa(unescape(encodeURIComponent(JSON.stringify(e)))),i="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(r),o="/*# ".concat(i," */");return[t].concat([o]).join("\n")}return[t].join("\n")}},353:function(n){n.exports=function(){"use strict";var n=6e4,t=36e5,e="millisecond",r="second",i="minute",o="hour",a="day",s="week",u="month",c="quarter",l="year",d="date",A="Invalid Date",f=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,p=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,m={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(n){var t=["th","st","nd","rd"],e=n%100;return"["+n+(t[(e-20)%10]||t[e]||t[0])+"]"}},h=function(n,t,e){var r=String(n);return!r||r.length>=t?n:""+Array(t+1-r.length).join(e)+n},g={s:h,z:function(n){var t=-n.utcOffset(),e=Math.abs(t),r=Math.floor(e/60),i=e%60;return(t<=0?"+":"-")+h(r,2,"0")+":"+h(i,2,"0")},m:function n(t,e){if(t.date()<e.date())return-n(e,t);var r=12*(e.year()-t.year())+(e.month()-t.month()),i=t.clone().add(r,u),o=e-i<0,a=t.clone().add(r+(o?-1:1),u);return+(-(r+(e-i)/(o?i-a:a-i))||0)},a:function(n){return n<0?Math.ceil(n)||0:Math.floor(n)},p:function(n){return{M:u,y:l,w:s,d:a,D:d,h:o,m:i,s:r,ms:e,Q:c}[n]||String(n||"").toLowerCase().replace(/s$/,"")},u:function(n){return void 0===n}},C="en",I={};I[C]=m;var b="$isDayjsObject",y=function(n){return n instanceof k||!(!n||!n[b])},w=function n(t,e,r){var i;if(!t)return C;if("string"==typeof t){var o=t.toLowerCase();I[o]&&(i=o),e&&(I[o]=e,i=o);var a=t.split("-");if(!i&&a.length>1)return n(a[0])}else{var s=t.name;I[s]=t,i=s}return!r&&i&&(C=i),i||!r&&C},v=function(n,t){if(y(n))return n.clone();var e="object"==typeof t?t:{};return e.date=n,e.args=arguments,new k(e)},B=g;B.l=w,B.i=y,B.w=function(n,t){return v(n,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var k=function(){function m(n){this.$L=w(n.locale,null,!0),this.parse(n),this.$x=this.$x||n.x||{},this[b]=!0}var h=m.prototype;return h.parse=function(n){this.$d=function(n){var t=n.date,e=n.utc;if(null===t)return new Date(NaN);if(B.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(f);if(r){var i=r[2]-1||0,o=(r[7]||"0").substring(0,3);return e?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)}}return new Date(t)}(n),this.init()},h.init=function(){var n=this.$d;this.$y=n.getFullYear(),this.$M=n.getMonth(),this.$D=n.getDate(),this.$W=n.getDay(),this.$H=n.getHours(),this.$m=n.getMinutes(),this.$s=n.getSeconds(),this.$ms=n.getMilliseconds()},h.$utils=function(){return B},h.isValid=function(){return!(this.$d.toString()===A)},h.isSame=function(n,t){var e=v(n);return this.startOf(t)<=e&&e<=this.endOf(t)},h.isAfter=function(n,t){return v(n)<this.startOf(t)},h.isBefore=function(n,t){return this.endOf(t)<v(n)},h.$g=function(n,t,e){return B.u(n)?this[t]:this.set(e,n)},h.unix=function(){return Math.floor(this.valueOf()/1e3)},h.valueOf=function(){return this.$d.getTime()},h.startOf=function(n,t){var e=this,c=!!B.u(t)||t,A=B.p(n),f=function(n,t){var r=B.w(e.$u?Date.UTC(e.$y,t,n):new Date(e.$y,t,n),e);return c?r:r.endOf(a)},p=function(n,t){return B.w(e.toDate()[n].apply(e.toDate("s"),(c?[0,0,0,0]:[23,59,59,999]).slice(t)),e)},m=this.$W,h=this.$M,g=this.$D,C="set"+(this.$u?"UTC":"");switch(A){case l:return c?f(1,0):f(31,11);case u:return c?f(1,h):f(0,h+1);case s:var I=this.$locale().weekStart||0,b=(m<I?m+7:m)-I;return f(c?g-b:g+(6-b),h);case a:case d:return p(C+"Hours",0);case o:return p(C+"Minutes",1);case i:return p(C+"Seconds",2);case r:return p(C+"Milliseconds",3);default:return this.clone()}},h.endOf=function(n){return this.startOf(n,!1)},h.$set=function(n,t){var s,c=B.p(n),A="set"+(this.$u?"UTC":""),f=(s={},s[a]=A+"Date",s[d]=A+"Date",s[u]=A+"Month",s[l]=A+"FullYear",s[o]=A+"Hours",s[i]=A+"Minutes",s[r]=A+"Seconds",s[e]=A+"Milliseconds",s)[c],p=c===a?this.$D+(t-this.$W):t;if(c===u||c===l){var m=this.clone().set(d,1);m.$d[f](p),m.init(),this.$d=m.set(d,Math.min(this.$D,m.daysInMonth())).$d}else f&&this.$d[f](p);return this.init(),this},h.set=function(n,t){return this.clone().$set(n,t)},h.get=function(n){return this[B.p(n)]()},h.add=function(e,c){var d,A=this;e=Number(e);var f=B.p(c),p=function(n){var t=v(A);return B.w(t.date(t.date()+Math.round(n*e)),A)};if(f===u)return this.set(u,this.$M+e);if(f===l)return this.set(l,this.$y+e);if(f===a)return p(1);if(f===s)return p(7);var m=(d={},d[i]=n,d[o]=t,d[r]=1e3,d)[f]||1,h=this.$d.getTime()+e*m;return B.w(h,this)},h.subtract=function(n,t){return this.add(-1*n,t)},h.format=function(n){var t=this,e=this.$locale();if(!this.isValid())return e.invalidDate||A;var r=n||"YYYY-MM-DDTHH:mm:ssZ",i=B.z(this),o=this.$H,a=this.$m,s=this.$M,u=e.weekdays,c=e.months,l=e.meridiem,d=function(n,e,i,o){return n&&(n[e]||n(t,r))||i[e].slice(0,o)},f=function(n){return B.s(o%12||12,n,"0")},m=l||function(n,t,e){var r=n<12?"AM":"PM";return e?r.toLowerCase():r};return r.replace(p,(function(n,r){return r||function(n){switch(n){case"YY":return String(t.$y).slice(-2);case"YYYY":return B.s(t.$y,4,"0");case"M":return s+1;case"MM":return B.s(s+1,2,"0");case"MMM":return d(e.monthsShort,s,c,3);case"MMMM":return d(c,s);case"D":return t.$D;case"DD":return B.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return d(e.weekdaysMin,t.$W,u,2);case"ddd":return d(e.weekdaysShort,t.$W,u,3);case"dddd":return u[t.$W];case"H":return String(o);case"HH":return B.s(o,2,"0");case"h":return f(1);case"hh":return f(2);case"a":return m(o,a,!0);case"A":return m(o,a,!1);case"m":return String(a);case"mm":return B.s(a,2,"0");case"s":return String(t.$s);case"ss":return B.s(t.$s,2,"0");case"SSS":return B.s(t.$ms,3,"0");case"Z":return i}return null}(n)||i.replace(":","")}))},h.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},h.diff=function(e,d,A){var f,p=this,m=B.p(d),h=v(e),g=(h.utcOffset()-this.utcOffset())*n,C=this-h,I=function(){return B.m(p,h)};switch(m){case l:f=I()/12;break;case u:f=I();break;case c:f=I()/3;break;case s:f=(C-g)/6048e5;break;case a:f=(C-g)/864e5;break;case o:f=C/t;break;case i:f=C/n;break;case r:f=C/1e3;break;default:f=C}return A?f:B.a(f)},h.daysInMonth=function(){return this.endOf(u).$D},h.$locale=function(){return I[this.$L]},h.locale=function(n,t){if(!n)return this.$L;var e=this.clone(),r=w(n,t,!0);return r&&(e.$L=r),e},h.clone=function(){return B.w(this.$d,this)},h.toDate=function(){return new Date(this.valueOf())},h.toJSON=function(){return this.isValid()?this.toISOString():null},h.toISOString=function(){return this.$d.toISOString()},h.toString=function(){return this.$d.toUTCString()},m}(),x=k.prototype;return v.prototype=x,[["$ms",e],["$s",r],["$m",i],["$H",o],["$W",a],["$M",u],["$y",l],["$D",d]].forEach((function(n){x[n[1]]=function(t){return this.$g(t,n[0],n[1])}})),v.extend=function(n,t){return n.$i||(n(t,k,v),n.$i=!0),v},v.locale=w,v.isDayjs=y,v.unix=function(n){return v(1e3*n)},v.en=I[C],v.Ls=I,v.p={},v}()},72:n=>{"use strict";var t=[];function e(n){for(var e=-1,r=0;r<t.length;r++)if(t[r].identifier===n){e=r;break}return e}function r(n,r){for(var o={},a=[],s=0;s<n.length;s++){var u=n[s],c=r.base?u[0]+r.base:u[0],l=o[c]||0,d="".concat(c," ").concat(l);o[c]=l+1;var A=e(d),f={css:u[1],media:u[2],sourceMap:u[3],supports:u[4],layer:u[5]};if(-1!==A)t[A].references++,t[A].updater(f);else{var p=i(f,r);r.byIndex=s,t.splice(s,0,{identifier:d,updater:p,references:1})}a.push(d)}return a}function i(n,t){var e=t.domAPI(t);return e.update(n),function(t){if(t){if(t.css===n.css&&t.media===n.media&&t.sourceMap===n.sourceMap&&t.supports===n.supports&&t.layer===n.layer)return;e.update(n=t)}else e.remove()}}n.exports=function(n,i){var o=r(n=n||[],i=i||{});return function(n){n=n||[];for(var a=0;a<o.length;a++){var s=e(o[a]);t[s].references--}for(var u=r(n,i),c=0;c<o.length;c++){var l=e(o[c]);0===t[l].references&&(t[l].updater(),t.splice(l,1))}o=u}}},659:n=>{"use strict";var t={};n.exports=function(n,e){var r=function(n){if(void 0===t[n]){var e=document.querySelector(n);if(window.HTMLIFrameElement&&e instanceof window.HTMLIFrameElement)try{e=e.contentDocument.head}catch(n){e=null}t[n]=e}return t[n]}(n);if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(e)}},540:n=>{"use strict";n.exports=function(n){var t=document.createElement("style");return n.setAttributes(t,n.attributes),n.insert(t,n.options),t}},56:(n,t,e)=>{"use strict";n.exports=function(n){var t=e.nc;t&&n.setAttribute("nonce",t)}},825:n=>{"use strict";n.exports=function(n){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=n.insertStyleElement(n);return{update:function(e){!function(n,t,e){var r="";e.supports&&(r+="@supports (".concat(e.supports,") {")),e.media&&(r+="@media ".concat(e.media," {"));var i=void 0!==e.layer;i&&(r+="@layer".concat(e.layer.length>0?" ".concat(e.layer):""," {")),r+=e.css,i&&(r+="}"),e.media&&(r+="}"),e.supports&&(r+="}");var o=e.sourceMap;o&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),t.styleTagTransform(r,n,t.options)}(t,n,e)},remove:function(){!function(n){if(null===n.parentNode)return!1;n.parentNode.removeChild(n)}(t)}}}},113:n=>{"use strict";n.exports=function(n,t){if(t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}}},t={};function e(r){var i=t[r];if(void 0!==i)return i.exports;var o=t[r]={id:r,exports:{}};return n[r].call(o.exports,o,o.exports,e),o.exports}e.n=n=>{var t=n&&n.__esModule?()=>n.default:()=>n;return e.d(t,{a:t}),t},e.d=(n,t)=>{for(var r in t)e.o(t,r)&&!e.o(n,r)&&Object.defineProperty(n,r,{enumerable:!0,get:t[r]})},e.o=(n,t)=>Object.prototype.hasOwnProperty.call(n,t),e.nc=void 0,(()=>{"use strict";var n="demo"===process.env.TRIPFUSION_APP_ENVIRONMENT?"https://develop.bookings.vacayou.com/":"https://bookings.vacayou.com/",t="tripfusion-widget",r="tripfusion-widget-inner-wrapper",i="tripfusion-widget-header",o="tripfusion-widget-wrapper",a="tripfusion-widget-iframe",s="tripfusion-resume-panel",u="tripfusion-loader",c="normal",l="append";function d(n,t){let e;try{e=n()}catch(n){return}return{getItem:n=>{var r;const i=n=>null===n?null:JSON.parse(n,null==t?void 0:t.reviver),o=null!=(r=e.getItem(n))?r:null;return o instanceof Promise?o.then(i):i(o)},setItem:(n,r)=>e.setItem(n,JSON.stringify(r,null==t?void 0:t.replacer)),removeItem:n=>e.removeItem(n)}}const A=n=>t=>{try{const e=n(t);return e instanceof Promise?e:{then:n=>A(n)(e),catch(n){return this}}}catch(n){return{then(n){return this},catch:t=>A(t)(n)}}},f=(n,t)=>(e,r,i)=>{let o={storage:d((()=>localStorage)),partialize:n=>n,version:0,merge:(n,t)=>({...t,...n}),...t},a=!1;const s=new Set,u=new Set;let c=o.storage;if(!c)return n(((...n)=>{console.warn(`[zustand persist middleware] Unable to update item '${o.name}', the given storage is currently unavailable.`),e(...n)}),r,i);const l=()=>{const n=o.partialize({...r()});return c.setItem(o.name,{state:n,version:o.version})},f=i.setState;i.setState=(n,t)=>{f(n,t),l()};const p=n(((...n)=>{e(...n),l()}),r,i);let m;i.getInitialState=()=>p;const h=()=>{var n,t;if(!c)return;a=!1,s.forEach((n=>{var t;return n(null!=(t=r())?t:p)}));const i=(null==(t=o.onRehydrateStorage)?void 0:t.call(o,null!=(n=r())?n:p))||void 0;return A(c.getItem.bind(c))(o.name).then((n=>{if(n){if("number"!=typeof n.version||n.version===o.version)return[!1,n.state];if(o.migrate)return[!0,o.migrate(n.state,n.version)];console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}return[!1,void 0]})).then((n=>{var t;const[i,a]=n;if(m=o.merge(a,null!=(t=r())?t:p),e(m,!0),i)return l()})).then((()=>{null==i||i(m,void 0),m=r(),a=!0,u.forEach((n=>n(m)))})).catch((n=>{null==i||i(void 0,n)}))};return i.persist={setOptions:n=>{o={...o,...n},n.storage&&(c=n.storage)},clearStorage:()=>{null==c||c.removeItem(o.name)},getOptions:()=>o,rehydrate:()=>h(),hasHydrated:()=>a,onHydrate:n=>(s.add(n),()=>{s.delete(n)}),onFinishHydration:n=>(u.add(n),()=>{u.delete(n)})},o.skipHydration||h(),m||p},p=n=>{let t;const e=new Set,r=(n,r)=>{const i="function"==typeof n?n(t):n;if(!Object.is(i,t)){const n=t;t=(null!=r?r:"object"!=typeof i||null===i)?i:Object.assign({},t,i),e.forEach((e=>e(t,n)))}},i=()=>t,o={setState:r,getState:i,getInitialState:()=>a,subscribe:n=>(e.add(n),()=>e.delete(n))},a=t=n(r,i,o);return o},m=n=>n?p(n):p;var h=function(){return h=Object.assign||function(n){for(var t,e=1,r=arguments.length;e<r;e++)for(var i in t=arguments[e])Object.prototype.hasOwnProperty.call(t,i)&&(n[i]=t[i]);return n},h.apply(this,arguments)},g={isOpen:!1,isResumePanelVisible:!1,isReady:!1,isBookingCompleted:!1,backgroundColor:"rgb(35, 76, 121)",primaryGuestName:null,checkInDate:null,checkOutDate:null,cart:{}},C=m()(f((function(n){return h(h({},g),{showWidget:function(){return n({isOpen:!0})},hideWidget:function(){return n({isOpen:!1})},showResumePanel:function(){return n({isResumePanelVisible:!0})},hideResumePanel:function(){return n({isResumePanelVisible:!1})},setIsReady:function(t){return n({isReady:t})},setIsBookingCompleted:function(t){return n({isBookingCompleted:t})},setBackgroundColor:function(t){return n(t?{backgroundColor:t}:{backgroundColor:g.backgroundColor})},setPrimaryGuestName:function(t){return n({primaryGuestName:t})},setCart:function(t){return n({cart:t})},setDates:function(t,e){return n({checkInDate:t,checkOutDate:e})},reset:function(){return n(g)}})}),{name:"widgetStore",storage:d((function(){return sessionStorage})),partialize:function(n){return Object.fromEntries(Object.entries(n).filter((function(n){var t=n[0];return!["cart","isReady"].includes(t)})))},onRehydrateStorage:function(){return function(n){(null==n?void 0:n.isBookingCompleted)&&n.reset()}}})),I=function(){return I=Object.assign||function(n){for(var t,e=1,r=arguments.length;e<r;e++)for(var i in t=arguments[e])Object.prototype.hasOwnProperty.call(t,i)&&(n[i]=t[i]);return n},I.apply(this,arguments)},b=function(){var n,t=document.getElementById("tripfusion-sdk").getAttribute("src"),e=y(new URLSearchParams(t.substring(t.indexOf("?"))));return{client:null!==(n=e.client)&&void 0!==n?n:null,propertyId:e.propertyId?+e.propertyId:null}};function y(n){var t={tripfusion:"tripfusion",client:"client",propertyid:"propertyId",mode:"mode",offerid:"offerId",bookingid:"bookingId",checkin:"checkIn",checkout:"checkOut",adults:"adults",children:"children"};return Array.from(n.entries()).reduce((function(n,e){var r,i=e[0],o=e[1];return I(I({},n),((r={})[t[i.toLowerCase()]]=o,r))}),{})}function w(t){return e=this,r=arguments,o=function(t,e){var r,i,o;return void 0===e&&(e="error"),function(n,t){var e,r,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return a.next=s(0),a.throw=s(1),a.return=s(2),"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(s){return function(u){return function(s){if(e)throw new TypeError("Generator is already executing.");for(;a&&(a=0,s[0]&&(o=0)),o;)try{if(e=1,r&&(i=2&s[0]?r.return:s[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,s[1])).done)return i;switch(r=0,i&&(s=[2&s[0],i.value]),s[0]){case 0:case 1:i=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,r=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]<i[3])){o.label=s[1];break}if(6===s[0]&&o.label<i[1]){o.label=i[1],i=s;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(s);break}i[2]&&o.ops.pop(),o.trys.pop();continue}s=t.call(n,o)}catch(n){s=[6,n],r=0}finally{e=i=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,u])}}}(this,(function(a){return r="".concat(n,"api/vacayou/log"),i={message:t,page:window.location.href},o={"content-type":"application/json"},[2,fetch(r,{method:"POST",body:JSON.stringify({type:e,payload:i}),headers:o}).then((function(n){return n.json()})).catch((function(n){console.log("Tripfusion: failed to log message: ".concat(n))}))]}))},new((i=void 0)||(i=Promise))((function(n,t){function a(n){try{u(o.next(n))}catch(n){t(n)}}function s(n){try{u(o.throw(n))}catch(n){t(n)}}function u(t){var e;t.done?n(t.value):(e=t.value,e instanceof i?e:new i((function(n){n(e)}))).then(a,s)}u((o=o.apply(e,r||[])).next())}));var e,r,i,o}function v(){try{var n=document.getElementById(t),e=document.getElementById(o);n&&e&&(document.body.style.overflow="initial",n.setAttribute("class","slide-out"),e.style.background="rgba(0, 0, 0, 0)",n.style.display="none",e.style.zIndex="".concat(-1e11))}catch(n){w("Widget: Error closing widget: ".concat(n)),console.error("Tripfusion: Error closing widget: ",n)}}function B(t){var e,i=t.client,o=t.propertyId,s=t.mode,u=t.bookingId,c=function(n,t){var e={};for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&t.indexOf(r)<0&&(e[r]=n[r]);if(null!=n&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(n);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(n,r[i])&&(e[r[i]]=n[r[i]])}return e}(t,["client","propertyId","mode","bookingId"]);try{null===(e=document.getElementById(a))||void 0===e||e.remove();var d=document.getElementById(r);if(d){var A=document.createElement("iframe"),f="".concat(n).concat(i,"/").concat(o);s===l&&u&&(f+="/booking/".concat(u,"/append"));var p=Object.entries(c).filter((function(n){return n[0],!!n[1]})).map((function(n){var t=n[0],e=n[1];return"".concat(t,"=").concat(e).toLowerCase()})).join("&");p&&(f+="?".concat(p)),A.setAttribute("src",f),A.id=a,d.appendChild(A)}}catch(n){w("Widget: Error injecting iframe: ".concat(n)),console.error("Tripfusion: Error injecting iframe: ",n)}}function k(){document.body.style.overflow="hidden"}var x=function(){return x=Object.assign||function(n){for(var t,e=1,r=arguments.length;e<r;e++)for(var i in t=arguments[e])Object.prototype.hasOwnProperty.call(t,i)&&(n[i]=t[i]);return n},x.apply(this,arguments)},S={client:null,propertyId:null,mode:c,bookingId:null,checkIn:null,checkOut:null,adults:null,children:null,offerId:null},E=m()(f((function(n){return x(x({},S),{replace:function(t){return n(x(x({},S),t))}})}),{name:"globalStore",storage:d((function(){return sessionStorage}))})),O=e(353),$=e.n(O);const D=n=>Symbol.iterator in n;var M=e(72),Y=e.n(M),j=e(825),_=e.n(j),Q=e(659),z=e.n(Q),T=e(56),W=e.n(T),X=e(540),R=e.n(X),P=e(113),L=e.n(P),N=e(365),H={};function U(n){var t;try{var e=null!==(t=null!=n?n:E.getState())&&void 0!==t?t:b();if(!e.client||!e.propertyId)throw new Error("Client and propertyId are required to book");var r=C.getState(),i=r.hideResumePanel,o=r.reset;i(),function(n,t){if(Object.is(n,t))return!0;if("object"!=typeof n||null===n||"object"!=typeof t||null===t)return!1;if(D(n)&&D(t)){const e=n[Symbol.iterator](),r=t[Symbol.iterator]();let i=e.next(),o=r.next();if(Array.isArray(i.value)&&Array.isArray(o.value)&&2===i.value.length&&2===o.value.length)return((n,t)=>{const e=n instanceof Map?n:new Map(n),r=t instanceof Map?t:new Map(t);if(e.size!==r.size)return!1;for(const[n,t]of e)if(!Object.is(t,r.get(n)))return!1;return!0})(n,t);for(;!i.done&&!o.done;){if(!Object.is(i.value,o.value))return!1;i=e.next(),o=r.next()}return!!i.done&&!!o.done}const e=Object.keys(n);if(e.length!==Object.keys(t).length)return!1;for(const r of e)if(!Object.hasOwn(t,r)||!Object.is(n[r],t[r]))return!1;return!0}(E.getState(),e)||(o(),E.getState().replace(e)),C.getState().showWidget()}catch(n){w("Widget: failed to book: ".concat(n)),console.error("Tripfusion: failed to book: ".concat(n))}}H.styleTagTransform=L(),H.setAttributes=W(),H.insert=z().bind(null,"head"),H.domAPI=_(),H.insertStyleElement=R(),Y()(N.A,H),N.A&&N.A.locals&&N.A.locals,E.subscribe((function(n){n.client&&n.propertyId&&B(n)})),C.subscribe((function(n){var e,r,c;if(n.isResumePanelVisible){var l=n.primaryGuestName?"Complete your booking, ".concat(n.primaryGuestName):"Complete your booking",d="",A=[];if(n.isBookingCompleted&&(l="Booking completed!"),n.checkInDate&&n.checkOutDate&&A.push("".concat($()(n.checkInDate).format("MMM DD")," - ").concat($()(n.checkOutDate).format("MMM DD"))),n.cart.total){if((null===(e=n.cart)||void 0===e?void 0:e.rooms)&&n.cart.rooms.length>0){var f=n.cart.rooms.length,p=n.cart.rooms.reduce((function(n,t){return n+t.passengers.adults+t.passengers.children.length}),0);d="".concat(f," room").concat(f>1?"s":""," for "),A.push("".concat(p," guest").concat(p>1?"s":""))}d+=null!==(r=n.cart.total)?new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"}).format(r/100):""}!function(n){var t=n.headerText,e=n.subheaderText,r=n.footerText;document.getElementById(s).innerHTML='\n <div>\n <div class="tripfusion-resume-panel__header">\n <span>'.concat(t,'</span>\n <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 330 330" xml:space="preserve">\n <path id="XMLID_222_" d="M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z"/>\n </svg>\n </div>\n ').concat(e&&'<span class="tripfusion-resume-panel__subheader">'.concat(e,"</span>"),"\n </div>\n ").concat(r&&'<span class="tripfusion-resume-panel__footer">'.concat(r,"</span>"),"\n ")}({headerText:l,subheaderText:d,footerText:A.join(", ")})}n.backgroundColor&&function(n){var t=n.backgroundColor,e=document.getElementById(s),r=document.getElementById(i);e.style.backgroundColor=t,r.style.backgroundColor=t}({backgroundColor:n.backgroundColor}),n.isReady?(function(){var n;null===(n=document.getElementById(u))||void 0===n||n.remove()}(),n.isOpen?function(){try{var n=document.getElementById(t),e=document.getElementById(o);Object.assign(e.style,{zIndex:0xe8d4a5100b,height:"100%",background:"rgba(0, 0, 0, .5)"}),k(),n.style.display="block",n.setAttribute("class","slide-in"),setTimeout((function(){var n=document.getElementById(a);null==n||n.focus()}),250)}catch(n){w("Widget: Error openning widget: ".concat(n)),console.error("Tripfusion: Error openning widget: ",n)}}():v(),n.isResumePanelVisible?((c=document.getElementById(s)).setAttribute("class","tripfusion-resume-panel--slide-in"),c.focus()):document.getElementById(s).setAttribute("class","tripfusion-resume-panel--slide-out")):function(){var n=document.getElementById(o);if(n){var t=document.createElement("div");t.id=u,t.innerHTML="Loading <span>TripFusion</span>",n.appendChild(t),n.style.zIndex="".concat(1e11),n.style.height="100%",n.style.background="rgba(0, 0, 0, .74)",k()}}()})),function(){try{var n=setInterval((function(){if("complete"===document.readyState){if(function(){try{var n=C.getState(),e=n.showWidget,a=n.hideWidget,u=n.showResumePanel,c=n.hideResumePanel,l=document.createElement("div"),d=document.createElement("div"),A=document.createElement("div"),f=document.createElement("div"),p=document.createElement("span"),m=document.createElement("button"),h=document.createElement("div");h.id=s,null==h||h.addEventListener("click",(function(){e(),c()})),l.id=t,l.style.display="none",d.id=o,l.addEventListener("click",(function(n){this===n.target&&(a(),u())})),A.id=r,f.id=i,m.id="tripfusion-widget-close-button",m.addEventListener("click",(function(){a(),u()})),p.id="tripfusion-widget-header-title",p.innerHTML="Booking",d.appendChild(l),l.appendChild(A),A.appendChild(f),f.appendChild(p),f.appendChild(m),document.body.appendChild(d),document.body.appendChild(h)}catch(n){w("Widget: Error preparing DOM: ".concat(n)),console.error("Tripfusion: Error preparing DOM: ",n)}}(),E.getState().client&&E.getState().propertyId)B(E.getState());else{var e=b(),a=e.client,u=e.propertyId;E.getState().replace({client:a,propertyId:u})}!function(){function n(n){var t;try{var e=n.target,r=e.parentNode;"A"!==e.tagName&&"A"===(null==r?void 0:r.tagName)&&(e.href=null==r?void 0:r.href);var i=e.href||"";if(!i.includes("?"))return;var o=y(new URLSearchParams(i.substring(i.indexOf("?"))));if("true"===o.tripfusion){n.preventDefault();var a=b(),s=a.client,u=a.propertyId;U({client:null!==(t=o.client)&&void 0!==t?t:s,propertyId:o.propertyId?+o.propertyId:u,mode:o.mode===l?l:c,bookingId:(null==o?void 0:o.bookingId)&&(null==o?void 0:o.mode)===l?+o.bookingId:null,offerId:o.offerId?+o.offerId:void 0,checkIn:o.checkIn,checkOut:o.checkOut,adults:o.adults?+o.adults:void 0,children:o.children?o.children.split(",").map((function(n){return+n})):void 0})}}catch(n){w("Widget: Error in link click handler: ".concat(n)),console.error("Tripfusion: Error in link click handler: ",n)}}document.querySelectorAll("a").forEach((function(t){t.addEventListener("click",n)}))}(),clearInterval(n)}}),100);!function(){function n(){setTimeout((function(){var n,t=y(new URLSearchParams(window.location.search));"true"===t.tripfusion&&(E.getState().client||t.client)&&(E.getState().propertyId||t.propertyId)&&U({client:null!==(n=t.client)&&void 0!==n?n:E.getState().client,propertyId:t.propertyId?+t.propertyId:E.getState().propertyId,mode:t.mode===l?l:c,bookingId:(null==t?void 0:t.bookingId)&&(null==t?void 0:t.mode)===l?+t.bookingId:null,offerId:t.offerId?+t.offerId:void 0,checkIn:t.checkIn,checkOut:t.checkOut,adults:t.adults?+t.adults:void 0,children:t.children?t.children.split(",").map((function(n){return+n})):void 0})}),500)}"complete"===document.readyState?n():window.addEventListener("load",n)}(),Object.assign(window,{book:U,closeWidget:v}),window.onmessage=function(n){var t=n.data;switch(t.type){case"tripfusion-widget-ready":C.getState().setIsReady(!0);break;case"tripfusion-booking-completed":C.getState().setIsBookingCompleted(!0);break;case"tripfusion-set-client-theme":var e=(r=t.data).primary;e&&C.getState().setBackgroundColor(e);break;case"tripfusion-set-guest-name":var r=t.data;C.getState().setPrimaryGuestName(r.name);break;case"tripfusion-set-dates":(r=t.data).checkIn&&r.checkOut&&C.getState().setDates(r.checkIn,r.checkOut);break;case"tripfusion-set-cart":r=t.data,C.getState().setCart(r.cart)}}}catch(n){w("Widget: failed to init Tripfusion JS SDK: ".concat(n)),console.error("Tripfusion: failed to init SDK: ".concat(n))}}()})()})();
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0FBRSxNQUFPbkMsR0FDTCtFLEVBQU8sb0RBQTZDL0UsSUFDcERoQixRQUFRZ0IsTUFBTSwwQ0FBbUNBLEdBQ3JELENBQ0osQ0FFQW1NLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL3NyYy9zdHlsZXMuY3NzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL2RheWpzL2RheWpzLm1pbi5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrL3dlYnBhY2svcnVudGltZS9ub25jZSIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL3NyYy9jb25zdC50cyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy96dXN0YW5kL2VzbS9taWRkbGV3YXJlLm1qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy96dXN0YW5kL2VzbS92YW5pbGxhLm1qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL3NyYy9zdG9yZS93aWRnZXQuc3RvcmUudHMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9zcmMvdXRpbHMudHMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9zcmMvZG9tLnRzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL3N0b3JlL2dsb2JhbC5zdG9yZS50cyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy96dXN0YW5kL2VzbS92YW5pbGxhL3NoYWxsb3cubWpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL3N0eWxlcy5jc3M/NDRiMiIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJAaW1wb3J0IHVybChodHRwczovL3VzZS50eXBla2l0Lm5ldC9zYWc4Y2ViLmNzcyk7XCJdKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBgI3RyaXBmdXNpb24tbG9hZGVyIHtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNTAlO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgZm9udC1mYW1pbHk6IGZ1dHVyYS1sdC13MDEtYm9vaywgZnV0dXJhLWx0LXcwNS1ib29rLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xufVxuXG4jdHJpcGZ1c2lvbi1sb2FkZXIgc3BhbiB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgZm9udC1zaXplOiAxLjNyZW07XG59XG5cbiN0cmlwZnVzaW9uLXJlc3VtZS1wYW5lbCB7XG4gICAgbWF4LXdpZHRoOiAyNTBweDtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogMC41cmVtO1xuICAgIHBhZGRpbmc6IDEycHggMjRweDtcbiAgICBib3gtc2hhZG93OiAwcHggMHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMjUpLCAwcHggNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgcmlnaHQ6IDMwcHg7XG4gICAgei1pbmRleDogMTAwMDAwMDAwMDAwO1xuICAgIGJvdHRvbTogNDBweDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDQwMHB4KTtcbiAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgZm9udC1mYW1pbHk6IHN3ZWV0LXNhbnMtcHJvLCBzYW5zLXNlcmlmO1xufVxuXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX2hlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZ2FwOiAyZW07XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsX19oZWFkZXIgc3ZnIHtcbiAgICB3aWR0aDogMThweDtcbiAgICBoZWlnaHQ6IDE4cHg7XG4gICAgZmlsbDogd2hpdGU7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbF9faGVhZGVyIHNwYW4sXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX3N1YmhlYWRlciB7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbF9fZm9vdGVyIHtcbiAgICBmb250LWZhbWlseTogUm9ib3RvLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG59XG5cbiN0cmlwZnVzaW9uLXdpZGdldC13cmFwcGVyIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDApO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjVzIGVhc2Utb3V0O1xufVxuXG4jdHJpcGZ1c2lvbi13aWRnZXQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgdG9wOiAwcHg7XG4gICAgcmlnaHQ6IDBweDtcbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0LWlubmVyLXdyYXBwZXIge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgbWluLXdpZHRoOiAzMjBweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcmlnaHQ6IDBweDtcbiAgICBib3R0b206IDBweDtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYm94LXNoYWRvdzogMCAycHggMTBweCAwIHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgICBmb250LWZhbWlseTogXCJSb2JvdG9cIiwgXCJIZWx2ZXRpY2FcIiwgXCJBcmlhbFwiLCBzYW5zLXNlcmlmO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDA5MzhlbTtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgI3RyaXBmdXNpb24td2lkZ2V0LWlubmVyLXdyYXBwZXIge1xuICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDQwcHgpO1xuICAgICAgICByaWdodDogMjBweDtcbiAgICAgICAgYm90dG9tOiAyMHB4O1xuICAgICAgICB3aWR0aDogNTAwcHg7XG4gICAgfVxufVxuXG4jdHJpcGZ1c2lvbi13aWRnZXQtaGVhZGVyIHtcbiAgICBoZWlnaHQ6IDYwcHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMWYxZjE7XG4gICAgcGFkZGluZzogMCAxNnB4IDAgMTZweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGNvbG9yOiB3aGl0ZTtcbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0LWlmcmFtZSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJvcmRlcjogbm9uZTtcbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0LWhlYWRlci10aXRsZSB7XG4gICAgZm9udC1mYW1pbHk6IHN3ZWV0LXNhbnMtcHJvLCBzYW5zLXNlcmlmO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbGV0dGVyLXNwYWNpbmc6IDEuNXB4O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbiN0cmlwZnVzaW9uLXdpZGdldC1jbG9zZS1idXR0b24ge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiAyZW07XG4gICAgaGVpZ2h0OiAyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgdGV4dC1pbmRlbnQ6IDEwMCU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IHNvbGlkIDAgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG4gICAgfVxuXG4gICAgJjpiZWZvcmUsXG4gICAgJjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAyNSU7XG4gICAgICAgIGxlZnQ6IGNhbGMoNTAlIC0gMC4wNjI1ZW0pO1xuICAgICAgICB3aWR0aDogMC4xMjVlbTtcbiAgICAgICAgaGVpZ2h0OiA1MCU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMTI1ZW07XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcbiAgICAgICAgYmFja2dyb3VuZDogY3VycmVudGNvbG9yO1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgfVxuXG4gICAgJjphZnRlciB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XG4gICAgfVxufVxuXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWwtLXNsaWRlLWluIHtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IDUwMG1zO1xuICAgIC1tb3otdHJhbnNpdGlvbjogNTAwbXM7XG4gICAgdHJhbnNpdGlvbjogNTAwbXM7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApICFpbXBvcnRhbnQ7XG59XG5cbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbC0tc2xpZGUtb3V0IHtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IDUwMG1zO1xuICAgIC1tb3otdHJhbnNpdGlvbjogNTAwbXM7XG4gICAgdHJhbnNpdGlvbjogNTAwbXM7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDQwMHB4KSAhaW1wb3J0YW50O1xufVxuXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWwtLXJlc2l6ZS1pbiB7XG4gICAgd2lkdGg6IDQ2cHggIWltcG9ydGFudDtcbiAgICBoZWlnaHQ6IDQ2cHggIWltcG9ydGFudDtcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcbiAgICByaWdodDogMzBweCAhaW1wb3J0YW50O1xufVxuXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWwtLXJlc2l6ZS1pbjpob3ZlciB7XG4gICAgd2lkdGg6IDIxN3B4ICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiA0NnB4ICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIDMwMG1zIGxpbmVhcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbC0tcmVzaXplLW91dCB7XG4gICAgd2lkdGg6IDQ2cHggIWltcG9ydGFudDtcbiAgICBoZWlnaHQ6IDQ2cHggIWltcG9ydGFudDtcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcbiAgICByaWdodDogLTEwMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi5zbGlkZS1pbiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIGFuaW1hdGlvbjogc2xpZGUtaW4gMC44cyBmb3J3YXJkcyAhaW1wb3J0YW50O1xuICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS1pbiAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgei1pbmRleDogMTAwMDAwMDAwMDAwMDtcbn1cblxuLnNsaWRlLW91dCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIGFuaW1hdGlvbjogc2xpZGUtb3V0IDFzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLW91dCAxcyBmb3J3YXJkcyAhaW1wb3J0YW50O1xuICAgIHotaW5kZXg6IC0xMDAwMDAwMDAwMDAwO1xufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0OTVweCkge1xuICAgIC5zbGlkZS1pbiB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgICAgIGFuaW1hdGlvbjogc2xpZGUtdXAgMC44cyBmb3J3YXJkcyAhaW1wb3J0YW50O1xuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGUtdXAgMC44cyBmb3J3YXJkcyAhaW1wb3J0YW50O1xuICAgICAgICB6LWluZGV4OiAxMDAwMDAwMDAwMDAwO1xuICAgIH1cblxuICAgIC5zbGlkZS1vdXQge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgICAgICBhbmltYXRpb246IHNsaWRlLWRvd24gMC41cyBmb3J3YXJkcyAhaW1wb3J0YW50O1xuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGUtZG93biAxcyBmb3J3YXJkcyAhaW1wb3J0YW50O1xuICAgICAgICB6LWluZGV4OiAtMTAwMDAwMDAwMDAwMDtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGUtaW4ge1xuICAgIDEwMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuICAgIH1cbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlLWluIHtcbiAgICAxMDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZS11cCB7XG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gICAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtdXAge1xuICAgIDEwMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlLW91dCB7XG4gICAgMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtb3V0IHtcbiAgICAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlLWRvd24ge1xuICAgIDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgIH1cbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlLWRvd24ge1xuICAgIDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICB9XG59XG5gLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3NyYy9zdHlsZXMuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUVBO0lBQ0ksWUFBWTtJQUNaLGtCQUFrQjtJQUNsQixrQkFBa0I7SUFDbEIsUUFBUTtJQUNSLFNBQVM7SUFDVCxpRkFBaUY7SUFDakYsZ0NBQWdDO0FBQ3BDOztBQUVBO0lBQ0ksaUJBQWlCO0lBQ2pCLGlCQUFpQjtBQUNyQjs7QUFFQTtJQUNJLGdCQUFnQjtJQUNoQixlQUFlO0lBQ2YsZ0JBQWdCO0lBQ2hCLGVBQWU7SUFDZixhQUFhO0lBQ2Isc0JBQXNCO0lBQ3RCLFdBQVc7SUFDWCxrQkFBa0I7SUFDbEIsMkVBQTJFO0lBQzNFLFdBQVc7SUFDWCxxQkFBcUI7SUFDckIsWUFBWTtJQUNaLFlBQVk7SUFDWiw0QkFBNEI7SUFDNUIsbUJBQW1CO0lBQ25CLFlBQVk7SUFDWixlQUFlO0lBQ2YsdUNBQXVDO0FBQzNDOztBQUVBO0lBQ0ksYUFBYTtJQUNiLDhCQUE4QjtJQUM5QixRQUFRO0lBQ1IsbUJBQW1CO0FBQ3ZCOztBQUVBO0lBQ0ksV0FBVztJQUNYLFlBQVk7SUFDWixXQUFXO0lBQ1gsY0FBYztBQUNsQjs7QUFFQTs7SUFFSSxnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQix1QkFBdUI7QUFDM0I7O0FBRUE7SUFDSSxpREFBaUQ7SUFDakQsaUJBQWlCO0lBQ2pCLGdCQUFnQjtBQUNwQjs7QUFFQTtJQUNJLDRCQUE0QjtJQUM1QixlQUFlO0lBQ2YsTUFBTTtJQUNOLFFBQVE7SUFDUixXQUFXO0lBQ1gsb0NBQW9DO0FBQ3hDOztBQUVBO0lBQ0ksa0JBQWtCO0lBQ2xCLFdBQVc7SUFDWCxZQUFZ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SSxpQ0FBaUM7SUFDckM7O0lBRUE7UUFDSSxtQ0FBbUM7SUFDdkM7QUFDSlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJAaW1wb3J0IHVybChcXFwiaHR0cHM6Ly91c2UudHlwZWtpdC5uZXQvc2FnOGNlYi5jc3NcXFwiKTtcXG5cXG4jdHJpcGZ1c2lvbi1sb2FkZXIge1xcbiAgICBjb2xvcjogd2hpdGU7XFxuICAgIG1hcmdpbi1yaWdodDogLTUwJTtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDUwJTtcXG4gICAgbGVmdDogNTAlO1xcbiAgICBmb250LWZhbWlseTogZnV0dXJhLWx0LXcwMS1ib29rLCBmdXR1cmEtbHQtdzA1LWJvb2ssIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi1sb2FkZXIgc3BhbiB7XFxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgICBmb250LXNpemU6IDEuM3JlbTtcXG59XFxuXFxuI3RyaXBmdXNpb24tcmVzdW1lLXBhbmVsIHtcXG4gICAgbWF4LXdpZHRoOiAyNTBweDtcXG4gICAgcG9zaXRpb246IGZpeGVkO1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIGdhcDogMC41cmVtO1xcbiAgICBwYWRkaW5nOiAxMnB4IDI0cHg7XFxuICAgIGJveC1zaGFkb3c6IDBweCAwcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4yNSksIDBweCA0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG4gICAgcmlnaHQ6IDMwcHg7XFxuICAgIHotaW5kZXg6IDEwMDAwMDAwMDAwMDtcXG4gICAgYm90dG9tOiA0MHB4O1xcbiAgICBib3JkZXI6IG5vbmU7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0MDBweCk7XFxuICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XFxuICAgIGNvbG9yOiB3aGl0ZTtcXG4gICAgZm9udC1zaXplOiAxcmVtO1xcbiAgICBmb250LWZhbWlseTogc3dlZXQtc2Fucy1wcm8sIHNhbnMtc2VyaWY7XFxufVxcblxcbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbF9faGVhZGVyIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgICBnYXA6IDJlbTtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuXFxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsX19oZWFkZXIgc3ZnIHtcXG4gICAgd2lkdGg6IDE4cHg7XFxuICAgIGhlaWdodDogMThweDtcXG4gICAgZmlsbDogd2hpdGU7XFxuICAgIGZsZXgtc2hyaW5rOiAwO1xcbn1cXG5cXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX2hlYWRlciBzcGFuLFxcbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbF9fc3ViaGVhZGVyIHtcXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxufVxcblxcbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbF9fZm9vdGVyIHtcXG4gICAgZm9udC1mYW1pbHk6IFJvYm90bywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcXG4gICAgZm9udC1zaXplOiAwLjhyZW07XFxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XFxufVxcblxcbiN0cmlwZnVzaW9uLXdpZGdldC13cmFwcGVyIHtcXG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwKTtcXG4gICAgcG9zaXRpb246IGZpeGVkO1xcbiAgICB0b3A6IDA7XFxuICAgIHJpZ2h0OiAwO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjVzIGVhc2Utb3V0O1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi13aWRnZXQge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICAgIHRvcDogMHB4O1xcbiAgICByaWdodDogMHB4O1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi13aWRnZXQtaW5uZXItd3JhcHBlciB7XFxuICAgIHBvc2l0aW9uOiBmaXhlZDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgbWluLXdpZHRoOiAzMjBweDtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIGhlaWdodDogMTAwJTtcXG4gICAgcmlnaHQ6IDBweDtcXG4gICAgYm90dG9tOiAwcHg7XFxuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XFxuICAgIGJveC1zaGFkb3c6IDAgMnB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMik7XFxuICAgIGZvbnQtZmFtaWx5OiBcXFwiUm9ib3RvXFxcIiwgXFxcIkhlbHZldGljYVxcXCIsIFxcXCJBcmlhbFxcXCIsIHNhbnMtc2VyaWY7XFxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICAgIGZvbnQtc2l6ZTogMXJlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcXG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDA5MzhlbTtcXG59XFxuXFxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XFxuICAgICN0cmlwZnVzaW9uLXdpZGdldC1pbm5lci13cmFwcGVyIHtcXG4gICAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gNDBweCk7XFxuICAgICAgICByaWdodDogMjBweDtcXG4gICAgICAgIGJvdHRvbTogMjBweDtcXG4gICAgICAgIHdpZHRoOiA1MDBweDtcXG4gICAgfVxcbn1cXG5cXG4jdHJpcGZ1c2lvbi13aWRnZXQtaGVhZGVyIHtcXG4gICAgaGVpZ2h0OiA2MHB4O1xcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YxZjFmMTtcXG4gICAgcGFkZGluZzogMCAxNnB4IDAgMTZweDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBjb2xvcjogd2hpdGU7XFxufVxcblxcbiN0cmlwZnVzaW9uLXdpZGdldC1pZnJhbWUge1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICAgIGJvcmRlcjogbm9uZTtcXG59XFxuXFxuI3RyaXBmdXNpb24td2lkZ2V0LWhlYWRlci10aXRsZSB7XFxuICAgIGZvbnQtZmFtaWx5OiBzd2VldC1zYW5zLXBybywgc2Fucy1zZXJpZjtcXG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gICAgZm9udC1zaXplOiAxcmVtO1xcbiAgICBsZXR0ZXItc3BhY2luZzogMS41cHg7XFxuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XFxufVxcblxcbiN0cmlwZnVzaW9uLXdpZGdldC1jbG9zZS1idXR0b24ge1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIGJvcmRlcjogbm9uZTtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgd2lkdGg6IDJlbTtcXG4gICAgaGVpZ2h0OiAyZW07XFxuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxuICAgIGZvbnQ6IGluaGVyaXQ7XFxuICAgIHRleHQtaW5kZW50OiAxMDAlO1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxuXFxuICAgICY6Zm9jdXMge1xcbiAgICAgICAgb3V0bGluZTogc29saWQgMCB0cmFuc3BhcmVudDtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNCk7XFxuICAgIH1cXG5cXG4gICAgJjpob3ZlciB7XFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDQpO1xcbiAgICB9XFxuXFxuICAgICY6YmVmb3JlLFxcbiAgICAmOmFmdGVyIHtcXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgIHRvcDogMjUlO1xcbiAgICAgICAgbGVmdDogY2FsYyg1MCUgLSAwLjA2MjVlbSk7XFxuICAgICAgICB3aWR0aDogMC4xMjVlbTtcXG4gICAgICAgIGhlaWdodDogNTAlO1xcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC4xMjVlbTtcXG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcXG4gICAgICAgIGJhY2tncm91bmQ6IGN1cnJlbnRjb2xvcjtcXG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcXG4gICAgICAgIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgICB9XFxuXFxuICAgICY6YWZ0ZXIge1xcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtcXG4gICAgfVxcbn1cXG5cXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWwtLXNsaWRlLWluIHtcXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgLW1vei10cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgdHJhbnNpdGlvbjogNTAwbXM7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWwtLXNsaWRlLW91dCB7XFxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogNTAwbXM7XFxuICAgIC1tb3otdHJhbnNpdGlvbjogNTAwbXM7XFxuICAgIHRyYW5zaXRpb246IDUwMG1zO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNDAwcHgpICFpbXBvcnRhbnQ7XFxufVxcblxcbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbC0tcmVzaXplLWluIHtcXG4gICAgd2lkdGg6IDQ2cHggIWltcG9ydGFudDtcXG4gICAgaGVpZ2h0OiA0NnB4ICFpbXBvcnRhbnQ7XFxuICAgIHRyYW5zaXRpb246IDUwMG1zO1xcbiAgICByaWdodDogMzBweCAhaW1wb3J0YW50O1xcbn1cXG5cXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWwtLXJlc2l6ZS1pbjpob3ZlciB7XFxuICAgIHdpZHRoOiAyMTdweCAhaW1wb3J0YW50O1xcbiAgICBoZWlnaHQ6IDQ2cHggIWltcG9ydGFudDtcXG4gICAgdHJhbnNpdGlvbjogYWxsIDMwMG1zIGxpbmVhcjtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWwtLXJlc2l6ZS1vdXQge1xcbiAgICB3aWR0aDogNDZweCAhaW1wb3J0YW50O1xcbiAgICBoZWlnaHQ6IDQ2cHggIWltcG9ydGFudDtcXG4gICAgdHJhbnNpdGlvbjogNTAwbXM7XFxuICAgIHJpZ2h0OiAtMTAwcHggIWltcG9ydGFudDtcXG59XFxuXFxuLnNsaWRlLWluIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG4gICAgYW5pbWF0aW9uOiBzbGlkZS1pbiAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XFxuICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS1pbiAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XFxuICAgIHotaW5kZXg6IDEwMDAwMDAwMDAwMDA7XFxufVxcblxcbi5zbGlkZS1vdXQge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xcbiAgICBhbmltYXRpb246IHNsaWRlLW91dCAxcyBmb3J3YXJkcyAhaW1wb3J0YW50O1xcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGUtb3V0IDFzIGZvcndhcmRzICFpbXBvcnRhbnQ7XFxuICAgIHotaW5kZXg6IC0xMDAwMDAwMDAwMDAwO1xcbn1cXG5cXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0OTVweCkge1xcbiAgICAuc2xpZGUtaW4ge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxuICAgICAgICBhbmltYXRpb246IHNsaWRlLXVwIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS11cCAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XFxuICAgICAgICB6LWluZGV4OiAxMDAwMDAwMDAwMDAwO1xcbiAgICB9XFxuXFxuICAgIC5zbGlkZS1vdXQge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxuICAgICAgICBhbmltYXRpb246IHNsaWRlLWRvd24gMC41cyBmb3J3YXJkcyAhaW1wb3J0YW50O1xcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLWRvd24gMXMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgICAgIHotaW5kZXg6IC0xMDAwMDAwMDAwMDAwO1xcbiAgICB9XFxufVxcblxcbkBrZXlmcmFtZXMgc2xpZGUtaW4ge1xcbiAgICAxMDAlIHtcXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XFxuICAgIH1cXG59XFxuXFxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlLWluIHtcXG4gICAgMTAwJSB7XFxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XFxuICAgIH1cXG59XFxuXFxuQGtleWZyYW1lcyBzbGlkZS11cCB7XFxuICAgIDEwMCUge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcXG4gICAgfVxcbn1cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtdXAge1xcbiAgICAxMDAlIHtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcXG4gICAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzIHNsaWRlLW91dCB7XFxuICAgIDAlIHtcXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XFxuICAgIH1cXG5cXG4gICAgMTAwJSB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxuICAgIH1cXG59XFxuXFxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlLW91dCB7XFxuICAgIDAlIHtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcXG4gICAgfVxcblxcbiAgICAxMDAlIHtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xcbiAgICB9XFxufVxcblxcbkBrZXlmcmFtZXMgc2xpZGUtZG93biB7XFxuICAgIDAlIHtcXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XFxuICAgIH1cXG5cXG4gICAgMTAwJSB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxuICAgIH1cXG59XFxuXFxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlLWRvd24ge1xcbiAgICAwJSB7XFxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XFxuICAgIH1cXG5cXG4gICAgMTAwJSB7XFxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG4gICAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKSB7XG4gIHZhciBsaXN0ID0gW107XG5cbiAgLy8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuICBsaXN0LnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICB2YXIgY29udGVudCA9IFwiXCI7XG4gICAgICB2YXIgbmVlZExheWVyID0gdHlwZW9mIGl0ZW1bNV0gIT09IFwidW5kZWZpbmVkXCI7XG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIik7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpO1xuICAgICAgfVxuICAgICAgaWYgKG5lZWRMYXllcikge1xuICAgICAgICBjb250ZW50ICs9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIik7XG4gICAgICB9XG4gICAgICBjb250ZW50ICs9IGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSk7XG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pLmpvaW4oXCJcIik7XG4gIH07XG5cbiAgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcbiAgbGlzdC5pID0gZnVuY3Rpb24gaShtb2R1bGVzLCBtZWRpYSwgZGVkdXBlLCBzdXBwb3J0cywgbGF5ZXIpIHtcbiAgICBpZiAodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIHVuZGVmaW5lZF1dO1xuICAgIH1cbiAgICB2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuICAgIGlmIChkZWR1cGUpIHtcbiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgdGhpcy5sZW5ndGg7IGsrKykge1xuICAgICAgICB2YXIgaWQgPSB0aGlzW2tdWzBdO1xuICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKHZhciBfayA9IDA7IF9rIDwgbW9kdWxlcy5sZW5ndGg7IF9rKyspIHtcbiAgICAgIHZhciBpdGVtID0gW10uY29uY2F0KG1vZHVsZXNbX2tdKTtcbiAgICAgIGlmIChkZWR1cGUgJiYgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgbGF5ZXIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtWzVdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgaXRlbVs1XSA9IGxheWVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVs1XSA9IGxheWVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobWVkaWEpIHtcbiAgICAgICAgaWYgKCFpdGVtWzJdKSB7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHN1cHBvcnRzKSB7XG4gICAgICAgIGlmICghaXRlbVs0XSkge1xuICAgICAgICAgIGl0ZW1bNF0gPSBcIlwiLmNvbmNhdChzdXBwb3J0cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzRdID0gc3VwcG9ydHM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxpc3QucHVzaChpdGVtKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiBsaXN0O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlbSkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV07XG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcbiAgaWYgKCFjc3NNYXBwaW5nKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cbiAgaWYgKHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoY3NzTWFwcGluZykpKSk7XG4gICAgdmFyIGRhdGEgPSBcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChiYXNlNjQpO1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gXCIvKiMgXCIuY29uY2F0KGRhdGEsIFwiICovXCIpO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbihcIlxcblwiKTtcbiAgfVxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsIiFmdW5jdGlvbih0LGUpe1wib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPWUoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKGUpOih0PVwidW5kZWZpbmVkXCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6dHx8c2VsZikuZGF5anM9ZSgpfSh0aGlzLChmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO3ZhciB0PTFlMyxlPTZlNCxuPTM2ZTUscj1cIm1pbGxpc2Vjb25kXCIsaT1cInNlY29uZFwiLHM9XCJtaW51dGVcIix1PVwiaG91clwiLGE9XCJkYXlcIixvPVwid2Vla1wiLGM9XCJtb250aFwiLGY9XCJxdWFydGVyXCIsaD1cInllYXJcIixkPVwiZGF0ZVwiLGw9XCJJbnZhbGlkIERhdGVcIiwkPS9eKFxcZHs0fSlbLS9dPyhcXGR7MSwyfSk/Wy0vXT8oXFxkezAsMn0pW1R0XFxzXSooXFxkezEsMn0pPzo/KFxcZHsxLDJ9KT86PyhcXGR7MSwyfSk/Wy46XT8oXFxkKyk/JC8seT0vXFxbKFteXFxdXSspXXxZezEsNH18TXsxLDR9fER7MSwyfXxkezEsNH18SHsxLDJ9fGh7MSwyfXxhfEF8bXsxLDJ9fHN7MSwyfXxaezEsMn18U1NTL2csTT17bmFtZTpcImVuXCIsd2Vla2RheXM6XCJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheVwiLnNwbGl0KFwiX1wiKSxtb250aHM6XCJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyXCIuc3BsaXQoXCJfXCIpLG9yZGluYWw6ZnVuY3Rpb24odCl7dmFyIGU9W1widGhcIixcInN0XCIsXCJuZFwiLFwicmRcIl0sbj10JTEwMDtyZXR1cm5cIltcIit0KyhlWyhuLTIwKSUxMF18fGVbbl18fGVbMF0pK1wiXVwifX0sbT1mdW5jdGlvbih0LGUsbil7dmFyIHI9U3RyaW5nKHQpO3JldHVybiFyfHxyLmxlbmd0aD49ZT90OlwiXCIrQXJyYXkoZSsxLXIubGVuZ3RoKS5qb2luKG4pK3R9LHY9e3M6bSx6OmZ1bmN0aW9uKHQpe3ZhciBlPS10LnV0Y09mZnNldCgpLG49TWF0aC5hYnMoZSkscj1NYXRoLmZsb29yKG4vNjApLGk9biU2MDtyZXR1cm4oZTw9MD9cIitcIjpcIi1cIikrbShyLDIsXCIwXCIpK1wiOlwiK20oaSwyLFwiMFwiKX0sbTpmdW5jdGlvbiB0KGUsbil7aWYoZS5kYXRlKCk8bi5kYXRlKCkpcmV0dXJuLXQobixlKTt2YXIgcj0xMioobi55ZWFyKCktZS55ZWFyKCkpKyhuLm1vbnRoKCktZS5tb250aCgpKSxpPWUuY2xvbmUoKS5hZGQocixjKSxzPW4taTwwLHU9ZS5jbG9uZSgpLmFkZChyKyhzPy0xOjEpLGMpO3JldHVybisoLShyKyhuLWkpLyhzP2ktdTp1LWkpKXx8MCl9LGE6ZnVuY3Rpb24odCl7cmV0dXJuIHQ8MD9NYXRoLmNlaWwodCl8fDA6TWF0aC5mbG9vcih0KX0scDpmdW5jdGlvbih0KXtyZXR1cm57TTpjLHk6aCx3Om8sZDphLEQ6ZCxoOnUsbTpzLHM6aSxtczpyLFE6Zn1bdF18fFN0cmluZyh0fHxcIlwiKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL3MkLyxcIlwiKX0sdTpmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dH19LGc9XCJlblwiLEQ9e307RFtnXT1NO3ZhciBwPVwiJGlzRGF5anNPYmplY3RcIixTPWZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgX3x8ISghdHx8IXRbcF0pfSx3PWZ1bmN0aW9uIHQoZSxuLHIpe3ZhciBpO2lmKCFlKXJldHVybiBnO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXt2YXIgcz1lLnRvTG93ZXJDYXNlKCk7RFtzXSYmKGk9cyksbiYmKERbc109bixpPXMpO3ZhciB1PWUuc3BsaXQoXCItXCIpO2lmKCFpJiZ1Lmxlbmd0aD4xKXJldHVybiB0KHVbMF0pfWVsc2V7dmFyIGE9ZS5uYW1lO0RbYV09ZSxpPWF9cmV0dXJuIXImJmkmJihnPWkpLGl8fCFyJiZnfSxPPWZ1bmN0aW9uKHQsZSl7aWYoUyh0KSlyZXR1cm4gdC5jbG9uZSgpO3ZhciBuPVwib2JqZWN0XCI9PXR5cGVvZiBlP2U6e307cmV0dXJuIG4uZGF0ZT10LG4uYXJncz1hcmd1bWVudHMsbmV3IF8obil9LGI9djtiLmw9dyxiLmk9UyxiLnc9ZnVuY3Rpb24odCxlKXtyZXR1cm4gTyh0LHtsb2NhbGU6ZS4kTCx1dGM6ZS4kdSx4OmUuJHgsJG9mZnNldDplLiRvZmZzZXR9KX07dmFyIF89ZnVuY3Rpb24oKXtmdW5jdGlvbiBNKHQpe3RoaXMuJEw9dyh0LmxvY2FsZSxudWxsLCEwKSx0aGlzLnBhcnNlKHQpLHRoaXMuJHg9dGhpcy4keHx8dC54fHx7fSx0aGlzW3BdPSEwfXZhciBtPU0ucHJvdG90eXBlO3JldHVybiBtLnBhcnNlPWZ1bmN0aW9uKHQpe3RoaXMuJGQ9ZnVuY3Rpb24odCl7dmFyIGU9dC5kYXRlLG49dC51dGM7aWYobnVsbD09PWUpcmV0dXJuIG5ldyBEYXRlKE5hTik7aWYoYi51KGUpKXJldHVybiBuZXcgRGF0ZTtpZihlIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gbmV3IERhdGUoZSk7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUmJiEvWiQvaS50ZXN0KGUpKXt2YXIgcj1lLm1hdGNoKCQpO2lmKHIpe3ZhciBpPXJbMl0tMXx8MCxzPShyWzddfHxcIjBcIikuc3Vic3RyaW5nKDAsMyk7cmV0dXJuIG4/bmV3IERhdGUoRGF0ZS5VVEMoclsxXSxpLHJbM118fDEscls0XXx8MCxyWzVdfHwwLHJbNl18fDAscykpOm5ldyBEYXRlKHJbMV0saSxyWzNdfHwxLHJbNF18fDAscls1XXx8MCxyWzZdfHwwLHMpfX1yZXR1cm4gbmV3IERhdGUoZSl9KHQpLHRoaXMuaW5pdCgpfSxtLmluaXQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLiRkO3RoaXMuJHk9dC5nZXRGdWxsWWVhcigpLHRoaXMuJE09dC5nZXRNb250aCgpLHRoaXMuJEQ9dC5nZXREYXRlKCksdGhpcy4kVz10LmdldERheSgpLHRoaXMuJEg9dC5nZXRIb3VycygpLHRoaXMuJG09dC5nZXRNaW51dGVzKCksdGhpcy4kcz10LmdldFNlY29uZHMoKSx0aGlzLiRtcz10LmdldE1pbGxpc2Vjb25kcygpfSxtLiR1dGlscz1mdW5jdGlvbigpe3JldHVybiBifSxtLmlzVmFsaWQ9ZnVuY3Rpb24oKXtyZXR1cm4hKHRoaXMuJGQudG9TdHJpbmcoKT09PWwpfSxtLmlzU2FtZT1mdW5jdGlvbih0LGUpe3ZhciBuPU8odCk7cmV0dXJuIHRoaXMuc3RhcnRPZihlKTw9biYmbjw9dGhpcy5lbmRPZihlKX0sbS5pc0FmdGVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE8odCk8dGhpcy5zdGFydE9mKGUpfSxtLmlzQmVmb3JlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZW5kT2YoZSk8Tyh0KX0sbS4kZz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGIudSh0KT90aGlzW2VdOnRoaXMuc2V0KG4sdCl9LG0udW5peD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmZsb29yKHRoaXMudmFsdWVPZigpLzFlMyl9LG0udmFsdWVPZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRkLmdldFRpbWUoKX0sbS5zdGFydE9mPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxyPSEhYi51KGUpfHxlLGY9Yi5wKHQpLGw9ZnVuY3Rpb24odCxlKXt2YXIgaT1iLncobi4kdT9EYXRlLlVUQyhuLiR5LGUsdCk6bmV3IERhdGUobi4keSxlLHQpLG4pO3JldHVybiByP2k6aS5lbmRPZihhKX0sJD1mdW5jdGlvbih0LGUpe3JldHVybiBiLncobi50b0RhdGUoKVt0XS5hcHBseShuLnRvRGF0ZShcInNcIiksKHI/WzAsMCwwLDBdOlsyMyw1OSw1OSw5OTldKS5zbGljZShlKSksbil9LHk9dGhpcy4kVyxNPXRoaXMuJE0sbT10aGlzLiRELHY9XCJzZXRcIisodGhpcy4kdT9cIlVUQ1wiOlwiXCIpO3N3aXRjaChmKXtjYXNlIGg6cmV0dXJuIHI/bCgxLDApOmwoMzEsMTEpO2Nhc2UgYzpyZXR1cm4gcj9sKDEsTSk6bCgwLE0rMSk7Y2FzZSBvOnZhciBnPXRoaXMuJGxvY2FsZSgpLndlZWtTdGFydHx8MCxEPSh5PGc/eSs3OnkpLWc7cmV0dXJuIGwocj9tLUQ6bSsoNi1EKSxNKTtjYXNlIGE6Y2FzZSBkOnJldHVybiAkKHYrXCJIb3Vyc1wiLDApO2Nhc2UgdTpyZXR1cm4gJCh2K1wiTWludXRlc1wiLDEpO2Nhc2UgczpyZXR1cm4gJCh2K1wiU2Vjb25kc1wiLDIpO2Nhc2UgaTpyZXR1cm4gJCh2K1wiTWlsbGlzZWNvbmRzXCIsMyk7ZGVmYXVsdDpyZXR1cm4gdGhpcy5jbG9uZSgpfX0sbS5lbmRPZj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zdGFydE9mKHQsITEpfSxtLiRzZXQ9ZnVuY3Rpb24odCxlKXt2YXIgbixvPWIucCh0KSxmPVwic2V0XCIrKHRoaXMuJHU/XCJVVENcIjpcIlwiKSxsPShuPXt9LG5bYV09ZitcIkRhdGVcIixuW2RdPWYrXCJEYXRlXCIsbltjXT1mK1wiTW9udGhcIixuW2hdPWYrXCJGdWxsWWVhclwiLG5bdV09ZitcIkhvdXJzXCIsbltzXT1mK1wiTWludXRlc1wiLG5baV09ZitcIlNlY29uZHNcIixuW3JdPWYrXCJNaWxsaXNlY29uZHNcIixuKVtvXSwkPW89PT1hP3RoaXMuJEQrKGUtdGhpcy4kVyk6ZTtpZihvPT09Y3x8bz09PWgpe3ZhciB5PXRoaXMuY2xvbmUoKS5zZXQoZCwxKTt5LiRkW2xdKCQpLHkuaW5pdCgpLHRoaXMuJGQ9eS5zZXQoZCxNYXRoLm1pbih0aGlzLiRELHkuZGF5c0luTW9udGgoKSkpLiRkfWVsc2UgbCYmdGhpcy4kZFtsXSgkKTtyZXR1cm4gdGhpcy5pbml0KCksdGhpc30sbS5zZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLiRzZXQodCxlKX0sbS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbYi5wKHQpXSgpfSxtLmFkZD1mdW5jdGlvbihyLGYpe3ZhciBkLGw9dGhpcztyPU51bWJlcihyKTt2YXIgJD1iLnAoZikseT1mdW5jdGlvbih0KXt2YXIgZT1PKGwpO3JldHVybiBiLncoZS5kYXRlKGUuZGF0ZSgpK01hdGgucm91bmQodCpyKSksbCl9O2lmKCQ9PT1jKXJldHVybiB0aGlzLnNldChjLHRoaXMuJE0rcik7aWYoJD09PWgpcmV0dXJuIHRoaXMuc2V0KGgsdGhpcy4keStyKTtpZigkPT09YSlyZXR1cm4geSgxKTtpZigkPT09bylyZXR1cm4geSg3KTt2YXIgTT0oZD17fSxkW3NdPWUsZFt1XT1uLGRbaV09dCxkKVskXXx8MSxtPXRoaXMuJGQuZ2V0VGltZSgpK3IqTTtyZXR1cm4gYi53KG0sdGhpcyl9LG0uc3VidHJhY3Q9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hZGQoLTEqdCxlKX0sbS5mb3JtYXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXRoaXMuJGxvY2FsZSgpO2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gbi5pbnZhbGlkRGF0ZXx8bDt2YXIgcj10fHxcIllZWVktTU0tRERUSEg6bW06c3NaXCIsaT1iLnoodGhpcykscz10aGlzLiRILHU9dGhpcy4kbSxhPXRoaXMuJE0sbz1uLndlZWtkYXlzLGM9bi5tb250aHMsZj1uLm1lcmlkaWVtLGg9ZnVuY3Rpb24odCxuLGkscyl7cmV0dXJuIHQmJih0W25dfHx0KGUscikpfHxpW25dLnNsaWNlKDAscyl9LGQ9ZnVuY3Rpb24odCl7cmV0dXJuIGIucyhzJTEyfHwxMix0LFwiMFwiKX0sJD1mfHxmdW5jdGlvbih0LGUsbil7dmFyIHI9dDwxMj9cIkFNXCI6XCJQTVwiO3JldHVybiBuP3IudG9Mb3dlckNhc2UoKTpyfTtyZXR1cm4gci5yZXBsYWNlKHksKGZ1bmN0aW9uKHQscil7cmV0dXJuIHJ8fGZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlXCJZWVwiOnJldHVybiBTdHJpbmcoZS4keSkuc2xpY2UoLTIpO2Nhc2VcIllZWVlcIjpyZXR1cm4gYi5zKGUuJHksNCxcIjBcIik7Y2FzZVwiTVwiOnJldHVybiBhKzE7Y2FzZVwiTU1cIjpyZXR1cm4gYi5zKGErMSwyLFwiMFwiKTtjYXNlXCJNTU1cIjpyZXR1cm4gaChuLm1vbnRoc1Nob3J0LGEsYywzKTtjYXNlXCJNTU1NXCI6cmV0dXJuIGgoYyxhKTtjYXNlXCJEXCI6cmV0dXJuIGUuJEQ7Y2FzZVwiRERcIjpyZXR1cm4gYi5zKGUuJEQsMixcIjBcIik7Y2FzZVwiZFwiOnJldHVybiBTdHJpbmcoZS4kVyk7Y2FzZVwiZGRcIjpyZXR1cm4gaChuLndlZWtkYXlzTWluLGUuJFcsbywyKTtjYXNlXCJkZGRcIjpyZXR1cm4gaChuLndlZWtkYXlzU2hvcnQsZS4kVyxvLDMpO2Nhc2VcImRkZGRcIjpyZXR1cm4gb1tlLiRXXTtjYXNlXCJIXCI6cmV0dXJuIFN0cmluZyhzKTtjYXNlXCJISFwiOnJldHVybiBiLnMocywyLFwiMFwiKTtjYXNlXCJoXCI6cmV0dXJuIGQoMSk7Y2FzZVwiaGhcIjpyZXR1cm4gZCgyKTtjYXNlXCJhXCI6cmV0dXJuICQocyx1LCEwKTtjYXNlXCJBXCI6cmV0dXJuICQocyx1LCExKTtjYXNlXCJtXCI6cmV0dXJuIFN0cmluZyh1KTtjYXNlXCJtbVwiOnJldHVybiBiLnModSwyLFwiMFwiKTtjYXNlXCJzXCI6cmV0dXJuIFN0cmluZyhlLiRzKTtjYXNlXCJzc1wiOnJldHVybiBiLnMoZS4kcywyLFwiMFwiKTtjYXNlXCJTU1NcIjpyZXR1cm4gYi5zKGUuJG1zLDMsXCIwXCIpO2Nhc2VcIlpcIjpyZXR1cm4gaX1yZXR1cm4gbnVsbH0odCl8fGkucmVwbGFjZShcIjpcIixcIlwiKX0pKX0sbS51dGNPZmZzZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gMTUqLU1hdGgucm91bmQodGhpcy4kZC5nZXRUaW1lem9uZU9mZnNldCgpLzE1KX0sbS5kaWZmPWZ1bmN0aW9uKHIsZCxsKXt2YXIgJCx5PXRoaXMsTT1iLnAoZCksbT1PKHIpLHY9KG0udXRjT2Zmc2V0KCktdGhpcy51dGNPZmZzZXQoKSkqZSxnPXRoaXMtbSxEPWZ1bmN0aW9uKCl7cmV0dXJuIGIubSh5LG0pfTtzd2l0Y2goTSl7Y2FzZSBoOiQ9RCgpLzEyO2JyZWFrO2Nhc2UgYzokPUQoKTticmVhaztjYXNlIGY6JD1EKCkvMzticmVhaztjYXNlIG86JD0oZy12KS82MDQ4ZTU7YnJlYWs7Y2FzZSBhOiQ9KGctdikvODY0ZTU7YnJlYWs7Y2FzZSB1OiQ9Zy9uO2JyZWFrO2Nhc2UgczokPWcvZTticmVhaztjYXNlIGk6JD1nL3Q7YnJlYWs7ZGVmYXVsdDokPWd9cmV0dXJuIGw/JDpiLmEoJCl9LG0uZGF5c0luTW9udGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmRPZihjKS4kRH0sbS4kbG9jYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIERbdGhpcy4kTF19LG0ubG9jYWxlPWZ1bmN0aW9uKHQsZSl7aWYoIXQpcmV0dXJuIHRoaXMuJEw7dmFyIG49dGhpcy5jbG9uZSgpLHI9dyh0LGUsITApO3JldHVybiByJiYobi4kTD1yKSxufSxtLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIGIudyh0aGlzLiRkLHRoaXMpfSxtLnRvRGF0ZT1mdW5jdGlvbigpe3JldHVybiBuZXcgRGF0ZSh0aGlzLnZhbHVlT2YoKSl9LG0udG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpP3RoaXMudG9JU09TdHJpbmcoKTpudWxsfSxtLnRvSVNPU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGQudG9JU09TdHJpbmcoKX0sbS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRkLnRvVVRDU3RyaW5nKCl9LE19KCksaz1fLnByb3RvdHlwZTtyZXR1cm4gTy5wcm90b3R5cGU9ayxbW1wiJG1zXCIscl0sW1wiJHNcIixpXSxbXCIkbVwiLHNdLFtcIiRIXCIsdV0sW1wiJFdcIixhXSxbXCIkTVwiLGNdLFtcIiR5XCIsaF0sW1wiJERcIixkXV0uZm9yRWFjaCgoZnVuY3Rpb24odCl7a1t0WzFdXT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy4kZyhlLHRbMF0sdFsxXSl9fSkpLE8uZXh0ZW5kPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuJGl8fCh0KGUsXyxPKSx0LiRpPSEwKSxPfSxPLmxvY2FsZT13LE8uaXNEYXlqcz1TLE8udW5peD1mdW5jdGlvbih0KXtyZXR1cm4gTygxZTMqdCl9LE8uZW49RFtnXSxPLkxzPUQsTy5wPXt9LE99KSk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBzdHlsZXNJbkRPTSA9IFtdO1xuZnVuY3Rpb24gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcikge1xuICB2YXIgcmVzdWx0ID0gLTE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzSW5ET00ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3R5bGVzSW5ET01baV0uaWRlbnRpZmllciA9PT0gaWRlbnRpZmllcikge1xuICAgICAgcmVzdWx0ID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpIHtcbiAgdmFyIGlkQ291bnRNYXAgPSB7fTtcbiAgdmFyIGlkZW50aWZpZXJzID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gbGlzdFtpXTtcbiAgICB2YXIgaWQgPSBvcHRpb25zLmJhc2UgPyBpdGVtWzBdICsgb3B0aW9ucy5iYXNlIDogaXRlbVswXTtcbiAgICB2YXIgY291bnQgPSBpZENvdW50TWFwW2lkXSB8fCAwO1xuICAgIHZhciBpZGVudGlmaWVyID0gXCJcIi5jb25jYXQoaWQsIFwiIFwiKS5jb25jYXQoY291bnQpO1xuICAgIGlkQ291bnRNYXBbaWRdID0gY291bnQgKyAxO1xuICAgIHZhciBpbmRleEJ5SWRlbnRpZmllciA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgIHZhciBvYmogPSB7XG4gICAgICBjc3M6IGl0ZW1bMV0sXG4gICAgICBtZWRpYTogaXRlbVsyXSxcbiAgICAgIHNvdXJjZU1hcDogaXRlbVszXSxcbiAgICAgIHN1cHBvcnRzOiBpdGVtWzRdLFxuICAgICAgbGF5ZXI6IGl0ZW1bNV1cbiAgICB9O1xuICAgIGlmIChpbmRleEJ5SWRlbnRpZmllciAhPT0gLTEpIHtcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4QnlJZGVudGlmaWVyXS5yZWZlcmVuY2VzKys7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0udXBkYXRlcihvYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgdXBkYXRlciA9IGFkZEVsZW1lbnRTdHlsZShvYmosIG9wdGlvbnMpO1xuICAgICAgb3B0aW9ucy5ieUluZGV4ID0gaTtcbiAgICAgIHN0eWxlc0luRE9NLnNwbGljZShpLCAwLCB7XG4gICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIHVwZGF0ZXI6IHVwZGF0ZXIsXG4gICAgICAgIHJlZmVyZW5jZXM6IDFcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50aWZpZXIpO1xuICB9XG4gIHJldHVybiBpZGVudGlmaWVycztcbn1cbmZ1bmN0aW9uIGFkZEVsZW1lbnRTdHlsZShvYmosIG9wdGlvbnMpIHtcbiAgdmFyIGFwaSA9IG9wdGlvbnMuZG9tQVBJKG9wdGlvbnMpO1xuICBhcGkudXBkYXRlKG9iaik7XG4gIHZhciB1cGRhdGVyID0gZnVuY3Rpb24gdXBkYXRlcihuZXdPYmopIHtcbiAgICBpZiAobmV3T2JqKSB7XG4gICAgICBpZiAobmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAmJiBuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJiBuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFwICYmIG5ld09iai5zdXBwb3J0cyA9PT0gb2JqLnN1cHBvcnRzICYmIG5ld09iai5sYXllciA9PT0gb2JqLmxheWVyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGFwaS51cGRhdGUob2JqID0gbmV3T2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbW92ZSgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHVwZGF0ZXI7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChsaXN0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBsaXN0ID0gbGlzdCB8fCBbXTtcbiAgdmFyIGxhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZShuZXdMaXN0KSB7XG4gICAgbmV3TGlzdCA9IG5ld0xpc3QgfHwgW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW2ldO1xuICAgICAgdmFyIGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleF0ucmVmZXJlbmNlcy0tO1xuICAgIH1cbiAgICB2YXIgbmV3TGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKG5ld0xpc3QsIG9wdGlvbnMpO1xuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX2lkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbX2ldO1xuICAgICAgdmFyIF9pbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKF9pZGVudGlmaWVyKTtcbiAgICAgIGlmIChzdHlsZXNJbkRPTVtfaW5kZXhdLnJlZmVyZW5jZXMgPT09IDApIHtcbiAgICAgICAgc3R5bGVzSW5ET01bX2luZGV4XS51cGRhdGVyKCk7XG4gICAgICAgIHN0eWxlc0luRE9NLnNwbGljZShfaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICBsYXN0SWRlbnRpZmllcnMgPSBuZXdMYXN0SWRlbnRpZmllcnM7XG4gIH07XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgbWVtbyA9IHt9O1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGdldFRhcmdldCh0YXJnZXQpIHtcbiAgaWYgKHR5cGVvZiBtZW1vW3RhcmdldF0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICB2YXIgc3R5bGVUYXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldCk7XG5cbiAgICAvLyBTcGVjaWFsIGNhc2UgdG8gcmV0dXJuIGhlYWQgb2YgaWZyYW1lIGluc3RlYWQgb2YgaWZyYW1lIGl0c2VsZlxuICAgIGlmICh3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQgJiYgc3R5bGVUYXJnZXQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgYWNjZXNzIHRvIGlmcmFtZSBpcyBibG9ja2VkXG4gICAgICAgIC8vIGR1ZSB0byBjcm9zcy1vcmlnaW4gcmVzdHJpY3Rpb25zXG4gICAgICAgIHN0eWxlVGFyZ2V0ID0gc3R5bGVUYXJnZXQuY29udGVudERvY3VtZW50LmhlYWQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIHN0eWxlVGFyZ2V0ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgbWVtb1t0YXJnZXRdID0gc3R5bGVUYXJnZXQ7XG4gIH1cbiAgcmV0dXJuIG1lbW9bdGFyZ2V0XTtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBpbnNlcnRCeVNlbGVjdG9yKGluc2VydCwgc3R5bGUpIHtcbiAgdmFyIHRhcmdldCA9IGdldFRhcmdldChpbnNlcnQpO1xuICBpZiAoIXRhcmdldCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGZpbmQgYSBzdHlsZSB0YXJnZXQuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB0aGUgdmFsdWUgZm9yIHRoZSAnaW5zZXJ0JyBwYXJhbWV0ZXIgaXMgaW52YWxpZC5cIik7XG4gIH1cbiAgdGFyZ2V0LmFwcGVuZENoaWxkKHN0eWxlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0QnlTZWxlY3RvcjsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgb3B0aW9ucy5zZXRBdHRyaWJ1dGVzKGVsZW1lbnQsIG9wdGlvbnMuYXR0cmlidXRlcyk7XG4gIG9wdGlvbnMuaW5zZXJ0KGVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG4gIHJldHVybiBlbGVtZW50O1xufVxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzKHN0eWxlRWxlbWVudCkge1xuICB2YXIgbm9uY2UgPSB0eXBlb2YgX193ZWJwYWNrX25vbmNlX18gIT09IFwidW5kZWZpbmVkXCIgPyBfX3dlYnBhY2tfbm9uY2VfXyA6IG51bGw7XG4gIGlmIChub25jZSkge1xuICAgIHN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBub25jZSk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGFwcGx5KHN0eWxlRWxlbWVudCwgb3B0aW9ucywgb2JqKSB7XG4gIHZhciBjc3MgPSBcIlwiO1xuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQob2JqLnN1cHBvcnRzLCBcIikge1wiKTtcbiAgfVxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwiQG1lZGlhIFwiLmNvbmNhdChvYmoubWVkaWEsIFwiIHtcIik7XG4gIH1cbiAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBvYmoubGF5ZXIgIT09IFwidW5kZWZpbmVkXCI7XG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJAbGF5ZXJcIi5jb25jYXQob2JqLmxheWVyLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQob2JqLmxheWVyKSA6IFwiXCIsIFwiIHtcIik7XG4gIH1cbiAgY3NzICs9IG9iai5jc3M7XG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwO1xuICBpZiAoc291cmNlTWFwICYmIHR5cGVvZiBidG9hICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgY3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIi5jb25jYXQoYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSwgXCIgKi9cIik7XG4gIH1cblxuICAvLyBGb3Igb2xkIElFXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cbiAgb3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybShjc3MsIHN0eWxlRWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbn1cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpIHtcbiAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gIGlmIChzdHlsZUVsZW1lbnQucGFyZW50Tm9kZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBzdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpO1xufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGRvbUFQSShvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoKSB7fSxcbiAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge31cbiAgICB9O1xuICB9XG4gIHZhciBzdHlsZUVsZW1lbnQgPSBvcHRpb25zLmluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKTtcbiAgcmV0dXJuIHtcbiAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShvYmopIHtcbiAgICAgIGFwcGx5KHN0eWxlRWxlbWVudCwgb3B0aW9ucywgb2JqKTtcbiAgICB9LFxuICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCk7XG4gICAgfVxuICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBkb21BUEk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQpIHtcbiAgaWYgKHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCk7XG4gICAgfVxuICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBzdHlsZVRhZ1RyYW5zZm9ybTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiX193ZWJwYWNrX3JlcXVpcmVfXy5uYyA9IHVuZGVmaW5lZDsiLCJleHBvcnQgY29uc3QgVFJJUEZVU0lPTl9CQVNFX1VSTCA9XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiXG4gICAgICAgID8gcHJvY2Vzcy5lbnYuVFJJUEZVU0lPTl9BUFBfRU5WSVJPTk1FTlQgPT09IFwiZGVtb1wiXG4gICAgICAgICAgICA/IFwiaHR0cHM6Ly9kZXZlbG9wLmJvb2tpbmdzLnZhY2F5b3UuY29tL1wiXG4gICAgICAgICAgICA6IFwiaHR0cHM6Ly9ib29raW5ncy52YWNheW91LmNvbS9cIlxuICAgICAgICA6IFwiaHR0cDovL2xvY2FsaG9zdDozMDAwL1wiO1xuZXhwb3J0IGNvbnN0IFNES19TQ1JJUFRfSUQgPSBcInRyaXBmdXNpb24tc2RrXCI7XG5leHBvcnQgY29uc3QgV0lER0VUX0lEID0gXCJ0cmlwZnVzaW9uLXdpZGdldFwiO1xuZXhwb3J0IGNvbnN0IFdJREdFVF9JTk5FUl9XUkFQUEVSX0lEID0gXCJ0cmlwZnVzaW9uLXdpZGdldC1pbm5lci13cmFwcGVyXCI7XG5leHBvcnQgY29uc3QgV0lER0VUX0hFQURFUl9JRCA9IFwidHJpcGZ1c2lvbi13aWRnZXQtaGVhZGVyXCI7XG5leHBvcnQgY29uc3QgV0lER0VUX0NMT1NFX0JVVFRPTl9JRCA9IFwidHJpcGZ1c2lvbi13aWRnZXQtY2xvc2UtYnV0dG9uXCI7XG5leHBvcnQgY29uc3QgV0lER0VUX0hFQURFUl9USVRMRV9JRCA9IFwidHJpcGZ1c2lvbi13aWRnZXQtaGVhZGVyLXRpdGxlXCI7XG5leHBvcnQgY29uc3QgV0lER0VUX1dSQVBQRVJfSUQgPSBcInRyaXBmdXNpb24td2lkZ2V0LXdyYXBwZXJcIjtcbmV4cG9ydCBjb25zdCBXSURHRVRfSUZSQU1FX0lEID0gXCJ0cmlwZnVzaW9uLXdpZGdldC1pZnJhbWVcIjtcbmV4cG9ydCBjb25zdCBSRVNVTUVfUEFORUxfSUQgPSBcInRyaXBmdXNpb24tcmVzdW1lLXBhbmVsXCI7XG5leHBvcnQgY29uc3QgTE9BREVSX0lEID0gXCJ0cmlwZnVzaW9uLWxvYWRlclwiO1xuZXhwb3J0IGNvbnN0IEJPT0tJTkdfTU9ERSA9IHtcbiAgICBub3JtYWw6IFwibm9ybWFsXCIsXG4gICAgYXBwZW5kOiBcImFwcGVuZFwiLFxufSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBBUFBfTUVTU0FHRV9UWVBFID0ge1xuICAgIFdJREdFVF9SRUFEWTogXCJ0cmlwZnVzaW9uLXdpZGdldC1yZWFkeVwiLFxuICAgIEJPT0tJTkdfQ09NUExFVEVEOiBcInRyaXBmdXNpb24tYm9va2luZy1jb21wbGV0ZWRcIixcbiAgICBTRVRfQ0xJRU5UX1RIRU1FOiBcInRyaXBmdXNpb24tc2V0LWNsaWVudC10aGVtZVwiLFxuICAgIFNFVF9QUklNQVJZX0dVRVNUX05BTUU6IFwidHJpcGZ1c2lvbi1zZXQtZ3Vlc3QtbmFtZVwiLFxuICAgIFNFVF9EQVRFUzogXCJ0cmlwZnVzaW9uLXNldC1kYXRlc1wiLFxuICAgIFNFVF9DQVJUOiBcInRyaXBmdXNpb24tc2V0LWNhcnRcIixcbn0gYXMgY29uc3Q7XG4iLCJjb25zdCByZWR1eEltcGwgPSAocmVkdWNlciwgaW5pdGlhbCkgPT4gKHNldCwgX2dldCwgYXBpKSA9PiB7XG4gIGFwaS5kaXNwYXRjaCA9IChhY3Rpb24pID0+IHtcbiAgICBzZXQoKHN0YXRlKSA9PiByZWR1Y2VyKHN0YXRlLCBhY3Rpb24pLCBmYWxzZSwgYWN0aW9uKTtcbiAgICByZXR1cm4gYWN0aW9uO1xuICB9O1xuICBhcGkuZGlzcGF0Y2hGcm9tRGV2dG9vbHMgPSB0cnVlO1xuICByZXR1cm4geyBkaXNwYXRjaDogKC4uLmEpID0+IGFwaS5kaXNwYXRjaCguLi5hKSwgLi4uaW5pdGlhbCB9O1xufTtcbmNvbnN0IHJlZHV4ID0gcmVkdXhJbXBsO1xuXG5jb25zdCB0cmFja2VkQ29ubmVjdGlvbnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuY29uc3QgZ2V0VHJhY2tlZENvbm5lY3Rpb25TdGF0ZSA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGFwaSA9IHRyYWNrZWRDb25uZWN0aW9ucy5nZXQobmFtZSk7XG4gIGlmICghYXBpKSByZXR1cm4ge307XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgT2JqZWN0LmVudHJpZXMoYXBpLnN0b3JlcykubWFwKChba2V5LCBhcGkyXSkgPT4gW2tleSwgYXBpMi5nZXRTdGF0ZSgpXSlcbiAgKTtcbn07XG5jb25zdCBleHRyYWN0Q29ubmVjdGlvbkluZm9ybWF0aW9uID0gKHN0b3JlLCBleHRlbnNpb25Db25uZWN0b3IsIG9wdGlvbnMpID0+IHtcbiAgaWYgKHN0b3JlID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJ1bnRyYWNrZWRcIixcbiAgICAgIGNvbm5lY3Rpb246IGV4dGVuc2lvbkNvbm5lY3Rvci5jb25uZWN0KG9wdGlvbnMpXG4gICAgfTtcbiAgfVxuICBjb25zdCBleGlzdGluZ0Nvbm5lY3Rpb24gPSB0cmFja2VkQ29ubmVjdGlvbnMuZ2V0KG9wdGlvbnMubmFtZSk7XG4gIGlmIChleGlzdGluZ0Nvbm5lY3Rpb24pIHtcbiAgICByZXR1cm4geyB0eXBlOiBcInRyYWNrZWRcIiwgc3RvcmUsIC4uLmV4aXN0aW5nQ29ubmVjdGlvbiB9O1xuICB9XG4gIGNvbnN0IG5ld0Nvbm5lY3Rpb24gPSB7XG4gICAgY29ubmVjdGlvbjogZXh0ZW5zaW9uQ29ubmVjdG9yLmNvbm5lY3Qob3B0aW9ucyksXG4gICAgc3RvcmVzOiB7fVxuICB9O1xuICB0cmFja2VkQ29ubmVjdGlvbnMuc2V0KG9wdGlvbnMubmFtZSwgbmV3Q29ubmVjdGlvbik7XG4gIHJldHVybiB7IHR5cGU6IFwidHJhY2tlZFwiLCBzdG9yZSwgLi4ubmV3Q29ubmVjdGlvbiB9O1xufTtcbmNvbnN0IGRldnRvb2xzSW1wbCA9IChmbiwgZGV2dG9vbHNPcHRpb25zID0ge30pID0+IChzZXQsIGdldCwgYXBpKSA9PiB7XG4gIGNvbnN0IHsgZW5hYmxlZCwgYW5vbnltb3VzQWN0aW9uVHlwZSwgc3RvcmUsIC4uLm9wdGlvbnMgfSA9IGRldnRvb2xzT3B0aW9ucztcbiAgbGV0IGV4dGVuc2lvbkNvbm5lY3RvcjtcbiAgdHJ5IHtcbiAgICBleHRlbnNpb25Db25uZWN0b3IgPSAoZW5hYmxlZCAhPSBudWxsID8gZW5hYmxlZCA6IChpbXBvcnQubWV0YS5lbnYgPyBpbXBvcnQubWV0YS5lbnYuTU9ERSA6IHZvaWQgMCkgIT09IFwicHJvZHVjdGlvblwiKSAmJiB3aW5kb3cuX19SRURVWF9ERVZUT09MU19FWFRFTlNJT05fXztcbiAgfSBjYXRjaCAoZSkge1xuICB9XG4gIGlmICghZXh0ZW5zaW9uQ29ubmVjdG9yKSB7XG4gICAgcmV0dXJuIGZuKHNldCwgZ2V0LCBhcGkpO1xuICB9XG4gIGNvbnN0IHsgY29ubmVjdGlvbiwgLi4uY29ubmVjdGlvbkluZm9ybWF0aW9uIH0gPSBleHRyYWN0Q29ubmVjdGlvbkluZm9ybWF0aW9uKHN0b3JlLCBleHRlbnNpb25Db25uZWN0b3IsIG9wdGlvbnMpO1xuICBsZXQgaXNSZWNvcmRpbmcgPSB0cnVlO1xuICBhcGkuc2V0U3RhdGUgPSAoc3RhdGUsIHJlcGxhY2UsIG5hbWVPckFjdGlvbikgPT4ge1xuICAgIGNvbnN0IHIgPSBzZXQoc3RhdGUsIHJlcGxhY2UpO1xuICAgIGlmICghaXNSZWNvcmRpbmcpIHJldHVybiByO1xuICAgIGNvbnN0IGFjdGlvbiA9IG5hbWVPckFjdGlvbiA9PT0gdm9pZCAwID8geyB0eXBlOiBhbm9ueW1vdXNBY3Rpb25UeXBlIHx8IFwiYW5vbnltb3VzXCIgfSA6IHR5cGVvZiBuYW1lT3JBY3Rpb24gPT09IFwic3RyaW5nXCIgPyB7IHR5cGU6IG5hbWVPckFjdGlvbiB9IDogbmFtZU9yQWN0aW9uO1xuICAgIGlmIChzdG9yZSA9PT0gdm9pZCAwKSB7XG4gICAgICBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLnNlbmQoYWN0aW9uLCBnZXQoKSk7XG4gICAgICByZXR1cm4gcjtcbiAgICB9XG4gICAgY29ubmVjdGlvbiA9PSBudWxsID8gdm9pZCAwIDogY29ubmVjdGlvbi5zZW5kKFxuICAgICAge1xuICAgICAgICAuLi5hY3Rpb24sXG4gICAgICAgIHR5cGU6IGAke3N0b3JlfS8ke2FjdGlvbi50eXBlfWBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC4uLmdldFRyYWNrZWRDb25uZWN0aW9uU3RhdGUob3B0aW9ucy5uYW1lKSxcbiAgICAgICAgW3N0b3JlXTogYXBpLmdldFN0YXRlKClcbiAgICAgIH1cbiAgICApO1xuICAgIHJldHVybiByO1xuICB9O1xuICBjb25zdCBzZXRTdGF0ZUZyb21EZXZ0b29scyA9ICguLi5hKSA9PiB7XG4gICAgY29uc3Qgb3JpZ2luYWxJc1JlY29yZGluZyA9IGlzUmVjb3JkaW5nO1xuICAgIGlzUmVjb3JkaW5nID0gZmFsc2U7XG4gICAgc2V0KC4uLmEpO1xuICAgIGlzUmVjb3JkaW5nID0gb3JpZ2luYWxJc1JlY29yZGluZztcbiAgfTtcbiAgY29uc3QgaW5pdGlhbFN0YXRlID0gZm4oYXBpLnNldFN0YXRlLCBnZXQsIGFwaSk7XG4gIGlmIChjb25uZWN0aW9uSW5mb3JtYXRpb24udHlwZSA9PT0gXCJ1bnRyYWNrZWRcIikge1xuICAgIGNvbm5lY3Rpb24gPT0gbnVsbCA/IHZvaWQgMCA6IGNvbm5lY3Rpb24uaW5pdChpbml0aWFsU3RhdGUpO1xuICB9IGVsc2Uge1xuICAgIGNvbm5lY3Rpb25JbmZvcm1hdGlvbi5zdG9yZXNbY29ubmVjdGlvbkluZm9ybWF0aW9uLnN0b3JlXSA9IGFwaTtcbiAgICBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLmluaXQoXG4gICAgICBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGNvbm5lY3Rpb25JbmZvcm1hdGlvbi5zdG9yZXMpLm1hcCgoW2tleSwgc3RvcmUyXSkgPT4gW1xuICAgICAgICAgIGtleSxcbiAgICAgICAgICBrZXkgPT09IGNvbm5lY3Rpb25JbmZvcm1hdGlvbi5zdG9yZSA/IGluaXRpYWxTdGF0ZSA6IHN0b3JlMi5nZXRTdGF0ZSgpXG4gICAgICAgIF0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuICBpZiAoYXBpLmRpc3BhdGNoRnJvbURldnRvb2xzICYmIHR5cGVvZiBhcGkuZGlzcGF0Y2ggPT09IFwiZnVuY3Rpb25cIikge1xuICAgIGxldCBkaWRXYXJuQWJvdXRSZXNlcnZlZEFjdGlvblR5cGUgPSBmYWxzZTtcbiAgICBjb25zdCBvcmlnaW5hbERpc3BhdGNoID0gYXBpLmRpc3BhdGNoO1xuICAgIGFwaS5kaXNwYXRjaCA9ICguLi5hKSA9PiB7XG4gICAgICBpZiAoKGltcG9ydC5tZXRhLmVudiA/IGltcG9ydC5tZXRhLmVudi5NT0RFIDogdm9pZCAwKSAhPT0gXCJwcm9kdWN0aW9uXCIgJiYgYVswXS50eXBlID09PSBcIl9fc2V0U3RhdGVcIiAmJiAhZGlkV2FybkFib3V0UmVzZXJ2ZWRBY3Rpb25UeXBlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnW3p1c3RhbmQgZGV2dG9vbHMgbWlkZGxld2FyZV0gXCJfX3NldFN0YXRlXCIgYWN0aW9uIHR5cGUgaXMgcmVzZXJ2ZWQgdG8gc2V0IHN0YXRlIGZyb20gdGhlIGRldnRvb2xzLiBBdm9pZCB1c2luZyBpdC4nXG4gICAgICAgICk7XG4gICAgICAgIGRpZFdhcm5BYm91dFJlc2VydmVkQWN0aW9uVHlwZSA9IHRydWU7XG4gICAgICB9XG4gICAgICBvcmlnaW5hbERpc3BhdGNoKC4uLmEpO1xuICAgIH07XG4gIH1cbiAgY29ubmVjdGlvbi5zdWJzY3JpYmUoKG1lc3NhZ2UpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgc3dpdGNoIChtZXNzYWdlLnR5cGUpIHtcbiAgICAgIGNhc2UgXCJBQ1RJT05cIjpcbiAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlLnBheWxvYWQgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgXCJbenVzdGFuZCBkZXZ0b29scyBtaWRkbGV3YXJlXSBVbnN1cHBvcnRlZCBhY3Rpb24gZm9ybWF0XCJcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyc2VKc29uVGhlbihcbiAgICAgICAgICBtZXNzYWdlLnBheWxvYWQsXG4gICAgICAgICAgKGFjdGlvbikgPT4ge1xuICAgICAgICAgICAgaWYgKGFjdGlvbi50eXBlID09PSBcIl9fc2V0U3RhdGVcIikge1xuICAgICAgICAgICAgICBpZiAoc3RvcmUgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICAgIHNldFN0YXRlRnJvbURldnRvb2xzKGFjdGlvbi5zdGF0ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhhY3Rpb24uc3RhdGUpLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICBgXG4gICAgICAgICAgICAgICAgICAgIFt6dXN0YW5kIGRldnRvb2xzIG1pZGRsZXdhcmVdIFVuc3VwcG9ydGVkIF9fc2V0U3RhdGUgYWN0aW9uIGZvcm1hdC5cbiAgICAgICAgICAgICAgICAgICAgV2hlbiB1c2luZyAnc3RvcmUnIG9wdGlvbiBpbiBkZXZ0b29scygpLCB0aGUgJ3N0YXRlJyBzaG91bGQgaGF2ZSBvbmx5IG9uZSBrZXksIHdoaWNoIGlzIGEgdmFsdWUgb2YgJ3N0b3JlJyB0aGF0IHdhcyBwYXNzZWQgaW4gZGV2dG9vbHMoKSxcbiAgICAgICAgICAgICAgICAgICAgYW5kIHZhbHVlIG9mIHRoaXMgb25seSBrZXkgc2hvdWxkIGJlIGEgc3RhdGUgb2JqZWN0LiBFeGFtcGxlOiB7IFwidHlwZVwiOiBcIl9fc2V0U3RhdGVcIiwgXCJzdGF0ZVwiOiB7IFwiYWJjMTIzU3RvcmVcIjogeyBcImZvb1wiOiBcImJhclwiIH0gfSB9XG4gICAgICAgICAgICAgICAgICAgIGBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHN0YXRlRnJvbURldnRvb2xzID0gYWN0aW9uLnN0YXRlW3N0b3JlXTtcbiAgICAgICAgICAgICAgaWYgKHN0YXRlRnJvbURldnRvb2xzID09PSB2b2lkIDAgfHwgc3RhdGVGcm9tRGV2dG9vbHMgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGFwaS5nZXRTdGF0ZSgpKSAhPT0gSlNPTi5zdHJpbmdpZnkoc3RhdGVGcm9tRGV2dG9vbHMpKSB7XG4gICAgICAgICAgICAgICAgc2V0U3RhdGVGcm9tRGV2dG9vbHMoc3RhdGVGcm9tRGV2dG9vbHMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghYXBpLmRpc3BhdGNoRnJvbURldnRvb2xzKSByZXR1cm47XG4gICAgICAgICAgICBpZiAodHlwZW9mIGFwaS5kaXNwYXRjaCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm47XG4gICAgICAgICAgICBhcGkuZGlzcGF0Y2goYWN0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICBjYXNlIFwiRElTUEFUQ0hcIjpcbiAgICAgICAgc3dpdGNoIChtZXNzYWdlLnBheWxvYWQudHlwZSkge1xuICAgICAgICAgIGNhc2UgXCJSRVNFVFwiOlxuICAgICAgICAgICAgc2V0U3RhdGVGcm9tRGV2dG9vbHMoaW5pdGlhbFN0YXRlKTtcbiAgICAgICAgICAgIGlmIChzdG9yZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICAgIHJldHVybiBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLmluaXQoYXBpLmdldFN0YXRlKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb24gPT0gbnVsbCA/IHZvaWQgMCA6IGNvbm5lY3Rpb24uaW5pdChnZXRUcmFja2VkQ29ubmVjdGlvblN0YXRlKG9wdGlvbnMubmFtZSkpO1xuICAgICAgICAgIGNhc2UgXCJDT01NSVRcIjpcbiAgICAgICAgICAgIGlmIChzdG9yZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICAgIGNvbm5lY3Rpb24gPT0gbnVsbCA/IHZvaWQgMCA6IGNvbm5lY3Rpb24uaW5pdChhcGkuZ2V0U3RhdGUoKSk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLmluaXQoZ2V0VHJhY2tlZENvbm5lY3Rpb25TdGF0ZShvcHRpb25zLm5hbWUpKTtcbiAgICAgICAgICBjYXNlIFwiUk9MTEJBQ0tcIjpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUpzb25UaGVuKG1lc3NhZ2Uuc3RhdGUsIChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoc3RvcmUgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICAgIHNldFN0YXRlRnJvbURldnRvb2xzKHN0YXRlKTtcbiAgICAgICAgICAgICAgICBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLmluaXQoYXBpLmdldFN0YXRlKCkpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzZXRTdGF0ZUZyb21EZXZ0b29scyhzdGF0ZVtzdG9yZV0pO1xuICAgICAgICAgICAgICBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLmluaXQoZ2V0VHJhY2tlZENvbm5lY3Rpb25TdGF0ZShvcHRpb25zLm5hbWUpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIGNhc2UgXCJKVU1QX1RPX1NUQVRFXCI6XG4gICAgICAgICAgY2FzZSBcIkpVTVBfVE9fQUNUSU9OXCI6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VKc29uVGhlbihtZXNzYWdlLnN0YXRlLCAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHN0b3JlID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgICAgICBzZXRTdGF0ZUZyb21EZXZ0b29scyhzdGF0ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShhcGkuZ2V0U3RhdGUoKSkgIT09IEpTT04uc3RyaW5naWZ5KHN0YXRlW3N0b3JlXSkpIHtcbiAgICAgICAgICAgICAgICBzZXRTdGF0ZUZyb21EZXZ0b29scyhzdGF0ZVtzdG9yZV0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICBjYXNlIFwiSU1QT1JUX1NUQVRFXCI6IHtcbiAgICAgICAgICAgIGNvbnN0IHsgbmV4dExpZnRlZFN0YXRlIH0gPSBtZXNzYWdlLnBheWxvYWQ7XG4gICAgICAgICAgICBjb25zdCBsYXN0Q29tcHV0ZWRTdGF0ZSA9IChfYSA9IG5leHRMaWZ0ZWRTdGF0ZS5jb21wdXRlZFN0YXRlcy5zbGljZSgtMSlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfYS5zdGF0ZTtcbiAgICAgICAgICAgIGlmICghbGFzdENvbXB1dGVkU3RhdGUpIHJldHVybjtcbiAgICAgICAgICAgIGlmIChzdG9yZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICAgIHNldFN0YXRlRnJvbURldnRvb2xzKGxhc3RDb21wdXRlZFN0YXRlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldFN0YXRlRnJvbURldnRvb2xzKGxhc3RDb21wdXRlZFN0YXRlW3N0b3JlXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLnNlbmQoXG4gICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgIC8vIEZJWE1FIG5vLWFueVxuICAgICAgICAgICAgICBuZXh0TGlmdGVkU3RhdGVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgXCJQQVVTRV9SRUNPUkRJTkdcIjpcbiAgICAgICAgICAgIHJldHVybiBpc1JlY29yZGluZyA9ICFpc1JlY29yZGluZztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGluaXRpYWxTdGF0ZTtcbn07XG5jb25zdCBkZXZ0b29scyA9IGRldnRvb2xzSW1wbDtcbmNvbnN0IHBhcnNlSnNvblRoZW4gPSAoc3RyaW5naWZpZWQsIGYpID0+IHtcbiAgbGV0IHBhcnNlZDtcbiAgdHJ5IHtcbiAgICBwYXJzZWQgPSBKU09OLnBhcnNlKHN0cmluZ2lmaWVkKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBcIlt6dXN0YW5kIGRldnRvb2xzIG1pZGRsZXdhcmVdIENvdWxkIG5vdCBwYXJzZSB0aGUgcmVjZWl2ZWQganNvblwiLFxuICAgICAgZVxuICAgICk7XG4gIH1cbiAgaWYgKHBhcnNlZCAhPT0gdm9pZCAwKSBmKHBhcnNlZCk7XG59O1xuXG5jb25zdCBzdWJzY3JpYmVXaXRoU2VsZWN0b3JJbXBsID0gKGZuKSA9PiAoc2V0LCBnZXQsIGFwaSkgPT4ge1xuICBjb25zdCBvcmlnU3Vic2NyaWJlID0gYXBpLnN1YnNjcmliZTtcbiAgYXBpLnN1YnNjcmliZSA9IChzZWxlY3Rvciwgb3B0TGlzdGVuZXIsIG9wdGlvbnMpID0+IHtcbiAgICBsZXQgbGlzdGVuZXIgPSBzZWxlY3RvcjtcbiAgICBpZiAob3B0TGlzdGVuZXIpIHtcbiAgICAgIGNvbnN0IGVxdWFsaXR5Rm4gPSAob3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5lcXVhbGl0eUZuKSB8fCBPYmplY3QuaXM7XG4gICAgICBsZXQgY3VycmVudFNsaWNlID0gc2VsZWN0b3IoYXBpLmdldFN0YXRlKCkpO1xuICAgICAgbGlzdGVuZXIgPSAoc3RhdGUpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dFNsaWNlID0gc2VsZWN0b3Ioc3RhdGUpO1xuICAgICAgICBpZiAoIWVxdWFsaXR5Rm4oY3VycmVudFNsaWNlLCBuZXh0U2xpY2UpKSB7XG4gICAgICAgICAgY29uc3QgcHJldmlvdXNTbGljZSA9IGN1cnJlbnRTbGljZTtcbiAgICAgICAgICBvcHRMaXN0ZW5lcihjdXJyZW50U2xpY2UgPSBuZXh0U2xpY2UsIHByZXZpb3VzU2xpY2UpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuZmlyZUltbWVkaWF0ZWx5KSB7XG4gICAgICAgIG9wdExpc3RlbmVyKGN1cnJlbnRTbGljZSwgY3VycmVudFNsaWNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9yaWdTdWJzY3JpYmUobGlzdGVuZXIpO1xuICB9O1xuICBjb25zdCBpbml0aWFsU3RhdGUgPSBmbihzZXQsIGdldCwgYXBpKTtcbiAgcmV0dXJuIGluaXRpYWxTdGF0ZTtcbn07XG5jb25zdCBzdWJzY3JpYmVXaXRoU2VsZWN0b3IgPSBzdWJzY3JpYmVXaXRoU2VsZWN0b3JJbXBsO1xuXG5jb25zdCBjb21iaW5lID0gKGluaXRpYWxTdGF0ZSwgY3JlYXRlKSA9PiAoLi4uYSkgPT4gT2JqZWN0LmFzc2lnbih7fSwgaW5pdGlhbFN0YXRlLCBjcmVhdGUoLi4uYSkpO1xuXG5mdW5jdGlvbiBjcmVhdGVKU09OU3RvcmFnZShnZXRTdG9yYWdlLCBvcHRpb25zKSB7XG4gIGxldCBzdG9yYWdlO1xuICB0cnkge1xuICAgIHN0b3JhZ2UgPSBnZXRTdG9yYWdlKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgcGVyc2lzdFN0b3JhZ2UgPSB7XG4gICAgZ2V0SXRlbTogKG5hbWUpID0+IHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGNvbnN0IHBhcnNlID0gKHN0cjIpID0+IHtcbiAgICAgICAgaWYgKHN0cjIgPT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShzdHIyLCBvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLnJldml2ZXIpO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IHN0ciA9IChfYSA9IHN0b3JhZ2UuZ2V0SXRlbShuYW1lKSkgIT0gbnVsbCA/IF9hIDogbnVsbDtcbiAgICAgIGlmIChzdHIgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgIHJldHVybiBzdHIudGhlbihwYXJzZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFyc2Uoc3RyKTtcbiAgICB9LFxuICAgIHNldEl0ZW06IChuYW1lLCBuZXdWYWx1ZSkgPT4gc3RvcmFnZS5zZXRJdGVtKFxuICAgICAgbmFtZSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KG5ld1ZhbHVlLCBvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLnJlcGxhY2VyKVxuICAgICksXG4gICAgcmVtb3ZlSXRlbTogKG5hbWUpID0+IHN0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKVxuICB9O1xuICByZXR1cm4gcGVyc2lzdFN0b3JhZ2U7XG59XG5jb25zdCB0b1RoZW5hYmxlID0gKGZuKSA9PiAoaW5wdXQpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBmbihpbnB1dCk7XG4gICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB0aGVuKG9uRnVsZmlsbGVkKSB7XG4gICAgICAgIHJldHVybiB0b1RoZW5hYmxlKG9uRnVsZmlsbGVkKShyZXN1bHQpO1xuICAgICAgfSxcbiAgICAgIGNhdGNoKF9vblJlamVjdGVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGhlbihfb25GdWxmaWxsZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgY2F0Y2gob25SZWplY3RlZCkge1xuICAgICAgICByZXR1cm4gdG9UaGVuYWJsZShvblJlamVjdGVkKShlKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG59O1xuY29uc3QgcGVyc2lzdEltcGwgPSAoY29uZmlnLCBiYXNlT3B0aW9ucykgPT4gKHNldCwgZ2V0LCBhcGkpID0+IHtcbiAgbGV0IG9wdGlvbnMgPSB7XG4gICAgc3RvcmFnZTogY3JlYXRlSlNPTlN0b3JhZ2UoKCkgPT4gbG9jYWxTdG9yYWdlKSxcbiAgICBwYXJ0aWFsaXplOiAoc3RhdGUpID0+IHN0YXRlLFxuICAgIHZlcnNpb246IDAsXG4gICAgbWVyZ2U6IChwZXJzaXN0ZWRTdGF0ZSwgY3VycmVudFN0YXRlKSA9PiAoe1xuICAgICAgLi4uY3VycmVudFN0YXRlLFxuICAgICAgLi4ucGVyc2lzdGVkU3RhdGVcbiAgICB9KSxcbiAgICAuLi5iYXNlT3B0aW9uc1xuICB9O1xuICBsZXQgaGFzSHlkcmF0ZWQgPSBmYWxzZTtcbiAgY29uc3QgaHlkcmF0aW9uTGlzdGVuZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgY29uc3QgZmluaXNoSHlkcmF0aW9uTGlzdGVuZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgbGV0IHN0b3JhZ2UgPSBvcHRpb25zLnN0b3JhZ2U7XG4gIGlmICghc3RvcmFnZSkge1xuICAgIHJldHVybiBjb25maWcoXG4gICAgICAoLi4uYXJncykgPT4ge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYFt6dXN0YW5kIHBlcnNpc3QgbWlkZGxld2FyZV0gVW5hYmxlIHRvIHVwZGF0ZSBpdGVtICcke29wdGlvbnMubmFtZX0nLCB0aGUgZ2l2ZW4gc3RvcmFnZSBpcyBjdXJyZW50bHkgdW5hdmFpbGFibGUuYFxuICAgICAgICApO1xuICAgICAgICBzZXQoLi4uYXJncyk7XG4gICAgICB9LFxuICAgICAgZ2V0LFxuICAgICAgYXBpXG4gICAgKTtcbiAgfVxuICBjb25zdCBzZXRJdGVtID0gKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gb3B0aW9ucy5wYXJ0aWFsaXplKHsgLi4uZ2V0KCkgfSk7XG4gICAgcmV0dXJuIHN0b3JhZ2Uuc2V0SXRlbShvcHRpb25zLm5hbWUsIHtcbiAgICAgIHN0YXRlLFxuICAgICAgdmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uXG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IHNhdmVkU2V0U3RhdGUgPSBhcGkuc2V0U3RhdGU7XG4gIGFwaS5zZXRTdGF0ZSA9IChzdGF0ZSwgcmVwbGFjZSkgPT4ge1xuICAgIHNhdmVkU2V0U3RhdGUoc3RhdGUsIHJlcGxhY2UpO1xuICAgIHZvaWQgc2V0SXRlbSgpO1xuICB9O1xuICBjb25zdCBjb25maWdSZXN1bHQgPSBjb25maWcoXG4gICAgKC4uLmFyZ3MpID0+IHtcbiAgICAgIHNldCguLi5hcmdzKTtcbiAgICAgIHZvaWQgc2V0SXRlbSgpO1xuICAgIH0sXG4gICAgZ2V0LFxuICAgIGFwaVxuICApO1xuICBhcGkuZ2V0SW5pdGlhbFN0YXRlID0gKCkgPT4gY29uZmlnUmVzdWx0O1xuICBsZXQgc3RhdGVGcm9tU3RvcmFnZTtcbiAgY29uc3QgaHlkcmF0ZSA9ICgpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGlmICghc3RvcmFnZSkgcmV0dXJuO1xuICAgIGhhc0h5ZHJhdGVkID0gZmFsc2U7XG4gICAgaHlkcmF0aW9uTGlzdGVuZXJzLmZvckVhY2goKGNiKSA9PiB7XG4gICAgICB2YXIgX2EyO1xuICAgICAgcmV0dXJuIGNiKChfYTIgPSBnZXQoKSkgIT0gbnVsbCA/IF9hMiA6IGNvbmZpZ1Jlc3VsdCk7XG4gICAgfSk7XG4gICAgY29uc3QgcG9zdFJlaHlkcmF0aW9uQ2FsbGJhY2sgPSAoKF9iID0gb3B0aW9ucy5vblJlaHlkcmF0ZVN0b3JhZ2UpID09IG51bGwgPyB2b2lkIDAgOiBfYi5jYWxsKG9wdGlvbnMsIChfYSA9IGdldCgpKSAhPSBudWxsID8gX2EgOiBjb25maWdSZXN1bHQpKSB8fCB2b2lkIDA7XG4gICAgcmV0dXJuIHRvVGhlbmFibGUoc3RvcmFnZS5nZXRJdGVtLmJpbmQoc3RvcmFnZSkpKG9wdGlvbnMubmFtZSkudGhlbigoZGVzZXJpYWxpemVkU3RvcmFnZVZhbHVlKSA9PiB7XG4gICAgICBpZiAoZGVzZXJpYWxpemVkU3RvcmFnZVZhbHVlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZGVzZXJpYWxpemVkU3RvcmFnZVZhbHVlLnZlcnNpb24gPT09IFwibnVtYmVyXCIgJiYgZGVzZXJpYWxpemVkU3RvcmFnZVZhbHVlLnZlcnNpb24gIT09IG9wdGlvbnMudmVyc2lvbikge1xuICAgICAgICAgIGlmIChvcHRpb25zLm1pZ3JhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgIHRydWUsXG4gICAgICAgICAgICAgIG9wdGlvbnMubWlncmF0ZShcbiAgICAgICAgICAgICAgICBkZXNlcmlhbGl6ZWRTdG9yYWdlVmFsdWUuc3RhdGUsXG4gICAgICAgICAgICAgICAgZGVzZXJpYWxpemVkU3RvcmFnZVZhbHVlLnZlcnNpb25cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIGBTdGF0ZSBsb2FkZWQgZnJvbSBzdG9yYWdlIGNvdWxkbid0IGJlIG1pZ3JhdGVkIHNpbmNlIG5vIG1pZ3JhdGUgZnVuY3Rpb24gd2FzIHByb3ZpZGVkYFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFtmYWxzZSwgZGVzZXJpYWxpemVkU3RvcmFnZVZhbHVlLnN0YXRlXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIFtmYWxzZSwgdm9pZCAwXTtcbiAgICB9KS50aGVuKChtaWdyYXRpb25SZXN1bHQpID0+IHtcbiAgICAgIHZhciBfYTI7XG4gICAgICBjb25zdCBbbWlncmF0ZWQsIG1pZ3JhdGVkU3RhdGVdID0gbWlncmF0aW9uUmVzdWx0O1xuICAgICAgc3RhdGVGcm9tU3RvcmFnZSA9IG9wdGlvbnMubWVyZ2UoXG4gICAgICAgIG1pZ3JhdGVkU3RhdGUsXG4gICAgICAgIChfYTIgPSBnZXQoKSkgIT0gbnVsbCA/IF9hMiA6IGNvbmZpZ1Jlc3VsdFxuICAgICAgKTtcbiAgICAgIHNldChzdGF0ZUZyb21TdG9yYWdlLCB0cnVlKTtcbiAgICAgIGlmIChtaWdyYXRlZCkge1xuICAgICAgICByZXR1cm4gc2V0SXRlbSgpO1xuICAgICAgfVxuICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgcG9zdFJlaHlkcmF0aW9uQ2FsbGJhY2sgPT0gbnVsbCA/IHZvaWQgMCA6IHBvc3RSZWh5ZHJhdGlvbkNhbGxiYWNrKHN0YXRlRnJvbVN0b3JhZ2UsIHZvaWQgMCk7XG4gICAgICBzdGF0ZUZyb21TdG9yYWdlID0gZ2V0KCk7XG4gICAgICBoYXNIeWRyYXRlZCA9IHRydWU7XG4gICAgICBmaW5pc2hIeWRyYXRpb25MaXN0ZW5lcnMuZm9yRWFjaCgoY2IpID0+IGNiKHN0YXRlRnJvbVN0b3JhZ2UpKTtcbiAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgcG9zdFJlaHlkcmF0aW9uQ2FsbGJhY2sgPT0gbnVsbCA/IHZvaWQgMCA6IHBvc3RSZWh5ZHJhdGlvbkNhbGxiYWNrKHZvaWQgMCwgZSk7XG4gICAgfSk7XG4gIH07XG4gIGFwaS5wZXJzaXN0ID0ge1xuICAgIHNldE9wdGlvbnM6IChuZXdPcHRpb25zKSA9PiB7XG4gICAgICBvcHRpb25zID0ge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAuLi5uZXdPcHRpb25zXG4gICAgICB9O1xuICAgICAgaWYgKG5ld09wdGlvbnMuc3RvcmFnZSkge1xuICAgICAgICBzdG9yYWdlID0gbmV3T3B0aW9ucy5zdG9yYWdlO1xuICAgICAgfVxuICAgIH0sXG4gICAgY2xlYXJTdG9yYWdlOiAoKSA9PiB7XG4gICAgICBzdG9yYWdlID09IG51bGwgPyB2b2lkIDAgOiBzdG9yYWdlLnJlbW92ZUl0ZW0ob3B0aW9ucy5uYW1lKTtcbiAgICB9LFxuICAgIGdldE9wdGlvbnM6ICgpID0+IG9wdGlvbnMsXG4gICAgcmVoeWRyYXRlOiAoKSA9PiBoeWRyYXRlKCksXG4gICAgaGFzSHlkcmF0ZWQ6ICgpID0+IGhhc0h5ZHJhdGVkLFxuICAgIG9uSHlkcmF0ZTogKGNiKSA9PiB7XG4gICAgICBoeWRyYXRpb25MaXN0ZW5lcnMuYWRkKGNiKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGh5ZHJhdGlvbkxpc3RlbmVycy5kZWxldGUoY2IpO1xuICAgICAgfTtcbiAgICB9LFxuICAgIG9uRmluaXNoSHlkcmF0aW9uOiAoY2IpID0+IHtcbiAgICAgIGZpbmlzaEh5ZHJhdGlvbkxpc3RlbmVycy5hZGQoY2IpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZmluaXNoSHlkcmF0aW9uTGlzdGVuZXJzLmRlbGV0ZShjYik7XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgaWYgKCFvcHRpb25zLnNraXBIeWRyYXRpb24pIHtcbiAgICBoeWRyYXRlKCk7XG4gIH1cbiAgcmV0dXJuIHN0YXRlRnJvbVN0b3JhZ2UgfHwgY29uZmlnUmVzdWx0O1xufTtcbmNvbnN0IHBlcnNpc3QgPSBwZXJzaXN0SW1wbDtcblxuZXhwb3J0IHsgY29tYmluZSwgY3JlYXRlSlNPTlN0b3JhZ2UsIGRldnRvb2xzLCBwZXJzaXN0LCByZWR1eCwgc3Vic2NyaWJlV2l0aFNlbGVjdG9yIH07XG4iLCJjb25zdCBjcmVhdGVTdG9yZUltcGwgPSAoY3JlYXRlU3RhdGUpID0+IHtcbiAgbGV0IHN0YXRlO1xuICBjb25zdCBsaXN0ZW5lcnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICBjb25zdCBzZXRTdGF0ZSA9IChwYXJ0aWFsLCByZXBsYWNlKSA9PiB7XG4gICAgY29uc3QgbmV4dFN0YXRlID0gdHlwZW9mIHBhcnRpYWwgPT09IFwiZnVuY3Rpb25cIiA/IHBhcnRpYWwoc3RhdGUpIDogcGFydGlhbDtcbiAgICBpZiAoIU9iamVjdC5pcyhuZXh0U3RhdGUsIHN0YXRlKSkge1xuICAgICAgY29uc3QgcHJldmlvdXNTdGF0ZSA9IHN0YXRlO1xuICAgICAgc3RhdGUgPSAocmVwbGFjZSAhPSBudWxsID8gcmVwbGFjZSA6IHR5cGVvZiBuZXh0U3RhdGUgIT09IFwib2JqZWN0XCIgfHwgbmV4dFN0YXRlID09PSBudWxsKSA/IG5leHRTdGF0ZSA6IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCBuZXh0U3RhdGUpO1xuICAgICAgbGlzdGVuZXJzLmZvckVhY2goKGxpc3RlbmVyKSA9PiBsaXN0ZW5lcihzdGF0ZSwgcHJldmlvdXNTdGF0ZSkpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZ2V0U3RhdGUgPSAoKSA9PiBzdGF0ZTtcbiAgY29uc3QgZ2V0SW5pdGlhbFN0YXRlID0gKCkgPT4gaW5pdGlhbFN0YXRlO1xuICBjb25zdCBzdWJzY3JpYmUgPSAobGlzdGVuZXIpID0+IHtcbiAgICBsaXN0ZW5lcnMuYWRkKGxpc3RlbmVyKTtcbiAgICByZXR1cm4gKCkgPT4gbGlzdGVuZXJzLmRlbGV0ZShsaXN0ZW5lcik7XG4gIH07XG4gIGNvbnN0IGFwaSA9IHsgc2V0U3RhdGUsIGdldFN0YXRlLCBnZXRJbml0aWFsU3RhdGUsIHN1YnNjcmliZSB9O1xuICBjb25zdCBpbml0aWFsU3RhdGUgPSBzdGF0ZSA9IGNyZWF0ZVN0YXRlKHNldFN0YXRlLCBnZXRTdGF0ZSwgYXBpKTtcbiAgcmV0dXJuIGFwaTtcbn07XG5jb25zdCBjcmVhdGVTdG9yZSA9IChjcmVhdGVTdGF0ZSkgPT4gY3JlYXRlU3RhdGUgPyBjcmVhdGVTdG9yZUltcGwoY3JlYXRlU3RhdGUpIDogY3JlYXRlU3RvcmVJbXBsO1xuXG5leHBvcnQgeyBjcmVhdGVTdG9yZSB9O1xuIiwiaW1wb3J0IHsgcGVyc2lzdCwgY3JlYXRlSlNPTlN0b3JhZ2UgfSBmcm9tIFwienVzdGFuZC9taWRkbGV3YXJlXCI7XG5pbXBvcnQgeyBjcmVhdGVTdG9yZSB9IGZyb20gXCJ6dXN0YW5kL3ZhbmlsbGFcIjtcblxuLy8gVE9ETzogY2FydCBzaG91bGQgYmUgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudCBwcm9qZWN0XG50eXBlIFdpZGdldFN0YXRlID0ge1xuICAgIGlzT3BlbjogYm9vbGVhbjtcbiAgICBpc1Jlc3VtZVBhbmVsVmlzaWJsZTogYm9vbGVhbjtcbiAgICBpc1JlYWR5OiBib29sZWFuO1xuICAgIGlzQm9va2luZ0NvbXBsZXRlZDogYm9vbGVhbjtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgICBwcmltYXJ5R3Vlc3ROYW1lOiBzdHJpbmcgfCBudWxsO1xuICAgIGNoZWNrSW5EYXRlOiBzdHJpbmcgfCBudWxsO1xuICAgIGNoZWNrT3V0RGF0ZTogc3RyaW5nIHwgbnVsbDtcbiAgICBjYXJ0OiBhbnk7XG59O1xuXG50eXBlIEFjdGlvbnMgPSB7XG4gICAgc2hvd1dpZGdldDogKCkgPT4gdm9pZDtcbiAgICBoaWRlV2lkZ2V0OiAoKSA9PiB2b2lkO1xuICAgIHNob3dSZXN1bWVQYW5lbDogKCkgPT4gdm9pZDtcbiAgICBoaWRlUmVzdW1lUGFuZWw6ICgpID0+IHZvaWQ7XG4gICAgc2V0SXNSZWFkeTogKGlzUmVhZHk6IGJvb2xlYW4pID0+IHZvaWQ7XG4gICAgc2V0SXNCb29raW5nQ29tcGxldGVkOiAoaXNDb21wbGV0ZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gICAgc2V0QmFja2dyb3VuZENvbG9yOiAoY29sb3I/OiBzdHJpbmcpID0+IHZvaWQ7XG4gICAgc2V0UHJpbWFyeUd1ZXN0TmFtZTogKG5hbWU6IHN0cmluZykgPT4gdm9pZDtcbiAgICBzZXRDYXJ0OiAoY2FydD86IGFueSkgPT4gdm9pZDtcbiAgICBzZXREYXRlczogKGNoZWNrSW5EYXRlOiBzdHJpbmcsIGNoZWNrT3V0RGF0ZTogc3RyaW5nKSA9PiB2b2lkO1xuICAgIHJlc2V0OiAoKSA9PiB2b2lkO1xufTtcblxuY29uc3QgaW5pdGlhbFdpZGdldFN0YXRlOiBXaWRnZXRTdGF0ZSA9IHtcbiAgICBpc09wZW46IGZhbHNlLFxuICAgIGlzUmVzdW1lUGFuZWxWaXNpYmxlOiBmYWxzZSxcbiAgICBpc1JlYWR5OiBmYWxzZSxcbiAgICBpc0Jvb2tpbmdDb21wbGV0ZWQ6IGZhbHNlLFxuICAgIGJhY2tncm91bmRDb2xvcjogXCJyZ2IoMzUsIDc2LCAxMjEpXCIsXG4gICAgcHJpbWFyeUd1ZXN0TmFtZTogbnVsbCxcbiAgICBjaGVja0luRGF0ZTogbnVsbCxcbiAgICBjaGVja091dERhdGU6IG51bGwsXG4gICAgY2FydDoge30sXG59O1xuXG5leHBvcnQgY29uc3Qgd2lkZ2V0U3RvcmUgPSBjcmVhdGVTdG9yZTxXaWRnZXRTdGF0ZSAmIEFjdGlvbnM+KCkoXG4gICAgcGVyc2lzdChcbiAgICAgICAgKHNldCkgPT4gKHtcbiAgICAgICAgICAgIC4uLmluaXRpYWxXaWRnZXRTdGF0ZSxcbiAgICAgICAgICAgIHNob3dXaWRnZXQ6ICgpID0+IHNldCh7IGlzT3BlbjogdHJ1ZSB9KSxcbiAgICAgICAgICAgIGhpZGVXaWRnZXQ6ICgpID0+IHNldCh7IGlzT3BlbjogZmFsc2UgfSksXG4gICAgICAgICAgICBzaG93UmVzdW1lUGFuZWw6ICgpID0+IHNldCh7IGlzUmVzdW1lUGFuZWxWaXNpYmxlOiB0cnVlIH0pLFxuICAgICAgICAgICAgaGlkZVJlc3VtZVBhbmVsOiAoKSA9PiBzZXQoeyBpc1Jlc3VtZVBhbmVsVmlzaWJsZTogZmFsc2UgfSksXG4gICAgICAgICAgICBzZXRJc1JlYWR5OiAoaXNSZWFkeSkgPT4gc2V0KHsgaXNSZWFkeSB9KSxcbiAgICAgICAgICAgIHNldElzQm9va2luZ0NvbXBsZXRlZDogKGlzQm9va2luZ0NvbXBsZXRlZCkgPT4gc2V0KHsgaXNCb29raW5nQ29tcGxldGVkIH0pLFxuICAgICAgICAgICAgc2V0QmFja2dyb3VuZENvbG9yOiAoYmFja2dyb3VuZENvbG9yKSA9PlxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvclxuICAgICAgICAgICAgICAgICAgICA/IHNldCh7IGJhY2tncm91bmRDb2xvciB9KVxuICAgICAgICAgICAgICAgICAgICA6IHNldCh7IGJhY2tncm91bmRDb2xvcjogaW5pdGlhbFdpZGdldFN0YXRlLmJhY2tncm91bmRDb2xvciB9KSxcbiAgICAgICAgICAgIHNldFByaW1hcnlHdWVzdE5hbWU6IChwcmltYXJ5R3Vlc3ROYW1lKSA9PiBzZXQoeyBwcmltYXJ5R3Vlc3ROYW1lIH0pLFxuICAgICAgICAgICAgc2V0Q2FydDogKGNhcnQpID0+IHNldCh7IGNhcnQgfSksXG4gICAgICAgICAgICBzZXREYXRlczogKGNoZWNrSW5EYXRlLCBjaGVja091dERhdGUpID0+IHNldCh7IGNoZWNrSW5EYXRlLCBjaGVja091dERhdGUgfSksXG4gICAgICAgICAgICByZXNldDogKCkgPT4gc2V0KGluaXRpYWxXaWRnZXRTdGF0ZSksXG4gICAgICAgIH0pLFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIndpZGdldFN0b3JlXCIsXG4gICAgICAgICAgICBzdG9yYWdlOiBjcmVhdGVKU09OU3RvcmFnZSgoKSA9PiBzZXNzaW9uU3RvcmFnZSksXG4gICAgICAgICAgICBwYXJ0aWFsaXplOiAoc3RhdGUpID0+XG4gICAgICAgICAgICAgICAgT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHN0YXRlKS5maWx0ZXIoKFtrZXldKSA9PiAhW1wiY2FydFwiLCBcImlzUmVhZHlcIl0uaW5jbHVkZXMoa2V5KSkpLFxuICAgICAgICAgICAgb25SZWh5ZHJhdGVTdG9yYWdlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGU/LmlzQm9va2luZ0NvbXBsZXRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgKVxuKTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7IFNES19TQ1JJUFRfSUQsIFRSSVBGVVNJT05fQkFTRV9VUkwgfSBmcm9tIFwiLi9jb25zdFwiO1xuXG5leHBvcnQgY29uc3Qgc3RyaW5naWZ5UHJpY2UgPSAoY2VudHM6IG51bWJlciB8IG51bGwpID0+XG4gICAgY2VudHMgIT09IG51bGwgPyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoXCJlbi1VU1wiLCB7IHN0eWxlOiBcImN1cnJlbmN5XCIsIGN1cnJlbmN5OiBcIlVTRFwiIH0pLmZvcm1hdChjZW50cyAvIDEwMCkgOiBcIlwiO1xuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdFBhcmFtcyA9ICgpID0+IHtcbiAgICBjb25zdCAkanNTZGsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChTREtfU0NSSVBUX0lEKSBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBqc1Nka1NyYyA9ICRqc1Nkay5nZXRBdHRyaWJ1dGUoXCJzcmNcIikgYXMgc3RyaW5nO1xuICAgIGNvbnN0IHVybFBhcmFtcyA9IGdldFBhcmFtc0Zyb21VcmwobmV3IFVSTFNlYXJjaFBhcmFtcyhqc1Nka1NyYy5zdWJzdHJpbmcoanNTZGtTcmMuaW5kZXhPZihcIj9cIikpKSk7XG5cbiAgICBjb25zdCBjbGllbnQgPSB1cmxQYXJhbXNbXCJjbGllbnRcIl0gPz8gbnVsbDtcbiAgICBjb25zdCBwcm9wZXJ0eUlkID0gdXJsUGFyYW1zW1wicHJvcGVydHlJZFwiXSA/ICt1cmxQYXJhbXNbXCJwcm9wZXJ0eUlkXCJdIDogbnVsbDtcblxuICAgIHJldHVybiB7IGNsaWVudCwgcHJvcGVydHlJZCB9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBhcmFtc0Zyb21VcmwodXJsU2VhcmNoUGFyYW1zOiBVUkxTZWFyY2hQYXJhbXMpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBhdmFpbGFibGVTZWFyY2hQYXJhbXNNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgIHRyaXBmdXNpb246IFwidHJpcGZ1c2lvblwiLFxuICAgICAgICBjbGllbnQ6IFwiY2xpZW50XCIsXG4gICAgICAgIHByb3BlcnR5aWQ6IFwicHJvcGVydHlJZFwiLFxuICAgICAgICBtb2RlOiBcIm1vZGVcIixcbiAgICAgICAgb2ZmZXJpZDogXCJvZmZlcklkXCIsXG4gICAgICAgIGJvb2tpbmdpZDogXCJib29raW5nSWRcIixcbiAgICAgICAgY2hlY2tpbjogXCJjaGVja0luXCIsXG4gICAgICAgIGNoZWNrb3V0OiBcImNoZWNrT3V0XCIsXG4gICAgICAgIGFkdWx0czogXCJhZHVsdHNcIixcbiAgICAgICAgY2hpbGRyZW46IFwiY2hpbGRyZW5cIixcbiAgICB9O1xuICAgIHJldHVybiBBcnJheS5mcm9tKHVybFNlYXJjaFBhcmFtcy5lbnRyaWVzKCkpLnJlZHVjZShcbiAgICAgICAgKHByZXYsIFtzZWFyY2hQYXJhbUtleSwgc2VhcmNoUGFyYW1WYWx1ZV0pID0+ICh7XG4gICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgW2F2YWlsYWJsZVNlYXJjaFBhcmFtc01hcFtzZWFyY2hQYXJhbUtleS50b0xvd2VyQ2FzZSgpXV06IHNlYXJjaFBhcmFtVmFsdWUsXG4gICAgICAgIH0pLFxuICAgICAgICB7fVxuICAgICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2dnZXIobWVzc2FnZTogc3RyaW5nLCB0eXBlOiBcImVycm9yXCIgfCBcImxvZ1wiID0gXCJlcnJvclwiKSB7XG4gICAgY29uc3QgdXJsID0gYCR7VFJJUEZVU0lPTl9CQVNFX1VSTH1hcGkvdmFjYXlvdS9sb2dgO1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIHBhZ2U6IHdpbmRvdy5sb2NhdGlvbi5ocmVmLFxuICAgIH07XG4gICAgY29uc3QgaGVhZGVycyA9IHtcbiAgICAgICAgXCJjb250ZW50LXR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgfTtcbiAgICByZXR1cm4gZmV0Y2godXJsLCB7XG4gICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICB9KSxcbiAgICAgICAgaGVhZGVycyxcbiAgICB9KVxuICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmpzb24oKSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBUcmlwZnVzaW9uOiBmYWlsZWQgdG8gbG9nIG1lc3NhZ2U6ICR7ZXJyb3J9YCk7XG4gICAgICAgIH0pO1xufVxuIiwiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHR5cGUgeyBHbG9iYWxTdGF0ZSB9IGZyb20gXCIuL3N0b3JlL2dsb2JhbC5zdG9yZVwiO1xuaW1wb3J0IHtcbiAgICBCT09LSU5HX01PREUsXG4gICAgTE9BREVSX0lELFxuICAgIFJFU1VNRV9QQU5FTF9JRCxcbiAgICBUUklQRlVTSU9OX0JBU0VfVVJMLFxuICAgIFdJREdFVF9DTE9TRV9CVVRUT05fSUQsXG4gICAgV0lER0VUX0hFQURFUl9JRCxcbiAgICBXSURHRVRfSEVBREVSX1RJVExFX0lELFxuICAgIFdJREdFVF9JRCxcbiAgICBXSURHRVRfSUZSQU1FX0lELFxuICAgIFdJREdFVF9JTk5FUl9XUkFQUEVSX0lELFxuICAgIFdJREdFVF9XUkFQUEVSX0lELFxufSBmcm9tIFwiLi9jb25zdFwiO1xuaW1wb3J0IHsgd2lkZ2V0U3RvcmUgfSBmcm9tIFwiLi9zdG9yZS93aWRnZXQuc3RvcmVcIjtcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5TG9hZGluZ092ZXJsYXkoKSB7XG4gICAgY29uc3QgJHdpZGdldFdyYXBwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChXSURHRVRfV1JBUFBFUl9JRCk7XG5cbiAgICBpZiAoJHdpZGdldFdyYXBwZXIpIHtcbiAgICAgICAgY29uc3QgJGxvYWRpbmdEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICAkbG9hZGluZ0Rpdi5pZCA9IExPQURFUl9JRDtcbiAgICAgICAgJGxvYWRpbmdEaXYuaW5uZXJIVE1MID0gXCJMb2FkaW5nIDxzcGFuPlRyaXBGdXNpb248L3NwYW4+XCI7XG4gICAgICAgICR3aWRnZXRXcmFwcGVyLmFwcGVuZENoaWxkKCRsb2FkaW5nRGl2KTtcblxuICAgICAgICAkd2lkZ2V0V3JhcHBlci5zdHlsZS56SW5kZXggPSBgJHsxZTExfWA7XG4gICAgICAgICR3aWRnZXRXcmFwcGVyLnN0eWxlLmhlaWdodCA9IFwiMTAwJVwiO1xuICAgICAgICAkd2lkZ2V0V3JhcHBlci5zdHlsZS5iYWNrZ3JvdW5kID0gXCJyZ2JhKDAsIDAsIDAsIC43NClcIjtcbiAgICAgICAgbG9ja1BhZ2VTY3JvbGwoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoaWRlTG9hZGluZ092ZXJsYXkoKSB7XG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoTE9BREVSX0lEKT8ucmVtb3ZlKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlRG9tKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgc2hvd1dpZGdldCwgaGlkZVdpZGdldCwgc2hvd1Jlc3VtZVBhbmVsLCBoaWRlUmVzdW1lUGFuZWwgfSA9IHdpZGdldFN0b3JlLmdldFN0YXRlKCk7XG4gICAgICAgIGNvbnN0ICR3aWRnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLFxuICAgICAgICAgICAgJHdpZGdldFdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLFxuICAgICAgICAgICAgJHdpZGdldElubmVyV3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksXG4gICAgICAgICAgICAkd2lkZ2V0SGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxcbiAgICAgICAgICAgICR3aWRnZXRIZWFkZXJUaXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpLFxuICAgICAgICAgICAgJHdpZGdldENsb3NlQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiKSxcbiAgICAgICAgICAgICRyZXN1bWVQYW5lbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cbiAgICAgICAgJHJlc3VtZVBhbmVsLmlkID0gUkVTVU1FX1BBTkVMX0lEO1xuXG4gICAgICAgICRyZXN1bWVQYW5lbD8uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgICAgIHNob3dXaWRnZXQoKTtcbiAgICAgICAgICAgIGhpZGVSZXN1bWVQYW5lbCgpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBDb25maWd1cmUgd2lkZ2V0IGFuZCB3cmFwcGVyXG4gICAgICAgICR3aWRnZXQuaWQgPSBXSURHRVRfSUQ7XG4gICAgICAgICR3aWRnZXQuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgICAgICAkd2lkZ2V0V3JhcHBlci5pZCA9IFdJREdFVF9XUkFQUEVSX0lEO1xuICAgICAgICAkd2lkZ2V0LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzID09PSBldmVudC50YXJnZXQpIHtcbiAgICAgICAgICAgICAgICBoaWRlV2lkZ2V0KCk7XG4gICAgICAgICAgICAgICAgc2hvd1Jlc3VtZVBhbmVsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIENvbmZpZ3VyZSB3aWRnZXQgaW5uZXIgd3JhcHBlclxuICAgICAgICAkd2lkZ2V0SW5uZXJXcmFwcGVyLmlkID0gV0lER0VUX0lOTkVSX1dSQVBQRVJfSUQ7XG4gICAgICAgICR3aWRnZXRIZWFkZXIuaWQgPSBXSURHRVRfSEVBREVSX0lEO1xuICAgICAgICAkd2lkZ2V0Q2xvc2VCdXR0b24uaWQgPSBXSURHRVRfQ0xPU0VfQlVUVE9OX0lEO1xuICAgICAgICAkd2lkZ2V0Q2xvc2VCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgICAgIGhpZGVXaWRnZXQoKTtcbiAgICAgICAgICAgIHNob3dSZXN1bWVQYW5lbCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgJHdpZGdldEhlYWRlclRpdGxlLmlkID0gV0lER0VUX0hFQURFUl9USVRMRV9JRDtcbiAgICAgICAgJHdpZGdldEhlYWRlclRpdGxlLmlubmVySFRNTCA9IFwiQm9va2luZ1wiO1xuXG4gICAgICAgIC8vIEFwcGVuZCB3aWRnZXQgdG8gd3JhcHBlciBhbmQgd3JhcHBlciB0byBkb2N1bWVudCBib2R5XG4gICAgICAgICR3aWRnZXRXcmFwcGVyLmFwcGVuZENoaWxkKCR3aWRnZXQpO1xuICAgICAgICAkd2lkZ2V0LmFwcGVuZENoaWxkKCR3aWRnZXRJbm5lcldyYXBwZXIpO1xuICAgICAgICAkd2lkZ2V0SW5uZXJXcmFwcGVyLmFwcGVuZENoaWxkKCR3aWRnZXRIZWFkZXIpO1xuICAgICAgICAkd2lkZ2V0SGVhZGVyLmFwcGVuZENoaWxkKCR3aWRnZXRIZWFkZXJUaXRsZSk7XG4gICAgICAgICR3aWRnZXRIZWFkZXIuYXBwZW5kQ2hpbGQoJHdpZGdldENsb3NlQnV0dG9uKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCgkd2lkZ2V0V3JhcHBlcik7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoJHJlc3VtZVBhbmVsKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIoYFdpZGdldDogRXJyb3IgcHJlcGFyaW5nIERPTTogJHtlcnJvcn1gKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlRyaXBmdXNpb246IEVycm9yIHByZXBhcmluZyBET006IFwiLCBlcnJvcik7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyUmVzdW1lUGFuZWwoe1xuICAgIGhlYWRlclRleHQsXG4gICAgc3ViaGVhZGVyVGV4dCxcbiAgICBmb290ZXJUZXh0LFxufToge1xuICAgIGhlYWRlclRleHQ6IHN0cmluZztcbiAgICBzdWJoZWFkZXJUZXh0Pzogc3RyaW5nO1xuICAgIGZvb3RlclRleHQ/OiBzdHJpbmc7XG59KSB7XG4gICAgY29uc3QgJHJlc3VtZVBhbmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoUkVTVU1FX1BBTkVMX0lEKSBhcyBIVE1MRWxlbWVudDtcblxuICAgICRyZXN1bWVQYW5lbC5pbm5lckhUTUwgPSBgXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX2hlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPiR7aGVhZGVyVGV4dH08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgaWQ9XCJMYXllcl8xXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHZpZXdCb3g9XCIwIDAgMzMwIDMzMFwiIHhtbDpzcGFjZT1cInByZXNlcnZlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfMjIyX1wiIGQ9XCJNMjUwLjYwNiwxNTQuMzg5bC0xNTAtMTQ5Ljk5NmMtNS44NTctNS44NTgtMTUuMzU1LTUuODU4LTIxLjIxMywwLjAwMWMtNS44NTcsNS44NTgtNS44NTcsMTUuMzU1LDAuMDAxLDIxLjIxM2wxMzkuMzkzLDEzOS4zOUw3OS4zOTMsMzA0LjM5NGMtNS44NTcsNS44NTgtNS44NTcsMTUuMzU1LDAuMDAxLDIxLjIxM0M4Mi4zMjIsMzI4LjUzNiw4Ni4xNjEsMzMwLDkwLDMzMHM3LjY3OC0xLjQ2NCwxMC42MDctNC4zOTRsMTQ5Ljk5OS0xNTAuMDA0YzIuODE0LTIuODEzLDQuMzk0LTYuNjI4LDQuMzk0LTEwLjYwNkMyNTUsMTYxLjAxOCwyNTMuNDIsMTU3LjIwMiwyNTAuNjA2LDE1NC4zODl6XCIvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAke3N1YmhlYWRlclRleHQgJiYgYDxzcGFuIGNsYXNzPVwidHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX3N1YmhlYWRlclwiPiR7c3ViaGVhZGVyVGV4dH08L3NwYW4+YH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgICR7Zm9vdGVyVGV4dCAmJiBgPHNwYW4gY2xhc3M9XCJ0cmlwZnVzaW9uLXJlc3VtZS1wYW5lbF9fZm9vdGVyXCI+JHtmb290ZXJUZXh0fTwvc3Bhbj5gfVxuICAgIGA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93UmVzdW1lUGFuZWxEb20oKSB7XG4gICAgY29uc3QgJHJlc3VtZVBhbmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoUkVTVU1FX1BBTkVMX0lEKSBhcyBIVE1MRWxlbWVudDtcbiAgICAkcmVzdW1lUGFuZWwuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgXCJ0cmlwZnVzaW9uLXJlc3VtZS1wYW5lbC0tc2xpZGUtaW5cIik7XG4gICAgJHJlc3VtZVBhbmVsLmZvY3VzKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoaWRlUmVzdW1lUGFuZWxEb20oKSB7XG4gICAgY29uc3QgJHJlc3VtZVBhbmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoUkVTVU1FX1BBTkVMX0lEKSBhcyBIVE1MRWxlbWVudDtcbiAgICAkcmVzdW1lUGFuZWwuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgXCJ0cmlwZnVzaW9uLXJlc3VtZS1wYW5lbC0tc2xpZGUtb3V0XCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvd1dpZGdldERvbSgpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCAkd2lkZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX0lEKSBhcyBIVE1MRGl2RWxlbWVudCxcbiAgICAgICAgICAgICR3aWRnZXRXcmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX1dSQVBQRVJfSUQpIGFzIEhUTUxEaXZFbGVtZW50O1xuXG4gICAgICAgIE9iamVjdC5hc3NpZ24oJHdpZGdldFdyYXBwZXIuc3R5bGUsIHtcbiAgICAgICAgICAgIHpJbmRleDogMTAwMDAwMDAwMDAxMSxcbiAgICAgICAgICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBcInJnYmEoMCwgMCwgMCwgLjUpXCIsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxvY2tQYWdlU2Nyb2xsKCk7XG4gICAgICAgICR3aWRnZXQuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICAgICAgJHdpZGdldC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCBcInNsaWRlLWluXCIpO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgJHdpZGdldElmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9JRlJBTUVfSUQpO1xuICAgICAgICAgICAgJHdpZGdldElmcmFtZT8uZm9jdXMoKTtcbiAgICAgICAgfSwgMjUwKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIoYFdpZGdldDogRXJyb3Igb3Blbm5pbmcgd2lkZ2V0OiAke2Vycm9yfWApO1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiVHJpcGZ1c2lvbjogRXJyb3Igb3Blbm5pbmcgd2lkZ2V0OiBcIiwgZXJyb3IpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhpZGVXaWRnZXREb20oKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgJHdpZGdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9JRCksXG4gICAgICAgICAgICAkd2lkZ2V0V3JhcHBlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9XUkFQUEVSX0lEKTtcblxuICAgICAgICBpZiAoJHdpZGdldCAmJiAkd2lkZ2V0V3JhcHBlcikge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9IFwiaW5pdGlhbFwiO1xuICAgICAgICAgICAgJHdpZGdldC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCBcInNsaWRlLW91dFwiKTtcbiAgICAgICAgICAgICR3aWRnZXRXcmFwcGVyLnN0eWxlLmJhY2tncm91bmQgPSBcInJnYmEoMCwgMCwgMCwgMClcIjtcbiAgICAgICAgICAgICR3aWRnZXQuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgICAgICAgICAgJHdpZGdldFdyYXBwZXIuc3R5bGUuekluZGV4ID0gYCR7LTFlMTF9YDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlcihgV2lkZ2V0OiBFcnJvciBjbG9zaW5nIHdpZGdldDogJHtlcnJvcn1gKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlRyaXBmdXNpb246IEVycm9yIGNsb3Npbmcgd2lkZ2V0OiBcIiwgZXJyb3IpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdElmcmFtZSh7IGNsaWVudCwgcHJvcGVydHlJZCwgbW9kZSwgYm9va2luZ0lkLCAuLi5yZXN0IH06IEdsb2JhbFN0YXRlKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX0lGUkFNRV9JRCk/LnJlbW92ZSgpO1xuXG4gICAgICAgIGNvbnN0ICRpbm5lcldyYXBwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChXSURHRVRfSU5ORVJfV1JBUFBFUl9JRCk7XG4gICAgICAgIGlmICgkaW5uZXJXcmFwcGVyKSB7XG4gICAgICAgICAgICBjb25zdCAkd2lkZ2V0SWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlmcmFtZVwiKTtcbiAgICAgICAgICAgIGxldCB1cmwgPSBgJHtUUklQRlVTSU9OX0JBU0VfVVJMfSR7Y2xpZW50fS8ke3Byb3BlcnR5SWR9YDtcbiAgICAgICAgICAgIGlmIChtb2RlID09PSBCT09LSU5HX01PREUuYXBwZW5kICYmIGJvb2tpbmdJZCkge1xuICAgICAgICAgICAgICAgIHVybCArPSBgL2Jvb2tpbmcvJHtib29raW5nSWR9L2FwcGVuZGA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxQYXJhbXMgPSBPYmplY3QuZW50cmllcyhyZXN0KVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKFtfLCB2YWx1ZV0pID0+ICEhdmFsdWUpXG4gICAgICAgICAgICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9PSR7dmFsdWV9YC50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICAgIC5qb2luKFwiJlwiKTtcbiAgICAgICAgICAgIGlmIChhZGRpdGlvbmFsUGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgdXJsICs9IGA/JHthZGRpdGlvbmFsUGFyYW1zfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICR3aWRnZXRJZnJhbWUuc2V0QXR0cmlidXRlKFwic3JjXCIsIHVybCk7XG4gICAgICAgICAgICAkd2lkZ2V0SWZyYW1lLmlkID0gV0lER0VUX0lGUkFNRV9JRDtcbiAgICAgICAgICAgICRpbm5lcldyYXBwZXIuYXBwZW5kQ2hpbGQoJHdpZGdldElmcmFtZSk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIoYFdpZGdldDogRXJyb3IgaW5qZWN0aW5nIGlmcmFtZTogJHtlcnJvcn1gKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlRyaXBmdXNpb246IEVycm9yIGluamVjdGluZyBpZnJhbWU6IFwiLCBlcnJvcik7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9ja1BhZ2VTY3JvbGwoKSB7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9IFwiaGlkZGVuXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRXaWRnZXRUaGVtZSh7IGJhY2tncm91bmRDb2xvciB9OiB7IGJhY2tncm91bmRDb2xvcjogc3RyaW5nIH0pIHtcbiAgICBjb25zdCAkcmVzdW1lUGFuZWxXcmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoUkVTVU1FX1BBTkVMX0lEKSBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgJHdpZGdldEhlYWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9IRUFERVJfSUQpIGFzIEhUTUxFbGVtZW50O1xuICAgICRyZXN1bWVQYW5lbFdyYXBwZXIuc3R5bGVbXCJiYWNrZ3JvdW5kQ29sb3JcIl0gPSBiYWNrZ3JvdW5kQ29sb3I7XG4gICAgJHdpZGdldEhlYWRlci5zdHlsZVtcImJhY2tncm91bmRDb2xvclwiXSA9IGJhY2tncm91bmRDb2xvcjtcbn1cbiIsImltcG9ydCB7IEJPT0tJTkdfTU9ERSB9IGZyb20gXCIuLi9jb25zdFwiO1xuaW1wb3J0IHsgcGVyc2lzdCwgY3JlYXRlSlNPTlN0b3JhZ2UgfSBmcm9tIFwienVzdGFuZC9taWRkbGV3YXJlXCI7XG5pbXBvcnQgeyBjcmVhdGVTdG9yZSB9IGZyb20gXCJ6dXN0YW5kL3ZhbmlsbGFcIjtcblxuZXhwb3J0IHR5cGUgR2xvYmFsU3RhdGUgPSB7XG4gICAgY2xpZW50OiBzdHJpbmcgfCBudWxsO1xuICAgIHByb3BlcnR5SWQ6IG51bWJlciB8IG51bGw7XG4gICAgbW9kZToga2V5b2YgdHlwZW9mIEJPT0tJTkdfTU9ERTtcbiAgICBib29raW5nSWQ6IG51bWJlciB8IG51bGw7XG4gICAgY2hlY2tJbjogc3RyaW5nIHwgbnVsbDtcbiAgICBjaGVja091dDogc3RyaW5nIHwgbnVsbDtcbiAgICBhZHVsdHM6IG51bWJlciB8IG51bGw7XG4gICAgY2hpbGRyZW46IG51bWJlcltdIHwgbnVsbDtcbiAgICBvZmZlcklkOiBudW1iZXIgfCBudWxsO1xuICAgIHJlcGxhY2U6IChzdGF0ZTogUGFydGlhbDxHbG9iYWxTdGF0ZT4pID0+IHZvaWQ7XG59O1xuXG5jb25zdCBpbml0aWFsU3RhdGUgPSB7XG4gICAgY2xpZW50OiBudWxsLFxuICAgIHByb3BlcnR5SWQ6IG51bGwsXG4gICAgbW9kZTogQk9PS0lOR19NT0RFLm5vcm1hbCxcbiAgICBib29raW5nSWQ6IG51bGwsXG4gICAgY2hlY2tJbjogbnVsbCxcbiAgICBjaGVja091dDogbnVsbCxcbiAgICBhZHVsdHM6IG51bGwsXG4gICAgY2hpbGRyZW46IG51bGwsXG4gICAgb2ZmZXJJZDogbnVsbCxcbn07XG5cbmV4cG9ydCBjb25zdCBnbG9iYWxTdG9yZSA9IGNyZWF0ZVN0b3JlPEdsb2JhbFN0YXRlPigpKFxuICAgIHBlcnNpc3QoXG4gICAgICAgIChzZXQpID0+ICh7XG4gICAgICAgICAgICAuLi5pbml0aWFsU3RhdGUsXG4gICAgICAgICAgICByZXBsYWNlOiAoc3RhdGUpID0+IHNldCh7IC4uLmluaXRpYWxTdGF0ZSwgLi4uc3RhdGUgfSksXG4gICAgICAgIH0pLFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImdsb2JhbFN0b3JlXCIsXG4gICAgICAgICAgICBzdG9yYWdlOiBjcmVhdGVKU09OU3RvcmFnZSgoKSA9PiBzZXNzaW9uU3RvcmFnZSksXG4gICAgICAgIH1cbiAgICApXG4pO1xuIiwiY29uc3QgaXNJdGVyYWJsZSA9IChvYmopID0+IFN5bWJvbC5pdGVyYXRvciBpbiBvYmo7XG5jb25zdCBjb21wYXJlTWFwTGlrZSA9IChpdGVyYWJsZUEsIGl0ZXJhYmxlQikgPT4ge1xuICBjb25zdCBtYXBBID0gaXRlcmFibGVBIGluc3RhbmNlb2YgTWFwID8gaXRlcmFibGVBIDogbmV3IE1hcChpdGVyYWJsZUEpO1xuICBjb25zdCBtYXBCID0gaXRlcmFibGVCIGluc3RhbmNlb2YgTWFwID8gaXRlcmFibGVCIDogbmV3IE1hcChpdGVyYWJsZUIpO1xuICBpZiAobWFwQS5zaXplICE9PSBtYXBCLnNpemUpIHJldHVybiBmYWxzZTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgbWFwQSkge1xuICAgIGlmICghT2JqZWN0LmlzKHZhbHVlLCBtYXBCLmdldChrZXkpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5mdW5jdGlvbiBzaGFsbG93KG9iakEsIG9iakIpIHtcbiAgaWYgKE9iamVjdC5pcyhvYmpBLCBvYmpCKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICh0eXBlb2Ygb2JqQSAhPT0gXCJvYmplY3RcIiB8fCBvYmpBID09PSBudWxsIHx8IHR5cGVvZiBvYmpCICE9PSBcIm9iamVjdFwiIHx8IG9iakIgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGlzSXRlcmFibGUob2JqQSkgJiYgaXNJdGVyYWJsZShvYmpCKSkge1xuICAgIGNvbnN0IGl0ZXJhdG9yQSA9IG9iakFbU3ltYm9sLml0ZXJhdG9yXSgpO1xuICAgIGNvbnN0IGl0ZXJhdG9yQiA9IG9iakJbU3ltYm9sLml0ZXJhdG9yXSgpO1xuICAgIGxldCBuZXh0QSA9IGl0ZXJhdG9yQS5uZXh0KCk7XG4gICAgbGV0IG5leHRCID0gaXRlcmF0b3JCLm5leHQoKTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShuZXh0QS52YWx1ZSkgJiYgQXJyYXkuaXNBcnJheShuZXh0Qi52YWx1ZSkgJiYgbmV4dEEudmFsdWUubGVuZ3RoID09PSAyICYmIG5leHRCLnZhbHVlLmxlbmd0aCA9PT0gMikge1xuICAgICAgcmV0dXJuIGNvbXBhcmVNYXBMaWtlKFxuICAgICAgICBvYmpBLFxuICAgICAgICBvYmpCXG4gICAgICApO1xuICAgIH1cbiAgICB3aGlsZSAoIW5leHRBLmRvbmUgJiYgIW5leHRCLmRvbmUpIHtcbiAgICAgIGlmICghT2JqZWN0LmlzKG5leHRBLnZhbHVlLCBuZXh0Qi52YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgbmV4dEEgPSBpdGVyYXRvckEubmV4dCgpO1xuICAgICAgbmV4dEIgPSBpdGVyYXRvckIubmV4dCgpO1xuICAgIH1cbiAgICByZXR1cm4gISFuZXh0QS5kb25lICYmICEhbmV4dEIuZG9uZTtcbiAgfVxuICBjb25zdCBrZXlzQSA9IE9iamVjdC5rZXlzKG9iakEpO1xuICBpZiAoa2V5c0EubGVuZ3RoICE9PSBPYmplY3Qua2V5cyhvYmpCKS5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgZm9yIChjb25zdCBrZXlBIG9mIGtleXNBKSB7XG4gICAgaWYgKCFPYmplY3QuaGFzT3duKG9iakIsIGtleUEpIHx8ICFPYmplY3QuaXMob2JqQVtrZXlBXSwgb2JqQltrZXlBXSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCB7IHNoYWxsb3cgfTtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZXMuY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5vcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3R5bGVzLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB0eXBlIHsgQXBwTWVzc2FnZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBBUFBfTUVTU0FHRV9UWVBFLCBCT09LSU5HX01PREUgfSBmcm9tIFwiLi9jb25zdFwiO1xuaW1wb3J0IHtcbiAgICBoaWRlV2lkZ2V0RG9tLFxuICAgIGRpc3BsYXlMb2FkaW5nT3ZlcmxheSxcbiAgICBoaWRlUmVzdW1lUGFuZWxEb20sXG4gICAgaW5qZWN0SWZyYW1lLFxuICAgIHNob3dXaWRnZXREb20sXG4gICAgcHJlcGFyZURvbSxcbiAgICByZW5kZXJSZXN1bWVQYW5lbCxcbiAgICBzZXRXaWRnZXRUaGVtZSxcbiAgICBzaG93UmVzdW1lUGFuZWxEb20sXG4gICAgaGlkZUxvYWRpbmdPdmVybGF5LFxufSBmcm9tIFwiLi9kb21cIjtcbmltcG9ydCB7IEdsb2JhbFN0YXRlLCBnbG9iYWxTdG9yZSB9IGZyb20gXCIuL3N0b3JlL2dsb2JhbC5zdG9yZVwiO1xuaW1wb3J0IHsgd2lkZ2V0U3RvcmUgfSBmcm9tIFwiLi9zdG9yZS93aWRnZXQuc3RvcmVcIjtcbmltcG9ydCB7IGdldERlZmF1bHRQYXJhbXMsIGdldFBhcmFtc0Zyb21VcmwsIGxvZ2dlciwgc3RyaW5naWZ5UHJpY2UgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IHsgc2hhbGxvdyB9IGZyb20gXCJ6dXN0YW5kL3ZhbmlsbGEvc2hhbGxvd1wiO1xuaW1wb3J0IFwiLi9zdHlsZXMuY3NzXCI7XG5cbmdsb2JhbFN0b3JlLnN1YnNjcmliZSgobmV3U3RhdGUpID0+IHtcbiAgICBpZiAobmV3U3RhdGUuY2xpZW50ICYmIG5ld1N0YXRlLnByb3BlcnR5SWQpIHtcbiAgICAgICAgaW5qZWN0SWZyYW1lKG5ld1N0YXRlKTtcbiAgICB9XG59KTtcblxud2lkZ2V0U3RvcmUuc3Vic2NyaWJlKChuZXdTdGF0ZSkgPT4ge1xuICAgIGlmIChuZXdTdGF0ZS5pc1Jlc3VtZVBhbmVsVmlzaWJsZSkge1xuICAgICAgICBsZXQgaGVhZGVyVGV4dCA9IG5ld1N0YXRlLnByaW1hcnlHdWVzdE5hbWVcbiAgICAgICAgICAgID8gYENvbXBsZXRlIHlvdXIgYm9va2luZywgJHtuZXdTdGF0ZS5wcmltYXJ5R3Vlc3ROYW1lfWBcbiAgICAgICAgICAgIDogXCJDb21wbGV0ZSB5b3VyIGJvb2tpbmdcIjtcbiAgICAgICAgbGV0IHN1YmhlYWRlclRleHQgPSBcIlwiO1xuICAgICAgICBjb25zdCBmb290ZXJQYXJ0czogc3RyaW5nW10gPSBbXTtcblxuICAgICAgICBpZiAobmV3U3RhdGUuaXNCb29raW5nQ29tcGxldGVkKSB7XG4gICAgICAgICAgICBoZWFkZXJUZXh0ID0gXCJCb29raW5nIGNvbXBsZXRlZCFcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXdTdGF0ZS5jaGVja0luRGF0ZSAmJiBuZXdTdGF0ZS5jaGVja091dERhdGUpIHtcbiAgICAgICAgICAgIGZvb3RlclBhcnRzLnB1c2goXG4gICAgICAgICAgICAgICAgYCR7ZGF5anMobmV3U3RhdGUuY2hlY2tJbkRhdGUpLmZvcm1hdChcIk1NTSBERFwiKX0gLSAke2RheWpzKG5ld1N0YXRlLmNoZWNrT3V0RGF0ZSkuZm9ybWF0KFwiTU1NIEREXCIpfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV3U3RhdGUuY2FydC50b3RhbCkge1xuICAgICAgICAgICAgaWYgKG5ld1N0YXRlLmNhcnQ/LnJvb21zICYmIG5ld1N0YXRlLmNhcnQucm9vbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvb21Db3VudCA9IG5ld1N0YXRlLmNhcnQucm9vbXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGNvbnN0IGd1ZXN0Q291bnQgPSBuZXdTdGF0ZS5jYXJ0LnJvb21zLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgKGFjYzogbnVtYmVyLCByb29tOiBhbnkpID0+IGFjYyArIHJvb20ucGFzc2VuZ2Vycy5hZHVsdHMgKyByb29tLnBhc3NlbmdlcnMuY2hpbGRyZW4ubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBzdWJoZWFkZXJUZXh0ID0gYCR7cm9vbUNvdW50fSByb29tJHtyb29tQ291bnQgPiAxID8gXCJzXCIgOiBcIlwifSBmb3IgYDtcbiAgICAgICAgICAgICAgICBmb290ZXJQYXJ0cy5wdXNoKGAke2d1ZXN0Q291bnR9IGd1ZXN0JHtndWVzdENvdW50ID4gMSA/IFwic1wiIDogXCJcIn1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN1YmhlYWRlclRleHQgKz0gc3RyaW5naWZ5UHJpY2UobmV3U3RhdGUuY2FydC50b3RhbCk7XG4gICAgICAgIH1cblxuICAgICAgICByZW5kZXJSZXN1bWVQYW5lbCh7IGhlYWRlclRleHQsIHN1YmhlYWRlclRleHQsIGZvb3RlclRleHQ6IGZvb3RlclBhcnRzLmpvaW4oXCIsIFwiKSB9KTtcbiAgICB9XG5cbiAgICBpZiAobmV3U3RhdGUuYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICAgIHNldFdpZGdldFRoZW1lKHsgYmFja2dyb3VuZENvbG9yOiBuZXdTdGF0ZS5iYWNrZ3JvdW5kQ29sb3IgfSk7XG4gICAgfVxuXG4gICAgaWYgKG5ld1N0YXRlLmlzUmVhZHkpIHtcbiAgICAgICAgaGlkZUxvYWRpbmdPdmVybGF5KCk7XG4gICAgICAgIG5ld1N0YXRlLmlzT3BlbiA/IHNob3dXaWRnZXREb20oKSA6IGhpZGVXaWRnZXREb20oKTtcbiAgICAgICAgbmV3U3RhdGUuaXNSZXN1bWVQYW5lbFZpc2libGUgPyBzaG93UmVzdW1lUGFuZWxEb20oKSA6IGhpZGVSZXN1bWVQYW5lbERvbSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGRpc3BsYXlMb2FkaW5nT3ZlcmxheSgpO1xuICAgIH1cbn0pO1xuXG5mdW5jdGlvbiBhZGRMaW5rRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgZnVuY3Rpb24gaGFuZGxlTGlua0NsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XG5cbiAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgZXZlbnQgdGFyZ2V0IGhhcyBhIHZhbGlkIGhyZWZcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHRhcmdldC5wYXJlbnROb2RlIGFzIEhUTUxBbmNob3JFbGVtZW50O1xuICAgICAgICAgICAgaWYgKHRhcmdldC50YWdOYW1lICE9PSBcIkFcIiAmJiBwYXJlbnQ/LnRhZ05hbWUgPT09IFwiQVwiKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LmhyZWYgPSBwYXJlbnQ/LmhyZWY7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGxpbmtIcmVmID0gdGFyZ2V0LmhyZWYgfHwgXCJcIjtcbiAgICAgICAgICAgIGlmICghbGlua0hyZWYuaW5jbHVkZXMoXCI/XCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB1cmxQYXJhbXMgPSBnZXRQYXJhbXNGcm9tVXJsKG5ldyBVUkxTZWFyY2hQYXJhbXMobGlua0hyZWYuc3Vic3RyaW5nKGxpbmtIcmVmLmluZGV4T2YoXCI/XCIpKSkpO1xuXG4gICAgICAgICAgICBpZiAodXJsUGFyYW1zLnRyaXBmdXNpb24gPT09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGNsaWVudCwgcHJvcGVydHlJZCB9ID0gZ2V0RGVmYXVsdFBhcmFtcygpO1xuICAgICAgICAgICAgICAgIGJvb2soe1xuICAgICAgICAgICAgICAgICAgICBjbGllbnQ6IHVybFBhcmFtcy5jbGllbnQgPz8gY2xpZW50LFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eUlkOiB1cmxQYXJhbXMucHJvcGVydHlJZCA/ICt1cmxQYXJhbXMucHJvcGVydHlJZCA6IHByb3BlcnR5SWQsXG4gICAgICAgICAgICAgICAgICAgIG1vZGU6IHVybFBhcmFtcy5tb2RlID09PSBCT09LSU5HX01PREUuYXBwZW5kID8gQk9PS0lOR19NT0RFLmFwcGVuZCA6IEJPT0tJTkdfTU9ERS5ub3JtYWwsXG4gICAgICAgICAgICAgICAgICAgIGJvb2tpbmdJZDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybFBhcmFtcz8uYm9va2luZ0lkICYmIHVybFBhcmFtcz8ubW9kZSA9PT0gQk9PS0lOR19NT0RFLmFwcGVuZCA/ICt1cmxQYXJhbXMuYm9va2luZ0lkIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJJZDogdXJsUGFyYW1zLm9mZmVySWQgPyArdXJsUGFyYW1zLm9mZmVySWQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrSW46IHVybFBhcmFtcy5jaGVja0luLFxuICAgICAgICAgICAgICAgICAgICBjaGVja091dDogdXJsUGFyYW1zLmNoZWNrT3V0LFxuICAgICAgICAgICAgICAgICAgICBhZHVsdHM6IHVybFBhcmFtcy5hZHVsdHMgPyArdXJsUGFyYW1zLmFkdWx0cyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IHVybFBhcmFtcy5jaGlsZHJlbiA/IHVybFBhcmFtcy5jaGlsZHJlbi5zcGxpdChcIixcIikubWFwKChhZ2UpID0+ICthZ2UpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgbG9nZ2VyKGBXaWRnZXQ6IEVycm9yIGluIGxpbmsgY2xpY2sgaGFuZGxlcjogJHtlcnJvcn1gKTtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUcmlwZnVzaW9uOiBFcnJvciBpbiBsaW5rIGNsaWNrIGhhbmRsZXI6IFwiLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiYVwiKS5mb3JFYWNoKChsaW5rRWxlbWVudCkgPT4ge1xuICAgICAgICBsaW5rRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlTGlua0NsaWNrKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gYWRkUGFnZUxvYWRMaXN0ZW5lcigpIHtcbiAgICBmdW5jdGlvbiBvbkxvYWRIYW5kbGVyKCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHVybFBhcmFtcyA9IGdldFBhcmFtc0Zyb21VcmwobmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKSk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdXJsUGFyYW1zLnRyaXBmdXNpb24gPT09IFwidHJ1ZVwiICYmXG4gICAgICAgICAgICAgICAgKGdsb2JhbFN0b3JlLmdldFN0YXRlKCkuY2xpZW50IHx8IHVybFBhcmFtcy5jbGllbnQpICYmXG4gICAgICAgICAgICAgICAgKGdsb2JhbFN0b3JlLmdldFN0YXRlKCkucHJvcGVydHlJZCB8fCB1cmxQYXJhbXMucHJvcGVydHlJZClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGJvb2soe1xuICAgICAgICAgICAgICAgICAgICBjbGllbnQ6IHVybFBhcmFtcy5jbGllbnQgPz8gZ2xvYmFsU3RvcmUuZ2V0U3RhdGUoKS5jbGllbnQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5SWQ6IHVybFBhcmFtcy5wcm9wZXJ0eUlkID8gK3VybFBhcmFtcy5wcm9wZXJ0eUlkIDogZ2xvYmFsU3RvcmUuZ2V0U3RhdGUoKS5wcm9wZXJ0eUlkLFxuICAgICAgICAgICAgICAgICAgICBtb2RlOiB1cmxQYXJhbXMubW9kZSA9PT0gQk9PS0lOR19NT0RFLmFwcGVuZCA/IEJPT0tJTkdfTU9ERS5hcHBlbmQgOiBCT09LSU5HX01PREUubm9ybWFsLFxuICAgICAgICAgICAgICAgICAgICBib29raW5nSWQ6XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmxQYXJhbXM/LmJvb2tpbmdJZCAmJiB1cmxQYXJhbXM/Lm1vZGUgPT09IEJPT0tJTkdfTU9ERS5hcHBlbmQgPyArdXJsUGFyYW1zLmJvb2tpbmdJZCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIG9mZmVySWQ6IHVybFBhcmFtcy5vZmZlcklkID8gK3VybFBhcmFtcy5vZmZlcklkIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBjaGVja0luOiB1cmxQYXJhbXMuY2hlY2tJbixcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tPdXQ6IHVybFBhcmFtcy5jaGVja091dCxcbiAgICAgICAgICAgICAgICAgICAgYWR1bHRzOiB1cmxQYXJhbXMuYWR1bHRzID8gK3VybFBhcmFtcy5hZHVsdHMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiB1cmxQYXJhbXMuY2hpbGRyZW4gPyB1cmxQYXJhbXMuY2hpbGRyZW4uc3BsaXQoXCIsXCIpLm1hcCgoYWdlKSA9PiArYWdlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgNTAwKTtcbiAgICB9XG5cbiAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gXCJjb21wbGV0ZVwiKSB7XG4gICAgICAgIG9uTG9hZEhhbmRsZXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIiwgb25Mb2FkSGFuZGxlcik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBib29rKHByb3BzPzogUGFydGlhbDxHbG9iYWxTdGF0ZT4pIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBib29raW5nU3RhdGUgPSBwcm9wcyA/PyBnbG9iYWxTdG9yZS5nZXRTdGF0ZSgpID8/IGdldERlZmF1bHRQYXJhbXMoKTtcbiAgICAgICAgaWYgKCFib29raW5nU3RhdGUuY2xpZW50IHx8ICFib29raW5nU3RhdGUucHJvcGVydHlJZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2xpZW50IGFuZCBwcm9wZXJ0eUlkIGFyZSByZXF1aXJlZCB0byBib29rXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBoaWRlUmVzdW1lUGFuZWwsIHJlc2V0IH0gPSB3aWRnZXRTdG9yZS5nZXRTdGF0ZSgpO1xuICAgICAgICBoaWRlUmVzdW1lUGFuZWwoKTtcblxuICAgICAgICBpZiAoIXNoYWxsb3coZ2xvYmFsU3RvcmUuZ2V0U3RhdGUoKSwgYm9va2luZ1N0YXRlKSkge1xuICAgICAgICAgICAgcmVzZXQoKTtcbiAgICAgICAgICAgIGdsb2JhbFN0b3JlLmdldFN0YXRlKCkucmVwbGFjZShib29raW5nU3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIHdpZGdldFN0b3JlLmdldFN0YXRlKCkuc2hvd1dpZGdldCgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlcihgV2lkZ2V0OiBmYWlsZWQgdG8gYm9vazogJHtlcnJvcn1gKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihgVHJpcGZ1c2lvbjogZmFpbGVkIHRvIGJvb2s6ICR7ZXJyb3J9YCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpbml0VHJpcGZ1c2lvblNkaygpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBjaGVja0lmRG9jdW1lbnRMb2FkZWRJbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIpIHtcbiAgICAgICAgICAgICAgICBwcmVwYXJlRG9tKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWdsb2JhbFN0b3JlLmdldFN0YXRlKCkuY2xpZW50IHx8ICFnbG9iYWxTdG9yZS5nZXRTdGF0ZSgpLnByb3BlcnR5SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBjbGllbnQsIHByb3BlcnR5SWQgfSA9IGdldERlZmF1bHRQYXJhbXMoKTtcbiAgICAgICAgICAgICAgICAgICAgZ2xvYmFsU3RvcmUuZ2V0U3RhdGUoKS5yZXBsYWNlKHsgY2xpZW50LCBwcm9wZXJ0eUlkIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGluamVjdElmcmFtZShnbG9iYWxTdG9yZS5nZXRTdGF0ZSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYWRkTGlua0V2ZW50TGlzdGVuZXJzKCk7XG5cbiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSWZEb2N1bWVudExvYWRlZEludGVydmFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgYWRkUGFnZUxvYWRMaXN0ZW5lcigpO1xuXG4gICAgICAgIE9iamVjdC5hc3NpZ24od2luZG93LCB7IGJvb2ssIGNsb3NlV2lkZ2V0OiBoaWRlV2lkZ2V0RG9tIH0pO1xuXG4gICAgICAgIHdpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZTogQXBwTWVzc2FnZSA9IGUuZGF0YTtcbiAgICAgICAgICAgIHN3aXRjaCAobWVzc2FnZS50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBBUFBfTUVTU0FHRV9UWVBFLldJREdFVF9SRUFEWToge1xuICAgICAgICAgICAgICAgICAgICB3aWRnZXRTdG9yZS5nZXRTdGF0ZSgpLnNldElzUmVhZHkodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIEFQUF9NRVNTQUdFX1RZUEUuQk9PS0lOR19DT01QTEVURUQ6IHtcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0U3RvcmUuZ2V0U3RhdGUoKS5zZXRJc0Jvb2tpbmdDb21wbGV0ZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIEFQUF9NRVNTQUdFX1RZUEUuU0VUX0NMSUVOVF9USEVNRToge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlRGF0YSA9IG1lc3NhZ2UuZGF0YSBhcyB7IHByaW1hcnk/OiBzdHJpbmcgfTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xpZW50VGhlbWUgPSBtZXNzYWdlRGF0YS5wcmltYXJ5O1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2xpZW50VGhlbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldFN0b3JlLmdldFN0YXRlKCkuc2V0QmFja2dyb3VuZENvbG9yKGNsaWVudFRoZW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBBUFBfTUVTU0FHRV9UWVBFLlNFVF9QUklNQVJZX0dVRVNUX05BTUU6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZURhdGEgPSBtZXNzYWdlLmRhdGEgYXMgeyBuYW1lOiBzdHJpbmcgfTtcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0U3RvcmUuZ2V0U3RhdGUoKS5zZXRQcmltYXJ5R3Vlc3ROYW1lKG1lc3NhZ2VEYXRhLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBBUFBfTUVTU0FHRV9UWVBFLlNFVF9EQVRFUzoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlRGF0YSA9IG1lc3NhZ2UuZGF0YSBhcyB7IGNoZWNrSW4/OiBzdHJpbmc7IGNoZWNrT3V0Pzogc3RyaW5nIH07XG4gICAgICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlRGF0YS5jaGVja0luICYmIG1lc3NhZ2VEYXRhLmNoZWNrT3V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXRTdG9yZS5nZXRTdGF0ZSgpLnNldERhdGVzKG1lc3NhZ2VEYXRhLmNoZWNrSW4sIG1lc3NhZ2VEYXRhLmNoZWNrT3V0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBBUFBfTUVTU0FHRV9UWVBFLlNFVF9DQVJUOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5kYXRhIGFzIHsgY2FydDogYW55IH07XG4gICAgICAgICAgICAgICAgICAgIHdpZGdldFN0b3JlLmdldFN0YXRlKCkuc2V0Q2FydChtZXNzYWdlRGF0YS5jYXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyKGBXaWRnZXQ6IGZhaWxlZCB0byBpbml0IFRyaXBmdXNpb24gSlMgU0RLOiAke2Vycm9yfWApO1xuICAgICAgICBjb25zb2xlLmVycm9yKGBUcmlwZnVzaW9uOiBmYWlsZWQgdG8gaW5pdCBTREs6ICR7ZXJyb3J9YCk7XG4gICAgfVxufVxuXG5pbml0VHJpcGZ1c2lvblNkaygpO1xuIl0sIm5hbWVzIjpbIl9fX0NTU19MT0FERVJfRVhQT1JUX19fIiwicHVzaCIsIm1vZHVsZSIsImlkIiwiZXhwb3J0cyIsImNzc1dpdGhNYXBwaW5nVG9TdHJpbmciLCJsaXN0IiwidG9TdHJpbmciLCJ0aGlzIiwibWFwIiwiaXRlbSIsImNvbnRlbnQiLCJuZWVkTGF5ZXIiLCJjb25jYXQiLCJsZW5ndGgiLCJqb2luIiwiaSIsIm1vZHVsZXMiLCJtZWRpYSIsImRlZHVwZSIsInN1cHBvcnRzIiwibGF5ZXIiLCJ1bmRlZmluZWQiLCJhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzIiwiayIsIl9rIiwiY3NzTWFwcGluZyIsImJ0b2EiLCJiYXNlNjQiLCJ1bmVzY2FwZSIsImVuY29kZVVSSUNvbXBvbmVudCIsIkpTT04iLCJzdHJpbmdpZnkiLCJkYXRhIiwic291cmNlTWFwcGluZyIsImUiLCJuIiwiciIsInMiLCJ1IiwiYSIsIm8iLCJjIiwiZiIsImgiLCJkIiwibCIsIiQiLCJ5IiwiTSIsIm5hbWUiLCJ3ZWVrZGF5cyIsInNwbGl0IiwibW9udGhzIiwib3JkaW5hbCIsInQiLCJtIiwiU3RyaW5nIiwiQXJyYXkiLCJ2IiwieiIsInV0Y09mZnNldCIsIk1hdGgiLCJhYnMiLCJmbG9vciIsImRhdGUiLCJ5ZWFyIiwibW9udGgiLCJjbG9uZSIsImFkZCIsImNlaWwiLCJwIiwidyIsIkQiLCJtcyIsIlEiLCJ0b0xvd2VyQ2FzZSIsInJlcGxhY2UiLCJnIiwiUyIsIl8iLCJPIiwiYXJncyIsImFyZ3VtZW50cyIsImIiLCJsb2NhbGUiLCIkTCIsInV0YyIsIiR1IiwieCIsIiR4IiwiJG9mZnNldCIsInBhcnNlIiwicHJvdG90eXBlIiwiJGQiLCJEYXRlIiwiTmFOIiwidGVzdCIsIm1hdGNoIiwic3Vic3RyaW5nIiwiVVRDIiwiaW5pdCIsIiR5IiwiZ2V0RnVsbFllYXIiLCIkTSIsImdldE1vbnRoIiwiJEQiLCJnZXREYXRlIiwiJFciLCJnZXREYXkiLCIkSCIsImdldEhvdXJzIiwiJG0iLCJnZXRNaW51dGVzIiwiJHMiLCJnZXRTZWNvbmRzIiwiJG1zIiwiZ2V0TWlsbGlzZWNvbmRzIiwiJHV0aWxzIiwiaXNWYWxpZCIsImlzU2FtZSIsInN0YXJ0T2YiLCJlbmRPZiIsImlzQWZ0ZXIiLCJpc0JlZm9yZSIsIiRnIiwic2V0IiwidW5peCIsInZhbHVlT2YiLCJnZXRUaW1lIiwidG9EYXRlIiwiYXBwbHkiLCJzbGljZSIsIiRsb2NhbGUiLCJ3ZWVrU3RhcnQiLCIkc2V0IiwibWluIiwiZGF5c0luTW9udGgiLCJnZXQiLCJOdW1iZXIiLCJyb3VuZCIsInN1YnRyYWN0IiwiZm9ybWF0IiwiaW52YWxpZERhdGUiLCJtZXJpZGllbSIsIm1vbnRoc1Nob3J0Iiwid2Vla2RheXNNaW4iLCJ3ZWVrZGF5c1Nob3J0IiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJkaWZmIiwidG9KU09OIiwidG9JU09TdHJpbmciLCJ0b1VUQ1N0cmluZyIsImZvckVhY2giLCJleHRlbmQiLCIkaSIsImlzRGF5anMiLCJlbiIsIkxzIiwic3R5bGVzSW5ET00iLCJnZXRJbmRleEJ5SWRlbnRpZmllciIsImlkZW50aWZpZXIiLCJyZXN1bHQiLCJtb2R1bGVzVG9Eb20iLCJvcHRpb25zIiwiaWRDb3VudE1hcCIsImlkZW50aWZpZXJzIiwiYmFzZSIsImNvdW50IiwiaW5kZXhCeUlkZW50aWZpZXIiLCJvYmoiLCJjc3MiLCJzb3VyY2VNYXAiLCJyZWZlcmVuY2VzIiwidXBkYXRlciIsImFkZEVsZW1lbnRTdHlsZSIsImJ5SW5kZXgiLCJzcGxpY2UiLCJhcGkiLCJkb21BUEkiLCJ1cGRhdGUiLCJuZXdPYmoiLCJyZW1vdmUiLCJsYXN0SWRlbnRpZmllcnMiLCJuZXdMaXN0IiwiaW5kZXgiLCJuZXdMYXN0SWRlbnRpZmllcnMiLCJfaSIsIl9pbmRleCIsIm1lbW8iLCJpbnNlcnQiLCJzdHlsZSIsInRhcmdldCIsInN0eWxlVGFyZ2V0IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwid2luZG93IiwiSFRNTElGcmFtZUVsZW1lbnQiLCJjb250ZW50RG9jdW1lbnQiLCJoZWFkIiwiZ2V0VGFyZ2V0IiwiRXJyb3IiLCJhcHBlbmRDaGlsZCIsImVsZW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwic2V0QXR0cmlidXRlcyIsImF0dHJpYnV0ZXMiLCJzdHlsZUVsZW1lbnQiLCJub25jZSIsInNldEF0dHJpYnV0ZSIsImluc2VydFN0eWxlRWxlbWVudCIsInN0eWxlVGFnVHJhbnNmb3JtIiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwicmVtb3ZlU3R5bGVFbGVtZW50Iiwic3R5bGVTaGVldCIsImNzc1RleHQiLCJmaXJzdENoaWxkIiwiY3JlYXRlVGV4dE5vZGUiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiY2FsbCIsImdldHRlciIsIl9fZXNNb2R1bGUiLCJkZWZpbml0aW9uIiwia2V5IiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwicHJvcCIsImhhc093blByb3BlcnR5IiwibmMiLCJUUklQRlVTSU9OX0JBU0VfVVJMIiwicHJvY2VzcyIsImVudiIsIlRSSVBGVVNJT05fQVBQX0VOVklST05NRU5UIiwiV0lER0VUX0lEIiwiV0lER0VUX0lOTkVSX1dSQVBQRVJfSUQiLCJXSURHRVRfSEVBREVSX0lEIiwiV0lER0VUX1dSQVBQRVJfSUQiLCJXSURHRVRfSUZSQU1FX0lEIiwiUkVTVU1FX1BBTkVMX0lEIiwiTE9BREVSX0lEIiwiQk9PS0lOR19NT0RFIiwiY3JlYXRlSlNPTlN0b3JhZ2UiLCJnZXRTdG9yYWdlIiwic3RvcmFnZSIsImdldEl0ZW0iLCJfYSIsInN0cjIiLCJyZXZpdmVyIiwic3RyIiwiUHJvbWlzZSIsInRoZW4iLCJzZXRJdGVtIiwibmV3VmFsdWUiLCJyZXBsYWNlciIsInJlbW92ZUl0ZW0iLCJ0b1RoZW5hYmxlIiwiZm4iLCJpbnB1dCIsIm9uRnVsZmlsbGVkIiwiX29uUmVqZWN0ZWQiLCJfb25GdWxmaWxsZWQiLCJjYXRjaCIsIm9uUmVqZWN0ZWQiLCJwZXJzaXN0IiwiY29uZmlnIiwiYmFzZU9wdGlvbnMiLCJsb2NhbFN0b3JhZ2UiLCJwYXJ0aWFsaXplIiwic3RhdGUiLCJ2ZXJzaW9uIiwibWVyZ2UiLCJwZXJzaXN0ZWRTdGF0ZSIsImN1cnJlbnRTdGF0ZSIsImhhc0h5ZHJhdGVkIiwiaHlkcmF0aW9uTGlzdGVuZXJzIiwiU2V0IiwiZmluaXNoSHlkcmF0aW9uTGlzdGVuZXJzIiwiY29uc29sZSIsIndhcm4iLCJzYXZlZFNldFN0YXRlIiwic2V0U3RhdGUiLCJjb25maWdSZXN1bHQiLCJzdGF0ZUZyb21TdG9yYWdlIiwiZ2V0SW5pdGlhbFN0YXRlIiwiaHlkcmF0ZSIsIl9iIiwiY2IiLCJfYTIiLCJwb3N0UmVoeWRyYXRpb25DYWxsYmFjayIsIm9uUmVoeWRyYXRlU3RvcmFnZSIsImJpbmQiLCJkZXNlcmlhbGl6ZWRTdG9yYWdlVmFsdWUiLCJtaWdyYXRlIiwiZXJyb3IiLCJtaWdyYXRpb25SZXN1bHQiLCJtaWdyYXRlZCIsIm1pZ3JhdGVkU3RhdGUiLCJzZXRPcHRpb25zIiwibmV3T3B0aW9ucyIsImNsZWFyU3RvcmFnZSIsImdldE9wdGlvbnMiLCJyZWh5ZHJhdGUiLCJvbkh5ZHJhdGUiLCJkZWxldGUiLCJvbkZpbmlzaEh5ZHJhdGlvbiIsInNraXBIeWRyYXRpb24iLCJjcmVhdGVTdG9yZUltcGwiLCJjcmVhdGVTdGF0ZSIsImxpc3RlbmVycyIsInBhcnRpYWwiLCJuZXh0U3RhdGUiLCJpcyIsInByZXZpb3VzU3RhdGUiLCJhc3NpZ24iLCJsaXN0ZW5lciIsImdldFN0YXRlIiwiaW5pdGlhbFN0YXRlIiwic3Vic2NyaWJlIiwiY3JlYXRlU3RvcmUiLCJpbml0aWFsV2lkZ2V0U3RhdGUiLCJpc09wZW4iLCJpc1Jlc3VtZVBhbmVsVmlzaWJsZSIsImlzUmVhZHkiLCJpc0Jvb2tpbmdDb21wbGV0ZWQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJwcmltYXJ5R3Vlc3ROYW1lIiwiY2hlY2tJbkRhdGUiLCJjaGVja091dERhdGUiLCJjYXJ0Iiwid2lkZ2V0U3RvcmUiLCJzaG93V2lkZ2V0IiwiaGlkZVdpZGdldCIsInNob3dSZXN1bWVQYW5lbCIsImhpZGVSZXN1bWVQYW5lbCIsInNldElzUmVhZHkiLCJzZXRJc0Jvb2tpbmdDb21wbGV0ZWQiLCJzZXRCYWNrZ3JvdW5kQ29sb3IiLCJzZXRQcmltYXJ5R3Vlc3ROYW1lIiwic2V0Q2FydCIsInNldERhdGVzIiwicmVzZXQiLCJzZXNzaW9uU3RvcmFnZSIsImZyb21FbnRyaWVzIiwiZW50cmllcyIsImZpbHRlciIsImluY2x1ZGVzIiwiZ2V0RGVmYXVsdFBhcmFtcyIsImpzU2RrU3JjIiwiZ2V0RWxlbWVudEJ5SWQiLCJnZXRBdHRyaWJ1dGUiLCJ1cmxQYXJhbXMiLCJnZXRQYXJhbXNGcm9tVXJsIiwiVVJMU2VhcmNoUGFyYW1zIiwiaW5kZXhPZiIsImNsaWVudCIsInByb3BlcnR5SWQiLCJ1cmxTZWFyY2hQYXJhbXMiLCJhdmFpbGFibGVTZWFyY2hQYXJhbXNNYXAiLCJ0cmlwZnVzaW9uIiwicHJvcGVydHlpZCIsIm1vZGUiLCJvZmZlcmlkIiwiYm9va2luZ2lkIiwiY2hlY2tpbiIsImNoZWNrb3V0IiwiYWR1bHRzIiwiY2hpbGRyZW4iLCJmcm9tIiwicmVkdWNlIiwicHJldiIsInNlYXJjaFBhcmFtS2V5Iiwic2VhcmNoUGFyYW1WYWx1ZSIsImxvZ2dlciIsIm1lc3NhZ2UiLCJ0eXBlIiwidXJsIiwicGF5bG9hZCIsInBhZ2UiLCJsb2NhdGlvbiIsImhyZWYiLCJoZWFkZXJzIiwiZmV0Y2giLCJtZXRob2QiLCJib2R5IiwicmVzcG9uc2UiLCJqc29uIiwibG9nIiwiaGlkZVdpZGdldERvbSIsIiR3aWRnZXQiLCIkd2lkZ2V0V3JhcHBlciIsIm92ZXJmbG93IiwiYmFja2dyb3VuZCIsImRpc3BsYXkiLCJ6SW5kZXgiLCJpbmplY3RJZnJhbWUiLCJib29raW5nSWQiLCJyZXN0IiwiJGlubmVyV3JhcHBlciIsIiR3aWRnZXRJZnJhbWUiLCJhZGRpdGlvbmFsUGFyYW1zIiwidmFsdWUiLCJsb2NrUGFnZVNjcm9sbCIsImNoZWNrSW4iLCJjaGVja091dCIsIm9mZmVySWQiLCJnbG9iYWxTdG9yZSIsImlzSXRlcmFibGUiLCJTeW1ib2wiLCJpdGVyYXRvciIsImJvb2siLCJwcm9wcyIsImJvb2tpbmdTdGF0ZSIsIm9iakEiLCJvYmpCIiwiaXRlcmF0b3JBIiwiaXRlcmF0b3JCIiwibmV4dEEiLCJuZXh0IiwibmV4dEIiLCJpc0FycmF5IiwiaXRlcmFibGVBIiwiaXRlcmFibGVCIiwibWFwQSIsIk1hcCIsIm1hcEIiLCJzaXplIiwiY29tcGFyZU1hcExpa2UiLCJkb25lIiwia2V5c0EiLCJrZXlzIiwia2V5QSIsImhhc093biIsInNoYWxsb3ciLCJsb2NhbHMiLCJuZXdTdGF0ZSIsImNlbnRzIiwiJHJlc3VtZVBhbmVsIiwiaGVhZGVyVGV4dCIsInN1YmhlYWRlclRleHQiLCJmb290ZXJQYXJ0cyIsInRvdGFsIiwicm9vbXMiLCJyb29tQ291bnQiLCJndWVzdENvdW50IiwiYWNjIiwicm9vbSIsInBhc3NlbmdlcnMiLCJJbnRsIiwiTnVtYmVyRm9ybWF0IiwiY3VycmVuY3kiLCJmb290ZXJUZXh0IiwiaW5uZXJIVE1MIiwicmVuZGVyUmVzdW1lUGFuZWwiLCIkcmVzdW1lUGFuZWxXcmFwcGVyIiwiJHdpZGdldEhlYWRlciIsInNldFdpZGdldFRoZW1lIiwiaGlkZUxvYWRpbmdPdmVybGF5IiwiaGVpZ2h0Iiwic2V0VGltZW91dCIsImZvY3VzIiwic2hvd1dpZGdldERvbSIsIiRsb2FkaW5nRGl2IiwiZGlzcGxheUxvYWRpbmdPdmVybGF5Iiwic2V0SW50ZXJ2YWwiLCJyZWFkeVN0YXRlIiwiJHdpZGdldElubmVyV3JhcHBlciIsIiR3aWRnZXRIZWFkZXJUaXRsZSIsIiR3aWRnZXRDbG9zZUJ1dHRvbiIsImFkZEV2ZW50TGlzdGVuZXIiLCJldmVudCIsInByZXBhcmVEb20iLCJoYW5kbGVMaW5rQ2xpY2siLCJ0YWdOYW1lIiwibGlua0hyZWYiLCJwcmV2ZW50RGVmYXVsdCIsImFnZSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJsaW5rRWxlbWVudCIsImFkZExpbmtFdmVudExpc3RlbmVycyIsImNsZWFySW50ZXJ2YWwiLCJvbkxvYWRIYW5kbGVyIiwic2VhcmNoIiwiYWRkUGFnZUxvYWRMaXN0ZW5lciIsImNsb3NlV2lkZ2V0Iiwib25tZXNzYWdlIiwiY2xpZW50VGhlbWUiLCJtZXNzYWdlRGF0YSIsInByaW1hcnkiLCJpbml0VHJpcGZ1c2lvblNkayJdLCJzb3VyY2VSb290IjoiIn0=
1
+ (()=>{var n={365:(n,t,e)=>{"use strict";e.d(t,{A:()=>s});var r=e(354),i=e.n(r),o=e(314),a=e.n(o)()(i());a.push([n.id,"@import url(https://use.typekit.net/sag8ceb.css);"]),a.push([n.id,'#tripfusion-loader {\n color: white;\n margin-right: -50%;\n position: absolute;\n top: 50%;\n left: 50%;\n font-family: futura-lt-w01-book, futura-lt-w05-book, Arial, Helvetica, sans-serif;\n transform: translate(-50%, -50%);\n}\n\n#tripfusion-loader span {\n font-weight: bold;\n font-size: 1.3rem;\n}\n\n#tripfusion-resume-panel {\n max-width: 250px;\n position: fixed;\n overflow: hidden;\n cursor: pointer;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n padding: 12px 24px;\n box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.25), 0px 4px 4px rgba(0, 0, 0, 0.1);\n right: 30px;\n z-index: 100000000000;\n bottom: 40px;\n border: none;\n transform: translateX(400px);\n border-radius: 16px;\n color: white;\n font-size: 1rem;\n font-family: sweet-sans-pro, sans-serif;\n}\n\n.tripfusion-resume-panel__header {\n display: flex;\n justify-content: space-between;\n gap: 2em;\n align-items: center;\n}\n\n.tripfusion-resume-panel__header svg {\n width: 18px;\n height: 18px;\n fill: white;\n flex-shrink: 0;\n}\n\n.tripfusion-resume-panel__header span,\n.tripfusion-resume-panel__subheader {\n font-weight: 700;\n line-height: 1.2;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.tripfusion-resume-panel__footer {\n font-family: Roboto, Helvetica, Arial, sans-serif;\n font-size: 0.8rem;\n font-weight: 400;\n}\n\n#tripfusion-widget-wrapper {\n background: rgba(0, 0, 0, 0);\n position: fixed;\n top: 0;\n right: 0;\n width: 100%;\n transition: background 0.5s ease-out;\n}\n\n#tripfusion-widget {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0px;\n right: 0px;\n}\n\n#tripfusion-widget-inner-wrapper {\n position: fixed;\n display: flex;\n flex-direction: column;\n min-width: 320px;\n width: 100%;\n height: 100%;\n right: 0px;\n bottom: 0px;\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.2);\n font-family: "Roboto", "Helvetica", "Arial", sans-serif;\n font-weight: 400;\n font-size: 1rem;\n line-height: 1.5;\n letter-spacing: 0.00938em;\n}\n\n@media (min-width: 768px) {\n #tripfusion-widget-inner-wrapper {\n height: calc(100% - 40px);\n right: 20px;\n bottom: 20px;\n width: 500px;\n }\n}\n\n#tripfusion-widget-header {\n height: 60px;\n border-bottom: 1px solid #f1f1f1;\n padding: 0 16px 0 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n color: white;\n}\n\n#tripfusion-widget-iframe {\n height: 100%;\n border: none;\n}\n\n#tripfusion-widget-header-title {\n font-family: sweet-sans-pro, sans-serif;\n line-height: 1.2;\n font-weight: 700;\n font-size: 1rem;\n letter-spacing: 1.5px;\n text-transform: uppercase;\n}\n\n#tripfusion-widget-close-button {\n overflow: hidden;\n position: relative;\n border: none;\n padding: 0;\n width: 2em;\n height: 2em;\n border-radius: 50%;\n background: transparent;\n font: inherit;\n text-indent: 100%;\n cursor: pointer;\n\n &:focus {\n outline: solid 0 transparent;\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n &:hover {\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n &:before,\n &:after {\n position: absolute;\n top: 25%;\n left: calc(50% - 0.0625em);\n width: 0.125em;\n height: 50%;\n border-radius: 0.125em;\n transform: rotate(45deg);\n background: currentcolor;\n color: white;\n content: "";\n }\n\n &:after {\n transform: rotate(-45deg);\n }\n}\n\n.tripfusion-resume-panel--slide-in {\n -webkit-transition: 500ms;\n -moz-transition: 500ms;\n transition: 500ms;\n transform: translateX(0) !important;\n}\n\n.tripfusion-resume-panel--slide-out {\n -webkit-transition: 500ms;\n -moz-transition: 500ms;\n transition: 500ms;\n transform: translateX(400px) !important;\n}\n\n.tripfusion-resume-panel--resize-in {\n width: 46px !important;\n height: 46px !important;\n transition: 500ms;\n right: 30px !important;\n}\n\n.tripfusion-resume-panel--resize-in:hover {\n width: 217px !important;\n height: 46px !important;\n transition: all 300ms linear;\n cursor: pointer;\n}\n\n.tripfusion-resume-panel--resize-out {\n width: 46px !important;\n height: 46px !important;\n transition: 500ms;\n right: -100px !important;\n}\n\n.slide-in {\n transform: translateX(100%);\n -webkit-transform: translateX(100%);\n animation: slide-in 0.8s forwards !important;\n -webkit-animation: slide-in 0.8s forwards !important;\n z-index: 1000000000000;\n}\n\n.slide-out {\n transform: translateX(100%);\n -webkit-transform: translateX(100%);\n animation: slide-out 1s forwards !important;\n -webkit-animation: slide-out 1s forwards !important;\n z-index: -1000000000000;\n}\n\n@media screen and (max-width: 495px) {\n .slide-in {\n transform: translateY(100%);\n -webkit-transform: translateY(100%);\n animation: slide-up 0.8s forwards !important;\n -webkit-animation: slide-up 0.8s forwards !important;\n z-index: 1000000000000;\n }\n\n .slide-out {\n transform: translateY(100%);\n -webkit-transform: translateY(100%);\n animation: slide-down 0.5s forwards !important;\n -webkit-animation: slide-down 1s forwards !important;\n z-index: -1000000000000;\n }\n}\n\n@keyframes slide-in {\n 100% {\n transform: translateX(0%);\n }\n}\n\n@-webkit-keyframes slide-in {\n 100% {\n -webkit-transform: translateX(0%);\n }\n}\n\n@keyframes slide-up {\n 100% {\n transform: translateY(0%);\n }\n}\n\n@-webkit-keyframes slide-up {\n 100% {\n -webkit-transform: translateY(0%);\n }\n}\n\n@keyframes slide-out {\n 0% {\n transform: translateX(0%);\n }\n\n 100% {\n transform: translateX(100%);\n }\n}\n\n@-webkit-keyframes slide-out {\n 0% {\n -webkit-transform: translateX(0%);\n }\n\n 100% {\n -webkit-transform: translateX(100%);\n }\n}\n\n@keyframes slide-down {\n 0% {\n transform: translateY(0%);\n }\n\n 100% {\n transform: translateY(100%);\n }\n}\n\n@-webkit-keyframes slide-down {\n 0% {\n -webkit-transform: translateY(0%);\n }\n\n 100% {\n -webkit-transform: translateY(100%);\n }\n}\n',"",{version:3,sources:["webpack://./src/styles.css"],names:[],mappings:"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",sourcesContent:['@import url("https://use.typekit.net/sag8ceb.css");\n\n#tripfusion-loader {\n color: white;\n margin-right: -50%;\n position: absolute;\n top: 50%;\n left: 50%;\n font-family: futura-lt-w01-book, futura-lt-w05-book, Arial, Helvetica, sans-serif;\n transform: translate(-50%, -50%);\n}\n\n#tripfusion-loader span {\n font-weight: bold;\n font-size: 1.3rem;\n}\n\n#tripfusion-resume-panel {\n max-width: 250px;\n position: fixed;\n overflow: hidden;\n cursor: pointer;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n padding: 12px 24px;\n box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.25), 0px 4px 4px rgba(0, 0, 0, 0.1);\n right: 30px;\n z-index: 100000000000;\n bottom: 40px;\n border: none;\n transform: translateX(400px);\n border-radius: 16px;\n color: white;\n font-size: 1rem;\n font-family: sweet-sans-pro, sans-serif;\n}\n\n.tripfusion-resume-panel__header {\n display: flex;\n justify-content: space-between;\n gap: 2em;\n align-items: center;\n}\n\n.tripfusion-resume-panel__header svg {\n width: 18px;\n height: 18px;\n fill: white;\n flex-shrink: 0;\n}\n\n.tripfusion-resume-panel__header span,\n.tripfusion-resume-panel__subheader {\n font-weight: 700;\n line-height: 1.2;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.tripfusion-resume-panel__footer {\n font-family: Roboto, Helvetica, Arial, sans-serif;\n font-size: 0.8rem;\n font-weight: 400;\n}\n\n#tripfusion-widget-wrapper {\n background: rgba(0, 0, 0, 0);\n position: fixed;\n top: 0;\n right: 0;\n width: 100%;\n transition: background 0.5s ease-out;\n}\n\n#tripfusion-widget {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0px;\n right: 0px;\n}\n\n#tripfusion-widget-inner-wrapper {\n position: fixed;\n display: flex;\n flex-direction: column;\n min-width: 320px;\n width: 100%;\n height: 100%;\n right: 0px;\n bottom: 0px;\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.2);\n font-family: "Roboto", "Helvetica", "Arial", sans-serif;\n font-weight: 400;\n font-size: 1rem;\n line-height: 1.5;\n letter-spacing: 0.00938em;\n}\n\n@media (min-width: 768px) {\n #tripfusion-widget-inner-wrapper {\n height: calc(100% - 40px);\n right: 20px;\n bottom: 20px;\n width: 500px;\n }\n}\n\n#tripfusion-widget-header {\n height: 60px;\n border-bottom: 1px solid #f1f1f1;\n padding: 0 16px 0 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n color: white;\n}\n\n#tripfusion-widget-iframe {\n height: 100%;\n border: none;\n}\n\n#tripfusion-widget-header-title {\n font-family: sweet-sans-pro, sans-serif;\n line-height: 1.2;\n font-weight: 700;\n font-size: 1rem;\n letter-spacing: 1.5px;\n text-transform: uppercase;\n}\n\n#tripfusion-widget-close-button {\n overflow: hidden;\n position: relative;\n border: none;\n padding: 0;\n width: 2em;\n height: 2em;\n border-radius: 50%;\n background: transparent;\n font: inherit;\n text-indent: 100%;\n cursor: pointer;\n\n &:focus {\n outline: solid 0 transparent;\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n &:hover {\n background-color: rgba(0, 0, 0, 0.04);\n }\n\n &:before,\n &:after {\n position: absolute;\n top: 25%;\n left: calc(50% - 0.0625em);\n width: 0.125em;\n height: 50%;\n border-radius: 0.125em;\n transform: rotate(45deg);\n background: currentcolor;\n color: white;\n content: "";\n }\n\n &:after {\n transform: rotate(-45deg);\n }\n}\n\n.tripfusion-resume-panel--slide-in {\n -webkit-transition: 500ms;\n -moz-transition: 500ms;\n transition: 500ms;\n transform: translateX(0) !important;\n}\n\n.tripfusion-resume-panel--slide-out {\n -webkit-transition: 500ms;\n -moz-transition: 500ms;\n transition: 500ms;\n transform: translateX(400px) !important;\n}\n\n.tripfusion-resume-panel--resize-in {\n width: 46px !important;\n height: 46px !important;\n transition: 500ms;\n right: 30px !important;\n}\n\n.tripfusion-resume-panel--resize-in:hover {\n width: 217px !important;\n height: 46px !important;\n transition: all 300ms linear;\n cursor: pointer;\n}\n\n.tripfusion-resume-panel--resize-out {\n width: 46px !important;\n height: 46px !important;\n transition: 500ms;\n right: -100px !important;\n}\n\n.slide-in {\n transform: translateX(100%);\n -webkit-transform: translateX(100%);\n animation: slide-in 0.8s forwards !important;\n -webkit-animation: slide-in 0.8s forwards !important;\n z-index: 1000000000000;\n}\n\n.slide-out {\n transform: translateX(100%);\n -webkit-transform: translateX(100%);\n animation: slide-out 1s forwards !important;\n -webkit-animation: slide-out 1s forwards !important;\n z-index: -1000000000000;\n}\n\n@media screen and (max-width: 495px) {\n .slide-in {\n transform: translateY(100%);\n -webkit-transform: translateY(100%);\n animation: slide-up 0.8s forwards !important;\n -webkit-animation: slide-up 0.8s forwards !important;\n z-index: 1000000000000;\n }\n\n .slide-out {\n transform: translateY(100%);\n -webkit-transform: translateY(100%);\n animation: slide-down 0.5s forwards !important;\n -webkit-animation: slide-down 1s forwards !important;\n z-index: -1000000000000;\n }\n}\n\n@keyframes slide-in {\n 100% {\n transform: translateX(0%);\n }\n}\n\n@-webkit-keyframes slide-in {\n 100% {\n -webkit-transform: translateX(0%);\n }\n}\n\n@keyframes slide-up {\n 100% {\n transform: translateY(0%);\n }\n}\n\n@-webkit-keyframes slide-up {\n 100% {\n -webkit-transform: translateY(0%);\n }\n}\n\n@keyframes slide-out {\n 0% {\n transform: translateX(0%);\n }\n\n 100% {\n transform: translateX(100%);\n }\n}\n\n@-webkit-keyframes slide-out {\n 0% {\n -webkit-transform: translateX(0%);\n }\n\n 100% {\n -webkit-transform: translateX(100%);\n }\n}\n\n@keyframes slide-down {\n 0% {\n transform: translateY(0%);\n }\n\n 100% {\n transform: translateY(100%);\n }\n}\n\n@-webkit-keyframes slide-down {\n 0% {\n -webkit-transform: translateY(0%);\n }\n\n 100% {\n -webkit-transform: translateY(100%);\n }\n}\n'],sourceRoot:""}]);const s=a},314:n=>{"use strict";n.exports=function(n){var t=[];return t.toString=function(){return this.map((function(t){var e="",r=void 0!==t[5];return t[4]&&(e+="@supports (".concat(t[4],") {")),t[2]&&(e+="@media ".concat(t[2]," {")),r&&(e+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),e+=n(t),r&&(e+="}"),t[2]&&(e+="}"),t[4]&&(e+="}"),e})).join("")},t.i=function(n,e,r,i,o){"string"==typeof n&&(n=[[null,n,void 0]]);var a={};if(r)for(var s=0;s<this.length;s++){var u=this[s][0];null!=u&&(a[u]=!0)}for(var c=0;c<n.length;c++){var l=[].concat(n[c]);r&&a[l[0]]||(void 0!==o&&(void 0===l[5]||(l[1]="@layer".concat(l[5].length>0?" ".concat(l[5]):""," {").concat(l[1],"}")),l[5]=o),e&&(l[2]?(l[1]="@media ".concat(l[2]," {").concat(l[1],"}"),l[2]=e):l[2]=e),i&&(l[4]?(l[1]="@supports (".concat(l[4],") {").concat(l[1],"}"),l[4]=i):l[4]="".concat(i)),t.push(l))}},t}},354:n=>{"use strict";n.exports=function(n){var t=n[1],e=n[3];if(!e)return t;if("function"==typeof btoa){var r=btoa(unescape(encodeURIComponent(JSON.stringify(e)))),i="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(r),o="/*# ".concat(i," */");return[t].concat([o]).join("\n")}return[t].join("\n")}},353:function(n){n.exports=function(){"use strict";var n=6e4,t=36e5,e="millisecond",r="second",i="minute",o="hour",a="day",s="week",u="month",c="quarter",l="year",d="date",A="Invalid Date",f=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,p=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,m={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(n){var t=["th","st","nd","rd"],e=n%100;return"["+n+(t[(e-20)%10]||t[e]||t[0])+"]"}},h=function(n,t,e){var r=String(n);return!r||r.length>=t?n:""+Array(t+1-r.length).join(e)+n},g={s:h,z:function(n){var t=-n.utcOffset(),e=Math.abs(t),r=Math.floor(e/60),i=e%60;return(t<=0?"+":"-")+h(r,2,"0")+":"+h(i,2,"0")},m:function n(t,e){if(t.date()<e.date())return-n(e,t);var r=12*(e.year()-t.year())+(e.month()-t.month()),i=t.clone().add(r,u),o=e-i<0,a=t.clone().add(r+(o?-1:1),u);return+(-(r+(e-i)/(o?i-a:a-i))||0)},a:function(n){return n<0?Math.ceil(n)||0:Math.floor(n)},p:function(n){return{M:u,y:l,w:s,d:a,D:d,h:o,m:i,s:r,ms:e,Q:c}[n]||String(n||"").toLowerCase().replace(/s$/,"")},u:function(n){return void 0===n}},C="en",I={};I[C]=m;var b="$isDayjsObject",y=function(n){return n instanceof k||!(!n||!n[b])},w=function n(t,e,r){var i;if(!t)return C;if("string"==typeof t){var o=t.toLowerCase();I[o]&&(i=o),e&&(I[o]=e,i=o);var a=t.split("-");if(!i&&a.length>1)return n(a[0])}else{var s=t.name;I[s]=t,i=s}return!r&&i&&(C=i),i||!r&&C},B=function(n,t){if(y(n))return n.clone();var e="object"==typeof t?t:{};return e.date=n,e.args=arguments,new k(e)},v=g;v.l=w,v.i=y,v.w=function(n,t){return B(n,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var k=function(){function m(n){this.$L=w(n.locale,null,!0),this.parse(n),this.$x=this.$x||n.x||{},this[b]=!0}var h=m.prototype;return h.parse=function(n){this.$d=function(n){var t=n.date,e=n.utc;if(null===t)return new Date(NaN);if(v.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(f);if(r){var i=r[2]-1||0,o=(r[7]||"0").substring(0,3);return e?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)}}return new Date(t)}(n),this.init()},h.init=function(){var n=this.$d;this.$y=n.getFullYear(),this.$M=n.getMonth(),this.$D=n.getDate(),this.$W=n.getDay(),this.$H=n.getHours(),this.$m=n.getMinutes(),this.$s=n.getSeconds(),this.$ms=n.getMilliseconds()},h.$utils=function(){return v},h.isValid=function(){return!(this.$d.toString()===A)},h.isSame=function(n,t){var e=B(n);return this.startOf(t)<=e&&e<=this.endOf(t)},h.isAfter=function(n,t){return B(n)<this.startOf(t)},h.isBefore=function(n,t){return this.endOf(t)<B(n)},h.$g=function(n,t,e){return v.u(n)?this[t]:this.set(e,n)},h.unix=function(){return Math.floor(this.valueOf()/1e3)},h.valueOf=function(){return this.$d.getTime()},h.startOf=function(n,t){var e=this,c=!!v.u(t)||t,A=v.p(n),f=function(n,t){var r=v.w(e.$u?Date.UTC(e.$y,t,n):new Date(e.$y,t,n),e);return c?r:r.endOf(a)},p=function(n,t){return v.w(e.toDate()[n].apply(e.toDate("s"),(c?[0,0,0,0]:[23,59,59,999]).slice(t)),e)},m=this.$W,h=this.$M,g=this.$D,C="set"+(this.$u?"UTC":"");switch(A){case l:return c?f(1,0):f(31,11);case u:return c?f(1,h):f(0,h+1);case s:var I=this.$locale().weekStart||0,b=(m<I?m+7:m)-I;return f(c?g-b:g+(6-b),h);case a:case d:return p(C+"Hours",0);case o:return p(C+"Minutes",1);case i:return p(C+"Seconds",2);case r:return p(C+"Milliseconds",3);default:return this.clone()}},h.endOf=function(n){return this.startOf(n,!1)},h.$set=function(n,t){var s,c=v.p(n),A="set"+(this.$u?"UTC":""),f=(s={},s[a]=A+"Date",s[d]=A+"Date",s[u]=A+"Month",s[l]=A+"FullYear",s[o]=A+"Hours",s[i]=A+"Minutes",s[r]=A+"Seconds",s[e]=A+"Milliseconds",s)[c],p=c===a?this.$D+(t-this.$W):t;if(c===u||c===l){var m=this.clone().set(d,1);m.$d[f](p),m.init(),this.$d=m.set(d,Math.min(this.$D,m.daysInMonth())).$d}else f&&this.$d[f](p);return this.init(),this},h.set=function(n,t){return this.clone().$set(n,t)},h.get=function(n){return this[v.p(n)]()},h.add=function(e,c){var d,A=this;e=Number(e);var f=v.p(c),p=function(n){var t=B(A);return v.w(t.date(t.date()+Math.round(n*e)),A)};if(f===u)return this.set(u,this.$M+e);if(f===l)return this.set(l,this.$y+e);if(f===a)return p(1);if(f===s)return p(7);var m=(d={},d[i]=n,d[o]=t,d[r]=1e3,d)[f]||1,h=this.$d.getTime()+e*m;return v.w(h,this)},h.subtract=function(n,t){return this.add(-1*n,t)},h.format=function(n){var t=this,e=this.$locale();if(!this.isValid())return e.invalidDate||A;var r=n||"YYYY-MM-DDTHH:mm:ssZ",i=v.z(this),o=this.$H,a=this.$m,s=this.$M,u=e.weekdays,c=e.months,l=e.meridiem,d=function(n,e,i,o){return n&&(n[e]||n(t,r))||i[e].slice(0,o)},f=function(n){return v.s(o%12||12,n,"0")},m=l||function(n,t,e){var r=n<12?"AM":"PM";return e?r.toLowerCase():r};return r.replace(p,(function(n,r){return r||function(n){switch(n){case"YY":return String(t.$y).slice(-2);case"YYYY":return v.s(t.$y,4,"0");case"M":return s+1;case"MM":return v.s(s+1,2,"0");case"MMM":return d(e.monthsShort,s,c,3);case"MMMM":return d(c,s);case"D":return t.$D;case"DD":return v.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return d(e.weekdaysMin,t.$W,u,2);case"ddd":return d(e.weekdaysShort,t.$W,u,3);case"dddd":return u[t.$W];case"H":return String(o);case"HH":return v.s(o,2,"0");case"h":return f(1);case"hh":return f(2);case"a":return m(o,a,!0);case"A":return m(o,a,!1);case"m":return String(a);case"mm":return v.s(a,2,"0");case"s":return String(t.$s);case"ss":return v.s(t.$s,2,"0");case"SSS":return v.s(t.$ms,3,"0");case"Z":return i}return null}(n)||i.replace(":","")}))},h.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},h.diff=function(e,d,A){var f,p=this,m=v.p(d),h=B(e),g=(h.utcOffset()-this.utcOffset())*n,C=this-h,I=function(){return v.m(p,h)};switch(m){case l:f=I()/12;break;case u:f=I();break;case c:f=I()/3;break;case s:f=(C-g)/6048e5;break;case a:f=(C-g)/864e5;break;case o:f=C/t;break;case i:f=C/n;break;case r:f=C/1e3;break;default:f=C}return A?f:v.a(f)},h.daysInMonth=function(){return this.endOf(u).$D},h.$locale=function(){return I[this.$L]},h.locale=function(n,t){if(!n)return this.$L;var e=this.clone(),r=w(n,t,!0);return r&&(e.$L=r),e},h.clone=function(){return v.w(this.$d,this)},h.toDate=function(){return new Date(this.valueOf())},h.toJSON=function(){return this.isValid()?this.toISOString():null},h.toISOString=function(){return this.$d.toISOString()},h.toString=function(){return this.$d.toUTCString()},m}(),x=k.prototype;return B.prototype=x,[["$ms",e],["$s",r],["$m",i],["$H",o],["$W",a],["$M",u],["$y",l],["$D",d]].forEach((function(n){x[n[1]]=function(t){return this.$g(t,n[0],n[1])}})),B.extend=function(n,t){return n.$i||(n(t,k,B),n.$i=!0),B},B.locale=w,B.isDayjs=y,B.unix=function(n){return B(1e3*n)},B.en=I[C],B.Ls=I,B.p={},B}()},72:n=>{"use strict";var t=[];function e(n){for(var e=-1,r=0;r<t.length;r++)if(t[r].identifier===n){e=r;break}return e}function r(n,r){for(var o={},a=[],s=0;s<n.length;s++){var u=n[s],c=r.base?u[0]+r.base:u[0],l=o[c]||0,d="".concat(c," ").concat(l);o[c]=l+1;var A=e(d),f={css:u[1],media:u[2],sourceMap:u[3],supports:u[4],layer:u[5]};if(-1!==A)t[A].references++,t[A].updater(f);else{var p=i(f,r);r.byIndex=s,t.splice(s,0,{identifier:d,updater:p,references:1})}a.push(d)}return a}function i(n,t){var e=t.domAPI(t);return e.update(n),function(t){if(t){if(t.css===n.css&&t.media===n.media&&t.sourceMap===n.sourceMap&&t.supports===n.supports&&t.layer===n.layer)return;e.update(n=t)}else e.remove()}}n.exports=function(n,i){var o=r(n=n||[],i=i||{});return function(n){n=n||[];for(var a=0;a<o.length;a++){var s=e(o[a]);t[s].references--}for(var u=r(n,i),c=0;c<o.length;c++){var l=e(o[c]);0===t[l].references&&(t[l].updater(),t.splice(l,1))}o=u}}},659:n=>{"use strict";var t={};n.exports=function(n,e){var r=function(n){if(void 0===t[n]){var e=document.querySelector(n);if(window.HTMLIFrameElement&&e instanceof window.HTMLIFrameElement)try{e=e.contentDocument.head}catch(n){e=null}t[n]=e}return t[n]}(n);if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(e)}},540:n=>{"use strict";n.exports=function(n){var t=document.createElement("style");return n.setAttributes(t,n.attributes),n.insert(t,n.options),t}},56:(n,t,e)=>{"use strict";n.exports=function(n){var t=e.nc;t&&n.setAttribute("nonce",t)}},825:n=>{"use strict";n.exports=function(n){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=n.insertStyleElement(n);return{update:function(e){!function(n,t,e){var r="";e.supports&&(r+="@supports (".concat(e.supports,") {")),e.media&&(r+="@media ".concat(e.media," {"));var i=void 0!==e.layer;i&&(r+="@layer".concat(e.layer.length>0?" ".concat(e.layer):""," {")),r+=e.css,i&&(r+="}"),e.media&&(r+="}"),e.supports&&(r+="}");var o=e.sourceMap;o&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),t.styleTagTransform(r,n,t.options)}(t,n,e)},remove:function(){!function(n){if(null===n.parentNode)return!1;n.parentNode.removeChild(n)}(t)}}}},113:n=>{"use strict";n.exports=function(n,t){if(t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}}},t={};function e(r){var i=t[r];if(void 0!==i)return i.exports;var o=t[r]={id:r,exports:{}};return n[r].call(o.exports,o,o.exports,e),o.exports}e.n=n=>{var t=n&&n.__esModule?()=>n.default:()=>n;return e.d(t,{a:t}),t},e.d=(n,t)=>{for(var r in t)e.o(t,r)&&!e.o(n,r)&&Object.defineProperty(n,r,{enumerable:!0,get:t[r]})},e.o=(n,t)=>Object.prototype.hasOwnProperty.call(n,t),e.nc=void 0,(()=>{"use strict";var n="https://bookings.vacayou.com/",t="tripfusion-widget",r="tripfusion-widget-inner-wrapper",i="tripfusion-widget-header",o="tripfusion-widget-wrapper",a="tripfusion-widget-iframe",s="tripfusion-resume-panel",u="tripfusion-loader",c="normal",l="append";function d(n,t){let e;try{e=n()}catch(n){return}return{getItem:n=>{var r;const i=n=>null===n?null:JSON.parse(n,null==t?void 0:t.reviver),o=null!=(r=e.getItem(n))?r:null;return o instanceof Promise?o.then(i):i(o)},setItem:(n,r)=>e.setItem(n,JSON.stringify(r,null==t?void 0:t.replacer)),removeItem:n=>e.removeItem(n)}}const A=n=>t=>{try{const e=n(t);return e instanceof Promise?e:{then:n=>A(n)(e),catch(n){return this}}}catch(n){return{then(n){return this},catch:t=>A(t)(n)}}},f=(n,t)=>(e,r,i)=>{let o={storage:d((()=>localStorage)),partialize:n=>n,version:0,merge:(n,t)=>({...t,...n}),...t},a=!1;const s=new Set,u=new Set;let c=o.storage;if(!c)return n(((...n)=>{console.warn(`[zustand persist middleware] Unable to update item '${o.name}', the given storage is currently unavailable.`),e(...n)}),r,i);const l=()=>{const n=o.partialize({...r()});return c.setItem(o.name,{state:n,version:o.version})},f=i.setState;i.setState=(n,t)=>{f(n,t),l()};const p=n(((...n)=>{e(...n),l()}),r,i);let m;i.getInitialState=()=>p;const h=()=>{var n,t;if(!c)return;a=!1,s.forEach((n=>{var t;return n(null!=(t=r())?t:p)}));const i=(null==(t=o.onRehydrateStorage)?void 0:t.call(o,null!=(n=r())?n:p))||void 0;return A(c.getItem.bind(c))(o.name).then((n=>{if(n){if("number"!=typeof n.version||n.version===o.version)return[!1,n.state];if(o.migrate)return[!0,o.migrate(n.state,n.version)];console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}return[!1,void 0]})).then((n=>{var t;const[i,a]=n;if(m=o.merge(a,null!=(t=r())?t:p),e(m,!0),i)return l()})).then((()=>{null==i||i(m,void 0),m=r(),a=!0,u.forEach((n=>n(m)))})).catch((n=>{null==i||i(void 0,n)}))};return i.persist={setOptions:n=>{o={...o,...n},n.storage&&(c=n.storage)},clearStorage:()=>{null==c||c.removeItem(o.name)},getOptions:()=>o,rehydrate:()=>h(),hasHydrated:()=>a,onHydrate:n=>(s.add(n),()=>{s.delete(n)}),onFinishHydration:n=>(u.add(n),()=>{u.delete(n)})},o.skipHydration||h(),m||p},p=n=>{let t;const e=new Set,r=(n,r)=>{const i="function"==typeof n?n(t):n;if(!Object.is(i,t)){const n=t;t=(null!=r?r:"object"!=typeof i||null===i)?i:Object.assign({},t,i),e.forEach((e=>e(t,n)))}},i=()=>t,o={setState:r,getState:i,getInitialState:()=>a,subscribe:n=>(e.add(n),()=>e.delete(n))},a=t=n(r,i,o);return o},m=n=>n?p(n):p;var h=function(){return h=Object.assign||function(n){for(var t,e=1,r=arguments.length;e<r;e++)for(var i in t=arguments[e])Object.prototype.hasOwnProperty.call(t,i)&&(n[i]=t[i]);return n},h.apply(this,arguments)},g={isOpen:!1,isResumePanelVisible:!1,isReady:!1,isBookingCompleted:!1,backgroundColor:"rgb(35, 76, 121)",primaryGuestName:null,checkInDate:null,checkOutDate:null,cart:{}},C=m()(f((function(n){return h(h({},g),{showWidget:function(){return n({isOpen:!0})},hideWidget:function(){return n({isOpen:!1})},showResumePanel:function(){return n({isResumePanelVisible:!0})},hideResumePanel:function(){return n({isResumePanelVisible:!1})},setIsReady:function(t){return n({isReady:t})},setIsBookingCompleted:function(t){return n({isBookingCompleted:t})},setBackgroundColor:function(t){return n(t?{backgroundColor:t}:{backgroundColor:g.backgroundColor})},setPrimaryGuestName:function(t){return n({primaryGuestName:t})},setCart:function(t){return n({cart:t})},setDates:function(t,e){return n({checkInDate:t,checkOutDate:e})},reset:function(){return n(g)}})}),{name:"widgetStore",storage:d((function(){return sessionStorage})),partialize:function(n){return Object.fromEntries(Object.entries(n).filter((function(n){var t=n[0];return!["cart","isReady"].includes(t)})))},onRehydrateStorage:function(){return function(n){(null==n?void 0:n.isBookingCompleted)&&n.reset()}}})),I=function(){return I=Object.assign||function(n){for(var t,e=1,r=arguments.length;e<r;e++)for(var i in t=arguments[e])Object.prototype.hasOwnProperty.call(t,i)&&(n[i]=t[i]);return n},I.apply(this,arguments)},b=function(){var n,t=document.getElementById("tripfusion-sdk").getAttribute("src"),e=y(new URLSearchParams(t.substring(t.indexOf("?"))));return{client:null!==(n=e.client)&&void 0!==n?n:null,propertyId:e.propertyId?+e.propertyId:null}};function y(n){var t={tripfusion:"tripfusion",client:"client",propertyid:"propertyId",mode:"mode",offerid:"offerId",bookingid:"bookingId",checkin:"checkIn",checkout:"checkOut",adults:"adults",children:"children"};return Array.from(n.entries()).reduce((function(n,e){var r,i=e[0],o=e[1];return I(I({},n),((r={})[t[i.toLowerCase()]]=o,r))}),{})}function w(t){return e=this,r=arguments,o=function(t,e){var r,i,o;return void 0===e&&(e="error"),function(n,t){var e,r,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return a.next=s(0),a.throw=s(1),a.return=s(2),"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(s){return function(u){return function(s){if(e)throw new TypeError("Generator is already executing.");for(;a&&(a=0,s[0]&&(o=0)),o;)try{if(e=1,r&&(i=2&s[0]?r.return:s[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,s[1])).done)return i;switch(r=0,i&&(s=[2&s[0],i.value]),s[0]){case 0:case 1:i=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,r=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]<i[3])){o.label=s[1];break}if(6===s[0]&&o.label<i[1]){o.label=i[1],i=s;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(s);break}i[2]&&o.ops.pop(),o.trys.pop();continue}s=t.call(n,o)}catch(n){s=[6,n],r=0}finally{e=i=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,u])}}}(this,(function(a){return r="".concat(n,"api/vacayou/log"),i={message:t,page:window.location.href},o={"content-type":"application/json"},[2,fetch(r,{method:"POST",body:JSON.stringify({type:e,payload:i}),headers:o}).then((function(n){return n.json()})).catch((function(n){console.log("Tripfusion: failed to log message: ".concat(n))}))]}))},new((i=void 0)||(i=Promise))((function(n,t){function a(n){try{u(o.next(n))}catch(n){t(n)}}function s(n){try{u(o.throw(n))}catch(n){t(n)}}function u(t){var e;t.done?n(t.value):(e=t.value,e instanceof i?e:new i((function(n){n(e)}))).then(a,s)}u((o=o.apply(e,r||[])).next())}));var e,r,i,o}function B(){try{var n=document.getElementById(t),e=document.getElementById(o);n&&e&&(document.body.style.overflow="initial",n.setAttribute("class","slide-out"),e.style.background="rgba(0, 0, 0, 0)",n.style.display="none",e.style.zIndex="".concat(-1e11))}catch(n){w("Widget: Error closing widget: ".concat(n)),console.error("Tripfusion: Error closing widget: ",n)}}function v(t){var e,i=t.client,o=t.propertyId,s=t.mode,u=t.bookingId,c=function(n,t){var e={};for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&t.indexOf(r)<0&&(e[r]=n[r]);if(null!=n&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(n);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(n,r[i])&&(e[r[i]]=n[r[i]])}return e}(t,["client","propertyId","mode","bookingId"]);try{null===(e=document.getElementById(a))||void 0===e||e.remove();var d=document.getElementById(r);if(d){var A=document.createElement("iframe"),f="".concat(n).concat(i,"/").concat(o);s===l&&u&&(f+="/booking/".concat(u,"/append"));var p=Object.entries(c).filter((function(n){return n[0],!!n[1]})).map((function(n){var t=n[0],e=n[1];return"".concat(t,"=").concat(e).toLowerCase()})).join("&");p&&(f+="?".concat(p)),A.setAttribute("src",f),A.id=a,d.appendChild(A)}}catch(n){w("Widget: Error injecting iframe: ".concat(n)),console.error("Tripfusion: Error injecting iframe: ",n)}}function k(){document.body.style.overflow="hidden"}var x=function(){return x=Object.assign||function(n){for(var t,e=1,r=arguments.length;e<r;e++)for(var i in t=arguments[e])Object.prototype.hasOwnProperty.call(t,i)&&(n[i]=t[i]);return n},x.apply(this,arguments)},S={client:null,propertyId:null,mode:c,bookingId:null,checkIn:null,checkOut:null,adults:null,children:null,offerId:null},E=m()(f((function(n){return x(x({},S),{replace:function(t){return n(x(x({},S),t))}})}),{name:"globalStore",storage:d((function(){return sessionStorage}))})),O=e(353),$=e.n(O);const D=n=>Symbol.iterator in n;var M=e(72),Y=e.n(M),j=e(825),Q=e.n(j),_=e(659),z=e.n(_),W=e(56),T=e.n(W),X=e(540),R=e.n(X),L=e(113),P=e.n(L),H=e(365),N={};function U(n){var t;try{var e=null!==(t=null!=n?n:E.getState())&&void 0!==t?t:b();if(!e.client||!e.propertyId)throw new Error("Client and propertyId are required to book");var r=C.getState(),i=r.hideResumePanel,o=r.reset;i(),function(n,t){if(Object.is(n,t))return!0;if("object"!=typeof n||null===n||"object"!=typeof t||null===t)return!1;if(D(n)&&D(t)){const e=n[Symbol.iterator](),r=t[Symbol.iterator]();let i=e.next(),o=r.next();if(Array.isArray(i.value)&&Array.isArray(o.value)&&2===i.value.length&&2===o.value.length)return((n,t)=>{const e=n instanceof Map?n:new Map(n),r=t instanceof Map?t:new Map(t);if(e.size!==r.size)return!1;for(const[n,t]of e)if(!Object.is(t,r.get(n)))return!1;return!0})(n,t);for(;!i.done&&!o.done;){if(!Object.is(i.value,o.value))return!1;i=e.next(),o=r.next()}return!!i.done&&!!o.done}const e=Object.keys(n);if(e.length!==Object.keys(t).length)return!1;for(const r of e)if(!Object.hasOwn(t,r)||!Object.is(n[r],t[r]))return!1;return!0}(E.getState(),e)||(o(),E.getState().replace(e)),C.getState().showWidget()}catch(n){w("Widget: failed to book: ".concat(n)),console.error("Tripfusion: failed to book: ".concat(n))}}N.styleTagTransform=P(),N.setAttributes=T(),N.insert=z().bind(null,"head"),N.domAPI=Q(),N.insertStyleElement=R(),Y()(H.A,N),H.A&&H.A.locals&&H.A.locals,E.subscribe((function(n){n.client&&n.propertyId&&v(n)})),C.subscribe((function(n){var e,r,c;if(n.isResumePanelVisible){var l=n.primaryGuestName?"Complete your booking, ".concat(n.primaryGuestName):"Complete your booking",d="",A=[];if(n.isBookingCompleted&&(l="Booking completed!"),n.checkInDate&&n.checkOutDate&&A.push("".concat($()(n.checkInDate).format("MMM DD")," - ").concat($()(n.checkOutDate).format("MMM DD"))),n.cart.total){if((null===(e=n.cart)||void 0===e?void 0:e.rooms)&&n.cart.rooms.length>0){var f=n.cart.rooms.length,p=n.cart.rooms.reduce((function(n,t){return n+t.passengers.adults+t.passengers.children.length}),0);d="".concat(f," room").concat(f>1?"s":""," for "),A.push("".concat(p," guest").concat(p>1?"s":""))}d+=null!==(r=n.cart.total)?new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"}).format(r/100):""}!function(n){var t=n.headerText,e=n.subheaderText,r=n.footerText;document.getElementById(s).innerHTML='\n <div>\n <div class="tripfusion-resume-panel__header">\n <span>'.concat(t,'</span>\n <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 330 330" xml:space="preserve">\n <path id="XMLID_222_" d="M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z"/>\n </svg>\n </div>\n ').concat(e&&'<span class="tripfusion-resume-panel__subheader">'.concat(e,"</span>"),"\n </div>\n ").concat(r&&'<span class="tripfusion-resume-panel__footer">'.concat(r,"</span>"),"\n ")}({headerText:l,subheaderText:d,footerText:A.join(", ")})}n.backgroundColor&&function(n){var t=n.backgroundColor,e=document.getElementById(s),r=document.getElementById(i);e.style.backgroundColor=t,r.style.backgroundColor=t}({backgroundColor:n.backgroundColor}),n.isReady?(function(){var n;null===(n=document.getElementById(u))||void 0===n||n.remove()}(),n.isOpen?function(){try{var n=document.getElementById(t),e=document.getElementById(o);Object.assign(e.style,{zIndex:0xe8d4a5100b,height:"100%",background:"rgba(0, 0, 0, .5)"}),k(),n.style.display="block",n.setAttribute("class","slide-in"),setTimeout((function(){var n=document.getElementById(a);null==n||n.focus()}),250)}catch(n){w("Widget: Error openning widget: ".concat(n)),console.error("Tripfusion: Error openning widget: ",n)}}():B(),n.isResumePanelVisible?((c=document.getElementById(s)).setAttribute("class","tripfusion-resume-panel--slide-in"),c.focus()):document.getElementById(s).setAttribute("class","tripfusion-resume-panel--slide-out")):function(){var n=document.getElementById(o);if(n){var t=document.createElement("div");t.id=u,t.innerHTML="Loading <span>TripFusion</span>",n.appendChild(t),n.style.zIndex="".concat(1e11),n.style.height="100%",n.style.background="rgba(0, 0, 0, .74)",k()}}()})),function(){try{var n=setInterval((function(){if("complete"===document.readyState){if(function(){try{var n=C.getState(),e=n.showWidget,a=n.hideWidget,u=n.showResumePanel,c=n.hideResumePanel,l=document.createElement("div"),d=document.createElement("div"),A=document.createElement("div"),f=document.createElement("div"),p=document.createElement("span"),m=document.createElement("button"),h=document.createElement("div");h.id=s,null==h||h.addEventListener("click",(function(){e(),c()})),l.id=t,l.style.display="none",d.id=o,l.addEventListener("click",(function(n){this===n.target&&(a(),u())})),A.id=r,f.id=i,m.id="tripfusion-widget-close-button",m.addEventListener("click",(function(){a(),u()})),p.id="tripfusion-widget-header-title",p.innerHTML="Booking",d.appendChild(l),l.appendChild(A),A.appendChild(f),f.appendChild(p),f.appendChild(m),document.body.appendChild(d),document.body.appendChild(h)}catch(n){w("Widget: Error preparing DOM: ".concat(n)),console.error("Tripfusion: Error preparing DOM: ",n)}}(),E.getState().client&&E.getState().propertyId)v(E.getState());else{var e=b(),a=e.client,u=e.propertyId;E.getState().replace({client:a,propertyId:u})}!function(){function n(n){var t;try{var e=n.target,r=e.parentNode;"A"!==e.tagName&&"A"===(null==r?void 0:r.tagName)&&(e.href=null==r?void 0:r.href);var i=e.href||"";if(!i.includes("?"))return;var o=y(new URLSearchParams(i.substring(i.indexOf("?"))));if("true"===o.tripfusion){n.preventDefault();var a=b(),s=a.client,u=a.propertyId;U({client:null!==(t=o.client)&&void 0!==t?t:s,propertyId:o.propertyId?+o.propertyId:u,mode:o.mode===l?l:c,bookingId:(null==o?void 0:o.bookingId)&&(null==o?void 0:o.mode)===l?+o.bookingId:null,offerId:o.offerId?+o.offerId:void 0,checkIn:o.checkIn,checkOut:o.checkOut,adults:o.adults?+o.adults:void 0,children:o.children?o.children.split(",").map((function(n){return+n})):void 0})}}catch(n){w("Widget: Error in link click handler: ".concat(n)),console.error("Tripfusion: Error in link click handler: ",n)}}document.querySelectorAll("a").forEach((function(t){t.addEventListener("click",n)}))}(),clearInterval(n)}}),100);!function(){function n(){setTimeout((function(){var n,t=y(new URLSearchParams(window.location.search));"true"===t.tripfusion&&(E.getState().client||t.client)&&(E.getState().propertyId||t.propertyId)&&U({client:null!==(n=t.client)&&void 0!==n?n:E.getState().client,propertyId:t.propertyId?+t.propertyId:E.getState().propertyId,mode:t.mode===l?l:c,bookingId:(null==t?void 0:t.bookingId)&&(null==t?void 0:t.mode)===l?+t.bookingId:null,offerId:t.offerId?+t.offerId:void 0,checkIn:t.checkIn,checkOut:t.checkOut,adults:t.adults?+t.adults:void 0,children:t.children?t.children.split(",").map((function(n){return+n})):void 0})}),500)}"complete"===document.readyState?n():window.addEventListener("load",n)}(),Object.assign(window,{book:U,closeWidget:B}),window.onmessage=function(n){var t=n.data;switch(t.type){case"tripfusion-widget-ready":C.getState().setIsReady(!0);break;case"tripfusion-booking-completed":C.getState().setIsBookingCompleted(!0);break;case"tripfusion-set-client-theme":var e=(r=t.data).primary;e&&C.getState().setBackgroundColor(e);break;case"tripfusion-set-guest-name":var r=t.data;C.getState().setPrimaryGuestName(r.name);break;case"tripfusion-set-dates":(r=t.data).checkIn&&r.checkOut&&C.getState().setDates(r.checkIn,r.checkOut);break;case"tripfusion-set-cart":r=t.data,C.getState().setCart(r.cart)}}}catch(n){w("Widget: failed to init Tripfusion JS SDK: ".concat(n)),console.error("Tripfusion: failed to init SDK: ".concat(n))}}()})()})();
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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LElBQ3BEaEIsUUFBUWdCLE1BQU0sMENBQW1DQSxHQUNyRCxDQUNKLENBRUFtTSxFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9zcmMvc3R5bGVzLmNzcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9kYXlqcy9kYXlqcy5taW4uanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay93ZWJwYWNrL3J1bnRpbWUvbm9uY2UiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9zcmMvY29uc3QudHMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvenVzdGFuZC9lc20vbWlkZGxld2FyZS5tanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvenVzdGFuZC9lc20vdmFuaWxsYS5tanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9zcmMvc3RvcmUvd2lkZ2V0LnN0b3JlLnRzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL3V0aWxzLnRzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL2RvbS50cyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL3NyYy9zdG9yZS9nbG9iYWwuc3RvcmUudHMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvenVzdGFuZC9lc20vdmFuaWxsYS9zaGFsbG93Lm1qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL3NyYy9zdHlsZXMuY3NzPzQ0YjIiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiQGltcG9ydCB1cmwoaHR0cHM6Ly91c2UudHlwZWtpdC5uZXQvc2FnOGNlYi5jc3MpO1wiXSk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgYCN0cmlwZnVzaW9uLWxvYWRlciB7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIG1hcmdpbi1yaWdodDogLTUwJTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogNTAlO1xuICAgIGZvbnQtZmFtaWx5OiBmdXR1cmEtbHQtdzAxLWJvb2ssIGZ1dHVyYS1sdC13MDUtYm9vaywgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbn1cblxuI3RyaXBmdXNpb24tbG9hZGVyIHNwYW4ge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xufVxuXG4jdHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWwge1xuICAgIG1heC13aWR0aDogMjUwcHg7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDAuNXJlbTtcbiAgICBwYWRkaW5nOiAxMnB4IDI0cHg7XG4gICAgYm94LXNoYWRvdzogMHB4IDBweCAycHggcmdiYSgwLCAwLCAwLCAwLjI1KSwgMHB4IDRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgIHJpZ2h0OiAzMHB4O1xuICAgIHotaW5kZXg6IDEwMDAwMDAwMDAwMDtcbiAgICBib3R0b206IDQwcHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0MDBweCk7XG4gICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIGZvbnQtZmFtaWx5OiBzd2VldC1zYW5zLXBybywgc2Fucy1zZXJpZjtcbn1cblxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsX19oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogMmVtO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbF9faGVhZGVyIHN2ZyB7XG4gICAgd2lkdGg6IDE4cHg7XG4gICAgaGVpZ2h0OiAxOHB4O1xuICAgIGZpbGw6IHdoaXRlO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX2hlYWRlciBzcGFuLFxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsX19zdWJoZWFkZXIge1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX2Zvb3RlciB7XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICBmb250LXdlaWdodDogNDAwO1xufVxuXG4jdHJpcGZ1c2lvbi13aWRnZXQtd3JhcHBlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwKTtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC41cyBlYXNlLW91dDtcbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHRvcDogMHB4O1xuICAgIHJpZ2h0OiAwcHg7XG59XG5cbiN0cmlwZnVzaW9uLXdpZGdldC1pbm5lci13cmFwcGVyIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIG1pbi13aWR0aDogMzIwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHJpZ2h0OiAwcHg7XG4gICAgYm90dG9tOiAwcHg7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMik7XG4gICAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjAwOTM4ZW07XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgICN0cmlwZnVzaW9uLXdpZGdldC1pbm5lci13cmFwcGVyIHtcbiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA0MHB4KTtcbiAgICAgICAgcmlnaHQ6IDIwcHg7XG4gICAgICAgIGJvdHRvbTogMjBweDtcbiAgICAgICAgd2lkdGg6IDUwMHB4O1xuICAgIH1cbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0LWhlYWRlciB7XG4gICAgaGVpZ2h0OiA2MHB4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjFmMWYxO1xuICAgIHBhZGRpbmc6IDAgMTZweCAwIDE2cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBjb2xvcjogd2hpdGU7XG59XG5cbiN0cmlwZnVzaW9uLXdpZGdldC1pZnJhbWUge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBib3JkZXI6IG5vbmU7XG59XG5cbiN0cmlwZnVzaW9uLXdpZGdldC1oZWFkZXItdGl0bGUge1xuICAgIGZvbnQtZmFtaWx5OiBzd2VldC1zYW5zLXBybywgc2Fucy1zZXJpZjtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIGxldHRlci1zcGFjaW5nOiAxLjVweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4jdHJpcGZ1c2lvbi13aWRnZXQtY2xvc2UtYnV0dG9uIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogMmVtO1xuICAgIGhlaWdodDogMmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBmb250OiBpbmhlcml0O1xuICAgIHRleHQtaW5kZW50OiAxMDAlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICY6Zm9jdXMge1xuICAgICAgICBvdXRsaW5lOiBzb2xpZCAwIHRyYW5zcGFyZW50O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDQpO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDQpO1xuICAgIH1cblxuICAgICY6YmVmb3JlLFxuICAgICY6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMjUlO1xuICAgICAgICBsZWZ0OiBjYWxjKDUwJSAtIDAuMDYyNWVtKTtcbiAgICAgICAgd2lkdGg6IDAuMTI1ZW07XG4gICAgICAgIGhlaWdodDogNTAlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjEyNWVtO1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gICAgICAgIGJhY2tncm91bmQ6IGN1cnJlbnRjb2xvcjtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgIH1cblxuICAgICY6YWZ0ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xuICAgIH1cbn1cblxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsLS1zbGlkZS1pbiB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiA1MDBtcztcbiAgICAtbW96LXRyYW5zaXRpb246IDUwMG1zO1xuICAgIHRyYW5zaXRpb246IDUwMG1zO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSAhaW1wb3J0YW50O1xufVxuXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWwtLXNsaWRlLW91dCB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiA1MDBtcztcbiAgICAtbW96LXRyYW5zaXRpb246IDUwMG1zO1xuICAgIHRyYW5zaXRpb246IDUwMG1zO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0MDBweCkgIWltcG9ydGFudDtcbn1cblxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsLS1yZXNpemUtaW4ge1xuICAgIHdpZHRoOiA0NnB4ICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiA0NnB4ICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNpdGlvbjogNTAwbXM7XG4gICAgcmlnaHQ6IDMwcHggIWltcG9ydGFudDtcbn1cblxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsLS1yZXNpemUtaW46aG92ZXIge1xuICAgIHdpZHRoOiAyMTdweCAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xuICAgIHRyYW5zaXRpb246IGFsbCAzMDBtcyBsaW5lYXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWwtLXJlc2l6ZS1vdXQge1xuICAgIHdpZHRoOiA0NnB4ICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiA0NnB4ICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNpdGlvbjogNTAwbXM7XG4gICAgcmlnaHQ6IC0xMDBweCAhaW1wb3J0YW50O1xufVxuXG4uc2xpZGUtaW4ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICBhbmltYXRpb246IHNsaWRlLWluIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGUtaW4gMC44cyBmb3J3YXJkcyAhaW1wb3J0YW50O1xuICAgIHotaW5kZXg6IDEwMDAwMDAwMDAwMDA7XG59XG5cbi5zbGlkZS1vdXQge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICBhbmltYXRpb246IHNsaWRlLW91dCAxcyBmb3J3YXJkcyAhaW1wb3J0YW50O1xuICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS1vdXQgMXMgZm9yd2FyZHMgIWltcG9ydGFudDtcbiAgICB6LWluZGV4OiAtMTAwMDAwMDAwMDAwMDtcbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDk1cHgpIHtcbiAgICAuc2xpZGUtaW4ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgICAgICBhbmltYXRpb246IHNsaWRlLXVwIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLXVwIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcbiAgICAgICAgei1pbmRleDogMTAwMDAwMDAwMDAwMDtcbiAgICB9XG5cbiAgICAuc2xpZGUtb3V0IHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICAgICAgYW5pbWF0aW9uOiBzbGlkZS1kb3duIDAuNXMgZm9yd2FyZHMgIWltcG9ydGFudDtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLWRvd24gMXMgZm9yd2FyZHMgIWltcG9ydGFudDtcbiAgICAgICAgei1pbmRleDogLTEwMDAwMDAwMDAwMDA7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlLWluIHtcbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcbiAgICB9XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS1pbiB7XG4gICAgMTAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGUtdXAge1xuICAgIDEwMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xuICAgIH1cbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlLXVwIHtcbiAgICAxMDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZS1vdXQge1xuICAgIDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIH1cbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlLW91dCB7XG4gICAgMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZS1kb3duIHtcbiAgICAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICB9XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS1kb3duIHtcbiAgICAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgfVxufVxuYCwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9zcmMvc3R5bGVzLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFQTtJQUNJLFlBQVk7SUFDWixrQkFBa0I7SUFDbEIsa0JBQWtCO0lBQ2xCLFFBQVE7SUFDUixTQUFTO0lBQ1QsaUZBQWlGO0lBQ2pGLGdDQUFnQztBQUNwQzs7QUFFQTtJQUNJLGlCQUFpQjtJQUNqQixpQkFBaUI7QUFDckI7O0FBRUE7SUFDSSxnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixlQUFlO0lBQ2YsYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixXQUFXO0lBQ1gsa0JBQWtCO0lBQ2xCLDJFQUEyRTtJQUMzRSxXQUFXO0lBQ1gscUJBQXFCO0lBQ3JCLFlBQVk7SUFDWixZQUFZO0lBQ1osNEJBQTRCO0lBQzVCLG1CQUFtQjtJQUNuQixZQUFZO0lBQ1osZUFBZTtJQUNmLHVDQUF1QztBQUMzQzs7QUFFQTtJQUNJLGFBQWE7SUFDYiw4QkFBOEI7SUFDOUIsUUFBUTtJQUNSLG1CQUFtQjtBQUN2Qjs7QUFFQTtJQUNJLFdBQVc7SUFDWCxZQUFZO0lBQ1osV0FBVztJQUNYLGNBQWM7QUFDbEI7O0FBRUE7O0lBRUksZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQixnQkFBZ0I7SUFDaEIsdUJBQXVCO0FBQzNCOztBQUVBO0lBQ0ksaURBQWlEO0lBQ2pELGlCQUFpQjtJQUNqQixnQkFBZ0I7QUFDcEI7O0FBRUE7SUFDSSw0QkFBNEI7SUFDNUIsZUFBZTtJQUNmLE1BQU07SUFDTixRQUFRO0lBQ1IsV0FBVztJQUNYLG9DQUFvQztBQUN4Qzs7QUFFQTtJQUNJLGtCQUFrQjtJQUNsQixXQUFXO0lBQ1gsWUFBWTtJQUNaLFFBQVE7SUFDUixVQUFVO0FBQ2Q7O0FBRUE7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O0lBQ3ZDO0FBQ0pcIixcInNvdXJjZXNDb250ZW50XCI6W1wiQGltcG9ydCB1cmwoXFxcImh0dHBzOi8vdXNlLnR5cGVraXQubmV0L3NhZzhjZWIuY3NzXFxcIik7XFxuXFxuI3RyaXBmdXNpb24tbG9hZGVyIHtcXG4gICAgY29sb3I6IHdoaXRlO1xcbiAgICBtYXJnaW4tcmlnaHQ6IC01MCU7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgdG9wOiA1MCU7XFxuICAgIGxlZnQ6IDUwJTtcXG4gICAgZm9udC1mYW1pbHk6IGZ1dHVyYS1sdC13MDEtYm9vaywgZnV0dXJhLWx0LXcwNS1ib29rLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcXG59XFxuXFxuI3RyaXBmdXNpb24tbG9hZGVyIHNwYW4ge1xcbiAgICBmb250LXdlaWdodDogYm9sZDtcXG4gICAgZm9udC1zaXplOiAxLjNyZW07XFxufVxcblxcbiN0cmlwZnVzaW9uLXJlc3VtZS1wYW5lbCB7XFxuICAgIG1heC13aWR0aDogMjUwcHg7XFxuICAgIHBvc2l0aW9uOiBmaXhlZDtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICBnYXA6IDAuNXJlbTtcXG4gICAgcGFkZGluZzogMTJweCAyNHB4O1xcbiAgICBib3gtc2hhZG93OiAwcHggMHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMjUpLCAwcHggNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxuICAgIHJpZ2h0OiAzMHB4O1xcbiAgICB6LWluZGV4OiAxMDAwMDAwMDAwMDA7XFxuICAgIGJvdHRvbTogNDBweDtcXG4gICAgYm9yZGVyOiBub25lO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNDAwcHgpO1xcbiAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xcbiAgICBjb2xvcjogd2hpdGU7XFxuICAgIGZvbnQtc2l6ZTogMXJlbTtcXG4gICAgZm9udC1mYW1pbHk6IHN3ZWV0LXNhbnMtcHJvLCBzYW5zLXNlcmlmO1xcbn1cXG5cXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX2hlYWRlciB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gICAgZ2FwOiAyZW07XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxufVxcblxcbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbF9faGVhZGVyIHN2ZyB7XFxuICAgIHdpZHRoOiAxOHB4O1xcbiAgICBoZWlnaHQ6IDE4cHg7XFxuICAgIGZpbGw6IHdoaXRlO1xcbiAgICBmbGV4LXNocmluazogMDtcXG59XFxuXFxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsX19oZWFkZXIgc3BhbixcXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX3N1YmhlYWRlciB7XFxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbn1cXG5cXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX2Zvb3RlciB7XFxuICAgIGZvbnQtZmFtaWx5OiBSb2JvdG8sIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XFxuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi13aWRnZXQtd3JhcHBlciB7XFxuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMCk7XFxuICAgIHBvc2l0aW9uOiBmaXhlZDtcXG4gICAgdG9wOiAwO1xcbiAgICByaWdodDogMDtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC41cyBlYXNlLW91dDtcXG59XFxuXFxuI3RyaXBmdXNpb24td2lkZ2V0IHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICB0b3A6IDBweDtcXG4gICAgcmlnaHQ6IDBweDtcXG59XFxuXFxuI3RyaXBmdXNpb24td2lkZ2V0LWlubmVyLXdyYXBwZXIge1xcbiAgICBwb3NpdGlvbjogZml4ZWQ7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIG1pbi13aWR0aDogMzIwcHg7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICAgIHJpZ2h0OiAwcHg7XFxuICAgIGJvdHRvbTogMHB4O1xcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xcbiAgICBib3gtc2hhZG93OiAwIDJweCAxMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpO1xcbiAgICBmb250LWZhbWlseTogXFxcIlJvYm90b1xcXCIsIFxcXCJIZWx2ZXRpY2FcXFwiLCBcXFwiQXJpYWxcXFwiLCBzYW5zLXNlcmlmO1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbiAgICBmb250LXNpemU6IDFyZW07XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICAgIGxldHRlci1zcGFjaW5nOiAwLjAwOTM4ZW07XFxufVxcblxcbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xcbiAgICAjdHJpcGZ1c2lvbi13aWRnZXQtaW5uZXItd3JhcHBlciB7XFxuICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDQwcHgpO1xcbiAgICAgICAgcmlnaHQ6IDIwcHg7XFxuICAgICAgICBib3R0b206IDIwcHg7XFxuICAgICAgICB3aWR0aDogNTAwcHg7XFxuICAgIH1cXG59XFxuXFxuI3RyaXBmdXNpb24td2lkZ2V0LWhlYWRlciB7XFxuICAgIGhlaWdodDogNjBweDtcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMWYxZjE7XFxuICAgIHBhZGRpbmc6IDAgMTZweCAwIDE2cHg7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgY29sb3I6IHdoaXRlO1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi13aWRnZXQtaWZyYW1lIHtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICBib3JkZXI6IG5vbmU7XFxufVxcblxcbiN0cmlwZnVzaW9uLXdpZGdldC1oZWFkZXItdGl0bGUge1xcbiAgICBmb250LWZhbWlseTogc3dlZXQtc2Fucy1wcm8sIHNhbnMtc2VyaWY7XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XFxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICAgIGZvbnQtc2l6ZTogMXJlbTtcXG4gICAgbGV0dGVyLXNwYWNpbmc6IDEuNXB4O1xcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi13aWRnZXQtY2xvc2UtYnV0dG9uIHtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBib3JkZXI6IG5vbmU7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIHdpZHRoOiAyZW07XFxuICAgIGhlaWdodDogMmVtO1xcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbiAgICBmb250OiBpbmhlcml0O1xcbiAgICB0ZXh0LWluZGVudDogMTAwJTtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcblxcbiAgICAmOmZvY3VzIHtcXG4gICAgICAgIG91dGxpbmU6IHNvbGlkIDAgdHJhbnNwYXJlbnQ7XFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDQpO1xcbiAgICB9XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA0KTtcXG4gICAgfVxcblxcbiAgICAmOmJlZm9yZSxcXG4gICAgJjphZnRlciB7XFxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICB0b3A6IDI1JTtcXG4gICAgICAgIGxlZnQ6IGNhbGMoNTAlIC0gMC4wNjI1ZW0pO1xcbiAgICAgICAgd2lkdGg6IDAuMTI1ZW07XFxuICAgICAgICBoZWlnaHQ6IDUwJTtcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMTI1ZW07XFxuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XFxuICAgICAgICBiYWNrZ3JvdW5kOiBjdXJyZW50Y29sb3I7XFxuICAgICAgICBjb2xvcjogd2hpdGU7XFxuICAgICAgICBjb250ZW50OiBcXFwiXFxcIjtcXG4gICAgfVxcblxcbiAgICAmOmFmdGVyIHtcXG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XFxuICAgIH1cXG59XFxuXFxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsLS1zbGlkZS1pbiB7XFxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogNTAwbXM7XFxuICAgIC1tb3otdHJhbnNpdGlvbjogNTAwbXM7XFxuICAgIHRyYW5zaXRpb246IDUwMG1zO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcXG59XFxuXFxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsLS1zbGlkZS1vdXQge1xcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IDUwMG1zO1xcbiAgICAtbW96LXRyYW5zaXRpb246IDUwMG1zO1xcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDQwMHB4KSAhaW1wb3J0YW50O1xcbn1cXG5cXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWwtLXJlc2l6ZS1pbiB7XFxuICAgIHdpZHRoOiA0NnB4ICFpbXBvcnRhbnQ7XFxuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgcmlnaHQ6IDMwcHggIWltcG9ydGFudDtcXG59XFxuXFxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsLS1yZXNpemUtaW46aG92ZXIge1xcbiAgICB3aWR0aDogMjE3cHggIWltcG9ydGFudDtcXG4gICAgaGVpZ2h0OiA0NnB4ICFpbXBvcnRhbnQ7XFxuICAgIHRyYW5zaXRpb246IGFsbCAzMDBtcyBsaW5lYXI7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsLS1yZXNpemUtb3V0IHtcXG4gICAgd2lkdGg6IDQ2cHggIWltcG9ydGFudDtcXG4gICAgaGVpZ2h0OiA0NnB4ICFpbXBvcnRhbnQ7XFxuICAgIHRyYW5zaXRpb246IDUwMG1zO1xcbiAgICByaWdodDogLTEwMHB4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5zbGlkZS1pbiB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxuICAgIGFuaW1hdGlvbjogc2xpZGUtaW4gMC44cyBmb3J3YXJkcyAhaW1wb3J0YW50O1xcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGUtaW4gMC44cyBmb3J3YXJkcyAhaW1wb3J0YW50O1xcbiAgICB6LWluZGV4OiAxMDAwMDAwMDAwMDAwO1xcbn1cXG5cXG4uc2xpZGUtb3V0IHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG4gICAgYW5pbWF0aW9uOiBzbGlkZS1vdXQgMXMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLW91dCAxcyBmb3J3YXJkcyAhaW1wb3J0YW50O1xcbiAgICB6LWluZGV4OiAtMTAwMDAwMDAwMDAwMDtcXG59XFxuXFxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDk1cHgpIHtcXG4gICAgLnNsaWRlLWluIHtcXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xcbiAgICAgICAgYW5pbWF0aW9uOiBzbGlkZS11cCAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XFxuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGUtdXAgMC44cyBmb3J3YXJkcyAhaW1wb3J0YW50O1xcbiAgICAgICAgei1pbmRleDogMTAwMDAwMDAwMDAwMDtcXG4gICAgfVxcblxcbiAgICAuc2xpZGUtb3V0IHtcXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xcbiAgICAgICAgYW5pbWF0aW9uOiBzbGlkZS1kb3duIDAuNXMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS1kb3duIDFzIGZvcndhcmRzICFpbXBvcnRhbnQ7XFxuICAgICAgICB6LWluZGV4OiAtMTAwMDAwMDAwMDAwMDtcXG4gICAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzIHNsaWRlLWluIHtcXG4gICAgMTAwJSB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xcbiAgICB9XFxufVxcblxcbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS1pbiB7XFxuICAgIDEwMCUge1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xcbiAgICB9XFxufVxcblxcbkBrZXlmcmFtZXMgc2xpZGUtdXAge1xcbiAgICAxMDAlIHtcXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XFxuICAgIH1cXG59XFxuXFxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlLXVwIHtcXG4gICAgMTAwJSB7XFxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XFxuICAgIH1cXG59XFxuXFxuQGtleWZyYW1lcyBzbGlkZS1vdXQge1xcbiAgICAwJSB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xcbiAgICB9XFxuXFxuICAgIDEwMCUge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xcbiAgICB9XFxufVxcblxcbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS1vdXQge1xcbiAgICAwJSB7XFxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XFxuICAgIH1cXG5cXG4gICAgMTAwJSB7XFxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG4gICAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzIHNsaWRlLWRvd24ge1xcbiAgICAwJSB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xcbiAgICB9XFxuXFxuICAgIDEwMCUge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xcbiAgICB9XFxufVxcblxcbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS1kb3duIHtcXG4gICAgMCUge1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xcbiAgICB9XFxuXFxuICAgIDEwMCUge1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxuICAgIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKlxuICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY3NzV2l0aE1hcHBpbmdUb1N0cmluZykge1xuICB2YXIgbGlzdCA9IFtdO1xuXG4gIC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBcIlwiO1xuICAgICAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBpdGVtWzVdICE9PSBcInVuZGVmaW5lZFwiO1xuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgY29udGVudCArPSBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKTtcbiAgICAgIH1cbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpO1xuICAgICAgfVxuICAgICAgY29udGVudCArPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pO1xuICAgICAgaWYgKG5lZWRMYXllcikge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9KS5qb2luKFwiXCIpO1xuICB9O1xuXG4gIC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG4gIGxpc3QuaSA9IGZ1bmN0aW9uIGkobW9kdWxlcywgbWVkaWEsIGRlZHVwZSwgc3VwcG9ydHMsIGxheWVyKSB7XG4gICAgaWYgKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCB1bmRlZmluZWRdXTtcbiAgICB9XG4gICAgdmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcbiAgICBpZiAoZGVkdXBlKSB7XG4gICAgICBmb3IgKHZhciBrID0gMDsgayA8IHRoaXMubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgdmFyIGlkID0gdGhpc1trXVswXTtcbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZm9yICh2YXIgX2sgPSAwOyBfayA8IG1vZHVsZXMubGVuZ3RoOyBfaysrKSB7XG4gICAgICB2YXIgaXRlbSA9IFtdLmNvbmNhdChtb2R1bGVzW19rXSk7XG4gICAgICBpZiAoZGVkdXBlICYmIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIGxheWVyICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbVs1XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG1lZGlhKSB7XG4gICAgICAgIGlmICghaXRlbVsyXSkge1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChzdXBwb3J0cykge1xuICAgICAgICBpZiAoIWl0ZW1bNF0pIHtcbiAgICAgICAgICBpdGVtWzRdID0gXCJcIi5jb25jYXQoc3VwcG9ydHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVs0XSA9IHN1cHBvcnRzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsaXN0LnB1c2goaXRlbSk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gbGlzdDtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgdmFyIGNvbnRlbnQgPSBpdGVtWzFdO1xuICB2YXIgY3NzTWFwcGluZyA9IGl0ZW1bM107XG4gIGlmICghY3NzTWFwcGluZykge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG4gIGlmICh0eXBlb2YgYnRvYSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGNzc01hcHBpbmcpKSkpO1xuICAgIHZhciBkYXRhID0gXCJzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcIi5jb25jYXQoYmFzZTY0KTtcbiAgICB2YXIgc291cmNlTWFwcGluZyA9IFwiLyojIFwiLmNvbmNhdChkYXRhLCBcIiAqL1wiKTtcbiAgICByZXR1cm4gW2NvbnRlbnRdLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oXCJcXG5cIik7XG4gIH1cbiAgcmV0dXJuIFtjb250ZW50XS5qb2luKFwiXFxuXCIpO1xufTsiLCIhZnVuY3Rpb24odCxlKXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKCk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShlKToodD1cInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOnR8fHNlbGYpLmRheWpzPWUoKX0odGhpcywoZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjt2YXIgdD0xZTMsZT02ZTQsbj0zNmU1LHI9XCJtaWxsaXNlY29uZFwiLGk9XCJzZWNvbmRcIixzPVwibWludXRlXCIsdT1cImhvdXJcIixhPVwiZGF5XCIsbz1cIndlZWtcIixjPVwibW9udGhcIixmPVwicXVhcnRlclwiLGg9XCJ5ZWFyXCIsZD1cImRhdGVcIixsPVwiSW52YWxpZCBEYXRlXCIsJD0vXihcXGR7NH0pWy0vXT8oXFxkezEsMn0pP1stL10/KFxcZHswLDJ9KVtUdFxcc10qKFxcZHsxLDJ9KT86PyhcXGR7MSwyfSk/Oj8oXFxkezEsMn0pP1suOl0/KFxcZCspPyQvLHk9L1xcWyhbXlxcXV0rKV18WXsxLDR9fE17MSw0fXxEezEsMn18ZHsxLDR9fEh7MSwyfXxoezEsMn18YXxBfG17MSwyfXxzezEsMn18WnsxLDJ9fFNTUy9nLE09e25hbWU6XCJlblwiLHdlZWtkYXlzOlwiU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXlcIi5zcGxpdChcIl9cIiksbW9udGhzOlwiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlclwiLnNwbGl0KFwiX1wiKSxvcmRpbmFsOmZ1bmN0aW9uKHQpe3ZhciBlPVtcInRoXCIsXCJzdFwiLFwibmRcIixcInJkXCJdLG49dCUxMDA7cmV0dXJuXCJbXCIrdCsoZVsobi0yMCklMTBdfHxlW25dfHxlWzBdKStcIl1cIn19LG09ZnVuY3Rpb24odCxlLG4pe3ZhciByPVN0cmluZyh0KTtyZXR1cm4hcnx8ci5sZW5ndGg+PWU/dDpcIlwiK0FycmF5KGUrMS1yLmxlbmd0aCkuam9pbihuKSt0fSx2PXtzOm0sejpmdW5jdGlvbih0KXt2YXIgZT0tdC51dGNPZmZzZXQoKSxuPU1hdGguYWJzKGUpLHI9TWF0aC5mbG9vcihuLzYwKSxpPW4lNjA7cmV0dXJuKGU8PTA/XCIrXCI6XCItXCIpK20ociwyLFwiMFwiKStcIjpcIittKGksMixcIjBcIil9LG06ZnVuY3Rpb24gdChlLG4pe2lmKGUuZGF0ZSgpPG4uZGF0ZSgpKXJldHVybi10KG4sZSk7dmFyIHI9MTIqKG4ueWVhcigpLWUueWVhcigpKSsobi5tb250aCgpLWUubW9udGgoKSksaT1lLmNsb25lKCkuYWRkKHIsYykscz1uLWk8MCx1PWUuY2xvbmUoKS5hZGQocisocz8tMToxKSxjKTtyZXR1cm4rKC0ocisobi1pKS8ocz9pLXU6dS1pKSl8fDApfSxhOmZ1bmN0aW9uKHQpe3JldHVybiB0PDA/TWF0aC5jZWlsKHQpfHwwOk1hdGguZmxvb3IodCl9LHA6ZnVuY3Rpb24odCl7cmV0dXJue006Yyx5OmgsdzpvLGQ6YSxEOmQsaDp1LG06cyxzOmksbXM6cixROmZ9W3RdfHxTdHJpbmcodHx8XCJcIikudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9zJC8sXCJcIil9LHU6ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXR9fSxnPVwiZW5cIixEPXt9O0RbZ109TTt2YXIgcD1cIiRpc0RheWpzT2JqZWN0XCIsUz1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIF98fCEoIXR8fCF0W3BdKX0sdz1mdW5jdGlvbiB0KGUsbixyKXt2YXIgaTtpZighZSlyZXR1cm4gZztpZihcInN0cmluZ1wiPT10eXBlb2YgZSl7dmFyIHM9ZS50b0xvd2VyQ2FzZSgpO0Rbc10mJihpPXMpLG4mJihEW3NdPW4saT1zKTt2YXIgdT1lLnNwbGl0KFwiLVwiKTtpZighaSYmdS5sZW5ndGg+MSlyZXR1cm4gdCh1WzBdKX1lbHNle3ZhciBhPWUubmFtZTtEW2FdPWUsaT1hfXJldHVybiFyJiZpJiYoZz1pKSxpfHwhciYmZ30sTz1mdW5jdGlvbih0LGUpe2lmKFModCkpcmV0dXJuIHQuY2xvbmUoKTt2YXIgbj1cIm9iamVjdFwiPT10eXBlb2YgZT9lOnt9O3JldHVybiBuLmRhdGU9dCxuLmFyZ3M9YXJndW1lbnRzLG5ldyBfKG4pfSxiPXY7Yi5sPXcsYi5pPVMsYi53PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE8odCx7bG9jYWxlOmUuJEwsdXRjOmUuJHUseDplLiR4LCRvZmZzZXQ6ZS4kb2Zmc2V0fSl9O3ZhciBfPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gTSh0KXt0aGlzLiRMPXcodC5sb2NhbGUsbnVsbCwhMCksdGhpcy5wYXJzZSh0KSx0aGlzLiR4PXRoaXMuJHh8fHQueHx8e30sdGhpc1twXT0hMH12YXIgbT1NLnByb3RvdHlwZTtyZXR1cm4gbS5wYXJzZT1mdW5jdGlvbih0KXt0aGlzLiRkPWZ1bmN0aW9uKHQpe3ZhciBlPXQuZGF0ZSxuPXQudXRjO2lmKG51bGw9PT1lKXJldHVybiBuZXcgRGF0ZShOYU4pO2lmKGIudShlKSlyZXR1cm4gbmV3IERhdGU7aWYoZSBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIG5ldyBEYXRlKGUpO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlJiYhL1okL2kudGVzdChlKSl7dmFyIHI9ZS5tYXRjaCgkKTtpZihyKXt2YXIgaT1yWzJdLTF8fDAscz0ocls3XXx8XCIwXCIpLnN1YnN0cmluZygwLDMpO3JldHVybiBuP25ldyBEYXRlKERhdGUuVVRDKHJbMV0saSxyWzNdfHwxLHJbNF18fDAscls1XXx8MCxyWzZdfHwwLHMpKTpuZXcgRGF0ZShyWzFdLGksclszXXx8MSxyWzRdfHwwLHJbNV18fDAscls2XXx8MCxzKX19cmV0dXJuIG5ldyBEYXRlKGUpfSh0KSx0aGlzLmluaXQoKX0sbS5pbml0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy4kZDt0aGlzLiR5PXQuZ2V0RnVsbFllYXIoKSx0aGlzLiRNPXQuZ2V0TW9udGgoKSx0aGlzLiREPXQuZ2V0RGF0ZSgpLHRoaXMuJFc9dC5nZXREYXkoKSx0aGlzLiRIPXQuZ2V0SG91cnMoKSx0aGlzLiRtPXQuZ2V0TWludXRlcygpLHRoaXMuJHM9dC5nZXRTZWNvbmRzKCksdGhpcy4kbXM9dC5nZXRNaWxsaXNlY29uZHMoKX0sbS4kdXRpbHM9ZnVuY3Rpb24oKXtyZXR1cm4gYn0sbS5pc1ZhbGlkPWZ1bmN0aW9uKCl7cmV0dXJuISh0aGlzLiRkLnRvU3RyaW5nKCk9PT1sKX0sbS5pc1NhbWU9ZnVuY3Rpb24odCxlKXt2YXIgbj1PKHQpO3JldHVybiB0aGlzLnN0YXJ0T2YoZSk8PW4mJm48PXRoaXMuZW5kT2YoZSl9LG0uaXNBZnRlcj1mdW5jdGlvbih0LGUpe3JldHVybiBPKHQpPHRoaXMuc3RhcnRPZihlKX0sbS5pc0JlZm9yZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmVuZE9mKGUpPE8odCl9LG0uJGc9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBiLnUodCk/dGhpc1tlXTp0aGlzLnNldChuLHQpfSxtLnVuaXg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5mbG9vcih0aGlzLnZhbHVlT2YoKS8xZTMpfSxtLnZhbHVlT2Y9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kZC5nZXRUaW1lKCl9LG0uc3RhcnRPZj1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMscj0hIWIudShlKXx8ZSxmPWIucCh0KSxsPWZ1bmN0aW9uKHQsZSl7dmFyIGk9Yi53KG4uJHU/RGF0ZS5VVEMobi4keSxlLHQpOm5ldyBEYXRlKG4uJHksZSx0KSxuKTtyZXR1cm4gcj9pOmkuZW5kT2YoYSl9LCQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gYi53KG4udG9EYXRlKClbdF0uYXBwbHkobi50b0RhdGUoXCJzXCIpLChyP1swLDAsMCwwXTpbMjMsNTksNTksOTk5XSkuc2xpY2UoZSkpLG4pfSx5PXRoaXMuJFcsTT10aGlzLiRNLG09dGhpcy4kRCx2PVwic2V0XCIrKHRoaXMuJHU/XCJVVENcIjpcIlwiKTtzd2l0Y2goZil7Y2FzZSBoOnJldHVybiByP2woMSwwKTpsKDMxLDExKTtjYXNlIGM6cmV0dXJuIHI/bCgxLE0pOmwoMCxNKzEpO2Nhc2Ugbzp2YXIgZz10aGlzLiRsb2NhbGUoKS53ZWVrU3RhcnR8fDAsRD0oeTxnP3krNzp5KS1nO3JldHVybiBsKHI/bS1EOm0rKDYtRCksTSk7Y2FzZSBhOmNhc2UgZDpyZXR1cm4gJCh2K1wiSG91cnNcIiwwKTtjYXNlIHU6cmV0dXJuICQoditcIk1pbnV0ZXNcIiwxKTtjYXNlIHM6cmV0dXJuICQoditcIlNlY29uZHNcIiwyKTtjYXNlIGk6cmV0dXJuICQoditcIk1pbGxpc2Vjb25kc1wiLDMpO2RlZmF1bHQ6cmV0dXJuIHRoaXMuY2xvbmUoKX19LG0uZW5kT2Y9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc3RhcnRPZih0LCExKX0sbS4kc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIG4sbz1iLnAodCksZj1cInNldFwiKyh0aGlzLiR1P1wiVVRDXCI6XCJcIiksbD0obj17fSxuW2FdPWYrXCJEYXRlXCIsbltkXT1mK1wiRGF0ZVwiLG5bY109ZitcIk1vbnRoXCIsbltoXT1mK1wiRnVsbFllYXJcIixuW3VdPWYrXCJIb3Vyc1wiLG5bc109ZitcIk1pbnV0ZXNcIixuW2ldPWYrXCJTZWNvbmRzXCIsbltyXT1mK1wiTWlsbGlzZWNvbmRzXCIsbilbb10sJD1vPT09YT90aGlzLiREKyhlLXRoaXMuJFcpOmU7aWYobz09PWN8fG89PT1oKXt2YXIgeT10aGlzLmNsb25lKCkuc2V0KGQsMSk7eS4kZFtsXSgkKSx5LmluaXQoKSx0aGlzLiRkPXkuc2V0KGQsTWF0aC5taW4odGhpcy4kRCx5LmRheXNJbk1vbnRoKCkpKS4kZH1lbHNlIGwmJnRoaXMuJGRbbF0oJCk7cmV0dXJuIHRoaXMuaW5pdCgpLHRoaXN9LG0uc2V0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS4kc2V0KHQsZSl9LG0uZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzW2IucCh0KV0oKX0sbS5hZGQ9ZnVuY3Rpb24ocixmKXt2YXIgZCxsPXRoaXM7cj1OdW1iZXIocik7dmFyICQ9Yi5wKGYpLHk9ZnVuY3Rpb24odCl7dmFyIGU9TyhsKTtyZXR1cm4gYi53KGUuZGF0ZShlLmRhdGUoKStNYXRoLnJvdW5kKHQqcikpLGwpfTtpZigkPT09YylyZXR1cm4gdGhpcy5zZXQoYyx0aGlzLiRNK3IpO2lmKCQ9PT1oKXJldHVybiB0aGlzLnNldChoLHRoaXMuJHkrcik7aWYoJD09PWEpcmV0dXJuIHkoMSk7aWYoJD09PW8pcmV0dXJuIHkoNyk7dmFyIE09KGQ9e30sZFtzXT1lLGRbdV09bixkW2ldPXQsZClbJF18fDEsbT10aGlzLiRkLmdldFRpbWUoKStyKk07cmV0dXJuIGIudyhtLHRoaXMpfSxtLnN1YnRyYWN0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYWRkKC0xKnQsZSl9LG0uZm9ybWF0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10aGlzLiRsb2NhbGUoKTtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIG4uaW52YWxpZERhdGV8fGw7dmFyIHI9dHx8XCJZWVlZLU1NLUREVEhIOm1tOnNzWlwiLGk9Yi56KHRoaXMpLHM9dGhpcy4kSCx1PXRoaXMuJG0sYT10aGlzLiRNLG89bi53ZWVrZGF5cyxjPW4ubW9udGhzLGY9bi5tZXJpZGllbSxoPWZ1bmN0aW9uKHQsbixpLHMpe3JldHVybiB0JiYodFtuXXx8dChlLHIpKXx8aVtuXS5zbGljZSgwLHMpfSxkPWZ1bmN0aW9uKHQpe3JldHVybiBiLnMocyUxMnx8MTIsdCxcIjBcIil9LCQ9Znx8ZnVuY3Rpb24odCxlLG4pe3ZhciByPXQ8MTI/XCJBTVwiOlwiUE1cIjtyZXR1cm4gbj9yLnRvTG93ZXJDYXNlKCk6cn07cmV0dXJuIHIucmVwbGFjZSh5LChmdW5jdGlvbih0LHIpe3JldHVybiByfHxmdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZVwiWVlcIjpyZXR1cm4gU3RyaW5nKGUuJHkpLnNsaWNlKC0yKTtjYXNlXCJZWVlZXCI6cmV0dXJuIGIucyhlLiR5LDQsXCIwXCIpO2Nhc2VcIk1cIjpyZXR1cm4gYSsxO2Nhc2VcIk1NXCI6cmV0dXJuIGIucyhhKzEsMixcIjBcIik7Y2FzZVwiTU1NXCI6cmV0dXJuIGgobi5tb250aHNTaG9ydCxhLGMsMyk7Y2FzZVwiTU1NTVwiOnJldHVybiBoKGMsYSk7Y2FzZVwiRFwiOnJldHVybiBlLiREO2Nhc2VcIkREXCI6cmV0dXJuIGIucyhlLiRELDIsXCIwXCIpO2Nhc2VcImRcIjpyZXR1cm4gU3RyaW5nKGUuJFcpO2Nhc2VcImRkXCI6cmV0dXJuIGgobi53ZWVrZGF5c01pbixlLiRXLG8sMik7Y2FzZVwiZGRkXCI6cmV0dXJuIGgobi53ZWVrZGF5c1Nob3J0LGUuJFcsbywzKTtjYXNlXCJkZGRkXCI6cmV0dXJuIG9bZS4kV107Y2FzZVwiSFwiOnJldHVybiBTdHJpbmcocyk7Y2FzZVwiSEhcIjpyZXR1cm4gYi5zKHMsMixcIjBcIik7Y2FzZVwiaFwiOnJldHVybiBkKDEpO2Nhc2VcImhoXCI6cmV0dXJuIGQoMik7Y2FzZVwiYVwiOnJldHVybiAkKHMsdSwhMCk7Y2FzZVwiQVwiOnJldHVybiAkKHMsdSwhMSk7Y2FzZVwibVwiOnJldHVybiBTdHJpbmcodSk7Y2FzZVwibW1cIjpyZXR1cm4gYi5zKHUsMixcIjBcIik7Y2FzZVwic1wiOnJldHVybiBTdHJpbmcoZS4kcyk7Y2FzZVwic3NcIjpyZXR1cm4gYi5zKGUuJHMsMixcIjBcIik7Y2FzZVwiU1NTXCI6cmV0dXJuIGIucyhlLiRtcywzLFwiMFwiKTtjYXNlXCJaXCI6cmV0dXJuIGl9cmV0dXJuIG51bGx9KHQpfHxpLnJlcGxhY2UoXCI6XCIsXCJcIil9KSl9LG0udXRjT2Zmc2V0PWZ1bmN0aW9uKCl7cmV0dXJuIDE1Ki1NYXRoLnJvdW5kKHRoaXMuJGQuZ2V0VGltZXpvbmVPZmZzZXQoKS8xNSl9LG0uZGlmZj1mdW5jdGlvbihyLGQsbCl7dmFyICQseT10aGlzLE09Yi5wKGQpLG09TyhyKSx2PShtLnV0Y09mZnNldCgpLXRoaXMudXRjT2Zmc2V0KCkpKmUsZz10aGlzLW0sRD1mdW5jdGlvbigpe3JldHVybiBiLm0oeSxtKX07c3dpdGNoKE0pe2Nhc2UgaDokPUQoKS8xMjticmVhaztjYXNlIGM6JD1EKCk7YnJlYWs7Y2FzZSBmOiQ9RCgpLzM7YnJlYWs7Y2FzZSBvOiQ9KGctdikvNjA0OGU1O2JyZWFrO2Nhc2UgYTokPShnLXYpLzg2NGU1O2JyZWFrO2Nhc2UgdTokPWcvbjticmVhaztjYXNlIHM6JD1nL2U7YnJlYWs7Y2FzZSBpOiQ9Zy90O2JyZWFrO2RlZmF1bHQ6JD1nfXJldHVybiBsPyQ6Yi5hKCQpfSxtLmRheXNJbk1vbnRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW5kT2YoYykuJER9LG0uJGxvY2FsZT1mdW5jdGlvbigpe3JldHVybiBEW3RoaXMuJExdfSxtLmxvY2FsZT1mdW5jdGlvbih0LGUpe2lmKCF0KXJldHVybiB0aGlzLiRMO3ZhciBuPXRoaXMuY2xvbmUoKSxyPXcodCxlLCEwKTtyZXR1cm4gciYmKG4uJEw9ciksbn0sbS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBiLncodGhpcy4kZCx0aGlzKX0sbS50b0RhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IERhdGUodGhpcy52YWx1ZU9mKCkpfSxtLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzVmFsaWQoKT90aGlzLnRvSVNPU3RyaW5nKCk6bnVsbH0sbS50b0lTT1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRkLnRvSVNPU3RyaW5nKCl9LG0udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kZC50b1VUQ1N0cmluZygpfSxNfSgpLGs9Xy5wcm90b3R5cGU7cmV0dXJuIE8ucHJvdG90eXBlPWssW1tcIiRtc1wiLHJdLFtcIiRzXCIsaV0sW1wiJG1cIixzXSxbXCIkSFwiLHVdLFtcIiRXXCIsYV0sW1wiJE1cIixjXSxbXCIkeVwiLGhdLFtcIiREXCIsZF1dLmZvckVhY2goKGZ1bmN0aW9uKHQpe2tbdFsxXV09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuJGcoZSx0WzBdLHRbMV0pfX0pKSxPLmV4dGVuZD1mdW5jdGlvbih0LGUpe3JldHVybiB0LiRpfHwodChlLF8sTyksdC4kaT0hMCksT30sTy5sb2NhbGU9dyxPLmlzRGF5anM9UyxPLnVuaXg9ZnVuY3Rpb24odCl7cmV0dXJuIE8oMWUzKnQpfSxPLmVuPURbZ10sTy5Mcz1ELE8ucD17fSxPfSkpOyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgc3R5bGVzSW5ET00gPSBbXTtcbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRE9NLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRE9NW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXhCeUlkZW50aWZpZXIgPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM10sXG4gICAgICBzdXBwb3J0czogaXRlbVs0XSxcbiAgICAgIGxheWVyOiBpdGVtWzVdXG4gICAgfTtcbiAgICBpZiAoaW5kZXhCeUlkZW50aWZpZXIgIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHVwZGF0ZXIgPSBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKTtcbiAgICAgIG9wdGlvbnMuYnlJbmRleCA9IGk7XG4gICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoaSwgMCwge1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiB1cGRhdGVyLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5mdW5jdGlvbiBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBhcGkgPSBvcHRpb25zLmRvbUFQSShvcHRpb25zKTtcbiAgYXBpLnVwZGF0ZShvYmopO1xuICB2YXIgdXBkYXRlciA9IGZ1bmN0aW9uIHVwZGF0ZXIobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCAmJiBuZXdPYmouc3VwcG9ydHMgPT09IG9iai5zdXBwb3J0cyAmJiBuZXdPYmoubGF5ZXIgPT09IG9iai5sYXllcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBhcGkudXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiB1cGRhdGVyO1xufVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG4gICAgICBpZiAoc3R5bGVzSW5ET01bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRE9NW19pbmRleF0udXBkYXRlcigpO1xuICAgICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIG1lbW8gPSB7fTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBnZXRUYXJnZXQodGFyZ2V0KSB7XG4gIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpO1xuXG4gICAgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcbiAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICB9XG4gIHJldHVybiBtZW1vW3RhcmdldF07XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0QnlTZWxlY3RvcihpbnNlcnQsIHN0eWxlKSB7XG4gIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQoaW5zZXJ0KTtcbiAgaWYgKCF0YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICB9XG4gIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydEJ5U2VsZWN0b3I7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIG9wdGlvbnMuc2V0QXR0cmlidXRlcyhlbGVtZW50LCBvcHRpb25zLmF0dHJpYnV0ZXMpO1xuICBvcHRpb25zLmluc2VydChlbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xuICByZXR1cm4gZWxlbWVudDtcbn1cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0U3R5bGVFbGVtZW50OyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcyhzdHlsZUVsZW1lbnQpIHtcbiAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSBcInVuZGVmaW5lZFwiID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuICBpZiAobm9uY2UpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgbm9uY2UpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlczsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gXCJcIjtcbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KG9iai5zdXBwb3J0cywgXCIpIHtcIik7XG4gIH1cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpO1xuICB9XG4gIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2Ygb2JqLmxheWVyICE9PSBcInVuZGVmaW5lZFwiO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwiQGxheWVyXCIuY29uY2F0KG9iai5sYXllci5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KG9iai5sYXllcikgOiBcIlwiLCBcIiB7XCIpO1xuICB9XG4gIGNzcyArPSBvYmouY3NzO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9XG5cbiAgLy8gRm9yIG9sZCBJRVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG4gIG9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG59XG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGVFbGVtZW50LnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KTtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBkb21BUEkob3B0aW9ucykge1xuICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKCkge30sXG4gICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHt9XG4gICAgfTtcbiAgfVxuICB2YXIgc3R5bGVFbGVtZW50ID0gb3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gIHJldHVybiB7XG4gICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUob2JqKSB7XG4gICAgICBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaik7XG4gICAgfSxcbiAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpO1xuICAgIH1cbiAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZG9tQVBJOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50KSB7XG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpO1xuICAgIH1cbiAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gc3R5bGVUYWdUcmFuc2Zvcm07IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHRpZDogbW9kdWxlSWQsXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIl9fd2VicGFja19yZXF1aXJlX18ubmMgPSB1bmRlZmluZWQ7IiwiZXhwb3J0IGNvbnN0IFRSSVBGVVNJT05fQkFTRV9VUkwgPVxuICAgIHByb2Nlc3MuZW52LlRSSVBGVVNJT05fQVBQX0VOVklST05NRU5UID09PSBcImRlbW9cIlxuICAgICAgICA/IFwiaHR0cHM6Ly9kZXZlbG9wLmJvb2tpbmdzLnZhY2F5b3UuY29tL1wiXG4gICAgICAgIDogXCJodHRwczovL2Jvb2tpbmdzLnZhY2F5b3UuY29tL1wiO1xuZXhwb3J0IGNvbnN0IFNES19TQ1JJUFRfSUQgPSBcInRyaXBmdXNpb24tc2RrXCI7XG5leHBvcnQgY29uc3QgV0lER0VUX0lEID0gXCJ0cmlwZnVzaW9uLXdpZGdldFwiO1xuZXhwb3J0IGNvbnN0IFdJREdFVF9JTk5FUl9XUkFQUEVSX0lEID0gXCJ0cmlwZnVzaW9uLXdpZGdldC1pbm5lci13cmFwcGVyXCI7XG5leHBvcnQgY29uc3QgV0lER0VUX0hFQURFUl9JRCA9IFwidHJpcGZ1c2lvbi13aWRnZXQtaGVhZGVyXCI7XG5leHBvcnQgY29uc3QgV0lER0VUX0NMT1NFX0JVVFRPTl9JRCA9IFwidHJpcGZ1c2lvbi13aWRnZXQtY2xvc2UtYnV0dG9uXCI7XG5leHBvcnQgY29uc3QgV0lER0VUX0hFQURFUl9USVRMRV9JRCA9IFwidHJpcGZ1c2lvbi13aWRnZXQtaGVhZGVyLXRpdGxlXCI7XG5leHBvcnQgY29uc3QgV0lER0VUX1dSQVBQRVJfSUQgPSBcInRyaXBmdXNpb24td2lkZ2V0LXdyYXBwZXJcIjtcbmV4cG9ydCBjb25zdCBXSURHRVRfSUZSQU1FX0lEID0gXCJ0cmlwZnVzaW9uLXdpZGdldC1pZnJhbWVcIjtcbmV4cG9ydCBjb25zdCBSRVNVTUVfUEFORUxfSUQgPSBcInRyaXBmdXNpb24tcmVzdW1lLXBhbmVsXCI7XG5leHBvcnQgY29uc3QgTE9BREVSX0lEID0gXCJ0cmlwZnVzaW9uLWxvYWRlclwiO1xuZXhwb3J0IGNvbnN0IEJPT0tJTkdfTU9ERSA9IHtcbiAgICBub3JtYWw6IFwibm9ybWFsXCIsXG4gICAgYXBwZW5kOiBcImFwcGVuZFwiLFxufSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBBUFBfTUVTU0FHRV9UWVBFID0ge1xuICAgIFdJREdFVF9SRUFEWTogXCJ0cmlwZnVzaW9uLXdpZGdldC1yZWFkeVwiLFxuICAgIEJPT0tJTkdfQ09NUExFVEVEOiBcInRyaXBmdXNpb24tYm9va2luZy1jb21wbGV0ZWRcIixcbiAgICBTRVRfQ0xJRU5UX1RIRU1FOiBcInRyaXBmdXNpb24tc2V0LWNsaWVudC10aGVtZVwiLFxuICAgIFNFVF9QUklNQVJZX0dVRVNUX05BTUU6IFwidHJpcGZ1c2lvbi1zZXQtZ3Vlc3QtbmFtZVwiLFxuICAgIFNFVF9EQVRFUzogXCJ0cmlwZnVzaW9uLXNldC1kYXRlc1wiLFxuICAgIFNFVF9DQVJUOiBcInRyaXBmdXNpb24tc2V0LWNhcnRcIixcbn0gYXMgY29uc3Q7XG4iLCJjb25zdCByZWR1eEltcGwgPSAocmVkdWNlciwgaW5pdGlhbCkgPT4gKHNldCwgX2dldCwgYXBpKSA9PiB7XG4gIGFwaS5kaXNwYXRjaCA9IChhY3Rpb24pID0+IHtcbiAgICBzZXQoKHN0YXRlKSA9PiByZWR1Y2VyKHN0YXRlLCBhY3Rpb24pLCBmYWxzZSwgYWN0aW9uKTtcbiAgICByZXR1cm4gYWN0aW9uO1xuICB9O1xuICBhcGkuZGlzcGF0Y2hGcm9tRGV2dG9vbHMgPSB0cnVlO1xuICByZXR1cm4geyBkaXNwYXRjaDogKC4uLmEpID0+IGFwaS5kaXNwYXRjaCguLi5hKSwgLi4uaW5pdGlhbCB9O1xufTtcbmNvbnN0IHJlZHV4ID0gcmVkdXhJbXBsO1xuXG5jb25zdCB0cmFja2VkQ29ubmVjdGlvbnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuY29uc3QgZ2V0VHJhY2tlZENvbm5lY3Rpb25TdGF0ZSA9IChuYW1lKSA9PiB7XG4gIGNvbnN0IGFwaSA9IHRyYWNrZWRDb25uZWN0aW9ucy5nZXQobmFtZSk7XG4gIGlmICghYXBpKSByZXR1cm4ge307XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgT2JqZWN0LmVudHJpZXMoYXBpLnN0b3JlcykubWFwKChba2V5LCBhcGkyXSkgPT4gW2tleSwgYXBpMi5nZXRTdGF0ZSgpXSlcbiAgKTtcbn07XG5jb25zdCBleHRyYWN0Q29ubmVjdGlvbkluZm9ybWF0aW9uID0gKHN0b3JlLCBleHRlbnNpb25Db25uZWN0b3IsIG9wdGlvbnMpID0+IHtcbiAgaWYgKHN0b3JlID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJ1bnRyYWNrZWRcIixcbiAgICAgIGNvbm5lY3Rpb246IGV4dGVuc2lvbkNvbm5lY3Rvci5jb25uZWN0KG9wdGlvbnMpXG4gICAgfTtcbiAgfVxuICBjb25zdCBleGlzdGluZ0Nvbm5lY3Rpb24gPSB0cmFja2VkQ29ubmVjdGlvbnMuZ2V0KG9wdGlvbnMubmFtZSk7XG4gIGlmIChleGlzdGluZ0Nvbm5lY3Rpb24pIHtcbiAgICByZXR1cm4geyB0eXBlOiBcInRyYWNrZWRcIiwgc3RvcmUsIC4uLmV4aXN0aW5nQ29ubmVjdGlvbiB9O1xuICB9XG4gIGNvbnN0IG5ld0Nvbm5lY3Rpb24gPSB7XG4gICAgY29ubmVjdGlvbjogZXh0ZW5zaW9uQ29ubmVjdG9yLmNvbm5lY3Qob3B0aW9ucyksXG4gICAgc3RvcmVzOiB7fVxuICB9O1xuICB0cmFja2VkQ29ubmVjdGlvbnMuc2V0KG9wdGlvbnMubmFtZSwgbmV3Q29ubmVjdGlvbik7XG4gIHJldHVybiB7IHR5cGU6IFwidHJhY2tlZFwiLCBzdG9yZSwgLi4ubmV3Q29ubmVjdGlvbiB9O1xufTtcbmNvbnN0IGRldnRvb2xzSW1wbCA9IChmbiwgZGV2dG9vbHNPcHRpb25zID0ge30pID0+IChzZXQsIGdldCwgYXBpKSA9PiB7XG4gIGNvbnN0IHsgZW5hYmxlZCwgYW5vbnltb3VzQWN0aW9uVHlwZSwgc3RvcmUsIC4uLm9wdGlvbnMgfSA9IGRldnRvb2xzT3B0aW9ucztcbiAgbGV0IGV4dGVuc2lvbkNvbm5lY3RvcjtcbiAgdHJ5IHtcbiAgICBleHRlbnNpb25Db25uZWN0b3IgPSAoZW5hYmxlZCAhPSBudWxsID8gZW5hYmxlZCA6IChpbXBvcnQubWV0YS5lbnYgPyBpbXBvcnQubWV0YS5lbnYuTU9ERSA6IHZvaWQgMCkgIT09IFwicHJvZHVjdGlvblwiKSAmJiB3aW5kb3cuX19SRURVWF9ERVZUT09MU19FWFRFTlNJT05fXztcbiAgfSBjYXRjaCAoZSkge1xuICB9XG4gIGlmICghZXh0ZW5zaW9uQ29ubmVjdG9yKSB7XG4gICAgcmV0dXJuIGZuKHNldCwgZ2V0LCBhcGkpO1xuICB9XG4gIGNvbnN0IHsgY29ubmVjdGlvbiwgLi4uY29ubmVjdGlvbkluZm9ybWF0aW9uIH0gPSBleHRyYWN0Q29ubmVjdGlvbkluZm9ybWF0aW9uKHN0b3JlLCBleHRlbnNpb25Db25uZWN0b3IsIG9wdGlvbnMpO1xuICBsZXQgaXNSZWNvcmRpbmcgPSB0cnVlO1xuICBhcGkuc2V0U3RhdGUgPSAoc3RhdGUsIHJlcGxhY2UsIG5hbWVPckFjdGlvbikgPT4ge1xuICAgIGNvbnN0IHIgPSBzZXQoc3RhdGUsIHJlcGxhY2UpO1xuICAgIGlmICghaXNSZWNvcmRpbmcpIHJldHVybiByO1xuICAgIGNvbnN0IGFjdGlvbiA9IG5hbWVPckFjdGlvbiA9PT0gdm9pZCAwID8geyB0eXBlOiBhbm9ueW1vdXNBY3Rpb25UeXBlIHx8IFwiYW5vbnltb3VzXCIgfSA6IHR5cGVvZiBuYW1lT3JBY3Rpb24gPT09IFwic3RyaW5nXCIgPyB7IHR5cGU6IG5hbWVPckFjdGlvbiB9IDogbmFtZU9yQWN0aW9uO1xuICAgIGlmIChzdG9yZSA9PT0gdm9pZCAwKSB7XG4gICAgICBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLnNlbmQoYWN0aW9uLCBnZXQoKSk7XG4gICAgICByZXR1cm4gcjtcbiAgICB9XG4gICAgY29ubmVjdGlvbiA9PSBudWxsID8gdm9pZCAwIDogY29ubmVjdGlvbi5zZW5kKFxuICAgICAge1xuICAgICAgICAuLi5hY3Rpb24sXG4gICAgICAgIHR5cGU6IGAke3N0b3JlfS8ke2FjdGlvbi50eXBlfWBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC4uLmdldFRyYWNrZWRDb25uZWN0aW9uU3RhdGUob3B0aW9ucy5uYW1lKSxcbiAgICAgICAgW3N0b3JlXTogYXBpLmdldFN0YXRlKClcbiAgICAgIH1cbiAgICApO1xuICAgIHJldHVybiByO1xuICB9O1xuICBjb25zdCBzZXRTdGF0ZUZyb21EZXZ0b29scyA9ICguLi5hKSA9PiB7XG4gICAgY29uc3Qgb3JpZ2luYWxJc1JlY29yZGluZyA9IGlzUmVjb3JkaW5nO1xuICAgIGlzUmVjb3JkaW5nID0gZmFsc2U7XG4gICAgc2V0KC4uLmEpO1xuICAgIGlzUmVjb3JkaW5nID0gb3JpZ2luYWxJc1JlY29yZGluZztcbiAgfTtcbiAgY29uc3QgaW5pdGlhbFN0YXRlID0gZm4oYXBpLnNldFN0YXRlLCBnZXQsIGFwaSk7XG4gIGlmIChjb25uZWN0aW9uSW5mb3JtYXRpb24udHlwZSA9PT0gXCJ1bnRyYWNrZWRcIikge1xuICAgIGNvbm5lY3Rpb24gPT0gbnVsbCA/IHZvaWQgMCA6IGNvbm5lY3Rpb24uaW5pdChpbml0aWFsU3RhdGUpO1xuICB9IGVsc2Uge1xuICAgIGNvbm5lY3Rpb25JbmZvcm1hdGlvbi5zdG9yZXNbY29ubmVjdGlvbkluZm9ybWF0aW9uLnN0b3JlXSA9IGFwaTtcbiAgICBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLmluaXQoXG4gICAgICBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGNvbm5lY3Rpb25JbmZvcm1hdGlvbi5zdG9yZXMpLm1hcCgoW2tleSwgc3RvcmUyXSkgPT4gW1xuICAgICAgICAgIGtleSxcbiAgICAgICAgICBrZXkgPT09IGNvbm5lY3Rpb25JbmZvcm1hdGlvbi5zdG9yZSA/IGluaXRpYWxTdGF0ZSA6IHN0b3JlMi5nZXRTdGF0ZSgpXG4gICAgICAgIF0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuICBpZiAoYXBpLmRpc3BhdGNoRnJvbURldnRvb2xzICYmIHR5cGVvZiBhcGkuZGlzcGF0Y2ggPT09IFwiZnVuY3Rpb25cIikge1xuICAgIGxldCBkaWRXYXJuQWJvdXRSZXNlcnZlZEFjdGlvblR5cGUgPSBmYWxzZTtcbiAgICBjb25zdCBvcmlnaW5hbERpc3BhdGNoID0gYXBpLmRpc3BhdGNoO1xuICAgIGFwaS5kaXNwYXRjaCA9ICguLi5hKSA9PiB7XG4gICAgICBpZiAoKGltcG9ydC5tZXRhLmVudiA/IGltcG9ydC5tZXRhLmVudi5NT0RFIDogdm9pZCAwKSAhPT0gXCJwcm9kdWN0aW9uXCIgJiYgYVswXS50eXBlID09PSBcIl9fc2V0U3RhdGVcIiAmJiAhZGlkV2FybkFib3V0UmVzZXJ2ZWRBY3Rpb25UeXBlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnW3p1c3RhbmQgZGV2dG9vbHMgbWlkZGxld2FyZV0gXCJfX3NldFN0YXRlXCIgYWN0aW9uIHR5cGUgaXMgcmVzZXJ2ZWQgdG8gc2V0IHN0YXRlIGZyb20gdGhlIGRldnRvb2xzLiBBdm9pZCB1c2luZyBpdC4nXG4gICAgICAgICk7XG4gICAgICAgIGRpZFdhcm5BYm91dFJlc2VydmVkQWN0aW9uVHlwZSA9IHRydWU7XG4gICAgICB9XG4gICAgICBvcmlnaW5hbERpc3BhdGNoKC4uLmEpO1xuICAgIH07XG4gIH1cbiAgY29ubmVjdGlvbi5zdWJzY3JpYmUoKG1lc3NhZ2UpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgc3dpdGNoIChtZXNzYWdlLnR5cGUpIHtcbiAgICAgIGNhc2UgXCJBQ1RJT05cIjpcbiAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlLnBheWxvYWQgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgXCJbenVzdGFuZCBkZXZ0b29scyBtaWRkbGV3YXJlXSBVbnN1cHBvcnRlZCBhY3Rpb24gZm9ybWF0XCJcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyc2VKc29uVGhlbihcbiAgICAgICAgICBtZXNzYWdlLnBheWxvYWQsXG4gICAgICAgICAgKGFjdGlvbikgPT4ge1xuICAgICAgICAgICAgaWYgKGFjdGlvbi50eXBlID09PSBcIl9fc2V0U3RhdGVcIikge1xuICAgICAgICAgICAgICBpZiAoc3RvcmUgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICAgIHNldFN0YXRlRnJvbURldnRvb2xzKGFjdGlvbi5zdGF0ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhhY3Rpb24uc3RhdGUpLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICBgXG4gICAgICAgICAgICAgICAgICAgIFt6dXN0YW5kIGRldnRvb2xzIG1pZGRsZXdhcmVdIFVuc3VwcG9ydGVkIF9fc2V0U3RhdGUgYWN0aW9uIGZvcm1hdC5cbiAgICAgICAgICAgICAgICAgICAgV2hlbiB1c2luZyAnc3RvcmUnIG9wdGlvbiBpbiBkZXZ0b29scygpLCB0aGUgJ3N0YXRlJyBzaG91bGQgaGF2ZSBvbmx5IG9uZSBrZXksIHdoaWNoIGlzIGEgdmFsdWUgb2YgJ3N0b3JlJyB0aGF0IHdhcyBwYXNzZWQgaW4gZGV2dG9vbHMoKSxcbiAgICAgICAgICAgICAgICAgICAgYW5kIHZhbHVlIG9mIHRoaXMgb25seSBrZXkgc2hvdWxkIGJlIGEgc3RhdGUgb2JqZWN0LiBFeGFtcGxlOiB7IFwidHlwZVwiOiBcIl9fc2V0U3RhdGVcIiwgXCJzdGF0ZVwiOiB7IFwiYWJjMTIzU3RvcmVcIjogeyBcImZvb1wiOiBcImJhclwiIH0gfSB9XG4gICAgICAgICAgICAgICAgICAgIGBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHN0YXRlRnJvbURldnRvb2xzID0gYWN0aW9uLnN0YXRlW3N0b3JlXTtcbiAgICAgICAgICAgICAgaWYgKHN0YXRlRnJvbURldnRvb2xzID09PSB2b2lkIDAgfHwgc3RhdGVGcm9tRGV2dG9vbHMgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGFwaS5nZXRTdGF0ZSgpKSAhPT0gSlNPTi5zdHJpbmdpZnkoc3RhdGVGcm9tRGV2dG9vbHMpKSB7XG4gICAgICAgICAgICAgICAgc2V0U3RhdGVGcm9tRGV2dG9vbHMoc3RhdGVGcm9tRGV2dG9vbHMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghYXBpLmRpc3BhdGNoRnJvbURldnRvb2xzKSByZXR1cm47XG4gICAgICAgICAgICBpZiAodHlwZW9mIGFwaS5kaXNwYXRjaCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm47XG4gICAgICAgICAgICBhcGkuZGlzcGF0Y2goYWN0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICBjYXNlIFwiRElTUEFUQ0hcIjpcbiAgICAgICAgc3dpdGNoIChtZXNzYWdlLnBheWxvYWQudHlwZSkge1xuICAgICAgICAgIGNhc2UgXCJSRVNFVFwiOlxuICAgICAgICAgICAgc2V0U3RhdGVGcm9tRGV2dG9vbHMoaW5pdGlhbFN0YXRlKTtcbiAgICAgICAgICAgIGlmIChzdG9yZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICAgIHJldHVybiBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLmluaXQoYXBpLmdldFN0YXRlKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb24gPT0gbnVsbCA/IHZvaWQgMCA6IGNvbm5lY3Rpb24uaW5pdChnZXRUcmFja2VkQ29ubmVjdGlvblN0YXRlKG9wdGlvbnMubmFtZSkpO1xuICAgICAgICAgIGNhc2UgXCJDT01NSVRcIjpcbiAgICAgICAgICAgIGlmIChzdG9yZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICAgIGNvbm5lY3Rpb24gPT0gbnVsbCA/IHZvaWQgMCA6IGNvbm5lY3Rpb24uaW5pdChhcGkuZ2V0U3RhdGUoKSk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLmluaXQoZ2V0VHJhY2tlZENvbm5lY3Rpb25TdGF0ZShvcHRpb25zLm5hbWUpKTtcbiAgICAgICAgICBjYXNlIFwiUk9MTEJBQ0tcIjpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUpzb25UaGVuKG1lc3NhZ2Uuc3RhdGUsIChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoc3RvcmUgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICAgIHNldFN0YXRlRnJvbURldnRvb2xzKHN0YXRlKTtcbiAgICAgICAgICAgICAgICBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLmluaXQoYXBpLmdldFN0YXRlKCkpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzZXRTdGF0ZUZyb21EZXZ0b29scyhzdGF0ZVtzdG9yZV0pO1xuICAgICAgICAgICAgICBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLmluaXQoZ2V0VHJhY2tlZENvbm5lY3Rpb25TdGF0ZShvcHRpb25zLm5hbWUpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIGNhc2UgXCJKVU1QX1RPX1NUQVRFXCI6XG4gICAgICAgICAgY2FzZSBcIkpVTVBfVE9fQUNUSU9OXCI6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VKc29uVGhlbihtZXNzYWdlLnN0YXRlLCAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHN0b3JlID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgICAgICBzZXRTdGF0ZUZyb21EZXZ0b29scyhzdGF0ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShhcGkuZ2V0U3RhdGUoKSkgIT09IEpTT04uc3RyaW5naWZ5KHN0YXRlW3N0b3JlXSkpIHtcbiAgICAgICAgICAgICAgICBzZXRTdGF0ZUZyb21EZXZ0b29scyhzdGF0ZVtzdG9yZV0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICBjYXNlIFwiSU1QT1JUX1NUQVRFXCI6IHtcbiAgICAgICAgICAgIGNvbnN0IHsgbmV4dExpZnRlZFN0YXRlIH0gPSBtZXNzYWdlLnBheWxvYWQ7XG4gICAgICAgICAgICBjb25zdCBsYXN0Q29tcHV0ZWRTdGF0ZSA9IChfYSA9IG5leHRMaWZ0ZWRTdGF0ZS5jb21wdXRlZFN0YXRlcy5zbGljZSgtMSlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfYS5zdGF0ZTtcbiAgICAgICAgICAgIGlmICghbGFzdENvbXB1dGVkU3RhdGUpIHJldHVybjtcbiAgICAgICAgICAgIGlmIChzdG9yZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICAgIHNldFN0YXRlRnJvbURldnRvb2xzKGxhc3RDb21wdXRlZFN0YXRlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldFN0YXRlRnJvbURldnRvb2xzKGxhc3RDb21wdXRlZFN0YXRlW3N0b3JlXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLnNlbmQoXG4gICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgIC8vIEZJWE1FIG5vLWFueVxuICAgICAgICAgICAgICBuZXh0TGlmdGVkU3RhdGVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgXCJQQVVTRV9SRUNPUkRJTkdcIjpcbiAgICAgICAgICAgIHJldHVybiBpc1JlY29yZGluZyA9ICFpc1JlY29yZGluZztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGluaXRpYWxTdGF0ZTtcbn07XG5jb25zdCBkZXZ0b29scyA9IGRldnRvb2xzSW1wbDtcbmNvbnN0IHBhcnNlSnNvblRoZW4gPSAoc3RyaW5naWZpZWQsIGYpID0+IHtcbiAgbGV0IHBhcnNlZDtcbiAgdHJ5IHtcbiAgICBwYXJzZWQgPSBKU09OLnBhcnNlKHN0cmluZ2lmaWVkKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBcIlt6dXN0YW5kIGRldnRvb2xzIG1pZGRsZXdhcmVdIENvdWxkIG5vdCBwYXJzZSB0aGUgcmVjZWl2ZWQganNvblwiLFxuICAgICAgZVxuICAgICk7XG4gIH1cbiAgaWYgKHBhcnNlZCAhPT0gdm9pZCAwKSBmKHBhcnNlZCk7XG59O1xuXG5jb25zdCBzdWJzY3JpYmVXaXRoU2VsZWN0b3JJbXBsID0gKGZuKSA9PiAoc2V0LCBnZXQsIGFwaSkgPT4ge1xuICBjb25zdCBvcmlnU3Vic2NyaWJlID0gYXBpLnN1YnNjcmliZTtcbiAgYXBpLnN1YnNjcmliZSA9IChzZWxlY3Rvciwgb3B0TGlzdGVuZXIsIG9wdGlvbnMpID0+IHtcbiAgICBsZXQgbGlzdGVuZXIgPSBzZWxlY3RvcjtcbiAgICBpZiAob3B0TGlzdGVuZXIpIHtcbiAgICAgIGNvbnN0IGVxdWFsaXR5Rm4gPSAob3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5lcXVhbGl0eUZuKSB8fCBPYmplY3QuaXM7XG4gICAgICBsZXQgY3VycmVudFNsaWNlID0gc2VsZWN0b3IoYXBpLmdldFN0YXRlKCkpO1xuICAgICAgbGlzdGVuZXIgPSAoc3RhdGUpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dFNsaWNlID0gc2VsZWN0b3Ioc3RhdGUpO1xuICAgICAgICBpZiAoIWVxdWFsaXR5Rm4oY3VycmVudFNsaWNlLCBuZXh0U2xpY2UpKSB7XG4gICAgICAgICAgY29uc3QgcHJldmlvdXNTbGljZSA9IGN1cnJlbnRTbGljZTtcbiAgICAgICAgICBvcHRMaXN0ZW5lcihjdXJyZW50U2xpY2UgPSBuZXh0U2xpY2UsIHByZXZpb3VzU2xpY2UpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuZmlyZUltbWVkaWF0ZWx5KSB7XG4gICAgICAgIG9wdExpc3RlbmVyKGN1cnJlbnRTbGljZSwgY3VycmVudFNsaWNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9yaWdTdWJzY3JpYmUobGlzdGVuZXIpO1xuICB9O1xuICBjb25zdCBpbml0aWFsU3RhdGUgPSBmbihzZXQsIGdldCwgYXBpKTtcbiAgcmV0dXJuIGluaXRpYWxTdGF0ZTtcbn07XG5jb25zdCBzdWJzY3JpYmVXaXRoU2VsZWN0b3IgPSBzdWJzY3JpYmVXaXRoU2VsZWN0b3JJbXBsO1xuXG5jb25zdCBjb21iaW5lID0gKGluaXRpYWxTdGF0ZSwgY3JlYXRlKSA9PiAoLi4uYSkgPT4gT2JqZWN0LmFzc2lnbih7fSwgaW5pdGlhbFN0YXRlLCBjcmVhdGUoLi4uYSkpO1xuXG5mdW5jdGlvbiBjcmVhdGVKU09OU3RvcmFnZShnZXRTdG9yYWdlLCBvcHRpb25zKSB7XG4gIGxldCBzdG9yYWdlO1xuICB0cnkge1xuICAgIHN0b3JhZ2UgPSBnZXRTdG9yYWdlKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgcGVyc2lzdFN0b3JhZ2UgPSB7XG4gICAgZ2V0SXRlbTogKG5hbWUpID0+IHtcbiAgICAgIHZhciBfYTtcbiAgICAgIGNvbnN0IHBhcnNlID0gKHN0cjIpID0+IHtcbiAgICAgICAgaWYgKHN0cjIgPT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShzdHIyLCBvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLnJldml2ZXIpO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IHN0ciA9IChfYSA9IHN0b3JhZ2UuZ2V0SXRlbShuYW1lKSkgIT0gbnVsbCA/IF9hIDogbnVsbDtcbiAgICAgIGlmIChzdHIgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgIHJldHVybiBzdHIudGhlbihwYXJzZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFyc2Uoc3RyKTtcbiAgICB9LFxuICAgIHNldEl0ZW06IChuYW1lLCBuZXdWYWx1ZSkgPT4gc3RvcmFnZS5zZXRJdGVtKFxuICAgICAgbmFtZSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KG5ld1ZhbHVlLCBvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLnJlcGxhY2VyKVxuICAgICksXG4gICAgcmVtb3ZlSXRlbTogKG5hbWUpID0+IHN0b3JhZ2UucmVtb3ZlSXRlbShuYW1lKVxuICB9O1xuICByZXR1cm4gcGVyc2lzdFN0b3JhZ2U7XG59XG5jb25zdCB0b1RoZW5hYmxlID0gKGZuKSA9PiAoaW5wdXQpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBmbihpbnB1dCk7XG4gICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB0aGVuKG9uRnVsZmlsbGVkKSB7XG4gICAgICAgIHJldHVybiB0b1RoZW5hYmxlKG9uRnVsZmlsbGVkKShyZXN1bHQpO1xuICAgICAgfSxcbiAgICAgIGNhdGNoKF9vblJlamVjdGVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGhlbihfb25GdWxmaWxsZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgY2F0Y2gob25SZWplY3RlZCkge1xuICAgICAgICByZXR1cm4gdG9UaGVuYWJsZShvblJlamVjdGVkKShlKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG59O1xuY29uc3QgcGVyc2lzdEltcGwgPSAoY29uZmlnLCBiYXNlT3B0aW9ucykgPT4gKHNldCwgZ2V0LCBhcGkpID0+IHtcbiAgbGV0IG9wdGlvbnMgPSB7XG4gICAgc3RvcmFnZTogY3JlYXRlSlNPTlN0b3JhZ2UoKCkgPT4gbG9jYWxTdG9yYWdlKSxcbiAgICBwYXJ0aWFsaXplOiAoc3RhdGUpID0+IHN0YXRlLFxuICAgIHZlcnNpb246IDAsXG4gICAgbWVyZ2U6IChwZXJzaXN0ZWRTdGF0ZSwgY3VycmVudFN0YXRlKSA9PiAoe1xuICAgICAgLi4uY3VycmVudFN0YXRlLFxuICAgICAgLi4ucGVyc2lzdGVkU3RhdGVcbiAgICB9KSxcbiAgICAuLi5iYXNlT3B0aW9uc1xuICB9O1xuICBsZXQgaGFzSHlkcmF0ZWQgPSBmYWxzZTtcbiAgY29uc3QgaHlkcmF0aW9uTGlzdGVuZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgY29uc3QgZmluaXNoSHlkcmF0aW9uTGlzdGVuZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgbGV0IHN0b3JhZ2UgPSBvcHRpb25zLnN0b3JhZ2U7XG4gIGlmICghc3RvcmFnZSkge1xuICAgIHJldHVybiBjb25maWcoXG4gICAgICAoLi4uYXJncykgPT4ge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYFt6dXN0YW5kIHBlcnNpc3QgbWlkZGxld2FyZV0gVW5hYmxlIHRvIHVwZGF0ZSBpdGVtICcke29wdGlvbnMubmFtZX0nLCB0aGUgZ2l2ZW4gc3RvcmFnZSBpcyBjdXJyZW50bHkgdW5hdmFpbGFibGUuYFxuICAgICAgICApO1xuICAgICAgICBzZXQoLi4uYXJncyk7XG4gICAgICB9LFxuICAgICAgZ2V0LFxuICAgICAgYXBpXG4gICAgKTtcbiAgfVxuICBjb25zdCBzZXRJdGVtID0gKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gb3B0aW9ucy5wYXJ0aWFsaXplKHsgLi4uZ2V0KCkgfSk7XG4gICAgcmV0dXJuIHN0b3JhZ2Uuc2V0SXRlbShvcHRpb25zLm5hbWUsIHtcbiAgICAgIHN0YXRlLFxuICAgICAgdmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uXG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IHNhdmVkU2V0U3RhdGUgPSBhcGkuc2V0U3RhdGU7XG4gIGFwaS5zZXRTdGF0ZSA9IChzdGF0ZSwgcmVwbGFjZSkgPT4ge1xuICAgIHNhdmVkU2V0U3RhdGUoc3RhdGUsIHJlcGxhY2UpO1xuICAgIHZvaWQgc2V0SXRlbSgpO1xuICB9O1xuICBjb25zdCBjb25maWdSZXN1bHQgPSBjb25maWcoXG4gICAgKC4uLmFyZ3MpID0+IHtcbiAgICAgIHNldCguLi5hcmdzKTtcbiAgICAgIHZvaWQgc2V0SXRlbSgpO1xuICAgIH0sXG4gICAgZ2V0LFxuICAgIGFwaVxuICApO1xuICBhcGkuZ2V0SW5pdGlhbFN0YXRlID0gKCkgPT4gY29uZmlnUmVzdWx0O1xuICBsZXQgc3RhdGVGcm9tU3RvcmFnZTtcbiAgY29uc3QgaHlkcmF0ZSA9ICgpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGlmICghc3RvcmFnZSkgcmV0dXJuO1xuICAgIGhhc0h5ZHJhdGVkID0gZmFsc2U7XG4gICAgaHlkcmF0aW9uTGlzdGVuZXJzLmZvckVhY2goKGNiKSA9PiB7XG4gICAgICB2YXIgX2EyO1xuICAgICAgcmV0dXJuIGNiKChfYTIgPSBnZXQoKSkgIT0gbnVsbCA/IF9hMiA6IGNvbmZpZ1Jlc3VsdCk7XG4gICAgfSk7XG4gICAgY29uc3QgcG9zdFJlaHlkcmF0aW9uQ2FsbGJhY2sgPSAoKF9iID0gb3B0aW9ucy5vblJlaHlkcmF0ZVN0b3JhZ2UpID09IG51bGwgPyB2b2lkIDAgOiBfYi5jYWxsKG9wdGlvbnMsIChfYSA9IGdldCgpKSAhPSBudWxsID8gX2EgOiBjb25maWdSZXN1bHQpKSB8fCB2b2lkIDA7XG4gICAgcmV0dXJuIHRvVGhlbmFibGUoc3RvcmFnZS5nZXRJdGVtLmJpbmQoc3RvcmFnZSkpKG9wdGlvbnMubmFtZSkudGhlbigoZGVzZXJpYWxpemVkU3RvcmFnZVZhbHVlKSA9PiB7XG4gICAgICBpZiAoZGVzZXJpYWxpemVkU3RvcmFnZVZhbHVlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZGVzZXJpYWxpemVkU3RvcmFnZVZhbHVlLnZlcnNpb24gPT09IFwibnVtYmVyXCIgJiYgZGVzZXJpYWxpemVkU3RvcmFnZVZhbHVlLnZlcnNpb24gIT09IG9wdGlvbnMudmVyc2lvbikge1xuICAgICAgICAgIGlmIChvcHRpb25zLm1pZ3JhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgIHRydWUsXG4gICAgICAgICAgICAgIG9wdGlvbnMubWlncmF0ZShcbiAgICAgICAgICAgICAgICBkZXNlcmlhbGl6ZWRTdG9yYWdlVmFsdWUuc3RhdGUsXG4gICAgICAgICAgICAgICAgZGVzZXJpYWxpemVkU3RvcmFnZVZhbHVlLnZlcnNpb25cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIGBTdGF0ZSBsb2FkZWQgZnJvbSBzdG9yYWdlIGNvdWxkbid0IGJlIG1pZ3JhdGVkIHNpbmNlIG5vIG1pZ3JhdGUgZnVuY3Rpb24gd2FzIHByb3ZpZGVkYFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFtmYWxzZSwgZGVzZXJpYWxpemVkU3RvcmFnZVZhbHVlLnN0YXRlXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIFtmYWxzZSwgdm9pZCAwXTtcbiAgICB9KS50aGVuKChtaWdyYXRpb25SZXN1bHQpID0+IHtcbiAgICAgIHZhciBfYTI7XG4gICAgICBjb25zdCBbbWlncmF0ZWQsIG1pZ3JhdGVkU3RhdGVdID0gbWlncmF0aW9uUmVzdWx0O1xuICAgICAgc3RhdGVGcm9tU3RvcmFnZSA9IG9wdGlvbnMubWVyZ2UoXG4gICAgICAgIG1pZ3JhdGVkU3RhdGUsXG4gICAgICAgIChfYTIgPSBnZXQoKSkgIT0gbnVsbCA/IF9hMiA6IGNvbmZpZ1Jlc3VsdFxuICAgICAgKTtcbiAgICAgIHNldChzdGF0ZUZyb21TdG9yYWdlLCB0cnVlKTtcbiAgICAgIGlmIChtaWdyYXRlZCkge1xuICAgICAgICByZXR1cm4gc2V0SXRlbSgpO1xuICAgICAgfVxuICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgcG9zdFJlaHlkcmF0aW9uQ2FsbGJhY2sgPT0gbnVsbCA/IHZvaWQgMCA6IHBvc3RSZWh5ZHJhdGlvbkNhbGxiYWNrKHN0YXRlRnJvbVN0b3JhZ2UsIHZvaWQgMCk7XG4gICAgICBzdGF0ZUZyb21TdG9yYWdlID0gZ2V0KCk7XG4gICAgICBoYXNIeWRyYXRlZCA9IHRydWU7XG4gICAgICBmaW5pc2hIeWRyYXRpb25MaXN0ZW5lcnMuZm9yRWFjaCgoY2IpID0+IGNiKHN0YXRlRnJvbVN0b3JhZ2UpKTtcbiAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgcG9zdFJlaHlkcmF0aW9uQ2FsbGJhY2sgPT0gbnVsbCA/IHZvaWQgMCA6IHBvc3RSZWh5ZHJhdGlvbkNhbGxiYWNrKHZvaWQgMCwgZSk7XG4gICAgfSk7XG4gIH07XG4gIGFwaS5wZXJzaXN0ID0ge1xuICAgIHNldE9wdGlvbnM6IChuZXdPcHRpb25zKSA9PiB7XG4gICAgICBvcHRpb25zID0ge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAuLi5uZXdPcHRpb25zXG4gICAgICB9O1xuICAgICAgaWYgKG5ld09wdGlvbnMuc3RvcmFnZSkge1xuICAgICAgICBzdG9yYWdlID0gbmV3T3B0aW9ucy5zdG9yYWdlO1xuICAgICAgfVxuICAgIH0sXG4gICAgY2xlYXJTdG9yYWdlOiAoKSA9PiB7XG4gICAgICBzdG9yYWdlID09IG51bGwgPyB2b2lkIDAgOiBzdG9yYWdlLnJlbW92ZUl0ZW0ob3B0aW9ucy5uYW1lKTtcbiAgICB9LFxuICAgIGdldE9wdGlvbnM6ICgpID0+IG9wdGlvbnMsXG4gICAgcmVoeWRyYXRlOiAoKSA9PiBoeWRyYXRlKCksXG4gICAgaGFzSHlkcmF0ZWQ6ICgpID0+IGhhc0h5ZHJhdGVkLFxuICAgIG9uSHlkcmF0ZTogKGNiKSA9PiB7XG4gICAgICBoeWRyYXRpb25MaXN0ZW5lcnMuYWRkKGNiKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGh5ZHJhdGlvbkxpc3RlbmVycy5kZWxldGUoY2IpO1xuICAgICAgfTtcbiAgICB9LFxuICAgIG9uRmluaXNoSHlkcmF0aW9uOiAoY2IpID0+IHtcbiAgICAgIGZpbmlzaEh5ZHJhdGlvbkxpc3RlbmVycy5hZGQoY2IpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZmluaXNoSHlkcmF0aW9uTGlzdGVuZXJzLmRlbGV0ZShjYik7XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgaWYgKCFvcHRpb25zLnNraXBIeWRyYXRpb24pIHtcbiAgICBoeWRyYXRlKCk7XG4gIH1cbiAgcmV0dXJuIHN0YXRlRnJvbVN0b3JhZ2UgfHwgY29uZmlnUmVzdWx0O1xufTtcbmNvbnN0IHBlcnNpc3QgPSBwZXJzaXN0SW1wbDtcblxuZXhwb3J0IHsgY29tYmluZSwgY3JlYXRlSlNPTlN0b3JhZ2UsIGRldnRvb2xzLCBwZXJzaXN0LCByZWR1eCwgc3Vic2NyaWJlV2l0aFNlbGVjdG9yIH07XG4iLCJjb25zdCBjcmVhdGVTdG9yZUltcGwgPSAoY3JlYXRlU3RhdGUpID0+IHtcbiAgbGV0IHN0YXRlO1xuICBjb25zdCBsaXN0ZW5lcnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICBjb25zdCBzZXRTdGF0ZSA9IChwYXJ0aWFsLCByZXBsYWNlKSA9PiB7XG4gICAgY29uc3QgbmV4dFN0YXRlID0gdHlwZW9mIHBhcnRpYWwgPT09IFwiZnVuY3Rpb25cIiA/IHBhcnRpYWwoc3RhdGUpIDogcGFydGlhbDtcbiAgICBpZiAoIU9iamVjdC5pcyhuZXh0U3RhdGUsIHN0YXRlKSkge1xuICAgICAgY29uc3QgcHJldmlvdXNTdGF0ZSA9IHN0YXRlO1xuICAgICAgc3RhdGUgPSAocmVwbGFjZSAhPSBudWxsID8gcmVwbGFjZSA6IHR5cGVvZiBuZXh0U3RhdGUgIT09IFwib2JqZWN0XCIgfHwgbmV4dFN0YXRlID09PSBudWxsKSA/IG5leHRTdGF0ZSA6IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCBuZXh0U3RhdGUpO1xuICAgICAgbGlzdGVuZXJzLmZvckVhY2goKGxpc3RlbmVyKSA9PiBsaXN0ZW5lcihzdGF0ZSwgcHJldmlvdXNTdGF0ZSkpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZ2V0U3RhdGUgPSAoKSA9PiBzdGF0ZTtcbiAgY29uc3QgZ2V0SW5pdGlhbFN0YXRlID0gKCkgPT4gaW5pdGlhbFN0YXRlO1xuICBjb25zdCBzdWJzY3JpYmUgPSAobGlzdGVuZXIpID0+IHtcbiAgICBsaXN0ZW5lcnMuYWRkKGxpc3RlbmVyKTtcbiAgICByZXR1cm4gKCkgPT4gbGlzdGVuZXJzLmRlbGV0ZShsaXN0ZW5lcik7XG4gIH07XG4gIGNvbnN0IGFwaSA9IHsgc2V0U3RhdGUsIGdldFN0YXRlLCBnZXRJbml0aWFsU3RhdGUsIHN1YnNjcmliZSB9O1xuICBjb25zdCBpbml0aWFsU3RhdGUgPSBzdGF0ZSA9IGNyZWF0ZVN0YXRlKHNldFN0YXRlLCBnZXRTdGF0ZSwgYXBpKTtcbiAgcmV0dXJuIGFwaTtcbn07XG5jb25zdCBjcmVhdGVTdG9yZSA9IChjcmVhdGVTdGF0ZSkgPT4gY3JlYXRlU3RhdGUgPyBjcmVhdGVTdG9yZUltcGwoY3JlYXRlU3RhdGUpIDogY3JlYXRlU3RvcmVJbXBsO1xuXG5leHBvcnQgeyBjcmVhdGVTdG9yZSB9O1xuIiwiaW1wb3J0IHsgcGVyc2lzdCwgY3JlYXRlSlNPTlN0b3JhZ2UgfSBmcm9tIFwienVzdGFuZC9taWRkbGV3YXJlXCI7XG5pbXBvcnQgeyBjcmVhdGVTdG9yZSB9IGZyb20gXCJ6dXN0YW5kL3ZhbmlsbGFcIjtcblxuLy8gVE9ETzogY2FydCBzaG91bGQgYmUgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudCBwcm9qZWN0XG50eXBlIFdpZGdldFN0YXRlID0ge1xuICAgIGlzT3BlbjogYm9vbGVhbjtcbiAgICBpc1Jlc3VtZVBhbmVsVmlzaWJsZTogYm9vbGVhbjtcbiAgICBpc1JlYWR5OiBib29sZWFuO1xuICAgIGlzQm9va2luZ0NvbXBsZXRlZDogYm9vbGVhbjtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgICBwcmltYXJ5R3Vlc3ROYW1lOiBzdHJpbmcgfCBudWxsO1xuICAgIGNoZWNrSW5EYXRlOiBzdHJpbmcgfCBudWxsO1xuICAgIGNoZWNrT3V0RGF0ZTogc3RyaW5nIHwgbnVsbDtcbiAgICBjYXJ0OiBhbnk7XG59O1xuXG50eXBlIEFjdGlvbnMgPSB7XG4gICAgc2hvd1dpZGdldDogKCkgPT4gdm9pZDtcbiAgICBoaWRlV2lkZ2V0OiAoKSA9PiB2b2lkO1xuICAgIHNob3dSZXN1bWVQYW5lbDogKCkgPT4gdm9pZDtcbiAgICBoaWRlUmVzdW1lUGFuZWw6ICgpID0+IHZvaWQ7XG4gICAgc2V0SXNSZWFkeTogKGlzUmVhZHk6IGJvb2xlYW4pID0+IHZvaWQ7XG4gICAgc2V0SXNCb29raW5nQ29tcGxldGVkOiAoaXNDb21wbGV0ZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gICAgc2V0QmFja2dyb3VuZENvbG9yOiAoY29sb3I/OiBzdHJpbmcpID0+IHZvaWQ7XG4gICAgc2V0UHJpbWFyeUd1ZXN0TmFtZTogKG5hbWU6IHN0cmluZykgPT4gdm9pZDtcbiAgICBzZXRDYXJ0OiAoY2FydD86IGFueSkgPT4gdm9pZDtcbiAgICBzZXREYXRlczogKGNoZWNrSW5EYXRlOiBzdHJpbmcsIGNoZWNrT3V0RGF0ZTogc3RyaW5nKSA9PiB2b2lkO1xuICAgIHJlc2V0OiAoKSA9PiB2b2lkO1xufTtcblxuY29uc3QgaW5pdGlhbFdpZGdldFN0YXRlOiBXaWRnZXRTdGF0ZSA9IHtcbiAgICBpc09wZW46IGZhbHNlLFxuICAgIGlzUmVzdW1lUGFuZWxWaXNpYmxlOiBmYWxzZSxcbiAgICBpc1JlYWR5OiBmYWxzZSxcbiAgICBpc0Jvb2tpbmdDb21wbGV0ZWQ6IGZhbHNlLFxuICAgIGJhY2tncm91bmRDb2xvcjogXCJyZ2IoMzUsIDc2LCAxMjEpXCIsXG4gICAgcHJpbWFyeUd1ZXN0TmFtZTogbnVsbCxcbiAgICBjaGVja0luRGF0ZTogbnVsbCxcbiAgICBjaGVja091dERhdGU6IG51bGwsXG4gICAgY2FydDoge30sXG59O1xuXG5leHBvcnQgY29uc3Qgd2lkZ2V0U3RvcmUgPSBjcmVhdGVTdG9yZTxXaWRnZXRTdGF0ZSAmIEFjdGlvbnM+KCkoXG4gICAgcGVyc2lzdChcbiAgICAgICAgKHNldCkgPT4gKHtcbiAgICAgICAgICAgIC4uLmluaXRpYWxXaWRnZXRTdGF0ZSxcbiAgICAgICAgICAgIHNob3dXaWRnZXQ6ICgpID0+IHNldCh7IGlzT3BlbjogdHJ1ZSB9KSxcbiAgICAgICAgICAgIGhpZGVXaWRnZXQ6ICgpID0+IHNldCh7IGlzT3BlbjogZmFsc2UgfSksXG4gICAgICAgICAgICBzaG93UmVzdW1lUGFuZWw6ICgpID0+IHNldCh7IGlzUmVzdW1lUGFuZWxWaXNpYmxlOiB0cnVlIH0pLFxuICAgICAgICAgICAgaGlkZVJlc3VtZVBhbmVsOiAoKSA9PiBzZXQoeyBpc1Jlc3VtZVBhbmVsVmlzaWJsZTogZmFsc2UgfSksXG4gICAgICAgICAgICBzZXRJc1JlYWR5OiAoaXNSZWFkeSkgPT4gc2V0KHsgaXNSZWFkeSB9KSxcbiAgICAgICAgICAgIHNldElzQm9va2luZ0NvbXBsZXRlZDogKGlzQm9va2luZ0NvbXBsZXRlZCkgPT4gc2V0KHsgaXNCb29raW5nQ29tcGxldGVkIH0pLFxuICAgICAgICAgICAgc2V0QmFja2dyb3VuZENvbG9yOiAoYmFja2dyb3VuZENvbG9yKSA9PlxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvclxuICAgICAgICAgICAgICAgICAgICA/IHNldCh7IGJhY2tncm91bmRDb2xvciB9KVxuICAgICAgICAgICAgICAgICAgICA6IHNldCh7IGJhY2tncm91bmRDb2xvcjogaW5pdGlhbFdpZGdldFN0YXRlLmJhY2tncm91bmRDb2xvciB9KSxcbiAgICAgICAgICAgIHNldFByaW1hcnlHdWVzdE5hbWU6IChwcmltYXJ5R3Vlc3ROYW1lKSA9PiBzZXQoeyBwcmltYXJ5R3Vlc3ROYW1lIH0pLFxuICAgICAgICAgICAgc2V0Q2FydDogKGNhcnQpID0+IHNldCh7IGNhcnQgfSksXG4gICAgICAgICAgICBzZXREYXRlczogKGNoZWNrSW5EYXRlLCBjaGVja091dERhdGUpID0+IHNldCh7IGNoZWNrSW5EYXRlLCBjaGVja091dERhdGUgfSksXG4gICAgICAgICAgICByZXNldDogKCkgPT4gc2V0KGluaXRpYWxXaWRnZXRTdGF0ZSksXG4gICAgICAgIH0pLFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIndpZGdldFN0b3JlXCIsXG4gICAgICAgICAgICBzdG9yYWdlOiBjcmVhdGVKU09OU3RvcmFnZSgoKSA9PiBzZXNzaW9uU3RvcmFnZSksXG4gICAgICAgICAgICBwYXJ0aWFsaXplOiAoc3RhdGUpID0+XG4gICAgICAgICAgICAgICAgT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHN0YXRlKS5maWx0ZXIoKFtrZXldKSA9PiAhW1wiY2FydFwiLCBcImlzUmVhZHlcIl0uaW5jbHVkZXMoa2V5KSkpLFxuICAgICAgICAgICAgb25SZWh5ZHJhdGVTdG9yYWdlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGU/LmlzQm9va2luZ0NvbXBsZXRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgKVxuKTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7IFNES19TQ1JJUFRfSUQsIFRSSVBGVVNJT05fQkFTRV9VUkwgfSBmcm9tIFwiLi9jb25zdFwiO1xuXG5leHBvcnQgY29uc3Qgc3RyaW5naWZ5UHJpY2UgPSAoY2VudHM6IG51bWJlciB8IG51bGwpID0+XG4gICAgY2VudHMgIT09IG51bGwgPyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoXCJlbi1VU1wiLCB7IHN0eWxlOiBcImN1cnJlbmN5XCIsIGN1cnJlbmN5OiBcIlVTRFwiIH0pLmZvcm1hdChjZW50cyAvIDEwMCkgOiBcIlwiO1xuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdFBhcmFtcyA9ICgpID0+IHtcbiAgICBjb25zdCAkanNTZGsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChTREtfU0NSSVBUX0lEKSBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBqc1Nka1NyYyA9ICRqc1Nkay5nZXRBdHRyaWJ1dGUoXCJzcmNcIikgYXMgc3RyaW5nO1xuICAgIGNvbnN0IHVybFBhcmFtcyA9IGdldFBhcmFtc0Zyb21VcmwobmV3IFVSTFNlYXJjaFBhcmFtcyhqc1Nka1NyYy5zdWJzdHJpbmcoanNTZGtTcmMuaW5kZXhPZihcIj9cIikpKSk7XG5cbiAgICBjb25zdCBjbGllbnQgPSB1cmxQYXJhbXNbXCJjbGllbnRcIl0gPz8gbnVsbDtcbiAgICBjb25zdCBwcm9wZXJ0eUlkID0gdXJsUGFyYW1zW1wicHJvcGVydHlJZFwiXSA/ICt1cmxQYXJhbXNbXCJwcm9wZXJ0eUlkXCJdIDogbnVsbDtcblxuICAgIHJldHVybiB7IGNsaWVudCwgcHJvcGVydHlJZCB9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBhcmFtc0Zyb21VcmwodXJsU2VhcmNoUGFyYW1zOiBVUkxTZWFyY2hQYXJhbXMpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBhdmFpbGFibGVTZWFyY2hQYXJhbXNNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgIHRyaXBmdXNpb246IFwidHJpcGZ1c2lvblwiLFxuICAgICAgICBjbGllbnQ6IFwiY2xpZW50XCIsXG4gICAgICAgIHByb3BlcnR5aWQ6IFwicHJvcGVydHlJZFwiLFxuICAgICAgICBtb2RlOiBcIm1vZGVcIixcbiAgICAgICAgb2ZmZXJpZDogXCJvZmZlcklkXCIsXG4gICAgICAgIGJvb2tpbmdpZDogXCJib29raW5nSWRcIixcbiAgICAgICAgY2hlY2tpbjogXCJjaGVja0luXCIsXG4gICAgICAgIGNoZWNrb3V0OiBcImNoZWNrT3V0XCIsXG4gICAgICAgIGFkdWx0czogXCJhZHVsdHNcIixcbiAgICAgICAgY2hpbGRyZW46IFwiY2hpbGRyZW5cIixcbiAgICB9O1xuICAgIHJldHVybiBBcnJheS5mcm9tKHVybFNlYXJjaFBhcmFtcy5lbnRyaWVzKCkpLnJlZHVjZShcbiAgICAgICAgKHByZXYsIFtzZWFyY2hQYXJhbUtleSwgc2VhcmNoUGFyYW1WYWx1ZV0pID0+ICh7XG4gICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgW2F2YWlsYWJsZVNlYXJjaFBhcmFtc01hcFtzZWFyY2hQYXJhbUtleS50b0xvd2VyQ2FzZSgpXV06IHNlYXJjaFBhcmFtVmFsdWUsXG4gICAgICAgIH0pLFxuICAgICAgICB7fVxuICAgICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2dnZXIobWVzc2FnZTogc3RyaW5nLCB0eXBlOiBcImVycm9yXCIgfCBcImxvZ1wiID0gXCJlcnJvclwiKSB7XG4gICAgY29uc3QgdXJsID0gYCR7VFJJUEZVU0lPTl9CQVNFX1VSTH1hcGkvdmFjYXlvdS9sb2dgO1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIHBhZ2U6IHdpbmRvdy5sb2NhdGlvbi5ocmVmLFxuICAgIH07XG4gICAgY29uc3QgaGVhZGVycyA9IHtcbiAgICAgICAgXCJjb250ZW50LXR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgfTtcbiAgICByZXR1cm4gZmV0Y2godXJsLCB7XG4gICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICB9KSxcbiAgICAgICAgaGVhZGVycyxcbiAgICB9KVxuICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmpzb24oKSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBUcmlwZnVzaW9uOiBmYWlsZWQgdG8gbG9nIG1lc3NhZ2U6ICR7ZXJyb3J9YCk7XG4gICAgICAgIH0pO1xufVxuIiwiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHR5cGUgeyBHbG9iYWxTdGF0ZSB9IGZyb20gXCIuL3N0b3JlL2dsb2JhbC5zdG9yZVwiO1xuaW1wb3J0IHtcbiAgICBCT09LSU5HX01PREUsXG4gICAgTE9BREVSX0lELFxuICAgIFJFU1VNRV9QQU5FTF9JRCxcbiAgICBUUklQRlVTSU9OX0JBU0VfVVJMLFxuICAgIFdJREdFVF9DTE9TRV9CVVRUT05fSUQsXG4gICAgV0lER0VUX0hFQURFUl9JRCxcbiAgICBXSURHRVRfSEVBREVSX1RJVExFX0lELFxuICAgIFdJREdFVF9JRCxcbiAgICBXSURHRVRfSUZSQU1FX0lELFxuICAgIFdJREdFVF9JTk5FUl9XUkFQUEVSX0lELFxuICAgIFdJREdFVF9XUkFQUEVSX0lELFxufSBmcm9tIFwiLi9jb25zdFwiO1xuaW1wb3J0IHsgd2lkZ2V0U3RvcmUgfSBmcm9tIFwiLi9zdG9yZS93aWRnZXQuc3RvcmVcIjtcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5TG9hZGluZ092ZXJsYXkoKSB7XG4gICAgY29uc3QgJHdpZGdldFdyYXBwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChXSURHRVRfV1JBUFBFUl9JRCk7XG5cbiAgICBpZiAoJHdpZGdldFdyYXBwZXIpIHtcbiAgICAgICAgY29uc3QgJGxvYWRpbmdEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICAkbG9hZGluZ0Rpdi5pZCA9IExPQURFUl9JRDtcbiAgICAgICAgJGxvYWRpbmdEaXYuaW5uZXJIVE1MID0gXCJMb2FkaW5nIDxzcGFuPlRyaXBGdXNpb248L3NwYW4+XCI7XG4gICAgICAgICR3aWRnZXRXcmFwcGVyLmFwcGVuZENoaWxkKCRsb2FkaW5nRGl2KTtcblxuICAgICAgICAkd2lkZ2V0V3JhcHBlci5zdHlsZS56SW5kZXggPSBgJHsxZTExfWA7XG4gICAgICAgICR3aWRnZXRXcmFwcGVyLnN0eWxlLmhlaWdodCA9IFwiMTAwJVwiO1xuICAgICAgICAkd2lkZ2V0V3JhcHBlci5zdHlsZS5iYWNrZ3JvdW5kID0gXCJyZ2JhKDAsIDAsIDAsIC43NClcIjtcbiAgICAgICAgbG9ja1BhZ2VTY3JvbGwoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoaWRlTG9hZGluZ092ZXJsYXkoKSB7XG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoTE9BREVSX0lEKT8ucmVtb3ZlKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlRG9tKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgc2hvd1dpZGdldCwgaGlkZVdpZGdldCwgc2hvd1Jlc3VtZVBhbmVsLCBoaWRlUmVzdW1lUGFuZWwgfSA9IHdpZGdldFN0b3JlLmdldFN0YXRlKCk7XG4gICAgICAgIGNvbnN0ICR3aWRnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLFxuICAgICAgICAgICAgJHdpZGdldFdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLFxuICAgICAgICAgICAgJHdpZGdldElubmVyV3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksXG4gICAgICAgICAgICAkd2lkZ2V0SGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxcbiAgICAgICAgICAgICR3aWRnZXRIZWFkZXJUaXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpLFxuICAgICAgICAgICAgJHdpZGdldENsb3NlQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiKSxcbiAgICAgICAgICAgICRyZXN1bWVQYW5lbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cbiAgICAgICAgJHJlc3VtZVBhbmVsLmlkID0gUkVTVU1FX1BBTkVMX0lEO1xuXG4gICAgICAgICRyZXN1bWVQYW5lbD8uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgICAgIHNob3dXaWRnZXQoKTtcbiAgICAgICAgICAgIGhpZGVSZXN1bWVQYW5lbCgpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBDb25maWd1cmUgd2lkZ2V0IGFuZCB3cmFwcGVyXG4gICAgICAgICR3aWRnZXQuaWQgPSBXSURHRVRfSUQ7XG4gICAgICAgICR3aWRnZXQuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgICAgICAkd2lkZ2V0V3JhcHBlci5pZCA9IFdJREdFVF9XUkFQUEVSX0lEO1xuICAgICAgICAkd2lkZ2V0LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzID09PSBldmVudC50YXJnZXQpIHtcbiAgICAgICAgICAgICAgICBoaWRlV2lkZ2V0KCk7XG4gICAgICAgICAgICAgICAgc2hvd1Jlc3VtZVBhbmVsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIENvbmZpZ3VyZSB3aWRnZXQgaW5uZXIgd3JhcHBlclxuICAgICAgICAkd2lkZ2V0SW5uZXJXcmFwcGVyLmlkID0gV0lER0VUX0lOTkVSX1dSQVBQRVJfSUQ7XG4gICAgICAgICR3aWRnZXRIZWFkZXIuaWQgPSBXSURHRVRfSEVBREVSX0lEO1xuICAgICAgICAkd2lkZ2V0Q2xvc2VCdXR0b24uaWQgPSBXSURHRVRfQ0xPU0VfQlVUVE9OX0lEO1xuICAgICAgICAkd2lkZ2V0Q2xvc2VCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgICAgIGhpZGVXaWRnZXQoKTtcbiAgICAgICAgICAgIHNob3dSZXN1bWVQYW5lbCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgJHdpZGdldEhlYWRlclRpdGxlLmlkID0gV0lER0VUX0hFQURFUl9USVRMRV9JRDtcbiAgICAgICAgJHdpZGdldEhlYWRlclRpdGxlLmlubmVySFRNTCA9IFwiQm9va2luZ1wiO1xuXG4gICAgICAgIC8vIEFwcGVuZCB3aWRnZXQgdG8gd3JhcHBlciBhbmQgd3JhcHBlciB0byBkb2N1bWVudCBib2R5XG4gICAgICAgICR3aWRnZXRXcmFwcGVyLmFwcGVuZENoaWxkKCR3aWRnZXQpO1xuICAgICAgICAkd2lkZ2V0LmFwcGVuZENoaWxkKCR3aWRnZXRJbm5lcldyYXBwZXIpO1xuICAgICAgICAkd2lkZ2V0SW5uZXJXcmFwcGVyLmFwcGVuZENoaWxkKCR3aWRnZXRIZWFkZXIpO1xuICAgICAgICAkd2lkZ2V0SGVhZGVyLmFwcGVuZENoaWxkKCR3aWRnZXRIZWFkZXJUaXRsZSk7XG4gICAgICAgICR3aWRnZXRIZWFkZXIuYXBwZW5kQ2hpbGQoJHdpZGdldENsb3NlQnV0dG9uKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCgkd2lkZ2V0V3JhcHBlcik7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoJHJlc3VtZVBhbmVsKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIoYFdpZGdldDogRXJyb3IgcHJlcGFyaW5nIERPTTogJHtlcnJvcn1gKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlRyaXBmdXNpb246IEVycm9yIHByZXBhcmluZyBET006IFwiLCBlcnJvcik7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyUmVzdW1lUGFuZWwoe1xuICAgIGhlYWRlclRleHQsXG4gICAgc3ViaGVhZGVyVGV4dCxcbiAgICBmb290ZXJUZXh0LFxufToge1xuICAgIGhlYWRlclRleHQ6IHN0cmluZztcbiAgICBzdWJoZWFkZXJUZXh0Pzogc3RyaW5nO1xuICAgIGZvb3RlclRleHQ/OiBzdHJpbmc7XG59KSB7XG4gICAgY29uc3QgJHJlc3VtZVBhbmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoUkVTVU1FX1BBTkVMX0lEKSBhcyBIVE1MRWxlbWVudDtcblxuICAgICRyZXN1bWVQYW5lbC5pbm5lckhUTUwgPSBgXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX2hlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPiR7aGVhZGVyVGV4dH08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgaWQ9XCJMYXllcl8xXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHZpZXdCb3g9XCIwIDAgMzMwIDMzMFwiIHhtbDpzcGFjZT1cInByZXNlcnZlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfMjIyX1wiIGQ9XCJNMjUwLjYwNiwxNTQuMzg5bC0xNTAtMTQ5Ljk5NmMtNS44NTctNS44NTgtMTUuMzU1LTUuODU4LTIxLjIxMywwLjAwMWMtNS44NTcsNS44NTgtNS44NTcsMTUuMzU1LDAuMDAxLDIxLjIxM2wxMzkuMzkzLDEzOS4zOUw3OS4zOTMsMzA0LjM5NGMtNS44NTcsNS44NTgtNS44NTcsMTUuMzU1LDAuMDAxLDIxLjIxM0M4Mi4zMjIsMzI4LjUzNiw4Ni4xNjEsMzMwLDkwLDMzMHM3LjY3OC0xLjQ2NCwxMC42MDctNC4zOTRsMTQ5Ljk5OS0xNTAuMDA0YzIuODE0LTIuODEzLDQuMzk0LTYuNjI4LDQuMzk0LTEwLjYwNkMyNTUsMTYxLjAxOCwyNTMuNDIsMTU3LjIwMiwyNTAuNjA2LDE1NC4zODl6XCIvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAke3N1YmhlYWRlclRleHQgJiYgYDxzcGFuIGNsYXNzPVwidHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX3N1YmhlYWRlclwiPiR7c3ViaGVhZGVyVGV4dH08L3NwYW4+YH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgICR7Zm9vdGVyVGV4dCAmJiBgPHNwYW4gY2xhc3M9XCJ0cmlwZnVzaW9uLXJlc3VtZS1wYW5lbF9fZm9vdGVyXCI+JHtmb290ZXJUZXh0fTwvc3Bhbj5gfVxuICAgIGA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93UmVzdW1lUGFuZWxEb20oKSB7XG4gICAgY29uc3QgJHJlc3VtZVBhbmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoUkVTVU1FX1BBTkVMX0lEKSBhcyBIVE1MRWxlbWVudDtcbiAgICAkcmVzdW1lUGFuZWwuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgXCJ0cmlwZnVzaW9uLXJlc3VtZS1wYW5lbC0tc2xpZGUtaW5cIik7XG4gICAgJHJlc3VtZVBhbmVsLmZvY3VzKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoaWRlUmVzdW1lUGFuZWxEb20oKSB7XG4gICAgY29uc3QgJHJlc3VtZVBhbmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoUkVTVU1FX1BBTkVMX0lEKSBhcyBIVE1MRWxlbWVudDtcbiAgICAkcmVzdW1lUGFuZWwuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgXCJ0cmlwZnVzaW9uLXJlc3VtZS1wYW5lbC0tc2xpZGUtb3V0XCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvd1dpZGdldERvbSgpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCAkd2lkZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX0lEKSBhcyBIVE1MRGl2RWxlbWVudCxcbiAgICAgICAgICAgICR3aWRnZXRXcmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX1dSQVBQRVJfSUQpIGFzIEhUTUxEaXZFbGVtZW50O1xuXG4gICAgICAgIE9iamVjdC5hc3NpZ24oJHdpZGdldFdyYXBwZXIuc3R5bGUsIHtcbiAgICAgICAgICAgIHpJbmRleDogMTAwMDAwMDAwMDAxMSxcbiAgICAgICAgICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBcInJnYmEoMCwgMCwgMCwgLjUpXCIsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxvY2tQYWdlU2Nyb2xsKCk7XG4gICAgICAgICR3aWRnZXQuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICAgICAgJHdpZGdldC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCBcInNsaWRlLWluXCIpO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgJHdpZGdldElmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9JRlJBTUVfSUQpO1xuICAgICAgICAgICAgJHdpZGdldElmcmFtZT8uZm9jdXMoKTtcbiAgICAgICAgfSwgMjUwKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIoYFdpZGdldDogRXJyb3Igb3Blbm5pbmcgd2lkZ2V0OiAke2Vycm9yfWApO1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiVHJpcGZ1c2lvbjogRXJyb3Igb3Blbm5pbmcgd2lkZ2V0OiBcIiwgZXJyb3IpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhpZGVXaWRnZXREb20oKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgJHdpZGdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9JRCksXG4gICAgICAgICAgICAkd2lkZ2V0V3JhcHBlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9XUkFQUEVSX0lEKTtcblxuICAgICAgICBpZiAoJHdpZGdldCAmJiAkd2lkZ2V0V3JhcHBlcikge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9IFwiaW5pdGlhbFwiO1xuICAgICAgICAgICAgJHdpZGdldC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCBcInNsaWRlLW91dFwiKTtcbiAgICAgICAgICAgICR3aWRnZXRXcmFwcGVyLnN0eWxlLmJhY2tncm91bmQgPSBcInJnYmEoMCwgMCwgMCwgMClcIjtcbiAgICAgICAgICAgICR3aWRnZXQuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgICAgICAgICAgJHdpZGdldFdyYXBwZXIuc3R5bGUuekluZGV4ID0gYCR7LTFlMTF9YDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlcihgV2lkZ2V0OiBFcnJvciBjbG9zaW5nIHdpZGdldDogJHtlcnJvcn1gKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlRyaXBmdXNpb246IEVycm9yIGNsb3Npbmcgd2lkZ2V0OiBcIiwgZXJyb3IpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdElmcmFtZSh7IGNsaWVudCwgcHJvcGVydHlJZCwgbW9kZSwgYm9va2luZ0lkLCAuLi5yZXN0IH06IEdsb2JhbFN0YXRlKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX0lGUkFNRV9JRCk/LnJlbW92ZSgpO1xuXG4gICAgICAgIGNvbnN0ICRpbm5lcldyYXBwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChXSURHRVRfSU5ORVJfV1JBUFBFUl9JRCk7XG4gICAgICAgIGlmICgkaW5uZXJXcmFwcGVyKSB7XG4gICAgICAgICAgICBjb25zdCAkd2lkZ2V0SWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlmcmFtZVwiKTtcbiAgICAgICAgICAgIGxldCB1cmwgPSBgJHtUUklQRlVTSU9OX0JBU0VfVVJMfSR7Y2xpZW50fS8ke3Byb3BlcnR5SWR9YDtcbiAgICAgICAgICAgIGlmIChtb2RlID09PSBCT09LSU5HX01PREUuYXBwZW5kICYmIGJvb2tpbmdJZCkge1xuICAgICAgICAgICAgICAgIHVybCArPSBgL2Jvb2tpbmcvJHtib29raW5nSWR9L2FwcGVuZGA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxQYXJhbXMgPSBPYmplY3QuZW50cmllcyhyZXN0KVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKFtfLCB2YWx1ZV0pID0+ICEhdmFsdWUpXG4gICAgICAgICAgICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9PSR7dmFsdWV9YC50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICAgIC5qb2luKFwiJlwiKTtcbiAgICAgICAgICAgIGlmIChhZGRpdGlvbmFsUGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgdXJsICs9IGA/JHthZGRpdGlvbmFsUGFyYW1zfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICR3aWRnZXRJZnJhbWUuc2V0QXR0cmlidXRlKFwic3JjXCIsIHVybCk7XG4gICAgICAgICAgICAkd2lkZ2V0SWZyYW1lLmlkID0gV0lER0VUX0lGUkFNRV9JRDtcbiAgICAgICAgICAgICRpbm5lcldyYXBwZXIuYXBwZW5kQ2hpbGQoJHdpZGdldElmcmFtZSk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIoYFdpZGdldDogRXJyb3IgaW5qZWN0aW5nIGlmcmFtZTogJHtlcnJvcn1gKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlRyaXBmdXNpb246IEVycm9yIGluamVjdGluZyBpZnJhbWU6IFwiLCBlcnJvcik7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9ja1BhZ2VTY3JvbGwoKSB7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9IFwiaGlkZGVuXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRXaWRnZXRUaGVtZSh7IGJhY2tncm91bmRDb2xvciB9OiB7IGJhY2tncm91bmRDb2xvcjogc3RyaW5nIH0pIHtcbiAgICBjb25zdCAkcmVzdW1lUGFuZWxXcmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoUkVTVU1FX1BBTkVMX0lEKSBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgJHdpZGdldEhlYWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9IRUFERVJfSUQpIGFzIEhUTUxFbGVtZW50O1xuICAgICRyZXN1bWVQYW5lbFdyYXBwZXIuc3R5bGVbXCJiYWNrZ3JvdW5kQ29sb3JcIl0gPSBiYWNrZ3JvdW5kQ29sb3I7XG4gICAgJHdpZGdldEhlYWRlci5zdHlsZVtcImJhY2tncm91bmRDb2xvclwiXSA9IGJhY2tncm91bmRDb2xvcjtcbn1cbiIsImltcG9ydCB7IEJPT0tJTkdfTU9ERSB9IGZyb20gXCIuLi9jb25zdFwiO1xuaW1wb3J0IHsgcGVyc2lzdCwgY3JlYXRlSlNPTlN0b3JhZ2UgfSBmcm9tIFwienVzdGFuZC9taWRkbGV3YXJlXCI7XG5pbXBvcnQgeyBjcmVhdGVTdG9yZSB9IGZyb20gXCJ6dXN0YW5kL3ZhbmlsbGFcIjtcblxuZXhwb3J0IHR5cGUgR2xvYmFsU3RhdGUgPSB7XG4gICAgY2xpZW50OiBzdHJpbmcgfCBudWxsO1xuICAgIHByb3BlcnR5SWQ6IG51bWJlciB8IG51bGw7XG4gICAgbW9kZToga2V5b2YgdHlwZW9mIEJPT0tJTkdfTU9ERTtcbiAgICBib29raW5nSWQ6IG51bWJlciB8IG51bGw7XG4gICAgY2hlY2tJbjogc3RyaW5nIHwgbnVsbDtcbiAgICBjaGVja091dDogc3RyaW5nIHwgbnVsbDtcbiAgICBhZHVsdHM6IG51bWJlciB8IG51bGw7XG4gICAgY2hpbGRyZW46IG51bWJlcltdIHwgbnVsbDtcbiAgICBvZmZlcklkOiBudW1iZXIgfCBudWxsO1xuICAgIHJlcGxhY2U6IChzdGF0ZTogUGFydGlhbDxHbG9iYWxTdGF0ZT4pID0+IHZvaWQ7XG59O1xuXG5jb25zdCBpbml0aWFsU3RhdGUgPSB7XG4gICAgY2xpZW50OiBudWxsLFxuICAgIHByb3BlcnR5SWQ6IG51bGwsXG4gICAgbW9kZTogQk9PS0lOR19NT0RFLm5vcm1hbCxcbiAgICBib29raW5nSWQ6IG51bGwsXG4gICAgY2hlY2tJbjogbnVsbCxcbiAgICBjaGVja091dDogbnVsbCxcbiAgICBhZHVsdHM6IG51bGwsXG4gICAgY2hpbGRyZW46IG51bGwsXG4gICAgb2ZmZXJJZDogbnVsbCxcbn07XG5cbmV4cG9ydCBjb25zdCBnbG9iYWxTdG9yZSA9IGNyZWF0ZVN0b3JlPEdsb2JhbFN0YXRlPigpKFxuICAgIHBlcnNpc3QoXG4gICAgICAgIChzZXQpID0+ICh7XG4gICAgICAgICAgICAuLi5pbml0aWFsU3RhdGUsXG4gICAgICAgICAgICByZXBsYWNlOiAoc3RhdGUpID0+IHNldCh7IC4uLmluaXRpYWxTdGF0ZSwgLi4uc3RhdGUgfSksXG4gICAgICAgIH0pLFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImdsb2JhbFN0b3JlXCIsXG4gICAgICAgICAgICBzdG9yYWdlOiBjcmVhdGVKU09OU3RvcmFnZSgoKSA9PiBzZXNzaW9uU3RvcmFnZSksXG4gICAgICAgIH1cbiAgICApXG4pO1xuIiwiY29uc3QgaXNJdGVyYWJsZSA9IChvYmopID0+IFN5bWJvbC5pdGVyYXRvciBpbiBvYmo7XG5jb25zdCBjb21wYXJlTWFwTGlrZSA9IChpdGVyYWJsZUEsIGl0ZXJhYmxlQikgPT4ge1xuICBjb25zdCBtYXBBID0gaXRlcmFibGVBIGluc3RhbmNlb2YgTWFwID8gaXRlcmFibGVBIDogbmV3IE1hcChpdGVyYWJsZUEpO1xuICBjb25zdCBtYXBCID0gaXRlcmFibGVCIGluc3RhbmNlb2YgTWFwID8gaXRlcmFibGVCIDogbmV3IE1hcChpdGVyYWJsZUIpO1xuICBpZiAobWFwQS5zaXplICE9PSBtYXBCLnNpemUpIHJldHVybiBmYWxzZTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgbWFwQSkge1xuICAgIGlmICghT2JqZWN0LmlzKHZhbHVlLCBtYXBCLmdldChrZXkpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5mdW5jdGlvbiBzaGFsbG93KG9iakEsIG9iakIpIHtcbiAgaWYgKE9iamVjdC5pcyhvYmpBLCBvYmpCKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICh0eXBlb2Ygb2JqQSAhPT0gXCJvYmplY3RcIiB8fCBvYmpBID09PSBudWxsIHx8IHR5cGVvZiBvYmpCICE9PSBcIm9iamVjdFwiIHx8IG9iakIgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGlzSXRlcmFibGUob2JqQSkgJiYgaXNJdGVyYWJsZShvYmpCKSkge1xuICAgIGNvbnN0IGl0ZXJhdG9yQSA9IG9iakFbU3ltYm9sLml0ZXJhdG9yXSgpO1xuICAgIGNvbnN0IGl0ZXJhdG9yQiA9IG9iakJbU3ltYm9sLml0ZXJhdG9yXSgpO1xuICAgIGxldCBuZXh0QSA9IGl0ZXJhdG9yQS5uZXh0KCk7XG4gICAgbGV0IG5leHRCID0gaXRlcmF0b3JCLm5leHQoKTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShuZXh0QS52YWx1ZSkgJiYgQXJyYXkuaXNBcnJheShuZXh0Qi52YWx1ZSkgJiYgbmV4dEEudmFsdWUubGVuZ3RoID09PSAyICYmIG5leHRCLnZhbHVlLmxlbmd0aCA9PT0gMikge1xuICAgICAgcmV0dXJuIGNvbXBhcmVNYXBMaWtlKFxuICAgICAgICBvYmpBLFxuICAgICAgICBvYmpCXG4gICAgICApO1xuICAgIH1cbiAgICB3aGlsZSAoIW5leHRBLmRvbmUgJiYgIW5leHRCLmRvbmUpIHtcbiAgICAgIGlmICghT2JqZWN0LmlzKG5leHRBLnZhbHVlLCBuZXh0Qi52YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgbmV4dEEgPSBpdGVyYXRvckEubmV4dCgpO1xuICAgICAgbmV4dEIgPSBpdGVyYXRvckIubmV4dCgpO1xuICAgIH1cbiAgICByZXR1cm4gISFuZXh0QS5kb25lICYmICEhbmV4dEIuZG9uZTtcbiAgfVxuICBjb25zdCBrZXlzQSA9IE9iamVjdC5rZXlzKG9iakEpO1xuICBpZiAoa2V5c0EubGVuZ3RoICE9PSBPYmplY3Qua2V5cyhvYmpCKS5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgZm9yIChjb25zdCBrZXlBIG9mIGtleXNBKSB7XG4gICAgaWYgKCFPYmplY3QuaGFzT3duKG9iakIsIGtleUEpIHx8ICFPYmplY3QuaXMob2JqQVtrZXlBXSwgb2JqQltrZXlBXSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCB7IHNoYWxsb3cgfTtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZXMuY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5vcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3R5bGVzLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB0eXBlIHsgQXBwTWVzc2FnZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBBUFBfTUVTU0FHRV9UWVBFLCBCT09LSU5HX01PREUgfSBmcm9tIFwiLi9jb25zdFwiO1xuaW1wb3J0IHtcbiAgICBoaWRlV2lkZ2V0RG9tLFxuICAgIGRpc3BsYXlMb2FkaW5nT3ZlcmxheSxcbiAgICBoaWRlUmVzdW1lUGFuZWxEb20sXG4gICAgaW5qZWN0SWZyYW1lLFxuICAgIHNob3dXaWRnZXREb20sXG4gICAgcHJlcGFyZURvbSxcbiAgICByZW5kZXJSZXN1bWVQYW5lbCxcbiAgICBzZXRXaWRnZXRUaGVtZSxcbiAgICBzaG93UmVzdW1lUGFuZWxEb20sXG4gICAgaGlkZUxvYWRpbmdPdmVybGF5LFxufSBmcm9tIFwiLi9kb21cIjtcbmltcG9ydCB7IEdsb2JhbFN0YXRlLCBnbG9iYWxTdG9yZSB9IGZyb20gXCIuL3N0b3JlL2dsb2JhbC5zdG9yZVwiO1xuaW1wb3J0IHsgd2lkZ2V0U3RvcmUgfSBmcm9tIFwiLi9zdG9yZS93aWRnZXQuc3RvcmVcIjtcbmltcG9ydCB7IGdldERlZmF1bHRQYXJhbXMsIGdldFBhcmFtc0Zyb21VcmwsIGxvZ2dlciwgc3RyaW5naWZ5UHJpY2UgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IHsgc2hhbGxvdyB9IGZyb20gXCJ6dXN0YW5kL3ZhbmlsbGEvc2hhbGxvd1wiO1xuaW1wb3J0IFwiLi9zdHlsZXMuY3NzXCI7XG5cbmdsb2JhbFN0b3JlLnN1YnNjcmliZSgobmV3U3RhdGUpID0+IHtcbiAgICBpZiAobmV3U3RhdGUuY2xpZW50ICYmIG5ld1N0YXRlLnByb3BlcnR5SWQpIHtcbiAgICAgICAgaW5qZWN0SWZyYW1lKG5ld1N0YXRlKTtcbiAgICB9XG59KTtcblxud2lkZ2V0U3RvcmUuc3Vic2NyaWJlKChuZXdTdGF0ZSkgPT4ge1xuICAgIGlmIChuZXdTdGF0ZS5pc1Jlc3VtZVBhbmVsVmlzaWJsZSkge1xuICAgICAgICBsZXQgaGVhZGVyVGV4dCA9IG5ld1N0YXRlLnByaW1hcnlHdWVzdE5hbWVcbiAgICAgICAgICAgID8gYENvbXBsZXRlIHlvdXIgYm9va2luZywgJHtuZXdTdGF0ZS5wcmltYXJ5R3Vlc3ROYW1lfWBcbiAgICAgICAgICAgIDogXCJDb21wbGV0ZSB5b3VyIGJvb2tpbmdcIjtcbiAgICAgICAgbGV0IHN1YmhlYWRlclRleHQgPSBcIlwiO1xuICAgICAgICBjb25zdCBmb290ZXJQYXJ0czogc3RyaW5nW10gPSBbXTtcblxuICAgICAgICBpZiAobmV3U3RhdGUuaXNCb29raW5nQ29tcGxldGVkKSB7XG4gICAgICAgICAgICBoZWFkZXJUZXh0ID0gXCJCb29raW5nIGNvbXBsZXRlZCFcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXdTdGF0ZS5jaGVja0luRGF0ZSAmJiBuZXdTdGF0ZS5jaGVja091dERhdGUpIHtcbiAgICAgICAgICAgIGZvb3RlclBhcnRzLnB1c2goXG4gICAgICAgICAgICAgICAgYCR7ZGF5anMobmV3U3RhdGUuY2hlY2tJbkRhdGUpLmZvcm1hdChcIk1NTSBERFwiKX0gLSAke2RheWpzKG5ld1N0YXRlLmNoZWNrT3V0RGF0ZSkuZm9ybWF0KFwiTU1NIEREXCIpfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV3U3RhdGUuY2FydC50b3RhbCkge1xuICAgICAgICAgICAgaWYgKG5ld1N0YXRlLmNhcnQ/LnJvb21zICYmIG5ld1N0YXRlLmNhcnQucm9vbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvb21Db3VudCA9IG5ld1N0YXRlLmNhcnQucm9vbXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGNvbnN0IGd1ZXN0Q291bnQgPSBuZXdTdGF0ZS5jYXJ0LnJvb21zLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgKGFjYzogbnVtYmVyLCByb29tOiBhbnkpID0+IGFjYyArIHJvb20ucGFzc2VuZ2Vycy5hZHVsdHMgKyByb29tLnBhc3NlbmdlcnMuY2hpbGRyZW4ubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBzdWJoZWFkZXJUZXh0ID0gYCR7cm9vbUNvdW50fSByb29tJHtyb29tQ291bnQgPiAxID8gXCJzXCIgOiBcIlwifSBmb3IgYDtcbiAgICAgICAgICAgICAgICBmb290ZXJQYXJ0cy5wdXNoKGAke2d1ZXN0Q291bnR9IGd1ZXN0JHtndWVzdENvdW50ID4gMSA/IFwic1wiIDogXCJcIn1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN1YmhlYWRlclRleHQgKz0gc3RyaW5naWZ5UHJpY2UobmV3U3RhdGUuY2FydC50b3RhbCk7XG4gICAgICAgIH1cblxuICAgICAgICByZW5kZXJSZXN1bWVQYW5lbCh7IGhlYWRlclRleHQsIHN1YmhlYWRlclRleHQsIGZvb3RlclRleHQ6IGZvb3RlclBhcnRzLmpvaW4oXCIsIFwiKSB9KTtcbiAgICB9XG5cbiAgICBpZiAobmV3U3RhdGUuYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICAgIHNldFdpZGdldFRoZW1lKHsgYmFja2dyb3VuZENvbG9yOiBuZXdTdGF0ZS5iYWNrZ3JvdW5kQ29sb3IgfSk7XG4gICAgfVxuXG4gICAgaWYgKG5ld1N0YXRlLmlzUmVhZHkpIHtcbiAgICAgICAgaGlkZUxvYWRpbmdPdmVybGF5KCk7XG4gICAgICAgIG5ld1N0YXRlLmlzT3BlbiA/IHNob3dXaWRnZXREb20oKSA6IGhpZGVXaWRnZXREb20oKTtcbiAgICAgICAgbmV3U3RhdGUuaXNSZXN1bWVQYW5lbFZpc2libGUgPyBzaG93UmVzdW1lUGFuZWxEb20oKSA6IGhpZGVSZXN1bWVQYW5lbERvbSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGRpc3BsYXlMb2FkaW5nT3ZlcmxheSgpO1xuICAgIH1cbn0pO1xuXG5mdW5jdGlvbiBhZGRMaW5rRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgZnVuY3Rpb24gaGFuZGxlTGlua0NsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XG5cbiAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgZXZlbnQgdGFyZ2V0IGhhcyBhIHZhbGlkIGhyZWZcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHRhcmdldC5wYXJlbnROb2RlIGFzIEhUTUxBbmNob3JFbGVtZW50O1xuICAgICAgICAgICAgaWYgKHRhcmdldC50YWdOYW1lICE9PSBcIkFcIiAmJiBwYXJlbnQ/LnRhZ05hbWUgPT09IFwiQVwiKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LmhyZWYgPSBwYXJlbnQ/LmhyZWY7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGxpbmtIcmVmID0gdGFyZ2V0LmhyZWYgfHwgXCJcIjtcbiAgICAgICAgICAgIGlmICghbGlua0hyZWYuaW5jbHVkZXMoXCI/XCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB1cmxQYXJhbXMgPSBnZXRQYXJhbXNGcm9tVXJsKG5ldyBVUkxTZWFyY2hQYXJhbXMobGlua0hyZWYuc3Vic3RyaW5nKGxpbmtIcmVmLmluZGV4T2YoXCI/XCIpKSkpO1xuXG4gICAgICAgICAgICBpZiAodXJsUGFyYW1zLnRyaXBmdXNpb24gPT09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGNsaWVudCwgcHJvcGVydHlJZCB9ID0gZ2V0RGVmYXVsdFBhcmFtcygpO1xuICAgICAgICAgICAgICAgIGJvb2soe1xuICAgICAgICAgICAgICAgICAgICBjbGllbnQ6IHVybFBhcmFtcy5jbGllbnQgPz8gY2xpZW50LFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eUlkOiB1cmxQYXJhbXMucHJvcGVydHlJZCA/ICt1cmxQYXJhbXMucHJvcGVydHlJZCA6IHByb3BlcnR5SWQsXG4gICAgICAgICAgICAgICAgICAgIG1vZGU6IHVybFBhcmFtcy5tb2RlID09PSBCT09LSU5HX01PREUuYXBwZW5kID8gQk9PS0lOR19NT0RFLmFwcGVuZCA6IEJPT0tJTkdfTU9ERS5ub3JtYWwsXG4gICAgICAgICAgICAgICAgICAgIGJvb2tpbmdJZDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybFBhcmFtcz8uYm9va2luZ0lkICYmIHVybFBhcmFtcz8ubW9kZSA9PT0gQk9PS0lOR19NT0RFLmFwcGVuZCA/ICt1cmxQYXJhbXMuYm9va2luZ0lkIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJJZDogdXJsUGFyYW1zLm9mZmVySWQgPyArdXJsUGFyYW1zLm9mZmVySWQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrSW46IHVybFBhcmFtcy5jaGVja0luLFxuICAgICAgICAgICAgICAgICAgICBjaGVja091dDogdXJsUGFyYW1zLmNoZWNrT3V0LFxuICAgICAgICAgICAgICAgICAgICBhZHVsdHM6IHVybFBhcmFtcy5hZHVsdHMgPyArdXJsUGFyYW1zLmFkdWx0cyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IHVybFBhcmFtcy5jaGlsZHJlbiA/IHVybFBhcmFtcy5jaGlsZHJlbi5zcGxpdChcIixcIikubWFwKChhZ2UpID0+ICthZ2UpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgbG9nZ2VyKGBXaWRnZXQ6IEVycm9yIGluIGxpbmsgY2xpY2sgaGFuZGxlcjogJHtlcnJvcn1gKTtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUcmlwZnVzaW9uOiBFcnJvciBpbiBsaW5rIGNsaWNrIGhhbmRsZXI6IFwiLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiYVwiKS5mb3JFYWNoKChsaW5rRWxlbWVudCkgPT4ge1xuICAgICAgICBsaW5rRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlTGlua0NsaWNrKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gYWRkUGFnZUxvYWRMaXN0ZW5lcigpIHtcbiAgICBmdW5jdGlvbiBvbkxvYWRIYW5kbGVyKCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHVybFBhcmFtcyA9IGdldFBhcmFtc0Zyb21VcmwobmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKSk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdXJsUGFyYW1zLnRyaXBmdXNpb24gPT09IFwidHJ1ZVwiICYmXG4gICAgICAgICAgICAgICAgKGdsb2JhbFN0b3JlLmdldFN0YXRlKCkuY2xpZW50IHx8IHVybFBhcmFtcy5jbGllbnQpICYmXG4gICAgICAgICAgICAgICAgKGdsb2JhbFN0b3JlLmdldFN0YXRlKCkucHJvcGVydHlJZCB8fCB1cmxQYXJhbXMucHJvcGVydHlJZClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGJvb2soe1xuICAgICAgICAgICAgICAgICAgICBjbGllbnQ6IHVybFBhcmFtcy5jbGllbnQgPz8gZ2xvYmFsU3RvcmUuZ2V0U3RhdGUoKS5jbGllbnQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5SWQ6IHVybFBhcmFtcy5wcm9wZXJ0eUlkID8gK3VybFBhcmFtcy5wcm9wZXJ0eUlkIDogZ2xvYmFsU3RvcmUuZ2V0U3RhdGUoKS5wcm9wZXJ0eUlkLFxuICAgICAgICAgICAgICAgICAgICBtb2RlOiB1cmxQYXJhbXMubW9kZSA9PT0gQk9PS0lOR19NT0RFLmFwcGVuZCA/IEJPT0tJTkdfTU9ERS5hcHBlbmQgOiBCT09LSU5HX01PREUubm9ybWFsLFxuICAgICAgICAgICAgICAgICAgICBib29raW5nSWQ6XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmxQYXJhbXM/LmJvb2tpbmdJZCAmJiB1cmxQYXJhbXM/Lm1vZGUgPT09IEJPT0tJTkdfTU9ERS5hcHBlbmQgPyArdXJsUGFyYW1zLmJvb2tpbmdJZCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIG9mZmVySWQ6IHVybFBhcmFtcy5vZmZlcklkID8gK3VybFBhcmFtcy5vZmZlcklkIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBjaGVja0luOiB1cmxQYXJhbXMuY2hlY2tJbixcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tPdXQ6IHVybFBhcmFtcy5jaGVja091dCxcbiAgICAgICAgICAgICAgICAgICAgYWR1bHRzOiB1cmxQYXJhbXMuYWR1bHRzID8gK3VybFBhcmFtcy5hZHVsdHMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiB1cmxQYXJhbXMuY2hpbGRyZW4gPyB1cmxQYXJhbXMuY2hpbGRyZW4uc3BsaXQoXCIsXCIpLm1hcCgoYWdlKSA9PiArYWdlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgNTAwKTtcbiAgICB9XG5cbiAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gXCJjb21wbGV0ZVwiKSB7XG4gICAgICAgIG9uTG9hZEhhbmRsZXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIiwgb25Mb2FkSGFuZGxlcik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBib29rKHByb3BzPzogUGFydGlhbDxHbG9iYWxTdGF0ZT4pIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBib29raW5nU3RhdGUgPSBwcm9wcyA/PyBnbG9iYWxTdG9yZS5nZXRTdGF0ZSgpID8/IGdldERlZmF1bHRQYXJhbXMoKTtcbiAgICAgICAgaWYgKCFib29raW5nU3RhdGUuY2xpZW50IHx8ICFib29raW5nU3RhdGUucHJvcGVydHlJZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2xpZW50IGFuZCBwcm9wZXJ0eUlkIGFyZSByZXF1aXJlZCB0byBib29rXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBoaWRlUmVzdW1lUGFuZWwsIHJlc2V0IH0gPSB3aWRnZXRTdG9yZS5nZXRTdGF0ZSgpO1xuICAgICAgICBoaWRlUmVzdW1lUGFuZWwoKTtcblxuICAgICAgICBpZiAoIXNoYWxsb3coZ2xvYmFsU3RvcmUuZ2V0U3RhdGUoKSwgYm9va2luZ1N0YXRlKSkge1xuICAgICAgICAgICAgcmVzZXQoKTtcbiAgICAgICAgICAgIGdsb2JhbFN0b3JlLmdldFN0YXRlKCkucmVwbGFjZShib29raW5nU3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIHdpZGdldFN0b3JlLmdldFN0YXRlKCkuc2hvd1dpZGdldCgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlcihgV2lkZ2V0OiBmYWlsZWQgdG8gYm9vazogJHtlcnJvcn1gKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihgVHJpcGZ1c2lvbjogZmFpbGVkIHRvIGJvb2s6ICR7ZXJyb3J9YCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpbml0VHJpcGZ1c2lvblNkaygpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBjaGVja0lmRG9jdW1lbnRMb2FkZWRJbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIpIHtcbiAgICAgICAgICAgICAgICBwcmVwYXJlRG9tKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWdsb2JhbFN0b3JlLmdldFN0YXRlKCkuY2xpZW50IHx8ICFnbG9iYWxTdG9yZS5nZXRTdGF0ZSgpLnByb3BlcnR5SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBjbGllbnQsIHByb3BlcnR5SWQgfSA9IGdldERlZmF1bHRQYXJhbXMoKTtcbiAgICAgICAgICAgICAgICAgICAgZ2xvYmFsU3RvcmUuZ2V0U3RhdGUoKS5yZXBsYWNlKHsgY2xpZW50LCBwcm9wZXJ0eUlkIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGluamVjdElmcmFtZShnbG9iYWxTdG9yZS5nZXRTdGF0ZSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYWRkTGlua0V2ZW50TGlzdGVuZXJzKCk7XG5cbiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSWZEb2N1bWVudExvYWRlZEludGVydmFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgYWRkUGFnZUxvYWRMaXN0ZW5lcigpO1xuXG4gICAgICAgIE9iamVjdC5hc3NpZ24od2luZG93LCB7IGJvb2ssIGNsb3NlV2lkZ2V0OiBoaWRlV2lkZ2V0RG9tIH0pO1xuXG4gICAgICAgIHdpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZTogQXBwTWVzc2FnZSA9IGUuZGF0YTtcbiAgICAgICAgICAgIHN3aXRjaCAobWVzc2FnZS50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBBUFBfTUVTU0FHRV9UWVBFLldJREdFVF9SRUFEWToge1xuICAgICAgICAgICAgICAgICAgICB3aWRnZXRTdG9yZS5nZXRTdGF0ZSgpLnNldElzUmVhZHkodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIEFQUF9NRVNTQUdFX1RZUEUuQk9PS0lOR19DT01QTEVURUQ6IHtcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0U3RvcmUuZ2V0U3RhdGUoKS5zZXRJc0Jvb2tpbmdDb21wbGV0ZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIEFQUF9NRVNTQUdFX1RZUEUuU0VUX0NMSUVOVF9USEVNRToge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlRGF0YSA9IG1lc3NhZ2UuZGF0YSBhcyB7IHByaW1hcnk/OiBzdHJpbmcgfTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xpZW50VGhlbWUgPSBtZXNzYWdlRGF0YS5wcmltYXJ5O1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2xpZW50VGhlbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldFN0b3JlLmdldFN0YXRlKCkuc2V0QmFja2dyb3VuZENvbG9yKGNsaWVudFRoZW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBBUFBfTUVTU0FHRV9UWVBFLlNFVF9QUklNQVJZX0dVRVNUX05BTUU6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZURhdGEgPSBtZXNzYWdlLmRhdGEgYXMgeyBuYW1lOiBzdHJpbmcgfTtcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0U3RvcmUuZ2V0U3RhdGUoKS5zZXRQcmltYXJ5R3Vlc3ROYW1lKG1lc3NhZ2VEYXRhLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBBUFBfTUVTU0FHRV9UWVBFLlNFVF9EQVRFUzoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlRGF0YSA9IG1lc3NhZ2UuZGF0YSBhcyB7IGNoZWNrSW4/OiBzdHJpbmc7IGNoZWNrT3V0Pzogc3RyaW5nIH07XG4gICAgICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlRGF0YS5jaGVja0luICYmIG1lc3NhZ2VEYXRhLmNoZWNrT3V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXRTdG9yZS5nZXRTdGF0ZSgpLnNldERhdGVzKG1lc3NhZ2VEYXRhLmNoZWNrSW4sIG1lc3NhZ2VEYXRhLmNoZWNrT3V0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBBUFBfTUVTU0FHRV9UWVBFLlNFVF9DQVJUOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5kYXRhIGFzIHsgY2FydDogYW55IH07XG4gICAgICAgICAgICAgICAgICAgIHdpZGdldFN0b3JlLmdldFN0YXRlKCkuc2V0Q2FydChtZXNzYWdlRGF0YS5jYXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyKGBXaWRnZXQ6IGZhaWxlZCB0byBpbml0IFRyaXBmdXNpb24gSlMgU0RLOiAke2Vycm9yfWApO1xuICAgICAgICBjb25zb2xlLmVycm9yKGBUcmlwZnVzaW9uOiBmYWlsZWQgdG8gaW5pdCBTREs6ICR7ZXJyb3J9YCk7XG4gICAgfVxufVxuXG5pbml0VHJpcGZ1c2lvblNkaygpO1xuIl0sIm5hbWVzIjpbIl9fX0NTU19MT0FERVJfRVhQT1JUX19fIiwicHVzaCIsIm1vZHVsZSIsImlkIiwiZXhwb3J0cyIsImNzc1dpdGhNYXBwaW5nVG9TdHJpbmciLCJsaXN0IiwidG9TdHJpbmciLCJ0aGlzIiwibWFwIiwiaXRlbSIsImNvbnRlbnQiLCJuZWVkTGF5ZXIiLCJjb25jYXQiLCJsZW5ndGgiLCJqb2luIiwiaSIsIm1vZHVsZXMiLCJtZWRpYSIsImRlZHVwZSIsInN1cHBvcnRzIiwibGF5ZXIiLCJ1bmRlZmluZWQiLCJhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzIiwiayIsIl9rIiwiY3NzTWFwcGluZyIsImJ0b2EiLCJiYXNlNjQiLCJ1bmVzY2FwZSIsImVuY29kZVVSSUNvbXBvbmVudCIsIkpTT04iLCJzdHJpbmdpZnkiLCJkYXRhIiwic291cmNlTWFwcGluZyIsImUiLCJuIiwiciIsInMiLCJ1IiwiYSIsIm8iLCJjIiwiZiIsImgiLCJkIiwibCIsIiQiLCJ5IiwiTSIsIm5hbWUiLCJ3ZWVrZGF5cyIsInNwbGl0IiwibW9udGhzIiwib3JkaW5hbCIsInQiLCJtIiwiU3RyaW5nIiwiQXJyYXkiLCJ2IiwieiIsInV0Y09mZnNldCIsIk1hdGgiLCJhYnMiLCJmbG9vciIsImRhdGUiLCJ5ZWFyIiwibW9udGgiLCJjbG9uZSIsImFkZCIsImNlaWwiLCJwIiwidyIsIkQiLCJtcyIsIlEiLCJ0b0xvd2VyQ2FzZSIsInJlcGxhY2UiLCJnIiwiUyIsIl8iLCJPIiwiYXJncyIsImFyZ3VtZW50cyIsImIiLCJsb2NhbGUiLCIkTCIsInV0YyIsIiR1IiwieCIsIiR4IiwiJG9mZnNldCIsInBhcnNlIiwicHJvdG90eXBlIiwiJGQiLCJEYXRlIiwiTmFOIiwidGVzdCIsIm1hdGNoIiwic3Vic3RyaW5nIiwiVVRDIiwiaW5pdCIsIiR5IiwiZ2V0RnVsbFllYXIiLCIkTSIsImdldE1vbnRoIiwiJEQiLCJnZXREYXRlIiwiJFciLCJnZXREYXkiLCIkSCIsImdldEhvdXJzIiwiJG0iLCJnZXRNaW51dGVzIiwiJHMiLCJnZXRTZWNvbmRzIiwiJG1zIiwiZ2V0TWlsbGlzZWNvbmRzIiwiJHV0aWxzIiwiaXNWYWxpZCIsImlzU2FtZSIsInN0YXJ0T2YiLCJlbmRPZiIsImlzQWZ0ZXIiLCJpc0JlZm9yZSIsIiRnIiwic2V0IiwidW5peCIsInZhbHVlT2YiLCJnZXRUaW1lIiwidG9EYXRlIiwiYXBwbHkiLCJzbGljZSIsIiRsb2NhbGUiLCJ3ZWVrU3RhcnQiLCIkc2V0IiwibWluIiwiZGF5c0luTW9udGgiLCJnZXQiLCJOdW1iZXIiLCJyb3VuZCIsInN1YnRyYWN0IiwiZm9ybWF0IiwiaW52YWxpZERhdGUiLCJtZXJpZGllbSIsIm1vbnRoc1Nob3J0Iiwid2Vla2RheXNNaW4iLCJ3ZWVrZGF5c1Nob3J0IiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJkaWZmIiwidG9KU09OIiwidG9JU09TdHJpbmciLCJ0b1VUQ1N0cmluZyIsImZvckVhY2giLCJleHRlbmQiLCIkaSIsImlzRGF5anMiLCJlbiIsIkxzIiwic3R5bGVzSW5ET00iLCJnZXRJbmRleEJ5SWRlbnRpZmllciIsImlkZW50aWZpZXIiLCJyZXN1bHQiLCJtb2R1bGVzVG9Eb20iLCJvcHRpb25zIiwiaWRDb3VudE1hcCIsImlkZW50aWZpZXJzIiwiYmFzZSIsImNvdW50IiwiaW5kZXhCeUlkZW50aWZpZXIiLCJvYmoiLCJjc3MiLCJzb3VyY2VNYXAiLCJyZWZlcmVuY2VzIiwidXBkYXRlciIsImFkZEVsZW1lbnRTdHlsZSIsImJ5SW5kZXgiLCJzcGxpY2UiLCJhcGkiLCJkb21BUEkiLCJ1cGRhdGUiLCJuZXdPYmoiLCJyZW1vdmUiLCJsYXN0SWRlbnRpZmllcnMiLCJuZXdMaXN0IiwiaW5kZXgiLCJuZXdMYXN0SWRlbnRpZmllcnMiLCJfaSIsIl9pbmRleCIsIm1lbW8iLCJpbnNlcnQiLCJzdHlsZSIsInRhcmdldCIsInN0eWxlVGFyZ2V0IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwid2luZG93IiwiSFRNTElGcmFtZUVsZW1lbnQiLCJjb250ZW50RG9jdW1lbnQiLCJoZWFkIiwiZ2V0VGFyZ2V0IiwiRXJyb3IiLCJhcHBlbmRDaGlsZCIsImVsZW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwic2V0QXR0cmlidXRlcyIsImF0dHJpYnV0ZXMiLCJzdHlsZUVsZW1lbnQiLCJub25jZSIsInNldEF0dHJpYnV0ZSIsImluc2VydFN0eWxlRWxlbWVudCIsInN0eWxlVGFnVHJhbnNmb3JtIiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwicmVtb3ZlU3R5bGVFbGVtZW50Iiwic3R5bGVTaGVldCIsImNzc1RleHQiLCJmaXJzdENoaWxkIiwiY3JlYXRlVGV4dE5vZGUiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiY2FsbCIsImdldHRlciIsIl9fZXNNb2R1bGUiLCJkZWZpbml0aW9uIiwia2V5IiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwicHJvcCIsImhhc093blByb3BlcnR5IiwibmMiLCJUUklQRlVTSU9OX0JBU0VfVVJMIiwiV0lER0VUX0lEIiwiV0lER0VUX0lOTkVSX1dSQVBQRVJfSUQiLCJXSURHRVRfSEVBREVSX0lEIiwiV0lER0VUX1dSQVBQRVJfSUQiLCJXSURHRVRfSUZSQU1FX0lEIiwiUkVTVU1FX1BBTkVMX0lEIiwiTE9BREVSX0lEIiwiQk9PS0lOR19NT0RFIiwiY3JlYXRlSlNPTlN0b3JhZ2UiLCJnZXRTdG9yYWdlIiwic3RvcmFnZSIsImdldEl0ZW0iLCJfYSIsInN0cjIiLCJyZXZpdmVyIiwic3RyIiwiUHJvbWlzZSIsInRoZW4iLCJzZXRJdGVtIiwibmV3VmFsdWUiLCJyZXBsYWNlciIsInJlbW92ZUl0ZW0iLCJ0b1RoZW5hYmxlIiwiZm4iLCJpbnB1dCIsIm9uRnVsZmlsbGVkIiwiX29uUmVqZWN0ZWQiLCJfb25GdWxmaWxsZWQiLCJjYXRjaCIsIm9uUmVqZWN0ZWQiLCJwZXJzaXN0IiwiY29uZmlnIiwiYmFzZU9wdGlvbnMiLCJsb2NhbFN0b3JhZ2UiLCJwYXJ0aWFsaXplIiwic3RhdGUiLCJ2ZXJzaW9uIiwibWVyZ2UiLCJwZXJzaXN0ZWRTdGF0ZSIsImN1cnJlbnRTdGF0ZSIsImhhc0h5ZHJhdGVkIiwiaHlkcmF0aW9uTGlzdGVuZXJzIiwiU2V0IiwiZmluaXNoSHlkcmF0aW9uTGlzdGVuZXJzIiwiY29uc29sZSIsIndhcm4iLCJzYXZlZFNldFN0YXRlIiwic2V0U3RhdGUiLCJjb25maWdSZXN1bHQiLCJzdGF0ZUZyb21TdG9yYWdlIiwiZ2V0SW5pdGlhbFN0YXRlIiwiaHlkcmF0ZSIsIl9iIiwiY2IiLCJfYTIiLCJwb3N0UmVoeWRyYXRpb25DYWxsYmFjayIsIm9uUmVoeWRyYXRlU3RvcmFnZSIsImJpbmQiLCJkZXNlcmlhbGl6ZWRTdG9yYWdlVmFsdWUiLCJtaWdyYXRlIiwiZXJyb3IiLCJtaWdyYXRpb25SZXN1bHQiLCJtaWdyYXRlZCIsIm1pZ3JhdGVkU3RhdGUiLCJzZXRPcHRpb25zIiwibmV3T3B0aW9ucyIsImNsZWFyU3RvcmFnZSIsImdldE9wdGlvbnMiLCJyZWh5ZHJhdGUiLCJvbkh5ZHJhdGUiLCJkZWxldGUiLCJvbkZpbmlzaEh5ZHJhdGlvbiIsInNraXBIeWRyYXRpb24iLCJjcmVhdGVTdG9yZUltcGwiLCJjcmVhdGVTdGF0ZSIsImxpc3RlbmVycyIsInBhcnRpYWwiLCJuZXh0U3RhdGUiLCJpcyIsInByZXZpb3VzU3RhdGUiLCJhc3NpZ24iLCJsaXN0ZW5lciIsImdldFN0YXRlIiwiaW5pdGlhbFN0YXRlIiwic3Vic2NyaWJlIiwiY3JlYXRlU3RvcmUiLCJpbml0aWFsV2lkZ2V0U3RhdGUiLCJpc09wZW4iLCJpc1Jlc3VtZVBhbmVsVmlzaWJsZSIsImlzUmVhZHkiLCJpc0Jvb2tpbmdDb21wbGV0ZWQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJwcmltYXJ5R3Vlc3ROYW1lIiwiY2hlY2tJbkRhdGUiLCJjaGVja091dERhdGUiLCJjYXJ0Iiwid2lkZ2V0U3RvcmUiLCJzaG93V2lkZ2V0IiwiaGlkZVdpZGdldCIsInNob3dSZXN1bWVQYW5lbCIsImhpZGVSZXN1bWVQYW5lbCIsInNldElzUmVhZHkiLCJzZXRJc0Jvb2tpbmdDb21wbGV0ZWQiLCJzZXRCYWNrZ3JvdW5kQ29sb3IiLCJzZXRQcmltYXJ5R3Vlc3ROYW1lIiwic2V0Q2FydCIsInNldERhdGVzIiwicmVzZXQiLCJzZXNzaW9uU3RvcmFnZSIsImZyb21FbnRyaWVzIiwiZW50cmllcyIsImZpbHRlciIsImluY2x1ZGVzIiwiZ2V0RGVmYXVsdFBhcmFtcyIsImpzU2RrU3JjIiwiZ2V0RWxlbWVudEJ5SWQiLCJnZXRBdHRyaWJ1dGUiLCJ1cmxQYXJhbXMiLCJnZXRQYXJhbXNGcm9tVXJsIiwiVVJMU2VhcmNoUGFyYW1zIiwiaW5kZXhPZiIsImNsaWVudCIsInByb3BlcnR5SWQiLCJ1cmxTZWFyY2hQYXJhbXMiLCJhdmFpbGFibGVTZWFyY2hQYXJhbXNNYXAiLCJ0cmlwZnVzaW9uIiwicHJvcGVydHlpZCIsIm1vZGUiLCJvZmZlcmlkIiwiYm9va2luZ2lkIiwiY2hlY2tpbiIsImNoZWNrb3V0IiwiYWR1bHRzIiwiY2hpbGRyZW4iLCJmcm9tIiwicmVkdWNlIiwicHJldiIsInNlYXJjaFBhcmFtS2V5Iiwic2VhcmNoUGFyYW1WYWx1ZSIsImxvZ2dlciIsIm1lc3NhZ2UiLCJ0eXBlIiwidXJsIiwicGF5bG9hZCIsInBhZ2UiLCJsb2NhdGlvbiIsImhyZWYiLCJoZWFkZXJzIiwiZmV0Y2giLCJtZXRob2QiLCJib2R5IiwicmVzcG9uc2UiLCJqc29uIiwibG9nIiwiaGlkZVdpZGdldERvbSIsIiR3aWRnZXQiLCIkd2lkZ2V0V3JhcHBlciIsIm92ZXJmbG93IiwiYmFja2dyb3VuZCIsImRpc3BsYXkiLCJ6SW5kZXgiLCJpbmplY3RJZnJhbWUiLCJib29raW5nSWQiLCJyZXN0IiwiJGlubmVyV3JhcHBlciIsIiR3aWRnZXRJZnJhbWUiLCJhZGRpdGlvbmFsUGFyYW1zIiwidmFsdWUiLCJsb2NrUGFnZVNjcm9sbCIsImNoZWNrSW4iLCJjaGVja091dCIsIm9mZmVySWQiLCJnbG9iYWxTdG9yZSIsImlzSXRlcmFibGUiLCJTeW1ib2wiLCJpdGVyYXRvciIsImJvb2siLCJwcm9wcyIsImJvb2tpbmdTdGF0ZSIsIm9iakEiLCJvYmpCIiwiaXRlcmF0b3JBIiwiaXRlcmF0b3JCIiwibmV4dEEiLCJuZXh0IiwibmV4dEIiLCJpc0FycmF5IiwiaXRlcmFibGVBIiwiaXRlcmFibGVCIiwibWFwQSIsIk1hcCIsIm1hcEIiLCJzaXplIiwiY29tcGFyZU1hcExpa2UiLCJkb25lIiwia2V5c0EiLCJrZXlzIiwia2V5QSIsImhhc093biIsInNoYWxsb3ciLCJsb2NhbHMiLCJuZXdTdGF0ZSIsImNlbnRzIiwiJHJlc3VtZVBhbmVsIiwiaGVhZGVyVGV4dCIsInN1YmhlYWRlclRleHQiLCJmb290ZXJQYXJ0cyIsInRvdGFsIiwicm9vbXMiLCJyb29tQ291bnQiLCJndWVzdENvdW50IiwiYWNjIiwicm9vbSIsInBhc3NlbmdlcnMiLCJJbnRsIiwiTnVtYmVyRm9ybWF0IiwiY3VycmVuY3kiLCJmb290ZXJUZXh0IiwiaW5uZXJIVE1MIiwicmVuZGVyUmVzdW1lUGFuZWwiLCIkcmVzdW1lUGFuZWxXcmFwcGVyIiwiJHdpZGdldEhlYWRlciIsInNldFdpZGdldFRoZW1lIiwiaGlkZUxvYWRpbmdPdmVybGF5IiwiaGVpZ2h0Iiwic2V0VGltZW91dCIsImZvY3VzIiwic2hvd1dpZGdldERvbSIsIiRsb2FkaW5nRGl2IiwiZGlzcGxheUxvYWRpbmdPdmVybGF5Iiwic2V0SW50ZXJ2YWwiLCJyZWFkeVN0YXRlIiwiJHdpZGdldElubmVyV3JhcHBlciIsIiR3aWRnZXRIZWFkZXJUaXRsZSIsIiR3aWRnZXRDbG9zZUJ1dHRvbiIsImFkZEV2ZW50TGlzdGVuZXIiLCJldmVudCIsInByZXBhcmVEb20iLCJoYW5kbGVMaW5rQ2xpY2siLCJ0YWdOYW1lIiwibGlua0hyZWYiLCJwcmV2ZW50RGVmYXVsdCIsImFnZSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJsaW5rRWxlbWVudCIsImFkZExpbmtFdmVudExpc3RlbmVycyIsImNsZWFySW50ZXJ2YWwiLCJvbkxvYWRIYW5kbGVyIiwic2VhcmNoIiwiYWRkUGFnZUxvYWRMaXN0ZW5lciIsImNsb3NlV2lkZ2V0Iiwib25tZXNzYWdlIiwiY2xpZW50VGhlbWUiLCJtZXNzYWdlRGF0YSIsInByaW1hcnkiLCJpbml0VHJpcGZ1c2lvblNkayJdLCJzb3VyY2VSb290IjoiIn0=
package/package.json CHANGED
@@ -1,37 +1,36 @@
1
1
  {
2
- "name": "@vacayou/tripfusion-js-sdk",
3
- "version": "1.12.0",
4
- "description": "Tripfusion Booking Engine JS SDK",
5
- "browser": "./dist/main.js",
6
- "files": [
7
- "dist"
8
- ],
9
- "homepage": "https://www.tripfusion.com/",
10
- "scripts": {
11
- "watch": "webpack --mode development --watch",
12
- "start": "webpack serve --open",
13
- "build": "webpack --mode production"
14
- },
15
- "devDependencies": {
16
- "css-loader": "^7.1.2",
17
- "html-webpack-plugin": "^5.6.0",
18
- "mini-css-extract-plugin": "^2.9.1",
19
- "style-loader": "^4.0.0",
20
- "ts-loader": "^9.5.1",
21
- "typescript": "^5.6.2",
22
- "webpack": "^5.94.0",
23
- "webpack-cli": "^5.1.4",
24
- "webpack-dev-server": "^5.1.0"
25
- },
26
- "overrides": {
27
- "webpack-dev-server": {
28
- "express": {
29
- "cookie": "^0.7.0"
30
- }
2
+ "name": "@vacayou/tripfusion-js-sdk",
3
+ "version": "1.13.0",
4
+ "description": "Tripfusion Booking Engine JS SDK",
5
+ "browser": "./dist/main.js",
6
+ "files": [
7
+ "dist"
8
+ ],
9
+ "homepage": "https://www.tripfusion.com/",
10
+ "scripts": {
11
+ "watch": "webpack --mode development --watch",
12
+ "start": "webpack serve --open",
13
+ "build": "webpack --mode production"
14
+ },
15
+ "devDependencies": {
16
+ "css-loader": "^7.1.2",
17
+ "html-webpack-plugin": "^5.6.0",
18
+ "style-loader": "^4.0.0",
19
+ "ts-loader": "^9.5.1",
20
+ "typescript": "^5.6.2",
21
+ "webpack": "^5.94.0",
22
+ "webpack-cli": "^5.1.4",
23
+ "webpack-dev-server": "^5.1.0"
24
+ },
25
+ "overrides": {
26
+ "webpack-dev-server": {
27
+ "express": {
28
+ "cookie": "^0.7.0"
29
+ }
30
+ }
31
+ },
32
+ "dependencies": {
33
+ "dayjs": "^1.11.13",
34
+ "zustand": "^5.0.0-rc.2"
31
35
  }
32
- },
33
- "dependencies": {
34
- "dayjs": "^1.11.13",
35
- "zustand": "^5.0.0-rc.2"
36
- }
37
36
  }