@vacayou/tripfusion-js-sdk 1.14.0 → 1.15.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.
- package/dist/main.js +2 -2
- package/package.json +1 -1
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},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=["checkIn","checkOut","adults","children","offerId"],f=document.createElement("iframe"),p="".concat(n).concat(i,"/").concat(o);s===l&&u&&(p+="/booking/".concat(u,"/append"));var m=Object.entries(c).filter((function(n){var t=n[0],e=n[1];return A.includes(t)&&!!e})).map((function(n){var t=n[0],e=n[1];return"".concat(t,"=").concat(e).toLowerCase()})).join("&");m&&(p+="?".concat(m)),f.setAttribute("src",p),f.id=a,d.appendChild(f)}}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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsIm1hcHBpbmdzIjoid0ZBR0lBLEUsTUFBMEIsR0FBNEIsS0FDMURBLEVBQXdCQyxLQUFLLENBQUNDLEVBQU9DLEdBQUksc0RBRXpDSCxFQUF3QkMsS0FBSyxDQUFDQyxFQUFPQyxHQUFJLHE4TUFrVHRDLEdBQUcsQ0FBQyxRQUFVLEVBQUUsUUFBVSxDQUFDLDhCQUE4QixNQUFRLEdBQUcsU0FBVyxtK0VBQW0rRSxlQUFpQixDQUFDLDYvTUFBdWdOLFdBQWEsTUFFM2xTLFMsdUJDcFRBRCxFQUFPRSxRQUFVLFNBQVVDLEdBQ3pCLElBQUlDLEVBQU8sR0E0RVgsT0F6RUFBLEVBQUtDLFNBQVcsV0FDZCxPQUFPQyxLQUFLQyxLQUFJLFNBQVVDLEdBQ3hCLElBQUlDLEVBQVUsR0FDVkMsT0FBK0IsSUFBWkYsRUFBSyxHQW9CNUIsT0FuQklBLEVBQUssS0FDUEMsR0FBVyxjQUFjRSxPQUFPSCxFQUFLLEdBQUksUUFFdkNBLEVBQUssS0FDUEMsR0FBVyxVQUFVRSxPQUFPSCxFQUFLLEdBQUksT0FFbkNFLElBQ0ZELEdBQVcsU0FBU0UsT0FBT0gsRUFBSyxHQUFHSSxPQUFTLEVBQUksSUFBSUQsT0FBT0gsRUFBSyxJQUFNLEdBQUksT0FFNUVDLEdBQVdOLEVBQXVCSyxHQUM5QkUsSUFDRkQsR0FBVyxLQUVURCxFQUFLLEtBQ1BDLEdBQVcsS0FFVEQsRUFBSyxLQUNQQyxHQUFXLEtBRU5BLENBQ1QsSUFBR0ksS0FBSyxHQUNWLEVBR0FULEVBQUtVLEVBQUksU0FBV0MsRUFBU0MsRUFBT0MsRUFBUUMsRUFBVUMsR0FDN0IsaUJBQVpKLElBQ1RBLEVBQVUsQ0FBQyxDQUFDLEtBQU1BLE9BQVNLLEtBRTdCLElBQUlDLEVBQXlCLENBQUMsRUFDOUIsR0FBSUosRUFDRixJQUFLLElBQUlLLEVBQUksRUFBR0EsRUFBSWhCLEtBQUtNLE9BQVFVLElBQUssQ0FDcEMsSUFBSXJCLEVBQUtLLEtBQUtnQixHQUFHLEdBQ1AsTUFBTnJCLElBQ0ZvQixFQUF1QnBCLElBQU0sRUFFakMsQ0FFRixJQUFLLElBQUlzQixFQUFLLEVBQUdBLEVBQUtSLEVBQVFILE9BQVFXLElBQU0sQ0FDMUMsSUFBSWYsRUFBTyxHQUFHRyxPQUFPSSxFQUFRUSxJQUN6Qk4sR0FBVUksRUFBdUJiLEVBQUssV0FHckIsSUFBVlcsU0FDYyxJQUFaWCxFQUFLLEtBR2RBLEVBQUssR0FBSyxTQUFTRyxPQUFPSCxFQUFLLEdBQUdJLE9BQVMsRUFBSSxJQUFJRCxPQUFPSCxFQUFLLElBQU0sR0FBSSxNQUFNRyxPQUFPSCxFQUFLLEdBQUksTUFGL0ZBLEVBQUssR0FBS1csR0FNVkgsSUFDR1IsRUFBSyxJQUdSQSxFQUFLLEdBQUssVUFBVUcsT0FBT0gsRUFBSyxHQUFJLE1BQU1HLE9BQU9ILEVBQUssR0FBSSxLQUMxREEsRUFBSyxHQUFLUSxHQUhWUixFQUFLLEdBQUtRLEdBTVZFLElBQ0dWLEVBQUssSUFHUkEsRUFBSyxHQUFLLGNBQWNHLE9BQU9ILEVBQUssR0FBSSxPQUFPRyxPQUFPSCxFQUFLLEdBQUksS0FDL0RBLEVBQUssR0FBS1UsR0FIVlYsRUFBSyxHQUFLLEdBQUdHLE9BQU9PLElBTXhCZCxFQUFLTCxLQUFLUyxHQUNaLENBQ0YsRUFDT0osQ0FDVCxDLHVCQ2xGQUosRUFBT0UsUUFBVSxTQUFVTSxHQUN6QixJQUFJQyxFQUFVRCxFQUFLLEdBQ2ZnQixFQUFhaEIsRUFBSyxHQUN0QixJQUFLZ0IsRUFDSCxPQUFPZixFQUVULEdBQW9CLG1CQUFUZ0IsS0FBcUIsQ0FDOUIsSUFBSUMsRUFBU0QsS0FBS0UsU0FBU0MsbUJBQW1CQyxLQUFLQyxVQUFVTixNQUN6RE8sRUFBTywrREFBK0RwQixPQUFPZSxHQUM3RU0sRUFBZ0IsT0FBT3JCLE9BQU9vQixFQUFNLE9BQ3hDLE1BQU8sQ0FBQ3RCLEdBQVNFLE9BQU8sQ0FBQ3FCLElBQWdCbkIsS0FBSyxLQUNoRCxDQUNBLE1BQU8sQ0FBQ0osR0FBU0ksS0FBSyxLQUN4QixDLGtCQ2ZvRWIsRUFBT0UsUUFBa0ksV0FBWSxhQUFhLElBQVUrQixFQUFFLElBQUlDLEVBQUUsS0FBS0MsRUFBRSxjQUFjckIsRUFBRSxTQUFTc0IsRUFBRSxTQUFTQyxFQUFFLE9BQU9DLEVBQUUsTUFBTUMsRUFBRSxPQUFPQyxFQUFFLFFBQVFDLEVBQUUsVUFBVUMsRUFBRSxPQUFPQyxFQUFFLE9BQU9DLEVBQUUsZUFBZUMsRUFBRSw2RkFBNkZDLEVBQUUsc0ZBQXNGQyxFQUFFLENBQUNDLEtBQUssS0FBS0MsU0FBUywyREFBMkRDLE1BQU0sS0FBS0MsT0FBTyx3RkFBd0ZELE1BQU0sS0FBS0UsUUFBUSxTQUFTQyxHQUFHLElBQUlwQixFQUFFLENBQUMsS0FBSyxLQUFLLEtBQUssTUFBTUMsRUFBRW1CLEVBQUUsSUFBSSxNQUFNLElBQUlBLEdBQUdwQixHQUFHQyxFQUFFLElBQUksS0FBS0QsRUFBRUMsSUFBSUQsRUFBRSxJQUFJLEdBQUcsR0FBR3FCLEVBQUUsU0FBU0QsRUFBRXBCLEVBQUVDLEdBQUcsSUFBSUMsRUFBRW9CLE9BQU9GLEdBQUcsT0FBT2xCLEdBQUdBLEVBQUV2QixRQUFRcUIsRUFBRW9CLEVBQUUsR0FBR0csTUFBTXZCLEVBQUUsRUFBRUUsRUFBRXZCLFFBQVFDLEtBQUtxQixHQUFHbUIsQ0FBQyxFQUFFSSxFQUFFLENBQUNyQixFQUFFa0IsRUFBRUksRUFBRSxTQUFTTCxHQUFHLElBQUlwQixHQUFHb0IsRUFBRU0sWUFBWXpCLEVBQUUwQixLQUFLQyxJQUFJNUIsR0FBR0UsRUFBRXlCLEtBQUtFLE1BQU01QixFQUFFLElBQUlwQixFQUFFb0IsRUFBRSxHQUFHLE9BQU9ELEdBQUcsRUFBRSxJQUFJLEtBQUtxQixFQUFFbkIsRUFBRSxFQUFFLEtBQUssSUFBSW1CLEVBQUV4QyxFQUFFLEVBQUUsSUFBSSxFQUFFd0MsRUFBRSxTQUFTRCxFQUFFcEIsRUFBRUMsR0FBRyxHQUFHRCxFQUFFOEIsT0FBTzdCLEVBQUU2QixPQUFPLE9BQU9WLEVBQUVuQixFQUFFRCxHQUFHLElBQUlFLEVBQUUsSUFBSUQsRUFBRThCLE9BQU8vQixFQUFFK0IsU0FBUzlCLEVBQUUrQixRQUFRaEMsRUFBRWdDLFNBQVNuRCxFQUFFbUIsRUFBRWlDLFFBQVFDLElBQUloQyxFQUFFSyxHQUFHSixFQUFFRixFQUFFcEIsRUFBRSxFQUFFdUIsRUFBRUosRUFBRWlDLFFBQVFDLElBQUloQyxHQUFHQyxHQUFHLEVBQUUsR0FBR0ksR0FBRyxVQUFVTCxHQUFHRCxFQUFFcEIsSUFBSXNCLEVBQUV0QixFQUFFdUIsRUFBRUEsRUFBRXZCLEtBQUssRUFBRSxFQUFFd0IsRUFBRSxTQUFTZSxHQUFHLE9BQU9BLEVBQUUsRUFBRU8sS0FBS1EsS0FBS2YsSUFBSSxFQUFFTyxLQUFLRSxNQUFNVCxFQUFFLEVBQUVnQixFQUFFLFNBQVNoQixHQUFHLE1BQU0sQ0FBQ04sRUFBRVAsRUFBRU0sRUFBRUosRUFBRTRCLEVBQUUvQixFQUFFSSxFQUFFTCxFQUFFaUMsRUFBRTVCLEVBQUVELEVBQUVMLEVBQUVpQixFQUFFbEIsRUFBRUEsRUFBRXRCLEVBQUUwRCxHQUFHckMsRUFBRXNDLEVBQUVoQyxHQUFHWSxJQUFJRSxPQUFPRixHQUFHLElBQUlxQixjQUFjQyxRQUFRLEtBQUssR0FBRyxFQUFFdEMsRUFBRSxTQUFTZ0IsR0FBRyxZQUFPLElBQVNBLENBQUMsR0FBR3VCLEVBQUUsS0FBS0wsRUFBRSxDQUFDLEVBQUVBLEVBQUVLLEdBQUc3QixFQUFFLElBQUlzQixFQUFFLGlCQUFpQlEsRUFBRSxTQUFTeEIsR0FBRyxPQUFPQSxhQUFheUIsTUFBTXpCLElBQUlBLEVBQUVnQixHQUFHLEVBQUVDLEVBQUUsU0FBU2pCLEVBQUVwQixFQUFFQyxFQUFFQyxHQUFHLElBQUlyQixFQUFFLElBQUltQixFQUFFLE9BQU8yQyxFQUFFLEdBQUcsaUJBQWlCM0MsRUFBRSxDQUFDLElBQUlHLEVBQUVILEVBQUV5QyxjQUFjSCxFQUFFbkMsS0FBS3RCLEVBQUVzQixHQUFHRixJQUFJcUMsRUFBRW5DLEdBQUdGLEVBQUVwQixFQUFFc0IsR0FBRyxJQUFJQyxFQUFFSixFQUFFaUIsTUFBTSxLQUFLLElBQUlwQyxHQUFHdUIsRUFBRXpCLE9BQU8sRUFBRSxPQUFPeUMsRUFBRWhCLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSUMsRUFBRUwsRUFBRWUsS0FBS3VCLEVBQUVqQyxHQUFHTCxFQUFFbkIsRUFBRXdCLENBQUMsQ0FBQyxPQUFPSCxHQUFHckIsSUFBSThELEVBQUU5RCxHQUFHQSxJQUFJcUIsR0FBR3lDLENBQUMsRUFBRUcsRUFBRSxTQUFTMUIsRUFBRXBCLEdBQUcsR0FBRzRDLEVBQUV4QixHQUFHLE9BQU9BLEVBQUVhLFFBQVEsSUFBSWhDLEVBQUUsaUJBQWlCRCxFQUFFQSxFQUFFLENBQUMsRUFBRSxPQUFPQyxFQUFFNkIsS0FBS1YsRUFBRW5CLEVBQUU4QyxLQUFLQyxVQUFVLElBQUlILEVBQUU1QyxFQUFFLEVBQUVnRCxFQUFFekIsRUFBRXlCLEVBQUV0QyxFQUFFMEIsRUFBRVksRUFBRXBFLEVBQUUrRCxFQUFFSyxFQUFFWixFQUFFLFNBQVNqQixFQUFFcEIsR0FBRyxPQUFPOEMsRUFBRTFCLEVBQUUsQ0FBQzhCLE9BQU9sRCxFQUFFbUQsR0FBR0MsSUFBSXBELEVBQUVxRCxHQUFHQyxFQUFFdEQsRUFBRXVELEdBQUdDLFFBQVF4RCxFQUFFd0QsU0FBUyxFQUFFLElBQUlYLEVBQUUsV0FBVyxTQUFTL0IsRUFBRU0sR0FBRy9DLEtBQUs4RSxHQUFHZCxFQUFFakIsRUFBRThCLE9BQU8sTUFBSyxHQUFJN0UsS0FBS29GLE1BQU1yQyxHQUFHL0MsS0FBS2tGLEdBQUdsRixLQUFLa0YsSUFBSW5DLEVBQUVrQyxHQUFHLENBQUMsRUFBRWpGLEtBQUsrRCxJQUFHLENBQUUsQ0FBQyxJQUFJZixFQUFFUCxFQUFFNEMsVUFBVSxPQUFPckMsRUFBRW9DLE1BQU0sU0FBU3JDLEdBQUcvQyxLQUFLc0YsR0FBRyxTQUFTdkMsR0FBRyxJQUFJcEIsRUFBRW9CLEVBQUVVLEtBQUs3QixFQUFFbUIsRUFBRWdDLElBQUksR0FBRyxPQUFPcEQsRUFBRSxPQUFPLElBQUk0RCxLQUFLQyxLQUFLLEdBQUdaLEVBQUU3QyxFQUFFSixHQUFHLE9BQU8sSUFBSTRELEtBQUssR0FBRzVELGFBQWE0RCxLQUFLLE9BQU8sSUFBSUEsS0FBSzVELEdBQUcsR0FBRyxpQkFBaUJBLElBQUksTUFBTThELEtBQUs5RCxHQUFHLENBQUMsSUFBSUUsRUFBRUYsRUFBRStELE1BQU1uRCxHQUFHLEdBQUdWLEVBQUUsQ0FBQyxJQUFJckIsRUFBRXFCLEVBQUUsR0FBRyxHQUFHLEVBQUVDLEdBQUdELEVBQUUsSUFBSSxLQUFLOEQsVUFBVSxFQUFFLEdBQUcsT0FBTy9ELEVBQUUsSUFBSTJELEtBQUtBLEtBQUtLLElBQUkvRCxFQUFFLEdBQUdyQixFQUFFcUIsRUFBRSxJQUFJLEVBQUVBLEVBQUUsSUFBSSxFQUFFQSxFQUFFLElBQUksRUFBRUEsRUFBRSxJQUFJLEVBQUVDLElBQUksSUFBSXlELEtBQUsxRCxFQUFFLEdBQUdyQixFQUFFcUIsRUFBRSxJQUFJLEVBQUVBLEVBQUUsSUFBSSxFQUFFQSxFQUFFLElBQUksRUFBRUEsRUFBRSxJQUFJLEVBQUVDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sSUFBSXlELEtBQUs1RCxFQUFFLENBQTNYLENBQTZYb0IsR0FBRy9DLEtBQUs2RixNQUFNLEVBQUU3QyxFQUFFNkMsS0FBSyxXQUFXLElBQUk5QyxFQUFFL0MsS0FBS3NGLEdBQUd0RixLQUFLOEYsR0FBRy9DLEVBQUVnRCxjQUFjL0YsS0FBS2dHLEdBQUdqRCxFQUFFa0QsV0FBV2pHLEtBQUtrRyxHQUFHbkQsRUFBRW9ELFVBQVVuRyxLQUFLb0csR0FBR3JELEVBQUVzRCxTQUFTckcsS0FBS3NHLEdBQUd2RCxFQUFFd0QsV0FBV3ZHLEtBQUt3RyxHQUFHekQsRUFBRTBELGFBQWF6RyxLQUFLMEcsR0FBRzNELEVBQUU0RCxhQUFhM0csS0FBSzRHLElBQUk3RCxFQUFFOEQsaUJBQWlCLEVBQUU3RCxFQUFFOEQsT0FBTyxXQUFXLE9BQU9sQyxDQUFDLEVBQUU1QixFQUFFK0QsUUFBUSxXQUFXLFFBQVEvRyxLQUFLc0YsR0FBR3ZGLGFBQWF1QyxFQUFFLEVBQUVVLEVBQUVnRSxPQUFPLFNBQVNqRSxFQUFFcEIsR0FBRyxJQUFJQyxFQUFFNkMsRUFBRTFCLEdBQUcsT0FBTy9DLEtBQUtpSCxRQUFRdEYsSUFBSUMsR0FBR0EsR0FBRzVCLEtBQUtrSCxNQUFNdkYsRUFBRSxFQUFFcUIsRUFBRW1FLFFBQVEsU0FBU3BFLEVBQUVwQixHQUFHLE9BQU84QyxFQUFFMUIsR0FBRy9DLEtBQUtpSCxRQUFRdEYsRUFBRSxFQUFFcUIsRUFBRW9FLFNBQVMsU0FBU3JFLEVBQUVwQixHQUFHLE9BQU8zQixLQUFLa0gsTUFBTXZGLEdBQUc4QyxFQUFFMUIsRUFBRSxFQUFFQyxFQUFFcUUsR0FBRyxTQUFTdEUsRUFBRXBCLEVBQUVDLEdBQUcsT0FBT2dELEVBQUU3QyxFQUFFZ0IsR0FBRy9DLEtBQUsyQixHQUFHM0IsS0FBS3NILElBQUkxRixFQUFFbUIsRUFBRSxFQUFFQyxFQUFFdUUsS0FBSyxXQUFXLE9BQU9qRSxLQUFLRSxNQUFNeEQsS0FBS3dILFVBQVUsSUFBSSxFQUFFeEUsRUFBRXdFLFFBQVEsV0FBVyxPQUFPeEgsS0FBS3NGLEdBQUdtQyxTQUFTLEVBQUV6RSxFQUFFaUUsUUFBUSxTQUFTbEUsRUFBRXBCLEdBQUcsSUFBSUMsRUFBRTVCLEtBQUs2QixJQUFJK0MsRUFBRTdDLEVBQUVKLElBQUlBLEVBQUVRLEVBQUV5QyxFQUFFYixFQUFFaEIsR0FBR1QsRUFBRSxTQUFTUyxFQUFFcEIsR0FBRyxJQUFJbkIsRUFBRW9FLEVBQUVaLEVBQUVwQyxFQUFFb0QsR0FBR08sS0FBS0ssSUFBSWhFLEVBQUVrRSxHQUFHbkUsRUFBRW9CLEdBQUcsSUFBSXdDLEtBQUszRCxFQUFFa0UsR0FBR25FLEVBQUVvQixHQUFHbkIsR0FBRyxPQUFPQyxFQUFFckIsRUFBRUEsRUFBRTBHLE1BQU1sRixFQUFFLEVBQUVPLEVBQUUsU0FBU1EsRUFBRXBCLEdBQUcsT0FBT2lELEVBQUVaLEVBQUVwQyxFQUFFOEYsU0FBUzNFLEdBQUc0RSxNQUFNL0YsRUFBRThGLE9BQU8sTUFBTTdGLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsTUFBTStGLE1BQU1qRyxJQUFJQyxFQUFFLEVBQUVZLEVBQUV4QyxLQUFLb0csR0FBRzNELEVBQUV6QyxLQUFLZ0csR0FBR2hELEVBQUVoRCxLQUFLa0csR0FBRy9DLEVBQUUsT0FBT25ELEtBQUtnRixHQUFHLE1BQU0sSUFBSSxPQUFPN0MsR0FBRyxLQUFLQyxFQUFFLE9BQU9QLEVBQUVTLEVBQUUsRUFBRSxHQUFHQSxFQUFFLEdBQUcsSUFBSSxLQUFLSixFQUFFLE9BQU9MLEVBQUVTLEVBQUUsRUFBRUcsR0FBR0gsRUFBRSxFQUFFRyxFQUFFLEdBQUcsS0FBS1IsRUFBRSxJQUFJcUMsRUFBRXRFLEtBQUs2SCxVQUFVQyxXQUFXLEVBQUU3RCxHQUFHekIsRUFBRThCLEVBQUU5QixFQUFFLEVBQUVBLEdBQUc4QixFQUFFLE9BQU9oQyxFQUFFVCxFQUFFbUIsRUFBRWlCLEVBQUVqQixHQUFHLEVBQUVpQixHQUFHeEIsR0FBRyxLQUFLVCxFQUFFLEtBQUtLLEVBQUUsT0FBT0UsRUFBRVksRUFBRSxRQUFRLEdBQUcsS0FBS3BCLEVBQUUsT0FBT1EsRUFBRVksRUFBRSxVQUFVLEdBQUcsS0FBS3JCLEVBQUUsT0FBT1MsRUFBRVksRUFBRSxVQUFVLEdBQUcsS0FBSzNDLEVBQUUsT0FBTytCLEVBQUVZLEVBQUUsZUFBZSxHQUFHLFFBQVEsT0FBT25ELEtBQUs0RCxRQUFRLEVBQUVaLEVBQUVrRSxNQUFNLFNBQVNuRSxHQUFHLE9BQU8vQyxLQUFLaUgsUUFBUWxFLEdBQUUsRUFBRyxFQUFFQyxFQUFFK0UsS0FBSyxTQUFTaEYsRUFBRXBCLEdBQUcsSUFBSUMsRUFBRUssRUFBRTJDLEVBQUViLEVBQUVoQixHQUFHWixFQUFFLE9BQU9uQyxLQUFLZ0YsR0FBRyxNQUFNLElBQUkxQyxHQUFHVixFQUFFLENBQUMsRUFBRUEsRUFBRUksR0FBR0csRUFBRSxPQUFPUCxFQUFFUyxHQUFHRixFQUFFLE9BQU9QLEVBQUVNLEdBQUdDLEVBQUUsUUFBUVAsRUFBRVEsR0FBR0QsRUFBRSxXQUFXUCxFQUFFRyxHQUFHSSxFQUFFLFFBQVFQLEVBQUVFLEdBQUdLLEVBQUUsVUFBVVAsRUFBRXBCLEdBQUcyQixFQUFFLFVBQVVQLEVBQUVDLEdBQUdNLEVBQUUsZUFBZVAsR0FBR0ssR0FBR00sRUFBRU4sSUFBSUQsRUFBRWhDLEtBQUtrRyxJQUFJdkUsRUFBRTNCLEtBQUtvRyxJQUFJekUsRUFBRSxHQUFHTSxJQUFJQyxHQUFHRCxJQUFJRyxFQUFFLENBQUMsSUFBSUksRUFBRXhDLEtBQUs0RCxRQUFRMEQsSUFBSWpGLEVBQUUsR0FBR0csRUFBRThDLEdBQUdoRCxHQUFHQyxHQUFHQyxFQUFFcUQsT0FBTzdGLEtBQUtzRixHQUFHOUMsRUFBRThFLElBQUlqRixFQUFFaUIsS0FBSzBFLElBQUloSSxLQUFLa0csR0FBRzFELEVBQUV5RixnQkFBZ0IzQyxFQUFFLE1BQU1oRCxHQUFHdEMsS0FBS3NGLEdBQUdoRCxHQUFHQyxHQUFHLE9BQU92QyxLQUFLNkYsT0FBTzdGLElBQUksRUFBRWdELEVBQUVzRSxJQUFJLFNBQVN2RSxFQUFFcEIsR0FBRyxPQUFPM0IsS0FBSzRELFFBQVFtRSxLQUFLaEYsRUFBRXBCLEVBQUUsRUFBRXFCLEVBQUVrRixJQUFJLFNBQVNuRixHQUFHLE9BQU8vQyxLQUFLNEUsRUFBRWIsRUFBRWhCLEtBQUssRUFBRUMsRUFBRWEsSUFBSSxTQUFTaEMsRUFBRU0sR0FBRyxJQUFJRSxFQUFFQyxFQUFFdEMsS0FBSzZCLEVBQUVzRyxPQUFPdEcsR0FBRyxJQUFJVSxFQUFFcUMsRUFBRWIsRUFBRTVCLEdBQUdLLEVBQUUsU0FBU08sR0FBRyxJQUFJcEIsRUFBRThDLEVBQUVuQyxHQUFHLE9BQU9zQyxFQUFFWixFQUFFckMsRUFBRThCLEtBQUs5QixFQUFFOEIsT0FBT0gsS0FBSzhFLE1BQU1yRixFQUFFbEIsSUFBSVMsRUFBRSxFQUFFLEdBQUdDLElBQUlMLEVBQUUsT0FBT2xDLEtBQUtzSCxJQUFJcEYsRUFBRWxDLEtBQUtnRyxHQUFHbkUsR0FBRyxHQUFHVSxJQUFJSCxFQUFFLE9BQU9wQyxLQUFLc0gsSUFBSWxGLEVBQUVwQyxLQUFLOEYsR0FBR2pFLEdBQUcsR0FBR1UsSUFBSVAsRUFBRSxPQUFPUSxFQUFFLEdBQUcsR0FBR0QsSUFBSU4sRUFBRSxPQUFPTyxFQUFFLEdBQUcsSUFBSUMsR0FBR0osRUFBRSxDQUFDLEVBQUVBLEVBQUVQLEdBQUdILEVBQUVVLEVBQUVOLEdBQUdILEVBQUVTLEVBQUU3QixHQUE1MEksSUFBaTFJNkIsR0FBR0UsSUFBSSxFQUFFUyxFQUFFaEQsS0FBS3NGLEdBQUdtQyxVQUFVNUYsRUFBRVksRUFBRSxPQUFPbUMsRUFBRVosRUFBRWhCLEVBQUVoRCxLQUFLLEVBQUVnRCxFQUFFcUYsU0FBUyxTQUFTdEYsRUFBRXBCLEdBQUcsT0FBTzNCLEtBQUs2RCxLQUFLLEVBQUVkLEVBQUVwQixFQUFFLEVBQUVxQixFQUFFc0YsT0FBTyxTQUFTdkYsR0FBRyxJQUFJcEIsRUFBRTNCLEtBQUs0QixFQUFFNUIsS0FBSzZILFVBQVUsSUFBSTdILEtBQUsrRyxVQUFVLE9BQU9uRixFQUFFMkcsYUFBYWpHLEVBQUUsSUFBSVQsRUFBRWtCLEdBQUcsdUJBQXVCdkMsRUFBRW9FLEVBQUV4QixFQUFFcEQsTUFBTThCLEVBQUU5QixLQUFLc0csR0FBR3ZFLEVBQUUvQixLQUFLd0csR0FBR3hFLEVBQUVoQyxLQUFLZ0csR0FBRy9ELEVBQUVMLEVBQUVlLFNBQVNULEVBQUVOLEVBQUVpQixPQUFPVixFQUFFUCxFQUFFNEcsU0FBU3BHLEVBQUUsU0FBU1csRUFBRW5CLEVBQUVwQixFQUFFc0IsR0FBRyxPQUFPaUIsSUFBSUEsRUFBRW5CLElBQUltQixFQUFFcEIsRUFBRUUsS0FBS3JCLEVBQUVvQixHQUFHZ0csTUFBTSxFQUFFOUYsRUFBRSxFQUFFTyxFQUFFLFNBQVNVLEdBQUcsT0FBTzZCLEVBQUU5QyxFQUFFQSxFQUFFLElBQUksR0FBR2lCLEVBQUUsSUFBSSxFQUFFUixFQUFFSixHQUFHLFNBQVNZLEVBQUVwQixFQUFFQyxHQUFHLElBQUlDLEVBQUVrQixFQUFFLEdBQUcsS0FBSyxLQUFLLE9BQU9uQixFQUFFQyxFQUFFdUMsY0FBY3ZDLENBQUMsRUFBRSxPQUFPQSxFQUFFd0MsUUFBUTdCLEdBQUUsU0FBVU8sRUFBRWxCLEdBQUcsT0FBT0EsR0FBRyxTQUFTa0IsR0FBRyxPQUFPQSxHQUFHLElBQUksS0FBSyxPQUFPRSxPQUFPdEIsRUFBRW1FLElBQUk4QixPQUFPLEdBQUcsSUFBSSxPQUFPLE9BQU9oRCxFQUFFOUMsRUFBRUgsRUFBRW1FLEdBQUcsRUFBRSxLQUFLLElBQUksSUFBSSxPQUFPOUQsRUFBRSxFQUFFLElBQUksS0FBSyxPQUFPNEMsRUFBRTlDLEVBQUVFLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxNQUFNLE9BQU9JLEVBQUVSLEVBQUU2RyxZQUFZekcsRUFBRUUsRUFBRSxHQUFHLElBQUksT0FBTyxPQUFPRSxFQUFFRixFQUFFRixHQUFHLElBQUksSUFBSSxPQUFPTCxFQUFFdUUsR0FBRyxJQUFJLEtBQUssT0FBT3RCLEVBQUU5QyxFQUFFSCxFQUFFdUUsR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLE9BQU9qRCxPQUFPdEIsRUFBRXlFLElBQUksSUFBSSxLQUFLLE9BQU9oRSxFQUFFUixFQUFFOEcsWUFBWS9HLEVBQUV5RSxHQUFHbkUsRUFBRSxHQUFHLElBQUksTUFBTSxPQUFPRyxFQUFFUixFQUFFK0csY0FBY2hILEVBQUV5RSxHQUFHbkUsRUFBRSxHQUFHLElBQUksT0FBTyxPQUFPQSxFQUFFTixFQUFFeUUsSUFBSSxJQUFJLElBQUksT0FBT25ELE9BQU9uQixHQUFHLElBQUksS0FBSyxPQUFPOEMsRUFBRTlDLEVBQUVBLEVBQUUsRUFBRSxLQUFLLElBQUksSUFBSSxPQUFPTyxFQUFFLEdBQUcsSUFBSSxLQUFLLE9BQU9BLEVBQUUsR0FBRyxJQUFJLElBQUksT0FBT0UsRUFBRVQsRUFBRUMsR0FBRSxHQUFJLElBQUksSUFBSSxPQUFPUSxFQUFFVCxFQUFFQyxHQUFFLEdBQUksSUFBSSxJQUFJLE9BQU9rQixPQUFPbEIsR0FBRyxJQUFJLEtBQUssT0FBTzZDLEVBQUU5QyxFQUFFQyxFQUFFLEVBQUUsS0FBSyxJQUFJLElBQUksT0FBT2tCLE9BQU90QixFQUFFK0UsSUFBSSxJQUFJLEtBQUssT0FBTzlCLEVBQUU5QyxFQUFFSCxFQUFFK0UsR0FBRyxFQUFFLEtBQUssSUFBSSxNQUFNLE9BQU85QixFQUFFOUMsRUFBRUgsRUFBRWlGLElBQUksRUFBRSxLQUFLLElBQUksSUFBSSxPQUFPcEcsRUFBRSxPQUFPLElBQUksQ0FBcHRCLENBQXN0QnVDLElBQUl2QyxFQUFFNkQsUUFBUSxJQUFJLEdBQUksR0FBRSxFQUFFckIsRUFBRUssVUFBVSxXQUFXLE9BQU8sSUFBSUMsS0FBSzhFLE1BQU1wSSxLQUFLc0YsR0FBR3NELG9CQUFvQixHQUFHLEVBQUU1RixFQUFFNkYsS0FBSyxTQUFTaEgsRUFBRVEsRUFBRUMsR0FBRyxJQUFJQyxFQUFFQyxFQUFFeEMsS0FBS3lDLEVBQUVtQyxFQUFFYixFQUFFMUIsR0FBR1csRUFBRXlCLEVBQUU1QyxHQUFHc0IsR0FBR0gsRUFBRUssWUFBWXJELEtBQUtxRCxhQUFhMUIsRUFBRTJDLEVBQUV0RSxLQUFLZ0QsRUFBRWlCLEVBQUUsV0FBVyxPQUFPVyxFQUFFNUIsRUFBRVIsRUFBRVEsRUFBRSxFQUFFLE9BQU9QLEdBQUcsS0FBS0wsRUFBRUcsRUFBRTBCLElBQUksR0FBRyxNQUFNLEtBQUsvQixFQUFFSyxFQUFFMEIsSUFBSSxNQUFNLEtBQUs5QixFQUFFSSxFQUFFMEIsSUFBSSxFQUFFLE1BQU0sS0FBS2hDLEVBQUVNLEdBQUcrQixFQUFFbkIsR0FBRyxPQUFPLE1BQU0sS0FBS25CLEVBQUVPLEdBQUcrQixFQUFFbkIsR0FBRyxNQUFNLE1BQU0sS0FBS3BCLEVBQUVRLEVBQUUrQixFQUFFMUMsRUFBRSxNQUFNLEtBQUtFLEVBQUVTLEVBQUUrQixFQUFFM0MsRUFBRSxNQUFNLEtBQUtuQixFQUFFK0IsRUFBRStCLEVBQTE4TCxJQUE4OEwsTUFBTSxRQUFRL0IsRUFBRStCLEVBQUUsT0FBT2hDLEVBQUVDLEVBQUVxQyxFQUFFNUMsRUFBRU8sRUFBRSxFQUFFUyxFQUFFaUYsWUFBWSxXQUFXLE9BQU9qSSxLQUFLa0gsTUFBTWhGLEdBQUdnRSxFQUFFLEVBQUVsRCxFQUFFNkUsUUFBUSxXQUFXLE9BQU81RCxFQUFFakUsS0FBSzhFLEdBQUcsRUFBRTlCLEVBQUU2QixPQUFPLFNBQVM5QixFQUFFcEIsR0FBRyxJQUFJb0IsRUFBRSxPQUFPL0MsS0FBSzhFLEdBQUcsSUFBSWxELEVBQUU1QixLQUFLNEQsUUFBUS9CLEVBQUVtQyxFQUFFakIsRUFBRXBCLEdBQUUsR0FBSSxPQUFPRSxJQUFJRCxFQUFFa0QsR0FBR2pELEdBQUdELENBQUMsRUFBRW9CLEVBQUVZLE1BQU0sV0FBVyxPQUFPZ0IsRUFBRVosRUFBRWhFLEtBQUtzRixHQUFHdEYsS0FBSyxFQUFFZ0QsRUFBRTBFLE9BQU8sV0FBVyxPQUFPLElBQUluQyxLQUFLdkYsS0FBS3dILFVBQVUsRUFBRXhFLEVBQUU4RixPQUFPLFdBQVcsT0FBTzlJLEtBQUsrRyxVQUFVL0csS0FBSytJLGNBQWMsSUFBSSxFQUFFL0YsRUFBRStGLFlBQVksV0FBVyxPQUFPL0ksS0FBS3NGLEdBQUd5RCxhQUFhLEVBQUUvRixFQUFFakQsU0FBUyxXQUFXLE9BQU9DLEtBQUtzRixHQUFHMEQsYUFBYSxFQUFFdkcsQ0FBQyxDQUEvc0osR0FBbXRKekIsRUFBRXdELEVBQUVhLFVBQVUsT0FBT1osRUFBRVksVUFBVXJFLEVBQUUsQ0FBQyxDQUFDLE1BQU1hLEdBQUcsQ0FBQyxLQUFLckIsR0FBRyxDQUFDLEtBQUtzQixHQUFHLENBQUMsS0FBS0MsR0FBRyxDQUFDLEtBQUtDLEdBQUcsQ0FBQyxLQUFLRSxHQUFHLENBQUMsS0FBS0UsR0FBRyxDQUFDLEtBQUtDLElBQUk0RyxTQUFRLFNBQVVsRyxHQUFHL0IsRUFBRStCLEVBQUUsSUFBSSxTQUFTcEIsR0FBRyxPQUFPM0IsS0FBS3FILEdBQUcxRixFQUFFb0IsRUFBRSxHQUFHQSxFQUFFLEdBQUcsQ0FBRSxJQUFHMEIsRUFBRXlFLE9BQU8sU0FBU25HLEVBQUVwQixHQUFHLE9BQU9vQixFQUFFb0csS0FBS3BHLEVBQUVwQixFQUFFNkMsRUFBRUMsR0FBRzFCLEVBQUVvRyxJQUFHLEdBQUkxRSxDQUFDLEVBQUVBLEVBQUVJLE9BQU9iLEVBQUVTLEVBQUUyRSxRQUFRN0UsRUFBRUUsRUFBRThDLEtBQUssU0FBU3hFLEdBQUcsT0FBTzBCLEVBQUUsSUFBSTFCLEVBQUUsRUFBRTBCLEVBQUU0RSxHQUFHcEYsRUFBRUssR0FBR0csRUFBRTZFLEdBQUdyRixFQUFFUSxFQUFFVixFQUFFLENBQUMsRUFBRVUsQ0FBRSxDQUFsNk45QyxFLHNCQ0VuRixJQUFJNEgsRUFBYyxHQUNsQixTQUFTQyxFQUFxQkMsR0FFNUIsSUFEQSxJQUFJQyxHQUFVLEVBQ0xsSixFQUFJLEVBQUdBLEVBQUkrSSxFQUFZakosT0FBUUUsSUFDdEMsR0FBSStJLEVBQVkvSSxHQUFHaUosYUFBZUEsRUFBWSxDQUM1Q0MsRUFBU2xKLEVBQ1QsS0FDRixDQUVGLE9BQU9rSixDQUNULENBQ0EsU0FBU0MsRUFBYTdKLEVBQU04SixHQUcxQixJQUZBLElBQUlDLEVBQWEsQ0FBQyxFQUNkQyxFQUFjLEdBQ1R0SixFQUFJLEVBQUdBLEVBQUlWLEVBQUtRLE9BQVFFLElBQUssQ0FDcEMsSUFBSU4sRUFBT0osRUFBS1UsR0FDWmIsRUFBS2lLLEVBQVFHLEtBQU83SixFQUFLLEdBQUswSixFQUFRRyxLQUFPN0osRUFBSyxHQUNsRDhKLEVBQVFILEVBQVdsSyxJQUFPLEVBQzFCOEosRUFBYSxHQUFHcEosT0FBT1YsRUFBSSxLQUFLVSxPQUFPMkosR0FDM0NILEVBQVdsSyxHQUFNcUssRUFBUSxFQUN6QixJQUFJQyxFQUFvQlQsRUFBcUJDLEdBQ3pDUyxFQUFNLENBQ1JDLElBQUtqSyxFQUFLLEdBQ1ZRLE1BQU9SLEVBQUssR0FDWmtLLFVBQVdsSyxFQUFLLEdBQ2hCVSxTQUFVVixFQUFLLEdBQ2ZXLE1BQU9YLEVBQUssSUFFZCxJQUEyQixJQUF2QitKLEVBQ0ZWLEVBQVlVLEdBQW1CSSxhQUMvQmQsRUFBWVUsR0FBbUJLLFFBQVFKLE9BQ2xDLENBQ0wsSUFBSUksRUFBVUMsRUFBZ0JMLEVBQUtOLEdBQ25DQSxFQUFRWSxRQUFVaEssRUFDbEIrSSxFQUFZa0IsT0FBT2pLLEVBQUcsRUFBRyxDQUN2QmlKLFdBQVlBLEVBQ1phLFFBQVNBLEVBQ1RELFdBQVksR0FFaEIsQ0FDQVAsRUFBWXJLLEtBQUtnSyxFQUNuQixDQUNBLE9BQU9LLENBQ1QsQ0FDQSxTQUFTUyxFQUFnQkwsRUFBS04sR0FDNUIsSUFBSWMsRUFBTWQsRUFBUWUsT0FBT2YsR0FZekIsT0FYQWMsRUFBSUUsT0FBT1YsR0FDRyxTQUFpQlcsR0FDN0IsR0FBSUEsRUFBUSxDQUNWLEdBQUlBLEVBQU9WLE1BQVFELEVBQUlDLEtBQU9VLEVBQU9uSyxRQUFVd0osRUFBSXhKLE9BQVNtSyxFQUFPVCxZQUFjRixFQUFJRSxXQUFhUyxFQUFPakssV0FBYXNKLEVBQUl0SixVQUFZaUssRUFBT2hLLFFBQVVxSixFQUFJckosTUFDekosT0FFRjZKLEVBQUlFLE9BQU9WLEVBQU1XLEVBQ25CLE1BQ0VILEVBQUlJLFFBRVIsQ0FFRixDQUNBcEwsRUFBT0UsUUFBVSxTQUFVRSxFQUFNOEosR0FHL0IsSUFBSW1CLEVBQWtCcEIsRUFEdEI3SixFQUFPQSxHQUFRLEdBRGY4SixFQUFVQSxHQUFXLENBQUMsR0FHdEIsT0FBTyxTQUFnQm9CLEdBQ3JCQSxFQUFVQSxHQUFXLEdBQ3JCLElBQUssSUFBSXhLLEVBQUksRUFBR0EsRUFBSXVLLEVBQWdCekssT0FBUUUsSUFBSyxDQUMvQyxJQUNJeUssRUFBUXpCLEVBREt1QixFQUFnQnZLLElBRWpDK0ksRUFBWTBCLEdBQU9aLFlBQ3JCLENBRUEsSUFEQSxJQUFJYSxFQUFxQnZCLEVBQWFxQixFQUFTcEIsR0FDdEN1QixFQUFLLEVBQUdBLEVBQUtKLEVBQWdCekssT0FBUTZLLElBQU0sQ0FDbEQsSUFDSUMsRUFBUzVCLEVBREt1QixFQUFnQkksSUFFSyxJQUFuQzVCLEVBQVk2QixHQUFRZixhQUN0QmQsRUFBWTZCLEdBQVFkLFVBQ3BCZixFQUFZa0IsT0FBT1csRUFBUSxHQUUvQixDQUNBTCxFQUFrQkcsQ0FDcEIsQ0FDRixDLHVCQ2pGQSxJQUFJRyxFQUFPLENBQUMsRUErQlozTCxFQUFPRSxRQVBQLFNBQTBCMEwsRUFBUUMsR0FDaEMsSUFBSUMsRUF0Qk4sU0FBbUJBLEdBQ2pCLFFBQTRCLElBQWpCSCxFQUFLRyxHQUF5QixDQUN2QyxJQUFJQyxFQUFjQyxTQUFTQyxjQUFjSCxHQUd6QyxHQUFJSSxPQUFPQyxtQkFBcUJKLGFBQXVCRyxPQUFPQyxrQkFDNUQsSUFHRUosRUFBY0EsRUFBWUssZ0JBQWdCQyxJQUM1QyxDQUFFLE1BQU9wSyxHQUVQOEosRUFBYyxJQUNoQixDQUVGSixFQUFLRyxHQUFVQyxDQUNqQixDQUNBLE9BQU9KLEVBQUtHLEVBQ2QsQ0FJZVEsQ0FBVVYsR0FDdkIsSUFBS0UsRUFDSCxNQUFNLElBQUlTLE1BQU0sMkdBRWxCVCxFQUFPVSxZQUFZWCxFQUNyQixDLHVCQ3ZCQTdMLEVBQU9FLFFBTlAsU0FBNEJnSyxHQUMxQixJQUFJdUMsRUFBVVQsU0FBU1UsY0FBYyxTQUdyQyxPQUZBeEMsRUFBUXlDLGNBQWNGLEVBQVN2QyxFQUFRMEMsWUFDdkMxQyxFQUFRMEIsT0FBT2EsRUFBU3ZDLEVBQVFBLFNBQ3pCdUMsQ0FDVCxDLDRCQ0NBek0sRUFBT0UsUUFOUCxTQUF3QzJNLEdBQ3RDLElBQUlDLEVBQW1ELEtBQ25EQSxHQUNGRCxFQUFhRSxhQUFhLFFBQVNELEVBRXZDLEMsdUJDb0RBOU0sRUFBT0UsUUFqQlAsU0FBZ0JnSyxHQUNkLEdBQXdCLG9CQUFiOEIsU0FDVCxNQUFPLENBQ0xkLE9BQVEsV0FBbUIsRUFDM0JFLE9BQVEsV0FBbUIsR0FHL0IsSUFBSXlCLEVBQWUzQyxFQUFROEMsbUJBQW1COUMsR0FDOUMsTUFBTyxDQUNMZ0IsT0FBUSxTQUFnQlYsSUFqRDVCLFNBQWVxQyxFQUFjM0MsRUFBU00sR0FDcEMsSUFBSUMsRUFBTSxHQUNORCxFQUFJdEosV0FDTnVKLEdBQU8sY0FBYzlKLE9BQU82SixFQUFJdEosU0FBVSxRQUV4Q3NKLEVBQUl4SixRQUNOeUosR0FBTyxVQUFVOUosT0FBTzZKLEVBQUl4SixNQUFPLE9BRXJDLElBQUlOLE9BQWlDLElBQWQ4SixFQUFJckosTUFDdkJULElBQ0YrSixHQUFPLFNBQVM5SixPQUFPNkosRUFBSXJKLE1BQU1QLE9BQVMsRUFBSSxJQUFJRCxPQUFPNkosRUFBSXJKLE9BQVMsR0FBSSxPQUU1RXNKLEdBQU9ELEVBQUlDLElBQ1AvSixJQUNGK0osR0FBTyxLQUVMRCxFQUFJeEosUUFDTnlKLEdBQU8sS0FFTEQsRUFBSXRKLFdBQ051SixHQUFPLEtBRVQsSUFBSUMsRUFBWUYsRUFBSUUsVUFDaEJBLEdBQTZCLG9CQUFUakosT0FDdEJnSixHQUFPLHVEQUF1RDlKLE9BQU9jLEtBQUtFLFNBQVNDLG1CQUFtQkMsS0FBS0MsVUFBVTRJLE1BQWUsUUFLdElSLEVBQVErQyxrQkFBa0J4QyxFQUFLb0MsRUFBYzNDLEVBQVFBLFFBQ3ZELENBb0JNakMsQ0FBTTRFLEVBQWMzQyxFQUFTTSxFQUMvQixFQUNBWSxPQUFRLFlBckJaLFNBQTRCeUIsR0FFMUIsR0FBZ0MsT0FBNUJBLEVBQWFLLFdBQ2YsT0FBTyxFQUVUTCxFQUFhSyxXQUFXQyxZQUFZTixFQUN0QyxDQWdCTU8sQ0FBbUJQLEVBQ3JCLEVBRUosQyx1QkM5Q0E3TSxFQUFPRSxRQVZQLFNBQTJCdUssRUFBS29DLEdBQzlCLEdBQUlBLEVBQWFRLFdBQ2ZSLEVBQWFRLFdBQVdDLFFBQVU3QyxNQUM3QixDQUNMLEtBQU9vQyxFQUFhVSxZQUNsQlYsRUFBYU0sWUFBWU4sRUFBYVUsWUFFeENWLEVBQWFMLFlBQVlSLFNBQVN3QixlQUFlL0MsR0FDbkQsQ0FDRixDLEdDWElnRCxFQUEyQixDQUFDLEVBR2hDLFNBQVNDLEVBQW9CQyxHQUU1QixJQUFJQyxFQUFlSCxFQUF5QkUsR0FDNUMsUUFBcUJ2TSxJQUFqQndNLEVBQ0gsT0FBT0EsRUFBYTFOLFFBR3JCLElBQUlGLEVBQVN5TixFQUF5QkUsR0FBWSxDQUNqRDFOLEdBQUkwTixFQUVKek4sUUFBUyxDQUFDLEdBT1gsT0FIQTJOLEVBQW9CRixHQUFVRyxLQUFLOU4sRUFBT0UsUUFBU0YsRUFBUUEsRUFBT0UsUUFBU3dOLEdBR3BFMU4sRUFBT0UsT0FDZixDQ3JCQXdOLEVBQW9CeEwsRUFBS2xDLElBQ3hCLElBQUkrTixFQUFTL04sR0FBVUEsRUFBT2dPLFdBQzdCLElBQU9oTyxFQUFpQixRQUN4QixJQUFNLEVBRVAsT0FEQTBOLEVBQW9CL0ssRUFBRW9MLEVBQVEsQ0FBRXpMLEVBQUd5TCxJQUM1QkEsQ0FBTSxFQ0xkTCxFQUFvQi9LLEVBQUksQ0FBQ3pDLEVBQVMrTixLQUNqQyxJQUFJLElBQUlDLEtBQU9ELEVBQ1hQLEVBQW9CbkwsRUFBRTBMLEVBQVlDLEtBQVNSLEVBQW9CbkwsRUFBRXJDLEVBQVNnTyxJQUM1RUMsT0FBT0MsZUFBZWxPLEVBQVNnTyxFQUFLLENBQUVHLFlBQVksRUFBTTdGLElBQUt5RixFQUFXQyxJQUUxRSxFQ05EUixFQUFvQm5MLEVBQUksQ0FBQ2lJLEVBQUs4RCxJQUFVSCxPQUFPeEksVUFBVTRJLGVBQWVULEtBQUt0RCxFQUFLOEQsR0NBbEZaLEVBQW9CYyxRQUFLcE4sRSxtQkNBbEIsSUFBTXFOLEVBR0gsZ0NBRUdDLEVBQVksb0JBQ1pDLEVBQTBCLGtDQUMxQkMsRUFBbUIsMkJBR25CQyxFQUFvQiw0QkFDcEJDLEVBQW1CLDJCQUNuQkMsRUFBa0IsMEJBQ2xCQyxFQUFZLG9CQUNaQyxFQUNELFNBRENBLEVBRUQsU0NrT1osU0FBU0MsRUFBa0JDLEVBQVlqRixHQUNyQyxJQUFJa0YsRUFDSixJQUNFQSxFQUFVRCxHQUNaLENBQUUsTUFBT2xOLEdBQ1AsTUFDRixDQXNCQSxNQXJCdUIsQ0FDckJvTixRQUFVck0sSUFDUixJQUFJc00sRUFDSixNQUFNNUosRUFBUzZKLEdBQ0EsT0FBVEEsRUFDSyxLQUVGMU4sS0FBSzZELE1BQU02SixFQUFpQixNQUFYckYsT0FBa0IsRUFBU0EsRUFBUXNGLFNBRXZEQyxFQUFzQyxPQUEvQkgsRUFBS0YsRUFBUUMsUUFBUXJNLElBQWlCc00sRUFBSyxLQUN4RCxPQUFJRyxhQUFlQyxRQUNWRCxFQUFJRSxLQUFLakssR0FFWEEsRUFBTStKLEVBQUksRUFFbkJHLFFBQVMsQ0FBQzVNLEVBQU02TSxJQUFhVCxFQUFRUSxRQUNuQzVNLEVBQ0FuQixLQUFLQyxVQUFVK04sRUFBcUIsTUFBWDNGLE9BQWtCLEVBQVNBLEVBQVE0RixXQUU5REMsV0FBYS9NLEdBQVNvTSxFQUFRVyxXQUFXL00sR0FHN0MsQ0FDQSxNQUFNZ04sRUFBY0MsR0FBUUMsSUFDMUIsSUFDRSxNQUFNbEcsRUFBU2lHLEVBQUdDLEdBQ2xCLE9BQUlsRyxhQUFrQjBGLFFBQ2IxRixFQUVGLENBQ0wyRixLQUFLUSxHQUNJSCxFQUFXRyxFQUFYSCxDQUF3QmhHLEdBRWpDLE1BQU1vRyxHQUNKLE9BQU85UCxJQUNULEVBRUosQ0FBRSxNQUFPMkIsR0FDUCxNQUFPLENBQ0wsSUFBQTBOLENBQUtVLEdBQ0gsT0FBTy9QLElBQ1QsRUFDQWdRLE1BQU1DLEdBQ0dQLEVBQVdPLEVBQVhQLENBQXVCL04sR0FHcEMsR0FzSUl1TyxFQXBJYyxDQUFDQyxFQUFRQyxJQUFnQixDQUFDOUksRUFBS1ksRUFBS3dDLEtBQ3RELElBQUlkLEVBQVUsQ0FDWmtGLFFBQVNGLEdBQWtCLElBQU15QixlQUNqQ0MsV0FBYUMsR0FBVUEsRUFDdkJDLFFBQVMsRUFDVEMsTUFBTyxDQUFDQyxFQUFnQkMsS0FBaUIsSUFDcENBLEtBQ0FELE9BRUZOLEdBRURRLEdBQWMsRUFDbEIsTUFBTUMsRUFBcUMsSUFBSUMsSUFDekNDLEVBQTJDLElBQUlELElBQ3JELElBQUloQyxFQUFVbEYsRUFBUWtGLFFBQ3RCLElBQUtBLEVBQ0gsT0FBT3FCLEdBQ0wsSUFBSXpMLEtBQ0ZzTSxRQUFRQyxLQUNOLHVEQUF1RHJILEVBQVFsSCxzREFFakU0RSxLQUFPNUMsRUFBSyxHQUVkd0QsRUFDQXdDLEdBR0osTUFBTTRFLEVBQVUsS0FDZCxNQUFNaUIsRUFBUTNHLEVBQVEwRyxXQUFXLElBQUtwSSxNQUN0QyxPQUFPNEcsRUFBUVEsUUFBUTFGLEVBQVFsSCxLQUFNLENBQ25DNk4sUUFDQUMsUUFBUzVHLEVBQVE0RyxTQUNqQixFQUVFVSxFQUFnQnhHLEVBQUl5RyxTQUMxQnpHLEVBQUl5RyxTQUFXLENBQUNaLEVBQU9sTSxLQUNyQjZNLEVBQWNYLEVBQU9sTSxHQUNoQmlMLEdBQVMsRUFFaEIsTUFBTThCLEVBQWVqQixHQUNuQixJQUFJekwsS0FDRjRDLEtBQU81QyxHQUNGNEssR0FBUyxHQUVoQnBILEVBQ0F3QyxHQUdGLElBQUkyRyxFQURKM0csRUFBSTRHLGdCQUFrQixJQUFNRixFQUU1QixNQUFNRyxFQUFVLEtBQ2QsSUFBSXZDLEVBQUl3QyxFQUNSLElBQUsxQyxFQUFTLE9BQ2Q4QixHQUFjLEVBQ2RDLEVBQW1CNUgsU0FBU3dJLElBQzFCLElBQUlDLEVBQ0osT0FBT0QsRUFBb0IsT0FBaEJDLEVBQU14SixLQUFpQndKLEVBQU1OLEVBQWEsSUFFdkQsTUFBTU8sR0FBZ0UsT0FBcENILEVBQUs1SCxFQUFRZ0kseUJBQThCLEVBQVNKLEVBQUdoRSxLQUFLNUQsRUFBeUIsT0FBZm9GLEVBQUs5RyxLQUFpQjhHLEVBQUtvQyxVQUFrQixFQUNySixPQUFPMUIsRUFBV1osRUFBUUMsUUFBUThDLEtBQUsvQyxHQUFoQ1ksQ0FBMEM5RixFQUFRbEgsTUFBTTJNLE1BQU15QyxJQUNuRSxHQUFJQSxFQUEwQixDQUM1QixHQUFnRCxpQkFBckNBLEVBQXlCdEIsU0FBd0JzQixFQUF5QnRCLFVBQVk1RyxFQUFRNEcsUUFjdkcsTUFBTyxFQUFDLEVBQU9zQixFQUF5QnZCLE9BYnhDLEdBQUkzRyxFQUFRbUksUUFDVixNQUFPLEVBQ0wsRUFDQW5JLEVBQVFtSSxRQUNORCxFQUF5QnZCLE1BQ3pCdUIsRUFBeUJ0QixVQUkvQlEsUUFBUWdCLE1BQ04sd0ZBS04sQ0FDQSxNQUFPLEVBQUMsT0FBTyxFQUFPLElBQ3JCM0MsTUFBTTRDLElBQ1AsSUFBSVAsRUFDSixNQUFPUSxFQUFVQyxHQUFpQkYsRUFNbEMsR0FMQVosRUFBbUJ6SCxFQUFRNkcsTUFDekIwQixFQUNpQixPQUFoQlQsRUFBTXhKLEtBQWlCd0osRUFBTU4sR0FFaEM5SixFQUFJK0osR0FBa0IsR0FDbEJhLEVBQ0YsT0FBTzVDLEdBQ1QsSUFDQ0QsTUFBSyxLQUNxQixNQUEzQnNDLEdBQTJDQSxFQUF3Qk4sT0FBa0IsR0FDckZBLEVBQW1CbkosSUFDbkIwSSxHQUFjLEVBQ2RHLEVBQXlCOUgsU0FBU3dJLEdBQU9BLEVBQUdKLElBQWtCLElBQzdEckIsT0FBT3JPLElBQ21CLE1BQTNCZ1EsR0FBMkNBLE9BQXdCLEVBQVFoUSxFQUFFLEdBQzdFLEVBa0NKLE9BaENBK0ksRUFBSXdGLFFBQVUsQ0FDWmtDLFdBQWFDLElBQ1h6SSxFQUFVLElBQ0xBLEtBQ0F5SSxHQUVEQSxFQUFXdkQsVUFDYkEsRUFBVXVELEVBQVd2RCxRQUN2QixFQUVGd0QsYUFBYyxLQUNELE1BQVh4RCxHQUEyQkEsRUFBUVcsV0FBVzdGLEVBQVFsSCxLQUFLLEVBRTdENlAsV0FBWSxJQUFNM0ksRUFDbEI0SSxVQUFXLElBQU1qQixJQUNqQlgsWUFBYSxJQUFNQSxFQUNuQjZCLFVBQVloQixJQUNWWixFQUFtQmhOLElBQUk0TixHQUNoQixLQUNMWixFQUFtQjZCLE9BQU9qQixFQUFHLEdBR2pDa0Isa0JBQW9CbEIsSUFDbEJWLEVBQXlCbE4sSUFBSTROLEdBQ3RCLEtBQ0xWLEVBQXlCMkIsT0FBT2pCLEVBQUcsSUFJcEM3SCxFQUFRZ0osZUFDWHJCLElBRUtGLEdBQW9CRCxDQUFZLEVDM2FuQ3lCLEVBQW1CQyxJQUN2QixJQUFJdkMsRUFDSixNQUFNd0MsRUFBNEIsSUFBSWpDLElBQ2hDSyxFQUFXLENBQUM2QixFQUFTM08sS0FDekIsTUFBTTRPLEVBQStCLG1CQUFaRCxFQUF5QkEsRUFBUXpDLEdBQVN5QyxFQUNuRSxJQUFLbkYsT0FBT3FGLEdBQUdELEVBQVcxQyxHQUFRLENBQ2hDLE1BQU00QyxFQUFnQjVDLEVBQ3RCQSxHQUFvQixNQUFYbE0sRUFBa0JBLEVBQStCLGlCQUFkNE8sR0FBd0MsT0FBZEEsR0FBc0JBLEVBQVlwRixPQUFPdUYsT0FBTyxDQUFDLEVBQUc3QyxFQUFPMEMsR0FDaklGLEVBQVU5SixTQUFTb0ssR0FBYUEsRUFBUzlDLEVBQU80QyxJQUNsRCxHQUVJRyxFQUFXLElBQU0vQyxFQU1qQjdGLEVBQU0sQ0FBRXlHLFdBQVVtQyxXQUFVaEMsZ0JBTFYsSUFBTWlDLEVBS3FCQyxVQUpoQ0gsSUFDakJOLEVBQVVsUCxJQUFJd1AsR0FDUCxJQUFNTixFQUFVTCxPQUFPVyxLQUcxQkUsRUFBZWhELEVBQVF1QyxFQUFZM0IsRUFBVW1DLEVBQVU1SSxHQUM3RCxPQUFPQSxDQUFHLEVBRU4rSSxFQUFlWCxHQUFnQkEsRUFBY0QsRUFBZ0JDLEdBQWVELEUsb05DUzVFYSxFQUFrQyxDQUNwQ0MsUUFBUSxFQUNSQyxzQkFBc0IsRUFDdEJDLFNBQVMsRUFDVEMsb0JBQW9CLEVBQ3BCQyxnQkFBaUIsbUJBQ2pCQyxpQkFBa0IsS0FDbEJDLFlBQWEsS0FDYkMsYUFBYyxLQUNkQyxLQUFNLENBQUMsR0FHRUMsRUFBY1gsSUFDdkJ2RCxHQUNJLFNBQUM1SSxHQUFRLGNBQ0ZvTSxHQUFrQixDQUNyQlcsV0FBWSxXQUFNLE9BQUEvTSxFQUFJLENBQUVxTSxRQUFRLEdBQWQsRUFDbEJXLFdBQVksV0FBTSxPQUFBaE4sRUFBSSxDQUFFcU0sUUFBUSxHQUFkLEVBQ2xCWSxnQkFBaUIsV0FBTSxPQUFBak4sRUFBSSxDQUFFc00sc0JBQXNCLEdBQTVCLEVBQ3ZCWSxnQkFBaUIsV0FBTSxPQUFBbE4sRUFBSSxDQUFFc00sc0JBQXNCLEdBQTVCLEVBQ3ZCYSxXQUFZLFNBQUNaLEdBQVksT0FBQXZNLEVBQUksQ0FBRXVNLFFBQU8sR0FBYixFQUN6QmEsc0JBQXVCLFNBQUNaLEdBQXVCLE9BQUF4TSxFQUFJLENBQUV3TSxtQkFBa0IsR0FBeEIsRUFDL0NhLG1CQUFvQixTQUFDWixHQUNqQixPQUNNek0sRUFETnlNLEVBQ1UsQ0FBRUEsZ0JBQWUsR0FDakIsQ0FBRUEsZ0JBQWlCTCxFQUFtQkssaUJBRmhELEVBR0phLG9CQUFxQixTQUFDWixHQUFxQixPQUFBMU0sRUFBSSxDQUFFME0saUJBQWdCLEdBQXRCLEVBQzNDYSxRQUFTLFNBQUNWLEdBQVMsT0FBQTdNLEVBQUksQ0FBRTZNLEtBQUksR0FBVixFQUNuQlcsU0FBVSxTQUFDYixFQUFhQyxHQUFpQixPQUFBNU0sRUFBSSxDQUFFMk0sWUFBVyxFQUFFQyxhQUFZLEdBQS9CLEVBQ3pDYSxNQUFPLFdBQU0sT0FBQXpOLEVBQUlvTSxFQUFKLEdBZlIsR0FpQlQsQ0FDSWhSLEtBQU0sY0FDTm9NLFFBQVNGLEdBQWtCLFdBQU0sT0FBQW9HLGNBQUEsSUFDakMxRSxXQUFZLFNBQUNDLEdBQ1QsT0FBQTFDLE9BQU9vSCxZQUFZcEgsT0FBT3FILFFBQVEzRSxHQUFPNEUsUUFBTyxTQUFDLEcsSUFBQ3ZILEVBQUcsS0FBTSxPQUFDLENBQUMsT0FBUSxXQUFXd0gsU0FBU3hILEVBQTlCLElBQTNELEVBQ0pnRSxtQkFBb0IsV0FDaEIsT0FBTyxTQUFDckIsSUFDQUEsYUFBSyxFQUFMQSxFQUFPdUQscUJBQ1B2RCxFQUFNd0UsT0FFZCxDQUNKLEssZ05DbEVDTSxFQUFtQixXLE1BRXRCQyxFQURTNUosU0FBUzZKLGVKSEMsa0JJSURDLGFBQWEsT0FDL0JDLEVBQVlDLEVBQWlCLElBQUlDLGdCQUFnQkwsRUFBUzNQLFVBQVUyUCxFQUFTTSxRQUFRLFFBSzNGLE1BQU8sQ0FBRUMsT0FIeUIsUUFBbkIsRUFBQUosRUFBa0IsY0FBQyxRQUFJLEtBR3JCSyxXQUZFTCxFQUFzQixZQUFLQSxFQUFzQixXQUFJLEtBRzVFLEVBRU8sU0FBU0MsRUFBaUJLLEdBQzdCLElBQU1DLEVBQW1ELENBQ3JEQyxXQUFZLGFBQ1pKLE9BQVEsU0FDUkssV0FBWSxhQUNaQyxLQUFNLE9BQ05DLFFBQVMsVUFDVEMsVUFBVyxZQUNYQyxRQUFTLFVBQ1RDLFNBQVUsV0FDVkMsT0FBUSxTQUNSQyxTQUFVLFlBRWQsT0FBT3ZULE1BQU13VCxLQUFLWCxFQUFnQmIsV0FBV3lCLFFBQ3pDLFNBQUNDLEVBQU0sRyxNQUFDQyxFQUFjLEtBQUVDLEVBQWdCLEtBQU0sT0FBQyxPQUN4Q0YsS0FBSSxNQUNOWixFQUF5QmEsRUFBZXpTLGdCQUFpQjBTLEVBQWdCLEdBRmhDLEdBSTlDLENBQUMsRUFFVCxDQUVPLFNBQWVDLEVBQU8sRyxxQ0FBQUMsRUFBaUJDLEcsc0JBQUEsSUFBQUEsSUFBQUEsRUFBQSxTLHFwQ0FTMUMsT0FSTUMsRUFBTSxVQUFHL0ksRUFBbUIsbUJBQzVCZ0osRUFBVSxDQUNaSCxRQUFPLEVBQ1BJLEtBQU14TCxPQUFPeUwsU0FBU0MsTUFFcEJDLEVBQVUsQ0FDWixlQUFnQixvQkFFYixDQUFQLEVBQU9DLE1BQU1OLEVBQUssQ0FDZE8sT0FBUSxPQUNSQyxLQUFNblcsS0FBS0MsVUFBVSxDQUNqQnlWLEtBQUksRUFDSkUsUUFBTyxJQUVYSSxRQUFPLElBRU5sSSxNQUFLLFNBQUNzSSxHQUFhLE9BQUFBLEVBQVNDLE1BQVQsSUFDbkI1SCxPQUFNLFNBQUNnQyxHQUNKaEIsUUFBUTZHLElBQUksNkNBQXNDN0YsR0FDdEQsSSxvU0M4RkQsU0FBUzhGLElBQ1osSUFDSSxJQUFNQyxFQUFVck0sU0FBUzZKLGVBQWVuSCxHQUNwQzRKLEVBQWlCdE0sU0FBUzZKLGVBQWVoSCxHQUV6Q3dKLEdBQVdDLElBQ1h0TSxTQUFTZ00sS0FBS25NLE1BQU0wTSxTQUFXLFVBQy9CRixFQUFRdEwsYUFBYSxRQUFTLGFBQzlCdUwsRUFBZXpNLE1BQU0yTSxXQUFhLG1CQUNsQ0gsRUFBUXhNLE1BQU00TSxRQUFVLE9BQ3hCSCxFQUFlek0sTUFBTTZNLE9BQVMsV0FBSSxNQUUxQyxDQUFFLE1BQU9wRyxHQUNMK0UsRUFBTyx3Q0FBaUMvRSxJQUN4Q2hCLFFBQVFnQixNQUFNLHFDQUFzQ0EsRUFDeEQsQ0FDSixDQUVPLFNBQVNxRyxFQUFhLEcsTUFBRXhDLEVBQU0sU0FBRUMsRUFBVSxhQUFFSyxFQUFJLE9BQUVtQyxFQUFTLFlBQUtDLEUseVVBQUksR0FBOUMsNENBQ3pCLElBQzZDLFFBQXpDLEVBQUE3TSxTQUFTNkosZUFBZS9HLFVBQWlCLFNBQUUxRCxTQUUzQyxJQUFNME4sRUFBZ0I5TSxTQUFTNkosZUFBZWxILEdBQzlDLEdBQUltSyxFQUFlLENBQ2YsSUFBTSxFQUFrQixDQUFDLFVBQVcsV0FBWSxTQUFVLFdBQVksV0FFaEVDLEVBQWdCL00sU0FBU1UsY0FBYyxVQUN6QzhLLEVBQU0sVUFBRy9JLEdBQW1CLE9BQUcwSCxFQUFNLFlBQUlDLEdBQ3pDSyxJQUFTeEgsR0FBdUIySixJQUNoQ3BCLEdBQU8sbUJBQVlvQixFQUFTLFlBR2hDLElBQU1JLEVBQW1CN0ssT0FBT3FILFFBQVFxRCxHQUNuQ3BELFFBQU8sU0FBQyxHLElBQUN2SCxFQUFHLEtBQUUrSyxFQUFLLEtBQU0sU0FBZ0J2RCxTQUFTeEgsTUFBVStLLENBQW5DLElBQ3pCMVksS0FBSSxTQUFDLEcsSUFBQzJOLEVBQUcsS0FBRStLLEVBQUssS0FBTSxnQkFBRy9LLEVBQUcsWUFBSStLLEdBQVF2VSxhQUFsQixJQUN0QjdELEtBQUssS0FDTm1ZLElBQ0F4QixHQUFPLFdBQUl3QixJQUdmRCxFQUFjaE0sYUFBYSxNQUFPeUssR0FDbEN1QixFQUFjOVksR0FBSzZPLEVBQ25CZ0ssRUFBY3RNLFlBQVl1TSxFQUM5QixDQUNKLENBQUUsTUFBT3pHLEdBQ0wrRSxFQUFPLDBDQUFtQy9FLElBQzFDaEIsUUFBUWdCLE1BQU0sdUNBQXdDQSxFQUMxRCxDQUNKLENBRU8sU0FBUzRHLElBQ1psTixTQUFTZ00sS0FBS25NLE1BQU0wTSxTQUFXLFFBQ25DLEMsb05DNUxNMUUsRUFBZSxDQUNqQnNDLE9BQVEsS0FDUkMsV0FBWSxLQUNaSyxLQUFNeEgsRUFDTjJKLFVBQVcsS0FDWE8sUUFBUyxLQUNUQyxTQUFVLEtBQ1Z0QyxPQUFRLEtBQ1JDLFNBQVUsS0FDVnNDLFFBQVMsTUFHQUMsRUFBY3ZGLElBQ3ZCdkQsR0FDSSxTQUFDNUksR0FBUSxPQUFDLE9BQ0hpTSxHQUFZLENBQ2ZsUCxRQUFTLFNBQUNrTSxHQUFVLE9BQUFqSixFQUFJLE9BQUtpTSxHQUFpQmhELEdBQTFCLEdBRmYsR0FJVCxDQUNJN04sS0FBTSxjQUNOb00sUUFBU0YsR0FBa0IsV0FBTSxPQUFBb0csY0FBQSxPLGtCQ3JDN0MsTUFBTWlFLEVBQWMvTyxHQUFRZ1AsT0FBT0MsWUFBWWpQLEUsdUhDVzNDTixFQUFVLENBQUMsRUM2SWYsU0FBU3dQLEVBQUtDLEcsTUFDVixJQUNJLElBQU1DLEVBQThDLFFBQS9CLEVBQUFELFFBQUFBLEVBQVNMLEVBQVkxRixrQkFBVSxRQUFJK0IsSUFDeEQsSUFBS2lFLEVBQWF6RCxTQUFXeUQsRUFBYXhELFdBQ3RDLE1BQU0sSUFBSTdKLE1BQU0sOENBR2QsTUFBNkJtSSxFQUFZZCxXQUF2Q2tCLEVBQWUsa0JBQUVPLEVBQUssUUFDOUJQLElGcEpSLFNBQWlCK0UsRUFBTUMsR0FDckIsR0FBSTNMLE9BQU9xRixHQUFHcUcsRUFBTUMsR0FDbEIsT0FBTyxFQUVULEdBQW9CLGlCQUFURCxHQUE4QixPQUFUQSxHQUFpQyxpQkFBVEMsR0FBOEIsT0FBVEEsRUFDM0UsT0FBTyxFQUVULEdBQUlQLEVBQVdNLElBQVNOLEVBQVdPLEdBQU8sQ0FDeEMsTUFBTUMsRUFBWUYsRUFBS0wsT0FBT0MsWUFDeEJPLEVBQVlGLEVBQUtOLE9BQU9DLFlBQzlCLElBQUlRLEVBQVFGLEVBQVVHLE9BQ2xCQyxFQUFRSCxFQUFVRSxPQUN0QixHQUFJMVcsTUFBTTRXLFFBQVFILEVBQU1oQixRQUFVelYsTUFBTTRXLFFBQVFELEVBQU1sQixRQUFpQyxJQUF2QmdCLEVBQU1oQixNQUFNclksUUFBdUMsSUFBdkJ1WixFQUFNbEIsTUFBTXJZLE9BQ3RHLE1BeEJpQixFQUFDeVosRUFBV0MsS0FDakMsTUFBTUMsRUFBT0YsYUFBcUJHLElBQU1ILEVBQVksSUFBSUcsSUFBSUgsR0FDdERJLEVBQU9ILGFBQXFCRSxJQUFNRixFQUFZLElBQUlFLElBQUlGLEdBQzVELEdBQUlDLEVBQUtHLE9BQVNELEVBQUtDLEtBQU0sT0FBTyxFQUNwQyxJQUFLLE1BQU94TSxFQUFLK0ssS0FBVXNCLEVBQ3pCLElBQUtwTSxPQUFPcUYsR0FBR3lGLEVBQU93QixFQUFLalMsSUFBSTBGLElBQzdCLE9BQU8sRUFHWCxPQUFPLENBQUksRUFlQXlNLENBQ0xkLEVBQ0FDLEdBR0osTUFBUUcsRUFBTVcsT0FBU1QsRUFBTVMsTUFBTSxDQUNqQyxJQUFLek0sT0FBT3FGLEdBQUd5RyxFQUFNaEIsTUFBT2tCLEVBQU1sQixPQUNoQyxPQUFPLEVBRVRnQixFQUFRRixFQUFVRyxPQUNsQkMsRUFBUUgsRUFBVUUsTUFDcEIsQ0FDQSxRQUFTRCxFQUFNVyxRQUFVVCxFQUFNUyxJQUNqQyxDQUNBLE1BQU1DLEVBQVExTSxPQUFPMk0sS0FBS2pCLEdBQzFCLEdBQUlnQixFQUFNamEsU0FBV3VOLE9BQU8yTSxLQUFLaEIsR0FBTWxaLE9BQ3JDLE9BQU8sRUFFVCxJQUFLLE1BQU1tYSxLQUFRRixFQUNqQixJQUFLMU0sT0FBTzZNLE9BQU9sQixFQUFNaUIsS0FBVTVNLE9BQU9xRixHQUFHcUcsRUFBS2tCLEdBQU9qQixFQUFLaUIsSUFDNUQsT0FBTyxFQUdYLE9BQU8sQ0FDVCxDRWlIYUUsQ0FBUTNCLEVBQVkxRixXQUFZZ0csS0FDakN2RSxJQUNBaUUsRUFBWTFGLFdBQVdqUCxRQUFRaVYsSUFFbkNsRixFQUFZZCxXQUFXZSxZQUMzQixDQUFFLE1BQU9yQyxHQUNMK0UsRUFBTyxrQ0FBMkIvRSxJQUNsQ2hCLFFBQVFnQixNQUFNLHNDQUErQkEsR0FDakQsQ0FDSixDRDlKQXBJLEVBQVErQyxrQkFBb0IsSUFDNUIvQyxFQUFReUMsY0FBZ0IsSUFDeEJ6QyxFQUFRMEIsT0FBUyxTQUFjLEtBQU0sUUFDckMxQixFQUFRZSxPQUFTLElBQ2pCZixFQUFROEMsbUJBQXFCLElBRWhCLElBQUksSUFBUzlDLEdBS0osS0FBVyxJQUFRZ1IsUUFBUyxJQUFRQSxPQ0YxRDVCLEVBQVl4RixXQUFVLFNBQUNxSCxHQUNmQSxFQUFTaEYsUUFBVWdGLEVBQVMvRSxZQUM1QnVDLEVBQWF3QyxFQUVyQixJQUVBekcsRUFBWVosV0FBVSxTQUFDcUgsRyxNTHpCUUMsRUNtSHJCQyxFSXpGTixHQUFJRixFQUFTakgscUJBQXNCLENBQy9CLElBQUlvSCxFQUFhSCxFQUFTN0csaUJBQ3BCLGlDQUEwQjZHLEVBQVM3RyxrQkFDbkMsd0JBQ0ZpSCxFQUFnQixHQUNkQyxFQUF3QixHQVk5QixHQVZJTCxFQUFTL0cscUJBQ1RrSCxFQUFhLHNCQUdiSCxFQUFTNUcsYUFBZTRHLEVBQVMzRyxjQUNqQ2dILEVBQVl6YixLQUNSLFVBQUcsSUFBTW9iLEVBQVM1RyxhQUFhM0wsT0FBTyxVQUFTLGNBQU0sSUFBTXVTLEVBQVMzRyxjQUFjNUwsT0FBTyxZQUk3RnVTLEVBQVMxRyxLQUFLZ0gsTUFBTyxDQUNyQixJQUFpQixRQUFiLEVBQUFOLEVBQVMxRyxZQUFJLGVBQUVpSCxRQUFTUCxFQUFTMUcsS0FBS2lILE1BQU05YSxPQUFTLEVBQUcsQ0FDeEQsSUFBTSthLEVBQVlSLEVBQVMxRyxLQUFLaUgsTUFBTTlhLE9BQ2hDZ2IsRUFBYVQsRUFBUzFHLEtBQUtpSCxNQUFNekUsUUFDbkMsU0FBQzRFLEVBQWFDLEdBQWMsT0FBQUQsRUFBTUMsRUFBS0MsV0FBV2pGLE9BQVNnRixFQUFLQyxXQUFXaEYsU0FBU25XLE1BQXhELEdBQzVCLEdBRUoyYSxFQUFnQixVQUFHSSxFQUFTLGdCQUFRQSxFQUFZLEVBQUksSUFBTSxHQUFFLFNBQzVESCxFQUFZemIsS0FBSyxVQUFHNmIsRUFBVSxpQkFBU0EsRUFBYSxFQUFJLElBQU0sSUFDbEUsQ0FDQUwsR0xwREUsUUFEaUJILEVLcURhRCxFQUFTMUcsS0FBS2dILE9McERyQyxJQUFJTyxLQUFLQyxhQUFhLFFBQVMsQ0FBRXBRLE1BQU8sV0FBWXFRLFNBQVUsUUFBU3RULE9BQU93UyxFQUFRLEtBQU8sRUtxRDFHLEVKbUNELFNBQTJCLEcsSUFDOUJFLEVBQVUsYUFDVkMsRUFBYSxnQkFDYlksRUFBVSxhQU1XblEsU0FBUzZKLGVBQWU5RyxHQUVoQ3FOLFVBQVksNEdBR0xkLEVBQVUsb25CQUtwQkMsR0FBaUIsMkRBQW9EQSxFQUFhLFdBQVMscUNBRS9GWSxHQUFjLHdEQUFpREEsRUFBVSxXQUFTLFNBRTVGLENJeERRRSxDQUFrQixDQUFFZixXQUFVLEVBQUVDLGNBQWEsRUFBRVksV0FBWVgsRUFBWTNhLEtBQUssT0FDaEYsQ0FFSXNhLEVBQVM5RyxpQkppSlYsU0FBd0IsRyxJQUFFQSxFQUFlLGtCQUN0Q2lJLEVBQXNCdFEsU0FBUzZKLGVBQWU5RyxHQUNoRHdOLEVBQWdCdlEsU0FBUzZKLGVBQWVqSCxHQUM1QzBOLEVBQW9CelEsTUFBdUIsZ0JBQUl3SSxFQUMvQ2tJLEVBQWMxUSxNQUF1QixnQkFBSXdJLENBQzdDLENJckpRbUksQ0FBZSxDQUFFbkksZ0JBQWlCOEcsRUFBUzlHLGtCQUczQzhHLEVBQVNoSCxTSmhDVixXLE1BQytCLFFBQWxDLEVBQUFuSSxTQUFTNkosZUFBZTdHLFVBQVUsU0FBRTVELFFBQ3hDLENJK0JRcVIsR0FDQXRCLEVBQVNsSCxPSjREVixXQUNILElBQ0ksSUFBTW9FLEVBQVVyTSxTQUFTNkosZUFBZW5ILEdBQ3BDNEosRUFBaUJ0TSxTQUFTNkosZUFBZWhILEdBRTdDVixPQUFPdUYsT0FBTzRFLEVBQWV6TSxNQUFPLENBQ2hDNk0sT0FBUSxhQUNSZ0UsT0FBUSxPQUNSbEUsV0FBWSxzQkFHaEJVLElBQ0FiLEVBQVF4TSxNQUFNNE0sUUFBVSxRQUN4QkosRUFBUXRMLGFBQWEsUUFBUyxZQUU5QjRQLFlBQVcsV0FDUCxJQUFNNUQsRUFBZ0IvTSxTQUFTNkosZUFBZS9HLEdBQzlDaUssU0FBQUEsRUFBZTZELE9BQ25CLEdBQUcsSUFDUCxDQUFFLE1BQU90SyxHQUNMK0UsRUFBTyx5Q0FBa0MvRSxJQUN6Q2hCLFFBQVFnQixNQUFNLHNDQUF1Q0EsRUFDekQsQ0FDSixDSW5GMEJ1SyxHQUFrQnpFLElBQ3BDK0MsRUFBU2pILHVCSmlEUG1ILEVBQWVyUCxTQUFTNkosZUFBZTlHLElBQ2hDaEMsYUFBYSxRQUFTLHFDQUNuQ3NPLEVBQWF1QixTQUlRNVEsU0FBUzZKLGVBQWU5RyxHQUNoQ2hDLGFBQWEsUUFBUyx1Q0EzR2hDLFdBQ0gsSUFBTXVMLEVBQWlCdE0sU0FBUzZKLGVBQWVoSCxHQUUvQyxHQUFJeUosRUFBZ0IsQ0FDaEIsSUFBTXdFLEVBQWM5USxTQUFTVSxjQUFjLE9BQzNDb1EsRUFBWTdjLEdBQUsrTyxFQUNqQjhOLEVBQVlWLFVBQVksa0NBQ3hCOUQsRUFBZTlMLFlBQVlzUSxHQUUzQnhFLEVBQWV6TSxNQUFNNk0sT0FBUyxVQUFHLE1BQ2pDSixFQUFlek0sTUFBTTZRLE9BQVMsT0FDOUJwRSxFQUFlek0sTUFBTTJNLFdBQWEscUJBQ2xDVSxHQUNKLENBQ0osQ0l1Q1E2RCxFQUVSLElBb0dBLFdBQ0ksSUFDSSxJQUFNLEVBQWdDQyxhQUFZLFdBQzlDLEdBQTRCLGFBQXhCaFIsU0FBU2lSLFdBQTJCLENBR3BDLEdKN0lULFdBQ0gsSUFDVSxNQUErRHZJLEVBQVlkLFdBQXpFLEVBQVUsYUFBRSxFQUFVLGFBQUUsRUFBZSxrQkFBRSxFQUFlLGtCQUMxRHlFLEVBQVVyTSxTQUFTVSxjQUFjLE9BQ25DNEwsRUFBaUJ0TSxTQUFTVSxjQUFjLE9BQ3hDd1EsRUFBc0JsUixTQUFTVSxjQUFjLE9BQzdDNlAsRUFBZ0J2USxTQUFTVSxjQUFjLE9BQ3ZDeVEsRUFBcUJuUixTQUFTVSxjQUFjLFFBQzVDMFEsRUFBcUJwUixTQUFTVSxjQUFjLFVBQzVDMk8sRUFBZXJQLFNBQVNVLGNBQWMsT0FFMUMyTyxFQUFhcGIsR0FBSzhPLEVBRWxCc00sU0FBQUEsRUFBY2dDLGlCQUFpQixTQUFTLFdBQ3BDLElBQ0EsR0FDSixJQUdBaEYsRUFBUXBZLEdBQUt5TyxFQUNiMkosRUFBUXhNLE1BQU00TSxRQUFVLE9BQ3hCSCxFQUFlclksR0FBSzRPLEVBQ3BCd0osRUFBUWdGLGlCQUFpQixTQUFTLFNBQVVDLEdBQ3BDaGQsT0FBU2dkLEVBQU14UixTQUNmLElBQ0EsSUFFUixJQUdBb1IsRUFBb0JqZCxHQUFLME8sRUFDekI0TixFQUFjdGMsR0FBSzJPLEVBQ25Cd08sRUFBbUJuZCxHTDlEVyxpQ0srRDlCbWQsRUFBbUJDLGlCQUFpQixTQUFTLFdBQ3pDLElBQ0EsR0FDSixJQUNBRixFQUFtQmxkLEdMbEVXLGlDS21FOUJrZCxFQUFtQmYsVUFBWSxVQUcvQjlELEVBQWU5TCxZQUFZNkwsR0FDM0JBLEVBQVE3TCxZQUFZMFEsR0FDcEJBLEVBQW9CMVEsWUFBWStQLEdBQ2hDQSxFQUFjL1AsWUFBWTJRLEdBQzFCWixFQUFjL1AsWUFBWTRRLEdBQzFCcFIsU0FBU2dNLEtBQUt4TCxZQUFZOEwsR0FDMUJ0TSxTQUFTZ00sS0FBS3hMLFlBQVk2TyxFQUM5QixDQUFFLE1BQU8vSSxHQUNMK0UsRUFBTyx1Q0FBZ0MvRSxJQUN2Q2hCLFFBQVFnQixNQUFNLG9DQUFxQ0EsRUFDdkQsQ0FDSixDSXVGZ0JpTCxHQUVLakUsRUFBWTFGLFdBQVd1QyxRQUFXbUQsRUFBWTFGLFdBQVd3QyxXQUkxRHVDLEVBQWFXLEVBQVkxRixnQkFKNkMsQ0FDaEUsTUFBeUIrQixJQUF2QlEsRUFBTSxTQUFFQyxFQUFVLGFBQzFCa0QsRUFBWTFGLFdBQVdqUCxRQUFRLENBQUV3UixPQUFNLEVBQUVDLFdBQVUsR0FDdkQsRUEzR2hCLFdBQ0ksU0FBU29ILEVBQWdCRixHLE1BQ3JCLElBQ0ksSUFBTXhSLEVBQVN3UixFQUFNeFIsT0FHZixFQUFTQSxFQUFPb0IsV0FDQyxNQUFuQnBCLEVBQU8yUixTQUF1QyxPQUFwQixhQUFNLEVBQU4sRUFBUUEsV0FDbEMzUixFQUFPOEwsS0FBTyxhQUFNLEVBQU4sRUFBUUEsTUFHMUIsSUFBTThGLEVBQVc1UixFQUFPOEwsTUFBUSxHQUNoQyxJQUFLOEYsRUFBU2hJLFNBQVMsS0FDbkIsT0FHSixJQUFNSyxFQUFZQyxFQUFpQixJQUFJQyxnQkFBZ0J5SCxFQUFTelgsVUFBVXlYLEVBQVN4SCxRQUFRLFFBRTNGLEdBQTZCLFNBQXpCSCxFQUFVUSxXQUF1QixDQUNqQytHLEVBQU1LLGlCQUNBLE1BQXlCaEksSUFBdkJRLEVBQU0sU0FBRUMsRUFBVSxhQUMxQnNELEVBQUssQ0FDRHZELE9BQXdCLFFBQWhCLEVBQUFKLEVBQVVJLGNBQU0sUUFBSUEsRUFDNUJDLFdBQVlMLEVBQVVLLFlBQWNMLEVBQVVLLFdBQWFBLEVBQzNESyxLQUFNVixFQUFVVSxPQUFTeEgsRUFBc0JBLEVBQXNCQSxFQUNyRTJKLFdBQ0k3QyxhQUFTLEVBQVRBLEVBQVc2QyxhQUFhN0MsYUFBUyxFQUFUQSxFQUFXVSxRQUFTeEgsR0FBdUI4RyxFQUFVNkMsVUFBWSxLQUM3RlMsUUFBU3RELEVBQVVzRCxTQUFXdEQsRUFBVXNELGFBQVVqWSxFQUNsRCtYLFFBQVNwRCxFQUFVb0QsUUFDbkJDLFNBQVVyRCxFQUFVcUQsU0FDcEJ0QyxPQUFRZixFQUFVZSxRQUFVZixFQUFVZSxZQUFTMVYsRUFDL0MyVixTQUFVaEIsRUFBVWdCLFNBQVdoQixFQUFVZ0IsU0FBUzdULE1BQU0sS0FBSzNDLEtBQUksU0FBQ3FkLEdBQVEsT0FBQ0EsQ0FBRCxTQUFReGMsR0FFMUYsQ0FDSixDQUFFLE1BQU9rUixHQUNMK0UsRUFBTywrQ0FBd0MvRSxJQUMvQ2hCLFFBQVFnQixNQUFNLDRDQUE2Q0EsRUFDL0QsQ0FDSixDQUVBdEcsU0FBUzZSLGlCQUFpQixLQUFLdFUsU0FBUSxTQUFDdVUsR0FDcENBLEVBQVlULGlCQUFpQixRQUFTRyxFQUMxQyxHQUNKLENBbUVnQk8sR0FFQUMsY0FBYyxFQUNsQixDQUNKLEdBQUcsTUFyRVgsV0FDSSxTQUFTQyxJQUNMdEIsWUFBVyxXLE1BQ0Q1RyxFQUFZQyxFQUFpQixJQUFJQyxnQkFBZ0IvSixPQUFPeUwsU0FBU3VHLFNBRTFDLFNBQXpCbkksRUFBVVEsYUFDVCtDLEVBQVkxRixXQUFXdUMsUUFBVUosRUFBVUksVUFDM0NtRCxFQUFZMUYsV0FBV3dDLFlBQWNMLEVBQVVLLGFBRWhEc0QsRUFBSyxDQUNEdkQsT0FBd0IsUUFBaEIsRUFBQUosRUFBVUksY0FBTSxRQUFJbUQsRUFBWTFGLFdBQVd1QyxPQUNuREMsV0FBWUwsRUFBVUssWUFBY0wsRUFBVUssV0FBYWtELEVBQVkxRixXQUFXd0MsV0FDbEZLLEtBQU1WLEVBQVVVLE9BQVN4SCxFQUFzQkEsRUFBc0JBLEVBQ3JFMkosV0FDSTdDLGFBQVMsRUFBVEEsRUFBVzZDLGFBQWE3QyxhQUFTLEVBQVRBLEVBQVdVLFFBQVN4SCxHQUF1QjhHLEVBQVU2QyxVQUFZLEtBQzdGUyxRQUFTdEQsRUFBVXNELFNBQVd0RCxFQUFVc0QsYUFBVWpZLEVBQ2xEK1gsUUFBU3BELEVBQVVvRCxRQUNuQkMsU0FBVXJELEVBQVVxRCxTQUNwQnRDLE9BQVFmLEVBQVVlLFFBQVVmLEVBQVVlLFlBQVMxVixFQUMvQzJWLFNBQVVoQixFQUFVZ0IsU0FBV2hCLEVBQVVnQixTQUFTN1QsTUFBTSxLQUFLM0MsS0FBSSxTQUFDcWQsR0FBUSxPQUFDQSxDQUFELFNBQVF4YyxHQUc5RixHQUFHLElBQ1AsQ0FFNEIsYUFBeEI0SyxTQUFTaVIsV0FDVGdCLElBRUEvUixPQUFPbVIsaUJBQWlCLE9BQVFZLEVBRXhDLENBd0NRRSxHQUVBaFEsT0FBT3VGLE9BQU94SCxPQUFRLENBQUV3TixLQUFJLEVBQUUwRSxZQUFhaEcsSUFFM0NsTSxPQUFPbVMsVUFBWSxTQUFVcGMsR0FDekIsSUFBTXFWLEVBQXNCclYsRUFBRUYsS0FDOUIsT0FBUXVWLEVBQVFDLE1BQ1osSVRsTEUsMEJTbUxFN0MsRUFBWWQsV0FBV21CLFlBQVcsR0FDbEMsTUFFSixJVHJMTywrQlNzTEhMLEVBQVlkLFdBQVdvQix1QkFBc0IsR0FDN0MsTUFFSixJVHhMTSw4QlN5TEYsSUFDTXNKLEdBREFDLEVBQWNqSCxFQUFRdlYsTUFDSXljLFFBQzVCRixHQUNBNUosRUFBWWQsV0FBV3FCLG1CQUFtQnFKLEdBRTlDLE1BRUosSVQvTFksNEJTZ01SLElBQU1DLEVBQWNqSCxFQUFRdlYsS0FDNUIyUyxFQUFZZCxXQUFXc0Isb0JBQW9CcUosRUFBWXZiLE1BQ3ZELE1BRUosSVRuTUQsd0JTb01XdWIsRUFBY2pILEVBQVF2VixNQUNab1gsU0FBV29GLEVBQVluRixVQUNuQzFFLEVBQVlkLFdBQVd3QixTQUFTbUosRUFBWXBGLFFBQVNvRixFQUFZbkYsVUFFckUsTUFFSixJVHpNRixzQlMwTVltRixFQUFjakgsRUFBUXZWLEtBQzVCMlMsRUFBWWQsV0FBV3VCLFFBQVFvSixFQUFZOUosTUFPdkQsQ0FDSixDQUFFLE1BQU9uQyxHQUNMK0UsRUFBTyxvREFBNkMvRSxJQUNwRGhCLFFBQVFnQixNQUFNLDBDQUFtQ0EsR0FDckQsQ0FDSixDQUVBbU0sRSIsInNvdXJjZXMiOlsid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL3N0eWxlcy5jc3MiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvZGF5anMvZGF5anMubWluLmpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvd2VicGFjay9ydW50aW1lL25vbmNlIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL2NvbnN0LnRzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL3p1c3RhbmQvZXNtL21pZGRsZXdhcmUubWpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL3p1c3RhbmQvZXNtL3ZhbmlsbGEubWpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL3N0b3JlL3dpZGdldC5zdG9yZS50cyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL3NyYy91dGlscy50cyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL3NyYy9kb20udHMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9zcmMvc3RvcmUvZ2xvYmFsLnN0b3JlLnRzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL3p1c3RhbmQvZXNtL3ZhbmlsbGEvc2hhbGxvdy5tanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9zcmMvc3R5bGVzLmNzcz80NGIyIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIkBpbXBvcnQgdXJsKGh0dHBzOi8vdXNlLnR5cGVraXQubmV0L3NhZzhjZWIuY3NzKTtcIl0pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIGAjdHJpcGZ1c2lvbi1sb2FkZXIge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBtYXJnaW4tcmlnaHQ6IC01MCU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBmb250LWZhbWlseTogZnV0dXJhLWx0LXcwMS1ib29rLCBmdXR1cmEtbHQtdzA1LWJvb2ssIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG5cbiN0cmlwZnVzaW9uLWxvYWRlciBzcGFuIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXNpemU6IDEuM3JlbTtcbn1cblxuI3RyaXBmdXNpb24tcmVzdW1lLXBhbmVsIHtcbiAgICBtYXgtd2lkdGg6IDI1MHB4O1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAwLjVyZW07XG4gICAgcGFkZGluZzogMTJweCAyNHB4O1xuICAgIGJveC1zaGFkb3c6IDBweCAwcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4yNSksIDBweCA0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICByaWdodDogMzBweDtcbiAgICB6LWluZGV4OiAxMDAwMDAwMDAwMDA7XG4gICAgYm90dG9tOiA0MHB4O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNDAwcHgpO1xuICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBmb250LWZhbWlseTogc3dlZXQtc2Fucy1wcm8sIHNhbnMtc2VyaWY7XG59XG5cbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbF9faGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IDJlbTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX2hlYWRlciBzdmcge1xuICAgIHdpZHRoOiAxOHB4O1xuICAgIGhlaWdodDogMThweDtcbiAgICBmaWxsOiB3aGl0ZTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsX19oZWFkZXIgc3Bhbixcbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbF9fc3ViaGVhZGVyIHtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsX19mb290ZXIge1xuICAgIGZvbnQtZmFtaWx5OiBSb2JvdG8sIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0LXdyYXBwZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMCk7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuNXMgZWFzZS1vdXQ7XG59XG5cbiN0cmlwZnVzaW9uLXdpZGdldCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB0b3A6IDBweDtcbiAgICByaWdodDogMHB4O1xufVxuXG4jdHJpcGZ1c2lvbi13aWRnZXQtaW5uZXItd3JhcHBlciB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBtaW4td2lkdGg6IDMyMHB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICByaWdodDogMHB4O1xuICAgIGJvdHRvbTogMHB4O1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBib3gtc2hhZG93OiAwIDJweCAxMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpO1xuICAgIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiLCBcIkhlbHZldGljYVwiLCBcIkFyaWFsXCIsIHNhbnMtc2VyaWY7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wMDkzOGVtO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICAjdHJpcGZ1c2lvbi13aWRnZXQtaW5uZXItd3JhcHBlciB7XG4gICAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gNDBweCk7XG4gICAgICAgIHJpZ2h0OiAyMHB4O1xuICAgICAgICBib3R0b206IDIwcHg7XG4gICAgICAgIHdpZHRoOiA1MDBweDtcbiAgICB9XG59XG5cbiN0cmlwZnVzaW9uLXdpZGdldC1oZWFkZXIge1xuICAgIGhlaWdodDogNjBweDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YxZjFmMTtcbiAgICBwYWRkaW5nOiAwIDE2cHggMCAxNnB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgY29sb3I6IHdoaXRlO1xufVxuXG4jdHJpcGZ1c2lvbi13aWRnZXQtaWZyYW1lIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYm9yZGVyOiBub25lO1xufVxuXG4jdHJpcGZ1c2lvbi13aWRnZXQtaGVhZGVyLXRpdGxlIHtcbiAgICBmb250LWZhbWlseTogc3dlZXQtc2Fucy1wcm8sIHNhbnMtc2VyaWY7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBsZXR0ZXItc3BhY2luZzogMS41cHg7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0LWNsb3NlLWJ1dHRvbiB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgd2lkdGg6IDJlbTtcbiAgICBoZWlnaHQ6IDJlbTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgZm9udDogaW5oZXJpdDtcbiAgICB0ZXh0LWluZGVudDogMTAwJTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgb3V0bGluZTogc29saWQgMCB0cmFuc3BhcmVudDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA0KTtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA0KTtcbiAgICB9XG5cbiAgICAmOmJlZm9yZSxcbiAgICAmOmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDI1JTtcbiAgICAgICAgbGVmdDogY2FsYyg1MCUgLSAwLjA2MjVlbSk7XG4gICAgICAgIHdpZHRoOiAwLjEyNWVtO1xuICAgICAgICBoZWlnaHQ6IDUwJTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC4xMjVlbTtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuICAgICAgICBiYWNrZ3JvdW5kOiBjdXJyZW50Y29sb3I7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICB9XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtcbiAgICB9XG59XG5cbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbC0tc2xpZGUtaW4ge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogNTAwbXM7XG4gICAgLW1vei10cmFuc2l0aW9uOiA1MDBtcztcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcbn1cblxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsLS1zbGlkZS1vdXQge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogNTAwbXM7XG4gICAgLW1vei10cmFuc2l0aW9uOiA1MDBtcztcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNDAwcHgpICFpbXBvcnRhbnQ7XG59XG5cbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbC0tcmVzaXplLWluIHtcbiAgICB3aWR0aDogNDZweCAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xuICAgIHRyYW5zaXRpb246IDUwMG1zO1xuICAgIHJpZ2h0OiAzMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbC0tcmVzaXplLWluOmhvdmVyIHtcbiAgICB3aWR0aDogMjE3cHggIWltcG9ydGFudDtcbiAgICBoZWlnaHQ6IDQ2cHggIWltcG9ydGFudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMzAwbXMgbGluZWFyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsLS1yZXNpemUtb3V0IHtcbiAgICB3aWR0aDogNDZweCAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xuICAgIHRyYW5zaXRpb246IDUwMG1zO1xuICAgIHJpZ2h0OiAtMTAwcHggIWltcG9ydGFudDtcbn1cblxuLnNsaWRlLWluIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgYW5pbWF0aW9uOiBzbGlkZS1pbiAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLWluIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcbiAgICB6LWluZGV4OiAxMDAwMDAwMDAwMDAwO1xufVxuXG4uc2xpZGUtb3V0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgYW5pbWF0aW9uOiBzbGlkZS1vdXQgMXMgZm9yd2FyZHMgIWltcG9ydGFudDtcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGUtb3V0IDFzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgei1pbmRleDogLTEwMDAwMDAwMDAwMDA7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ5NXB4KSB7XG4gICAgLnNsaWRlLWluIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICAgICAgYW5pbWF0aW9uOiBzbGlkZS11cCAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS11cCAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgICAgIHotaW5kZXg6IDEwMDAwMDAwMDAwMDA7XG4gICAgfVxuXG4gICAgLnNsaWRlLW91dCB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgICAgIGFuaW1hdGlvbjogc2xpZGUtZG93biAwLjVzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS1kb3duIDFzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgICAgIHotaW5kZXg6IC0xMDAwMDAwMDAwMDAwO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZS1pbiB7XG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gICAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtaW4ge1xuICAgIDEwMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlLXVwIHtcbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbiAgICB9XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS11cCB7XG4gICAgMTAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGUtb3V0IHtcbiAgICAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICB9XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS1vdXQge1xuICAgIDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGUtZG93biB7XG4gICAgMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtZG93biB7XG4gICAgMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgIH1cbn1cbmAsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vc3JjL3N0eWxlcy5jc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUE7SUFDSSxZQUFZO0lBQ1osa0JBQWtCO0lBQ2xCLGtCQUFrQjtJQUNsQixRQUFRO0lBQ1IsU0FBUztJQUNULGlGQUFpRjtJQUNqRixnQ0FBZ0M7QUFDcEM7O0FBRUE7SUFDSSxpQkFBaUI7SUFDakIsaUJBQWlCO0FBQ3JCOztBQUVBO0lBQ0ksZ0JBQWdCO0lBQ2hCLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsV0FBVztJQUNYLGtCQUFrQjtJQUNsQiwyRUFBMkU7SUFDM0UsV0FBVztJQUNYLHFCQUFxQjtJQUNyQixZQUFZO0lBQ1osWUFBWTtJQUNaLDRCQUE0QjtJQUM1QixtQkFBbUI7SUFDbkIsWUFBWTtJQUNaLGVBQWU7SUFDZix1Q0FBdUM7QUFDM0M7O0FBRUE7SUFDSSxhQUFhO0lBQ2IsOEJBQThCO0lBQzlCLFFBQVE7SUFDUixtQkFBbUI7QUFDdkI7O0FBRUE7SUFDSSxXQUFXO0lBQ1gsWUFBWTtJQUNaLFdBQVc7SUFDWCxjQUFjO0FBQ2xCOztBQUVBOztJQUVJLGdCQUFnQjtJQUNoQixnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLHVCQUF1QjtBQUMzQjs7QUFFQTtJQUNJLGlEQUFpRDtJQUNqRCxpQkFBaUI7SUFDakIsZ0JBQWdCO0FBQ3BCOztBQUVBO0lBQ0ksNEJBQTRCO0lBQzVCLGVBQWU7SUFDZixNQUFNO0lBQ04sUUFBUTtJQUNSLFdBQVc7SUFDWCxvQ0FBb0M7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OztJQUVBO1FBQ0ksMkJBQTJCO0lBQy9CO0FBQ0o7O0FBRUE7SUFDSTtRQUNJLGlDQUFpQztJQUNyQzs7SUFFQTtRQUNJLG1DQUFtQztJQUN2QztBQUNKXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIkBpbXBvcnQgdXJsKFxcXCJodHRwczovL3VzZS50eXBla2l0Lm5ldC9zYWc4Y2ViLmNzc1xcXCIpO1xcblxcbiN0cmlwZnVzaW9uLWxvYWRlciB7XFxuICAgIGNvbG9yOiB3aGl0ZTtcXG4gICAgbWFyZ2luLXJpZ2h0OiAtNTAlO1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHRvcDogNTAlO1xcbiAgICBsZWZ0OiA1MCU7XFxuICAgIGZvbnQtZmFtaWx5OiBmdXR1cmEtbHQtdzAxLWJvb2ssIGZ1dHVyYS1sdC13MDUtYm9vaywgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XFxufVxcblxcbiN0cmlwZnVzaW9uLWxvYWRlciBzcGFuIHtcXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWwge1xcbiAgICBtYXgtd2lkdGg6IDI1MHB4O1xcbiAgICBwb3NpdGlvbjogZml4ZWQ7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgZ2FwOiAwLjVyZW07XFxuICAgIHBhZGRpbmc6IDEycHggMjRweDtcXG4gICAgYm94LXNoYWRvdzogMHB4IDBweCAycHggcmdiYSgwLCAwLCAwLCAwLjI1KSwgMHB4IDRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcbiAgICByaWdodDogMzBweDtcXG4gICAgei1pbmRleDogMTAwMDAwMDAwMDAwO1xcbiAgICBib3R0b206IDQwcHg7XFxuICAgIGJvcmRlcjogbm9uZTtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDQwMHB4KTtcXG4gICAgYm9yZGVyLXJhZGl1czogMTZweDtcXG4gICAgY29sb3I6IHdoaXRlO1xcbiAgICBmb250LXNpemU6IDFyZW07XFxuICAgIGZvbnQtZmFtaWx5OiBzd2VldC1zYW5zLXBybywgc2Fucy1zZXJpZjtcXG59XFxuXFxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsX19oZWFkZXIge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICAgIGdhcDogMmVtO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG5cXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX2hlYWRlciBzdmcge1xcbiAgICB3aWR0aDogMThweDtcXG4gICAgaGVpZ2h0OiAxOHB4O1xcbiAgICBmaWxsOiB3aGl0ZTtcXG4gICAgZmxleC1zaHJpbms6IDA7XFxufVxcblxcbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbF9faGVhZGVyIHNwYW4sXFxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsX19zdWJoZWFkZXIge1xcbiAgICBmb250LXdlaWdodDogNzAwO1xcbiAgICBsaW5lLWhlaWdodDogMS4yO1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG59XFxuXFxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsX19mb290ZXIge1xcbiAgICBmb250LWZhbWlseTogUm9ib3RvLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xcbiAgICBmb250LXNpemU6IDAuOHJlbTtcXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcXG59XFxuXFxuI3RyaXBmdXNpb24td2lkZ2V0LXdyYXBwZXIge1xcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDApO1xcbiAgICBwb3NpdGlvbjogZml4ZWQ7XFxuICAgIHRvcDogMDtcXG4gICAgcmlnaHQ6IDA7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuNXMgZWFzZS1vdXQ7XFxufVxcblxcbiN0cmlwZnVzaW9uLXdpZGdldCB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIGhlaWdodDogMTAwJTtcXG4gICAgdG9wOiAwcHg7XFxuICAgIHJpZ2h0OiAwcHg7XFxufVxcblxcbiN0cmlwZnVzaW9uLXdpZGdldC1pbm5lci13cmFwcGVyIHtcXG4gICAgcG9zaXRpb246IGZpeGVkO1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICBtaW4td2lkdGg6IDMyMHB4O1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICByaWdodDogMHB4O1xcbiAgICBib3R0b206IDBweDtcXG4gICAgYmFja2dyb3VuZDogd2hpdGU7XFxuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcXG4gICAgYm94LXNoYWRvdzogMCAycHggMTBweCAwIHJnYmEoMCwgMCwgMCwgMC4yKTtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJSb2JvdG9cXFwiLCBcXFwiSGVsdmV0aWNhXFxcIiwgXFxcIkFyaWFsXFxcIiwgc2Fucy1zZXJpZjtcXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gICAgZm9udC1zaXplOiAxcmVtO1xcbiAgICBsaW5lLWhlaWdodDogMS41O1xcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wMDkzOGVtO1xcbn1cXG5cXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcXG4gICAgI3RyaXBmdXNpb24td2lkZ2V0LWlubmVyLXdyYXBwZXIge1xcbiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA0MHB4KTtcXG4gICAgICAgIHJpZ2h0OiAyMHB4O1xcbiAgICAgICAgYm90dG9tOiAyMHB4O1xcbiAgICAgICAgd2lkdGg6IDUwMHB4O1xcbiAgICB9XFxufVxcblxcbiN0cmlwZnVzaW9uLXdpZGdldC1oZWFkZXIge1xcbiAgICBoZWlnaHQ6IDYwcHg7XFxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjFmMWYxO1xcbiAgICBwYWRkaW5nOiAwIDE2cHggMCAxNnB4O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGNvbG9yOiB3aGl0ZTtcXG59XFxuXFxuI3RyaXBmdXNpb24td2lkZ2V0LWlmcmFtZSB7XFxuICAgIGhlaWdodDogMTAwJTtcXG4gICAgYm9yZGVyOiBub25lO1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi13aWRnZXQtaGVhZGVyLXRpdGxlIHtcXG4gICAgZm9udC1mYW1pbHk6IHN3ZWV0LXNhbnMtcHJvLCBzYW5zLXNlcmlmO1xcbiAgICBsaW5lLWhlaWdodDogMS4yO1xcbiAgICBmb250LXdlaWdodDogNzAwO1xcbiAgICBmb250LXNpemU6IDFyZW07XFxuICAgIGxldHRlci1zcGFjaW5nOiAxLjVweDtcXG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcXG59XFxuXFxuI3RyaXBmdXNpb24td2lkZ2V0LWNsb3NlLWJ1dHRvbiB7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgYm9yZGVyOiBub25lO1xcbiAgICBwYWRkaW5nOiAwO1xcbiAgICB3aWR0aDogMmVtO1xcbiAgICBoZWlnaHQ6IDJlbTtcXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gICAgZm9udDogaW5oZXJpdDtcXG4gICAgdGV4dC1pbmRlbnQ6IDEwMCU7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG5cXG4gICAgJjpmb2N1cyB7XFxuICAgICAgICBvdXRsaW5lOiBzb2xpZCAwIHRyYW5zcGFyZW50O1xcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA0KTtcXG4gICAgfVxcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNCk7XFxuICAgIH1cXG5cXG4gICAgJjpiZWZvcmUsXFxuICAgICY6YWZ0ZXIge1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgdG9wOiAyNSU7XFxuICAgICAgICBsZWZ0OiBjYWxjKDUwJSAtIDAuMDYyNWVtKTtcXG4gICAgICAgIHdpZHRoOiAwLjEyNWVtO1xcbiAgICAgICAgaGVpZ2h0OiA1MCU7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjEyNWVtO1xcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xcbiAgICAgICAgYmFja2dyb3VuZDogY3VycmVudGNvbG9yO1xcbiAgICAgICAgY29sb3I6IHdoaXRlO1xcbiAgICAgICAgY29udGVudDogXFxcIlxcXCI7XFxuICAgIH1cXG5cXG4gICAgJjphZnRlciB7XFxuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xcbiAgICB9XFxufVxcblxcbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbC0tc2xpZGUtaW4ge1xcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IDUwMG1zO1xcbiAgICAtbW96LXRyYW5zaXRpb246IDUwMG1zO1xcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApICFpbXBvcnRhbnQ7XFxufVxcblxcbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbC0tc2xpZGUtb3V0IHtcXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgLW1vei10cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgdHJhbnNpdGlvbjogNTAwbXM7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0MDBweCkgIWltcG9ydGFudDtcXG59XFxuXFxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsLS1yZXNpemUtaW4ge1xcbiAgICB3aWR0aDogNDZweCAhaW1wb3J0YW50O1xcbiAgICBoZWlnaHQ6IDQ2cHggIWltcG9ydGFudDtcXG4gICAgdHJhbnNpdGlvbjogNTAwbXM7XFxuICAgIHJpZ2h0OiAzMHB4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbC0tcmVzaXplLWluOmhvdmVyIHtcXG4gICAgd2lkdGg6IDIxN3B4ICFpbXBvcnRhbnQ7XFxuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xcbiAgICB0cmFuc2l0aW9uOiBhbGwgMzAwbXMgbGluZWFyO1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbC0tcmVzaXplLW91dCB7XFxuICAgIHdpZHRoOiA0NnB4ICFpbXBvcnRhbnQ7XFxuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgcmlnaHQ6IC0xMDBweCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uc2xpZGUtaW4ge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xcbiAgICBhbmltYXRpb246IHNsaWRlLWluIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLWluIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgei1pbmRleDogMTAwMDAwMDAwMDAwMDtcXG59XFxuXFxuLnNsaWRlLW91dCB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxuICAgIGFuaW1hdGlvbjogc2xpZGUtb3V0IDFzIGZvcndhcmRzICFpbXBvcnRhbnQ7XFxuICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS1vdXQgMXMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgei1pbmRleDogLTEwMDAwMDAwMDAwMDA7XFxufVxcblxcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ5NXB4KSB7XFxuICAgIC5zbGlkZS1pbiB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG4gICAgICAgIGFuaW1hdGlvbjogc2xpZGUtdXAgMC44cyBmb3J3YXJkcyAhaW1wb3J0YW50O1xcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLXVwIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgICAgIHotaW5kZXg6IDEwMDAwMDAwMDAwMDA7XFxuICAgIH1cXG5cXG4gICAgLnNsaWRlLW91dCB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG4gICAgICAgIGFuaW1hdGlvbjogc2xpZGUtZG93biAwLjVzIGZvcndhcmRzICFpbXBvcnRhbnQ7XFxuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGUtZG93biAxcyBmb3J3YXJkcyAhaW1wb3J0YW50O1xcbiAgICAgICAgei1pbmRleDogLTEwMDAwMDAwMDAwMDA7XFxuICAgIH1cXG59XFxuXFxuQGtleWZyYW1lcyBzbGlkZS1pbiB7XFxuICAgIDEwMCUge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcXG4gICAgfVxcbn1cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtaW4ge1xcbiAgICAxMDAlIHtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcXG4gICAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzIHNsaWRlLXVwIHtcXG4gICAgMTAwJSB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xcbiAgICB9XFxufVxcblxcbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS11cCB7XFxuICAgIDEwMCUge1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xcbiAgICB9XFxufVxcblxcbkBrZXlmcmFtZXMgc2xpZGUtb3V0IHtcXG4gICAgMCUge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcXG4gICAgfVxcblxcbiAgICAxMDAlIHtcXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG4gICAgfVxcbn1cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtb3V0IHtcXG4gICAgMCUge1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xcbiAgICB9XFxuXFxuICAgIDEwMCUge1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxuICAgIH1cXG59XFxuXFxuQGtleWZyYW1lcyBzbGlkZS1kb3duIHtcXG4gICAgMCUge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcXG4gICAgfVxcblxcbiAgICAxMDAlIHtcXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG4gICAgfVxcbn1cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtZG93biB7XFxuICAgIDAlIHtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcXG4gICAgfVxcblxcbiAgICAxMDAlIHtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xcbiAgICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTtcblxuICAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gXCJcIjtcbiAgICAgIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2YgaXRlbVs1XSAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIik7XG4gICAgICB9XG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKTtcbiAgICAgIH1cbiAgICAgIGNvbnRlbnQgKz0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKTtcbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTtcblxuICAvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuICBsaXN0LmkgPSBmdW5jdGlvbiBpKG1vZHVsZXMsIG1lZGlhLCBkZWR1cGUsIHN1cHBvcnRzLCBsYXllcikge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgdW5kZWZpbmVkXV07XG4gICAgfVxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aGlzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgIHZhciBpZCA9IHRoaXNba11bMF07XG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAodmFyIF9rID0gMDsgX2sgPCBtb2R1bGVzLmxlbmd0aDsgX2srKykge1xuICAgICAgdmFyIGl0ZW0gPSBbXS5jb25jYXQobW9kdWxlc1tfa10pO1xuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBsYXllciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW1bNV0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChtZWRpYSkge1xuICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc3VwcG9ydHMpIHtcbiAgICAgICAgaWYgKCFpdGVtWzRdKSB7XG4gICAgICAgICAgaXRlbVs0XSA9IFwiXCIuY29uY2F0KHN1cHBvcnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNF0gPSBzdXBwb3J0cztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGxpc3Q7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gIHZhciBjb250ZW50ID0gaXRlbVsxXTtcbiAgdmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuICBpZiAoIWNzc01hcHBpbmcpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuICBpZiAodHlwZW9mIGJ0b2EgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShjc3NNYXBwaW5nKSkpKTtcbiAgICB2YXIgZGF0YSA9IFwic291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsXCIuY29uY2F0KGJhc2U2NCk7XG4gICAgdmFyIHNvdXJjZU1hcHBpbmcgPSBcIi8qIyBcIi5jb25jYXQoZGF0YSwgXCIgKi9cIik7XG4gICAgcmV0dXJuIFtjb250ZW50XS5jb25jYXQoW3NvdXJjZU1hcHBpbmddKS5qb2luKFwiXFxuXCIpO1xuICB9XG4gIHJldHVybiBbY29udGVudF0uam9pbihcIlxcblwiKTtcbn07IiwiIWZ1bmN0aW9uKHQsZSl7XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9ZSgpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoZSk6KHQ9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczp0fHxzZWxmKS5kYXlqcz1lKCl9KHRoaXMsKGZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHQ9MWUzLGU9NmU0LG49MzZlNSxyPVwibWlsbGlzZWNvbmRcIixpPVwic2Vjb25kXCIscz1cIm1pbnV0ZVwiLHU9XCJob3VyXCIsYT1cImRheVwiLG89XCJ3ZWVrXCIsYz1cIm1vbnRoXCIsZj1cInF1YXJ0ZXJcIixoPVwieWVhclwiLGQ9XCJkYXRlXCIsbD1cIkludmFsaWQgRGF0ZVwiLCQ9L14oXFxkezR9KVstL10/KFxcZHsxLDJ9KT9bLS9dPyhcXGR7MCwyfSlbVHRcXHNdKihcXGR7MSwyfSk/Oj8oXFxkezEsMn0pPzo/KFxcZHsxLDJ9KT9bLjpdPyhcXGQrKT8kLyx5PS9cXFsoW15cXF1dKyldfFl7MSw0fXxNezEsNH18RHsxLDJ9fGR7MSw0fXxIezEsMn18aHsxLDJ9fGF8QXxtezEsMn18c3sxLDJ9fFp7MSwyfXxTU1MvZyxNPXtuYW1lOlwiZW5cIix3ZWVrZGF5czpcIlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5XCIuc3BsaXQoXCJfXCIpLG1vbnRoczpcIkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXJcIi5zcGxpdChcIl9cIiksb3JkaW5hbDpmdW5jdGlvbih0KXt2YXIgZT1bXCJ0aFwiLFwic3RcIixcIm5kXCIsXCJyZFwiXSxuPXQlMTAwO3JldHVyblwiW1wiK3QrKGVbKG4tMjApJTEwXXx8ZVtuXXx8ZVswXSkrXCJdXCJ9fSxtPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1TdHJpbmcodCk7cmV0dXJuIXJ8fHIubGVuZ3RoPj1lP3Q6XCJcIitBcnJheShlKzEtci5sZW5ndGgpLmpvaW4obikrdH0sdj17czptLHo6ZnVuY3Rpb24odCl7dmFyIGU9LXQudXRjT2Zmc2V0KCksbj1NYXRoLmFicyhlKSxyPU1hdGguZmxvb3Iobi82MCksaT1uJTYwO3JldHVybihlPD0wP1wiK1wiOlwiLVwiKSttKHIsMixcIjBcIikrXCI6XCIrbShpLDIsXCIwXCIpfSxtOmZ1bmN0aW9uIHQoZSxuKXtpZihlLmRhdGUoKTxuLmRhdGUoKSlyZXR1cm4tdChuLGUpO3ZhciByPTEyKihuLnllYXIoKS1lLnllYXIoKSkrKG4ubW9udGgoKS1lLm1vbnRoKCkpLGk9ZS5jbG9uZSgpLmFkZChyLGMpLHM9bi1pPDAsdT1lLmNsb25lKCkuYWRkKHIrKHM/LTE6MSksYyk7cmV0dXJuKygtKHIrKG4taSkvKHM/aS11OnUtaSkpfHwwKX0sYTpmdW5jdGlvbih0KXtyZXR1cm4gdDwwP01hdGguY2VpbCh0KXx8MDpNYXRoLmZsb29yKHQpfSxwOmZ1bmN0aW9uKHQpe3JldHVybntNOmMseTpoLHc6byxkOmEsRDpkLGg6dSxtOnMsczppLG1zOnIsUTpmfVt0XXx8U3RyaW5nKHR8fFwiXCIpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvcyQvLFwiXCIpfSx1OmZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10fX0sZz1cImVuXCIsRD17fTtEW2ddPU07dmFyIHA9XCIkaXNEYXlqc09iamVjdFwiLFM9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBffHwhKCF0fHwhdFtwXSl9LHc9ZnVuY3Rpb24gdChlLG4scil7dmFyIGk7aWYoIWUpcmV0dXJuIGc7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpe3ZhciBzPWUudG9Mb3dlckNhc2UoKTtEW3NdJiYoaT1zKSxuJiYoRFtzXT1uLGk9cyk7dmFyIHU9ZS5zcGxpdChcIi1cIik7aWYoIWkmJnUubGVuZ3RoPjEpcmV0dXJuIHQodVswXSl9ZWxzZXt2YXIgYT1lLm5hbWU7RFthXT1lLGk9YX1yZXR1cm4hciYmaSYmKGc9aSksaXx8IXImJmd9LE89ZnVuY3Rpb24odCxlKXtpZihTKHQpKXJldHVybiB0LmNsb25lKCk7dmFyIG49XCJvYmplY3RcIj09dHlwZW9mIGU/ZTp7fTtyZXR1cm4gbi5kYXRlPXQsbi5hcmdzPWFyZ3VtZW50cyxuZXcgXyhuKX0sYj12O2IubD13LGIuaT1TLGIudz1mdW5jdGlvbih0LGUpe3JldHVybiBPKHQse2xvY2FsZTplLiRMLHV0YzplLiR1LHg6ZS4keCwkb2Zmc2V0OmUuJG9mZnNldH0pfTt2YXIgXz1mdW5jdGlvbigpe2Z1bmN0aW9uIE0odCl7dGhpcy4kTD13KHQubG9jYWxlLG51bGwsITApLHRoaXMucGFyc2UodCksdGhpcy4keD10aGlzLiR4fHx0Lnh8fHt9LHRoaXNbcF09ITB9dmFyIG09TS5wcm90b3R5cGU7cmV0dXJuIG0ucGFyc2U9ZnVuY3Rpb24odCl7dGhpcy4kZD1mdW5jdGlvbih0KXt2YXIgZT10LmRhdGUsbj10LnV0YztpZihudWxsPT09ZSlyZXR1cm4gbmV3IERhdGUoTmFOKTtpZihiLnUoZSkpcmV0dXJuIG5ldyBEYXRlO2lmKGUgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBuZXcgRGF0ZShlKTtpZihcInN0cmluZ1wiPT10eXBlb2YgZSYmIS9aJC9pLnRlc3QoZSkpe3ZhciByPWUubWF0Y2goJCk7aWYocil7dmFyIGk9clsyXS0xfHwwLHM9KHJbN118fFwiMFwiKS5zdWJzdHJpbmcoMCwzKTtyZXR1cm4gbj9uZXcgRGF0ZShEYXRlLlVUQyhyWzFdLGksclszXXx8MSxyWzRdfHwwLHJbNV18fDAscls2XXx8MCxzKSk6bmV3IERhdGUoclsxXSxpLHJbM118fDEscls0XXx8MCxyWzVdfHwwLHJbNl18fDAscyl9fXJldHVybiBuZXcgRGF0ZShlKX0odCksdGhpcy5pbml0KCl9LG0uaW5pdD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuJGQ7dGhpcy4keT10LmdldEZ1bGxZZWFyKCksdGhpcy4kTT10LmdldE1vbnRoKCksdGhpcy4kRD10LmdldERhdGUoKSx0aGlzLiRXPXQuZ2V0RGF5KCksdGhpcy4kSD10LmdldEhvdXJzKCksdGhpcy4kbT10LmdldE1pbnV0ZXMoKSx0aGlzLiRzPXQuZ2V0U2Vjb25kcygpLHRoaXMuJG1zPXQuZ2V0TWlsbGlzZWNvbmRzKCl9LG0uJHV0aWxzPWZ1bmN0aW9uKCl7cmV0dXJuIGJ9LG0uaXNWYWxpZD1mdW5jdGlvbigpe3JldHVybiEodGhpcy4kZC50b1N0cmluZygpPT09bCl9LG0uaXNTYW1lPWZ1bmN0aW9uKHQsZSl7dmFyIG49Tyh0KTtyZXR1cm4gdGhpcy5zdGFydE9mKGUpPD1uJiZuPD10aGlzLmVuZE9mKGUpfSxtLmlzQWZ0ZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gTyh0KTx0aGlzLnN0YXJ0T2YoZSl9LG0uaXNCZWZvcmU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5lbmRPZihlKTxPKHQpfSxtLiRnPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gYi51KHQpP3RoaXNbZV06dGhpcy5zZXQobix0KX0sbS51bml4PWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZmxvb3IodGhpcy52YWx1ZU9mKCkvMWUzKX0sbS52YWx1ZU9mPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGQuZ2V0VGltZSgpfSxtLnN0YXJ0T2Y9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLHI9ISFiLnUoZSl8fGUsZj1iLnAodCksbD1mdW5jdGlvbih0LGUpe3ZhciBpPWIudyhuLiR1P0RhdGUuVVRDKG4uJHksZSx0KTpuZXcgRGF0ZShuLiR5LGUsdCksbik7cmV0dXJuIHI/aTppLmVuZE9mKGEpfSwkPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGIudyhuLnRvRGF0ZSgpW3RdLmFwcGx5KG4udG9EYXRlKFwic1wiKSwocj9bMCwwLDAsMF06WzIzLDU5LDU5LDk5OV0pLnNsaWNlKGUpKSxuKX0seT10aGlzLiRXLE09dGhpcy4kTSxtPXRoaXMuJEQsdj1cInNldFwiKyh0aGlzLiR1P1wiVVRDXCI6XCJcIik7c3dpdGNoKGYpe2Nhc2UgaDpyZXR1cm4gcj9sKDEsMCk6bCgzMSwxMSk7Y2FzZSBjOnJldHVybiByP2woMSxNKTpsKDAsTSsxKTtjYXNlIG86dmFyIGc9dGhpcy4kbG9jYWxlKCkud2Vla1N0YXJ0fHwwLEQ9KHk8Zz95Kzc6eSktZztyZXR1cm4gbChyP20tRDptKyg2LUQpLE0pO2Nhc2UgYTpjYXNlIGQ6cmV0dXJuICQoditcIkhvdXJzXCIsMCk7Y2FzZSB1OnJldHVybiAkKHYrXCJNaW51dGVzXCIsMSk7Y2FzZSBzOnJldHVybiAkKHYrXCJTZWNvbmRzXCIsMik7Y2FzZSBpOnJldHVybiAkKHYrXCJNaWxsaXNlY29uZHNcIiwzKTtkZWZhdWx0OnJldHVybiB0aGlzLmNsb25lKCl9fSxtLmVuZE9mPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnN0YXJ0T2YodCwhMSl9LG0uJHNldD1mdW5jdGlvbih0LGUpe3ZhciBuLG89Yi5wKHQpLGY9XCJzZXRcIisodGhpcy4kdT9cIlVUQ1wiOlwiXCIpLGw9KG49e30sblthXT1mK1wiRGF0ZVwiLG5bZF09ZitcIkRhdGVcIixuW2NdPWYrXCJNb250aFwiLG5baF09ZitcIkZ1bGxZZWFyXCIsblt1XT1mK1wiSG91cnNcIixuW3NdPWYrXCJNaW51dGVzXCIsbltpXT1mK1wiU2Vjb25kc1wiLG5bcl09ZitcIk1pbGxpc2Vjb25kc1wiLG4pW29dLCQ9bz09PWE/dGhpcy4kRCsoZS10aGlzLiRXKTplO2lmKG89PT1jfHxvPT09aCl7dmFyIHk9dGhpcy5jbG9uZSgpLnNldChkLDEpO3kuJGRbbF0oJCkseS5pbml0KCksdGhpcy4kZD15LnNldChkLE1hdGgubWluKHRoaXMuJEQseS5kYXlzSW5Nb250aCgpKSkuJGR9ZWxzZSBsJiZ0aGlzLiRkW2xdKCQpO3JldHVybiB0aGlzLmluaXQoKSx0aGlzfSxtLnNldD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmNsb25lKCkuJHNldCh0LGUpfSxtLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpc1tiLnAodCldKCl9LG0uYWRkPWZ1bmN0aW9uKHIsZil7dmFyIGQsbD10aGlzO3I9TnVtYmVyKHIpO3ZhciAkPWIucChmKSx5PWZ1bmN0aW9uKHQpe3ZhciBlPU8obCk7cmV0dXJuIGIudyhlLmRhdGUoZS5kYXRlKCkrTWF0aC5yb3VuZCh0KnIpKSxsKX07aWYoJD09PWMpcmV0dXJuIHRoaXMuc2V0KGMsdGhpcy4kTStyKTtpZigkPT09aClyZXR1cm4gdGhpcy5zZXQoaCx0aGlzLiR5K3IpO2lmKCQ9PT1hKXJldHVybiB5KDEpO2lmKCQ9PT1vKXJldHVybiB5KDcpO3ZhciBNPShkPXt9LGRbc109ZSxkW3VdPW4sZFtpXT10LGQpWyRdfHwxLG09dGhpcy4kZC5nZXRUaW1lKCkrcipNO3JldHVybiBiLncobSx0aGlzKX0sbS5zdWJ0cmFjdD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmFkZCgtMSp0LGUpfSxtLmZvcm1hdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dGhpcy4kbG9jYWxlKCk7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiBuLmludmFsaWREYXRlfHxsO3ZhciByPXR8fFwiWVlZWS1NTS1ERFRISDptbTpzc1pcIixpPWIueih0aGlzKSxzPXRoaXMuJEgsdT10aGlzLiRtLGE9dGhpcy4kTSxvPW4ud2Vla2RheXMsYz1uLm1vbnRocyxmPW4ubWVyaWRpZW0saD1mdW5jdGlvbih0LG4saSxzKXtyZXR1cm4gdCYmKHRbbl18fHQoZSxyKSl8fGlbbl0uc2xpY2UoMCxzKX0sZD1mdW5jdGlvbih0KXtyZXR1cm4gYi5zKHMlMTJ8fDEyLHQsXCIwXCIpfSwkPWZ8fGZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10PDEyP1wiQU1cIjpcIlBNXCI7cmV0dXJuIG4/ci50b0xvd2VyQ2FzZSgpOnJ9O3JldHVybiByLnJlcGxhY2UoeSwoZnVuY3Rpb24odCxyKXtyZXR1cm4gcnx8ZnVuY3Rpb24odCl7c3dpdGNoKHQpe2Nhc2VcIllZXCI6cmV0dXJuIFN0cmluZyhlLiR5KS5zbGljZSgtMik7Y2FzZVwiWVlZWVwiOnJldHVybiBiLnMoZS4keSw0LFwiMFwiKTtjYXNlXCJNXCI6cmV0dXJuIGErMTtjYXNlXCJNTVwiOnJldHVybiBiLnMoYSsxLDIsXCIwXCIpO2Nhc2VcIk1NTVwiOnJldHVybiBoKG4ubW9udGhzU2hvcnQsYSxjLDMpO2Nhc2VcIk1NTU1cIjpyZXR1cm4gaChjLGEpO2Nhc2VcIkRcIjpyZXR1cm4gZS4kRDtjYXNlXCJERFwiOnJldHVybiBiLnMoZS4kRCwyLFwiMFwiKTtjYXNlXCJkXCI6cmV0dXJuIFN0cmluZyhlLiRXKTtjYXNlXCJkZFwiOnJldHVybiBoKG4ud2Vla2RheXNNaW4sZS4kVyxvLDIpO2Nhc2VcImRkZFwiOnJldHVybiBoKG4ud2Vla2RheXNTaG9ydCxlLiRXLG8sMyk7Y2FzZVwiZGRkZFwiOnJldHVybiBvW2UuJFddO2Nhc2VcIkhcIjpyZXR1cm4gU3RyaW5nKHMpO2Nhc2VcIkhIXCI6cmV0dXJuIGIucyhzLDIsXCIwXCIpO2Nhc2VcImhcIjpyZXR1cm4gZCgxKTtjYXNlXCJoaFwiOnJldHVybiBkKDIpO2Nhc2VcImFcIjpyZXR1cm4gJChzLHUsITApO2Nhc2VcIkFcIjpyZXR1cm4gJChzLHUsITEpO2Nhc2VcIm1cIjpyZXR1cm4gU3RyaW5nKHUpO2Nhc2VcIm1tXCI6cmV0dXJuIGIucyh1LDIsXCIwXCIpO2Nhc2VcInNcIjpyZXR1cm4gU3RyaW5nKGUuJHMpO2Nhc2VcInNzXCI6cmV0dXJuIGIucyhlLiRzLDIsXCIwXCIpO2Nhc2VcIlNTU1wiOnJldHVybiBiLnMoZS4kbXMsMyxcIjBcIik7Y2FzZVwiWlwiOnJldHVybiBpfXJldHVybiBudWxsfSh0KXx8aS5yZXBsYWNlKFwiOlwiLFwiXCIpfSkpfSxtLnV0Y09mZnNldD1mdW5jdGlvbigpe3JldHVybiAxNSotTWF0aC5yb3VuZCh0aGlzLiRkLmdldFRpbWV6b25lT2Zmc2V0KCkvMTUpfSxtLmRpZmY9ZnVuY3Rpb24ocixkLGwpe3ZhciAkLHk9dGhpcyxNPWIucChkKSxtPU8ociksdj0obS51dGNPZmZzZXQoKS10aGlzLnV0Y09mZnNldCgpKSplLGc9dGhpcy1tLEQ9ZnVuY3Rpb24oKXtyZXR1cm4gYi5tKHksbSl9O3N3aXRjaChNKXtjYXNlIGg6JD1EKCkvMTI7YnJlYWs7Y2FzZSBjOiQ9RCgpO2JyZWFrO2Nhc2UgZjokPUQoKS8zO2JyZWFrO2Nhc2UgbzokPShnLXYpLzYwNDhlNTticmVhaztjYXNlIGE6JD0oZy12KS84NjRlNTticmVhaztjYXNlIHU6JD1nL247YnJlYWs7Y2FzZSBzOiQ9Zy9lO2JyZWFrO2Nhc2UgaTokPWcvdDticmVhaztkZWZhdWx0OiQ9Z31yZXR1cm4gbD8kOmIuYSgkKX0sbS5kYXlzSW5Nb250aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVuZE9mKGMpLiREfSxtLiRsb2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gRFt0aGlzLiRMXX0sbS5sb2NhbGU9ZnVuY3Rpb24odCxlKXtpZighdClyZXR1cm4gdGhpcy4kTDt2YXIgbj10aGlzLmNsb25lKCkscj13KHQsZSwhMCk7cmV0dXJuIHImJihuLiRMPXIpLG59LG0uY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gYi53KHRoaXMuJGQsdGhpcyl9LG0udG9EYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBEYXRlKHRoaXMudmFsdWVPZigpKX0sbS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1ZhbGlkKCk/dGhpcy50b0lTT1N0cmluZygpOm51bGx9LG0udG9JU09TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kZC50b0lTT1N0cmluZygpfSxtLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGQudG9VVENTdHJpbmcoKX0sTX0oKSxrPV8ucHJvdG90eXBlO3JldHVybiBPLnByb3RvdHlwZT1rLFtbXCIkbXNcIixyXSxbXCIkc1wiLGldLFtcIiRtXCIsc10sW1wiJEhcIix1XSxbXCIkV1wiLGFdLFtcIiRNXCIsY10sW1wiJHlcIixoXSxbXCIkRFwiLGRdXS5mb3JFYWNoKChmdW5jdGlvbih0KXtrW3RbMV1dPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLiRnKGUsdFswXSx0WzFdKX19KSksTy5leHRlbmQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC4kaXx8KHQoZSxfLE8pLHQuJGk9ITApLE99LE8ubG9jYWxlPXcsTy5pc0RheWpzPVMsTy51bml4PWZ1bmN0aW9uKHQpe3JldHVybiBPKDFlMyp0KX0sTy5lbj1EW2ddLE8uTHM9RCxPLnA9e30sT30pKTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIHN0eWxlc0luRE9NID0gW107XG5mdW5jdGlvbiBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSB7XG4gIHZhciByZXN1bHQgPSAtMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXNJbkRPTS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzdHlsZXNJbkRPTVtpXS5pZGVudGlmaWVyID09PSBpZGVudGlmaWVyKSB7XG4gICAgICByZXN1bHQgPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucykge1xuICB2YXIgaWRDb3VudE1hcCA9IHt9O1xuICB2YXIgaWRlbnRpZmllcnMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldO1xuICAgIHZhciBpZCA9IG9wdGlvbnMuYmFzZSA/IGl0ZW1bMF0gKyBvcHRpb25zLmJhc2UgOiBpdGVtWzBdO1xuICAgIHZhciBjb3VudCA9IGlkQ291bnRNYXBbaWRdIHx8IDA7XG4gICAgdmFyIGlkZW50aWZpZXIgPSBcIlwiLmNvbmNhdChpZCwgXCIgXCIpLmNvbmNhdChjb3VudCk7XG4gICAgaWRDb3VudE1hcFtpZF0gPSBjb3VudCArIDE7XG4gICAgdmFyIGluZGV4QnlJZGVudGlmaWVyID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgdmFyIG9iaiA9IHtcbiAgICAgIGNzczogaXRlbVsxXSxcbiAgICAgIG1lZGlhOiBpdGVtWzJdLFxuICAgICAgc291cmNlTWFwOiBpdGVtWzNdLFxuICAgICAgc3VwcG9ydHM6IGl0ZW1bNF0sXG4gICAgICBsYXllcjogaXRlbVs1XVxuICAgIH07XG4gICAgaWYgKGluZGV4QnlJZGVudGlmaWVyICE9PSAtMSkge1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnJlZmVyZW5jZXMrKztcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4QnlJZGVudGlmaWVyXS51cGRhdGVyKG9iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB1cGRhdGVyID0gYWRkRWxlbWVudFN0eWxlKG9iaiwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLmJ5SW5kZXggPSBpO1xuICAgICAgc3R5bGVzSW5ET00uc3BsaWNlKGksIDAsIHtcbiAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgdXBkYXRlcjogdXBkYXRlcixcbiAgICAgICAgcmVmZXJlbmNlczogMVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnRpZmllcik7XG4gIH1cbiAgcmV0dXJuIGlkZW50aWZpZXJzO1xufVxuZnVuY3Rpb24gYWRkRWxlbWVudFN0eWxlKG9iaiwgb3B0aW9ucykge1xuICB2YXIgYXBpID0gb3B0aW9ucy5kb21BUEkob3B0aW9ucyk7XG4gIGFwaS51cGRhdGUob2JqKTtcbiAgdmFyIHVwZGF0ZXIgPSBmdW5jdGlvbiB1cGRhdGVyKG5ld09iaikge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlmIChuZXdPYmouY3NzID09PSBvYmouY3NzICYmIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXAgJiYgbmV3T2JqLnN1cHBvcnRzID09PSBvYmouc3VwcG9ydHMgJiYgbmV3T2JqLmxheWVyID09PSBvYmoubGF5ZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgYXBpLnVwZGF0ZShvYmogPSBuZXdPYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVtb3ZlKCk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gdXBkYXRlcjtcbn1cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGxpc3QsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIGxpc3QgPSBsaXN0IHx8IFtdO1xuICB2YXIgbGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlKG5ld0xpc3QpIHtcbiAgICBuZXdMaXN0ID0gbmV3TGlzdCB8fCBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbaV07XG4gICAgICB2YXIgaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4XS5yZWZlcmVuY2VzLS07XG4gICAgfVxuICAgIHZhciBuZXdMYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obmV3TGlzdCwgb3B0aW9ucyk7XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tfaV07XG4gICAgICB2YXIgX2luZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoX2lkZW50aWZpZXIpO1xuICAgICAgaWYgKHN0eWxlc0luRE9NW19pbmRleF0ucmVmZXJlbmNlcyA9PT0gMCkge1xuICAgICAgICBzdHlsZXNJbkRPTVtfaW5kZXhdLnVwZGF0ZXIoKTtcbiAgICAgICAgc3R5bGVzSW5ET00uc3BsaWNlKF9pbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIGxhc3RJZGVudGlmaWVycyA9IG5ld0xhc3RJZGVudGlmaWVycztcbiAgfTtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBtZW1vID0ge307XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gZ2V0VGFyZ2V0KHRhcmdldCkge1xuICBpZiAodHlwZW9mIG1lbW9bdGFyZ2V0XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHZhciBzdHlsZVRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0KTtcblxuICAgIC8vIFNwZWNpYWwgY2FzZSB0byByZXR1cm4gaGVhZCBvZiBpZnJhbWUgaW5zdGVhZCBvZiBpZnJhbWUgaXRzZWxmXG4gICAgaWYgKHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCAmJiBzdHlsZVRhcmdldCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhY2Nlc3MgdG8gaWZyYW1lIGlzIGJsb2NrZWRcbiAgICAgICAgLy8gZHVlIHRvIGNyb3NzLW9yaWdpbiByZXN0cmljdGlvbnNcbiAgICAgICAgc3R5bGVUYXJnZXQgPSBzdHlsZVRhcmdldC5jb250ZW50RG9jdW1lbnQuaGVhZDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgc3R5bGVUYXJnZXQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICBtZW1vW3RhcmdldF0gPSBzdHlsZVRhcmdldDtcbiAgfVxuICByZXR1cm4gbWVtb1t0YXJnZXRdO1xufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGluc2VydEJ5U2VsZWN0b3IoaW5zZXJ0LCBzdHlsZSkge1xuICB2YXIgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGluc2VydCk7XG4gIGlmICghdGFyZ2V0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZmluZCBhIHN0eWxlIHRhcmdldC4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB2YWx1ZSBmb3IgdGhlICdpbnNlcnQnIHBhcmFtZXRlciBpcyBpbnZhbGlkLlwiKTtcbiAgfVxuICB0YXJnZXQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRCeVNlbGVjdG9yOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSB7XG4gIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICBvcHRpb25zLnNldEF0dHJpYnV0ZXMoZWxlbWVudCwgb3B0aW9ucy5hdHRyaWJ1dGVzKTtcbiAgb3B0aW9ucy5pbnNlcnQoZWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydFN0eWxlRWxlbWVudDsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMoc3R5bGVFbGVtZW50KSB7XG4gIHZhciBub25jZSA9IHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gXCJ1bmRlZmluZWRcIiA/IF9fd2VicGFja19ub25jZV9fIDogbnVsbDtcbiAgaWYgKG5vbmNlKSB7XG4gICAgc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIG5vbmNlKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXM7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopIHtcbiAgdmFyIGNzcyA9IFwiXCI7XG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChvYmouc3VwcG9ydHMsIFwiKSB7XCIpO1xuICB9XG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJAbWVkaWEgXCIuY29uY2F0KG9iai5tZWRpYSwgXCIge1wiKTtcbiAgfVxuICB2YXIgbmVlZExheWVyID0gdHlwZW9mIG9iai5sYXllciAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIkBsYXllclwiLmNvbmNhdChvYmoubGF5ZXIubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChvYmoubGF5ZXIpIDogXCJcIiwgXCIge1wiKTtcbiAgfVxuICBjc3MgKz0gb2JqLmNzcztcbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXA7XG4gIGlmIChzb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBjc3MgKz0gXCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiLmNvbmNhdChidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpLCBcIiAqL1wiKTtcbiAgfVxuXG4gIC8vIEZvciBvbGQgSUVcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuICBvcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xufVxuZnVuY3Rpb24gcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCkge1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgaWZcbiAgaWYgKHN0eWxlRWxlbWVudC5wYXJlbnROb2RlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHN0eWxlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudCk7XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gZG9tQVBJKG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJldHVybiB7XG4gICAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZSgpIHt9LFxuICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7fVxuICAgIH07XG4gIH1cbiAgdmFyIHN0eWxlRWxlbWVudCA9IG9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpO1xuICByZXR1cm4ge1xuICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKG9iaikge1xuICAgICAgYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopO1xuICAgIH0sXG4gICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KTtcbiAgICB9XG4gIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IGRvbUFQSTsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBzdHlsZVRhZ1RyYW5zZm9ybShjc3MsIHN0eWxlRWxlbWVudCkge1xuICBpZiAoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCkge1xuICAgICAgc3R5bGVFbGVtZW50LnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKTtcbiAgICB9XG4gICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHN0eWxlVGFnVHJhbnNmb3JtOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0aWQ6IG1vZHVsZUlkLFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm5jID0gdW5kZWZpbmVkOyIsImV4cG9ydCBjb25zdCBUUklQRlVTSU9OX0JBU0VfVVJMID1cbiAgICBwcm9jZXNzLmVudi5UUklQRlVTSU9OX0FQUF9FTlZJUk9OTUVOVCA9PT0gXCJkZW1vXCJcbiAgICAgICAgPyBcImh0dHBzOi8vZGV2ZWxvcC5ib29raW5ncy52YWNheW91LmNvbS9cIlxuICAgICAgICA6IFwiaHR0cHM6Ly9ib29raW5ncy52YWNheW91LmNvbS9cIjtcbmV4cG9ydCBjb25zdCBTREtfU0NSSVBUX0lEID0gXCJ0cmlwZnVzaW9uLXNka1wiO1xuZXhwb3J0IGNvbnN0IFdJREdFVF9JRCA9IFwidHJpcGZ1c2lvbi13aWRnZXRcIjtcbmV4cG9ydCBjb25zdCBXSURHRVRfSU5ORVJfV1JBUFBFUl9JRCA9IFwidHJpcGZ1c2lvbi13aWRnZXQtaW5uZXItd3JhcHBlclwiO1xuZXhwb3J0IGNvbnN0IFdJREdFVF9IRUFERVJfSUQgPSBcInRyaXBmdXNpb24td2lkZ2V0LWhlYWRlclwiO1xuZXhwb3J0IGNvbnN0IFdJREdFVF9DTE9TRV9CVVRUT05fSUQgPSBcInRyaXBmdXNpb24td2lkZ2V0LWNsb3NlLWJ1dHRvblwiO1xuZXhwb3J0IGNvbnN0IFdJREdFVF9IRUFERVJfVElUTEVfSUQgPSBcInRyaXBmdXNpb24td2lkZ2V0LWhlYWRlci10aXRsZVwiO1xuZXhwb3J0IGNvbnN0IFdJREdFVF9XUkFQUEVSX0lEID0gXCJ0cmlwZnVzaW9uLXdpZGdldC13cmFwcGVyXCI7XG5leHBvcnQgY29uc3QgV0lER0VUX0lGUkFNRV9JRCA9IFwidHJpcGZ1c2lvbi13aWRnZXQtaWZyYW1lXCI7XG5leHBvcnQgY29uc3QgUkVTVU1FX1BBTkVMX0lEID0gXCJ0cmlwZnVzaW9uLXJlc3VtZS1wYW5lbFwiO1xuZXhwb3J0IGNvbnN0IExPQURFUl9JRCA9IFwidHJpcGZ1c2lvbi1sb2FkZXJcIjtcbmV4cG9ydCBjb25zdCBCT09LSU5HX01PREUgPSB7XG4gICAgbm9ybWFsOiBcIm5vcm1hbFwiLFxuICAgIGFwcGVuZDogXCJhcHBlbmRcIixcbn0gYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgQVBQX01FU1NBR0VfVFlQRSA9IHtcbiAgICBXSURHRVRfUkVBRFk6IFwidHJpcGZ1c2lvbi13aWRnZXQtcmVhZHlcIixcbiAgICBCT09LSU5HX0NPTVBMRVRFRDogXCJ0cmlwZnVzaW9uLWJvb2tpbmctY29tcGxldGVkXCIsXG4gICAgU0VUX0NMSUVOVF9USEVNRTogXCJ0cmlwZnVzaW9uLXNldC1jbGllbnQtdGhlbWVcIixcbiAgICBTRVRfUFJJTUFSWV9HVUVTVF9OQU1FOiBcInRyaXBmdXNpb24tc2V0LWd1ZXN0LW5hbWVcIixcbiAgICBTRVRfREFURVM6IFwidHJpcGZ1c2lvbi1zZXQtZGF0ZXNcIixcbiAgICBTRVRfQ0FSVDogXCJ0cmlwZnVzaW9uLXNldC1jYXJ0XCIsXG59IGFzIGNvbnN0O1xuIiwiY29uc3QgcmVkdXhJbXBsID0gKHJlZHVjZXIsIGluaXRpYWwpID0+IChzZXQsIF9nZXQsIGFwaSkgPT4ge1xuICBhcGkuZGlzcGF0Y2ggPSAoYWN0aW9uKSA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gcmVkdWNlcihzdGF0ZSwgYWN0aW9uKSwgZmFsc2UsIGFjdGlvbik7XG4gICAgcmV0dXJuIGFjdGlvbjtcbiAgfTtcbiAgYXBpLmRpc3BhdGNoRnJvbURldnRvb2xzID0gdHJ1ZTtcbiAgcmV0dXJuIHsgZGlzcGF0Y2g6ICguLi5hKSA9PiBhcGkuZGlzcGF0Y2goLi4uYSksIC4uLmluaXRpYWwgfTtcbn07XG5jb25zdCByZWR1eCA9IHJlZHV4SW1wbDtcblxuY29uc3QgdHJhY2tlZENvbm5lY3Rpb25zID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbmNvbnN0IGdldFRyYWNrZWRDb25uZWN0aW9uU3RhdGUgPSAobmFtZSkgPT4ge1xuICBjb25zdCBhcGkgPSB0cmFja2VkQ29ubmVjdGlvbnMuZ2V0KG5hbWUpO1xuICBpZiAoIWFwaSkgcmV0dXJuIHt9O1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE9iamVjdC5lbnRyaWVzKGFwaS5zdG9yZXMpLm1hcCgoW2tleSwgYXBpMl0pID0+IFtrZXksIGFwaTIuZ2V0U3RhdGUoKV0pXG4gICk7XG59O1xuY29uc3QgZXh0cmFjdENvbm5lY3Rpb25JbmZvcm1hdGlvbiA9IChzdG9yZSwgZXh0ZW5zaW9uQ29ubmVjdG9yLCBvcHRpb25zKSA9PiB7XG4gIGlmIChzdG9yZSA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwidW50cmFja2VkXCIsXG4gICAgICBjb25uZWN0aW9uOiBleHRlbnNpb25Db25uZWN0b3IuY29ubmVjdChvcHRpb25zKVxuICAgIH07XG4gIH1cbiAgY29uc3QgZXhpc3RpbmdDb25uZWN0aW9uID0gdHJhY2tlZENvbm5lY3Rpb25zLmdldChvcHRpb25zLm5hbWUpO1xuICBpZiAoZXhpc3RpbmdDb25uZWN0aW9uKSB7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJ0cmFja2VkXCIsIHN0b3JlLCAuLi5leGlzdGluZ0Nvbm5lY3Rpb24gfTtcbiAgfVxuICBjb25zdCBuZXdDb25uZWN0aW9uID0ge1xuICAgIGNvbm5lY3Rpb246IGV4dGVuc2lvbkNvbm5lY3Rvci5jb25uZWN0KG9wdGlvbnMpLFxuICAgIHN0b3Jlczoge31cbiAgfTtcbiAgdHJhY2tlZENvbm5lY3Rpb25zLnNldChvcHRpb25zLm5hbWUsIG5ld0Nvbm5lY3Rpb24pO1xuICByZXR1cm4geyB0eXBlOiBcInRyYWNrZWRcIiwgc3RvcmUsIC4uLm5ld0Nvbm5lY3Rpb24gfTtcbn07XG5jb25zdCBkZXZ0b29sc0ltcGwgPSAoZm4sIGRldnRvb2xzT3B0aW9ucyA9IHt9KSA9PiAoc2V0LCBnZXQsIGFwaSkgPT4ge1xuICBjb25zdCB7IGVuYWJsZWQsIGFub255bW91c0FjdGlvblR5cGUsIHN0b3JlLCAuLi5vcHRpb25zIH0gPSBkZXZ0b29sc09wdGlvbnM7XG4gIGxldCBleHRlbnNpb25Db25uZWN0b3I7XG4gIHRyeSB7XG4gICAgZXh0ZW5zaW9uQ29ubmVjdG9yID0gKGVuYWJsZWQgIT0gbnVsbCA/IGVuYWJsZWQgOiAoaW1wb3J0Lm1ldGEuZW52ID8gaW1wb3J0Lm1ldGEuZW52Lk1PREUgOiB2b2lkIDApICE9PSBcInByb2R1Y3Rpb25cIikgJiYgd2luZG93Ll9fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX187XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxuICBpZiAoIWV4dGVuc2lvbkNvbm5lY3Rvcikge1xuICAgIHJldHVybiBmbihzZXQsIGdldCwgYXBpKTtcbiAgfVxuICBjb25zdCB7IGNvbm5lY3Rpb24sIC4uLmNvbm5lY3Rpb25JbmZvcm1hdGlvbiB9ID0gZXh0cmFjdENvbm5lY3Rpb25JbmZvcm1hdGlvbihzdG9yZSwgZXh0ZW5zaW9uQ29ubmVjdG9yLCBvcHRpb25zKTtcbiAgbGV0IGlzUmVjb3JkaW5nID0gdHJ1ZTtcbiAgYXBpLnNldFN0YXRlID0gKHN0YXRlLCByZXBsYWNlLCBuYW1lT3JBY3Rpb24pID0+IHtcbiAgICBjb25zdCByID0gc2V0KHN0YXRlLCByZXBsYWNlKTtcbiAgICBpZiAoIWlzUmVjb3JkaW5nKSByZXR1cm4gcjtcbiAgICBjb25zdCBhY3Rpb24gPSBuYW1lT3JBY3Rpb24gPT09IHZvaWQgMCA/IHsgdHlwZTogYW5vbnltb3VzQWN0aW9uVHlwZSB8fCBcImFub255bW91c1wiIH0gOiB0eXBlb2YgbmFtZU9yQWN0aW9uID09PSBcInN0cmluZ1wiID8geyB0eXBlOiBuYW1lT3JBY3Rpb24gfSA6IG5hbWVPckFjdGlvbjtcbiAgICBpZiAoc3RvcmUgPT09IHZvaWQgMCkge1xuICAgICAgY29ubmVjdGlvbiA9PSBudWxsID8gdm9pZCAwIDogY29ubmVjdGlvbi5zZW5kKGFjdGlvbiwgZ2V0KCkpO1xuICAgICAgcmV0dXJuIHI7XG4gICAgfVxuICAgIGNvbm5lY3Rpb24gPT0gbnVsbCA/IHZvaWQgMCA6IGNvbm5lY3Rpb24uc2VuZChcbiAgICAgIHtcbiAgICAgICAgLi4uYWN0aW9uLFxuICAgICAgICB0eXBlOiBgJHtzdG9yZX0vJHthY3Rpb24udHlwZX1gXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAuLi5nZXRUcmFja2VkQ29ubmVjdGlvblN0YXRlKG9wdGlvbnMubmFtZSksXG4gICAgICAgIFtzdG9yZV06IGFwaS5nZXRTdGF0ZSgpXG4gICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gcjtcbiAgfTtcbiAgY29uc3Qgc2V0U3RhdGVGcm9tRGV2dG9vbHMgPSAoLi4uYSkgPT4ge1xuICAgIGNvbnN0IG9yaWdpbmFsSXNSZWNvcmRpbmcgPSBpc1JlY29yZGluZztcbiAgICBpc1JlY29yZGluZyA9IGZhbHNlO1xuICAgIHNldCguLi5hKTtcbiAgICBpc1JlY29yZGluZyA9IG9yaWdpbmFsSXNSZWNvcmRpbmc7XG4gIH07XG4gIGNvbnN0IGluaXRpYWxTdGF0ZSA9IGZuKGFwaS5zZXRTdGF0ZSwgZ2V0LCBhcGkpO1xuICBpZiAoY29ubmVjdGlvbkluZm9ybWF0aW9uLnR5cGUgPT09IFwidW50cmFja2VkXCIpIHtcbiAgICBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLmluaXQoaW5pdGlhbFN0YXRlKTtcbiAgfSBlbHNlIHtcbiAgICBjb25uZWN0aW9uSW5mb3JtYXRpb24uc3RvcmVzW2Nvbm5lY3Rpb25JbmZvcm1hdGlvbi5zdG9yZV0gPSBhcGk7XG4gICAgY29ubmVjdGlvbiA9PSBudWxsID8gdm9pZCAwIDogY29ubmVjdGlvbi5pbml0KFxuICAgICAgT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICBPYmplY3QuZW50cmllcyhjb25uZWN0aW9uSW5mb3JtYXRpb24uc3RvcmVzKS5tYXAoKFtrZXksIHN0b3JlMl0pID0+IFtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAga2V5ID09PSBjb25uZWN0aW9uSW5mb3JtYXRpb24uc3RvcmUgPyBpbml0aWFsU3RhdGUgOiBzdG9yZTIuZ2V0U3RhdGUoKVxuICAgICAgICBdKVxuICAgICAgKVxuICAgICk7XG4gIH1cbiAgaWYgKGFwaS5kaXNwYXRjaEZyb21EZXZ0b29scyAmJiB0eXBlb2YgYXBpLmRpc3BhdGNoID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBsZXQgZGlkV2FybkFib3V0UmVzZXJ2ZWRBY3Rpb25UeXBlID0gZmFsc2U7XG4gICAgY29uc3Qgb3JpZ2luYWxEaXNwYXRjaCA9IGFwaS5kaXNwYXRjaDtcbiAgICBhcGkuZGlzcGF0Y2ggPSAoLi4uYSkgPT4ge1xuICAgICAgaWYgKChpbXBvcnQubWV0YS5lbnYgPyBpbXBvcnQubWV0YS5lbnYuTU9ERSA6IHZvaWQgMCkgIT09IFwicHJvZHVjdGlvblwiICYmIGFbMF0udHlwZSA9PT0gXCJfX3NldFN0YXRlXCIgJiYgIWRpZFdhcm5BYm91dFJlc2VydmVkQWN0aW9uVHlwZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ1t6dXN0YW5kIGRldnRvb2xzIG1pZGRsZXdhcmVdIFwiX19zZXRTdGF0ZVwiIGFjdGlvbiB0eXBlIGlzIHJlc2VydmVkIHRvIHNldCBzdGF0ZSBmcm9tIHRoZSBkZXZ0b29scy4gQXZvaWQgdXNpbmcgaXQuJ1xuICAgICAgICApO1xuICAgICAgICBkaWRXYXJuQWJvdXRSZXNlcnZlZEFjdGlvblR5cGUgPSB0cnVlO1xuICAgICAgfVxuICAgICAgb3JpZ2luYWxEaXNwYXRjaCguLi5hKTtcbiAgICB9O1xuICB9XG4gIGNvbm5lY3Rpb24uc3Vic2NyaWJlKChtZXNzYWdlKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIHN3aXRjaCAobWVzc2FnZS50eXBlKSB7XG4gICAgICBjYXNlIFwiQUNUSU9OXCI6XG4gICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZS5wYXlsb2FkICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIFwiW3p1c3RhbmQgZGV2dG9vbHMgbWlkZGxld2FyZV0gVW5zdXBwb3J0ZWQgYWN0aW9uIGZvcm1hdFwiXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnNlSnNvblRoZW4oXG4gICAgICAgICAgbWVzc2FnZS5wYXlsb2FkLFxuICAgICAgICAgIChhY3Rpb24pID0+IHtcbiAgICAgICAgICAgIGlmIChhY3Rpb24udHlwZSA9PT0gXCJfX3NldFN0YXRlXCIpIHtcbiAgICAgICAgICAgICAgaWYgKHN0b3JlID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgICAgICBzZXRTdGF0ZUZyb21EZXZ0b29scyhhY3Rpb24uc3RhdGUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoYWN0aW9uLnN0YXRlKS5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgYFxuICAgICAgICAgICAgICAgICAgICBbenVzdGFuZCBkZXZ0b29scyBtaWRkbGV3YXJlXSBVbnN1cHBvcnRlZCBfX3NldFN0YXRlIGFjdGlvbiBmb3JtYXQuXG4gICAgICAgICAgICAgICAgICAgIFdoZW4gdXNpbmcgJ3N0b3JlJyBvcHRpb24gaW4gZGV2dG9vbHMoKSwgdGhlICdzdGF0ZScgc2hvdWxkIGhhdmUgb25seSBvbmUga2V5LCB3aGljaCBpcyBhIHZhbHVlIG9mICdzdG9yZScgdGhhdCB3YXMgcGFzc2VkIGluIGRldnRvb2xzKCksXG4gICAgICAgICAgICAgICAgICAgIGFuZCB2YWx1ZSBvZiB0aGlzIG9ubHkga2V5IHNob3VsZCBiZSBhIHN0YXRlIG9iamVjdC4gRXhhbXBsZTogeyBcInR5cGVcIjogXCJfX3NldFN0YXRlXCIsIFwic3RhdGVcIjogeyBcImFiYzEyM1N0b3JlXCI6IHsgXCJmb29cIjogXCJiYXJcIiB9IH0gfVxuICAgICAgICAgICAgICAgICAgICBgXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBzdGF0ZUZyb21EZXZ0b29scyA9IGFjdGlvbi5zdGF0ZVtzdG9yZV07XG4gICAgICAgICAgICAgIGlmIChzdGF0ZUZyb21EZXZ0b29scyA9PT0gdm9pZCAwIHx8IHN0YXRlRnJvbURldnRvb2xzID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShhcGkuZ2V0U3RhdGUoKSkgIT09IEpTT04uc3RyaW5naWZ5KHN0YXRlRnJvbURldnRvb2xzKSkge1xuICAgICAgICAgICAgICAgIHNldFN0YXRlRnJvbURldnRvb2xzKHN0YXRlRnJvbURldnRvb2xzKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWFwaS5kaXNwYXRjaEZyb21EZXZ0b29scykgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBhcGkuZGlzcGF0Y2ggIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuO1xuICAgICAgICAgICAgYXBpLmRpc3BhdGNoKGFjdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgY2FzZSBcIkRJU1BBVENIXCI6XG4gICAgICAgIHN3aXRjaCAobWVzc2FnZS5wYXlsb2FkLnR5cGUpIHtcbiAgICAgICAgICBjYXNlIFwiUkVTRVRcIjpcbiAgICAgICAgICAgIHNldFN0YXRlRnJvbURldnRvb2xzKGluaXRpYWxTdGF0ZSk7XG4gICAgICAgICAgICBpZiAoc3RvcmUgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICByZXR1cm4gY29ubmVjdGlvbiA9PSBudWxsID8gdm9pZCAwIDogY29ubmVjdGlvbi5pbml0KGFwaS5nZXRTdGF0ZSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLmluaXQoZ2V0VHJhY2tlZENvbm5lY3Rpb25TdGF0ZShvcHRpb25zLm5hbWUpKTtcbiAgICAgICAgICBjYXNlIFwiQ09NTUlUXCI6XG4gICAgICAgICAgICBpZiAoc3RvcmUgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLmluaXQoYXBpLmdldFN0YXRlKCkpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY29ubmVjdGlvbiA9PSBudWxsID8gdm9pZCAwIDogY29ubmVjdGlvbi5pbml0KGdldFRyYWNrZWRDb25uZWN0aW9uU3RhdGUob3B0aW9ucy5uYW1lKSk7XG4gICAgICAgICAgY2FzZSBcIlJPTExCQUNLXCI6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VKc29uVGhlbihtZXNzYWdlLnN0YXRlLCAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHN0b3JlID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgICAgICBzZXRTdGF0ZUZyb21EZXZ0b29scyhzdGF0ZSk7XG4gICAgICAgICAgICAgICAgY29ubmVjdGlvbiA9PSBudWxsID8gdm9pZCAwIDogY29ubmVjdGlvbi5pbml0KGFwaS5nZXRTdGF0ZSgpKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgc2V0U3RhdGVGcm9tRGV2dG9vbHMoc3RhdGVbc3RvcmVdKTtcbiAgICAgICAgICAgICAgY29ubmVjdGlvbiA9PSBudWxsID8gdm9pZCAwIDogY29ubmVjdGlvbi5pbml0KGdldFRyYWNrZWRDb25uZWN0aW9uU3RhdGUob3B0aW9ucy5uYW1lKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICBjYXNlIFwiSlVNUF9UT19TVEFURVwiOlxuICAgICAgICAgIGNhc2UgXCJKVU1QX1RPX0FDVElPTlwiOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlSnNvblRoZW4obWVzc2FnZS5zdGF0ZSwgKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChzdG9yZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICAgICAgc2V0U3RhdGVGcm9tRGV2dG9vbHMoc3RhdGUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoYXBpLmdldFN0YXRlKCkpICE9PSBKU09OLnN0cmluZ2lmeShzdGF0ZVtzdG9yZV0pKSB7XG4gICAgICAgICAgICAgICAgc2V0U3RhdGVGcm9tRGV2dG9vbHMoc3RhdGVbc3RvcmVdKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgY2FzZSBcIklNUE9SVF9TVEFURVwiOiB7XG4gICAgICAgICAgICBjb25zdCB7IG5leHRMaWZ0ZWRTdGF0ZSB9ID0gbWVzc2FnZS5wYXlsb2FkO1xuICAgICAgICAgICAgY29uc3QgbGFzdENvbXB1dGVkU3RhdGUgPSAoX2EgPSBuZXh0TGlmdGVkU3RhdGUuY29tcHV0ZWRTdGF0ZXMuc2xpY2UoLTEpWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX2Euc3RhdGU7XG4gICAgICAgICAgICBpZiAoIWxhc3RDb21wdXRlZFN0YXRlKSByZXR1cm47XG4gICAgICAgICAgICBpZiAoc3RvcmUgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICBzZXRTdGF0ZUZyb21EZXZ0b29scyhsYXN0Q29tcHV0ZWRTdGF0ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzZXRTdGF0ZUZyb21EZXZ0b29scyhsYXN0Q29tcHV0ZWRTdGF0ZVtzdG9yZV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29ubmVjdGlvbiA9PSBudWxsID8gdm9pZCAwIDogY29ubmVjdGlvbi5zZW5kKFxuICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAvLyBGSVhNRSBuby1hbnlcbiAgICAgICAgICAgICAgbmV4dExpZnRlZFN0YXRlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIFwiUEFVU0VfUkVDT1JESU5HXCI6XG4gICAgICAgICAgICByZXR1cm4gaXNSZWNvcmRpbmcgPSAhaXNSZWNvcmRpbmc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBpbml0aWFsU3RhdGU7XG59O1xuY29uc3QgZGV2dG9vbHMgPSBkZXZ0b29sc0ltcGw7XG5jb25zdCBwYXJzZUpzb25UaGVuID0gKHN0cmluZ2lmaWVkLCBmKSA9PiB7XG4gIGxldCBwYXJzZWQ7XG4gIHRyeSB7XG4gICAgcGFyc2VkID0gSlNPTi5wYXJzZShzdHJpbmdpZmllZCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCJbenVzdGFuZCBkZXZ0b29scyBtaWRkbGV3YXJlXSBDb3VsZCBub3QgcGFyc2UgdGhlIHJlY2VpdmVkIGpzb25cIixcbiAgICAgIGVcbiAgICApO1xuICB9XG4gIGlmIChwYXJzZWQgIT09IHZvaWQgMCkgZihwYXJzZWQpO1xufTtcblxuY29uc3Qgc3Vic2NyaWJlV2l0aFNlbGVjdG9ySW1wbCA9IChmbikgPT4gKHNldCwgZ2V0LCBhcGkpID0+IHtcbiAgY29uc3Qgb3JpZ1N1YnNjcmliZSA9IGFwaS5zdWJzY3JpYmU7XG4gIGFwaS5zdWJzY3JpYmUgPSAoc2VsZWN0b3IsIG9wdExpc3RlbmVyLCBvcHRpb25zKSA9PiB7XG4gICAgbGV0IGxpc3RlbmVyID0gc2VsZWN0b3I7XG4gICAgaWYgKG9wdExpc3RlbmVyKSB7XG4gICAgICBjb25zdCBlcXVhbGl0eUZuID0gKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuZXF1YWxpdHlGbikgfHwgT2JqZWN0LmlzO1xuICAgICAgbGV0IGN1cnJlbnRTbGljZSA9IHNlbGVjdG9yKGFwaS5nZXRTdGF0ZSgpKTtcbiAgICAgIGxpc3RlbmVyID0gKHN0YXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHRTbGljZSA9IHNlbGVjdG9yKHN0YXRlKTtcbiAgICAgICAgaWYgKCFlcXVhbGl0eUZuKGN1cnJlbnRTbGljZSwgbmV4dFNsaWNlKSkge1xuICAgICAgICAgIGNvbnN0IHByZXZpb3VzU2xpY2UgPSBjdXJyZW50U2xpY2U7XG4gICAgICAgICAgb3B0TGlzdGVuZXIoY3VycmVudFNsaWNlID0gbmV4dFNsaWNlLCBwcmV2aW91c1NsaWNlKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGlmIChvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLmZpcmVJbW1lZGlhdGVseSkge1xuICAgICAgICBvcHRMaXN0ZW5lcihjdXJyZW50U2xpY2UsIGN1cnJlbnRTbGljZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvcmlnU3Vic2NyaWJlKGxpc3RlbmVyKTtcbiAgfTtcbiAgY29uc3QgaW5pdGlhbFN0YXRlID0gZm4oc2V0LCBnZXQsIGFwaSk7XG4gIHJldHVybiBpbml0aWFsU3RhdGU7XG59O1xuY29uc3Qgc3Vic2NyaWJlV2l0aFNlbGVjdG9yID0gc3Vic2NyaWJlV2l0aFNlbGVjdG9ySW1wbDtcblxuY29uc3QgY29tYmluZSA9IChpbml0aWFsU3RhdGUsIGNyZWF0ZSkgPT4gKC4uLmEpID0+IE9iamVjdC5hc3NpZ24oe30sIGluaXRpYWxTdGF0ZSwgY3JlYXRlKC4uLmEpKTtcblxuZnVuY3Rpb24gY3JlYXRlSlNPTlN0b3JhZ2UoZ2V0U3RvcmFnZSwgb3B0aW9ucykge1xuICBsZXQgc3RvcmFnZTtcbiAgdHJ5IHtcbiAgICBzdG9yYWdlID0gZ2V0U3RvcmFnZSgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHBlcnNpc3RTdG9yYWdlID0ge1xuICAgIGdldEl0ZW06IChuYW1lKSA9PiB7XG4gICAgICB2YXIgX2E7XG4gICAgICBjb25zdCBwYXJzZSA9IChzdHIyKSA9PiB7XG4gICAgICAgIGlmIChzdHIyID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2Uoc3RyMiwgb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5yZXZpdmVyKTtcbiAgICAgIH07XG4gICAgICBjb25zdCBzdHIgPSAoX2EgPSBzdG9yYWdlLmdldEl0ZW0obmFtZSkpICE9IG51bGwgPyBfYSA6IG51bGw7XG4gICAgICBpZiAoc3RyIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICByZXR1cm4gc3RyLnRoZW4ocGFyc2UpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhcnNlKHN0cik7XG4gICAgfSxcbiAgICBzZXRJdGVtOiAobmFtZSwgbmV3VmFsdWUpID0+IHN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgIG5hbWUsXG4gICAgICBKU09OLnN0cmluZ2lmeShuZXdWYWx1ZSwgb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5yZXBsYWNlcilcbiAgICApLFxuICAgIHJlbW92ZUl0ZW06IChuYW1lKSA9PiBzdG9yYWdlLnJlbW92ZUl0ZW0obmFtZSlcbiAgfTtcbiAgcmV0dXJuIHBlcnNpc3RTdG9yYWdlO1xufVxuY29uc3QgdG9UaGVuYWJsZSA9IChmbikgPT4gKGlucHV0KSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0ID0gZm4oaW5wdXQpO1xuICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgdGhlbihvbkZ1bGZpbGxlZCkge1xuICAgICAgICByZXR1cm4gdG9UaGVuYWJsZShvbkZ1bGZpbGxlZCkocmVzdWx0KTtcbiAgICAgIH0sXG4gICAgICBjYXRjaChfb25SZWplY3RlZCkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRoZW4oX29uRnVsZmlsbGVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIGNhdGNoKG9uUmVqZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHRvVGhlbmFibGUob25SZWplY3RlZCkoZSk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxufTtcbmNvbnN0IHBlcnNpc3RJbXBsID0gKGNvbmZpZywgYmFzZU9wdGlvbnMpID0+IChzZXQsIGdldCwgYXBpKSA9PiB7XG4gIGxldCBvcHRpb25zID0ge1xuICAgIHN0b3JhZ2U6IGNyZWF0ZUpTT05TdG9yYWdlKCgpID0+IGxvY2FsU3RvcmFnZSksXG4gICAgcGFydGlhbGl6ZTogKHN0YXRlKSA9PiBzdGF0ZSxcbiAgICB2ZXJzaW9uOiAwLFxuICAgIG1lcmdlOiAocGVyc2lzdGVkU3RhdGUsIGN1cnJlbnRTdGF0ZSkgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnRTdGF0ZSxcbiAgICAgIC4uLnBlcnNpc3RlZFN0YXRlXG4gICAgfSksXG4gICAgLi4uYmFzZU9wdGlvbnNcbiAgfTtcbiAgbGV0IGhhc0h5ZHJhdGVkID0gZmFsc2U7XG4gIGNvbnN0IGh5ZHJhdGlvbkxpc3RlbmVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gIGNvbnN0IGZpbmlzaEh5ZHJhdGlvbkxpc3RlbmVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gIGxldCBzdG9yYWdlID0gb3B0aW9ucy5zdG9yYWdlO1xuICBpZiAoIXN0b3JhZ2UpIHtcbiAgICByZXR1cm4gY29uZmlnKFxuICAgICAgKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBbenVzdGFuZCBwZXJzaXN0IG1pZGRsZXdhcmVdIFVuYWJsZSB0byB1cGRhdGUgaXRlbSAnJHtvcHRpb25zLm5hbWV9JywgdGhlIGdpdmVuIHN0b3JhZ2UgaXMgY3VycmVudGx5IHVuYXZhaWxhYmxlLmBcbiAgICAgICAgKTtcbiAgICAgICAgc2V0KC4uLmFyZ3MpO1xuICAgICAgfSxcbiAgICAgIGdldCxcbiAgICAgIGFwaVxuICAgICk7XG4gIH1cbiAgY29uc3Qgc2V0SXRlbSA9ICgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IG9wdGlvbnMucGFydGlhbGl6ZSh7IC4uLmdldCgpIH0pO1xuICAgIHJldHVybiBzdG9yYWdlLnNldEl0ZW0ob3B0aW9ucy5uYW1lLCB7XG4gICAgICBzdGF0ZSxcbiAgICAgIHZlcnNpb246IG9wdGlvbnMudmVyc2lvblxuICAgIH0pO1xuICB9O1xuICBjb25zdCBzYXZlZFNldFN0YXRlID0gYXBpLnNldFN0YXRlO1xuICBhcGkuc2V0U3RhdGUgPSAoc3RhdGUsIHJlcGxhY2UpID0+IHtcbiAgICBzYXZlZFNldFN0YXRlKHN0YXRlLCByZXBsYWNlKTtcbiAgICB2b2lkIHNldEl0ZW0oKTtcbiAgfTtcbiAgY29uc3QgY29uZmlnUmVzdWx0ID0gY29uZmlnKFxuICAgICguLi5hcmdzKSA9PiB7XG4gICAgICBzZXQoLi4uYXJncyk7XG4gICAgICB2b2lkIHNldEl0ZW0oKTtcbiAgICB9LFxuICAgIGdldCxcbiAgICBhcGlcbiAgKTtcbiAgYXBpLmdldEluaXRpYWxTdGF0ZSA9ICgpID0+IGNvbmZpZ1Jlc3VsdDtcbiAgbGV0IHN0YXRlRnJvbVN0b3JhZ2U7XG4gIGNvbnN0IGh5ZHJhdGUgPSAoKSA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBpZiAoIXN0b3JhZ2UpIHJldHVybjtcbiAgICBoYXNIeWRyYXRlZCA9IGZhbHNlO1xuICAgIGh5ZHJhdGlvbkxpc3RlbmVycy5mb3JFYWNoKChjYikgPT4ge1xuICAgICAgdmFyIF9hMjtcbiAgICAgIHJldHVybiBjYigoX2EyID0gZ2V0KCkpICE9IG51bGwgPyBfYTIgOiBjb25maWdSZXN1bHQpO1xuICAgIH0pO1xuICAgIGNvbnN0IHBvc3RSZWh5ZHJhdGlvbkNhbGxiYWNrID0gKChfYiA9IG9wdGlvbnMub25SZWh5ZHJhdGVTdG9yYWdlKSA9PSBudWxsID8gdm9pZCAwIDogX2IuY2FsbChvcHRpb25zLCAoX2EgPSBnZXQoKSkgIT0gbnVsbCA/IF9hIDogY29uZmlnUmVzdWx0KSkgfHwgdm9pZCAwO1xuICAgIHJldHVybiB0b1RoZW5hYmxlKHN0b3JhZ2UuZ2V0SXRlbS5iaW5kKHN0b3JhZ2UpKShvcHRpb25zLm5hbWUpLnRoZW4oKGRlc2VyaWFsaXplZFN0b3JhZ2VWYWx1ZSkgPT4ge1xuICAgICAgaWYgKGRlc2VyaWFsaXplZFN0b3JhZ2VWYWx1ZSkge1xuICAgICAgICBpZiAodHlwZW9mIGRlc2VyaWFsaXplZFN0b3JhZ2VWYWx1ZS52ZXJzaW9uID09PSBcIm51bWJlclwiICYmIGRlc2VyaWFsaXplZFN0b3JhZ2VWYWx1ZS52ZXJzaW9uICE9PSBvcHRpb25zLnZlcnNpb24pIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5taWdyYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgICBvcHRpb25zLm1pZ3JhdGUoXG4gICAgICAgICAgICAgICAgZGVzZXJpYWxpemVkU3RvcmFnZVZhbHVlLnN0YXRlLFxuICAgICAgICAgICAgICAgIGRlc2VyaWFsaXplZFN0b3JhZ2VWYWx1ZS52ZXJzaW9uXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBgU3RhdGUgbG9hZGVkIGZyb20gc3RvcmFnZSBjb3VsZG4ndCBiZSBtaWdyYXRlZCBzaW5jZSBubyBtaWdyYXRlIGZ1bmN0aW9uIHdhcyBwcm92aWRlZGBcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBbZmFsc2UsIGRlc2VyaWFsaXplZFN0b3JhZ2VWYWx1ZS5zdGF0ZV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBbZmFsc2UsIHZvaWQgMF07XG4gICAgfSkudGhlbigobWlncmF0aW9uUmVzdWx0KSA9PiB7XG4gICAgICB2YXIgX2EyO1xuICAgICAgY29uc3QgW21pZ3JhdGVkLCBtaWdyYXRlZFN0YXRlXSA9IG1pZ3JhdGlvblJlc3VsdDtcbiAgICAgIHN0YXRlRnJvbVN0b3JhZ2UgPSBvcHRpb25zLm1lcmdlKFxuICAgICAgICBtaWdyYXRlZFN0YXRlLFxuICAgICAgICAoX2EyID0gZ2V0KCkpICE9IG51bGwgPyBfYTIgOiBjb25maWdSZXN1bHRcbiAgICAgICk7XG4gICAgICBzZXQoc3RhdGVGcm9tU3RvcmFnZSwgdHJ1ZSk7XG4gICAgICBpZiAobWlncmF0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHNldEl0ZW0oKTtcbiAgICAgIH1cbiAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgIHBvc3RSZWh5ZHJhdGlvbkNhbGxiYWNrID09IG51bGwgPyB2b2lkIDAgOiBwb3N0UmVoeWRyYXRpb25DYWxsYmFjayhzdGF0ZUZyb21TdG9yYWdlLCB2b2lkIDApO1xuICAgICAgc3RhdGVGcm9tU3RvcmFnZSA9IGdldCgpO1xuICAgICAgaGFzSHlkcmF0ZWQgPSB0cnVlO1xuICAgICAgZmluaXNoSHlkcmF0aW9uTGlzdGVuZXJzLmZvckVhY2goKGNiKSA9PiBjYihzdGF0ZUZyb21TdG9yYWdlKSk7XG4gICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgIHBvc3RSZWh5ZHJhdGlvbkNhbGxiYWNrID09IG51bGwgPyB2b2lkIDAgOiBwb3N0UmVoeWRyYXRpb25DYWxsYmFjayh2b2lkIDAsIGUpO1xuICAgIH0pO1xuICB9O1xuICBhcGkucGVyc2lzdCA9IHtcbiAgICBzZXRPcHRpb25zOiAobmV3T3B0aW9ucykgPT4ge1xuICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgLi4ubmV3T3B0aW9uc1xuICAgICAgfTtcbiAgICAgIGlmIChuZXdPcHRpb25zLnN0b3JhZ2UpIHtcbiAgICAgICAgc3RvcmFnZSA9IG5ld09wdGlvbnMuc3RvcmFnZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGNsZWFyU3RvcmFnZTogKCkgPT4ge1xuICAgICAgc3RvcmFnZSA9PSBudWxsID8gdm9pZCAwIDogc3RvcmFnZS5yZW1vdmVJdGVtKG9wdGlvbnMubmFtZSk7XG4gICAgfSxcbiAgICBnZXRPcHRpb25zOiAoKSA9PiBvcHRpb25zLFxuICAgIHJlaHlkcmF0ZTogKCkgPT4gaHlkcmF0ZSgpLFxuICAgIGhhc0h5ZHJhdGVkOiAoKSA9PiBoYXNIeWRyYXRlZCxcbiAgICBvbkh5ZHJhdGU6IChjYikgPT4ge1xuICAgICAgaHlkcmF0aW9uTGlzdGVuZXJzLmFkZChjYik7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBoeWRyYXRpb25MaXN0ZW5lcnMuZGVsZXRlKGNiKTtcbiAgICAgIH07XG4gICAgfSxcbiAgICBvbkZpbmlzaEh5ZHJhdGlvbjogKGNiKSA9PiB7XG4gICAgICBmaW5pc2hIeWRyYXRpb25MaXN0ZW5lcnMuYWRkKGNiKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGZpbmlzaEh5ZHJhdGlvbkxpc3RlbmVycy5kZWxldGUoY2IpO1xuICAgICAgfTtcbiAgICB9XG4gIH07XG4gIGlmICghb3B0aW9ucy5za2lwSHlkcmF0aW9uKSB7XG4gICAgaHlkcmF0ZSgpO1xuICB9XG4gIHJldHVybiBzdGF0ZUZyb21TdG9yYWdlIHx8IGNvbmZpZ1Jlc3VsdDtcbn07XG5jb25zdCBwZXJzaXN0ID0gcGVyc2lzdEltcGw7XG5cbmV4cG9ydCB7IGNvbWJpbmUsIGNyZWF0ZUpTT05TdG9yYWdlLCBkZXZ0b29scywgcGVyc2lzdCwgcmVkdXgsIHN1YnNjcmliZVdpdGhTZWxlY3RvciB9O1xuIiwiY29uc3QgY3JlYXRlU3RvcmVJbXBsID0gKGNyZWF0ZVN0YXRlKSA9PiB7XG4gIGxldCBzdGF0ZTtcbiAgY29uc3QgbGlzdGVuZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgY29uc3Qgc2V0U3RhdGUgPSAocGFydGlhbCwgcmVwbGFjZSkgPT4ge1xuICAgIGNvbnN0IG5leHRTdGF0ZSA9IHR5cGVvZiBwYXJ0aWFsID09PSBcImZ1bmN0aW9uXCIgPyBwYXJ0aWFsKHN0YXRlKSA6IHBhcnRpYWw7XG4gICAgaWYgKCFPYmplY3QuaXMobmV4dFN0YXRlLCBzdGF0ZSkpIHtcbiAgICAgIGNvbnN0IHByZXZpb3VzU3RhdGUgPSBzdGF0ZTtcbiAgICAgIHN0YXRlID0gKHJlcGxhY2UgIT0gbnVsbCA/IHJlcGxhY2UgOiB0eXBlb2YgbmV4dFN0YXRlICE9PSBcIm9iamVjdFwiIHx8IG5leHRTdGF0ZSA9PT0gbnVsbCkgPyBuZXh0U3RhdGUgOiBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSwgbmV4dFN0YXRlKTtcbiAgICAgIGxpc3RlbmVycy5mb3JFYWNoKChsaXN0ZW5lcikgPT4gbGlzdGVuZXIoc3RhdGUsIHByZXZpb3VzU3RhdGUpKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGdldFN0YXRlID0gKCkgPT4gc3RhdGU7XG4gIGNvbnN0IGdldEluaXRpYWxTdGF0ZSA9ICgpID0+IGluaXRpYWxTdGF0ZTtcbiAgY29uc3Qgc3Vic2NyaWJlID0gKGxpc3RlbmVyKSA9PiB7XG4gICAgbGlzdGVuZXJzLmFkZChsaXN0ZW5lcik7XG4gICAgcmV0dXJuICgpID0+IGxpc3RlbmVycy5kZWxldGUobGlzdGVuZXIpO1xuICB9O1xuICBjb25zdCBhcGkgPSB7IHNldFN0YXRlLCBnZXRTdGF0ZSwgZ2V0SW5pdGlhbFN0YXRlLCBzdWJzY3JpYmUgfTtcbiAgY29uc3QgaW5pdGlhbFN0YXRlID0gc3RhdGUgPSBjcmVhdGVTdGF0ZShzZXRTdGF0ZSwgZ2V0U3RhdGUsIGFwaSk7XG4gIHJldHVybiBhcGk7XG59O1xuY29uc3QgY3JlYXRlU3RvcmUgPSAoY3JlYXRlU3RhdGUpID0+IGNyZWF0ZVN0YXRlID8gY3JlYXRlU3RvcmVJbXBsKGNyZWF0ZVN0YXRlKSA6IGNyZWF0ZVN0b3JlSW1wbDtcblxuZXhwb3J0IHsgY3JlYXRlU3RvcmUgfTtcbiIsImltcG9ydCB7IHBlcnNpc3QsIGNyZWF0ZUpTT05TdG9yYWdlIH0gZnJvbSBcInp1c3RhbmQvbWlkZGxld2FyZVwiO1xuaW1wb3J0IHsgY3JlYXRlU3RvcmUgfSBmcm9tIFwienVzdGFuZC92YW5pbGxhXCI7XG5cbi8vIFRPRE86IGNhcnQgc2hvdWxkIGJlIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQgcHJvamVjdFxudHlwZSBXaWRnZXRTdGF0ZSA9IHtcbiAgICBpc09wZW46IGJvb2xlYW47XG4gICAgaXNSZXN1bWVQYW5lbFZpc2libGU6IGJvb2xlYW47XG4gICAgaXNSZWFkeTogYm9vbGVhbjtcbiAgICBpc0Jvb2tpbmdDb21wbGV0ZWQ6IGJvb2xlYW47XG4gICAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gICAgcHJpbWFyeUd1ZXN0TmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgICBjaGVja0luRGF0ZTogc3RyaW5nIHwgbnVsbDtcbiAgICBjaGVja091dERhdGU6IHN0cmluZyB8IG51bGw7XG4gICAgY2FydDogYW55O1xufTtcblxudHlwZSBBY3Rpb25zID0ge1xuICAgIHNob3dXaWRnZXQ6ICgpID0+IHZvaWQ7XG4gICAgaGlkZVdpZGdldDogKCkgPT4gdm9pZDtcbiAgICBzaG93UmVzdW1lUGFuZWw6ICgpID0+IHZvaWQ7XG4gICAgaGlkZVJlc3VtZVBhbmVsOiAoKSA9PiB2b2lkO1xuICAgIHNldElzUmVhZHk6IChpc1JlYWR5OiBib29sZWFuKSA9PiB2b2lkO1xuICAgIHNldElzQm9va2luZ0NvbXBsZXRlZDogKGlzQ29tcGxldGVkOiBib29sZWFuKSA9PiB2b2lkO1xuICAgIHNldEJhY2tncm91bmRDb2xvcjogKGNvbG9yPzogc3RyaW5nKSA9PiB2b2lkO1xuICAgIHNldFByaW1hcnlHdWVzdE5hbWU6IChuYW1lOiBzdHJpbmcpID0+IHZvaWQ7XG4gICAgc2V0Q2FydDogKGNhcnQ/OiBhbnkpID0+IHZvaWQ7XG4gICAgc2V0RGF0ZXM6IChjaGVja0luRGF0ZTogc3RyaW5nLCBjaGVja091dERhdGU6IHN0cmluZykgPT4gdm9pZDtcbiAgICByZXNldDogKCkgPT4gdm9pZDtcbn07XG5cbmNvbnN0IGluaXRpYWxXaWRnZXRTdGF0ZTogV2lkZ2V0U3RhdGUgPSB7XG4gICAgaXNPcGVuOiBmYWxzZSxcbiAgICBpc1Jlc3VtZVBhbmVsVmlzaWJsZTogZmFsc2UsXG4gICAgaXNSZWFkeTogZmFsc2UsXG4gICAgaXNCb29raW5nQ29tcGxldGVkOiBmYWxzZSxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IFwicmdiKDM1LCA3NiwgMTIxKVwiLFxuICAgIHByaW1hcnlHdWVzdE5hbWU6IG51bGwsXG4gICAgY2hlY2tJbkRhdGU6IG51bGwsXG4gICAgY2hlY2tPdXREYXRlOiBudWxsLFxuICAgIGNhcnQ6IHt9LFxufTtcblxuZXhwb3J0IGNvbnN0IHdpZGdldFN0b3JlID0gY3JlYXRlU3RvcmU8V2lkZ2V0U3RhdGUgJiBBY3Rpb25zPigpKFxuICAgIHBlcnNpc3QoXG4gICAgICAgIChzZXQpID0+ICh7XG4gICAgICAgICAgICAuLi5pbml0aWFsV2lkZ2V0U3RhdGUsXG4gICAgICAgICAgICBzaG93V2lkZ2V0OiAoKSA9PiBzZXQoeyBpc09wZW46IHRydWUgfSksXG4gICAgICAgICAgICBoaWRlV2lkZ2V0OiAoKSA9PiBzZXQoeyBpc09wZW46IGZhbHNlIH0pLFxuICAgICAgICAgICAgc2hvd1Jlc3VtZVBhbmVsOiAoKSA9PiBzZXQoeyBpc1Jlc3VtZVBhbmVsVmlzaWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgICAgIGhpZGVSZXN1bWVQYW5lbDogKCkgPT4gc2V0KHsgaXNSZXN1bWVQYW5lbFZpc2libGU6IGZhbHNlIH0pLFxuICAgICAgICAgICAgc2V0SXNSZWFkeTogKGlzUmVhZHkpID0+IHNldCh7IGlzUmVhZHkgfSksXG4gICAgICAgICAgICBzZXRJc0Jvb2tpbmdDb21wbGV0ZWQ6IChpc0Jvb2tpbmdDb21wbGV0ZWQpID0+IHNldCh7IGlzQm9va2luZ0NvbXBsZXRlZCB9KSxcbiAgICAgICAgICAgIHNldEJhY2tncm91bmRDb2xvcjogKGJhY2tncm91bmRDb2xvcikgPT5cbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgPyBzZXQoeyBiYWNrZ3JvdW5kQ29sb3IgfSlcbiAgICAgICAgICAgICAgICAgICAgOiBzZXQoeyBiYWNrZ3JvdW5kQ29sb3I6IGluaXRpYWxXaWRnZXRTdGF0ZS5iYWNrZ3JvdW5kQ29sb3IgfSksXG4gICAgICAgICAgICBzZXRQcmltYXJ5R3Vlc3ROYW1lOiAocHJpbWFyeUd1ZXN0TmFtZSkgPT4gc2V0KHsgcHJpbWFyeUd1ZXN0TmFtZSB9KSxcbiAgICAgICAgICAgIHNldENhcnQ6IChjYXJ0KSA9PiBzZXQoeyBjYXJ0IH0pLFxuICAgICAgICAgICAgc2V0RGF0ZXM6IChjaGVja0luRGF0ZSwgY2hlY2tPdXREYXRlKSA9PiBzZXQoeyBjaGVja0luRGF0ZSwgY2hlY2tPdXREYXRlIH0pLFxuICAgICAgICAgICAgcmVzZXQ6ICgpID0+IHNldChpbml0aWFsV2lkZ2V0U3RhdGUpLFxuICAgICAgICB9KSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJ3aWRnZXRTdG9yZVwiLFxuICAgICAgICAgICAgc3RvcmFnZTogY3JlYXRlSlNPTlN0b3JhZ2UoKCkgPT4gc2Vzc2lvblN0b3JhZ2UpLFxuICAgICAgICAgICAgcGFydGlhbGl6ZTogKHN0YXRlKSA9PlxuICAgICAgICAgICAgICAgIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhzdGF0ZSkuZmlsdGVyKChba2V5XSkgPT4gIVtcImNhcnRcIiwgXCJpc1JlYWR5XCJdLmluY2x1ZGVzKGtleSkpKSxcbiAgICAgICAgICAgIG9uUmVoeWRyYXRlU3RvcmFnZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlPy5pc0Jvb2tpbmdDb21wbGV0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgIClcbik7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgeyBTREtfU0NSSVBUX0lELCBUUklQRlVTSU9OX0JBU0VfVVJMIH0gZnJvbSBcIi4vY29uc3RcIjtcblxuZXhwb3J0IGNvbnN0IHN0cmluZ2lmeVByaWNlID0gKGNlbnRzOiBudW1iZXIgfCBudWxsKSA9PlxuICAgIGNlbnRzICE9PSBudWxsID8gbmV3IEludGwuTnVtYmVyRm9ybWF0KFwiZW4tVVNcIiwgeyBzdHlsZTogXCJjdXJyZW5jeVwiLCBjdXJyZW5jeTogXCJVU0RcIiB9KS5mb3JtYXQoY2VudHMgLyAxMDApIDogXCJcIjtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRQYXJhbXMgPSAoKSA9PiB7XG4gICAgY29uc3QgJGpzU2RrID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoU0RLX1NDUklQVF9JRCkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QganNTZGtTcmMgPSAkanNTZGsuZ2V0QXR0cmlidXRlKFwic3JjXCIpIGFzIHN0cmluZztcbiAgICBjb25zdCB1cmxQYXJhbXMgPSBnZXRQYXJhbXNGcm9tVXJsKG5ldyBVUkxTZWFyY2hQYXJhbXMoanNTZGtTcmMuc3Vic3RyaW5nKGpzU2RrU3JjLmluZGV4T2YoXCI/XCIpKSkpO1xuXG4gICAgY29uc3QgY2xpZW50ID0gdXJsUGFyYW1zW1wiY2xpZW50XCJdID8/IG51bGw7XG4gICAgY29uc3QgcHJvcGVydHlJZCA9IHVybFBhcmFtc1tcInByb3BlcnR5SWRcIl0gPyArdXJsUGFyYW1zW1wicHJvcGVydHlJZFwiXSA6IG51bGw7XG5cbiAgICByZXR1cm4geyBjbGllbnQsIHByb3BlcnR5SWQgfTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJhbXNGcm9tVXJsKHVybFNlYXJjaFBhcmFtczogVVJMU2VhcmNoUGFyYW1zKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3QgYXZhaWxhYmxlU2VhcmNoUGFyYW1zTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICB0cmlwZnVzaW9uOiBcInRyaXBmdXNpb25cIixcbiAgICAgICAgY2xpZW50OiBcImNsaWVudFwiLFxuICAgICAgICBwcm9wZXJ0eWlkOiBcInByb3BlcnR5SWRcIixcbiAgICAgICAgbW9kZTogXCJtb2RlXCIsXG4gICAgICAgIG9mZmVyaWQ6IFwib2ZmZXJJZFwiLFxuICAgICAgICBib29raW5naWQ6IFwiYm9va2luZ0lkXCIsXG4gICAgICAgIGNoZWNraW46IFwiY2hlY2tJblwiLFxuICAgICAgICBjaGVja291dDogXCJjaGVja091dFwiLFxuICAgICAgICBhZHVsdHM6IFwiYWR1bHRzXCIsXG4gICAgICAgIGNoaWxkcmVuOiBcImNoaWxkcmVuXCIsXG4gICAgfTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh1cmxTZWFyY2hQYXJhbXMuZW50cmllcygpKS5yZWR1Y2UoXG4gICAgICAgIChwcmV2LCBbc2VhcmNoUGFyYW1LZXksIHNlYXJjaFBhcmFtVmFsdWVdKSA9PiAoe1xuICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgIFthdmFpbGFibGVTZWFyY2hQYXJhbXNNYXBbc2VhcmNoUGFyYW1LZXkudG9Mb3dlckNhc2UoKV1dOiBzZWFyY2hQYXJhbVZhbHVlLFxuICAgICAgICB9KSxcbiAgICAgICAge31cbiAgICApO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9nZ2VyKG1lc3NhZ2U6IHN0cmluZywgdHlwZTogXCJlcnJvclwiIHwgXCJsb2dcIiA9IFwiZXJyb3JcIikge1xuICAgIGNvbnN0IHVybCA9IGAke1RSSVBGVVNJT05fQkFTRV9VUkx9YXBpL3ZhY2F5b3UvbG9nYDtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBwYWdlOiB3aW5kb3cubG9jYXRpb24uaHJlZixcbiAgICB9O1xuICAgIGNvbnN0IGhlYWRlcnMgPSB7XG4gICAgICAgIFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgIH07XG4gICAgcmV0dXJuIGZldGNoKHVybCwge1xuICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgfSksXG4gICAgICAgIGhlYWRlcnMsXG4gICAgfSlcbiAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5qc29uKCkpXG4gICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgVHJpcGZ1c2lvbjogZmFpbGVkIHRvIGxvZyBtZXNzYWdlOiAke2Vycm9yfWApO1xuICAgICAgICB9KTtcbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB0eXBlIHsgR2xvYmFsU3RhdGUgfSBmcm9tIFwiLi9zdG9yZS9nbG9iYWwuc3RvcmVcIjtcbmltcG9ydCB7XG4gICAgQk9PS0lOR19NT0RFLFxuICAgIExPQURFUl9JRCxcbiAgICBSRVNVTUVfUEFORUxfSUQsXG4gICAgVFJJUEZVU0lPTl9CQVNFX1VSTCxcbiAgICBXSURHRVRfQ0xPU0VfQlVUVE9OX0lELFxuICAgIFdJREdFVF9IRUFERVJfSUQsXG4gICAgV0lER0VUX0hFQURFUl9USVRMRV9JRCxcbiAgICBXSURHRVRfSUQsXG4gICAgV0lER0VUX0lGUkFNRV9JRCxcbiAgICBXSURHRVRfSU5ORVJfV1JBUFBFUl9JRCxcbiAgICBXSURHRVRfV1JBUFBFUl9JRCxcbn0gZnJvbSBcIi4vY29uc3RcIjtcbmltcG9ydCB7IHdpZGdldFN0b3JlIH0gZnJvbSBcIi4vc3RvcmUvd2lkZ2V0LnN0b3JlXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheUxvYWRpbmdPdmVybGF5KCkge1xuICAgIGNvbnN0ICR3aWRnZXRXcmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX1dSQVBQRVJfSUQpO1xuXG4gICAgaWYgKCR3aWRnZXRXcmFwcGVyKSB7XG4gICAgICAgIGNvbnN0ICRsb2FkaW5nRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgJGxvYWRpbmdEaXYuaWQgPSBMT0FERVJfSUQ7XG4gICAgICAgICRsb2FkaW5nRGl2LmlubmVySFRNTCA9IFwiTG9hZGluZyA8c3Bhbj5UcmlwRnVzaW9uPC9zcGFuPlwiO1xuICAgICAgICAkd2lkZ2V0V3JhcHBlci5hcHBlbmRDaGlsZCgkbG9hZGluZ0Rpdik7XG5cbiAgICAgICAgJHdpZGdldFdyYXBwZXIuc3R5bGUuekluZGV4ID0gYCR7MWUxMX1gO1xuICAgICAgICAkd2lkZ2V0V3JhcHBlci5zdHlsZS5oZWlnaHQgPSBcIjEwMCVcIjtcbiAgICAgICAgJHdpZGdldFdyYXBwZXIuc3R5bGUuYmFja2dyb3VuZCA9IFwicmdiYSgwLCAwLCAwLCAuNzQpXCI7XG4gICAgICAgIGxvY2tQYWdlU2Nyb2xsKCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaGlkZUxvYWRpbmdPdmVybGF5KCkge1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKExPQURFUl9JRCk/LnJlbW92ZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZURvbSgpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IHNob3dXaWRnZXQsIGhpZGVXaWRnZXQsIHNob3dSZXN1bWVQYW5lbCwgaGlkZVJlc3VtZVBhbmVsIH0gPSB3aWRnZXRTdG9yZS5nZXRTdGF0ZSgpO1xuICAgICAgICBjb25zdCAkd2lkZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxcbiAgICAgICAgICAgICR3aWRnZXRXcmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxcbiAgICAgICAgICAgICR3aWRnZXRJbm5lcldyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLFxuICAgICAgICAgICAgJHdpZGdldEhlYWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksXG4gICAgICAgICAgICAkd2lkZ2V0SGVhZGVyVGl0bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKSxcbiAgICAgICAgICAgICR3aWRnZXRDbG9zZUJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIiksXG4gICAgICAgICAgICAkcmVzdW1lUGFuZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuXG4gICAgICAgICRyZXN1bWVQYW5lbC5pZCA9IFJFU1VNRV9QQU5FTF9JRDtcblxuICAgICAgICAkcmVzdW1lUGFuZWw/LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICBzaG93V2lkZ2V0KCk7XG4gICAgICAgICAgICBoaWRlUmVzdW1lUGFuZWwoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQ29uZmlndXJlIHdpZGdldCBhbmQgd3JhcHBlclxuICAgICAgICAkd2lkZ2V0LmlkID0gV0lER0VUX0lEO1xuICAgICAgICAkd2lkZ2V0LnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICAgICAgJHdpZGdldFdyYXBwZXIuaWQgPSBXSURHRVRfV1JBUFBFUl9JRDtcbiAgICAgICAgJHdpZGdldC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBpZiAodGhpcyA9PT0gZXZlbnQudGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgaGlkZVdpZGdldCgpO1xuICAgICAgICAgICAgICAgIHNob3dSZXN1bWVQYW5lbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBDb25maWd1cmUgd2lkZ2V0IGlubmVyIHdyYXBwZXJcbiAgICAgICAgJHdpZGdldElubmVyV3JhcHBlci5pZCA9IFdJREdFVF9JTk5FUl9XUkFQUEVSX0lEO1xuICAgICAgICAkd2lkZ2V0SGVhZGVyLmlkID0gV0lER0VUX0hFQURFUl9JRDtcbiAgICAgICAgJHdpZGdldENsb3NlQnV0dG9uLmlkID0gV0lER0VUX0NMT1NFX0JVVFRPTl9JRDtcbiAgICAgICAgJHdpZGdldENsb3NlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICBoaWRlV2lkZ2V0KCk7XG4gICAgICAgICAgICBzaG93UmVzdW1lUGFuZWwoKTtcbiAgICAgICAgfSk7XG4gICAgICAgICR3aWRnZXRIZWFkZXJUaXRsZS5pZCA9IFdJREdFVF9IRUFERVJfVElUTEVfSUQ7XG4gICAgICAgICR3aWRnZXRIZWFkZXJUaXRsZS5pbm5lckhUTUwgPSBcIkJvb2tpbmdcIjtcblxuICAgICAgICAvLyBBcHBlbmQgd2lkZ2V0IHRvIHdyYXBwZXIgYW5kIHdyYXBwZXIgdG8gZG9jdW1lbnQgYm9keVxuICAgICAgICAkd2lkZ2V0V3JhcHBlci5hcHBlbmRDaGlsZCgkd2lkZ2V0KTtcbiAgICAgICAgJHdpZGdldC5hcHBlbmRDaGlsZCgkd2lkZ2V0SW5uZXJXcmFwcGVyKTtcbiAgICAgICAgJHdpZGdldElubmVyV3JhcHBlci5hcHBlbmRDaGlsZCgkd2lkZ2V0SGVhZGVyKTtcbiAgICAgICAgJHdpZGdldEhlYWRlci5hcHBlbmRDaGlsZCgkd2lkZ2V0SGVhZGVyVGl0bGUpO1xuICAgICAgICAkd2lkZ2V0SGVhZGVyLmFwcGVuZENoaWxkKCR3aWRnZXRDbG9zZUJ1dHRvbik7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoJHdpZGdldFdyYXBwZXIpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKCRyZXN1bWVQYW5lbCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyKGBXaWRnZXQ6IEVycm9yIHByZXBhcmluZyBET006ICR7ZXJyb3J9YCk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUcmlwZnVzaW9uOiBFcnJvciBwcmVwYXJpbmcgRE9NOiBcIiwgZXJyb3IpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlclJlc3VtZVBhbmVsKHtcbiAgICBoZWFkZXJUZXh0LFxuICAgIHN1YmhlYWRlclRleHQsXG4gICAgZm9vdGVyVGV4dCxcbn06IHtcbiAgICBoZWFkZXJUZXh0OiBzdHJpbmc7XG4gICAgc3ViaGVhZGVyVGV4dD86IHN0cmluZztcbiAgICBmb290ZXJUZXh0Pzogc3RyaW5nO1xufSkge1xuICAgIGNvbnN0ICRyZXN1bWVQYW5lbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFJFU1VNRV9QQU5FTF9JRCkgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAkcmVzdW1lUGFuZWwuaW5uZXJIVE1MID0gYFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyaXBmdXNpb24tcmVzdW1lLXBhbmVsX19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj4ke2hlYWRlclRleHR9PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzdmcgdmVyc2lvbj1cIjEuMVwiIGlkPVwiTGF5ZXJfMVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB2aWV3Qm94PVwiMCAwIDMzMCAzMzBcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlhNTElEXzIyMl9cIiBkPVwiTTI1MC42MDYsMTU0LjM4OWwtMTUwLTE0OS45OTZjLTUuODU3LTUuODU4LTE1LjM1NS01Ljg1OC0yMS4yMTMsMC4wMDFjLTUuODU3LDUuODU4LTUuODU3LDE1LjM1NSwwLjAwMSwyMS4yMTNsMTM5LjM5MywxMzkuMzlMNzkuMzkzLDMwNC4zOTRjLTUuODU3LDUuODU4LTUuODU3LDE1LjM1NSwwLjAwMSwyMS4yMTNDODIuMzIyLDMyOC41MzYsODYuMTYxLDMzMCw5MCwzMzBzNy42NzgtMS40NjQsMTAuNjA3LTQuMzk0bDE0OS45OTktMTUwLjAwNGMyLjgxNC0yLjgxMyw0LjM5NC02LjYyOCw0LjM5NC0xMC42MDZDMjU1LDE2MS4wMTgsMjUzLjQyLDE1Ny4yMDIsMjUwLjYwNiwxNTQuMzg5elwiLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgJHtzdWJoZWFkZXJUZXh0ICYmIGA8c3BhbiBjbGFzcz1cInRyaXBmdXNpb24tcmVzdW1lLXBhbmVsX19zdWJoZWFkZXJcIj4ke3N1YmhlYWRlclRleHR9PC9zcGFuPmB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICAke2Zvb3RlclRleHQgJiYgYDxzcGFuIGNsYXNzPVwidHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX2Zvb3RlclwiPiR7Zm9vdGVyVGV4dH08L3NwYW4+YH1cbiAgICBgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvd1Jlc3VtZVBhbmVsRG9tKCkge1xuICAgIGNvbnN0ICRyZXN1bWVQYW5lbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFJFU1VNRV9QQU5FTF9JRCkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgJHJlc3VtZVBhbmVsLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsIFwidHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWwtLXNsaWRlLWluXCIpO1xuICAgICRyZXN1bWVQYW5lbC5mb2N1cygpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGlkZVJlc3VtZVBhbmVsRG9tKCkge1xuICAgIGNvbnN0ICRyZXN1bWVQYW5lbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFJFU1VNRV9QQU5FTF9JRCkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgJHJlc3VtZVBhbmVsLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsIFwidHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWwtLXNsaWRlLW91dFwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dXaWRnZXREb20oKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgJHdpZGdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9JRCkgYXMgSFRNTERpdkVsZW1lbnQsXG4gICAgICAgICAgICAkd2lkZ2V0V3JhcHBlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9XUkFQUEVSX0lEKSBhcyBIVE1MRGl2RWxlbWVudDtcblxuICAgICAgICBPYmplY3QuYXNzaWduKCR3aWRnZXRXcmFwcGVyLnN0eWxlLCB7XG4gICAgICAgICAgICB6SW5kZXg6IDEwMDAwMDAwMDAwMTEsXG4gICAgICAgICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgICAgICAgICAgYmFja2dyb3VuZDogXCJyZ2JhKDAsIDAsIDAsIC41KVwiLFxuICAgICAgICB9KTtcblxuICAgICAgICBsb2NrUGFnZVNjcm9sbCgpO1xuICAgICAgICAkd2lkZ2V0LnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG4gICAgICAgICR3aWRnZXQuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgXCJzbGlkZS1pblwiKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0ICR3aWRnZXRJZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChXSURHRVRfSUZSQU1FX0lEKTtcbiAgICAgICAgICAgICR3aWRnZXRJZnJhbWU/LmZvY3VzKCk7XG4gICAgICAgIH0sIDI1MCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyKGBXaWRnZXQ6IEVycm9yIG9wZW5uaW5nIHdpZGdldDogJHtlcnJvcn1gKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlRyaXBmdXNpb246IEVycm9yIG9wZW5uaW5nIHdpZGdldDogXCIsIGVycm9yKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoaWRlV2lkZ2V0RG9tKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0ICR3aWRnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChXSURHRVRfSUQpLFxuICAgICAgICAgICAgJHdpZGdldFdyYXBwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChXSURHRVRfV1JBUFBFUl9JRCk7XG5cbiAgICAgICAgaWYgKCR3aWRnZXQgJiYgJHdpZGdldFdyYXBwZXIpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSBcImluaXRpYWxcIjtcbiAgICAgICAgICAgICR3aWRnZXQuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgXCJzbGlkZS1vdXRcIik7XG4gICAgICAgICAgICAkd2lkZ2V0V3JhcHBlci5zdHlsZS5iYWNrZ3JvdW5kID0gXCJyZ2JhKDAsIDAsIDAsIDApXCI7XG4gICAgICAgICAgICAkd2lkZ2V0LnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICAgICAgICAgICR3aWRnZXRXcmFwcGVyLnN0eWxlLnpJbmRleCA9IGAkey0xZTExfWA7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIoYFdpZGdldDogRXJyb3IgY2xvc2luZyB3aWRnZXQ6ICR7ZXJyb3J9YCk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUcmlwZnVzaW9uOiBFcnJvciBjbG9zaW5nIHdpZGdldDogXCIsIGVycm9yKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RJZnJhbWUoeyBjbGllbnQsIHByb3BlcnR5SWQsIG1vZGUsIGJvb2tpbmdJZCwgLi4ucmVzdCB9OiBHbG9iYWxTdGF0ZSkge1xuICAgIHRyeSB7XG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9JRlJBTUVfSUQpPy5yZW1vdmUoKTtcblxuICAgICAgICBjb25zdCAkaW5uZXJXcmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX0lOTkVSX1dSQVBQRVJfSUQpO1xuICAgICAgICBpZiAoJGlubmVyV3JhcHBlcikge1xuICAgICAgICAgICAgY29uc3QgaWZyYW1lUGFyYW1zTWFwID0gW1wiY2hlY2tJblwiLCBcImNoZWNrT3V0XCIsIFwiYWR1bHRzXCIsIFwiY2hpbGRyZW5cIiwgXCJvZmZlcklkXCJdO1xuXG4gICAgICAgICAgICBjb25zdCAkd2lkZ2V0SWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlmcmFtZVwiKTtcbiAgICAgICAgICAgIGxldCB1cmwgPSBgJHtUUklQRlVTSU9OX0JBU0VfVVJMfSR7Y2xpZW50fS8ke3Byb3BlcnR5SWR9YDtcbiAgICAgICAgICAgIGlmIChtb2RlID09PSBCT09LSU5HX01PREUuYXBwZW5kICYmIGJvb2tpbmdJZCkge1xuICAgICAgICAgICAgICAgIHVybCArPSBgL2Jvb2tpbmcvJHtib29raW5nSWR9L2FwcGVuZGA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxQYXJhbXMgPSBPYmplY3QuZW50cmllcyhyZXN0KVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKFtrZXksIHZhbHVlXSkgPT4gaWZyYW1lUGFyYW1zTWFwLmluY2x1ZGVzKGtleSkgJiYgISF2YWx1ZSlcbiAgICAgICAgICAgICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IGAke2tleX09JHt2YWx1ZX1gLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICAgICAgLmpvaW4oXCImXCIpO1xuICAgICAgICAgICAgaWYgKGFkZGl0aW9uYWxQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICB1cmwgKz0gYD8ke2FkZGl0aW9uYWxQYXJhbXN9YDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJHdpZGdldElmcmFtZS5zZXRBdHRyaWJ1dGUoXCJzcmNcIiwgdXJsKTtcbiAgICAgICAgICAgICR3aWRnZXRJZnJhbWUuaWQgPSBXSURHRVRfSUZSQU1FX0lEO1xuICAgICAgICAgICAgJGlubmVyV3JhcHBlci5hcHBlbmRDaGlsZCgkd2lkZ2V0SWZyYW1lKTtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlcihgV2lkZ2V0OiBFcnJvciBpbmplY3RpbmcgaWZyYW1lOiAke2Vycm9yfWApO1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiVHJpcGZ1c2lvbjogRXJyb3IgaW5qZWN0aW5nIGlmcmFtZTogXCIsIGVycm9yKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2NrUGFnZVNjcm9sbCgpIHtcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gXCJoaWRkZW5cIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFdpZGdldFRoZW1lKHsgYmFja2dyb3VuZENvbG9yIH06IHsgYmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfSkge1xuICAgIGNvbnN0ICRyZXN1bWVQYW5lbFdyYXBwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChSRVNVTUVfUEFORUxfSUQpIGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAkd2lkZ2V0SGVhZGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX0hFQURFUl9JRCkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgJHJlc3VtZVBhbmVsV3JhcHBlci5zdHlsZVtcImJhY2tncm91bmRDb2xvclwiXSA9IGJhY2tncm91bmRDb2xvcjtcbiAgICAkd2lkZ2V0SGVhZGVyLnN0eWxlW1wiYmFja2dyb3VuZENvbG9yXCJdID0gYmFja2dyb3VuZENvbG9yO1xufVxuIiwiaW1wb3J0IHsgQk9PS0lOR19NT0RFIH0gZnJvbSBcIi4uL2NvbnN0XCI7XG5pbXBvcnQgeyBwZXJzaXN0LCBjcmVhdGVKU09OU3RvcmFnZSB9IGZyb20gXCJ6dXN0YW5kL21pZGRsZXdhcmVcIjtcbmltcG9ydCB7IGNyZWF0ZVN0b3JlIH0gZnJvbSBcInp1c3RhbmQvdmFuaWxsYVwiO1xuXG5leHBvcnQgdHlwZSBHbG9iYWxTdGF0ZSA9IHtcbiAgICBjbGllbnQ6IHN0cmluZyB8IG51bGw7XG4gICAgcHJvcGVydHlJZDogbnVtYmVyIHwgbnVsbDtcbiAgICBtb2RlOiBrZXlvZiB0eXBlb2YgQk9PS0lOR19NT0RFO1xuICAgIGJvb2tpbmdJZDogbnVtYmVyIHwgbnVsbDtcbiAgICBjaGVja0luOiBzdHJpbmcgfCBudWxsO1xuICAgIGNoZWNrT3V0OiBzdHJpbmcgfCBudWxsO1xuICAgIGFkdWx0czogbnVtYmVyIHwgbnVsbDtcbiAgICBjaGlsZHJlbjogbnVtYmVyW10gfCBudWxsO1xuICAgIG9mZmVySWQ6IG51bWJlciB8IG51bGw7XG4gICAgcmVwbGFjZTogKHN0YXRlOiBQYXJ0aWFsPEdsb2JhbFN0YXRlPikgPT4gdm9pZDtcbn07XG5cbmNvbnN0IGluaXRpYWxTdGF0ZSA9IHtcbiAgICBjbGllbnQ6IG51bGwsXG4gICAgcHJvcGVydHlJZDogbnVsbCxcbiAgICBtb2RlOiBCT09LSU5HX01PREUubm9ybWFsLFxuICAgIGJvb2tpbmdJZDogbnVsbCxcbiAgICBjaGVja0luOiBudWxsLFxuICAgIGNoZWNrT3V0OiBudWxsLFxuICAgIGFkdWx0czogbnVsbCxcbiAgICBjaGlsZHJlbjogbnVsbCxcbiAgICBvZmZlcklkOiBudWxsLFxufTtcblxuZXhwb3J0IGNvbnN0IGdsb2JhbFN0b3JlID0gY3JlYXRlU3RvcmU8R2xvYmFsU3RhdGU+KCkoXG4gICAgcGVyc2lzdChcbiAgICAgICAgKHNldCkgPT4gKHtcbiAgICAgICAgICAgIC4uLmluaXRpYWxTdGF0ZSxcbiAgICAgICAgICAgIHJlcGxhY2U6IChzdGF0ZSkgPT4gc2V0KHsgLi4uaW5pdGlhbFN0YXRlLCAuLi5zdGF0ZSB9KSxcbiAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZ2xvYmFsU3RvcmVcIixcbiAgICAgICAgICAgIHN0b3JhZ2U6IGNyZWF0ZUpTT05TdG9yYWdlKCgpID0+IHNlc3Npb25TdG9yYWdlKSxcbiAgICAgICAgfVxuICAgIClcbik7XG4iLCJjb25zdCBpc0l0ZXJhYmxlID0gKG9iaikgPT4gU3ltYm9sLml0ZXJhdG9yIGluIG9iajtcbmNvbnN0IGNvbXBhcmVNYXBMaWtlID0gKGl0ZXJhYmxlQSwgaXRlcmFibGVCKSA9PiB7XG4gIGNvbnN0IG1hcEEgPSBpdGVyYWJsZUEgaW5zdGFuY2VvZiBNYXAgPyBpdGVyYWJsZUEgOiBuZXcgTWFwKGl0ZXJhYmxlQSk7XG4gIGNvbnN0IG1hcEIgPSBpdGVyYWJsZUIgaW5zdGFuY2VvZiBNYXAgPyBpdGVyYWJsZUIgOiBuZXcgTWFwKGl0ZXJhYmxlQik7XG4gIGlmIChtYXBBLnNpemUgIT09IG1hcEIuc2l6ZSkgcmV0dXJuIGZhbHNlO1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBtYXBBKSB7XG4gICAgaWYgKCFPYmplY3QuaXModmFsdWUsIG1hcEIuZ2V0KGtleSkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufTtcbmZ1bmN0aW9uIHNoYWxsb3cob2JqQSwgb2JqQikge1xuICBpZiAoT2JqZWN0LmlzKG9iakEsIG9iakIpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHR5cGVvZiBvYmpBICE9PSBcIm9iamVjdFwiIHx8IG9iakEgPT09IG51bGwgfHwgdHlwZW9mIG9iakIgIT09IFwib2JqZWN0XCIgfHwgb2JqQiA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoaXNJdGVyYWJsZShvYmpBKSAmJiBpc0l0ZXJhYmxlKG9iakIpKSB7XG4gICAgY29uc3QgaXRlcmF0b3JBID0gb2JqQVtTeW1ib2wuaXRlcmF0b3JdKCk7XG4gICAgY29uc3QgaXRlcmF0b3JCID0gb2JqQltTeW1ib2wuaXRlcmF0b3JdKCk7XG4gICAgbGV0IG5leHRBID0gaXRlcmF0b3JBLm5leHQoKTtcbiAgICBsZXQgbmV4dEIgPSBpdGVyYXRvckIubmV4dCgpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KG5leHRBLnZhbHVlKSAmJiBBcnJheS5pc0FycmF5KG5leHRCLnZhbHVlKSAmJiBuZXh0QS52YWx1ZS5sZW5ndGggPT09IDIgJiYgbmV4dEIudmFsdWUubGVuZ3RoID09PSAyKSB7XG4gICAgICByZXR1cm4gY29tcGFyZU1hcExpa2UoXG4gICAgICAgIG9iakEsXG4gICAgICAgIG9iakJcbiAgICAgICk7XG4gICAgfVxuICAgIHdoaWxlICghbmV4dEEuZG9uZSAmJiAhbmV4dEIuZG9uZSkge1xuICAgICAgaWYgKCFPYmplY3QuaXMobmV4dEEudmFsdWUsIG5leHRCLnZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBuZXh0QSA9IGl0ZXJhdG9yQS5uZXh0KCk7XG4gICAgICBuZXh0QiA9IGl0ZXJhdG9yQi5uZXh0KCk7XG4gICAgfVxuICAgIHJldHVybiAhIW5leHRBLmRvbmUgJiYgISFuZXh0Qi5kb25lO1xuICB9XG4gIGNvbnN0IGtleXNBID0gT2JqZWN0LmtleXMob2JqQSk7XG4gIGlmIChrZXlzQS5sZW5ndGggIT09IE9iamVjdC5rZXlzKG9iakIpLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBmb3IgKGNvbnN0IGtleUEgb2Yga2V5c0EpIHtcbiAgICBpZiAoIU9iamVjdC5oYXNPd24ob2JqQiwga2V5QSkgfHwgIU9iamVjdC5pcyhvYmpBW2tleUFdLCBvYmpCW2tleUFdKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IHsgc2hhbGxvdyB9O1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3N0eWxlcy5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZXMuY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHR5cGUgeyBBcHBNZXNzYWdlIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IEFQUF9NRVNTQUdFX1RZUEUsIEJPT0tJTkdfTU9ERSB9IGZyb20gXCIuL2NvbnN0XCI7XG5pbXBvcnQge1xuICAgIGhpZGVXaWRnZXREb20sXG4gICAgZGlzcGxheUxvYWRpbmdPdmVybGF5LFxuICAgIGhpZGVSZXN1bWVQYW5lbERvbSxcbiAgICBpbmplY3RJZnJhbWUsXG4gICAgc2hvd1dpZGdldERvbSxcbiAgICBwcmVwYXJlRG9tLFxuICAgIHJlbmRlclJlc3VtZVBhbmVsLFxuICAgIHNldFdpZGdldFRoZW1lLFxuICAgIHNob3dSZXN1bWVQYW5lbERvbSxcbiAgICBoaWRlTG9hZGluZ092ZXJsYXksXG59IGZyb20gXCIuL2RvbVwiO1xuaW1wb3J0IHsgR2xvYmFsU3RhdGUsIGdsb2JhbFN0b3JlIH0gZnJvbSBcIi4vc3RvcmUvZ2xvYmFsLnN0b3JlXCI7XG5pbXBvcnQgeyB3aWRnZXRTdG9yZSB9IGZyb20gXCIuL3N0b3JlL3dpZGdldC5zdG9yZVwiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdFBhcmFtcywgZ2V0UGFyYW1zRnJvbVVybCwgbG9nZ2VyLCBzdHJpbmdpZnlQcmljZSB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XG5pbXBvcnQgeyBzaGFsbG93IH0gZnJvbSBcInp1c3RhbmQvdmFuaWxsYS9zaGFsbG93XCI7XG5pbXBvcnQgXCIuL3N0eWxlcy5jc3NcIjtcblxuZ2xvYmFsU3RvcmUuc3Vic2NyaWJlKChuZXdTdGF0ZSkgPT4ge1xuICAgIGlmIChuZXdTdGF0ZS5jbGllbnQgJiYgbmV3U3RhdGUucHJvcGVydHlJZCkge1xuICAgICAgICBpbmplY3RJZnJhbWUobmV3U3RhdGUpO1xuICAgIH1cbn0pO1xuXG53aWRnZXRTdG9yZS5zdWJzY3JpYmUoKG5ld1N0YXRlKSA9PiB7XG4gICAgaWYgKG5ld1N0YXRlLmlzUmVzdW1lUGFuZWxWaXNpYmxlKSB7XG4gICAgICAgIGxldCBoZWFkZXJUZXh0ID0gbmV3U3RhdGUucHJpbWFyeUd1ZXN0TmFtZVxuICAgICAgICAgICAgPyBgQ29tcGxldGUgeW91ciBib29raW5nLCAke25ld1N0YXRlLnByaW1hcnlHdWVzdE5hbWV9YFxuICAgICAgICAgICAgOiBcIkNvbXBsZXRlIHlvdXIgYm9va2luZ1wiO1xuICAgICAgICBsZXQgc3ViaGVhZGVyVGV4dCA9IFwiXCI7XG4gICAgICAgIGNvbnN0IGZvb3RlclBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICAgIGlmIChuZXdTdGF0ZS5pc0Jvb2tpbmdDb21wbGV0ZWQpIHtcbiAgICAgICAgICAgIGhlYWRlclRleHQgPSBcIkJvb2tpbmcgY29tcGxldGVkIVwiO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5ld1N0YXRlLmNoZWNrSW5EYXRlICYmIG5ld1N0YXRlLmNoZWNrT3V0RGF0ZSkge1xuICAgICAgICAgICAgZm9vdGVyUGFydHMucHVzaChcbiAgICAgICAgICAgICAgICBgJHtkYXlqcyhuZXdTdGF0ZS5jaGVja0luRGF0ZSkuZm9ybWF0KFwiTU1NIEREXCIpfSAtICR7ZGF5anMobmV3U3RhdGUuY2hlY2tPdXREYXRlKS5mb3JtYXQoXCJNTU0gRERcIil9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXdTdGF0ZS5jYXJ0LnRvdGFsKSB7XG4gICAgICAgICAgICBpZiAobmV3U3RhdGUuY2FydD8ucm9vbXMgJiYgbmV3U3RhdGUuY2FydC5yb29tcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm9vbUNvdW50ID0gbmV3U3RhdGUuY2FydC5yb29tcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3Vlc3RDb3VudCA9IG5ld1N0YXRlLmNhcnQucm9vbXMucmVkdWNlKFxuICAgICAgICAgICAgICAgICAgICAoYWNjOiBudW1iZXIsIHJvb206IGFueSkgPT4gYWNjICsgcm9vbS5wYXNzZW5nZXJzLmFkdWx0cyArIHJvb20ucGFzc2VuZ2Vycy5jaGlsZHJlbi5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHN1YmhlYWRlclRleHQgPSBgJHtyb29tQ291bnR9IHJvb20ke3Jvb21Db3VudCA+IDEgPyBcInNcIiA6IFwiXCJ9IGZvciBgO1xuICAgICAgICAgICAgICAgIGZvb3RlclBhcnRzLnB1c2goYCR7Z3Vlc3RDb3VudH0gZ3Vlc3Qke2d1ZXN0Q291bnQgPiAxID8gXCJzXCIgOiBcIlwifWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3ViaGVhZGVyVGV4dCArPSBzdHJpbmdpZnlQcmljZShuZXdTdGF0ZS5jYXJ0LnRvdGFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlbmRlclJlc3VtZVBhbmVsKHsgaGVhZGVyVGV4dCwgc3ViaGVhZGVyVGV4dCwgZm9vdGVyVGV4dDogZm9vdGVyUGFydHMuam9pbihcIiwgXCIpIH0pO1xuICAgIH1cblxuICAgIGlmIChuZXdTdGF0ZS5iYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICAgICAgc2V0V2lkZ2V0VGhlbWUoeyBiYWNrZ3JvdW5kQ29sb3I6IG5ld1N0YXRlLmJhY2tncm91bmRDb2xvciB9KTtcbiAgICB9XG5cbiAgICBpZiAobmV3U3RhdGUuaXNSZWFkeSkge1xuICAgICAgICBoaWRlTG9hZGluZ092ZXJsYXkoKTtcbiAgICAgICAgbmV3U3RhdGUuaXNPcGVuID8gc2hvd1dpZGdldERvbSgpIDogaGlkZVdpZGdldERvbSgpO1xuICAgICAgICBuZXdTdGF0ZS5pc1Jlc3VtZVBhbmVsVmlzaWJsZSA/IHNob3dSZXN1bWVQYW5lbERvbSgpIDogaGlkZVJlc3VtZVBhbmVsRG9tKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZGlzcGxheUxvYWRpbmdPdmVybGF5KCk7XG4gICAgfVxufSk7XG5cbmZ1bmN0aW9uIGFkZExpbmtFdmVudExpc3RlbmVycygpIHtcbiAgICBmdW5jdGlvbiBoYW5kbGVMaW5rQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MQW5jaG9yRWxlbWVudDtcblxuICAgICAgICAgICAgLy8gRW5zdXJlIHRoZSBldmVudCB0YXJnZXQgaGFzIGEgdmFsaWQgaHJlZlxuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gdGFyZ2V0LnBhcmVudE5vZGUgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAodGFyZ2V0LnRhZ05hbWUgIT09IFwiQVwiICYmIHBhcmVudD8udGFnTmFtZSA9PT0gXCJBXCIpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQuaHJlZiA9IHBhcmVudD8uaHJlZjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbGlua0hyZWYgPSB0YXJnZXQuaHJlZiB8fCBcIlwiO1xuICAgICAgICAgICAgaWYgKCFsaW5rSHJlZi5pbmNsdWRlcyhcIj9cIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHVybFBhcmFtcyA9IGdldFBhcmFtc0Zyb21VcmwobmV3IFVSTFNlYXJjaFBhcmFtcyhsaW5rSHJlZi5zdWJzdHJpbmcobGlua0hyZWYuaW5kZXhPZihcIj9cIikpKSk7XG5cbiAgICAgICAgICAgIGlmICh1cmxQYXJhbXMudHJpcGZ1c2lvbiA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgY2xpZW50LCBwcm9wZXJ0eUlkIH0gPSBnZXREZWZhdWx0UGFyYW1zKCk7XG4gICAgICAgICAgICAgICAgYm9vayh7XG4gICAgICAgICAgICAgICAgICAgIGNsaWVudDogdXJsUGFyYW1zLmNsaWVudCA/PyBjbGllbnQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5SWQ6IHVybFBhcmFtcy5wcm9wZXJ0eUlkID8gK3VybFBhcmFtcy5wcm9wZXJ0eUlkIDogcHJvcGVydHlJZCxcbiAgICAgICAgICAgICAgICAgICAgbW9kZTogdXJsUGFyYW1zLm1vZGUgPT09IEJPT0tJTkdfTU9ERS5hcHBlbmQgPyBCT09LSU5HX01PREUuYXBwZW5kIDogQk9PS0lOR19NT0RFLm5vcm1hbCxcbiAgICAgICAgICAgICAgICAgICAgYm9va2luZ0lkOlxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsUGFyYW1zPy5ib29raW5nSWQgJiYgdXJsUGFyYW1zPy5tb2RlID09PSBCT09LSU5HX01PREUuYXBwZW5kID8gK3VybFBhcmFtcy5ib29raW5nSWQgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBvZmZlcklkOiB1cmxQYXJhbXMub2ZmZXJJZCA/ICt1cmxQYXJhbXMub2ZmZXJJZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tJbjogdXJsUGFyYW1zLmNoZWNrSW4sXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrT3V0OiB1cmxQYXJhbXMuY2hlY2tPdXQsXG4gICAgICAgICAgICAgICAgICAgIGFkdWx0czogdXJsUGFyYW1zLmFkdWx0cyA/ICt1cmxQYXJhbXMuYWR1bHRzIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogdXJsUGFyYW1zLmNoaWxkcmVuID8gdXJsUGFyYW1zLmNoaWxkcmVuLnNwbGl0KFwiLFwiKS5tYXAoKGFnZSkgPT4gK2FnZSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBsb2dnZXIoYFdpZGdldDogRXJyb3IgaW4gbGluayBjbGljayBoYW5kbGVyOiAke2Vycm9yfWApO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIlRyaXBmdXNpb246IEVycm9yIGluIGxpbmsgY2xpY2sgaGFuZGxlcjogXCIsIGVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJhXCIpLmZvckVhY2goKGxpbmtFbGVtZW50KSA9PiB7XG4gICAgICAgIGxpbmtFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVMaW5rQ2xpY2spO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRQYWdlTG9hZExpc3RlbmVyKCkge1xuICAgIGZ1bmN0aW9uIG9uTG9hZEhhbmRsZXIoKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdXJsUGFyYW1zID0gZ2V0UGFyYW1zRnJvbVVybChuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB1cmxQYXJhbXMudHJpcGZ1c2lvbiA9PT0gXCJ0cnVlXCIgJiZcbiAgICAgICAgICAgICAgICAoZ2xvYmFsU3RvcmUuZ2V0U3RhdGUoKS5jbGllbnQgfHwgdXJsUGFyYW1zLmNsaWVudCkgJiZcbiAgICAgICAgICAgICAgICAoZ2xvYmFsU3RvcmUuZ2V0U3RhdGUoKS5wcm9wZXJ0eUlkIHx8IHVybFBhcmFtcy5wcm9wZXJ0eUlkKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgYm9vayh7XG4gICAgICAgICAgICAgICAgICAgIGNsaWVudDogdXJsUGFyYW1zLmNsaWVudCA/PyBnbG9iYWxTdG9yZS5nZXRTdGF0ZSgpLmNsaWVudCxcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlJZDogdXJsUGFyYW1zLnByb3BlcnR5SWQgPyArdXJsUGFyYW1zLnByb3BlcnR5SWQgOiBnbG9iYWxTdG9yZS5nZXRTdGF0ZSgpLnByb3BlcnR5SWQsXG4gICAgICAgICAgICAgICAgICAgIG1vZGU6IHVybFBhcmFtcy5tb2RlID09PSBCT09LSU5HX01PREUuYXBwZW5kID8gQk9PS0lOR19NT0RFLmFwcGVuZCA6IEJPT0tJTkdfTU9ERS5ub3JtYWwsXG4gICAgICAgICAgICAgICAgICAgIGJvb2tpbmdJZDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybFBhcmFtcz8uYm9va2luZ0lkICYmIHVybFBhcmFtcz8ubW9kZSA9PT0gQk9PS0lOR19NT0RFLmFwcGVuZCA/ICt1cmxQYXJhbXMuYm9va2luZ0lkIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJJZDogdXJsUGFyYW1zLm9mZmVySWQgPyArdXJsUGFyYW1zLm9mZmVySWQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrSW46IHVybFBhcmFtcy5jaGVja0luLFxuICAgICAgICAgICAgICAgICAgICBjaGVja091dDogdXJsUGFyYW1zLmNoZWNrT3V0LFxuICAgICAgICAgICAgICAgICAgICBhZHVsdHM6IHVybFBhcmFtcy5hZHVsdHMgPyArdXJsUGFyYW1zLmFkdWx0cyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IHVybFBhcmFtcy5jaGlsZHJlbiA/IHVybFBhcmFtcy5jaGlsZHJlbi5zcGxpdChcIixcIikubWFwKChhZ2UpID0+ICthZ2UpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCA1MDApO1xuICAgIH1cblxuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIpIHtcbiAgICAgICAgb25Mb2FkSGFuZGxlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLCBvbkxvYWRIYW5kbGVyKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGJvb2socHJvcHM/OiBQYXJ0aWFsPEdsb2JhbFN0YXRlPikge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGJvb2tpbmdTdGF0ZSA9IHByb3BzID8/IGdsb2JhbFN0b3JlLmdldFN0YXRlKCkgPz8gZ2V0RGVmYXVsdFBhcmFtcygpO1xuICAgICAgICBpZiAoIWJvb2tpbmdTdGF0ZS5jbGllbnQgfHwgIWJvb2tpbmdTdGF0ZS5wcm9wZXJ0eUlkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDbGllbnQgYW5kIHByb3BlcnR5SWQgYXJlIHJlcXVpcmVkIHRvIGJvb2tcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGhpZGVSZXN1bWVQYW5lbCwgcmVzZXQgfSA9IHdpZGdldFN0b3JlLmdldFN0YXRlKCk7XG4gICAgICAgIGhpZGVSZXN1bWVQYW5lbCgpO1xuXG4gICAgICAgIGlmICghc2hhbGxvdyhnbG9iYWxTdG9yZS5nZXRTdGF0ZSgpLCBib29raW5nU3RhdGUpKSB7XG4gICAgICAgICAgICByZXNldCgpO1xuICAgICAgICAgICAgZ2xvYmFsU3RvcmUuZ2V0U3RhdGUoKS5yZXBsYWNlKGJvb2tpbmdTdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgd2lkZ2V0U3RvcmUuZ2V0U3RhdGUoKS5zaG93V2lkZ2V0KCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyKGBXaWRnZXQ6IGZhaWxlZCB0byBib29rOiAke2Vycm9yfWApO1xuICAgICAgICBjb25zb2xlLmVycm9yKGBUcmlwZnVzaW9uOiBmYWlsZWQgdG8gYm9vazogJHtlcnJvcn1gKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGluaXRUcmlwZnVzaW9uU2RrKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNoZWNrSWZEb2N1bWVudExvYWRlZEludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIikge1xuICAgICAgICAgICAgICAgIHByZXBhcmVEb20oKTtcblxuICAgICAgICAgICAgICAgIGlmICghZ2xvYmFsU3RvcmUuZ2V0U3RhdGUoKS5jbGllbnQgfHwgIWdsb2JhbFN0b3JlLmdldFN0YXRlKCkucHJvcGVydHlJZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGNsaWVudCwgcHJvcGVydHlJZCB9ID0gZ2V0RGVmYXVsdFBhcmFtcygpO1xuICAgICAgICAgICAgICAgICAgICBnbG9iYWxTdG9yZS5nZXRTdGF0ZSgpLnJlcGxhY2UoeyBjbGllbnQsIHByb3BlcnR5SWQgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaW5qZWN0SWZyYW1lKGdsb2JhbFN0b3JlLmdldFN0YXRlKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhZGRMaW5rRXZlbnRMaXN0ZW5lcnMoKTtcblxuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJZkRvY3VtZW50TG9hZGVkSW50ZXJ2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAxMDApO1xuICAgICAgICBhZGRQYWdlTG9hZExpc3RlbmVyKCk7XG5cbiAgICAgICAgT2JqZWN0LmFzc2lnbih3aW5kb3csIHsgYm9vaywgY2xvc2VXaWRnZXQ6IGhpZGVXaWRnZXREb20gfSk7XG5cbiAgICAgICAgd2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlOiBBcHBNZXNzYWdlID0gZS5kYXRhO1xuICAgICAgICAgICAgc3dpdGNoIChtZXNzYWdlLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIEFQUF9NRVNTQUdFX1RZUEUuV0lER0VUX1JFQURZOiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZGdldFN0b3JlLmdldFN0YXRlKCkuc2V0SXNSZWFkeSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgQVBQX01FU1NBR0VfVFlQRS5CT09LSU5HX0NPTVBMRVRFRDoge1xuICAgICAgICAgICAgICAgICAgICB3aWRnZXRTdG9yZS5nZXRTdGF0ZSgpLnNldElzQm9va2luZ0NvbXBsZXRlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgQVBQX01FU1NBR0VfVFlQRS5TRVRfQ0xJRU5UX1RIRU1FOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5kYXRhIGFzIHsgcHJpbWFyeT86IHN0cmluZyB9O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjbGllbnRUaGVtZSA9IG1lc3NhZ2VEYXRhLnByaW1hcnk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjbGllbnRUaGVtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkZ2V0U3RvcmUuZ2V0U3RhdGUoKS5zZXRCYWNrZ3JvdW5kQ29sb3IoY2xpZW50VGhlbWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIEFQUF9NRVNTQUdFX1RZUEUuU0VUX1BSSU1BUllfR1VFU1RfTkFNRToge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlRGF0YSA9IG1lc3NhZ2UuZGF0YSBhcyB7IG5hbWU6IHN0cmluZyB9O1xuICAgICAgICAgICAgICAgICAgICB3aWRnZXRTdG9yZS5nZXRTdGF0ZSgpLnNldFByaW1hcnlHdWVzdE5hbWUobWVzc2FnZURhdGEubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIEFQUF9NRVNTQUdFX1RZUEUuU0VUX0RBVEVTOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5kYXRhIGFzIHsgY2hlY2tJbj86IHN0cmluZzsgY2hlY2tPdXQ/OiBzdHJpbmcgfTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2VEYXRhLmNoZWNrSW4gJiYgbWVzc2FnZURhdGEuY2hlY2tPdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldFN0b3JlLmdldFN0YXRlKCkuc2V0RGF0ZXMobWVzc2FnZURhdGEuY2hlY2tJbiwgbWVzc2FnZURhdGEuY2hlY2tPdXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIEFQUF9NRVNTQUdFX1RZUEUuU0VUX0NBUlQ6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZURhdGEgPSBtZXNzYWdlLmRhdGEgYXMgeyBjYXJ0OiBhbnkgfTtcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0U3RvcmUuZ2V0U3RhdGUoKS5zZXRDYXJ0KG1lc3NhZ2VEYXRhLmNhcnQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIoYFdpZGdldDogZmFpbGVkIHRvIGluaXQgVHJpcGZ1c2lvbiBKUyBTREs6ICR7ZXJyb3J9YCk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFRyaXBmdXNpb246IGZhaWxlZCB0byBpbml0IFNESzogJHtlcnJvcn1gKTtcbiAgICB9XG59XG5cbmluaXRUcmlwZnVzaW9uU2RrKCk7XG4iXSwibmFtZXMiOlsiX19fQ1NTX0xPQURFUl9FWFBPUlRfX18iLCJwdXNoIiwibW9kdWxlIiwiaWQiLCJleHBvcnRzIiwiY3NzV2l0aE1hcHBpbmdUb1N0cmluZyIsImxpc3QiLCJ0b1N0cmluZyIsInRoaXMiLCJtYXAiLCJpdGVtIiwiY29udGVudCIsIm5lZWRMYXllciIsImNvbmNhdCIsImxlbmd0aCIsImpvaW4iLCJpIiwibW9kdWxlcyIsIm1lZGlhIiwiZGVkdXBlIiwic3VwcG9ydHMiLCJsYXllciIsInVuZGVmaW5lZCIsImFscmVhZHlJbXBvcnRlZE1vZHVsZXMiLCJrIiwiX2siLCJjc3NNYXBwaW5nIiwiYnRvYSIsImJhc2U2NCIsInVuZXNjYXBlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiSlNPTiIsInN0cmluZ2lmeSIsImRhdGEiLCJzb3VyY2VNYXBwaW5nIiwiZSIsIm4iLCJyIiwicyIsInUiLCJhIiwibyIsImMiLCJmIiwiaCIsImQiLCJsIiwiJCIsInkiLCJNIiwibmFtZSIsIndlZWtkYXlzIiwic3BsaXQiLCJtb250aHMiLCJvcmRpbmFsIiwidCIsIm0iLCJTdHJpbmciLCJBcnJheSIsInYiLCJ6IiwidXRjT2Zmc2V0IiwiTWF0aCIsImFicyIsImZsb29yIiwiZGF0ZSIsInllYXIiLCJtb250aCIsImNsb25lIiwiYWRkIiwiY2VpbCIsInAiLCJ3IiwiRCIsIm1zIiwiUSIsInRvTG93ZXJDYXNlIiwicmVwbGFjZSIsImciLCJTIiwiXyIsIk8iLCJhcmdzIiwiYXJndW1lbnRzIiwiYiIsImxvY2FsZSIsIiRMIiwidXRjIiwiJHUiLCJ4IiwiJHgiLCIkb2Zmc2V0IiwicGFyc2UiLCJwcm90b3R5cGUiLCIkZCIsIkRhdGUiLCJOYU4iLCJ0ZXN0IiwibWF0Y2giLCJzdWJzdHJpbmciLCJVVEMiLCJpbml0IiwiJHkiLCJnZXRGdWxsWWVhciIsIiRNIiwiZ2V0TW9udGgiLCIkRCIsImdldERhdGUiLCIkVyIsImdldERheSIsIiRIIiwiZ2V0SG91cnMiLCIkbSIsImdldE1pbnV0ZXMiLCIkcyIsImdldFNlY29uZHMiLCIkbXMiLCJnZXRNaWxsaXNlY29uZHMiLCIkdXRpbHMiLCJpc1ZhbGlkIiwiaXNTYW1lIiwic3RhcnRPZiIsImVuZE9mIiwiaXNBZnRlciIsImlzQmVmb3JlIiwiJGciLCJzZXQiLCJ1bml4IiwidmFsdWVPZiIsImdldFRpbWUiLCJ0b0RhdGUiLCJhcHBseSIsInNsaWNlIiwiJGxvY2FsZSIsIndlZWtTdGFydCIsIiRzZXQiLCJtaW4iLCJkYXlzSW5Nb250aCIsImdldCIsIk51bWJlciIsInJvdW5kIiwic3VidHJhY3QiLCJmb3JtYXQiLCJpbnZhbGlkRGF0ZSIsIm1lcmlkaWVtIiwibW9udGhzU2hvcnQiLCJ3ZWVrZGF5c01pbiIsIndlZWtkYXlzU2hvcnQiLCJnZXRUaW1lem9uZU9mZnNldCIsImRpZmYiLCJ0b0pTT04iLCJ0b0lTT1N0cmluZyIsInRvVVRDU3RyaW5nIiwiZm9yRWFjaCIsImV4dGVuZCIsIiRpIiwiaXNEYXlqcyIsImVuIiwiTHMiLCJzdHlsZXNJbkRPTSIsImdldEluZGV4QnlJZGVudGlmaWVyIiwiaWRlbnRpZmllciIsInJlc3VsdCIsIm1vZHVsZXNUb0RvbSIsIm9wdGlvbnMiLCJpZENvdW50TWFwIiwiaWRlbnRpZmllcnMiLCJiYXNlIiwiY291bnQiLCJpbmRleEJ5SWRlbnRpZmllciIsIm9iaiIsImNzcyIsInNvdXJjZU1hcCIsInJlZmVyZW5jZXMiLCJ1cGRhdGVyIiwiYWRkRWxlbWVudFN0eWxlIiwiYnlJbmRleCIsInNwbGljZSIsImFwaSIsImRvbUFQSSIsInVwZGF0ZSIsIm5ld09iaiIsInJlbW92ZSIsImxhc3RJZGVudGlmaWVycyIsIm5ld0xpc3QiLCJpbmRleCIsIm5ld0xhc3RJZGVudGlmaWVycyIsIl9pIiwiX2luZGV4IiwibWVtbyIsImluc2VydCIsInN0eWxlIiwidGFyZ2V0Iiwic3R5bGVUYXJnZXQiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJ3aW5kb3ciLCJIVE1MSUZyYW1lRWxlbWVudCIsImNvbnRlbnREb2N1bWVudCIsImhlYWQiLCJnZXRUYXJnZXQiLCJFcnJvciIsImFwcGVuZENoaWxkIiwiZWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJzZXRBdHRyaWJ1dGVzIiwiYXR0cmlidXRlcyIsInN0eWxlRWxlbWVudCIsIm5vbmNlIiwic2V0QXR0cmlidXRlIiwiaW5zZXJ0U3R5bGVFbGVtZW50Iiwic3R5bGVUYWdUcmFuc2Zvcm0iLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJyZW1vdmVTdHlsZUVsZW1lbnQiLCJzdHlsZVNoZWV0IiwiY3NzVGV4dCIsImZpcnN0Q2hpbGQiLCJjcmVhdGVUZXh0Tm9kZSIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iLCJjYWxsIiwiZ2V0dGVyIiwiX19lc01vZHVsZSIsImRlZmluaXRpb24iLCJrZXkiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJwcm9wIiwiaGFzT3duUHJvcGVydHkiLCJuYyIsIlRSSVBGVVNJT05fQkFTRV9VUkwiLCJXSURHRVRfSUQiLCJXSURHRVRfSU5ORVJfV1JBUFBFUl9JRCIsIldJREdFVF9IRUFERVJfSUQiLCJXSURHRVRfV1JBUFBFUl9JRCIsIldJREdFVF9JRlJBTUVfSUQiLCJSRVNVTUVfUEFORUxfSUQiLCJMT0FERVJfSUQiLCJCT09LSU5HX01PREUiLCJjcmVhdGVKU09OU3RvcmFnZSIsImdldFN0b3JhZ2UiLCJzdG9yYWdlIiwiZ2V0SXRlbSIsIl9hIiwic3RyMiIsInJldml2ZXIiLCJzdHIiLCJQcm9taXNlIiwidGhlbiIsInNldEl0ZW0iLCJuZXdWYWx1ZSIsInJlcGxhY2VyIiwicmVtb3ZlSXRlbSIsInRvVGhlbmFibGUiLCJmbiIsImlucHV0Iiwib25GdWxmaWxsZWQiLCJfb25SZWplY3RlZCIsIl9vbkZ1bGZpbGxlZCIsImNhdGNoIiwib25SZWplY3RlZCIsInBlcnNpc3QiLCJjb25maWciLCJiYXNlT3B0aW9ucyIsImxvY2FsU3RvcmFnZSIsInBhcnRpYWxpemUiLCJzdGF0ZSIsInZlcnNpb24iLCJtZXJnZSIsInBlcnNpc3RlZFN0YXRlIiwiY3VycmVudFN0YXRlIiwiaGFzSHlkcmF0ZWQiLCJoeWRyYXRpb25MaXN0ZW5lcnMiLCJTZXQiLCJmaW5pc2hIeWRyYXRpb25MaXN0ZW5lcnMiLCJjb25zb2xlIiwid2FybiIsInNhdmVkU2V0U3RhdGUiLCJzZXRTdGF0ZSIsImNvbmZpZ1Jlc3VsdCIsInN0YXRlRnJvbVN0b3JhZ2UiLCJnZXRJbml0aWFsU3RhdGUiLCJoeWRyYXRlIiwiX2IiLCJjYiIsIl9hMiIsInBvc3RSZWh5ZHJhdGlvbkNhbGxiYWNrIiwib25SZWh5ZHJhdGVTdG9yYWdlIiwiYmluZCIsImRlc2VyaWFsaXplZFN0b3JhZ2VWYWx1ZSIsIm1pZ3JhdGUiLCJlcnJvciIsIm1pZ3JhdGlvblJlc3VsdCIsIm1pZ3JhdGVkIiwibWlncmF0ZWRTdGF0ZSIsInNldE9wdGlvbnMiLCJuZXdPcHRpb25zIiwiY2xlYXJTdG9yYWdlIiwiZ2V0T3B0aW9ucyIsInJlaHlkcmF0ZSIsIm9uSHlkcmF0ZSIsImRlbGV0ZSIsIm9uRmluaXNoSHlkcmF0aW9uIiwic2tpcEh5ZHJhdGlvbiIsImNyZWF0ZVN0b3JlSW1wbCIsImNyZWF0ZVN0YXRlIiwibGlzdGVuZXJzIiwicGFydGlhbCIsIm5leHRTdGF0ZSIsImlzIiwicHJldmlvdXNTdGF0ZSIsImFzc2lnbiIsImxpc3RlbmVyIiwiZ2V0U3RhdGUiLCJpbml0aWFsU3RhdGUiLCJzdWJzY3JpYmUiLCJjcmVhdGVTdG9yZSIsImluaXRpYWxXaWRnZXRTdGF0ZSIsImlzT3BlbiIsImlzUmVzdW1lUGFuZWxWaXNpYmxlIiwiaXNSZWFkeSIsImlzQm9va2luZ0NvbXBsZXRlZCIsImJhY2tncm91bmRDb2xvciIsInByaW1hcnlHdWVzdE5hbWUiLCJjaGVja0luRGF0ZSIsImNoZWNrT3V0RGF0ZSIsImNhcnQiLCJ3aWRnZXRTdG9yZSIsInNob3dXaWRnZXQiLCJoaWRlV2lkZ2V0Iiwic2hvd1Jlc3VtZVBhbmVsIiwiaGlkZVJlc3VtZVBhbmVsIiwic2V0SXNSZWFkeSIsInNldElzQm9va2luZ0NvbXBsZXRlZCIsInNldEJhY2tncm91bmRDb2xvciIsInNldFByaW1hcnlHdWVzdE5hbWUiLCJzZXRDYXJ0Iiwic2V0RGF0ZXMiLCJyZXNldCIsInNlc3Npb25TdG9yYWdlIiwiZnJvbUVudHJpZXMiLCJlbnRyaWVzIiwiZmlsdGVyIiwiaW5jbHVkZXMiLCJnZXREZWZhdWx0UGFyYW1zIiwianNTZGtTcmMiLCJnZXRFbGVtZW50QnlJZCIsImdldEF0dHJpYnV0ZSIsInVybFBhcmFtcyIsImdldFBhcmFtc0Zyb21VcmwiLCJVUkxTZWFyY2hQYXJhbXMiLCJpbmRleE9mIiwiY2xpZW50IiwicHJvcGVydHlJZCIsInVybFNlYXJjaFBhcmFtcyIsImF2YWlsYWJsZVNlYXJjaFBhcmFtc01hcCIsInRyaXBmdXNpb24iLCJwcm9wZXJ0eWlkIiwibW9kZSIsIm9mZmVyaWQiLCJib29raW5naWQiLCJjaGVja2luIiwiY2hlY2tvdXQiLCJhZHVsdHMiLCJjaGlsZHJlbiIsImZyb20iLCJyZWR1Y2UiLCJwcmV2Iiwic2VhcmNoUGFyYW1LZXkiLCJzZWFyY2hQYXJhbVZhbHVlIiwibG9nZ2VyIiwibWVzc2FnZSIsInR5cGUiLCJ1cmwiLCJwYXlsb2FkIiwicGFnZSIsImxvY2F0aW9uIiwiaHJlZiIsImhlYWRlcnMiLCJmZXRjaCIsIm1ldGhvZCIsImJvZHkiLCJyZXNwb25zZSIsImpzb24iLCJsb2ciLCJoaWRlV2lkZ2V0RG9tIiwiJHdpZGdldCIsIiR3aWRnZXRXcmFwcGVyIiwib3ZlcmZsb3ciLCJiYWNrZ3JvdW5kIiwiZGlzcGxheSIsInpJbmRleCIsImluamVjdElmcmFtZSIsImJvb2tpbmdJZCIsInJlc3QiLCIkaW5uZXJXcmFwcGVyIiwiJHdpZGdldElmcmFtZSIsImFkZGl0aW9uYWxQYXJhbXMiLCJ2YWx1ZSIsImxvY2tQYWdlU2Nyb2xsIiwiY2hlY2tJbiIsImNoZWNrT3V0Iiwib2ZmZXJJZCIsImdsb2JhbFN0b3JlIiwiaXNJdGVyYWJsZSIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiYm9vayIsInByb3BzIiwiYm9va2luZ1N0YXRlIiwib2JqQSIsIm9iakIiLCJpdGVyYXRvckEiLCJpdGVyYXRvckIiLCJuZXh0QSIsIm5leHQiLCJuZXh0QiIsImlzQXJyYXkiLCJpdGVyYWJsZUEiLCJpdGVyYWJsZUIiLCJtYXBBIiwiTWFwIiwibWFwQiIsInNpemUiLCJjb21wYXJlTWFwTGlrZSIsImRvbmUiLCJrZXlzQSIsImtleXMiLCJrZXlBIiwiaGFzT3duIiwic2hhbGxvdyIsImxvY2FscyIsIm5ld1N0YXRlIiwiY2VudHMiLCIkcmVzdW1lUGFuZWwiLCJoZWFkZXJUZXh0Iiwic3ViaGVhZGVyVGV4dCIsImZvb3RlclBhcnRzIiwidG90YWwiLCJyb29tcyIsInJvb21Db3VudCIsImd1ZXN0Q291bnQiLCJhY2MiLCJyb29tIiwicGFzc2VuZ2VycyIsIkludGwiLCJOdW1iZXJGb3JtYXQiLCJjdXJyZW5jeSIsImZvb3RlclRleHQiLCJpbm5lckhUTUwiLCJyZW5kZXJSZXN1bWVQYW5lbCIsIiRyZXN1bWVQYW5lbFdyYXBwZXIiLCIkd2lkZ2V0SGVhZGVyIiwic2V0V2lkZ2V0VGhlbWUiLCJoaWRlTG9hZGluZ092ZXJsYXkiLCJoZWlnaHQiLCJzZXRUaW1lb3V0IiwiZm9jdXMiLCJzaG93V2lkZ2V0RG9tIiwiJGxvYWRpbmdEaXYiLCJkaXNwbGF5TG9hZGluZ092ZXJsYXkiLCJzZXRJbnRlcnZhbCIsInJlYWR5U3RhdGUiLCIkd2lkZ2V0SW5uZXJXcmFwcGVyIiwiJHdpZGdldEhlYWRlclRpdGxlIiwiJHdpZGdldENsb3NlQnV0dG9uIiwiYWRkRXZlbnRMaXN0ZW5lciIsImV2ZW50IiwicHJlcGFyZURvbSIsImhhbmRsZUxpbmtDbGljayIsInRhZ05hbWUiLCJsaW5rSHJlZiIsInByZXZlbnREZWZhdWx0IiwiYWdlIiwicXVlcnlTZWxlY3RvckFsbCIsImxpbmtFbGVtZW50IiwiYWRkTGlua0V2ZW50TGlzdGVuZXJzIiwiY2xlYXJJbnRlcnZhbCIsIm9uTG9hZEhhbmRsZXIiLCJzZWFyY2giLCJhZGRQYWdlTG9hZExpc3RlbmVyIiwiY2xvc2VXaWRnZXQiLCJvbm1lc3NhZ2UiLCJjbGllbnRUaGVtZSIsIm1lc3NhZ2VEYXRhIiwicHJpbWFyeSIsImluaXRUcmlwZnVzaW9uU2RrIl0sInNvdXJjZVJvb3QiOiIifQ==
|
|
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=["checkIn","checkOut","adults","children","offerId"],f=document.createElement("iframe"),p="".concat(n).concat(i,"/").concat(o);s===l&&u&&(p+="/booking/".concat(u,"/append"));var m=Object.entries(c).filter((function(n){var t=n[0],e=n[1];return A.includes(t)&&!!e})).map((function(n){var t=n[0],e=n[1];return"".concat(t,"=").concat(e).toLowerCase()})).join("&");m&&(p+="?".concat(m)),f.setAttribute("src",p),f.id=a,d.appendChild(f)}}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,l;if(n.isResumePanelVisible){var d=n.primaryGuestName?"Complete your booking, ".concat(n.primaryGuestName):"Complete your booking",A="",f=[];if(n.isBookingCompleted&&(d="Booking completed!"),n.checkInDate&&n.checkOutDate&&f.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 p=n.cart.rooms.length,m=n.cart.rooms.reduce((function(n,t){return n+t.passengers.adults+t.passengers.children.length}),0);A="".concat(p," room").concat(p>1?"s":""," for "),f.push("".concat(m," guest").concat(m>1?"s":""))}A+=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:d,subheaderText:A,footerText:f.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?(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?((l=document.getElementById(s)).setAttribute("class","tripfusion-resume-panel--slide-in"),l.focus()):document.getElementById(s).setAttribute("class","tripfusion-resume-panel--slide-out"),null==(c=document.getElementById(u))||c.remove()):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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WWQsV0FBV3VCLFFBQVFtSixFQUFZN0osTUFPdkQsQ0FDSixDQUFFLE1BQU9uQyxHQUNMK0UsRUFBTyxvREFBNkMvRSxJQUNwRGhCLFFBQVFnQixNQUFNLDBDQUFtQ0EsR0FDckQsQ0FDSixDQUVBa00sRSIsInNvdXJjZXMiOlsid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL3N0eWxlcy5jc3MiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9ub2RlX21vZHVsZXMvZGF5anMvZGF5anMubWluLmpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qcyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvd2VicGFjay9ydW50aW1lL25vbmNlIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL2NvbnN0LnRzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL3p1c3RhbmQvZXNtL21pZGRsZXdhcmUubWpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL3p1c3RhbmQvZXNtL3ZhbmlsbGEubWpzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL3N0b3JlL3dpZGdldC5zdG9yZS50cyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL3NyYy91dGlscy50cyIsIndlYnBhY2s6Ly9AdmFjYXlvdS90cmlwZnVzaW9uLWpzLXNkay8uL3NyYy9kb20udHMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9zcmMvc3RvcmUvZ2xvYmFsLnN0b3JlLnRzIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vbm9kZV9tb2R1bGVzL3p1c3RhbmQvZXNtL3ZhbmlsbGEvc2hhbGxvdy5tanMiLCJ3ZWJwYWNrOi8vQHZhY2F5b3UvdHJpcGZ1c2lvbi1qcy1zZGsvLi9zcmMvc3R5bGVzLmNzcz80NGIyIiwid2VicGFjazovL0B2YWNheW91L3RyaXBmdXNpb24tanMtc2RrLy4vc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIkBpbXBvcnQgdXJsKGh0dHBzOi8vdXNlLnR5cGVraXQubmV0L3NhZzhjZWIuY3NzKTtcIl0pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIGAjdHJpcGZ1c2lvbi1sb2FkZXIge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBtYXJnaW4tcmlnaHQ6IC01MCU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBmb250LWZhbWlseTogZnV0dXJhLWx0LXcwMS1ib29rLCBmdXR1cmEtbHQtdzA1LWJvb2ssIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG5cbiN0cmlwZnVzaW9uLWxvYWRlciBzcGFuIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXNpemU6IDEuM3JlbTtcbn1cblxuI3RyaXBmdXNpb24tcmVzdW1lLXBhbmVsIHtcbiAgICBtYXgtd2lkdGg6IDI1MHB4O1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAwLjVyZW07XG4gICAgcGFkZGluZzogMTJweCAyNHB4O1xuICAgIGJveC1zaGFkb3c6IDBweCAwcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4yNSksIDBweCA0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICByaWdodDogMzBweDtcbiAgICB6LWluZGV4OiAxMDAwMDAwMDAwMDA7XG4gICAgYm90dG9tOiA0MHB4O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNDAwcHgpO1xuICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBmb250LWZhbWlseTogc3dlZXQtc2Fucy1wcm8sIHNhbnMtc2VyaWY7XG59XG5cbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbF9faGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IDJlbTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX2hlYWRlciBzdmcge1xuICAgIHdpZHRoOiAxOHB4O1xuICAgIGhlaWdodDogMThweDtcbiAgICBmaWxsOiB3aGl0ZTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsX19oZWFkZXIgc3Bhbixcbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbF9fc3ViaGVhZGVyIHtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsX19mb290ZXIge1xuICAgIGZvbnQtZmFtaWx5OiBSb2JvdG8sIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0LXdyYXBwZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMCk7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuNXMgZWFzZS1vdXQ7XG59XG5cbiN0cmlwZnVzaW9uLXdpZGdldCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB0b3A6IDBweDtcbiAgICByaWdodDogMHB4O1xufVxuXG4jdHJpcGZ1c2lvbi13aWRnZXQtaW5uZXItd3JhcHBlciB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBtaW4td2lkdGg6IDMyMHB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICByaWdodDogMHB4O1xuICAgIGJvdHRvbTogMHB4O1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBib3gtc2hhZG93OiAwIDJweCAxMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpO1xuICAgIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiLCBcIkhlbHZldGljYVwiLCBcIkFyaWFsXCIsIHNhbnMtc2VyaWY7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wMDkzOGVtO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICAjdHJpcGZ1c2lvbi13aWRnZXQtaW5uZXItd3JhcHBlciB7XG4gICAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gNDBweCk7XG4gICAgICAgIHJpZ2h0OiAyMHB4O1xuICAgICAgICBib3R0b206IDIwcHg7XG4gICAgICAgIHdpZHRoOiA1MDBweDtcbiAgICB9XG59XG5cbiN0cmlwZnVzaW9uLXdpZGdldC1oZWFkZXIge1xuICAgIGhlaWdodDogNjBweDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YxZjFmMTtcbiAgICBwYWRkaW5nOiAwIDE2cHggMCAxNnB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgY29sb3I6IHdoaXRlO1xufVxuXG4jdHJpcGZ1c2lvbi13aWRnZXQtaWZyYW1lIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYm9yZGVyOiBub25lO1xufVxuXG4jdHJpcGZ1c2lvbi13aWRnZXQtaGVhZGVyLXRpdGxlIHtcbiAgICBmb250LWZhbWlseTogc3dlZXQtc2Fucy1wcm8sIHNhbnMtc2VyaWY7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBsZXR0ZXItc3BhY2luZzogMS41cHg7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuI3RyaXBmdXNpb24td2lkZ2V0LWNsb3NlLWJ1dHRvbiB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgd2lkdGg6IDJlbTtcbiAgICBoZWlnaHQ6IDJlbTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgZm9udDogaW5oZXJpdDtcbiAgICB0ZXh0LWluZGVudDogMTAwJTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgb3V0bGluZTogc29saWQgMCB0cmFuc3BhcmVudDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA0KTtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA0KTtcbiAgICB9XG5cbiAgICAmOmJlZm9yZSxcbiAgICAmOmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDI1JTtcbiAgICAgICAgbGVmdDogY2FsYyg1MCUgLSAwLjA2MjVlbSk7XG4gICAgICAgIHdpZHRoOiAwLjEyNWVtO1xuICAgICAgICBoZWlnaHQ6IDUwJTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC4xMjVlbTtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuICAgICAgICBiYWNrZ3JvdW5kOiBjdXJyZW50Y29sb3I7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICB9XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtcbiAgICB9XG59XG5cbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbC0tc2xpZGUtaW4ge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogNTAwbXM7XG4gICAgLW1vei10cmFuc2l0aW9uOiA1MDBtcztcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgIWltcG9ydGFudDtcbn1cblxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsLS1zbGlkZS1vdXQge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogNTAwbXM7XG4gICAgLW1vei10cmFuc2l0aW9uOiA1MDBtcztcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNDAwcHgpICFpbXBvcnRhbnQ7XG59XG5cbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbC0tcmVzaXplLWluIHtcbiAgICB3aWR0aDogNDZweCAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xuICAgIHRyYW5zaXRpb246IDUwMG1zO1xuICAgIHJpZ2h0OiAzMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbC0tcmVzaXplLWluOmhvdmVyIHtcbiAgICB3aWR0aDogMjE3cHggIWltcG9ydGFudDtcbiAgICBoZWlnaHQ6IDQ2cHggIWltcG9ydGFudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMzAwbXMgbGluZWFyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsLS1yZXNpemUtb3V0IHtcbiAgICB3aWR0aDogNDZweCAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xuICAgIHRyYW5zaXRpb246IDUwMG1zO1xuICAgIHJpZ2h0OiAtMTAwcHggIWltcG9ydGFudDtcbn1cblxuLnNsaWRlLWluIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgYW5pbWF0aW9uOiBzbGlkZS1pbiAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLWluIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcbiAgICB6LWluZGV4OiAxMDAwMDAwMDAwMDAwO1xufVxuXG4uc2xpZGUtb3V0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgYW5pbWF0aW9uOiBzbGlkZS1vdXQgMXMgZm9yd2FyZHMgIWltcG9ydGFudDtcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGUtb3V0IDFzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgei1pbmRleDogLTEwMDAwMDAwMDAwMDA7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ5NXB4KSB7XG4gICAgLnNsaWRlLWluIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICAgICAgYW5pbWF0aW9uOiBzbGlkZS11cCAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS11cCAwLjhzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgICAgIHotaW5kZXg6IDEwMDAwMDAwMDAwMDA7XG4gICAgfVxuXG4gICAgLnNsaWRlLW91dCB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgICAgIGFuaW1hdGlvbjogc2xpZGUtZG93biAwLjVzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS1kb3duIDFzIGZvcndhcmRzICFpbXBvcnRhbnQ7XG4gICAgICAgIHotaW5kZXg6IC0xMDAwMDAwMDAwMDAwO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZS1pbiB7XG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gICAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtaW4ge1xuICAgIDEwMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlLXVwIHtcbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbiAgICB9XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS11cCB7XG4gICAgMTAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGUtb3V0IHtcbiAgICAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICB9XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS1vdXQge1xuICAgIDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGUtZG93biB7XG4gICAgMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtZG93biB7XG4gICAgMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgIH1cbn1cbmAsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vc3JjL3N0eWxlcy5jc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBRUE7SUFDSSxZQUFZO0lBQ1osa0JBQWtCO0lBQ2xCLGtCQUFrQjtJQUNsQixRQUFRO0lBQ1IsU0FBUztJQUNULGlGQUFpRjtJQUNqRixnQ0FBZ0M7QUFDcEM7O0FBRUE7SUFDSSxpQkFBaUI7SUFDakIsaUJBQWlCO0FBQ3JCOztBQUVBO0lBQ0ksZ0JBQWdCO0lBQ2hCLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsV0FBVztJQUNYLGtCQUFrQjtJQUNsQiwyRUFBMkU7SUFDM0UsV0FBVztJQUNYLHFCQUFxQjtJQUNyQixZQUFZO0lBQ1osWUFBWTtJQUNaLDRCQUE0QjtJQUM1QixtQkFBbUI7SUFDbkIsWUFBWTtJQUNaLGVBQWU7SUFDZix1Q0FBdUM7QUFDM0M7O0FBRUE7SUFDSSxhQUFhO0lBQ2IsOEJBQThCO0lBQzlCLFFBQVE7SUFDUixtQkFBbUI7QUFDdkI7O0FBRUE7SUFDSSxXQUFXO0lBQ1gsWUFBWTtJQUNaLFdBQVc7SUFDWCxjQUFjO0FBQ2xCOztBQUVBOztJQUVJLGdCQUFnQjtJQUNoQixnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLHVCQUF1QjtBQUMzQjs7QUFFQTtJQUNJLGlEQUFpRDtJQUNqRCxpQkFBaUI7SUFDakIsZ0JBQWdCO0FBQ3BCOztBQUVBO0lBQ0ksNEJBQTRCO0lBQzVCLGVBQWU7SUFDZixNQUFNO0lBQ04sUUFBUTtJQUNSLFdBQVc7SUFDWCxvQ0FBb0M7QUFDeEM7O0FB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Q0ksMkJBQTJCO0lBQy9CO0FBQ0o7O0FBRUE7SUFDSTtRQUNJLGlDQUFpQztJQUNyQzs7SUFFQTtRQUNJLG1DQUFtQztJQUN2QztBQUNKXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIkBpbXBvcnQgdXJsKFxcXCJodHRwczovL3VzZS50eXBla2l0Lm5ldC9zYWc4Y2ViLmNzc1xcXCIpO1xcblxcbiN0cmlwZnVzaW9uLWxvYWRlciB7XFxuICAgIGNvbG9yOiB3aGl0ZTtcXG4gICAgbWFyZ2luLXJpZ2h0OiAtNTAlO1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHRvcDogNTAlO1xcbiAgICBsZWZ0OiA1MCU7XFxuICAgIGZvbnQtZmFtaWx5OiBmdXR1cmEtbHQtdzAxLWJvb2ssIGZ1dHVyYS1sdC13MDUtYm9vaywgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XFxufVxcblxcbiN0cmlwZnVzaW9uLWxvYWRlciBzcGFuIHtcXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWwge1xcbiAgICBtYXgtd2lkdGg6IDI1MHB4O1xcbiAgICBwb3NpdGlvbjogZml4ZWQ7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgZ2FwOiAwLjVyZW07XFxuICAgIHBhZGRpbmc6IDEycHggMjRweDtcXG4gICAgYm94LXNoYWRvdzogMHB4IDBweCAycHggcmdiYSgwLCAwLCAwLCAwLjI1KSwgMHB4IDRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xcbiAgICByaWdodDogMzBweDtcXG4gICAgei1pbmRleDogMTAwMDAwMDAwMDAwO1xcbiAgICBib3R0b206IDQwcHg7XFxuICAgIGJvcmRlcjogbm9uZTtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDQwMHB4KTtcXG4gICAgYm9yZGVyLXJhZGl1czogMTZweDtcXG4gICAgY29sb3I6IHdoaXRlO1xcbiAgICBmb250LXNpemU6IDFyZW07XFxuICAgIGZvbnQtZmFtaWx5OiBzd2VldC1zYW5zLXBybywgc2Fucy1zZXJpZjtcXG59XFxuXFxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsX19oZWFkZXIge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICAgIGdhcDogMmVtO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG5cXG4udHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX2hlYWRlciBzdmcge1xcbiAgICB3aWR0aDogMThweDtcXG4gICAgaGVpZ2h0OiAxOHB4O1xcbiAgICBmaWxsOiB3aGl0ZTtcXG4gICAgZmxleC1zaHJpbms6IDA7XFxufVxcblxcbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbF9faGVhZGVyIHNwYW4sXFxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsX19zdWJoZWFkZXIge1xcbiAgICBmb250LXdlaWdodDogNzAwO1xcbiAgICBsaW5lLWhlaWdodDogMS4yO1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG59XFxuXFxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsX19mb290ZXIge1xcbiAgICBmb250LWZhbWlseTogUm9ib3RvLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xcbiAgICBmb250LXNpemU6IDAuOHJlbTtcXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcXG59XFxuXFxuI3RyaXBmdXNpb24td2lkZ2V0LXdyYXBwZXIge1xcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDApO1xcbiAgICBwb3NpdGlvbjogZml4ZWQ7XFxuICAgIHRvcDogMDtcXG4gICAgcmlnaHQ6IDA7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuNXMgZWFzZS1vdXQ7XFxufVxcblxcbiN0cmlwZnVzaW9uLXdpZGdldCB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIGhlaWdodDogMTAwJTtcXG4gICAgdG9wOiAwcHg7XFxuICAgIHJpZ2h0OiAwcHg7XFxufVxcblxcbiN0cmlwZnVzaW9uLXdpZGdldC1pbm5lci13cmFwcGVyIHtcXG4gICAgcG9zaXRpb246IGZpeGVkO1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICBtaW4td2lkdGg6IDMyMHB4O1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICByaWdodDogMHB4O1xcbiAgICBib3R0b206IDBweDtcXG4gICAgYmFja2dyb3VuZDogd2hpdGU7XFxuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcXG4gICAgYm94LXNoYWRvdzogMCAycHggMTBweCAwIHJnYmEoMCwgMCwgMCwgMC4yKTtcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJSb2JvdG9cXFwiLCBcXFwiSGVsdmV0aWNhXFxcIiwgXFxcIkFyaWFsXFxcIiwgc2Fucy1zZXJpZjtcXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gICAgZm9udC1zaXplOiAxcmVtO1xcbiAgICBsaW5lLWhlaWdodDogMS41O1xcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wMDkzOGVtO1xcbn1cXG5cXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcXG4gICAgI3RyaXBmdXNpb24td2lkZ2V0LWlubmVyLXdyYXBwZXIge1xcbiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA0MHB4KTtcXG4gICAgICAgIHJpZ2h0OiAyMHB4O1xcbiAgICAgICAgYm90dG9tOiAyMHB4O1xcbiAgICAgICAgd2lkdGg6IDUwMHB4O1xcbiAgICB9XFxufVxcblxcbiN0cmlwZnVzaW9uLXdpZGdldC1oZWFkZXIge1xcbiAgICBoZWlnaHQ6IDYwcHg7XFxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjFmMWYxO1xcbiAgICBwYWRkaW5nOiAwIDE2cHggMCAxNnB4O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGNvbG9yOiB3aGl0ZTtcXG59XFxuXFxuI3RyaXBmdXNpb24td2lkZ2V0LWlmcmFtZSB7XFxuICAgIGhlaWdodDogMTAwJTtcXG4gICAgYm9yZGVyOiBub25lO1xcbn1cXG5cXG4jdHJpcGZ1c2lvbi13aWRnZXQtaGVhZGVyLXRpdGxlIHtcXG4gICAgZm9udC1mYW1pbHk6IHN3ZWV0LXNhbnMtcHJvLCBzYW5zLXNlcmlmO1xcbiAgICBsaW5lLWhlaWdodDogMS4yO1xcbiAgICBmb250LXdlaWdodDogNzAwO1xcbiAgICBmb250LXNpemU6IDFyZW07XFxuICAgIGxldHRlci1zcGFjaW5nOiAxLjVweDtcXG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcXG59XFxuXFxuI3RyaXBmdXNpb24td2lkZ2V0LWNsb3NlLWJ1dHRvbiB7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgYm9yZGVyOiBub25lO1xcbiAgICBwYWRkaW5nOiAwO1xcbiAgICB3aWR0aDogMmVtO1xcbiAgICBoZWlnaHQ6IDJlbTtcXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gICAgZm9udDogaW5oZXJpdDtcXG4gICAgdGV4dC1pbmRlbnQ6IDEwMCU7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG5cXG4gICAgJjpmb2N1cyB7XFxuICAgICAgICBvdXRsaW5lOiBzb2xpZCAwIHRyYW5zcGFyZW50O1xcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA0KTtcXG4gICAgfVxcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNCk7XFxuICAgIH1cXG5cXG4gICAgJjpiZWZvcmUsXFxuICAgICY6YWZ0ZXIge1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgdG9wOiAyNSU7XFxuICAgICAgICBsZWZ0OiBjYWxjKDUwJSAtIDAuMDYyNWVtKTtcXG4gICAgICAgIHdpZHRoOiAwLjEyNWVtO1xcbiAgICAgICAgaGVpZ2h0OiA1MCU7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjEyNWVtO1xcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xcbiAgICAgICAgYmFja2dyb3VuZDogY3VycmVudGNvbG9yO1xcbiAgICAgICAgY29sb3I6IHdoaXRlO1xcbiAgICAgICAgY29udGVudDogXFxcIlxcXCI7XFxuICAgIH1cXG5cXG4gICAgJjphZnRlciB7XFxuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xcbiAgICB9XFxufVxcblxcbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbC0tc2xpZGUtaW4ge1xcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IDUwMG1zO1xcbiAgICAtbW96LXRyYW5zaXRpb246IDUwMG1zO1xcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApICFpbXBvcnRhbnQ7XFxufVxcblxcbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbC0tc2xpZGUtb3V0IHtcXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgLW1vei10cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgdHJhbnNpdGlvbjogNTAwbXM7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0MDBweCkgIWltcG9ydGFudDtcXG59XFxuXFxuLnRyaXBmdXNpb24tcmVzdW1lLXBhbmVsLS1yZXNpemUtaW4ge1xcbiAgICB3aWR0aDogNDZweCAhaW1wb3J0YW50O1xcbiAgICBoZWlnaHQ6IDQ2cHggIWltcG9ydGFudDtcXG4gICAgdHJhbnNpdGlvbjogNTAwbXM7XFxuICAgIHJpZ2h0OiAzMHB4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbC0tcmVzaXplLWluOmhvdmVyIHtcXG4gICAgd2lkdGg6IDIxN3B4ICFpbXBvcnRhbnQ7XFxuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xcbiAgICB0cmFuc2l0aW9uOiBhbGwgMzAwbXMgbGluZWFyO1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi50cmlwZnVzaW9uLXJlc3VtZS1wYW5lbC0tcmVzaXplLW91dCB7XFxuICAgIHdpZHRoOiA0NnB4ICFpbXBvcnRhbnQ7XFxuICAgIGhlaWdodDogNDZweCAhaW1wb3J0YW50O1xcbiAgICB0cmFuc2l0aW9uOiA1MDBtcztcXG4gICAgcmlnaHQ6IC0xMDBweCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uc2xpZGUtaW4ge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xcbiAgICBhbmltYXRpb246IHNsaWRlLWluIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLWluIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgei1pbmRleDogMTAwMDAwMDAwMDAwMDtcXG59XFxuXFxuLnNsaWRlLW91dCB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxuICAgIGFuaW1hdGlvbjogc2xpZGUtb3V0IDFzIGZvcndhcmRzICFpbXBvcnRhbnQ7XFxuICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZS1vdXQgMXMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgei1pbmRleDogLTEwMDAwMDAwMDAwMDA7XFxufVxcblxcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ5NXB4KSB7XFxuICAgIC5zbGlkZS1pbiB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG4gICAgICAgIGFuaW1hdGlvbjogc2xpZGUtdXAgMC44cyBmb3J3YXJkcyAhaW1wb3J0YW50O1xcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLXVwIDAuOHMgZm9yd2FyZHMgIWltcG9ydGFudDtcXG4gICAgICAgIHotaW5kZXg6IDEwMDAwMDAwMDAwMDA7XFxuICAgIH1cXG5cXG4gICAgLnNsaWRlLW91dCB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG4gICAgICAgIGFuaW1hdGlvbjogc2xpZGUtZG93biAwLjVzIGZvcndhcmRzICFpbXBvcnRhbnQ7XFxuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGUtZG93biAxcyBmb3J3YXJkcyAhaW1wb3J0YW50O1xcbiAgICAgICAgei1pbmRleDogLTEwMDAwMDAwMDAwMDA7XFxuICAgIH1cXG59XFxuXFxuQGtleWZyYW1lcyBzbGlkZS1pbiB7XFxuICAgIDEwMCUge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcXG4gICAgfVxcbn1cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtaW4ge1xcbiAgICAxMDAlIHtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcXG4gICAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzIHNsaWRlLXVwIHtcXG4gICAgMTAwJSB7XFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xcbiAgICB9XFxufVxcblxcbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS11cCB7XFxuICAgIDEwMCUge1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xcbiAgICB9XFxufVxcblxcbkBrZXlmcmFtZXMgc2xpZGUtb3V0IHtcXG4gICAgMCUge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcXG4gICAgfVxcblxcbiAgICAxMDAlIHtcXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG4gICAgfVxcbn1cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtb3V0IHtcXG4gICAgMCUge1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xcbiAgICB9XFxuXFxuICAgIDEwMCUge1xcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxuICAgIH1cXG59XFxuXFxuQGtleWZyYW1lcyBzbGlkZS1kb3duIHtcXG4gICAgMCUge1xcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcXG4gICAgfVxcblxcbiAgICAxMDAlIHtcXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG4gICAgfVxcbn1cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtZG93biB7XFxuICAgIDAlIHtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcXG4gICAgfVxcblxcbiAgICAxMDAlIHtcXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xcbiAgICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTtcblxuICAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gXCJcIjtcbiAgICAgIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2YgaXRlbVs1XSAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIik7XG4gICAgICB9XG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKTtcbiAgICAgIH1cbiAgICAgIGNvbnRlbnQgKz0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKTtcbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTtcblxuICAvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuICBsaXN0LmkgPSBmdW5jdGlvbiBpKG1vZHVsZXMsIG1lZGlhLCBkZWR1cGUsIHN1cHBvcnRzLCBsYXllcikge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgdW5kZWZpbmVkXV07XG4gICAgfVxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aGlzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgIHZhciBpZCA9IHRoaXNba11bMF07XG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAodmFyIF9rID0gMDsgX2sgPCBtb2R1bGVzLmxlbmd0aDsgX2srKykge1xuICAgICAgdmFyIGl0ZW0gPSBbXS5jb25jYXQobW9kdWxlc1tfa10pO1xuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBsYXllciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW1bNV0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChtZWRpYSkge1xuICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc3VwcG9ydHMpIHtcbiAgICAgICAgaWYgKCFpdGVtWzRdKSB7XG4gICAgICAgICAgaXRlbVs0XSA9IFwiXCIuY29uY2F0KHN1cHBvcnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNF0gPSBzdXBwb3J0cztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGxpc3Q7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gIHZhciBjb250ZW50ID0gaXRlbVsxXTtcbiAgdmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuICBpZiAoIWNzc01hcHBpbmcpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuICBpZiAodHlwZW9mIGJ0b2EgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShjc3NNYXBwaW5nKSkpKTtcbiAgICB2YXIgZGF0YSA9IFwic291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsXCIuY29uY2F0KGJhc2U2NCk7XG4gICAgdmFyIHNvdXJjZU1hcHBpbmcgPSBcIi8qIyBcIi5jb25jYXQoZGF0YSwgXCIgKi9cIik7XG4gICAgcmV0dXJuIFtjb250ZW50XS5jb25jYXQoW3NvdXJjZU1hcHBpbmddKS5qb2luKFwiXFxuXCIpO1xuICB9XG4gIHJldHVybiBbY29udGVudF0uam9pbihcIlxcblwiKTtcbn07IiwiIWZ1bmN0aW9uKHQsZSl7XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9ZSgpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoZSk6KHQ9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczp0fHxzZWxmKS5kYXlqcz1lKCl9KHRoaXMsKGZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHQ9MWUzLGU9NmU0LG49MzZlNSxyPVwibWlsbGlzZWNvbmRcIixpPVwic2Vjb25kXCIscz1cIm1pbnV0ZVwiLHU9XCJob3VyXCIsYT1cImRheVwiLG89XCJ3ZWVrXCIsYz1cIm1vbnRoXCIsZj1cInF1YXJ0ZXJcIixoPVwieWVhclwiLGQ9XCJkYXRlXCIsbD1cIkludmFsaWQgRGF0ZVwiLCQ9L14oXFxkezR9KVstL10/KFxcZHsxLDJ9KT9bLS9dPyhcXGR7MCwyfSlbVHRcXHNdKihcXGR7MSwyfSk/Oj8oXFxkezEsMn0pPzo/KFxcZHsxLDJ9KT9bLjpdPyhcXGQrKT8kLyx5PS9cXFsoW15cXF1dKyldfFl7MSw0fXxNezEsNH18RHsxLDJ9fGR7MSw0fXxIezEsMn18aHsxLDJ9fGF8QXxtezEsMn18c3sxLDJ9fFp7MSwyfXxTU1MvZyxNPXtuYW1lOlwiZW5cIix3ZWVrZGF5czpcIlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5XCIuc3BsaXQoXCJfXCIpLG1vbnRoczpcIkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXJcIi5zcGxpdChcIl9cIiksb3JkaW5hbDpmdW5jdGlvbih0KXt2YXIgZT1bXCJ0aFwiLFwic3RcIixcIm5kXCIsXCJyZFwiXSxuPXQlMTAwO3JldHVyblwiW1wiK3QrKGVbKG4tMjApJTEwXXx8ZVtuXXx8ZVswXSkrXCJdXCJ9fSxtPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1TdHJpbmcodCk7cmV0dXJuIXJ8fHIubGVuZ3RoPj1lP3Q6XCJcIitBcnJheShlKzEtci5sZW5ndGgpLmpvaW4obikrdH0sdj17czptLHo6ZnVuY3Rpb24odCl7dmFyIGU9LXQudXRjT2Zmc2V0KCksbj1NYXRoLmFicyhlKSxyPU1hdGguZmxvb3Iobi82MCksaT1uJTYwO3JldHVybihlPD0wP1wiK1wiOlwiLVwiKSttKHIsMixcIjBcIikrXCI6XCIrbShpLDIsXCIwXCIpfSxtOmZ1bmN0aW9uIHQoZSxuKXtpZihlLmRhdGUoKTxuLmRhdGUoKSlyZXR1cm4tdChuLGUpO3ZhciByPTEyKihuLnllYXIoKS1lLnllYXIoKSkrKG4ubW9udGgoKS1lLm1vbnRoKCkpLGk9ZS5jbG9uZSgpLmFkZChyLGMpLHM9bi1pPDAsdT1lLmNsb25lKCkuYWRkKHIrKHM/LTE6MSksYyk7cmV0dXJuKygtKHIrKG4taSkvKHM/aS11OnUtaSkpfHwwKX0sYTpmdW5jdGlvbih0KXtyZXR1cm4gdDwwP01hdGguY2VpbCh0KXx8MDpNYXRoLmZsb29yKHQpfSxwOmZ1bmN0aW9uKHQpe3JldHVybntNOmMseTpoLHc6byxkOmEsRDpkLGg6dSxtOnMsczppLG1zOnIsUTpmfVt0XXx8U3RyaW5nKHR8fFwiXCIpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvcyQvLFwiXCIpfSx1OmZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10fX0sZz1cImVuXCIsRD17fTtEW2ddPU07dmFyIHA9XCIkaXNEYXlqc09iamVjdFwiLFM9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBffHwhKCF0fHwhdFtwXSl9LHc9ZnVuY3Rpb24gdChlLG4scil7dmFyIGk7aWYoIWUpcmV0dXJuIGc7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpe3ZhciBzPWUudG9Mb3dlckNhc2UoKTtEW3NdJiYoaT1zKSxuJiYoRFtzXT1uLGk9cyk7dmFyIHU9ZS5zcGxpdChcIi1cIik7aWYoIWkmJnUubGVuZ3RoPjEpcmV0dXJuIHQodVswXSl9ZWxzZXt2YXIgYT1lLm5hbWU7RFthXT1lLGk9YX1yZXR1cm4hciYmaSYmKGc9aSksaXx8IXImJmd9LE89ZnVuY3Rpb24odCxlKXtpZihTKHQpKXJldHVybiB0LmNsb25lKCk7dmFyIG49XCJvYmplY3RcIj09dHlwZW9mIGU/ZTp7fTtyZXR1cm4gbi5kYXRlPXQsbi5hcmdzPWFyZ3VtZW50cyxuZXcgXyhuKX0sYj12O2IubD13LGIuaT1TLGIudz1mdW5jdGlvbih0LGUpe3JldHVybiBPKHQse2xvY2FsZTplLiRMLHV0YzplLiR1LHg6ZS4keCwkb2Zmc2V0OmUuJG9mZnNldH0pfTt2YXIgXz1mdW5jdGlvbigpe2Z1bmN0aW9uIE0odCl7dGhpcy4kTD13KHQubG9jYWxlLG51bGwsITApLHRoaXMucGFyc2UodCksdGhpcy4keD10aGlzLiR4fHx0Lnh8fHt9LHRoaXNbcF09ITB9dmFyIG09TS5wcm90b3R5cGU7cmV0dXJuIG0ucGFyc2U9ZnVuY3Rpb24odCl7dGhpcy4kZD1mdW5jdGlvbih0KXt2YXIgZT10LmRhdGUsbj10LnV0YztpZihudWxsPT09ZSlyZXR1cm4gbmV3IERhdGUoTmFOKTtpZihiLnUoZSkpcmV0dXJuIG5ldyBEYXRlO2lmKGUgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBuZXcgRGF0ZShlKTtpZihcInN0cmluZ1wiPT10eXBlb2YgZSYmIS9aJC9pLnRlc3QoZSkpe3ZhciByPWUubWF0Y2goJCk7aWYocil7dmFyIGk9clsyXS0xfHwwLHM9KHJbN118fFwiMFwiKS5zdWJzdHJpbmcoMCwzKTtyZXR1cm4gbj9uZXcgRGF0ZShEYXRlLlVUQyhyWzFdLGksclszXXx8MSxyWzRdfHwwLHJbNV18fDAscls2XXx8MCxzKSk6bmV3IERhdGUoclsxXSxpLHJbM118fDEscls0XXx8MCxyWzVdfHwwLHJbNl18fDAscyl9fXJldHVybiBuZXcgRGF0ZShlKX0odCksdGhpcy5pbml0KCl9LG0uaW5pdD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuJGQ7dGhpcy4keT10LmdldEZ1bGxZZWFyKCksdGhpcy4kTT10LmdldE1vbnRoKCksdGhpcy4kRD10LmdldERhdGUoKSx0aGlzLiRXPXQuZ2V0RGF5KCksdGhpcy4kSD10LmdldEhvdXJzKCksdGhpcy4kbT10LmdldE1pbnV0ZXMoKSx0aGlzLiRzPXQuZ2V0U2Vjb25kcygpLHRoaXMuJG1zPXQuZ2V0TWlsbGlzZWNvbmRzKCl9LG0uJHV0aWxzPWZ1bmN0aW9uKCl7cmV0dXJuIGJ9LG0uaXNWYWxpZD1mdW5jdGlvbigpe3JldHVybiEodGhpcy4kZC50b1N0cmluZygpPT09bCl9LG0uaXNTYW1lPWZ1bmN0aW9uKHQsZSl7dmFyIG49Tyh0KTtyZXR1cm4gdGhpcy5zdGFydE9mKGUpPD1uJiZuPD10aGlzLmVuZE9mKGUpfSxtLmlzQWZ0ZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gTyh0KTx0aGlzLnN0YXJ0T2YoZSl9LG0uaXNCZWZvcmU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5lbmRPZihlKTxPKHQpfSxtLiRnPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gYi51KHQpP3RoaXNbZV06dGhpcy5zZXQobix0KX0sbS51bml4PWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZmxvb3IodGhpcy52YWx1ZU9mKCkvMWUzKX0sbS52YWx1ZU9mPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGQuZ2V0VGltZSgpfSxtLnN0YXJ0T2Y9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLHI9ISFiLnUoZSl8fGUsZj1iLnAodCksbD1mdW5jdGlvbih0LGUpe3ZhciBpPWIudyhuLiR1P0RhdGUuVVRDKG4uJHksZSx0KTpuZXcgRGF0ZShuLiR5LGUsdCksbik7cmV0dXJuIHI/aTppLmVuZE9mKGEpfSwkPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGIudyhuLnRvRGF0ZSgpW3RdLmFwcGx5KG4udG9EYXRlKFwic1wiKSwocj9bMCwwLDAsMF06WzIzLDU5LDU5LDk5OV0pLnNsaWNlKGUpKSxuKX0seT10aGlzLiRXLE09dGhpcy4kTSxtPXRoaXMuJEQsdj1cInNldFwiKyh0aGlzLiR1P1wiVVRDXCI6XCJcIik7c3dpdGNoKGYpe2Nhc2UgaDpyZXR1cm4gcj9sKDEsMCk6bCgzMSwxMSk7Y2FzZSBjOnJldHVybiByP2woMSxNKTpsKDAsTSsxKTtjYXNlIG86dmFyIGc9dGhpcy4kbG9jYWxlKCkud2Vla1N0YXJ0fHwwLEQ9KHk8Zz95Kzc6eSktZztyZXR1cm4gbChyP20tRDptKyg2LUQpLE0pO2Nhc2UgYTpjYXNlIGQ6cmV0dXJuICQoditcIkhvdXJzXCIsMCk7Y2FzZSB1OnJldHVybiAkKHYrXCJNaW51dGVzXCIsMSk7Y2FzZSBzOnJldHVybiAkKHYrXCJTZWNvbmRzXCIsMik7Y2FzZSBpOnJldHVybiAkKHYrXCJNaWxsaXNlY29uZHNcIiwzKTtkZWZhdWx0OnJldHVybiB0aGlzLmNsb25lKCl9fSxtLmVuZE9mPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnN0YXJ0T2YodCwhMSl9LG0uJHNldD1mdW5jdGlvbih0LGUpe3ZhciBuLG89Yi5wKHQpLGY9XCJzZXRcIisodGhpcy4kdT9cIlVUQ1wiOlwiXCIpLGw9KG49e30sblthXT1mK1wiRGF0ZVwiLG5bZF09ZitcIkRhdGVcIixuW2NdPWYrXCJNb250aFwiLG5baF09ZitcIkZ1bGxZZWFyXCIsblt1XT1mK1wiSG91cnNcIixuW3NdPWYrXCJNaW51dGVzXCIsbltpXT1mK1wiU2Vjb25kc1wiLG5bcl09ZitcIk1pbGxpc2Vjb25kc1wiLG4pW29dLCQ9bz09PWE/dGhpcy4kRCsoZS10aGlzLiRXKTplO2lmKG89PT1jfHxvPT09aCl7dmFyIHk9dGhpcy5jbG9uZSgpLnNldChkLDEpO3kuJGRbbF0oJCkseS5pbml0KCksdGhpcy4kZD15LnNldChkLE1hdGgubWluKHRoaXMuJEQseS5kYXlzSW5Nb250aCgpKSkuJGR9ZWxzZSBsJiZ0aGlzLiRkW2xdKCQpO3JldHVybiB0aGlzLmluaXQoKSx0aGlzfSxtLnNldD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmNsb25lKCkuJHNldCh0LGUpfSxtLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpc1tiLnAodCldKCl9LG0uYWRkPWZ1bmN0aW9uKHIsZil7dmFyIGQsbD10aGlzO3I9TnVtYmVyKHIpO3ZhciAkPWIucChmKSx5PWZ1bmN0aW9uKHQpe3ZhciBlPU8obCk7cmV0dXJuIGIudyhlLmRhdGUoZS5kYXRlKCkrTWF0aC5yb3VuZCh0KnIpKSxsKX07aWYoJD09PWMpcmV0dXJuIHRoaXMuc2V0KGMsdGhpcy4kTStyKTtpZigkPT09aClyZXR1cm4gdGhpcy5zZXQoaCx0aGlzLiR5K3IpO2lmKCQ9PT1hKXJldHVybiB5KDEpO2lmKCQ9PT1vKXJldHVybiB5KDcpO3ZhciBNPShkPXt9LGRbc109ZSxkW3VdPW4sZFtpXT10LGQpWyRdfHwxLG09dGhpcy4kZC5nZXRUaW1lKCkrcipNO3JldHVybiBiLncobSx0aGlzKX0sbS5zdWJ0cmFjdD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmFkZCgtMSp0LGUpfSxtLmZvcm1hdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dGhpcy4kbG9jYWxlKCk7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiBuLmludmFsaWREYXRlfHxsO3ZhciByPXR8fFwiWVlZWS1NTS1ERFRISDptbTpzc1pcIixpPWIueih0aGlzKSxzPXRoaXMuJEgsdT10aGlzLiRtLGE9dGhpcy4kTSxvPW4ud2Vla2RheXMsYz1uLm1vbnRocyxmPW4ubWVyaWRpZW0saD1mdW5jdGlvbih0LG4saSxzKXtyZXR1cm4gdCYmKHRbbl18fHQoZSxyKSl8fGlbbl0uc2xpY2UoMCxzKX0sZD1mdW5jdGlvbih0KXtyZXR1cm4gYi5zKHMlMTJ8fDEyLHQsXCIwXCIpfSwkPWZ8fGZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10PDEyP1wiQU1cIjpcIlBNXCI7cmV0dXJuIG4/ci50b0xvd2VyQ2FzZSgpOnJ9O3JldHVybiByLnJlcGxhY2UoeSwoZnVuY3Rpb24odCxyKXtyZXR1cm4gcnx8ZnVuY3Rpb24odCl7c3dpdGNoKHQpe2Nhc2VcIllZXCI6cmV0dXJuIFN0cmluZyhlLiR5KS5zbGljZSgtMik7Y2FzZVwiWVlZWVwiOnJldHVybiBiLnMoZS4keSw0LFwiMFwiKTtjYXNlXCJNXCI6cmV0dXJuIGErMTtjYXNlXCJNTVwiOnJldHVybiBiLnMoYSsxLDIsXCIwXCIpO2Nhc2VcIk1NTVwiOnJldHVybiBoKG4ubW9udGhzU2hvcnQsYSxjLDMpO2Nhc2VcIk1NTU1cIjpyZXR1cm4gaChjLGEpO2Nhc2VcIkRcIjpyZXR1cm4gZS4kRDtjYXNlXCJERFwiOnJldHVybiBiLnMoZS4kRCwyLFwiMFwiKTtjYXNlXCJkXCI6cmV0dXJuIFN0cmluZyhlLiRXKTtjYXNlXCJkZFwiOnJldHVybiBoKG4ud2Vla2RheXNNaW4sZS4kVyxvLDIpO2Nhc2VcImRkZFwiOnJldHVybiBoKG4ud2Vla2RheXNTaG9ydCxlLiRXLG8sMyk7Y2FzZVwiZGRkZFwiOnJldHVybiBvW2UuJFddO2Nhc2VcIkhcIjpyZXR1cm4gU3RyaW5nKHMpO2Nhc2VcIkhIXCI6cmV0dXJuIGIucyhzLDIsXCIwXCIpO2Nhc2VcImhcIjpyZXR1cm4gZCgxKTtjYXNlXCJoaFwiOnJldHVybiBkKDIpO2Nhc2VcImFcIjpyZXR1cm4gJChzLHUsITApO2Nhc2VcIkFcIjpyZXR1cm4gJChzLHUsITEpO2Nhc2VcIm1cIjpyZXR1cm4gU3RyaW5nKHUpO2Nhc2VcIm1tXCI6cmV0dXJuIGIucyh1LDIsXCIwXCIpO2Nhc2VcInNcIjpyZXR1cm4gU3RyaW5nKGUuJHMpO2Nhc2VcInNzXCI6cmV0dXJuIGIucyhlLiRzLDIsXCIwXCIpO2Nhc2VcIlNTU1wiOnJldHVybiBiLnMoZS4kbXMsMyxcIjBcIik7Y2FzZVwiWlwiOnJldHVybiBpfXJldHVybiBudWxsfSh0KXx8aS5yZXBsYWNlKFwiOlwiLFwiXCIpfSkpfSxtLnV0Y09mZnNldD1mdW5jdGlvbigpe3JldHVybiAxNSotTWF0aC5yb3VuZCh0aGlzLiRkLmdldFRpbWV6b25lT2Zmc2V0KCkvMTUpfSxtLmRpZmY9ZnVuY3Rpb24ocixkLGwpe3ZhciAkLHk9dGhpcyxNPWIucChkKSxtPU8ociksdj0obS51dGNPZmZzZXQoKS10aGlzLnV0Y09mZnNldCgpKSplLGc9dGhpcy1tLEQ9ZnVuY3Rpb24oKXtyZXR1cm4gYi5tKHksbSl9O3N3aXRjaChNKXtjYXNlIGg6JD1EKCkvMTI7YnJlYWs7Y2FzZSBjOiQ9RCgpO2JyZWFrO2Nhc2UgZjokPUQoKS8zO2JyZWFrO2Nhc2UgbzokPShnLXYpLzYwNDhlNTticmVhaztjYXNlIGE6JD0oZy12KS84NjRlNTticmVhaztjYXNlIHU6JD1nL247YnJlYWs7Y2FzZSBzOiQ9Zy9lO2JyZWFrO2Nhc2UgaTokPWcvdDticmVhaztkZWZhdWx0OiQ9Z31yZXR1cm4gbD8kOmIuYSgkKX0sbS5kYXlzSW5Nb250aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVuZE9mKGMpLiREfSxtLiRsb2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gRFt0aGlzLiRMXX0sbS5sb2NhbGU9ZnVuY3Rpb24odCxlKXtpZighdClyZXR1cm4gdGhpcy4kTDt2YXIgbj10aGlzLmNsb25lKCkscj13KHQsZSwhMCk7cmV0dXJuIHImJihuLiRMPXIpLG59LG0uY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gYi53KHRoaXMuJGQsdGhpcyl9LG0udG9EYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBEYXRlKHRoaXMudmFsdWVPZigpKX0sbS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1ZhbGlkKCk/dGhpcy50b0lTT1N0cmluZygpOm51bGx9LG0udG9JU09TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kZC50b0lTT1N0cmluZygpfSxtLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGQudG9VVENTdHJpbmcoKX0sTX0oKSxrPV8ucHJvdG90eXBlO3JldHVybiBPLnByb3RvdHlwZT1rLFtbXCIkbXNcIixyXSxbXCIkc1wiLGldLFtcIiRtXCIsc10sW1wiJEhcIix1XSxbXCIkV1wiLGFdLFtcIiRNXCIsY10sW1wiJHlcIixoXSxbXCIkRFwiLGRdXS5mb3JFYWNoKChmdW5jdGlvbih0KXtrW3RbMV1dPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLiRnKGUsdFswXSx0WzFdKX19KSksTy5leHRlbmQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC4kaXx8KHQoZSxfLE8pLHQuJGk9ITApLE99LE8ubG9jYWxlPXcsTy5pc0RheWpzPVMsTy51bml4PWZ1bmN0aW9uKHQpe3JldHVybiBPKDFlMyp0KX0sTy5lbj1EW2ddLE8uTHM9RCxPLnA9e30sT30pKTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIHN0eWxlc0luRE9NID0gW107XG5mdW5jdGlvbiBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSB7XG4gIHZhciByZXN1bHQgPSAtMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXNJbkRPTS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzdHlsZXNJbkRPTVtpXS5pZGVudGlmaWVyID09PSBpZGVudGlmaWVyKSB7XG4gICAgICByZXN1bHQgPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucykge1xuICB2YXIgaWRDb3VudE1hcCA9IHt9O1xuICB2YXIgaWRlbnRpZmllcnMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldO1xuICAgIHZhciBpZCA9IG9wdGlvbnMuYmFzZSA/IGl0ZW1bMF0gKyBvcHRpb25zLmJhc2UgOiBpdGVtWzBdO1xuICAgIHZhciBjb3VudCA9IGlkQ291bnRNYXBbaWRdIHx8IDA7XG4gICAgdmFyIGlkZW50aWZpZXIgPSBcIlwiLmNvbmNhdChpZCwgXCIgXCIpLmNvbmNhdChjb3VudCk7XG4gICAgaWRDb3VudE1hcFtpZF0gPSBjb3VudCArIDE7XG4gICAgdmFyIGluZGV4QnlJZGVudGlmaWVyID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgdmFyIG9iaiA9IHtcbiAgICAgIGNzczogaXRlbVsxXSxcbiAgICAgIG1lZGlhOiBpdGVtWzJdLFxuICAgICAgc291cmNlTWFwOiBpdGVtWzNdLFxuICAgICAgc3VwcG9ydHM6IGl0ZW1bNF0sXG4gICAgICBsYXllcjogaXRlbVs1XVxuICAgIH07XG4gICAgaWYgKGluZGV4QnlJZGVudGlmaWVyICE9PSAtMSkge1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnJlZmVyZW5jZXMrKztcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4QnlJZGVudGlmaWVyXS51cGRhdGVyKG9iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB1cGRhdGVyID0gYWRkRWxlbWVudFN0eWxlKG9iaiwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLmJ5SW5kZXggPSBpO1xuICAgICAgc3R5bGVzSW5ET00uc3BsaWNlKGksIDAsIHtcbiAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgdXBkYXRlcjogdXBkYXRlcixcbiAgICAgICAgcmVmZXJlbmNlczogMVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnRpZmllcik7XG4gIH1cbiAgcmV0dXJuIGlkZW50aWZpZXJzO1xufVxuZnVuY3Rpb24gYWRkRWxlbWVudFN0eWxlKG9iaiwgb3B0aW9ucykge1xuICB2YXIgYXBpID0gb3B0aW9ucy5kb21BUEkob3B0aW9ucyk7XG4gIGFwaS51cGRhdGUob2JqKTtcbiAgdmFyIHVwZGF0ZXIgPSBmdW5jdGlvbiB1cGRhdGVyKG5ld09iaikge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlmIChuZXdPYmouY3NzID09PSBvYmouY3NzICYmIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXAgJiYgbmV3T2JqLnN1cHBvcnRzID09PSBvYmouc3VwcG9ydHMgJiYgbmV3T2JqLmxheWVyID09PSBvYmoubGF5ZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgYXBpLnVwZGF0ZShvYmogPSBuZXdPYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVtb3ZlKCk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gdXBkYXRlcjtcbn1cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGxpc3QsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIGxpc3QgPSBsaXN0IHx8IFtdO1xuICB2YXIgbGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlKG5ld0xpc3QpIHtcbiAgICBuZXdMaXN0ID0gbmV3TGlzdCB8fCBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbaV07XG4gICAgICB2YXIgaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4XS5yZWZlcmVuY2VzLS07XG4gICAgfVxuICAgIHZhciBuZXdMYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obmV3TGlzdCwgb3B0aW9ucyk7XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tfaV07XG4gICAgICB2YXIgX2luZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoX2lkZW50aWZpZXIpO1xuICAgICAgaWYgKHN0eWxlc0luRE9NW19pbmRleF0ucmVmZXJlbmNlcyA9PT0gMCkge1xuICAgICAgICBzdHlsZXNJbkRPTVtfaW5kZXhdLnVwZGF0ZXIoKTtcbiAgICAgICAgc3R5bGVzSW5ET00uc3BsaWNlKF9pbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIGxhc3RJZGVudGlmaWVycyA9IG5ld0xhc3RJZGVudGlmaWVycztcbiAgfTtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBtZW1vID0ge307XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gZ2V0VGFyZ2V0KHRhcmdldCkge1xuICBpZiAodHlwZW9mIG1lbW9bdGFyZ2V0XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHZhciBzdHlsZVRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0KTtcblxuICAgIC8vIFNwZWNpYWwgY2FzZSB0byByZXR1cm4gaGVhZCBvZiBpZnJhbWUgaW5zdGVhZCBvZiBpZnJhbWUgaXRzZWxmXG4gICAgaWYgKHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCAmJiBzdHlsZVRhcmdldCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhY2Nlc3MgdG8gaWZyYW1lIGlzIGJsb2NrZWRcbiAgICAgICAgLy8gZHVlIHRvIGNyb3NzLW9yaWdpbiByZXN0cmljdGlvbnNcbiAgICAgICAgc3R5bGVUYXJnZXQgPSBzdHlsZVRhcmdldC5jb250ZW50RG9jdW1lbnQuaGVhZDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgc3R5bGVUYXJnZXQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICBtZW1vW3RhcmdldF0gPSBzdHlsZVRhcmdldDtcbiAgfVxuICByZXR1cm4gbWVtb1t0YXJnZXRdO1xufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGluc2VydEJ5U2VsZWN0b3IoaW5zZXJ0LCBzdHlsZSkge1xuICB2YXIgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGluc2VydCk7XG4gIGlmICghdGFyZ2V0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZmluZCBhIHN0eWxlIHRhcmdldC4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB2YWx1ZSBmb3IgdGhlICdpbnNlcnQnIHBhcmFtZXRlciBpcyBpbnZhbGlkLlwiKTtcbiAgfVxuICB0YXJnZXQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRCeVNlbGVjdG9yOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSB7XG4gIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICBvcHRpb25zLnNldEF0dHJpYnV0ZXMoZWxlbWVudCwgb3B0aW9ucy5hdHRyaWJ1dGVzKTtcbiAgb3B0aW9ucy5pbnNlcnQoZWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydFN0eWxlRWxlbWVudDsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMoc3R5bGVFbGVtZW50KSB7XG4gIHZhciBub25jZSA9IHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gXCJ1bmRlZmluZWRcIiA/IF9fd2VicGFja19ub25jZV9fIDogbnVsbDtcbiAgaWYgKG5vbmNlKSB7XG4gICAgc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIG5vbmNlKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXM7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopIHtcbiAgdmFyIGNzcyA9IFwiXCI7XG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChvYmouc3VwcG9ydHMsIFwiKSB7XCIpO1xuICB9XG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJAbWVkaWEgXCIuY29uY2F0KG9iai5tZWRpYSwgXCIge1wiKTtcbiAgfVxuICB2YXIgbmVlZExheWVyID0gdHlwZW9mIG9iai5sYXllciAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIkBsYXllclwiLmNvbmNhdChvYmoubGF5ZXIubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChvYmoubGF5ZXIpIDogXCJcIiwgXCIge1wiKTtcbiAgfVxuICBjc3MgKz0gb2JqLmNzcztcbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXA7XG4gIGlmIChzb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBjc3MgKz0gXCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiLmNvbmNhdChidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpLCBcIiAqL1wiKTtcbiAgfVxuXG4gIC8vIEZvciBvbGQgSUVcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuICBvcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xufVxuZnVuY3Rpb24gcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCkge1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgaWZcbiAgaWYgKHN0eWxlRWxlbWVudC5wYXJlbnROb2RlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHN0eWxlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudCk7XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gZG9tQVBJKG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJldHVybiB7XG4gICAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZSgpIHt9LFxuICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7fVxuICAgIH07XG4gIH1cbiAgdmFyIHN0eWxlRWxlbWVudCA9IG9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpO1xuICByZXR1cm4ge1xuICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKG9iaikge1xuICAgICAgYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopO1xuICAgIH0sXG4gICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KTtcbiAgICB9XG4gIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IGRvbUFQSTsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBzdHlsZVRhZ1RyYW5zZm9ybShjc3MsIHN0eWxlRWxlbWVudCkge1xuICBpZiAoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCkge1xuICAgICAgc3R5bGVFbGVtZW50LnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKTtcbiAgICB9XG4gICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHN0eWxlVGFnVHJhbnNmb3JtOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0aWQ6IG1vZHVsZUlkLFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm5jID0gdW5kZWZpbmVkOyIsImV4cG9ydCBjb25zdCBUUklQRlVTSU9OX0JBU0VfVVJMID1cbiAgICBwcm9jZXNzLmVudi5UUklQRlVTSU9OX0FQUF9FTlZJUk9OTUVOVCA9PT0gXCJkZW1vXCJcbiAgICAgICAgPyBcImh0dHBzOi8vZGV2ZWxvcC5ib29raW5ncy52YWNheW91LmNvbS9cIlxuICAgICAgICA6IFwiaHR0cHM6Ly9ib29raW5ncy52YWNheW91LmNvbS9cIjtcbmV4cG9ydCBjb25zdCBTREtfU0NSSVBUX0lEID0gXCJ0cmlwZnVzaW9uLXNka1wiO1xuZXhwb3J0IGNvbnN0IFdJREdFVF9JRCA9IFwidHJpcGZ1c2lvbi13aWRnZXRcIjtcbmV4cG9ydCBjb25zdCBXSURHRVRfSU5ORVJfV1JBUFBFUl9JRCA9IFwidHJpcGZ1c2lvbi13aWRnZXQtaW5uZXItd3JhcHBlclwiO1xuZXhwb3J0IGNvbnN0IFdJREdFVF9IRUFERVJfSUQgPSBcInRyaXBmdXNpb24td2lkZ2V0LWhlYWRlclwiO1xuZXhwb3J0IGNvbnN0IFdJREdFVF9DTE9TRV9CVVRUT05fSUQgPSBcInRyaXBmdXNpb24td2lkZ2V0LWNsb3NlLWJ1dHRvblwiO1xuZXhwb3J0IGNvbnN0IFdJREdFVF9IRUFERVJfVElUTEVfSUQgPSBcInRyaXBmdXNpb24td2lkZ2V0LWhlYWRlci10aXRsZVwiO1xuZXhwb3J0IGNvbnN0IFdJREdFVF9XUkFQUEVSX0lEID0gXCJ0cmlwZnVzaW9uLXdpZGdldC13cmFwcGVyXCI7XG5leHBvcnQgY29uc3QgV0lER0VUX0lGUkFNRV9JRCA9IFwidHJpcGZ1c2lvbi13aWRnZXQtaWZyYW1lXCI7XG5leHBvcnQgY29uc3QgUkVTVU1FX1BBTkVMX0lEID0gXCJ0cmlwZnVzaW9uLXJlc3VtZS1wYW5lbFwiO1xuZXhwb3J0IGNvbnN0IExPQURFUl9JRCA9IFwidHJpcGZ1c2lvbi1sb2FkZXJcIjtcbmV4cG9ydCBjb25zdCBCT09LSU5HX01PREUgPSB7XG4gICAgbm9ybWFsOiBcIm5vcm1hbFwiLFxuICAgIGFwcGVuZDogXCJhcHBlbmRcIixcbn0gYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgQVBQX01FU1NBR0VfVFlQRSA9IHtcbiAgICBXSURHRVRfUkVBRFk6IFwidHJpcGZ1c2lvbi13aWRnZXQtcmVhZHlcIixcbiAgICBCT09LSU5HX0NPTVBMRVRFRDogXCJ0cmlwZnVzaW9uLWJvb2tpbmctY29tcGxldGVkXCIsXG4gICAgU0VUX0NMSUVOVF9USEVNRTogXCJ0cmlwZnVzaW9uLXNldC1jbGllbnQtdGhlbWVcIixcbiAgICBTRVRfUFJJTUFSWV9HVUVTVF9OQU1FOiBcInRyaXBmdXNpb24tc2V0LWd1ZXN0LW5hbWVcIixcbiAgICBTRVRfREFURVM6IFwidHJpcGZ1c2lvbi1zZXQtZGF0ZXNcIixcbiAgICBTRVRfQ0FSVDogXCJ0cmlwZnVzaW9uLXNldC1jYXJ0XCIsXG59IGFzIGNvbnN0O1xuIiwiY29uc3QgcmVkdXhJbXBsID0gKHJlZHVjZXIsIGluaXRpYWwpID0+IChzZXQsIF9nZXQsIGFwaSkgPT4ge1xuICBhcGkuZGlzcGF0Y2ggPSAoYWN0aW9uKSA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gcmVkdWNlcihzdGF0ZSwgYWN0aW9uKSwgZmFsc2UsIGFjdGlvbik7XG4gICAgcmV0dXJuIGFjdGlvbjtcbiAgfTtcbiAgYXBpLmRpc3BhdGNoRnJvbURldnRvb2xzID0gdHJ1ZTtcbiAgcmV0dXJuIHsgZGlzcGF0Y2g6ICguLi5hKSA9PiBhcGkuZGlzcGF0Y2goLi4uYSksIC4uLmluaXRpYWwgfTtcbn07XG5jb25zdCByZWR1eCA9IHJlZHV4SW1wbDtcblxuY29uc3QgdHJhY2tlZENvbm5lY3Rpb25zID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbmNvbnN0IGdldFRyYWNrZWRDb25uZWN0aW9uU3RhdGUgPSAobmFtZSkgPT4ge1xuICBjb25zdCBhcGkgPSB0cmFja2VkQ29ubmVjdGlvbnMuZ2V0KG5hbWUpO1xuICBpZiAoIWFwaSkgcmV0dXJuIHt9O1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE9iamVjdC5lbnRyaWVzKGFwaS5zdG9yZXMpLm1hcCgoW2tleSwgYXBpMl0pID0+IFtrZXksIGFwaTIuZ2V0U3RhdGUoKV0pXG4gICk7XG59O1xuY29uc3QgZXh0cmFjdENvbm5lY3Rpb25JbmZvcm1hdGlvbiA9IChzdG9yZSwgZXh0ZW5zaW9uQ29ubmVjdG9yLCBvcHRpb25zKSA9PiB7XG4gIGlmIChzdG9yZSA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwidW50cmFja2VkXCIsXG4gICAgICBjb25uZWN0aW9uOiBleHRlbnNpb25Db25uZWN0b3IuY29ubmVjdChvcHRpb25zKVxuICAgIH07XG4gIH1cbiAgY29uc3QgZXhpc3RpbmdDb25uZWN0aW9uID0gdHJhY2tlZENvbm5lY3Rpb25zLmdldChvcHRpb25zLm5hbWUpO1xuICBpZiAoZXhpc3RpbmdDb25uZWN0aW9uKSB7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJ0cmFja2VkXCIsIHN0b3JlLCAuLi5leGlzdGluZ0Nvbm5lY3Rpb24gfTtcbiAgfVxuICBjb25zdCBuZXdDb25uZWN0aW9uID0ge1xuICAgIGNvbm5lY3Rpb246IGV4dGVuc2lvbkNvbm5lY3Rvci5jb25uZWN0KG9wdGlvbnMpLFxuICAgIHN0b3Jlczoge31cbiAgfTtcbiAgdHJhY2tlZENvbm5lY3Rpb25zLnNldChvcHRpb25zLm5hbWUsIG5ld0Nvbm5lY3Rpb24pO1xuICByZXR1cm4geyB0eXBlOiBcInRyYWNrZWRcIiwgc3RvcmUsIC4uLm5ld0Nvbm5lY3Rpb24gfTtcbn07XG5jb25zdCBkZXZ0b29sc0ltcGwgPSAoZm4sIGRldnRvb2xzT3B0aW9ucyA9IHt9KSA9PiAoc2V0LCBnZXQsIGFwaSkgPT4ge1xuICBjb25zdCB7IGVuYWJsZWQsIGFub255bW91c0FjdGlvblR5cGUsIHN0b3JlLCAuLi5vcHRpb25zIH0gPSBkZXZ0b29sc09wdGlvbnM7XG4gIGxldCBleHRlbnNpb25Db25uZWN0b3I7XG4gIHRyeSB7XG4gICAgZXh0ZW5zaW9uQ29ubmVjdG9yID0gKGVuYWJsZWQgIT0gbnVsbCA/IGVuYWJsZWQgOiAoaW1wb3J0Lm1ldGEuZW52ID8gaW1wb3J0Lm1ldGEuZW52Lk1PREUgOiB2b2lkIDApICE9PSBcInByb2R1Y3Rpb25cIikgJiYgd2luZG93Ll9fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX187XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxuICBpZiAoIWV4dGVuc2lvbkNvbm5lY3Rvcikge1xuICAgIHJldHVybiBmbihzZXQsIGdldCwgYXBpKTtcbiAgfVxuICBjb25zdCB7IGNvbm5lY3Rpb24sIC4uLmNvbm5lY3Rpb25JbmZvcm1hdGlvbiB9ID0gZXh0cmFjdENvbm5lY3Rpb25JbmZvcm1hdGlvbihzdG9yZSwgZXh0ZW5zaW9uQ29ubmVjdG9yLCBvcHRpb25zKTtcbiAgbGV0IGlzUmVjb3JkaW5nID0gdHJ1ZTtcbiAgYXBpLnNldFN0YXRlID0gKHN0YXRlLCByZXBsYWNlLCBuYW1lT3JBY3Rpb24pID0+IHtcbiAgICBjb25zdCByID0gc2V0KHN0YXRlLCByZXBsYWNlKTtcbiAgICBpZiAoIWlzUmVjb3JkaW5nKSByZXR1cm4gcjtcbiAgICBjb25zdCBhY3Rpb24gPSBuYW1lT3JBY3Rpb24gPT09IHZvaWQgMCA/IHsgdHlwZTogYW5vbnltb3VzQWN0aW9uVHlwZSB8fCBcImFub255bW91c1wiIH0gOiB0eXBlb2YgbmFtZU9yQWN0aW9uID09PSBcInN0cmluZ1wiID8geyB0eXBlOiBuYW1lT3JBY3Rpb24gfSA6IG5hbWVPckFjdGlvbjtcbiAgICBpZiAoc3RvcmUgPT09IHZvaWQgMCkge1xuICAgICAgY29ubmVjdGlvbiA9PSBudWxsID8gdm9pZCAwIDogY29ubmVjdGlvbi5zZW5kKGFjdGlvbiwgZ2V0KCkpO1xuICAgICAgcmV0dXJuIHI7XG4gICAgfVxuICAgIGNvbm5lY3Rpb24gPT0gbnVsbCA/IHZvaWQgMCA6IGNvbm5lY3Rpb24uc2VuZChcbiAgICAgIHtcbiAgICAgICAgLi4uYWN0aW9uLFxuICAgICAgICB0eXBlOiBgJHtzdG9yZX0vJHthY3Rpb24udHlwZX1gXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAuLi5nZXRUcmFja2VkQ29ubmVjdGlvblN0YXRlKG9wdGlvbnMubmFtZSksXG4gICAgICAgIFtzdG9yZV06IGFwaS5nZXRTdGF0ZSgpXG4gICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gcjtcbiAgfTtcbiAgY29uc3Qgc2V0U3RhdGVGcm9tRGV2dG9vbHMgPSAoLi4uYSkgPT4ge1xuICAgIGNvbnN0IG9yaWdpbmFsSXNSZWNvcmRpbmcgPSBpc1JlY29yZGluZztcbiAgICBpc1JlY29yZGluZyA9IGZhbHNlO1xuICAgIHNldCguLi5hKTtcbiAgICBpc1JlY29yZGluZyA9IG9yaWdpbmFsSXNSZWNvcmRpbmc7XG4gIH07XG4gIGNvbnN0IGluaXRpYWxTdGF0ZSA9IGZuKGFwaS5zZXRTdGF0ZSwgZ2V0LCBhcGkpO1xuICBpZiAoY29ubmVjdGlvbkluZm9ybWF0aW9uLnR5cGUgPT09IFwidW50cmFja2VkXCIpIHtcbiAgICBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLmluaXQoaW5pdGlhbFN0YXRlKTtcbiAgfSBlbHNlIHtcbiAgICBjb25uZWN0aW9uSW5mb3JtYXRpb24uc3RvcmVzW2Nvbm5lY3Rpb25JbmZvcm1hdGlvbi5zdG9yZV0gPSBhcGk7XG4gICAgY29ubmVjdGlvbiA9PSBudWxsID8gdm9pZCAwIDogY29ubmVjdGlvbi5pbml0KFxuICAgICAgT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICBPYmplY3QuZW50cmllcyhjb25uZWN0aW9uSW5mb3JtYXRpb24uc3RvcmVzKS5tYXAoKFtrZXksIHN0b3JlMl0pID0+IFtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAga2V5ID09PSBjb25uZWN0aW9uSW5mb3JtYXRpb24uc3RvcmUgPyBpbml0aWFsU3RhdGUgOiBzdG9yZTIuZ2V0U3RhdGUoKVxuICAgICAgICBdKVxuICAgICAgKVxuICAgICk7XG4gIH1cbiAgaWYgKGFwaS5kaXNwYXRjaEZyb21EZXZ0b29scyAmJiB0eXBlb2YgYXBpLmRpc3BhdGNoID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBsZXQgZGlkV2FybkFib3V0UmVzZXJ2ZWRBY3Rpb25UeXBlID0gZmFsc2U7XG4gICAgY29uc3Qgb3JpZ2luYWxEaXNwYXRjaCA9IGFwaS5kaXNwYXRjaDtcbiAgICBhcGkuZGlzcGF0Y2ggPSAoLi4uYSkgPT4ge1xuICAgICAgaWYgKChpbXBvcnQubWV0YS5lbnYgPyBpbXBvcnQubWV0YS5lbnYuTU9ERSA6IHZvaWQgMCkgIT09IFwicHJvZHVjdGlvblwiICYmIGFbMF0udHlwZSA9PT0gXCJfX3NldFN0YXRlXCIgJiYgIWRpZFdhcm5BYm91dFJlc2VydmVkQWN0aW9uVHlwZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ1t6dXN0YW5kIGRldnRvb2xzIG1pZGRsZXdhcmVdIFwiX19zZXRTdGF0ZVwiIGFjdGlvbiB0eXBlIGlzIHJlc2VydmVkIHRvIHNldCBzdGF0ZSBmcm9tIHRoZSBkZXZ0b29scy4gQXZvaWQgdXNpbmcgaXQuJ1xuICAgICAgICApO1xuICAgICAgICBkaWRXYXJuQWJvdXRSZXNlcnZlZEFjdGlvblR5cGUgPSB0cnVlO1xuICAgICAgfVxuICAgICAgb3JpZ2luYWxEaXNwYXRjaCguLi5hKTtcbiAgICB9O1xuICB9XG4gIGNvbm5lY3Rpb24uc3Vic2NyaWJlKChtZXNzYWdlKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIHN3aXRjaCAobWVzc2FnZS50eXBlKSB7XG4gICAgICBjYXNlIFwiQUNUSU9OXCI6XG4gICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZS5wYXlsb2FkICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIFwiW3p1c3RhbmQgZGV2dG9vbHMgbWlkZGxld2FyZV0gVW5zdXBwb3J0ZWQgYWN0aW9uIGZvcm1hdFwiXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnNlSnNvblRoZW4oXG4gICAgICAgICAgbWVzc2FnZS5wYXlsb2FkLFxuICAgICAgICAgIChhY3Rpb24pID0+IHtcbiAgICAgICAgICAgIGlmIChhY3Rpb24udHlwZSA9PT0gXCJfX3NldFN0YXRlXCIpIHtcbiAgICAgICAgICAgICAgaWYgKHN0b3JlID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgICAgICBzZXRTdGF0ZUZyb21EZXZ0b29scyhhY3Rpb24uc3RhdGUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoYWN0aW9uLnN0YXRlKS5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgYFxuICAgICAgICAgICAgICAgICAgICBbenVzdGFuZCBkZXZ0b29scyBtaWRkbGV3YXJlXSBVbnN1cHBvcnRlZCBfX3NldFN0YXRlIGFjdGlvbiBmb3JtYXQuXG4gICAgICAgICAgICAgICAgICAgIFdoZW4gdXNpbmcgJ3N0b3JlJyBvcHRpb24gaW4gZGV2dG9vbHMoKSwgdGhlICdzdGF0ZScgc2hvdWxkIGhhdmUgb25seSBvbmUga2V5LCB3aGljaCBpcyBhIHZhbHVlIG9mICdzdG9yZScgdGhhdCB3YXMgcGFzc2VkIGluIGRldnRvb2xzKCksXG4gICAgICAgICAgICAgICAgICAgIGFuZCB2YWx1ZSBvZiB0aGlzIG9ubHkga2V5IHNob3VsZCBiZSBhIHN0YXRlIG9iamVjdC4gRXhhbXBsZTogeyBcInR5cGVcIjogXCJfX3NldFN0YXRlXCIsIFwic3RhdGVcIjogeyBcImFiYzEyM1N0b3JlXCI6IHsgXCJmb29cIjogXCJiYXJcIiB9IH0gfVxuICAgICAgICAgICAgICAgICAgICBgXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBzdGF0ZUZyb21EZXZ0b29scyA9IGFjdGlvbi5zdGF0ZVtzdG9yZV07XG4gICAgICAgICAgICAgIGlmIChzdGF0ZUZyb21EZXZ0b29scyA9PT0gdm9pZCAwIHx8IHN0YXRlRnJvbURldnRvb2xzID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShhcGkuZ2V0U3RhdGUoKSkgIT09IEpTT04uc3RyaW5naWZ5KHN0YXRlRnJvbURldnRvb2xzKSkge1xuICAgICAgICAgICAgICAgIHNldFN0YXRlRnJvbURldnRvb2xzKHN0YXRlRnJvbURldnRvb2xzKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWFwaS5kaXNwYXRjaEZyb21EZXZ0b29scykgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBhcGkuZGlzcGF0Y2ggIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuO1xuICAgICAgICAgICAgYXBpLmRpc3BhdGNoKGFjdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgY2FzZSBcIkRJU1BBVENIXCI6XG4gICAgICAgIHN3aXRjaCAobWVzc2FnZS5wYXlsb2FkLnR5cGUpIHtcbiAgICAgICAgICBjYXNlIFwiUkVTRVRcIjpcbiAgICAgICAgICAgIHNldFN0YXRlRnJvbURldnRvb2xzKGluaXRpYWxTdGF0ZSk7XG4gICAgICAgICAgICBpZiAoc3RvcmUgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICByZXR1cm4gY29ubmVjdGlvbiA9PSBudWxsID8gdm9pZCAwIDogY29ubmVjdGlvbi5pbml0KGFwaS5nZXRTdGF0ZSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLmluaXQoZ2V0VHJhY2tlZENvbm5lY3Rpb25TdGF0ZShvcHRpb25zLm5hbWUpKTtcbiAgICAgICAgICBjYXNlIFwiQ09NTUlUXCI6XG4gICAgICAgICAgICBpZiAoc3RvcmUgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLmluaXQoYXBpLmdldFN0YXRlKCkpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY29ubmVjdGlvbiA9PSBudWxsID8gdm9pZCAwIDogY29ubmVjdGlvbi5pbml0KGdldFRyYWNrZWRDb25uZWN0aW9uU3RhdGUob3B0aW9ucy5uYW1lKSk7XG4gICAgICAgICAgY2FzZSBcIlJPTExCQUNLXCI6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VKc29uVGhlbihtZXNzYWdlLnN0YXRlLCAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHN0b3JlID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgICAgICBzZXRTdGF0ZUZyb21EZXZ0b29scyhzdGF0ZSk7XG4gICAgICAgICAgICAgICAgY29ubmVjdGlvbiA9PSBudWxsID8gdm9pZCAwIDogY29ubmVjdGlvbi5pbml0KGFwaS5nZXRTdGF0ZSgpKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgc2V0U3RhdGVGcm9tRGV2dG9vbHMoc3RhdGVbc3RvcmVdKTtcbiAgICAgICAgICAgICAgY29ubmVjdGlvbiA9PSBudWxsID8gdm9pZCAwIDogY29ubmVjdGlvbi5pbml0KGdldFRyYWNrZWRDb25uZWN0aW9uU3RhdGUob3B0aW9ucy5uYW1lKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICBjYXNlIFwiSlVNUF9UT19TVEFURVwiOlxuICAgICAgICAgIGNhc2UgXCJKVU1QX1RPX0FDVElPTlwiOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlSnNvblRoZW4obWVzc2FnZS5zdGF0ZSwgKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChzdG9yZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICAgICAgc2V0U3RhdGVGcm9tRGV2dG9vbHMoc3RhdGUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoYXBpLmdldFN0YXRlKCkpICE9PSBKU09OLnN0cmluZ2lmeShzdGF0ZVtzdG9yZV0pKSB7XG4gICAgICAgICAgICAgICAgc2V0U3RhdGVGcm9tRGV2dG9vbHMoc3RhdGVbc3RvcmVdKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgY2FzZSBcIklNUE9SVF9TVEFURVwiOiB7XG4gICAgICAgICAgICBjb25zdCB7IG5leHRMaWZ0ZWRTdGF0ZSB9ID0gbWVzc2FnZS5wYXlsb2FkO1xuICAgICAgICAgICAgY29uc3QgbGFzdENvbXB1dGVkU3RhdGUgPSAoX2EgPSBuZXh0TGlmdGVkU3RhdGUuY29tcHV0ZWRTdGF0ZXMuc2xpY2UoLTEpWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX2Euc3RhdGU7XG4gICAgICAgICAgICBpZiAoIWxhc3RDb21wdXRlZFN0YXRlKSByZXR1cm47XG4gICAgICAgICAgICBpZiAoc3RvcmUgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICBzZXRTdGF0ZUZyb21EZXZ0b29scyhsYXN0Q29tcHV0ZWRTdGF0ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzZXRTdGF0ZUZyb21EZXZ0b29scyhsYXN0Q29tcHV0ZWRTdGF0ZVtzdG9yZV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29ubmVjdGlvbiA9PSBudWxsID8gdm9pZCAwIDogY29ubmVjdGlvbi5zZW5kKFxuICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAvLyBGSVhNRSBuby1hbnlcbiAgICAgICAgICAgICAgbmV4dExpZnRlZFN0YXRlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIFwiUEFVU0VfUkVDT1JESU5HXCI6XG4gICAgICAgICAgICByZXR1cm4gaXNSZWNvcmRpbmcgPSAhaXNSZWNvcmRpbmc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBpbml0aWFsU3RhdGU7XG59O1xuY29uc3QgZGV2dG9vbHMgPSBkZXZ0b29sc0ltcGw7XG5jb25zdCBwYXJzZUpzb25UaGVuID0gKHN0cmluZ2lmaWVkLCBmKSA9PiB7XG4gIGxldCBwYXJzZWQ7XG4gIHRyeSB7XG4gICAgcGFyc2VkID0gSlNPTi5wYXJzZShzdHJpbmdpZmllZCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCJbenVzdGFuZCBkZXZ0b29scyBtaWRkbGV3YXJlXSBDb3VsZCBub3QgcGFyc2UgdGhlIHJlY2VpdmVkIGpzb25cIixcbiAgICAgIGVcbiAgICApO1xuICB9XG4gIGlmIChwYXJzZWQgIT09IHZvaWQgMCkgZihwYXJzZWQpO1xufTtcblxuY29uc3Qgc3Vic2NyaWJlV2l0aFNlbGVjdG9ySW1wbCA9IChmbikgPT4gKHNldCwgZ2V0LCBhcGkpID0+IHtcbiAgY29uc3Qgb3JpZ1N1YnNjcmliZSA9IGFwaS5zdWJzY3JpYmU7XG4gIGFwaS5zdWJzY3JpYmUgPSAoc2VsZWN0b3IsIG9wdExpc3RlbmVyLCBvcHRpb25zKSA9PiB7XG4gICAgbGV0IGxpc3RlbmVyID0gc2VsZWN0b3I7XG4gICAgaWYgKG9wdExpc3RlbmVyKSB7XG4gICAgICBjb25zdCBlcXVhbGl0eUZuID0gKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuZXF1YWxpdHlGbikgfHwgT2JqZWN0LmlzO1xuICAgICAgbGV0IGN1cnJlbnRTbGljZSA9IHNlbGVjdG9yKGFwaS5nZXRTdGF0ZSgpKTtcbiAgICAgIGxpc3RlbmVyID0gKHN0YXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHRTbGljZSA9IHNlbGVjdG9yKHN0YXRlKTtcbiAgICAgICAgaWYgKCFlcXVhbGl0eUZuKGN1cnJlbnRTbGljZSwgbmV4dFNsaWNlKSkge1xuICAgICAgICAgIGNvbnN0IHByZXZpb3VzU2xpY2UgPSBjdXJyZW50U2xpY2U7XG4gICAgICAgICAgb3B0TGlzdGVuZXIoY3VycmVudFNsaWNlID0gbmV4dFNsaWNlLCBwcmV2aW91c1NsaWNlKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGlmIChvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLmZpcmVJbW1lZGlhdGVseSkge1xuICAgICAgICBvcHRMaXN0ZW5lcihjdXJyZW50U2xpY2UsIGN1cnJlbnRTbGljZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvcmlnU3Vic2NyaWJlKGxpc3RlbmVyKTtcbiAgfTtcbiAgY29uc3QgaW5pdGlhbFN0YXRlID0gZm4oc2V0LCBnZXQsIGFwaSk7XG4gIHJldHVybiBpbml0aWFsU3RhdGU7XG59O1xuY29uc3Qgc3Vic2NyaWJlV2l0aFNlbGVjdG9yID0gc3Vic2NyaWJlV2l0aFNlbGVjdG9ySW1wbDtcblxuY29uc3QgY29tYmluZSA9IChpbml0aWFsU3RhdGUsIGNyZWF0ZSkgPT4gKC4uLmEpID0+IE9iamVjdC5hc3NpZ24oe30sIGluaXRpYWxTdGF0ZSwgY3JlYXRlKC4uLmEpKTtcblxuZnVuY3Rpb24gY3JlYXRlSlNPTlN0b3JhZ2UoZ2V0U3RvcmFnZSwgb3B0aW9ucykge1xuICBsZXQgc3RvcmFnZTtcbiAgdHJ5IHtcbiAgICBzdG9yYWdlID0gZ2V0U3RvcmFnZSgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHBlcnNpc3RTdG9yYWdlID0ge1xuICAgIGdldEl0ZW06IChuYW1lKSA9PiB7XG4gICAgICB2YXIgX2E7XG4gICAgICBjb25zdCBwYXJzZSA9IChzdHIyKSA9PiB7XG4gICAgICAgIGlmIChzdHIyID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2Uoc3RyMiwgb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5yZXZpdmVyKTtcbiAgICAgIH07XG4gICAgICBjb25zdCBzdHIgPSAoX2EgPSBzdG9yYWdlLmdldEl0ZW0obmFtZSkpICE9IG51bGwgPyBfYSA6IG51bGw7XG4gICAgICBpZiAoc3RyIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICByZXR1cm4gc3RyLnRoZW4ocGFyc2UpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhcnNlKHN0cik7XG4gICAgfSxcbiAgICBzZXRJdGVtOiAobmFtZSwgbmV3VmFsdWUpID0+IHN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgIG5hbWUsXG4gICAgICBKU09OLnN0cmluZ2lmeShuZXdWYWx1ZSwgb3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5yZXBsYWNlcilcbiAgICApLFxuICAgIHJlbW92ZUl0ZW06IChuYW1lKSA9PiBzdG9yYWdlLnJlbW92ZUl0ZW0obmFtZSlcbiAgfTtcbiAgcmV0dXJuIHBlcnNpc3RTdG9yYWdlO1xufVxuY29uc3QgdG9UaGVuYWJsZSA9IChmbikgPT4gKGlucHV0KSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0ID0gZm4oaW5wdXQpO1xuICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgdGhlbihvbkZ1bGZpbGxlZCkge1xuICAgICAgICByZXR1cm4gdG9UaGVuYWJsZShvbkZ1bGZpbGxlZCkocmVzdWx0KTtcbiAgICAgIH0sXG4gICAgICBjYXRjaChfb25SZWplY3RlZCkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICB9O1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRoZW4oX29uRnVsZmlsbGVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIGNhdGNoKG9uUmVqZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHRvVGhlbmFibGUob25SZWplY3RlZCkoZSk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxufTtcbmNvbnN0IHBlcnNpc3RJbXBsID0gKGNvbmZpZywgYmFzZU9wdGlvbnMpID0+IChzZXQsIGdldCwgYXBpKSA9PiB7XG4gIGxldCBvcHRpb25zID0ge1xuICAgIHN0b3JhZ2U6IGNyZWF0ZUpTT05TdG9yYWdlKCgpID0+IGxvY2FsU3RvcmFnZSksXG4gICAgcGFydGlhbGl6ZTogKHN0YXRlKSA9PiBzdGF0ZSxcbiAgICB2ZXJzaW9uOiAwLFxuICAgIG1lcmdlOiAocGVyc2lzdGVkU3RhdGUsIGN1cnJlbnRTdGF0ZSkgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnRTdGF0ZSxcbiAgICAgIC4uLnBlcnNpc3RlZFN0YXRlXG4gICAgfSksXG4gICAgLi4uYmFzZU9wdGlvbnNcbiAgfTtcbiAgbGV0IGhhc0h5ZHJhdGVkID0gZmFsc2U7XG4gIGNvbnN0IGh5ZHJhdGlvbkxpc3RlbmVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gIGNvbnN0IGZpbmlzaEh5ZHJhdGlvbkxpc3RlbmVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gIGxldCBzdG9yYWdlID0gb3B0aW9ucy5zdG9yYWdlO1xuICBpZiAoIXN0b3JhZ2UpIHtcbiAgICByZXR1cm4gY29uZmlnKFxuICAgICAgKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBbenVzdGFuZCBwZXJzaXN0IG1pZGRsZXdhcmVdIFVuYWJsZSB0byB1cGRhdGUgaXRlbSAnJHtvcHRpb25zLm5hbWV9JywgdGhlIGdpdmVuIHN0b3JhZ2UgaXMgY3VycmVudGx5IHVuYXZhaWxhYmxlLmBcbiAgICAgICAgKTtcbiAgICAgICAgc2V0KC4uLmFyZ3MpO1xuICAgICAgfSxcbiAgICAgIGdldCxcbiAgICAgIGFwaVxuICAgICk7XG4gIH1cbiAgY29uc3Qgc2V0SXRlbSA9ICgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IG9wdGlvbnMucGFydGlhbGl6ZSh7IC4uLmdldCgpIH0pO1xuICAgIHJldHVybiBzdG9yYWdlLnNldEl0ZW0ob3B0aW9ucy5uYW1lLCB7XG4gICAgICBzdGF0ZSxcbiAgICAgIHZlcnNpb246IG9wdGlvbnMudmVyc2lvblxuICAgIH0pO1xuICB9O1xuICBjb25zdCBzYXZlZFNldFN0YXRlID0gYXBpLnNldFN0YXRlO1xuICBhcGkuc2V0U3RhdGUgPSAoc3RhdGUsIHJlcGxhY2UpID0+IHtcbiAgICBzYXZlZFNldFN0YXRlKHN0YXRlLCByZXBsYWNlKTtcbiAgICB2b2lkIHNldEl0ZW0oKTtcbiAgfTtcbiAgY29uc3QgY29uZmlnUmVzdWx0ID0gY29uZmlnKFxuICAgICguLi5hcmdzKSA9PiB7XG4gICAgICBzZXQoLi4uYXJncyk7XG4gICAgICB2b2lkIHNldEl0ZW0oKTtcbiAgICB9LFxuICAgIGdldCxcbiAgICBhcGlcbiAgKTtcbiAgYXBpLmdldEluaXRpYWxTdGF0ZSA9ICgpID0+IGNvbmZpZ1Jlc3VsdDtcbiAgbGV0IHN0YXRlRnJvbVN0b3JhZ2U7XG4gIGNvbnN0IGh5ZHJhdGUgPSAoKSA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBpZiAoIXN0b3JhZ2UpIHJldHVybjtcbiAgICBoYXNIeWRyYXRlZCA9IGZhbHNlO1xuICAgIGh5ZHJhdGlvbkxpc3RlbmVycy5mb3JFYWNoKChjYikgPT4ge1xuICAgICAgdmFyIF9hMjtcbiAgICAgIHJldHVybiBjYigoX2EyID0gZ2V0KCkpICE9IG51bGwgPyBfYTIgOiBjb25maWdSZXN1bHQpO1xuICAgIH0pO1xuICAgIGNvbnN0IHBvc3RSZWh5ZHJhdGlvbkNhbGxiYWNrID0gKChfYiA9IG9wdGlvbnMub25SZWh5ZHJhdGVTdG9yYWdlKSA9PSBudWxsID8gdm9pZCAwIDogX2IuY2FsbChvcHRpb25zLCAoX2EgPSBnZXQoKSkgIT0gbnVsbCA/IF9hIDogY29uZmlnUmVzdWx0KSkgfHwgdm9pZCAwO1xuICAgIHJldHVybiB0b1RoZW5hYmxlKHN0b3JhZ2UuZ2V0SXRlbS5iaW5kKHN0b3JhZ2UpKShvcHRpb25zLm5hbWUpLnRoZW4oKGRlc2VyaWFsaXplZFN0b3JhZ2VWYWx1ZSkgPT4ge1xuICAgICAgaWYgKGRlc2VyaWFsaXplZFN0b3JhZ2VWYWx1ZSkge1xuICAgICAgICBpZiAodHlwZW9mIGRlc2VyaWFsaXplZFN0b3JhZ2VWYWx1ZS52ZXJzaW9uID09PSBcIm51bWJlclwiICYmIGRlc2VyaWFsaXplZFN0b3JhZ2VWYWx1ZS52ZXJzaW9uICE9PSBvcHRpb25zLnZlcnNpb24pIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5taWdyYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgICBvcHRpb25zLm1pZ3JhdGUoXG4gICAgICAgICAgICAgICAgZGVzZXJpYWxpemVkU3RvcmFnZVZhbHVlLnN0YXRlLFxuICAgICAgICAgICAgICAgIGRlc2VyaWFsaXplZFN0b3JhZ2VWYWx1ZS52ZXJzaW9uXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBgU3RhdGUgbG9hZGVkIGZyb20gc3RvcmFnZSBjb3VsZG4ndCBiZSBtaWdyYXRlZCBzaW5jZSBubyBtaWdyYXRlIGZ1bmN0aW9uIHdhcyBwcm92aWRlZGBcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBbZmFsc2UsIGRlc2VyaWFsaXplZFN0b3JhZ2VWYWx1ZS5zdGF0ZV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBbZmFsc2UsIHZvaWQgMF07XG4gICAgfSkudGhlbigobWlncmF0aW9uUmVzdWx0KSA9PiB7XG4gICAgICB2YXIgX2EyO1xuICAgICAgY29uc3QgW21pZ3JhdGVkLCBtaWdyYXRlZFN0YXRlXSA9IG1pZ3JhdGlvblJlc3VsdDtcbiAgICAgIHN0YXRlRnJvbVN0b3JhZ2UgPSBvcHRpb25zLm1lcmdlKFxuICAgICAgICBtaWdyYXRlZFN0YXRlLFxuICAgICAgICAoX2EyID0gZ2V0KCkpICE9IG51bGwgPyBfYTIgOiBjb25maWdSZXN1bHRcbiAgICAgICk7XG4gICAgICBzZXQoc3RhdGVGcm9tU3RvcmFnZSwgdHJ1ZSk7XG4gICAgICBpZiAobWlncmF0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHNldEl0ZW0oKTtcbiAgICAgIH1cbiAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgIHBvc3RSZWh5ZHJhdGlvbkNhbGxiYWNrID09IG51bGwgPyB2b2lkIDAgOiBwb3N0UmVoeWRyYXRpb25DYWxsYmFjayhzdGF0ZUZyb21TdG9yYWdlLCB2b2lkIDApO1xuICAgICAgc3RhdGVGcm9tU3RvcmFnZSA9IGdldCgpO1xuICAgICAgaGFzSHlkcmF0ZWQgPSB0cnVlO1xuICAgICAgZmluaXNoSHlkcmF0aW9uTGlzdGVuZXJzLmZvckVhY2goKGNiKSA9PiBjYihzdGF0ZUZyb21TdG9yYWdlKSk7XG4gICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgIHBvc3RSZWh5ZHJhdGlvbkNhbGxiYWNrID09IG51bGwgPyB2b2lkIDAgOiBwb3N0UmVoeWRyYXRpb25DYWxsYmFjayh2b2lkIDAsIGUpO1xuICAgIH0pO1xuICB9O1xuICBhcGkucGVyc2lzdCA9IHtcbiAgICBzZXRPcHRpb25zOiAobmV3T3B0aW9ucykgPT4ge1xuICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgLi4ubmV3T3B0aW9uc1xuICAgICAgfTtcbiAgICAgIGlmIChuZXdPcHRpb25zLnN0b3JhZ2UpIHtcbiAgICAgICAgc3RvcmFnZSA9IG5ld09wdGlvbnMuc3RvcmFnZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGNsZWFyU3RvcmFnZTogKCkgPT4ge1xuICAgICAgc3RvcmFnZSA9PSBudWxsID8gdm9pZCAwIDogc3RvcmFnZS5yZW1vdmVJdGVtKG9wdGlvbnMubmFtZSk7XG4gICAgfSxcbiAgICBnZXRPcHRpb25zOiAoKSA9PiBvcHRpb25zLFxuICAgIHJlaHlkcmF0ZTogKCkgPT4gaHlkcmF0ZSgpLFxuICAgIGhhc0h5ZHJhdGVkOiAoKSA9PiBoYXNIeWRyYXRlZCxcbiAgICBvbkh5ZHJhdGU6IChjYikgPT4ge1xuICAgICAgaHlkcmF0aW9uTGlzdGVuZXJzLmFkZChjYik7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBoeWRyYXRpb25MaXN0ZW5lcnMuZGVsZXRlKGNiKTtcbiAgICAgIH07XG4gICAgfSxcbiAgICBvbkZpbmlzaEh5ZHJhdGlvbjogKGNiKSA9PiB7XG4gICAgICBmaW5pc2hIeWRyYXRpb25MaXN0ZW5lcnMuYWRkKGNiKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGZpbmlzaEh5ZHJhdGlvbkxpc3RlbmVycy5kZWxldGUoY2IpO1xuICAgICAgfTtcbiAgICB9XG4gIH07XG4gIGlmICghb3B0aW9ucy5za2lwSHlkcmF0aW9uKSB7XG4gICAgaHlkcmF0ZSgpO1xuICB9XG4gIHJldHVybiBzdGF0ZUZyb21TdG9yYWdlIHx8IGNvbmZpZ1Jlc3VsdDtcbn07XG5jb25zdCBwZXJzaXN0ID0gcGVyc2lzdEltcGw7XG5cbmV4cG9ydCB7IGNvbWJpbmUsIGNyZWF0ZUpTT05TdG9yYWdlLCBkZXZ0b29scywgcGVyc2lzdCwgcmVkdXgsIHN1YnNjcmliZVdpdGhTZWxlY3RvciB9O1xuIiwiY29uc3QgY3JlYXRlU3RvcmVJbXBsID0gKGNyZWF0ZVN0YXRlKSA9PiB7XG4gIGxldCBzdGF0ZTtcbiAgY29uc3QgbGlzdGVuZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgY29uc3Qgc2V0U3RhdGUgPSAocGFydGlhbCwgcmVwbGFjZSkgPT4ge1xuICAgIGNvbnN0IG5leHRTdGF0ZSA9IHR5cGVvZiBwYXJ0aWFsID09PSBcImZ1bmN0aW9uXCIgPyBwYXJ0aWFsKHN0YXRlKSA6IHBhcnRpYWw7XG4gICAgaWYgKCFPYmplY3QuaXMobmV4dFN0YXRlLCBzdGF0ZSkpIHtcbiAgICAgIGNvbnN0IHByZXZpb3VzU3RhdGUgPSBzdGF0ZTtcbiAgICAgIHN0YXRlID0gKHJlcGxhY2UgIT0gbnVsbCA/IHJlcGxhY2UgOiB0eXBlb2YgbmV4dFN0YXRlICE9PSBcIm9iamVjdFwiIHx8IG5leHRTdGF0ZSA9PT0gbnVsbCkgPyBuZXh0U3RhdGUgOiBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSwgbmV4dFN0YXRlKTtcbiAgICAgIGxpc3RlbmVycy5mb3JFYWNoKChsaXN0ZW5lcikgPT4gbGlzdGVuZXIoc3RhdGUsIHByZXZpb3VzU3RhdGUpKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGdldFN0YXRlID0gKCkgPT4gc3RhdGU7XG4gIGNvbnN0IGdldEluaXRpYWxTdGF0ZSA9ICgpID0+IGluaXRpYWxTdGF0ZTtcbiAgY29uc3Qgc3Vic2NyaWJlID0gKGxpc3RlbmVyKSA9PiB7XG4gICAgbGlzdGVuZXJzLmFkZChsaXN0ZW5lcik7XG4gICAgcmV0dXJuICgpID0+IGxpc3RlbmVycy5kZWxldGUobGlzdGVuZXIpO1xuICB9O1xuICBjb25zdCBhcGkgPSB7IHNldFN0YXRlLCBnZXRTdGF0ZSwgZ2V0SW5pdGlhbFN0YXRlLCBzdWJzY3JpYmUgfTtcbiAgY29uc3QgaW5pdGlhbFN0YXRlID0gc3RhdGUgPSBjcmVhdGVTdGF0ZShzZXRTdGF0ZSwgZ2V0U3RhdGUsIGFwaSk7XG4gIHJldHVybiBhcGk7XG59O1xuY29uc3QgY3JlYXRlU3RvcmUgPSAoY3JlYXRlU3RhdGUpID0+IGNyZWF0ZVN0YXRlID8gY3JlYXRlU3RvcmVJbXBsKGNyZWF0ZVN0YXRlKSA6IGNyZWF0ZVN0b3JlSW1wbDtcblxuZXhwb3J0IHsgY3JlYXRlU3RvcmUgfTtcbiIsImltcG9ydCB7IHBlcnNpc3QsIGNyZWF0ZUpTT05TdG9yYWdlIH0gZnJvbSBcInp1c3RhbmQvbWlkZGxld2FyZVwiO1xuaW1wb3J0IHsgY3JlYXRlU3RvcmUgfSBmcm9tIFwienVzdGFuZC92YW5pbGxhXCI7XG5cbi8vIFRPRE86IGNhcnQgc2hvdWxkIGJlIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQgcHJvamVjdFxudHlwZSBXaWRnZXRTdGF0ZSA9IHtcbiAgICBpc09wZW46IGJvb2xlYW47XG4gICAgaXNSZXN1bWVQYW5lbFZpc2libGU6IGJvb2xlYW47XG4gICAgaXNSZWFkeTogYm9vbGVhbjtcbiAgICBpc0Jvb2tpbmdDb21wbGV0ZWQ6IGJvb2xlYW47XG4gICAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gICAgcHJpbWFyeUd1ZXN0TmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgICBjaGVja0luRGF0ZTogc3RyaW5nIHwgbnVsbDtcbiAgICBjaGVja091dERhdGU6IHN0cmluZyB8IG51bGw7XG4gICAgY2FydDogYW55O1xufTtcblxudHlwZSBBY3Rpb25zID0ge1xuICAgIHNob3dXaWRnZXQ6ICgpID0+IHZvaWQ7XG4gICAgaGlkZVdpZGdldDogKCkgPT4gdm9pZDtcbiAgICBzaG93UmVzdW1lUGFuZWw6ICgpID0+IHZvaWQ7XG4gICAgaGlkZVJlc3VtZVBhbmVsOiAoKSA9PiB2b2lkO1xuICAgIHNldElzUmVhZHk6IChpc1JlYWR5OiBib29sZWFuKSA9PiB2b2lkO1xuICAgIHNldElzQm9va2luZ0NvbXBsZXRlZDogKGlzQ29tcGxldGVkOiBib29sZWFuKSA9PiB2b2lkO1xuICAgIHNldEJhY2tncm91bmRDb2xvcjogKGNvbG9yPzogc3RyaW5nKSA9PiB2b2lkO1xuICAgIHNldFByaW1hcnlHdWVzdE5hbWU6IChuYW1lOiBzdHJpbmcpID0+IHZvaWQ7XG4gICAgc2V0Q2FydDogKGNhcnQ/OiBhbnkpID0+IHZvaWQ7XG4gICAgc2V0RGF0ZXM6IChjaGVja0luRGF0ZTogc3RyaW5nLCBjaGVja091dERhdGU6IHN0cmluZykgPT4gdm9pZDtcbiAgICByZXNldDogKCkgPT4gdm9pZDtcbn07XG5cbmNvbnN0IGluaXRpYWxXaWRnZXRTdGF0ZTogV2lkZ2V0U3RhdGUgPSB7XG4gICAgaXNPcGVuOiBmYWxzZSxcbiAgICBpc1Jlc3VtZVBhbmVsVmlzaWJsZTogZmFsc2UsXG4gICAgaXNSZWFkeTogZmFsc2UsXG4gICAgaXNCb29raW5nQ29tcGxldGVkOiBmYWxzZSxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IFwicmdiKDM1LCA3NiwgMTIxKVwiLFxuICAgIHByaW1hcnlHdWVzdE5hbWU6IG51bGwsXG4gICAgY2hlY2tJbkRhdGU6IG51bGwsXG4gICAgY2hlY2tPdXREYXRlOiBudWxsLFxuICAgIGNhcnQ6IHt9LFxufTtcblxuZXhwb3J0IGNvbnN0IHdpZGdldFN0b3JlID0gY3JlYXRlU3RvcmU8V2lkZ2V0U3RhdGUgJiBBY3Rpb25zPigpKFxuICAgIHBlcnNpc3QoXG4gICAgICAgIChzZXQpID0+ICh7XG4gICAgICAgICAgICAuLi5pbml0aWFsV2lkZ2V0U3RhdGUsXG4gICAgICAgICAgICBzaG93V2lkZ2V0OiAoKSA9PiBzZXQoeyBpc09wZW46IHRydWUgfSksXG4gICAgICAgICAgICBoaWRlV2lkZ2V0OiAoKSA9PiBzZXQoeyBpc09wZW46IGZhbHNlIH0pLFxuICAgICAgICAgICAgc2hvd1Jlc3VtZVBhbmVsOiAoKSA9PiBzZXQoeyBpc1Jlc3VtZVBhbmVsVmlzaWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgICAgIGhpZGVSZXN1bWVQYW5lbDogKCkgPT4gc2V0KHsgaXNSZXN1bWVQYW5lbFZpc2libGU6IGZhbHNlIH0pLFxuICAgICAgICAgICAgc2V0SXNSZWFkeTogKGlzUmVhZHkpID0+IHNldCh7IGlzUmVhZHkgfSksXG4gICAgICAgICAgICBzZXRJc0Jvb2tpbmdDb21wbGV0ZWQ6IChpc0Jvb2tpbmdDb21wbGV0ZWQpID0+IHNldCh7IGlzQm9va2luZ0NvbXBsZXRlZCB9KSxcbiAgICAgICAgICAgIHNldEJhY2tncm91bmRDb2xvcjogKGJhY2tncm91bmRDb2xvcikgPT5cbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgPyBzZXQoeyBiYWNrZ3JvdW5kQ29sb3IgfSlcbiAgICAgICAgICAgICAgICAgICAgOiBzZXQoeyBiYWNrZ3JvdW5kQ29sb3I6IGluaXRpYWxXaWRnZXRTdGF0ZS5iYWNrZ3JvdW5kQ29sb3IgfSksXG4gICAgICAgICAgICBzZXRQcmltYXJ5R3Vlc3ROYW1lOiAocHJpbWFyeUd1ZXN0TmFtZSkgPT4gc2V0KHsgcHJpbWFyeUd1ZXN0TmFtZSB9KSxcbiAgICAgICAgICAgIHNldENhcnQ6IChjYXJ0KSA9PiBzZXQoeyBjYXJ0IH0pLFxuICAgICAgICAgICAgc2V0RGF0ZXM6IChjaGVja0luRGF0ZSwgY2hlY2tPdXREYXRlKSA9PiBzZXQoeyBjaGVja0luRGF0ZSwgY2hlY2tPdXREYXRlIH0pLFxuICAgICAgICAgICAgcmVzZXQ6ICgpID0+IHNldChpbml0aWFsV2lkZ2V0U3RhdGUpLFxuICAgICAgICB9KSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJ3aWRnZXRTdG9yZVwiLFxuICAgICAgICAgICAgc3RvcmFnZTogY3JlYXRlSlNPTlN0b3JhZ2UoKCkgPT4gc2Vzc2lvblN0b3JhZ2UpLFxuICAgICAgICAgICAgcGFydGlhbGl6ZTogKHN0YXRlKSA9PlxuICAgICAgICAgICAgICAgIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhzdGF0ZSkuZmlsdGVyKChba2V5XSkgPT4gIVtcImNhcnRcIiwgXCJpc1JlYWR5XCJdLmluY2x1ZGVzKGtleSkpKSxcbiAgICAgICAgICAgIG9uUmVoeWRyYXRlU3RvcmFnZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlPy5pc0Jvb2tpbmdDb21wbGV0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgIClcbik7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgeyBTREtfU0NSSVBUX0lELCBUUklQRlVTSU9OX0JBU0VfVVJMIH0gZnJvbSBcIi4vY29uc3RcIjtcblxuZXhwb3J0IGNvbnN0IHN0cmluZ2lmeVByaWNlID0gKGNlbnRzOiBudW1iZXIgfCBudWxsKSA9PlxuICAgIGNlbnRzICE9PSBudWxsID8gbmV3IEludGwuTnVtYmVyRm9ybWF0KFwiZW4tVVNcIiwgeyBzdHlsZTogXCJjdXJyZW5jeVwiLCBjdXJyZW5jeTogXCJVU0RcIiB9KS5mb3JtYXQoY2VudHMgLyAxMDApIDogXCJcIjtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRQYXJhbXMgPSAoKSA9PiB7XG4gICAgY29uc3QgJGpzU2RrID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoU0RLX1NDUklQVF9JRCkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QganNTZGtTcmMgPSAkanNTZGsuZ2V0QXR0cmlidXRlKFwic3JjXCIpIGFzIHN0cmluZztcbiAgICBjb25zdCB1cmxQYXJhbXMgPSBnZXRQYXJhbXNGcm9tVXJsKG5ldyBVUkxTZWFyY2hQYXJhbXMoanNTZGtTcmMuc3Vic3RyaW5nKGpzU2RrU3JjLmluZGV4T2YoXCI/XCIpKSkpO1xuXG4gICAgY29uc3QgY2xpZW50ID0gdXJsUGFyYW1zW1wiY2xpZW50XCJdID8/IG51bGw7XG4gICAgY29uc3QgcHJvcGVydHlJZCA9IHVybFBhcmFtc1tcInByb3BlcnR5SWRcIl0gPyArdXJsUGFyYW1zW1wicHJvcGVydHlJZFwiXSA6IG51bGw7XG5cbiAgICByZXR1cm4geyBjbGllbnQsIHByb3BlcnR5SWQgfTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJhbXNGcm9tVXJsKHVybFNlYXJjaFBhcmFtczogVVJMU2VhcmNoUGFyYW1zKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3QgYXZhaWxhYmxlU2VhcmNoUGFyYW1zTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICB0cmlwZnVzaW9uOiBcInRyaXBmdXNpb25cIixcbiAgICAgICAgY2xpZW50OiBcImNsaWVudFwiLFxuICAgICAgICBwcm9wZXJ0eWlkOiBcInByb3BlcnR5SWRcIixcbiAgICAgICAgbW9kZTogXCJtb2RlXCIsXG4gICAgICAgIG9mZmVyaWQ6IFwib2ZmZXJJZFwiLFxuICAgICAgICBib29raW5naWQ6IFwiYm9va2luZ0lkXCIsXG4gICAgICAgIGNoZWNraW46IFwiY2hlY2tJblwiLFxuICAgICAgICBjaGVja291dDogXCJjaGVja091dFwiLFxuICAgICAgICBhZHVsdHM6IFwiYWR1bHRzXCIsXG4gICAgICAgIGNoaWxkcmVuOiBcImNoaWxkcmVuXCIsXG4gICAgfTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh1cmxTZWFyY2hQYXJhbXMuZW50cmllcygpKS5yZWR1Y2UoXG4gICAgICAgIChwcmV2LCBbc2VhcmNoUGFyYW1LZXksIHNlYXJjaFBhcmFtVmFsdWVdKSA9PiAoe1xuICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgIFthdmFpbGFibGVTZWFyY2hQYXJhbXNNYXBbc2VhcmNoUGFyYW1LZXkudG9Mb3dlckNhc2UoKV1dOiBzZWFyY2hQYXJhbVZhbHVlLFxuICAgICAgICB9KSxcbiAgICAgICAge31cbiAgICApO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9nZ2VyKG1lc3NhZ2U6IHN0cmluZywgdHlwZTogXCJlcnJvclwiIHwgXCJsb2dcIiA9IFwiZXJyb3JcIikge1xuICAgIGNvbnN0IHVybCA9IGAke1RSSVBGVVNJT05fQkFTRV9VUkx9YXBpL3ZhY2F5b3UvbG9nYDtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBwYWdlOiB3aW5kb3cubG9jYXRpb24uaHJlZixcbiAgICB9O1xuICAgIGNvbnN0IGhlYWRlcnMgPSB7XG4gICAgICAgIFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgIH07XG4gICAgcmV0dXJuIGZldGNoKHVybCwge1xuICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgfSksXG4gICAgICAgIGhlYWRlcnMsXG4gICAgfSlcbiAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5qc29uKCkpXG4gICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgVHJpcGZ1c2lvbjogZmFpbGVkIHRvIGxvZyBtZXNzYWdlOiAke2Vycm9yfWApO1xuICAgICAgICB9KTtcbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB0eXBlIHsgR2xvYmFsU3RhdGUgfSBmcm9tIFwiLi9zdG9yZS9nbG9iYWwuc3RvcmVcIjtcbmltcG9ydCB7XG4gICAgQk9PS0lOR19NT0RFLFxuICAgIExPQURFUl9JRCxcbiAgICBSRVNVTUVfUEFORUxfSUQsXG4gICAgVFJJUEZVU0lPTl9CQVNFX1VSTCxcbiAgICBXSURHRVRfQ0xPU0VfQlVUVE9OX0lELFxuICAgIFdJREdFVF9IRUFERVJfSUQsXG4gICAgV0lER0VUX0hFQURFUl9USVRMRV9JRCxcbiAgICBXSURHRVRfSUQsXG4gICAgV0lER0VUX0lGUkFNRV9JRCxcbiAgICBXSURHRVRfSU5ORVJfV1JBUFBFUl9JRCxcbiAgICBXSURHRVRfV1JBUFBFUl9JRCxcbn0gZnJvbSBcIi4vY29uc3RcIjtcbmltcG9ydCB7IHdpZGdldFN0b3JlIH0gZnJvbSBcIi4vc3RvcmUvd2lkZ2V0LnN0b3JlXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheUxvYWRpbmdPdmVybGF5KCkge1xuICAgIGNvbnN0ICR3aWRnZXRXcmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX1dSQVBQRVJfSUQpO1xuXG4gICAgaWYgKCR3aWRnZXRXcmFwcGVyKSB7XG4gICAgICAgIGNvbnN0ICRsb2FkaW5nRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgJGxvYWRpbmdEaXYuaWQgPSBMT0FERVJfSUQ7XG4gICAgICAgICRsb2FkaW5nRGl2LmlubmVySFRNTCA9IFwiTG9hZGluZyA8c3Bhbj5UcmlwRnVzaW9uPC9zcGFuPlwiO1xuICAgICAgICAkd2lkZ2V0V3JhcHBlci5hcHBlbmRDaGlsZCgkbG9hZGluZ0Rpdik7XG5cbiAgICAgICAgJHdpZGdldFdyYXBwZXIuc3R5bGUuekluZGV4ID0gYCR7MWUxMX1gO1xuICAgICAgICAkd2lkZ2V0V3JhcHBlci5zdHlsZS5oZWlnaHQgPSBcIjEwMCVcIjtcbiAgICAgICAgJHdpZGdldFdyYXBwZXIuc3R5bGUuYmFja2dyb3VuZCA9IFwicmdiYSgwLCAwLCAwLCAuNzQpXCI7XG4gICAgICAgIGxvY2tQYWdlU2Nyb2xsKCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaGlkZUxvYWRpbmdPdmVybGF5KCkge1xuICAgIGNvbnN0ICRsb2FkaW5nRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoTE9BREVSX0lEKTtcbiAgICAkbG9hZGluZ0Rpdj8ucmVtb3ZlKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlRG9tKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgc2hvd1dpZGdldCwgaGlkZVdpZGdldCwgc2hvd1Jlc3VtZVBhbmVsLCBoaWRlUmVzdW1lUGFuZWwgfSA9IHdpZGdldFN0b3JlLmdldFN0YXRlKCk7XG4gICAgICAgIGNvbnN0ICR3aWRnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLFxuICAgICAgICAgICAgJHdpZGdldFdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLFxuICAgICAgICAgICAgJHdpZGdldElubmVyV3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksXG4gICAgICAgICAgICAkd2lkZ2V0SGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxcbiAgICAgICAgICAgICR3aWRnZXRIZWFkZXJUaXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpLFxuICAgICAgICAgICAgJHdpZGdldENsb3NlQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiKSxcbiAgICAgICAgICAgICRyZXN1bWVQYW5lbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cbiAgICAgICAgJHJlc3VtZVBhbmVsLmlkID0gUkVTVU1FX1BBTkVMX0lEO1xuXG4gICAgICAgICRyZXN1bWVQYW5lbD8uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgICAgIHNob3dXaWRnZXQoKTtcbiAgICAgICAgICAgIGhpZGVSZXN1bWVQYW5lbCgpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBDb25maWd1cmUgd2lkZ2V0IGFuZCB3cmFwcGVyXG4gICAgICAgICR3aWRnZXQuaWQgPSBXSURHRVRfSUQ7XG4gICAgICAgICR3aWRnZXQuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgICAgICAkd2lkZ2V0V3JhcHBlci5pZCA9IFdJREdFVF9XUkFQUEVSX0lEO1xuICAgICAgICAkd2lkZ2V0LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzID09PSBldmVudC50YXJnZXQpIHtcbiAgICAgICAgICAgICAgICBoaWRlV2lkZ2V0KCk7XG4gICAgICAgICAgICAgICAgc2hvd1Jlc3VtZVBhbmVsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIENvbmZpZ3VyZSB3aWRnZXQgaW5uZXIgd3JhcHBlclxuICAgICAgICAkd2lkZ2V0SW5uZXJXcmFwcGVyLmlkID0gV0lER0VUX0lOTkVSX1dSQVBQRVJfSUQ7XG4gICAgICAgICR3aWRnZXRIZWFkZXIuaWQgPSBXSURHRVRfSEVBREVSX0lEO1xuICAgICAgICAkd2lkZ2V0Q2xvc2VCdXR0b24uaWQgPSBXSURHRVRfQ0xPU0VfQlVUVE9OX0lEO1xuICAgICAgICAkd2lkZ2V0Q2xvc2VCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgICAgIGhpZGVXaWRnZXQoKTtcbiAgICAgICAgICAgIHNob3dSZXN1bWVQYW5lbCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgJHdpZGdldEhlYWRlclRpdGxlLmlkID0gV0lER0VUX0hFQURFUl9USVRMRV9JRDtcbiAgICAgICAgJHdpZGdldEhlYWRlclRpdGxlLmlubmVySFRNTCA9IFwiQm9va2luZ1wiO1xuXG4gICAgICAgIC8vIEFwcGVuZCB3aWRnZXQgdG8gd3JhcHBlciBhbmQgd3JhcHBlciB0byBkb2N1bWVudCBib2R5XG4gICAgICAgICR3aWRnZXRXcmFwcGVyLmFwcGVuZENoaWxkKCR3aWRnZXQpO1xuICAgICAgICAkd2lkZ2V0LmFwcGVuZENoaWxkKCR3aWRnZXRJbm5lcldyYXBwZXIpO1xuICAgICAgICAkd2lkZ2V0SW5uZXJXcmFwcGVyLmFwcGVuZENoaWxkKCR3aWRnZXRIZWFkZXIpO1xuICAgICAgICAkd2lkZ2V0SGVhZGVyLmFwcGVuZENoaWxkKCR3aWRnZXRIZWFkZXJUaXRsZSk7XG4gICAgICAgICR3aWRnZXRIZWFkZXIuYXBwZW5kQ2hpbGQoJHdpZGdldENsb3NlQnV0dG9uKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCgkd2lkZ2V0V3JhcHBlcik7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoJHJlc3VtZVBhbmVsKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIoYFdpZGdldDogRXJyb3IgcHJlcGFyaW5nIERPTTogJHtlcnJvcn1gKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlRyaXBmdXNpb246IEVycm9yIHByZXBhcmluZyBET006IFwiLCBlcnJvcik7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyUmVzdW1lUGFuZWwoe1xuICAgIGhlYWRlclRleHQsXG4gICAgc3ViaGVhZGVyVGV4dCxcbiAgICBmb290ZXJUZXh0LFxufToge1xuICAgIGhlYWRlclRleHQ6IHN0cmluZztcbiAgICBzdWJoZWFkZXJUZXh0Pzogc3RyaW5nO1xuICAgIGZvb3RlclRleHQ/OiBzdHJpbmc7XG59KSB7XG4gICAgY29uc3QgJHJlc3VtZVBhbmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoUkVTVU1FX1BBTkVMX0lEKSBhcyBIVE1MRWxlbWVudDtcblxuICAgICRyZXN1bWVQYW5lbC5pbm5lckhUTUwgPSBgXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX2hlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPiR7aGVhZGVyVGV4dH08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgaWQ9XCJMYXllcl8xXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHZpZXdCb3g9XCIwIDAgMzMwIDMzMFwiIHhtbDpzcGFjZT1cInByZXNlcnZlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiWE1MSURfMjIyX1wiIGQ9XCJNMjUwLjYwNiwxNTQuMzg5bC0xNTAtMTQ5Ljk5NmMtNS44NTctNS44NTgtMTUuMzU1LTUuODU4LTIxLjIxMywwLjAwMWMtNS44NTcsNS44NTgtNS44NTcsMTUuMzU1LDAuMDAxLDIxLjIxM2wxMzkuMzkzLDEzOS4zOUw3OS4zOTMsMzA0LjM5NGMtNS44NTcsNS44NTgtNS44NTcsMTUuMzU1LDAuMDAxLDIxLjIxM0M4Mi4zMjIsMzI4LjUzNiw4Ni4xNjEsMzMwLDkwLDMzMHM3LjY3OC0xLjQ2NCwxMC42MDctNC4zOTRsMTQ5Ljk5OS0xNTAuMDA0YzIuODE0LTIuODEzLDQuMzk0LTYuNjI4LDQuMzk0LTEwLjYwNkMyNTUsMTYxLjAxOCwyNTMuNDIsMTU3LjIwMiwyNTAuNjA2LDE1NC4zODl6XCIvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAke3N1YmhlYWRlclRleHQgJiYgYDxzcGFuIGNsYXNzPVwidHJpcGZ1c2lvbi1yZXN1bWUtcGFuZWxfX3N1YmhlYWRlclwiPiR7c3ViaGVhZGVyVGV4dH08L3NwYW4+YH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgICR7Zm9vdGVyVGV4dCAmJiBgPHNwYW4gY2xhc3M9XCJ0cmlwZnVzaW9uLXJlc3VtZS1wYW5lbF9fZm9vdGVyXCI+JHtmb290ZXJUZXh0fTwvc3Bhbj5gfVxuICAgIGA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93UmVzdW1lUGFuZWxEb20oKSB7XG4gICAgY29uc3QgJHJlc3VtZVBhbmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoUkVTVU1FX1BBTkVMX0lEKSBhcyBIVE1MRWxlbWVudDtcbiAgICAkcmVzdW1lUGFuZWwuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgXCJ0cmlwZnVzaW9uLXJlc3VtZS1wYW5lbC0tc2xpZGUtaW5cIik7XG4gICAgJHJlc3VtZVBhbmVsLmZvY3VzKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoaWRlUmVzdW1lUGFuZWxEb20oKSB7XG4gICAgY29uc3QgJHJlc3VtZVBhbmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoUkVTVU1FX1BBTkVMX0lEKSBhcyBIVE1MRWxlbWVudDtcbiAgICAkcmVzdW1lUGFuZWwuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgXCJ0cmlwZnVzaW9uLXJlc3VtZS1wYW5lbC0tc2xpZGUtb3V0XCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvd1dpZGdldERvbSgpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCAkd2lkZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX0lEKSBhcyBIVE1MRGl2RWxlbWVudCxcbiAgICAgICAgICAgICR3aWRnZXRXcmFwcGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX1dSQVBQRVJfSUQpIGFzIEhUTUxEaXZFbGVtZW50O1xuXG4gICAgICAgIE9iamVjdC5hc3NpZ24oJHdpZGdldFdyYXBwZXIuc3R5bGUsIHtcbiAgICAgICAgICAgIHpJbmRleDogMTAwMDAwMDAwMDAxMSxcbiAgICAgICAgICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBcInJnYmEoMCwgMCwgMCwgLjUpXCIsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxvY2tQYWdlU2Nyb2xsKCk7XG4gICAgICAgICR3aWRnZXQuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICAgICAgJHdpZGdldC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCBcInNsaWRlLWluXCIpO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgJHdpZGdldElmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9JRlJBTUVfSUQpO1xuICAgICAgICAgICAgJHdpZGdldElmcmFtZT8uZm9jdXMoKTtcbiAgICAgICAgfSwgMjUwKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIoYFdpZGdldDogRXJyb3Igb3Blbm5pbmcgd2lkZ2V0OiAke2Vycm9yfWApO1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiVHJpcGZ1c2lvbjogRXJyb3Igb3Blbm5pbmcgd2lkZ2V0OiBcIiwgZXJyb3IpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhpZGVXaWRnZXREb20oKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgJHdpZGdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9JRCksXG4gICAgICAgICAgICAkd2lkZ2V0V3JhcHBlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdJREdFVF9XUkFQUEVSX0lEKTtcblxuICAgICAgICBpZiAoJHdpZGdldCAmJiAkd2lkZ2V0V3JhcHBlcikge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9IFwiaW5pdGlhbFwiO1xuICAgICAgICAgICAgJHdpZGdldC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCBcInNsaWRlLW91dFwiKTtcbiAgICAgICAgICAgICR3aWRnZXRXcmFwcGVyLnN0eWxlLmJhY2tncm91bmQgPSBcInJnYmEoMCwgMCwgMCwgMClcIjtcbiAgICAgICAgICAgICR3aWRnZXQuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgICAgICAgICAgJHdpZGdldFdyYXBwZXIuc3R5bGUuekluZGV4ID0gYCR7LTFlMTF9YDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlcihgV2lkZ2V0OiBFcnJvciBjbG9zaW5nIHdpZGdldDogJHtlcnJvcn1gKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlRyaXBmdXNpb246IEVycm9yIGNsb3Npbmcgd2lkZ2V0OiBcIiwgZXJyb3IpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdElmcmFtZSh7IGNsaWVudCwgcHJvcGVydHlJZCwgbW9kZSwgYm9va2luZ0lkLCAuLi5yZXN0IH06IEdsb2JhbFN0YXRlKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV0lER0VUX0lGUkFNRV9JRCk/LnJlbW92ZSgpO1xuXG4gICAgICAgIGNvbnN0ICRpbm5lcldyYXBwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChXSURHRVRfSU5ORVJfV1JBUFBFUl9JRCk7XG4gICAgICAgIGlmICgkaW5uZXJXcmFwcGVyKSB7XG4gICAgICAgICAgICBjb25zdCBpZnJhbWVQYXJhbXNNYXAgPSBbXCJjaGVja0luXCIsIFwiY2hlY2tPdXRcIiwgXCJhZHVsdHNcIiwgXCJjaGlsZHJlblwiLCBcIm9mZmVySWRcIl07XG5cbiAgICAgICAgICAgIGNvbnN0ICR3aWRnZXRJZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaWZyYW1lXCIpO1xuICAgICAgICAgICAgbGV0IHVybCA9IGAke1RSSVBGVVNJT05fQkFTRV9VUkx9JHtjbGllbnR9LyR7cHJvcGVydHlJZH1gO1xuICAgICAgICAgICAgaWYgKG1vZGUgPT09IEJPT0tJTkdfTU9ERS5hcHBlbmQgJiYgYm9va2luZ0lkKSB7XG4gICAgICAgICAgICAgICAgdXJsICs9IGAvYm9va2luZy8ke2Jvb2tpbmdJZH0vYXBwZW5kYDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgYWRkaXRpb25hbFBhcmFtcyA9IE9iamVjdC5lbnRyaWVzKHJlc3QpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoW2tleSwgdmFsdWVdKSA9PiBpZnJhbWVQYXJhbXNNYXAuaW5jbHVkZXMoa2V5KSAmJiAhIXZhbHVlKVxuICAgICAgICAgICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fT0ke3ZhbHVlfWAudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgICAuam9pbihcIiZcIik7XG4gICAgICAgICAgICBpZiAoYWRkaXRpb25hbFBhcmFtcykge1xuICAgICAgICAgICAgICAgIHVybCArPSBgPyR7YWRkaXRpb25hbFBhcmFtc31gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAkd2lkZ2V0SWZyYW1lLnNldEF0dHJpYnV0ZShcInNyY1wiLCB1cmwpO1xuICAgICAgICAgICAgJHdpZGdldElmcmFtZS5pZCA9IFdJREdFVF9JRlJBTUVfSUQ7XG4gICAgICAgICAgICAkaW5uZXJXcmFwcGVyLmFwcGVuZENoaWxkKCR3aWRnZXRJZnJhbWUpO1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyKGBXaWRnZXQ6IEVycm9yIGluamVjdGluZyBpZnJhbWU6ICR7ZXJyb3J9YCk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUcmlwZnVzaW9uOiBFcnJvciBpbmplY3RpbmcgaWZyYW1lOiBcIiwgZXJyb3IpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvY2tQYWdlU2Nyb2xsKCkge1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSBcImhpZGRlblwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0V2lkZ2V0VGhlbWUoeyBiYWNrZ3JvdW5kQ29sb3IgfTogeyBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB9KSB7XG4gICAgY29uc3QgJHJlc3VtZVBhbmVsV3JhcHBlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFJFU1VNRV9QQU5FTF9JRCkgYXMgSFRNTEVsZW1lbnQsXG4gICAgICAgICR3aWRnZXRIZWFkZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChXSURHRVRfSEVBREVSX0lEKSBhcyBIVE1MRWxlbWVudDtcbiAgICAkcmVzdW1lUGFuZWxXcmFwcGVyLnN0eWxlW1wiYmFja2dyb3VuZENvbG9yXCJdID0gYmFja2dyb3VuZENvbG9yO1xuICAgICR3aWRnZXRIZWFkZXIuc3R5bGVbXCJiYWNrZ3JvdW5kQ29sb3JcIl0gPSBiYWNrZ3JvdW5kQ29sb3I7XG59XG4iLCJpbXBvcnQgeyBCT09LSU5HX01PREUgfSBmcm9tIFwiLi4vY29uc3RcIjtcbmltcG9ydCB7IHBlcnNpc3QsIGNyZWF0ZUpTT05TdG9yYWdlIH0gZnJvbSBcInp1c3RhbmQvbWlkZGxld2FyZVwiO1xuaW1wb3J0IHsgY3JlYXRlU3RvcmUgfSBmcm9tIFwienVzdGFuZC92YW5pbGxhXCI7XG5cbmV4cG9ydCB0eXBlIEdsb2JhbFN0YXRlID0ge1xuICAgIGNsaWVudDogc3RyaW5nIHwgbnVsbDtcbiAgICBwcm9wZXJ0eUlkOiBudW1iZXIgfCBudWxsO1xuICAgIG1vZGU6IGtleW9mIHR5cGVvZiBCT09LSU5HX01PREU7XG4gICAgYm9va2luZ0lkOiBudW1iZXIgfCBudWxsO1xuICAgIGNoZWNrSW46IHN0cmluZyB8IG51bGw7XG4gICAgY2hlY2tPdXQ6IHN0cmluZyB8IG51bGw7XG4gICAgYWR1bHRzOiBudW1iZXIgfCBudWxsO1xuICAgIGNoaWxkcmVuOiBudW1iZXJbXSB8IG51bGw7XG4gICAgb2ZmZXJJZDogbnVtYmVyIHwgbnVsbDtcbiAgICByZXBsYWNlOiAoc3RhdGU6IFBhcnRpYWw8R2xvYmFsU3RhdGU+KSA9PiB2b2lkO1xufTtcblxuY29uc3QgaW5pdGlhbFN0YXRlID0ge1xuICAgIGNsaWVudDogbnVsbCxcbiAgICBwcm9wZXJ0eUlkOiBudWxsLFxuICAgIG1vZGU6IEJPT0tJTkdfTU9ERS5ub3JtYWwsXG4gICAgYm9va2luZ0lkOiBudWxsLFxuICAgIGNoZWNrSW46IG51bGwsXG4gICAgY2hlY2tPdXQ6IG51bGwsXG4gICAgYWR1bHRzOiBudWxsLFxuICAgIGNoaWxkcmVuOiBudWxsLFxuICAgIG9mZmVySWQ6IG51bGwsXG59O1xuXG5leHBvcnQgY29uc3QgZ2xvYmFsU3RvcmUgPSBjcmVhdGVTdG9yZTxHbG9iYWxTdGF0ZT4oKShcbiAgICBwZXJzaXN0KFxuICAgICAgICAoc2V0KSA9PiAoe1xuICAgICAgICAgICAgLi4uaW5pdGlhbFN0YXRlLFxuICAgICAgICAgICAgcmVwbGFjZTogKHN0YXRlKSA9PiBzZXQoeyAuLi5pbml0aWFsU3RhdGUsIC4uLnN0YXRlIH0pLFxuICAgICAgICB9KSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJnbG9iYWxTdG9yZVwiLFxuICAgICAgICAgICAgc3RvcmFnZTogY3JlYXRlSlNPTlN0b3JhZ2UoKCkgPT4gc2Vzc2lvblN0b3JhZ2UpLFxuICAgICAgICB9XG4gICAgKVxuKTtcbiIsImNvbnN0IGlzSXRlcmFibGUgPSAob2JqKSA9PiBTeW1ib2wuaXRlcmF0b3IgaW4gb2JqO1xuY29uc3QgY29tcGFyZU1hcExpa2UgPSAoaXRlcmFibGVBLCBpdGVyYWJsZUIpID0+IHtcbiAgY29uc3QgbWFwQSA9IGl0ZXJhYmxlQSBpbnN0YW5jZW9mIE1hcCA/IGl0ZXJhYmxlQSA6IG5ldyBNYXAoaXRlcmFibGVBKTtcbiAgY29uc3QgbWFwQiA9IGl0ZXJhYmxlQiBpbnN0YW5jZW9mIE1hcCA/IGl0ZXJhYmxlQiA6IG5ldyBNYXAoaXRlcmFibGVCKTtcbiAgaWYgKG1hcEEuc2l6ZSAhPT0gbWFwQi5zaXplKSByZXR1cm4gZmFsc2U7XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIG1hcEEpIHtcbiAgICBpZiAoIU9iamVjdC5pcyh2YWx1ZSwgbWFwQi5nZXQoa2V5KSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuZnVuY3Rpb24gc2hhbGxvdyhvYmpBLCBvYmpCKSB7XG4gIGlmIChPYmplY3QuaXMob2JqQSwgb2JqQikpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodHlwZW9mIG9iakEgIT09IFwib2JqZWN0XCIgfHwgb2JqQSA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqQiAhPT0gXCJvYmplY3RcIiB8fCBvYmpCID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChpc0l0ZXJhYmxlKG9iakEpICYmIGlzSXRlcmFibGUob2JqQikpIHtcbiAgICBjb25zdCBpdGVyYXRvckEgPSBvYmpBW1N5bWJvbC5pdGVyYXRvcl0oKTtcbiAgICBjb25zdCBpdGVyYXRvckIgPSBvYmpCW1N5bWJvbC5pdGVyYXRvcl0oKTtcbiAgICBsZXQgbmV4dEEgPSBpdGVyYXRvckEubmV4dCgpO1xuICAgIGxldCBuZXh0QiA9IGl0ZXJhdG9yQi5uZXh0KCk7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkobmV4dEEudmFsdWUpICYmIEFycmF5LmlzQXJyYXkobmV4dEIudmFsdWUpICYmIG5leHRBLnZhbHVlLmxlbmd0aCA9PT0gMiAmJiBuZXh0Qi52YWx1ZS5sZW5ndGggPT09IDIpIHtcbiAgICAgIHJldHVybiBjb21wYXJlTWFwTGlrZShcbiAgICAgICAgb2JqQSxcbiAgICAgICAgb2JqQlxuICAgICAgKTtcbiAgICB9XG4gICAgd2hpbGUgKCFuZXh0QS5kb25lICYmICFuZXh0Qi5kb25lKSB7XG4gICAgICBpZiAoIU9iamVjdC5pcyhuZXh0QS52YWx1ZSwgbmV4dEIudmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIG5leHRBID0gaXRlcmF0b3JBLm5leHQoKTtcbiAgICAgIG5leHRCID0gaXRlcmF0b3JCLm5leHQoKTtcbiAgICB9XG4gICAgcmV0dXJuICEhbmV4dEEuZG9uZSAmJiAhIW5leHRCLmRvbmU7XG4gIH1cbiAgY29uc3Qga2V5c0EgPSBPYmplY3Qua2V5cyhvYmpBKTtcbiAgaWYgKGtleXNBLmxlbmd0aCAhPT0gT2JqZWN0LmtleXMob2JqQikubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGZvciAoY29uc3Qga2V5QSBvZiBrZXlzQSkge1xuICAgIGlmICghT2JqZWN0Lmhhc093bihvYmpCLCBrZXlBKSB8fCAhT2JqZWN0LmlzKG9iakFba2V5QV0sIG9iakJba2V5QV0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgeyBzaGFsbG93IH07XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3R5bGVzLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3N0eWxlcy5jc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgdHlwZSB7IEFwcE1lc3NhZ2UgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgQVBQX01FU1NBR0VfVFlQRSwgQk9PS0lOR19NT0RFIH0gZnJvbSBcIi4vY29uc3RcIjtcbmltcG9ydCB7XG4gICAgaGlkZVdpZGdldERvbSxcbiAgICBkaXNwbGF5TG9hZGluZ092ZXJsYXksXG4gICAgaGlkZVJlc3VtZVBhbmVsRG9tLFxuICAgIGluamVjdElmcmFtZSxcbiAgICBzaG93V2lkZ2V0RG9tLFxuICAgIHByZXBhcmVEb20sXG4gICAgcmVuZGVyUmVzdW1lUGFuZWwsXG4gICAgc2V0V2lkZ2V0VGhlbWUsXG4gICAgc2hvd1Jlc3VtZVBhbmVsRG9tLFxuICAgIGhpZGVMb2FkaW5nT3ZlcmxheSxcbn0gZnJvbSBcIi4vZG9tXCI7XG5pbXBvcnQgeyBHbG9iYWxTdGF0ZSwgZ2xvYmFsU3RvcmUgfSBmcm9tIFwiLi9zdG9yZS9nbG9iYWwuc3RvcmVcIjtcbmltcG9ydCB7IHdpZGdldFN0b3JlIH0gZnJvbSBcIi4vc3RvcmUvd2lkZ2V0LnN0b3JlXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0UGFyYW1zLCBnZXRQYXJhbXNGcm9tVXJsLCBsb2dnZXIsIHN0cmluZ2lmeVByaWNlIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCB7IHNoYWxsb3cgfSBmcm9tIFwienVzdGFuZC92YW5pbGxhL3NoYWxsb3dcIjtcbmltcG9ydCBcIi4vc3R5bGVzLmNzc1wiO1xuXG5nbG9iYWxTdG9yZS5zdWJzY3JpYmUoKG5ld1N0YXRlKSA9PiB7XG4gICAgaWYgKG5ld1N0YXRlLmNsaWVudCAmJiBuZXdTdGF0ZS5wcm9wZXJ0eUlkKSB7XG4gICAgICAgIGluamVjdElmcmFtZShuZXdTdGF0ZSk7XG4gICAgfVxufSk7XG5cbndpZGdldFN0b3JlLnN1YnNjcmliZSgobmV3U3RhdGUpID0+IHtcbiAgICBpZiAobmV3U3RhdGUuaXNSZXN1bWVQYW5lbFZpc2libGUpIHtcbiAgICAgICAgbGV0IGhlYWRlclRleHQgPSBuZXdTdGF0ZS5wcmltYXJ5R3Vlc3ROYW1lXG4gICAgICAgICAgICA/IGBDb21wbGV0ZSB5b3VyIGJvb2tpbmcsICR7bmV3U3RhdGUucHJpbWFyeUd1ZXN0TmFtZX1gXG4gICAgICAgICAgICA6IFwiQ29tcGxldGUgeW91ciBib29raW5nXCI7XG4gICAgICAgIGxldCBzdWJoZWFkZXJUZXh0ID0gXCJcIjtcbiAgICAgICAgY29uc3QgZm9vdGVyUGFydHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgICAgaWYgKG5ld1N0YXRlLmlzQm9va2luZ0NvbXBsZXRlZCkge1xuICAgICAgICAgICAgaGVhZGVyVGV4dCA9IFwiQm9va2luZyBjb21wbGV0ZWQhXCI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV3U3RhdGUuY2hlY2tJbkRhdGUgJiYgbmV3U3RhdGUuY2hlY2tPdXREYXRlKSB7XG4gICAgICAgICAgICBmb290ZXJQYXJ0cy5wdXNoKFxuICAgICAgICAgICAgICAgIGAke2RheWpzKG5ld1N0YXRlLmNoZWNrSW5EYXRlKS5mb3JtYXQoXCJNTU0gRERcIil9IC0gJHtkYXlqcyhuZXdTdGF0ZS5jaGVja091dERhdGUpLmZvcm1hdChcIk1NTSBERFwiKX1gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5ld1N0YXRlLmNhcnQudG90YWwpIHtcbiAgICAgICAgICAgIGlmIChuZXdTdGF0ZS5jYXJ0Py5yb29tcyAmJiBuZXdTdGF0ZS5jYXJ0LnJvb21zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCByb29tQ291bnQgPSBuZXdTdGF0ZS5jYXJ0LnJvb21zLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBjb25zdCBndWVzdENvdW50ID0gbmV3U3RhdGUuY2FydC5yb29tcy5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgIChhY2M6IG51bWJlciwgcm9vbTogYW55KSA9PiBhY2MgKyByb29tLnBhc3NlbmdlcnMuYWR1bHRzICsgcm9vbS5wYXNzZW5nZXJzLmNoaWxkcmVuLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgc3ViaGVhZGVyVGV4dCA9IGAke3Jvb21Db3VudH0gcm9vbSR7cm9vbUNvdW50ID4gMSA/IFwic1wiIDogXCJcIn0gZm9yIGA7XG4gICAgICAgICAgICAgICAgZm9vdGVyUGFydHMucHVzaChgJHtndWVzdENvdW50fSBndWVzdCR7Z3Vlc3RDb3VudCA+IDEgPyBcInNcIiA6IFwiXCJ9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdWJoZWFkZXJUZXh0ICs9IHN0cmluZ2lmeVByaWNlKG5ld1N0YXRlLmNhcnQudG90YWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVuZGVyUmVzdW1lUGFuZWwoeyBoZWFkZXJUZXh0LCBzdWJoZWFkZXJUZXh0LCBmb290ZXJUZXh0OiBmb290ZXJQYXJ0cy5qb2luKFwiLCBcIikgfSk7XG4gICAgfVxuXG4gICAgaWYgKG5ld1N0YXRlLmJhY2tncm91bmRDb2xvcikge1xuICAgICAgICBzZXRXaWRnZXRUaGVtZSh7IGJhY2tncm91bmRDb2xvcjogbmV3U3RhdGUuYmFja2dyb3VuZENvbG9yIH0pO1xuICAgIH1cblxuICAgIGlmIChuZXdTdGF0ZS5pc1JlYWR5KSB7XG4gICAgICAgIG5ld1N0YXRlLmlzT3BlbiA/IHNob3dXaWRnZXREb20oKSA6IGhpZGVXaWRnZXREb20oKTtcbiAgICAgICAgbmV3U3RhdGUuaXNSZXN1bWVQYW5lbFZpc2libGUgPyBzaG93UmVzdW1lUGFuZWxEb20oKSA6IGhpZGVSZXN1bWVQYW5lbERvbSgpO1xuICAgICAgICBoaWRlTG9hZGluZ092ZXJsYXkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBkaXNwbGF5TG9hZGluZ092ZXJsYXkoKTtcbiAgICB9XG59KTtcblxuZnVuY3Rpb24gYWRkTGlua0V2ZW50TGlzdGVuZXJzKCkge1xuICAgIGZ1bmN0aW9uIGhhbmRsZUxpbmtDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxBbmNob3JFbGVtZW50O1xuXG4gICAgICAgICAgICAvLyBFbnN1cmUgdGhlIGV2ZW50IHRhcmdldCBoYXMgYSB2YWxpZCBocmVmXG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSB0YXJnZXQucGFyZW50Tm9kZSBhcyBIVE1MQW5jaG9yRWxlbWVudDtcbiAgICAgICAgICAgIGlmICh0YXJnZXQudGFnTmFtZSAhPT0gXCJBXCIgJiYgcGFyZW50Py50YWdOYW1lID09PSBcIkFcIikge1xuICAgICAgICAgICAgICAgIHRhcmdldC5ocmVmID0gcGFyZW50Py5ocmVmO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBsaW5rSHJlZiA9IHRhcmdldC5ocmVmIHx8IFwiXCI7XG4gICAgICAgICAgICBpZiAoIWxpbmtIcmVmLmluY2x1ZGVzKFwiP1wiKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdXJsUGFyYW1zID0gZ2V0UGFyYW1zRnJvbVVybChuZXcgVVJMU2VhcmNoUGFyYW1zKGxpbmtIcmVmLnN1YnN0cmluZyhsaW5rSHJlZi5pbmRleE9mKFwiP1wiKSkpKTtcblxuICAgICAgICAgICAgaWYgKHVybFBhcmFtcy50cmlwZnVzaW9uID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBjbGllbnQsIHByb3BlcnR5SWQgfSA9IGdldERlZmF1bHRQYXJhbXMoKTtcbiAgICAgICAgICAgICAgICBib29rKHtcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50OiB1cmxQYXJhbXMuY2xpZW50ID8/IGNsaWVudCxcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlJZDogdXJsUGFyYW1zLnByb3BlcnR5SWQgPyArdXJsUGFyYW1zLnByb3BlcnR5SWQgOiBwcm9wZXJ0eUlkLFxuICAgICAgICAgICAgICAgICAgICBtb2RlOiB1cmxQYXJhbXMubW9kZSA9PT0gQk9PS0lOR19NT0RFLmFwcGVuZCA/IEJPT0tJTkdfTU9ERS5hcHBlbmQgOiBCT09LSU5HX01PREUubm9ybWFsLFxuICAgICAgICAgICAgICAgICAgICBib29raW5nSWQ6XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmxQYXJhbXM/LmJvb2tpbmdJZCAmJiB1cmxQYXJhbXM/Lm1vZGUgPT09IEJPT0tJTkdfTU9ERS5hcHBlbmQgPyArdXJsUGFyYW1zLmJvb2tpbmdJZCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIG9mZmVySWQ6IHVybFBhcmFtcy5vZmZlcklkID8gK3VybFBhcmFtcy5vZmZlcklkIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBjaGVja0luOiB1cmxQYXJhbXMuY2hlY2tJbixcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tPdXQ6IHVybFBhcmFtcy5jaGVja091dCxcbiAgICAgICAgICAgICAgICAgICAgYWR1bHRzOiB1cmxQYXJhbXMuYWR1bHRzID8gK3VybFBhcmFtcy5hZHVsdHMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiB1cmxQYXJhbXMuY2hpbGRyZW4gPyB1cmxQYXJhbXMuY2hpbGRyZW4uc3BsaXQoXCIsXCIpLm1hcCgoYWdlKSA9PiArYWdlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGxvZ2dlcihgV2lkZ2V0OiBFcnJvciBpbiBsaW5rIGNsaWNrIGhhbmRsZXI6ICR7ZXJyb3J9YCk7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiVHJpcGZ1c2lvbjogRXJyb3IgaW4gbGluayBjbGljayBoYW5kbGVyOiBcIiwgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImFcIikuZm9yRWFjaCgobGlua0VsZW1lbnQpID0+IHtcbiAgICAgICAgbGlua0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUxpbmtDbGljayk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGFkZFBhZ2VMb2FkTGlzdGVuZXIoKSB7XG4gICAgZnVuY3Rpb24gb25Mb2FkSGFuZGxlcigpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1cmxQYXJhbXMgPSBnZXRQYXJhbXNGcm9tVXJsKG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCkpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHVybFBhcmFtcy50cmlwZnVzaW9uID09PSBcInRydWVcIiAmJlxuICAgICAgICAgICAgICAgIChnbG9iYWxTdG9yZS5nZXRTdGF0ZSgpLmNsaWVudCB8fCB1cmxQYXJhbXMuY2xpZW50KSAmJlxuICAgICAgICAgICAgICAgIChnbG9iYWxTdG9yZS5nZXRTdGF0ZSgpLnByb3BlcnR5SWQgfHwgdXJsUGFyYW1zLnByb3BlcnR5SWQpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBib29rKHtcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50OiB1cmxQYXJhbXMuY2xpZW50ID8/IGdsb2JhbFN0b3JlLmdldFN0YXRlKCkuY2xpZW50LFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eUlkOiB1cmxQYXJhbXMucHJvcGVydHlJZCA/ICt1cmxQYXJhbXMucHJvcGVydHlJZCA6IGdsb2JhbFN0b3JlLmdldFN0YXRlKCkucHJvcGVydHlJZCxcbiAgICAgICAgICAgICAgICAgICAgbW9kZTogdXJsUGFyYW1zLm1vZGUgPT09IEJPT0tJTkdfTU9ERS5hcHBlbmQgPyBCT09LSU5HX01PREUuYXBwZW5kIDogQk9PS0lOR19NT0RFLm5vcm1hbCxcbiAgICAgICAgICAgICAgICAgICAgYm9va2luZ0lkOlxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsUGFyYW1zPy5ib29raW5nSWQgJiYgdXJsUGFyYW1zPy5tb2RlID09PSBCT09LSU5HX01PREUuYXBwZW5kID8gK3VybFBhcmFtcy5ib29raW5nSWQgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBvZmZlcklkOiB1cmxQYXJhbXMub2ZmZXJJZCA/ICt1cmxQYXJhbXMub2ZmZXJJZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tJbjogdXJsUGFyYW1zLmNoZWNrSW4sXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrT3V0OiB1cmxQYXJhbXMuY2hlY2tPdXQsXG4gICAgICAgICAgICAgICAgICAgIGFkdWx0czogdXJsUGFyYW1zLmFkdWx0cyA/ICt1cmxQYXJhbXMuYWR1bHRzIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogdXJsUGFyYW1zLmNoaWxkcmVuID8gdXJsUGFyYW1zLmNoaWxkcmVuLnNwbGl0KFwiLFwiKS5tYXAoKGFnZSkgPT4gK2FnZSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDUwMCk7XG4gICAgfVxuXG4gICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIikge1xuICAgICAgICBvbkxvYWRIYW5kbGVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsIG9uTG9hZEhhbmRsZXIpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gYm9vayhwcm9wcz86IFBhcnRpYWw8R2xvYmFsU3RhdGU+KSB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgYm9va2luZ1N0YXRlID0gcHJvcHMgPz8gZ2xvYmFsU3RvcmUuZ2V0U3RhdGUoKSA/PyBnZXREZWZhdWx0UGFyYW1zKCk7XG4gICAgICAgIGlmICghYm9va2luZ1N0YXRlLmNsaWVudCB8fCAhYm9va2luZ1N0YXRlLnByb3BlcnR5SWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNsaWVudCBhbmQgcHJvcGVydHlJZCBhcmUgcmVxdWlyZWQgdG8gYm9va1wiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgaGlkZVJlc3VtZVBhbmVsLCByZXNldCB9ID0gd2lkZ2V0U3RvcmUuZ2V0U3RhdGUoKTtcbiAgICAgICAgaGlkZVJlc3VtZVBhbmVsKCk7XG5cbiAgICAgICAgaWYgKCFzaGFsbG93KGdsb2JhbFN0b3JlLmdldFN0YXRlKCksIGJvb2tpbmdTdGF0ZSkpIHtcbiAgICAgICAgICAgIHJlc2V0KCk7XG4gICAgICAgICAgICBnbG9iYWxTdG9yZS5nZXRTdGF0ZSgpLnJlcGxhY2UoYm9va2luZ1N0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICB3aWRnZXRTdG9yZS5nZXRTdGF0ZSgpLnNob3dXaWRnZXQoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIoYFdpZGdldDogZmFpbGVkIHRvIGJvb2s6ICR7ZXJyb3J9YCk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFRyaXBmdXNpb246IGZhaWxlZCB0byBib29rOiAke2Vycm9yfWApO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gaW5pdFRyaXBmdXNpb25TZGsoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY2hlY2tJZkRvY3VtZW50TG9hZGVkSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gXCJjb21wbGV0ZVwiKSB7XG4gICAgICAgICAgICAgICAgcHJlcGFyZURvbSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFnbG9iYWxTdG9yZS5nZXRTdGF0ZSgpLmNsaWVudCB8fCAhZ2xvYmFsU3RvcmUuZ2V0U3RhdGUoKS5wcm9wZXJ0eUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgY2xpZW50LCBwcm9wZXJ0eUlkIH0gPSBnZXREZWZhdWx0UGFyYW1zKCk7XG4gICAgICAgICAgICAgICAgICAgIGdsb2JhbFN0b3JlLmdldFN0YXRlKCkucmVwbGFjZSh7IGNsaWVudCwgcHJvcGVydHlJZCB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpbmplY3RJZnJhbWUoZ2xvYmFsU3RvcmUuZ2V0U3RhdGUoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFkZExpbmtFdmVudExpc3RlbmVycygpO1xuXG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lmRG9jdW1lbnRMb2FkZWRJbnRlcnZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDEwMCk7XG4gICAgICAgIGFkZFBhZ2VMb2FkTGlzdGVuZXIoKTtcblxuICAgICAgICBPYmplY3QuYXNzaWduKHdpbmRvdywgeyBib29rLCBjbG9zZVdpZGdldDogaGlkZVdpZGdldERvbSB9KTtcblxuICAgICAgICB3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2U6IEFwcE1lc3NhZ2UgPSBlLmRhdGE7XG4gICAgICAgICAgICBzd2l0Y2ggKG1lc3NhZ2UudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgQVBQX01FU1NBR0VfVFlQRS5XSURHRVRfUkVBRFk6IHtcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0U3RvcmUuZ2V0U3RhdGUoKS5zZXRJc1JlYWR5KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBBUFBfTUVTU0FHRV9UWVBFLkJPT0tJTkdfQ09NUExFVEVEOiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZGdldFN0b3JlLmdldFN0YXRlKCkuc2V0SXNCb29raW5nQ29tcGxldGVkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBBUFBfTUVTU0FHRV9UWVBFLlNFVF9DTElFTlRfVEhFTUU6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZURhdGEgPSBtZXNzYWdlLmRhdGEgYXMgeyBwcmltYXJ5Pzogc3RyaW5nIH07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsaWVudFRoZW1lID0gbWVzc2FnZURhdGEucHJpbWFyeTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNsaWVudFRoZW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXRTdG9yZS5nZXRTdGF0ZSgpLnNldEJhY2tncm91bmRDb2xvcihjbGllbnRUaGVtZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgQVBQX01FU1NBR0VfVFlQRS5TRVRfUFJJTUFSWV9HVUVTVF9OQU1FOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5kYXRhIGFzIHsgbmFtZTogc3RyaW5nIH07XG4gICAgICAgICAgICAgICAgICAgIHdpZGdldFN0b3JlLmdldFN0YXRlKCkuc2V0UHJpbWFyeUd1ZXN0TmFtZShtZXNzYWdlRGF0YS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgQVBQX01FU1NBR0VfVFlQRS5TRVRfREFURVM6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZURhdGEgPSBtZXNzYWdlLmRhdGEgYXMgeyBjaGVja0luPzogc3RyaW5nOyBjaGVja091dD86IHN0cmluZyB9O1xuICAgICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZURhdGEuY2hlY2tJbiAmJiBtZXNzYWdlRGF0YS5jaGVja091dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkZ2V0U3RvcmUuZ2V0U3RhdGUoKS5zZXREYXRlcyhtZXNzYWdlRGF0YS5jaGVja0luLCBtZXNzYWdlRGF0YS5jaGVja091dCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgQVBQX01FU1NBR0VfVFlQRS5TRVRfQ0FSVDoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlRGF0YSA9IG1lc3NhZ2UuZGF0YSBhcyB7IGNhcnQ6IGFueSB9O1xuICAgICAgICAgICAgICAgICAgICB3aWRnZXRTdG9yZS5nZXRTdGF0ZSgpLnNldENhcnQobWVzc2FnZURhdGEuY2FydCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlcihgV2lkZ2V0OiBmYWlsZWQgdG8gaW5pdCBUcmlwZnVzaW9uIEpTIFNESzogJHtlcnJvcn1gKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihgVHJpcGZ1c2lvbjogZmFpbGVkIHRvIGluaXQgU0RLOiAke2Vycm9yfWApO1xuICAgIH1cbn1cblxuaW5pdFRyaXBmdXNpb25TZGsoKTtcbiJdLCJuYW1lcyI6WyJfX19DU1NfTE9BREVSX0VYUE9SVF9fXyIsInB1c2giLCJtb2R1bGUiLCJpZCIsImV4cG9ydHMiLCJjc3NXaXRoTWFwcGluZ1RvU3RyaW5nIiwibGlzdCIsInRvU3RyaW5nIiwidGhpcyIsIm1hcCIsIml0ZW0iLCJjb250ZW50IiwibmVlZExheWVyIiwiY29uY2F0IiwibGVuZ3RoIiwiam9pbiIsImkiLCJtb2R1bGVzIiwibWVkaWEiLCJkZWR1cGUiLCJzdXBwb3J0cyIsImxheWVyIiwidW5kZWZpbmVkIiwiYWxyZWFkeUltcG9ydGVkTW9kdWxlcyIsImsiLCJfayIsImNzc01hcHBpbmciLCJidG9hIiwiYmFzZTY0IiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJKU09OIiwic3RyaW5naWZ5IiwiZGF0YSIsInNvdXJjZU1hcHBpbmciLCJlIiwibiIsInIiLCJzIiwidSIsImEiLCJvIiwiYyIsImYiLCJoIiwiZCIsImwiLCIkIiwieSIsIk0iLCJuYW1lIiwid2Vla2RheXMiLCJzcGxpdCIsIm1vbnRocyIsIm9yZGluYWwiLCJ0IiwibSIsIlN0cmluZyIsIkFycmF5IiwidiIsInoiLCJ1dGNPZmZzZXQiLCJNYXRoIiwiYWJzIiwiZmxvb3IiLCJkYXRlIiwieWVhciIsIm1vbnRoIiwiY2xvbmUiLCJhZGQiLCJjZWlsIiwicCIsInciLCJEIiwibXMiLCJRIiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwiZyIsIlMiLCJfIiwiTyIsImFyZ3MiLCJhcmd1bWVudHMiLCJiIiwibG9jYWxlIiwiJEwiLCJ1dGMiLCIkdSIsIngiLCIkeCIsIiRvZmZzZXQiLCJwYXJzZSIsInByb3RvdHlwZSIsIiRkIiwiRGF0ZSIsIk5hTiIsInRlc3QiLCJtYXRjaCIsInN1YnN0cmluZyIsIlVUQyIsImluaXQiLCIkeSIsImdldEZ1bGxZZWFyIiwiJE0iLCJnZXRNb250aCIsIiREIiwiZ2V0RGF0ZSIsIiRXIiwiZ2V0RGF5IiwiJEgiLCJnZXRIb3VycyIsIiRtIiwiZ2V0TWludXRlcyIsIiRzIiwiZ2V0U2Vjb25kcyIsIiRtcyIsImdldE1pbGxpc2Vjb25kcyIsIiR1dGlscyIsImlzVmFsaWQiLCJpc1NhbWUiLCJzdGFydE9mIiwiZW5kT2YiLCJpc0FmdGVyIiwiaXNCZWZvcmUiLCIkZyIsInNldCIsInVuaXgiLCJ2YWx1ZU9mIiwiZ2V0VGltZSIsInRvRGF0ZSIsImFwcGx5Iiwic2xpY2UiLCIkbG9jYWxlIiwid2Vla1N0YXJ0IiwiJHNldCIsIm1pbiIsImRheXNJbk1vbnRoIiwiZ2V0IiwiTnVtYmVyIiwicm91bmQiLCJzdWJ0cmFjdCIsImZvcm1hdCIsImludmFsaWREYXRlIiwibWVyaWRpZW0iLCJtb250aHNTaG9ydCIsIndlZWtkYXlzTWluIiwid2Vla2RheXNTaG9ydCIsImdldFRpbWV6b25lT2Zmc2V0IiwiZGlmZiIsInRvSlNPTiIsInRvSVNPU3RyaW5nIiwidG9VVENTdHJpbmciLCJmb3JFYWNoIiwiZXh0ZW5kIiwiJGkiLCJpc0RheWpzIiwiZW4iLCJMcyIsInN0eWxlc0luRE9NIiwiZ2V0SW5kZXhCeUlkZW50aWZpZXIiLCJpZGVudGlmaWVyIiwicmVzdWx0IiwibW9kdWxlc1RvRG9tIiwib3B0aW9ucyIsImlkQ291bnRNYXAiLCJpZGVudGlmaWVycyIsImJhc2UiLCJjb3VudCIsImluZGV4QnlJZGVudGlmaWVyIiwib2JqIiwiY3NzIiwic291cmNlTWFwIiwicmVmZXJlbmNlcyIsInVwZGF0ZXIiLCJhZGRFbGVtZW50U3R5bGUiLCJieUluZGV4Iiwic3BsaWNlIiwiYXBpIiwiZG9tQVBJIiwidXBkYXRlIiwibmV3T2JqIiwicmVtb3ZlIiwibGFzdElkZW50aWZpZXJzIiwibmV3TGlzdCIsImluZGV4IiwibmV3TGFzdElkZW50aWZpZXJzIiwiX2kiLCJfaW5kZXgiLCJtZW1vIiwiaW5zZXJ0Iiwic3R5bGUiLCJ0YXJnZXQiLCJzdHlsZVRhcmdldCIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsIndpbmRvdyIsIkhUTUxJRnJhbWVFbGVtZW50IiwiY29udGVudERvY3VtZW50IiwiaGVhZCIsImdldFRhcmdldCIsIkVycm9yIiwiYXBwZW5kQ2hpbGQiLCJlbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZXMiLCJhdHRyaWJ1dGVzIiwic3R5bGVFbGVtZW50Iiwibm9uY2UiLCJzZXRBdHRyaWJ1dGUiLCJpbnNlcnRTdHlsZUVsZW1lbnQiLCJzdHlsZVRhZ1RyYW5zZm9ybSIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInJlbW92ZVN0eWxlRWxlbWVudCIsInN0eWxlU2hlZXQiLCJjc3NUZXh0IiwiZmlyc3RDaGlsZCIsImNyZWF0ZVRleHROb2RlIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsImNhbGwiLCJnZXR0ZXIiLCJfX2VzTW9kdWxlIiwiZGVmaW5pdGlvbiIsImtleSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsInByb3AiLCJoYXNPd25Qcm9wZXJ0eSIsIm5jIiwiVFJJUEZVU0lPTl9CQVNFX1VSTCIsIldJREdFVF9JRCIsIldJREdFVF9JTk5FUl9XUkFQUEVSX0lEIiwiV0lER0VUX0hFQURFUl9JRCIsIldJREdFVF9XUkFQUEVSX0lEIiwiV0lER0VUX0lGUkFNRV9JRCIsIlJFU1VNRV9QQU5FTF9JRCIsIkxPQURFUl9JRCIsIkJPT0tJTkdfTU9ERSIsImNyZWF0ZUpTT05TdG9yYWdlIiwiZ2V0U3RvcmFnZSIsInN0b3JhZ2UiLCJnZXRJdGVtIiwiX2EiLCJzdHIyIiwicmV2aXZlciIsInN0ciIsIlByb21pc2UiLCJ0aGVuIiwic2V0SXRlbSIsIm5ld1ZhbHVlIiwicmVwbGFjZXIiLCJyZW1vdmVJdGVtIiwidG9UaGVuYWJsZSIsImZuIiwiaW5wdXQiLCJvbkZ1bGZpbGxlZCIsIl9vblJlamVjdGVkIiwiX29uRnVsZmlsbGVkIiwiY2F0Y2giLCJvblJlamVjdGVkIiwicGVyc2lzdCIsImNvbmZpZyIsImJhc2VPcHRpb25zIiwibG9jYWxTdG9yYWdlIiwicGFydGlhbGl6ZSIsInN0YXRlIiwidmVyc2lvbiIsIm1lcmdlIiwicGVyc2lzdGVkU3RhdGUiLCJjdXJyZW50U3RhdGUiLCJoYXNIeWRyYXRlZCIsImh5ZHJhdGlvbkxpc3RlbmVycyIsIlNldCIsImZpbmlzaEh5ZHJhdGlvbkxpc3RlbmVycyIsImNvbnNvbGUiLCJ3YXJuIiwic2F2ZWRTZXRTdGF0ZSIsInNldFN0YXRlIiwiY29uZmlnUmVzdWx0Iiwic3RhdGVGcm9tU3RvcmFnZSIsImdldEluaXRpYWxTdGF0ZSIsImh5ZHJhdGUiLCJfYiIsImNiIiwiX2EyIiwicG9zdFJlaHlkcmF0aW9uQ2FsbGJhY2siLCJvblJlaHlkcmF0ZVN0b3JhZ2UiLCJiaW5kIiwiZGVzZXJpYWxpemVkU3RvcmFnZVZhbHVlIiwibWlncmF0ZSIsImVycm9yIiwibWlncmF0aW9uUmVzdWx0IiwibWlncmF0ZWQiLCJtaWdyYXRlZFN0YXRlIiwic2V0T3B0aW9ucyIsIm5ld09wdGlvbnMiLCJjbGVhclN0b3JhZ2UiLCJnZXRPcHRpb25zIiwicmVoeWRyYXRlIiwib25IeWRyYXRlIiwiZGVsZXRlIiwib25GaW5pc2hIeWRyYXRpb24iLCJza2lwSHlkcmF0aW9uIiwiY3JlYXRlU3RvcmVJbXBsIiwiY3JlYXRlU3RhdGUiLCJsaXN0ZW5lcnMiLCJwYXJ0aWFsIiwibmV4dFN0YXRlIiwiaXMiLCJwcmV2aW91c1N0YXRlIiwiYXNzaWduIiwibGlzdGVuZXIiLCJnZXRTdGF0ZSIsImluaXRpYWxTdGF0ZSIsInN1YnNjcmliZSIsImNyZWF0ZVN0b3JlIiwiaW5pdGlhbFdpZGdldFN0YXRlIiwiaXNPcGVuIiwiaXNSZXN1bWVQYW5lbFZpc2libGUiLCJpc1JlYWR5IiwiaXNCb29raW5nQ29tcGxldGVkIiwiYmFja2dyb3VuZENvbG9yIiwicHJpbWFyeUd1ZXN0TmFtZSIsImNoZWNrSW5EYXRlIiwiY2hlY2tPdXREYXRlIiwiY2FydCIsIndpZGdldFN0b3JlIiwic2hvd1dpZGdldCIsImhpZGVXaWRnZXQiLCJzaG93UmVzdW1lUGFuZWwiLCJoaWRlUmVzdW1lUGFuZWwiLCJzZXRJc1JlYWR5Iiwic2V0SXNCb29raW5nQ29tcGxldGVkIiwic2V0QmFja2dyb3VuZENvbG9yIiwic2V0UHJpbWFyeUd1ZXN0TmFtZSIsInNldENhcnQiLCJzZXREYXRlcyIsInJlc2V0Iiwic2Vzc2lvblN0b3JhZ2UiLCJmcm9tRW50cmllcyIsImVudHJpZXMiLCJmaWx0ZXIiLCJpbmNsdWRlcyIsImdldERlZmF1bHRQYXJhbXMiLCJqc1Nka1NyYyIsImdldEVsZW1lbnRCeUlkIiwiZ2V0QXR0cmlidXRlIiwidXJsUGFyYW1zIiwiZ2V0UGFyYW1zRnJvbVVybCIsIlVSTFNlYXJjaFBhcmFtcyIsImluZGV4T2YiLCJjbGllbnQiLCJwcm9wZXJ0eUlkIiwidXJsU2VhcmNoUGFyYW1zIiwiYXZhaWxhYmxlU2VhcmNoUGFyYW1zTWFwIiwidHJpcGZ1c2lvbiIsInByb3BlcnR5aWQiLCJtb2RlIiwib2ZmZXJpZCIsImJvb2tpbmdpZCIsImNoZWNraW4iLCJjaGVja291dCIsImFkdWx0cyIsImNoaWxkcmVuIiwiZnJvbSIsInJlZHVjZSIsInByZXYiLCJzZWFyY2hQYXJhbUtleSIsInNlYXJjaFBhcmFtVmFsdWUiLCJsb2dnZXIiLCJtZXNzYWdlIiwidHlwZSIsInVybCIsInBheWxvYWQiLCJwYWdlIiwibG9jYXRpb24iLCJocmVmIiwiaGVhZGVycyIsImZldGNoIiwibWV0aG9kIiwiYm9keSIsInJlc3BvbnNlIiwianNvbiIsImxvZyIsImhpZGVXaWRnZXREb20iLCIkd2lkZ2V0IiwiJHdpZGdldFdyYXBwZXIiLCJvdmVyZmxvdyIsImJhY2tncm91bmQiLCJkaXNwbGF5IiwiekluZGV4IiwiaW5qZWN0SWZyYW1lIiwiYm9va2luZ0lkIiwicmVzdCIsIiRpbm5lcldyYXBwZXIiLCIkd2lkZ2V0SWZyYW1lIiwiYWRkaXRpb25hbFBhcmFtcyIsInZhbHVlIiwibG9ja1BhZ2VTY3JvbGwiLCJjaGVja0luIiwiY2hlY2tPdXQiLCJvZmZlcklkIiwiZ2xvYmFsU3RvcmUiLCJpc0l0ZXJhYmxlIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJib29rIiwicHJvcHMiLCJib29raW5nU3RhdGUiLCJvYmpBIiwib2JqQiIsIml0ZXJhdG9yQSIsIml0ZXJhdG9yQiIsIm5leHRBIiwibmV4dCIsIm5leHRCIiwiaXNBcnJheSIsIml0ZXJhYmxlQSIsIml0ZXJhYmxlQiIsIm1hcEEiLCJNYXAiLCJtYXBCIiwic2l6ZSIsImNvbXBhcmVNYXBMaWtlIiwiZG9uZSIsImtleXNBIiwia2V5cyIsImtleUEiLCJoYXNPd24iLCJzaGFsbG93IiwibG9jYWxzIiwibmV3U3RhdGUiLCJjZW50cyIsIiRsb2FkaW5nRGl2IiwiJHJlc3VtZVBhbmVsIiwiaGVhZGVyVGV4dCIsInN1YmhlYWRlclRleHQiLCJmb290ZXJQYXJ0cyIsInRvdGFsIiwicm9vbXMiLCJyb29tQ291bnQiLCJndWVzdENvdW50IiwiYWNjIiwicm9vbSIsInBhc3NlbmdlcnMiLCJJbnRsIiwiTnVtYmVyRm9ybWF0IiwiY3VycmVuY3kiLCJmb290ZXJUZXh0IiwiaW5uZXJIVE1MIiwicmVuZGVyUmVzdW1lUGFuZWwiLCIkcmVzdW1lUGFuZWxXcmFwcGVyIiwiJHdpZGdldEhlYWRlciIsInNldFdpZGdldFRoZW1lIiwiaGVpZ2h0Iiwic2V0VGltZW91dCIsImZvY3VzIiwic2hvd1dpZGdldERvbSIsImRpc3BsYXlMb2FkaW5nT3ZlcmxheSIsInNldEludGVydmFsIiwicmVhZHlTdGF0ZSIsIiR3aWRnZXRJbm5lcldyYXBwZXIiLCIkd2lkZ2V0SGVhZGVyVGl0bGUiLCIkd2lkZ2V0Q2xvc2VCdXR0b24iLCJhZGRFdmVudExpc3RlbmVyIiwiZXZlbnQiLCJwcmVwYXJlRG9tIiwiaGFuZGxlTGlua0NsaWNrIiwidGFnTmFtZSIsImxpbmtIcmVmIiwicHJldmVudERlZmF1bHQiLCJhZ2UiLCJxdWVyeVNlbGVjdG9yQWxsIiwibGlua0VsZW1lbnQiLCJhZGRMaW5rRXZlbnRMaXN0ZW5lcnMiLCJjbGVhckludGVydmFsIiwib25Mb2FkSGFuZGxlciIsInNlYXJjaCIsImFkZFBhZ2VMb2FkTGlzdGVuZXIiLCJjbG9zZVdpZGdldCIsIm9ubWVzc2FnZSIsImNsaWVudFRoZW1lIiwibWVzc2FnZURhdGEiLCJwcmltYXJ5IiwiaW5pdFRyaXBmdXNpb25TZGsiXSwic291cmNlUm9vdCI6IiJ9
|