var koalafiSdk;koalafiSdk=(()=>{var e={16:(e,t,n)=>{var r=n(15),i=n(645)(r);i.push([e.id,"/* \n    Shared modal stylings\n*/\n#koalafi-modal {\n  position: fixed;\n  z-index: 2000;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  overflow: auto;\n  background-color: rgba(0, 0, 0, 0.5);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-direction: row;\n}\n\n#koalafi-modal-content.show {\n  top: 0;\n  opacity: 1;\n}\n\n#koalafi-iframe {\n  flex-grow: 1;\n  border: none;\n  margin: 0;\n  padding: 0;\n}\n\n#koalafi-iframe-wrapper {\n  display: flex;\n  width: 100%;\n  height: 100%;\n  flex-direction: column;\n  overflow: hidden;\n}\n\n/* \n    Long Form Modal\n*/\n\n#koalafi-modal-content {\n  background-color: #fefefe;\n  margin: auto;\n  z-index: 2001;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  width: 100%;\n  height: 100%;\n  border-radius: 0.3rem;\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  opacity: 0;\n  transition: top 0.3s, opacity 0.3s;\n}\n\n#koalafi-modal-header {\n  text-align: center;\n  padding: 5px;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  position: relative;\n}\n\n#koalafi-modal-close-button {\n  right: 8px;\n  line-height: 20px;\n  position: absolute;\n  color: #000;\n  font-size: 28px;\n  font-weight: bold;\n}\n\n#koalafi-modal-close-button:hover,\n#koalafi-modal-close-button:focus {\n  color: #2aa5de;\n  text-decoration: none;\n  cursor: pointer;\n}\n\n#koalafi-modal-header-logo {\n  width: 200px;\n}\n\n/* \n    Short Form Modal\n*/\n\n#koalafi-modal-content {\n  background-color: #fefefe;\n  margin: auto;\n  z-index: 2001;\n  width: 100%;\n  height: 100%;\n  border-radius: 0.3rem;\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  opacity: 0;\n  transition: top 0.3s, opacity 0.3s;\n}\n\n#koalafi-modal-x-button-container {\n  height: 42px;\n  width: 42px;\n  background: white;\n  border-radius: 50%;\n  position: absolute;\n  top: 10px;\n  right: 10px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n#koalafi-modal-close-button:hover {\n  cursor: pointer;\n}\n\n/* \n    Media Queries\n*/\n\n@media only screen and (min-width: 768px) {\n  #koalafi-modal-content {\n    width: 640px;\n    height: 800px;\n  }\n}\n","",{version:3,sources:["webpack://./src/features/modal/modal.css"],names:[],mappings:"AAAA;;CAEC;AACD;EACE,eAAe;EACf,aAAa;EACb,OAAO;EACP,MAAM;EACN,WAAW;EACX,YAAY;EACZ,cAAc;EACd,oCAAoC;EACpC,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,mBAAmB;AACrB;;AAEA;EACE,MAAM;EACN,UAAU;AACZ;;AAEA;EACE,YAAY;EACZ,YAAY;EACZ,SAAS;EACT,UAAU;AACZ;;AAEA;EACE,aAAa;EACb,WAAW;EACX,YAAY;EACZ,sBAAsB;EACtB,gBAAgB;AAClB;;AAEA;;CAEC;;AAED;EACE,yBAAyB;EACzB,YAAY;EACZ,aAAa;EACb,oCAAoC;EACpC,WAAW;EACX,YAAY;EACZ,qBAAqB;EACrB,kBAAkB;EAClB,aAAa;EACb,sBAAsB;EACtB,UAAU;EACV,kCAAkC;AACpC;;AAEA;EACE,kBAAkB;EAClB,YAAY;EACZ,aAAa;EACb,uBAAuB;EACvB,mBAAmB;EACnB,kBAAkB;AACpB;;AAEA;EACE,UAAU;EACV,iBAAiB;EACjB,kBAAkB;EAClB,WAAW;EACX,eAAe;EACf,iBAAiB;AACnB;;AAEA;;EAEE,cAAc;EACd,qBAAqB;EACrB,eAAe;AACjB;;AAEA;EACE,YAAY;AACd;;AAEA;;CAEC;;AAED;EACE,yBAAyB;EACzB,YAAY;EACZ,aAAa;EACb,WAAW;EACX,YAAY;EACZ,qBAAqB;EACrB,kBAAkB;EAClB,aAAa;EACb,sBAAsB;EACtB,UAAU;EACV,kCAAkC;AACpC;;AAEA;EACE,YAAY;EACZ,WAAW;EACX,iBAAiB;EACjB,kBAAkB;EAClB,kBAAkB;EAClB,SAAS;EACT,WAAW;EACX,aAAa;EACb,mBAAmB;EACnB,uBAAuB;AACzB;;AAEA;EACE,eAAe;AACjB;;AAEA;;CAEC;;AAED;EACE;IACE,YAAY;IACZ,aAAa;EACf;AACF",sourcesContent:["/* \n    Shared modal stylings\n*/\n#koalafi-modal {\n  position: fixed;\n  z-index: 2000;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  overflow: auto;\n  background-color: rgba(0, 0, 0, 0.5);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-direction: row;\n}\n\n#koalafi-modal-content.show {\n  top: 0;\n  opacity: 1;\n}\n\n#koalafi-iframe {\n  flex-grow: 1;\n  border: none;\n  margin: 0;\n  padding: 0;\n}\n\n#koalafi-iframe-wrapper {\n  display: flex;\n  width: 100%;\n  height: 100%;\n  flex-direction: column;\n  overflow: hidden;\n}\n\n/* \n    Long Form Modal\n*/\n\n#koalafi-modal-content {\n  background-color: #fefefe;\n  margin: auto;\n  z-index: 2001;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  width: 100%;\n  height: 100%;\n  border-radius: 0.3rem;\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  opacity: 0;\n  transition: top 0.3s, opacity 0.3s;\n}\n\n#koalafi-modal-header {\n  text-align: center;\n  padding: 5px;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  position: relative;\n}\n\n#koalafi-modal-close-button {\n  right: 8px;\n  line-height: 20px;\n  position: absolute;\n  color: #000;\n  font-size: 28px;\n  font-weight: bold;\n}\n\n#koalafi-modal-close-button:hover,\n#koalafi-modal-close-button:focus {\n  color: #2aa5de;\n  text-decoration: none;\n  cursor: pointer;\n}\n\n#koalafi-modal-header-logo {\n  width: 200px;\n}\n\n/* \n    Short Form Modal\n*/\n\n#koalafi-modal-content {\n  background-color: #fefefe;\n  margin: auto;\n  z-index: 2001;\n  width: 100%;\n  height: 100%;\n  border-radius: 0.3rem;\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  opacity: 0;\n  transition: top 0.3s, opacity 0.3s;\n}\n\n#koalafi-modal-x-button-container {\n  height: 42px;\n  width: 42px;\n  background: white;\n  border-radius: 50%;\n  position: absolute;\n  top: 10px;\n  right: 10px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n#koalafi-modal-close-button:hover {\n  cursor: pointer;\n}\n\n/* \n    Media Queries\n*/\n\n@media only screen and (min-width: 768px) {\n  #koalafi-modal-content {\n    width: 640px;\n    height: 800px;\n  }\n}\n"],sourceRoot:""}]),e.exports=i},645:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=e(t);return t[2]?"@media ".concat(t[2]," {").concat(n,"}"):n})).join("")},t.i=function(e,n,r){"string"==typeof e&&(e=[[null,e,""]]);var i={};if(r)for(var o=0;o<this.length;o++){var a=this[o][0];null!=a&&(i[a]=!0)}for(var s=0;s<e.length;s++){var u=[].concat(e[s]);r&&i[u[0]]||(n&&(u[2]?u[2]="".concat(n," and ").concat(u[2]):u[2]=n),t.push(u))}},t}},15:e=>{"use strict";function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}e.exports=function(e){var n,r,i=(r=4,function(e){if(Array.isArray(e))return e}(n=e)||function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],r=!0,i=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{r||null==s.return||s.return()}finally{if(i)throw o}}return n}}(n,r)||function(e,n){if(e){if("string"==typeof e)return t(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?t(e,n):void 0}}(n,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=i[1],a=i[3];if("function"==typeof btoa){var s=btoa(unescape(encodeURIComponent(JSON.stringify(a)))),u="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(s),c="/*# ".concat(u," */"),l=a.sources.map((function(e){return"/*# sourceURL=".concat(a.sourceRoot||"").concat(e," */")}));return[o].concat(l).concat([c]).join("\n")}return[o].join("\n")}},445:e=>{"use strict";e.exports=function(e){var t=e.uri,n=e.name,r=e.type;this.uri=t,this.name=n,this.type=r}},804:(e,t,n)=>{"use strict";var r=n(268);e.exports=function e(t,n,i){var o;void 0===n&&(n=""),void 0===i&&(i=r);var a=new Map;function s(e,t){var n=a.get(t);n?n.push.apply(n,e):a.set(t,e)}if(i(t))o=null,s([n],t);else{var u=n?n+".":"";if("undefined"!=typeof FileList&&t instanceof FileList)o=Array.prototype.map.call(t,(function(e,t){return s([""+u+t],e),null}));else if(Array.isArray(t))o=t.map((function(t,n){var r=e(t,""+u+n,i);return r.files.forEach(s),r.clone}));else if(t&&t.constructor===Object)for(var c in o={},t){var l=e(t[c],""+u+c,i);l.files.forEach(s),o[c]=l.clone}else o=t}return{clone:o,files:a}}},823:(e,t,n)=>{"use strict";t.ReactNativeFile=n(445),t.extractFiles=n(804),t.isExtractableFile=n(268)},268:(e,t,n)=>{"use strict";var r=n(445);e.exports=function(e){return"undefined"!=typeof File&&e instanceof File||"undefined"!=typeof Blob&&e instanceof Blob||e instanceof r}},458:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=n(823),o=r(n(45)),a=function(e){return i.isExtractableFile(e)||null!==e&&"object"==typeof e&&"function"==typeof e.pipe};t.default=function(e,t){var n=i.extractFiles({query:e,variables:t},"",a),r=n.clone,s=n.files;if(0===s.size)return JSON.stringify(r);var u=new("undefined"==typeof FormData?o.default:FormData);u.append("operations",JSON.stringify(r));var c={},l=0;return s.forEach((function(e){c[++l]=e})),u.append("map",JSON.stringify(c)),l=0,s.forEach((function(e,t){u.append(""+ ++l,t)})),u}},687:function(e,t,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},i=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return o(t,e),t},s=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{u(r.next(e))}catch(e){o(e)}}function s(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((r=r.apply(e,t||[])).next())}))},u=this&&this.__generator||function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!((i=(i=a.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){a.label=o[1];break}if(6===o[0]&&a.label<i[1]){a.label=i[1],i=o;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(o);break}i[2]&&a.ops.pop(),a.trys.pop();continue}o=t.call(e,a)}catch(e){o=[6,e],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,s])}}},c=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]])}return n},l=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.gql=t.request=t.rawRequest=t.GraphQLClient=t.ClientError=void 0;var f=a(n(581)),d=f,p=n(33),h=l(n(458)),y=n(308),v=n(308);Object.defineProperty(t,"ClientError",{enumerable:!0,get:function(){return v.ClientError}});var A=function(e){var t={};return e&&("undefined"!=typeof Headers&&e instanceof Headers||e instanceof d.Headers?t=function(e){var t={};return e.forEach((function(e,n){t[n]=e})),t}(e):Array.isArray(e)?e.forEach((function(e){var n=e[0],r=e[1];t[n]=r})):t=e),t},m=function(){function e(e,t){this.url=e,this.options=t||{}}return e.prototype.rawRequest=function(e,t,n){return s(this,void 0,void 0,(function(){var i,o,a,s,l,d,p,v,m,b,E;return u(this,(function(u){switch(u.label){case 0:return i=this.options,o=i.headers,a=i.fetch,s=void 0===a?f.default:a,l=c(i,["headers","fetch"]),d=h.default(e,t),[4,s(this.url,r({method:"POST",headers:r(r(r({},"string"==typeof d?{"Content-Type":"application/json"}:{}),A(o)),A(n)),body:d},l))];case 1:return[4,g(p=u.sent())];case 2:if(v=u.sent(),p.ok&&!v.errors&&v.data)return m=p.headers,b=p.status,[2,r(r({},v),{headers:m,status:b})];throw E="string"==typeof v?{error:v}:v,new y.ClientError(r(r({},E),{status:p.status,headers:p.headers}),{query:e,variables:t})}}))}))},e.prototype.request=function(e,t,n){return s(this,void 0,void 0,(function(){var i,o,a,s,l,d,v,m,b,E;return u(this,(function(u){switch(u.label){case 0:return i=this.options,o=i.headers,a=i.fetch,s=void 0===a?f.default:a,l=c(i,["headers","fetch"]),d=function(e){return"string"==typeof e?e:p.print(e)}(e),v=h.default(d,t),[4,s(this.url,r({method:"POST",headers:r(r(r({},"string"==typeof v?{"Content-Type":"application/json"}:{}),A(o)),A(n)),body:v},l))];case 1:return[4,g(m=u.sent())];case 2:if(b=u.sent(),m.ok&&!b.errors&&b.data)return[2,b.data];throw E="string"==typeof b?{error:b}:b,new y.ClientError(r(r({},E),{status:m.status}),{query:d,variables:t})}}))}))},e.prototype.setHeaders=function(e){return this.options.headers=e,this},e.prototype.setHeader=function(e,t){var n,r=this.options.headers;return r?r[e]=t:this.options.headers=((n={})[e]=t,n),this},e}();function b(e,t,n){return s(this,void 0,void 0,(function(){return u(this,(function(r){return[2,new m(e).request(t,n)]}))}))}function g(e){var t=e.headers.get("Content-Type");return t&&t.startsWith("application/json")?e.json():e.text()}t.GraphQLClient=m,t.rawRequest=function(e,t,n){return s(this,void 0,void 0,(function(){return u(this,(function(r){return[2,new m(e).rawRequest(t,n)]}))}))},t.request=b,t.default=b,t.gql=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return e.reduce((function(e,n,r){return""+e+n+(r in t?t[r]:"")}),"")}},308:function(e,t){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.ClientError=void 0;var i=function(e){function t(n,r){var i=this,o=t.extractMessage(n)+": "+JSON.stringify({response:n,request:r});return i=e.call(this,o)||this,Object.setPrototypeOf(i,t.prototype),i.response=n,i.request=r,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(i,t),i}return r(t,e),t.extractMessage=function(e){try{return e.errors[0].message}catch(t){return"GraphQL Error (Code: "+e.status+")"}},t}(Error);t.ClientError=i},581:function(e,t){var n=function(e){function t(){this.fetch=!1,this.DOMException=e.DOMException}return t.prototype=e,new t}("undefined"!=typeof self?self:this);!function(e){!function(t){var n="URLSearchParams"in e,r="Symbol"in e&&"iterator"in Symbol,i="FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),o="FormData"in e,a="ArrayBuffer"in e;if(a)var s=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],u=ArrayBuffer.isView||function(e){return e&&s.indexOf(Object.prototype.toString.call(e))>-1};function c(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function l(e){return"string"!=typeof e&&(e=String(e)),e}function f(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return r&&(t[Symbol.iterator]=function(){return t}),t}function d(e){this.map={},e instanceof d?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function p(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function h(e){return new Promise((function(t,n){e.onload=function(){t(e.result)},e.onerror=function(){n(e.error)}}))}function y(e){var t=new FileReader,n=h(t);return t.readAsArrayBuffer(e),n}function v(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function A(){return this.bodyUsed=!1,this._initBody=function(e){var t;this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:i&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:o&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:n&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():a&&i&&(t=e)&&DataView.prototype.isPrototypeOf(t)?(this._bodyArrayBuffer=v(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):a&&(ArrayBuffer.prototype.isPrototypeOf(e)||u(e))?this._bodyArrayBuffer=v(e):this._bodyText=e=Object.prototype.toString.call(e):this._bodyText="",this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):n&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},i&&(this.blob=function(){var e=p(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?p(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(y)}),this.text=function(){var e,t,n,r=p(this);if(r)return r;if(this._bodyBlob)return e=this._bodyBlob,n=h(t=new FileReader),t.readAsText(e),n;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),n=new Array(t.length),r=0;r<t.length;r++)n[r]=String.fromCharCode(t[r]);return n.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},o&&(this.formData=function(){return this.text().then(g)}),this.json=function(){return this.text().then(JSON.parse)},this}d.prototype.append=function(e,t){e=c(e),t=l(t);var n=this.map[e];this.map[e]=n?n+", "+t:t},d.prototype.delete=function(e){delete this.map[c(e)]},d.prototype.get=function(e){return e=c(e),this.has(e)?this.map[e]:null},d.prototype.has=function(e){return this.map.hasOwnProperty(c(e))},d.prototype.set=function(e,t){this.map[c(e)]=l(t)},d.prototype.forEach=function(e,t){for(var n in this.map)this.map.hasOwnProperty(n)&&e.call(t,this.map[n],n,this)},d.prototype.keys=function(){var e=[];return this.forEach((function(t,n){e.push(n)})),f(e)},d.prototype.values=function(){var e=[];return this.forEach((function(t){e.push(t)})),f(e)},d.prototype.entries=function(){var e=[];return this.forEach((function(t,n){e.push([n,t])})),f(e)},r&&(d.prototype[Symbol.iterator]=d.prototype.entries);var m=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];function b(e,t){var n,r,i=(t=t||{}).body;if(e instanceof b){if(e.bodyUsed)throw new TypeError("Already read");this.url=e.url,this.credentials=e.credentials,t.headers||(this.headers=new d(e.headers)),this.method=e.method,this.mode=e.mode,this.signal=e.signal,i||null==e._bodyInit||(i=e._bodyInit,e.bodyUsed=!0)}else this.url=String(e);if(this.credentials=t.credentials||this.credentials||"same-origin",!t.headers&&this.headers||(this.headers=new d(t.headers)),this.method=(r=(n=t.method||this.method||"GET").toUpperCase(),m.indexOf(r)>-1?r:n),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&i)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(i)}function g(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var n=e.split("="),r=n.shift().replace(/\+/g," "),i=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(r),decodeURIComponent(i))}})),t}function E(e,t){t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new d(t.headers),this.url=t.url||"",this._initBody(e)}b.prototype.clone=function(){return new b(this,{body:this._bodyInit})},A.call(b.prototype),A.call(E.prototype),E.prototype.clone=function(){return new E(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new d(this.headers),url:this.url})},E.error=function(){var e=new E(null,{status:0,statusText:""});return e.type="error",e};var w=[301,302,303,307,308];E.redirect=function(e,t){if(-1===w.indexOf(t))throw new RangeError("Invalid status code");return new E(null,{status:t,headers:{location:e}})},t.DOMException=e.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(e,t){this.message=e,this.name=t;var n=Error(e);this.stack=n.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function x(e,n){return new Promise((function(r,o){var a=new b(e,n);if(a.signal&&a.signal.aborted)return o(new t.DOMException("Aborted","AbortError"));var s=new XMLHttpRequest;function u(){s.abort()}s.onload=function(){var e,t,n={status:s.status,statusText:s.statusText,headers:(e=s.getAllResponseHeaders()||"",t=new d,e.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(e){var n=e.split(":"),r=n.shift().trim();if(r){var i=n.join(":").trim();t.append(r,i)}})),t)};n.url="responseURL"in s?s.responseURL:n.headers.get("X-Request-URL");var i="response"in s?s.response:s.responseText;r(new E(i,n))},s.onerror=function(){o(new TypeError("Network request failed"))},s.ontimeout=function(){o(new TypeError("Network request failed"))},s.onabort=function(){o(new t.DOMException("Aborted","AbortError"))},s.open(a.method,a.url,!0),"include"===a.credentials?s.withCredentials=!0:"omit"===a.credentials&&(s.withCredentials=!1),"responseType"in s&&i&&(s.responseType="blob"),a.headers.forEach((function(e,t){s.setRequestHeader(t,e)})),a.signal&&(a.signal.addEventListener("abort",u),s.onreadystatechange=function(){4===s.readyState&&a.signal.removeEventListener("abort",u)}),s.send(void 0===a._bodyInit?null:a._bodyInit)}))}x.polyfill=!0,e.fetch||(e.fetch=x,e.Headers=d,e.Request=b,e.Response=E),t.Headers=d,t.Request=b,t.Response=E,t.fetch=x}({})}(n),delete n.fetch.polyfill,(t=n.fetch).default=n.fetch,t.fetch=n.fetch,t.Headers=n.Headers,t.Request=n.Request,t.Response=n.Response,e.exports=t},45:e=>{e.exports="object"==typeof self?self.FormData:window.FormData},972:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.prototype.toJSON;"function"==typeof t||(0,r.default)(0),e.prototype.inspect=t,i.default&&(e.prototype[i.default]=t)};var r=o(n(706)),i=o(n(554));function o(e){return e&&e.__esModule?e:{default:e}}},2:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return a(e,[])};var r,i=(r=n(554))&&r.__esModule?r:{default:r};function o(e){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function a(e,t){switch(o(e)){case"string":return JSON.stringify(e);case"function":return e.name?"[function ".concat(e.name,"]"):"[function]";case"object":return null===e?"null":function(e,t){if(-1!==t.indexOf(e))return"[Circular]";var n=[].concat(t,[e]),r=function(e){var t=e[String(i.default)];return"function"==typeof t?t:"function"==typeof e.inspect?e.inspect:void 0}(e);if(void 0!==r){var o=r.call(e);if(o!==e)return"string"==typeof o?o:a(o,n)}else if(Array.isArray(e))return function(e,t){if(0===e.length)return"[]";if(t.length>2)return"[Array]";for(var n=Math.min(10,e.length),r=e.length-n,i=[],o=0;o<n;++o)i.push(a(e[o],t));return 1===r?i.push("... 1 more item"):r>1&&i.push("... ".concat(r," more items")),"["+i.join(", ")+"]"}(e,n);return function(e,t){var n=Object.keys(e);return 0===n.length?"{}":t.length>2?"["+function(e){var t=Object.prototype.toString.call(e).replace(/^\[object /,"").replace(/]$/,"");if("Object"===t&&"function"==typeof e.constructor){var n=e.constructor.name;if("string"==typeof n&&""!==n)return n}return t}(e)+"]":"{ "+n.map((function(n){return n+": "+a(e[n],t)})).join(", ")+" }"}(e,n)}(e,t);default:return String(e)}}},706:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(!Boolean(e))throw new Error(null!=t?t:"Unexpected invariant triggered.")}},554:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):void 0;t.default=n},807:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isNode=function(e){return null!=e&&"string"==typeof e.kind},t.Token=t.Location=void 0;var r,i=(r=n(972))&&r.__esModule?r:{default:r},o=function(){function e(e,t,n){this.start=e.start,this.end=t.end,this.startToken=e,this.endToken=t,this.source=n}return e.prototype.toJSON=function(){return{start:this.start,end:this.end}},e}();t.Location=o,(0,i.default)(o);var a=function(){function e(e,t,n,r,i,o,a){this.kind=e,this.start=t,this.end=n,this.line=r,this.column=i,this.value=a,this.prev=o,this.next=null}return e.prototype.toJSON=function(){return{kind:this.kind,value:this.value,line:this.line,column:this.column}},e}();t.Token=a,(0,i.default)(a)},849:(e,t)=>{"use strict";function n(e){for(var t=0;t<e.length;++t)if(" "!==e[t]&&"\t"!==e[t])return!1;return!0}function r(e){for(var t,n=!0,r=!0,i=0,o=null,a=0;a<e.length;++a)switch(e.charCodeAt(a)){case 13:10===e.charCodeAt(a+1)&&++a;case 10:n=!1,r=!0,i=0;break;case 9:case 32:++i;break;default:r&&!n&&(null===o||i<o)&&(o=i),r=!1}return null!==(t=o)&&void 0!==t?t:0}Object.defineProperty(t,"__esModule",{value:!0}),t.dedentBlockStringValue=function(e){var t=e.split(/\r\n|[\n\r]/g),i=r(e);if(0!==i)for(var o=1;o<t.length;o++)t[o]=t[o].slice(i);for(var a=0;a<t.length&&n(t[a]);)++a;for(var s=t.length;s>a&&n(t[s-1]);)--s;return t.slice(a,s).join("\n")},t.getBlockStringIndentation=r,t.printBlockString=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=-1===e.indexOf("\n"),i=" "===e[0]||"\t"===e[0],o='"'===e[e.length-1],a="\\"===e[e.length-1],s=!r||o||a||n,u="";return!s||r&&i||(u+="\n"+t),u+=t?e.replace(/\n/g,"\n"+t):e,s&&(u+="\n"),'"""'+u.replace(/"""/g,'\\"""')+'"""'}},33:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.print=function(e){return(0,r.visit)(e,{leave:o})};var r=n(285),i=n(849),o={Name:function(e){return e.value},Variable:function(e){return"$"+e.name},Document:function(e){return s(e.definitions,"\n\n")+"\n"},OperationDefinition:function(e){var t=e.operation,n=e.name,r=c("(",s(e.variableDefinitions,", "),")"),i=s(e.directives," "),o=e.selectionSet;return n||i||r||"query"!==t?s([t,s([n,r]),i,o]," "):o},VariableDefinition:function(e){var t=e.variable,n=e.type,r=e.defaultValue,i=e.directives;return t+": "+n+c(" = ",r)+c(" ",s(i," "))},SelectionSet:function(e){return u(e.selections)},Field:function(e){var t=e.alias,n=e.name,r=e.arguments,i=e.directives,o=e.selectionSet,a=c("",t,": ")+n,u=a+c("(",s(r,", "),")");return u.length>80&&(u=a+c("(\n",l(s(r,"\n")),"\n)")),s([u,s(i," "),o]," ")},Argument:function(e){return e.name+": "+e.value},FragmentSpread:function(e){return"..."+e.name+c(" ",s(e.directives," "))},InlineFragment:function(e){var t=e.typeCondition,n=e.directives,r=e.selectionSet;return s(["...",c("on ",t),s(n," "),r]," ")},FragmentDefinition:function(e){var t=e.name,n=e.typeCondition,r=e.variableDefinitions,i=e.directives,o=e.selectionSet;return"fragment ".concat(t).concat(c("(",s(r,", "),")")," ")+"on ".concat(n," ").concat(c("",s(i," ")," "))+o},IntValue:function(e){return e.value},FloatValue:function(e){return e.value},StringValue:function(e,t){var n=e.value;return e.block?(0,i.printBlockString)(n,"description"===t?"":"  "):JSON.stringify(n)},BooleanValue:function(e){return e.value?"true":"false"},NullValue:function(){return"null"},EnumValue:function(e){return e.value},ListValue:function(e){return"["+s(e.values,", ")+"]"},ObjectValue:function(e){return"{"+s(e.fields,", ")+"}"},ObjectField:function(e){return e.name+": "+e.value},Directive:function(e){return"@"+e.name+c("(",s(e.arguments,", "),")")},NamedType:function(e){return e.name},ListType:function(e){return"["+e.type+"]"},NonNullType:function(e){return e.type+"!"},SchemaDefinition:a((function(e){var t=e.directives,n=e.operationTypes;return s(["schema",s(t," "),u(n)]," ")})),OperationTypeDefinition:function(e){return e.operation+": "+e.type},ScalarTypeDefinition:a((function(e){return s(["scalar",e.name,s(e.directives," ")]," ")})),ObjectTypeDefinition:a((function(e){var t=e.name,n=e.interfaces,r=e.directives,i=e.fields;return s(["type",t,c("implements ",s(n," & ")),s(r," "),u(i)]," ")})),FieldDefinition:a((function(e){var t=e.name,n=e.arguments,r=e.type,i=e.directives;return t+(d(n)?c("(\n",l(s(n,"\n")),"\n)"):c("(",s(n,", "),")"))+": "+r+c(" ",s(i," "))})),InputValueDefinition:a((function(e){var t=e.name,n=e.type,r=e.defaultValue,i=e.directives;return s([t+": "+n,c("= ",r),s(i," ")]," ")})),InterfaceTypeDefinition:a((function(e){var t=e.name,n=e.interfaces,r=e.directives,i=e.fields;return s(["interface",t,c("implements ",s(n," & ")),s(r," "),u(i)]," ")})),UnionTypeDefinition:a((function(e){var t=e.name,n=e.directives,r=e.types;return s(["union",t,s(n," "),r&&0!==r.length?"= "+s(r," | "):""]," ")})),EnumTypeDefinition:a((function(e){var t=e.name,n=e.directives,r=e.values;return s(["enum",t,s(n," "),u(r)]," ")})),EnumValueDefinition:a((function(e){return s([e.name,s(e.directives," ")]," ")})),InputObjectTypeDefinition:a((function(e){var t=e.name,n=e.directives,r=e.fields;return s(["input",t,s(n," "),u(r)]," ")})),DirectiveDefinition:a((function(e){var t=e.name,n=e.arguments,r=e.repeatable,i=e.locations;return"directive @"+t+(d(n)?c("(\n",l(s(n,"\n")),"\n)"):c("(",s(n,", "),")"))+(r?" repeatable":"")+" on "+s(i," | ")})),SchemaExtension:function(e){var t=e.directives,n=e.operationTypes;return s(["extend schema",s(t," "),u(n)]," ")},ScalarTypeExtension:function(e){return s(["extend scalar",e.name,s(e.directives," ")]," ")},ObjectTypeExtension:function(e){var t=e.name,n=e.interfaces,r=e.directives,i=e.fields;return s(["extend type",t,c("implements ",s(n," & ")),s(r," "),u(i)]," ")},InterfaceTypeExtension:function(e){var t=e.name,n=e.interfaces,r=e.directives,i=e.fields;return s(["extend interface",t,c("implements ",s(n," & ")),s(r," "),u(i)]," ")},UnionTypeExtension:function(e){var t=e.name,n=e.directives,r=e.types;return s(["extend union",t,s(n," "),r&&0!==r.length?"= "+s(r," | "):""]," ")},EnumTypeExtension:function(e){var t=e.name,n=e.directives,r=e.values;return s(["extend enum",t,s(n," "),u(r)]," ")},InputObjectTypeExtension:function(e){var t=e.name,n=e.directives,r=e.fields;return s(["extend input",t,s(n," "),u(r)]," ")}};function a(e){return function(t){return s([t.description,e(t)],"\n")}}function s(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return null!==(t=null==e?void 0:e.filter((function(e){return e})).join(n))&&void 0!==t?t:""}function u(e){return c("{\n",l(s(e,"\n")),"\n}")}function c(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return null!=t&&""!==t?e+t+n:""}function l(e){return c("  ",e.replace(/\n/g,"\n  "))}function f(e){return-1!==e.indexOf("\n")}function d(e){return null!=e&&e.some(f)}},285:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.visit=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:a,r=void 0,c=Array.isArray(e),l=[e],f=-1,d=[],p=void 0,h=void 0,y=void 0,v=[],A=[],m=e;do{var b=++f===l.length,g=b&&0!==d.length;if(b){if(h=0===A.length?void 0:v[v.length-1],p=y,y=A.pop(),g){if(c)p=p.slice();else{for(var E={},w=0,x=Object.keys(p);w<x.length;w++){var C=x[w];E[C]=p[C]}p=E}for(var B=0,O=0;O<d.length;O++){var k=d[O][0],S=d[O][1];c&&(k-=B),c&&null===S?(p.splice(k,1),B++):p[k]=S}}f=r.index,l=r.keys,d=r.edits,c=r.inArray,r=r.prev}else{if(h=y?c?f:l[f]:void 0,null==(p=y?y[h]:m))continue;y&&v.push(h)}var _,j=void 0;if(!Array.isArray(p)){if(!(0,o.isNode)(p))throw new Error("Invalid AST Node: ".concat((0,i.default)(p),"."));var T=u(t,p.kind,b);if(T){if((j=T.call(t,p,h,y,v,A))===s)break;if(!1===j){if(!b){v.pop();continue}}else if(void 0!==j&&(d.push([h,j]),!b)){if(!(0,o.isNode)(j)){v.pop();continue}p=j}}}void 0===j&&g&&d.push([h,p]),b?v.pop():(r={inArray:c,index:f,keys:l,edits:d,prev:r},l=(c=Array.isArray(p))?p:null!==(_=n[p.kind])&&void 0!==_?_:[],f=-1,d=[],y&&A.push(y),y=p)}while(void 0!==r);return 0!==d.length&&(m=d[d.length-1][1]),m},t.visitInParallel=function(e){var t=new Array(e.length);return{enter:function(n){for(var r=0;r<e.length;r++)if(null==t[r]){var i=u(e[r],n.kind,!1);if(i){var o=i.apply(e[r],arguments);if(!1===o)t[r]=n;else if(o===s)t[r]=s;else if(void 0!==o)return o}}},leave:function(n){for(var r=0;r<e.length;r++)if(null==t[r]){var i=u(e[r],n.kind,!0);if(i){var o=i.apply(e[r],arguments);if(o===s)t[r]=s;else if(void 0!==o&&!1!==o)return o}}else t[r]===n&&(t[r]=null)}}},t.getVisitFn=u,t.BREAK=t.QueryDocumentKeys=void 0;var r,i=(r=n(2))&&r.__esModule?r:{default:r},o=n(807),a={Name:[],Document:["definitions"],OperationDefinition:["name","variableDefinitions","directives","selectionSet"],VariableDefinition:["variable","type","defaultValue","directives"],Variable:["name"],SelectionSet:["selections"],Field:["alias","name","arguments","directives","selectionSet"],Argument:["name","value"],FragmentSpread:["name","directives"],InlineFragment:["typeCondition","directives","selectionSet"],FragmentDefinition:["name","variableDefinitions","typeCondition","directives","selectionSet"],IntValue:[],FloatValue:[],StringValue:[],BooleanValue:[],NullValue:[],EnumValue:[],ListValue:["values"],ObjectValue:["fields"],ObjectField:["name","value"],Directive:["name","arguments"],NamedType:["name"],ListType:["type"],NonNullType:["type"],SchemaDefinition:["description","directives","operationTypes"],OperationTypeDefinition:["type"],ScalarTypeDefinition:["description","name","directives"],ObjectTypeDefinition:["description","name","interfaces","directives","fields"],FieldDefinition:["description","name","arguments","type","directives"],InputValueDefinition:["description","name","type","defaultValue","directives"],InterfaceTypeDefinition:["description","name","interfaces","directives","fields"],UnionTypeDefinition:["description","name","directives","types"],EnumTypeDefinition:["description","name","directives","values"],EnumValueDefinition:["description","name","directives"],InputObjectTypeDefinition:["description","name","directives","fields"],DirectiveDefinition:["description","name","arguments","locations"],SchemaExtension:["directives","operationTypes"],ScalarTypeExtension:["name","directives"],ObjectTypeExtension:["name","interfaces","directives","fields"],InterfaceTypeExtension:["name","interfaces","directives","fields"],UnionTypeExtension:["name","directives","types"],EnumTypeExtension:["name","directives","values"],InputObjectTypeExtension:["name","directives","fields"]};t.QueryDocumentKeys=a;var s=Object.freeze({});function u(e,t,n){var r=e[t];if(r){if(!n&&"function"==typeof r)return r;var i=n?r.leave:r.enter;if("function"==typeof i)return i}else{var o=n?e.leave:e.enter;if(o){if("function"==typeof o)return o;var a=o[t];if("function"==typeof a)return a}}}t.BREAK=s},387:(e,t,n)=>{var r='<div id="koalafi-modal"> <div id="koalafi-modal-content"> <div id="koalafi-iframe-wrapper"> <div id="koalafi-modal-x-button-container"> <img id="koalafi-modal-close-button" src="'+n(91)(n(898))+'"/> </div> <iframe id="koalafi-iframe" frameborder="0" src="${kfiUrl}${queryParams}"></iframe> </div> </div> </div> ';e.exports=r},91:e=>{"use strict";e.exports=function(e,t){return t||(t={}),"string"!=typeof(e=e&&e.__esModule?e.default:e)?e:(t.hash&&(e+=t.hash),t.maybeNeedQuotes&&/[\t\n\f\r "'=<>`]/.test(e)?'"'.concat(e,'"'):e)}},397:(e,t,n)=>{var r=n(16);e.exports="string"==typeof r?r:r.toString()},68:(e,t,n)=>{var r=n(387);e.exports="string"==typeof r?r:r.toString()},49:(e,t,n)=>{"use strict";n.r(t),n.d(t,{edgeService:()=>u,openModal:()=>d});var r=n(687),i=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{u(r.next(e))}catch(e){o(e)}}function s(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}u((r=r.apply(e,t||[])).next())}))};let o;const a=r.gql`
  mutation createOrder($orderInput: NewOrder!) {
    createOrder(input: $orderInput) {
      orderId
      orderErrors {
        __typename
        ... on FatalError {
          message
        }
        ... on BadRequest {
          message
        }
      }
    }
  }
`,s=r.gql`
  query order($id: ID!) {
    order(id: $id) {
      metadata {
        formType
      }
    }
  }
`,u={fetchOrder:e=>i(void 0,void 0,void 0,(function*(){return o||(o=new r.GraphQLClient("https://application-edge-service.koalafi.com/query")),o.request(s,{id:e})})),createOrder:(e,t)=>i(void 0,void 0,void 0,(function*(){return o||(o=new r.GraphQLClient("https://application-edge-service.koalafi.com/query")),o.setHeader("public-dealer-id",e),o.request(a,{orderInput:t})}))};const c=n(68),l=n(397),f=(e,t)=>{document.getElementById(t).classList.remove("show"),setTimeout((function(){e.style.display="none"}),200),document.body.style.overflow="visible"},d=e=>{return t=void 0,n=void 0,i=function*(){let t,n;if("object"==typeof e?({orderId:t,pdi:n}=e):"string"==typeof e&&(t=e),!t&&!n)throw new Error("openModal(): arguments not passed in correctly.");const r="https://epply.koalafi.com",i="koalafi-modal-content",o=((e,t,n)=>{let r;switch(!0){case!!n.orderId&&!!n.pdi:r=`?orderId=${n.orderId}&pdi=${n.pdi}`;break;case!!n.orderId&&!n.pdi:r=`?orderId=${n.orderId}`;break;case!!n.pdi&&!n.orderId:r=`?pdi=${n.pdi}`;break;default:throw new Error("openModal(): invalid args")}return e.replace("${kfiUrl}","https://epply.koalafi.com").replace("${queryParams}",r)})(c,0,{orderId:t,pdi:n});try{((e,t)=>{if(!document.getElementById(e)){const n=document.createElement("style");n.id=e,n.innerHTML=t,document.getElementsByTagName("head")[0].appendChild(n)}})("koalafi-css",l),((e,t,n)=>{if(!document.getElementById(t)){const e=document.createElement("div");e.id=t,document.body.appendChild(e)}document.body.style.overflow="hidden",document.getElementById(t).insertAdjacentHTML("afterend",e),setTimeout((function(){console.log(n,"modalcontentid"),document.getElementById(n).classList.add("show")}),4)})(o,"koalafi-div",i)}catch(e){console.error("Inserting CSS/HTML: ",e)}const a=document.getElementById("koalafi-modal"),s=document.getElementById("koalafi-modal-close-button");let u,d;return document.onclick=function(e){var n;if(e.target==s){const e=document.getElementById("koalafi-iframe");null===(n=null==e?void 0:e.contentWindow)||void 0===n||n.postMessage("Closed modal with X button",r),f(a,i),d({orderId:t,reason:"closed modal with X button"})}},window.addEventListener("message",(function(e){if(e.origin!==r)return;const t=JSON.parse(e.data);t.wcfSuccess?u(t.payload):!1===t.wcfSuccess&&d(t.payload),t.closeModal&&f(a,i)}),!1),new Promise(((e,t)=>{u=e,d=t}))},new((r=void 0)||(r=Promise))((function(e,o){function a(e){try{u(i.next(e))}catch(e){o(e)}}function s(e){try{u(i.throw(e))}catch(e){o(e)}}function u(t){var n;t.done?e(t.value):(n=t.value,n instanceof r?n:new r((function(e){e(n)}))).then(a,s)}u((i=i.apply(t,n||[])).next())}));var t,n,r,i}},898:(e,t,n)=>{"use strict";e.exports=n.p+"047d98d757705f3b1263.png"}},t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={id:r,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.exports}return n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;n.g.importScripts&&(e=n.g.location+"");var t=n.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");r.length&&(e=r[r.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=e})(),n(49)})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9rb2FsYWZpU2RrLy4vc3JjL2ZlYXR1cmVzL21vZGFsL21vZGFsLmNzcyIsIndlYnBhY2s6Ly9rb2FsYWZpU2RrLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qcyIsIndlYnBhY2s6Ly9rb2FsYWZpU2RrLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8va29hbGFmaVNkay8uL25vZGVfbW9kdWxlcy9leHRyYWN0LWZpbGVzL3B1YmxpYy9SZWFjdE5hdGl2ZUZpbGUuanMiLCJ3ZWJwYWNrOi8va29hbGFmaVNkay8uL25vZGVfbW9kdWxlcy9leHRyYWN0LWZpbGVzL3B1YmxpYy9leHRyYWN0RmlsZXMuanMiLCJ3ZWJwYWNrOi8va29hbGFmaVNkay8uL25vZGVfbW9kdWxlcy9leHRyYWN0LWZpbGVzL3B1YmxpYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9rb2FsYWZpU2RrLy4vbm9kZV9tb2R1bGVzL2V4dHJhY3QtZmlsZXMvcHVibGljL2lzRXh0cmFjdGFibGVGaWxlLmpzIiwid2VicGFjazovL2tvYWxhZmlTZGsvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC1yZXF1ZXN0L2Rpc3QvY3JlYXRlUmVxdWVzdEJvZHkuanMiLCJ3ZWJwYWNrOi8va29hbGFmaVNkay8uL25vZGVfbW9kdWxlcy9ncmFwaHFsLXJlcXVlc3QvZGlzdC9pbmRleC5qcyIsIndlYnBhY2s6Ly9rb2FsYWZpU2RrLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwtcmVxdWVzdC9kaXN0L3R5cGVzLmpzIiwid2VicGFjazovL2tvYWxhZmlTZGsvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC1yZXF1ZXN0L25vZGVfbW9kdWxlcy9jcm9zcy1mZXRjaC9kaXN0L2Jyb3dzZXItcG9ueWZpbGwuanMiLCJ3ZWJwYWNrOi8va29hbGFmaVNkay8uL25vZGVfbW9kdWxlcy9ncmFwaHFsLXJlcXVlc3Qvbm9kZV9tb2R1bGVzL2Zvcm0tZGF0YS9saWIvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9rb2FsYWZpU2RrLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9kZWZpbmVJbnNwZWN0LmpzIiwid2VicGFjazovL2tvYWxhZmlTZGsvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL2luc3BlY3QuanMiLCJ3ZWJwYWNrOi8va29hbGFmaVNkay8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvaW52YXJpYW50LmpzIiwid2VicGFjazovL2tvYWxhZmlTZGsvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL25vZGVqc0N1c3RvbUluc3BlY3RTeW1ib2wuanMiLCJ3ZWJwYWNrOi8va29hbGFmaVNkay8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL2xhbmd1YWdlL2FzdC5qcyIsIndlYnBhY2s6Ly9rb2FsYWZpU2RrLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvYmxvY2tTdHJpbmcuanMiLCJ3ZWJwYWNrOi8va29hbGFmaVNkay8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL2xhbmd1YWdlL3ByaW50ZXIuanMiLCJ3ZWJwYWNrOi8va29hbGFmaVNkay8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL2xhbmd1YWdlL3Zpc2l0b3IuanMiLCJ3ZWJwYWNrOi8va29hbGFmaVNkay8uL3NyYy9mZWF0dXJlcy9tb2RhbC9tb2RhbC1zaG9ydC1mb3JtLmh0bWwiLCJ3ZWJwYWNrOi8va29hbGFmaVNkay8uL25vZGVfbW9kdWxlcy9odG1sLWxvYWRlci9kaXN0L3J1bnRpbWUvZ2V0VXJsLmpzIiwid2VicGFjazovL2tvYWxhZmlTZGsvLi9zcmMvZmVhdHVyZXMvbW9kYWwvbW9kYWwuY3NzP2QzYzEiLCJ3ZWJwYWNrOi8va29hbGFmaVNkay8uL3NyYy9mZWF0dXJlcy9tb2RhbC9tb2RhbC1zaG9ydC1mb3JtLmh0bWw/OTUyMSIsIndlYnBhY2s6Ly9rb2FsYWZpU2RrLy4vc3JjL3NlcnZpY2VzL2VkZ2Uuc2VydmljZS50cyIsIndlYnBhY2s6Ly9rb2FsYWZpU2RrLy4vc3JjL2ZlYXR1cmVzL21vZGFsL21vZGFsLnRzIiwid2VicGFjazovL2tvYWxhZmlTZGsvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8va29hbGFmaVNkay93ZWJwYWNrL3N0YXJ0dXAiLCJ3ZWJwYWNrOi8va29hbGFmaVNkay93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8va29hbGFmaVNkay93ZWJwYWNrL3J1bnRpbWUvZ2xvYmFsIiwid2VicGFjazovL2tvYWxhZmlTZGsvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9rb2FsYWZpU2RrL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8va29hbGFmaVNkay93ZWJwYWNrL3J1bnRpbWUvcHVibGljUGF0aCJdLCJuYW1lcyI6WyJfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIiwiX19fQ1NTX0xPQURFUl9FWFBPUlRfX18iLCJfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18iLCJwdXNoIiwibW9kdWxlIiwiaWQiLCJleHBvcnRzIiwiY3NzV2l0aE1hcHBpbmdUb1N0cmluZyIsImxpc3QiLCJ0b1N0cmluZyIsInRoaXMiLCJtYXAiLCJpdGVtIiwiY29udGVudCIsImNvbmNhdCIsImpvaW4iLCJpIiwibW9kdWxlcyIsIm1lZGlhUXVlcnkiLCJkZWR1cGUiLCJhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzIiwibGVuZ3RoIiwiX2kiLCJfYXJyYXlMaWtlVG9BcnJheSIsImFyciIsImxlbiIsImFycjIiLCJBcnJheSIsIl9pdGVtIiwiaXNBcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiT2JqZWN0IiwiX2FyciIsIl9uIiwiX2QiLCJfZSIsInVuZGVmaW5lZCIsIl9zIiwibmV4dCIsImRvbmUiLCJ2YWx1ZSIsImVyciIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIm8iLCJtaW5MZW4iLCJuIiwicHJvdG90eXBlIiwiY2FsbCIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJUeXBlRXJyb3IiLCJfbm9uSXRlcmFibGVSZXN0IiwiY3NzTWFwcGluZyIsImJ0b2EiLCJiYXNlNjQiLCJ1bmVzY2FwZSIsImVuY29kZVVSSUNvbXBvbmVudCIsIkpTT04iLCJzdHJpbmdpZnkiLCJkYXRhIiwic291cmNlTWFwcGluZyIsInNvdXJjZVVSTHMiLCJzb3VyY2VzIiwic291cmNlIiwic291cmNlUm9vdCIsIl9yZWYiLCJ1cmkiLCJ0eXBlIiwiZGVmYXVsdElzRXh0cmFjdGFibGVGaWxlIiwiZXh0cmFjdEZpbGVzIiwicGF0aCIsImlzRXh0cmFjdGFibGVGaWxlIiwiY2xvbmUiLCJmaWxlcyIsIk1hcCIsImFkZEZpbGUiLCJwYXRocyIsImZpbGUiLCJzdG9yZWRQYXRocyIsImdldCIsImFwcGx5Iiwic2V0IiwicHJlZml4IiwiRmlsZUxpc3QiLCJjaGlsZCIsInJlc3VsdCIsImZvckVhY2giLCJSZWFjdE5hdGl2ZUZpbGUiLCJGaWxlIiwiQmxvYiIsIl9faW1wb3J0RGVmYXVsdCIsIm1vZCIsIl9fZXNNb2R1bGUiLCJkZWZpbmVQcm9wZXJ0eSIsImV4dHJhY3RfZmlsZXNfMSIsImZvcm1fZGF0YV8xIiwiaXNFeHRyYWN0YWJsZUZpbGVFbmhhbmNlZCIsInBpcGUiLCJkZWZhdWx0IiwicXVlcnkiLCJ2YXJpYWJsZXMiLCJfYSIsInNpemUiLCJmb3JtIiwiRm9ybURhdGEiLCJhcHBlbmQiLCJfX2Fzc2lnbiIsImFzc2lnbiIsInQiLCJzIiwiYXJndW1lbnRzIiwicCIsImhhc093blByb3BlcnR5IiwiX19jcmVhdGVCaW5kaW5nIiwiY3JlYXRlIiwibSIsImsiLCJrMiIsImVudW1lcmFibGUiLCJfX3NldE1vZHVsZURlZmF1bHQiLCJ2IiwiX19pbXBvcnRTdGFyIiwiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwiZSIsInJlamVjdGVkIiwidGhlbiIsIl9fZ2VuZXJhdG9yIiwiYm9keSIsImYiLCJ5IiwiZyIsIl8iLCJsYWJlbCIsInNlbnQiLCJ0cnlzIiwib3BzIiwidmVyYiIsIm9wIiwicG9wIiwiX19yZXN0IiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiZ3FsIiwicmVxdWVzdCIsInJhd1JlcXVlc3QiLCJHcmFwaFFMQ2xpZW50IiwiQ2xpZW50RXJyb3IiLCJjcm9zc19mZXRjaF8xIiwiQ3Jvc3NGZXRjaCIsInByaW50ZXJfMSIsImNyZWF0ZVJlcXVlc3RCb2R5XzEiLCJ0eXBlc18xIiwidHlwZXNfMiIsInJlc29sdmVIZWFkZXJzIiwiaGVhZGVycyIsIm9IZWFkZXJzIiwiSGVhZGVycyIsIkhlYWRlcnNJbnN0YW5jZVRvUGxhaW5PYmplY3QiLCJ1cmwiLCJvcHRpb25zIiwicmVxdWVzdEhlYWRlcnMiLCJfYiIsImxvY2FsRmV0Y2giLCJvdGhlcnMiLCJyZXNwb25zZSIsImhlYWRlcnNfMSIsInN0YXR1c18xIiwiZXJyb3JSZXN1bHQiLCJfYyIsImZldGNoIiwibWV0aG9kIiwiZ2V0UmVzdWx0Iiwib2siLCJlcnJvcnMiLCJzdGF0dXMiLCJlcnJvciIsImRvY3VtZW50IiwicmVzb2x2ZWREb2MiLCJwcmludCIsInJlc29sdmVSZXF1ZXN0RG9jdW1lbnQiLCJzZXRIZWFkZXJzIiwic2V0SGVhZGVyIiwia2V5IiwiY29udGVudFR5cGUiLCJzdGFydHNXaXRoIiwianNvbiIsInRleHQiLCJjaHVua3MiLCJyZWR1Y2UiLCJhY2N1bXVsYXRvciIsImNodW5rIiwiaW5kZXgiLCJleHRlbmRTdGF0aWNzIiwiX19leHRlbmRzIiwiZCIsImIiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsIl9fIiwiX3N1cGVyIiwiX3RoaXMiLCJtZXNzYWdlIiwiZXh0cmFjdE1lc3NhZ2UiLCJFcnJvciIsImNhcHR1cmVTdGFja1RyYWNlIiwiX19zZWxmX18iLCJyb290IiwiRiIsIkRPTUV4Y2VwdGlvbiIsInNlbGYiLCJzdXBwb3J0Iiwidmlld0NsYXNzZXMiLCJpc0FycmF5QnVmZmVyVmlldyIsIkFycmF5QnVmZmVyIiwiaXNWaWV3Iiwib2JqIiwibm9ybWFsaXplTmFtZSIsIlN0cmluZyIsInRvTG93ZXJDYXNlIiwibm9ybWFsaXplVmFsdWUiLCJpdGVyYXRvckZvciIsIml0ZW1zIiwic2hpZnQiLCJoZWFkZXIiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiY29uc3VtZWQiLCJib2R5VXNlZCIsImZpbGVSZWFkZXJSZWFkeSIsInJlYWRlciIsIm9ubG9hZCIsIm9uZXJyb3IiLCJyZWFkQmxvYkFzQXJyYXlCdWZmZXIiLCJibG9iIiwiRmlsZVJlYWRlciIsInByb21pc2UiLCJyZWFkQXNBcnJheUJ1ZmZlciIsImJ1ZmZlckNsb25lIiwiYnVmIiwidmlldyIsIlVpbnQ4QXJyYXkiLCJieXRlTGVuZ3RoIiwiYnVmZmVyIiwiQm9keSIsIl9pbml0Qm9keSIsIl9ib2R5SW5pdCIsIl9ib2R5VGV4dCIsImlzUHJvdG90eXBlT2YiLCJfYm9keUJsb2IiLCJfYm9keUZvcm1EYXRhIiwiVVJMU2VhcmNoUGFyYW1zIiwiRGF0YVZpZXciLCJfYm9keUFycmF5QnVmZmVyIiwiYXJyYXlCdWZmZXIiLCJyZWFkQXNUZXh0IiwiY2hhcnMiLCJmcm9tQ2hhckNvZGUiLCJyZWFkQXJyYXlCdWZmZXJBc1RleHQiLCJmb3JtRGF0YSIsImRlY29kZSIsInBhcnNlIiwib2xkVmFsdWUiLCJoYXMiLCJjYWxsYmFjayIsImtleXMiLCJ2YWx1ZXMiLCJlbnRyaWVzIiwibWV0aG9kcyIsIlJlcXVlc3QiLCJpbnB1dCIsInVwY2FzZWQiLCJjcmVkZW50aWFscyIsIm1vZGUiLCJzaWduYWwiLCJ0b1VwcGVyQ2FzZSIsInJlZmVycmVyIiwidHJpbSIsInNwbGl0IiwiYnl0ZXMiLCJyZXBsYWNlIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiUmVzcG9uc2UiLCJib2R5SW5pdCIsInN0YXR1c1RleHQiLCJyZWRpcmVjdFN0YXR1c2VzIiwicmVkaXJlY3QiLCJSYW5nZUVycm9yIiwibG9jYXRpb24iLCJzdGFjayIsImluaXQiLCJhYm9ydGVkIiwieGhyIiwiWE1MSHR0cFJlcXVlc3QiLCJhYm9ydFhociIsImFib3J0IiwicmF3SGVhZGVycyIsImdldEFsbFJlc3BvbnNlSGVhZGVycyIsImxpbmUiLCJwYXJ0cyIsInJlc3BvbnNlVVJMIiwicmVzcG9uc2VUZXh0Iiwib250aW1lb3V0Iiwib25hYm9ydCIsIm9wZW4iLCJ3aXRoQ3JlZGVudGlhbHMiLCJyZXNwb25zZVR5cGUiLCJzZXRSZXF1ZXN0SGVhZGVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2VuZCIsInBvbHlmaWxsIiwid2luZG93IiwiY2xhc3NPYmplY3QiLCJmbiIsInRvSlNPTiIsIl9pbnZhcmlhbnQiLCJpbnNwZWN0IiwiX25vZGVqc0N1c3RvbUluc3BlY3RTeW1ib2wiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiZm9ybWF0VmFsdWUiLCJfdHlwZW9mIiwic2VlblZhbHVlcyIsInByZXZpb3VzbHlTZWVuVmFsdWVzIiwiY3VzdG9tSW5zcGVjdEZuIiwib2JqZWN0IiwiZ2V0Q3VzdG9tRm4iLCJjdXN0b21WYWx1ZSIsImFycmF5IiwiTWF0aCIsIm1pbiIsInJlbWFpbmluZyIsImZvcm1hdEFycmF5IiwidGFnIiwiZ2V0T2JqZWN0VGFnIiwiZm9ybWF0T2JqZWN0IiwiZm9ybWF0T2JqZWN0VmFsdWUiLCJjb25kaXRpb24iLCJCb29sZWFuIiwiX2RlZmF1bHQiLCJmb3IiLCJpc05vZGUiLCJtYXliZU5vZGUiLCJraW5kIiwiVG9rZW4iLCJMb2NhdGlvbiIsIl9kZWZpbmVJbnNwZWN0Iiwic3RhcnRUb2tlbiIsImVuZFRva2VuIiwic3RhcnQiLCJlbmQiLCJjb2x1bW4iLCJwcmV2IiwiaXNCbGFuayIsInN0ciIsImdldEJsb2NrU3RyaW5nSW5kZW50YXRpb24iLCJfY29tbW9uSW5kZW50IiwiaXNGaXJzdExpbmUiLCJpc0VtcHR5TGluZSIsImluZGVudCIsImNvbW1vbkluZGVudCIsImNoYXJDb2RlQXQiLCJkZWRlbnRCbG9ja1N0cmluZ1ZhbHVlIiwicmF3U3RyaW5nIiwibGluZXMiLCJzdGFydExpbmUiLCJlbmRMaW5lIiwicHJpbnRCbG9ja1N0cmluZyIsImluZGVudGF0aW9uIiwicHJlZmVyTXVsdGlwbGVMaW5lcyIsImlzU2luZ2xlTGluZSIsImhhc0xlYWRpbmdTcGFjZSIsImhhc1RyYWlsaW5nUXVvdGUiLCJoYXNUcmFpbGluZ1NsYXNoIiwicHJpbnRBc011bHRpcGxlTGluZXMiLCJhc3QiLCJfdmlzaXRvciIsInZpc2l0IiwibGVhdmUiLCJwcmludERvY0FTVFJlZHVjZXIiLCJfYmxvY2tTdHJpbmciLCJOYW1lIiwibm9kZSIsIlZhcmlhYmxlIiwiRG9jdW1lbnQiLCJkZWZpbml0aW9ucyIsIk9wZXJhdGlvbkRlZmluaXRpb24iLCJvcGVyYXRpb24iLCJ2YXJEZWZzIiwid3JhcCIsInZhcmlhYmxlRGVmaW5pdGlvbnMiLCJkaXJlY3RpdmVzIiwic2VsZWN0aW9uU2V0IiwiVmFyaWFibGVEZWZpbml0aW9uIiwidmFyaWFibGUiLCJkZWZhdWx0VmFsdWUiLCJTZWxlY3Rpb25TZXQiLCJfcmVmMiIsImJsb2NrIiwic2VsZWN0aW9ucyIsIkZpZWxkIiwiX3JlZjMiLCJhbGlhcyIsImFyZ3MiLCJhcmdzTGluZSIsIkFyZ3VtZW50IiwiX3JlZjQiLCJGcmFnbWVudFNwcmVhZCIsIl9yZWY1IiwiSW5saW5lRnJhZ21lbnQiLCJfcmVmNiIsInR5cGVDb25kaXRpb24iLCJGcmFnbWVudERlZmluaXRpb24iLCJfcmVmNyIsIkludFZhbHVlIiwiX3JlZjgiLCJGbG9hdFZhbHVlIiwiX3JlZjkiLCJTdHJpbmdWYWx1ZSIsIl9yZWYxMCIsIkJvb2xlYW5WYWx1ZSIsIl9yZWYxMSIsIk51bGxWYWx1ZSIsIkVudW1WYWx1ZSIsIl9yZWYxMiIsIkxpc3RWYWx1ZSIsIl9yZWYxMyIsIk9iamVjdFZhbHVlIiwiX3JlZjE0IiwiZmllbGRzIiwiT2JqZWN0RmllbGQiLCJfcmVmMTUiLCJEaXJlY3RpdmUiLCJfcmVmMTYiLCJOYW1lZFR5cGUiLCJfcmVmMTciLCJMaXN0VHlwZSIsIl9yZWYxOCIsIk5vbk51bGxUeXBlIiwiX3JlZjE5IiwiU2NoZW1hRGVmaW5pdGlvbiIsImFkZERlc2NyaXB0aW9uIiwiX3JlZjIwIiwib3BlcmF0aW9uVHlwZXMiLCJPcGVyYXRpb25UeXBlRGVmaW5pdGlvbiIsIl9yZWYyMSIsIlNjYWxhclR5cGVEZWZpbml0aW9uIiwiX3JlZjIyIiwiT2JqZWN0VHlwZURlZmluaXRpb24iLCJfcmVmMjMiLCJpbnRlcmZhY2VzIiwiRmllbGREZWZpbml0aW9uIiwiX3JlZjI0IiwiaGFzTXVsdGlsaW5lSXRlbXMiLCJJbnB1dFZhbHVlRGVmaW5pdGlvbiIsIl9yZWYyNSIsIkludGVyZmFjZVR5cGVEZWZpbml0aW9uIiwiX3JlZjI2IiwiVW5pb25UeXBlRGVmaW5pdGlvbiIsIl9yZWYyNyIsInR5cGVzIiwiRW51bVR5cGVEZWZpbml0aW9uIiwiX3JlZjI4IiwiRW51bVZhbHVlRGVmaW5pdGlvbiIsIl9yZWYyOSIsIklucHV0T2JqZWN0VHlwZURlZmluaXRpb24iLCJfcmVmMzAiLCJEaXJlY3RpdmVEZWZpbml0aW9uIiwiX3JlZjMxIiwicmVwZWF0YWJsZSIsImxvY2F0aW9ucyIsIlNjaGVtYUV4dGVuc2lvbiIsIl9yZWYzMiIsIlNjYWxhclR5cGVFeHRlbnNpb24iLCJfcmVmMzMiLCJPYmplY3RUeXBlRXh0ZW5zaW9uIiwiX3JlZjM0IiwiSW50ZXJmYWNlVHlwZUV4dGVuc2lvbiIsIl9yZWYzNSIsIlVuaW9uVHlwZUV4dGVuc2lvbiIsIl9yZWYzNiIsIkVudW1UeXBlRXh0ZW5zaW9uIiwiX3JlZjM3IiwiSW5wdXRPYmplY3RUeXBlRXh0ZW5zaW9uIiwiX3JlZjM4IiwiY2IiLCJkZXNjcmlwdGlvbiIsIm1heWJlQXJyYXkiLCJfbWF5YmVBcnJheSRmaWx0ZXIkam8iLCJzZXBhcmF0b3IiLCJmaWx0ZXIiLCJ4IiwibWF5YmVTdHJpbmciLCJpc011bHRpbGluZSIsInNvbWUiLCJ2aXNpdG9yIiwidmlzaXRvcktleXMiLCJRdWVyeURvY3VtZW50S2V5cyIsImluQXJyYXkiLCJlZGl0cyIsInBhcmVudCIsImFuY2VzdG9ycyIsIm5ld1Jvb3QiLCJpc0xlYXZpbmciLCJpc0VkaXRlZCIsIl9pMiIsIl9PYmplY3Qka2V5czIiLCJlZGl0T2Zmc2V0IiwiaWkiLCJlZGl0S2V5IiwiZWRpdFZhbHVlIiwic3BsaWNlIiwiX3Zpc2l0b3JLZXlzJG5vZGUka2luIiwiX2FzdCIsIl9pbnNwZWN0IiwidmlzaXRGbiIsImdldFZpc2l0Rm4iLCJCUkVBSyIsInZpc2l0SW5QYXJhbGxlbCIsInZpc2l0b3JzIiwic2tpcHBpbmciLCJlbnRlciIsImZyZWV6ZSIsImtpbmRWaXNpdG9yIiwia2luZFNwZWNpZmljVmlzaXRvciIsInNwZWNpZmljVmlzaXRvciIsInNwZWNpZmljS2luZFZpc2l0b3IiLCJjb2RlIiwiX19fSFRNTF9MT0FERVJfR0VUX1NPVVJDRV9GUk9NX0lNUE9SVF9fXyIsImhhc2giLCJtYXliZU5lZWRRdW90ZXMiLCJncmFwaFFMQ2xpZW50IiwiY3JlYXRlT3JkZXJNdXRhdGlvbiIsImZldGNoT3JkZXJRdWVyeSIsImVkZ2VTZXJ2aWNlIiwiZmV0Y2hPcmRlciIsImNyZWF0ZU9yZGVyIiwicHVibGljRGVhbGVySWQiLCJvcmRlcklucHV0IiwibW9kYWxTaG9ydEh0bWwiLCJzaGFyZWRDc3MiLCJoYW5kbGVDbG9zZU1vZGFsU3R5bGluZyIsIm1vZGFsRWxlbWVudCIsIm1vZGFsQ29udGVudElkIiwiZ2V0RWxlbWVudEJ5SWQiLCJjbGFzc0xpc3QiLCJyZW1vdmUiLCJzZXRUaW1lb3V0Iiwic3R5bGUiLCJkaXNwbGF5Iiwib3ZlcmZsb3ciLCJvcGVuTW9kYWwiLCJvcmRlcklkIiwicGRpIiwiRUNPTU1fVVJMIiwiTU9EQUxfQ09OVEVOVF9JRCIsIm1vZGlmaWVkSHRtbCIsImh0bWwiLCJlY29tbVVybCIsInF1ZXJ5UGFyYW1zIiwibW9kaWZ5S2ZpSFRNTCIsImNzc1N0eWxlVGFnSWQiLCJjc3MiLCJjcmVhdGVFbGVtZW50IiwiaW5uZXJIVE1MIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJhcHBlbmRDaGlsZCIsImluc2VydE1vZGFsQ3NzIiwiZW1wdHlEaXZJZCIsImVtcHR5RGl2IiwiaW5zZXJ0QWRqYWNlbnRIVE1MIiwiY29uc29sZSIsImxvZyIsImFkZCIsImluc2VydE1vZGFsSHRtbCIsIndjTW9kYWwiLCJjbG9zZU1vZGFsQnV0dG9uIiwicHJvbWlzZVJlc29sdmUiLCJwcm9taXNlUmVqZWN0Iiwib25jbGljayIsImV2ZW50IiwidGFyZ2V0IiwiaWZyYW1lIiwiY29udGVudFdpbmRvdyIsInBvc3RNZXNzYWdlIiwicmVhc29uIiwib3JpZ2luIiwiZXZlbnREYXRhIiwid2NmU3VjY2VzcyIsInBheWxvYWQiLCJjbG9zZU1vZGFsIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsImRlZmluaXRpb24iLCJnbG9iYWxUaGlzIiwiRnVuY3Rpb24iLCJwcm9wIiwiciIsInRvU3RyaW5nVGFnIiwic2NyaXB0VXJsIiwiaW1wb3J0U2NyaXB0cyIsImN1cnJlbnRTY3JpcHQiLCJzcmMiLCJzY3JpcHRzIl0sIm1hcHBpbmdzIjoib0RBQ0EsSUFBSUEsRUFBd0MsRUFBUSxJQUVoREMsRUFEOEIsRUFBUSxJQUNaQyxDQUE0QkYsR0FFMURDLEVBQXdCRSxLQUFLLENBQUNDLEVBQU9DLEdBQUkseXFFQUEwcUUsR0FBRyxDQUFDLFFBQVUsRUFBRSxRQUFVLENBQUMs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VUFBVXNFLGVBQWVyRSxLQUFLc0wsRUFBSytYLEdDQ2xGTixFQUFvQk8sRUFBS2ptQixJQUNILG9CQUFYeUIsUUFBMEJBLE9BQU95a0IsYUFDMUN2a0IsT0FBT2tFLGVBQWU3RixFQUFTeUIsT0FBT3lrQixZQUFhLENBQUU5akIsTUFBTyxXQUU3RFQsT0FBT2tFLGVBQWU3RixFQUFTLGFBQWMsQ0FBRW9DLE9BQU8sSyxNQ0x2RCxJQUFJK2pCLEVBQ0FULEVBQW9CL2MsRUFBRXlkLGdCQUFlRCxFQUFZVCxFQUFvQi9jLEVBQUU2SixTQUFXLElBQ3RGLElBQUk5RyxFQUFXZ2EsRUFBb0IvYyxFQUFFK0MsU0FDckMsSUFBS3lhLEdBQWF6YSxJQUNiQSxFQUFTMmEsZ0JBQ1pGLEVBQVl6YSxFQUFTMmEsY0FBY0MsTUFDL0JILEdBQVcsQ0FDZixJQUFJSSxFQUFVN2EsRUFBU3FZLHFCQUFxQixVQUN6Q3dDLEVBQVF4bEIsU0FBUW9sQixFQUFZSSxFQUFRQSxFQUFReGxCLE9BQVMsR0FBR3VsQixLQUs3RCxJQUFLSCxFQUFXLE1BQU0sSUFBSTlZLE1BQU0seURBQ2hDOFksRUFBWUEsRUFBVW5VLFFBQVEsT0FBUSxJQUFJQSxRQUFRLFFBQVMsSUFBSUEsUUFBUSxZQUFhLEtBQ3BGMFQsRUFBb0IzZSxFQUFJb2YsRyxHTFpqQlQsRUFBb0IsSyIsImZpbGUiOiJrb2FsYWZpU2RrLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xudmFyIF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gPSByZXF1aXJlKFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIik7XG52YXIgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fID0gcmVxdWlyZShcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIik7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIvKiBcXG4gICAgU2hhcmVkIG1vZGFsIHN0eWxpbmdzXFxuKi9cXG4ja29hbGFmaS1tb2RhbCB7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICB6LWluZGV4OiAyMDAwO1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgb3ZlcmZsb3c6IGF1dG87XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcXG59XFxuXFxuI2tvYWxhZmktbW9kYWwtY29udGVudC5zaG93IHtcXG4gIHRvcDogMDtcXG4gIG9wYWNpdHk6IDE7XFxufVxcblxcbiNrb2FsYWZpLWlmcmFtZSB7XFxuICBmbGV4LWdyb3c6IDE7XFxuICBib3JkZXI6IG5vbmU7XFxuICBtYXJnaW46IDA7XFxuICBwYWRkaW5nOiAwO1xcbn1cXG5cXG4ja29hbGFmaS1pZnJhbWUtd3JhcHBlciB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG59XFxuXFxuLyogXFxuICAgIExvbmcgRm9ybSBNb2RhbFxcbiovXFxuXFxuI2tvYWxhZmktbW9kYWwtY29udGVudCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVmZWZlO1xcbiAgbWFyZ2luOiBhdXRvO1xcbiAgei1pbmRleDogMjAwMTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4yKTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgYm9yZGVyLXJhZGl1czogMC4zcmVtO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNpdGlvbjogdG9wIDAuM3MsIG9wYWNpdHkgMC4zcztcXG59XFxuXFxuI2tvYWxhZmktbW9kYWwtaGVhZGVyIHtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIHBhZGRpbmc6IDVweDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcblxcbiNrb2FsYWZpLW1vZGFsLWNsb3NlLWJ1dHRvbiB7XFxuICByaWdodDogOHB4O1xcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb2xvcjogIzAwMDtcXG4gIGZvbnQtc2l6ZTogMjhweDtcXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xcbn1cXG5cXG4ja29hbGFmaS1tb2RhbC1jbG9zZS1idXR0b246aG92ZXIsXFxuI2tvYWxhZmktbW9kYWwtY2xvc2UtYnV0dG9uOmZvY3VzIHtcXG4gIGNvbG9yOiAjMmFhNWRlO1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG4ja29hbGFmaS1tb2RhbC1oZWFkZXItbG9nbyB7XFxuICB3aWR0aDogMjAwcHg7XFxufVxcblxcbi8qIFxcbiAgICBTaG9ydCBGb3JtIE1vZGFsXFxuKi9cXG5cXG4ja29hbGFmaS1tb2RhbC1jb250ZW50IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZWZlZmU7XFxuICBtYXJnaW46IGF1dG87XFxuICB6LWluZGV4OiAyMDAxO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBib3JkZXItcmFkaXVzOiAwLjNyZW07XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIG9wYWNpdHk6IDA7XFxuICB0cmFuc2l0aW9uOiB0b3AgMC4zcywgb3BhY2l0eSAwLjNzO1xcbn1cXG5cXG4ja29hbGFmaS1tb2RhbC14LWJ1dHRvbi1jb250YWluZXIge1xcbiAgaGVpZ2h0OiA0MnB4O1xcbiAgd2lkdGg6IDQycHg7XFxuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMTBweDtcXG4gIHJpZ2h0OiAxMHB4O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG59XFxuXFxuI2tvYWxhZmktbW9kYWwtY2xvc2UtYnV0dG9uOmhvdmVyIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLyogXFxuICAgIE1lZGlhIFF1ZXJpZXNcXG4qL1xcblxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHtcXG4gICNrb2FsYWZpLW1vZGFsLWNvbnRlbnQge1xcbiAgICB3aWR0aDogNjQwcHg7XFxuICAgIGhlaWdodDogODAwcHg7XFxuICB9XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3NyYy9mZWF0dXJlcy9tb2RhbC9tb2RhbC5jc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUE7O0NBRUM7QUFDRDtFQUNFLGVBQWU7RUFDZixhQUFhO0VBQ2IsT0FBTztFQUNQLE1BQU07RUFDTixXQUFXO0VBQ1gsWUFBWTtFQUNaLGNBQWM7RUFDZCxvQ0FBb0M7RUFDcEMsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQix1QkFBdUI7RUFDdkIsbUJBQW1CO0FBQ3JCOztBQUVBO0VBQ0UsTUFBTTtFQUNOLFVBQVU7QUFDWjs7QUFFQTtFQUNFLFlBQVk7RUFDWixZQUFZO0VBQ1osU0FBUztFQUNULFVBQVU7QUFDWjs7QUFFQTtFQUNFLGFBQWE7RUFDYixXQUFXO0VBQ1gsWUFBWTtFQUNaLHNCQUFzQjtFQUN0QixnQkFBZ0I7QUFDbEI7O0FBRUE7O0NBRUM7O0FBRUQ7RUFDRSx5QkFBeUI7RUFDekIsWUFBWTtFQUNaLGFBQWE7RUFDYixvQ0FBb0M7RUFDcEMsV0FBVztFQUNYLFlBQVk7RUFDWixxQkFBcUI7RUFDckIsa0JBQWtCO0VBQ2xCLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsVUFBVTtFQUNWLGtDQUFrQztBQUNwQzs7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixZQUFZO0VBQ1osYUFBYTtFQUNiLHVCQUF1QjtFQUN2QixtQkFBbUI7RUFDbkIsa0JBQWtCO0FBQ3BCOztBQUVBO0VBQ0UsVUFBVTtFQUNWLGlCQUFpQjtFQUNqQixrQkFBa0I7RUFDbEIsV0FBVztFQUNYLGVBQWU7RUFDZixpQkFBaUI7QUFDbkI7O0FBRUE7O0VBRUUsY0FBYztFQUNkLHFCQUFxQjtFQUNyQixlQUFlO0FBQ2pCOztBQUVBO0VBQ0UsWUFBWTtBQUNkOztBQUVBOztDQUVDOztBQUVEO0VBQ0UseUJBQXlCO0VBQ3pCLFlBQVk7RUFDWixhQUFhO0VBQ2IsV0FBVztFQUNYLFlBQVk7RUFDWixxQkFBcUI7RUFDckIsa0JBQWtCO0VBQ2xCLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsVUFBVTtFQUNWLGtDQUFrQztBQUNwQzs7QUFFQTtFQUNFLFlBQVk7RUFDWixXQUFXO0VBQ1gsaUJBQWlCO0VBQ2pCLGtCQUFrQjtFQUNsQixrQkFBa0I7RUFDbEIsU0FBUztFQUNULFdBQVc7RUFDWCxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLHVCQUF1QjtBQUN6Qjs7QUFFQTtFQUNFLGVBQWU7QUFDakI7O0FBRUE7O0NBRUM7O0FBRUQ7RUFDRTtJQUNFLFlBQVk7SUFDWixhQUFhO0VBQ2Y7QUFDRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIvKiBcXG4gICAgU2hhcmVkIG1vZGFsIHN0eWxpbmdzXFxuKi9cXG4ja29hbGFmaS1tb2RhbCB7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICB6LWluZGV4OiAyMDAwO1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgb3ZlcmZsb3c6IGF1dG87XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcXG59XFxuXFxuI2tvYWxhZmktbW9kYWwtY29udGVudC5zaG93IHtcXG4gIHRvcDogMDtcXG4gIG9wYWNpdHk6IDE7XFxufVxcblxcbiNrb2FsYWZpLWlmcmFtZSB7XFxuICBmbGV4LWdyb3c6IDE7XFxuICBib3JkZXI6IG5vbmU7XFxuICBtYXJnaW46IDA7XFxuICBwYWRkaW5nOiAwO1xcbn1cXG5cXG4ja29hbGFmaS1pZnJhbWUtd3JhcHBlciB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG59XFxuXFxuLyogXFxuICAgIExvbmcgRm9ybSBNb2RhbFxcbiovXFxuXFxuI2tvYWxhZmktbW9kYWwtY29udGVudCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVmZWZlO1xcbiAgbWFyZ2luOiBhdXRvO1xcbiAgei1pbmRleDogMjAwMTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4yKTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgYm9yZGVyLXJhZGl1czogMC4zcmVtO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNpdGlvbjogdG9wIDAuM3MsIG9wYWNpdHkgMC4zcztcXG59XFxuXFxuI2tvYWxhZmktbW9kYWwtaGVhZGVyIHtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIHBhZGRpbmc6IDVweDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcblxcbiNrb2FsYWZpLW1vZGFsLWNsb3NlLWJ1dHRvbiB7XFxuICByaWdodDogOHB4O1xcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjb2xvcjogIzAwMDtcXG4gIGZvbnQtc2l6ZTogMjhweDtcXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xcbn1cXG5cXG4ja29hbGFmaS1tb2RhbC1jbG9zZS1idXR0b246aG92ZXIsXFxuI2tvYWxhZmktbW9kYWwtY2xvc2UtYnV0dG9uOmZvY3VzIHtcXG4gIGNvbG9yOiAjMmFhNWRlO1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG4ja29hbGFmaS1tb2RhbC1oZWFkZXItbG9nbyB7XFxuICB3aWR0aDogMjAwcHg7XFxufVxcblxcbi8qIFxcbiAgICBTaG9ydCBGb3JtIE1vZGFsXFxuKi9cXG5cXG4ja29hbGFmaS1tb2RhbC1jb250ZW50IHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZWZlZmU7XFxuICBtYXJnaW46IGF1dG87XFxuICB6LWluZGV4OiAyMDAxO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBib3JkZXItcmFkaXVzOiAwLjNyZW07XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIG9wYWNpdHk6IDA7XFxuICB0cmFuc2l0aW9uOiB0b3AgMC4zcywgb3BhY2l0eSAwLjNzO1xcbn1cXG5cXG4ja29hbGFmaS1tb2RhbC14LWJ1dHRvbi1jb250YWluZXIge1xcbiAgaGVpZ2h0OiA0MnB4O1xcbiAgd2lkdGg6IDQycHg7XFxuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMTBweDtcXG4gIHJpZ2h0OiAxMHB4O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG59XFxuXFxuI2tvYWxhZmktbW9kYWwtY2xvc2UtYnV0dG9uOmhvdmVyIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLyogXFxuICAgIE1lZGlhIFF1ZXJpZXNcXG4qL1xcblxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHtcXG4gICNrb2FsYWZpLW1vZGFsLWNvbnRlbnQge1xcbiAgICB3aWR0aDogNjQwcHg7XFxuICAgIGhlaWdodDogODAwcHg7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xubW9kdWxlLmV4cG9ydHMgPSBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKlxuICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xuLy8gY3NzIGJhc2UgY29kZSwgaW5qZWN0ZWQgYnkgdGhlIGNzcy1sb2FkZXJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKSB7XG4gIHZhciBsaXN0ID0gW107IC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcblxuICBsaXN0LnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICB2YXIgY29udGVudCA9IGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSk7XG5cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIHJldHVybiBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKS5jb25jYXQoY29udGVudCwgXCJ9XCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9KS5qb2luKFwiXCIpO1xuICB9OyAvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuXG5cbiAgbGlzdC5pID0gZnVuY3Rpb24gKG1vZHVsZXMsIG1lZGlhUXVlcnksIGRlZHVwZSkge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICBtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCBcIlwiXV07XG4gICAgfVxuXG4gICAgdmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcblxuICAgIGlmIChkZWR1cGUpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWRlc3RydWN0dXJpbmdcbiAgICAgICAgdmFyIGlkID0gdGhpc1tpXVswXTtcblxuICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBtb2R1bGVzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIGl0ZW0gPSBbXS5jb25jYXQobW9kdWxlc1tfaV0pO1xuXG4gICAgICBpZiAoZGVkdXBlICYmIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnRpbnVlXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVkaWFRdWVyeSkge1xuICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWFRdWVyeTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzJdID0gXCJcIi5jb25jYXQobWVkaWFRdWVyeSwgXCIgYW5kIFwiKS5jb25jYXQoaXRlbVsyXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gbGlzdDtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cblxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfVxuXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcInVuZGVmaW5lZFwiIHx8ICEoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChhcnIpKSkgcmV0dXJuOyB2YXIgX2FyciA9IFtdOyB2YXIgX24gPSB0cnVlOyB2YXIgX2QgPSBmYWxzZTsgdmFyIF9lID0gdW5kZWZpbmVkOyB0cnkgeyBmb3IgKHZhciBfaSA9IGFycltTeW1ib2wuaXRlcmF0b3JdKCksIF9zOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7IF9hcnIucHVzaChfcy52YWx1ZSk7IGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhazsgfSB9IGNhdGNoIChlcnIpIHsgX2QgPSB0cnVlOyBfZSA9IGVycjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpOyB9IGZpbmFsbHkgeyBpZiAoX2QpIHRocm93IF9lOyB9IH0gcmV0dXJuIF9hcnI7IH1cblxuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyOyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKSB7XG4gIHZhciBfaXRlbSA9IF9zbGljZWRUb0FycmF5KGl0ZW0sIDQpLFxuICAgICAgY29udGVudCA9IF9pdGVtWzFdLFxuICAgICAgY3NzTWFwcGluZyA9IF9pdGVtWzNdO1xuXG4gIGlmICh0eXBlb2YgYnRvYSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gICAgdmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGNzc01hcHBpbmcpKSkpO1xuICAgIHZhciBkYXRhID0gXCJzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcIi5jb25jYXQoYmFzZTY0KTtcbiAgICB2YXIgc291cmNlTWFwcGluZyA9IFwiLyojIFwiLmNvbmNhdChkYXRhLCBcIiAqL1wiKTtcbiAgICB2YXIgc291cmNlVVJMcyA9IGNzc01hcHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIFwiLyojIHNvdXJjZVVSTD1cIi5jb25jYXQoY3NzTWFwcGluZy5zb3VyY2VSb290IHx8IFwiXCIpLmNvbmNhdChzb3VyY2UsIFwiICovXCIpO1xuICAgIH0pO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oXCJcXG5cIik7XG4gIH1cblxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBSZWFjdE5hdGl2ZUZpbGUoX3JlZikge1xuICB2YXIgdXJpID0gX3JlZi51cmksXG4gICAgbmFtZSA9IF9yZWYubmFtZSxcbiAgICB0eXBlID0gX3JlZi50eXBlO1xuICB0aGlzLnVyaSA9IHVyaTtcbiAgdGhpcy5uYW1lID0gbmFtZTtcbiAgdGhpcy50eXBlID0gdHlwZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBkZWZhdWx0SXNFeHRyYWN0YWJsZUZpbGUgPSByZXF1aXJlKCcuL2lzRXh0cmFjdGFibGVGaWxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZXh0cmFjdEZpbGVzKHZhbHVlLCBwYXRoLCBpc0V4dHJhY3RhYmxlRmlsZSkge1xuICBpZiAocGF0aCA9PT0gdm9pZCAwKSB7XG4gICAgcGF0aCA9ICcnO1xuICB9XG5cbiAgaWYgKGlzRXh0cmFjdGFibGVGaWxlID09PSB2b2lkIDApIHtcbiAgICBpc0V4dHJhY3RhYmxlRmlsZSA9IGRlZmF1bHRJc0V4dHJhY3RhYmxlRmlsZTtcbiAgfVxuXG4gIHZhciBjbG9uZTtcbiAgdmFyIGZpbGVzID0gbmV3IE1hcCgpO1xuXG4gIGZ1bmN0aW9uIGFkZEZpbGUocGF0aHMsIGZpbGUpIHtcbiAgICB2YXIgc3RvcmVkUGF0aHMgPSBmaWxlcy5nZXQoZmlsZSk7XG4gICAgaWYgKHN0b3JlZFBhdGhzKSBzdG9yZWRQYXRocy5wdXNoLmFwcGx5KHN0b3JlZFBhdGhzLCBwYXRocyk7XG4gICAgZWxzZSBmaWxlcy5zZXQoZmlsZSwgcGF0aHMpO1xuICB9XG5cbiAgaWYgKGlzRXh0cmFjdGFibGVGaWxlKHZhbHVlKSkge1xuICAgIGNsb25lID0gbnVsbDtcbiAgICBhZGRGaWxlKFtwYXRoXSwgdmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHZhciBwcmVmaXggPSBwYXRoID8gcGF0aCArICcuJyA6ICcnO1xuICAgIGlmICh0eXBlb2YgRmlsZUxpc3QgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlIGluc3RhbmNlb2YgRmlsZUxpc3QpXG4gICAgICBjbG9uZSA9IEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbCh2YWx1ZSwgZnVuY3Rpb24gKGZpbGUsIGkpIHtcbiAgICAgICAgYWRkRmlsZShbJycgKyBwcmVmaXggKyBpXSwgZmlsZSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSk7XG4gICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICBjbG9uZSA9IHZhbHVlLm1hcChmdW5jdGlvbiAoY2hpbGQsIGkpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGV4dHJhY3RGaWxlcyhjaGlsZCwgJycgKyBwcmVmaXggKyBpLCBpc0V4dHJhY3RhYmxlRmlsZSk7XG4gICAgICAgIHJlc3VsdC5maWxlcy5mb3JFYWNoKGFkZEZpbGUpO1xuICAgICAgICByZXR1cm4gcmVzdWx0LmNsb25lO1xuICAgICAgfSk7XG4gICAgZWxzZSBpZiAodmFsdWUgJiYgdmFsdWUuY29uc3RydWN0b3IgPT09IE9iamVjdCkge1xuICAgICAgY2xvbmUgPSB7fTtcblxuICAgICAgZm9yICh2YXIgaSBpbiB2YWx1ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gZXh0cmFjdEZpbGVzKHZhbHVlW2ldLCAnJyArIHByZWZpeCArIGksIGlzRXh0cmFjdGFibGVGaWxlKTtcbiAgICAgICAgcmVzdWx0LmZpbGVzLmZvckVhY2goYWRkRmlsZSk7XG4gICAgICAgIGNsb25lW2ldID0gcmVzdWx0LmNsb25lO1xuICAgICAgfVxuICAgIH0gZWxzZSBjbG9uZSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjbG9uZTogY2xvbmUsXG4gICAgZmlsZXM6IGZpbGVzLFxuICB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5SZWFjdE5hdGl2ZUZpbGUgPSByZXF1aXJlKCcuL1JlYWN0TmF0aXZlRmlsZScpO1xuZXhwb3J0cy5leHRyYWN0RmlsZXMgPSByZXF1aXJlKCcuL2V4dHJhY3RGaWxlcycpO1xuZXhwb3J0cy5pc0V4dHJhY3RhYmxlRmlsZSA9IHJlcXVpcmUoJy4vaXNFeHRyYWN0YWJsZUZpbGUnKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0TmF0aXZlRmlsZSA9IHJlcXVpcmUoJy4vUmVhY3ROYXRpdmVGaWxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNFeHRyYWN0YWJsZUZpbGUodmFsdWUpIHtcbiAgcmV0dXJuIChcbiAgICAodHlwZW9mIEZpbGUgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlIGluc3RhbmNlb2YgRmlsZSkgfHxcbiAgICAodHlwZW9mIEJsb2IgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlIGluc3RhbmNlb2YgQmxvYikgfHxcbiAgICB2YWx1ZSBpbnN0YW5jZW9mIFJlYWN0TmF0aXZlRmlsZVxuICApO1xufTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGV4dHJhY3RfZmlsZXNfMSA9IHJlcXVpcmUoXCJleHRyYWN0LWZpbGVzXCIpO1xudmFyIGZvcm1fZGF0YV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJmb3JtLWRhdGFcIikpO1xuLyoqXG4gKiBEdWNrIHR5cGUgaWYgTm9kZUpTIHN0cmVhbVxuICogaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9pcy1zdHJlYW0vYmxvYi8zNzUwNTA1YjA3MjdmNmRmNTQzMjQ3ODRmZTM2OTM2NWVmNzg4NDFlL2luZGV4LmpzI0wzXG4gKi9cbnZhciBpc0V4dHJhY3RhYmxlRmlsZUVuaGFuY2VkID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIGV4dHJhY3RfZmlsZXNfMS5pc0V4dHJhY3RhYmxlRmlsZSh2YWx1ZSkgfHxcbiAgICAgICAgKHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHZhbHVlLnBpcGUgPT09ICdmdW5jdGlvbicpO1xufTtcbi8qKlxuICogUmV0dXJucyBNdWx0aXBhcnQgRm9ybSBpZiBib2R5IGNvbnRhaW5zIGZpbGVzXG4gKiAoaHR0cHM6Ly9naXRodWIuY29tL2pheWRlbnNlcmljL2dyYXBocWwtbXVsdGlwYXJ0LXJlcXVlc3Qtc3BlYylcbiAqIE90aGVyd2lzZSByZXR1cm5zIEpTT05cbiAqL1xuZnVuY3Rpb24gY3JlYXRlUmVxdWVzdEJvZHkocXVlcnksIHZhcmlhYmxlcykge1xuICAgIHZhciBfYSA9IGV4dHJhY3RfZmlsZXNfMS5leHRyYWN0RmlsZXMoeyBxdWVyeTogcXVlcnksIHZhcmlhYmxlczogdmFyaWFibGVzIH0sICcnLCBpc0V4dHJhY3RhYmxlRmlsZUVuaGFuY2VkKSwgY2xvbmUgPSBfYS5jbG9uZSwgZmlsZXMgPSBfYS5maWxlcztcbiAgICBpZiAoZmlsZXMuc2l6ZSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoY2xvbmUpO1xuICAgIH1cbiAgICB2YXIgRm9ybSA9IHR5cGVvZiBGb3JtRGF0YSA9PT0gJ3VuZGVmaW5lZCcgPyBmb3JtX2RhdGFfMS5kZWZhdWx0IDogRm9ybURhdGE7XG4gICAgdmFyIGZvcm0gPSBuZXcgRm9ybSgpO1xuICAgIGZvcm0uYXBwZW5kKCdvcGVyYXRpb25zJywgSlNPTi5zdHJpbmdpZnkoY2xvbmUpKTtcbiAgICB2YXIgbWFwID0ge307XG4gICAgdmFyIGkgPSAwO1xuICAgIGZpbGVzLmZvckVhY2goZnVuY3Rpb24gKHBhdGhzKSB7XG4gICAgICAgIG1hcFsrK2ldID0gcGF0aHM7XG4gICAgfSk7XG4gICAgZm9ybS5hcHBlbmQoJ21hcCcsIEpTT04uc3RyaW5naWZ5KG1hcCkpO1xuICAgIGkgPSAwO1xuICAgIGZpbGVzLmZvckVhY2goZnVuY3Rpb24gKHBhdGhzLCBmaWxlKSB7XG4gICAgICAgIGZvcm0uYXBwZW5kKFwiXCIgKyArK2ksIGZpbGUpO1xuICAgIH0pO1xuICAgIHJldHVybiBmb3JtO1xufVxuZXhwb3J0cy5kZWZhdWx0ID0gY3JlYXRlUmVxdWVzdEJvZHk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcmVhdGVSZXF1ZXN0Qm9keS5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19jcmVhdGVCaW5kaW5nID0gKHRoaXMgJiYgdGhpcy5fX2NyZWF0ZUJpbmRpbmcpIHx8IChPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfSk7XG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgb1trMl0gPSBtW2tdO1xufSkpO1xudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19zZXRNb2R1bGVEZWZhdWx0KSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCB2KSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xufSkgOiBmdW5jdGlvbihvLCB2KSB7XG4gICAgb1tcImRlZmF1bHRcIl0gPSB2O1xufSk7XG52YXIgX19pbXBvcnRTdGFyID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydFN0YXIpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoayAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIF9fY3JlYXRlQmluZGluZyhyZXN1bHQsIG1vZCwgayk7XG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmdxbCA9IGV4cG9ydHMucmVxdWVzdCA9IGV4cG9ydHMucmF3UmVxdWVzdCA9IGV4cG9ydHMuR3JhcGhRTENsaWVudCA9IGV4cG9ydHMuQ2xpZW50RXJyb3IgPSB2b2lkIDA7XG52YXIgY3Jvc3NfZmV0Y2hfMSA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiY3Jvc3MtZmV0Y2hcIikpLCBDcm9zc0ZldGNoID0gY3Jvc3NfZmV0Y2hfMTtcbnZhciBwcmludGVyXzEgPSByZXF1aXJlKFwiZ3JhcGhxbC9sYW5ndWFnZS9wcmludGVyXCIpO1xudmFyIGNyZWF0ZVJlcXVlc3RCb2R5XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vY3JlYXRlUmVxdWVzdEJvZHlcIikpO1xudmFyIHR5cGVzXzEgPSByZXF1aXJlKFwiLi90eXBlc1wiKTtcbnZhciB0eXBlc18yID0gcmVxdWlyZShcIi4vdHlwZXNcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJDbGllbnRFcnJvclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHlwZXNfMi5DbGllbnRFcnJvcjsgfSB9KTtcbi8qKlxuICogQ29udmVydCB0aGUgZ2l2ZW4gaGVhZGVycyBjb25maWd1cmF0aW9uIGludG8gYSBwbGFpbiBvYmplY3QuXG4gKi9cbnZhciByZXNvbHZlSGVhZGVycyA9IGZ1bmN0aW9uIChoZWFkZXJzKSB7XG4gICAgdmFyIG9IZWFkZXJzID0ge307XG4gICAgaWYgKGhlYWRlcnMpIHtcbiAgICAgICAgaWYgKCh0eXBlb2YgSGVhZGVycyAhPT0gJ3VuZGVmaW5lZCcgJiYgaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMpIHx8XG4gICAgICAgICAgICBoZWFkZXJzIGluc3RhbmNlb2YgQ3Jvc3NGZXRjaC5IZWFkZXJzKSB7XG4gICAgICAgICAgICBvSGVhZGVycyA9IEhlYWRlcnNJbnN0YW5jZVRvUGxhaW5PYmplY3QoaGVhZGVycyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShoZWFkZXJzKSkge1xuICAgICAgICAgICAgaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHZhciBuYW1lID0gX2FbMF0sIHZhbHVlID0gX2FbMV07XG4gICAgICAgICAgICAgICAgb0hlYWRlcnNbbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgb0hlYWRlcnMgPSBoZWFkZXJzO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvSGVhZGVycztcbn07XG4vKipcbiAqIHRvZG9cbiAqL1xudmFyIEdyYXBoUUxDbGllbnQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gR3JhcGhRTENsaWVudCh1cmwsIG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy51cmwgPSB1cmw7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgfVxuICAgIEdyYXBoUUxDbGllbnQucHJvdG90eXBlLnJhd1JlcXVlc3QgPSBmdW5jdGlvbiAocXVlcnksIHZhcmlhYmxlcywgcmVxdWVzdEhlYWRlcnMpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBoZWFkZXJzLCBfYiwgbG9jYWxGZXRjaCwgb3RoZXJzLCBib2R5LCByZXNwb25zZSwgcmVzdWx0LCBoZWFkZXJzXzEsIHN0YXR1c18xLCBlcnJvclJlc3VsdDtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2MpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9jLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hID0gdGhpcy5vcHRpb25zLCBoZWFkZXJzID0gX2EuaGVhZGVycywgX2IgPSBfYS5mZXRjaCwgbG9jYWxGZXRjaCA9IF9iID09PSB2b2lkIDAgPyBjcm9zc19mZXRjaF8xLmRlZmF1bHQgOiBfYiwgb3RoZXJzID0gX19yZXN0KF9hLCBbXCJoZWFkZXJzXCIsIFwiZmV0Y2hcIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9keSA9IGNyZWF0ZVJlcXVlc3RCb2R5XzEuZGVmYXVsdChxdWVyeSwgdmFyaWFibGVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGxvY2FsRmV0Y2godGhpcy51cmwsIF9fYXNzaWduKHsgbWV0aG9kOiAnUE9TVCcsIGhlYWRlcnM6IF9fYXNzaWduKF9fYXNzaWduKF9fYXNzaWduKHt9LCAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnID8geyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0gOiB7fSkpLCByZXNvbHZlSGVhZGVycyhoZWFkZXJzKSksIHJlc29sdmVIZWFkZXJzKHJlcXVlc3RIZWFkZXJzKSksIGJvZHk6IGJvZHkgfSwgb3RoZXJzKSldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IF9jLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGdldFJlc3VsdChyZXNwb25zZSldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBfYy5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uub2sgJiYgIXJlc3VsdC5lcnJvcnMgJiYgcmVzdWx0LmRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzXzEgPSByZXNwb25zZS5oZWFkZXJzLCBzdGF0dXNfMSA9IHJlc3BvbnNlLnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgX19hc3NpZ24oX19hc3NpZ24oe30sIHJlc3VsdCksIHsgaGVhZGVyczogaGVhZGVyc18xLCBzdGF0dXM6IHN0YXR1c18xIH0pXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yUmVzdWx0ID0gdHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycgPyB7IGVycm9yOiByZXN1bHQgfSA6IHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgdHlwZXNfMS5DbGllbnRFcnJvcihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXJyb3JSZXN1bHQpLCB7IHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLCBoZWFkZXJzOiByZXNwb25zZS5oZWFkZXJzIH0pLCB7IHF1ZXJ5OiBxdWVyeSwgdmFyaWFibGVzOiB2YXJpYWJsZXMgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogU2VuZCBhIEdyYXBoUUwgZG9jdW1lbnQgdG8gdGhlIHNlcnZlci5cbiAgICAgKi9cbiAgICBHcmFwaFFMQ2xpZW50LnByb3RvdHlwZS5yZXF1ZXN0ID0gZnVuY3Rpb24gKGRvY3VtZW50LCB2YXJpYWJsZXMsIHJlcXVlc3RIZWFkZXJzKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgaGVhZGVycywgX2IsIGxvY2FsRmV0Y2gsIG90aGVycywgcmVzb2x2ZWREb2MsIGJvZHksIHJlc3BvbnNlLCByZXN1bHQsIGVycm9yUmVzdWx0O1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYykge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2MubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2EgPSB0aGlzLm9wdGlvbnMsIGhlYWRlcnMgPSBfYS5oZWFkZXJzLCBfYiA9IF9hLmZldGNoLCBsb2NhbEZldGNoID0gX2IgPT09IHZvaWQgMCA/IGNyb3NzX2ZldGNoXzEuZGVmYXVsdCA6IF9iLCBvdGhlcnMgPSBfX3Jlc3QoX2EsIFtcImhlYWRlcnNcIiwgXCJmZXRjaFwiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlZERvYyA9IHJlc29sdmVSZXF1ZXN0RG9jdW1lbnQoZG9jdW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9keSA9IGNyZWF0ZVJlcXVlc3RCb2R5XzEuZGVmYXVsdChyZXNvbHZlZERvYywgdmFyaWFibGVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGxvY2FsRmV0Y2godGhpcy51cmwsIF9fYXNzaWduKHsgbWV0aG9kOiAnUE9TVCcsIGhlYWRlcnM6IF9fYXNzaWduKF9fYXNzaWduKF9fYXNzaWduKHt9LCAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnID8geyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0gOiB7fSkpLCByZXNvbHZlSGVhZGVycyhoZWFkZXJzKSksIHJlc29sdmVIZWFkZXJzKHJlcXVlc3RIZWFkZXJzKSksIGJvZHk6IGJvZHkgfSwgb3RoZXJzKSldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IF9jLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGdldFJlc3VsdChyZXNwb25zZSldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBfYy5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uub2sgJiYgIXJlc3VsdC5lcnJvcnMgJiYgcmVzdWx0LmRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgcmVzdWx0LmRhdGFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JSZXN1bHQgPSB0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJyA/IHsgZXJyb3I6IHJlc3VsdCB9IDogcmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyB0eXBlc18xLkNsaWVudEVycm9yKF9fYXNzaWduKF9fYXNzaWduKHt9LCBlcnJvclJlc3VsdCksIHsgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMgfSksIHsgcXVlcnk6IHJlc29sdmVkRG9jLCB2YXJpYWJsZXM6IHZhcmlhYmxlcyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBHcmFwaFFMQ2xpZW50LnByb3RvdHlwZS5zZXRIZWFkZXJzID0gZnVuY3Rpb24gKGhlYWRlcnMpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmhlYWRlcnMgPSBoZWFkZXJzO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEF0dGFjaCBhIGhlYWRlciB0byB0aGUgY2xpZW50LiBBbGwgc3Vic2VxdWVudCByZXF1ZXN0cyB3aWxsIGhhdmUgdGhpcyBoZWFkZXIuXG4gICAgICovXG4gICAgR3JhcGhRTENsaWVudC5wcm90b3R5cGUuc2V0SGVhZGVyID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgaGVhZGVycyA9IHRoaXMub3B0aW9ucy5oZWFkZXJzO1xuICAgICAgICBpZiAoaGVhZGVycykge1xuICAgICAgICAgICAgLy8gdG9kbyB3aGF0IGlmIGhlYWRlcnMgaXMgaW4gbmVzdGVkIGFycmF5IGZvcm0uLi4gP1xuICAgICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgICBoZWFkZXJzW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5oZWFkZXJzID0gKF9hID0ge30sIF9hW2tleV0gPSB2YWx1ZSwgX2EpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgcmV0dXJuIEdyYXBoUUxDbGllbnQ7XG59KCkpO1xuZXhwb3J0cy5HcmFwaFFMQ2xpZW50ID0gR3JhcGhRTENsaWVudDtcbi8qKlxuICogdG9kb1xuICovXG5mdW5jdGlvbiByYXdSZXF1ZXN0KHVybCwgcXVlcnksIHZhcmlhYmxlcykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNsaWVudDtcbiAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgY2xpZW50ID0gbmV3IEdyYXBoUUxDbGllbnQodXJsKTtcbiAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCBjbGllbnQucmF3UmVxdWVzdChxdWVyeSwgdmFyaWFibGVzKV07XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuZXhwb3J0cy5yYXdSZXF1ZXN0ID0gcmF3UmVxdWVzdDtcbi8qKlxuICogU2VuZCBhIEdyYXBoUUwgRG9jdW1lbnQgdG8gdGhlIEdyYXBoUUwgc2VydmVyIGZvciBleGVjdHVpb24uXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiBgYGB0c1xuICogLy8gWW91IGNhbiBwYXNzIGEgcmF3IHN0cmluZ1xuICpcbiAqIGF3YWl0IHJlcXVlc3QoJ2h0dHBzOi8vZm9vLmJhci9ncmFwaHFsJywgYFxuICogICB7XG4gKiAgICAgcXVlcnkge1xuICogICAgICAgdXNlcnNcbiAqICAgICB9XG4gKiAgIH1cbiAqIGApXG4gKlxuICogLy8gWW91IGNhbiBhbHNvIHBhc3MgYSBHcmFwaFFMIERvY3VtZW50Tm9kZS4gQ29udmVuaWVudCBpZiB5b3VcbiAqIC8vIGFyZSB1c2luZyBncmFwaHFsLXRhZyBwYWNrYWdlLlxuICpcbiAqIGltcG9ydCBncWwgZnJvbSAnZ3JhcGhxbC10YWcnXG4gKlxuICogYXdhaXQgcmVxdWVzdCgnaHR0cHM6Ly9mb28uYmFyL2dyYXBocWwnLCBncWxgLi4uYClcbiAqXG4gKiAvLyBJZiB5b3UgZG9uJ3QgYWN0dWFsbHkgY2FyZSBhYm91dCB1c2luZyBEb2N1bWVudE5vZGUgYnV0IGp1c3RcbiAqIC8vIHdhbnQgdGhlIHRvb2xpbmcgc3VwcG9ydCBmb3IgZ3FsIHRlbXBsYXRlIHRhZyBsaWtlIElERSBzeW50YXhcbiAqIC8vIGNvbG9yaW5nIGFuZCBwcmV0dGllciBhdXRvZm9ybWF0IHRoZW4gbm90ZSB5b3UgY2FuIHVzZSB0aGVcbiAqIC8vIHBhc3N0aHJvdWdoIGdxbCB0YWcgc2hpcHBlZCB3aXRoIGdyYXBocWwtcmVxdWVzdCB0byBzYXZlIGEgYml0XG4gKiAvLyBvZiBwZXJmb3JtYW5jZSBhbmQgbm90IGhhdmUgdG8gaW5zdGFsbCBhbm90aGVyIGRlcCBpbnRvIHlvdXIgcHJvamVjdC5cbiAqXG4gKiBpbXBvcnQgeyBncWwgfSBmcm9tICdncmFwaHFsLXJlcXVlc3QnXG4gKlxuICogYXdhaXQgcmVxdWVzdCgnaHR0cHM6Ly9mb28uYmFyL2dyYXBocWwnLCBncWxgLi4uYClcbiAqIGBgYFxuICovXG5mdW5jdGlvbiByZXF1ZXN0KHVybCwgZG9jdW1lbnQsIHZhcmlhYmxlcykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNsaWVudDtcbiAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgY2xpZW50ID0gbmV3IEdyYXBoUUxDbGllbnQodXJsKTtcbiAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCBjbGllbnQucmVxdWVzdChkb2N1bWVudCwgdmFyaWFibGVzKV07XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuZXhwb3J0cy5yZXF1ZXN0ID0gcmVxdWVzdDtcbmV4cG9ydHMuZGVmYXVsdCA9IHJlcXVlc3Q7XG4vKipcbiAqIHRvZG9cbiAqL1xuZnVuY3Rpb24gZ2V0UmVzdWx0KHJlc3BvbnNlKSB7XG4gICAgdmFyIGNvbnRlbnRUeXBlID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ0NvbnRlbnQtVHlwZScpO1xuICAgIGlmIChjb250ZW50VHlwZSAmJiBjb250ZW50VHlwZS5zdGFydHNXaXRoKCdhcHBsaWNhdGlvbi9qc29uJykpIHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiByZXNwb25zZS50ZXh0KCk7XG4gICAgfVxufVxuLyoqXG4gKiBoZWxwZXJzXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVSZXF1ZXN0RG9jdW1lbnQoZG9jdW1lbnQpIHtcbiAgICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSAnc3RyaW5nJylcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50O1xuICAgIHJldHVybiBwcmludGVyXzEucHJpbnQoZG9jdW1lbnQpO1xufVxuLyoqXG4gKiBDb252ZW5pZW5jZSBwYXNzdGhyb3VnaCB0ZW1wbGF0ZSB0YWcgdG8gZ2V0IHRoZSBiZW5lZml0cyBvZiB0b29saW5nIGZvciB0aGUgZ3FsIHRlbXBsYXRlIHRhZy4gVGhpcyBkb2VzIG5vdCBhY3R1YWxseSBwYXJzZSB0aGUgaW5wdXQgaW50byBhIEdyYXBoUUwgRG9jdW1lbnROb2RlIGxpa2UgZ3JhcGhxbC10YWcgcGFja2FnZSBkb2VzLiBJdCBqdXN0IHJldHVybnMgdGhlIHN0cmluZyB3aXRoIGFueSB2YXJpYWJsZXMgZ2l2ZW4gaW50ZXJwb2xhdGVkLiBDYW4gc2F2ZSB5b3UgYSBiaXQgb2YgcGVyZm9ybWFuY2UgYW5kIGhhdmluZyB0byBpbnN0YWxsIGFub3RoZXIgcGFja2FnZS5cbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIGltcG9ydCB7IGdxbCB9IGZyb20gJ2dyYXBocWwtcmVxdWVzdCdcbiAqXG4gKiBhd2FpdCByZXF1ZXN0KCdodHRwczovL2Zvby5iYXIvZ3JhcGhxbCcsIGdxbGAuLi5gKVxuICpcbiAqIEByZW1hcmtzXG4gKlxuICogU2V2ZXJhbCB0b29scyBpbiB0aGUgTm9kZSBHcmFwaFFMIGVjb3N5c3RlbSBhcmUgaGFyZGNvZGVkIHRvIHNwZWNpYWxseSB0cmVhdCBhbnkgdGVtcGxhdGUgdGFnIG5hbWVkIFwiZ3FsXCIuIEZvciBleGFtcGxlIHNlZSB0aGlzIHByZXR0aWVyIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vcHJldHRpZXIvcHJldHRpZXIvaXNzdWVzLzQzNjAuIFVzaW5nIHRoaXMgdGVtcGxhdGUgdGFnIGhhcyBubyBydW50aW1lIGVmZmVjdCBiZXlvbmQgdmFyaWFibGUgaW50ZXJwb2xhdGlvbi5cbiAqL1xuZnVuY3Rpb24gZ3FsKGNodW5rcykge1xuICAgIHZhciB2YXJpYWJsZXMgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICB2YXJpYWJsZXNbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIHJldHVybiBjaHVua3MucmVkdWNlKGZ1bmN0aW9uIChhY2N1bXVsYXRvciwgY2h1bmssIGluZGV4KSB7IHJldHVybiBcIlwiICsgYWNjdW11bGF0b3IgKyBjaHVuayArIChpbmRleCBpbiB2YXJpYWJsZXMgPyB2YXJpYWJsZXNbaW5kZXhdIDogJycpOyB9LCAnJyk7XG59XG5leHBvcnRzLmdxbCA9IGdxbDtcbi8qKlxuICogQ29udmVydCBIZWFkZXJzIGluc3RhbmNlIGludG8gcmVndWxhciBvYmplY3RcbiAqL1xuZnVuY3Rpb24gSGVhZGVyc0luc3RhbmNlVG9QbGFpbk9iamVjdChoZWFkZXJzKSB7XG4gICAgdmFyIG8gPSB7fTtcbiAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24gKHYsIGspIHtcbiAgICAgICAgb1trXSA9IHY7XG4gICAgfSk7XG4gICAgcmV0dXJuIG87XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkNsaWVudEVycm9yID0gdm9pZCAwO1xudmFyIENsaWVudEVycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDbGllbnRFcnJvciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBDbGllbnRFcnJvcihyZXNwb25zZSwgcmVxdWVzdCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgbWVzc2FnZSA9IENsaWVudEVycm9yLmV4dHJhY3RNZXNzYWdlKHJlc3BvbnNlKSArIFwiOiBcIiArIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIHJlc3BvbnNlOiByZXNwb25zZSxcbiAgICAgICAgICAgIHJlcXVlc3Q6IHJlcXVlc3QsXG4gICAgICAgIH0pO1xuICAgICAgICBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIG1lc3NhZ2UpIHx8IHRoaXM7XG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihfdGhpcywgQ2xpZW50RXJyb3IucHJvdG90eXBlKTtcbiAgICAgICAgX3RoaXMucmVzcG9uc2UgPSByZXNwb25zZTtcbiAgICAgICAgX3RoaXMucmVxdWVzdCA9IHJlcXVlc3Q7XG4gICAgICAgIC8vIHRoaXMgaXMgbmVlZGVkIGFzIFNhZmFyaSBkb2Vzbid0IHN1cHBvcnQgLmNhcHR1cmVTdGFja1RyYWNlXG4gICAgICAgIGlmICh0eXBlb2YgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKF90aGlzLCBDbGllbnRFcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBDbGllbnRFcnJvci5leHRyYWN0TWVzc2FnZSA9IGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmVycm9yc1swXS5tZXNzYWdlO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJHcmFwaFFMIEVycm9yIChDb2RlOiBcIiArIHJlc3BvbnNlLnN0YXR1cyArIFwiKVwiO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gQ2xpZW50RXJyb3I7XG59KEVycm9yKSk7XG5leHBvcnRzLkNsaWVudEVycm9yID0gQ2xpZW50RXJyb3I7XG4vLyMgc291cmNlTWFwcGluZ1VSTD10eXBlcy5qcy5tYXAiLCJ2YXIgX19zZWxmX18gPSAoZnVuY3Rpb24gKHJvb3QpIHtcbmZ1bmN0aW9uIEYoKSB7XG50aGlzLmZldGNoID0gZmFsc2U7XG50aGlzLkRPTUV4Y2VwdGlvbiA9IHJvb3QuRE9NRXhjZXB0aW9uXG59XG5GLnByb3RvdHlwZSA9IHJvb3Q7XG5yZXR1cm4gbmV3IEYoKTtcbn0pKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzKTtcbihmdW5jdGlvbihzZWxmKSB7XG5cbnZhciBpcnJlbGV2YW50ID0gKGZ1bmN0aW9uIChleHBvcnRzKSB7XG5cbiAgdmFyIHN1cHBvcnQgPSB7XG4gICAgc2VhcmNoUGFyYW1zOiAnVVJMU2VhcmNoUGFyYW1zJyBpbiBzZWxmLFxuICAgIGl0ZXJhYmxlOiAnU3ltYm9sJyBpbiBzZWxmICYmICdpdGVyYXRvcicgaW4gU3ltYm9sLFxuICAgIGJsb2I6XG4gICAgICAnRmlsZVJlYWRlcicgaW4gc2VsZiAmJlxuICAgICAgJ0Jsb2InIGluIHNlbGYgJiZcbiAgICAgIChmdW5jdGlvbigpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBuZXcgQmxvYigpO1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSkoKSxcbiAgICBmb3JtRGF0YTogJ0Zvcm1EYXRhJyBpbiBzZWxmLFxuICAgIGFycmF5QnVmZmVyOiAnQXJyYXlCdWZmZXInIGluIHNlbGZcbiAgfTtcblxuICBmdW5jdGlvbiBpc0RhdGFWaWV3KG9iaikge1xuICAgIHJldHVybiBvYmogJiYgRGF0YVZpZXcucHJvdG90eXBlLmlzUHJvdG90eXBlT2Yob2JqKVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIpIHtcbiAgICB2YXIgdmlld0NsYXNzZXMgPSBbXG4gICAgICAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICAgICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICAgICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgICAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgICAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgICAgJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgICAgJ1tvYmplY3QgVWludDMyQXJyYXldJyxcbiAgICAgICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgICAgJ1tvYmplY3QgRmxvYXQ2NEFycmF5XSdcbiAgICBdO1xuXG4gICAgdmFyIGlzQXJyYXlCdWZmZXJWaWV3ID1cbiAgICAgIEFycmF5QnVmZmVyLmlzVmlldyB8fFxuICAgICAgZnVuY3Rpb24ob2JqKSB7XG4gICAgICAgIHJldHVybiBvYmogJiYgdmlld0NsYXNzZXMuaW5kZXhPZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSkgPiAtMVxuICAgICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWUobmFtZSkge1xuICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIG5hbWUgPSBTdHJpbmcobmFtZSk7XG4gICAgfVxuICAgIGlmICgvW15hLXowLTlcXC0jJCUmJyorLl5fYHx+XS9pLnRlc3QobmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgY2hhcmFjdGVyIGluIGhlYWRlciBmaWVsZCBuYW1lJylcbiAgICB9XG4gICAgcmV0dXJuIG5hbWUudG9Mb3dlckNhc2UoKVxuICB9XG5cbiAgZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgdmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIC8vIEJ1aWxkIGEgZGVzdHJ1Y3RpdmUgaXRlcmF0b3IgZm9yIHRoZSB2YWx1ZSBsaXN0XG4gIGZ1bmN0aW9uIGl0ZXJhdG9yRm9yKGl0ZW1zKSB7XG4gICAgdmFyIGl0ZXJhdG9yID0ge1xuICAgICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGl0ZW1zLnNoaWZ0KCk7XG4gICAgICAgIHJldHVybiB7ZG9uZTogdmFsdWUgPT09IHVuZGVmaW5lZCwgdmFsdWU6IHZhbHVlfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoc3VwcG9ydC5pdGVyYWJsZSkge1xuICAgICAgaXRlcmF0b3JbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaXRlcmF0b3JcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZXJhdG9yXG4gIH1cblxuICBmdW5jdGlvbiBIZWFkZXJzKGhlYWRlcnMpIHtcbiAgICB0aGlzLm1hcCA9IHt9O1xuXG4gICAgaWYgKGhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzKSB7XG4gICAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQobmFtZSwgdmFsdWUpO1xuICAgICAgfSwgdGhpcyk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGhlYWRlcnMpKSB7XG4gICAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKGhlYWRlclswXSwgaGVhZGVyWzFdKTtcbiAgICAgIH0sIHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoaGVhZGVycykge1xuICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIGhlYWRlcnNbbmFtZV0pO1xuICAgICAgfSwgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgSGVhZGVycy5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKTtcbiAgICB2YWx1ZSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKTtcbiAgICB2YXIgb2xkVmFsdWUgPSB0aGlzLm1hcFtuYW1lXTtcbiAgICB0aGlzLm1hcFtuYW1lXSA9IG9sZFZhbHVlID8gb2xkVmFsdWUgKyAnLCAnICsgdmFsdWUgOiB2YWx1ZTtcbiAgfTtcblxuICBIZWFkZXJzLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBmdW5jdGlvbihuYW1lKSB7XG4gICAgZGVsZXRlIHRoaXMubWFwW25vcm1hbGl6ZU5hbWUobmFtZSldO1xuICB9O1xuXG4gIEhlYWRlcnMucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKTtcbiAgICByZXR1cm4gdGhpcy5oYXMobmFtZSkgPyB0aGlzLm1hcFtuYW1lXSA6IG51bGxcbiAgfTtcblxuICBIZWFkZXJzLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwLmhhc093blByb3BlcnR5KG5vcm1hbGl6ZU5hbWUobmFtZSkpXG4gIH07XG5cbiAgSGVhZGVycy5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgICB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKTtcbiAgfTtcblxuICBIZWFkZXJzLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHtcbiAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMubWFwKSB7XG4gICAgICBpZiAodGhpcy5tYXAuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB0aGlzLm1hcFtuYW1lXSwgbmFtZSwgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEhlYWRlcnMucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgaXRlbXMgPSBbXTtcbiAgICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgIGl0ZW1zLnB1c2gobmFtZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxuICB9O1xuXG4gIEhlYWRlcnMucHJvdG90eXBlLnZhbHVlcyA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBpdGVtcyA9IFtdO1xuICAgIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgaXRlbXMucHVzaCh2YWx1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxuICB9O1xuXG4gIEhlYWRlcnMucHJvdG90eXBlLmVudHJpZXMgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgaXRlbXMgPSBbXTtcbiAgICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgIGl0ZW1zLnB1c2goW25hbWUsIHZhbHVlXSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxuICB9O1xuXG4gIGlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG4gICAgSGVhZGVycy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IEhlYWRlcnMucHJvdG90eXBlLmVudHJpZXM7XG4gIH1cblxuICBmdW5jdGlvbiBjb25zdW1lZChib2R5KSB7XG4gICAgaWYgKGJvZHkuYm9keVVzZWQpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKSlcbiAgICB9XG4gICAgYm9keS5ib2R5VXNlZCA9IHRydWU7XG4gIH1cblxuICBmdW5jdGlvbiBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQpO1xuICAgICAgfTtcbiAgICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChyZWFkZXIuZXJyb3IpO1xuICAgICAgfTtcbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhZEJsb2JBc0FycmF5QnVmZmVyKGJsb2IpIHtcbiAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICB2YXIgcHJvbWlzZSA9IGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpO1xuICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihibG9iKTtcbiAgICByZXR1cm4gcHJvbWlzZVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhZEJsb2JBc1RleHQoYmxvYikge1xuICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIHZhciBwcm9taXNlID0gZmlsZVJlYWRlclJlYWR5KHJlYWRlcik7XG4gICAgcmVhZGVyLnJlYWRBc1RleHQoYmxvYik7XG4gICAgcmV0dXJuIHByb21pc2VcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWRBcnJheUJ1ZmZlckFzVGV4dChidWYpIHtcbiAgICB2YXIgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1Zik7XG4gICAgdmFyIGNoYXJzID0gbmV3IEFycmF5KHZpZXcubGVuZ3RoKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmlldy5sZW5ndGg7IGkrKykge1xuICAgICAgY2hhcnNbaV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHZpZXdbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gY2hhcnMuam9pbignJylcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1ZmZlckNsb25lKGJ1Zikge1xuICAgIGlmIChidWYuc2xpY2UpIHtcbiAgICAgIHJldHVybiBidWYuc2xpY2UoMClcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYuYnl0ZUxlbmd0aCk7XG4gICAgICB2aWV3LnNldChuZXcgVWludDhBcnJheShidWYpKTtcbiAgICAgIHJldHVybiB2aWV3LmJ1ZmZlclxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIEJvZHkoKSB7XG4gICAgdGhpcy5ib2R5VXNlZCA9IGZhbHNlO1xuXG4gICAgdGhpcy5faW5pdEJvZHkgPSBmdW5jdGlvbihib2R5KSB7XG4gICAgICB0aGlzLl9ib2R5SW5pdCA9IGJvZHk7XG4gICAgICBpZiAoIWJvZHkpIHtcbiAgICAgICAgdGhpcy5fYm9keVRleHQgPSAnJztcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keTtcbiAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5ibG9iICYmIEJsb2IucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgICAgdGhpcy5fYm9keUJsb2IgPSBib2R5O1xuICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LmZvcm1EYXRhICYmIEZvcm1EYXRhLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgIHRoaXMuX2JvZHlGb3JtRGF0YSA9IGJvZHk7XG4gICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuc2VhcmNoUGFyYW1zICYmIFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHkudG9TdHJpbmcoKTtcbiAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5hcnJheUJ1ZmZlciAmJiBzdXBwb3J0LmJsb2IgJiYgaXNEYXRhVmlldyhib2R5KSkge1xuICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIgPSBidWZmZXJDbG9uZShib2R5LmJ1ZmZlcik7XG4gICAgICAgIC8vIElFIDEwLTExIGNhbid0IGhhbmRsZSBhIERhdGFWaWV3IGJvZHkuXG4gICAgICAgIHRoaXMuX2JvZHlJbml0ID0gbmV3IEJsb2IoW3RoaXMuX2JvZHlBcnJheUJ1ZmZlcl0pO1xuICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyICYmIChBcnJheUJ1ZmZlci5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSB8fCBpc0FycmF5QnVmZmVyVmlldyhib2R5KSkpIHtcbiAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyID0gYnVmZmVyQ2xvbmUoYm9keSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHkgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYm9keSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICd0ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLTgnKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QmxvYiAmJiB0aGlzLl9ib2R5QmxvYi50eXBlKSB7XG4gICAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgdGhpcy5fYm9keUJsb2IudHlwZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04Jyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgICAgdGhpcy5ibG9iID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMpO1xuICAgICAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUJsb2IpXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keUFycmF5QnVmZmVyXSkpXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIGJsb2InKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlUZXh0XSkpXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHRoaXMuYXJyYXlCdWZmZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgICAgIHJldHVybiBjb25zdW1lZCh0aGlzKSB8fCBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUFycmF5QnVmZmVyKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmJsb2IoKS50aGVuKHJlYWRCbG9iQXNBcnJheUJ1ZmZlcilcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLnRleHQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMpO1xuICAgICAgaWYgKHJlamVjdGVkKSB7XG4gICAgICAgIHJldHVybiByZWplY3RlZFxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fYm9keUJsb2IpIHtcbiAgICAgICAgcmV0dXJuIHJlYWRCbG9iQXNUZXh0KHRoaXMuX2JvZHlCbG9iKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZWFkQXJyYXlCdWZmZXJBc1RleHQodGhpcy5fYm9keUFycmF5QnVmZmVyKSlcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyB0ZXh0JylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keVRleHQpXG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmIChzdXBwb3J0LmZvcm1EYXRhKSB7XG4gICAgICB0aGlzLmZvcm1EYXRhID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHQoKS50aGVuKGRlY29kZSlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhpcy5qc29uID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy50ZXh0KCkudGhlbihKU09OLnBhcnNlKVxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLy8gSFRUUCBtZXRob2RzIHdob3NlIGNhcGl0YWxpemF0aW9uIHNob3VsZCBiZSBub3JtYWxpemVkXG4gIHZhciBtZXRob2RzID0gWydERUxFVEUnLCAnR0VUJywgJ0hFQUQnLCAnT1BUSU9OUycsICdQT1NUJywgJ1BVVCddO1xuXG4gIGZ1bmN0aW9uIG5vcm1hbGl6ZU1ldGhvZChtZXRob2QpIHtcbiAgICB2YXIgdXBjYXNlZCA9IG1ldGhvZC50b1VwcGVyQ2FzZSgpO1xuICAgIHJldHVybiBtZXRob2RzLmluZGV4T2YodXBjYXNlZCkgPiAtMSA/IHVwY2FzZWQgOiBtZXRob2RcbiAgfVxuXG4gIGZ1bmN0aW9uIFJlcXVlc3QoaW5wdXQsIG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICB2YXIgYm9keSA9IG9wdGlvbnMuYm9keTtcblxuICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIFJlcXVlc3QpIHtcbiAgICAgIGlmIChpbnB1dC5ib2R5VXNlZCkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKVxuICAgICAgfVxuICAgICAgdGhpcy51cmwgPSBpbnB1dC51cmw7XG4gICAgICB0aGlzLmNyZWRlbnRpYWxzID0gaW5wdXQuY3JlZGVudGlhbHM7XG4gICAgICBpZiAoIW9wdGlvbnMuaGVhZGVycykge1xuICAgICAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhpbnB1dC5oZWFkZXJzKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubWV0aG9kID0gaW5wdXQubWV0aG9kO1xuICAgICAgdGhpcy5tb2RlID0gaW5wdXQubW9kZTtcbiAgICAgIHRoaXMuc2lnbmFsID0gaW5wdXQuc2lnbmFsO1xuICAgICAgaWYgKCFib2R5ICYmIGlucHV0Ll9ib2R5SW5pdCAhPSBudWxsKSB7XG4gICAgICAgIGJvZHkgPSBpbnB1dC5fYm9keUluaXQ7XG4gICAgICAgIGlucHV0LmJvZHlVc2VkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cmwgPSBTdHJpbmcoaW5wdXQpO1xuICAgIH1cblxuICAgIHRoaXMuY3JlZGVudGlhbHMgPSBvcHRpb25zLmNyZWRlbnRpYWxzIHx8IHRoaXMuY3JlZGVudGlhbHMgfHwgJ3NhbWUtb3JpZ2luJztcbiAgICBpZiAob3B0aW9ucy5oZWFkZXJzIHx8ICF0aGlzLmhlYWRlcnMpIHtcbiAgICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XG4gICAgfVxuICAgIHRoaXMubWV0aG9kID0gbm9ybWFsaXplTWV0aG9kKG9wdGlvbnMubWV0aG9kIHx8IHRoaXMubWV0aG9kIHx8ICdHRVQnKTtcbiAgICB0aGlzLm1vZGUgPSBvcHRpb25zLm1vZGUgfHwgdGhpcy5tb2RlIHx8IG51bGw7XG4gICAgdGhpcy5zaWduYWwgPSBvcHRpb25zLnNpZ25hbCB8fCB0aGlzLnNpZ25hbDtcbiAgICB0aGlzLnJlZmVycmVyID0gbnVsbDtcblxuICAgIGlmICgodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpICYmIGJvZHkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0JvZHkgbm90IGFsbG93ZWQgZm9yIEdFVCBvciBIRUFEIHJlcXVlc3RzJylcbiAgICB9XG4gICAgdGhpcy5faW5pdEJvZHkoYm9keSk7XG4gIH1cblxuICBSZXF1ZXN0LnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBuZXcgUmVxdWVzdCh0aGlzLCB7Ym9keTogdGhpcy5fYm9keUluaXR9KVxuICB9O1xuXG4gIGZ1bmN0aW9uIGRlY29kZShib2R5KSB7XG4gICAgdmFyIGZvcm0gPSBuZXcgRm9ybURhdGEoKTtcbiAgICBib2R5XG4gICAgICAudHJpbSgpXG4gICAgICAuc3BsaXQoJyYnKVxuICAgICAgLmZvckVhY2goZnVuY3Rpb24oYnl0ZXMpIHtcbiAgICAgICAgaWYgKGJ5dGVzKSB7XG4gICAgICAgICAgdmFyIHNwbGl0ID0gYnl0ZXMuc3BsaXQoJz0nKTtcbiAgICAgICAgICB2YXIgbmFtZSA9IHNwbGl0LnNoaWZ0KCkucmVwbGFjZSgvXFwrL2csICcgJyk7XG4gICAgICAgICAgdmFyIHZhbHVlID0gc3BsaXQuam9pbignPScpLnJlcGxhY2UoL1xcKy9nLCAnICcpO1xuICAgICAgICAgIGZvcm0uYXBwZW5kKGRlY29kZVVSSUNvbXBvbmVudChuYW1lKSwgZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIHJldHVybiBmb3JtXG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUhlYWRlcnMocmF3SGVhZGVycykge1xuICAgIHZhciBoZWFkZXJzID0gbmV3IEhlYWRlcnMoKTtcbiAgICAvLyBSZXBsYWNlIGluc3RhbmNlcyBvZiBcXHJcXG4gYW5kIFxcbiBmb2xsb3dlZCBieSBhdCBsZWFzdCBvbmUgc3BhY2Ugb3IgaG9yaXpvbnRhbCB0YWIgd2l0aCBhIHNwYWNlXG4gICAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzAjc2VjdGlvbi0zLjJcbiAgICB2YXIgcHJlUHJvY2Vzc2VkSGVhZGVycyA9IHJhd0hlYWRlcnMucmVwbGFjZSgvXFxyP1xcbltcXHQgXSsvZywgJyAnKTtcbiAgICBwcmVQcm9jZXNzZWRIZWFkZXJzLnNwbGl0KC9cXHI/XFxuLykuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7XG4gICAgICB2YXIgcGFydHMgPSBsaW5lLnNwbGl0KCc6Jyk7XG4gICAgICB2YXIga2V5ID0gcGFydHMuc2hpZnQoKS50cmltKCk7XG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHBhcnRzLmpvaW4oJzonKS50cmltKCk7XG4gICAgICAgIGhlYWRlcnMuYXBwZW5kKGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBoZWFkZXJzXG4gIH1cblxuICBCb2R5LmNhbGwoUmVxdWVzdC5wcm90b3R5cGUpO1xuXG4gIGZ1bmN0aW9uIFJlc3BvbnNlKGJvZHlJbml0LCBvcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICBvcHRpb25zID0ge307XG4gICAgfVxuXG4gICAgdGhpcy50eXBlID0gJ2RlZmF1bHQnO1xuICAgIHRoaXMuc3RhdHVzID0gb3B0aW9ucy5zdGF0dXMgPT09IHVuZGVmaW5lZCA/IDIwMCA6IG9wdGlvbnMuc3RhdHVzO1xuICAgIHRoaXMub2sgPSB0aGlzLnN0YXR1cyA+PSAyMDAgJiYgdGhpcy5zdGF0dXMgPCAzMDA7XG4gICAgdGhpcy5zdGF0dXNUZXh0ID0gJ3N0YXR1c1RleHQnIGluIG9wdGlvbnMgPyBvcHRpb25zLnN0YXR1c1RleHQgOiAnT0snO1xuICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XG4gICAgdGhpcy51cmwgPSBvcHRpb25zLnVybCB8fCAnJztcbiAgICB0aGlzLl9pbml0Qm9keShib2R5SW5pdCk7XG4gIH1cblxuICBCb2R5LmNhbGwoUmVzcG9uc2UucHJvdG90eXBlKTtcblxuICBSZXNwb25zZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKHRoaXMuX2JvZHlJbml0LCB7XG4gICAgICBzdGF0dXM6IHRoaXMuc3RhdHVzLFxuICAgICAgc3RhdHVzVGV4dDogdGhpcy5zdGF0dXNUZXh0LFxuICAgICAgaGVhZGVyczogbmV3IEhlYWRlcnModGhpcy5oZWFkZXJzKSxcbiAgICAgIHVybDogdGhpcy51cmxcbiAgICB9KVxuICB9O1xuXG4gIFJlc3BvbnNlLmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IDAsIHN0YXR1c1RleHQ6ICcnfSk7XG4gICAgcmVzcG9uc2UudHlwZSA9ICdlcnJvcic7XG4gICAgcmV0dXJuIHJlc3BvbnNlXG4gIH07XG5cbiAgdmFyIHJlZGlyZWN0U3RhdHVzZXMgPSBbMzAxLCAzMDIsIDMwMywgMzA3LCAzMDhdO1xuXG4gIFJlc3BvbnNlLnJlZGlyZWN0ID0gZnVuY3Rpb24odXJsLCBzdGF0dXMpIHtcbiAgICBpZiAocmVkaXJlY3RTdGF0dXNlcy5pbmRleE9mKHN0YXR1cykgPT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBzdGF0dXMgY29kZScpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShudWxsLCB7c3RhdHVzOiBzdGF0dXMsIGhlYWRlcnM6IHtsb2NhdGlvbjogdXJsfX0pXG4gIH07XG5cbiAgZXhwb3J0cy5ET01FeGNlcHRpb24gPSBzZWxmLkRPTUV4Y2VwdGlvbjtcbiAgdHJ5IHtcbiAgICBuZXcgZXhwb3J0cy5ET01FeGNlcHRpb24oKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgZXhwb3J0cy5ET01FeGNlcHRpb24gPSBmdW5jdGlvbihtZXNzYWdlLCBuYW1lKSB7XG4gICAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgIHZhciBlcnJvciA9IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgdGhpcy5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIH07XG4gICAgZXhwb3J0cy5ET01FeGNlcHRpb24ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpO1xuICAgIGV4cG9ydHMuRE9NRXhjZXB0aW9uLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGV4cG9ydHMuRE9NRXhjZXB0aW9uO1xuICB9XG5cbiAgZnVuY3Rpb24gZmV0Y2goaW5wdXQsIGluaXQpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGlucHV0LCBpbml0KTtcblxuICAgICAgaWYgKHJlcXVlc3Quc2lnbmFsICYmIHJlcXVlc3Quc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgZXhwb3J0cy5ET01FeGNlcHRpb24oJ0Fib3J0ZWQnLCAnQWJvcnRFcnJvcicpKVxuICAgICAgfVxuXG4gICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG5cbiAgICAgIGZ1bmN0aW9uIGFib3J0WGhyKCkge1xuICAgICAgICB4aHIuYWJvcnQoKTtcbiAgICAgIH1cblxuICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IHtcbiAgICAgICAgICBzdGF0dXM6IHhoci5zdGF0dXMsXG4gICAgICAgICAgc3RhdHVzVGV4dDogeGhyLnN0YXR1c1RleHQsXG4gICAgICAgICAgaGVhZGVyczogcGFyc2VIZWFkZXJzKHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSB8fCAnJylcbiAgICAgICAgfTtcbiAgICAgICAgb3B0aW9ucy51cmwgPSAncmVzcG9uc2VVUkwnIGluIHhociA/IHhoci5yZXNwb25zZVVSTCA6IG9wdGlvbnMuaGVhZGVycy5nZXQoJ1gtUmVxdWVzdC1VUkwnKTtcbiAgICAgICAgdmFyIGJvZHkgPSAncmVzcG9uc2UnIGluIHhociA/IHhoci5yZXNwb25zZSA6IHhoci5yZXNwb25zZVRleHQ7XG4gICAgICAgIHJlc29sdmUobmV3IFJlc3BvbnNlKGJvZHksIG9wdGlvbnMpKTtcbiAgICAgIH07XG5cbiAgICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgVHlwZUVycm9yKCdOZXR3b3JrIHJlcXVlc3QgZmFpbGVkJykpO1xuICAgICAgfTtcblxuICAgICAgeGhyLm9udGltZW91dCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IGZhaWxlZCcpKTtcbiAgICAgIH07XG5cbiAgICAgIHhoci5vbmFib3J0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgZXhwb3J0cy5ET01FeGNlcHRpb24oJ0Fib3J0ZWQnLCAnQWJvcnRFcnJvcicpKTtcbiAgICAgIH07XG5cbiAgICAgIHhoci5vcGVuKHJlcXVlc3QubWV0aG9kLCByZXF1ZXN0LnVybCwgdHJ1ZSk7XG5cbiAgICAgIGlmIChyZXF1ZXN0LmNyZWRlbnRpYWxzID09PSAnaW5jbHVkZScpIHtcbiAgICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKHJlcXVlc3QuY3JlZGVudGlhbHMgPT09ICdvbWl0Jykge1xuICAgICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICgncmVzcG9uc2VUeXBlJyBpbiB4aHIgJiYgc3VwcG9ydC5ibG9iKSB7XG4gICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYmxvYic7XG4gICAgICB9XG5cbiAgICAgIHJlcXVlc3QuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIHZhbHVlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAocmVxdWVzdC5zaWduYWwpIHtcbiAgICAgICAgcmVxdWVzdC5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydFhocik7XG5cbiAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIC8vIERPTkUgKHN1Y2Nlc3Mgb3IgZmFpbHVyZSlcbiAgICAgICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT09IDQpIHtcbiAgICAgICAgICAgIHJlcXVlc3Quc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgYWJvcnRYaHIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgeGhyLnNlbmQodHlwZW9mIHJlcXVlc3QuX2JvZHlJbml0ID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiByZXF1ZXN0Ll9ib2R5SW5pdCk7XG4gICAgfSlcbiAgfVxuXG4gIGZldGNoLnBvbHlmaWxsID0gdHJ1ZTtcblxuICBpZiAoIXNlbGYuZmV0Y2gpIHtcbiAgICBzZWxmLmZldGNoID0gZmV0Y2g7XG4gICAgc2VsZi5IZWFkZXJzID0gSGVhZGVycztcbiAgICBzZWxmLlJlcXVlc3QgPSBSZXF1ZXN0O1xuICAgIHNlbGYuUmVzcG9uc2UgPSBSZXNwb25zZTtcbiAgfVxuXG4gIGV4cG9ydHMuSGVhZGVycyA9IEhlYWRlcnM7XG4gIGV4cG9ydHMuUmVxdWVzdCA9IFJlcXVlc3Q7XG4gIGV4cG9ydHMuUmVzcG9uc2UgPSBSZXNwb25zZTtcbiAgZXhwb3J0cy5mZXRjaCA9IGZldGNoO1xuXG4gIHJldHVybiBleHBvcnRzO1xuXG59KHt9KSk7XG59KShfX3NlbGZfXyk7XG5kZWxldGUgX19zZWxmX18uZmV0Y2gucG9seWZpbGxcbmV4cG9ydHMgPSBfX3NlbGZfXy5mZXRjaCAvLyBUbyBlbmFibGU6IGltcG9ydCBmZXRjaCBmcm9tICdjcm9zcy1mZXRjaCdcbmV4cG9ydHMuZGVmYXVsdCA9IF9fc2VsZl9fLmZldGNoIC8vIEZvciBUeXBlU2NyaXB0IGNvbnN1bWVycyB3aXRob3V0IGVzTW9kdWxlSW50ZXJvcC5cbmV4cG9ydHMuZmV0Y2ggPSBfX3NlbGZfXy5mZXRjaCAvLyBUbyBlbmFibGU6IGltcG9ydCB7ZmV0Y2h9IGZyb20gJ2Nyb3NzLWZldGNoJ1xuZXhwb3J0cy5IZWFkZXJzID0gX19zZWxmX18uSGVhZGVyc1xuZXhwb3J0cy5SZXF1ZXN0ID0gX19zZWxmX18uUmVxdWVzdFxuZXhwb3J0cy5SZXNwb25zZSA9IF9fc2VsZl9fLlJlc3BvbnNlXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNcbiIsIi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyA/IHNlbGYuRm9ybURhdGEgOiB3aW5kb3cuRm9ybURhdGE7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGRlZmluZUluc3BlY3Q7XG5cbnZhciBfaW52YXJpYW50ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9pbnZhcmlhbnQuanNcIikpO1xuXG52YXIgX25vZGVqc0N1c3RvbUluc3BlY3RTeW1ib2wgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL25vZGVqc0N1c3RvbUluc3BlY3RTeW1ib2wuanNcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqIFRoZSBgZGVmaW5lSW5zcGVjdCgpYCBmdW5jdGlvbiBkZWZpbmVzIGBpbnNwZWN0KClgIHByb3RvdHlwZSBtZXRob2QgYXMgYWxpYXMgb2YgYHRvSlNPTmBcbiAqL1xuZnVuY3Rpb24gZGVmaW5lSW5zcGVjdChjbGFzc09iamVjdCkge1xuICB2YXIgZm4gPSBjbGFzc09iamVjdC5wcm90b3R5cGUudG9KU09OO1xuICB0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicgfHwgKDAsIF9pbnZhcmlhbnQuZGVmYXVsdCkoMCk7XG4gIGNsYXNzT2JqZWN0LnByb3RvdHlwZS5pbnNwZWN0ID0gZm47IC8vIGlzdGFuYnVsIGlnbm9yZSBlbHNlIChTZWU6ICdodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMzE3JylcblxuICBpZiAoX25vZGVqc0N1c3RvbUluc3BlY3RTeW1ib2wuZGVmYXVsdCkge1xuICAgIGNsYXNzT2JqZWN0LnByb3RvdHlwZVtfbm9kZWpzQ3VzdG9tSW5zcGVjdFN5bWJvbC5kZWZhdWx0XSA9IGZuO1xuICB9XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGluc3BlY3Q7XG5cbnZhciBfbm9kZWpzQ3VzdG9tSW5zcGVjdFN5bWJvbCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbm9kZWpzQ3VzdG9tSW5zcGVjdFN5bWJvbC5qc1wiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxudmFyIE1BWF9BUlJBWV9MRU5HVEggPSAxMDtcbnZhciBNQVhfUkVDVVJTSVZFX0RFUFRIID0gMjtcbi8qKlxuICogVXNlZCB0byBwcmludCB2YWx1ZXMgaW4gZXJyb3IgbWVzc2FnZXMuXG4gKi9cblxuZnVuY3Rpb24gaW5zcGVjdCh2YWx1ZSkge1xuICByZXR1cm4gZm9ybWF0VmFsdWUodmFsdWUsIFtdKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0VmFsdWUodmFsdWUsIHNlZW5WYWx1ZXMpIHtcbiAgc3dpdGNoIChfdHlwZW9mKHZhbHVlKSkge1xuICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuXG4gICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgcmV0dXJuIHZhbHVlLm5hbWUgPyBcIltmdW5jdGlvbiBcIi5jb25jYXQodmFsdWUubmFtZSwgXCJdXCIpIDogJ1tmdW5jdGlvbl0nO1xuXG4gICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gJ251bGwnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm9ybWF0T2JqZWN0VmFsdWUodmFsdWUsIHNlZW5WYWx1ZXMpO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdE9iamVjdFZhbHVlKHZhbHVlLCBwcmV2aW91c2x5U2VlblZhbHVlcykge1xuICBpZiAocHJldmlvdXNseVNlZW5WYWx1ZXMuaW5kZXhPZih2YWx1ZSkgIT09IC0xKSB7XG4gICAgcmV0dXJuICdbQ2lyY3VsYXJdJztcbiAgfVxuXG4gIHZhciBzZWVuVmFsdWVzID0gW10uY29uY2F0KHByZXZpb3VzbHlTZWVuVmFsdWVzLCBbdmFsdWVdKTtcbiAgdmFyIGN1c3RvbUluc3BlY3RGbiA9IGdldEN1c3RvbUZuKHZhbHVlKTtcblxuICBpZiAoY3VzdG9tSW5zcGVjdEZuICE9PSB1bmRlZmluZWQpIHtcbiAgICB2YXIgY3VzdG9tVmFsdWUgPSBjdXN0b21JbnNwZWN0Rm4uY2FsbCh2YWx1ZSk7IC8vIGNoZWNrIGZvciBpbmZpbml0ZSByZWN1cnNpb25cblxuICAgIGlmIChjdXN0b21WYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgY3VzdG9tVmFsdWUgPT09ICdzdHJpbmcnID8gY3VzdG9tVmFsdWUgOiBmb3JtYXRWYWx1ZShjdXN0b21WYWx1ZSwgc2VlblZhbHVlcyk7XG4gICAgfVxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZvcm1hdEFycmF5KHZhbHVlLCBzZWVuVmFsdWVzKTtcbiAgfVxuXG4gIHJldHVybiBmb3JtYXRPYmplY3QodmFsdWUsIHNlZW5WYWx1ZXMpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRPYmplY3Qob2JqZWN0LCBzZWVuVmFsdWVzKSB7XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTtcblxuICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gJ3t9JztcbiAgfVxuXG4gIGlmIChzZWVuVmFsdWVzLmxlbmd0aCA+IE1BWF9SRUNVUlNJVkVfREVQVEgpIHtcbiAgICByZXR1cm4gJ1snICsgZ2V0T2JqZWN0VGFnKG9iamVjdCkgKyAnXSc7XG4gIH1cblxuICB2YXIgcHJvcGVydGllcyA9IGtleXMubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgdmFsdWUgPSBmb3JtYXRWYWx1ZShvYmplY3Rba2V5XSwgc2VlblZhbHVlcyk7XG4gICAgcmV0dXJuIGtleSArICc6ICcgKyB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiAneyAnICsgcHJvcGVydGllcy5qb2luKCcsICcpICsgJyB9Jztcbn1cblxuZnVuY3Rpb24gZm9ybWF0QXJyYXkoYXJyYXksIHNlZW5WYWx1ZXMpIHtcbiAgaWYgKGFycmF5Lmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnW10nO1xuICB9XG5cbiAgaWYgKHNlZW5WYWx1ZXMubGVuZ3RoID4gTUFYX1JFQ1VSU0lWRV9ERVBUSCkge1xuICAgIHJldHVybiAnW0FycmF5XSc7XG4gIH1cblxuICB2YXIgbGVuID0gTWF0aC5taW4oTUFYX0FSUkFZX0xFTkdUSCwgYXJyYXkubGVuZ3RoKTtcbiAgdmFyIHJlbWFpbmluZyA9IGFycmF5Lmxlbmd0aCAtIGxlbjtcbiAgdmFyIGl0ZW1zID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgIGl0ZW1zLnB1c2goZm9ybWF0VmFsdWUoYXJyYXlbaV0sIHNlZW5WYWx1ZXMpKTtcbiAgfVxuXG4gIGlmIChyZW1haW5pbmcgPT09IDEpIHtcbiAgICBpdGVtcy5wdXNoKCcuLi4gMSBtb3JlIGl0ZW0nKTtcbiAgfSBlbHNlIGlmIChyZW1haW5pbmcgPiAxKSB7XG4gICAgaXRlbXMucHVzaChcIi4uLiBcIi5jb25jYXQocmVtYWluaW5nLCBcIiBtb3JlIGl0ZW1zXCIpKTtcbiAgfVxuXG4gIHJldHVybiAnWycgKyBpdGVtcy5qb2luKCcsICcpICsgJ10nO1xufVxuXG5mdW5jdGlvbiBnZXRDdXN0b21GbihvYmplY3QpIHtcbiAgdmFyIGN1c3RvbUluc3BlY3RGbiA9IG9iamVjdFtTdHJpbmcoX25vZGVqc0N1c3RvbUluc3BlY3RTeW1ib2wuZGVmYXVsdCldO1xuXG4gIGlmICh0eXBlb2YgY3VzdG9tSW5zcGVjdEZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGN1c3RvbUluc3BlY3RGbjtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqZWN0Lmluc3BlY3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gb2JqZWN0Lmluc3BlY3Q7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0T2JqZWN0VGFnKG9iamVjdCkge1xuICB2YXIgdGFnID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkucmVwbGFjZSgvXlxcW29iamVjdCAvLCAnJykucmVwbGFjZSgvXSQvLCAnJyk7XG5cbiAgaWYgKHRhZyA9PT0gJ09iamVjdCcgJiYgdHlwZW9mIG9iamVjdC5jb25zdHJ1Y3RvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciBuYW1lID0gb2JqZWN0LmNvbnN0cnVjdG9yLm5hbWU7XG5cbiAgICBpZiAodHlwZW9mIG5hbWUgPT09ICdzdHJpbmcnICYmIG5hbWUgIT09ICcnKSB7XG4gICAgICByZXR1cm4gbmFtZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFnO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpbnZhcmlhbnQ7XG5cbmZ1bmN0aW9uIGludmFyaWFudChjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgdmFyIGJvb2xlYW5Db25kaXRpb24gPSBCb29sZWFuKGNvbmRpdGlvbik7IC8vIGlzdGFuYnVsIGlnbm9yZSBlbHNlIChTZWUgdHJhbnNmb3JtYXRpb24gZG9uZSBpbiAnLi9yZXNvdXJjZXMvaW5saW5lSW52YXJpYW50LmpzJylcblxuICBpZiAoIWJvb2xlYW5Db25kaXRpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSAhPSBudWxsID8gbWVzc2FnZSA6ICdVbmV4cGVjdGVkIGludmFyaWFudCB0cmlnZ2VyZWQuJyk7XG4gIH1cbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuLy8gaXN0YW5idWwgaWdub3JlIG5leHQgKFNlZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIzMTcnKVxudmFyIG5vZGVqc0N1c3RvbUluc3BlY3RTeW1ib2wgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBTeW1ib2wuZm9yID09PSAnZnVuY3Rpb24nID8gU3ltYm9sLmZvcignbm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20nKSA6IHVuZGVmaW5lZDtcbnZhciBfZGVmYXVsdCA9IG5vZGVqc0N1c3RvbUluc3BlY3RTeW1ib2w7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5pc05vZGUgPSBpc05vZGU7XG5leHBvcnRzLlRva2VuID0gZXhwb3J0cy5Mb2NhdGlvbiA9IHZvaWQgMDtcblxudmFyIF9kZWZpbmVJbnNwZWN0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vanN1dGlscy9kZWZpbmVJbnNwZWN0LmpzXCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiBDb250YWlucyBhIHJhbmdlIG9mIFVURi04IGNoYXJhY3RlciBvZmZzZXRzIGFuZCB0b2tlbiByZWZlcmVuY2VzIHRoYXRcbiAqIGlkZW50aWZ5IHRoZSByZWdpb24gb2YgdGhlIHNvdXJjZSBmcm9tIHdoaWNoIHRoZSBBU1QgZGVyaXZlZC5cbiAqL1xudmFyIExvY2F0aW9uID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIFRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGF0IHdoaWNoIHRoaXMgTm9kZSBiZWdpbnMuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGUgY2hhcmFjdGVyIG9mZnNldCBhdCB3aGljaCB0aGlzIE5vZGUgZW5kcy5cbiAgICovXG5cbiAgLyoqXG4gICAqIFRoZSBUb2tlbiBhdCB3aGljaCB0aGlzIE5vZGUgYmVnaW5zLlxuICAgKi9cblxuICAvKipcbiAgICogVGhlIFRva2VuIGF0IHdoaWNoIHRoaXMgTm9kZSBlbmRzLlxuICAgKi9cblxuICAvKipcbiAgICogVGhlIFNvdXJjZSBkb2N1bWVudCB0aGUgQVNUIHJlcHJlc2VudHMuXG4gICAqL1xuICBmdW5jdGlvbiBMb2NhdGlvbihzdGFydFRva2VuLCBlbmRUb2tlbiwgc291cmNlKSB7XG4gICAgdGhpcy5zdGFydCA9IHN0YXJ0VG9rZW4uc3RhcnQ7XG4gICAgdGhpcy5lbmQgPSBlbmRUb2tlbi5lbmQ7XG4gICAgdGhpcy5zdGFydFRva2VuID0gc3RhcnRUb2tlbjtcbiAgICB0aGlzLmVuZFRva2VuID0gZW5kVG9rZW47XG4gICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XG4gIH1cblxuICB2YXIgX3Byb3RvID0gTG9jYXRpb24ucHJvdG90eXBlO1xuXG4gIF9wcm90by50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0OiB0aGlzLnN0YXJ0LFxuICAgICAgZW5kOiB0aGlzLmVuZFxuICAgIH07XG4gIH07XG5cbiAgcmV0dXJuIExvY2F0aW9uO1xufSgpOyAvLyBQcmludCBhIHNpbXBsaWZpZWQgZm9ybSB3aGVuIGFwcGVhcmluZyBpbiBgaW5zcGVjdGAgYW5kIGB1dGlsLmluc3BlY3RgLlxuXG5cbmV4cG9ydHMuTG9jYXRpb24gPSBMb2NhdGlvbjtcbigwLCBfZGVmaW5lSW5zcGVjdC5kZWZhdWx0KShMb2NhdGlvbik7XG4vKipcbiAqIFJlcHJlc2VudHMgYSByYW5nZSBvZiBjaGFyYWN0ZXJzIHJlcHJlc2VudGVkIGJ5IGEgbGV4aWNhbCB0b2tlblxuICogd2l0aGluIGEgU291cmNlLlxuICovXG5cbnZhciBUb2tlbiA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBUaGUga2luZCBvZiBUb2tlbi5cbiAgICovXG5cbiAgLyoqXG4gICAqIFRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGF0IHdoaWNoIHRoaXMgTm9kZSBiZWdpbnMuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGUgY2hhcmFjdGVyIG9mZnNldCBhdCB3aGljaCB0aGlzIE5vZGUgZW5kcy5cbiAgICovXG5cbiAgLyoqXG4gICAqIFRoZSAxLWluZGV4ZWQgbGluZSBudW1iZXIgb24gd2hpY2ggdGhpcyBUb2tlbiBhcHBlYXJzLlxuICAgKi9cblxuICAvKipcbiAgICogVGhlIDEtaW5kZXhlZCBjb2x1bW4gbnVtYmVyIGF0IHdoaWNoIHRoaXMgVG9rZW4gYmVnaW5zLlxuICAgKi9cblxuICAvKipcbiAgICogRm9yIG5vbi1wdW5jdHVhdGlvbiB0b2tlbnMsIHJlcHJlc2VudHMgdGhlIGludGVycHJldGVkIHZhbHVlIG9mIHRoZSB0b2tlbi5cbiAgICovXG5cbiAgLyoqXG4gICAqIFRva2VucyBleGlzdCBhcyBub2RlcyBpbiBhIGRvdWJsZS1saW5rZWQtbGlzdCBhbW9uZ3N0IGFsbCB0b2tlbnNcbiAgICogaW5jbHVkaW5nIGlnbm9yZWQgdG9rZW5zLiA8U09GPiBpcyBhbHdheXMgdGhlIGZpcnN0IG5vZGUgYW5kIDxFT0Y+XG4gICAqIHRoZSBsYXN0LlxuICAgKi9cbiAgZnVuY3Rpb24gVG9rZW4oa2luZCwgc3RhcnQsIGVuZCwgbGluZSwgY29sdW1uLCBwcmV2LCB2YWx1ZSkge1xuICAgIHRoaXMua2luZCA9IGtpbmQ7XG4gICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICAgIHRoaXMuZW5kID0gZW5kO1xuICAgIHRoaXMubGluZSA9IGxpbmU7XG4gICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMucHJldiA9IHByZXY7XG4gICAgdGhpcy5uZXh0ID0gbnVsbDtcbiAgfVxuXG4gIHZhciBfcHJvdG8yID0gVG9rZW4ucHJvdG90eXBlO1xuXG4gIF9wcm90bzIudG9KU09OID0gZnVuY3Rpb24gdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICBraW5kOiB0aGlzLmtpbmQsXG4gICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgIGxpbmU6IHRoaXMubGluZSxcbiAgICAgIGNvbHVtbjogdGhpcy5jb2x1bW5cbiAgICB9O1xuICB9O1xuXG4gIHJldHVybiBUb2tlbjtcbn0oKTsgLy8gUHJpbnQgYSBzaW1wbGlmaWVkIGZvcm0gd2hlbiBhcHBlYXJpbmcgaW4gYGluc3BlY3RgIGFuZCBgdXRpbC5pbnNwZWN0YC5cblxuXG5leHBvcnRzLlRva2VuID0gVG9rZW47XG4oMCwgX2RlZmluZUluc3BlY3QuZGVmYXVsdCkoVG9rZW4pO1xuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG5mdW5jdGlvbiBpc05vZGUobWF5YmVOb2RlKSB7XG4gIHJldHVybiBtYXliZU5vZGUgIT0gbnVsbCAmJiB0eXBlb2YgbWF5YmVOb2RlLmtpbmQgPT09ICdzdHJpbmcnO1xufVxuLyoqXG4gKiBUaGUgbGlzdCBvZiBhbGwgcG9zc2libGUgQVNUIG5vZGUgdHlwZXMuXG4gKi9cbiIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWRlbnRCbG9ja1N0cmluZ1ZhbHVlID0gZGVkZW50QmxvY2tTdHJpbmdWYWx1ZTtcbmV4cG9ydHMuZ2V0QmxvY2tTdHJpbmdJbmRlbnRhdGlvbiA9IGdldEJsb2NrU3RyaW5nSW5kZW50YXRpb247XG5leHBvcnRzLnByaW50QmxvY2tTdHJpbmcgPSBwcmludEJsb2NrU3RyaW5nO1xuXG4vKipcbiAqIFByb2R1Y2VzIHRoZSB2YWx1ZSBvZiBhIGJsb2NrIHN0cmluZyBmcm9tIGl0cyBwYXJzZWQgcmF3IHZhbHVlLCBzaW1pbGFyIHRvXG4gKiBDb2ZmZWVTY3JpcHQncyBibG9jayBzdHJpbmcsIFB5dGhvbidzIGRvY3N0cmluZyB0cmltIG9yIFJ1YnkncyBzdHJpcF9oZXJlZG9jLlxuICpcbiAqIFRoaXMgaW1wbGVtZW50cyB0aGUgR3JhcGhRTCBzcGVjJ3MgQmxvY2tTdHJpbmdWYWx1ZSgpIHN0YXRpYyBhbGdvcml0aG0uXG4gKlxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIGRlZGVudEJsb2NrU3RyaW5nVmFsdWUocmF3U3RyaW5nKSB7XG4gIC8vIEV4cGFuZCBhIGJsb2NrIHN0cmluZydzIHJhdyB2YWx1ZSBpbnRvIGluZGVwZW5kZW50IGxpbmVzLlxuICB2YXIgbGluZXMgPSByYXdTdHJpbmcuc3BsaXQoL1xcclxcbnxbXFxuXFxyXS9nKTsgLy8gUmVtb3ZlIGNvbW1vbiBpbmRlbnRhdGlvbiBmcm9tIGFsbCBsaW5lcyBidXQgZmlyc3QuXG5cbiAgdmFyIGNvbW1vbkluZGVudCA9IGdldEJsb2NrU3RyaW5nSW5kZW50YXRpb24ocmF3U3RyaW5nKTtcblxuICBpZiAoY29tbW9uSW5kZW50ICE9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGluZXNbaV0gPSBsaW5lc1tpXS5zbGljZShjb21tb25JbmRlbnQpO1xuICAgIH1cbiAgfSAvLyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgYmxhbmsgbGluZXMuXG5cblxuICB2YXIgc3RhcnRMaW5lID0gMDtcblxuICB3aGlsZSAoc3RhcnRMaW5lIDwgbGluZXMubGVuZ3RoICYmIGlzQmxhbmsobGluZXNbc3RhcnRMaW5lXSkpIHtcbiAgICArK3N0YXJ0TGluZTtcbiAgfVxuXG4gIHZhciBlbmRMaW5lID0gbGluZXMubGVuZ3RoO1xuXG4gIHdoaWxlIChlbmRMaW5lID4gc3RhcnRMaW5lICYmIGlzQmxhbmsobGluZXNbZW5kTGluZSAtIDFdKSkge1xuICAgIC0tZW5kTGluZTtcbiAgfSAvLyBSZXR1cm4gYSBzdHJpbmcgb2YgdGhlIGxpbmVzIGpvaW5lZCB3aXRoIFUrMDAwQS5cblxuXG4gIHJldHVybiBsaW5lcy5zbGljZShzdGFydExpbmUsIGVuZExpbmUpLmpvaW4oJ1xcbicpO1xufVxuXG5mdW5jdGlvbiBpc0JsYW5rKHN0cikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgIGlmIChzdHJbaV0gIT09ICcgJyAmJiBzdHJbaV0gIT09ICdcXHQnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5cblxuZnVuY3Rpb24gZ2V0QmxvY2tTdHJpbmdJbmRlbnRhdGlvbih2YWx1ZSkge1xuICB2YXIgX2NvbW1vbkluZGVudDtcblxuICB2YXIgaXNGaXJzdExpbmUgPSB0cnVlO1xuICB2YXIgaXNFbXB0eUxpbmUgPSB0cnVlO1xuICB2YXIgaW5kZW50ID0gMDtcbiAgdmFyIGNvbW1vbkluZGVudCA9IG51bGw7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7ICsraSkge1xuICAgIHN3aXRjaCAodmFsdWUuY2hhckNvZGVBdChpKSkge1xuICAgICAgY2FzZSAxMzpcbiAgICAgICAgLy8gIFxcclxuICAgICAgICBpZiAodmFsdWUuY2hhckNvZGVBdChpICsgMSkgPT09IDEwKSB7XG4gICAgICAgICAgKytpOyAvLyBza2lwIFxcclxcbiBhcyBvbmUgc3ltYm9sXG4gICAgICAgIH1cblxuICAgICAgLy8gZmFsbHMgdGhyb3VnaFxuXG4gICAgICBjYXNlIDEwOlxuICAgICAgICAvLyAgXFxuXG4gICAgICAgIGlzRmlyc3RMaW5lID0gZmFsc2U7XG4gICAgICAgIGlzRW1wdHlMaW5lID0gdHJ1ZTtcbiAgICAgICAgaW5kZW50ID0gMDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgOTogLy8gICBcXHRcblxuICAgICAgY2FzZSAzMjpcbiAgICAgICAgLy8gIDxzcGFjZT5cbiAgICAgICAgKytpbmRlbnQ7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAoaXNFbXB0eUxpbmUgJiYgIWlzRmlyc3RMaW5lICYmIChjb21tb25JbmRlbnQgPT09IG51bGwgfHwgaW5kZW50IDwgY29tbW9uSW5kZW50KSkge1xuICAgICAgICAgIGNvbW1vbkluZGVudCA9IGluZGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlzRW1wdHlMaW5lID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChfY29tbW9uSW5kZW50ID0gY29tbW9uSW5kZW50KSAhPT0gbnVsbCAmJiBfY29tbW9uSW5kZW50ICE9PSB2b2lkIDAgPyBfY29tbW9uSW5kZW50IDogMDtcbn1cbi8qKlxuICogUHJpbnQgYSBibG9jayBzdHJpbmcgaW4gdGhlIGluZGVudGVkIGJsb2NrIGZvcm0gYnkgYWRkaW5nIGEgbGVhZGluZyBhbmRcbiAqIHRyYWlsaW5nIGJsYW5rIGxpbmUuIEhvd2V2ZXIsIGlmIGEgYmxvY2sgc3RyaW5nIHN0YXJ0cyB3aXRoIHdoaXRlc3BhY2UgYW5kIGlzXG4gKiBhIHNpbmdsZS1saW5lLCBhZGRpbmcgYSBsZWFkaW5nIGJsYW5rIGxpbmUgd291bGQgc3RyaXAgdGhhdCB3aGl0ZXNwYWNlLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5cblxuZnVuY3Rpb24gcHJpbnRCbG9ja1N0cmluZyh2YWx1ZSkge1xuICB2YXIgaW5kZW50YXRpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6ICcnO1xuICB2YXIgcHJlZmVyTXVsdGlwbGVMaW5lcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogZmFsc2U7XG4gIHZhciBpc1NpbmdsZUxpbmUgPSB2YWx1ZS5pbmRleE9mKCdcXG4nKSA9PT0gLTE7XG4gIHZhciBoYXNMZWFkaW5nU3BhY2UgPSB2YWx1ZVswXSA9PT0gJyAnIHx8IHZhbHVlWzBdID09PSAnXFx0JztcbiAgdmFyIGhhc1RyYWlsaW5nUXVvdGUgPSB2YWx1ZVt2YWx1ZS5sZW5ndGggLSAxXSA9PT0gJ1wiJztcbiAgdmFyIGhhc1RyYWlsaW5nU2xhc2ggPSB2YWx1ZVt2YWx1ZS5sZW5ndGggLSAxXSA9PT0gJ1xcXFwnO1xuICB2YXIgcHJpbnRBc011bHRpcGxlTGluZXMgPSAhaXNTaW5nbGVMaW5lIHx8IGhhc1RyYWlsaW5nUXVvdGUgfHwgaGFzVHJhaWxpbmdTbGFzaCB8fCBwcmVmZXJNdWx0aXBsZUxpbmVzO1xuICB2YXIgcmVzdWx0ID0gJyc7IC8vIEZvcm1hdCBhIG11bHRpLWxpbmUgYmxvY2sgcXVvdGUgdG8gYWNjb3VudCBmb3IgbGVhZGluZyBzcGFjZS5cblxuICBpZiAocHJpbnRBc011bHRpcGxlTGluZXMgJiYgIShpc1NpbmdsZUxpbmUgJiYgaGFzTGVhZGluZ1NwYWNlKSkge1xuICAgIHJlc3VsdCArPSAnXFxuJyArIGluZGVudGF0aW9uO1xuICB9XG5cbiAgcmVzdWx0ICs9IGluZGVudGF0aW9uID8gdmFsdWUucmVwbGFjZSgvXFxuL2csICdcXG4nICsgaW5kZW50YXRpb24pIDogdmFsdWU7XG5cbiAgaWYgKHByaW50QXNNdWx0aXBsZUxpbmVzKSB7XG4gICAgcmVzdWx0ICs9ICdcXG4nO1xuICB9XG5cbiAgcmV0dXJuICdcIlwiXCInICsgcmVzdWx0LnJlcGxhY2UoL1wiXCJcIi9nLCAnXFxcXFwiXCJcIicpICsgJ1wiXCJcIic7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMucHJpbnQgPSBwcmludDtcblxudmFyIF92aXNpdG9yID0gcmVxdWlyZShcIi4vdmlzaXRvci5qc1wiKTtcblxudmFyIF9ibG9ja1N0cmluZyA9IHJlcXVpcmUoXCIuL2Jsb2NrU3RyaW5nLmpzXCIpO1xuXG4vKipcbiAqIENvbnZlcnRzIGFuIEFTVCBpbnRvIGEgc3RyaW5nLCB1c2luZyBvbmUgc2V0IG9mIHJlYXNvbmFibGVcbiAqIGZvcm1hdHRpbmcgcnVsZXMuXG4gKi9cbmZ1bmN0aW9uIHByaW50KGFzdCkge1xuICByZXR1cm4gKDAsIF92aXNpdG9yLnZpc2l0KShhc3QsIHtcbiAgICBsZWF2ZTogcHJpbnREb2NBU1RSZWR1Y2VyXG4gIH0pO1xufVxuXG52YXIgTUFYX0xJTkVfTEVOR1RIID0gODA7IC8vIFRPRE86IHByb3ZpZGUgYmV0dGVyIHR5cGUgY292ZXJhZ2UgaW4gZnV0dXJlXG5cbnZhciBwcmludERvY0FTVFJlZHVjZXIgPSB7XG4gIE5hbWU6IGZ1bmN0aW9uIE5hbWUobm9kZSkge1xuICAgIHJldHVybiBub2RlLnZhbHVlO1xuICB9LFxuICBWYXJpYWJsZTogZnVuY3Rpb24gVmFyaWFibGUobm9kZSkge1xuICAgIHJldHVybiAnJCcgKyBub2RlLm5hbWU7XG4gIH0sXG4gIC8vIERvY3VtZW50XG4gIERvY3VtZW50OiBmdW5jdGlvbiBEb2N1bWVudChub2RlKSB7XG4gICAgcmV0dXJuIGpvaW4obm9kZS5kZWZpbml0aW9ucywgJ1xcblxcbicpICsgJ1xcbic7XG4gIH0sXG4gIE9wZXJhdGlvbkRlZmluaXRpb246IGZ1bmN0aW9uIE9wZXJhdGlvbkRlZmluaXRpb24obm9kZSkge1xuICAgIHZhciBvcCA9IG5vZGUub3BlcmF0aW9uO1xuICAgIHZhciBuYW1lID0gbm9kZS5uYW1lO1xuICAgIHZhciB2YXJEZWZzID0gd3JhcCgnKCcsIGpvaW4obm9kZS52YXJpYWJsZURlZmluaXRpb25zLCAnLCAnKSwgJyknKTtcbiAgICB2YXIgZGlyZWN0aXZlcyA9IGpvaW4obm9kZS5kaXJlY3RpdmVzLCAnICcpO1xuICAgIHZhciBzZWxlY3Rpb25TZXQgPSBub2RlLnNlbGVjdGlvblNldDsgLy8gQW5vbnltb3VzIHF1ZXJpZXMgd2l0aCBubyBkaXJlY3RpdmVzIG9yIHZhcmlhYmxlIGRlZmluaXRpb25zIGNhbiB1c2VcbiAgICAvLyB0aGUgcXVlcnkgc2hvcnQgZm9ybS5cblxuICAgIHJldHVybiAhbmFtZSAmJiAhZGlyZWN0aXZlcyAmJiAhdmFyRGVmcyAmJiBvcCA9PT0gJ3F1ZXJ5JyA/IHNlbGVjdGlvblNldCA6IGpvaW4oW29wLCBqb2luKFtuYW1lLCB2YXJEZWZzXSksIGRpcmVjdGl2ZXMsIHNlbGVjdGlvblNldF0sICcgJyk7XG4gIH0sXG4gIFZhcmlhYmxlRGVmaW5pdGlvbjogZnVuY3Rpb24gVmFyaWFibGVEZWZpbml0aW9uKF9yZWYpIHtcbiAgICB2YXIgdmFyaWFibGUgPSBfcmVmLnZhcmlhYmxlLFxuICAgICAgICB0eXBlID0gX3JlZi50eXBlLFxuICAgICAgICBkZWZhdWx0VmFsdWUgPSBfcmVmLmRlZmF1bHRWYWx1ZSxcbiAgICAgICAgZGlyZWN0aXZlcyA9IF9yZWYuZGlyZWN0aXZlcztcbiAgICByZXR1cm4gdmFyaWFibGUgKyAnOiAnICsgdHlwZSArIHdyYXAoJyA9ICcsIGRlZmF1bHRWYWx1ZSkgKyB3cmFwKCcgJywgam9pbihkaXJlY3RpdmVzLCAnICcpKTtcbiAgfSxcbiAgU2VsZWN0aW9uU2V0OiBmdW5jdGlvbiBTZWxlY3Rpb25TZXQoX3JlZjIpIHtcbiAgICB2YXIgc2VsZWN0aW9ucyA9IF9yZWYyLnNlbGVjdGlvbnM7XG4gICAgcmV0dXJuIGJsb2NrKHNlbGVjdGlvbnMpO1xuICB9LFxuICBGaWVsZDogZnVuY3Rpb24gRmllbGQoX3JlZjMpIHtcbiAgICB2YXIgYWxpYXMgPSBfcmVmMy5hbGlhcyxcbiAgICAgICAgbmFtZSA9IF9yZWYzLm5hbWUsXG4gICAgICAgIGFyZ3MgPSBfcmVmMy5hcmd1bWVudHMsXG4gICAgICAgIGRpcmVjdGl2ZXMgPSBfcmVmMy5kaXJlY3RpdmVzLFxuICAgICAgICBzZWxlY3Rpb25TZXQgPSBfcmVmMy5zZWxlY3Rpb25TZXQ7XG4gICAgdmFyIHByZWZpeCA9IHdyYXAoJycsIGFsaWFzLCAnOiAnKSArIG5hbWU7XG4gICAgdmFyIGFyZ3NMaW5lID0gcHJlZml4ICsgd3JhcCgnKCcsIGpvaW4oYXJncywgJywgJyksICcpJyk7XG5cbiAgICBpZiAoYXJnc0xpbmUubGVuZ3RoID4gTUFYX0xJTkVfTEVOR1RIKSB7XG4gICAgICBhcmdzTGluZSA9IHByZWZpeCArIHdyYXAoJyhcXG4nLCBpbmRlbnQoam9pbihhcmdzLCAnXFxuJykpLCAnXFxuKScpO1xuICAgIH1cblxuICAgIHJldHVybiBqb2luKFthcmdzTGluZSwgam9pbihkaXJlY3RpdmVzLCAnICcpLCBzZWxlY3Rpb25TZXRdLCAnICcpO1xuICB9LFxuICBBcmd1bWVudDogZnVuY3Rpb24gQXJndW1lbnQoX3JlZjQpIHtcbiAgICB2YXIgbmFtZSA9IF9yZWY0Lm5hbWUsXG4gICAgICAgIHZhbHVlID0gX3JlZjQudmFsdWU7XG4gICAgcmV0dXJuIG5hbWUgKyAnOiAnICsgdmFsdWU7XG4gIH0sXG4gIC8vIEZyYWdtZW50c1xuICBGcmFnbWVudFNwcmVhZDogZnVuY3Rpb24gRnJhZ21lbnRTcHJlYWQoX3JlZjUpIHtcbiAgICB2YXIgbmFtZSA9IF9yZWY1Lm5hbWUsXG4gICAgICAgIGRpcmVjdGl2ZXMgPSBfcmVmNS5kaXJlY3RpdmVzO1xuICAgIHJldHVybiAnLi4uJyArIG5hbWUgKyB3cmFwKCcgJywgam9pbihkaXJlY3RpdmVzLCAnICcpKTtcbiAgfSxcbiAgSW5saW5lRnJhZ21lbnQ6IGZ1bmN0aW9uIElubGluZUZyYWdtZW50KF9yZWY2KSB7XG4gICAgdmFyIHR5cGVDb25kaXRpb24gPSBfcmVmNi50eXBlQ29uZGl0aW9uLFxuICAgICAgICBkaXJlY3RpdmVzID0gX3JlZjYuZGlyZWN0aXZlcyxcbiAgICAgICAgc2VsZWN0aW9uU2V0ID0gX3JlZjYuc2VsZWN0aW9uU2V0O1xuICAgIHJldHVybiBqb2luKFsnLi4uJywgd3JhcCgnb24gJywgdHlwZUNvbmRpdGlvbiksIGpvaW4oZGlyZWN0aXZlcywgJyAnKSwgc2VsZWN0aW9uU2V0XSwgJyAnKTtcbiAgfSxcbiAgRnJhZ21lbnREZWZpbml0aW9uOiBmdW5jdGlvbiBGcmFnbWVudERlZmluaXRpb24oX3JlZjcpIHtcbiAgICB2YXIgbmFtZSA9IF9yZWY3Lm5hbWUsXG4gICAgICAgIHR5cGVDb25kaXRpb24gPSBfcmVmNy50eXBlQ29uZGl0aW9uLFxuICAgICAgICB2YXJpYWJsZURlZmluaXRpb25zID0gX3JlZjcudmFyaWFibGVEZWZpbml0aW9ucyxcbiAgICAgICAgZGlyZWN0aXZlcyA9IF9yZWY3LmRpcmVjdGl2ZXMsXG4gICAgICAgIHNlbGVjdGlvblNldCA9IF9yZWY3LnNlbGVjdGlvblNldDtcbiAgICByZXR1cm4gKC8vIE5vdGU6IGZyYWdtZW50IHZhcmlhYmxlIGRlZmluaXRpb25zIGFyZSBleHBlcmltZW50YWwgYW5kIG1heSBiZSBjaGFuZ2VkXG4gICAgICAvLyBvciByZW1vdmVkIGluIHRoZSBmdXR1cmUuXG4gICAgICBcImZyYWdtZW50IFwiLmNvbmNhdChuYW1lKS5jb25jYXQod3JhcCgnKCcsIGpvaW4odmFyaWFibGVEZWZpbml0aW9ucywgJywgJyksICcpJyksIFwiIFwiKSArIFwib24gXCIuY29uY2F0KHR5cGVDb25kaXRpb24sIFwiIFwiKS5jb25jYXQod3JhcCgnJywgam9pbihkaXJlY3RpdmVzLCAnICcpLCAnICcpKSArIHNlbGVjdGlvblNldFxuICAgICk7XG4gIH0sXG4gIC8vIFZhbHVlXG4gIEludFZhbHVlOiBmdW5jdGlvbiBJbnRWYWx1ZShfcmVmOCkge1xuICAgIHZhciB2YWx1ZSA9IF9yZWY4LnZhbHVlO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfSxcbiAgRmxvYXRWYWx1ZTogZnVuY3Rpb24gRmxvYXRWYWx1ZShfcmVmOSkge1xuICAgIHZhciB2YWx1ZSA9IF9yZWY5LnZhbHVlO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfSxcbiAgU3RyaW5nVmFsdWU6IGZ1bmN0aW9uIFN0cmluZ1ZhbHVlKF9yZWYxMCwga2V5KSB7XG4gICAgdmFyIHZhbHVlID0gX3JlZjEwLnZhbHVlLFxuICAgICAgICBpc0Jsb2NrU3RyaW5nID0gX3JlZjEwLmJsb2NrO1xuICAgIHJldHVybiBpc0Jsb2NrU3RyaW5nID8gKDAsIF9ibG9ja1N0cmluZy5wcmludEJsb2NrU3RyaW5nKSh2YWx1ZSwga2V5ID09PSAnZGVzY3JpcHRpb24nID8gJycgOiAnICAnKSA6IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgfSxcbiAgQm9vbGVhblZhbHVlOiBmdW5jdGlvbiBCb29sZWFuVmFsdWUoX3JlZjExKSB7XG4gICAgdmFyIHZhbHVlID0gX3JlZjExLnZhbHVlO1xuICAgIHJldHVybiB2YWx1ZSA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gIH0sXG4gIE51bGxWYWx1ZTogZnVuY3Rpb24gTnVsbFZhbHVlKCkge1xuICAgIHJldHVybiAnbnVsbCc7XG4gIH0sXG4gIEVudW1WYWx1ZTogZnVuY3Rpb24gRW51bVZhbHVlKF9yZWYxMikge1xuICAgIHZhciB2YWx1ZSA9IF9yZWYxMi52YWx1ZTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG4gIExpc3RWYWx1ZTogZnVuY3Rpb24gTGlzdFZhbHVlKF9yZWYxMykge1xuICAgIHZhciB2YWx1ZXMgPSBfcmVmMTMudmFsdWVzO1xuICAgIHJldHVybiAnWycgKyBqb2luKHZhbHVlcywgJywgJykgKyAnXSc7XG4gIH0sXG4gIE9iamVjdFZhbHVlOiBmdW5jdGlvbiBPYmplY3RWYWx1ZShfcmVmMTQpIHtcbiAgICB2YXIgZmllbGRzID0gX3JlZjE0LmZpZWxkcztcbiAgICByZXR1cm4gJ3snICsgam9pbihmaWVsZHMsICcsICcpICsgJ30nO1xuICB9LFxuICBPYmplY3RGaWVsZDogZnVuY3Rpb24gT2JqZWN0RmllbGQoX3JlZjE1KSB7XG4gICAgdmFyIG5hbWUgPSBfcmVmMTUubmFtZSxcbiAgICAgICAgdmFsdWUgPSBfcmVmMTUudmFsdWU7XG4gICAgcmV0dXJuIG5hbWUgKyAnOiAnICsgdmFsdWU7XG4gIH0sXG4gIC8vIERpcmVjdGl2ZVxuICBEaXJlY3RpdmU6IGZ1bmN0aW9uIERpcmVjdGl2ZShfcmVmMTYpIHtcbiAgICB2YXIgbmFtZSA9IF9yZWYxNi5uYW1lLFxuICAgICAgICBhcmdzID0gX3JlZjE2LmFyZ3VtZW50cztcbiAgICByZXR1cm4gJ0AnICsgbmFtZSArIHdyYXAoJygnLCBqb2luKGFyZ3MsICcsICcpLCAnKScpO1xuICB9LFxuICAvLyBUeXBlXG4gIE5hbWVkVHlwZTogZnVuY3Rpb24gTmFtZWRUeXBlKF9yZWYxNykge1xuICAgIHZhciBuYW1lID0gX3JlZjE3Lm5hbWU7XG4gICAgcmV0dXJuIG5hbWU7XG4gIH0sXG4gIExpc3RUeXBlOiBmdW5jdGlvbiBMaXN0VHlwZShfcmVmMTgpIHtcbiAgICB2YXIgdHlwZSA9IF9yZWYxOC50eXBlO1xuICAgIHJldHVybiAnWycgKyB0eXBlICsgJ10nO1xuICB9LFxuICBOb25OdWxsVHlwZTogZnVuY3Rpb24gTm9uTnVsbFR5cGUoX3JlZjE5KSB7XG4gICAgdmFyIHR5cGUgPSBfcmVmMTkudHlwZTtcbiAgICByZXR1cm4gdHlwZSArICchJztcbiAgfSxcbiAgLy8gVHlwZSBTeXN0ZW0gRGVmaW5pdGlvbnNcbiAgU2NoZW1hRGVmaW5pdGlvbjogYWRkRGVzY3JpcHRpb24oZnVuY3Rpb24gKF9yZWYyMCkge1xuICAgIHZhciBkaXJlY3RpdmVzID0gX3JlZjIwLmRpcmVjdGl2ZXMsXG4gICAgICAgIG9wZXJhdGlvblR5cGVzID0gX3JlZjIwLm9wZXJhdGlvblR5cGVzO1xuICAgIHJldHVybiBqb2luKFsnc2NoZW1hJywgam9pbihkaXJlY3RpdmVzLCAnICcpLCBibG9jayhvcGVyYXRpb25UeXBlcyldLCAnICcpO1xuICB9KSxcbiAgT3BlcmF0aW9uVHlwZURlZmluaXRpb246IGZ1bmN0aW9uIE9wZXJhdGlvblR5cGVEZWZpbml0aW9uKF9yZWYyMSkge1xuICAgIHZhciBvcGVyYXRpb24gPSBfcmVmMjEub3BlcmF0aW9uLFxuICAgICAgICB0eXBlID0gX3JlZjIxLnR5cGU7XG4gICAgcmV0dXJuIG9wZXJhdGlvbiArICc6ICcgKyB0eXBlO1xuICB9LFxuICBTY2FsYXJUeXBlRGVmaW5pdGlvbjogYWRkRGVzY3JpcHRpb24oZnVuY3Rpb24gKF9yZWYyMikge1xuICAgIHZhciBuYW1lID0gX3JlZjIyLm5hbWUsXG4gICAgICAgIGRpcmVjdGl2ZXMgPSBfcmVmMjIuZGlyZWN0aXZlcztcbiAgICByZXR1cm4gam9pbihbJ3NjYWxhcicsIG5hbWUsIGpvaW4oZGlyZWN0aXZlcywgJyAnKV0sICcgJyk7XG4gIH0pLFxuICBPYmplY3RUeXBlRGVmaW5pdGlvbjogYWRkRGVzY3JpcHRpb24oZnVuY3Rpb24gKF9yZWYyMykge1xuICAgIHZhciBuYW1lID0gX3JlZjIzLm5hbWUsXG4gICAgICAgIGludGVyZmFjZXMgPSBfcmVmMjMuaW50ZXJmYWNlcyxcbiAgICAgICAgZGlyZWN0aXZlcyA9IF9yZWYyMy5kaXJlY3RpdmVzLFxuICAgICAgICBmaWVsZHMgPSBfcmVmMjMuZmllbGRzO1xuICAgIHJldHVybiBqb2luKFsndHlwZScsIG5hbWUsIHdyYXAoJ2ltcGxlbWVudHMgJywgam9pbihpbnRlcmZhY2VzLCAnICYgJykpLCBqb2luKGRpcmVjdGl2ZXMsICcgJyksIGJsb2NrKGZpZWxkcyldLCAnICcpO1xuICB9KSxcbiAgRmllbGREZWZpbml0aW9uOiBhZGREZXNjcmlwdGlvbihmdW5jdGlvbiAoX3JlZjI0KSB7XG4gICAgdmFyIG5hbWUgPSBfcmVmMjQubmFtZSxcbiAgICAgICAgYXJncyA9IF9yZWYyNC5hcmd1bWVudHMsXG4gICAgICAgIHR5cGUgPSBfcmVmMjQudHlwZSxcbiAgICAgICAgZGlyZWN0aXZlcyA9IF9yZWYyNC5kaXJlY3RpdmVzO1xuICAgIHJldHVybiBuYW1lICsgKGhhc011bHRpbGluZUl0ZW1zKGFyZ3MpID8gd3JhcCgnKFxcbicsIGluZGVudChqb2luKGFyZ3MsICdcXG4nKSksICdcXG4pJykgOiB3cmFwKCcoJywgam9pbihhcmdzLCAnLCAnKSwgJyknKSkgKyAnOiAnICsgdHlwZSArIHdyYXAoJyAnLCBqb2luKGRpcmVjdGl2ZXMsICcgJykpO1xuICB9KSxcbiAgSW5wdXRWYWx1ZURlZmluaXRpb246IGFkZERlc2NyaXB0aW9uKGZ1bmN0aW9uIChfcmVmMjUpIHtcbiAgICB2YXIgbmFtZSA9IF9yZWYyNS5uYW1lLFxuICAgICAgICB0eXBlID0gX3JlZjI1LnR5cGUsXG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IF9yZWYyNS5kZWZhdWx0VmFsdWUsXG4gICAgICAgIGRpcmVjdGl2ZXMgPSBfcmVmMjUuZGlyZWN0aXZlcztcbiAgICByZXR1cm4gam9pbihbbmFtZSArICc6ICcgKyB0eXBlLCB3cmFwKCc9ICcsIGRlZmF1bHRWYWx1ZSksIGpvaW4oZGlyZWN0aXZlcywgJyAnKV0sICcgJyk7XG4gIH0pLFxuICBJbnRlcmZhY2VUeXBlRGVmaW5pdGlvbjogYWRkRGVzY3JpcHRpb24oZnVuY3Rpb24gKF9yZWYyNikge1xuICAgIHZhciBuYW1lID0gX3JlZjI2Lm5hbWUsXG4gICAgICAgIGludGVyZmFjZXMgPSBfcmVmMjYuaW50ZXJmYWNlcyxcbiAgICAgICAgZGlyZWN0aXZlcyA9IF9yZWYyNi5kaXJlY3RpdmVzLFxuICAgICAgICBmaWVsZHMgPSBfcmVmMjYuZmllbGRzO1xuICAgIHJldHVybiBqb2luKFsnaW50ZXJmYWNlJywgbmFtZSwgd3JhcCgnaW1wbGVtZW50cyAnLCBqb2luKGludGVyZmFjZXMsICcgJiAnKSksIGpvaW4oZGlyZWN0aXZlcywgJyAnKSwgYmxvY2soZmllbGRzKV0sICcgJyk7XG4gIH0pLFxuICBVbmlvblR5cGVEZWZpbml0aW9uOiBhZGREZXNjcmlwdGlvbihmdW5jdGlvbiAoX3JlZjI3KSB7XG4gICAgdmFyIG5hbWUgPSBfcmVmMjcubmFtZSxcbiAgICAgICAgZGlyZWN0aXZlcyA9IF9yZWYyNy5kaXJlY3RpdmVzLFxuICAgICAgICB0eXBlcyA9IF9yZWYyNy50eXBlcztcbiAgICByZXR1cm4gam9pbihbJ3VuaW9uJywgbmFtZSwgam9pbihkaXJlY3RpdmVzLCAnICcpLCB0eXBlcyAmJiB0eXBlcy5sZW5ndGggIT09IDAgPyAnPSAnICsgam9pbih0eXBlcywgJyB8ICcpIDogJyddLCAnICcpO1xuICB9KSxcbiAgRW51bVR5cGVEZWZpbml0aW9uOiBhZGREZXNjcmlwdGlvbihmdW5jdGlvbiAoX3JlZjI4KSB7XG4gICAgdmFyIG5hbWUgPSBfcmVmMjgubmFtZSxcbiAgICAgICAgZGlyZWN0aXZlcyA9IF9yZWYyOC5kaXJlY3RpdmVzLFxuICAgICAgICB2YWx1ZXMgPSBfcmVmMjgudmFsdWVzO1xuICAgIHJldHVybiBqb2luKFsnZW51bScsIG5hbWUsIGpvaW4oZGlyZWN0aXZlcywgJyAnKSwgYmxvY2sodmFsdWVzKV0sICcgJyk7XG4gIH0pLFxuICBFbnVtVmFsdWVEZWZpbml0aW9uOiBhZGREZXNjcmlwdGlvbihmdW5jdGlvbiAoX3JlZjI5KSB7XG4gICAgdmFyIG5hbWUgPSBfcmVmMjkubmFtZSxcbiAgICAgICAgZGlyZWN0aXZlcyA9IF9yZWYyOS5kaXJlY3RpdmVzO1xuICAgIHJldHVybiBqb2luKFtuYW1lLCBqb2luKGRpcmVjdGl2ZXMsICcgJyldLCAnICcpO1xuICB9KSxcbiAgSW5wdXRPYmplY3RUeXBlRGVmaW5pdGlvbjogYWRkRGVzY3JpcHRpb24oZnVuY3Rpb24gKF9yZWYzMCkge1xuICAgIHZhciBuYW1lID0gX3JlZjMwLm5hbWUsXG4gICAgICAgIGRpcmVjdGl2ZXMgPSBfcmVmMzAuZGlyZWN0aXZlcyxcbiAgICAgICAgZmllbGRzID0gX3JlZjMwLmZpZWxkcztcbiAgICByZXR1cm4gam9pbihbJ2lucHV0JywgbmFtZSwgam9pbihkaXJlY3RpdmVzLCAnICcpLCBibG9jayhmaWVsZHMpXSwgJyAnKTtcbiAgfSksXG4gIERpcmVjdGl2ZURlZmluaXRpb246IGFkZERlc2NyaXB0aW9uKGZ1bmN0aW9uIChfcmVmMzEpIHtcbiAgICB2YXIgbmFtZSA9IF9yZWYzMS5uYW1lLFxuICAgICAgICBhcmdzID0gX3JlZjMxLmFyZ3VtZW50cyxcbiAgICAgICAgcmVwZWF0YWJsZSA9IF9yZWYzMS5yZXBlYXRhYmxlLFxuICAgICAgICBsb2NhdGlvbnMgPSBfcmVmMzEubG9jYXRpb25zO1xuICAgIHJldHVybiAnZGlyZWN0aXZlIEAnICsgbmFtZSArIChoYXNNdWx0aWxpbmVJdGVtcyhhcmdzKSA/IHdyYXAoJyhcXG4nLCBpbmRlbnQoam9pbihhcmdzLCAnXFxuJykpLCAnXFxuKScpIDogd3JhcCgnKCcsIGpvaW4oYXJncywgJywgJyksICcpJykpICsgKHJlcGVhdGFibGUgPyAnIHJlcGVhdGFibGUnIDogJycpICsgJyBvbiAnICsgam9pbihsb2NhdGlvbnMsICcgfCAnKTtcbiAgfSksXG4gIFNjaGVtYUV4dGVuc2lvbjogZnVuY3Rpb24gU2NoZW1hRXh0ZW5zaW9uKF9yZWYzMikge1xuICAgIHZhciBkaXJlY3RpdmVzID0gX3JlZjMyLmRpcmVjdGl2ZXMsXG4gICAgICAgIG9wZXJhdGlvblR5cGVzID0gX3JlZjMyLm9wZXJhdGlvblR5cGVzO1xuICAgIHJldHVybiBqb2luKFsnZXh0ZW5kIHNjaGVtYScsIGpvaW4oZGlyZWN0aXZlcywgJyAnKSwgYmxvY2sob3BlcmF0aW9uVHlwZXMpXSwgJyAnKTtcbiAgfSxcbiAgU2NhbGFyVHlwZUV4dGVuc2lvbjogZnVuY3Rpb24gU2NhbGFyVHlwZUV4dGVuc2lvbihfcmVmMzMpIHtcbiAgICB2YXIgbmFtZSA9IF9yZWYzMy5uYW1lLFxuICAgICAgICBkaXJlY3RpdmVzID0gX3JlZjMzLmRpcmVjdGl2ZXM7XG4gICAgcmV0dXJuIGpvaW4oWydleHRlbmQgc2NhbGFyJywgbmFtZSwgam9pbihkaXJlY3RpdmVzLCAnICcpXSwgJyAnKTtcbiAgfSxcbiAgT2JqZWN0VHlwZUV4dGVuc2lvbjogZnVuY3Rpb24gT2JqZWN0VHlwZUV4dGVuc2lvbihfcmVmMzQpIHtcbiAgICB2YXIgbmFtZSA9IF9yZWYzNC5uYW1lLFxuICAgICAgICBpbnRlcmZhY2VzID0gX3JlZjM0LmludGVyZmFjZXMsXG4gICAgICAgIGRpcmVjdGl2ZXMgPSBfcmVmMzQuZGlyZWN0aXZlcyxcbiAgICAgICAgZmllbGRzID0gX3JlZjM0LmZpZWxkcztcbiAgICByZXR1cm4gam9pbihbJ2V4dGVuZCB0eXBlJywgbmFtZSwgd3JhcCgnaW1wbGVtZW50cyAnLCBqb2luKGludGVyZmFjZXMsICcgJiAnKSksIGpvaW4oZGlyZWN0aXZlcywgJyAnKSwgYmxvY2soZmllbGRzKV0sICcgJyk7XG4gIH0sXG4gIEludGVyZmFjZVR5cGVFeHRlbnNpb246IGZ1bmN0aW9uIEludGVyZmFjZVR5cGVFeHRlbnNpb24oX3JlZjM1KSB7XG4gICAgdmFyIG5hbWUgPSBfcmVmMzUubmFtZSxcbiAgICAgICAgaW50ZXJmYWNlcyA9IF9yZWYzNS5pbnRlcmZhY2VzLFxuICAgICAgICBkaXJlY3RpdmVzID0gX3JlZjM1LmRpcmVjdGl2ZXMsXG4gICAgICAgIGZpZWxkcyA9IF9yZWYzNS5maWVsZHM7XG4gICAgcmV0dXJuIGpvaW4oWydleHRlbmQgaW50ZXJmYWNlJywgbmFtZSwgd3JhcCgnaW1wbGVtZW50cyAnLCBqb2luKGludGVyZmFjZXMsICcgJiAnKSksIGpvaW4oZGlyZWN0aXZlcywgJyAnKSwgYmxvY2soZmllbGRzKV0sICcgJyk7XG4gIH0sXG4gIFVuaW9uVHlwZUV4dGVuc2lvbjogZnVuY3Rpb24gVW5pb25UeXBlRXh0ZW5zaW9uKF9yZWYzNikge1xuICAgIHZhciBuYW1lID0gX3JlZjM2Lm5hbWUsXG4gICAgICAgIGRpcmVjdGl2ZXMgPSBfcmVmMzYuZGlyZWN0aXZlcyxcbiAgICAgICAgdHlwZXMgPSBfcmVmMzYudHlwZXM7XG4gICAgcmV0dXJuIGpvaW4oWydleHRlbmQgdW5pb24nLCBuYW1lLCBqb2luKGRpcmVjdGl2ZXMsICcgJyksIHR5cGVzICYmIHR5cGVzLmxlbmd0aCAhPT0gMCA/ICc9ICcgKyBqb2luKHR5cGVzLCAnIHwgJykgOiAnJ10sICcgJyk7XG4gIH0sXG4gIEVudW1UeXBlRXh0ZW5zaW9uOiBmdW5jdGlvbiBFbnVtVHlwZUV4dGVuc2lvbihfcmVmMzcpIHtcbiAgICB2YXIgbmFtZSA9IF9yZWYzNy5uYW1lLFxuICAgICAgICBkaXJlY3RpdmVzID0gX3JlZjM3LmRpcmVjdGl2ZXMsXG4gICAgICAgIHZhbHVlcyA9IF9yZWYzNy52YWx1ZXM7XG4gICAgcmV0dXJuIGpvaW4oWydleHRlbmQgZW51bScsIG5hbWUsIGpvaW4oZGlyZWN0aXZlcywgJyAnKSwgYmxvY2sodmFsdWVzKV0sICcgJyk7XG4gIH0sXG4gIElucHV0T2JqZWN0VHlwZUV4dGVuc2lvbjogZnVuY3Rpb24gSW5wdXRPYmplY3RUeXBlRXh0ZW5zaW9uKF9yZWYzOCkge1xuICAgIHZhciBuYW1lID0gX3JlZjM4Lm5hbWUsXG4gICAgICAgIGRpcmVjdGl2ZXMgPSBfcmVmMzguZGlyZWN0aXZlcyxcbiAgICAgICAgZmllbGRzID0gX3JlZjM4LmZpZWxkcztcbiAgICByZXR1cm4gam9pbihbJ2V4dGVuZCBpbnB1dCcsIG5hbWUsIGpvaW4oZGlyZWN0aXZlcywgJyAnKSwgYmxvY2soZmllbGRzKV0sICcgJyk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGFkZERlc2NyaXB0aW9uKGNiKSB7XG4gIHJldHVybiBmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiBqb2luKFtub2RlLmRlc2NyaXB0aW9uLCBjYihub2RlKV0sICdcXG4nKTtcbiAgfTtcbn1cbi8qKlxuICogR2l2ZW4gbWF5YmVBcnJheSwgcHJpbnQgYW4gZW1wdHkgc3RyaW5nIGlmIGl0IGlzIG51bGwgb3IgZW1wdHksIG90aGVyd2lzZVxuICogcHJpbnQgYWxsIGl0ZW1zIHRvZ2V0aGVyIHNlcGFyYXRlZCBieSBzZXBhcmF0b3IgaWYgcHJvdmlkZWRcbiAqL1xuXG5cbmZ1bmN0aW9uIGpvaW4obWF5YmVBcnJheSkge1xuICB2YXIgX21heWJlQXJyYXkkZmlsdGVyJGpvO1xuXG4gIHZhciBzZXBhcmF0b3IgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6ICcnO1xuICByZXR1cm4gKF9tYXliZUFycmF5JGZpbHRlciRqbyA9IG1heWJlQXJyYXkgPT09IG51bGwgfHwgbWF5YmVBcnJheSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbWF5YmVBcnJheS5maWx0ZXIoZnVuY3Rpb24gKHgpIHtcbiAgICByZXR1cm4geDtcbiAgfSkuam9pbihzZXBhcmF0b3IpKSAhPT0gbnVsbCAmJiBfbWF5YmVBcnJheSRmaWx0ZXIkam8gIT09IHZvaWQgMCA/IF9tYXliZUFycmF5JGZpbHRlciRqbyA6ICcnO1xufVxuLyoqXG4gKiBHaXZlbiBhcnJheSwgcHJpbnQgZWFjaCBpdGVtIG9uIGl0cyBvd24gbGluZSwgd3JhcHBlZCBpbiBhblxuICogaW5kZW50ZWQgXCJ7IH1cIiBibG9jay5cbiAqL1xuXG5cbmZ1bmN0aW9uIGJsb2NrKGFycmF5KSB7XG4gIHJldHVybiB3cmFwKCd7XFxuJywgaW5kZW50KGpvaW4oYXJyYXksICdcXG4nKSksICdcXG59Jyk7XG59XG4vKipcbiAqIElmIG1heWJlU3RyaW5nIGlzIG5vdCBudWxsIG9yIGVtcHR5LCB0aGVuIHdyYXAgd2l0aCBzdGFydCBhbmQgZW5kLCBvdGhlcndpc2UgcHJpbnQgYW4gZW1wdHkgc3RyaW5nLlxuICovXG5cblxuZnVuY3Rpb24gd3JhcChzdGFydCwgbWF5YmVTdHJpbmcpIHtcbiAgdmFyIGVuZCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogJyc7XG4gIHJldHVybiBtYXliZVN0cmluZyAhPSBudWxsICYmIG1heWJlU3RyaW5nICE9PSAnJyA/IHN0YXJ0ICsgbWF5YmVTdHJpbmcgKyBlbmQgOiAnJztcbn1cblxuZnVuY3Rpb24gaW5kZW50KHN0cikge1xuICByZXR1cm4gd3JhcCgnICAnLCBzdHIucmVwbGFjZSgvXFxuL2csICdcXG4gICcpKTtcbn1cblxuZnVuY3Rpb24gaXNNdWx0aWxpbmUoc3RyKSB7XG4gIHJldHVybiBzdHIuaW5kZXhPZignXFxuJykgIT09IC0xO1xufVxuXG5mdW5jdGlvbiBoYXNNdWx0aWxpbmVJdGVtcyhtYXliZUFycmF5KSB7XG4gIHJldHVybiBtYXliZUFycmF5ICE9IG51bGwgJiYgbWF5YmVBcnJheS5zb21lKGlzTXVsdGlsaW5lKTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy52aXNpdCA9IHZpc2l0O1xuZXhwb3J0cy52aXNpdEluUGFyYWxsZWwgPSB2aXNpdEluUGFyYWxsZWw7XG5leHBvcnRzLmdldFZpc2l0Rm4gPSBnZXRWaXNpdEZuO1xuZXhwb3J0cy5CUkVBSyA9IGV4cG9ydHMuUXVlcnlEb2N1bWVudEtleXMgPSB2b2lkIDA7XG5cbnZhciBfaW5zcGVjdCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2pzdXRpbHMvaW5zcGVjdC5qc1wiKSk7XG5cbnZhciBfYXN0ID0gcmVxdWlyZShcIi4vYXN0LmpzXCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgUXVlcnlEb2N1bWVudEtleXMgPSB7XG4gIE5hbWU6IFtdLFxuICBEb2N1bWVudDogWydkZWZpbml0aW9ucyddLFxuICBPcGVyYXRpb25EZWZpbml0aW9uOiBbJ25hbWUnLCAndmFyaWFibGVEZWZpbml0aW9ucycsICdkaXJlY3RpdmVzJywgJ3NlbGVjdGlvblNldCddLFxuICBWYXJpYWJsZURlZmluaXRpb246IFsndmFyaWFibGUnLCAndHlwZScsICdkZWZhdWx0VmFsdWUnLCAnZGlyZWN0aXZlcyddLFxuICBWYXJpYWJsZTogWyduYW1lJ10sXG4gIFNlbGVjdGlvblNldDogWydzZWxlY3Rpb25zJ10sXG4gIEZpZWxkOiBbJ2FsaWFzJywgJ25hbWUnLCAnYXJndW1lbnRzJywgJ2RpcmVjdGl2ZXMnLCAnc2VsZWN0aW9uU2V0J10sXG4gIEFyZ3VtZW50OiBbJ25hbWUnLCAndmFsdWUnXSxcbiAgRnJhZ21lbnRTcHJlYWQ6IFsnbmFtZScsICdkaXJlY3RpdmVzJ10sXG4gIElubGluZUZyYWdtZW50OiBbJ3R5cGVDb25kaXRpb24nLCAnZGlyZWN0aXZlcycsICdzZWxlY3Rpb25TZXQnXSxcbiAgRnJhZ21lbnREZWZpbml0aW9uOiBbJ25hbWUnLCAvLyBOb3RlOiBmcmFnbWVudCB2YXJpYWJsZSBkZWZpbml0aW9ucyBhcmUgZXhwZXJpbWVudGFsIGFuZCBtYXkgYmUgY2hhbmdlZFxuICAvLyBvciByZW1vdmVkIGluIHRoZSBmdXR1cmUuXG4gICd2YXJpYWJsZURlZmluaXRpb25zJywgJ3R5cGVDb25kaXRpb24nLCAnZGlyZWN0aXZlcycsICdzZWxlY3Rpb25TZXQnXSxcbiAgSW50VmFsdWU6IFtdLFxuICBGbG9hdFZhbHVlOiBbXSxcbiAgU3RyaW5nVmFsdWU6IFtdLFxuICBCb29sZWFuVmFsdWU6IFtdLFxuICBOdWxsVmFsdWU6IFtdLFxuICBFbnVtVmFsdWU6IFtdLFxuICBMaXN0VmFsdWU6IFsndmFsdWVzJ10sXG4gIE9iamVjdFZhbHVlOiBbJ2ZpZWxkcyddLFxuICBPYmplY3RGaWVsZDogWyduYW1lJywgJ3ZhbHVlJ10sXG4gIERpcmVjdGl2ZTogWyduYW1lJywgJ2FyZ3VtZW50cyddLFxuICBOYW1lZFR5cGU6IFsnbmFtZSddLFxuICBMaXN0VHlwZTogWyd0eXBlJ10sXG4gIE5vbk51bGxUeXBlOiBbJ3R5cGUnXSxcbiAgU2NoZW1hRGVmaW5pdGlvbjogWydkZXNjcmlwdGlvbicsICdkaXJlY3RpdmVzJywgJ29wZXJhdGlvblR5cGVzJ10sXG4gIE9wZXJhdGlvblR5cGVEZWZpbml0aW9uOiBbJ3R5cGUnXSxcbiAgU2NhbGFyVHlwZURlZmluaXRpb246IFsnZGVzY3JpcHRpb24nLCAnbmFtZScsICdkaXJlY3RpdmVzJ10sXG4gIE9iamVjdFR5cGVEZWZpbml0aW9uOiBbJ2Rlc2NyaXB0aW9uJywgJ25hbWUnLCAnaW50ZXJmYWNlcycsICdkaXJlY3RpdmVzJywgJ2ZpZWxkcyddLFxuICBGaWVsZERlZmluaXRpb246IFsnZGVzY3JpcHRpb24nLCAnbmFtZScsICdhcmd1bWVudHMnLCAndHlwZScsICdkaXJlY3RpdmVzJ10sXG4gIElucHV0VmFsdWVEZWZpbml0aW9uOiBbJ2Rlc2NyaXB0aW9uJywgJ25hbWUnLCAndHlwZScsICdkZWZhdWx0VmFsdWUnLCAnZGlyZWN0aXZlcyddLFxuICBJbnRlcmZhY2VUeXBlRGVmaW5pdGlvbjogWydkZXNjcmlwdGlvbicsICduYW1lJywgJ2ludGVyZmFjZXMnLCAnZGlyZWN0aXZlcycsICdmaWVsZHMnXSxcbiAgVW5pb25UeXBlRGVmaW5pdGlvbjogWydkZXNjcmlwdGlvbicsICduYW1lJywgJ2RpcmVjdGl2ZXMnLCAndHlwZXMnXSxcbiAgRW51bVR5cGVEZWZpbml0aW9uOiBbJ2Rlc2NyaXB0aW9uJywgJ25hbWUnLCAnZGlyZWN0aXZlcycsICd2YWx1ZXMnXSxcbiAgRW51bVZhbHVlRGVmaW5pdGlvbjogWydkZXNjcmlwdGlvbicsICduYW1lJywgJ2RpcmVjdGl2ZXMnXSxcbiAgSW5wdXRPYmplY3RUeXBlRGVmaW5pdGlvbjogWydkZXNjcmlwdGlvbicsICduYW1lJywgJ2RpcmVjdGl2ZXMnLCAnZmllbGRzJ10sXG4gIERpcmVjdGl2ZURlZmluaXRpb246IFsnZGVzY3JpcHRpb24nLCAnbmFtZScsICdhcmd1bWVudHMnLCAnbG9jYXRpb25zJ10sXG4gIFNjaGVtYUV4dGVuc2lvbjogWydkaXJlY3RpdmVzJywgJ29wZXJhdGlvblR5cGVzJ10sXG4gIFNjYWxhclR5cGVFeHRlbnNpb246IFsnbmFtZScsICdkaXJlY3RpdmVzJ10sXG4gIE9iamVjdFR5cGVFeHRlbnNpb246IFsnbmFtZScsICdpbnRlcmZhY2VzJywgJ2RpcmVjdGl2ZXMnLCAnZmllbGRzJ10sXG4gIEludGVyZmFjZVR5cGVFeHRlbnNpb246IFsnbmFtZScsICdpbnRlcmZhY2VzJywgJ2RpcmVjdGl2ZXMnLCAnZmllbGRzJ10sXG4gIFVuaW9uVHlwZUV4dGVuc2lvbjogWyduYW1lJywgJ2RpcmVjdGl2ZXMnLCAndHlwZXMnXSxcbiAgRW51bVR5cGVFeHRlbnNpb246IFsnbmFtZScsICdkaXJlY3RpdmVzJywgJ3ZhbHVlcyddLFxuICBJbnB1dE9iamVjdFR5cGVFeHRlbnNpb246IFsnbmFtZScsICdkaXJlY3RpdmVzJywgJ2ZpZWxkcyddXG59O1xuZXhwb3J0cy5RdWVyeURvY3VtZW50S2V5cyA9IFF1ZXJ5RG9jdW1lbnRLZXlzO1xudmFyIEJSRUFLID0gT2JqZWN0LmZyZWV6ZSh7fSk7XG4vKipcbiAqIHZpc2l0KCkgd2lsbCB3YWxrIHRocm91Z2ggYW4gQVNUIHVzaW5nIGEgZGVwdGgtZmlyc3QgdHJhdmVyc2FsLCBjYWxsaW5nXG4gKiB0aGUgdmlzaXRvcidzIGVudGVyIGZ1bmN0aW9uIGF0IGVhY2ggbm9kZSBpbiB0aGUgdHJhdmVyc2FsLCBhbmQgY2FsbGluZyB0aGVcbiAqIGxlYXZlIGZ1bmN0aW9uIGFmdGVyIHZpc2l0aW5nIHRoYXQgbm9kZSBhbmQgYWxsIG9mIGl0cyBjaGlsZCBub2Rlcy5cbiAqXG4gKiBCeSByZXR1cm5pbmcgZGlmZmVyZW50IHZhbHVlcyBmcm9tIHRoZSBlbnRlciBhbmQgbGVhdmUgZnVuY3Rpb25zLCB0aGVcbiAqIGJlaGF2aW9yIG9mIHRoZSB2aXNpdG9yIGNhbiBiZSBhbHRlcmVkLCBpbmNsdWRpbmcgc2tpcHBpbmcgb3ZlciBhIHN1Yi10cmVlIG9mXG4gKiB0aGUgQVNUIChieSByZXR1cm5pbmcgZmFsc2UpLCBlZGl0aW5nIHRoZSBBU1QgYnkgcmV0dXJuaW5nIGEgdmFsdWUgb3IgbnVsbFxuICogdG8gcmVtb3ZlIHRoZSB2YWx1ZSwgb3IgdG8gc3RvcCB0aGUgd2hvbGUgdHJhdmVyc2FsIGJ5IHJldHVybmluZyBCUkVBSy5cbiAqXG4gKiBXaGVuIHVzaW5nIHZpc2l0KCkgdG8gZWRpdCBhbiBBU1QsIHRoZSBvcmlnaW5hbCBBU1Qgd2lsbCBub3QgYmUgbW9kaWZpZWQsIGFuZFxuICogYSBuZXcgdmVyc2lvbiBvZiB0aGUgQVNUIHdpdGggdGhlIGNoYW5nZXMgYXBwbGllZCB3aWxsIGJlIHJldHVybmVkIGZyb20gdGhlXG4gKiB2aXNpdCBmdW5jdGlvbi5cbiAqXG4gKiAgICAgY29uc3QgZWRpdGVkQVNUID0gdmlzaXQoYXN0LCB7XG4gKiAgICAgICBlbnRlcihub2RlLCBrZXksIHBhcmVudCwgcGF0aCwgYW5jZXN0b3JzKSB7XG4gKiAgICAgICAgIC8vIEByZXR1cm5cbiAqICAgICAgICAgLy8gICB1bmRlZmluZWQ6IG5vIGFjdGlvblxuICogICAgICAgICAvLyAgIGZhbHNlOiBza2lwIHZpc2l0aW5nIHRoaXMgbm9kZVxuICogICAgICAgICAvLyAgIHZpc2l0b3IuQlJFQUs6IHN0b3AgdmlzaXRpbmcgYWx0b2dldGhlclxuICogICAgICAgICAvLyAgIG51bGw6IGRlbGV0ZSB0aGlzIG5vZGVcbiAqICAgICAgICAgLy8gICBhbnkgdmFsdWU6IHJlcGxhY2UgdGhpcyBub2RlIHdpdGggdGhlIHJldHVybmVkIHZhbHVlXG4gKiAgICAgICB9LFxuICogICAgICAgbGVhdmUobm9kZSwga2V5LCBwYXJlbnQsIHBhdGgsIGFuY2VzdG9ycykge1xuICogICAgICAgICAvLyBAcmV0dXJuXG4gKiAgICAgICAgIC8vICAgdW5kZWZpbmVkOiBubyBhY3Rpb25cbiAqICAgICAgICAgLy8gICBmYWxzZTogbm8gYWN0aW9uXG4gKiAgICAgICAgIC8vICAgdmlzaXRvci5CUkVBSzogc3RvcCB2aXNpdGluZyBhbHRvZ2V0aGVyXG4gKiAgICAgICAgIC8vICAgbnVsbDogZGVsZXRlIHRoaXMgbm9kZVxuICogICAgICAgICAvLyAgIGFueSB2YWx1ZTogcmVwbGFjZSB0aGlzIG5vZGUgd2l0aCB0aGUgcmV0dXJuZWQgdmFsdWVcbiAqICAgICAgIH1cbiAqICAgICB9KTtcbiAqXG4gKiBBbHRlcm5hdGl2ZWx5IHRvIHByb3ZpZGluZyBlbnRlcigpIGFuZCBsZWF2ZSgpIGZ1bmN0aW9ucywgYSB2aXNpdG9yIGNhblxuICogaW5zdGVhZCBwcm92aWRlIGZ1bmN0aW9ucyBuYW1lZCB0aGUgc2FtZSBhcyB0aGUga2luZHMgb2YgQVNUIG5vZGVzLCBvclxuICogZW50ZXIvbGVhdmUgdmlzaXRvcnMgYXQgYSBuYW1lZCBrZXksIGxlYWRpbmcgdG8gZm91ciBwZXJtdXRhdGlvbnMgb2YgdGhlXG4gKiB2aXNpdG9yIEFQSTpcbiAqXG4gKiAxKSBOYW1lZCB2aXNpdG9ycyB0cmlnZ2VyZWQgd2hlbiBlbnRlcmluZyBhIG5vZGUgb2YgYSBzcGVjaWZpYyBraW5kLlxuICpcbiAqICAgICB2aXNpdChhc3QsIHtcbiAqICAgICAgIEtpbmQobm9kZSkge1xuICogICAgICAgICAvLyBlbnRlciB0aGUgXCJLaW5kXCIgbm9kZVxuICogICAgICAgfVxuICogICAgIH0pXG4gKlxuICogMikgTmFtZWQgdmlzaXRvcnMgdGhhdCB0cmlnZ2VyIHVwb24gZW50ZXJpbmcgYW5kIGxlYXZpbmcgYSBub2RlIG9mXG4gKiAgICBhIHNwZWNpZmljIGtpbmQuXG4gKlxuICogICAgIHZpc2l0KGFzdCwge1xuICogICAgICAgS2luZDoge1xuICogICAgICAgICBlbnRlcihub2RlKSB7XG4gKiAgICAgICAgICAgLy8gZW50ZXIgdGhlIFwiS2luZFwiIG5vZGVcbiAqICAgICAgICAgfVxuICogICAgICAgICBsZWF2ZShub2RlKSB7XG4gKiAgICAgICAgICAgLy8gbGVhdmUgdGhlIFwiS2luZFwiIG5vZGVcbiAqICAgICAgICAgfVxuICogICAgICAgfVxuICogICAgIH0pXG4gKlxuICogMykgR2VuZXJpYyB2aXNpdG9ycyB0aGF0IHRyaWdnZXIgdXBvbiBlbnRlcmluZyBhbmQgbGVhdmluZyBhbnkgbm9kZS5cbiAqXG4gKiAgICAgdmlzaXQoYXN0LCB7XG4gKiAgICAgICBlbnRlcihub2RlKSB7XG4gKiAgICAgICAgIC8vIGVudGVyIGFueSBub2RlXG4gKiAgICAgICB9LFxuICogICAgICAgbGVhdmUobm9kZSkge1xuICogICAgICAgICAvLyBsZWF2ZSBhbnkgbm9kZVxuICogICAgICAgfVxuICogICAgIH0pXG4gKlxuICogNCkgUGFyYWxsZWwgdmlzaXRvcnMgZm9yIGVudGVyaW5nIGFuZCBsZWF2aW5nIG5vZGVzIG9mIGEgc3BlY2lmaWMga2luZC5cbiAqXG4gKiAgICAgdmlzaXQoYXN0LCB7XG4gKiAgICAgICBlbnRlcjoge1xuICogICAgICAgICBLaW5kKG5vZGUpIHtcbiAqICAgICAgICAgICAvLyBlbnRlciB0aGUgXCJLaW5kXCIgbm9kZVxuICogICAgICAgICB9XG4gKiAgICAgICB9LFxuICogICAgICAgbGVhdmU6IHtcbiAqICAgICAgICAgS2luZChub2RlKSB7XG4gKiAgICAgICAgICAgLy8gbGVhdmUgdGhlIFwiS2luZFwiIG5vZGVcbiAqICAgICAgICAgfVxuICogICAgICAgfVxuICogICAgIH0pXG4gKi9cblxuZXhwb3J0cy5CUkVBSyA9IEJSRUFLO1xuXG5mdW5jdGlvbiB2aXNpdChyb290LCB2aXNpdG9yKSB7XG4gIHZhciB2aXNpdG9yS2V5cyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogUXVlcnlEb2N1bWVudEtleXM7XG5cbiAgLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYtaW5pdCAqL1xuICB2YXIgc3RhY2sgPSB1bmRlZmluZWQ7XG4gIHZhciBpbkFycmF5ID0gQXJyYXkuaXNBcnJheShyb290KTtcbiAgdmFyIGtleXMgPSBbcm9vdF07XG4gIHZhciBpbmRleCA9IC0xO1xuICB2YXIgZWRpdHMgPSBbXTtcbiAgdmFyIG5vZGUgPSB1bmRlZmluZWQ7XG4gIHZhciBrZXkgPSB1bmRlZmluZWQ7XG4gIHZhciBwYXJlbnQgPSB1bmRlZmluZWQ7XG4gIHZhciBwYXRoID0gW107XG4gIHZhciBhbmNlc3RvcnMgPSBbXTtcbiAgdmFyIG5ld1Jvb3QgPSByb290O1xuICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVuZGVmLWluaXQgKi9cblxuICBkbyB7XG4gICAgaW5kZXgrKztcbiAgICB2YXIgaXNMZWF2aW5nID0gaW5kZXggPT09IGtleXMubGVuZ3RoO1xuICAgIHZhciBpc0VkaXRlZCA9IGlzTGVhdmluZyAmJiBlZGl0cy5sZW5ndGggIT09IDA7XG5cbiAgICBpZiAoaXNMZWF2aW5nKSB7XG4gICAgICBrZXkgPSBhbmNlc3RvcnMubGVuZ3RoID09PSAwID8gdW5kZWZpbmVkIDogcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuICAgICAgbm9kZSA9IHBhcmVudDtcbiAgICAgIHBhcmVudCA9IGFuY2VzdG9ycy5wb3AoKTtcblxuICAgICAgaWYgKGlzRWRpdGVkKSB7XG4gICAgICAgIGlmIChpbkFycmF5KSB7XG4gICAgICAgICAgbm9kZSA9IG5vZGUuc2xpY2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgY2xvbmUgPSB7fTtcblxuICAgICAgICAgIGZvciAodmFyIF9pMiA9IDAsIF9PYmplY3Qka2V5czIgPSBPYmplY3Qua2V5cyhub2RlKTsgX2kyIDwgX09iamVjdCRrZXlzMi5sZW5ndGg7IF9pMisrKSB7XG4gICAgICAgICAgICB2YXIgayA9IF9PYmplY3Qka2V5czJbX2kyXTtcbiAgICAgICAgICAgIGNsb25lW2tdID0gbm9kZVtrXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBub2RlID0gY2xvbmU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZWRpdE9mZnNldCA9IDA7XG5cbiAgICAgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IGVkaXRzLmxlbmd0aDsgaWkrKykge1xuICAgICAgICAgIHZhciBlZGl0S2V5ID0gZWRpdHNbaWldWzBdO1xuICAgICAgICAgIHZhciBlZGl0VmFsdWUgPSBlZGl0c1tpaV1bMV07XG5cbiAgICAgICAgICBpZiAoaW5BcnJheSkge1xuICAgICAgICAgICAgZWRpdEtleSAtPSBlZGl0T2Zmc2V0O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpbkFycmF5ICYmIGVkaXRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgbm9kZS5zcGxpY2UoZWRpdEtleSwgMSk7XG4gICAgICAgICAgICBlZGl0T2Zmc2V0Kys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5vZGVbZWRpdEtleV0gPSBlZGl0VmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGluZGV4ID0gc3RhY2suaW5kZXg7XG4gICAgICBrZXlzID0gc3RhY2sua2V5cztcbiAgICAgIGVkaXRzID0gc3RhY2suZWRpdHM7XG4gICAgICBpbkFycmF5ID0gc3RhY2suaW5BcnJheTtcbiAgICAgIHN0YWNrID0gc3RhY2sucHJldjtcbiAgICB9IGVsc2Uge1xuICAgICAga2V5ID0gcGFyZW50ID8gaW5BcnJheSA/IGluZGV4IDoga2V5c1tpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICBub2RlID0gcGFyZW50ID8gcGFyZW50W2tleV0gOiBuZXdSb290O1xuXG4gICAgICBpZiAobm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgcGF0aC5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlc3VsdCA9IHZvaWQgMDtcblxuICAgIGlmICghQXJyYXkuaXNBcnJheShub2RlKSkge1xuICAgICAgaWYgKCEoMCwgX2FzdC5pc05vZGUpKG5vZGUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgQVNUIE5vZGU6IFwiLmNvbmNhdCgoMCwgX2luc3BlY3QuZGVmYXVsdCkobm9kZSksIFwiLlwiKSk7XG4gICAgICB9XG5cbiAgICAgIHZhciB2aXNpdEZuID0gZ2V0VmlzaXRGbih2aXNpdG9yLCBub2RlLmtpbmQsIGlzTGVhdmluZyk7XG5cbiAgICAgIGlmICh2aXNpdEZuKSB7XG4gICAgICAgIHJlc3VsdCA9IHZpc2l0Rm4uY2FsbCh2aXNpdG9yLCBub2RlLCBrZXksIHBhcmVudCwgcGF0aCwgYW5jZXN0b3JzKTtcblxuICAgICAgICBpZiAocmVzdWx0ID09PSBCUkVBSykge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBpZiAoIWlzTGVhdmluZykge1xuICAgICAgICAgICAgcGF0aC5wb3AoKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGVkaXRzLnB1c2goW2tleSwgcmVzdWx0XSk7XG5cbiAgICAgICAgICBpZiAoIWlzTGVhdmluZykge1xuICAgICAgICAgICAgaWYgKCgwLCBfYXN0LmlzTm9kZSkocmVzdWx0KSkge1xuICAgICAgICAgICAgICBub2RlID0gcmVzdWx0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGF0aC5wb3AoKTtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkICYmIGlzRWRpdGVkKSB7XG4gICAgICBlZGl0cy5wdXNoKFtrZXksIG5vZGVdKTtcbiAgICB9XG5cbiAgICBpZiAoaXNMZWF2aW5nKSB7XG4gICAgICBwYXRoLnBvcCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgX3Zpc2l0b3JLZXlzJG5vZGUka2luO1xuXG4gICAgICBzdGFjayA9IHtcbiAgICAgICAgaW5BcnJheTogaW5BcnJheSxcbiAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICBrZXlzOiBrZXlzLFxuICAgICAgICBlZGl0czogZWRpdHMsXG4gICAgICAgIHByZXY6IHN0YWNrXG4gICAgICB9O1xuICAgICAgaW5BcnJheSA9IEFycmF5LmlzQXJyYXkobm9kZSk7XG4gICAgICBrZXlzID0gaW5BcnJheSA/IG5vZGUgOiAoX3Zpc2l0b3JLZXlzJG5vZGUka2luID0gdmlzaXRvcktleXNbbm9kZS5raW5kXSkgIT09IG51bGwgJiYgX3Zpc2l0b3JLZXlzJG5vZGUka2luICE9PSB2b2lkIDAgPyBfdmlzaXRvcktleXMkbm9kZSRraW4gOiBbXTtcbiAgICAgIGluZGV4ID0gLTE7XG4gICAgICBlZGl0cyA9IFtdO1xuXG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIGFuY2VzdG9ycy5wdXNoKHBhcmVudCk7XG4gICAgICB9XG5cbiAgICAgIHBhcmVudCA9IG5vZGU7XG4gICAgfVxuICB9IHdoaWxlIChzdGFjayAhPT0gdW5kZWZpbmVkKTtcblxuICBpZiAoZWRpdHMubGVuZ3RoICE9PSAwKSB7XG4gICAgbmV3Um9vdCA9IGVkaXRzW2VkaXRzLmxlbmd0aCAtIDFdWzFdO1xuICB9XG5cbiAgcmV0dXJuIG5ld1Jvb3Q7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgdmlzaXRvciBpbnN0YW5jZSB3aGljaCBkZWxlZ2F0ZXMgdG8gbWFueSB2aXNpdG9ycyB0byBydW4gaW5cbiAqIHBhcmFsbGVsLiBFYWNoIHZpc2l0b3Igd2lsbCBiZSB2aXNpdGVkIGZvciBlYWNoIG5vZGUgYmVmb3JlIG1vdmluZyBvbi5cbiAqXG4gKiBJZiBhIHByaW9yIHZpc2l0b3IgZWRpdHMgYSBub2RlLCBubyBmb2xsb3dpbmcgdmlzaXRvcnMgd2lsbCBzZWUgdGhhdCBub2RlLlxuICovXG5cblxuZnVuY3Rpb24gdmlzaXRJblBhcmFsbGVsKHZpc2l0b3JzKSB7XG4gIHZhciBza2lwcGluZyA9IG5ldyBBcnJheSh2aXNpdG9ycy5sZW5ndGgpO1xuICByZXR1cm4ge1xuICAgIGVudGVyOiBmdW5jdGlvbiBlbnRlcihub2RlKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZpc2l0b3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChza2lwcGluZ1tpXSA9PSBudWxsKSB7XG4gICAgICAgICAgdmFyIGZuID0gZ2V0VmlzaXRGbih2aXNpdG9yc1tpXSwgbm9kZS5raW5kLFxuICAgICAgICAgIC8qIGlzTGVhdmluZyAqL1xuICAgICAgICAgIGZhbHNlKTtcblxuICAgICAgICAgIGlmIChmbikge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGZuLmFwcGx5KHZpc2l0b3JzW2ldLCBhcmd1bWVudHMpO1xuXG4gICAgICAgICAgICBpZiAocmVzdWx0ID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICBza2lwcGluZ1tpXSA9IG5vZGU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PT0gQlJFQUspIHtcbiAgICAgICAgICAgICAgc2tpcHBpbmdbaV0gPSBCUkVBSztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGxlYXZlOiBmdW5jdGlvbiBsZWF2ZShub2RlKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZpc2l0b3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChza2lwcGluZ1tpXSA9PSBudWxsKSB7XG4gICAgICAgICAgdmFyIGZuID0gZ2V0VmlzaXRGbih2aXNpdG9yc1tpXSwgbm9kZS5raW5kLFxuICAgICAgICAgIC8qIGlzTGVhdmluZyAqL1xuICAgICAgICAgIHRydWUpO1xuXG4gICAgICAgICAgaWYgKGZuKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gZm4uYXBwbHkodmlzaXRvcnNbaV0sIGFyZ3VtZW50cyk7XG5cbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IEJSRUFLKSB7XG4gICAgICAgICAgICAgIHNraXBwaW5nW2ldID0gQlJFQUs7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkICYmIHJlc3VsdCAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoc2tpcHBpbmdbaV0gPT09IG5vZGUpIHtcbiAgICAgICAgICBza2lwcGluZ1tpXSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG4vKipcbiAqIEdpdmVuIGEgdmlzaXRvciBpbnN0YW5jZSwgaWYgaXQgaXMgbGVhdmluZyBvciBub3QsIGFuZCBhIG5vZGUga2luZCwgcmV0dXJuXG4gKiB0aGUgZnVuY3Rpb24gdGhlIHZpc2l0b3IgcnVudGltZSBzaG91bGQgY2FsbC5cbiAqL1xuXG5cbmZ1bmN0aW9uIGdldFZpc2l0Rm4odmlzaXRvciwga2luZCwgaXNMZWF2aW5nKSB7XG4gIHZhciBraW5kVmlzaXRvciA9IHZpc2l0b3Jba2luZF07XG5cbiAgaWYgKGtpbmRWaXNpdG9yKSB7XG4gICAgaWYgKCFpc0xlYXZpbmcgJiYgdHlwZW9mIGtpbmRWaXNpdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyB7IEtpbmQoKSB7fSB9XG4gICAgICByZXR1cm4ga2luZFZpc2l0b3I7XG4gICAgfVxuXG4gICAgdmFyIGtpbmRTcGVjaWZpY1Zpc2l0b3IgPSBpc0xlYXZpbmcgPyBraW5kVmlzaXRvci5sZWF2ZSA6IGtpbmRWaXNpdG9yLmVudGVyO1xuXG4gICAgaWYgKHR5cGVvZiBraW5kU3BlY2lmaWNWaXNpdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyB7IEtpbmQ6IHsgZW50ZXIoKSB7fSwgbGVhdmUoKSB7fSB9IH1cbiAgICAgIHJldHVybiBraW5kU3BlY2lmaWNWaXNpdG9yO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgc3BlY2lmaWNWaXNpdG9yID0gaXNMZWF2aW5nID8gdmlzaXRvci5sZWF2ZSA6IHZpc2l0b3IuZW50ZXI7XG5cbiAgICBpZiAoc3BlY2lmaWNWaXNpdG9yKSB7XG4gICAgICBpZiAodHlwZW9mIHNwZWNpZmljVmlzaXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyB7IGVudGVyKCkge30sIGxlYXZlKCkge30gfVxuICAgICAgICByZXR1cm4gc3BlY2lmaWNWaXNpdG9yO1xuICAgICAgfVxuXG4gICAgICB2YXIgc3BlY2lmaWNLaW5kVmlzaXRvciA9IHNwZWNpZmljVmlzaXRvcltraW5kXTtcblxuICAgICAgaWYgKHR5cGVvZiBzcGVjaWZpY0tpbmRWaXNpdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIC8vIHsgZW50ZXI6IHsgS2luZCgpIHt9IH0sIGxlYXZlOiB7IEtpbmQoKSB7fSB9IH1cbiAgICAgICAgcmV0dXJuIHNwZWNpZmljS2luZFZpc2l0b3I7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBJbXBvcnRzXG52YXIgX19fSFRNTF9MT0FERVJfR0VUX1NPVVJDRV9GUk9NX0lNUE9SVF9fXyA9IHJlcXVpcmUoXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvaHRtbC1sb2FkZXIvZGlzdC9ydW50aW1lL2dldFVybC5qc1wiKTtcbnZhciBfX19IVE1MX0xPQURFUl9JTVBPUlRfMF9fXyA9IHJlcXVpcmUoXCIuLi8uLi9pbWFnZXMveF9pY29uLnBuZ1wiKTtcbi8vIE1vZHVsZVxudmFyIF9fX0hUTUxfTE9BREVSX1JFUExBQ0VNRU5UXzBfX18gPSBfX19IVE1MX0xPQURFUl9HRVRfU09VUkNFX0ZST01fSU1QT1JUX19fKF9fX0hUTUxfTE9BREVSX0lNUE9SVF8wX19fKTtcbnZhciBjb2RlID0gXCI8ZGl2IGlkPVxcXCJrb2FsYWZpLW1vZGFsXFxcIj4gPGRpdiBpZD1cXFwia29hbGFmaS1tb2RhbC1jb250ZW50XFxcIj4gPGRpdiBpZD1cXFwia29hbGFmaS1pZnJhbWUtd3JhcHBlclxcXCI+IDxkaXYgaWQ9XFxcImtvYWxhZmktbW9kYWwteC1idXR0b24tY29udGFpbmVyXFxcIj4gPGltZyBpZD1cXFwia29hbGFmaS1tb2RhbC1jbG9zZS1idXR0b25cXFwiIHNyYz1cXFwiXCIgKyBfX19IVE1MX0xPQURFUl9SRVBMQUNFTUVOVF8wX19fICsgXCJcXFwiLz4gPC9kaXY+IDxpZnJhbWUgaWQ9XFxcImtvYWxhZmktaWZyYW1lXFxcIiBmcmFtZWJvcmRlcj1cXFwiMFxcXCIgc3JjPVxcXCIke2tmaVVybH0ke3F1ZXJ5UGFyYW1zfVxcXCI+PC9pZnJhbWU+IDwvZGl2PiA8L2Rpdj4gPC9kaXY+IFwiO1xuLy8gRXhwb3J0c1xubW9kdWxlLmV4cG9ydHMgPSBjb2RlOyIsIlwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh1cmwsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgb3B0aW9ucyA9IHt9O1xuICB9IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZSwgbm8tcGFyYW0tcmVhc3NpZ25cblxuXG4gIHVybCA9IHVybCAmJiB1cmwuX19lc01vZHVsZSA/IHVybC5kZWZhdWx0IDogdXJsO1xuXG4gIGlmICh0eXBlb2YgdXJsICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICBpZiAob3B0aW9ucy5oYXNoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgdXJsICs9IG9wdGlvbnMuaGFzaDtcbiAgfVxuXG4gIGlmIChvcHRpb25zLm1heWJlTmVlZFF1b3RlcyAmJiAvW1xcdFxcblxcZlxcciBcIic9PD5gXS8udGVzdCh1cmwpKSB7XG4gICAgcmV0dXJuIFwiXFxcIlwiLmNvbmNhdCh1cmwsIFwiXFxcIlwiKTtcbiAgfVxuXG4gIHJldHVybiB1cmw7XG59OyIsIlxuICAgICAgICB2YXIgcmVzdWx0ID0gcmVxdWlyZShcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMV0udXNlWzFdIS4vbW9kYWwuY3NzXCIpO1xuXG4gICAgICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJlc3VsdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1vZHVsZS5leHBvcnRzID0gcmVzdWx0LnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAiLCJcbiAgICAgICAgdmFyIHJlc3VsdCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9odG1sLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1syXS51c2VbMV0hLi9tb2RhbC1zaG9ydC1mb3JtLmh0bWxcIik7XG5cbiAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIG1vZHVsZS5leHBvcnRzID0gcmVzdWx0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSByZXN1bHQudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICIsImltcG9ydCB7IGdxbCwgR3JhcGhRTENsaWVudCB9IGZyb20gJ2dyYXBocWwtcmVxdWVzdCc7XG5pbXBvcnQgeyBvcmRlciwgb3JkZXJWYXJpYWJsZXMsIG9yZGVyX29yZGVyIH0gZnJvbSAnLi4vZ2VuZXJhdGVkL29yZGVyJztcbmltcG9ydCB7IE5ld09yZGVyIH0gZnJvbSAnLi4vZ2VuZXJhdGVkL2dsb2JhbFR5cGVzJztcblxuaW50ZXJmYWNlIGllZGdlU2VydmljZSB7XG4gIGZldGNoT3JkZXIob3JkZXJJZDogc3RyaW5nKTogUHJvbWlzZTxvcmRlcj47XG4gIGNyZWF0ZU9yZGVyKHB1YmxpY0RlYWxlcklkOiBzdHJpbmcsIG9yZGVySW5wdXQ6IE5ld09yZGVyKTogUHJvbWlzZTxvcmRlcj47XG59XG5cbmxldCBncmFwaFFMQ2xpZW50OiBHcmFwaFFMQ2xpZW50O1xuXG5jb25zdCBjcmVhdGVPcmRlck11dGF0aW9uID0gZ3FsYFxuICBtdXRhdGlvbiBjcmVhdGVPcmRlcigkb3JkZXJJbnB1dDogTmV3T3JkZXIhKSB7XG4gICAgY3JlYXRlT3JkZXIoaW5wdXQ6ICRvcmRlcklucHV0KSB7XG4gICAgICBvcmRlcklkXG4gICAgICBvcmRlckVycm9ycyB7XG4gICAgICAgIF9fdHlwZW5hbWVcbiAgICAgICAgLi4uIG9uIEZhdGFsRXJyb3Ige1xuICAgICAgICAgIG1lc3NhZ2VcbiAgICAgICAgfVxuICAgICAgICAuLi4gb24gQmFkUmVxdWVzdCB7XG4gICAgICAgICAgbWVzc2FnZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5gO1xuXG5jb25zdCBmZXRjaE9yZGVyUXVlcnkgPSBncWxgXG4gIHF1ZXJ5IG9yZGVyKCRpZDogSUQhKSB7XG4gICAgb3JkZXIoaWQ6ICRpZCkge1xuICAgICAgbWV0YWRhdGEge1xuICAgICAgICBmb3JtVHlwZVxuICAgICAgfVxuICAgIH1cbiAgfVxuYDtcblxuY29uc3QgZWRnZVNlcnZpY2U6IGllZGdlU2VydmljZSA9IHtcbiAgZmV0Y2hPcmRlcjogYXN5bmMgKGlkOiBzdHJpbmcpOiBQcm9taXNlPG9yZGVyPiA9PiB7XG4gICAgaWYgKCFncmFwaFFMQ2xpZW50KSB7XG4gICAgICBncmFwaFFMQ2xpZW50ID0gbmV3IEdyYXBoUUxDbGllbnQocHJvY2Vzcy5lbnYuR1JBUEhfUUxfRU5EUE9JTlQpO1xuICAgIH1cblxuICAgIHJldHVybiBncmFwaFFMQ2xpZW50LnJlcXVlc3QoZmV0Y2hPcmRlclF1ZXJ5LCB7IGlkIH0pO1xuICB9LFxuICBjcmVhdGVPcmRlcjogYXN5bmMgKHB1YmxpY0RlYWxlcklkOiBzdHJpbmcsIG9yZGVySW5wdXQ6IE5ld09yZGVyKTogUHJvbWlzZTxvcmRlcj4gPT4ge1xuICAgIGlmICghZ3JhcGhRTENsaWVudCkge1xuICAgICAgZ3JhcGhRTENsaWVudCA9IG5ldyBHcmFwaFFMQ2xpZW50KHByb2Nlc3MuZW52LkdSQVBIX1FMX0VORFBPSU5UKTtcbiAgICB9XG4gICAgZ3JhcGhRTENsaWVudC5zZXRIZWFkZXIoJ3B1YmxpYy1kZWFsZXItaWQnLCBwdWJsaWNEZWFsZXJJZCk7XG4gICAgcmV0dXJuIGdyYXBoUUxDbGllbnQucmVxdWVzdChjcmVhdGVPcmRlck11dGF0aW9uLCB7IG9yZGVySW5wdXQgfSk7XG4gIH0sXG59O1xuXG5leHBvcnQgeyBlZGdlU2VydmljZSB9O1xuIiwiaW1wb3J0IHsgRm9ybVR5cGVzIH0gZnJvbSAnLi4vLi4vZ2VuZXJhdGVkL2dsb2JhbFR5cGVzJztcbmltcG9ydCB7IGVkZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd2VzdGNyZWVrU2RrJztcblxuLy8gSGFkIHRvIHVzZSByZXF1aXJlIHRvIGdldCB0aGVzZSBsb2FkZWRcbi8vIHVzaW5nIHN0cmluZyBsb2FkZXJzIHNvIHRoZXNlIHdpbGwgYmUgc3RyaW5nc1xuY29uc3QgbW9kYWxTaG9ydEh0bWw6IHN0cmluZyA9IHJlcXVpcmUoJy4vbW9kYWwtc2hvcnQtZm9ybS5odG1sJyk7XG5jb25zdCBzaGFyZWRDc3M6IHN0cmluZyA9IHJlcXVpcmUoJy4vbW9kYWwuY3NzJyk7XG5cbnR5cGUgb3Blbk1vZGFsQXJncyA9IHtcbiAgb3JkZXJJZDogc3RyaW5nO1xuICBwZGk6IHN0cmluZztcbn07XG5cbmNvbnN0IGluc2VydE1vZGFsQ3NzID0gKGNzc1N0eWxlVGFnSWQ6IHN0cmluZywgY3NzOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgY3NzU3R5bGVUYWdFeGlzdHMgPSAhIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNzc1N0eWxlVGFnSWQpO1xuICAvLyBvbmx5IGFkZCBzdHlsZSBzY3JpcHQgaWYgaXQgZG9lc24ndCBleGlzdFxuICBpZiAoIWNzc1N0eWxlVGFnRXhpc3RzKSB7XG4gICAgY29uc3Qgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgIHN0eWxlLmlkID0gY3NzU3R5bGVUYWdJZDtcbiAgICBzdHlsZS5pbm5lckhUTUwgPSBjc3M7XG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5hcHBlbmRDaGlsZChzdHlsZSk7XG4gIH1cbn07XG5cbmNvbnN0IG1vZGlmeUtmaUhUTUwgPSAoaHRtbDogc3RyaW5nLCBlY29tbVVybDogc3RyaW5nLCBvcHRpb25zOiBQYXJ0aWFsPG9wZW5Nb2RhbEFyZ3M+KSA9PiB7XG4gIGxldCBxdWVyeVBhcmFtczogc3RyaW5nO1xuICBzd2l0Y2ggKHRydWUpIHtcbiAgICBjYXNlICEhb3B0aW9ucy5vcmRlcklkICYmICEhb3B0aW9ucy5wZGk6XG4gICAgICBxdWVyeVBhcmFtcyA9IGA/b3JkZXJJZD0ke29wdGlvbnMub3JkZXJJZH0mcGRpPSR7b3B0aW9ucy5wZGl9YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgISFvcHRpb25zLm9yZGVySWQgJiYgIW9wdGlvbnMucGRpOlxuICAgICAgcXVlcnlQYXJhbXMgPSBgP29yZGVySWQ9JHtvcHRpb25zLm9yZGVySWR9YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgISFvcHRpb25zLnBkaSAmJiAhb3B0aW9ucy5vcmRlcklkOlxuICAgICAgcXVlcnlQYXJhbXMgPSBgP3BkaT0ke29wdGlvbnMucGRpfWA7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBvcGVuTW9kYWwoKTogaW52YWxpZCBhcmdzYCk7XG4gIH1cblxuICByZXR1cm4gaHRtbC5yZXBsYWNlKCcke2tmaVVybH0nLCBlY29tbVVybCkucmVwbGFjZSgnJHtxdWVyeVBhcmFtc30nLCBxdWVyeVBhcmFtcyk7XG59O1xuXG5jb25zdCBpbnNlcnRNb2RhbEh0bWwgPSAobW9kaWZpZWRIdG1sOiBzdHJpbmcsIGVtcHR5RGl2SWQ6IHN0cmluZywgbW9kYWxDb250ZW50SWQ6IHN0cmluZykgPT4ge1xuICBjb25zdCBlbXB0eURpdkV4aXN0cyA9ICEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZW1wdHlEaXZJZCk7XG4gIGlmICghZW1wdHlEaXZFeGlzdHMpIHtcbiAgICBjb25zdCBlbXB0eURpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGVtcHR5RGl2LmlkID0gZW1wdHlEaXZJZDtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVtcHR5RGl2KTtcbiAgfVxuXG4gIC8vIFByZXZlbnRzIHNjcm9sbGluZyBiZWhpbmQgdGhlIG1vZGFsXG4gIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZW1wdHlEaXZJZCkuaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmVuZCcsIG1vZGlmaWVkSHRtbCk7XG5cbiAgLy8gRW5hYmxlcyB0aGUgYW5pbWF0aW9uIG9mIHRoZSBtb2RhbCBhcHBlYXJpbmcuIFdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlXG4gIC8vIG1vZGFsIGJhY2tncm91bmQgdG8gYXBwZWFyIGJyaWVmbHkgc28gdGhlIGFuaW1hdGlvbiBvZiB0aGUgbW9kYWwgd2lsbCB3b3JrXG4gIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgIGNvbnNvbGUubG9nKG1vZGFsQ29udGVudElkLCAnbW9kYWxjb250ZW50aWQnKTtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChtb2RhbENvbnRlbnRJZCkuY2xhc3NMaXN0LmFkZCgnc2hvdycpO1xuICB9LCA0KTtcbn07XG5cbmNvbnN0IGhhbmRsZUNsb3NlTW9kYWxTdHlsaW5nID0gKG1vZGFsRWxlbWVudDogSFRNTEVsZW1lbnQsIG1vZGFsQ29udGVudElkOiBzdHJpbmcpID0+IHtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobW9kYWxDb250ZW50SWQpLmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKTtcbiAgLy8gRW5hYmxlcyBhbmltYXRpb24gdG8gdGFrZSBlZmZlY3RcbiAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgbW9kYWxFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIH0sIDIwMCk7XG4gIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAndmlzaWJsZSc7XG59O1xuXG4vLyBrZWVwaW5nIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5jb25zdCBvcGVuTW9kYWwgPSBhc3luYyAob3B0aW9uczogb3Blbk1vZGFsQXJncyB8IHN0cmluZykgPT4ge1xuICBsZXQgb3JkZXJJZDogc3RyaW5nO1xuICBsZXQgcHVibGljRGVhbGVySWQ6IHN0cmluZztcbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnb2JqZWN0Jykge1xuICAgICh7IG9yZGVySWQsIHBkaTogcHVibGljRGVhbGVySWQgfSA9IG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJykge1xuICAgIC8vIHRoaXMgaXMgYmFja3dhcmRzIGNvbXBhdGlibGUgdG8gZW5zdXJlIEJvVCBwYXNzaW5nIG9yZGVySWQgYXMgYSBzdHJpbmcgc3RpbGwgd29ya3MuXG4gICAgb3JkZXJJZCA9IG9wdGlvbnM7XG4gIH1cblxuICBpZiAoIW9yZGVySWQgJiYgIXB1YmxpY0RlYWxlcklkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdvcGVuTW9kYWwoKTogYXJndW1lbnRzIG5vdCBwYXNzZWQgaW4gY29ycmVjdGx5LicpO1xuICB9XG5cbiAgY29uc3QgRU1QVFlfRElWX0lEID0gJ2tvYWxhZmktZGl2JztcbiAgY29uc3QgQ1NTX1NUWUxFX1RBR19JRCA9ICdrb2FsYWZpLWNzcyc7XG4gIGNvbnN0IEVDT01NX1VSTCA9IHByb2Nlc3MuZW52LkVDT01NX1VSTDtcbiAgY29uc3QgTU9EQUxfSUQgPSBga29hbGFmaS1tb2RhbGA7XG4gIGNvbnN0IE1PREFMX0NPTlRFTlRfSUQgPSBga29hbGFmaS1tb2RhbC1jb250ZW50YDtcbiAgY29uc3QgQ0xPU0VfQlVUVE9OX0lEID0gYGtvYWxhZmktbW9kYWwtY2xvc2UtYnV0dG9uYDtcbiAgY29uc3QgSUZSQU1FX0lEID0gYGtvYWxhZmktaWZyYW1lYDtcblxuICBjb25zdCBtb2RpZmllZEh0bWwgPSBtb2RpZnlLZmlIVE1MKG1vZGFsU2hvcnRIdG1sLCBFQ09NTV9VUkwsIHsgb3JkZXJJZCwgcGRpOiBwdWJsaWNEZWFsZXJJZCB9KTtcblxuICB0cnkge1xuICAgIGluc2VydE1vZGFsQ3NzKENTU19TVFlMRV9UQUdfSUQsIHNoYXJlZENzcyk7XG4gICAgaW5zZXJ0TW9kYWxIdG1sKG1vZGlmaWVkSHRtbCwgRU1QVFlfRElWX0lELCBNT0RBTF9DT05URU5UX0lEKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29uc29sZS5lcnJvcignSW5zZXJ0aW5nIENTUy9IVE1MOiAnLCBlcnIpO1xuICB9XG5cbiAgY29uc3Qgd2NNb2RhbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKE1PREFMX0lEKTtcbiAgY29uc3QgY2xvc2VNb2RhbEJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKENMT1NFX0JVVFRPTl9JRCk7XG5cbiAgLy8gUGxhY2Vob2xkZXIgbGV0cyB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlc29sdmUvcmVqZWN0IHJldHVybmVkIFByb21pc2VcbiAgbGV0IHByb21pc2VSZXNvbHZlO1xuICBsZXQgcHJvbWlzZVJlamVjdDtcblxuICBkb2N1bWVudC5vbmNsaWNrID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LnRhcmdldCA9PSBjbG9zZU1vZGFsQnV0dG9uKSB7XG4gICAgICAvLyBOb3RpZmllcyBvdXIgYXBwIHRoYXQgbW9kYWwgaXMgY2xvc2luZ1xuICAgICAgY29uc3QgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoSUZSQU1FX0lEKSBhcyBIVE1MSUZyYW1lRWxlbWVudDtcbiAgICAgIC8vIEFwcCBpcyBleHBlY3RpbmcgdGhpcyBleGFjdCBtZXNzYWdlIHVwb24gbW9kYWwgY2xvc3VyZVxuICAgICAgaWZyYW1lPy5jb250ZW50V2luZG93Py5wb3N0TWVzc2FnZSgnQ2xvc2VkIG1vZGFsIHdpdGggWCBidXR0b24nLCBFQ09NTV9VUkwpO1xuXG4gICAgICBoYW5kbGVDbG9zZU1vZGFsU3R5bGluZyh3Y01vZGFsLCBNT0RBTF9DT05URU5UX0lEKTtcblxuICAgICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgb3JkZXJJZDogb3JkZXJJZCxcbiAgICAgICAgcmVhc29uOiAnY2xvc2VkIG1vZGFsIHdpdGggWCBidXR0b24nLFxuICAgICAgfTtcbiAgICAgIHByb21pc2VSZWplY3QocGF5bG9hZCk7XG4gICAgfVxuICB9O1xuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFxuICAgICdtZXNzYWdlJyxcbiAgICBmdW5jdGlvbiAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkge1xuICAgICAgLy8gUHJldmVudHMgcmVhZGluZyBldmVudHMgZnJvbSB1bmludGVuZGVkIHNpdGVzLlxuICAgICAgaWYgKGV2ZW50Lm9yaWdpbiAhPT0gRUNPTU1fVVJMKSByZXR1cm47XG5cbiAgICAgIGNvbnN0IGV2ZW50RGF0YSA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSk7XG5cbiAgICAgIGlmIChldmVudERhdGEud2NmU3VjY2Vzcykge1xuICAgICAgICBwcm9taXNlUmVzb2x2ZShldmVudERhdGEucGF5bG9hZCk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50RGF0YS53Y2ZTdWNjZXNzID09PSBmYWxzZSkge1xuICAgICAgICBwcm9taXNlUmVqZWN0KGV2ZW50RGF0YS5wYXlsb2FkKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50RGF0YS5jbG9zZU1vZGFsKSB7XG4gICAgICAgIGhhbmRsZUNsb3NlTW9kYWxTdHlsaW5nKHdjTW9kYWwsIE1PREFMX0NPTlRFTlRfSUQpO1xuICAgICAgfVxuICAgIH0sXG4gICAgZmFsc2VcbiAgKTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIC8vIEZvciBjb2RlIHJlYWRhYmlsaXR5OiBldmVudExpc3RlbmVyIGFuZCBvbmNsaWNrIHdlcmUgbW92ZWQgb3V0c2lkZSBvZiByZXR1cm5cbiAgICAvLyBzdGF0ZW1lbnQsIHNpbmNlIHRoZXkgYXJlIGFkZGVkIHRvIHRoZSB3aW5kb3cvZG9jdW1lbnQgYW5kIGFyZW4ndCBzY29wZWQgdG8gcHJvbWlzZVxuICAgIHByb21pc2VSZXNvbHZlID0gcmVzb2x2ZTtcbiAgICBwcm9taXNlUmVqZWN0ID0gcmVqZWN0O1xuICB9KTtcbn07XG5cbmV4cG9ydCB7IG9wZW5Nb2RhbCwgbW9kaWZ5S2ZpSFRNTCB9O1xuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0aWYoX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSkge1xuXHRcdHJldHVybiBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0aWQ6IG1vZHVsZUlkLFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBtb2R1bGUgZXhwb3J0cyBtdXN0IGJlIHJldHVybmVkIGZyb20gcnVudGltZSBzbyBlbnRyeSBpbmxpbmluZyBpcyBkaXNhYmxlZFxuLy8gc3RhcnR1cFxuLy8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG5yZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyg0OSk7XG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJ2YXIgc2NyaXB0VXJsO1xuaWYgKF9fd2VicGFja19yZXF1aXJlX18uZy5pbXBvcnRTY3JpcHRzKSBzY3JpcHRVcmwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcubG9jYXRpb24gKyBcIlwiO1xudmFyIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmRvY3VtZW50O1xuaWYgKCFzY3JpcHRVcmwgJiYgZG9jdW1lbnQpIHtcblx0aWYgKGRvY3VtZW50LmN1cnJlbnRTY3JpcHQpXG5cdFx0c2NyaXB0VXJsID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmNcblx0aWYgKCFzY3JpcHRVcmwpIHtcblx0XHR2YXIgc2NyaXB0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpO1xuXHRcdGlmKHNjcmlwdHMubGVuZ3RoKSBzY3JpcHRVcmwgPSBzY3JpcHRzW3NjcmlwdHMubGVuZ3RoIC0gMV0uc3JjXG5cdH1cbn1cbi8vIFdoZW4gc3VwcG9ydGluZyBicm93c2VycyB3aGVyZSBhbiBhdXRvbWF0aWMgcHVibGljUGF0aCBpcyBub3Qgc3VwcG9ydGVkIHlvdSBtdXN0IHNwZWNpZnkgYW4gb3V0cHV0LnB1YmxpY1BhdGggbWFudWFsbHkgdmlhIGNvbmZpZ3VyYXRpb25cbi8vIG9yIHBhc3MgYW4gZW1wdHkgc3RyaW5nIChcIlwiKSBhbmQgc2V0IHRoZSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyB2YXJpYWJsZSBmcm9tIHlvdXIgY29kZSB0byB1c2UgeW91ciBvd24gbG9naWMuXG5pZiAoIXNjcmlwdFVybCkgdGhyb3cgbmV3IEVycm9yKFwiQXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJyb3dzZXJcIik7XG5zY3JpcHRVcmwgPSBzY3JpcHRVcmwucmVwbGFjZSgvIy4qJC8sIFwiXCIpLnJlcGxhY2UoL1xcPy4qJC8sIFwiXCIpLnJlcGxhY2UoL1xcL1teXFwvXSskLywgXCIvXCIpO1xuX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gc2NyaXB0VXJsOyJdLCJzb3VyY2VSb290IjoiIn0=