weboffice-js-sdk 2.0.2 → 2.0.3-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +522 -0
- package/dist/OfficeSDK.d.ts +639 -0
- package/dist/OfficeSDK.facade.d.ts +15 -0
- package/dist/OfficeSDK.facade.types.d.ts +834 -0
- package/dist/OfficeSDK.headerBars.d.ts +84 -0
- package/dist/editorFacade.contract.d.ts +40 -0
- package/{index.d.ts → dist/index.d.ts} +3 -0
- package/dist/index.js +2 -0
- package/dist/types/EmptyPage.d.ts +120 -0
- package/dist/types/SlashMenu.d.ts +19 -0
- package/package.json +55 -5
- package/OfficeSDK.d.ts +0 -338
- package/assets/loading.d.ts +0 -1
- package/index.js +0 -1
- /package/{assert.d.ts → dist/assert.d.ts} +0 -0
- /package/{connect.d.ts → dist/connect.d.ts} +0 -0
- /package/{types → dist/types}/BaseEditor.d.ts +0 -0
- /package/{types → dist/types}/Document.d.ts +0 -0
- /package/{types → dist/types}/DocumentPro.d.ts +0 -0
- /package/{types → dist/types}/FlowChart.d.ts +0 -0
- /package/{types → dist/types}/Form.d.ts +0 -0
- /package/{types → dist/types}/Presentation.d.ts +0 -0
- /package/{types → dist/types}/Spreadsheet.d.ts +0 -0
- /package/{types → dist/types}/Table.d.ts +0 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.WebOfficeJSSDK=t():e.WebOfficeJSSDK=t()}(self,(()=>(()=>{var e={1121:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e){this.alphabet=e,this.lookup=this.createLookupTable()}return e.getBytes=function(e){for(var t=[],r=0;r<e.length;r++){var n=e.charCodeAt(r);t.push(255&n)}return t},e.getString=function(e){return String.fromCharCode.apply(this,e)},e.createInstance=function(){return this.createInstanceWithGmpCharacterSet()},e.createInstanceWithGmpCharacterSet=function(){return new e(e.CharacterSets.GMP)},e.createInstanceWithInvertedCharacterSet=function(){return new e(e.CharacterSets.INVERTED)},e.translate=function(e,t){for(var r=[],n=0,o=e;n<o.length;n++){var i=o[n];r.push(t[i])}return r},e.convert=function(e,t,r){for(var n=[],o=e;o.length>0;){for(var i=[],a=0,s=0,c=o;s<c.length;s++){var u=(255&c[s])+a*t,l=(u-u%r)/r;a=u%r,(i.length>0||l>0)&&i.push(l)}n.push(a),o=i}for(var d=0;d<e.length-1&&0===e[d];d++)n.push(0);return n.reverse()},e.prototype.encode=function(t){var r=e.convert(t,e.STANDARD_BASE,e.TARGET_BASE);return e.translate(r,this.alphabet)},e.prototype.decode=function(t){var r=e.translate(t,this.lookup);return e.convert(r,e.TARGET_BASE,e.STANDARD_BASE)},e.prototype.encodeStr=function(t){return e.getString(this.encode(e.getBytes(t)))},e.prototype.decodeStr=function(t){return e.getString(this.decode(e.getBytes(t)))},e.prototype.createLookupTable=function(){for(var e=new Array(256),t=0;t<256;t++)e[this.alphabet[t]]=255&t;return e},e.CharacterSets={GMP:["0".charCodeAt(0),"1".charCodeAt(0),"2".charCodeAt(0),"3".charCodeAt(0),"4".charCodeAt(0),"5".charCodeAt(0),"6".charCodeAt(0),"7".charCodeAt(0),"8".charCodeAt(0),"9".charCodeAt(0),"A".charCodeAt(0),"B".charCodeAt(0),"C".charCodeAt(0),"D".charCodeAt(0),"E".charCodeAt(0),"F".charCodeAt(0),"G".charCodeAt(0),"H".charCodeAt(0),"I".charCodeAt(0),"J".charCodeAt(0),"K".charCodeAt(0),"L".charCodeAt(0),"M".charCodeAt(0),"N".charCodeAt(0),"O".charCodeAt(0),"P".charCodeAt(0),"Q".charCodeAt(0),"R".charCodeAt(0),"S".charCodeAt(0),"T".charCodeAt(0),"U".charCodeAt(0),"V".charCodeAt(0),"W".charCodeAt(0),"X".charCodeAt(0),"Y".charCodeAt(0),"Z".charCodeAt(0),"a".charCodeAt(0),"b".charCodeAt(0),"c".charCodeAt(0),"d".charCodeAt(0),"e".charCodeAt(0),"f".charCodeAt(0),"g".charCodeAt(0),"h".charCodeAt(0),"i".charCodeAt(0),"j".charCodeAt(0),"k".charCodeAt(0),"l".charCodeAt(0),"m".charCodeAt(0),"n".charCodeAt(0),"o".charCodeAt(0),"p".charCodeAt(0),"q".charCodeAt(0),"r".charCodeAt(0),"s".charCodeAt(0),"t".charCodeAt(0),"u".charCodeAt(0),"v".charCodeAt(0),"w".charCodeAt(0),"x".charCodeAt(0),"y".charCodeAt(0),"z".charCodeAt(0)],INVERTED:["0".charCodeAt(0),"1".charCodeAt(0),"2".charCodeAt(0),"3".charCodeAt(0),"4".charCodeAt(0),"5".charCodeAt(0),"6".charCodeAt(0),"7".charCodeAt(0),"8".charCodeAt(0),"9".charCodeAt(0),"a".charCodeAt(0),"b".charCodeAt(0),"c".charCodeAt(0),"d".charCodeAt(0),"e".charCodeAt(0),"f".charCodeAt(0),"g".charCodeAt(0),"h".charCodeAt(0),"i".charCodeAt(0),"j".charCodeAt(0),"k".charCodeAt(0),"l".charCodeAt(0),"m".charCodeAt(0),"n".charCodeAt(0),"o".charCodeAt(0),"p".charCodeAt(0),"q".charCodeAt(0),"r".charCodeAt(0),"s".charCodeAt(0),"t".charCodeAt(0),"u".charCodeAt(0),"v".charCodeAt(0),"w".charCodeAt(0),"x".charCodeAt(0),"y".charCodeAt(0),"z".charCodeAt(0),"A".charCodeAt(0),"B".charCodeAt(0),"C".charCodeAt(0),"D".charCodeAt(0),"E".charCodeAt(0),"F".charCodeAt(0),"G".charCodeAt(0),"H".charCodeAt(0),"I".charCodeAt(0),"J".charCodeAt(0),"K".charCodeAt(0),"L".charCodeAt(0),"M".charCodeAt(0),"N".charCodeAt(0),"O".charCodeAt(0),"P".charCodeAt(0),"Q".charCodeAt(0),"R".charCodeAt(0),"S".charCodeAt(0),"T".charCodeAt(0),"U".charCodeAt(0),"V".charCodeAt(0),"W".charCodeAt(0),"X".charCodeAt(0),"Y".charCodeAt(0),"Z".charCodeAt(0)]},e.STANDARD_BASE=256,e.TARGET_BASE=62,e}();t.default=r},1582:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});class r{constructor(e,t){this.timeout=e,this.db=new Map,this.nextGc=null,this.gcDelay=t||5}get size(){return this.db.size}get all(){const e=new Set;return this.db.forEach(((t,r)=>{e.add(r)})),e}add(e){return this.db.set(e,Date.now()+this.timeout),this.scheduleGc(),this}has(e){return this.db.has(e)}delete(e){return this.db.has(e)&&(this.db.delete(e),this.scheduleGc(!0)),this}gc(){const e=Date.now();this.db.forEach(((t,r)=>{t<e&&this.db.delete(r)})),this.nextGc=null,this.scheduleGc()}scheduleGc(e=!1){if(e&&this.nextGc&&(clearTimeout(this.nextGc),this.nextGc=null),null!==this.nextGc||0===this.db.size)return;let t=-1;this.db.forEach((e=>{(-1===t||e<t)&&(t=e)})),-1===t&&(t=Date.now());const r=t-Date.now()+this.gcDelay;this.nextGc=setTimeout(this.gc.bind(this),r)}}t.default=r,e.exports=r,e.exports.default=r},7820:e=>{"use strict";"undefined"!=typeof self?e.exports=self:"undefined"!=typeof window?e.exports=window:e.exports=Function("return this")()},5323:(e,t,r)=>{"use strict";var n=r(7820);e.exports=function(){return"object"==typeof r.g&&r.g&&r.g.Math===Math&&r.g.Array===Array?r.g:n}},1436:e=>{var t;self,t=()=>(()=>{var e={318:e=>{e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},8:e=>{function t(r){return e.exports=t="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.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},991:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OPEN_BROADCAST_CHANNELS=t.BroadcastChannel=void 0,t.clearNodeFolder=function(e){e=(0,i.fillOptionsWithDefaults)(e);var t=(0,o.chooseMethod)(e);return"node"===t.type?t.clearNodeFolder().then((function(){return!0})):n.PROMISE_RESOLVED_FALSE},t.enforceOptions=function(e){s=e};var n=r(202),o=r(632),i=r(423),a=new Set;t.OPEN_BROADCAST_CHANNELS=a;var s,c=0,u=function(e,t){var r,u;this.id=c++,a.add(this),this.name=e,s&&(t=s),this.options=(0,i.fillOptionsWithDefaults)(t),this.method=(0,o.chooseMethod)(this.options),this._iL=!1,this._onML=null,this._addEL={message:[],internal:[]},this._uMP=new Set,this._befC=[],this._prepP=null,u=(r=this).method.create(r.name,r.options),(0,n.isPromise)(u)?(r._prepP=u,u.then((function(e){r._state=e}))):r._state=u};function l(e,t,r){var o={time:e.method.microSeconds(),type:t,data:r};return(e._prepP?e._prepP:n.PROMISE_RESOLVED_VOID).then((function(){var t=e.method.postMessage(e._state,o);return e._uMP.add(t),t.catch().then((function(){return e._uMP.delete(t)})),t}))}function d(e){return e._addEL.message.length>0||e._addEL.internal.length>0}function f(e,t,r){e._addEL[t].push(r),function(e){if(!e._iL&&d(e)){var t=function(t){e._addEL[t.type].forEach((function(e){var r=e.time-1e5;t.time>=r&&e.fn(t.data)}))},r=e.method.microSeconds();e._prepP?e._prepP.then((function(){e._iL=!0,e.method.onMessage(e._state,t,r)})):(e._iL=!0,e.method.onMessage(e._state,t,r))}}(e)}function h(e,t,r){e._addEL[t]=e._addEL[t].filter((function(e){return e!==r})),function(e){if(e._iL&&!d(e)){e._iL=!1;var t=e.method.microSeconds();e.method.onMessage(e._state,null,t)}}(e)}t.BroadcastChannel=u,u._pubkey=!0,u.prototype={postMessage:function(e){if(this.closed)throw new Error("BroadcastChannel.postMessage(): Cannot post message after channel has closed "+JSON.stringify(e));return l(this,"message",e)},postInternal:function(e){return l(this,"internal",e)},set onmessage(e){var t={time:this.method.microSeconds(),fn:e};h(this,"message",this._onML),e&&"function"==typeof e?(this._onML=t,f(this,"message",t)):this._onML=null},addEventListener:function(e,t){f(this,e,{time:this.method.microSeconds(),fn:t})},removeEventListener:function(e,t){h(this,e,this._addEL[e].find((function(e){return e.fn===t})))},close:function(){var e=this;if(!this.closed){a.delete(this),this.closed=!0;var t=this._prepP?this._prepP:n.PROMISE_RESOLVED_VOID;return this._onML=null,this._addEL.message=[],t.then((function(){return Promise.all(Array.from(e._uMP))})).then((function(){return Promise.all(e._befC.map((function(e){return e()})))})).then((function(){return e.method.close(e._state)}))}},get type(){return this.method.type},get isClosed(){return this.closed}}},437:(e,t,r)=>{"use strict";var n=r(585);e.exports={BroadcastChannel:n.BroadcastChannel,createLeaderElection:n.createLeaderElection,clearNodeFolder:n.clearNodeFolder,enforceOptions:n.enforceOptions,beLeader:n.beLeader}},585:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BroadcastChannel",{enumerable:!0,get:function(){return n.BroadcastChannel}}),Object.defineProperty(t,"OPEN_BROADCAST_CHANNELS",{enumerable:!0,get:function(){return n.OPEN_BROADCAST_CHANNELS}}),Object.defineProperty(t,"beLeader",{enumerable:!0,get:function(){return o.beLeader}}),Object.defineProperty(t,"clearNodeFolder",{enumerable:!0,get:function(){return n.clearNodeFolder}}),Object.defineProperty(t,"createLeaderElection",{enumerable:!0,get:function(){return o.createLeaderElection}}),Object.defineProperty(t,"enforceOptions",{enumerable:!0,get:function(){return n.enforceOptions}});var n=r(991),o=r(550)},550:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.beLeader=s,t.createLeaderElection=function(e,t){if(e._leaderElector)throw new Error("BroadcastChannel already has a leader-elector");t=function(e,t){return e||(e={}),(e=JSON.parse(JSON.stringify(e))).fallbackInterval||(e.fallbackInterval=3e3),e.responseTime||(e.responseTime=t.method.averageResponseTime(t.options)),e}(t,e);var r=new i(e,t);return e._befC.push((function(){return r.die()})),e._leaderElector=r,r};var n=r(202),o=r(499),i=function(e,t){var r=this;this.broadcastChannel=e,this._options=t,this.isLeader=!1,this.hasLeader=!1,this.isDead=!1,this.token=(0,n.randomToken)(),this._aplQ=n.PROMISE_RESOLVED_VOID,this._aplQC=0,this._unl=[],this._lstns=[],this._dpL=function(){},this._dpLC=!1;var o=function(e){"leader"===e.context&&("death"===e.action&&(r.hasLeader=!1),"tell"===e.action&&(r.hasLeader=!0))};this.broadcastChannel.addEventListener("internal",o),this._lstns.push(o)};function a(e,t){var r={context:"leader",action:t,token:e.token};return e.broadcastChannel.postInternal(r)}function s(e){e.isLeader=!0,e.hasLeader=!0;var t=(0,o.add)((function(){return e.die()}));e._unl.push(t);var r=function(t){"leader"===t.context&&"apply"===t.action&&a(e,"tell"),"leader"!==t.context||"tell"!==t.action||e._dpLC||(e._dpLC=!0,e._dpL(),a(e,"tell"))};return e.broadcastChannel.addEventListener("internal",r),e._lstns.push(r),a(e,"tell")}i.prototype={applyOnce:function(e){var t=this;return this.isLeader?(0,n.sleep)(0,!0):this.isDead?(0,n.sleep)(0,!1):this._aplQC>1?this._aplQ:(this._aplQC=this._aplQC+1,this._aplQ=this._aplQ.then((function(){return function(){if(t.isLeader)return n.PROMISE_RESOLVED_TRUE;var r,o=!1,i=new Promise((function(e){r=function(){o=!0,e()}})),c=[],u=function(e){"leader"===e.context&&e.token!=t.token&&(c.push(e),"apply"===e.action&&e.token>t.token&&r(),"tell"===e.action&&(r(),t.hasLeader=!0))};t.broadcastChannel.addEventListener("internal",u);var l=e?4*t._options.responseTime:t._options.responseTime;return a(t,"apply").then((function(){return Promise.race([(0,n.sleep)(l),i.then((function(){return Promise.reject(new Error)}))])})).then((function(){return a(t,"apply")})).then((function(){return Promise.race([(0,n.sleep)(l),i.then((function(){return Promise.reject(new Error)}))])})).catch((function(){})).then((function(){return t.broadcastChannel.removeEventListener("internal",u),!o&&s(t).then((function(){return!0}))}))}()})).then((function(){t._aplQC=t._aplQC-1})),this._aplQ.then((function(){return t.isLeader})))},awaitLeadership:function(){return this._aLP||(this._aLP=(e=this).isLeader?n.PROMISE_RESOLVED_VOID:new Promise((function(t){var r=!1;function o(){r||(r=!0,e.broadcastChannel.removeEventListener("internal",i),t(!0))}e.applyOnce().then((function(){e.isLeader&&o()})),function t(){return(0,n.sleep)(e._options.fallbackInterval).then((function(){if(!e.isDead&&!r)return e.isLeader?void o():e.applyOnce(!0).then((function(){e.isLeader?o():t()}))}))}();var i=function(t){"leader"===t.context&&"death"===t.action&&(e.hasLeader=!1,e.applyOnce().then((function(){e.isLeader&&o()})))};e.broadcastChannel.addEventListener("internal",i),e._lstns.push(i)}))),this._aLP;var e},set onduplicate(e){this._dpL=e},die:function(){var e=this;return this._lstns.forEach((function(t){return e.broadcastChannel.removeEventListener("internal",t)})),this._lstns=[],this._unl.forEach((function(e){return e.remove()})),this._unl=[],this.isLeader&&(this.hasLeader=!1,this.isLeader=!1),this.isDead=!0,a(this,"death")}}},632:(e,t,r)=>{"use strict";var n=r(318);r(8),Object.defineProperty(t,"__esModule",{value:!0}),t.chooseMethod=function(e){var t=[].concat(e.methods,u).filter(Boolean);if(e.type){if("simulate"===e.type)return s.default;var r=t.find((function(t){return t.type===e.type}));if(r)return r;throw new Error("method-type "+e.type+" not found")}e.webWorkerSupport||c.isNode||(t=t.filter((function(e){return"idb"!==e.type})));var n=t.find((function(e){return e.canBeUsed()}));if(n)return n;throw new Error("No useable method found in "+JSON.stringify(u.map((function(e){return e.type}))))};var o=n(r(115)),i=n(r(122)),a=n(r(924)),s=n(r(574)),c=r(202),u=[o.default,i.default,a.default]},122:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.averageResponseTime=C,t.canBeUsed=E,t.cleanOldMessages=p,t.close=y,t.create=v,t.createDatabase=u,t.default=void 0,t.getAllMessages=function(e){var t=e.transaction(s).objectStore(s),r=[];return new Promise((function(e){t.openCursor().onsuccess=function(t){var n=t.target.result;n?(r.push(n.value),n.continue()):e(r)}}))},t.getIdb=c,t.getMessagesHigherThan=d,t.getOldMessages=h,t.microSeconds=void 0,t.onMessage=w,t.postMessage=b,t.removeMessageById=f,t.type=void 0,t.writeMessage=l;var n=r(202),o=r(151),i=r(423),a=n.microSeconds;t.microSeconds=a;var s="messages";function c(){if("undefined"!=typeof indexedDB)return indexedDB;if("undefined"!=typeof window){if(void 0!==window.mozIndexedDB)return window.mozIndexedDB;if(void 0!==window.webkitIndexedDB)return window.webkitIndexedDB;if(void 0!==window.msIndexedDB)return window.msIndexedDB}return!1}function u(e){var t="pubkey.broadcast-channel-0-"+e,r=c().open(t,1);return r.onupgradeneeded=function(e){e.target.result.createObjectStore(s,{keyPath:"id",autoIncrement:!0})},new Promise((function(e,t){r.onerror=function(e){return t(e)},r.onsuccess=function(){e(r.result)}}))}function l(e,t,r){var n={uuid:t,time:(new Date).getTime(),data:r},o=e.transaction([s],"readwrite");return new Promise((function(e,t){o.oncomplete=function(){return e()},o.onerror=function(e){return t(e)},o.objectStore(s).add(n)}))}function d(e,t){var r=e.transaction(s).objectStore(s),n=[];return new Promise((function(e){(function(){try{var e=IDBKeyRange.bound(t+1,1/0);return r.openCursor(e)}catch(e){return r.openCursor()}}()).onsuccess=function(r){var o=r.target.result;o?o.value.id<t+1?o.continue(t+1):(n.push(o.value),o.continue()):e(n)}}))}function f(e,t){var r=e.transaction([s],"readwrite").objectStore(s).delete(t);return new Promise((function(e){r.onsuccess=function(){return e()}}))}function h(e,t){var r=(new Date).getTime()-t,n=e.transaction(s).objectStore(s),o=[];return new Promise((function(e){n.openCursor().onsuccess=function(t){var n=t.target.result;if(n){var i=n.value;if(!(i.time<r))return void e(o);o.push(i),n.continue()}else e(o)}}))}function p(e,t){return h(e,t).then((function(t){return Promise.all(t.map((function(t){return f(e,t.id)})))}))}function v(e,t){return t=(0,i.fillOptionsWithDefaults)(t),u(e).then((function(r){var i={closed:!1,lastCursorId:0,channelName:e,options:t,uuid:(0,n.randomToken)(),eMIs:new o.ObliviousSet(2*t.idb.ttl),writeBlockPromise:n.PROMISE_RESOLVED_VOID,messagesCallback:null,readQueuePromises:[],db:r};return r.onclose=function(){i.closed=!0,t.idb.onclose&&t.idb.onclose()},g(i),i}))}function g(e){e.closed||m(e).then((function(){return(0,n.sleep)(e.options.idb.fallbackInterval)})).then((function(){return g(e)}))}function m(e){return e.closed?n.PROMISE_RESOLVED_VOID:e.messagesCallback?d(e.db,e.lastCursorId).then((function(t){var r=t.filter((function(e){return!!e})).map((function(t){return t.id>e.lastCursorId&&(e.lastCursorId=t.id),t})).filter((function(t){return function(e,t){return!(e.uuid===t.uuid||t.eMIs.has(e.id)||e.data.time<t.messagesCallbackTime)}(t,e)})).sort((function(e,t){return e.time-t.time}));return r.forEach((function(t){e.messagesCallback&&(e.eMIs.add(t.id),e.messagesCallback(t.data))})),n.PROMISE_RESOLVED_VOID})):n.PROMISE_RESOLVED_VOID}function y(e){e.closed=!0,e.db.close()}function b(e,t){return e.writeBlockPromise=e.writeBlockPromise.then((function(){return l(e.db,e.uuid,t)})).then((function(){0===(0,n.randomInt)(0,10)&&p(e.db,e.options.idb.ttl)})),e.writeBlockPromise}function w(e,t,r){e.messagesCallbackTime=r,e.messagesCallback=t,m(e)}function E(){return!n.isNode&&!!c()}function C(e){return 2*e.idb.fallbackInterval}t.type="idb";var S={create:v,close:y,onMessage:w,postMessage:b,canBeUsed:E,type:"idb",averageResponseTime:C,microSeconds:a};t.default=S},924:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addStorageEventListener=d,t.averageResponseTime=m,t.canBeUsed=g,t.close=p,t.create=h,t.default=void 0,t.getLocalStorage=c,t.microSeconds=void 0,t.onMessage=v,t.postMessage=l,t.removeStorageEventListener=f,t.storageKey=u,t.type=void 0;var n=r(151),o=r(423),i=r(202),a=i.microSeconds;t.microSeconds=a;var s="localstorage";function c(){var e;if("undefined"==typeof window)return null;try{e=window.localStorage,e=window["ie8-eventlistener/storage"]||window.localStorage}catch(e){}return e}function u(e){return"pubkey.broadcastChannel-"+e}function l(e,t){return new Promise((function(r){(0,i.sleep)().then((function(){var n=u(e.channelName),o={token:(0,i.randomToken)(),time:(new Date).getTime(),data:t,uuid:e.uuid},a=JSON.stringify(o);c().setItem(n,a);var s=document.createEvent("Event");s.initEvent("storage",!0,!0),s.key=n,s.newValue=a,window.dispatchEvent(s),r()}))}))}function d(e,t){var r=u(e),n=function(e){e.key===r&&t(JSON.parse(e.newValue))};return window.addEventListener("storage",n),n}function f(e){window.removeEventListener("storage",e)}function h(e,t){if(t=(0,o.fillOptionsWithDefaults)(t),!g())throw new Error("BroadcastChannel: localstorage cannot be used");var r=(0,i.randomToken)(),a=new n.ObliviousSet(t.localstorage.removeTimeout),s={channelName:e,uuid:r,eMIs:a};return s.listener=d(e,(function(e){s.messagesCallback&&e.uuid!==r&&e.token&&!a.has(e.token)&&(e.data.time&&e.data.time<s.messagesCallbackTime||(a.add(e.token),s.messagesCallback(e.data)))})),s}function p(e){f(e.listener)}function v(e,t,r){e.messagesCallbackTime=r,e.messagesCallback=t}function g(){if(i.isNode)return!1;var e=c();if(!e)return!1;try{var t="__broadcastchannel_check";e.setItem(t,"works"),e.removeItem(t)}catch(e){return!1}return!0}function m(){var e=navigator.userAgent.toLowerCase();return e.includes("safari")&&!e.includes("chrome")?240:120}t.type=s;var y={create:h,close:p,onMessage:v,postMessage:l,canBeUsed:g,type:s,averageResponseTime:m,microSeconds:a};t.default=y},115:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.averageResponseTime=d,t.canBeUsed=l,t.close=s,t.create=a,t.microSeconds=t.default=void 0,t.onMessage=u,t.postMessage=c,t.type=void 0;var n=r(202),o=n.microSeconds;t.microSeconds=o;var i="native";function a(e){var t={messagesCallback:null,bc:new BroadcastChannel(e),subFns:[]};return t.bc.onmessage=function(e){t.messagesCallback&&t.messagesCallback(e.data)},t}function s(e){e.bc.close(),e.subFns=[]}function c(e,t){try{return e.bc.postMessage(t,!1),n.PROMISE_RESOLVED_VOID}catch(e){return Promise.reject(e)}}function u(e,t){e.messagesCallback=t}function l(){if(n.isNode&&"undefined"==typeof window)return!1;if("function"==typeof BroadcastChannel){if(BroadcastChannel._pubkey)throw new Error("BroadcastChannel: Do not overwrite window.BroadcastChannel with this module, this is not a polyfill");return!0}return!1}function d(){return 150}t.type=i;var f={create:a,close:s,onMessage:u,postMessage:c,canBeUsed:l,type:i,averageResponseTime:d,microSeconds:o};t.default=f},574:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.averageResponseTime=d,t.canBeUsed=l,t.close=s,t.create=a,t.microSeconds=t.default=void 0,t.onMessage=u,t.postMessage=c,t.type=void 0;var n=r(202).microSeconds;t.microSeconds=n;var o="simulate";t.type=o;var i=new Set;function a(e){var t={name:e,messagesCallback:null};return i.add(t),t}function s(e){i.delete(e)}function c(e,t){return new Promise((function(r){return setTimeout((function(){Array.from(i).filter((function(t){return t.name===e.name})).filter((function(t){return t!==e})).filter((function(e){return!!e.messagesCallback})).forEach((function(e){return e.messagesCallback(t)})),r()}),5)}))}function u(e,t){e.messagesCallback=t}function l(){return!0}function d(){return 5}var f={create:a,close:s,onMessage:u,postMessage:c,canBeUsed:l,type:o,averageResponseTime:d,microSeconds:n};t.default=f},423:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.fillOptionsWithDefaults=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=JSON.parse(JSON.stringify(e));return void 0===t.webWorkerSupport&&(t.webWorkerSupport=!0),t.idb||(t.idb={}),t.idb.ttl||(t.idb.ttl=45e3),t.idb.fallbackInterval||(t.idb.fallbackInterval=150),e.idb&&"function"==typeof e.idb.onclose&&(t.idb.onclose=e.idb.onclose),t.localstorage||(t.localstorage={}),t.localstorage.removeTimeout||(t.localstorage.removeTimeout=6e4),e.methods&&(t.methods=e.methods),t.node||(t.node={}),t.node.ttl||(t.node.ttl=12e4),t.node.maxParallelWrites||(t.node.maxParallelWrites=2048),void 0===t.node.useFastPath&&(t.node.useFastPath=!0),t}},202:(e,t,r)=>{"use strict";var n=r(155);Object.defineProperty(t,"__esModule",{value:!0}),t.isNode=t.PROMISE_RESOLVED_VOID=t.PROMISE_RESOLVED_TRUE=t.PROMISE_RESOLVED_FALSE=void 0,t.isPromise=function(e){return!(!e||"function"!=typeof e.then)},t.microSeconds=function(){var e=(new Date).getTime();return e===s?1e3*e+ ++c:(s=e,c=0,1e3*e)},t.randomInt=function(e,t){return Math.floor(Math.random()*(t-e+1)+e)},t.randomToken=function(){return Math.random().toString(36).substring(2)},t.sleep=function(e,t){return e||(e=0),new Promise((function(r){return setTimeout((function(){return r(t)}),e)}))};var o=Promise.resolve(!1);t.PROMISE_RESOLVED_FALSE=o;var i=Promise.resolve(!0);t.PROMISE_RESOLVED_TRUE=i;var a=Promise.resolve();t.PROMISE_RESOLVED_VOID=a;var s=0,c=0,u="[object process]"===Object.prototype.toString.call(void 0!==n?n:0);t.isNode=u},227:(e,t,r)=>{var n=r(155);t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const r="color: "+this.color;t.splice(1,0,r,"color: inherit");let n=0,o=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(o=n))})),t.splice(o,0,r)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&void 0!==n&&"env"in n&&(e=n.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=r(447)(t);const{formatters:o}=e.exports;o.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},447:(e,t,r)=>{e.exports=function(e){function t(e){let r,o,i,a=null;function s(...e){if(!s.enabled)return;const n=s,o=Number(new Date),i=o-(r||o);n.diff=i,n.prev=r,n.curr=o,r=o,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let a=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((r,o)=>{if("%%"===r)return"%";a++;const i=t.formatters[o];if("function"==typeof i){const t=e[a];r=i.call(n,t),e.splice(a,1),a--}return r})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return s.namespace=e,s.useColors=t.useColors(),s.color=t.selectColor(e),s.extend=n,s.destroy=t.destroy,Object.defineProperty(s,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==a?a:(o!==t.namespaces&&(o=t.namespaces,i=t.enabled(e)),i),set:e=>{a=e}}),"function"==typeof t.init&&t.init(s),s}function n(e,r){const n=t(this.namespace+(void 0===r?":":r)+e);return n.log=this.log,n}function o(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(o),...t.skips.map(o).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let r;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),o=n.length;for(r=0;r<o;r++)n[r]&&("-"===(e=n[r].replace(/\*/g,".*?"))[0]?t.skips.push(new RegExp("^"+e.slice(1)+"$")):t.names.push(new RegExp("^"+e+"$")))},t.enabled=function(e){if("*"===e[e.length-1])return!0;let r,n;for(r=0,n=t.skips.length;r<n;r++)if(t.skips[r].test(e))return!1;for(r=0,n=t.names.length;r<n;r++)if(t.names[r].test(e))return!0;return!1},t.humanize=r(824),t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach((r=>{t[r]=e[r]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let r=0;for(let t=0;t<e.length;t++)r=(r<<5)-r+e.charCodeAt(t),r|=0;return t.colors[Math.abs(r)%t.colors.length]},t.enable(t.load()),t}},643:e=>{e.exports=!1},824:e=>{var t=1e3,r=60*t,n=60*r,o=24*n;function i(e,t,r,n){var o=t>=1.5*r;return Math.round(e/r)+" "+n+(o?"s":"")}e.exports=function(e,a){a=a||{};var s,c,u=typeof e;if("string"===u&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var i=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(i){var a=parseFloat(i[1]);switch((i[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*a;case"weeks":case"week":case"w":return 6048e5*a;case"days":case"day":case"d":return a*o;case"hours":case"hour":case"hrs":case"hr":case"h":return a*n;case"minutes":case"minute":case"mins":case"min":case"m":return a*r;case"seconds":case"second":case"secs":case"sec":case"s":return a*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return a;default:return}}}}(e);if("number"===u&&isFinite(e))return a.long?(s=e,(c=Math.abs(s))>=o?i(s,c,o,"day"):c>=n?i(s,c,n,"hour"):c>=r?i(s,c,r,"minute"):c>=t?i(s,c,t,"second"):s+" ms"):function(e){var i=Math.abs(e);return i>=o?Math.round(e/o)+"d":i>=n?Math.round(e/n)+"h":i>=r?Math.round(e/r)+"m":i>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},151:(e,t,r)=>{"use strict";r.r(t),r.d(t,{ObliviousSet:()=>n,now:()=>i,removeTooOldValues:()=>o});var n=function(){function e(e){this.ttl=e,this.set=new Set,this.timeMap=new Map}return e.prototype.has=function(e){return this.set.has(e)},e.prototype.add=function(e){var t=this;this.timeMap.set(e,i()),this.set.add(e),setTimeout((function(){o(t)}),0)},e.prototype.clear=function(){this.set.clear(),this.timeMap.clear()},e}();function o(e){for(var t=i()-e.ttl,r=e.set[Symbol.iterator]();;){var n=r.next().value;if(!n)return;if(!(e.timeMap.get(n)<t))return;e.timeMap.delete(n),e.set.delete(n)}}function i(){return(new Date).getTime()}},155:e=>{var t,r,n=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}function a(e){if(t===setTimeout)return setTimeout(e,0);if((t===o||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:o}catch(e){t=o}try{r="function"==typeof clearTimeout?clearTimeout:i}catch(e){r=i}}();var s,c=[],u=!1,l=-1;function d(){u&&s&&(u=!1,s.length?c=s.concat(c):l=-1,c.length&&f())}function f(){if(!u){var e=a(d);u=!0;for(var t=c.length;t;){for(s=c,c=[];++l<t;)s&&s[l].run();l=-1,t=c.length}s=null,u=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===i||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function h(e,t){this.fun=e,this.array=t}function p(){}n.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];c.push(new h(e,t)),1!==c.length||u||a(f)},h.prototype.run=function(){this.fun.apply(null,this.array)},n.title="browser",n.browser=!0,n.env={},n.argv=[],n.version="",n.versions={},n.on=p,n.addListener=p,n.once=p,n.off=p,n.removeListener=p,n.removeAllListeners=p,n.emit=p,n.prependListener=p,n.prependOnceListener=p,n.listeners=function(e){return[]},n.binding=function(e){throw new Error("process.binding is not supported")},n.cwd=function(){return"/"},n.chdir=function(e){throw new Error("process.chdir is not supported")},n.umask=function(){return 0}},279:e=>{function t(){}t.prototype={on:function(e,t,r){var n=this.e||(this.e={});return(n[e]||(n[e]=[])).push({fn:t,ctx:r}),this},once:function(e,t,r){var n=this;function o(){n.off(e,o),t.apply(r,arguments)}return o._=t,this.on(e,o,r)},emit:function(e){for(var t=[].slice.call(arguments,1),r=((this.e||(this.e={}))[e]||[]).slice(),n=0,o=r.length;n<o;n++)r[n].fn.apply(r[n].ctx,t);return this},off:function(e,t){var r=this.e||(this.e={}),n=r[e],o=[];if(n&&t)for(var i=0,a=n.length;i<a;i++)n[i].fn!==t&&n[i].fn._!==t&&o.push(n[i]);return o.length?r[e]=o:delete r[e],this}},e.exports=t,e.exports.TinyEmitter=t},797:function(e,t){"use strict";var r,n=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(t,"__esModule",{value:!0}),t.assert=t.AssertError=void 0;var o=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t}(Error);t.AssertError=o,t.assert=function(e,t,r){if(t(e))return e;throw new o(r)}},601:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SOURCE_NAMESPACE=void 0,t.SOURCE_NAMESPACE="OfficeSDKBroadcastChannel"},758:function(e,t){"use strict";var r,n=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(t,"__esModule",{value:!0}),t.InvokeError=t.MessageTimeoutError=t.MessageError=void 0;var o=function(e){function t(t){var r=e.call(this,t)||this;return r.name="MessageError",Object.setPrototypeOf(r,i.prototype),r}return n(t,e),t}(Error);t.MessageError=o;var i=function(e){function t(r){var n=e.call(this,r)||this;return n.name="MessageTimeoutError",Object.setPrototypeOf(n,t.prototype),n}return n(t,e),t}(Error);t.MessageTimeoutError=i;var a=function(e){function t(t){var r=e.call(this,t)||this;return r.name="InvokeError",Object.setPrototypeOf(r,i.prototype),r}return n(t,e),t}(Error);t.InvokeError=a},607:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.OfficeSDKMessageEvent=t.isOfficeSDKMessageEventLike=t.OfficeSDKBroadcastChannel=void 0;var a=i(r(623));t.OfficeSDKBroadcastChannel=a.default;var s=r(928);Object.defineProperty(t,"isOfficeSDKMessageEventLike",{enumerable:!0,get:function(){return s.isOfficeSDKMessageEventLike}}),Object.defineProperty(t,"OfficeSDKMessageEvent",{enumerable:!0,get:function(){return s.OfficeSDKMessageEvent}}),o(r(928),t),o(r(623),t),o(r(758),t),o(r(86),t),o(r(601),t)},928:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isOfficeSDKMessageEventLike=t.OfficeSDKMessageEvent=void 0;var n=r(131),o=r(797),i=r(601),a=function(e){var t=e.data,r=e.context,a=e.time,s=e.origin,c=e.emitter,u=e.channelId,l=Object.assign({},r,{channelId:u});"string"==typeof l.messageId&&""!==l.messageId.trim()||(l.messageId=(0,n.uuid)()),Object.defineProperties(this,{data:{enumerable:!0,value:t},context:{enumerable:!0,value:l},time:{enumerable:!0,value:null!=a?a:Date.now()},id:{enumerable:!0,get:function(){return l.messageId}},source:{enumerable:!0,value:i.SOURCE_NAMESPACE},origin:{enumerable:!0,value:s},emitter:{enumerable:!0,value:c},channelId:{enumerable:!0,get:function(){return l.channelId}}}),(0,o.assert)(this.context.channelId,(function(e){return"string"==typeof e&&e.length>0}),"channel id must be a non-empty string"),(0,o.assert)(this.id,(function(e){return"string"==typeof e&&e.length>0}),"id must be a non-empty string"),(0,o.assert)(this.time,(function(e){return"number"==typeof e&&e>=0}),"time must be a positive number")};t.OfficeSDKMessageEvent=a,t.isOfficeSDKMessageEventLike=function(e){if(e instanceof a)return!0;if("object"==typeof e&&null!=e){var t=e;return t.source===i.SOURCE_NAMESPACE&&"string"==typeof t.channelId&&t.channelId.length>0&&null!=t.context}return!1}},623:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}},i=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ContextType=t.DEBUG_NAMESPACE=t.INVOKE_DEFAUTL_TIMEOUT=void 0;var s=r(437),c=r(279),u=r(797),l=r(758),d=r(928),f=r(86),h=a(r(227)),p=a(r(675)),v=r(131);t.INVOKE_DEFAUTL_TIMEOUT=6e4,t.DEBUG_NAMESPACE="SM_CHAN";var g,m=function(){function e(e){var r,i=this;this.invokeHandlers=new Map,this.eventHandlers=new Map,this.emitterId=(0,v.uuid)(),this._debugNamespace=t.DEBUG_NAMESPACE,this.debug=!0===e.debug,this.debugNamespace=null!==(r=e.debugNamespace)&&void 0!==r?r:t.DEBUG_NAMESPACE,this.autoStructuredClone=!0===e.autoStructuredClone,Object.defineProperty(this,"id",{enumerable:!0,value:"string"==typeof e.channelId?(0,u.assert)(e.channelId.trim(),(function(e){return e.length>0}),"channelId must be a non-empty string"):(0,v.uuid)()}),this.emitter=new c.TinyEmitter;var a=new s.BroadcastChannel(this.id,e.broadcastChannelOptions);a.addEventListener("message",(function(e){n(i,void 0,void 0,(function(){var t,r,n;return o(this,(function(o){switch(o.label){case 0:try{t=this.initMessageEvent(e)}catch(t){return(r=new l.MessageError(null!==(n=null==t?void 0:t.message)&&void 0!==n?n:"message cannot be handled")).originMessage=e.data,this.emit("messageError",r),[2]}return[4,this.distributeMessage(t)];case 1:return o.sent(),[2]}}))})).catch((function(e){return n(i,void 0,void 0,(function(){return o(this,(function(t){return this.emit("error",e),[2]}))}))}))})),this.channel=a}return e.prototype.initMessageEvent=function(e){var t=Object.assign({emitter:this.emitterId},e,{channelId:this.id});return"string"!=typeof t.origin&&(t.origin=location.origin),new d.OfficeSDKMessageEvent(t)},e.prototype.structuredClone=function(e){return this.autoStructuredClone?(0,f.structuredClone)(e,{replacer:function(){}}):e},e.prototype.addEventListener=function(e,t,r){var n=this.eventHandlers.get(e);Array.isArray(n)||(n=[]),n.push([t,r]),this.eventHandlers.set(e,n)},e.prototype.on=function(e,t,r){var n=this;return this.addEventListener(e,t,r),function(){n.off(e,t,r)}},e.prototype.once=function(e,t,r){var n=this,o=function(r,o){n.off(e,t,o),t(r,o)};return o.handler=t,this.addEventListener(e,o,r),function(){n.off(e,t,r)}},e.prototype.off=function(e,t,r){if(1===arguments.length)this.eventHandlers.delete(e);else{var n=this.eventHandlers.get(e);Array.isArray(n)&&("*"===(null==r?void 0:r.audience)?this.eventHandlers.delete(e):this.eventHandlers.set(e,n.filter((function(e){var n=e[0],o=e[1];return n!==t&&n.handler!==t||(null==o?void 0:o.audience)===(null==r?void 0:r.audience)}))))}},e.prototype.emit=function(e,t,r){var n=this.eventHandlers.get(e);if(this.log("emit event",{name:e,data:t,context:r,handlers:n}),Array.isArray(n))for(var o=0,i=n;o<i.length;o++){var a=i[o],s=a[0];y(a[1],r)&&s(t,r)}},e.prototype.postMessage=function(e,t){return n(this,void 0,void 0,(function(){var r,n,i,a;return o(this,(function(o){switch(o.label){case 0:try{n=this.structuredClone(e),r=(0,d.isOfficeSDKMessageEventLike)(n)?this.initMessageEvent(n):this.initMessageEvent({data:n,context:null!=t?this.mergeContexts([t]):t})}catch(t){throw this.log("message invalid",e,t),(a=new l.MessageError(null==t?void 0:t.message)).originMessage=n,a}o.label=1;case 1:return o.trys.push([1,3,,4]),this.log("pre postMessage",{message:n,origin:e,context:t,structuredCloned:this.autoStructuredClone}),[4,this.channel.postMessage(r)];case 2:return o.sent(),this.emit("postMessage",r,r.context),this.log("postMessage success",r),[3,4];case 3:throw i=o.sent(),this.log("post message error",i),(a=new l.MessageError(null==i?void 0:i.message)).originMessage=e,a;case 4:return[2]}}))}))},e.prototype.distributeMessage=function(e){var t,r,i;return n(this,void 0,void 0,(function(){var n,a;return o(this,(function(o){switch(o.label){case 0:return(null===(t=(n=e).context)||void 0===t?void 0:t.channelId)!==this.id||n.emitter===this.emitterId?(this.log("discard message",n),[2]):"function"!=typeof this.onMessageArrive?[3,2]:[4,this.onMessageArrive(n)];case 1:if(!((a=o.sent())instanceof d.OfficeSDKMessageEvent))return this.log("skip distributing message by `onMessageArrive`",{message:a,origin:e}),[2];n=a,o.label=2;case 2:return this.log("distribute message",{message:n,origin:e}),(null===(r=n.context)||void 0===r?void 0:r.type)!==g.InvokeRequest?[3,4]:[4,this.handleInvokeRequest(n)];case 3:return o.sent(),[2];case 4:return(null===(i=n.context)||void 0===i?void 0:i.type)===g.InvokeResponse?(this.handleInvokeResponse(n),[2]):(this.emit("message",n,n.context),[2])}}))}))},e.prototype.handleInvokeRequest=function(e){return n(this,void 0,void 0,(function(){var t,r,n,i,a,s,c,u,l,d,f;return o(this,(function(o){switch(o.label){case 0:if(!(0,p.default)(e.data))throw this.log("invalid invoke request",e),new Error("InvokeRequest data must be an object");if(t=e.data,r=t.name,n=t.args,i=this.invokeHandlers.get(r),this.log("handle invoke request",{message:e,handlers:i}),a=e.context,!Array.isArray(i)||0===i.length)return this.log("no invoke handlers",r),[2];s=0,c=i,o.label=1;case 1:if(!(s<c.length))return[3,8];if(!y((u=c[s]).context,a))return[3,7];l={data:void 0},o.label=2;case 2:return o.trys.push([2,4,,5]),d=l,[4,u.handler.apply(u,n)];case 3:return d.data=o.sent(),[3,5];case 4:return f=o.sent(),l.error=f,[3,5];case 5:return[4,this.postMessage(l,Object.assign({},a,{type:g.InvokeResponse}))];case 6:return o.sent(),[2];case 7:return s++,[3,1];case 8:return this.log("no invoke handler found",r),[2]}}))}))},e.prototype.handleInvokeResponse=function(e){if(this.log("handle invoke response",e),"string"!=typeof e.id)throw new l.InvokeError("Invoke response context id is invalid");this.emitter.emit(e.id,e.data)},e.prototype.mergeContexts=function(e){return Object.assign.apply(Object,i([{channelId:this.id}],e,!1))},e.prototype.invoke=function(e,r,i){return n(this,void 0,void 0,(function(){var n,a,s,c,u,d=this;return o(this,(function(o){switch(o.label){case 0:return n={name:e,args:r},a="number"==typeof(null==i?void 0:i.timeout)&&(null==i?void 0:i.timeout)>0?null==i?void 0:i.timeout:t.INVOKE_DEFAUTL_TIMEOUT,s=(0,v.uuid)(),c=new Promise((function(t,n){d.emitter.once(s,(function(o){if(o.error instanceof l.InvokeError)n(o.error);else if(null!=o.error){var i=new l.InvokeError("string"==typeof o.error?o.error:o.error.message);i.method=e,i.arguments=r,n(i)}else t(o.data)})),setTimeout((function(){d.emitter.off(s),n(new l.MessageTimeoutError("".concat(e," invoke timeout")))}),a)})),[4,this.postMessage(n,Object.assign({},i,{messageId:s,timeout:a,type:g.InvokeRequest}))];case 1:o.sent(),o.label=2;case 2:return o.trys.push([2,4,,5]),[4,c];case 3:return[2,o.sent()];case 4:throw u=o.sent(),this.log("invoke error",{id:s,name:e,args:r,payload:n,error:u}),u;case 5:return[2]}}))}))},e.prototype.addInvokeHandler=function(e,t,r){var n=this.invokeHandlers.get(e);Array.isArray(n)||(n=[]),n.push({handler:t,context:r}),this.invokeHandlers.set(e,n)},e.prototype.removeInvokeHandler=function(e,t,r){var n=this.invokeHandlers.get(e);Array.isArray(n)&&this.invokeHandlers.set(e,n.filter((function(e){var n;return e.handler!==t||(null===(n=e.context)||void 0===n?void 0:n.audience)!==(null==r?void 0:r.audience)})))},Object.defineProperty(e.prototype,"debug",{get:function(){return h.default.enabled(this._debugNamespace)},set:function(e){h.default.enable(e?this._debugNamespace:"-".concat(this._debugNamespace))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"debugNamespace",{get:function(){return this._debugNamespace},set:function(e){var t=this.debug;h.default.enable("-".concat(this._debugNamespace)),this.log=(0,h.default)(e),this._debugNamespace=e,t&&h.default.enable(e)},enumerable:!1,configurable:!0}),e}();function y(e,t){var r=null==e?void 0:e.audience,n=null==t?void 0:t.audience;return r===n||"*"===r||"*"===n}t.default=m,function(e){e[e.InvokeRequest=0]="InvokeRequest",e[e.InvokeResponse=1]="InvokeResponse"}(g=t.ContextType||(t.ContextType={}))},86:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.structuredClone=void 0;var o=n(r(675)),i=r(928);function a(e,t){try{return e instanceof t}catch(e){return!1}}t.structuredClone=function e(t,r){if(void 0===r&&(r={}),"string"==typeof t||"number"==typeof t||"boolean"==typeof t||null==t||t instanceof Date||t instanceof RegExp||t instanceof Boolean||t instanceof String||t instanceof i.OfficeSDKMessageEvent)return t;try{for(var n=0,s=[window.ArrayBuffer,window.Map,window.Set,window.DataView,window.File,window.FileList,window.Blob,window.ImageBitmap,window.ImageData];n<s.length;n++)if(a(t,s[n]))return t}catch(e){}if((0,o.default)(t)){var c=t,u={};for(var l in c)!0===Object.prototype.hasOwnProperty.call(c,l)&&(u[l]=e(c[l],r));return u}if(Array.isArray(t))return t.map((function(t){return e(t,r)}));if(t instanceof Error)return t.message;try{if(t instanceof Object.getPrototypeOf(Uint8Array))return t}catch(e){}if("function"==typeof r.replacer){var d=Object.assign({},r);return d.replacer=void 0,e(r.replacer(t),d)}throw new Error("".concat(String(t)," could not be cloned"))}},131:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.uuid=void 0,t.uuid=function(){for(var e,t=[],r=(null!==(e=window.crypto)&&void 0!==e?e:window.msCrypto).getRandomValues(new Uint8Array(20)),n=0;n<r.length;n++)t.push(r[n].toString(16).padStart(2,"0"));for(var o=0,i=[4,7,10,13];o<i.length;o++)t[i[o]]="-";return t.join("")}},499:(e,t,r)=>{"use strict";r.r(t),r.d(t,{add:()=>d,getSize:()=>p,removeAll:()=>h,runAll:()=>f});var n=r(643),o=r.n(n);const i={add:function(e){if("function"==typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope);else{if("function"!=typeof window.addEventListener)return;window.addEventListener("beforeunload",(function(){e()}),!0),window.addEventListener("unload",(function(){e()}),!0)}}};var a=r(199),s=r.n(a),c=o()?s():i,u=new Set,l=!1;function d(e){if(l||(l=!0,c.add(f)),"function"!=typeof e)throw new Error("Listener is no function");return u.add(e),{remove:function(){return u.delete(e)},run:function(){return u.delete(e),e()}}}function f(){var e=[];return u.forEach((function(t){e.push(t()),u.delete(t)})),Promise.all(e)}function h(){u.clear()}function p(){return u.size}},199:()=>{},675:(e,t,r)=>{"use strict";function n(e){if("[object Object]"!==Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}r.r(t),r.d(t,{default:()=>n})}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={exports:{}};return e[n].call(i.exports,i,i.exports,r),i.exports}return r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r(607)})(),e.exports=t()},5606:e=>{var t,r,n=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}function a(e){if(t===setTimeout)return setTimeout(e,0);if((t===o||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:o}catch(e){t=o}try{r="function"==typeof clearTimeout?clearTimeout:i}catch(e){r=i}}();var s,c=[],u=!1,l=-1;function d(){u&&s&&(u=!1,s.length?c=s.concat(c):l=-1,c.length&&f())}function f(){if(!u){var e=a(d);u=!0;for(var t=c.length;t;){for(s=c,c=[];++l<t;)s&&s[l].run();l=-1,t=c.length}s=null,u=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===i||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{return r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function h(e,t){this.fun=e,this.array=t}function p(){}n.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];c.push(new h(e,t)),1!==c.length||u||a(f)},h.prototype.run=function(){this.fun.apply(null,this.array)},n.title="browser",n.browser=!0,n.env={},n.argv=[],n.version="",n.versions={},n.on=p,n.addListener=p,n.once=p,n.off=p,n.removeListener=p,n.removeAllListeners=p,n.emit=p,n.prependListener=p,n.prependOnceListener=p,n.listeners=function(e){return[]},n.binding=function(e){throw new Error("process.binding is not supported")},n.cwd=function(){return"/"},n.chdir=function(e){throw new Error("process.chdir is not supported")},n.umask=function(){return 0}},6532:(e,t,r)=>{"use strict";var n,o=r(5606);(n=void 0!==o&&"[object process]"==={}.toString.call(o)||"undefined"!=typeof navigator&&"ReactNative"===navigator.product?r.g:self).Proxy||(n.Proxy=r(7780)(),n.Proxy.revocable=n.Proxy.revocable)},7780:e=>{e.exports=function(){let e,t=null;function r(e){return!!e&&("object"==typeof e||"function"==typeof e)}function n(e){if(null!==e&&!r(e))throw new TypeError("Object prototype may only be an Object or null: "+e)}const o=Object,i=Boolean(o.create)||!({__proto__:null}instanceof o),a=o.create||(i?function(e){return n(e),{__proto__:e}}:function(e){if(n(e),null===e)throw new SyntaxError("Native Object.create is required to create objects with null prototype");var t=function(){};return t.prototype=e,new t}),s=function(){return null},c=o.getPrototypeOf||([].__proto__===Array.prototype?function(e){const t=e.__proto__;return r(t)?t:null}:s);return e=function(u,l){if(void 0===(this&&this instanceof e?this.constructor:void 0))throw new TypeError("Constructor Proxy requires 'new'");if(!r(u)||!r(l))throw new TypeError("Cannot create proxy with a non-object as target or handler");let d=function(){};t=function(){u=null,d=function(e){throw new TypeError(`Cannot perform '${e}' on a proxy that has been revoked`)}},setTimeout((function(){t=null}),0);const f=l;l={get:null,set:null,apply:null,construct:null};for(let e in f){if(!(e in l))throw new TypeError(`Proxy polyfill does not support trap '${e}'`);l[e]=f[e]}"function"==typeof f&&(l.apply=f.apply.bind(f));const h=c(u);let p,v=!1,g=!1;"function"==typeof u?(p=function(){const e=this&&this.constructor===p,t=Array.prototype.slice.call(arguments);return d(e?"construct":"apply"),e&&l.construct?l.construct.call(this,u,t):!e&&l.apply?l.apply(u,this,t):e?(t.unshift(u),new(u.bind.apply(u,t))):u.apply(this,t)},v=!0):u instanceof Array?(p=[],g=!0):p=i||null!==h?a(h):{};const m=l.get?function(e){return d("get"),l.get(this,e,p)}:function(e){return d("get"),this[e]},y=l.set?function(e,t){d("set"),l.set(this,e,t,p)}:function(e,t){d("set"),this[e]=t},b=o.getOwnPropertyNames(u),w={};b.forEach((function(e){if((v||g)&&e in p)return;const t=o.getOwnPropertyDescriptor(u,e),r={enumerable:Boolean(t.enumerable),get:m.bind(u,e),set:y.bind(u,e)};o.defineProperty(p,e,r),w[e]=!0}));let E=!0;if(v||g){const e=o.setPrototypeOf||([].__proto__===Array.prototype?function(e,t){return n(t),e.__proto__=t,e}:s);h&&e(p,h)||(E=!1)}if(l.get||!E)for(let e in u)w[e]||o.defineProperty(p,e,{get:m.bind(u,e)});return o.seal(u),o.seal(p),p},e.revocable=function(r,n){return{proxy:new e(r,n),revoke:t}},e}},1504:e=>{function t(){}t.prototype={on:function(e,t,r){var n=this.e||(this.e={});return(n[e]||(n[e]=[])).push({fn:t,ctx:r}),this},once:function(e,t,r){var n=this;function o(){n.off(e,o),t.apply(r,arguments)}return o._=t,this.on(e,o,r)},emit:function(e){for(var t=[].slice.call(arguments,1),r=((this.e||(this.e={}))[e]||[]).slice(),n=0,o=r.length;n<o;n++)r[n].fn.apply(r[n].ctx,t);return this},off:function(e,t){var r=this.e||(this.e={}),n=r[e],o=[];if(n&&t)for(var i=0,a=n.length;i<a;i++)n[i].fn!==t&&n[i].fn._!==t&&o.push(n[i]);return o.length?r[e]=o:delete r[e],this}},e.exports=t,e.exports.TinyEmitter=t},2694:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.buildRootFacadeState=void 0;var i=r(4057);function a(e,t){return t?e.createValueObjectFacade("selection.range",t,{start:t.start,end:t.end,isCaret:t.start===t.end}):null}function s(e,t){var r=this;return e.createValueObjectFacade("tables.item",t,{tableId:t.tableId,getCell:function(i,a){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("tables.item.getCell",[t,i,a])];case 1:return(r=n.sent())?[2,e.createValueObjectFacade("tables.cell",r,{tableId:r.tableId,row:r.row,column:r.column})]:[2,null]}}))}))},getRange:function(i){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("tables.item.getRange",[t,i])];case 1:return(r=n.sent())?[2,e.createValueObjectFacade("tables.range",r,{tableId:r.tableId,selection:r.selection})]:[2,null]}}))}))}})}function c(e,t){return t?e.createValueObjectFacade("sheet.range",t,t):null}function u(e,t){return t?e.createValueObjectFacade("sheet.cell",t,t):null}function l(e,t){var r=this;return e.createValueObjectFacade("sheet.worksheet",t,{id:t.id,name:t.name,getRange:function(i){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("sheet.worksheet.getRange",[t,i])];case 1:return r=n.sent(),[2,c(e,r)]}}))}))},getCell:function(i,a){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("sheet.worksheet.getCell",[t,i,a])];case 1:return r=n.sent(),[2,u(e,r)]}}))}))},getActiveCell:function(){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("sheet.worksheet.getActiveCell",[t])];case 1:return r=n.sent(),[2,u(e,r)]}}))}))}})}function d(e,t){return t?e.createValueObjectFacade("selection.textRange",t,{start:t.start,end:t.end}):null}function f(e,t){return e.createValueObjectFacade("slides.slide",t,{id:t.slideId})}t.buildRootFacadeState=function(e){var t=this,r={addChangedListener:function(t){return e.listenEditorEvent("titleChange",t)},setTitle:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("title.setTitle",[r])];case 1:return t.sent(),[2]}}))}))}},c={show:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("comments.show",void 0===r?[]:[r])];case 1:return t.sent(),[2]}}))}))},hide:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("comments.hide",void 0===r?[]:[r])];case 1:return t.sent(),[2]}}))}))}},u={show:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("history.show")];case 1:return t.sent(),[2]}}))}))},hide:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("history.hide")];case 1:return t.sent(),[2]}}))}))}},h={show:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("discussion.show")];case 1:return t.sent(),[2]}}))}))},hide:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("discussion.hide")];case 1:return t.sent(),[2]}}))}))}},p={show:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("collaborator.show")];case 1:return t.sent(),[2]}}))}))},hide:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("collaborator.hide")];case 1:return t.sent(),[2]}}))}))}},v={insert:function(r,i){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("insertExternalApp",[r,i])];case 1:return[2,t.sent()]}}))}))}},g={show:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("locks.show")];case 1:return t.sent(),[2]}}))}))},hide:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("locks.hide")];case 1:return t.sent(),[2]}}))}))},addRangeLock:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("locks.addRangeLock",[r])];case 1:return t.sent(),[2]}}))}))},addSheetLock:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("locks.addSheetLock",[r])];case 1:return t.sent(),[2]}}))}))},removeRangeLocksInRanges:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("locks.removeRangeLocksInRanges",[r])];case 1:return t.sent(),[2]}}))}))},removeSheetLock:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("locks.removeSheetLock",[r])];case 1:return t.sent(),[2]}}))}))}},m={locateCellByGuid:function(r,i){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("mention.locateCellByGuid",[r,i])];case 1:return t.sent(),[2]}}))}))}},y={setContent:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("content.setContent",[r])];case 1:return t.sent(),[2]}}))}))}},b={show:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("version.show")];case 1:return t.sent(),[2]}}))}))},hide:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("version.hide")];case 1:return t.sent(),[2]}}))}))},createRevision:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("version.createRevision",[r])];case 1:return t.sent(),[2,void 0]}}))}))}},w={start:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("presentation.start","number"==typeof r?[r]:[])];case 1:return t.sent(),[2]}}))}))},quit:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("presentation.quit")];case 1:return t.sent(),[2]}}))}))},startFromCurrent:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("presentation.startFromCurrent")];case 1:return t.sent(),[2]}}))}))},startRemoteLive:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("presentation.startRemoteLive")];case 1:return t.sent(),[2]}}))}))},startSpeakerView:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("presentation.startSpeakerView")];case 1:return t.sent(),[2]}}))}))},addChangeListener:function(t){return e.registerEditorFacadeListener("presentation.addChangeListener",t)}},E=function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:t=e.registerEditorFacadeCallback(r),n.label=1;case 1:return n.trys.push([1,,3,4]),[4,e.invokeEditorFacade("batchChanges",[t])];case 2:return[2,n.sent()];case 3:return e.unregisterEditorFacadeCallback(t),[7];case 4:return[2]}}))}))},C=function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("print")];case 1:return t.sent(),[2]}}))}))},S=function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("export",[r])];case 1:return t.sent(),[2]}}))}))},O=e.createEditorFacadeModule("selection",{getRange:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("selection.getRange",void 0===r?[]:[r])];case 1:return t=n.sent(),[2,a(e,t)]}}))}))},getWholeRange:function(){return n(t,void 0,void 0,(function(){var t;return o(this,(function(r){switch(r.label){case 0:return[4,e.invokeEditorFacade("selection.getWholeRange")];case 1:return t=r.sent(),[2,a(e,t)]}}))}))},addRangeListener:function(t){return e.registerEditorFacadeListener("selection.addRangeListener",t)}}),_=e.createEditorFacadeModule("tables",{getAll:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("tables.getAll")];case 1:return[2,t.sent().map((function(t){return s(e,t)}))]}}))}))},getOne:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("tables.getOne",[r])];case 1:return[2,(t=n.sent())?s(e,t):null]}}))}))}}),k=e.createEditorFacadeModule("workbook",{getWorksheets:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("workbook.getWorksheets")];case 1:return[2,t.sent().map((function(t){return l(e,t)}))]}}))}))},getWorksheetById:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("workbook.getWorksheetById",[r])];case 1:return[2,(t=n.sent())?l(e,t):null]}}))}))},getActiveWorksheet:function(){return n(t,void 0,void 0,(function(){var t;return o(this,(function(r){switch(r.label){case 0:return[4,e.invokeEditorFacade("workbook.getActiveWorksheet")];case 1:return t=r.sent(),[2,l(e,t)]}}))}))}}),P=e.createEditorFacadeModule("slides",{getCurrentSlide:function(){return n(t,void 0,void 0,(function(){var t;return o(this,(function(r){switch(r.label){case 0:return[4,e.invokeEditorFacade("slides.getCurrentSlide")];case 1:return t=r.sent(),[2,f(e,t)]}}))}))},getSlides:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("slides.getSlides")];case 1:return[2,t.sent().map((function(t){return f(e,t)}))]}}))}))},getSlideById:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("slides.getSlideById",[r])];case 1:return[2,(t=n.sent())?f(e,t):null]}}))}))},getSelectedSlides:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("slides.getSelectedSlides",void 0===r?[]:[r])];case 1:return[2,t.sent().map((function(t){return f(e,t)}))]}}))}))},addSlide:function(){return n(t,void 0,void 0,(function(){var t;return o(this,(function(r){switch(r.label){case 0:return[4,e.invokeEditorFacade("slides.addSlide")];case 1:return t=r.sent(),[2,f(e,t)]}}))}))},duplicateSlide:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("slides.duplicateSlide",[r])];case 1:return t=n.sent(),[2,f(e,t)]}}))}))}}),A=e.createEditorFacadeModule("selection",{getTextRange:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("selection.getTextRange",void 0===r?[]:[r])];case 1:return t=n.sent(),[2,d(e,t)]}}))}))},addRangeListener:function(t){return e.registerEditorFacadeListener("selection.addRangeListener",t)}}),M={addErrorListener:function(t){return e.registerEditorFacadeListener("eventSubscription.addErrorListener",t)},addLoadedListener:function(t){return e.registerEditorFacadeListener("eventSubscription.addLoadedListener",t)}},x=e.createEditorFacadeModule("outline",{show:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("outline.setOpen",[!0])];case 1:return t.sent(),[2]}}))}))},hide:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("outline.setOpen",[!1])];case 1:return t.sent(),[2]}}))}))}});switch(e.fileType){case i.FileType.Document:return{title:r,history:u,comments:c,discussion:h,collaborator:p,externalApp:v,version:b,presentation:w,selection:O,settings:e.createEditorFacadeModule("settings",{}),search:e.createEditorFacadeModule("search",{}),outline:x,sidebar:e.createEditorFacadeModule("sidebar",{}),tables:_,batchChanges:E,print:C};case i.FileType.Spreadsheet:return{history:u,comments:c,locks:g,mention:m,content:y,version:b,presentation:w,workbook:k,activeSheet:l(e,{active:!0}),charts:e.createEditorFacadeModule("charts",{}),selections:e.createEditorFacadeModule("selections",{}),batchChanges:E,print:C,export:S,setFocus:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("setFocus",[r])];case 1:return t.sent(),[2]}}))}))}};case i.FileType.Presentation:return{history:u,comments:c,version:b,presentation:w,slides:P,selection:A,text:e.createEditorFacadeModule("text",{}),zoom:e.createEditorFacadeModule("zoom",{}),eventSubscription:M,batchChanges:E,print:C,export:S};default:return{}}}},3129:(e,t)=>{"use strict";var r,n,o,i;Object.defineProperty(t,"__esModule",{value:!0}),t.MentionTypes=t.PermissionLevel=t.SheetRangeType=t.EditorSaveStatus=void 0,(i=t.EditorSaveStatus||(t.EditorSaveStatus={}))[i.NoChange=0]="NoChange",i[i.Success=1]="Success",i[i.Fail=2]="Fail",(o=t.SheetRangeType||(t.SheetRangeType={})).Cells="cells",o.Rows="rows",o.Columns="columns",o.Sheet="sheet",(n=t.PermissionLevel||(t.PermissionLevel={}))[n.Editable=0]="Editable",n[n.ReadOnly=1]="ReadOnly",n[n.Private=2]="Private",(r=t.MentionTypes||(t.MentionTypes={})).Comment="comment",r.Mention="mention_at",r.DateMention="date_mention"},799:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},n.apply(this,arguments)},o=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},i=this&&this.__generator||function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}},a=this&&this.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r};Object.defineProperty(t,"__esModule",{value:!0}),t.subscribeHeaderBarsTitleChange=t.getHeaderBarsCommandRef=t.setHeaderBarsVisible=t.syncHeaderBarsVisible=t.applyHeaderBarsChanged=t.syncHeaderBarsCommands=t.ensureHeaderBarsTitleChangeSubscription=t.initHeaderBarsFacade=t.HEADER_BARS_CHANGED_EVENT=t.HEADER_BARS_METHOD=void 0;var s=r(4057);function c(e){return o(this,void 0,void 0,(function(){var t;return i(this,(function(r){switch(r.label){case 0:if(e.isTitleSubscribed())return[2];e.setTitleSubscribed(!0),e.onInternalTitleChange((function(t){var r;"string"==typeof t&&(null===(r=e.getTitleHandler())||void 0===r||r(t))})),r.label=1;case 1:return r.trys.push([1,3,,4]),[4,e.subscribeEditorTitleChange()];case 2:return r.sent(),[3,4];case 3:throw t=r.sent(),e.setTitleSubscribed(!1),t;case 4:return[2]}}))}))}function u(e,t){var r=e.getCommandsMap();r.clear();for(var n=0,o=t;n<o.length;n++){var i=o[n];r.set(i.id,i)}}function l(e){return o(this,void 0,void 0,(function(){var r;return i(this,(function(n){switch(n.label){case 0:return[4,e.invokeHeaderBars(t.HEADER_BARS_METHOD.getVisible)];case 1:return r=n.sent(),e.setVisibleState(r.visible),[2,e.getVisibleState()]}}))}))}function d(e,r){return o(this,void 0,void 0,(function(){return i(this,(function(n){switch(n.label){case 0:return e.setVisibleState(r),[4,e.invokeHeaderBars(t.HEADER_BARS_METHOD.setVisible,{visible:r})];case 1:return n.sent(),[2]}}))}))}function f(e,r){var o=e.getRefsMap(),i=o.get(r);if(i)return i;var a=e.getCommandsMap();a.has(r)||e.invokeHeaderBars(t.HEADER_BARS_METHOD.getCommand,{id:r}).then((function(e){e.command&&a.set(r,e.command)})).catch((function(t){e.emitHeaderBarsError("fetch headerBars command failed",t)}));var s={id:r,visible:!0,disabled:!1,src:void 0,label:void 0,editable:void 0,onCommandClick:void 0,getState:function(){return a.get(r)}};return Object.defineProperties(s,{visible:{configurable:!0,enumerable:!0,get:function(){var e;return!1!==(null===(e=a.get(r))||void 0===e?void 0:e.visible)},set:function(o){var i=a.get(r);i&&a.set(r,n(n({},i),{visible:o})),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandVisible,{id:r,visible:o}).catch((function(t){e.emitHeaderBarsError("set headerBars command visible failed",t)}))}},disabled:{configurable:!0,enumerable:!0,get:function(){var e;return!0===(null===(e=a.get(r))||void 0===e?void 0:e.disabled)},set:function(o){var i=a.get(r);i&&a.set(r,n(n({},i),{disabled:o})),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandDisabled,{id:r,disabled:o}).catch((function(t){e.emitHeaderBarsError("set headerBars command disabled failed",t)}))}},src:{configurable:!0,enumerable:!0,get:function(){var e;return null===(e=a.get(r))||void 0===e?void 0:e.src},set:function(o){if("string"==typeof o){var i=a.get(r);i&&a.set(r,n(n({},i),{src:o})),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandSrc,{id:r,src:o}).catch((function(t){e.emitHeaderBarsError("set headerBars command src failed",t)}))}}},label:{configurable:!0,enumerable:!0,get:function(){var e;return null===(e=a.get(r))||void 0===e?void 0:e.label},set:function(o){if("string"==typeof o&&"title"!==r&&"save-status"!==r){var i=a.get(r);i&&a.set(r,n(n({},i),{label:o})),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandLabel,{id:r,label:o}).catch((function(t){e.emitHeaderBarsError("set headerBars command label failed",t)}))}}},editable:{configurable:!0,enumerable:!0,get:function(){var e;return null===(e=a.get(r))||void 0===e?void 0:e.editable},set:function(o){if("title"===r){var i=a.get(r);i&&a.set(r,n(n({},i),{editable:o})),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandEditable,{id:r,editable:o}).catch((function(t){e.emitHeaderBarsError("set headerBars command editable failed",t)}))}else e.emitHeaderBarsError("headerBars command editable is only supported for title",new Error("headerBars command editable is only supported for title"))}},onCommandClick:{configurable:!0,enumerable:!0,get:function(){return e.getOverridesMap().get(r)},set:function(n){e.getOverridesMap().set(r,n),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandCallbackEnabled,{id:r,enabled:"function"==typeof n}).catch((function(t){e.emitHeaderBarsError("set headerBars command callback failed",t)}))}}}),o.set(r,s),s}t.HEADER_BARS_METHOD={getVisible:"headerBars.getVisible",setVisible:"headerBars.setVisible",addCommand:"headerBars.addCommand",getCommand:"headerBars.getCommand",setCommandVisible:"headerBars.setCommandVisible",setCommandDisabled:"headerBars.setCommandDisabled",setCommandSrc:"headerBars.setCommandSrc",setCommandLabel:"headerBars.setCommandLabel",setCommandEditable:"headerBars.setCommandEditable",setCommandCallbackEnabled:"headerBars.setCommandCallbackEnabled",listViewCommands:"headerBars.listViewCommands",handleCommandClick:"headerBars.handleCommandClick"},t.HEADER_BARS_CHANGED_EVENT="headerBars:changed",t.initHeaderBarsFacade=function(e){var r=this,n={visible:!1,onTitleChange:void 0,getVisible:function(){return o(r,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return[4,l(e)];case 1:return[2,t.sent()]}}))}))},setVisible:function(t){return o(r,void 0,void 0,(function(){return i(this,(function(r){switch(r.label){case 0:return[4,d(e,t)];case 1:return r.sent(),[2]}}))}))},addCommand:function(n,s,c){return void 0===c&&(c="after"),o(r,void 0,void 0,(function(){var r,o,u,l;return i(this,(function(i){switch(i.label){case 0:return r=n.onClick,o=a(n,["onClick"]),[4,e.invokeHeaderBars(t.HEADER_BARS_METHOD.addCommand,{command:o,posCommand:s,pos:c})];case 1:return u=i.sent(),l=r,u&&"function"==typeof l?(e.getOverridesMap().set(n.id,l),[4,e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandCallbackEnabled,{id:n.id,enabled:!0})]):[3,3];case 2:i.sent(),i.label=3;case 3:return[2,u]}}))}))},getCommand:function(t){return f(e,t)},listViewCommands:function(){return o(r,void 0,void 0,(function(){var r;return i(this,(function(n){switch(n.label){case 0:return[4,e.invokeHeaderBars(t.HEADER_BARS_METHOD.listViewCommands)];case 1:return r=n.sent(),u(e,r),[2,r]}}))}))}};return Object.defineProperty(n,"visible",{configurable:!0,enumerable:!0,get:function(){return e.getVisibleState()},set:function(t){d(e,t).catch((function(t){e.emitHeaderBarsError("set headerBars.visible failed",t)}))}}),Object.defineProperty(n,"onTitleChange",{configurable:!0,enumerable:!0,get:function(){return e.getTitleHandler()},set:function(t){e.setTitleHandler(t),"function"==typeof t&&c(e).catch((function(t){e.emitHeaderBarsError("subscribe headerBars titleChange failed",t)}))}}),n},t.ensureHeaderBarsTitleChangeSubscription=c,t.syncHeaderBarsCommands=u,t.applyHeaderBarsChanged=function(e,t){var r=null==t?void 0:t.snapshot;r&&(e.setVisibleState(r.visible),u(e,r.commands))},t.syncHeaderBarsVisible=l,t.setHeaderBarsVisible=d,t.getHeaderBarsCommandRef=f,t.subscribeHeaderBarsTitleChange=function(e){return o(this,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return[4,e(s.InvokeMethod.ListenEditorEvent,["titleChange"])];case 1:return t.sent(),[2]}}))}))}},4780:function(e,t,r){"use strict";var n,o=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 r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),i=this&&this.__assign||function(){return i=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},i.apply(this,arguments)},a=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),s=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||a(t,e,r)},c=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},u=this&&this.__generator||function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}},l=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))},d=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.EDITOR_RENDERED_EVENT=t.Event=t.OfficeSDK=t.MessageEvent=void 0,r(5781),r(2701),r(2288),r(7782),r(6532);var f=r(1436),h=r(4339),p=r(611),v=r(1504),g=d(r(5323)),m=r(4057),y=d(r(1582)),b=r(9368),w=r(2560),E=r(799),C=r(2694);s(r(3129),t),s(r(799),t);var S=(0,g.default)(),O="smjssdk",_="smParams",k={en:"en-US",ja:"ja-JP"},P=["zh-CN","zh-TW","en-US","ja-JP","ko-KR","es-ES","pt-PT","de-DE","fr-FR","it-IT","ru-RU","id-ID","vi-VN","th-TH","ms-MY","ar-SA"],A=new Set(["then","catch","finally"]);function M(e){return A.has(e)}t.MessageEvent=m.InvokeMethod;var x=function(e){function r(t){var r,n,o,i=this;(i=e.call(this)||this)._fileType=m.FileType.Unknown,i.messageHandler=function(){},i.emitter=new v.TinyEmitter,i._readyState=m.ReadyState.Loading,i.collaborators=[],i.headerBarsVisible=!0,i.headerBarsCommands=new Map,i.headerBarsCommandOverrides=new Map,i.slashMenuCallbacks=new Map,i.editorFacadeCallbacks=new Map,i.headerBarsCommandRefs=new Map,i.headerBarsTitleChangeSubscribed=!1,i.preloadAckTimeoutMs=2e3,i.preloadDoneTimeoutMs=8e3,i.preloadReadyTimeoutMs=3e3,i.connectOptions=t,i.uuid=(0,p.v4)(),i.userUuid=t.userUuid,i.normalizedEmptyPage=(0,w.normalizeEmptyPageOptions)(t.emptyPage),(0,b.assert)(t.container,(function(e){return e instanceof HTMLElement}),'container is not an HTMLElement: "'.concat(String(t.container),'"')),(0,b.assert)(t.container,(function(e){return!["iframe","frame","embed","object"].includes(e.tagName.toLowerCase())}),'invalid container element type: "'.concat(t.container.tagName,'",DIV are recommended.'));try{i.endpoint=new URL(t.endpoint)}catch(e){throw new Error('invalid endpoint: "'.concat(t.endpoint,'"'))}i.sameOrigin=i.endpoint.origin===S.location.origin,!1===/\/sdk\/v2\/*/i.test(i.endpoint.pathname)&&console.warn('Generally the endpoint should end with "/sdk/v2", please make sure it is correct: "'.concat(i.endpoint.toString(),'"')),i.apiAdaptor=t.apiAdaptor?t.apiAdaptor.toString():"",i.apiAdaptorContext=t.apiAdaptorContext?JSON.stringify(t.apiAdaptorContext):"";try{i.startParams=new h.StartParams(null!==(o=null!==(r=t.smParams)&&void 0!==r?r:new URLSearchParams(null===(n=S.location)||void 0===n?void 0:n.search).get(_))&&void 0!==o?o:"")}catch(e){i.startParams=new h.StartParams}"boolean"==typeof t.debug&&(i.startParams.debug=i.connectOptions.debug),i.onViewportResize=function(){c(i,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return[4,this.channel.postMessage({event:m.SDKEvent.ViewportResize,payload:this.getContainerRect()})];case 1:return e.sent(),[2]}}))})).catch((function(e){i.emit("error",new Error("Failed to emit resize event: ".concat(String(e))))}))},i.initChannel(),i.headerBars=i.initHeaderBarsFacade();var a=t.messageExpires;return"number"!=typeof a&&(a=3e5),i.messageExpires=(0,b.assert)(a,(function(e){return!isNaN(e)&&e>0}),'"messageExpires" is not an valid number: "'.concat(a,'"')),i.handledMessageCache=new y.default(a),i.sameOrigin||(i.messageHandler=function(e){var t=e.data;(0,f.isOfficeSDKMessageEventLike)(t)&&i.shouldHandleMessage(t)&&(i.handledMessageCache.add(t.id),i.channel.distributeMessage(e.data).catch((function(e){i.emit("error",e)})))}),i}return o(r,e),Object.defineProperty(r.prototype,"fileType",{get:function(){return this._fileType},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"readyState",{get:function(){return this._readyState},enumerable:!1,configurable:!0}),r.prototype.shouldExposeSlashMenu=function(){if(!this.connectOptions.slashMenu)return!1;if(this.fileType===m.FileType.Document)return!0;if(this.fileType!==m.FileType.Unknown)return!1;var e=this.getSlashMenuTypeHint();return"string"!=typeof e||["doc","docs","document"].includes(e)},r.prototype.getSlashMenuTypeHint=function(){var e=this.startParams.type;if("string"==typeof e)return e.trim().toLowerCase()||void 0},r.prototype.createSerializedSlashMenu=function(){if(this.slashMenuCallbacks.clear(),this.shouldExposeSlashMenu()){var e=this.connectOptions.slashMenu;if(e&&Array.isArray(e.entries))return{entries:this.serializeSlashMenuItems(e.entries,["entries"])}}},r.prototype.serializeSlashMenuItems=function(e,t){var r=this;return e.map((function(e,n){var o=l(l([],t,!0),["".concat(n),e.name],!1);if(function(e){return"entry"===e.type}(e))return i(i({},e),{children:e.children?r.serializeSlashMenuItems(e.children,o):void 0});var a=r.registerSlashMenuCallback(o,e.callback),s={name:e.name,type:e.type,disabled:e.disabled,label:e.label,icon:e.icon};return a&&(s.callbackId=a),s}))},r.prototype.registerSlashMenuCallback=function(e,t){if("function"==typeof t){var r="slash-menu:".concat(e.join(":"));return this.slashMenuCallbacks.set(r,t),r}},r.prototype.getEditor=function(){return this.editor},r.prototype.setCredentials=function(e){return c(this,void 0,void 0,(function(){return u(this,(function(t){switch(t.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.SetCredentials,[e],{audience:O})];case 1:return t.sent(),[2]}}))}))},r.prototype.setSignature=function(e){return c(this,void 0,void 0,(function(){return u(this,(function(t){switch(t.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.SetCredentials,[{signature:e}],{audience:O})];case 1:return t.sent(),[2]}}))}))},r.prototype.setToken=function(e){return c(this,void 0,void 0,(function(){return u(this,(function(t){switch(t.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.SetCredentials,[{token:e}],{audience:O})];case 1:return t.sent(),[2]}}))}))},r.prototype.getPerformanceEntries=function(){return c(this,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.RequestPerformanceEntries,[],{audience:O})];case 1:return[2,e.sent()]}}))}))},r.prototype.disconnect=function(){var e;this.slashMenuCallbacks.clear(),this.editorFacadeCallbacks.clear(),(null===(e=this.element)||void 0===e?void 0:e.parentElement)instanceof HTMLElement&&this.element.parentElement.removeChild(this.element),window.removeEventListener("message",this.messageHandler),window.visualViewport?window.visualViewport.removeEventListener("resize",this.onViewportResize):window.removeEventListener("resize",this.onViewportResize)},r.prototype.init=function(){return c(this,void 0,void 0,(function(){var e,t=this;return u(this,(function(r){switch(r.label){case 0:return this._readyState!==m.ReadyState.Loading?[2]:(this._readyState=m.ReadyState.LoadingEditor,this.sameOrigin||window.addEventListener("message",this.messageHandler),e=this,[4,this.initIframe()]);case 1:return e.element=r.sent(),this.connectOptions.container.appendChild(this.element),[4,this.runPreloadHandshake()];case 2:return r.sent(),this.editor=this.initEditor(),[4,new Promise((function(e,r){var n=!1,o=function(i){var a=i.state,s=i.error,c=i.fileType;t._readyState=a,c&&t._fileType===m.FileType.Unknown&&(t._fileType=c),s?(n=!0,r("string"==typeof s?new Error(s):s)):a===m.ReadyState.Ready&&(n=!0,e()),n&&t.off(R.ReadyState,o)};t.on(R.ReadyState,o)}))];case 3:switch(r.sent(),this.fileType){case m.FileType.Document:this.document=this.editor;break;case m.FileType.DocumentPro:this.documentPro=this.editor;break;case m.FileType.Spreadsheet:this.spreadsheet=this.editor;break;case m.FileType.Table:this.table=this.editor;break;case m.FileType.Form:this.form=this.editor;break;case m.FileType.Flowchart:this.flowchart=this.editor}return this.installRootFacade(),[2]}}))}))},r.prototype.ready=function(){return c(this,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return this.readyState===m.ReadyState.Ready?[2]:[4,this.init()];case 1:return e.sent(),[2]}}))}))},r.prototype.initIframe=function(){var e;return c(this,void 0,void 0,(function(){var t,r,n,o,i;return u(this,(function(a){return t=this.connectOptions,(r=document.createElement("iframe")).style.border="none",r.style.overflow="hidden",r.style.width="100%",r.style.height="100%",r.style.display="block","allow"in r?r.allow=null!==(e=this.connectOptions.allowPolicy)&&void 0!==e?e:"fullscreen *;clipboard-read *;clipboard-write *;":r.allowFullscreen=!0,(n=this.endpoint).pathname="".concat(n.pathname,"/api/").concat((0,b.assert)(t.fileId,T,'"fileId" is missing or empty: '.concat(t.fileId)),"/preload").replace(/\/+/g,"/"),(o=t.params)&&Object.keys(o).forEach((function(e){n.searchParams.set(e,o[e])})),"string"==typeof t.deviceMode&&n.searchParams.set("deviceMode",t.deviceMode.trim()),n.searchParams.set(_,this.startParams.toString()),(t.showLoadingEffect||t.showLoading)&&(n.searchParams.set("loadingEffect","true"),t.loadingOptions&&n.searchParams.set("loadingOptions",JSON.stringify(t.loadingOptions))),"string"==typeof t.lang&&(i=function(e){var t,r=null!==(t=k[e])&&void 0!==t?t:e;if(P.includes(r))return r}(t.lang),i&&n.searchParams.set("lang",i)),n.searchParams.set("jsver",null!=="2.0.3-beta.11"?"2.0.3-beta.11":""),(0,b.assert)(t.token,T,'"token" is missing or empty: "'.concat(t.token,'"')),(0,b.assert)(t.signature,T,'"signature" is missing or empty: "'.concat(t.signature,'"')),n.searchParams.set("uuid",this.uuid),this.userUuid&&n.searchParams.set("userUuid",this.userUuid),r.src=n.toString(),[2,r]}))}))},r.prototype.runPreloadHandshake=function(){return c(this,void 0,void 0,(function(){var e,t,r,n,o,i,a,s,c,l=this;return u(this,(function(u){switch(u.label){case 0:return e=this.connectOptions.token,t=this.connectOptions.signature,r=this.connectOptions.fileId,n=(0,p.v4)(),o=!1,i=!1,a=!1,s=null,c=null,[4,new Promise((function(u,d){var f=function(){s&&(clearTimeout(s),s=null),c&&(clearTimeout(c),c=null),window.removeEventListener("message",p)},h=function(){var o,i;null===(i=null===(o=l.element)||void 0===o?void 0:o.contentWindow)||void 0===i||i.postMessage({type:"SDK_PRELOAD_INIT",requestId:n,ts:Date.now(),payload:{token:e,signature:t,fileGuid:r,mode:l.connectOptions.mode}},"*")},p=function(e){var t,r,p=e.data;if(p&&"object"==typeof p&&"string"==typeof p.type){if("SDK_PRELOAD_READY"===p.type&&!o)return o=!0,h(),void(s=setTimeout((function(){h(),c=setTimeout((function(){f(),d(new Error("preload init timeout"))}),l.preloadDoneTimeoutMs)}),l.preloadAckTimeoutMs));if(p.requestId===n)return"SDK_PRELOAD_ACK"===p.type?(i=!0,s&&(clearTimeout(s),s=null),void(c||(c=setTimeout((function(){f(),d(new Error("preload done timeout"))}),l.preloadDoneTimeoutMs)))):"SDK_PRELOAD_DONE"===p.type?(a=!0,f(),void u()):void("SDK_PRELOAD_ERROR"===p.type&&(f(),d(new Error((null===(t=p.error)||void 0===t?void 0:t.message)||(null===(r=p.error)||void 0===r?void 0:r.code)||"preload init failed"))))}};window.addEventListener("message",p),setTimeout((function(){o||i||a||(f(),d(new Error("preload ready timeout")))}),l.preloadReadyTimeoutMs)}))];case 1:return u.sent(),[2]}}))}))},r.prototype.initChannel=function(){var e=this,r=this.channel=new f.OfficeSDKBroadcastChannel({channelId:this.startParams.channelId,debug:this.connectOptions.debug,autoStructuredClone:!0,debugNamespace:"SM_SDK_CHAN"});this.startParams.channelId||(this.startParams.channelId=r.id),r.on("error",(function(t){e.emit("error",t)})),r.on("messageError",(function(t){e.emit("error",t)})),this.sameOrigin||r.on("postMessage",(function(t){var r,n;null===(n=null===(r=e.element)||void 0===r?void 0:r.contentWindow)||void 0===n||n.postMessage(t,"*")}),{audience:"*"}),r.on("message",(function(r){var n=r.data;(null==n?void 0:n.event)===m.InvokeMethod.ReadyState?e.emit(R.ReadyState,n.payload):(null==n?void 0:n.event)===t.EDITOR_RENDERED_EVENT&&e.emit(R.EditorRendered,n.payload)}),{audience:O}),r.addInvokeHandler(m.InvokeMethod.Error,(function(t){e.emit(R.Error,t)}),{audience:O}),r.addInvokeHandler(m.InvokeMethod.SDKInit,(function(){return c(e,void 0,void 0,(function(){var e,t,r=this;return u(this,(function(n){return e={},Object.keys(this.connectOptions).forEach((function(t){if("slashMenu"!==t){var n=r.connectOptions[t];e[t]=n,"function"==typeof n&&(e["has".concat(t[0].toUpperCase()).concat(t.slice(1))]=!0)}})),(t=this.createSerializedSlashMenu())&&(e.slashMenu=t),e.apiAdaptor=this.apiAdaptor,e.apiAdaptorContext=this.apiAdaptorContext,e.emptyPage=this.normalizedEmptyPage,[2,i(i({},e),{uuid:this.uuid})]}))}))}),{audience:O}),r.addInvokeHandler(m.InvokeMethod.DispatchSDKEvent,(function(t,r){return c(e,void 0,void 0,(function(){return u(this,(function(e){return t===E.HEADER_BARS_CHANGED_EVENT&&this.applyHeaderBarsChanged(r[0]),this.emit.apply(this,l([t],r,!1)),[2]}))}))}),{audience:O}),r.addInvokeHandler(E.HEADER_BARS_METHOD.handleCommandClick,(function(t){return c(e,void 0,void 0,(function(){var e;return u(this,(function(r){switch(r.label){case 0:return"function"!=typeof(e=this.headerBarsCommandOverrides.get(t))?[2,!1]:[4,e()];case 1:return r.sent(),[2,!0]}}))}))}),{audience:O}),r.addInvokeHandler("slashMenu.handleButtonClick",(function(t){return c(e,void 0,void 0,(function(){var e;return u(this,(function(r){switch(r.label){case 0:return"function"!=typeof(e=this.slashMenuCallbacks.get(t))?(console.error("[slashMenu] callback not found: ".concat(String(t))),[2,!1]):[4,Promise.resolve(e())];case 1:return r.sent(),[2,!0]}}))}))}),{audience:O}),r.addInvokeHandler("editorFacade.handleCallback",(function(t,r){return void 0===r&&(r=[]),c(e,void 0,void 0,(function(){var e;return u(this,(function(n){switch(n.label){case 0:return"function"!=typeof(e=this.editorFacadeCallbacks.get(t))?(console.error("[editorFacade] callback not found: ".concat(String(t))),[2,void 0]):[4,Promise.resolve(e.apply(void 0,r))];case 1:return[2,n.sent()]}}))}))}),{audience:O}),r.addInvokeHandler(m.InvokeMethod.DispatchEditorEvent,(function(t,r){return c(e,void 0,void 0,(function(){return u(this,(function(e){return"collaboratorsChanged"===t&&this.updateCollaborators(r),function(e){return L.has(e)}(t)&&this.emit(t,r),this.emitter.emit(t,r),[2]}))}))}),{audience:O}),this.bindContainerMethodHandlers(),window.visualViewport?window.visualViewport.addEventListener("resize",this.onViewportResize):window.addEventListener("resize",this.onViewportResize)},r.prototype.bindContainerMethodHandlers=function(){var e=this,t=this.channel;t.addInvokeHandler(m.ContainerMethod.GenerateUrl,(function(t,r,n){return c(e,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:if("function"!=typeof this.connectOptions.generateUrl)throw new Error('"'.concat(m.ContainerMethod.GenerateUrl,'" not found'));return[4,Promise.resolve(this.connectOptions.generateUrl(t,r,n))];case 1:return[2,e.sent()]}}))}))}),{audience:O}),t.addInvokeHandler(m.ContainerMethod.HandleCustomTask,(function(t){return c(e,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:if("function"!=typeof this.connectOptions.handleCustomTask)throw new Error('"'.concat(m.ContainerMethod.HandleCustomTask,'" not found'));return[4,Promise.resolve(this.connectOptions.handleCustomTask(t))];case 1:return[2,e.sent()]}}))}))}),{audience:O}),t.addInvokeHandler(m.ContainerMethod.OpenLink,(function(t,r){return c(e,void 0,void 0,(function(){return u(this,(function(e){if("function"!=typeof this.connectOptions.openLink)throw new Error('"'.concat(m.ContainerMethod.OpenLink,'" not found'));return this.connectOptions.openLink(t,r),[2]}))}))}),{audience:O}),t.addInvokeHandler(m.ContainerMethod.GetFileInfoFromUrl,(function(t){return c(e,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:if("function"!=typeof this.connectOptions.getFileInfoFromUrl)throw new Error('"'.concat(m.ContainerMethod.GetFileInfoFromUrl,'" not a function'));return[4,this.connectOptions.getFileInfoFromUrl(t)];case 1:return[2,e.sent()]}}))}))}),{audience:O}),t.addInvokeHandler(m.ContainerMethod.MentionClickHandlerForMobile,(function(t){return c(e,void 0,void 0,(function(){var e;return u(this,(function(r){if("function"!=typeof this.connectOptions.mentionClickHandlerForMobile)throw new Error('"'.concat(m.ContainerMethod.MentionClickHandlerForMobile,'" not found'));return"object"==typeof t&&null!=t&&(e=this.element.getBoundingClientRect(),t.x+=e.x,t.y+=e.y,t.isMention&&(t.mentionInfo.left+=e.x,t.mentionInfo.top+=e.y)),this.connectOptions.mentionClickHandlerForMobile(t),[2]}))}))}),{audience:O}),t.addInvokeHandler(m.ContainerMethod.GetContainerRect,(function(){return c(e,void 0,void 0,(function(){return u(this,(function(e){return[2,this.getContainerRect()]}))}))}),{audience:O}),t.addInvokeHandler(m.ContainerMethod.ShowToast,(function(t){return c(e,void 0,void 0,(function(){var e,r;return u(this,(function(n){return null===(r=(e=this.connectOptions).showToast)||void 0===r||r.call(e,t),[2]}))}))}),{audience:O}),t.addInvokeHandler(m.ContainerMethod.GetCredentials,(function(){return c(e,void 0,void 0,(function(){var e,t;return u(this,(function(r){switch(r.label){case 0:return[4,null===(t=(e=this.connectOptions).getCredentials)||void 0===t?void 0:t.call(e)];case 1:return[2,r.sent()]}}))}))}),{audience:O})},r.prototype.initHeaderBarsFacade=function(){var e=this;return(0,E.initHeaderBarsFacade)({getVisibleState:function(){return e.headerBarsVisible},setVisibleState:function(t){e.headerBarsVisible=t},getCommandsMap:function(){return e.headerBarsCommands},getOverridesMap:function(){return e.headerBarsCommandOverrides},getRefsMap:function(){return e.headerBarsCommandRefs},getTitleHandler:function(){return e.headerBarsTitleChangeHandler},setTitleHandler:function(t){e.headerBarsTitleChangeHandler=t},isTitleSubscribed:function(){return e.headerBarsTitleChangeSubscribed},setTitleSubscribed:function(t){e.headerBarsTitleChangeSubscribed=t},invokeHeaderBars:this.invokeHeaderBars.bind(this),emitHeaderBarsError:function(t,r){e.emit(R.Error,r instanceof Error?r:new Error("".concat(t,": ").concat(String(r))))},onInternalTitleChange:function(t){e.emitter.on("titleChange",t)},subscribeEditorTitleChange:function(){return c(e,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.ListenEditorEvent,["titleChange"],{audience:O})];case 1:return e.sent(),[2]}}))}))}})},r.prototype.ensureHeaderBarsTitleChangeSubscription=function(){return c(this,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return[4,(0,E.ensureHeaderBarsTitleChangeSubscription)(this.createHeaderBarsHost())];case 1:return e.sent(),[2]}}))}))},r.prototype.invokeHeaderBars=function(e,t){return c(this,void 0,void 0,(function(){var r;return u(this,(function(n){switch(n.label){case 0:return r=void 0===t?[]:[t],[4,this.channel.invoke(e,r,{audience:O})];case 1:return[2,n.sent()]}}))}))},r.prototype.syncHeaderBarsCommands=function(e){(0,E.syncHeaderBarsCommands)(this.createHeaderBarsHost(),e)},r.prototype.createHeaderBarsHost=function(){var e=this;return{getVisibleState:function(){return e.headerBarsVisible},setVisibleState:function(t){e.headerBarsVisible=t},getCommandsMap:function(){return e.headerBarsCommands},getOverridesMap:function(){return e.headerBarsCommandOverrides},getRefsMap:function(){return e.headerBarsCommandRefs},getTitleHandler:function(){return e.headerBarsTitleChangeHandler},setTitleHandler:function(t){e.headerBarsTitleChangeHandler=t},isTitleSubscribed:function(){return e.headerBarsTitleChangeSubscribed},setTitleSubscribed:function(t){e.headerBarsTitleChangeSubscribed=t},invokeHeaderBars:this.invokeHeaderBars.bind(this),emitHeaderBarsError:function(t,r){e.emit(R.Error,r instanceof Error?r:new Error("".concat(t,": ").concat(String(r))))},onInternalTitleChange:function(t){e.emitter.on("titleChange",t)},subscribeEditorTitleChange:function(){return c(e,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.ListenEditorEvent,["titleChange"],{audience:O})];case 1:return e.sent(),[2]}}))}))}}},r.prototype.applyHeaderBarsChanged=function(e){(0,E.applyHeaderBarsChanged)(this.createHeaderBarsHost(),e)},r.prototype.syncHeaderBarsVisible=function(){return c(this,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return[4,(0,E.syncHeaderBarsVisible)(this.createHeaderBarsHost())];case 1:return[2,e.sent()]}}))}))},r.prototype.setHeaderBarsVisible=function(e){return c(this,void 0,void 0,(function(){return u(this,(function(t){switch(t.label){case 0:return[4,(0,E.setHeaderBarsVisible)(this.createHeaderBarsHost(),e)];case 1:return t.sent(),[2]}}))}))},r.prototype.getHeaderBarsCommandRef=function(e){return(0,E.getHeaderBarsCommandRef)(this.createHeaderBarsHost(),e)},r.prototype.registerEditorFacadeCallback=function(e){var t="editor-facade:".concat((0,p.v4)());return this.editorFacadeCallbacks.set(t,e),t},r.prototype.unregisterEditorFacadeCallback=function(e){this.editorFacadeCallbacks.delete(e)},r.prototype.createEditorFacadeModule=function(e,t){var r=this;return new Proxy(t,{get:function(t,n){if("string"==typeof n&&!M(n))return Object.prototype.hasOwnProperty.call(t,n)?t[n]:function(){for(var t=[],o=0;o<arguments.length;o++)t[o]=arguments[o];return c(r,void 0,void 0,(function(){return u(this,(function(r){switch(r.label){case 0:return[4,this.invokeEditorFacade("".concat(e,".").concat(n),t)];case 1:return[2,r.sent()]}}))}))}}})},r.prototype.createValueObjectFacade=function(e,t,r){var n=this;return new Proxy(r,{get:function(r,o){if("string"==typeof o&&!M(o))return Object.prototype.hasOwnProperty.call(r,o)?r[o]:function(){for(var r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];return c(n,void 0,void 0,(function(){return u(this,(function(n){switch(n.label){case 0:return[4,this.invokeEditorFacade("".concat(e,".").concat(o),l([t],r,!0))];case 1:return[2,n.sent()]}}))}))}}})},r.prototype.registerEditorFacadeListener=function(e,t){var r=this,n=this.registerEditorFacadeCallback((function(e){return c(r,void 0,void 0,(function(){return u(this,(function(r){return[2,t(e)]}))}))}));return this.invokeEditorFacade(e,[n]).catch((function(e){r.emit(R.Error,e instanceof Error?e:new Error("register editor facade listener failed: ".concat(String(e))))})),function(){r.unregisterEditorFacadeCallback(n)}},r.prototype.installRootFacade=function(){this.clearRootFacade(),Object.assign(this,(0,C.buildRootFacadeState)({fileType:this.fileType,invokeEditorFacade:this.invokeEditorFacade.bind(this),listenEditorEvent:this.listenEditorEvent.bind(this),createEditorFacadeModule:this.createEditorFacadeModule.bind(this),createValueObjectFacade:this.createValueObjectFacade.bind(this),registerEditorFacadeListener:this.registerEditorFacadeListener.bind(this),registerEditorFacadeCallback:this.registerEditorFacadeCallback.bind(this),unregisterEditorFacadeCallback:this.unregisterEditorFacadeCallback.bind(this)}))},r.prototype.clearRootFacade=function(){this.title=void 0,this.history=void 0,this.comments=void 0,this.locks=void 0,this.mention=void 0,this.content=void 0,this.version=void 0,this.presentation=void 0,this.selection=void 0,this.search=void 0,this.outline=void 0,this.sidebar=void 0,this.tables=void 0,this.settings=void 0,this.workbook=void 0,this.activeSheet=void 0,this.charts=void 0,this.selections=void 0,this.slides=void 0,this.text=void 0,this.zoom=void 0,this.eventSubscription=void 0,this.batchChanges=void 0,this.export=void 0,this.print=void 0,this.setFocus=void 0},r.prototype.invokeEditorFacade=function(e,t){return void 0===t&&(t=[]),c(this,void 0,void 0,(function(){return u(this,(function(r){switch(r.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.InvokeEditorMethod,[e,t],{audience:O})];case 1:return[2,r.sent()]}}))}))},r.prototype.listenEditorEvent=function(e,t){var r=this;return this.emitter.on(e,t),this.channel.invoke(m.InvokeMethod.ListenEditorEvent,[e],{audience:O}).catch((function(e){r.emit(R.Error,e instanceof Error?e:new Error("listen editor event failed: ".concat(String(e))))})),function(){r.emitter.off(e,t)}},r.prototype.initEditor=function(){var e=this,t=function(e){return"saveStatusDidChange"===e?"saveStatusChanged":e},r={on:function(r,n){return c(e,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return r=t(r),this.emitter.on(r,n),[4,this.channel.invoke(m.InvokeMethod.ListenEditorEvent,[r],{audience:O})];case 1:return e.sent(),[2]}}))}))},off:function(r,n){r=t(r),e.emitter.off(r,n)},getCollaborators:function(){return l([],e.collaborators,!0)}},n=function(t){return void 0===t&&(t=[]),new Proxy((function(){}),{get:function(e,o){if("string"!=typeof o||!M(o))return 0===t.length&&Object.prototype.hasOwnProperty.call(r,o)?r[o]:"string"==typeof o&&["call","apply","bind"].includes(o)?e[o]:"string"==typeof o?n(l(l([],t,!0),[o],!1)):void 0},apply:function(r,n,o){if(t.length>0)return e.channel.invoke(m.InvokeMethod.InvokeEditorMethod,[t.join("."),o],{audience:O})}})};return n()},r.prototype.shouldHandleMessage=function(e){return!(e.channelId!==this.channel.id||e.time+this.messageExpires<Date.now()||this.handledMessageCache.has(e.context.messageId))},r.prototype.getContainerRect=function(){var e,t=this.element.getBoundingClientRect(),r={viewportWidth:window.innerWidth,viewportHeight:window.innerHeight,top:t.top,left:t.left,bottom:t.bottom,right:t.right,scrollTop:null===(e=document.scrollingElement)||void 0===e?void 0:e.scrollTop,visualViewport:{}};return window.visualViewport&&(r.visualViewport={width:window.visualViewport.width,height:window.visualViewport.height,offsetLeft:window.visualViewport.offsetLeft,offsetTop:window.visualViewport.offsetTop,pageLeft:window.visualViewport.pageLeft,pageTop:window.visualViewport.pageTop,scale:window.visualViewport.scale}),r},r.prototype.updateCollaborators=function(e){if(e&&"object"==typeof e&&Array.isArray(e.collaborators)){var t=e;this.collaborators=l([],t.collaborators,!0)}},r}(v.TinyEmitter);function T(e){return"string"==typeof e&&e.trim().length>0}t.OfficeSDK=x;var R,L=new Set(["emptyPageShown","emptyPageAction","emptyPageHidden"]);!function(e){e.SDKInit="SDKInit",e.Error="error",e.ReadyState="readyState",e.EditorRendered="editorRendered",e.EditorEvent="editorEvent"}(R=t.Event||(t.Event={})),t.EDITOR_RENDERED_EVENT="editorRendered"},9368:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.assert=void 0,t.assert=function(e,t,r){if(t(e))return e;throw new Error(r)}},5098:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.connect=void 0;var i=r(4780);t.connect=function(e){return n(this,void 0,void 0,(function(){var t,r;return o(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,(t=new i.OfficeSDK(e)).init()];case 1:return n.sent(),[2,t];case 2:throw r=n.sent(),console.log("Failed to init OfficeSDK",{error:r,options:e}),r;case 3:return[2]}}))}))}},8156:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return o(t,e),t},a=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.START_PARAMS_FIELD=t.Flowchart=t.Form=t.Table=t.Presentation=t.Spreadsheet=t.Document=t.DocumentPro=t.normalizeEmptyPageOptions=t.ALL_EMPTY_PAGE_SCENES=void 0;var s=i(r(1810));t.DocumentPro=s;var c=i(r(9105));t.Document=c;var u=i(r(8724));t.Spreadsheet=u;var l=i(r(1260));t.Presentation=l;var d=i(r(7642));t.Table=d;var f=i(r(6954));t.Form=f;var h=i(r(4054));t.Flowchart=h,a(r(4057),t),a(r(5098),t),a(r(4780),t);var p=r(2560);Object.defineProperty(t,"ALL_EMPTY_PAGE_SCENES",{enumerable:!0,get:function(){return p.ALL_EMPTY_PAGE_SCENES}}),Object.defineProperty(t,"normalizeEmptyPageOptions",{enumerable:!0,get:function(){return p.normalizeEmptyPageOptions}}),t.START_PARAMS_FIELD="smParams"},9105:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},1810:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},2560:function(e,t){"use strict";var r=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))};function n(e){if(!Array.isArray(e))return r([],t.ALL_EMPTY_PAGE_SCENES,!0);for(var n=[],o=0,i=e;o<i.length;o++){var a=i[o];t.ALL_EMPTY_PAGE_SCENES.includes(a)&&n.push(a)}return 0===n.length?r([],t.ALL_EMPTY_PAGE_SCENES,!0):n}function o(e){return"show-immediately"===e?"show-immediately":"refresh-first"}function i(e){return"string"==typeof e&&e.length>0?e:void 0}function a(e){if(e&&"object"==typeof e){var t=i(e.label);if(t)return{label:t}}}function s(e){if(e&&"object"==typeof e){var t={},r=i(e.title);r&&(t.title=r);var n=i(e.description);n&&(t.description=n);var o=a(e.primary);o&&(t.primary=o);var s=a(e.secondary);if(s&&(t.secondary=s),void 0!==t.title||void 0!==t.description||void 0!==t.primary||void 0!==t.secondary)return t}}function c(e){if(!e||"object"!=typeof e)return{};for(var r={},n=0,o=t.ALL_EMPTY_PAGE_SCENES;n<o.length;n++){var i=o[n],a=s(e[i]);a&&(r[i]=a)}return r}Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeEmptyPageOptions=t.ALL_EMPTY_PAGE_SCENES=void 0,t.ALL_EMPTY_PAGE_SCENES=["file-open-failed","no-permission","network-error","token-expired"],t.normalizeEmptyPageOptions=function(e){return!1===e?{enabled:!1,scenes:r([],t.ALL_EMPTY_PAGE_SCENES,!0),tokenExpiredStrategy:"refresh-first",overrides:{}}:!0===e||void 0===e?{enabled:!0,scenes:r([],t.ALL_EMPTY_PAGE_SCENES,!0),tokenExpiredStrategy:"refresh-first",overrides:{}}:{enabled:"boolean"!=typeof e.enabled||e.enabled,scenes:n(e.scenes),tokenExpiredStrategy:o(e.tokenExpiredStrategy),overrides:c(e.overrides)}}},4054:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},6954:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},1260:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},8724:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},7642:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},611:(e,t,r)=>{"use strict";var n;r.r(t),r.d(t,{NIL:()=>x,parse:()=>g,stringify:()=>l,v1:()=>v,v3:()=>_,v4:()=>k,v5:()=>M,validate:()=>s,version:()=>T});var o=new Uint8Array(16);function i(){if(!n&&!(n="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return n(o)}const a=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,s=function(e){return"string"==typeof e&&a.test(e)};for(var c=[],u=0;u<256;++u)c.push((u+256).toString(16).substr(1));const l=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=(c[e[t+0]]+c[e[t+1]]+c[e[t+2]]+c[e[t+3]]+"-"+c[e[t+4]]+c[e[t+5]]+"-"+c[e[t+6]]+c[e[t+7]]+"-"+c[e[t+8]]+c[e[t+9]]+"-"+c[e[t+10]]+c[e[t+11]]+c[e[t+12]]+c[e[t+13]]+c[e[t+14]]+c[e[t+15]]).toLowerCase();if(!s(r))throw TypeError("Stringified UUID is invalid");return r};var d,f,h=0,p=0;const v=function(e,t,r){var n=t&&r||0,o=t||new Array(16),a=(e=e||{}).node||d,s=void 0!==e.clockseq?e.clockseq:f;if(null==a||null==s){var c=e.random||(e.rng||i)();null==a&&(a=d=[1|c[0],c[1],c[2],c[3],c[4],c[5]]),null==s&&(s=f=16383&(c[6]<<8|c[7]))}var u=void 0!==e.msecs?e.msecs:Date.now(),v=void 0!==e.nsecs?e.nsecs:p+1,g=u-h+(v-p)/1e4;if(g<0&&void 0===e.clockseq&&(s=s+1&16383),(g<0||u>h)&&void 0===e.nsecs&&(v=0),v>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");h=u,p=v,f=s;var m=(1e4*(268435455&(u+=122192928e5))+v)%4294967296;o[n++]=m>>>24&255,o[n++]=m>>>16&255,o[n++]=m>>>8&255,o[n++]=255&m;var y=u/4294967296*1e4&268435455;o[n++]=y>>>8&255,o[n++]=255&y,o[n++]=y>>>24&15|16,o[n++]=y>>>16&255,o[n++]=s>>>8|128,o[n++]=255&s;for(var b=0;b<6;++b)o[n+b]=a[b];return t||l(o)},g=function(e){if(!s(e))throw TypeError("Invalid UUID");var t,r=new Uint8Array(16);return r[0]=(t=parseInt(e.slice(0,8),16))>>>24,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r[4]=(t=parseInt(e.slice(9,13),16))>>>8,r[5]=255&t,r[6]=(t=parseInt(e.slice(14,18),16))>>>8,r[7]=255&t,r[8]=(t=parseInt(e.slice(19,23),16))>>>8,r[9]=255&t,r[10]=(t=parseInt(e.slice(24,36),16))/1099511627776&255,r[11]=t/4294967296&255,r[12]=t>>>24&255,r[13]=t>>>16&255,r[14]=t>>>8&255,r[15]=255&t,r};function m(e,t,r){function n(e,n,o,i){if("string"==typeof e&&(e=function(e){e=unescape(encodeURIComponent(e));for(var t=[],r=0;r<e.length;++r)t.push(e.charCodeAt(r));return t}(e)),"string"==typeof n&&(n=g(n)),16!==n.length)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");var a=new Uint8Array(16+e.length);if(a.set(n),a.set(e,n.length),(a=r(a))[6]=15&a[6]|t,a[8]=63&a[8]|128,o){i=i||0;for(var s=0;s<16;++s)o[i+s]=a[s];return o}return l(a)}try{n.name=e}catch(e){}return n.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",n.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8",n}function y(e){return 14+(e+64>>>9<<4)+1}function b(e,t){var r=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(r>>16)<<16|65535&r}function w(e,t,r,n,o,i){return b((a=b(b(t,e),b(n,i)))<<(s=o)|a>>>32-s,r);var a,s}function E(e,t,r,n,o,i,a){return w(t&r|~t&n,e,t,o,i,a)}function C(e,t,r,n,o,i,a){return w(t&n|r&~n,e,t,o,i,a)}function S(e,t,r,n,o,i,a){return w(t^r^n,e,t,o,i,a)}function O(e,t,r,n,o,i,a){return w(r^(t|~n),e,t,o,i,a)}const _=m("v3",48,(function(e){if("string"==typeof e){var t=unescape(encodeURIComponent(e));e=new Uint8Array(t.length);for(var r=0;r<t.length;++r)e[r]=t.charCodeAt(r)}return function(e){for(var t=[],r=32*e.length,n="0123456789abcdef",o=0;o<r;o+=8){var i=e[o>>5]>>>o%32&255,a=parseInt(n.charAt(i>>>4&15)+n.charAt(15&i),16);t.push(a)}return t}(function(e,t){e[t>>5]|=128<<t%32,e[y(t)-1]=t;for(var r=1732584193,n=-271733879,o=-1732584194,i=271733878,a=0;a<e.length;a+=16){var s=r,c=n,u=o,l=i;r=E(r,n,o,i,e[a],7,-680876936),i=E(i,r,n,o,e[a+1],12,-389564586),o=E(o,i,r,n,e[a+2],17,606105819),n=E(n,o,i,r,e[a+3],22,-1044525330),r=E(r,n,o,i,e[a+4],7,-176418897),i=E(i,r,n,o,e[a+5],12,1200080426),o=E(o,i,r,n,e[a+6],17,-1473231341),n=E(n,o,i,r,e[a+7],22,-45705983),r=E(r,n,o,i,e[a+8],7,1770035416),i=E(i,r,n,o,e[a+9],12,-1958414417),o=E(o,i,r,n,e[a+10],17,-42063),n=E(n,o,i,r,e[a+11],22,-1990404162),r=E(r,n,o,i,e[a+12],7,1804603682),i=E(i,r,n,o,e[a+13],12,-40341101),o=E(o,i,r,n,e[a+14],17,-1502002290),r=C(r,n=E(n,o,i,r,e[a+15],22,1236535329),o,i,e[a+1],5,-165796510),i=C(i,r,n,o,e[a+6],9,-1069501632),o=C(o,i,r,n,e[a+11],14,643717713),n=C(n,o,i,r,e[a],20,-373897302),r=C(r,n,o,i,e[a+5],5,-701558691),i=C(i,r,n,o,e[a+10],9,38016083),o=C(o,i,r,n,e[a+15],14,-660478335),n=C(n,o,i,r,e[a+4],20,-405537848),r=C(r,n,o,i,e[a+9],5,568446438),i=C(i,r,n,o,e[a+14],9,-1019803690),o=C(o,i,r,n,e[a+3],14,-187363961),n=C(n,o,i,r,e[a+8],20,1163531501),r=C(r,n,o,i,e[a+13],5,-1444681467),i=C(i,r,n,o,e[a+2],9,-51403784),o=C(o,i,r,n,e[a+7],14,1735328473),r=S(r,n=C(n,o,i,r,e[a+12],20,-1926607734),o,i,e[a+5],4,-378558),i=S(i,r,n,o,e[a+8],11,-2022574463),o=S(o,i,r,n,e[a+11],16,1839030562),n=S(n,o,i,r,e[a+14],23,-35309556),r=S(r,n,o,i,e[a+1],4,-1530992060),i=S(i,r,n,o,e[a+4],11,1272893353),o=S(o,i,r,n,e[a+7],16,-155497632),n=S(n,o,i,r,e[a+10],23,-1094730640),r=S(r,n,o,i,e[a+13],4,681279174),i=S(i,r,n,o,e[a],11,-358537222),o=S(o,i,r,n,e[a+3],16,-722521979),n=S(n,o,i,r,e[a+6],23,76029189),r=S(r,n,o,i,e[a+9],4,-640364487),i=S(i,r,n,o,e[a+12],11,-421815835),o=S(o,i,r,n,e[a+15],16,530742520),r=O(r,n=S(n,o,i,r,e[a+2],23,-995338651),o,i,e[a],6,-198630844),i=O(i,r,n,o,e[a+7],10,1126891415),o=O(o,i,r,n,e[a+14],15,-1416354905),n=O(n,o,i,r,e[a+5],21,-57434055),r=O(r,n,o,i,e[a+12],6,1700485571),i=O(i,r,n,o,e[a+3],10,-1894986606),o=O(o,i,r,n,e[a+10],15,-1051523),n=O(n,o,i,r,e[a+1],21,-2054922799),r=O(r,n,o,i,e[a+8],6,1873313359),i=O(i,r,n,o,e[a+15],10,-30611744),o=O(o,i,r,n,e[a+6],15,-1560198380),n=O(n,o,i,r,e[a+13],21,1309151649),r=O(r,n,o,i,e[a+4],6,-145523070),i=O(i,r,n,o,e[a+11],10,-1120210379),o=O(o,i,r,n,e[a+2],15,718787259),n=O(n,o,i,r,e[a+9],21,-343485551),r=b(r,s),n=b(n,c),o=b(o,u),i=b(i,l)}return[r,n,o,i]}(function(e){if(0===e.length)return[];for(var t=8*e.length,r=new Uint32Array(y(t)),n=0;n<t;n+=8)r[n>>5]|=(255&e[n/8])<<n%32;return r}(e),8*e.length))})),k=function(e,t,r){var n=(e=e||{}).random||(e.rng||i)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){r=r||0;for(var o=0;o<16;++o)t[r+o]=n[o];return t}return l(n)};function P(e,t,r,n){switch(e){case 0:return t&r^~t&n;case 1:case 3:return t^r^n;case 2:return t&r^t&n^r&n}}function A(e,t){return e<<t|e>>>32-t}const M=m("v5",80,(function(e){var t=[1518500249,1859775393,2400959708,3395469782],r=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof e){var n=unescape(encodeURIComponent(e));e=[];for(var o=0;o<n.length;++o)e.push(n.charCodeAt(o))}else Array.isArray(e)||(e=Array.prototype.slice.call(e));e.push(128);for(var i=e.length/4+2,a=Math.ceil(i/16),s=new Array(a),c=0;c<a;++c){for(var u=new Uint32Array(16),l=0;l<16;++l)u[l]=e[64*c+4*l]<<24|e[64*c+4*l+1]<<16|e[64*c+4*l+2]<<8|e[64*c+4*l+3];s[c]=u}s[a-1][14]=8*(e.length-1)/Math.pow(2,32),s[a-1][14]=Math.floor(s[a-1][14]),s[a-1][15]=8*(e.length-1)&4294967295;for(var d=0;d<a;++d){for(var f=new Uint32Array(80),h=0;h<16;++h)f[h]=s[d][h];for(var p=16;p<80;++p)f[p]=A(f[p-3]^f[p-8]^f[p-14]^f[p-16],1);for(var v=r[0],g=r[1],m=r[2],y=r[3],b=r[4],w=0;w<80;++w){var E=Math.floor(w/20),C=A(v,5)+P(E,g,m,y)+b+t[E]+f[w]>>>0;b=y,y=m,m=A(g,30)>>>0,g=v,v=C}r[0]=r[0]+v>>>0,r[1]=r[1]+g>>>0,r[2]=r[2]+m>>>0,r[3]=r[3]+y>>>0,r[4]=r[4]+b>>>0}return[r[0]>>24&255,r[0]>>16&255,r[0]>>8&255,255&r[0],r[1]>>24&255,r[1]>>16&255,r[1]>>8&255,255&r[1],r[2]>>24&255,r[2]>>16&255,r[2]>>8&255,255&r[2],r[3]>>24&255,r[3]>>16&255,r[3]>>8&255,255&r[3],r[4]>>24&255,r[4]>>16&255,r[4]>>8&255,255&r[4]]})),x="00000000-0000-0000-0000-000000000000",T=function(e){if(!s(e))throw TypeError("Invalid UUID");return parseInt(e.substr(14,1),16)}},3836:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},3931:function(e,t){"use strict";var r,n,o=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},i=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)a.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return a};Object.defineProperty(t,"__esModule",{value:!0}),t.convertFileType=t.FileTypeAlias=t.FileType=void 0,function(e){e.DocumentPro="documentPro",e.Document="document",e.Spreadsheet="spreadsheet",e.Presentation="presentation",e.Table="table",e.Form="form",e.Flowchart="flowchart",e.Mindmap="mindmap",e.Board="board",e.Unknown="unknown"}(n=t.FileType||(t.FileType={})),t.FileTypeAlias=((r={})[n.Document]="docs",r[n.DocumentPro]="docx",r[n.Spreadsheet]="sheets",r[n.Presentation]="presentation",r[n.Table]="table",r[n.Form]="form",r[n.Mindmap]="mindmap",r[n.Board]="board",r[n.Flowchart]="flowchart",r),t.convertFileType=function(e){var r,a,s,c;if("string"==typeof e){try{for(var u=o(Object.entries(n)),l=u.next();!l.done;l=u.next()){var d=i(l.value,2),f=d[0],h=d[1];if(f===e||h===e)return h}}catch(e){r={error:e}}finally{try{l&&!l.done&&(a=u.return)&&a.call(u)}finally{if(r)throw r.error}}try{for(var p=o(Object.entries(t.FileTypeAlias)),v=p.next();!v.done;v=p.next()){var g=i(v.value,2);if(f=g[0],(h=g[1])===e)return f}}catch(e){s={error:e}}finally{try{v&&!v.done&&(c=p.return)&&c.call(p)}finally{if(s)throw s.error}}}else switch(e){case-2:return n.Document;case-4:return n.Spreadsheet;case-6:return n.DocumentPro;case-7:return n.Mindmap;case-8:return n.Form;case-9:return n.Board;case-10:return n.Presentation;case-11:return n.Table;case-13:return n.Flowchart}return n.Unknown}},5313:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.ReadyState=t.isSDKEventMessage=t.SDKEvent=void 0,t.SDKEvent=Object.freeze({ViewportResize:"ViewportResize",ReadyState:"ReadyState"}),t.isSDKEventMessage=function(e){var r;return null!=e&&(r=e.event),"string"==typeof r&&r in t.SDKEvent},(r=t.ReadyState||(t.ReadyState={})).Loading="loading",r.LoadingEditor="loadingEditor",r.Ready="ready",r.Failed="failed",r.Disconnected="disconnected"},4057:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(3672),t),o(r(3836),t),o(r(3931),t),o(r(5313),t)},3672:(e,t)=>{"use strict";var r,n,o,i;Object.defineProperty(t,"__esModule",{value:!0}),t.UrlSharingType=t.SpreadsheetSharingFrom=t.ContainerMethod=t.InvokeMethod=void 0,(i=t.InvokeMethod||(t.InvokeMethod={})).SDKInit="SDKInit",i.Error="error",i.ReadyState="readyState",i.SetCredentials="setCredentials",i.InvokeContainerMethod="invokeContainerMethod",i.InvokeEditorMethod="invokeEditorMethod",i.DispatchSDKEvent="dispatchSDKEvent",i.DispatchEditorEvent="dispatchEditorEvent",i.ListenEditorEvent="listenEditorEvent",i.RequestPerformanceEntries="requestPerformanceEntries",(o=t.ContainerMethod||(t.ContainerMethod={})).GetContainerRect="getContainerRect",o.OpenLink="openLink",o.GenerateUrl="generateUrl",o.MentionClickHandlerForMobile="mentionClickHandlerForMobile",o.GetFileInfoFromUrl="getFileInfoFromUrl",o.ShowSignatureComponent="showSignatureComponent",o.ShowToast="showToast",o.HandleCustomTask="handleCustomTask",o.GetCredentials="getCredentials",(n=t.SpreadsheetSharingFrom||(t.SpreadsheetSharingFrom={})).copyRangeLink="copyRangeLink",n.copyViewportLink="copyViewportLink",n.copySheetLink="copySheetLink",n.importRange="importRange",n.preview="preview",(r=t.UrlSharingType||(t.UrlSharingType={})).Doc="doc",r.Docx="docx",r.Spreadsheet="sheet",r.Form="form",r.FormPreview="formPreview",r.FormFill="formFill",r.Presentation="presentation",r.Table="table",r.Flowchart="flowchart",r.Mindmap="mindmap",r.Board="board"},6877:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.StartParams=void 0;var o=n(r(4139)),i=n(r(1121)).default.createInstance(),a=function(){function e(t){if("string"==typeof t)return e.parse(t);if((0,o.default)(t))Object.assign(this,t);else if(t instanceof e)Object.assign(this,JSON.parse(JSON.stringify(t)));else if(Array.isArray(t))for(var r=0,n=t;r<n.length;r++){var i=n[r];"string"==typeof i?Object.assign(this,e.parse(i)):null!=i&&Object.assign(this,JSON.parse(JSON.stringify(i)))}null==this.fileGuid&&null!=this.guid&&(this.fileGuid=this.guid),null!=this.guid&&this.fileGuid!==this.guid&&(this.guid=this.fileGuid)}return e.parse=function(t){return new e(JSON.parse(i.decodeStr(t)))},e.prototype.toString=function(){return i.encodeStr(JSON.stringify(this))},e}();t.StartParams=a},4339:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(6877),t)},4139:e=>{"use strict";e.exports=e=>{if("[object Object]"!==Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}},6343:(e,t,r)=>{"use strict";var n=r(6612);e.exports=n},1015:(e,t,r)=>{"use strict";var n=r(8418);e.exports=n},780:(e,t,r)=>{"use strict";var n=r(2473);r(7628),r(3799),e.exports=n},5448:(e,t,r)=>{"use strict";var n=r(2841);e.exports=n},3609:(e,t,r)=>{"use strict";r(4423);var n=r(7015);e.exports=n("Array","includes")},8473:(e,t,r)=>{"use strict";r(9085);var n=r(9167);e.exports=n.Object.assign},6398:(e,t,r)=>{"use strict";r(67),r(3792),r(6099),r(3362),r(6167),r(3518),r(1689),r(4628),r(9391),r(7764);var n=r(9167);e.exports=n.Promise},2288:(e,t,r)=>{"use strict";e.exports=r(5914)},7782:(e,t,r)=>{"use strict";e.exports=r(6008)},5781:(e,t,r)=>{"use strict";e.exports=r(911)},2701:(e,t,r)=>{"use strict";e.exports=r(8255)},5914:(e,t,r)=>{"use strict";var n=r(6343);e.exports=n},6008:(e,t,r)=>{"use strict";var n=r(1015);e.exports=n},911:(e,t,r)=>{"use strict";var n=r(780);r(9806),r(5874),r(7575),e.exports=n},8255:(e,t,r)=>{"use strict";var n=r(5448);e.exports=n},9306:(e,t,r)=>{"use strict";var n=r(4901),o=r(6823),i=TypeError;e.exports=function(e){if(n(e))return e;throw new i(o(e)+" is not a function")}},5548:(e,t,r)=>{"use strict";var n=r(3517),o=r(6823),i=TypeError;e.exports=function(e){if(n(e))return e;throw new i(o(e)+" is not a constructor")}},3506:(e,t,r)=>{"use strict";var n=r(3925),o=String,i=TypeError;e.exports=function(e){if(n(e))return e;throw new i("Can't set "+o(e)+" as a prototype")}},6469:(e,t,r)=>{"use strict";var n=r(8227),o=r(2360),i=r(4913).f,a=n("unscopables"),s=Array.prototype;void 0===s[a]&&i(s,a,{configurable:!0,value:o(null)}),e.exports=function(e){s[a][e]=!0}},679:(e,t,r)=>{"use strict";var n=r(1625),o=TypeError;e.exports=function(e,t){if(n(t,e))return e;throw new o("Incorrect invocation")}},8551:(e,t,r)=>{"use strict";var n=r(34),o=String,i=TypeError;e.exports=function(e){if(n(e))return e;throw new i(o(e)+" is not an object")}},7916:(e,t,r)=>{"use strict";var n=r(6080),o=r(9565),i=r(8981),a=r(6319),s=r(4209),c=r(3517),u=r(6198),l=r(2278),d=r(81),f=r(851),h=Array;e.exports=function(e){var t=i(e),r=c(this),p=arguments.length,v=p>1?arguments[1]:void 0,g=void 0!==v;g&&(v=n(v,p>2?arguments[2]:void 0));var m,y,b,w,E,C,S=f(t),O=0;if(!S||this===h&&s(S))for(m=u(t),y=r?new this(m):h(m);m>O;O++)C=g?v(t[O],O):t[O],l(y,O,C);else for(y=r?new this:[],E=(w=d(t,S)).next;!(b=o(E,w)).done;O++)C=g?a(w,v,[b.value,O],!0):b.value,l(y,O,C);return y.length=O,y}},9617:(e,t,r)=>{"use strict";var n=r(5397),o=r(5610),i=r(6198),a=function(e){return function(t,r,a){var s=n(t),c=i(s);if(0===c)return!e&&-1;var u,l=o(a,c);if(e&&r!=r){for(;c>l;)if((u=s[l++])!=u)return!0}else for(;c>l;l++)if((e||l in s)&&s[l]===r)return e||l||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},7680:(e,t,r)=>{"use strict";var n=r(9504);e.exports=n([].slice)},4488:(e,t,r)=>{"use strict";var n=r(7680),o=Math.floor,i=function(e,t){var r=e.length;if(r<8)for(var a,s,c=1;c<r;){for(s=c,a=e[c];s&&t(e[s-1],a)>0;)e[s]=e[--s];s!==c++&&(e[s]=a)}else for(var u=o(r/2),l=i(n(e,0,u),t),d=i(n(e,u),t),f=l.length,h=d.length,p=0,v=0;p<f||v<h;)e[p+v]=p<f&&v<h?t(l[p],d[v])<=0?l[p++]:d[v++]:p<f?l[p++]:d[v++];return e};e.exports=i},6319:(e,t,r)=>{"use strict";var n=r(8551),o=r(9539);e.exports=function(e,t,r,i){try{return i?t(n(r)[0],r[1]):t(r)}catch(t){o(e,"throw",t)}}},4428:(e,t,r)=>{"use strict";var n=r(8227)("iterator"),o=!1;try{var i=0,a={next:function(){return{done:!!i++}},return:function(){o=!0}};a[n]=function(){return this},Array.from(a,(function(){throw 2}))}catch(e){}e.exports=function(e,t){try{if(!t&&!o)return!1}catch(e){return!1}var r=!1;try{var i={};i[n]=function(){return{next:function(){return{done:r=!0}}}},e(i)}catch(e){}return r}},2195:(e,t,r)=>{"use strict";var n=r(9504),o=n({}.toString),i=n("".slice);e.exports=function(e){return i(o(e),8,-1)}},6955:(e,t,r)=>{"use strict";var n=r(2140),o=r(4901),i=r(2195),a=r(8227)("toStringTag"),s=Object,c="Arguments"===i(function(){return arguments}());e.exports=n?i:function(e){var t,r,n;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=s(e),a))?r:c?i(t):"Object"===(n=i(t))&&o(t.callee)?"Arguments":n}},7740:(e,t,r)=>{"use strict";var n=r(9297),o=r(5031),i=r(7347),a=r(4913);e.exports=function(e,t,r){for(var s=o(t),c=a.f,u=i.f,l=0;l<s.length;l++){var d=s[l];n(e,d)||r&&n(r,d)||c(e,d,u(t,d))}}},2211:(e,t,r)=>{"use strict";var n=r(9039);e.exports=!n((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},2529:e=>{"use strict";e.exports=function(e,t){return{value:e,done:t}}},6699:(e,t,r)=>{"use strict";var n=r(3724),o=r(4913),i=r(6980);e.exports=n?function(e,t,r){return o.f(e,t,i(1,r))}:function(e,t,r){return e[t]=r,e}},6980:e=>{"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},2278:(e,t,r)=>{"use strict";var n=r(3724),o=r(4913),i=r(6980);e.exports=function(e,t,r){n?o.f(e,t,i(0,r)):e[t]=r}},2106:(e,t,r)=>{"use strict";var n=r(283),o=r(4913);e.exports=function(e,t,r){return r.get&&n(r.get,t,{getter:!0}),r.set&&n(r.set,t,{setter:!0}),o.f(e,t,r)}},6840:(e,t,r)=>{"use strict";var n=r(4901),o=r(4913),i=r(283),a=r(9433);e.exports=function(e,t,r,s){s||(s={});var c=s.enumerable,u=void 0!==s.name?s.name:t;if(n(r)&&i(r,u,s),s.global)c?e[t]=r:a(t,r);else{try{s.unsafe?e[t]&&(c=!0):delete e[t]}catch(e){}c?e[t]=r:o.f(e,t,{value:r,enumerable:!1,configurable:!s.nonConfigurable,writable:!s.nonWritable})}return e}},6279:(e,t,r)=>{"use strict";var n=r(6840);e.exports=function(e,t,r){for(var o in t)n(e,o,t[o],r);return e}},9433:(e,t,r)=>{"use strict";var n=r(4576),o=Object.defineProperty;e.exports=function(e,t){try{o(n,e,{value:t,configurable:!0,writable:!0})}catch(r){n[e]=t}return t}},3724:(e,t,r)=>{"use strict";var n=r(9039);e.exports=!n((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))},4055:(e,t,r)=>{"use strict";var n=r(4576),o=r(34),i=n.document,a=o(i)&&o(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},7400:e=>{"use strict";e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},9296:(e,t,r)=>{"use strict";var n=r(4055)("span").classList,o=n&&n.constructor&&n.constructor.prototype;e.exports=o===Object.prototype?void 0:o},7015:(e,t,r)=>{"use strict";var n=r(4576),o=r(9504);e.exports=function(e,t){return o(n[e].prototype[t])}},8727:e=>{"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},4265:(e,t,r)=>{"use strict";var n=r(2839);e.exports=/ipad|iphone|ipod/i.test(n)&&"undefined"!=typeof Pebble},9544:(e,t,r)=>{"use strict";var n=r(2839);e.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(n)},8574:(e,t,r)=>{"use strict";var n=r(4215);e.exports="NODE"===n},7860:(e,t,r)=>{"use strict";var n=r(2839);e.exports=/web0s(?!.*chrome)/i.test(n)},2839:(e,t,r)=>{"use strict";var n=r(4576).navigator,o=n&&n.userAgent;e.exports=o?String(o):""},9519:(e,t,r)=>{"use strict";var n,o,i=r(4576),a=r(2839),s=i.process,c=i.Deno,u=s&&s.versions||c&&c.version,l=u&&u.v8;l&&(o=(n=l.split("."))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!o&&a&&(!(n=a.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=a.match(/Chrome\/(\d+)/))&&(o=+n[1]),e.exports=o},4215:(e,t,r)=>{"use strict";var n=r(4576),o=r(2839),i=r(2195),a=function(e){return o.slice(0,e.length)===e};e.exports=a("Bun/")?"BUN":a("Cloudflare-Workers")?"CLOUDFLARE":a("Deno/")?"DENO":a("Node.js/")?"NODE":n.Bun&&"string"==typeof Bun.version?"BUN":n.Deno&&"object"==typeof Deno.version?"DENO":"process"===i(n.process)?"NODE":n.window&&n.document?"BROWSER":"REST"},6193:(e,t,r)=>{"use strict";var n=r(9504),o=Error,i=n("".replace),a=String(new o("zxcasd").stack),s=/\n\s*at [^:]*:[^\n]*/,c=s.test(a);e.exports=function(e,t){if(c&&"string"==typeof e&&!o.prepareStackTrace)for(;t--;)e=i(e,s,"");return e}},747:(e,t,r)=>{"use strict";var n=r(6699),o=r(6193),i=r(4659),a=Error.captureStackTrace;e.exports=function(e,t,r,s){i&&(a?a(e,t):n(e,"stack",o(r,s)))}},4659:(e,t,r)=>{"use strict";var n=r(9039),o=r(6980);e.exports=!n((function(){var e=new Error("a");return!("stack"in e)||(Object.defineProperty(e,"stack",o(1,7)),7!==e.stack)}))},6518:(e,t,r)=>{"use strict";var n=r(4576),o=r(7347).f,i=r(6699),a=r(6840),s=r(9433),c=r(7740),u=r(2796);e.exports=function(e,t){var r,l,d,f,h,p=e.target,v=e.global,g=e.stat;if(r=v?n:g?n[p]||s(p,{}):n[p]&&n[p].prototype)for(l in t){if(f=t[l],d=e.dontCallGetSet?(h=o(r,l))&&h.value:r[l],!u(v?l:p+(g?".":"#")+l,e.forced)&&void 0!==d){if(typeof f==typeof d)continue;c(f,d)}(e.sham||d&&d.sham)&&i(f,"sham",!0),a(r,l,f,e)}}},9039:e=>{"use strict";e.exports=function(e){try{return!!e()}catch(e){return!0}}},8745:(e,t,r)=>{"use strict";var n=r(616),o=Function.prototype,i=o.apply,a=o.call;e.exports="object"==typeof Reflect&&Reflect.apply||(n?a.bind(i):function(){return a.apply(i,arguments)})},6080:(e,t,r)=>{"use strict";var n=r(7476),o=r(9306),i=r(616),a=n(n.bind);e.exports=function(e,t){return o(e),void 0===t?e:i?a(e,t):function(){return e.apply(t,arguments)}}},616:(e,t,r)=>{"use strict";var n=r(9039);e.exports=!n((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},9565:(e,t,r)=>{"use strict";var n=r(616),o=Function.prototype.call;e.exports=n?o.bind(o):function(){return o.apply(o,arguments)}},350:(e,t,r)=>{"use strict";var n=r(3724),o=r(9297),i=Function.prototype,a=n&&Object.getOwnPropertyDescriptor,s=o(i,"name"),c=s&&"something"===function(){}.name,u=s&&(!n||n&&a(i,"name").configurable);e.exports={EXISTS:s,PROPER:c,CONFIGURABLE:u}},6706:(e,t,r)=>{"use strict";var n=r(9504),o=r(9306);e.exports=function(e,t,r){try{return n(o(Object.getOwnPropertyDescriptor(e,t)[r]))}catch(e){}}},7476:(e,t,r)=>{"use strict";var n=r(2195),o=r(9504);e.exports=function(e){if("Function"===n(e))return o(e)}},9504:(e,t,r)=>{"use strict";var n=r(616),o=Function.prototype,i=o.call,a=n&&o.bind.bind(i,i);e.exports=n?a:function(e){return function(){return i.apply(e,arguments)}}},7751:(e,t,r)=>{"use strict";var n=r(4576),o=r(4901);e.exports=function(e,t){return arguments.length<2?(r=n[e],o(r)?r:void 0):n[e]&&n[e][t];var r}},851:(e,t,r)=>{"use strict";var n=r(6955),o=r(5966),i=r(4117),a=r(6269),s=r(8227)("iterator");e.exports=function(e){if(!i(e))return o(e,s)||o(e,"@@iterator")||a[n(e)]}},81:(e,t,r)=>{"use strict";var n=r(9565),o=r(9306),i=r(8551),a=r(6823),s=r(851),c=TypeError;e.exports=function(e,t){var r=arguments.length<2?s(e):t;if(o(r))return i(n(r,e));throw new c(a(e)+" is not iterable")}},5966:(e,t,r)=>{"use strict";var n=r(9306),o=r(4117);e.exports=function(e,t){var r=e[t];return o(r)?void 0:n(r)}},4576:function(e,t,r){"use strict";var n=function(e){return e&&e.Math===Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof r.g&&r.g)||n("object"==typeof this&&this)||function(){return this}()||Function("return this")()},9297:(e,t,r)=>{"use strict";var n=r(9504),o=r(8981),i=n({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return i(o(e),t)}},421:e=>{"use strict";e.exports={}},3138:e=>{"use strict";e.exports=function(e,t){try{1===arguments.length?console.error(e):console.error(e,t)}catch(e){}}},397:(e,t,r)=>{"use strict";var n=r(7751);e.exports=n("document","documentElement")},5917:(e,t,r)=>{"use strict";var n=r(3724),o=r(9039),i=r(4055);e.exports=!n&&!o((function(){return 7!==Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},7055:(e,t,r)=>{"use strict";var n=r(9504),o=r(9039),i=r(2195),a=Object,s=n("".split);e.exports=o((function(){return!a("z").propertyIsEnumerable(0)}))?function(e){return"String"===i(e)?s(e,""):a(e)}:a},3706:(e,t,r)=>{"use strict";var n=r(9504),o=r(4901),i=r(7629),a=n(Function.toString);o(i.inspectSource)||(i.inspectSource=function(e){return a(e)}),e.exports=i.inspectSource},7584:(e,t,r)=>{"use strict";var n=r(34),o=r(6699);e.exports=function(e,t){n(t)&&"cause"in t&&o(e,"cause",t.cause)}},1181:(e,t,r)=>{"use strict";var n,o,i,a=r(8622),s=r(4576),c=r(34),u=r(6699),l=r(9297),d=r(7629),f=r(6119),h=r(421),p="Object already initialized",v=s.TypeError,g=s.WeakMap;if(a||d.state){var m=d.state||(d.state=new g);m.get=m.get,m.has=m.has,m.set=m.set,n=function(e,t){if(m.has(e))throw new v(p);return t.facade=e,m.set(e,t),t},o=function(e){return m.get(e)||{}},i=function(e){return m.has(e)}}else{var y=f("state");h[y]=!0,n=function(e,t){if(l(e,y))throw new v(p);return t.facade=e,u(e,y,t),t},o=function(e){return l(e,y)?e[y]:{}},i=function(e){return l(e,y)}}e.exports={set:n,get:o,has:i,enforce:function(e){return i(e)?o(e):n(e,{})},getterFor:function(e){return function(t){var r;if(!c(t)||(r=o(t)).type!==e)throw new v("Incompatible receiver, "+e+" required");return r}}}},4209:(e,t,r)=>{"use strict";var n=r(8227),o=r(6269),i=n("iterator"),a=Array.prototype;e.exports=function(e){return void 0!==e&&(o.Array===e||a[i]===e)}},4901:e=>{"use strict";var t="object"==typeof document&&document.all;e.exports=void 0===t&&void 0!==t?function(e){return"function"==typeof e||e===t}:function(e){return"function"==typeof e}},3517:(e,t,r)=>{"use strict";var n=r(9504),o=r(9039),i=r(4901),a=r(6955),s=r(7751),c=r(3706),u=function(){},l=s("Reflect","construct"),d=/^\s*(?:class|function)\b/,f=n(d.exec),h=!d.test(u),p=function(e){if(!i(e))return!1;try{return l(u,[],e),!0}catch(e){return!1}},v=function(e){if(!i(e))return!1;switch(a(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return h||!!f(d,c(e))}catch(e){return!0}};v.sham=!0,e.exports=!l||o((function(){var e;return p(p.call)||!p(Object)||!p((function(){e=!0}))||e}))?v:p},2796:(e,t,r)=>{"use strict";var n=r(9039),o=r(4901),i=/#|\.prototype\./,a=function(e,t){var r=c[s(e)];return r===l||r!==u&&(o(t)?n(t):!!t)},s=a.normalize=function(e){return String(e).replace(i,".").toLowerCase()},c=a.data={},u=a.NATIVE="N",l=a.POLYFILL="P";e.exports=a},4117:e=>{"use strict";e.exports=function(e){return null==e}},34:(e,t,r)=>{"use strict";var n=r(4901);e.exports=function(e){return"object"==typeof e?null!==e:n(e)}},3925:(e,t,r)=>{"use strict";var n=r(34);e.exports=function(e){return n(e)||null===e}},6395:e=>{"use strict";e.exports=!1},757:(e,t,r)=>{"use strict";var n=r(7751),o=r(4901),i=r(1625),a=r(7040),s=Object;e.exports=a?function(e){return"symbol"==typeof e}:function(e){var t=n("Symbol");return o(t)&&i(t.prototype,s(e))}},2652:(e,t,r)=>{"use strict";var n=r(6080),o=r(9565),i=r(8551),a=r(6823),s=r(4209),c=r(6198),u=r(1625),l=r(81),d=r(851),f=r(9539),h=TypeError,p=function(e,t){this.stopped=e,this.result=t},v=p.prototype;e.exports=function(e,t,r){var g,m,y,b,w,E,C,S=r&&r.that,O=!(!r||!r.AS_ENTRIES),_=!(!r||!r.IS_RECORD),k=!(!r||!r.IS_ITERATOR),P=!(!r||!r.INTERRUPTED),A=n(t,S),M=function(e){return g&&f(g,"normal",e),new p(!0,e)},x=function(e){return O?(i(e),P?A(e[0],e[1],M):A(e[0],e[1])):P?A(e,M):A(e)};if(_)g=e.iterator;else if(k)g=e;else{if(!(m=d(e)))throw new h(a(e)+" is not iterable");if(s(m)){for(y=0,b=c(e);b>y;y++)if((w=x(e[y]))&&u(v,w))return w;return new p(!1)}g=l(e,m)}for(E=_?e.next:g.next;!(C=o(E,g)).done;){try{w=x(C.value)}catch(e){f(g,"throw",e)}if("object"==typeof w&&w&&u(v,w))return w}return new p(!1)}},9539:(e,t,r)=>{"use strict";var n=r(9565),o=r(8551),i=r(5966);e.exports=function(e,t,r){var a,s;o(e);try{if(!(a=i(e,"return"))){if("throw"===t)throw r;return r}a=n(a,e)}catch(e){s=!0,a=e}if("throw"===t)throw r;if(s)throw a;return o(a),r}},3994:(e,t,r)=>{"use strict";var n=r(7657).IteratorPrototype,o=r(2360),i=r(6980),a=r(687),s=r(6269),c=function(){return this};e.exports=function(e,t,r,u){var l=t+" Iterator";return e.prototype=o(n,{next:i(+!u,r)}),a(e,l,!1,!0),s[l]=c,e}},1088:(e,t,r)=>{"use strict";var n=r(6518),o=r(9565),i=r(6395),a=r(350),s=r(4901),c=r(3994),u=r(2787),l=r(2967),d=r(687),f=r(6699),h=r(6840),p=r(8227),v=r(6269),g=r(7657),m=a.PROPER,y=a.CONFIGURABLE,b=g.IteratorPrototype,w=g.BUGGY_SAFARI_ITERATORS,E=p("iterator"),C="keys",S="values",O="entries",_=function(){return this};e.exports=function(e,t,r,a,p,g,k){c(r,t,a);var P,A,M,x=function(e){if(e===p&&j)return j;if(!w&&e&&e in L)return L[e];switch(e){case C:case S:case O:return function(){return new r(this,e)}}return function(){return new r(this)}},T=t+" Iterator",R=!1,L=e.prototype,F=L[E]||L["@@iterator"]||p&&L[p],j=!w&&F||x(p),I="Array"===t&&L.entries||F;if(I&&(P=u(I.call(new e)))!==Object.prototype&&P.next&&(i||u(P)===b||(l?l(P,b):s(P[E])||h(P,E,_)),d(P,T,!0,!0),i&&(v[T]=_)),m&&p===S&&F&&F.name!==S&&(!i&&y?f(L,"name",S):(R=!0,j=function(){return o(F,this)})),p)if(A={values:x(S),keys:g?j:x(C),entries:x(O)},k)for(M in A)(w||R||!(M in L))&&h(L,M,A[M]);else n({target:t,proto:!0,forced:w||R},A);return i&&!k||L[E]===j||h(L,E,j,{name:p}),v[t]=j,A}},7657:(e,t,r)=>{"use strict";var n,o,i,a=r(9039),s=r(4901),c=r(34),u=r(2360),l=r(2787),d=r(6840),f=r(8227),h=r(6395),p=f("iterator"),v=!1;[].keys&&("next"in(i=[].keys())?(o=l(l(i)))!==Object.prototype&&(n=o):v=!0),!c(n)||a((function(){var e={};return n[p].call(e)!==e}))?n={}:h&&(n=u(n)),s(n[p])||d(n,p,(function(){return this})),e.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:v}},6269:e=>{"use strict";e.exports={}},6198:(e,t,r)=>{"use strict";var n=r(8014);e.exports=function(e){return n(e.length)}},283:(e,t,r)=>{"use strict";var n=r(9504),o=r(9039),i=r(4901),a=r(9297),s=r(3724),c=r(350).CONFIGURABLE,u=r(3706),l=r(1181),d=l.enforce,f=l.get,h=String,p=Object.defineProperty,v=n("".slice),g=n("".replace),m=n([].join),y=s&&!o((function(){return 8!==p((function(){}),"length",{value:8}).length})),b=String(String).split("String"),w=e.exports=function(e,t,r){"Symbol("===v(h(t),0,7)&&(t="["+g(h(t),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),r&&r.getter&&(t="get "+t),r&&r.setter&&(t="set "+t),(!a(e,"name")||c&&e.name!==t)&&(s?p(e,"name",{value:t,configurable:!0}):e.name=t),y&&r&&a(r,"arity")&&e.length!==r.arity&&p(e,"length",{value:r.arity});try{r&&a(r,"constructor")&&r.constructor?s&&p(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var n=d(e);return a(n,"source")||(n.source=m(b,"string"==typeof t?t:"")),e};Function.prototype.toString=w((function(){return i(this)&&f(this).source||u(this)}),"toString")},741:e=>{"use strict";var t=Math.ceil,r=Math.floor;e.exports=Math.trunc||function(e){var n=+e;return(n>0?r:t)(n)}},1955:(e,t,r)=>{"use strict";var n,o,i,a,s,c=r(4576),u=r(3389),l=r(6080),d=r(9225).set,f=r(8265),h=r(9544),p=r(4265),v=r(7860),g=r(8574),m=c.MutationObserver||c.WebKitMutationObserver,y=c.document,b=c.process,w=c.Promise,E=u("queueMicrotask");if(!E){var C=new f,S=function(){var e,t;for(g&&(e=b.domain)&&e.exit();t=C.get();)try{t()}catch(e){throw C.head&&n(),e}e&&e.enter()};h||g||v||!m||!y?!p&&w&&w.resolve?((a=w.resolve(void 0)).constructor=w,s=l(a.then,a),n=function(){s(S)}):g?n=function(){b.nextTick(S)}:(d=l(d,c),n=function(){d(S)}):(o=!0,i=y.createTextNode(""),new m(S).observe(i,{characterData:!0}),n=function(){i.data=o=!o}),E=function(e){C.head||n(),C.add(e)}}e.exports=E},6043:(e,t,r)=>{"use strict";var n=r(9306),o=TypeError,i=function(e){var t,r;this.promise=new e((function(e,n){if(void 0!==t||void 0!==r)throw new o("Bad Promise constructor");t=e,r=n})),this.resolve=n(t),this.reject=n(r)};e.exports.f=function(e){return new i(e)}},2603:(e,t,r)=>{"use strict";var n=r(655);e.exports=function(e,t){return void 0===e?arguments.length<2?"":t:n(e)}},4213:(e,t,r)=>{"use strict";var n=r(3724),o=r(9504),i=r(9565),a=r(9039),s=r(1072),c=r(3717),u=r(8773),l=r(8981),d=r(7055),f=Object.assign,h=Object.defineProperty,p=o([].concat);e.exports=!f||a((function(){if(n&&1!==f({b:1},f(h({},"a",{enumerable:!0,get:function(){h(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},r=Symbol("assign detection"),o="abcdefghijklmnopqrst";return e[r]=7,o.split("").forEach((function(e){t[e]=e})),7!==f({},e)[r]||s(f({},t)).join("")!==o}))?function(e,t){for(var r=l(e),o=arguments.length,a=1,f=c.f,h=u.f;o>a;)for(var v,g=d(arguments[a++]),m=f?p(s(g),f(g)):s(g),y=m.length,b=0;y>b;)v=m[b++],n&&!i(h,g,v)||(r[v]=g[v]);return r}:f},2360:(e,t,r)=>{"use strict";var n,o=r(8551),i=r(6801),a=r(8727),s=r(421),c=r(397),u=r(4055),l=r(6119),d="prototype",f="script",h=l("IE_PROTO"),p=function(){},v=function(e){return"<"+f+">"+e+"</"+f+">"},g=function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t},m=function(){try{n=new ActiveXObject("htmlfile")}catch(e){}var e,t,r;m="undefined"!=typeof document?document.domain&&n?g(n):(t=u("iframe"),r="java"+f+":",t.style.display="none",c.appendChild(t),t.src=String(r),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F):g(n);for(var o=a.length;o--;)delete m[d][a[o]];return m()};s[h]=!0,e.exports=Object.create||function(e,t){var r;return null!==e?(p[d]=o(e),r=new p,p[d]=null,r[h]=e):r=m(),void 0===t?r:i.f(r,t)}},6801:(e,t,r)=>{"use strict";var n=r(3724),o=r(8686),i=r(4913),a=r(8551),s=r(5397),c=r(1072);t.f=n&&!o?Object.defineProperties:function(e,t){a(e);for(var r,n=s(t),o=c(t),u=o.length,l=0;u>l;)i.f(e,r=o[l++],n[r]);return e}},4913:(e,t,r)=>{"use strict";var n=r(3724),o=r(5917),i=r(8686),a=r(8551),s=r(6969),c=TypeError,u=Object.defineProperty,l=Object.getOwnPropertyDescriptor,d="enumerable",f="configurable",h="writable";t.f=n?i?function(e,t,r){if(a(e),t=s(t),a(r),"function"==typeof e&&"prototype"===t&&"value"in r&&h in r&&!r[h]){var n=l(e,t);n&&n[h]&&(e[t]=r.value,r={configurable:f in r?r[f]:n[f],enumerable:d in r?r[d]:n[d],writable:!1})}return u(e,t,r)}:u:function(e,t,r){if(a(e),t=s(t),a(r),o)try{return u(e,t,r)}catch(e){}if("get"in r||"set"in r)throw new c("Accessors not supported");return"value"in r&&(e[t]=r.value),e}},7347:(e,t,r)=>{"use strict";var n=r(3724),o=r(9565),i=r(8773),a=r(6980),s=r(5397),c=r(6969),u=r(9297),l=r(5917),d=Object.getOwnPropertyDescriptor;t.f=n?d:function(e,t){if(e=s(e),t=c(t),l)try{return d(e,t)}catch(e){}if(u(e,t))return a(!o(i.f,e,t),e[t])}},8480:(e,t,r)=>{"use strict";var n=r(1828),o=r(8727).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return n(e,o)}},3717:(e,t)=>{"use strict";t.f=Object.getOwnPropertySymbols},2787:(e,t,r)=>{"use strict";var n=r(9297),o=r(4901),i=r(8981),a=r(6119),s=r(2211),c=a("IE_PROTO"),u=Object,l=u.prototype;e.exports=s?u.getPrototypeOf:function(e){var t=i(e);if(n(t,c))return t[c];var r=t.constructor;return o(r)&&t instanceof r?r.prototype:t instanceof u?l:null}},1625:(e,t,r)=>{"use strict";var n=r(9504);e.exports=n({}.isPrototypeOf)},1828:(e,t,r)=>{"use strict";var n=r(9504),o=r(9297),i=r(5397),a=r(9617).indexOf,s=r(421),c=n([].push);e.exports=function(e,t){var r,n=i(e),u=0,l=[];for(r in n)!o(s,r)&&o(n,r)&&c(l,r);for(;t.length>u;)o(n,r=t[u++])&&(~a(l,r)||c(l,r));return l}},1072:(e,t,r)=>{"use strict";var n=r(1828),o=r(8727);e.exports=Object.keys||function(e){return n(e,o)}},8773:(e,t)=>{"use strict";var r={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,o=n&&!r.call({1:2},1);t.f=o?function(e){var t=n(this,e);return!!t&&t.enumerable}:r},2967:(e,t,r)=>{"use strict";var n=r(6706),o=r(34),i=r(7750),a=r(3506);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,r={};try{(e=n(Object.prototype,"__proto__","set"))(r,[]),t=r instanceof Array}catch(e){}return function(r,n){return i(r),a(n),o(r)?(t?e(r,n):r.__proto__=n,r):r}}():void 0)},3179:(e,t,r)=>{"use strict";var n=r(2140),o=r(6955);e.exports=n?{}.toString:function(){return"[object "+o(this)+"]"}},4270:(e,t,r)=>{"use strict";var n=r(9565),o=r(4901),i=r(34),a=TypeError;e.exports=function(e,t){var r,s;if("string"===t&&o(r=e.toString)&&!i(s=n(r,e)))return s;if(o(r=e.valueOf)&&!i(s=n(r,e)))return s;if("string"!==t&&o(r=e.toString)&&!i(s=n(r,e)))return s;throw new a("Can't convert object to primitive value")}},5031:(e,t,r)=>{"use strict";var n=r(7751),o=r(9504),i=r(8480),a=r(3717),s=r(8551),c=o([].concat);e.exports=n("Reflect","ownKeys")||function(e){var t=i.f(s(e)),r=a.f;return r?c(t,r(e)):t}},9167:(e,t,r)=>{"use strict";var n=r(4576);e.exports=n},1103:e=>{"use strict";e.exports=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}}},916:(e,t,r)=>{"use strict";var n=r(4576),o=r(550),i=r(4901),a=r(2796),s=r(3706),c=r(8227),u=r(4215),l=r(6395),d=r(9519),f=o&&o.prototype,h=c("species"),p=!1,v=i(n.PromiseRejectionEvent),g=a("Promise",(function(){var e=s(o),t=e!==String(o);if(!t&&66===d)return!0;if(l&&(!f.catch||!f.finally))return!0;if(!d||d<51||!/native code/.test(e)){var r=new o((function(e){e(1)})),n=function(e){e((function(){}),(function(){}))};if((r.constructor={})[h]=n,!(p=r.then((function(){}))instanceof n))return!0}return!(t||"BROWSER"!==u&&"DENO"!==u||v)}));e.exports={CONSTRUCTOR:g,REJECTION_EVENT:v,SUBCLASSING:p}},550:(e,t,r)=>{"use strict";var n=r(4576);e.exports=n.Promise},3438:(e,t,r)=>{"use strict";var n=r(8551),o=r(34),i=r(6043);e.exports=function(e,t){if(n(e),o(t)&&t.constructor===e)return t;var r=i.f(e);return(0,r.resolve)(t),r.promise}},537:(e,t,r)=>{"use strict";var n=r(550),o=r(4428),i=r(916).CONSTRUCTOR;e.exports=i||!o((function(e){n.all(e).then(void 0,(function(){}))}))},8265:e=>{"use strict";var t=function(){this.head=null,this.tail=null};t.prototype={add:function(e){var t={item:e,next:null},r=this.tail;r?r.next=t:this.head=t,this.tail=t},get:function(){var e=this.head;if(e)return null===(this.head=e.next)&&(this.tail=null),e.item}},e.exports=t},7750:(e,t,r)=>{"use strict";var n=r(4117),o=TypeError;e.exports=function(e){if(n(e))throw new o("Can't call method on "+e);return e}},3389:(e,t,r)=>{"use strict";var n=r(4576),o=r(3724),i=Object.getOwnPropertyDescriptor;e.exports=function(e){if(!o)return n[e];var t=i(n,e);return t&&t.value}},7633:(e,t,r)=>{"use strict";var n=r(7751),o=r(2106),i=r(8227),a=r(3724),s=i("species");e.exports=function(e){var t=n(e);a&&t&&!t[s]&&o(t,s,{configurable:!0,get:function(){return this}})}},687:(e,t,r)=>{"use strict";var n=r(4913).f,o=r(9297),i=r(8227)("toStringTag");e.exports=function(e,t,r){e&&!r&&(e=e.prototype),e&&!o(e,i)&&n(e,i,{configurable:!0,value:t})}},6119:(e,t,r)=>{"use strict";var n=r(5745),o=r(3392),i=n("keys");e.exports=function(e){return i[e]||(i[e]=o(e))}},7629:(e,t,r)=>{"use strict";var n=r(6395),o=r(4576),i=r(9433),a="__core-js_shared__",s=e.exports=o[a]||i(a,{});(s.versions||(s.versions=[])).push({version:"3.39.0",mode:n?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.39.0/LICENSE",source:"https://github.com/zloirock/core-js"})},5745:(e,t,r)=>{"use strict";var n=r(7629);e.exports=function(e,t){return n[e]||(n[e]=t||{})}},2293:(e,t,r)=>{"use strict";var n=r(8551),o=r(5548),i=r(4117),a=r(8227)("species");e.exports=function(e,t){var r,s=n(e).constructor;return void 0===s||i(r=n(s)[a])?t:o(r)}},8183:(e,t,r)=>{"use strict";var n=r(9504),o=r(1291),i=r(655),a=r(7750),s=n("".charAt),c=n("".charCodeAt),u=n("".slice),l=function(e){return function(t,r){var n,l,d=i(a(t)),f=o(r),h=d.length;return f<0||f>=h?e?"":void 0:(n=c(d,f))<55296||n>56319||f+1===h||(l=c(d,f+1))<56320||l>57343?e?s(d,f):n:e?u(d,f,f+2):l-56320+(n-55296<<10)+65536}};e.exports={codeAt:l(!1),charAt:l(!0)}},6098:(e,t,r)=>{"use strict";var n=r(9504),o=2147483647,i=/[^\0-\u007E]/,a=/[.\u3002\uFF0E\uFF61]/g,s="Overflow: input needs wider integers to process",c=RangeError,u=n(a.exec),l=Math.floor,d=String.fromCharCode,f=n("".charCodeAt),h=n([].join),p=n([].push),v=n("".replace),g=n("".split),m=n("".toLowerCase),y=function(e){return e+22+75*(e<26)},b=function(e,t,r){var n=0;for(e=r?l(e/700):e>>1,e+=l(e/t);e>455;)e=l(e/35),n+=36;return l(n+36*e/(e+38))},w=function(e){var t=[];e=function(e){for(var t=[],r=0,n=e.length;r<n;){var o=f(e,r++);if(o>=55296&&o<=56319&&r<n){var i=f(e,r++);56320==(64512&i)?p(t,((1023&o)<<10)+(1023&i)+65536):(p(t,o),r--)}else p(t,o)}return t}(e);var r,n,i=e.length,a=128,u=0,v=72;for(r=0;r<e.length;r++)(n=e[r])<128&&p(t,d(n));var g=t.length,m=g;for(g&&p(t,"-");m<i;){var w=o;for(r=0;r<e.length;r++)(n=e[r])>=a&&n<w&&(w=n);var E=m+1;if(w-a>l((o-u)/E))throw new c(s);for(u+=(w-a)*E,a=w,r=0;r<e.length;r++){if((n=e[r])<a&&++u>o)throw new c(s);if(n===a){for(var C=u,S=36;;){var O=S<=v?1:S>=v+26?26:S-v;if(C<O)break;var _=C-O,k=36-O;p(t,d(y(O+_%k))),C=l(_/k),S+=36}p(t,d(y(C))),v=b(u,E,m===g),u=0,m++}}u++,a++}return h(t,"")};e.exports=function(e){var t,r,n=[],o=g(v(m(e),a,"."),".");for(t=0;t<o.length;t++)r=o[t],p(n,u(i,r)?"xn--"+w(r):r);return h(n,".")}},4495:(e,t,r)=>{"use strict";var n=r(9519),o=r(9039),i=r(4576).String;e.exports=!!Object.getOwnPropertySymbols&&!o((function(){var e=Symbol("symbol detection");return!i(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},9225:(e,t,r)=>{"use strict";var n,o,i,a,s=r(4576),c=r(8745),u=r(6080),l=r(4901),d=r(9297),f=r(9039),h=r(397),p=r(7680),v=r(4055),g=r(2812),m=r(9544),y=r(8574),b=s.setImmediate,w=s.clearImmediate,E=s.process,C=s.Dispatch,S=s.Function,O=s.MessageChannel,_=s.String,k=0,P={},A="onreadystatechange";f((function(){n=s.location}));var M=function(e){if(d(P,e)){var t=P[e];delete P[e],t()}},x=function(e){return function(){M(e)}},T=function(e){M(e.data)},R=function(e){s.postMessage(_(e),n.protocol+"//"+n.host)};b&&w||(b=function(e){g(arguments.length,1);var t=l(e)?e:S(e),r=p(arguments,1);return P[++k]=function(){c(t,void 0,r)},o(k),k},w=function(e){delete P[e]},y?o=function(e){E.nextTick(x(e))}:C&&C.now?o=function(e){C.now(x(e))}:O&&!m?(a=(i=new O).port2,i.port1.onmessage=T,o=u(a.postMessage,a)):s.addEventListener&&l(s.postMessage)&&!s.importScripts&&n&&"file:"!==n.protocol&&!f(R)?(o=R,s.addEventListener("message",T,!1)):o=A in v("script")?function(e){h.appendChild(v("script"))[A]=function(){h.removeChild(this),M(e)}}:function(e){setTimeout(x(e),0)}),e.exports={set:b,clear:w}},5610:(e,t,r)=>{"use strict";var n=r(1291),o=Math.max,i=Math.min;e.exports=function(e,t){var r=n(e);return r<0?o(r+t,0):i(r,t)}},5397:(e,t,r)=>{"use strict";var n=r(7055),o=r(7750);e.exports=function(e){return n(o(e))}},1291:(e,t,r)=>{"use strict";var n=r(741);e.exports=function(e){var t=+e;return t!=t||0===t?0:n(t)}},8014:(e,t,r)=>{"use strict";var n=r(1291),o=Math.min;e.exports=function(e){var t=n(e);return t>0?o(t,9007199254740991):0}},8981:(e,t,r)=>{"use strict";var n=r(7750),o=Object;e.exports=function(e){return o(n(e))}},2777:(e,t,r)=>{"use strict";var n=r(9565),o=r(34),i=r(757),a=r(5966),s=r(4270),c=r(8227),u=TypeError,l=c("toPrimitive");e.exports=function(e,t){if(!o(e)||i(e))return e;var r,c=a(e,l);if(c){if(void 0===t&&(t="default"),r=n(c,e,t),!o(r)||i(r))return r;throw new u("Can't convert object to primitive value")}return void 0===t&&(t="number"),s(e,t)}},6969:(e,t,r)=>{"use strict";var n=r(2777),o=r(757);e.exports=function(e){var t=n(e,"string");return o(t)?t:t+""}},2140:(e,t,r)=>{"use strict";var n={};n[r(8227)("toStringTag")]="z",e.exports="[object z]"===String(n)},655:(e,t,r)=>{"use strict";var n=r(6955),o=String;e.exports=function(e){if("Symbol"===n(e))throw new TypeError("Cannot convert a Symbol value to a string");return o(e)}},6823:e=>{"use strict";var t=String;e.exports=function(e){try{return t(e)}catch(e){return"Object"}}},3392:(e,t,r)=>{"use strict";var n=r(9504),o=0,i=Math.random(),a=n(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+a(++o+i,36)}},7416:(e,t,r)=>{"use strict";var n=r(9039),o=r(8227),i=r(3724),a=r(6395),s=o("iterator");e.exports=!n((function(){var e=new URL("b?a=1&b=2&c=3","https://a"),t=e.searchParams,r=new URLSearchParams("a=1&a=2&b=3"),n="";return e.pathname="c%20d",t.forEach((function(e,r){t.delete("b"),n+=r+e})),r.delete("a",2),r.delete("b",void 0),a&&(!e.toJSON||!r.has("a",1)||r.has("a",2)||!r.has("a",void 0)||r.has("b"))||!t.size&&(a||!i)||!t.sort||"https://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[s]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("https://тест").host||"#%D0%B1"!==new URL("https://a#б").hash||"a1c3"!==n||"x"!==new URL("https://x",void 0).host}))},7040:(e,t,r)=>{"use strict";var n=r(4495);e.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},8686:(e,t,r)=>{"use strict";var n=r(3724),o=r(9039);e.exports=n&&o((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},2812:e=>{"use strict";var t=TypeError;e.exports=function(e,r){if(e<r)throw new t("Not enough arguments");return e}},8622:(e,t,r)=>{"use strict";var n=r(4576),o=r(4901),i=n.WeakMap;e.exports=o(i)&&/native code/.test(String(i))},8227:(e,t,r)=>{"use strict";var n=r(4576),o=r(5745),i=r(9297),a=r(3392),s=r(4495),c=r(7040),u=n.Symbol,l=o("wks"),d=c?u.for||u:u&&u.withoutSetter||a;e.exports=function(e){return i(l,e)||(l[e]=s&&i(u,e)?u[e]:d("Symbol."+e)),l[e]}},7145:(e,t,r)=>{"use strict";var n=r(6518),o=r(1625),i=r(2787),a=r(2967),s=r(7740),c=r(2360),u=r(6699),l=r(6980),d=r(7584),f=r(747),h=r(2652),p=r(2603),v=r(8227)("toStringTag"),g=Error,m=[].push,y=function(e,t){var r,n=o(b,this);a?r=a(new g,n?i(this):b):(r=n?this:c(b),u(r,v,"Error")),void 0!==t&&u(r,"message",p(t)),f(r,y,r.stack,1),arguments.length>2&&d(r,arguments[2]);var s=[];return h(e,m,{that:s}),u(r,"errors",s),r};a?a(y,g):s(y,g,{name:!0});var b=y.prototype=c(g.prototype,{constructor:l(1,y),message:l(1,""),name:l(1,"AggregateError")});n({global:!0,constructor:!0,arity:2},{AggregateError:y})},67:(e,t,r)=>{"use strict";r(7145)},4423:(e,t,r)=>{"use strict";var n=r(6518),o=r(9617).includes,i=r(9039),a=r(6469);n({target:"Array",proto:!0,forced:i((function(){return!Array(1).includes()}))},{includes:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}}),a("includes")},3792:(e,t,r)=>{"use strict";var n=r(5397),o=r(6469),i=r(6269),a=r(1181),s=r(4913).f,c=r(1088),u=r(2529),l=r(6395),d=r(3724),f="Array Iterator",h=a.set,p=a.getterFor(f);e.exports=c(Array,"Array",(function(e,t){h(this,{type:f,target:n(e),index:0,kind:t})}),(function(){var e=p(this),t=e.target,r=e.index++;if(!t||r>=t.length)return e.target=null,u(void 0,!0);switch(e.kind){case"keys":return u(r,!1);case"values":return u(t[r],!1)}return u([r,t[r]],!1)}),"values");var v=i.Arguments=i.Array;if(o("keys"),o("values"),o("entries"),!l&&d&&"values"!==v.name)try{s(v,"name",{value:"values"})}catch(e){}},9085:(e,t,r)=>{"use strict";var n=r(6518),o=r(4213);n({target:"Object",stat:!0,arity:2,forced:Object.assign!==o},{assign:o})},6099:(e,t,r)=>{"use strict";var n=r(2140),o=r(6840),i=r(3179);n||o(Object.prototype,"toString",i,{unsafe:!0})},6167:(e,t,r)=>{"use strict";var n=r(6518),o=r(9565),i=r(9306),a=r(6043),s=r(1103),c=r(2652);n({target:"Promise",stat:!0,forced:r(537)},{allSettled:function(e){var t=this,r=a.f(t),n=r.resolve,u=r.reject,l=s((function(){var r=i(t.resolve),a=[],s=0,u=1;c(e,(function(e){var i=s++,c=!1;u++,o(r,t,e).then((function(e){c||(c=!0,a[i]={status:"fulfilled",value:e},--u||n(a))}),(function(e){c||(c=!0,a[i]={status:"rejected",reason:e},--u||n(a))}))})),--u||n(a)}));return l.error&&u(l.value),r.promise}})},6499:(e,t,r)=>{"use strict";var n=r(6518),o=r(9565),i=r(9306),a=r(6043),s=r(1103),c=r(2652);n({target:"Promise",stat:!0,forced:r(537)},{all:function(e){var t=this,r=a.f(t),n=r.resolve,u=r.reject,l=s((function(){var r=i(t.resolve),a=[],s=0,l=1;c(e,(function(e){var i=s++,c=!1;l++,o(r,t,e).then((function(e){c||(c=!0,a[i]=e,--l||n(a))}),u)})),--l||n(a)}));return l.error&&u(l.value),r.promise}})},3518:(e,t,r)=>{"use strict";var n=r(6518),o=r(9565),i=r(9306),a=r(7751),s=r(6043),c=r(1103),u=r(2652),l=r(537),d="No one promise resolved";n({target:"Promise",stat:!0,forced:l},{any:function(e){var t=this,r=a("AggregateError"),n=s.f(t),l=n.resolve,f=n.reject,h=c((function(){var n=i(t.resolve),a=[],s=0,c=1,h=!1;u(e,(function(e){var i=s++,u=!1;c++,o(n,t,e).then((function(e){u||h||(h=!0,l(e))}),(function(e){u||h||(u=!0,a[i]=e,--c||f(new r(a,d)))}))})),--c||f(new r(a,d))}));return h.error&&f(h.value),n.promise}})},2003:(e,t,r)=>{"use strict";var n=r(6518),o=r(6395),i=r(916).CONSTRUCTOR,a=r(550),s=r(7751),c=r(4901),u=r(6840),l=a&&a.prototype;if(n({target:"Promise",proto:!0,forced:i,real:!0},{catch:function(e){return this.then(void 0,e)}}),!o&&c(a)){var d=s("Promise").prototype.catch;l.catch!==d&&u(l,"catch",d,{unsafe:!0})}},436:(e,t,r)=>{"use strict";var n,o,i,a=r(6518),s=r(6395),c=r(8574),u=r(4576),l=r(9565),d=r(6840),f=r(2967),h=r(687),p=r(7633),v=r(9306),g=r(4901),m=r(34),y=r(679),b=r(2293),w=r(9225).set,E=r(1955),C=r(3138),S=r(1103),O=r(8265),_=r(1181),k=r(550),P=r(916),A=r(6043),M="Promise",x=P.CONSTRUCTOR,T=P.REJECTION_EVENT,R=P.SUBCLASSING,L=_.getterFor(M),F=_.set,j=k&&k.prototype,I=k,D=j,B=u.TypeError,H=u.document,U=u.process,N=A.f,V=N,G=!!(H&&H.createEvent&&u.dispatchEvent),z="unhandledrejection",K=function(e){var t;return!(!m(e)||!g(t=e.then))&&t},q=function(e,t){var r,n,o,i=t.value,a=1===t.state,s=a?e.ok:e.fail,c=e.resolve,u=e.reject,d=e.domain;try{s?(a||(2===t.rejection&&$(t),t.rejection=1),!0===s?r=i:(d&&d.enter(),r=s(i),d&&(d.exit(),o=!0)),r===e.promise?u(new B("Promise-chain cycle")):(n=K(r))?l(n,r,c,u):c(r)):u(i)}catch(e){d&&!o&&d.exit(),u(e)}},W=function(e,t){e.notified||(e.notified=!0,E((function(){for(var r,n=e.reactions;r=n.get();)q(r,e);e.notified=!1,t&&!e.rejection&&Y(e)})))},J=function(e,t,r){var n,o;G?((n=H.createEvent("Event")).promise=t,n.reason=r,n.initEvent(e,!1,!0),u.dispatchEvent(n)):n={promise:t,reason:r},!T&&(o=u["on"+e])?o(n):e===z&&C("Unhandled promise rejection",r)},Y=function(e){l(w,u,(function(){var t,r=e.facade,n=e.value;if(Q(e)&&(t=S((function(){c?U.emit("unhandledRejection",n,r):J(z,r,n)})),e.rejection=c||Q(e)?2:1,t.error))throw t.value}))},Q=function(e){return 1!==e.rejection&&!e.parent},$=function(e){l(w,u,(function(){var t=e.facade;c?U.emit("rejectionHandled",t):J("rejectionhandled",t,e.value)}))},X=function(e,t,r){return function(n){e(t,n,r)}},Z=function(e,t,r){e.done||(e.done=!0,r&&(e=r),e.value=t,e.state=2,W(e,!0))},ee=function(e,t,r){if(!e.done){e.done=!0,r&&(e=r);try{if(e.facade===t)throw new B("Promise can't be resolved itself");var n=K(t);n?E((function(){var r={done:!1};try{l(n,t,X(ee,r,e),X(Z,r,e))}catch(t){Z(r,t,e)}})):(e.value=t,e.state=1,W(e,!1))}catch(t){Z({done:!1},t,e)}}};if(x&&(D=(I=function(e){y(this,D),v(e),l(n,this);var t=L(this);try{e(X(ee,t),X(Z,t))}catch(e){Z(t,e)}}).prototype,(n=function(e){F(this,{type:M,done:!1,notified:!1,parent:!1,reactions:new O,rejection:!1,state:0,value:null})}).prototype=d(D,"then",(function(e,t){var r=L(this),n=N(b(this,I));return r.parent=!0,n.ok=!g(e)||e,n.fail=g(t)&&t,n.domain=c?U.domain:void 0,0===r.state?r.reactions.add(n):E((function(){q(n,r)})),n.promise})),o=function(){var e=new n,t=L(e);this.promise=e,this.resolve=X(ee,t),this.reject=X(Z,t)},A.f=N=function(e){return e===I||void 0===e?new o(e):V(e)},!s&&g(k)&&j!==Object.prototype)){i=j.then,R||d(j,"then",(function(e,t){var r=this;return new I((function(e,t){l(i,r,e,t)})).then(e,t)}),{unsafe:!0});try{delete j.constructor}catch(e){}f&&f(j,D)}a({global:!0,constructor:!0,wrap:!0,forced:x},{Promise:I}),h(I,M,!1,!0),p(M)},9391:(e,t,r)=>{"use strict";var n=r(6518),o=r(6395),i=r(550),a=r(9039),s=r(7751),c=r(4901),u=r(2293),l=r(3438),d=r(6840),f=i&&i.prototype;if(n({target:"Promise",proto:!0,real:!0,forced:!!i&&a((function(){f.finally.call({then:function(){}},(function(){}))}))},{finally:function(e){var t=u(this,s("Promise")),r=c(e);return this.then(r?function(r){return l(t,e()).then((function(){return r}))}:e,r?function(r){return l(t,e()).then((function(){throw r}))}:e)}}),!o&&c(i)){var h=s("Promise").prototype.finally;f.finally!==h&&d(f,"finally",h,{unsafe:!0})}},3362:(e,t,r)=>{"use strict";r(436),r(6499),r(2003),r(7743),r(1481),r(280)},7743:(e,t,r)=>{"use strict";var n=r(6518),o=r(9565),i=r(9306),a=r(6043),s=r(1103),c=r(2652);n({target:"Promise",stat:!0,forced:r(537)},{race:function(e){var t=this,r=a.f(t),n=r.reject,u=s((function(){var a=i(t.resolve);c(e,(function(e){o(a,t,e).then(r.resolve,n)}))}));return u.error&&n(u.value),r.promise}})},1481:(e,t,r)=>{"use strict";var n=r(6518),o=r(6043);n({target:"Promise",stat:!0,forced:r(916).CONSTRUCTOR},{reject:function(e){var t=o.f(this);return(0,t.reject)(e),t.promise}})},280:(e,t,r)=>{"use strict";var n=r(6518),o=r(7751),i=r(6395),a=r(550),s=r(916).CONSTRUCTOR,c=r(3438),u=o("Promise"),l=i&&!s;n({target:"Promise",stat:!0,forced:i||s},{resolve:function(e){return c(l&&this===u?a:this,e)}})},1689:(e,t,r)=>{"use strict";var n=r(6518),o=r(4576),i=r(8745),a=r(7680),s=r(6043),c=r(9306),u=r(1103),l=o.Promise,d=!1;n({target:"Promise",stat:!0,forced:!l||!l.try||u((function(){l.try((function(e){d=8===e}),8)})).error||!d},{try:function(e){var t=arguments.length>1?a(arguments,1):[],r=s.f(this),n=u((function(){return i(c(e),void 0,t)}));return(n.error?r.reject:r.resolve)(n.value),r.promise}})},4628:(e,t,r)=>{"use strict";var n=r(6518),o=r(6043);n({target:"Promise",stat:!0},{withResolvers:function(){var e=o.f(this);return{promise:e.promise,resolve:e.resolve,reject:e.reject}}})},7337:(e,t,r)=>{"use strict";var n=r(6518),o=r(9504),i=r(5610),a=RangeError,s=String.fromCharCode,c=String.fromCodePoint,u=o([].join);n({target:"String",stat:!0,arity:1,forced:!!c&&1!==c.length},{fromCodePoint:function(e){for(var t,r=[],n=arguments.length,o=0;n>o;){if(t=+arguments[o++],i(t,1114111)!==t)throw new a(t+" is not a valid code point");r[o]=t<65536?s(t):s(55296+((t-=65536)>>10),t%1024+56320)}return u(r,"")}})},7764:(e,t,r)=>{"use strict";var n=r(8183).charAt,o=r(655),i=r(1181),a=r(1088),s=r(2529),c="String Iterator",u=i.set,l=i.getterFor(c);a(String,"String",(function(e){u(this,{type:c,string:o(e),index:0})}),(function(){var e,t=l(this),r=t.string,o=t.index;return o>=r.length?s(void 0,!0):(e=n(r,o),t.index+=e.length,s(e,!1))}))},9806:(e,t,r)=>{"use strict";r(67)},5874:(e,t,r)=>{"use strict";r(6167)},7575:(e,t,r)=>{"use strict";r(3518)},7628:(e,t,r)=>{"use strict";r(1689)},3799:(e,t,r)=>{"use strict";r(4628)},2953:(e,t,r)=>{"use strict";var n=r(4576),o=r(7400),i=r(9296),a=r(3792),s=r(6699),c=r(687),u=r(8227)("iterator"),l=a.values,d=function(e,t){if(e){if(e[u]!==l)try{s(e,u,l)}catch(t){e[u]=l}if(c(e,t,!0),o[t])for(var r in a)if(e[r]!==a[r])try{s(e,r,a[r])}catch(t){e[r]=a[r]}}};for(var f in o)d(n[f]&&n[f].prototype,f);d(i,"DOMTokenList")},8406:(e,t,r)=>{"use strict";r(3792),r(7337);var n=r(6518),o=r(4576),i=r(3389),a=r(7751),s=r(9565),c=r(9504),u=r(3724),l=r(7416),d=r(6840),f=r(2106),h=r(6279),p=r(687),v=r(3994),g=r(1181),m=r(679),y=r(4901),b=r(9297),w=r(6080),E=r(6955),C=r(8551),S=r(34),O=r(655),_=r(2360),k=r(6980),P=r(81),A=r(851),M=r(2529),x=r(2812),T=r(8227),R=r(4488),L=T("iterator"),F="URLSearchParams",j=F+"Iterator",I=g.set,D=g.getterFor(F),B=g.getterFor(j),H=i("fetch"),U=i("Request"),N=i("Headers"),V=U&&U.prototype,G=N&&N.prototype,z=o.TypeError,K=o.encodeURIComponent,q=String.fromCharCode,W=a("String","fromCodePoint"),J=parseInt,Y=c("".charAt),Q=c([].join),$=c([].push),X=c("".replace),Z=c([].shift),ee=c([].splice),te=c("".split),re=c("".slice),ne=c(/./.exec),oe=/\+/g,ie=/^[0-9a-f]+$/i,ae=function(e,t){var r=re(e,t,t+2);return ne(ie,r)?J(r,16):NaN},se=function(e){for(var t=0,r=128;r>0&&e&r;r>>=1)t++;return t},ce=function(e){var t=null;switch(e.length){case 1:t=e[0];break;case 2:t=(31&e[0])<<6|63&e[1];break;case 3:t=(15&e[0])<<12|(63&e[1])<<6|63&e[2];break;case 4:t=(7&e[0])<<18|(63&e[1])<<12|(63&e[2])<<6|63&e[3]}return t>1114111?null:t},ue=function(e){for(var t=(e=X(e,oe," ")).length,r="",n=0;n<t;){var o=Y(e,n);if("%"===o){if("%"===Y(e,n+1)||n+3>t){r+="%",n++;continue}var i=ae(e,n+1);if(i!=i){r+=o,n++;continue}n+=2;var a=se(i);if(0===a)o=q(i);else{if(1===a||a>4){r+="�",n++;continue}for(var s=[i],c=1;c<a&&!(3+ ++n>t||"%"!==Y(e,n));){var u=ae(e,n+1);if(u!=u){n+=3;break}if(u>191||u<128)break;$(s,u),n+=2,c++}if(s.length!==a){r+="�";continue}var l=ce(s);null===l?r+="�":o=W(l)}}r+=o,n++}return r},le=/[!'()~]|%20/g,de={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},fe=function(e){return de[e]},he=function(e){return X(K(e),le,fe)},pe=v((function(e,t){I(this,{type:j,target:D(e).entries,index:0,kind:t})}),F,(function(){var e=B(this),t=e.target,r=e.index++;if(!t||r>=t.length)return e.target=null,M(void 0,!0);var n=t[r];switch(e.kind){case"keys":return M(n.key,!1);case"values":return M(n.value,!1)}return M([n.key,n.value],!1)}),!0),ve=function(e){this.entries=[],this.url=null,void 0!==e&&(S(e)?this.parseObject(e):this.parseQuery("string"==typeof e?"?"===Y(e,0)?re(e,1):e:O(e)))};ve.prototype={type:F,bindURL:function(e){this.url=e,this.update()},parseObject:function(e){var t,r,n,o,i,a,c,u=this.entries,l=A(e);if(l)for(r=(t=P(e,l)).next;!(n=s(r,t)).done;){if(i=(o=P(C(n.value))).next,(a=s(i,o)).done||(c=s(i,o)).done||!s(i,o).done)throw new z("Expected sequence with length 2");$(u,{key:O(a.value),value:O(c.value)})}else for(var d in e)b(e,d)&&$(u,{key:d,value:O(e[d])})},parseQuery:function(e){if(e)for(var t,r,n=this.entries,o=te(e,"&"),i=0;i<o.length;)(t=o[i++]).length&&(r=te(t,"="),$(n,{key:ue(Z(r)),value:ue(Q(r,"="))}))},serialize:function(){for(var e,t=this.entries,r=[],n=0;n<t.length;)e=t[n++],$(r,he(e.key)+"="+he(e.value));return Q(r,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var ge=function(){m(this,me);var e=I(this,new ve(arguments.length>0?arguments[0]:void 0));u||(this.size=e.entries.length)},me=ge.prototype;if(h(me,{append:function(e,t){var r=D(this);x(arguments.length,2),$(r.entries,{key:O(e),value:O(t)}),u||this.length++,r.updateURL()},delete:function(e){for(var t=D(this),r=x(arguments.length,1),n=t.entries,o=O(e),i=r<2?void 0:arguments[1],a=void 0===i?i:O(i),s=0;s<n.length;){var c=n[s];if(c.key!==o||void 0!==a&&c.value!==a)s++;else if(ee(n,s,1),void 0!==a)break}u||(this.size=n.length),t.updateURL()},get:function(e){var t=D(this).entries;x(arguments.length,1);for(var r=O(e),n=0;n<t.length;n++)if(t[n].key===r)return t[n].value;return null},getAll:function(e){var t=D(this).entries;x(arguments.length,1);for(var r=O(e),n=[],o=0;o<t.length;o++)t[o].key===r&&$(n,t[o].value);return n},has:function(e){for(var t=D(this).entries,r=x(arguments.length,1),n=O(e),o=r<2?void 0:arguments[1],i=void 0===o?o:O(o),a=0;a<t.length;){var s=t[a++];if(s.key===n&&(void 0===i||s.value===i))return!0}return!1},set:function(e,t){var r=D(this);x(arguments.length,1);for(var n,o=r.entries,i=!1,a=O(e),s=O(t),c=0;c<o.length;c++)(n=o[c]).key===a&&(i?ee(o,c--,1):(i=!0,n.value=s));i||$(o,{key:a,value:s}),u||(this.size=o.length),r.updateURL()},sort:function(){var e=D(this);R(e.entries,(function(e,t){return e.key>t.key?1:-1})),e.updateURL()},forEach:function(e){for(var t,r=D(this).entries,n=w(e,arguments.length>1?arguments[1]:void 0),o=0;o<r.length;)n((t=r[o++]).value,t.key,this)},keys:function(){return new pe(this,"keys")},values:function(){return new pe(this,"values")},entries:function(){return new pe(this,"entries")}},{enumerable:!0}),d(me,L,me.entries,{name:"entries"}),d(me,"toString",(function(){return D(this).serialize()}),{enumerable:!0}),u&&f(me,"size",{get:function(){return D(this).entries.length},configurable:!0,enumerable:!0}),p(ge,F),n({global:!0,constructor:!0,forced:!l},{URLSearchParams:ge}),!l&&y(N)){var ye=c(G.has),be=c(G.set),we=function(e){if(S(e)){var t,r=e.body;if(E(r)===F)return t=e.headers?new N(e.headers):new N,ye(t,"content-type")||be(t,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),_(e,{body:k(0,O(r)),headers:k(0,t)})}return e};if(y(H)&&n({global:!0,enumerable:!0,dontCallGetSet:!0,forced:!0},{fetch:function(e){return H(e,arguments.length>1?we(arguments[1]):{})}}),y(U)){var Ee=function(e){return m(this,V),new U(e,arguments.length>1?we(arguments[1]):{})};V.constructor=Ee,Ee.prototype=V,n({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:Ee})}}e.exports={URLSearchParams:ge,getState:D}},4603:(e,t,r)=>{"use strict";var n=r(6840),o=r(9504),i=r(655),a=r(2812),s=URLSearchParams,c=s.prototype,u=o(c.append),l=o(c.delete),d=o(c.forEach),f=o([].push),h=new s("a=1&a=2&b=3");h.delete("a",1),h.delete("b",void 0),h+""!="a=2"&&n(c,"delete",(function(e){var t=arguments.length,r=t<2?void 0:arguments[1];if(t&&void 0===r)return l(this,e);var n=[];d(this,(function(e,t){f(n,{key:t,value:e})})),a(t,1);for(var o,s=i(e),c=i(r),h=0,p=0,v=!1,g=n.length;h<g;)o=n[h++],v||o.key===s?(v=!0,l(this,o.key)):p++;for(;p<g;)(o=n[p++]).key===s&&o.value===c||u(this,o.key,o.value)}),{enumerable:!0,unsafe:!0})},7566:(e,t,r)=>{"use strict";var n=r(6840),o=r(9504),i=r(655),a=r(2812),s=URLSearchParams,c=s.prototype,u=o(c.getAll),l=o(c.has),d=new s("a=1");!d.has("a",2)&&d.has("a",void 0)||n(c,"has",(function(e){var t=arguments.length,r=t<2?void 0:arguments[1];if(t&&void 0===r)return l(this,e);var n=u(this,e);a(t,1);for(var o=i(r),s=0;s<n.length;)if(n[s++]===o)return!0;return!1}),{enumerable:!0,unsafe:!0})},8408:(e,t,r)=>{"use strict";r(8406)},8721:(e,t,r)=>{"use strict";var n=r(3724),o=r(9504),i=r(2106),a=URLSearchParams.prototype,s=o(a.forEach);n&&!("size"in a)&&i(a,"size",{get:function(){var e=0;return s(this,(function(){e++})),e},configurable:!0,enumerable:!0})},2222:(e,t,r)=>{"use strict";var n=r(6518),o=r(7751),i=r(9039),a=r(2812),s=r(655),c=r(7416),u=o("URL"),l=c&&i((function(){u.canParse()})),d=i((function(){return 1!==u.canParse.length}));n({target:"URL",stat:!0,forced:!l||d},{canParse:function(e){var t=a(arguments.length,1),r=s(e),n=t<2||void 0===arguments[1]?void 0:s(arguments[1]);try{return!!new u(r,n)}catch(e){return!1}}})},5806:(e,t,r)=>{"use strict";r(7764);var n,o=r(6518),i=r(3724),a=r(7416),s=r(4576),c=r(6080),u=r(9504),l=r(6840),d=r(2106),f=r(679),h=r(9297),p=r(4213),v=r(7916),g=r(7680),m=r(8183).codeAt,y=r(6098),b=r(655),w=r(687),E=r(2812),C=r(8406),S=r(1181),O=S.set,_=S.getterFor("URL"),k=C.URLSearchParams,P=C.getState,A=s.URL,M=s.TypeError,x=s.parseInt,T=Math.floor,R=Math.pow,L=u("".charAt),F=u(/./.exec),j=u([].join),I=u(1..toString),D=u([].pop),B=u([].push),H=u("".replace),U=u([].shift),N=u("".split),V=u("".slice),G=u("".toLowerCase),z=u([].unshift),K="Invalid scheme",q="Invalid host",W="Invalid port",J=/[a-z]/i,Y=/[\d+-.a-z]/i,Q=/\d/,$=/^0x/i,X=/^[0-7]+$/,Z=/^\d+$/,ee=/^[\da-f]+$/i,te=/[\0\t\n\r #%/:<>?@[\\\]^|]/,re=/[\0\t\n\r #/:<>?@[\\\]^|]/,ne=/^[\u0000-\u0020]+/,oe=/(^|[^\u0000-\u0020])[\u0000-\u0020]+$/,ie=/[\t\n\r]/g,ae=function(e){var t,r,n,o;if("number"==typeof e){for(t=[],r=0;r<4;r++)z(t,e%256),e=T(e/256);return j(t,".")}if("object"==typeof e){for(t="",n=function(e){for(var t=null,r=1,n=null,o=0,i=0;i<8;i++)0!==e[i]?(o>r&&(t=n,r=o),n=null,o=0):(null===n&&(n=i),++o);return o>r?n:t}(e),r=0;r<8;r++)o&&0===e[r]||(o&&(o=!1),n===r?(t+=r?":":"::",o=!0):(t+=I(e[r],16),r<7&&(t+=":")));return"["+t+"]"}return e},se={},ce=p({},se,{" ":1,'"':1,"<":1,">":1,"`":1}),ue=p({},ce,{"#":1,"?":1,"{":1,"}":1}),le=p({},ue,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),de=function(e,t){var r=m(e,0);return r>32&&r<127&&!h(t,e)?e:encodeURIComponent(e)},fe={ftp:21,file:null,http:80,https:443,ws:80,wss:443},he=function(e,t){var r;return 2===e.length&&F(J,L(e,0))&&(":"===(r=L(e,1))||!t&&"|"===r)},pe=function(e){var t;return e.length>1&&he(V(e,0,2))&&(2===e.length||"/"===(t=L(e,2))||"\\"===t||"?"===t||"#"===t)},ve=function(e){return"."===e||"%2e"===G(e)},ge={},me={},ye={},be={},we={},Ee={},Ce={},Se={},Oe={},_e={},ke={},Pe={},Ae={},Me={},xe={},Te={},Re={},Le={},Fe={},je={},Ie={},De=function(e,t,r){var n,o,i,a=b(e);if(t){if(o=this.parse(a))throw new M(o);this.searchParams=null}else{if(void 0!==r&&(n=new De(r,!0)),o=this.parse(a,null,n))throw new M(o);(i=P(new k)).bindURL(this),this.searchParams=i}};De.prototype={type:"URL",parse:function(e,t,r){var o,i,a,s,c,u=this,l=t||ge,d=0,f="",p=!1,m=!1,y=!1;for(e=b(e),t||(u.scheme="",u.username="",u.password="",u.host=null,u.port=null,u.path=[],u.query=null,u.fragment=null,u.cannotBeABaseURL=!1,e=H(e,ne,""),e=H(e,oe,"$1")),e=H(e,ie,""),o=v(e);d<=o.length;){switch(i=o[d],l){case ge:if(!i||!F(J,i)){if(t)return K;l=ye;continue}f+=G(i),l=me;break;case me:if(i&&(F(Y,i)||"+"===i||"-"===i||"."===i))f+=G(i);else{if(":"!==i){if(t)return K;f="",l=ye,d=0;continue}if(t&&(u.isSpecial()!==h(fe,f)||"file"===f&&(u.includesCredentials()||null!==u.port)||"file"===u.scheme&&!u.host))return;if(u.scheme=f,t)return void(u.isSpecial()&&fe[u.scheme]===u.port&&(u.port=null));f="","file"===u.scheme?l=Me:u.isSpecial()&&r&&r.scheme===u.scheme?l=be:u.isSpecial()?l=Se:"/"===o[d+1]?(l=we,d++):(u.cannotBeABaseURL=!0,B(u.path,""),l=Fe)}break;case ye:if(!r||r.cannotBeABaseURL&&"#"!==i)return K;if(r.cannotBeABaseURL&&"#"===i){u.scheme=r.scheme,u.path=g(r.path),u.query=r.query,u.fragment="",u.cannotBeABaseURL=!0,l=Ie;break}l="file"===r.scheme?Me:Ee;continue;case be:if("/"!==i||"/"!==o[d+1]){l=Ee;continue}l=Oe,d++;break;case we:if("/"===i){l=_e;break}l=Le;continue;case Ee:if(u.scheme=r.scheme,i===n)u.username=r.username,u.password=r.password,u.host=r.host,u.port=r.port,u.path=g(r.path),u.query=r.query;else if("/"===i||"\\"===i&&u.isSpecial())l=Ce;else if("?"===i)u.username=r.username,u.password=r.password,u.host=r.host,u.port=r.port,u.path=g(r.path),u.query="",l=je;else{if("#"!==i){u.username=r.username,u.password=r.password,u.host=r.host,u.port=r.port,u.path=g(r.path),u.path.length--,l=Le;continue}u.username=r.username,u.password=r.password,u.host=r.host,u.port=r.port,u.path=g(r.path),u.query=r.query,u.fragment="",l=Ie}break;case Ce:if(!u.isSpecial()||"/"!==i&&"\\"!==i){if("/"!==i){u.username=r.username,u.password=r.password,u.host=r.host,u.port=r.port,l=Le;continue}l=_e}else l=Oe;break;case Se:if(l=Oe,"/"!==i||"/"!==L(f,d+1))continue;d++;break;case Oe:if("/"!==i&&"\\"!==i){l=_e;continue}break;case _e:if("@"===i){p&&(f="%40"+f),p=!0,a=v(f);for(var w=0;w<a.length;w++){var E=a[w];if(":"!==E||y){var C=de(E,le);y?u.password+=C:u.username+=C}else y=!0}f=""}else if(i===n||"/"===i||"?"===i||"#"===i||"\\"===i&&u.isSpecial()){if(p&&""===f)return"Invalid authority";d-=v(f).length+1,f="",l=ke}else f+=i;break;case ke:case Pe:if(t&&"file"===u.scheme){l=Te;continue}if(":"!==i||m){if(i===n||"/"===i||"?"===i||"#"===i||"\\"===i&&u.isSpecial()){if(u.isSpecial()&&""===f)return q;if(t&&""===f&&(u.includesCredentials()||null!==u.port))return;if(s=u.parseHost(f))return s;if(f="",l=Re,t)return;continue}"["===i?m=!0:"]"===i&&(m=!1),f+=i}else{if(""===f)return q;if(s=u.parseHost(f))return s;if(f="",l=Ae,t===Pe)return}break;case Ae:if(!F(Q,i)){if(i===n||"/"===i||"?"===i||"#"===i||"\\"===i&&u.isSpecial()||t){if(""!==f){var S=x(f,10);if(S>65535)return W;u.port=u.isSpecial()&&S===fe[u.scheme]?null:S,f=""}if(t)return;l=Re;continue}return W}f+=i;break;case Me:if(u.scheme="file","/"===i||"\\"===i)l=xe;else{if(!r||"file"!==r.scheme){l=Le;continue}switch(i){case n:u.host=r.host,u.path=g(r.path),u.query=r.query;break;case"?":u.host=r.host,u.path=g(r.path),u.query="",l=je;break;case"#":u.host=r.host,u.path=g(r.path),u.query=r.query,u.fragment="",l=Ie;break;default:pe(j(g(o,d),""))||(u.host=r.host,u.path=g(r.path),u.shortenPath()),l=Le;continue}}break;case xe:if("/"===i||"\\"===i){l=Te;break}r&&"file"===r.scheme&&!pe(j(g(o,d),""))&&(he(r.path[0],!0)?B(u.path,r.path[0]):u.host=r.host),l=Le;continue;case Te:if(i===n||"/"===i||"\\"===i||"?"===i||"#"===i){if(!t&&he(f))l=Le;else if(""===f){if(u.host="",t)return;l=Re}else{if(s=u.parseHost(f))return s;if("localhost"===u.host&&(u.host=""),t)return;f="",l=Re}continue}f+=i;break;case Re:if(u.isSpecial()){if(l=Le,"/"!==i&&"\\"!==i)continue}else if(t||"?"!==i)if(t||"#"!==i){if(i!==n&&(l=Le,"/"!==i))continue}else u.fragment="",l=Ie;else u.query="",l=je;break;case Le:if(i===n||"/"===i||"\\"===i&&u.isSpecial()||!t&&("?"===i||"#"===i)){if(".."===(c=G(c=f))||"%2e."===c||".%2e"===c||"%2e%2e"===c?(u.shortenPath(),"/"===i||"\\"===i&&u.isSpecial()||B(u.path,"")):ve(f)?"/"===i||"\\"===i&&u.isSpecial()||B(u.path,""):("file"===u.scheme&&!u.path.length&&he(f)&&(u.host&&(u.host=""),f=L(f,0)+":"),B(u.path,f)),f="","file"===u.scheme&&(i===n||"?"===i||"#"===i))for(;u.path.length>1&&""===u.path[0];)U(u.path);"?"===i?(u.query="",l=je):"#"===i&&(u.fragment="",l=Ie)}else f+=de(i,ue);break;case Fe:"?"===i?(u.query="",l=je):"#"===i?(u.fragment="",l=Ie):i!==n&&(u.path[0]+=de(i,se));break;case je:t||"#"!==i?i!==n&&("'"===i&&u.isSpecial()?u.query+="%27":u.query+="#"===i?"%23":de(i,se)):(u.fragment="",l=Ie);break;case Ie:i!==n&&(u.fragment+=de(i,ce))}d++}},parseHost:function(e){var t,r,n;if("["===L(e,0)){if("]"!==L(e,e.length-1))return q;if(t=function(e){var t,r,n,o,i,a,s,c=[0,0,0,0,0,0,0,0],u=0,l=null,d=0,f=function(){return L(e,d)};if(":"===f()){if(":"!==L(e,1))return;d+=2,l=++u}for(;f();){if(8===u)return;if(":"!==f()){for(t=r=0;r<4&&F(ee,f());)t=16*t+x(f(),16),d++,r++;if("."===f()){if(0===r)return;if(d-=r,u>6)return;for(n=0;f();){if(o=null,n>0){if(!("."===f()&&n<4))return;d++}if(!F(Q,f()))return;for(;F(Q,f());){if(i=x(f(),10),null===o)o=i;else{if(0===o)return;o=10*o+i}if(o>255)return;d++}c[u]=256*c[u]+o,2!=++n&&4!==n||u++}if(4!==n)return;break}if(":"===f()){if(d++,!f())return}else if(f())return;c[u++]=t}else{if(null!==l)return;d++,l=++u}}if(null!==l)for(a=u-l,u=7;0!==u&&a>0;)s=c[u],c[u--]=c[l+a-1],c[l+--a]=s;else if(8!==u)return;return c}(V(e,1,-1)),!t)return q;this.host=t}else if(this.isSpecial()){if(e=y(e),F(te,e))return q;if(t=function(e){var t,r,n,o,i,a,s,c=N(e,".");if(c.length&&""===c[c.length-1]&&c.length--,(t=c.length)>4)return e;for(r=[],n=0;n<t;n++){if(""===(o=c[n]))return e;if(i=10,o.length>1&&"0"===L(o,0)&&(i=F($,o)?16:8,o=V(o,8===i?1:2)),""===o)a=0;else{if(!F(10===i?Z:8===i?X:ee,o))return e;a=x(o,i)}B(r,a)}for(n=0;n<t;n++)if(a=r[n],n===t-1){if(a>=R(256,5-t))return null}else if(a>255)return null;for(s=D(r),n=0;n<r.length;n++)s+=r[n]*R(256,3-n);return s}(e),null===t)return q;this.host=t}else{if(F(re,e))return q;for(t="",r=v(e),n=0;n<r.length;n++)t+=de(r[n],se);this.host=t}},cannotHaveUsernamePasswordPort:function(){return!this.host||this.cannotBeABaseURL||"file"===this.scheme},includesCredentials:function(){return""!==this.username||""!==this.password},isSpecial:function(){return h(fe,this.scheme)},shortenPath:function(){var e=this.path,t=e.length;!t||"file"===this.scheme&&1===t&&he(e[0],!0)||e.length--},serialize:function(){var e=this,t=e.scheme,r=e.username,n=e.password,o=e.host,i=e.port,a=e.path,s=e.query,c=e.fragment,u=t+":";return null!==o?(u+="//",e.includesCredentials()&&(u+=r+(n?":"+n:"")+"@"),u+=ae(o),null!==i&&(u+=":"+i)):"file"===t&&(u+="//"),u+=e.cannotBeABaseURL?a[0]:a.length?"/"+j(a,"/"):"",null!==s&&(u+="?"+s),null!==c&&(u+="#"+c),u},setHref:function(e){var t=this.parse(e);if(t)throw new M(t);this.searchParams.update()},getOrigin:function(){var e=this.scheme,t=this.port;if("blob"===e)try{return new Be(e.path[0]).origin}catch(e){return"null"}return"file"!==e&&this.isSpecial()?e+"://"+ae(this.host)+(null!==t?":"+t:""):"null"},getProtocol:function(){return this.scheme+":"},setProtocol:function(e){this.parse(b(e)+":",ge)},getUsername:function(){return this.username},setUsername:function(e){var t=v(b(e));if(!this.cannotHaveUsernamePasswordPort()){this.username="";for(var r=0;r<t.length;r++)this.username+=de(t[r],le)}},getPassword:function(){return this.password},setPassword:function(e){var t=v(b(e));if(!this.cannotHaveUsernamePasswordPort()){this.password="";for(var r=0;r<t.length;r++)this.password+=de(t[r],le)}},getHost:function(){var e=this.host,t=this.port;return null===e?"":null===t?ae(e):ae(e)+":"+t},setHost:function(e){this.cannotBeABaseURL||this.parse(e,ke)},getHostname:function(){var e=this.host;return null===e?"":ae(e)},setHostname:function(e){this.cannotBeABaseURL||this.parse(e,Pe)},getPort:function(){var e=this.port;return null===e?"":b(e)},setPort:function(e){this.cannotHaveUsernamePasswordPort()||(""===(e=b(e))?this.port=null:this.parse(e,Ae))},getPathname:function(){var e=this.path;return this.cannotBeABaseURL?e[0]:e.length?"/"+j(e,"/"):""},setPathname:function(e){this.cannotBeABaseURL||(this.path=[],this.parse(e,Re))},getSearch:function(){var e=this.query;return e?"?"+e:""},setSearch:function(e){""===(e=b(e))?this.query=null:("?"===L(e,0)&&(e=V(e,1)),this.query="",this.parse(e,je)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var e=this.fragment;return e?"#"+e:""},setHash:function(e){""!==(e=b(e))?("#"===L(e,0)&&(e=V(e,1)),this.fragment="",this.parse(e,Ie)):this.fragment=null},update:function(){this.query=this.searchParams.serialize()||null}};var Be=function(e){var t=f(this,He),r=E(arguments.length,1)>1?arguments[1]:void 0,n=O(t,new De(e,!1,r));i||(t.href=n.serialize(),t.origin=n.getOrigin(),t.protocol=n.getProtocol(),t.username=n.getUsername(),t.password=n.getPassword(),t.host=n.getHost(),t.hostname=n.getHostname(),t.port=n.getPort(),t.pathname=n.getPathname(),t.search=n.getSearch(),t.searchParams=n.getSearchParams(),t.hash=n.getHash())},He=Be.prototype,Ue=function(e,t){return{get:function(){return _(this)[e]()},set:t&&function(e){return _(this)[t](e)},configurable:!0,enumerable:!0}};if(i&&(d(He,"href",Ue("serialize","setHref")),d(He,"origin",Ue("getOrigin")),d(He,"protocol",Ue("getProtocol","setProtocol")),d(He,"username",Ue("getUsername","setUsername")),d(He,"password",Ue("getPassword","setPassword")),d(He,"host",Ue("getHost","setHost")),d(He,"hostname",Ue("getHostname","setHostname")),d(He,"port",Ue("getPort","setPort")),d(He,"pathname",Ue("getPathname","setPathname")),d(He,"search",Ue("getSearch","setSearch")),d(He,"searchParams",Ue("getSearchParams")),d(He,"hash",Ue("getHash","setHash"))),l(He,"toJSON",(function(){return _(this).serialize()}),{enumerable:!0}),l(He,"toString",(function(){return _(this).serialize()}),{enumerable:!0}),A){var Ne=A.createObjectURL,Ve=A.revokeObjectURL;Ne&&l(Be,"createObjectURL",c(Ne,A)),Ve&&l(Be,"revokeObjectURL",c(Ve,A))}w(Be,"URL"),o({global:!0,constructor:!0,forced:!a,sham:!i},{URL:Be})},3296:(e,t,r)=>{"use strict";r(5806)},8162:(e,t,r)=>{"use strict";var n=r(6518),o=r(7751),i=r(2812),a=r(655),s=r(7416),c=o("URL");n({target:"URL",stat:!0,forced:!s},{parse:function(e){var t=i(arguments.length,1),r=a(e),n=t<2||void 0===arguments[1]?void 0:a(arguments[1]);try{return new c(r,n)}catch(e){return null}}})},7208:(e,t,r)=>{"use strict";var n=r(6518),o=r(9565);n({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return o(URL.prototype.toString,this)}})},6612:(e,t,r)=>{"use strict";var n=r(3609);e.exports=n},8418:(e,t,r)=>{"use strict";var n=r(8473);e.exports=n},2473:(e,t,r)=>{"use strict";var n=r(6398);r(2953),e.exports=n},2841:(e,t,r)=>{"use strict";var n=r(8367);e.exports=n},6811:(e,t,r)=>{"use strict";r(8408),r(4603),r(7566),r(8721);var n=r(9167);e.exports=n.URLSearchParams},8367:(e,t,r)=>{"use strict";r(6811),r(3296),r(2222),r(8162),r(7208);var n=r(9167);e.exports=n.URL}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={exports:{}};return e[n].call(i.exports,i,i.exports,r),i.exports}return r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r(8156)})()));
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxJQUVsSFksU0FBVSxDQUNOLElBQUlaLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFX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VSxlQUFlOUYsS0FBSzY5QixFQUFLandCLEdDQ2xGNnRDLEVBQW9CbG1ELEVBQUs3RyxJQUNILG9CQUFYbUcsUUFBMEJBLE9BQU9vVyxhQUMxQ2xjLE9BQU9DLGVBQWVOLEVBQVNtRyxPQUFPb1csWUFBYSxDQUFFaGMsTUFBTyxXQUU3REYsT0FBT0MsZUFBZU4sRUFBUyxhQUFjLENBQUVPLE9BQU8sR0FBTyxFQ0ZwQ3dzRCxFQUFvQixLIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2Jhc2U2MnN0ci9kaXN0L3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9leHBpcmUtc2V0L2xpYi9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvZ2xvYmFsdGhpcy9pbXBsZW1lbnRhdGlvbi5icm93c2VyLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2dsb2JhbHRoaXMvcG9seWZpbGwuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvb2ZmaWNlc2RrLWJyb2FkY2FzdC1jaGFubmVsL2Rpc3Qvb2ZmaWNlc2RrLWJyb2FkY2FzdC1jaGFubmVsLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3Byb2Nlc3MvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9wcm94eS1wb2x5ZmlsbC9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvcHJveHktcG9seWZpbGwvc3JjL3Byb3h5LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3RpbnktZW1pdHRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL3NyYy9PZmZpY2VTREsuZmFjYWRlLnRzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vc3JjL09mZmljZVNESy5mYWNhZGUudHlwZXMudHMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9zcmMvT2ZmaWNlU0RLLmhlYWRlckJhcnMudHMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9zcmMvT2ZmaWNlU0RLLnRzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vc3JjL2Fzc2VydC50cyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL3NyYy9jb25uZWN0LnRzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vc3JjL2luZGV4LnRzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vc3JjL3R5cGVzL0VtcHR5UGFnZS50cyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvcm5nLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci9yZWdleC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvdmFsaWRhdGUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL3N0cmluZ2lmeS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvdjEuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL3BhcnNlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci92MzUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL21kNS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvdjMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL3Y0LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci9zaGExLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci92NS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvbmlsLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci92ZXJzaW9uLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3dlYm9mZmljZS1qcy1zZGstc2hhcmVkL2Rpc3QvQVBJQWRhcHRvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy93ZWJvZmZpY2UtanMtc2RrLXNoYXJlZC9kaXN0L0ZpbGUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvd2Vib2ZmaWNlLWpzLXNkay1zaGFyZWQvZGlzdC9ldmVudC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy93ZWJvZmZpY2UtanMtc2RrLXNoYXJlZC9kaXN0L2luZGV4LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3dlYm9mZmljZS1qcy1zZGstc2hhcmVkL2Rpc3QvdHlwZXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvd2Vib2ZmaWNlLXN0YXJ0cGFyYW1zL2Rpc3QvU3RhcnRQYXJhbXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvd2Vib2ZmaWNlLXN0YXJ0cGFyYW1zL2Rpc3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvd2Vib2ZmaWNlLXN0YXJ0cGFyYW1zL25vZGVfbW9kdWxlcy9pcy1wbGFpbi1vYmovaW5kZXguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9hY3R1YWwvYXJyYXkvaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9hY3R1YWwvb2JqZWN0L2Fzc2lnbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2FjdHVhbC9wcm9taXNlL2luZGV4LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvYWN0dWFsL3VybC9pbmRleC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2VzL2FycmF5L2luY2x1ZGVzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZXMvb2JqZWN0L2Fzc2lnbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2VzL3Byb21pc2UvaW5kZXguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9mZWF0dXJlcy9hcnJheS9pbmNsdWRlcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ZlYXR1cmVzL29iamVjdC9hc3NpZ24uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9mZWF0dXJlcy9wcm9taXNlL2luZGV4LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZmVhdHVyZXMvdXJsL2luZGV4LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZnVsbC9hcnJheS9pbmNsdWRlcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2Z1bGwvb2JqZWN0L2Fzc2lnbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2Z1bGwvcHJvbWlzZS9pbmRleC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2Z1bGwvdXJsL2luZGV4LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtY2FsbGFibGUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYS1jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLXBvc3NpYmxlLXByb3RvdHlwZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4taW5zdGFuY2UuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWZyb20uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktc2xpY2UuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktc29ydC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jYWxsLXdpdGgtc2FmZS1pdGVyYXRpb24tY2xvc2luZy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jaGVjay1jb3JyZWN0bmVzcy1vZi1pdGVyYXRpb24uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29ycmVjdC1wcm90b3R5cGUtZ2V0dGVyLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1pdGVyLXJlc3VsdC1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4tYWNjZXNzb3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbnMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb20taXRlcmFibGVzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RvbS10b2tlbi1saXN0LXByb3RvdHlwZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnRyeS11bmJpbmQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW51bS1idWcta2V5cy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnZpcm9ubWVudC1pcy1pb3MtcGViYmxlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Vudmlyb25tZW50LWlzLWlvcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnZpcm9ubWVudC1pcy1ub2RlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Vudmlyb25tZW50LWlzLXdlYm9zLXdlYmtpdC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnZpcm9ubWVudC11c2VyLWFnZW50LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Vudmlyb25tZW50LXY4LXZlcnNpb24uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW52aXJvbm1lbnQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXJyb3Itc3RhY2stY2xlYXIuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXJyb3Itc3RhY2staW5zdGFsbC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lcnJvci1zdGFjay1pbnN0YWxsYWJsZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tYXBwbHkuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tbmFtZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMtYWNjZXNzb3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLWNsYXVzZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1tZXRob2QuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oaWRkZW4ta2V5cy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9ob3N0LXJlcG9ydC1lcnJvcnMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaHRtbC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbmRleGVkLW9iamVjdC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnN0YWxsLWVycm9yLWNhdXNlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWFycmF5LWl0ZXJhdG9yLW1ldGhvZC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jYWxsYWJsZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1mb3JjZWQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXBvc3NpYmxlLXByb3RvdHlwZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1wdXJlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXN5bWJvbC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9yLWNsb3NlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9yLWNyZWF0ZS1jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvci1kZWZpbmUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3JzLWNvcmUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3JzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbWF0aC10cnVuYy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9taWNyb3Rhc2suanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9ub3JtYWxpemUtc3RyaW5nLWFyZ3VtZW50LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1hc3NpZ24uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnRpZXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qta2V5cy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtdG8tc3RyaW5nLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vd24ta2V5cy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wYXRoLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3BlcmZvcm0uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcHJvbWlzZS1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcHJvbWlzZS1yZXNvbHZlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Byb21pc2Utc3RhdGljcy1pbmNvcnJlY3QtaXRlcmF0aW9uLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3F1ZXVlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zYWZlLWdldC1idWlsdC1pbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtc3BlY2llcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC1zdG9yZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctbXVsdGlieXRlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy1wdW55Y29kZS10by1hc2NpaS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Rhc2suanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1sZW5ndGguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2JqZWN0LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXkuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXN0cmluZy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90cnktdG8tc3RyaW5nLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VpZC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91cmwtY29uc3RydWN0b3ItZGV0ZWN0aW9uLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Y4LXByb3RvdHlwZS1kZWZpbmUtYnVnLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3ZhbGlkYXRlLWFyZ3VtZW50cy1sZW5ndGguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2Vhay1tYXAtYmFzaWMtZGV0ZWN0aW9uLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hZ2dyZWdhdGUtZXJyb3IuY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFnZ3JlZ2F0ZS1lcnJvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lml0ZXJhdG9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuYXNzaWduLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLmFsbC1zZXR0bGVkLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLmFsbC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5hbnkuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UuY2F0Y2guanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UuY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UuZmluYWxseS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5yYWNlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLnJlamVjdC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5yZXNvbHZlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLnRyeS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS53aXRoLXJlc29sdmVycy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmZyb20tY29kZS1wb2ludC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuYWdncmVnYXRlLWVycm9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQucHJvbWlzZS5hbGwtc2V0dGxlZC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnByb21pc2UuYW55LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQucHJvbWlzZS50cnkuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5wcm9taXNlLndpdGgtcmVzb2x2ZXJzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLml0ZXJhdG9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5kZWxldGUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5oYXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLnNpemUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwuY2FuLXBhcnNlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLmNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLnBhcnNlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLnRvLWpzb24uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9zdGFibGUvYXJyYXkvaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9zdGFibGUvb2JqZWN0L2Fzc2lnbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL3N0YWJsZS9wcm9taXNlL2luZGV4LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvc3RhYmxlL3VybC9pbmRleC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL3dlYi91cmwtc2VhcmNoLXBhcmFtcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL3dlYi91cmwuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLL3dlYnBhY2svc3RhcnR1cCJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJXZWJPZmZpY2VKU1NES1wiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJXZWJPZmZpY2VKU1NES1wiXSA9IGZhY3RvcnkoKTtcbn0pKHNlbGYsICgpID0+IHtcbnJldHVybiAiLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgQmFzZTYyU3RyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gQmFzZTYyU3RyKGFscGhhYmV0KSB7XHJcbiAgICAgICAgdGhpcy5hbHBoYWJldCA9IGFscGhhYmV0O1xyXG4gICAgICAgIHRoaXMubG9va3VwID0gdGhpcy5jcmVhdGVMb29rdXBUYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgQmFzZTYyU3RyLmdldEJ5dGVzID0gZnVuY3Rpb24gKHN0cikge1xyXG4gICAgICAgIHZhciBieXRlcyA9IFtdO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBjaGFyID0gc3RyLmNoYXJDb2RlQXQoaSk7XHJcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgICAgICAgIGJ5dGVzLnB1c2goY2hhciAmIDB4RkYpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYnl0ZXM7XHJcbiAgICB9O1xyXG4gICAgQmFzZTYyU3RyLmdldFN0cmluZyA9IGZ1bmN0aW9uIChhcnIpIHtcclxuICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseSh0aGlzLCBhcnIpO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIHtAbGluayBCYXNlNjJ9IGluc3RhbmNlLiBEZWZhdWx0cyB0byB0aGUgR01QLXN0eWxlIGNoYXJhY3RlciBzZXQuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybiBhIHtAbGluayBCYXNlNjJ9IGluc3RhbmNlLlxyXG4gICAgICovXHJcbiAgICBCYXNlNjJTdHIuY3JlYXRlSW5zdGFuY2UgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlSW5zdGFuY2VXaXRoR21wQ2hhcmFjdGVyU2V0KCk7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGEge0BsaW5rIEJhc2U2Mn0gaW5zdGFuY2UgdXNpbmcgdGhlIEdNUC1zdHlsZSBjaGFyYWN0ZXIgc2V0LlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm4gYSB7QGxpbmsgQmFzZTYyfSBpbnN0YW5jZS5cclxuICAgICAqL1xyXG4gICAgQmFzZTYyU3RyLmNyZWF0ZUluc3RhbmNlV2l0aEdtcENoYXJhY3RlclNldCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IEJhc2U2MlN0cihCYXNlNjJTdHIuQ2hhcmFjdGVyU2V0cy5HTVApO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIHtAbGluayBCYXNlNjJ9IGluc3RhbmNlIHVzaW5nIHRoZSBpbnZlcnRlZCBjaGFyYWN0ZXIgc2V0LlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm4gYSB7QGxpbmsgQmFzZTYyfSBpbnN0YW5jZS5cclxuICAgICAqL1xyXG4gICAgQmFzZTYyU3RyLmNyZWF0ZUluc3RhbmNlV2l0aEludmVydGVkQ2hhcmFjdGVyU2V0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgQmFzZTYyU3RyKEJhc2U2MlN0ci5DaGFyYWN0ZXJTZXRzLklOVkVSVEVEKTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFVzZXMgdGhlIGVsZW1lbnRzIG9mIGEgYnl0ZSBhcnJheSBhcyBpbmRpY2VzIHRvIGEgZGljdGlvbmFyeSBhbmQgcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZXNcclxuICAgICAqIGluIGZvcm0gb2YgYSBieXRlIGFycmF5LlxyXG4gICAgICovXHJcbiAgICBCYXNlNjJTdHIudHJhbnNsYXRlID0gZnVuY3Rpb24gKGluZGljZXMsIGRpY3Rpb25hcnkpIHtcclxuICAgICAgICB2YXIgdHJhbnNsYXRpb24gPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBfaSA9IDAsIGluZGljZXNfMSA9IGluZGljZXM7IF9pIDwgaW5kaWNlc18xLmxlbmd0aDsgX2krKykge1xyXG4gICAgICAgICAgICB2YXIgaW5kaWNlc2kgPSBpbmRpY2VzXzFbX2ldO1xyXG4gICAgICAgICAgICB0cmFuc2xhdGlvbi5wdXNoKGRpY3Rpb25hcnlbaW5kaWNlc2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0aW9uO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogQ29udmVydHMgYSBieXRlIGFycmF5IGZyb20gYSBzb3VyY2UgYmFzZSB0byBhIHRhcmdldCBiYXNlIHVzaW5nIHRoZSBhbHBoYWJldC5cclxuICAgICAqL1xyXG4gICAgQmFzZTYyU3RyLmNvbnZlcnQgPSBmdW5jdGlvbiAobWVzc2FnZSwgc291cmNlQmFzZSwgdGFyZ2V0QmFzZSkge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIFRoaXMgYWxnb3JpdGhtIGlzIGluc3BpcmVkIGJ5OiBodHRwOi8vY29kZWdvbGYuc3RhY2tleGNoYW5nZS5jb20vYS8yMTY3MlxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHZhciBvdXQgPSBbXTtcclxuICAgICAgICB2YXIgc291cmNlID0gbWVzc2FnZTtcclxuICAgICAgICB3aGlsZSAoc291cmNlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdmFyIHF1b3RpZW50ID0gW107XHJcbiAgICAgICAgICAgIHZhciByZW1haW5kZXIgPSAwO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDAsIHNvdXJjZV8xID0gc291cmNlOyBfaSA8IHNvdXJjZV8xLmxlbmd0aDsgX2krKykge1xyXG4gICAgICAgICAgICAgICAgdmFyIHNvdXJjZWkgPSBzb3VyY2VfMVtfaV07XHJcbiAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICAgICAgICAgICAgdmFyIGFjY3VtdWxhdG9yID0gKHNvdXJjZWkgJiAweEZGKSArIHJlbWFpbmRlciAqIHNvdXJjZUJhc2U7XHJcbiAgICAgICAgICAgICAgICB2YXIgZGlnaXQgPSAoYWNjdW11bGF0b3IgLSAoYWNjdW11bGF0b3IgJSB0YXJnZXRCYXNlKSkgLyB0YXJnZXRCYXNlO1xyXG4gICAgICAgICAgICAgICAgcmVtYWluZGVyID0gYWNjdW11bGF0b3IgJSB0YXJnZXRCYXNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKHF1b3RpZW50Lmxlbmd0aCA+IDAgfHwgZGlnaXQgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcXVvdGllbnQucHVzaChkaWdpdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3V0LnB1c2gocmVtYWluZGVyKTtcclxuICAgICAgICAgICAgc291cmNlID0gcXVvdGllbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHBhZCBvdXRwdXQgd2l0aCB6ZXJvZXMgY29ycmVzcG9uZGluZyB0byB0aGUgbnVtYmVyIG9mIGxlYWRpbmcgemVyb2VzIGluIHRoZSBtZXNzYWdlXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXNzYWdlLmxlbmd0aCAtIDEgJiYgbWVzc2FnZVtpXSA9PT0gMDsgaSsrKSB7XHJcbiAgICAgICAgICAgIG91dC5wdXNoKDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gb3V0LnJldmVyc2UoKTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIEVuY29kZXMgYSBzZXF1ZW5jZSBvZiBieXRlcyBpbiBCYXNlNjIgZW5jb2RpbmcuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG1lc3NhZ2UgYSBieXRlIHNlcXVlbmNlLlxyXG4gICAgICogQHJldHVybiBhIHNlcXVlbmNlIG9mIEJhc2U2Mi1lbmNvZGVkIGJ5dGVzLlxyXG4gICAgICovXHJcbiAgICBCYXNlNjJTdHIucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIChtZXNzYWdlKSB7XHJcbiAgICAgICAgdmFyIGluZGljZXMgPSBCYXNlNjJTdHIuY29udmVydChtZXNzYWdlLCBCYXNlNjJTdHIuU1RBTkRBUkRfQkFTRSwgQmFzZTYyU3RyLlRBUkdFVF9CQVNFKTtcclxuICAgICAgICByZXR1cm4gQmFzZTYyU3RyLnRyYW5zbGF0ZShpbmRpY2VzLCB0aGlzLmFscGhhYmV0KTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIERlY29kZXMgYSBzZXF1ZW5jZSBvZiBCYXNlNjItZW5jb2RlZCBieXRlcy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZW5jb2RlZCBhIHNlcXVlbmNlIG9mIEJhc2U2Mi1lbmNvZGVkIGJ5dGVzLlxyXG4gICAgICogQHJldHVybiBhIGJ5dGUgc2VxdWVuY2UuXHJcbiAgICAgKi9cclxuICAgIEJhc2U2MlN0ci5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gKGVuY29kZWQpIHtcclxuICAgICAgICB2YXIgcHJlcGFyZWQgPSBCYXNlNjJTdHIudHJhbnNsYXRlKGVuY29kZWQsIHRoaXMubG9va3VwKTtcclxuICAgICAgICByZXR1cm4gQmFzZTYyU3RyLmNvbnZlcnQocHJlcGFyZWQsIEJhc2U2MlN0ci5UQVJHRVRfQkFTRSwgQmFzZTYyU3RyLlNUQU5EQVJEX0JBU0UpO1xyXG4gICAgfTtcclxuICAgIEJhc2U2MlN0ci5wcm90b3R5cGUuZW5jb2RlU3RyID0gZnVuY3Rpb24gKGlucHV0KSB7XHJcbiAgICAgICAgcmV0dXJuIEJhc2U2MlN0ci5nZXRTdHJpbmcodGhpcy5lbmNvZGUoQmFzZTYyU3RyLmdldEJ5dGVzKGlucHV0KSkpO1xyXG4gICAgfTtcclxuICAgIEJhc2U2MlN0ci5wcm90b3R5cGUuZGVjb2RlU3RyID0gZnVuY3Rpb24gKGlucHV0KSB7XHJcbiAgICAgICAgcmV0dXJuIEJhc2U2MlN0ci5nZXRTdHJpbmcodGhpcy5kZWNvZGUoQmFzZTYyU3RyLmdldEJ5dGVzKGlucHV0KSkpO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyB0aGUgbG9va3VwIHRhYmxlIGZyb20gY2hhcmFjdGVyIHRvIGluZGV4IG9mIGNoYXJhY3RlciBpbiBjaGFyYWN0ZXIgc2V0LlxyXG4gICAgICovXHJcbiAgICBCYXNlNjJTdHIucHJvdG90eXBlLmNyZWF0ZUxvb2t1cFRhYmxlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBsb29rdXAgPSBuZXcgQXJyYXkoMjU2KTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1NjsgaSsrKSB7XHJcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgICAgICAgIGxvb2t1cFt0aGlzLmFscGhhYmV0W2ldXSA9IChpICYgMHhGRik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBsb29rdXA7XHJcbiAgICB9O1xyXG4gICAgQmFzZTYyU3RyLkNoYXJhY3RlclNldHMgPSB7XHJcbiAgICAgICAgR01QOiBbXHJcbiAgICAgICAgICAgICcwJy5jaGFyQ29kZUF0KDApLCAnMScuY2hhckNvZGVBdCgwKSwgJzInLmNoYXJDb2RlQXQoMCksICczJy5jaGFyQ29kZUF0KDApLCAnNCcuY2hhckNvZGVBdCgwKSwgJzUnLmNoYXJDb2RlQXQoMCksICc2Jy5jaGFyQ29kZUF0KDApLCAnNycuY2hhckNvZGVBdCgwKSxcclxuICAgICAgICAgICAgJzgnLmNoYXJDb2RlQXQoMCksICc5Jy5jaGFyQ29kZUF0KDApLCAnQScuY2hhckNvZGVBdCgwKSwgJ0InLmNoYXJDb2RlQXQoMCksICdDJy5jaGFyQ29kZUF0KDApLCAnRCcuY2hhckNvZGVBdCgwKSwgJ0UnLmNoYXJDb2RlQXQoMCksICdGJy5jaGFyQ29kZUF0KDApLFxyXG4gICAgICAgICAgICAnRycuY2hhckNvZGVBdCgwKSwgJ0gnLmNoYXJDb2RlQXQoMCksICdJJy5jaGFyQ29kZUF0KDApLCAnSicuY2hhckNvZGVBdCgwKSwgJ0snLmNoYXJDb2RlQXQoMCksICdMJy5jaGFyQ29kZUF0KDApLCAnTScuY2hhckNvZGVBdCgwKSwgJ04nLmNoYXJDb2RlQXQoMCksXHJcbiAgICAgICAgICAgICdPJy5jaGFyQ29kZUF0KDApLCAnUCcuY2hhckNvZGVBdCgwKSwgJ1EnLmNoYXJDb2RlQXQoMCksICdSJy5jaGFyQ29kZUF0KDApLCAnUycuY2hhckNvZGVBdCgwKSwgJ1QnLmNoYXJDb2RlQXQoMCksICdVJy5jaGFyQ29kZUF0KDApLCAnVicuY2hhckNvZGVBdCgwKSxcclxuICAgICAgICAgICAgJ1cnLmNoYXJDb2RlQXQoMCksICdYJy5jaGFyQ29kZUF0KDApLCAnWScuY2hhckNvZGVBdCgwKSwgJ1onLmNoYXJDb2RlQXQoMCksICdhJy5jaGFyQ29kZUF0KDApLCAnYicuY2hhckNvZGVBdCgwKSwgJ2MnLmNoYXJDb2RlQXQoMCksICdkJy5jaGFyQ29kZUF0KDApLFxyXG4gICAgICAgICAgICAnZScuY2hhckNvZGVBdCgwKSwgJ2YnLmNoYXJDb2RlQXQoMCksICdnJy5jaGFyQ29kZUF0KDApLCAnaCcuY2hhckNvZGVBdCgwKSwgJ2knLmNoYXJDb2RlQXQoMCksICdqJy5jaGFyQ29kZUF0KDApLCAnaycuY2hhckNvZGVBdCgwKSwgJ2wnLmNoYXJDb2RlQXQoMCksXHJcbiAgICAgICAgICAgICdtJy5jaGFyQ29kZUF0KDApLCAnbicuY2hhckNvZGVBdCgwKSwgJ28nLmNoYXJDb2RlQXQoMCksICdwJy5jaGFyQ29kZUF0KDApLCAncScuY2hhckNvZGVBdCgwKSwgJ3InLmNoYXJDb2RlQXQoMCksICdzJy5jaGFyQ29kZUF0KDApLCAndCcuY2hhckNvZGVBdCgwKSxcclxuICAgICAgICAgICAgJ3UnLmNoYXJDb2RlQXQoMCksICd2Jy5jaGFyQ29kZUF0KDApLCAndycuY2hhckNvZGVBdCgwKSwgJ3gnLmNoYXJDb2RlQXQoMCksICd5Jy5jaGFyQ29kZUF0KDApLCAneicuY2hhckNvZGVBdCgwKVxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgSU5WRVJURUQ6IFtcclxuICAgICAgICAgICAgJzAnLmNoYXJDb2RlQXQoMCksICcxJy5jaGFyQ29kZUF0KDApLCAnMicuY2hhckNvZGVBdCgwKSwgJzMnLmNoYXJDb2RlQXQoMCksICc0Jy5jaGFyQ29kZUF0KDApLCAnNScuY2hhckNvZGVBdCgwKSwgJzYnLmNoYXJDb2RlQXQoMCksICc3Jy5jaGFyQ29kZUF0KDApLFxyXG4gICAgICAgICAgICAnOCcuY2hhckNvZGVBdCgwKSwgJzknLmNoYXJDb2RlQXQoMCksICdhJy5jaGFyQ29kZUF0KDApLCAnYicuY2hhckNvZGVBdCgwKSwgJ2MnLmNoYXJDb2RlQXQoMCksICdkJy5jaGFyQ29kZUF0KDApLCAnZScuY2hhckNvZGVBdCgwKSwgJ2YnLmNoYXJDb2RlQXQoMCksXHJcbiAgICAgICAgICAgICdnJy5jaGFyQ29kZUF0KDApLCAnaCcuY2hhckNvZGVBdCgwKSwgJ2knLmNoYXJDb2RlQXQoMCksICdqJy5jaGFyQ29kZUF0KDApLCAnaycuY2hhckNvZGVBdCgwKSwgJ2wnLmNoYXJDb2RlQXQoMCksICdtJy5jaGFyQ29kZUF0KDApLCAnbicuY2hhckNvZGVBdCgwKSxcclxuICAgICAgICAgICAgJ28nLmNoYXJDb2RlQXQoMCksICdwJy5jaGFyQ29kZUF0KDApLCAncScuY2hhckNvZGVBdCgwKSwgJ3InLmNoYXJDb2RlQXQoMCksICdzJy5jaGFyQ29kZUF0KDApLCAndCcuY2hhckNvZGVBdCgwKSwgJ3UnLmNoYXJDb2RlQXQoMCksICd2Jy5jaGFyQ29kZUF0KDApLFxyXG4gICAgICAgICAgICAndycuY2hhckNvZGVBdCgwKSwgJ3gnLmNoYXJDb2RlQXQoMCksICd5Jy5jaGFyQ29kZUF0KDApLCAneicuY2hhckNvZGVBdCgwKSwgJ0EnLmNoYXJDb2RlQXQoMCksICdCJy5jaGFyQ29kZUF0KDApLCAnQycuY2hhckNvZGVBdCgwKSwgJ0QnLmNoYXJDb2RlQXQoMCksXHJcbiAgICAgICAgICAgICdFJy5jaGFyQ29kZUF0KDApLCAnRicuY2hhckNvZGVBdCgwKSwgJ0cnLmNoYXJDb2RlQXQoMCksICdIJy5jaGFyQ29kZUF0KDApLCAnSScuY2hhckNvZGVBdCgwKSwgJ0onLmNoYXJDb2RlQXQoMCksICdLJy5jaGFyQ29kZUF0KDApLCAnTCcuY2hhckNvZGVBdCgwKSxcclxuICAgICAgICAgICAgJ00nLmNoYXJDb2RlQXQoMCksICdOJy5jaGFyQ29kZUF0KDApLCAnTycuY2hhckNvZGVBdCgwKSwgJ1AnLmNoYXJDb2RlQXQoMCksICdRJy5jaGFyQ29kZUF0KDApLCAnUicuY2hhckNvZGVBdCgwKSwgJ1MnLmNoYXJDb2RlQXQoMCksICdUJy5jaGFyQ29kZUF0KDApLFxyXG4gICAgICAgICAgICAnVScuY2hhckNvZGVBdCgwKSwgJ1YnLmNoYXJDb2RlQXQoMCksICdXJy5jaGFyQ29kZUF0KDApLCAnWCcuY2hhckNvZGVBdCgwKSwgJ1knLmNoYXJDb2RlQXQoMCksICdaJy5jaGFyQ29kZUF0KDApXHJcbiAgICAgICAgXVxyXG4gICAgfTtcclxuICAgIEJhc2U2MlN0ci5TVEFOREFSRF9CQVNFID0gMjU2O1xyXG4gICAgQmFzZTYyU3RyLlRBUkdFVF9CQVNFID0gNjI7XHJcbiAgICByZXR1cm4gQmFzZTYyU3RyO1xyXG59KCkpO1xyXG5leHBvcnRzLmRlZmF1bHQgPSBCYXNlNjJTdHI7XHJcbiIsIlwidXNlIHN0cmljdFwiO1xuLypcbkNvcHlyaWdodCAyMDIwIFNvcnVub21lXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmNvbnN0IEdDX0RFTEFZID0gNTtcbmNsYXNzIEV4cGlyZVNldCB7XG4gICAgY29uc3RydWN0b3IodGltZW91dCwgZ2NEZWxheSkge1xuICAgICAgICB0aGlzLnRpbWVvdXQgPSB0aW1lb3V0O1xuICAgICAgICB0aGlzLmRiID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLm5leHRHYyA9IG51bGw7XG4gICAgICAgIHRoaXMuZ2NEZWxheSA9IGdjRGVsYXkgfHwgR0NfREVMQVk7XG4gICAgfVxuICAgIGdldCBzaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYi5zaXplO1xuICAgIH1cbiAgICBnZXQgYWxsKCkge1xuICAgICAgICBjb25zdCBzID0gbmV3IFNldCgpO1xuICAgICAgICB0aGlzLmRiLmZvckVhY2goKF8sIHYpID0+IHtcbiAgICAgICAgICAgIHMuYWRkKHYpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHM7XG4gICAgfVxuICAgIGFkZCh2YWx1ZSkge1xuICAgICAgICB0aGlzLmRiLnNldCh2YWx1ZSwgRGF0ZS5ub3coKSArIHRoaXMudGltZW91dCk7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVHYygpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgaGFzKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRiLmhhcyh2YWx1ZSk7XG4gICAgfVxuICAgIGRlbGV0ZSh2YWx1ZSkge1xuICAgICAgICBpZiAodGhpcy5kYi5oYXModmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLmRiLmRlbGV0ZSh2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnNjaGVkdWxlR2ModHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIGdjKCkge1xuICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgICB0aGlzLmRiLmZvckVhY2goKHQsIHYpID0+IHtcbiAgICAgICAgICAgIGlmICh0IDwgbm93KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYi5kZWxldGUodik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm5leHRHYyA9IG51bGw7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVHYygpO1xuICAgIH1cbiAgICBzY2hlZHVsZUdjKGZvcmNlID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGZvcmNlICYmIHRoaXMubmV4dEdjKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5uZXh0R2MpO1xuICAgICAgICAgICAgdGhpcy5uZXh0R2MgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm5leHRHYyAhPT0gbnVsbCB8fCB0aGlzLmRiLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdHMgPSAtMTtcbiAgICAgICAgdGhpcy5kYi5mb3JFYWNoKCh0KSA9PiB7XG4gICAgICAgICAgICBpZiAodHMgPT09IC0xIHx8IHQgPCB0cykge1xuICAgICAgICAgICAgICAgIHRzID0gdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0cyA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRzID0gRGF0ZS5ub3coKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0aW1lb3V0ID0gdHMgLSBEYXRlLm5vdygpICsgdGhpcy5nY0RlbGF5O1xuICAgICAgICB0aGlzLm5leHRHYyA9IHNldFRpbWVvdXQodGhpcy5nYy5iaW5kKHRoaXMpLCB0aW1lb3V0KTtcbiAgICB9XG59XG5leHBvcnRzLmRlZmF1bHQgPSBFeHBpcmVTZXQ7XG5tb2R1bGUuZXhwb3J0cyA9IEV4cGlyZVNldDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBFeHBpcmVTZXQ7XG4iLCIvKiBlc2xpbnQgbm8tbmVnYXRlZC1jb25kaXRpb246IDAsIG5vLW5ldy1mdW5jOiAwICovXG5cbid1c2Ugc3RyaWN0JztcblxuaWYgKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJykge1xuXHRtb2R1bGUuZXhwb3J0cyA9IHNlbGY7XG59IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG5cdG1vZHVsZS5leHBvcnRzID0gd2luZG93O1xufSBlbHNlIHtcblx0bW9kdWxlLmV4cG9ydHMgPSBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW1wbGVtZW50YXRpb24gPSByZXF1aXJlKCcuL2ltcGxlbWVudGF0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2V0UG9seWZpbGwoKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsICE9PSAnb2JqZWN0JyB8fCAhZ2xvYmFsIHx8IGdsb2JhbC5NYXRoICE9PSBNYXRoIHx8IGdsb2JhbC5BcnJheSAhPT0gQXJyYXkpIHtcblx0XHRyZXR1cm4gaW1wbGVtZW50YXRpb247XG5cdH1cblx0cmV0dXJuIGdsb2JhbDtcbn07XG4iLCIhZnVuY3Rpb24oZSx0KXtpZihcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJvYmplY3RcIj09dHlwZW9mIG1vZHVsZSltb2R1bGUuZXhwb3J0cz10KCk7ZWxzZSBpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLHQpO2Vsc2V7dmFyIG49dCgpO2Zvcih2YXIgciBpbiBuKShcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cz9leHBvcnRzOmUpW3JdPW5bcl19fShzZWxmLCgoKT0+KCgpPT57dmFyIGU9ezMxODplPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX0sZS5leHBvcnRzLl9fZXNNb2R1bGU9ITAsZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzfSw4OmU9PntmdW5jdGlvbiB0KG4pe3JldHVybiBlLmV4cG9ydHM9dD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSxlLmV4cG9ydHMuX19lc01vZHVsZT0hMCxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsdChuKX1lLmV4cG9ydHM9dCxlLmV4cG9ydHMuX19lc01vZHVsZT0hMCxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHN9LDk5MTooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5PUEVOX0JST0FEQ0FTVF9DSEFOTkVMUz10LkJyb2FkY2FzdENoYW5uZWw9dm9pZCAwLHQuY2xlYXJOb2RlRm9sZGVyPWZ1bmN0aW9uKGUpe2U9KDAscy5maWxsT3B0aW9uc1dpdGhEZWZhdWx0cykoZSk7dmFyIHQ9KDAsby5jaG9vc2VNZXRob2QpKGUpO3JldHVyblwibm9kZVwiPT09dC50eXBlP3QuY2xlYXJOb2RlRm9sZGVyKCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4hMH0pKTpyLlBST01JU0VfUkVTT0xWRURfRkFMU0V9LHQuZW5mb3JjZU9wdGlvbnM9ZnVuY3Rpb24oZSl7YT1lfTt2YXIgcj1uKDIwMiksbz1uKDYzMikscz1uKDQyMyksaT1uZXcgU2V0O3QuT1BFTl9CUk9BRENBU1RfQ0hBTk5FTFM9aTt2YXIgYSx1PTAsYz1mdW5jdGlvbihlLHQpe3ZhciBuLGM7dGhpcy5pZD11KyssaS5hZGQodGhpcyksdGhpcy5uYW1lPWUsYSYmKHQ9YSksdGhpcy5vcHRpb25zPSgwLHMuZmlsbE9wdGlvbnNXaXRoRGVmYXVsdHMpKHQpLHRoaXMubWV0aG9kPSgwLG8uY2hvb3NlTWV0aG9kKSh0aGlzLm9wdGlvbnMpLHRoaXMuX2lMPSExLHRoaXMuX29uTUw9bnVsbCx0aGlzLl9hZGRFTD17bWVzc2FnZTpbXSxpbnRlcm5hbDpbXX0sdGhpcy5fdU1QPW5ldyBTZXQsdGhpcy5fYmVmQz1bXSx0aGlzLl9wcmVwUD1udWxsLGM9KG49dGhpcykubWV0aG9kLmNyZWF0ZShuLm5hbWUsbi5vcHRpb25zKSwoMCxyLmlzUHJvbWlzZSkoYyk/KG4uX3ByZXBQPWMsYy50aGVuKChmdW5jdGlvbihlKXtuLl9zdGF0ZT1lfSkpKTpuLl9zdGF0ZT1jfTtmdW5jdGlvbiBsKGUsdCxuKXt2YXIgbz17dGltZTplLm1ldGhvZC5taWNyb1NlY29uZHMoKSx0eXBlOnQsZGF0YTpufTtyZXR1cm4oZS5fcHJlcFA/ZS5fcHJlcFA6ci5QUk9NSVNFX1JFU09MVkVEX1ZPSUQpLnRoZW4oKGZ1bmN0aW9uKCl7dmFyIHQ9ZS5tZXRob2QucG9zdE1lc3NhZ2UoZS5fc3RhdGUsbyk7cmV0dXJuIGUuX3VNUC5hZGQodCksdC5jYXRjaCgpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGUuX3VNUC5kZWxldGUodCl9KSksdH0pKX1mdW5jdGlvbiBkKGUpe3JldHVybiBlLl9hZGRFTC5tZXNzYWdlLmxlbmd0aD4wfHxlLl9hZGRFTC5pbnRlcm5hbC5sZW5ndGg+MH1mdW5jdGlvbiBmKGUsdCxuKXtlLl9hZGRFTFt0XS5wdXNoKG4pLGZ1bmN0aW9uKGUpe2lmKCFlLl9pTCYmZChlKSl7dmFyIHQ9ZnVuY3Rpb24odCl7ZS5fYWRkRUxbdC50eXBlXS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj1lLnRpbWUtMWU1O3QudGltZT49biYmZS5mbih0LmRhdGEpfSkpfSxuPWUubWV0aG9kLm1pY3JvU2Vjb25kcygpO2UuX3ByZXBQP2UuX3ByZXBQLnRoZW4oKGZ1bmN0aW9uKCl7ZS5faUw9ITAsZS5tZXRob2Qub25NZXNzYWdlKGUuX3N0YXRlLHQsbil9KSk6KGUuX2lMPSEwLGUubWV0aG9kLm9uTWVzc2FnZShlLl9zdGF0ZSx0LG4pKX19KGUpfWZ1bmN0aW9uIGgoZSx0LG4pe2UuX2FkZEVMW3RdPWUuX2FkZEVMW3RdLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUhPT1ufSkpLGZ1bmN0aW9uKGUpe2lmKGUuX2lMJiYhZChlKSl7ZS5faUw9ITE7dmFyIHQ9ZS5tZXRob2QubWljcm9TZWNvbmRzKCk7ZS5tZXRob2Qub25NZXNzYWdlKGUuX3N0YXRlLG51bGwsdCl9fShlKX10LkJyb2FkY2FzdENoYW5uZWw9YyxjLl9wdWJrZXk9ITAsYy5wcm90b3R5cGU9e3Bvc3RNZXNzYWdlOmZ1bmN0aW9uKGUpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBFcnJvcihcIkJyb2FkY2FzdENoYW5uZWwucG9zdE1lc3NhZ2UoKTogQ2Fubm90IHBvc3QgbWVzc2FnZSBhZnRlciBjaGFubmVsIGhhcyBjbG9zZWQgXCIrSlNPTi5zdHJpbmdpZnkoZSkpO3JldHVybiBsKHRoaXMsXCJtZXNzYWdlXCIsZSl9LHBvc3RJbnRlcm5hbDpmdW5jdGlvbihlKXtyZXR1cm4gbCh0aGlzLFwiaW50ZXJuYWxcIixlKX0sc2V0IG9ubWVzc2FnZShlKXt2YXIgdD17dGltZTp0aGlzLm1ldGhvZC5taWNyb1NlY29uZHMoKSxmbjplfTtoKHRoaXMsXCJtZXNzYWdlXCIsdGhpcy5fb25NTCksZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZT8odGhpcy5fb25NTD10LGYodGhpcyxcIm1lc3NhZ2VcIix0KSk6dGhpcy5fb25NTD1udWxsfSxhZGRFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGUsdCl7Zih0aGlzLGUse3RpbWU6dGhpcy5tZXRob2QubWljcm9TZWNvbmRzKCksZm46dH0pfSxyZW1vdmVFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGUsdCl7aCh0aGlzLGUsdGhpcy5fYWRkRUxbZV0uZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZm49PT10fSkpKX0sY2xvc2U6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKCF0aGlzLmNsb3NlZCl7aS5kZWxldGUodGhpcyksdGhpcy5jbG9zZWQ9ITA7dmFyIHQ9dGhpcy5fcHJlcFA/dGhpcy5fcHJlcFA6ci5QUk9NSVNFX1JFU09MVkVEX1ZPSUQ7cmV0dXJuIHRoaXMuX29uTUw9bnVsbCx0aGlzLl9hZGRFTC5tZXNzYWdlPVtdLHQudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5hbGwoQXJyYXkuZnJvbShlLl91TVApKX0pKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLmFsbChlLl9iZWZDLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0pKSl9KSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gZS5tZXRob2QuY2xvc2UoZS5fc3RhdGUpfSkpfX0sZ2V0IHR5cGUoKXtyZXR1cm4gdGhpcy5tZXRob2QudHlwZX0sZ2V0IGlzQ2xvc2VkKCl7cmV0dXJuIHRoaXMuY2xvc2VkfX19LDQzNzooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9big1ODUpO2UuZXhwb3J0cz17QnJvYWRjYXN0Q2hhbm5lbDpyLkJyb2FkY2FzdENoYW5uZWwsY3JlYXRlTGVhZGVyRWxlY3Rpb246ci5jcmVhdGVMZWFkZXJFbGVjdGlvbixjbGVhck5vZGVGb2xkZXI6ci5jbGVhck5vZGVGb2xkZXIsZW5mb3JjZU9wdGlvbnM6ci5lbmZvcmNlT3B0aW9ucyxiZUxlYWRlcjpyLmJlTGVhZGVyfX0sNTg1OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIkJyb2FkY2FzdENoYW5uZWxcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5Ccm9hZGNhc3RDaGFubmVsfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiT1BFTl9CUk9BRENBU1RfQ0hBTk5FTFNcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5PUEVOX0JST0FEQ0FTVF9DSEFOTkVMU319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImJlTGVhZGVyXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uYmVMZWFkZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJjbGVhck5vZGVGb2xkZXJcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5jbGVhck5vZGVGb2xkZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJjcmVhdGVMZWFkZXJFbGVjdGlvblwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmNyZWF0ZUxlYWRlckVsZWN0aW9ufX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZW5mb3JjZU9wdGlvbnNcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5lbmZvcmNlT3B0aW9uc319KTt2YXIgcj1uKDk5MSksbz1uKDU1MCl9LDU1MDooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5iZUxlYWRlcj1hLHQuY3JlYXRlTGVhZGVyRWxlY3Rpb249ZnVuY3Rpb24oZSx0KXtpZihlLl9sZWFkZXJFbGVjdG9yKXRocm93IG5ldyBFcnJvcihcIkJyb2FkY2FzdENoYW5uZWwgYWxyZWFkeSBoYXMgYSBsZWFkZXItZWxlY3RvclwiKTt0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGV8fChlPXt9KSwoZT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUpKSkuZmFsbGJhY2tJbnRlcnZhbHx8KGUuZmFsbGJhY2tJbnRlcnZhbD0zZTMpLGUucmVzcG9uc2VUaW1lfHwoZS5yZXNwb25zZVRpbWU9dC5tZXRob2QuYXZlcmFnZVJlc3BvbnNlVGltZSh0Lm9wdGlvbnMpKSxlfSh0LGUpO3ZhciBuPW5ldyBzKGUsdCk7cmV0dXJuIGUuX2JlZkMucHVzaCgoZnVuY3Rpb24oKXtyZXR1cm4gbi5kaWUoKX0pKSxlLl9sZWFkZXJFbGVjdG9yPW4sbn07dmFyIHI9bigyMDIpLG89big0OTkpLHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO3RoaXMuYnJvYWRjYXN0Q2hhbm5lbD1lLHRoaXMuX29wdGlvbnM9dCx0aGlzLmlzTGVhZGVyPSExLHRoaXMuaGFzTGVhZGVyPSExLHRoaXMuaXNEZWFkPSExLHRoaXMudG9rZW49KDAsci5yYW5kb21Ub2tlbikoKSx0aGlzLl9hcGxRPXIuUFJPTUlTRV9SRVNPTFZFRF9WT0lELHRoaXMuX2FwbFFDPTAsdGhpcy5fdW5sPVtdLHRoaXMuX2xzdG5zPVtdLHRoaXMuX2RwTD1mdW5jdGlvbigpe30sdGhpcy5fZHBMQz0hMTt2YXIgbz1mdW5jdGlvbihlKXtcImxlYWRlclwiPT09ZS5jb250ZXh0JiYoXCJkZWF0aFwiPT09ZS5hY3Rpb24mJihuLmhhc0xlYWRlcj0hMSksXCJ0ZWxsXCI9PT1lLmFjdGlvbiYmKG4uaGFzTGVhZGVyPSEwKSl9O3RoaXMuYnJvYWRjYXN0Q2hhbm5lbC5hZGRFdmVudExpc3RlbmVyKFwiaW50ZXJuYWxcIixvKSx0aGlzLl9sc3Rucy5wdXNoKG8pfTtmdW5jdGlvbiBpKGUsdCl7dmFyIG49e2NvbnRleHQ6XCJsZWFkZXJcIixhY3Rpb246dCx0b2tlbjplLnRva2VufTtyZXR1cm4gZS5icm9hZGNhc3RDaGFubmVsLnBvc3RJbnRlcm5hbChuKX1mdW5jdGlvbiBhKGUpe2UuaXNMZWFkZXI9ITAsZS5oYXNMZWFkZXI9ITA7dmFyIHQ9KDAsby5hZGQpKChmdW5jdGlvbigpe3JldHVybiBlLmRpZSgpfSkpO2UuX3VubC5wdXNoKHQpO3ZhciBuPWZ1bmN0aW9uKHQpe1wibGVhZGVyXCI9PT10LmNvbnRleHQmJlwiYXBwbHlcIj09PXQuYWN0aW9uJiZpKGUsXCJ0ZWxsXCIpLFwibGVhZGVyXCIhPT10LmNvbnRleHR8fFwidGVsbFwiIT09dC5hY3Rpb258fGUuX2RwTEN8fChlLl9kcExDPSEwLGUuX2RwTCgpLGkoZSxcInRlbGxcIikpfTtyZXR1cm4gZS5icm9hZGNhc3RDaGFubmVsLmFkZEV2ZW50TGlzdGVuZXIoXCJpbnRlcm5hbFwiLG4pLGUuX2xzdG5zLnB1c2gobiksaShlLFwidGVsbFwiKX1zLnByb3RvdHlwZT17YXBwbHlPbmNlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuaXNMZWFkZXI/KDAsci5zbGVlcCkoMCwhMCk6dGhpcy5pc0RlYWQ/KDAsci5zbGVlcCkoMCwhMSk6dGhpcy5fYXBsUUM+MT90aGlzLl9hcGxROih0aGlzLl9hcGxRQz10aGlzLl9hcGxRQysxLHRoaXMuX2FwbFE9dGhpcy5fYXBsUS50aGVuKChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe2lmKHQuaXNMZWFkZXIpcmV0dXJuIHIuUFJPTUlTRV9SRVNPTFZFRF9UUlVFO3ZhciBuLG89ITEscz1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7bj1mdW5jdGlvbigpe289ITAsZSgpfX0pKSx1PVtdLGM9ZnVuY3Rpb24oZSl7XCJsZWFkZXJcIj09PWUuY29udGV4dCYmZS50b2tlbiE9dC50b2tlbiYmKHUucHVzaChlKSxcImFwcGx5XCI9PT1lLmFjdGlvbiYmZS50b2tlbj50LnRva2VuJiZuKCksXCJ0ZWxsXCI9PT1lLmFjdGlvbiYmKG4oKSx0Lmhhc0xlYWRlcj0hMCkpfTt0LmJyb2FkY2FzdENoYW5uZWwuYWRkRXZlbnRMaXN0ZW5lcihcImludGVybmFsXCIsYyk7dmFyIGw9ZT80KnQuX29wdGlvbnMucmVzcG9uc2VUaW1lOnQuX29wdGlvbnMucmVzcG9uc2VUaW1lO3JldHVybiBpKHQsXCJhcHBseVwiKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJhY2UoWygwLHIuc2xlZXApKGwpLHMudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKX0pKV0pfSkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGkodCxcImFwcGx5XCIpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmFjZShbKDAsci5zbGVlcCkobCkscy50aGVuKChmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IpfSkpXSl9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7fSkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHQuYnJvYWRjYXN0Q2hhbm5lbC5yZW1vdmVFdmVudExpc3RlbmVyKFwiaW50ZXJuYWxcIixjKSwhbyYmYSh0KS50aGVuKChmdW5jdGlvbigpe3JldHVybiEwfSkpfSkpfSgpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7dC5fYXBsUUM9dC5fYXBsUUMtMX0pKSx0aGlzLl9hcGxRLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHQuaXNMZWFkZXJ9KSkpfSxhd2FpdExlYWRlcnNoaXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYUxQfHwodGhpcy5fYUxQPShlPXRoaXMpLmlzTGVhZGVyP3IuUFJPTUlTRV9SRVNPTFZFRF9WT0lEOm5ldyBQcm9taXNlKChmdW5jdGlvbih0KXt2YXIgbj0hMTtmdW5jdGlvbiBvKCl7bnx8KG49ITAsZS5icm9hZGNhc3RDaGFubmVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJpbnRlcm5hbFwiLHMpLHQoITApKX1lLmFwcGx5T25jZSgpLnRoZW4oKGZ1bmN0aW9uKCl7ZS5pc0xlYWRlciYmbygpfSkpLGZ1bmN0aW9uIHQoKXtyZXR1cm4oMCxyLnNsZWVwKShlLl9vcHRpb25zLmZhbGxiYWNrSW50ZXJ2YWwpLnRoZW4oKGZ1bmN0aW9uKCl7aWYoIWUuaXNEZWFkJiYhbilyZXR1cm4gZS5pc0xlYWRlcj92b2lkIG8oKTplLmFwcGx5T25jZSghMCkudGhlbigoZnVuY3Rpb24oKXtlLmlzTGVhZGVyP28oKTp0KCl9KSl9KSl9KCk7dmFyIHM9ZnVuY3Rpb24odCl7XCJsZWFkZXJcIj09PXQuY29udGV4dCYmXCJkZWF0aFwiPT09dC5hY3Rpb24mJihlLmhhc0xlYWRlcj0hMSxlLmFwcGx5T25jZSgpLnRoZW4oKGZ1bmN0aW9uKCl7ZS5pc0xlYWRlciYmbygpfSkpKX07ZS5icm9hZGNhc3RDaGFubmVsLmFkZEV2ZW50TGlzdGVuZXIoXCJpbnRlcm5hbFwiLHMpLGUuX2xzdG5zLnB1c2gocyl9KSkpLHRoaXMuX2FMUDt2YXIgZX0sc2V0IG9uZHVwbGljYXRlKGUpe3RoaXMuX2RwTD1lfSxkaWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiB0aGlzLl9sc3Rucy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5icm9hZGNhc3RDaGFubmVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJpbnRlcm5hbFwiLHQpfSkpLHRoaXMuX2xzdG5zPVtdLHRoaXMuX3VubC5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS5yZW1vdmUoKX0pKSx0aGlzLl91bmw9W10sdGhpcy5pc0xlYWRlciYmKHRoaXMuaGFzTGVhZGVyPSExLHRoaXMuaXNMZWFkZXI9ITEpLHRoaXMuaXNEZWFkPSEwLGkodGhpcyxcImRlYXRoXCIpfX19LDYzMjooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigzMTgpO24oOCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5jaG9vc2VNZXRob2Q9ZnVuY3Rpb24oZSl7dmFyIHQ9W10uY29uY2F0KGUubWV0aG9kcyxjKS5maWx0ZXIoQm9vbGVhbik7aWYoZS50eXBlKXtpZihcInNpbXVsYXRlXCI9PT1lLnR5cGUpcmV0dXJuIGEuZGVmYXVsdDt2YXIgbj10LmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnR5cGU9PT1lLnR5cGV9KSk7aWYobilyZXR1cm4gbjt0aHJvdyBuZXcgRXJyb3IoXCJtZXRob2QtdHlwZSBcIitlLnR5cGUrXCIgbm90IGZvdW5kXCIpfWUud2ViV29ya2VyU3VwcG9ydHx8dS5pc05vZGV8fCh0PXQuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm5cImlkYlwiIT09ZS50eXBlfSkpKTt2YXIgcj10LmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNhbkJlVXNlZCgpfSkpO2lmKHIpcmV0dXJuIHI7dGhyb3cgbmV3IEVycm9yKFwiTm8gdXNlYWJsZSBtZXRob2QgZm91bmQgaW4gXCIrSlNPTi5zdHJpbmdpZnkoYy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnR5cGV9KSkpKX07dmFyIG89cihuKDExNSkpLHM9cihuKDEyMikpLGk9cihuKDkyNCkpLGE9cihuKDU3NCkpLHU9bigyMDIpLGM9W28uZGVmYXVsdCxzLmRlZmF1bHQsaS5kZWZhdWx0XX0sMTIyOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmF2ZXJhZ2VSZXNwb25zZVRpbWU9dyx0LmNhbkJlVXNlZD1DLHQuY2xlYW5PbGRNZXNzYWdlcz1wLHQuY2xvc2U9eSx0LmNyZWF0ZT12LHQuY3JlYXRlRGF0YWJhc2U9Yyx0LmRlZmF1bHQ9dm9pZCAwLHQuZ2V0QWxsTWVzc2FnZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50cmFuc2FjdGlvbihhKS5vYmplY3RTdG9yZShhKSxuPVtdO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7dC5vcGVuQ3Vyc29yKCkub25zdWNjZXNzPWZ1bmN0aW9uKHQpe3ZhciByPXQudGFyZ2V0LnJlc3VsdDtyPyhuLnB1c2goci52YWx1ZSksci5jb250aW51ZSgpKTplKG4pfX0pKX0sdC5nZXRJZGI9dSx0LmdldE1lc3NhZ2VzSGlnaGVyVGhhbj1kLHQuZ2V0T2xkTWVzc2FnZXM9aCx0Lm1pY3JvU2Vjb25kcz12b2lkIDAsdC5vbk1lc3NhZ2U9Xyx0LnBvc3RNZXNzYWdlPWIsdC5yZW1vdmVNZXNzYWdlQnlJZD1mLHQudHlwZT12b2lkIDAsdC53cml0ZU1lc3NhZ2U9bDt2YXIgcj1uKDIwMiksbz1uKDE1MSkscz1uKDQyMyksaT1yLm1pY3JvU2Vjb25kczt0Lm1pY3JvU2Vjb25kcz1pO3ZhciBhPVwibWVzc2FnZXNcIjtmdW5jdGlvbiB1KCl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGluZGV4ZWREQilyZXR1cm4gaW5kZXhlZERCO2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cpe2lmKHZvaWQgMCE9PXdpbmRvdy5tb3pJbmRleGVkREIpcmV0dXJuIHdpbmRvdy5tb3pJbmRleGVkREI7aWYodm9pZCAwIT09d2luZG93LndlYmtpdEluZGV4ZWREQilyZXR1cm4gd2luZG93LndlYmtpdEluZGV4ZWREQjtpZih2b2lkIDAhPT13aW5kb3cubXNJbmRleGVkREIpcmV0dXJuIHdpbmRvdy5tc0luZGV4ZWREQn1yZXR1cm4hMX1mdW5jdGlvbiBjKGUpe3ZhciB0PVwicHVia2V5LmJyb2FkY2FzdC1jaGFubmVsLTAtXCIrZSxuPXUoKS5vcGVuKHQsMSk7cmV0dXJuIG4ub251cGdyYWRlbmVlZGVkPWZ1bmN0aW9uKGUpe2UudGFyZ2V0LnJlc3VsdC5jcmVhdGVPYmplY3RTdG9yZShhLHtrZXlQYXRoOlwiaWRcIixhdXRvSW5jcmVtZW50OiEwfSl9LG5ldyBQcm9taXNlKChmdW5jdGlvbihlLHQpe24ub25lcnJvcj1mdW5jdGlvbihlKXtyZXR1cm4gdChlKX0sbi5vbnN1Y2Nlc3M9ZnVuY3Rpb24oKXtlKG4ucmVzdWx0KX19KSl9ZnVuY3Rpb24gbChlLHQsbil7dmFyIHI9e3V1aWQ6dCx0aW1lOihuZXcgRGF0ZSkuZ2V0VGltZSgpLGRhdGE6bn0sbz1lLnRyYW5zYWN0aW9uKFthXSxcInJlYWR3cml0ZVwiKTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7by5vbmNvbXBsZXRlPWZ1bmN0aW9uKCl7cmV0dXJuIGUoKX0sby5vbmVycm9yPWZ1bmN0aW9uKGUpe3JldHVybiB0KGUpfSxvLm9iamVjdFN0b3JlKGEpLmFkZChyKX0pKX1mdW5jdGlvbiBkKGUsdCl7dmFyIG49ZS50cmFuc2FjdGlvbihhKS5vYmplY3RTdG9yZShhKSxyPVtdO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7KGZ1bmN0aW9uKCl7dHJ5e3ZhciBlPUlEQktleVJhbmdlLmJvdW5kKHQrMSwxLzApO3JldHVybiBuLm9wZW5DdXJzb3IoZSl9Y2F0Y2goZSl7cmV0dXJuIG4ub3BlbkN1cnNvcigpfX0oKSkub25zdWNjZXNzPWZ1bmN0aW9uKG4pe3ZhciBvPW4udGFyZ2V0LnJlc3VsdDtvP28udmFsdWUuaWQ8dCsxP28uY29udGludWUodCsxKTooci5wdXNoKG8udmFsdWUpLG8uY29udGludWUoKSk6ZShyKX19KSl9ZnVuY3Rpb24gZihlLHQpe3ZhciBuPWUudHJhbnNhY3Rpb24oW2FdLFwicmVhZHdyaXRlXCIpLm9iamVjdFN0b3JlKGEpLmRlbGV0ZSh0KTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe24ub25zdWNjZXNzPWZ1bmN0aW9uKCl7cmV0dXJuIGUoKX19KSl9ZnVuY3Rpb24gaChlLHQpe3ZhciBuPShuZXcgRGF0ZSkuZ2V0VGltZSgpLXQscj1lLnRyYW5zYWN0aW9uKGEpLm9iamVjdFN0b3JlKGEpLG89W107cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlKXtyLm9wZW5DdXJzb3IoKS5vbnN1Y2Nlc3M9ZnVuY3Rpb24odCl7dmFyIHI9dC50YXJnZXQucmVzdWx0O2lmKHIpe3ZhciBzPXIudmFsdWU7aWYoIShzLnRpbWU8bikpcmV0dXJuIHZvaWQgZShvKTtvLnB1c2gocyksci5jb250aW51ZSgpfWVsc2UgZShvKX19KSl9ZnVuY3Rpb24gcChlLHQpe3JldHVybiBoKGUsdCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIFByb21pc2UuYWxsKHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZihlLHQuaWQpfSkpKX0pKX1mdW5jdGlvbiB2KGUsdCl7cmV0dXJuIHQ9KDAscy5maWxsT3B0aW9uc1dpdGhEZWZhdWx0cykodCksYyhlKS50aGVuKChmdW5jdGlvbihuKXt2YXIgcz17Y2xvc2VkOiExLGxhc3RDdXJzb3JJZDowLGNoYW5uZWxOYW1lOmUsb3B0aW9uczp0LHV1aWQ6KDAsci5yYW5kb21Ub2tlbikoKSxlTUlzOm5ldyBvLk9ibGl2aW91c1NldCgyKnQuaWRiLnR0bCksd3JpdGVCbG9ja1Byb21pc2U6ci5QUk9NSVNFX1JFU09MVkVEX1ZPSUQsbWVzc2FnZXNDYWxsYmFjazpudWxsLHJlYWRRdWV1ZVByb21pc2VzOltdLGRiOm59O3JldHVybiBuLm9uY2xvc2U9ZnVuY3Rpb24oKXtzLmNsb3NlZD0hMCx0LmlkYi5vbmNsb3NlJiZ0LmlkYi5vbmNsb3NlKCl9LG0ocyksc30pKX1mdW5jdGlvbiBtKGUpe2UuY2xvc2VkfHxnKGUpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuKDAsci5zbGVlcCkoZS5vcHRpb25zLmlkYi5mYWxsYmFja0ludGVydmFsKX0pKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBtKGUpfSkpfWZ1bmN0aW9uIGcoZSl7cmV0dXJuIGUuY2xvc2VkP3IuUFJPTUlTRV9SRVNPTFZFRF9WT0lEOmUubWVzc2FnZXNDYWxsYmFjaz9kKGUuZGIsZS5sYXN0Q3Vyc29ySWQpLnRoZW4oKGZ1bmN0aW9uKHQpe3ZhciBuPXQuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4hIWV9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZD5lLmxhc3RDdXJzb3JJZCYmKGUubGFzdEN1cnNvcklkPXQuaWQpLHR9KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSx0KXtyZXR1cm4hKGUudXVpZD09PXQudXVpZHx8dC5lTUlzLmhhcyhlLmlkKXx8ZS5kYXRhLnRpbWU8dC5tZXNzYWdlc0NhbGxiYWNrVGltZSl9KHQsZSl9KSkuc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS50aW1lLXQudGltZX0pKTtyZXR1cm4gbi5mb3JFYWNoKChmdW5jdGlvbih0KXtlLm1lc3NhZ2VzQ2FsbGJhY2smJihlLmVNSXMuYWRkKHQuaWQpLGUubWVzc2FnZXNDYWxsYmFjayh0LmRhdGEpKX0pKSxyLlBST01JU0VfUkVTT0xWRURfVk9JRH0pKTpyLlBST01JU0VfUkVTT0xWRURfVk9JRH1mdW5jdGlvbiB5KGUpe2UuY2xvc2VkPSEwLGUuZGIuY2xvc2UoKX1mdW5jdGlvbiBiKGUsdCl7cmV0dXJuIGUud3JpdGVCbG9ja1Byb21pc2U9ZS53cml0ZUJsb2NrUHJvbWlzZS50aGVuKChmdW5jdGlvbigpe3JldHVybiBsKGUuZGIsZS51dWlkLHQpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7MD09PSgwLHIucmFuZG9tSW50KSgwLDEwKSYmcChlLmRiLGUub3B0aW9ucy5pZGIudHRsKX0pKSxlLndyaXRlQmxvY2tQcm9taXNlfWZ1bmN0aW9uIF8oZSx0LG4pe2UubWVzc2FnZXNDYWxsYmFja1RpbWU9bixlLm1lc3NhZ2VzQ2FsbGJhY2s9dCxnKGUpfWZ1bmN0aW9uIEMoKXtyZXR1cm4hci5pc05vZGUmJiEhdSgpfWZ1bmN0aW9uIHcoZSl7cmV0dXJuIDIqZS5pZGIuZmFsbGJhY2tJbnRlcnZhbH10LnR5cGU9XCJpZGJcIjt2YXIgRT17Y3JlYXRlOnYsY2xvc2U6eSxvbk1lc3NhZ2U6Xyxwb3N0TWVzc2FnZTpiLGNhbkJlVXNlZDpDLHR5cGU6XCJpZGJcIixhdmVyYWdlUmVzcG9uc2VUaW1lOncsbWljcm9TZWNvbmRzOml9O3QuZGVmYXVsdD1FfSw5MjQ6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuYWRkU3RvcmFnZUV2ZW50TGlzdGVuZXI9ZCx0LmF2ZXJhZ2VSZXNwb25zZVRpbWU9Zyx0LmNhbkJlVXNlZD1tLHQuY2xvc2U9cCx0LmNyZWF0ZT1oLHQuZGVmYXVsdD12b2lkIDAsdC5nZXRMb2NhbFN0b3JhZ2U9dSx0Lm1pY3JvU2Vjb25kcz12b2lkIDAsdC5vbk1lc3NhZ2U9dix0LnBvc3RNZXNzYWdlPWwsdC5yZW1vdmVTdG9yYWdlRXZlbnRMaXN0ZW5lcj1mLHQuc3RvcmFnZUtleT1jLHQudHlwZT12b2lkIDA7dmFyIHI9bigxNTEpLG89big0MjMpLHM9bigyMDIpLGk9cy5taWNyb1NlY29uZHM7dC5taWNyb1NlY29uZHM9aTt2YXIgYT1cImxvY2Fsc3RvcmFnZVwiO2Z1bmN0aW9uIHUoKXt2YXIgZTtpZihcInVuZGVmaW5lZFwiPT10eXBlb2Ygd2luZG93KXJldHVybiBudWxsO3RyeXtlPXdpbmRvdy5sb2NhbFN0b3JhZ2UsZT13aW5kb3dbXCJpZTgtZXZlbnRsaXN0ZW5lci9zdG9yYWdlXCJdfHx3aW5kb3cubG9jYWxTdG9yYWdlfWNhdGNoKGUpe31yZXR1cm4gZX1mdW5jdGlvbiBjKGUpe3JldHVyblwicHVia2V5LmJyb2FkY2FzdENoYW5uZWwtXCIrZX1mdW5jdGlvbiBsKGUsdCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuKXsoMCxzLnNsZWVwKSgpLnRoZW4oKGZ1bmN0aW9uKCl7dmFyIHI9YyhlLmNoYW5uZWxOYW1lKSxvPXt0b2tlbjooMCxzLnJhbmRvbVRva2VuKSgpLHRpbWU6KG5ldyBEYXRlKS5nZXRUaW1lKCksZGF0YTp0LHV1aWQ6ZS51dWlkfSxpPUpTT04uc3RyaW5naWZ5KG8pO3UoKS5zZXRJdGVtKHIsaSk7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoXCJFdmVudFwiKTthLmluaXRFdmVudChcInN0b3JhZ2VcIiwhMCwhMCksYS5rZXk9cixhLm5ld1ZhbHVlPWksd2luZG93LmRpc3BhdGNoRXZlbnQoYSksbigpfSkpfSkpfWZ1bmN0aW9uIGQoZSx0KXt2YXIgbj1jKGUpLHI9ZnVuY3Rpb24oZSl7ZS5rZXk9PT1uJiZ0KEpTT04ucGFyc2UoZS5uZXdWYWx1ZSkpfTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJzdG9yYWdlXCIscikscn1mdW5jdGlvbiBmKGUpe3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwic3RvcmFnZVwiLGUpfWZ1bmN0aW9uIGgoZSx0KXtpZih0PSgwLG8uZmlsbE9wdGlvbnNXaXRoRGVmYXVsdHMpKHQpLCFtKCkpdGhyb3cgbmV3IEVycm9yKFwiQnJvYWRjYXN0Q2hhbm5lbDogbG9jYWxzdG9yYWdlIGNhbm5vdCBiZSB1c2VkXCIpO3ZhciBuPSgwLHMucmFuZG9tVG9rZW4pKCksaT1uZXcgci5PYmxpdmlvdXNTZXQodC5sb2NhbHN0b3JhZ2UucmVtb3ZlVGltZW91dCksYT17Y2hhbm5lbE5hbWU6ZSx1dWlkOm4sZU1JczppfTtyZXR1cm4gYS5saXN0ZW5lcj1kKGUsKGZ1bmN0aW9uKGUpe2EubWVzc2FnZXNDYWxsYmFjayYmZS51dWlkIT09biYmZS50b2tlbiYmIWkuaGFzKGUudG9rZW4pJiYoZS5kYXRhLnRpbWUmJmUuZGF0YS50aW1lPGEubWVzc2FnZXNDYWxsYmFja1RpbWV8fChpLmFkZChlLnRva2VuKSxhLm1lc3NhZ2VzQ2FsbGJhY2soZS5kYXRhKSkpfSkpLGF9ZnVuY3Rpb24gcChlKXtmKGUubGlzdGVuZXIpfWZ1bmN0aW9uIHYoZSx0LG4pe2UubWVzc2FnZXNDYWxsYmFja1RpbWU9bixlLm1lc3NhZ2VzQ2FsbGJhY2s9dH1mdW5jdGlvbiBtKCl7aWYocy5pc05vZGUpcmV0dXJuITE7dmFyIGU9dSgpO2lmKCFlKXJldHVybiExO3RyeXt2YXIgdD1cIl9fYnJvYWRjYXN0Y2hhbm5lbF9jaGVja1wiO2Uuc2V0SXRlbSh0LFwid29ya3NcIiksZS5yZW1vdmVJdGVtKHQpfWNhdGNoKGUpe3JldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIGcoKXt2YXIgZT1uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7cmV0dXJuIGUuaW5jbHVkZXMoXCJzYWZhcmlcIikmJiFlLmluY2x1ZGVzKFwiY2hyb21lXCIpPzI0MDoxMjB9dC50eXBlPWE7dmFyIHk9e2NyZWF0ZTpoLGNsb3NlOnAsb25NZXNzYWdlOnYscG9zdE1lc3NhZ2U6bCxjYW5CZVVzZWQ6bSx0eXBlOmEsYXZlcmFnZVJlc3BvbnNlVGltZTpnLG1pY3JvU2Vjb25kczppfTt0LmRlZmF1bHQ9eX0sMTE1OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmF2ZXJhZ2VSZXNwb25zZVRpbWU9ZCx0LmNhbkJlVXNlZD1sLHQuY2xvc2U9YSx0LmNyZWF0ZT1pLHQubWljcm9TZWNvbmRzPXQuZGVmYXVsdD12b2lkIDAsdC5vbk1lc3NhZ2U9Yyx0LnBvc3RNZXNzYWdlPXUsdC50eXBlPXZvaWQgMDt2YXIgcj1uKDIwMiksbz1yLm1pY3JvU2Vjb25kczt0Lm1pY3JvU2Vjb25kcz1vO3ZhciBzPVwibmF0aXZlXCI7ZnVuY3Rpb24gaShlKXt2YXIgdD17bWVzc2FnZXNDYWxsYmFjazpudWxsLGJjOm5ldyBCcm9hZGNhc3RDaGFubmVsKGUpLHN1YkZuczpbXX07cmV0dXJuIHQuYmMub25tZXNzYWdlPWZ1bmN0aW9uKGUpe3QubWVzc2FnZXNDYWxsYmFjayYmdC5tZXNzYWdlc0NhbGxiYWNrKGUuZGF0YSl9LHR9ZnVuY3Rpb24gYShlKXtlLmJjLmNsb3NlKCksZS5zdWJGbnM9W119ZnVuY3Rpb24gdShlLHQpe3RyeXtyZXR1cm4gZS5iYy5wb3N0TWVzc2FnZSh0LCExKSxyLlBST01JU0VfUkVTT0xWRURfVk9JRH1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9fWZ1bmN0aW9uIGMoZSx0KXtlLm1lc3NhZ2VzQ2FsbGJhY2s9dH1mdW5jdGlvbiBsKCl7aWYoci5pc05vZGUmJlwidW5kZWZpbmVkXCI9PXR5cGVvZiB3aW5kb3cpcmV0dXJuITE7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgQnJvYWRjYXN0Q2hhbm5lbCl7aWYoQnJvYWRjYXN0Q2hhbm5lbC5fcHVia2V5KXRocm93IG5ldyBFcnJvcihcIkJyb2FkY2FzdENoYW5uZWw6IERvIG5vdCBvdmVyd3JpdGUgd2luZG93LkJyb2FkY2FzdENoYW5uZWwgd2l0aCB0aGlzIG1vZHVsZSwgdGhpcyBpcyBub3QgYSBwb2x5ZmlsbFwiKTtyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBkKCl7cmV0dXJuIDE1MH10LnR5cGU9czt2YXIgZj17Y3JlYXRlOmksY2xvc2U6YSxvbk1lc3NhZ2U6Yyxwb3N0TWVzc2FnZTp1LGNhbkJlVXNlZDpsLHR5cGU6cyxhdmVyYWdlUmVzcG9uc2VUaW1lOmQsbWljcm9TZWNvbmRzOm99O3QuZGVmYXVsdD1mfSw1NzQ6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuYXZlcmFnZVJlc3BvbnNlVGltZT1kLHQuY2FuQmVVc2VkPWwsdC5jbG9zZT1hLHQuY3JlYXRlPWksdC5taWNyb1NlY29uZHM9dC5kZWZhdWx0PXZvaWQgMCx0Lm9uTWVzc2FnZT1jLHQucG9zdE1lc3NhZ2U9dSx0LnR5cGU9dm9pZCAwO3ZhciByPW4oMjAyKS5taWNyb1NlY29uZHM7dC5taWNyb1NlY29uZHM9cjt2YXIgbz1cInNpbXVsYXRlXCI7dC50eXBlPW87dmFyIHM9bmV3IFNldDtmdW5jdGlvbiBpKGUpe3ZhciB0PXtuYW1lOmUsbWVzc2FnZXNDYWxsYmFjazpudWxsfTtyZXR1cm4gcy5hZGQodCksdH1mdW5jdGlvbiBhKGUpe3MuZGVsZXRlKGUpfWZ1bmN0aW9uIHUoZSx0KXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4pe3JldHVybiBzZXRUaW1lb3V0KChmdW5jdGlvbigpe0FycmF5LmZyb20ocykuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5uYW1lPT09ZS5uYW1lfSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQhPT1lfSkpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuISFlLm1lc3NhZ2VzQ2FsbGJhY2t9KSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUubWVzc2FnZXNDYWxsYmFjayh0KX0pKSxuKCl9KSw1KX0pKX1mdW5jdGlvbiBjKGUsdCl7ZS5tZXNzYWdlc0NhbGxiYWNrPXR9ZnVuY3Rpb24gbCgpe3JldHVybiEwfWZ1bmN0aW9uIGQoKXtyZXR1cm4gNX12YXIgZj17Y3JlYXRlOmksY2xvc2U6YSxvbk1lc3NhZ2U6Yyxwb3N0TWVzc2FnZTp1LGNhbkJlVXNlZDpsLHR5cGU6byxhdmVyYWdlUmVzcG9uc2VUaW1lOmQsbWljcm9TZWNvbmRzOnJ9O3QuZGVmYXVsdD1mfSw0MjM6KGUsdCk9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmZpbGxPcHRpb25zV2l0aERlZmF1bHRzPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LHQ9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlKSk7cmV0dXJuIHZvaWQgMD09PXQud2ViV29ya2VyU3VwcG9ydCYmKHQud2ViV29ya2VyU3VwcG9ydD0hMCksdC5pZGJ8fCh0LmlkYj17fSksdC5pZGIudHRsfHwodC5pZGIudHRsPTQ1ZTMpLHQuaWRiLmZhbGxiYWNrSW50ZXJ2YWx8fCh0LmlkYi5mYWxsYmFja0ludGVydmFsPTE1MCksZS5pZGImJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUuaWRiLm9uY2xvc2UmJih0LmlkYi5vbmNsb3NlPWUuaWRiLm9uY2xvc2UpLHQubG9jYWxzdG9yYWdlfHwodC5sb2NhbHN0b3JhZ2U9e30pLHQubG9jYWxzdG9yYWdlLnJlbW92ZVRpbWVvdXR8fCh0LmxvY2Fsc3RvcmFnZS5yZW1vdmVUaW1lb3V0PTZlNCksZS5tZXRob2RzJiYodC5tZXRob2RzPWUubWV0aG9kcyksdC5ub2RlfHwodC5ub2RlPXt9KSx0Lm5vZGUudHRsfHwodC5ub2RlLnR0bD0xMmU0KSx0Lm5vZGUubWF4UGFyYWxsZWxXcml0ZXN8fCh0Lm5vZGUubWF4UGFyYWxsZWxXcml0ZXM9MjA0OCksdm9pZCAwPT09dC5ub2RlLnVzZUZhc3RQYXRoJiYodC5ub2RlLnVzZUZhc3RQYXRoPSEwKSx0fX0sMjAyOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDE1NSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5pc05vZGU9dC5QUk9NSVNFX1JFU09MVkVEX1ZPSUQ9dC5QUk9NSVNFX1JFU09MVkVEX1RSVUU9dC5QUk9NSVNFX1JFU09MVkVEX0ZBTFNFPXZvaWQgMCx0LmlzUHJvbWlzZT1mdW5jdGlvbihlKXtyZXR1cm4hKCFlfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBlLnRoZW4pfSx0Lm1pY3JvU2Vjb25kcz1mdW5jdGlvbigpe3ZhciBlPShuZXcgRGF0ZSkuZ2V0VGltZSgpO3JldHVybiBlPT09YT8xZTMqZSsgKyt1OihhPWUsdT0wLDFlMyplKX0sdC5yYW5kb21JbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKih0LWUrMSkrZSl9LHQucmFuZG9tVG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIpfSx0LnNsZWVwPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGV8fChlPTApLG5ldyBQcm9taXNlKChmdW5jdGlvbihuKXtyZXR1cm4gc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gbih0KX0pLGUpfSkpfTt2YXIgbz1Qcm9taXNlLnJlc29sdmUoITEpO3QuUFJPTUlTRV9SRVNPTFZFRF9GQUxTRT1vO3ZhciBzPVByb21pc2UucmVzb2x2ZSghMCk7dC5QUk9NSVNFX1JFU09MVkVEX1RSVUU9czt2YXIgaT1Qcm9taXNlLnJlc29sdmUoKTt0LlBST01JU0VfUkVTT0xWRURfVk9JRD1pO3ZhciBhPTAsdT0wLGM9XCJbb2JqZWN0IHByb2Nlc3NdXCI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodm9pZCAwIT09cj9yOjApO3QuaXNOb2RlPWN9LDIyNzooZSx0LG4pPT57dmFyIHI9bigxNTUpO3QuZm9ybWF0QXJncz1mdW5jdGlvbih0KXtpZih0WzBdPSh0aGlzLnVzZUNvbG9ycz9cIiVjXCI6XCJcIikrdGhpcy5uYW1lc3BhY2UrKHRoaXMudXNlQ29sb3JzP1wiICVjXCI6XCIgXCIpK3RbMF0rKHRoaXMudXNlQ29sb3JzP1wiJWMgXCI6XCIgXCIpK1wiK1wiK2UuZXhwb3J0cy5odW1hbml6ZSh0aGlzLmRpZmYpLCF0aGlzLnVzZUNvbG9ycylyZXR1cm47Y29uc3Qgbj1cImNvbG9yOiBcIit0aGlzLmNvbG9yO3Quc3BsaWNlKDEsMCxuLFwiY29sb3I6IGluaGVyaXRcIik7bGV0IHI9MCxvPTA7dFswXS5yZXBsYWNlKC8lW2EtekEtWiVdL2csKGU9PntcIiUlXCIhPT1lJiYocisrLFwiJWNcIj09PWUmJihvPXIpKX0pKSx0LnNwbGljZShvLDAsbil9LHQuc2F2ZT1mdW5jdGlvbihlKXt0cnl7ZT90LnN0b3JhZ2Uuc2V0SXRlbShcImRlYnVnXCIsZSk6dC5zdG9yYWdlLnJlbW92ZUl0ZW0oXCJkZWJ1Z1wiKX1jYXRjaChlKXt9fSx0LmxvYWQ9ZnVuY3Rpb24oKXtsZXQgZTt0cnl7ZT10LnN0b3JhZ2UuZ2V0SXRlbShcImRlYnVnXCIpfWNhdGNoKGUpe31yZXR1cm4hZSYmdm9pZCAwIT09ciYmXCJlbnZcImluIHImJihlPXIuZW52LkRFQlVHKSxlfSx0LnVzZUNvbG9ycz1mdW5jdGlvbigpe3JldHVybiEoXCJ1bmRlZmluZWRcIj09dHlwZW9mIHdpbmRvd3x8IXdpbmRvdy5wcm9jZXNzfHxcInJlbmRlcmVyXCIhPT13aW5kb3cucHJvY2Vzcy50eXBlJiYhd2luZG93LnByb2Nlc3MuX19ud2pzKXx8KFwidW5kZWZpbmVkXCI9PXR5cGVvZiBuYXZpZ2F0b3J8fCFuYXZpZ2F0b3IudXNlckFnZW50fHwhbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLm1hdGNoKC8oZWRnZXx0cmlkZW50KVxcLyhcXGQrKS8pKSYmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50JiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5XZWJraXRBcHBlYXJhbmNlfHxcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuY29uc29sZSYmKHdpbmRvdy5jb25zb2xlLmZpcmVidWd8fHdpbmRvdy5jb25zb2xlLmV4Y2VwdGlvbiYmd2luZG93LmNvbnNvbGUudGFibGUpfHxcInVuZGVmaW5lZFwiIT10eXBlb2YgbmF2aWdhdG9yJiZuYXZpZ2F0b3IudXNlckFnZW50JiZuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goL2ZpcmVmb3hcXC8oXFxkKykvKSYmcGFyc2VJbnQoUmVnRXhwLiQxLDEwKT49MzF8fFwidW5kZWZpbmVkXCIhPXR5cGVvZiBuYXZpZ2F0b3ImJm5hdmlnYXRvci51c2VyQWdlbnQmJm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5tYXRjaCgvYXBwbGV3ZWJraXRcXC8oXFxkKykvKSl9LHQuc3RvcmFnZT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gbG9jYWxTdG9yYWdlfWNhdGNoKGUpe319KCksdC5kZXN0cm95PSgoKT0+e2xldCBlPSExO3JldHVybigpPT57ZXx8KGU9ITAsY29uc29sZS53YXJuKFwiSW5zdGFuY2UgbWV0aG9kIGBkZWJ1Zy5kZXN0cm95KClgIGlzIGRlcHJlY2F0ZWQgYW5kIG5vIGxvbmdlciBkb2VzIGFueXRoaW5nLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiBvZiBgZGVidWdgLlwiKSl9fSkoKSx0LmNvbG9ycz1bXCIjMDAwMENDXCIsXCIjMDAwMEZGXCIsXCIjMDAzM0NDXCIsXCIjMDAzM0ZGXCIsXCIjMDA2NkNDXCIsXCIjMDA2NkZGXCIsXCIjMDA5OUNDXCIsXCIjMDA5OUZGXCIsXCIjMDBDQzAwXCIsXCIjMDBDQzMzXCIsXCIjMDBDQzY2XCIsXCIjMDBDQzk5XCIsXCIjMDBDQ0NDXCIsXCIjMDBDQ0ZGXCIsXCIjMzMwMENDXCIsXCIjMzMwMEZGXCIsXCIjMzMzM0NDXCIsXCIjMzMzM0ZGXCIsXCIjMzM2NkNDXCIsXCIjMzM2NkZGXCIsXCIjMzM5OUNDXCIsXCIjMzM5OUZGXCIsXCIjMzNDQzAwXCIsXCIjMzNDQzMzXCIsXCIjMzNDQzY2XCIsXCIjMzNDQzk5XCIsXCIjMzNDQ0NDXCIsXCIjMzNDQ0ZGXCIsXCIjNjYwMENDXCIsXCIjNjYwMEZGXCIsXCIjNjYzM0NDXCIsXCIjNjYzM0ZGXCIsXCIjNjZDQzAwXCIsXCIjNjZDQzMzXCIsXCIjOTkwMENDXCIsXCIjOTkwMEZGXCIsXCIjOTkzM0NDXCIsXCIjOTkzM0ZGXCIsXCIjOTlDQzAwXCIsXCIjOTlDQzMzXCIsXCIjQ0MwMDAwXCIsXCIjQ0MwMDMzXCIsXCIjQ0MwMDY2XCIsXCIjQ0MwMDk5XCIsXCIjQ0MwMENDXCIsXCIjQ0MwMEZGXCIsXCIjQ0MzMzAwXCIsXCIjQ0MzMzMzXCIsXCIjQ0MzMzY2XCIsXCIjQ0MzMzk5XCIsXCIjQ0MzM0NDXCIsXCIjQ0MzM0ZGXCIsXCIjQ0M2NjAwXCIsXCIjQ0M2NjMzXCIsXCIjQ0M5OTAwXCIsXCIjQ0M5OTMzXCIsXCIjQ0NDQzAwXCIsXCIjQ0NDQzMzXCIsXCIjRkYwMDAwXCIsXCIjRkYwMDMzXCIsXCIjRkYwMDY2XCIsXCIjRkYwMDk5XCIsXCIjRkYwMENDXCIsXCIjRkYwMEZGXCIsXCIjRkYzMzAwXCIsXCIjRkYzMzMzXCIsXCIjRkYzMzY2XCIsXCIjRkYzMzk5XCIsXCIjRkYzM0NDXCIsXCIjRkYzM0ZGXCIsXCIjRkY2NjAwXCIsXCIjRkY2NjMzXCIsXCIjRkY5OTAwXCIsXCIjRkY5OTMzXCIsXCIjRkZDQzAwXCIsXCIjRkZDQzMzXCJdLHQubG9nPWNvbnNvbGUuZGVidWd8fGNvbnNvbGUubG9nfHwoKCk9Pnt9KSxlLmV4cG9ydHM9big0NDcpKHQpO2NvbnN0e2Zvcm1hdHRlcnM6b309ZS5leHBvcnRzO28uaj1mdW5jdGlvbihlKXt0cnl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGUpfWNhdGNoKGUpe3JldHVyblwiW1VuZXhwZWN0ZWRKU09OUGFyc2VFcnJvcl06IFwiK2UubWVzc2FnZX19fSw0NDc6KGUsdCxuKT0+e2UuZXhwb3J0cz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe2xldCBuLG8scyxpPW51bGw7ZnVuY3Rpb24gYSguLi5lKXtpZighYS5lbmFibGVkKXJldHVybjtjb25zdCByPWEsbz1OdW1iZXIobmV3IERhdGUpLHM9by0obnx8byk7ci5kaWZmPXMsci5wcmV2PW4sci5jdXJyPW8sbj1vLGVbMF09dC5jb2VyY2UoZVswXSksXCJzdHJpbmdcIiE9dHlwZW9mIGVbMF0mJmUudW5zaGlmdChcIiVPXCIpO2xldCBpPTA7ZVswXT1lWzBdLnJlcGxhY2UoLyUoW2EtekEtWiVdKS9nLCgobixvKT0+e2lmKFwiJSVcIj09PW4pcmV0dXJuXCIlXCI7aSsrO2NvbnN0IHM9dC5mb3JtYXR0ZXJzW29dO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHMpe2NvbnN0IHQ9ZVtpXTtuPXMuY2FsbChyLHQpLGUuc3BsaWNlKGksMSksaS0tfXJldHVybiBufSkpLHQuZm9ybWF0QXJncy5jYWxsKHIsZSksKHIubG9nfHx0LmxvZykuYXBwbHkocixlKX1yZXR1cm4gYS5uYW1lc3BhY2U9ZSxhLnVzZUNvbG9ycz10LnVzZUNvbG9ycygpLGEuY29sb3I9dC5zZWxlY3RDb2xvcihlKSxhLmV4dGVuZD1yLGEuZGVzdHJveT10LmRlc3Ryb3ksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsXCJlbmFibGVkXCIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiExLGdldDooKT0+bnVsbCE9PWk/aToobyE9PXQubmFtZXNwYWNlcyYmKG89dC5uYW1lc3BhY2VzLHM9dC5lbmFibGVkKGUpKSxzKSxzZXQ6ZT0+e2k9ZX19KSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmluaXQmJnQuaW5pdChhKSxhfWZ1bmN0aW9uIHIoZSxuKXtjb25zdCByPXQodGhpcy5uYW1lc3BhY2UrKHZvaWQgMD09PW4/XCI6XCI6bikrZSk7cmV0dXJuIHIubG9nPXRoaXMubG9nLHJ9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZS50b1N0cmluZygpLnN1YnN0cmluZygyLGUudG9TdHJpbmcoKS5sZW5ndGgtMikucmVwbGFjZSgvXFwuXFwqXFw/JC8sXCIqXCIpfXJldHVybiB0LmRlYnVnPXQsdC5kZWZhdWx0PXQsdC5jb2VyY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvcj9lLnN0YWNrfHxlLm1lc3NhZ2U6ZX0sdC5kaXNhYmxlPWZ1bmN0aW9uKCl7Y29uc3QgZT1bLi4udC5uYW1lcy5tYXAobyksLi4udC5za2lwcy5tYXAobykubWFwKChlPT5cIi1cIitlKSldLmpvaW4oXCIsXCIpO3JldHVybiB0LmVuYWJsZShcIlwiKSxlfSx0LmVuYWJsZT1mdW5jdGlvbihlKXtsZXQgbjt0LnNhdmUoZSksdC5uYW1lc3BhY2VzPWUsdC5uYW1lcz1bXSx0LnNraXBzPVtdO2NvbnN0IHI9KFwic3RyaW5nXCI9PXR5cGVvZiBlP2U6XCJcIikuc3BsaXQoL1tcXHMsXSsvKSxvPXIubGVuZ3RoO2ZvcihuPTA7bjxvO24rKylyW25dJiYoXCItXCI9PT0oZT1yW25dLnJlcGxhY2UoL1xcKi9nLFwiLio/XCIpKVswXT90LnNraXBzLnB1c2gobmV3IFJlZ0V4cChcIl5cIitlLnNsaWNlKDEpK1wiJFwiKSk6dC5uYW1lcy5wdXNoKG5ldyBSZWdFeHAoXCJeXCIrZStcIiRcIikpKX0sdC5lbmFibGVkPWZ1bmN0aW9uKGUpe2lmKFwiKlwiPT09ZVtlLmxlbmd0aC0xXSlyZXR1cm4hMDtsZXQgbixyO2ZvcihuPTAscj10LnNraXBzLmxlbmd0aDtuPHI7bisrKWlmKHQuc2tpcHNbbl0udGVzdChlKSlyZXR1cm4hMTtmb3Iobj0wLHI9dC5uYW1lcy5sZW5ndGg7bjxyO24rKylpZih0Lm5hbWVzW25dLnRlc3QoZSkpcmV0dXJuITA7cmV0dXJuITF9LHQuaHVtYW5pemU9big4MjQpLHQuZGVzdHJveT1mdW5jdGlvbigpe2NvbnNvbGUud2FybihcIkluc3RhbmNlIG1ldGhvZCBgZGVidWcuZGVzdHJveSgpYCBpcyBkZXByZWNhdGVkIGFuZCBubyBsb25nZXIgZG9lcyBhbnl0aGluZy4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gb2YgYGRlYnVnYC5cIil9LE9iamVjdC5rZXlzKGUpLmZvckVhY2goKG49Pnt0W25dPWVbbl19KSksdC5uYW1lcz1bXSx0LnNraXBzPVtdLHQuZm9ybWF0dGVycz17fSx0LnNlbGVjdENvbG9yPWZ1bmN0aW9uKGUpe2xldCBuPTA7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspbj0objw8NSktbitlLmNoYXJDb2RlQXQodCksbnw9MDtyZXR1cm4gdC5jb2xvcnNbTWF0aC5hYnMobikldC5jb2xvcnMubGVuZ3RoXX0sdC5lbmFibGUodC5sb2FkKCkpLHR9fSw2NDM6ZT0+e2UuZXhwb3J0cz0hMX0sODI0OmU9Pnt2YXIgdD0xZTMsbj02MCp0LHI9NjAqbixvPTI0KnI7ZnVuY3Rpb24gcyhlLHQsbixyKXt2YXIgbz10Pj0xLjUqbjtyZXR1cm4gTWF0aC5yb3VuZChlL24pK1wiIFwiK3IrKG8/XCJzXCI6XCJcIil9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsaSl7aT1pfHx7fTt2YXIgYSx1LGM9dHlwZW9mIGU7aWYoXCJzdHJpbmdcIj09PWMmJmUubGVuZ3RoPjApcmV0dXJuIGZ1bmN0aW9uKGUpe2lmKCEoKGU9U3RyaW5nKGUpKS5sZW5ndGg+MTAwKSl7dmFyIHM9L14oLT8oPzpcXGQrKT9cXC4/XFxkKykgKihtaWxsaXNlY29uZHM/fG1zZWNzP3xtc3xzZWNvbmRzP3xzZWNzP3xzfG1pbnV0ZXM/fG1pbnM/fG18aG91cnM/fGhycz98aHxkYXlzP3xkfHdlZWtzP3x3fHllYXJzP3x5cnM/fHkpPyQvaS5leGVjKGUpO2lmKHMpe3ZhciBpPXBhcnNlRmxvYXQoc1sxXSk7c3dpdGNoKChzWzJdfHxcIm1zXCIpLnRvTG93ZXJDYXNlKCkpe2Nhc2VcInllYXJzXCI6Y2FzZVwieWVhclwiOmNhc2VcInlyc1wiOmNhc2VcInlyXCI6Y2FzZVwieVwiOnJldHVybiAzMTU1NzZlNSppO2Nhc2VcIndlZWtzXCI6Y2FzZVwid2Vla1wiOmNhc2VcIndcIjpyZXR1cm4gNjA0OGU1Kmk7Y2FzZVwiZGF5c1wiOmNhc2VcImRheVwiOmNhc2VcImRcIjpyZXR1cm4gaSpvO2Nhc2VcImhvdXJzXCI6Y2FzZVwiaG91clwiOmNhc2VcImhyc1wiOmNhc2VcImhyXCI6Y2FzZVwiaFwiOnJldHVybiBpKnI7Y2FzZVwibWludXRlc1wiOmNhc2VcIm1pbnV0ZVwiOmNhc2VcIm1pbnNcIjpjYXNlXCJtaW5cIjpjYXNlXCJtXCI6cmV0dXJuIGkqbjtjYXNlXCJzZWNvbmRzXCI6Y2FzZVwic2Vjb25kXCI6Y2FzZVwic2Vjc1wiOmNhc2VcInNlY1wiOmNhc2VcInNcIjpyZXR1cm4gaSp0O2Nhc2VcIm1pbGxpc2Vjb25kc1wiOmNhc2VcIm1pbGxpc2Vjb25kXCI6Y2FzZVwibXNlY3NcIjpjYXNlXCJtc2VjXCI6Y2FzZVwibXNcIjpyZXR1cm4gaTtkZWZhdWx0OnJldHVybn19fX0oZSk7aWYoXCJudW1iZXJcIj09PWMmJmlzRmluaXRlKGUpKXJldHVybiBpLmxvbmc/KGE9ZSwodT1NYXRoLmFicyhhKSk+PW8/cyhhLHUsbyxcImRheVwiKTp1Pj1yP3MoYSx1LHIsXCJob3VyXCIpOnU+PW4/cyhhLHUsbixcIm1pbnV0ZVwiKTp1Pj10P3MoYSx1LHQsXCJzZWNvbmRcIik6YStcIiBtc1wiKTpmdW5jdGlvbihlKXt2YXIgcz1NYXRoLmFicyhlKTtyZXR1cm4gcz49bz9NYXRoLnJvdW5kKGUvbykrXCJkXCI6cz49cj9NYXRoLnJvdW5kKGUvcikrXCJoXCI6cz49bj9NYXRoLnJvdW5kKGUvbikrXCJtXCI6cz49dD9NYXRoLnJvdW5kKGUvdCkrXCJzXCI6ZStcIm1zXCJ9KGUpO3Rocm93IG5ldyBFcnJvcihcInZhbCBpcyBub3QgYSBub24tZW1wdHkgc3RyaW5nIG9yIGEgdmFsaWQgbnVtYmVyLiB2YWw9XCIrSlNPTi5zdHJpbmdpZnkoZSkpfX0sMTUxOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuLnIodCksbi5kKHQse09ibGl2aW91c1NldDooKT0+cixub3c6KCk9PnMscmVtb3ZlVG9vT2xkVmFsdWVzOigpPT5vfSk7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMudHRsPWUsdGhpcy5zZXQ9bmV3IFNldCx0aGlzLnRpbWVNYXA9bmV3IE1hcH1yZXR1cm4gZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldC5oYXMoZSl9LGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3RoaXMudGltZU1hcC5zZXQoZSxzKCkpLHRoaXMuc2V0LmFkZChlKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe28odCl9KSwwKX0sZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNldC5jbGVhcigpLHRoaXMudGltZU1hcC5jbGVhcigpfSxlfSgpO2Z1bmN0aW9uIG8oZSl7Zm9yKHZhciB0PXMoKS1lLnR0bCxuPWUuc2V0W1N5bWJvbC5pdGVyYXRvcl0oKTs7KXt2YXIgcj1uLm5leHQoKS52YWx1ZTtpZighcilyZXR1cm47aWYoIShlLnRpbWVNYXAuZ2V0KHIpPHQpKXJldHVybjtlLnRpbWVNYXAuZGVsZXRlKHIpLGUuc2V0LmRlbGV0ZShyKX19ZnVuY3Rpb24gcygpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfX0sMTU1OmU9Pnt2YXIgdCxuLHI9ZS5leHBvcnRzPXt9O2Z1bmN0aW9uIG8oKXt0aHJvdyBuZXcgRXJyb3IoXCJzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkXCIpfWZ1bmN0aW9uIHMoKXt0aHJvdyBuZXcgRXJyb3IoXCJjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWRcIil9ZnVuY3Rpb24gaShlKXtpZih0PT09c2V0VGltZW91dClyZXR1cm4gc2V0VGltZW91dChlLDApO2lmKCh0PT09b3x8IXQpJiZzZXRUaW1lb3V0KXJldHVybiB0PXNldFRpbWVvdXQsc2V0VGltZW91dChlLDApO3RyeXtyZXR1cm4gdChlLDApfWNhdGNoKG4pe3RyeXtyZXR1cm4gdC5jYWxsKG51bGwsZSwwKX1jYXRjaChuKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSwwKX19fSFmdW5jdGlvbigpe3RyeXt0PVwiZnVuY3Rpb25cIj09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDpvfWNhdGNoKGUpe3Q9b310cnl7bj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0OnN9Y2F0Y2goZSl7bj1zfX0oKTt2YXIgYSx1PVtdLGM9ITEsbD0tMTtmdW5jdGlvbiBkKCl7YyYmYSYmKGM9ITEsYS5sZW5ndGg/dT1hLmNvbmNhdCh1KTpsPS0xLHUubGVuZ3RoJiZmKCkpfWZ1bmN0aW9uIGYoKXtpZighYyl7dmFyIGU9aShkKTtjPSEwO2Zvcih2YXIgdD11Lmxlbmd0aDt0Oyl7Zm9yKGE9dSx1PVtdOysrbDx0OylhJiZhW2xdLnJ1bigpO2w9LTEsdD11Lmxlbmd0aH1hPW51bGwsYz0hMSxmdW5jdGlvbihlKXtpZihuPT09Y2xlYXJUaW1lb3V0KXJldHVybiBjbGVhclRpbWVvdXQoZSk7aWYoKG49PT1zfHwhbikmJmNsZWFyVGltZW91dClyZXR1cm4gbj1jbGVhclRpbWVvdXQsY2xlYXJUaW1lb3V0KGUpO3RyeXtuKGUpfWNhdGNoKHQpe3RyeXtyZXR1cm4gbi5jYWxsKG51bGwsZSl9Y2F0Y2godCl7cmV0dXJuIG4uY2FsbCh0aGlzLGUpfX19KGUpfX1mdW5jdGlvbiBoKGUsdCl7dGhpcy5mdW49ZSx0aGlzLmFycmF5PXR9ZnVuY3Rpb24gcCgpe31yLm5leHRUaWNrPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlmb3IodmFyIG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0xXT1hcmd1bWVudHNbbl07dS5wdXNoKG5ldyBoKGUsdCkpLDEhPT11Lmxlbmd0aHx8Y3x8aShmKX0saC5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKCl7dGhpcy5mdW4uYXBwbHkobnVsbCx0aGlzLmFycmF5KX0sci50aXRsZT1cImJyb3dzZXJcIixyLmJyb3dzZXI9ITAsci5lbnY9e30sci5hcmd2PVtdLHIudmVyc2lvbj1cIlwiLHIudmVyc2lvbnM9e30sci5vbj1wLHIuYWRkTGlzdGVuZXI9cCxyLm9uY2U9cCxyLm9mZj1wLHIucmVtb3ZlTGlzdGVuZXI9cCxyLnJlbW92ZUFsbExpc3RlbmVycz1wLHIuZW1pdD1wLHIucHJlcGVuZExpc3RlbmVyPXAsci5wcmVwZW5kT25jZUxpc3RlbmVyPXAsci5saXN0ZW5lcnM9ZnVuY3Rpb24oZSl7cmV0dXJuW119LHIuYmluZGluZz1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoXCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZFwiKX0sci5jd2Q9ZnVuY3Rpb24oKXtyZXR1cm5cIi9cIn0sci5jaGRpcj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoXCJwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWRcIil9LHIudW1hc2s9ZnVuY3Rpb24oKXtyZXR1cm4gMH19LDI3OTplPT57ZnVuY3Rpb24gdCgpe310LnByb3RvdHlwZT17b246ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuZXx8KHRoaXMuZT17fSk7cmV0dXJuKHJbZV18fChyW2VdPVtdKSkucHVzaCh7Zm46dCxjdHg6bn0pLHRoaXN9LG9uY2U6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXM7ZnVuY3Rpb24gbygpe3Iub2ZmKGUsbyksdC5hcHBseShuLGFyZ3VtZW50cyl9cmV0dXJuIG8uXz10LHRoaXMub24oZSxvLG4pfSxlbWl0OmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxuPSgodGhpcy5lfHwodGhpcy5lPXt9KSlbZV18fFtdKS5zbGljZSgpLHI9MCxvPW4ubGVuZ3RoO3I8bztyKyspbltyXS5mbi5hcHBseShuW3JdLmN0eCx0KTtyZXR1cm4gdGhpc30sb2ZmOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5lfHwodGhpcy5lPXt9KSxyPW5bZV0sbz1bXTtpZihyJiZ0KWZvcih2YXIgcz0wLGk9ci5sZW5ndGg7czxpO3MrKylyW3NdLmZuIT09dCYmcltzXS5mbi5fIT09dCYmby5wdXNoKHJbc10pO3JldHVybiBvLmxlbmd0aD9uW2VdPW86ZGVsZXRlIG5bZV0sdGhpc319LGUuZXhwb3J0cz10LGUuZXhwb3J0cy5UaW55RW1pdHRlcj10fSw3OTc6ZnVuY3Rpb24oZSx0KXtcInVzZSBzdHJpY3RcIjt2YXIgbixyPXRoaXMmJnRoaXMuX19leHRlbmRzfHwobj1mdW5jdGlvbihlLHQpe3JldHVybiBuPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKX0sbihlLHQpfSxmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiK1N0cmluZyh0KStcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPWV9bihlLHQpLGUucHJvdG90eXBlPW51bGw9PT10P09iamVjdC5jcmVhdGUodCk6KHIucHJvdG90eXBlPXQucHJvdG90eXBlLG5ldyByKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuYXNzZXJ0PXQuQXNzZXJ0RXJyb3I9dm9pZCAwO3ZhciBvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gbnVsbCE9PWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiByKHQsZSksdH0oRXJyb3IpO3QuQXNzZXJ0RXJyb3I9byx0LmFzc2VydD1mdW5jdGlvbihlLHQsbil7aWYodChlKSlyZXR1cm4gZTt0aHJvdyBuZXcgbyhuKX19LDYwMTooZSx0KT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuU09VUkNFX05BTUVTUEFDRT12b2lkIDAsdC5TT1VSQ0VfTkFNRVNQQUNFPVwiT2ZmaWNlU0RLQnJvYWRjYXN0Q2hhbm5lbFwifSw3NTg6ZnVuY3Rpb24oZSx0KXtcInVzZSBzdHJpY3RcIjt2YXIgbixyPXRoaXMmJnRoaXMuX19leHRlbmRzfHwobj1mdW5jdGlvbihlLHQpe3JldHVybiBuPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKX0sbihlLHQpfSxmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiK1N0cmluZyh0KStcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPWV9bihlLHQpLGUucHJvdG90eXBlPW51bGw9PT10P09iamVjdC5jcmVhdGUodCk6KHIucHJvdG90eXBlPXQucHJvdG90eXBlLG5ldyByKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuSW52b2tlRXJyb3I9dC5NZXNzYWdlVGltZW91dEVycm9yPXQuTWVzc2FnZUVycm9yPXZvaWQgMDt2YXIgbz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQpe3ZhciBuPWUuY2FsbCh0aGlzLHQpfHx0aGlzO3JldHVybiBuLm5hbWU9XCJNZXNzYWdlRXJyb3JcIixPYmplY3Quc2V0UHJvdG90eXBlT2YobixzLnByb3RvdHlwZSksbn1yZXR1cm4gcih0LGUpLHR9KEVycm9yKTt0Lk1lc3NhZ2VFcnJvcj1vO3ZhciBzPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7dmFyIHI9ZS5jYWxsKHRoaXMsbil8fHRoaXM7cmV0dXJuIHIubmFtZT1cIk1lc3NhZ2VUaW1lb3V0RXJyb3JcIixPYmplY3Quc2V0UHJvdG90eXBlT2Yocix0LnByb3RvdHlwZSkscn1yZXR1cm4gcih0LGUpLHR9KEVycm9yKTt0Lk1lc3NhZ2VUaW1lb3V0RXJyb3I9czt2YXIgaT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQpe3ZhciBuPWUuY2FsbCh0aGlzLHQpfHx0aGlzO3JldHVybiBuLm5hbWU9XCJJbnZva2VFcnJvclwiLE9iamVjdC5zZXRQcm90b3R5cGVPZihuLHMucHJvdG90eXBlKSxufXJldHVybiByKHQsZSksdH0oRXJyb3IpO3QuSW52b2tlRXJyb3I9aX0sNjA3OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX0scz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lk9mZmljZVNES01lc3NhZ2VFdmVudD10LmlzT2ZmaWNlU0RLTWVzc2FnZUV2ZW50TGlrZT10Lk9mZmljZVNES0Jyb2FkY2FzdENoYW5uZWw9dm9pZCAwO3ZhciBpPXMobig2MjMpKTt0Lk9mZmljZVNES0Jyb2FkY2FzdENoYW5uZWw9aS5kZWZhdWx0O3ZhciBhPW4oOTI4KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImlzT2ZmaWNlU0RLTWVzc2FnZUV2ZW50TGlrZVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBhLmlzT2ZmaWNlU0RLTWVzc2FnZUV2ZW50TGlrZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIk9mZmljZVNES01lc3NhZ2VFdmVudFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBhLk9mZmljZVNES01lc3NhZ2VFdmVudH19KSxvKG4oOTI4KSx0KSxvKG4oNjIzKSx0KSxvKG4oNzU4KSx0KSxvKG4oODYpLHQpLG8obig2MDEpLHQpfSw5Mjg6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuaXNPZmZpY2VTREtNZXNzYWdlRXZlbnRMaWtlPXQuT2ZmaWNlU0RLTWVzc2FnZUV2ZW50PXZvaWQgMDt2YXIgcj1uKDEzMSksbz1uKDc5Nykscz1uKDYwMSksaT1mdW5jdGlvbihlKXt2YXIgdD1lLmRhdGEsbj1lLmNvbnRleHQsaT1lLnRpbWUsYT1lLm9yaWdpbix1PWUuZW1pdHRlcixjPWUuY2hhbm5lbElkLGw9T2JqZWN0LmFzc2lnbih7fSxuLHtjaGFubmVsSWQ6Y30pO1wic3RyaW5nXCI9PXR5cGVvZiBsLm1lc3NhZ2VJZCYmXCJcIiE9PWwubWVzc2FnZUlkLnRyaW0oKXx8KGwubWVzc2FnZUlkPSgwLHIudXVpZCkoKSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcyx7ZGF0YTp7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSxjb250ZXh0OntlbnVtZXJhYmxlOiEwLHZhbHVlOmx9LHRpbWU6e2VudW1lcmFibGU6ITAsdmFsdWU6bnVsbCE9aT9pOkRhdGUubm93KCl9LGlkOntlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBsLm1lc3NhZ2VJZH19LHNvdXJjZTp7ZW51bWVyYWJsZTohMCx2YWx1ZTpzLlNPVVJDRV9OQU1FU1BBQ0V9LG9yaWdpbjp7ZW51bWVyYWJsZTohMCx2YWx1ZTphfSxlbWl0dGVyOntlbnVtZXJhYmxlOiEwLHZhbHVlOnV9LGNoYW5uZWxJZDp7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbC5jaGFubmVsSWR9fX0pLCgwLG8uYXNzZXJ0KSh0aGlzLmNvbnRleHQuY2hhbm5lbElkLChmdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmZS5sZW5ndGg+MH0pLFwiY2hhbm5lbCBpZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZ1wiKSwoMCxvLmFzc2VydCkodGhpcy5pZCwoZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGUmJmUubGVuZ3RoPjB9KSxcImlkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nXCIpLCgwLG8uYXNzZXJ0KSh0aGlzLnRpbWUsKGZ1bmN0aW9uKGUpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBlJiZlPj0wfSksXCJ0aW1lIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXJcIil9O3QuT2ZmaWNlU0RLTWVzc2FnZUV2ZW50PWksdC5pc09mZmljZVNES01lc3NhZ2VFdmVudExpa2U9ZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIGkpcmV0dXJuITA7aWYoXCJvYmplY3RcIj09dHlwZW9mIGUmJm51bGwhPWUpe3ZhciB0PWU7cmV0dXJuIHQuc291cmNlPT09cy5TT1VSQ0VfTkFNRVNQQUNFJiZcInN0cmluZ1wiPT10eXBlb2YgdC5jaGFubmVsSWQmJnQuY2hhbm5lbElkLmxlbmd0aD4wJiZudWxsIT10LmNvbnRleHR9cmV0dXJuITF9fSw2MjM6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24obyxzKXtmdW5jdGlvbiBpKGUpe3RyeXt1KHIubmV4dChlKSl9Y2F0Y2goZSl7cyhlKX19ZnVuY3Rpb24gYShlKXt0cnl7dShyLnRocm93KGUpKX1jYXRjaChlKXtzKGUpfX1mdW5jdGlvbiB1KGUpe3ZhciB0O2UuZG9uZT9vKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIG4/dDpuZXcgbigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihpLGEpfXUoKHI9ci5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX0sbz10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxzLGk9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmb1swXSl0aHJvdyBvWzFdO3JldHVybiBvWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIHM9e25leHQ6YSgwKSx0aHJvdzphKDEpLHJldHVybjphKDIpfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJihzW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLHM7ZnVuY3Rpb24gYShzKXtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKHMpe2lmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7Zm9yKDtpOyl0cnl7aWYobj0xLHImJihvPTImc1swXT9yLnJldHVybjpzWzBdP3IudGhyb3d8fCgobz1yLnJldHVybikmJm8uY2FsbChyKSwwKTpyLm5leHQpJiYhKG89by5jYWxsKHIsc1sxXSkpLmRvbmUpcmV0dXJuIG87c3dpdGNoKHI9MCxvJiYocz1bMiZzWzBdLG8udmFsdWVdKSxzWzBdKXtjYXNlIDA6Y2FzZSAxOm89czticmVhaztjYXNlIDQ6cmV0dXJuIGkubGFiZWwrKyx7dmFsdWU6c1sxXSxkb25lOiExfTtjYXNlIDU6aS5sYWJlbCsrLHI9c1sxXSxzPVswXTtjb250aW51ZTtjYXNlIDc6cz1pLm9wcy5wb3AoKSxpLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChvPShvPWkudHJ5cykubGVuZ3RoPjAmJm9bby5sZW5ndGgtMV0pfHw2IT09c1swXSYmMiE9PXNbMF0pKXtpPTA7Y29udGludWV9aWYoMz09PXNbMF0mJighb3x8c1sxXT5vWzBdJiZzWzFdPG9bM10pKXtpLmxhYmVsPXNbMV07YnJlYWt9aWYoNj09PXNbMF0mJmkubGFiZWw8b1sxXSl7aS5sYWJlbD1vWzFdLG89czticmVha31pZihvJiZpLmxhYmVsPG9bMl0pe2kubGFiZWw9b1syXSxpLm9wcy5wdXNoKHMpO2JyZWFrfW9bMl0mJmkub3BzLnBvcCgpLGkudHJ5cy5wb3AoKTtjb250aW51ZX1zPXQuY2FsbChlLGkpfWNhdGNoKGUpe3M9WzYsZV0scj0wfWZpbmFsbHl7bj1vPTB9aWYoNSZzWzBdKXRocm93IHNbMV07cmV0dXJue3ZhbHVlOnNbMF0/c1sxXTp2b2lkIDAsZG9uZTohMH19KFtzLGFdKX19fSxzPXRoaXMmJnRoaXMuX19zcHJlYWRBcnJheXx8ZnVuY3Rpb24oZSx0LG4pe2lmKG58fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgcixvPTAscz10Lmxlbmd0aDtvPHM7bysrKSFyJiZvIGluIHR8fChyfHwocj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LDAsbykpLHJbb109dFtvXSk7cmV0dXJuIGUuY29uY2F0KHJ8fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKX0saT10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNvbnRleHRUeXBlPXQuREVCVUdfTkFNRVNQQUNFPXQuSU5WT0tFX0RFRkFVVExfVElNRU9VVD12b2lkIDA7dmFyIGE9big0MzcpLHU9bigyNzkpLGM9big3OTcpLGw9big3NTgpLGQ9big5MjgpLGY9big4NiksaD1pKG4oMjI3KSkscD1pKG4oNjc1KSksdj1uKDEzMSk7dC5JTlZPS0VfREVGQVVUTF9USU1FT1VUPTZlNCx0LkRFQlVHX05BTUVTUEFDRT1cIlNNX0NIQU5cIjt2YXIgbSxnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt2YXIgbixzPXRoaXM7dGhpcy5pbnZva2VIYW5kbGVycz1uZXcgTWFwLHRoaXMuZXZlbnRIYW5kbGVycz1uZXcgTWFwLHRoaXMuZW1pdHRlcklkPSgwLHYudXVpZCkoKSx0aGlzLl9kZWJ1Z05hbWVzcGFjZT10LkRFQlVHX05BTUVTUEFDRSx0aGlzLmRlYnVnPSEwPT09ZS5kZWJ1Zyx0aGlzLmRlYnVnTmFtZXNwYWNlPW51bGwhPT0obj1lLmRlYnVnTmFtZXNwYWNlKSYmdm9pZCAwIT09bj9uOnQuREVCVUdfTkFNRVNQQUNFLHRoaXMuYXV0b1N0cnVjdHVyZWRDbG9uZT0hMD09PWUuYXV0b1N0cnVjdHVyZWRDbG9uZSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxcImlkXCIse2VudW1lcmFibGU6ITAsdmFsdWU6XCJzdHJpbmdcIj09dHlwZW9mIGUuY2hhbm5lbElkPygwLGMuYXNzZXJ0KShlLmNoYW5uZWxJZC50cmltKCksKGZ1bmN0aW9uKGUpe3JldHVybiBlLmxlbmd0aD4wfSksXCJjaGFubmVsSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmdcIik6KDAsdi51dWlkKSgpfSksdGhpcy5lbWl0dGVyPW5ldyB1LlRpbnlFbWl0dGVyO3ZhciBpPW5ldyBhLkJyb2FkY2FzdENoYW5uZWwodGhpcy5pZCxlLmJyb2FkY2FzdENoYW5uZWxPcHRpb25zKTtpLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsKGZ1bmN0aW9uKGUpe3Iocyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciB0LG4scjtyZXR1cm4gbyh0aGlzLChmdW5jdGlvbihvKXtzd2l0Y2goby5sYWJlbCl7Y2FzZSAwOnRyeXt0PXRoaXMuaW5pdE1lc3NhZ2VFdmVudChlKX1jYXRjaCh0KXtyZXR1cm4obj1uZXcgbC5NZXNzYWdlRXJyb3IobnVsbCE9PShyPW51bGw9PXQ/dm9pZCAwOnQubWVzc2FnZSkmJnZvaWQgMCE9PXI/cjpcIm1lc3NhZ2UgY2Fubm90IGJlIGhhbmRsZWRcIikpLm9yaWdpbk1lc3NhZ2U9ZS5kYXRhLHRoaXMuZW1pdChcIm1lc3NhZ2VFcnJvclwiLG4pLFsyXX1yZXR1cm5bNCx0aGlzLmRpc3RyaWJ1dGVNZXNzYWdlKHQpXTtjYXNlIDE6cmV0dXJuIG8uc2VudCgpLFsyXX19KSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiByKHMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXtyZXR1cm4gbyh0aGlzLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lbWl0KFwiZXJyb3JcIixlKSxbMl19KSl9KSl9KSl9KSksdGhpcy5jaGFubmVsPWl9cmV0dXJuIGUucHJvdG90eXBlLmluaXRNZXNzYWdlRXZlbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0LmFzc2lnbih7ZW1pdHRlcjp0aGlzLmVtaXR0ZXJJZH0sZSx7Y2hhbm5lbElkOnRoaXMuaWR9KTtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgdC5vcmlnaW4mJih0Lm9yaWdpbj1sb2NhdGlvbi5vcmlnaW4pLG5ldyBkLk9mZmljZVNES01lc3NhZ2VFdmVudCh0KX0sZS5wcm90b3R5cGUuc3RydWN0dXJlZENsb25lPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmF1dG9TdHJ1Y3R1cmVkQ2xvbmU/KDAsZi5zdHJ1Y3R1cmVkQ2xvbmUpKGUse3JlcGxhY2VyOmZ1bmN0aW9uKCl7fX0pOmV9LGUucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuZXZlbnRIYW5kbGVycy5nZXQoZSk7QXJyYXkuaXNBcnJheShyKXx8KHI9W10pLHIucHVzaChbdCxuXSksdGhpcy5ldmVudEhhbmRsZXJzLnNldChlLHIpfSxlLnByb3RvdHlwZS5vbj1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcztyZXR1cm4gdGhpcy5hZGRFdmVudExpc3RlbmVyKGUsdCxuKSxmdW5jdGlvbigpe3Iub2ZmKGUsdCxuKX19LGUucHJvdG90eXBlLm9uY2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMsbz1mdW5jdGlvbihuLG8pe3Iub2ZmKGUsdCxvKSx0KG4sbyl9O3JldHVybiBvLmhhbmRsZXI9dCx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZSxvLG4pLGZ1bmN0aW9uKCl7ci5vZmYoZSx0LG4pfX0sZS5wcm90b3R5cGUub2ZmPWZ1bmN0aW9uKGUsdCxuKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aCl0aGlzLmV2ZW50SGFuZGxlcnMuZGVsZXRlKGUpO2Vsc2V7dmFyIHI9dGhpcy5ldmVudEhhbmRsZXJzLmdldChlKTtBcnJheS5pc0FycmF5KHIpJiYoXCIqXCI9PT0obnVsbD09bj92b2lkIDA6bi5hdWRpZW5jZSk/dGhpcy5ldmVudEhhbmRsZXJzLmRlbGV0ZShlKTp0aGlzLmV2ZW50SGFuZGxlcnMuc2V0KGUsci5maWx0ZXIoKGZ1bmN0aW9uKGUpe3ZhciByPWVbMF0sbz1lWzFdO3JldHVybiByIT09dCYmci5oYW5kbGVyIT09dHx8KG51bGw9PW8/dm9pZCAwOm8uYXVkaWVuY2UpPT09KG51bGw9PW4/dm9pZCAwOm4uYXVkaWVuY2UpfSkpKSl9fSxlLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLmV2ZW50SGFuZGxlcnMuZ2V0KGUpO2lmKHRoaXMubG9nKFwiZW1pdCBldmVudFwiLHtuYW1lOmUsZGF0YTp0LGNvbnRleHQ6bixoYW5kbGVyczpyfSksQXJyYXkuaXNBcnJheShyKSlmb3IodmFyIG89MCxzPXI7bzxzLmxlbmd0aDtvKyspe3ZhciBpPXNbb10sYT1pWzBdO3koaVsxXSxuKSYmYSh0LG4pfX0sZS5wcm90b3R5cGUucG9zdE1lc3NhZ2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIG4scixzLGk7cmV0dXJuIG8odGhpcywoZnVuY3Rpb24obyl7c3dpdGNoKG8ubGFiZWwpe2Nhc2UgMDp0cnl7cj10aGlzLnN0cnVjdHVyZWRDbG9uZShlKSxuPSgwLGQuaXNPZmZpY2VTREtNZXNzYWdlRXZlbnRMaWtlKShyKT90aGlzLmluaXRNZXNzYWdlRXZlbnQocik6dGhpcy5pbml0TWVzc2FnZUV2ZW50KHtkYXRhOnIsY29udGV4dDpudWxsIT10P3RoaXMubWVyZ2VDb250ZXh0cyhbdF0pOnR9KX1jYXRjaCh0KXt0aHJvdyB0aGlzLmxvZyhcIm1lc3NhZ2UgaW52YWxpZFwiLGUsdCksKGk9bmV3IGwuTWVzc2FnZUVycm9yKG51bGw9PXQ/dm9pZCAwOnQubWVzc2FnZSkpLm9yaWdpbk1lc3NhZ2U9cixpfW8ubGFiZWw9MTtjYXNlIDE6cmV0dXJuIG8udHJ5cy5wdXNoKFsxLDMsLDRdKSx0aGlzLmxvZyhcInByZSBwb3N0TWVzc2FnZVwiLHttZXNzYWdlOnIsb3JpZ2luOmUsY29udGV4dDp0LHN0cnVjdHVyZWRDbG9uZWQ6dGhpcy5hdXRvU3RydWN0dXJlZENsb25lfSksWzQsdGhpcy5jaGFubmVsLnBvc3RNZXNzYWdlKG4pXTtjYXNlIDI6cmV0dXJuIG8uc2VudCgpLHRoaXMuZW1pdChcInBvc3RNZXNzYWdlXCIsbixuLmNvbnRleHQpLHRoaXMubG9nKFwicG9zdE1lc3NhZ2Ugc3VjY2Vzc1wiLG4pLFszLDRdO2Nhc2UgMzp0aHJvdyBzPW8uc2VudCgpLHRoaXMubG9nKFwicG9zdCBtZXNzYWdlIGVycm9yXCIscyksKGk9bmV3IGwuTWVzc2FnZUVycm9yKG51bGw9PXM/dm9pZCAwOnMubWVzc2FnZSkpLm9yaWdpbk1lc3NhZ2U9ZSxpO2Nhc2UgNDpyZXR1cm5bMl19fSkpfSkpfSxlLnByb3RvdHlwZS5kaXN0cmlidXRlTWVzc2FnZT1mdW5jdGlvbihlKXt2YXIgdCxuLHM7cmV0dXJuIHIodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciByLGk7cmV0dXJuIG8odGhpcywoZnVuY3Rpb24obyl7c3dpdGNoKG8ubGFiZWwpe2Nhc2UgMDpyZXR1cm4obnVsbD09PSh0PShyPWUpLmNvbnRleHQpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmNoYW5uZWxJZCkhPT10aGlzLmlkfHxyLmVtaXR0ZXI9PT10aGlzLmVtaXR0ZXJJZD8odGhpcy5sb2coXCJkaXNjYXJkIG1lc3NhZ2VcIixyKSxbMl0pOlwiZnVuY3Rpb25cIiE9dHlwZW9mIHRoaXMub25NZXNzYWdlQXJyaXZlP1szLDJdOls0LHRoaXMub25NZXNzYWdlQXJyaXZlKHIpXTtjYXNlIDE6aWYoISgoaT1vLnNlbnQoKSlpbnN0YW5jZW9mIGQuT2ZmaWNlU0RLTWVzc2FnZUV2ZW50KSlyZXR1cm4gdGhpcy5sb2coXCJza2lwIGRpc3RyaWJ1dGluZyBtZXNzYWdlIGJ5IGBvbk1lc3NhZ2VBcnJpdmVgXCIse21lc3NhZ2U6aSxvcmlnaW46ZX0pLFsyXTtyPWksby5sYWJlbD0yO2Nhc2UgMjpyZXR1cm4gdGhpcy5sb2coXCJkaXN0cmlidXRlIG1lc3NhZ2VcIix7bWVzc2FnZTpyLG9yaWdpbjplfSksKG51bGw9PT0obj1yLmNvbnRleHQpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLnR5cGUpIT09bS5JbnZva2VSZXF1ZXN0P1szLDRdOls0LHRoaXMuaGFuZGxlSW52b2tlUmVxdWVzdChyKV07Y2FzZSAzOnJldHVybiBvLnNlbnQoKSxbMl07Y2FzZSA0OnJldHVybihudWxsPT09KHM9ci5jb250ZXh0KXx8dm9pZCAwPT09cz92b2lkIDA6cy50eXBlKT09PW0uSW52b2tlUmVzcG9uc2U/KHRoaXMuaGFuZGxlSW52b2tlUmVzcG9uc2UociksWzJdKToodGhpcy5lbWl0KFwibWVzc2FnZVwiLHIsci5jb250ZXh0KSxbMl0pfX0pKX0pKX0sZS5wcm90b3R5cGUuaGFuZGxlSW52b2tlUmVxdWVzdD1mdW5jdGlvbihlKXtyZXR1cm4gcih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIHQsbixyLHMsaSxhLHUsYyxsLGQsZjtyZXR1cm4gbyh0aGlzLChmdW5jdGlvbihvKXtzd2l0Y2goby5sYWJlbCl7Y2FzZSAwOmlmKCEoMCxwLmRlZmF1bHQpKGUuZGF0YSkpdGhyb3cgdGhpcy5sb2coXCJpbnZhbGlkIGludm9rZSByZXF1ZXN0XCIsZSksbmV3IEVycm9yKFwiSW52b2tlUmVxdWVzdCBkYXRhIG11c3QgYmUgYW4gb2JqZWN0XCIpO2lmKHQ9ZS5kYXRhLG49dC5uYW1lLHI9dC5hcmdzLHM9dGhpcy5pbnZva2VIYW5kbGVycy5nZXQobiksdGhpcy5sb2coXCJoYW5kbGUgaW52b2tlIHJlcXVlc3RcIix7bWVzc2FnZTplLGhhbmRsZXJzOnN9KSxpPWUuY29udGV4dCwhQXJyYXkuaXNBcnJheShzKXx8MD09PXMubGVuZ3RoKXJldHVybiB0aGlzLmxvZyhcIm5vIGludm9rZSBoYW5kbGVyc1wiLG4pLFsyXTthPTAsdT1zLG8ubGFiZWw9MTtjYXNlIDE6aWYoIShhPHUubGVuZ3RoKSlyZXR1cm5bMyw4XTtpZigheSgoYz11W2FdKS5jb250ZXh0LGkpKXJldHVyblszLDddO2w9e2RhdGE6dm9pZCAwfSxvLmxhYmVsPTI7Y2FzZSAyOnJldHVybiBvLnRyeXMucHVzaChbMiw0LCw1XSksZD1sLFs0LGMuaGFuZGxlci5hcHBseShjLHIpXTtjYXNlIDM6cmV0dXJuIGQuZGF0YT1vLnNlbnQoKSxbMyw1XTtjYXNlIDQ6cmV0dXJuIGY9by5zZW50KCksbC5lcnJvcj1mLFszLDVdO2Nhc2UgNTpyZXR1cm5bNCx0aGlzLnBvc3RNZXNzYWdlKGwsT2JqZWN0LmFzc2lnbih7fSxpLHt0eXBlOm0uSW52b2tlUmVzcG9uc2V9KSldO2Nhc2UgNjpyZXR1cm4gby5zZW50KCksWzJdO2Nhc2UgNzpyZXR1cm4gYSsrLFszLDFdO2Nhc2UgODpyZXR1cm4gdGhpcy5sb2coXCJubyBpbnZva2UgaGFuZGxlciBmb3VuZFwiLG4pLFsyXX19KSl9KSl9LGUucHJvdG90eXBlLmhhbmRsZUludm9rZVJlc3BvbnNlPWZ1bmN0aW9uKGUpe2lmKHRoaXMubG9nKFwiaGFuZGxlIGludm9rZSByZXNwb25zZVwiLGUpLFwic3RyaW5nXCIhPXR5cGVvZiBlLmlkKXRocm93IG5ldyBsLkludm9rZUVycm9yKFwiSW52b2tlIHJlc3BvbnNlIGNvbnRleHQgaWQgaXMgaW52YWxpZFwiKTt0aGlzLmVtaXR0ZXIuZW1pdChlLmlkLGUuZGF0YSl9LGUucHJvdG90eXBlLm1lcmdlQ29udGV4dHM9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5hc3NpZ24uYXBwbHkoT2JqZWN0LHMoW3tjaGFubmVsSWQ6dGhpcy5pZH1dLGUsITEpKX0sZS5wcm90b3R5cGUuaW52b2tlPWZ1bmN0aW9uKGUsbixzKXtyZXR1cm4gcih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIHIsaSxhLHUsYyxkPXRoaXM7cmV0dXJuIG8odGhpcywoZnVuY3Rpb24obyl7c3dpdGNoKG8ubGFiZWwpe2Nhc2UgMDpyZXR1cm4gcj17bmFtZTplLGFyZ3M6bn0saT1cIm51bWJlclwiPT10eXBlb2YobnVsbD09cz92b2lkIDA6cy50aW1lb3V0KSYmKG51bGw9PXM/dm9pZCAwOnMudGltZW91dCk+MD9udWxsPT1zP3ZvaWQgMDpzLnRpbWVvdXQ6dC5JTlZPS0VfREVGQVVUTF9USU1FT1VULGE9KDAsdi51dWlkKSgpLHU9bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQscil7ZC5lbWl0dGVyLm9uY2UoYSwoZnVuY3Rpb24obyl7aWYoby5lcnJvciBpbnN0YW5jZW9mIGwuSW52b2tlRXJyb3IpcihvLmVycm9yKTtlbHNlIGlmKG51bGwhPW8uZXJyb3Ipe3ZhciBzPW5ldyBsLkludm9rZUVycm9yKFwic3RyaW5nXCI9PXR5cGVvZiBvLmVycm9yP28uZXJyb3I6by5lcnJvci5tZXNzYWdlKTtzLm1ldGhvZD1lLHMuYXJndW1lbnRzPW4scihzKX1lbHNlIHQoby5kYXRhKX0pKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2QuZW1pdHRlci5vZmYoYSkscihuZXcgbC5NZXNzYWdlVGltZW91dEVycm9yKFwiXCIuY29uY2F0KGUsXCIgaW52b2tlIHRpbWVvdXRcIikpKX0pLGkpfSkpLFs0LHRoaXMucG9zdE1lc3NhZ2UocixPYmplY3QuYXNzaWduKHt9LHMse21lc3NhZ2VJZDphLHRpbWVvdXQ6aSx0eXBlOm0uSW52b2tlUmVxdWVzdH0pKV07Y2FzZSAxOm8uc2VudCgpLG8ubGFiZWw9MjtjYXNlIDI6cmV0dXJuIG8udHJ5cy5wdXNoKFsyLDQsLDVdKSxbNCx1XTtjYXNlIDM6cmV0dXJuWzIsby5zZW50KCldO2Nhc2UgNDp0aHJvdyBjPW8uc2VudCgpLHRoaXMubG9nKFwiaW52b2tlIGVycm9yXCIse2lkOmEsbmFtZTplLGFyZ3M6bixwYXlsb2FkOnIsZXJyb3I6Y30pLGM7Y2FzZSA1OnJldHVyblsyXX19KSl9KSl9LGUucHJvdG90eXBlLmFkZEludm9rZUhhbmRsZXI9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuaW52b2tlSGFuZGxlcnMuZ2V0KGUpO0FycmF5LmlzQXJyYXkocil8fChyPVtdKSxyLnB1c2goe2hhbmRsZXI6dCxjb250ZXh0Om59KSx0aGlzLmludm9rZUhhbmRsZXJzLnNldChlLHIpfSxlLnByb3RvdHlwZS5yZW1vdmVJbnZva2VIYW5kbGVyPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLmludm9rZUhhbmRsZXJzLmdldChlKTtBcnJheS5pc0FycmF5KHIpJiZ0aGlzLmludm9rZUhhbmRsZXJzLnNldChlLHIuZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgcjtyZXR1cm4gZS5oYW5kbGVyIT09dHx8KG51bGw9PT0ocj1lLmNvbnRleHQpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLmF1ZGllbmNlKSE9PShudWxsPT1uP3ZvaWQgMDpuLmF1ZGllbmNlKX0pKSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcImRlYnVnXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBoLmRlZmF1bHQuZW5hYmxlZCh0aGlzLl9kZWJ1Z05hbWVzcGFjZSl9LHNldDpmdW5jdGlvbihlKXtoLmRlZmF1bHQuZW5hYmxlKGU/dGhpcy5fZGVidWdOYW1lc3BhY2U6XCItXCIuY29uY2F0KHRoaXMuX2RlYnVnTmFtZXNwYWNlKSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiZGVidWdOYW1lc3BhY2VcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlYnVnTmFtZXNwYWNlfSxzZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5kZWJ1ZztoLmRlZmF1bHQuZW5hYmxlKFwiLVwiLmNvbmNhdCh0aGlzLl9kZWJ1Z05hbWVzcGFjZSkpLHRoaXMubG9nPSgwLGguZGVmYXVsdCkoZSksdGhpcy5fZGVidWdOYW1lc3BhY2U9ZSx0JiZoLmRlZmF1bHQuZW5hYmxlKGUpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGV9KCk7ZnVuY3Rpb24geShlLHQpe3ZhciBuPW51bGw9PWU/dm9pZCAwOmUuYXVkaWVuY2Uscj1udWxsPT10P3ZvaWQgMDp0LmF1ZGllbmNlO3JldHVybiBuPT09cnx8XCIqXCI9PT1ufHxcIipcIj09PXJ9dC5kZWZhdWx0PWcsZnVuY3Rpb24oZSl7ZVtlLkludm9rZVJlcXVlc3Q9MF09XCJJbnZva2VSZXF1ZXN0XCIsZVtlLkludm9rZVJlc3BvbnNlPTFdPVwiSW52b2tlUmVzcG9uc2VcIn0obT10LkNvbnRleHRUeXBlfHwodC5Db250ZXh0VHlwZT17fSkpfSw4NjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5zdHJ1Y3R1cmVkQ2xvbmU9dm9pZCAwO3ZhciBvPXIobig2NzUpKSxzPW4oOTI4KTtmdW5jdGlvbiBpKGUsdCl7dHJ5e3JldHVybiBlIGluc3RhbmNlb2YgdH1jYXRjaChlKXtyZXR1cm4hMX19dC5zdHJ1Y3R1cmVkQ2xvbmU9ZnVuY3Rpb24gZSh0LG4pe2lmKHZvaWQgMD09PW4mJihuPXt9KSxcInN0cmluZ1wiPT10eXBlb2YgdHx8XCJudW1iZXJcIj09dHlwZW9mIHR8fFwiYm9vbGVhblwiPT10eXBlb2YgdHx8bnVsbD09dHx8dCBpbnN0YW5jZW9mIERhdGV8fHQgaW5zdGFuY2VvZiBSZWdFeHB8fHQgaW5zdGFuY2VvZiBCb29sZWFufHx0IGluc3RhbmNlb2YgU3RyaW5nfHx0IGluc3RhbmNlb2Ygcy5PZmZpY2VTREtNZXNzYWdlRXZlbnQpcmV0dXJuIHQ7dHJ5e2Zvcih2YXIgcj0wLGE9W3dpbmRvdy5BcnJheUJ1ZmZlcix3aW5kb3cuTWFwLHdpbmRvdy5TZXQsd2luZG93LkRhdGFWaWV3LHdpbmRvdy5GaWxlLHdpbmRvdy5GaWxlTGlzdCx3aW5kb3cuQmxvYix3aW5kb3cuSW1hZ2VCaXRtYXAsd2luZG93LkltYWdlRGF0YV07cjxhLmxlbmd0aDtyKyspaWYoaSh0LGFbcl0pKXJldHVybiB0fWNhdGNoKGUpe31pZigoMCxvLmRlZmF1bHQpKHQpKXt2YXIgdT10LGM9e307Zm9yKHZhciBsIGluIHUpITA9PT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodSxsKSYmKGNbbF09ZSh1W2xdLG4pKTtyZXR1cm4gY31pZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUodCxuKX0pKTtpZih0IGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuIHQubWVzc2FnZTt0cnl7aWYodCBpbnN0YW5jZW9mIE9iamVjdC5nZXRQcm90b3R5cGVPZihVaW50OEFycmF5KSlyZXR1cm4gdH1jYXRjaChlKXt9aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygbi5yZXBsYWNlcil7dmFyIGQ9T2JqZWN0LmFzc2lnbih7fSxuKTtyZXR1cm4gZC5yZXBsYWNlcj12b2lkIDAsZShuLnJlcGxhY2VyKHQpLGQpfXRocm93IG5ldyBFcnJvcihcIlwiLmNvbmNhdChTdHJpbmcodCksXCIgY291bGQgbm90IGJlIGNsb25lZFwiKSl9fSwxMzE6KGUsdCk9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnV1aWQ9dm9pZCAwLHQudXVpZD1mdW5jdGlvbigpe2Zvcih2YXIgZSx0PVtdLG49KG51bGwhPT0oZT13aW5kb3cuY3J5cHRvKSYmdm9pZCAwIT09ZT9lOndpbmRvdy5tc0NyeXB0bykuZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KDIwKSkscj0wO3I8bi5sZW5ndGg7cisrKXQucHVzaChuW3JdLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLFwiMFwiKSk7Zm9yKHZhciBvPTAscz1bNCw3LDEwLDEzXTtvPHMubGVuZ3RoO28rKyl0W3Nbb11dPVwiLVwiO3JldHVybiB0LmpvaW4oXCJcIil9fSw0OTk6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24ucih0KSxuLmQodCx7YWRkOigpPT5kLGdldFNpemU6KCk9PnAscmVtb3ZlQWxsOigpPT5oLHJ1bkFsbDooKT0+Zn0pO3ZhciByPW4oNjQzKSxvPW4ubihyKTtjb25zdCBzPXthZGQ6ZnVuY3Rpb24oZSl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSk7ZWxzZXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcilyZXR1cm47d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJiZWZvcmV1bmxvYWRcIiwoZnVuY3Rpb24oKXtlKCl9KSwhMCksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ1bmxvYWRcIiwoZnVuY3Rpb24oKXtlKCl9KSwhMCl9fX07dmFyIGk9bigxOTkpLGE9bi5uKGkpLHU9bygpP2EoKTpzLGM9bmV3IFNldCxsPSExO2Z1bmN0aW9uIGQoZSl7aWYobHx8KGw9ITAsdS5hZGQoZikpLFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKFwiTGlzdGVuZXIgaXMgbm8gZnVuY3Rpb25cIik7cmV0dXJuIGMuYWRkKGUpLHtyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gYy5kZWxldGUoZSl9LHJ1bjpmdW5jdGlvbigpe3JldHVybiBjLmRlbGV0ZShlKSxlKCl9fX1mdW5jdGlvbiBmKCl7dmFyIGU9W107cmV0dXJuIGMuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5wdXNoKHQoKSksYy5kZWxldGUodCl9KSksUHJvbWlzZS5hbGwoZSl9ZnVuY3Rpb24gaCgpe2MuY2xlYXIoKX1mdW5jdGlvbiBwKCl7cmV0dXJuIGMuc2l6ZX19LDE5OTooKT0+e30sNjc1OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2lmKFwiW29iamVjdCBPYmplY3RdXCIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuITE7Y29uc3QgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7cmV0dXJuIG51bGw9PT10fHx0PT09T2JqZWN0LnByb3RvdHlwZX1uLnIodCksbi5kKHQse2RlZmF1bHQ6KCk9PnJ9KX19LHQ9e307ZnVuY3Rpb24gbihyKXt2YXIgbz10W3JdO2lmKHZvaWQgMCE9PW8pcmV0dXJuIG8uZXhwb3J0czt2YXIgcz10W3JdPXtleHBvcnRzOnt9fTtyZXR1cm4gZVtyXS5jYWxsKHMuZXhwb3J0cyxzLHMuZXhwb3J0cyxuKSxzLmV4cG9ydHN9cmV0dXJuIG4ubj1lPT57dmFyIHQ9ZSYmZS5fX2VzTW9kdWxlPygpPT5lLmRlZmF1bHQ6KCk9PmU7cmV0dXJuIG4uZCh0LHthOnR9KSx0fSxuLmQ9KGUsdCk9Pntmb3IodmFyIHIgaW4gdCluLm8odCxyKSYmIW4ubyhlLHIpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDp0W3JdfSl9LG4ubz0oZSx0KT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCksbi5yPWU9PntcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6XCJNb2R1bGVcIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSxuKDYwNyl9KSgpKSk7IiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kT25jZUxpc3RlbmVyID0gbm9vcDtcblxucHJvY2Vzcy5saXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gW10gfVxuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcbiIsIi8qXG4gKiBDb3B5cmlnaHQgMjAxOCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90XG4gKiB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZlxuICogdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUXG4gKiBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGVcbiAqIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyXG4gKiB0aGUgTGljZW5zZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbihmdW5jdGlvbihzY29wZSkge1xuICBpZiAoc2NvcGVbJ1Byb3h5J10pIHtcbiAgICByZXR1cm47XG4gIH1cbiAgc2NvcGUuUHJveHkgPSByZXF1aXJlKCcuL3Byb3h5LmpzJykoKTtcbiAgc2NvcGUuUHJveHlbJ3Jldm9jYWJsZSddID0gc2NvcGUuUHJveHkucmV2b2NhYmxlO1xufSkoXG4gICgndW5kZWZpbmVkJyAhPT0gdHlwZW9mIHByb2Nlc3MgJiZcbiAgICAnW29iamVjdCBwcm9jZXNzXScgPT09IHt9LnRvU3RyaW5nLmNhbGwocHJvY2VzcykpIHx8XG4gICgndW5kZWZpbmVkJyAhPT0gdHlwZW9mIG5hdmlnYXRvciAmJiBuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ1JlYWN0TmF0aXZlJylcbiAgICA/IGdsb2JhbFxuICAgIDogc2VsZlxuKTtcblxuIiwiLypcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3RcbiAqIHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mXG4gKiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVRcbiAqIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZVxuICogTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXJcbiAqIHRoZSBMaWNlbnNlLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcHJveHlQb2x5ZmlsbCgpIHtcbiAgbGV0IGxhc3RSZXZva2VGbiA9IG51bGw7XG4gIGxldCBQcm94eVBvbHlmaWxsO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0geyp9IG9cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gd2hldGhlciB0aGlzIGlzIHByb2JhYmx5IGEgKG5vbi1udWxsKSBPYmplY3RcbiAgICovXG4gIGZ1bmN0aW9uIGlzT2JqZWN0KG8pIHtcbiAgICByZXR1cm4gbyA/ICh0eXBlb2YgbyA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIG8gPT09ICdmdW5jdGlvbicpIDogZmFsc2U7XG4gIH1cblxuICBmdW5jdGlvbiB2YWxpZGF0ZVByb3RvKHByb3RvKSB7XG4gICAgaWYgKHByb3RvICE9PSBudWxsICYmICFpc09iamVjdChwcm90bykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ09iamVjdCBwcm90b3R5cGUgbWF5IG9ubHkgYmUgYW4gT2JqZWN0IG9yIG51bGw6ICcgKyBwcm90byk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgJE9iamVjdCA9IE9iamVjdDtcblxuICAvLyBDbG9zdXJlIGFzc3VtZXMgdGhhdCBge19fcHJvdG9fXzogbnVsbH0gaW5zdGFuY2VvZiBPYmplY3RgIGlzIGFsd2F5cyB0cnVlLCBoZW5jZSB3aHkgd2UgY2hlY2sgYWdhaW5zdCBhIGRpZmZlcmVudCBuYW1lLlxuICBjb25zdCBjYW5DcmVhdGVOdWxsUHJvdG9PYmplY3RzID0gQm9vbGVhbigkT2JqZWN0LmNyZWF0ZSkgfHwgISh7IF9fcHJvdG9fXzogbnVsbCB9IGluc3RhbmNlb2YgJE9iamVjdCk7XG4gIGNvbnN0IG9iamVjdENyZWF0ZSA9XG4gICAgJE9iamVjdC5jcmVhdGUgfHxcbiAgICAoY2FuQ3JlYXRlTnVsbFByb3RvT2JqZWN0c1xuICAgICAgPyBmdW5jdGlvbiBjcmVhdGUocHJvdG8pIHtcbiAgICAgICAgICB2YWxpZGF0ZVByb3RvKHByb3RvKTtcbiAgICAgICAgICByZXR1cm4geyBfX3Byb3RvX186IHByb3RvIH07XG4gICAgICAgIH1cbiAgICAgIDogZnVuY3Rpb24gY3JlYXRlKHByb3RvKSB7XG4gICAgICAgICAgdmFsaWRhdGVQcm90byhwcm90byk7XG4gICAgICAgICAgaWYgKHByb3RvID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ05hdGl2ZSBPYmplY3QuY3JlYXRlIGlzIHJlcXVpcmVkIHRvIGNyZWF0ZSBvYmplY3RzIHdpdGggbnVsbCBwcm90b3R5cGUnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBuYi4gY2FzdCB0byBjb252aW5jZSBDbG9zdXJlIGNvbXBpbGVyIHRoYXQgdGhpcyBpcyBhIGNvbnN0cnVjdG9yXG4gICAgICAgICAgdmFyIFQgPSAvKiogQHR5cGUgeyFGdW5jdGlvbn0gKi8gKGZ1bmN0aW9uIFQoKSB7fSk7XG4gICAgICAgICAgVC5wcm90b3R5cGUgPSBwcm90bztcbiAgICAgICAgICByZXR1cm4gbmV3IFQoKTtcbiAgICAgICAgfSk7XG5cbiAgY29uc3Qgbm9vcCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gbnVsbDsgfTtcblxuICBjb25zdCBnZXRQcm90byA9XG4gICAgJE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fFxuICAgIChbXS5fX3Byb3RvX18gPT09IEFycmF5LnByb3RvdHlwZVxuICAgICAgPyBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZihPKSB7XG4gICAgICAgICAgLy8gSWYgTy5bW1Byb3RvdHlwZV1dID09PSBudWxsLCB0aGVuIHRoZSBfX3Byb3RvX18gYWNjZXNzb3Igd29uJ3QgZXhpc3QsXG4gICAgICAgICAgLy8gYXMgaXQncyBpbmhlcml0ZWQgZnJvbSBgT2JqZWN0LnByb3RvdHlwZWBcbiAgICAgICAgICBjb25zdCBwcm90byA9IE8uX19wcm90b19fO1xuICAgICAgICAgIHJldHVybiBpc09iamVjdChwcm90bykgPyBwcm90byA6IG51bGw7XG4gICAgICAgIH1cbiAgICAgIDogbm9vcCk7XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0geyFPYmplY3R9IHRhcmdldFxuICAgKiBAcGFyYW0ge3thcHBseSwgY29uc3RydWN0LCBnZXQsIHNldH19IGhhbmRsZXJcbiAgICovXG4gIFByb3h5UG9seWZpbGwgPSBmdW5jdGlvbih0YXJnZXQsIGhhbmRsZXIpIHtcbiAgICBjb25zdCBuZXdUYXJnZXQgPSB0aGlzICYmIHRoaXMgaW5zdGFuY2VvZiBQcm94eVBvbHlmaWxsID8gdGhpcy5jb25zdHJ1Y3RvciA6IHVuZGVmaW5lZDtcbiAgICBpZiAobmV3VGFyZ2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDb25zdHJ1Y3RvciBQcm94eSByZXF1aXJlcyAnbmV3J1wiKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzT2JqZWN0KHRhcmdldCkgfHwgIWlzT2JqZWN0KGhhbmRsZXIpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY3JlYXRlIHByb3h5IHdpdGggYSBub24tb2JqZWN0IGFzIHRhcmdldCBvciBoYW5kbGVyJyk7XG4gICAgfVxuXG4gICAgLy8gQ29uc3RydWN0IHJldm9rZSBmdW5jdGlvbiwgYW5kIHNldCBsYXN0UmV2b2tlRm4gc28gdGhhdCBQcm94eS5yZXZvY2FibGUgY2FuIHN0ZWFsIGl0LlxuICAgIC8vIFRoZSBjYWxsZXIgbWlnaHQgZ2V0IHRoZSB3cm9uZyByZXZva2UgZnVuY3Rpb24gaWYgYSB1c2VyIHJlcGxhY2VzIG9yIHdyYXBzIHNjb3BlLlByb3h5XG4gICAgLy8gdG8gY2FsbCBpdHNlbGYsIGJ1dCB0aGF0IHNlZW1zIHVubGlrZWx5IGVzcGVjaWFsbHkgd2hlbiB1c2luZyB0aGUgcG9seWZpbGwuXG4gICAgbGV0IHRocm93UmV2b2tlZCA9IGZ1bmN0aW9uKCkge307XG4gICAgbGFzdFJldm9rZUZuID0gZnVuY3Rpb24oKSB7XG4gICAgICAvKiogQHN1cHByZXNzIHtjaGVja1R5cGVzfSAqL1xuICAgICAgdGFyZ2V0ID0gbnVsbDsgIC8vIGNsZWFyIHJlZlxuICAgICAgdGhyb3dSZXZva2VkID0gZnVuY3Rpb24odHJhcCkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBDYW5ub3QgcGVyZm9ybSAnJHt0cmFwfScgb24gYSBwcm94eSB0aGF0IGhhcyBiZWVuIHJldm9rZWRgKTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgbGFzdFJldm9rZUZuID0gbnVsbDtcbiAgICB9LCAwKTtcblxuICAgIC8vIEZhaWwgb24gdW5zdXBwb3J0ZWQgdHJhcHM6IENocm9tZSBkb2Vzbid0IGRvIHRoaXMsIGJ1dCBlbnN1cmUgdGhhdCB1c2VycyBvZiB0aGUgcG9seWZpbGxcbiAgICAvLyBhcmUgYSBiaXQgbW9yZSBjYXJlZnVsLiBDb3B5IHRoZSBpbnRlcm5hbCBwYXJ0cyBvZiBoYW5kbGVyIHRvIHByZXZlbnQgdXNlciBjaGFuZ2VzLlxuICAgIGNvbnN0IHVuc2FmZUhhbmRsZXIgPSBoYW5kbGVyO1xuICAgIGhhbmRsZXIgPSB7ICdnZXQnOiBudWxsLCAnc2V0JzogbnVsbCwgJ2FwcGx5JzogbnVsbCwgJ2NvbnN0cnVjdCc6IG51bGwgfTtcbiAgICBmb3IgKGxldCBrIGluIHVuc2FmZUhhbmRsZXIpIHtcbiAgICAgIGlmICghKGsgaW4gaGFuZGxlcikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUHJveHkgcG9seWZpbGwgZG9lcyBub3Qgc3VwcG9ydCB0cmFwICcke2t9J2ApO1xuICAgICAgfVxuICAgICAgaGFuZGxlcltrXSA9IHVuc2FmZUhhbmRsZXJba107XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdW5zYWZlSGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgLy8gQWxsb3cgaGFuZGxlciB0byBiZSBhIGZ1bmN0aW9uICh3aGljaCBoYXMgYW4gJ2FwcGx5JyBtZXRob2QpLiBUaGlzIG1hdGNoZXMgd2hhdCBpc1xuICAgICAgLy8gcHJvYmFibHkgYSBidWcgaW4gbmF0aXZlIHZlcnNpb25zLiBJdCB0cmVhdHMgdGhlIGFwcGx5IGNhbGwgYXMgYSB0cmFwIHRvIGJlIGNvbmZpZ3VyZWQuXG4gICAgICBoYW5kbGVyLmFwcGx5ID0gdW5zYWZlSGFuZGxlci5hcHBseS5iaW5kKHVuc2FmZUhhbmRsZXIpO1xuICAgIH1cblxuICAgIC8vIERlZmluZSBwcm94eSBhcyBhbiBvYmplY3QgdGhhdCBleHRlbmRzIHRhcmdldC5bW1Byb3RvdHlwZV1dLFxuICAgIC8vIG9yIGEgRnVuY3Rpb24gKGlmIGVpdGhlciBpdCdzIGNhbGxhYmxlLCBvciBhcHBseSBpcyBzZXQpLlxuICAgIGNvbnN0IHByb3RvID0gZ2V0UHJvdG8odGFyZ2V0KTsgIC8vIGNhbiByZXR1cm4gbnVsbCBpbiBvbGQgYnJvd3NlcnNcbiAgICBsZXQgcHJveHk7XG4gICAgbGV0IGlzTWV0aG9kID0gZmFsc2U7XG4gICAgbGV0IGlzQXJyYXkgPSBmYWxzZTtcbiAgICBpZiAodHlwZW9mIHRhcmdldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJveHkgPSBmdW5jdGlvbiBQcm94eVBvbHlmaWxsKCkge1xuICAgICAgICBjb25zdCB1c2luZ05ldyA9ICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHByb3h5KTtcbiAgICAgICAgY29uc3QgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgICAgIHRocm93UmV2b2tlZCh1c2luZ05ldyA/ICdjb25zdHJ1Y3QnIDogJ2FwcGx5Jyk7XG5cbiAgICAgICAgLy8gVE9ETyhzYW10aG9yKTogQ2xvc3VyZSBjb21waWxlciBkb2Vzbid0IGtub3cgYWJvdXQgJ2NvbnN0cnVjdCcsIGF0dGVtcHRzIHRvIHJlbmFtZSBpdC5cbiAgICAgICAgaWYgKHVzaW5nTmV3ICYmIGhhbmRsZXJbJ2NvbnN0cnVjdCddKSB7XG4gICAgICAgICAgcmV0dXJuIGhhbmRsZXJbJ2NvbnN0cnVjdCddLmNhbGwodGhpcywgdGFyZ2V0LCBhcmdzKTtcbiAgICAgICAgfSBlbHNlIGlmICghdXNpbmdOZXcgJiYgaGFuZGxlci5hcHBseSkge1xuICAgICAgICAgIHJldHVybiBoYW5kbGVyWydhcHBseSddKHRhcmdldCwgdGhpcywgYXJncyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzaW5jZSB0aGUgdGFyZ2V0IHdhcyBhIGZ1bmN0aW9uLCBmYWxsYmFjayB0byBjYWxsaW5nIGl0IGRpcmVjdGx5LlxuICAgICAgICBpZiAodXNpbmdOZXcpIHtcbiAgICAgICAgICAvLyBpbnNwaXJlZCBieSBhbnN3ZXJzIHRvIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcS8xNjA2Nzk3XG4gICAgICAgICAgYXJncy51bnNoaWZ0KHRhcmdldCk7ICAvLyBwYXNzIGNsYXNzIGFzIGZpcnN0IGFyZyB0byBjb25zdHJ1Y3RvciwgYWx0aG91Z2ggaXJyZWxldmFudFxuICAgICAgICAgIC8vIG5iLiBjYXN0IHRvIGNvbnZpbmNlIENsb3N1cmUgY29tcGlsZXIgdGhhdCB0aGlzIGlzIGEgY29uc3RydWN0b3JcbiAgICAgICAgICBjb25zdCBmID0gLyoqIEB0eXBlIHshRnVuY3Rpb259ICovICh0YXJnZXQuYmluZC5hcHBseSh0YXJnZXQsIGFyZ3MpKTtcbiAgICAgICAgICByZXR1cm4gbmV3IGYoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFyZ2V0LmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgfTtcbiAgICAgIGlzTWV0aG9kID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHRhcmdldCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBwcm94eSA9IFtdO1xuICAgICAgaXNBcnJheSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb3h5ID0gKGNhbkNyZWF0ZU51bGxQcm90b09iamVjdHMgfHwgcHJvdG8gIT09IG51bGwpID8gb2JqZWN0Q3JlYXRlKHByb3RvKSA6IHt9O1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBkZWZhdWx0IGdldHRlcnMvc2V0dGVycy4gQ3JlYXRlIGRpZmZlcmVudCBjb2RlIHBhdGhzIGFzIGhhbmRsZXIuZ2V0L2hhbmRsZXIuc2V0IGNhbid0XG4gICAgLy8gY2hhbmdlIGFmdGVyIGNyZWF0aW9uLlxuICAgIGNvbnN0IGdldHRlciA9IGhhbmRsZXIuZ2V0ID8gZnVuY3Rpb24ocHJvcCkge1xuICAgICAgdGhyb3dSZXZva2VkKCdnZXQnKTtcbiAgICAgIHJldHVybiBoYW5kbGVyLmdldCh0aGlzLCBwcm9wLCBwcm94eSk7XG4gICAgfSA6IGZ1bmN0aW9uKHByb3ApIHtcbiAgICAgIHRocm93UmV2b2tlZCgnZ2V0Jyk7XG4gICAgICByZXR1cm4gdGhpc1twcm9wXTtcbiAgICB9O1xuICAgIGNvbnN0IHNldHRlciA9IGhhbmRsZXIuc2V0ID8gZnVuY3Rpb24ocHJvcCwgdmFsdWUpIHtcbiAgICAgIHRocm93UmV2b2tlZCgnc2V0Jyk7XG4gICAgICBjb25zdCBzdGF0dXMgPSBoYW5kbGVyLnNldCh0aGlzLCBwcm9wLCB2YWx1ZSwgcHJveHkpO1xuICAgICAgLy8gVE9ETyhzYW10aG9yKTogSWYgdGhlIGNhbGxpbmcgY29kZSBpcyBpbiBzdHJpY3QgbW9kZSwgdGhyb3cgVHlwZUVycm9yLlxuICAgICAgLy8gaWYgKCFzdGF0dXMpIHtcbiAgICAgICAgLy8gSXQncyAoc29tZXRpbWVzKSBwb3NzaWJsZSB0byB3b3JrIHRoaXMgb3V0LCBpZiB0aGlzIGNvZGUgaXNuJ3Qgc3RyaWN0LSB0cnkgdG8gbG9hZCB0aGVcbiAgICAgICAgLy8gY2FsbGVlLCBhbmQgaWYgaXQncyBhdmFpbGFibGUsIHRoYXQgY29kZSBpcyBub24tc3RyaWN0LiBIb3dldmVyLCB0aGlzIGlzbid0IGV4aGF1c3RpdmUuXG4gICAgICAvLyB9XG4gICAgfSA6IGZ1bmN0aW9uKHByb3AsIHZhbHVlKSB7XG4gICAgICB0aHJvd1Jldm9rZWQoJ3NldCcpO1xuICAgICAgdGhpc1twcm9wXSA9IHZhbHVlO1xuICAgIH07XG5cbiAgICAvLyBDbG9uZSBkaXJlY3QgcHJvcGVydGllcyAoaS5lLiwgbm90IHBhcnQgb2YgYSBwcm90b3R5cGUpLlxuICAgIGNvbnN0IHByb3BlcnR5TmFtZXMgPSAkT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICBjb25zdCBwcm9wZXJ0eU1hcCA9IHt9O1xuICAgIHByb3BlcnR5TmFtZXMuZm9yRWFjaChmdW5jdGlvbihwcm9wKSB7XG4gICAgICBpZiAoKGlzTWV0aG9kIHx8IGlzQXJyYXkpICYmIHByb3AgaW4gcHJveHkpIHtcbiAgICAgICAgcmV0dXJuOyAgLy8gaWdub3JlIHByb3BlcnRpZXMgYWxyZWFkeSBoZXJlLCBlLmcuICdiaW5kJywgJ3Byb3RvdHlwZScgZXRjXG4gICAgICB9XG4gICAgICBjb25zdCByZWFsID0gJE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBwcm9wKTtcbiAgICAgIGNvbnN0IGRlc2MgPSB7XG4gICAgICAgIGVudW1lcmFibGU6IEJvb2xlYW4ocmVhbC5lbnVtZXJhYmxlKSxcbiAgICAgICAgZ2V0OiBnZXR0ZXIuYmluZCh0YXJnZXQsIHByb3ApLFxuICAgICAgICBzZXQ6IHNldHRlci5iaW5kKHRhcmdldCwgcHJvcCksXG4gICAgICB9O1xuICAgICAgJE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm94eSwgcHJvcCwgZGVzYyk7XG4gICAgICBwcm9wZXJ0eU1hcFtwcm9wXSA9IHRydWU7XG4gICAgfSk7XG5cbiAgICAvLyBTZXQgdGhlIHByb3RvdHlwZSwgb3IgY2xvbmUgYWxsIHByb3RvdHlwZSBtZXRob2RzIChhbHdheXMgcmVxdWlyZWQgaWYgYSBnZXR0ZXIgaXMgcHJvdmlkZWQpLlxuICAgIC8vIFRPRE8oc2FtdGhvcik6IFdlIGRvbid0IGFsbG93IHByb3RvdHlwZSBtZXRob2RzIHRvIGJlIHNldC4gSXQncyAoZXZlbiBtb3JlKSBhd2t3YXJkLlxuICAgIC8vIEFuIGFsdGVybmF0aXZlIGhlcmUgd291bGQgYmUgdG8gX2p1c3RfIGNsb25lIG1ldGhvZHMgdG8ga2VlcCBiZWhhdmlvciBjb25zaXN0ZW50LlxuICAgIGxldCBwcm90b3R5cGVPayA9IHRydWU7XG4gICAgaWYgKGlzTWV0aG9kIHx8IGlzQXJyYXkpIHtcbiAgICAgIC8vIEFycmF5cyBhbmQgbWV0aG9kcyBhcmUgc3BlY2lhbDogYWJvdmUsIHdlIGluc3RhbnRpYXRlIGJvcmluZyB2ZXJzaW9ucyBvZiB0aGVzZSB0aGVuIHN3YXBcbiAgICAgIC8vIG91ciB0aGVpciBwcm90b3R5cGUgbGF0ZXIuIFNvIHdlIG9ubHkgbmVlZCB0byB1c2Ugc2V0UHJvdG90eXBlT2YgaW4gdGhlc2UgY2FzZXMuIFNvbWUgb2xkXG4gICAgICAvLyBlbmdpbmVzIHN1cHBvcnQgYE9iamVjdC5nZXRQcm90b3R5cGVPZmAgYnV0IG5vdCBgT2JqZWN0LnNldFByb3RvdHlwZU9mYC5cbiAgICAgIGNvbnN0IHNldFByb3RvID1cbiAgICAgICAgJE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAoW10uX19wcm90b19fID09PSBBcnJheS5wcm90b3R5cGVcbiAgICAgICAgICA/IGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKSB7XG4gICAgICAgICAgICAgIHZhbGlkYXRlUHJvdG8ocHJvdG8pO1xuICAgICAgICAgICAgICBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgICAgICAgICAgICByZXR1cm4gTztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IG5vb3ApO1xuICAgICAgaWYgKCEocHJvdG8gJiYgc2V0UHJvdG8ocHJveHksIHByb3RvKSkpIHtcbiAgICAgICAgcHJvdG90eXBlT2sgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGhhbmRsZXIuZ2V0IHx8ICFwcm90b3R5cGVPaykge1xuICAgICAgZm9yIChsZXQgayBpbiB0YXJnZXQpIHtcbiAgICAgICAgaWYgKHByb3BlcnR5TWFwW2tdKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgJE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm94eSwgaywgeyBnZXQ6IGdldHRlci5iaW5kKHRhcmdldCwgaykgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhlIFByb3h5IHBvbHlmaWxsIGNhbm5vdCBoYW5kbGUgYWRkaW5nIG5ldyBwcm9wZXJ0aWVzLiBTZWFsIHRoZSB0YXJnZXQgYW5kIHByb3h5LlxuICAgICRPYmplY3Quc2VhbCh0YXJnZXQpO1xuICAgICRPYmplY3Quc2VhbChwcm94eSk7XG5cbiAgICByZXR1cm4gcHJveHk7ICAvLyBuYi4gaWYgaXNNZXRob2QgaXMgdHJ1ZSwgcHJveHkgIT0gdGhpc1xuICB9O1xuXG4gIFByb3h5UG9seWZpbGwucmV2b2NhYmxlID0gZnVuY3Rpb24odGFyZ2V0LCBoYW5kbGVyKSB7XG4gICAgY29uc3QgcCA9IG5ldyBQcm94eVBvbHlmaWxsKHRhcmdldCwgaGFuZGxlcik7XG4gICAgcmV0dXJuIHsgJ3Byb3h5JzogcCwgJ3Jldm9rZSc6IGxhc3RSZXZva2VGbiB9O1xuICB9O1xuXG4gIHJldHVybiBQcm94eVBvbHlmaWxsO1xufVxuIiwiZnVuY3Rpb24gRSAoKSB7XG4gIC8vIEtlZXAgdGhpcyBlbXB0eSBzbyBpdCdzIGVhc2llciB0byBpbmhlcml0IGZyb21cbiAgLy8gKHZpYSBodHRwczovL2dpdGh1Yi5jb20vbGlwc21hY2sgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vc2NvdHRjb3JnYW4vdGlueS1lbWl0dGVyL2lzc3Vlcy8zKVxufVxuXG5FLnByb3RvdHlwZSA9IHtcbiAgb246IGZ1bmN0aW9uIChuYW1lLCBjYWxsYmFjaywgY3R4KSB7XG4gICAgdmFyIGUgPSB0aGlzLmUgfHwgKHRoaXMuZSA9IHt9KTtcblxuICAgIChlW25hbWVdIHx8IChlW25hbWVdID0gW10pKS5wdXNoKHtcbiAgICAgIGZuOiBjYWxsYmFjayxcbiAgICAgIGN0eDogY3R4XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcblxuICBvbmNlOiBmdW5jdGlvbiAobmFtZSwgY2FsbGJhY2ssIGN0eCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBmdW5jdGlvbiBsaXN0ZW5lciAoKSB7XG4gICAgICBzZWxmLm9mZihuYW1lLCBsaXN0ZW5lcik7XG4gICAgICBjYWxsYmFjay5hcHBseShjdHgsIGFyZ3VtZW50cyk7XG4gICAgfTtcblxuICAgIGxpc3RlbmVyLl8gPSBjYWxsYmFja1xuICAgIHJldHVybiB0aGlzLm9uKG5hbWUsIGxpc3RlbmVyLCBjdHgpO1xuICB9LFxuXG4gIGVtaXQ6IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIGRhdGEgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgdmFyIGV2dEFyciA9ICgodGhpcy5lIHx8ICh0aGlzLmUgPSB7fSkpW25hbWVdIHx8IFtdKS5zbGljZSgpO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgbGVuID0gZXZ0QXJyLmxlbmd0aDtcblxuICAgIGZvciAoaTsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBldnRBcnJbaV0uZm4uYXBwbHkoZXZ0QXJyW2ldLmN0eCwgZGF0YSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG5cbiAgb2ZmOiBmdW5jdGlvbiAobmFtZSwgY2FsbGJhY2spIHtcbiAgICB2YXIgZSA9IHRoaXMuZSB8fCAodGhpcy5lID0ge30pO1xuICAgIHZhciBldnRzID0gZVtuYW1lXTtcbiAgICB2YXIgbGl2ZUV2ZW50cyA9IFtdO1xuXG4gICAgaWYgKGV2dHMgJiYgY2FsbGJhY2spIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBldnRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGlmIChldnRzW2ldLmZuICE9PSBjYWxsYmFjayAmJiBldnRzW2ldLmZuLl8gIT09IGNhbGxiYWNrKVxuICAgICAgICAgIGxpdmVFdmVudHMucHVzaChldnRzW2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZW1vdmUgZXZlbnQgZnJvbSBxdWV1ZSB0byBwcmV2ZW50IG1lbW9yeSBsZWFrXG4gICAgLy8gU3VnZ2VzdGVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9sYXpkXG4gICAgLy8gUmVmOiBodHRwczovL2dpdGh1Yi5jb20vc2NvdHRjb3JnYW4vdGlueS1lbWl0dGVyL2NvbW1pdC9jNmViZmFhOWJjOTczYjMzZDExMGE4NGEzMDc3NDJiN2NmOTRjOTUzI2NvbW1pdGNvbW1lbnQtNTAyNDkxMFxuXG4gICAgKGxpdmVFdmVudHMubGVuZ3RoKVxuICAgICAgPyBlW25hbWVdID0gbGl2ZUV2ZW50c1xuICAgICAgOiBkZWxldGUgZVtuYW1lXTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEU7XG5tb2R1bGUuZXhwb3J0cy5UaW55RW1pdHRlciA9IEU7XG4iLCJpbXBvcnQgeyBGaWxlVHlwZSB9IGZyb20gJ3dlYm9mZmljZS1qcy1zZGstc2hhcmVkJ1xuXG5pbXBvcnQgdHlwZSB7XG4gIENvbGxhYm9yYXRvckZhY2FkZSxcbiAgQWRkUmFuZ2VMb2NrUGFyYW1zLFxuICBBZGRTaGVldExvY2tQYXJhbXMsXG4gIENvbnRlbnQsXG4gIENvbnRlbnRGYWNhZGUsXG4gIERpc2N1c3Npb25GYWNhZGUsXG4gIERvY3NSYW5nZUZhY2FkZSxcbiAgRG9jc1JhbmdlVmFsdWUsXG4gIERvY3NTZWFyY2hGYWNhZGUsXG4gIERvY3NTZWxlY3Rpb25GYWNhZGUsXG4gIERvY3NTZXR0aW5nc0ZhY2FkZSxcbiAgRG9jc1NpZGViYXJGYWNhZGUsXG4gIERvY3NPdXRsaW5lRmFjYWRlLFxuICBEb2NzVGFibGVDZWxsRmFjYWRlLFxuICBEb2NzVGFibGVGYWNhZGUsXG4gIERvY3NUYWJsZVJhbmdlRmFjYWRlLFxuICBEb2NzVGFibGVTZWxlY3Rpb24sXG4gIERvY3NUYWJsZXNGYWNhZGUsXG4gIEV4dGVybmFsQXBwRmFjYWRlLFxuICBIaXN0b3J5RmFjYWRlLFxuICBMb2Nrc0ZhY2FkZSxcbiAgTWVudGlvbkZhY2FkZSxcbiAgTWVudGlvblR5cGVzLFxuICBPZmZpY2VTREtSb290RmFjYWRlU3RhdGUsXG4gIFByZXNlbnRhdGlvbkV2ZW50U3Vic2NyaXB0aW9uRmFjYWRlLFxuICBQcmVzZW50YXRpb25GYWNhZGUsXG4gIFByZXNlbnRhdGlvblNlbGVjdGlvbkZhY2FkZSxcbiAgUHJlc2VudGF0aW9uU2xpZGVGYWNhZGUsXG4gIFByZXNlbnRhdGlvblNsaWRlc0ZhY2FkZSxcbiAgUHJlc2VudGF0aW9uVGV4dEZhY2FkZSxcbiAgUHJlc2VudGF0aW9uVGV4dFJhbmdlRmFjYWRlLFxuICBQcmVzZW50YXRpb25UZXh0UmFuZ2VWYWx1ZSxcbiAgUHJlc2VudGF0aW9uWm9vbUZhY2FkZSxcbiAgUmVtb3ZlUmFuZ2VMb2Nrc1BhcmFtcyxcbiAgUmVtb3ZlU2hlZXRMb2NrUGFyYW1zLFxuICBSZXZpc2lvbkNyZWF0ZU9wdGlvbnMsXG4gIFNoZWV0Q2hhcnRzRmFjYWRlLFxuICBTaGVldENlbGxGYWNhZGUsXG4gIFNoZWV0UmFuZ2VGYWNhZGUsXG4gIFNoZWV0UmFuZ2VWYWx1ZSxcbiAgU2hlZXRTZWxlY3Rpb25zRmFjYWRlLFxuICBTaGVldFdvcmtib29rRmFjYWRlLFxuICBTaGVldFdvcmtzaGVldEZhY2FkZSxcbiAgVGl0bGVGYWNhZGUsXG4gIFZlcnNpb25GYWNhZGVcbn0gZnJvbSAnLi9PZmZpY2VTREsuZmFjYWRlLnR5cGVzJ1xuXG50eXBlIEVkaXRvckZhY2FkZUNhbGxiYWNrID0gKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdW5rbm93biB8IFByb21pc2U8dW5rbm93bj5cblxuaW50ZXJmYWNlIEZhY2FkZUhvc3Qge1xuICBmaWxlVHlwZTogRmlsZVR5cGVcbiAgaW52b2tlRWRpdG9yRmFjYWRlPFQ+KG1ldGhvZDogc3RyaW5nLCBhcmdzPzogdW5rbm93bltdKTogUHJvbWlzZTxUPlxuICBsaXN0ZW5FZGl0b3JFdmVudDxUPihcbiAgICBldmVudDogc3RyaW5nLFxuICAgIGxpc3RlbmVyOiAocGF5bG9hZDogVCkgPT4gdm9pZFxuICApOiAoKSA9PiB2b2lkXG4gIGNyZWF0ZUVkaXRvckZhY2FkZU1vZHVsZTxUIGV4dGVuZHMgb2JqZWN0PihcbiAgICBwcmVmaXg6IHN0cmluZyxcbiAgICBzdGF0aWNGaWVsZHM/OiBQYXJ0aWFsPFQ+XG4gICk6IFRcbiAgY3JlYXRlVmFsdWVPYmplY3RGYWNhZGU8VCBleHRlbmRzIG9iamVjdD4oXG4gICAgcHJlZml4OiBzdHJpbmcsXG4gICAgbG9jYXRvcjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgc3RhdGljRmllbGRzOiBQYXJ0aWFsPFQ+XG4gICk6IFRcbiAgcmVnaXN0ZXJFZGl0b3JGYWNhZGVMaXN0ZW5lcjxUPihcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICBsaXN0ZW5lcjogKHBheWxvYWQ6IFQpID0+IHZvaWRcbiAgKTogKCkgPT4gdm9pZFxuICByZWdpc3RlckVkaXRvckZhY2FkZUNhbGxiYWNrKGNhbGxiYWNrOiBFZGl0b3JGYWNhZGVDYWxsYmFjayk6IHN0cmluZ1xuICB1bnJlZ2lzdGVyRWRpdG9yRmFjYWRlQ2FsbGJhY2soY2FsbGJhY2tJZDogc3RyaW5nKTogdm9pZFxufVxuXG5mdW5jdGlvbiBjcmVhdGVEb2NzUmFuZ2VGYWNhZGUoXG4gIGhvc3Q6IEZhY2FkZUhvc3QsXG4gIGxvY2F0b3I6IHsgc3RhcnQ6IG51bWJlcjsgZW5kOiBudW1iZXIgfSB8IG51bGwgfCB1bmRlZmluZWRcbik6IERvY3NSYW5nZUZhY2FkZSB8IG51bGwge1xuICBpZiAoIWxvY2F0b3IpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiBob3N0LmNyZWF0ZVZhbHVlT2JqZWN0RmFjYWRlPERvY3NSYW5nZUZhY2FkZT4oXG4gICAgJ3NlbGVjdGlvbi5yYW5nZScsXG4gICAgbG9jYXRvcixcbiAgICB7XG4gICAgICBzdGFydDogbG9jYXRvci5zdGFydCxcbiAgICAgIGVuZDogbG9jYXRvci5lbmQsXG4gICAgICBpc0NhcmV0OiBsb2NhdG9yLnN0YXJ0ID09PSBsb2NhdG9yLmVuZFxuICAgIH1cbiAgKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVEb2NzVGFibGVGYWNhZGUoXG4gIGhvc3Q6IEZhY2FkZUhvc3QsXG4gIGxvY2F0b3I6IHsgdGFibGVJZDogc3RyaW5nIH1cbik6IERvY3NUYWJsZUZhY2FkZSB7XG4gIHJldHVybiBob3N0LmNyZWF0ZVZhbHVlT2JqZWN0RmFjYWRlPERvY3NUYWJsZUZhY2FkZT4oJ3RhYmxlcy5pdGVtJywgbG9jYXRvciwge1xuICAgIHRhYmxlSWQ6IGxvY2F0b3IudGFibGVJZCxcbiAgICBnZXRDZWxsOiBhc3luYyAocm93OiBudW1iZXIsIGNvbHVtbjogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBuZXh0TG9jYXRvciA9IGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlPHtcbiAgICAgICAgdGFibGVJZDogc3RyaW5nXG4gICAgICAgIHJvdzogbnVtYmVyXG4gICAgICAgIGNvbHVtbjogbnVtYmVyXG4gICAgICB9IHwgbnVsbD4oJ3RhYmxlcy5pdGVtLmdldENlbGwnLCBbbG9jYXRvciwgcm93LCBjb2x1bW5dKVxuICAgICAgaWYgKCFuZXh0TG9jYXRvcikge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgICAgcmV0dXJuIGhvc3QuY3JlYXRlVmFsdWVPYmplY3RGYWNhZGU8RG9jc1RhYmxlQ2VsbEZhY2FkZT4oXG4gICAgICAgICd0YWJsZXMuY2VsbCcsXG4gICAgICAgIG5leHRMb2NhdG9yLFxuICAgICAgICB7XG4gICAgICAgICAgdGFibGVJZDogbmV4dExvY2F0b3IudGFibGVJZCxcbiAgICAgICAgICByb3c6IG5leHRMb2NhdG9yLnJvdyxcbiAgICAgICAgICBjb2x1bW46IG5leHRMb2NhdG9yLmNvbHVtblxuICAgICAgICB9XG4gICAgICApXG4gICAgfSxcbiAgICBnZXRSYW5nZTogYXN5bmMgKHNlbGVjdGlvbjogRG9jc1RhYmxlU2VsZWN0aW9uKSA9PiB7XG4gICAgICBjb25zdCBuZXh0TG9jYXRvciA9IGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlPHtcbiAgICAgICAgdGFibGVJZDogc3RyaW5nXG4gICAgICAgIHNlbGVjdGlvbjogRG9jc1RhYmxlU2VsZWN0aW9uXG4gICAgICB9IHwgbnVsbD4oJ3RhYmxlcy5pdGVtLmdldFJhbmdlJywgW2xvY2F0b3IsIHNlbGVjdGlvbl0pXG4gICAgICBpZiAoIW5leHRMb2NhdG9yKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgICByZXR1cm4gaG9zdC5jcmVhdGVWYWx1ZU9iamVjdEZhY2FkZTxEb2NzVGFibGVSYW5nZUZhY2FkZT4oXG4gICAgICAgICd0YWJsZXMucmFuZ2UnLFxuICAgICAgICBuZXh0TG9jYXRvcixcbiAgICAgICAge1xuICAgICAgICAgIHRhYmxlSWQ6IG5leHRMb2NhdG9yLnRhYmxlSWQsXG4gICAgICAgICAgc2VsZWN0aW9uOiBuZXh0TG9jYXRvci5zZWxlY3Rpb25cbiAgICAgICAgfVxuICAgICAgKVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlU2hlZXRSYW5nZUZhY2FkZShcbiAgaG9zdDogRmFjYWRlSG9zdCxcbiAgbG9jYXRvcjpcbiAgICB8IHtcbiAgICAgICAgc2hlZXRJZD86IHN0cmluZ1xuICAgICAgICByb3c6IG51bWJlclxuICAgICAgICBjb2x1bW46IG51bWJlclxuICAgICAgICByb3dDb3VudDogbnVtYmVyXG4gICAgICAgIGNvbHVtbkNvdW50OiBudW1iZXJcbiAgICAgIH1cbiAgICB8IG51bGxcbiAgICB8IHVuZGVmaW5lZFxuKTogU2hlZXRSYW5nZUZhY2FkZSB8IG51bGwge1xuICBpZiAoIWxvY2F0b3IpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiBob3N0LmNyZWF0ZVZhbHVlT2JqZWN0RmFjYWRlPFNoZWV0UmFuZ2VGYWNhZGU+KFxuICAgICdzaGVldC5yYW5nZScsXG4gICAgbG9jYXRvcixcbiAgICBsb2NhdG9yXG4gIClcbn1cblxuZnVuY3Rpb24gY3JlYXRlU2hlZXRDZWxsRmFjYWRlKFxuICBob3N0OiBGYWNhZGVIb3N0LFxuICBsb2NhdG9yOlxuICAgIHwge1xuICAgICAgICBzaGVldElkPzogc3RyaW5nXG4gICAgICAgIHJvdzogbnVtYmVyXG4gICAgICAgIGNvbHVtbjogbnVtYmVyXG4gICAgICB9XG4gICAgfCBudWxsXG4gICAgfCB1bmRlZmluZWRcbik6IFNoZWV0Q2VsbEZhY2FkZSB8IG51bGwge1xuICBpZiAoIWxvY2F0b3IpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiBob3N0LmNyZWF0ZVZhbHVlT2JqZWN0RmFjYWRlPFNoZWV0Q2VsbEZhY2FkZT4oXG4gICAgJ3NoZWV0LmNlbGwnLFxuICAgIGxvY2F0b3IsXG4gICAgbG9jYXRvclxuICApXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVNoZWV0V29ya3NoZWV0RmFjYWRlKFxuICBob3N0OiBGYWNhZGVIb3N0LFxuICBsb2NhdG9yOiB7XG4gICAgc2hlZXRJZD86IHN0cmluZ1xuICAgIGlkPzogc3RyaW5nXG4gICAgbmFtZT86IHN0cmluZ1xuICAgIGFjdGl2ZT86IGJvb2xlYW5cbiAgfVxuKTogU2hlZXRXb3Jrc2hlZXRGYWNhZGUge1xuICByZXR1cm4gaG9zdC5jcmVhdGVWYWx1ZU9iamVjdEZhY2FkZTxTaGVldFdvcmtzaGVldEZhY2FkZT4oXG4gICAgJ3NoZWV0LndvcmtzaGVldCcsXG4gICAgbG9jYXRvcixcbiAgICB7XG4gICAgICBpZDogbG9jYXRvci5pZCxcbiAgICAgIG5hbWU6IGxvY2F0b3IubmFtZSxcbiAgICAgIGdldFJhbmdlOiBhc3luYyAodmFsdWU6IFNoZWV0UmFuZ2VWYWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCByYW5nZUxvY2F0b3IgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTx7XG4gICAgICAgICAgc2hlZXRJZD86IHN0cmluZ1xuICAgICAgICAgIHJvdzogbnVtYmVyXG4gICAgICAgICAgY29sdW1uOiBudW1iZXJcbiAgICAgICAgICByb3dDb3VudDogbnVtYmVyXG4gICAgICAgICAgY29sdW1uQ291bnQ6IG51bWJlclxuICAgICAgICB9IHwgbnVsbD4oJ3NoZWV0LndvcmtzaGVldC5nZXRSYW5nZScsIFtsb2NhdG9yLCB2YWx1ZV0pXG4gICAgICAgIHJldHVybiBjcmVhdGVTaGVldFJhbmdlRmFjYWRlKGhvc3QsIHJhbmdlTG9jYXRvcilcbiAgICAgIH0sXG4gICAgICBnZXRDZWxsOiBhc3luYyAocm93OiBudW1iZXIsIGNvbHVtbjogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGNlbGxMb2NhdG9yID0gYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGU8e1xuICAgICAgICAgIHNoZWV0SWQ/OiBzdHJpbmdcbiAgICAgICAgICByb3c6IG51bWJlclxuICAgICAgICAgIGNvbHVtbjogbnVtYmVyXG4gICAgICAgIH0gfCBudWxsPignc2hlZXQud29ya3NoZWV0LmdldENlbGwnLCBbbG9jYXRvciwgcm93LCBjb2x1bW5dKVxuICAgICAgICByZXR1cm4gY3JlYXRlU2hlZXRDZWxsRmFjYWRlKGhvc3QsIGNlbGxMb2NhdG9yKVxuICAgICAgfSxcbiAgICAgIGdldEFjdGl2ZUNlbGw6IGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgY2VsbExvY2F0b3IgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTx7XG4gICAgICAgICAgc2hlZXRJZD86IHN0cmluZ1xuICAgICAgICAgIHJvdzogbnVtYmVyXG4gICAgICAgICAgY29sdW1uOiBudW1iZXJcbiAgICAgICAgfSB8IG51bGw+KCdzaGVldC53b3Jrc2hlZXQuZ2V0QWN0aXZlQ2VsbCcsIFtsb2NhdG9yXSlcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVNoZWV0Q2VsbEZhY2FkZShob3N0LCBjZWxsTG9jYXRvcilcbiAgICAgIH1cbiAgICB9XG4gIClcbn1cblxuZnVuY3Rpb24gY3JlYXRlUHJlc2VudGF0aW9uVGV4dFJhbmdlRmFjYWRlKFxuICBob3N0OiBGYWNhZGVIb3N0LFxuICBsb2NhdG9yOiB7IHN0YXJ0OiBzdHJpbmc7IGVuZDogc3RyaW5nIH0gfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBQcmVzZW50YXRpb25UZXh0UmFuZ2VGYWNhZGUgfCBudWxsIHtcbiAgaWYgKCFsb2NhdG9yKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICByZXR1cm4gaG9zdC5jcmVhdGVWYWx1ZU9iamVjdEZhY2FkZTxQcmVzZW50YXRpb25UZXh0UmFuZ2VGYWNhZGU+KFxuICAgICdzZWxlY3Rpb24udGV4dFJhbmdlJyxcbiAgICBsb2NhdG9yLFxuICAgIHtcbiAgICAgIHN0YXJ0OiBsb2NhdG9yLnN0YXJ0LFxuICAgICAgZW5kOiBsb2NhdG9yLmVuZFxuICAgIH1cbiAgKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVQcmVzZW50YXRpb25TbGlkZUZhY2FkZShcbiAgaG9zdDogRmFjYWRlSG9zdCxcbiAgbG9jYXRvcjoge1xuICAgIHNsaWRlSWQ6IHN0cmluZ1xuICB9XG4pOiBQcmVzZW50YXRpb25TbGlkZUZhY2FkZSB7XG4gIHJldHVybiBob3N0LmNyZWF0ZVZhbHVlT2JqZWN0RmFjYWRlPFByZXNlbnRhdGlvblNsaWRlRmFjYWRlPihcbiAgICAnc2xpZGVzLnNsaWRlJyxcbiAgICBsb2NhdG9yLFxuICAgIHtcbiAgICAgIGlkOiBsb2NhdG9yLnNsaWRlSWRcbiAgICB9XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUm9vdEZhY2FkZVN0YXRlKFxuICBob3N0OiBGYWNhZGVIb3N0XG4pOiBPZmZpY2VTREtSb290RmFjYWRlU3RhdGUge1xuICBjb25zdCB0aXRsZUZhY2FkZTogVGl0bGVGYWNhZGUgPSB7XG4gICAgYWRkQ2hhbmdlZExpc3RlbmVyOiAobGlzdGVuZXI6ICh0aXRsZTogc3RyaW5nKSA9PiB2b2lkKSA9PiB7XG4gICAgICByZXR1cm4gaG9zdC5saXN0ZW5FZGl0b3JFdmVudDxzdHJpbmc+KCd0aXRsZUNoYW5nZScsIGxpc3RlbmVyKVxuICAgIH0sXG4gICAgc2V0VGl0bGU6IGFzeW5jICh0aXRsZTogc3RyaW5nKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgndGl0bGUuc2V0VGl0bGUnLCBbdGl0bGVdKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGNvbW1lbnRzRmFjYWRlID0ge1xuICAgIHNob3c6IGFzeW5jICh0eXBlPzogJ2xpc3QnIHwgJ2NhcmQnKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZShcbiAgICAgICAgJ2NvbW1lbnRzLnNob3cnLFxuICAgICAgICB0eXBlb2YgdHlwZSA9PT0gJ3VuZGVmaW5lZCcgPyBbXSA6IFt0eXBlXVxuICAgICAgKVxuICAgIH0sXG4gICAgaGlkZTogYXN5bmMgKHR5cGU/OiAnbGlzdCcgfCAnY2FyZCcpID0+IHtcbiAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKFxuICAgICAgICAnY29tbWVudHMuaGlkZScsXG4gICAgICAgIHR5cGVvZiB0eXBlID09PSAndW5kZWZpbmVkJyA/IFtdIDogW3R5cGVdXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGlzdG9yeUZhY2FkZTogSGlzdG9yeUZhY2FkZSA9IHtcbiAgICBzaG93OiBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnaGlzdG9yeS5zaG93JylcbiAgICB9LFxuICAgIGhpZGU6IGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdoaXN0b3J5LmhpZGUnKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRpc2N1c3Npb25GYWNhZGU6IERpc2N1c3Npb25GYWNhZGUgPSB7XG4gICAgc2hvdzogYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ2Rpc2N1c3Npb24uc2hvdycpXG4gICAgfSxcbiAgICBoaWRlOiBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnZGlzY3Vzc2lvbi5oaWRlJylcbiAgICB9XG4gIH1cblxuICBjb25zdCBjb2xsYWJvcmF0b3JGYWNhZGU6IENvbGxhYm9yYXRvckZhY2FkZSA9IHtcbiAgICBzaG93OiBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnY29sbGFib3JhdG9yLnNob3cnKVxuICAgIH0sXG4gICAgaGlkZTogYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ2NvbGxhYm9yYXRvci5oaWRlJylcbiAgICB9XG4gIH1cblxuICBjb25zdCBleHRlcm5hbEFwcEZhY2FkZTogRXh0ZXJuYWxBcHBGYWNhZGUgPSB7XG4gICAgaW5zZXJ0OiBhc3luYyAodXJsLCBwYXJhbXMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnaW5zZXJ0RXh0ZXJuYWxBcHAnLCBbdXJsLCBwYXJhbXNdKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGxvY2tzRmFjYWRlOiBMb2Nrc0ZhY2FkZSA9IHtcbiAgICBzaG93OiBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnbG9ja3Muc2hvdycpXG4gICAgfSxcbiAgICBoaWRlOiBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnbG9ja3MuaGlkZScpXG4gICAgfSxcbiAgICBhZGRSYW5nZUxvY2s6IGFzeW5jIChvcHRpb25zOiBBZGRSYW5nZUxvY2tQYXJhbXMpID0+IHtcbiAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdsb2Nrcy5hZGRSYW5nZUxvY2snLCBbb3B0aW9uc10pXG4gICAgfSxcbiAgICBhZGRTaGVldExvY2s6IGFzeW5jIChvcHRpb25zOiBBZGRTaGVldExvY2tQYXJhbXMpID0+IHtcbiAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdsb2Nrcy5hZGRTaGVldExvY2snLCBbb3B0aW9uc10pXG4gICAgfSxcbiAgICByZW1vdmVSYW5nZUxvY2tzSW5SYW5nZXM6IGFzeW5jIChvcHRpb25zOiBSZW1vdmVSYW5nZUxvY2tzUGFyYW1zKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnbG9ja3MucmVtb3ZlUmFuZ2VMb2Nrc0luUmFuZ2VzJywgW29wdGlvbnNdKVxuICAgIH0sXG4gICAgcmVtb3ZlU2hlZXRMb2NrOiBhc3luYyAob3B0aW9uczogUmVtb3ZlU2hlZXRMb2NrUGFyYW1zKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnbG9ja3MucmVtb3ZlU2hlZXRMb2NrJywgW29wdGlvbnNdKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG1lbnRpb25GYWNhZGU6IE1lbnRpb25GYWNhZGUgPSB7XG4gICAgbG9jYXRlQ2VsbEJ5R3VpZDogYXN5bmMgKGd1aWQ6IHN0cmluZywgbm90aWZpY2F0aW9uVHlwZT86IE1lbnRpb25UeXBlcykgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ21lbnRpb24ubG9jYXRlQ2VsbEJ5R3VpZCcsIFtcbiAgICAgICAgZ3VpZCxcbiAgICAgICAgbm90aWZpY2F0aW9uVHlwZVxuICAgICAgXSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBjb250ZW50RmFjYWRlOiBDb250ZW50RmFjYWRlID0ge1xuICAgIHNldENvbnRlbnQ6IGFzeW5jIChjb250ZW50OiBDb250ZW50KSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnY29udGVudC5zZXRDb250ZW50JywgW2NvbnRlbnRdKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHZlcnNpb25GYWNhZGU6IFZlcnNpb25GYWNhZGUgPSB7XG4gICAgc2hvdzogYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ3ZlcnNpb24uc2hvdycpXG4gICAgfSxcbiAgICBoaWRlOiBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgndmVyc2lvbi5oaWRlJylcbiAgICB9LFxuICAgIGNyZWF0ZVJldmlzaW9uOiBhc3luYyAob3B0aW9ucz86IFJldmlzaW9uQ3JlYXRlT3B0aW9ucykgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ3ZlcnNpb24uY3JlYXRlUmV2aXNpb24nLCBbb3B0aW9uc10pXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcHJlc2VudGF0aW9uRmFjYWRlOiBQcmVzZW50YXRpb25GYWNhZGUgPSB7XG4gICAgc3RhcnQ6IGFzeW5jIChpbmRleD86IG51bWJlcikgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoXG4gICAgICAgICdwcmVzZW50YXRpb24uc3RhcnQnLFxuICAgICAgICB0eXBlb2YgaW5kZXggPT09ICdudW1iZXInID8gW2luZGV4XSA6IFtdXG4gICAgICApXG4gICAgfSxcbiAgICBxdWl0OiBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgncHJlc2VudGF0aW9uLnF1aXQnKVxuICAgIH0sXG4gICAgc3RhcnRGcm9tQ3VycmVudDogYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ3ByZXNlbnRhdGlvbi5zdGFydEZyb21DdXJyZW50JylcbiAgICB9LFxuICAgIHN0YXJ0UmVtb3RlTGl2ZTogYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ3ByZXNlbnRhdGlvbi5zdGFydFJlbW90ZUxpdmUnKVxuICAgIH0sXG4gICAgc3RhcnRTcGVha2VyVmlldzogYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ3ByZXNlbnRhdGlvbi5zdGFydFNwZWFrZXJWaWV3JylcbiAgICB9LFxuICAgIGFkZENoYW5nZUxpc3RlbmVyOiAobGlzdGVuZXI6IChwYXlsb2FkOiB1bmtub3duKSA9PiB2b2lkKSA9PlxuICAgICAgaG9zdC5yZWdpc3RlckVkaXRvckZhY2FkZUxpc3RlbmVyKFxuICAgICAgICAncHJlc2VudGF0aW9uLmFkZENoYW5nZUxpc3RlbmVyJyxcbiAgICAgICAgbGlzdGVuZXJcbiAgICAgIClcbiAgfVxuXG4gIGNvbnN0IGJhdGNoQ2hhbmdlc0ZhY2FkZSA9IGFzeW5jIDxUPihcbiAgICBjYWxsYmFjazogKCkgPT4gVCB8IFByb21pc2U8VD5cbiAgKTogUHJvbWlzZTxBd2FpdGVkPFQ+PiA9PiB7XG4gICAgY29uc3QgY2FsbGJhY2tJZCA9IGhvc3QucmVnaXN0ZXJFZGl0b3JGYWNhZGVDYWxsYmFjayhjYWxsYmFjaylcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdiYXRjaENoYW5nZXMnLCBbY2FsbGJhY2tJZF0pXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGhvc3QudW5yZWdpc3RlckVkaXRvckZhY2FkZUNhbGxiYWNrKGNhbGxiYWNrSWQpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcHJpbnRGYWNhZGUgPSBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ3ByaW50JylcbiAgfVxuXG4gIGNvbnN0IGV4cG9ydEZhY2FkZSA9IGFzeW5jICh0eXBlOiBzdHJpbmcpID0+IHtcbiAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnZXhwb3J0JywgW3R5cGVdKVxuICB9XG5cbiAgY29uc3Qgc2V0Rm9jdXNGYWNhZGUgPSBhc3luYyAoaXNGb2N1czogYm9vbGVhbikgPT4ge1xuICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdzZXRGb2N1cycsIFtpc0ZvY3VzXSlcbiAgfVxuXG4gIGNvbnN0IGRvY3NTZWxlY3Rpb25GYWNhZGUgPVxuICAgIGhvc3QuY3JlYXRlRWRpdG9yRmFjYWRlTW9kdWxlPERvY3NTZWxlY3Rpb25GYWNhZGU+KCdzZWxlY3Rpb24nLCB7XG4gICAgICBnZXRSYW5nZTogYXN5bmMgKHZhbHVlPzogRG9jc1JhbmdlVmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgbG9jYXRvciA9IGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlPHtcbiAgICAgICAgICBzdGFydDogbnVtYmVyXG4gICAgICAgICAgZW5kOiBudW1iZXJcbiAgICAgICAgfSB8IG51bGw+KFxuICAgICAgICAgICdzZWxlY3Rpb24uZ2V0UmFuZ2UnLFxuICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgPyBbXSA6IFt2YWx1ZV1cbiAgICAgICAgKVxuICAgICAgICByZXR1cm4gY3JlYXRlRG9jc1JhbmdlRmFjYWRlKGhvc3QsIGxvY2F0b3IpXG4gICAgICB9LFxuICAgICAgZ2V0V2hvbGVSYW5nZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBsb2NhdG9yID0gYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGU8e1xuICAgICAgICAgIHN0YXJ0OiBudW1iZXJcbiAgICAgICAgICBlbmQ6IG51bWJlclxuICAgICAgICB9IHwgbnVsbD4oJ3NlbGVjdGlvbi5nZXRXaG9sZVJhbmdlJylcbiAgICAgICAgcmV0dXJuIGNyZWF0ZURvY3NSYW5nZUZhY2FkZShob3N0LCBsb2NhdG9yKVxuICAgICAgfSxcbiAgICAgIGFkZFJhbmdlTGlzdGVuZXI6IChsaXN0ZW5lcjogKHBheWxvYWQ6IERvY3NSYW5nZVZhbHVlIHwgbnVsbCkgPT4gdm9pZCkgPT5cbiAgICAgICAgaG9zdC5yZWdpc3RlckVkaXRvckZhY2FkZUxpc3RlbmVyKFxuICAgICAgICAgICdzZWxlY3Rpb24uYWRkUmFuZ2VMaXN0ZW5lcicsXG4gICAgICAgICAgbGlzdGVuZXJcbiAgICAgICAgKVxuICAgIH0pXG5cbiAgY29uc3QgZG9jc1RhYmxlc0ZhY2FkZSA9IGhvc3QuY3JlYXRlRWRpdG9yRmFjYWRlTW9kdWxlPERvY3NUYWJsZXNGYWNhZGU+KFxuICAgICd0YWJsZXMnLFxuICAgIHtcbiAgICAgIGdldEFsbDogYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0YWJsZXMgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTxcbiAgICAgICAgICBBcnJheTx7IHRhYmxlSWQ6IHN0cmluZyB9PlxuICAgICAgICA+KCd0YWJsZXMuZ2V0QWxsJylcbiAgICAgICAgcmV0dXJuIHRhYmxlcy5tYXAoKHRhYmxlKSA9PiBjcmVhdGVEb2NzVGFibGVGYWNhZGUoaG9zdCwgdGFibGUpKVxuICAgICAgfSxcbiAgICAgIGdldE9uZTogYXN5bmMgKHRhYmxlSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YWJsZSA9IGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlPHsgdGFibGVJZDogc3RyaW5nIH0gfCBudWxsPihcbiAgICAgICAgICAndGFibGVzLmdldE9uZScsXG4gICAgICAgICAgW3RhYmxlSWRdXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuIHRhYmxlID8gY3JlYXRlRG9jc1RhYmxlRmFjYWRlKGhvc3QsIHRhYmxlKSA6IG51bGxcbiAgICAgIH1cbiAgICB9XG4gIClcblxuICBjb25zdCBzaGVldFdvcmtib29rRmFjYWRlID1cbiAgICBob3N0LmNyZWF0ZUVkaXRvckZhY2FkZU1vZHVsZTxTaGVldFdvcmtib29rRmFjYWRlPignd29ya2Jvb2snLCB7XG4gICAgICBnZXRXb3Jrc2hlZXRzOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHdvcmtzaGVldHMgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTxcbiAgICAgICAgICBBcnJheTx7IHNoZWV0SWQ/OiBzdHJpbmc7IGlkPzogc3RyaW5nOyBuYW1lPzogc3RyaW5nIH0+XG4gICAgICAgID4oJ3dvcmtib29rLmdldFdvcmtzaGVldHMnKVxuICAgICAgICByZXR1cm4gd29ya3NoZWV0cy5tYXAoKHNoZWV0KSA9PlxuICAgICAgICAgIGNyZWF0ZVNoZWV0V29ya3NoZWV0RmFjYWRlKGhvc3QsIHNoZWV0KVxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgZ2V0V29ya3NoZWV0QnlJZDogYXN5bmMgKHNoZWV0SWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB3b3Jrc2hlZXQgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTx7XG4gICAgICAgICAgc2hlZXRJZD86IHN0cmluZ1xuICAgICAgICAgIGlkPzogc3RyaW5nXG4gICAgICAgICAgbmFtZT86IHN0cmluZ1xuICAgICAgICB9IHwgbnVsbD4oJ3dvcmtib29rLmdldFdvcmtzaGVldEJ5SWQnLCBbc2hlZXRJZF0pXG4gICAgICAgIHJldHVybiB3b3Jrc2hlZXQgPyBjcmVhdGVTaGVldFdvcmtzaGVldEZhY2FkZShob3N0LCB3b3Jrc2hlZXQpIDogbnVsbFxuICAgICAgfSxcbiAgICAgIGdldEFjdGl2ZVdvcmtzaGVldDogYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB3b3Jrc2hlZXQgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTx7XG4gICAgICAgICAgc2hlZXRJZD86IHN0cmluZ1xuICAgICAgICAgIGlkPzogc3RyaW5nXG4gICAgICAgICAgbmFtZT86IHN0cmluZ1xuICAgICAgICAgIGFjdGl2ZT86IGJvb2xlYW5cbiAgICAgICAgfT4oJ3dvcmtib29rLmdldEFjdGl2ZVdvcmtzaGVldCcpXG4gICAgICAgIHJldHVybiBjcmVhdGVTaGVldFdvcmtzaGVldEZhY2FkZShob3N0LCB3b3Jrc2hlZXQpXG4gICAgICB9XG4gICAgfSlcblxuICBjb25zdCBwcmVzZW50YXRpb25TbGlkZXNGYWNhZGUgPVxuICAgIGhvc3QuY3JlYXRlRWRpdG9yRmFjYWRlTW9kdWxlPFByZXNlbnRhdGlvblNsaWRlc0ZhY2FkZT4oJ3NsaWRlcycsIHtcbiAgICAgIGdldEN1cnJlbnRTbGlkZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBzbGlkZSA9IGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlPHsgc2xpZGVJZDogc3RyaW5nIH0+KFxuICAgICAgICAgICdzbGlkZXMuZ2V0Q3VycmVudFNsaWRlJ1xuICAgICAgICApXG4gICAgICAgIHJldHVybiBjcmVhdGVQcmVzZW50YXRpb25TbGlkZUZhY2FkZShob3N0LCBzbGlkZSlcbiAgICAgIH0sXG4gICAgICBnZXRTbGlkZXM6IGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3Qgc2xpZGVzID0gYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGU8XG4gICAgICAgICAgQXJyYXk8eyBzbGlkZUlkOiBzdHJpbmcgfT5cbiAgICAgICAgPignc2xpZGVzLmdldFNsaWRlcycpXG4gICAgICAgIHJldHVybiBzbGlkZXMubWFwKChzbGlkZSkgPT4gY3JlYXRlUHJlc2VudGF0aW9uU2xpZGVGYWNhZGUoaG9zdCwgc2xpZGUpKVxuICAgICAgfSxcbiAgICAgIGdldFNsaWRlQnlJZDogYXN5bmMgKHNsaWRlSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBzbGlkZSA9IGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlPHsgc2xpZGVJZDogc3RyaW5nIH0gfCBudWxsPihcbiAgICAgICAgICAnc2xpZGVzLmdldFNsaWRlQnlJZCcsXG4gICAgICAgICAgW3NsaWRlSWRdXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuIHNsaWRlID8gY3JlYXRlUHJlc2VudGF0aW9uU2xpZGVGYWNhZGUoaG9zdCwgc2xpZGUpIDogbnVsbFxuICAgICAgfSxcbiAgICAgIGdldFNlbGVjdGVkU2xpZGVzOiBhc3luYyAoaWRzPzogc3RyaW5nW10pID0+IHtcbiAgICAgICAgY29uc3Qgc2xpZGVzID0gYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGU8XG4gICAgICAgICAgQXJyYXk8eyBzbGlkZUlkOiBzdHJpbmcgfT5cbiAgICAgICAgPignc2xpZGVzLmdldFNlbGVjdGVkU2xpZGVzJywgdHlwZW9mIGlkcyA9PT0gJ3VuZGVmaW5lZCcgPyBbXSA6IFtpZHNdKVxuICAgICAgICByZXR1cm4gc2xpZGVzLm1hcCgoc2xpZGUpID0+IGNyZWF0ZVByZXNlbnRhdGlvblNsaWRlRmFjYWRlKGhvc3QsIHNsaWRlKSlcbiAgICAgIH0sXG4gICAgICBhZGRTbGlkZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBzbGlkZSA9IGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlPHsgc2xpZGVJZDogc3RyaW5nIH0+KFxuICAgICAgICAgICdzbGlkZXMuYWRkU2xpZGUnXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVByZXNlbnRhdGlvblNsaWRlRmFjYWRlKGhvc3QsIHNsaWRlKVxuICAgICAgfSxcbiAgICAgIGR1cGxpY2F0ZVNsaWRlOiBhc3luYyAoc2xpZGVJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHNsaWRlID0gYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGU8eyBzbGlkZUlkOiBzdHJpbmcgfT4oXG4gICAgICAgICAgJ3NsaWRlcy5kdXBsaWNhdGVTbGlkZScsXG4gICAgICAgICAgW3NsaWRlSWRdXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVByZXNlbnRhdGlvblNsaWRlRmFjYWRlKGhvc3QsIHNsaWRlKVxuICAgICAgfVxuICAgIH0pXG5cbiAgY29uc3QgcHJlc2VudGF0aW9uU2VsZWN0aW9uRmFjYWRlID1cbiAgICBob3N0LmNyZWF0ZUVkaXRvckZhY2FkZU1vZHVsZTxQcmVzZW50YXRpb25TZWxlY3Rpb25GYWNhZGU+KCdzZWxlY3Rpb24nLCB7XG4gICAgICBnZXRUZXh0UmFuZ2U6IGFzeW5jICh2YWx1ZT86IFByZXNlbnRhdGlvblRleHRSYW5nZVZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IGxvY2F0b3IgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTx7XG4gICAgICAgICAgc3RhcnQ6IHN0cmluZ1xuICAgICAgICAgIGVuZDogc3RyaW5nXG4gICAgICAgIH0gfCBudWxsPihcbiAgICAgICAgICAnc2VsZWN0aW9uLmdldFRleHRSYW5nZScsXG4gICAgICAgICAgdHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyA/IFtdIDogW3ZhbHVlXVxuICAgICAgICApXG4gICAgICAgIHJldHVybiBjcmVhdGVQcmVzZW50YXRpb25UZXh0UmFuZ2VGYWNhZGUoaG9zdCwgbG9jYXRvcilcbiAgICAgIH0sXG4gICAgICBhZGRSYW5nZUxpc3RlbmVyOiAoXG4gICAgICAgIGxpc3RlbmVyOiAocGF5bG9hZDogUHJlc2VudGF0aW9uVGV4dFJhbmdlVmFsdWUgfCBudWxsKSA9PiB2b2lkXG4gICAgICApID0+XG4gICAgICAgIGhvc3QucmVnaXN0ZXJFZGl0b3JGYWNhZGVMaXN0ZW5lcihcbiAgICAgICAgICAnc2VsZWN0aW9uLmFkZFJhbmdlTGlzdGVuZXInLFxuICAgICAgICAgIGxpc3RlbmVyXG4gICAgICAgIClcbiAgICB9KVxuXG4gIGNvbnN0IHByZXNlbnRhdGlvbkV2ZW50U3Vic2NyaXB0aW9uRmFjYWRlOiBQcmVzZW50YXRpb25FdmVudFN1YnNjcmlwdGlvbkZhY2FkZSA9XG4gICAge1xuICAgICAgYWRkRXJyb3JMaXN0ZW5lcjogKFxuICAgICAgICBsaXN0ZW5lcjogKGVycm9yOiB7IGNvZGU6IG51bWJlciB8IHN0cmluZzsgbWVzc2FnZT86IHN0cmluZyB9KSA9PiB2b2lkXG4gICAgICApID0+XG4gICAgICAgIGhvc3QucmVnaXN0ZXJFZGl0b3JGYWNhZGVMaXN0ZW5lcihcbiAgICAgICAgICAnZXZlbnRTdWJzY3JpcHRpb24uYWRkRXJyb3JMaXN0ZW5lcicsXG4gICAgICAgICAgbGlzdGVuZXJcbiAgICAgICAgKSxcbiAgICAgIGFkZExvYWRlZExpc3RlbmVyOiAobGlzdGVuZXI6ICgpID0+IHZvaWQpID0+XG4gICAgICAgIGhvc3QucmVnaXN0ZXJFZGl0b3JGYWNhZGVMaXN0ZW5lcihcbiAgICAgICAgICAnZXZlbnRTdWJzY3JpcHRpb24uYWRkTG9hZGVkTGlzdGVuZXInLFxuICAgICAgICAgIGxpc3RlbmVyXG4gICAgICAgIClcbiAgICB9XG5cbiAgY29uc3QgZG9jc091dGxpbmVGYWNhZGUgPSBob3N0LmNyZWF0ZUVkaXRvckZhY2FkZU1vZHVsZTxEb2NzT3V0bGluZUZhY2FkZT4oXG4gICAgJ291dGxpbmUnLFxuICAgIHtcbiAgICAgIHNob3c6IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ291dGxpbmUuc2V0T3BlbicsIFt0cnVlXSlcbiAgICAgIH0sXG4gICAgICBoaWRlOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdvdXRsaW5lLnNldE9wZW4nLCBbZmFsc2VdKVxuICAgICAgfVxuICAgIH1cbiAgKVxuXG4gIHN3aXRjaCAoaG9zdC5maWxlVHlwZSkge1xuICAgIGNhc2UgRmlsZVR5cGUuRG9jdW1lbnQ6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogdGl0bGVGYWNhZGUsXG4gICAgICAgIGhpc3Rvcnk6IGhpc3RvcnlGYWNhZGUsXG4gICAgICAgIGNvbW1lbnRzOiBjb21tZW50c0ZhY2FkZSxcbiAgICAgICAgZGlzY3Vzc2lvbjogZGlzY3Vzc2lvbkZhY2FkZSxcbiAgICAgICAgY29sbGFib3JhdG9yOiBjb2xsYWJvcmF0b3JGYWNhZGUsXG4gICAgICAgIGV4dGVybmFsQXBwOiBleHRlcm5hbEFwcEZhY2FkZSxcbiAgICAgICAgdmVyc2lvbjogdmVyc2lvbkZhY2FkZSxcbiAgICAgICAgcHJlc2VudGF0aW9uOiBwcmVzZW50YXRpb25GYWNhZGUsXG4gICAgICAgIHNlbGVjdGlvbjogZG9jc1NlbGVjdGlvbkZhY2FkZSxcbiAgICAgICAgc2V0dGluZ3M6IGhvc3QuY3JlYXRlRWRpdG9yRmFjYWRlTW9kdWxlPERvY3NTZXR0aW5nc0ZhY2FkZT4oXG4gICAgICAgICAgJ3NldHRpbmdzJyxcbiAgICAgICAgICB7fVxuICAgICAgICApLFxuICAgICAgICBzZWFyY2g6IGhvc3QuY3JlYXRlRWRpdG9yRmFjYWRlTW9kdWxlPERvY3NTZWFyY2hGYWNhZGU+KCdzZWFyY2gnLCB7fSksXG4gICAgICAgIG91dGxpbmU6IGRvY3NPdXRsaW5lRmFjYWRlLFxuICAgICAgICBzaWRlYmFyOiBob3N0LmNyZWF0ZUVkaXRvckZhY2FkZU1vZHVsZTxEb2NzU2lkZWJhckZhY2FkZT4oXG4gICAgICAgICAgJ3NpZGViYXInLFxuICAgICAgICAgIHt9XG4gICAgICAgICksXG4gICAgICAgIHRhYmxlczogZG9jc1RhYmxlc0ZhY2FkZSxcbiAgICAgICAgYmF0Y2hDaGFuZ2VzOiBiYXRjaENoYW5nZXNGYWNhZGUsXG4gICAgICAgIHByaW50OiBwcmludEZhY2FkZVxuICAgICAgfVxuICAgIGNhc2UgRmlsZVR5cGUuU3ByZWFkc2hlZXQ6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBoaXN0b3J5OiBoaXN0b3J5RmFjYWRlLFxuICAgICAgICBjb21tZW50czogY29tbWVudHNGYWNhZGUsXG4gICAgICAgIGxvY2tzOiBsb2Nrc0ZhY2FkZSxcbiAgICAgICAgbWVudGlvbjogbWVudGlvbkZhY2FkZSxcbiAgICAgICAgY29udGVudDogY29udGVudEZhY2FkZSxcbiAgICAgICAgdmVyc2lvbjogdmVyc2lvbkZhY2FkZSxcbiAgICAgICAgcHJlc2VudGF0aW9uOiBwcmVzZW50YXRpb25GYWNhZGUsXG4gICAgICAgIHdvcmtib29rOiBzaGVldFdvcmtib29rRmFjYWRlLFxuICAgICAgICBhY3RpdmVTaGVldDogY3JlYXRlU2hlZXRXb3Jrc2hlZXRGYWNhZGUoaG9zdCwgeyBhY3RpdmU6IHRydWUgfSksXG4gICAgICAgIGNoYXJ0czogaG9zdC5jcmVhdGVFZGl0b3JGYWNhZGVNb2R1bGU8U2hlZXRDaGFydHNGYWNhZGU+KCdjaGFydHMnLCB7fSksXG4gICAgICAgIHNlbGVjdGlvbnM6IGhvc3QuY3JlYXRlRWRpdG9yRmFjYWRlTW9kdWxlPFNoZWV0U2VsZWN0aW9uc0ZhY2FkZT4oXG4gICAgICAgICAgJ3NlbGVjdGlvbnMnLFxuICAgICAgICAgIHt9XG4gICAgICAgICksXG4gICAgICAgIGJhdGNoQ2hhbmdlczogYmF0Y2hDaGFuZ2VzRmFjYWRlLFxuICAgICAgICBwcmludDogcHJpbnRGYWNhZGUsXG4gICAgICAgIGV4cG9ydDogZXhwb3J0RmFjYWRlLFxuICAgICAgICBzZXRGb2N1czogc2V0Rm9jdXNGYWNhZGVcbiAgICAgIH1cbiAgICBjYXNlIEZpbGVUeXBlLlByZXNlbnRhdGlvbjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGhpc3Rvcnk6IGhpc3RvcnlGYWNhZGUsXG4gICAgICAgIGNvbW1lbnRzOiBjb21tZW50c0ZhY2FkZSxcbiAgICAgICAgdmVyc2lvbjogdmVyc2lvbkZhY2FkZSxcbiAgICAgICAgcHJlc2VudGF0aW9uOiBwcmVzZW50YXRpb25GYWNhZGUsXG4gICAgICAgIHNsaWRlczogcHJlc2VudGF0aW9uU2xpZGVzRmFjYWRlLFxuICAgICAgICBzZWxlY3Rpb246IHByZXNlbnRhdGlvblNlbGVjdGlvbkZhY2FkZSxcbiAgICAgICAgdGV4dDogaG9zdC5jcmVhdGVFZGl0b3JGYWNhZGVNb2R1bGU8UHJlc2VudGF0aW9uVGV4dEZhY2FkZT4oJ3RleHQnLCB7fSksXG4gICAgICAgIHpvb206IGhvc3QuY3JlYXRlRWRpdG9yRmFjYWRlTW9kdWxlPFByZXNlbnRhdGlvblpvb21GYWNhZGU+KCd6b29tJywge30pLFxuICAgICAgICBldmVudFN1YnNjcmlwdGlvbjogcHJlc2VudGF0aW9uRXZlbnRTdWJzY3JpcHRpb25GYWNhZGUsXG4gICAgICAgIGJhdGNoQ2hhbmdlczogYmF0Y2hDaGFuZ2VzRmFjYWRlLFxuICAgICAgICBwcmludDogcHJpbnRGYWNhZGUsXG4gICAgICAgIGV4cG9ydDogZXhwb3J0RmFjYWRlXG4gICAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB7fVxuICB9XG59XG4iLCJpbXBvcnQgdHlwZSB7IERvY3VtZW50RXJyb3JNZXNzYWdlLCBFeHRlcm5hbEFwcFBhcmFtcyB9IGZyb20gJy4vdHlwZXMvRG9jdW1lbnQnXG5cbmV4cG9ydCBpbnRlcmZhY2UgVGl0bGVGYWNhZGUge1xuICBhZGRDaGFuZ2VkTGlzdGVuZXI6IChsaXN0ZW5lcjogKHRpdGxlOiBzdHJpbmcpID0+IHZvaWQpID0+ICgpID0+IHZvaWRcbiAgc2V0VGl0bGU6ICh0aXRsZTogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWVudHNGYWNhZGUge1xuICBzaG93OiAodHlwZT86ICdsaXN0JyB8ICdjYXJkJykgPT4gUHJvbWlzZTx2b2lkPlxuICBoaWRlOiAodHlwZT86ICdsaXN0JyB8ICdjYXJkJykgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhpc3RvcnlGYWNhZGUge1xuICBzaG93OiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGhpZGU6ICgpID0+IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXNjdXNzaW9uRmFjYWRlIHtcbiAgc2hvdzogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBoaWRlOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGFib3JhdG9yRmFjYWRlIHtcbiAgc2hvdzogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBoaWRlOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZXJuYWxBcHBGYWNhZGUge1xuICBpbnNlcnQ6IChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBwYXJhbXM/OiBFeHRlcm5hbEFwcFBhcmFtc1xuICApID0+IFByb21pc2U8bnVsbCB8IERvY3VtZW50RXJyb3JNZXNzYWdlPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3NSYW5nZUJvdW5kaW5nIHtcbiAgdG9wOiBudW1iZXJcbiAgcmlnaHQ6IG51bWJlclxuICBib3R0b206IG51bWJlclxuICBsZWZ0OiBudW1iZXJcbiAgc3RhcnQ6IG51bWJlclxuICBlbmQ6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3NSYW5nZVZhbHVlIHtcbiAgc3RhcnQ6IG51bWJlclxuICBlbmQ6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3NSZXBsYWNlUGFyYW1zIHtcbiAgdmFsdWU6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3NSZXBsYWNlUmVzdWx0IHtcbiAgaWQ6IHN0cmluZ1xuICBvbGRWYWx1ZTogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIERvY3NTZWFyY2hEaXJlY3Rpb24gPSAnZm9yd2FyZCcgfCAnYmFja3dhcmQnXG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc1NlYXJjaFBhcmFtcyB7XG4gIGNvbnRlbnQ6IHN0cmluZ1xuICBoaWdobGlnaHQ/OiBib29sZWFuXG4gIGNhc2VTZW5zaXRpdmU/OiBib29sZWFuXG4gIHdob2xlV29yZD86IGJvb2xlYW5cbiAgdXNlUmVnZXg/OiBib29sZWFuXG4gIHNlYXJjaERpcmVjdGlvbj86IERvY3NTZWFyY2hEaXJlY3Rpb25cbiAgcmFuZ2U/OiBEb2NzUmFuZ2VWYWx1ZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3NTZWFyY2hSZXN1bHQge1xuICBrZXl3b3JkOiBzdHJpbmdcbiAgaWQ6IHN0cmluZ1xuICByYW5nZTogRG9jc1JhbmdlVmFsdWVcbiAgaXNQcm90ZWN0ZWQ/OiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIERvY3NDb250aW51ZVdyaXRpbmdUeXBlID0gJ3RleHQnIHwgJ2h0bWwnIHwgJ21hcmtkb3duJ1xuZXhwb3J0IHR5cGUgRG9jc0J1bGxldExpc3RTdHlsZSA9ICdkaXNjJyB8ICdjaXJjbGUnIHwgJ3NxdWFyZSdcbmV4cG9ydCB0eXBlIERvY3NPcmRlcmVkTGlzdFN0eWxlID0gJ2RlY2ltYWwnIHwgJ2xvd2VyLWFscGhhJyB8ICdsb3dlci1yb21hbidcbmV4cG9ydCB0eXBlIERvY3NMaXN0U3R5bGUgPVxuICB8IHsgdHlwZTogJ25vbmUnIH1cbiAgfCB7IHR5cGU6ICdvcmRlcmVkJzsgc3R5bGU/OiBEb2NzT3JkZXJlZExpc3RTdHlsZSB9XG4gIHwgeyB0eXBlOiAnYnVsbGV0Jzsgc3R5bGU/OiBEb2NzQnVsbGV0TGlzdFN0eWxlIH1cbiAgfCB7IHR5cGU6ICd0YXNrJyB9XG5leHBvcnQgdHlwZSBEb2NzUGFnZVdpZHRoID0gJ3N0YW5kYXJkJyB8ICd3aWRlJyB8ICdmdWxsJ1xuZXhwb3J0IHR5cGUgRG9jc1BhcmFncmFwaFR5cGUgPVxuICB8ICdwYXJhZ3JhcGgnXG4gIHwgJ3RpdGxlJ1xuICB8ICdzdWJ0aXRsZSdcbiAgfCAnaDEnXG4gIHwgJ2gyJ1xuICB8ICdoMydcbiAgfCAnaDQnXG4gIHwgJ2g1J1xuICB8ICdoNidcblxuZXhwb3J0IGludGVyZmFjZSBEb2NzVGV4dFN0eWxlIHtcbiAgYm9sZD86IGJvb2xlYW5cbiAgaXRhbGljPzogYm9vbGVhblxuICB1bmRlcmxpbmU/OiBib29sZWFuXG4gIHN0cmlrZXRocm91Z2g/OiBib29sZWFuXG4gIGNvbG9yPzogc3RyaW5nXG4gIGJhY2tncm91bmRDb2xvcj86IHN0cmluZ1xuICBmb250RmFtaWx5Pzogc3RyaW5nXG4gIGZvbnRTaXplPzogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc1BhcmFncmFwaFN0eWxlIHtcbiAgYWxpZ24/OiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcgfCAnanVzdGlmeSdcbiAgdmVydGljYWw/OiAndG9wJyB8ICdtaWRkbGUnIHwgJ2JvdHRvbSdcbn1cblxuZXhwb3J0IHR5cGUgRG9jc1RhYmxlQ2VsbFN0eWxlID0gRG9jc1RleHRTdHlsZSAmIERvY3NQYXJhZ3JhcGhTdHlsZVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3NEZWZhdWx0U3R5bGUge1xuICBjb2xvcjogc3RyaW5nXG4gIGZvbnRTaXplOiBzdHJpbmdcbiAgZm9udEZhbWlseTogc3RyaW5nXG4gIGxpbmVTcGFjaW5nOiBzdHJpbmdcbiAgZm9udDogc3RyaW5nXG4gIHNpemU6IHN0cmluZ1xuICBsaW5lc3BhY2luZzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIERvY3NLbm93bkNvZGVCbG9ja0xhbmd1YWdlID1cbiAgfCAncGxhaW50ZXh0J1xuICB8ICdhcmR1aW5vJ1xuICB8ICdiYXNoJ1xuICB8ICdiYXNpYydcbiAgfCAnY3NoYXJwJ1xuICB8ICdjcHAnXG4gIHwgJ2NzcydcbiAgfCAnY2xvanVyZSdcbiAgfCAnY29mZmVlc2NyaXB0J1xuICB8ICdkYXJ0J1xuICB8ICdkaWZmJ1xuICB8ICdkb2NrZXInXG4gIHwgJ2VsaXhpcidcbiAgfCAnZXJsYW5nJ1xuICB8ICdmc2hhcnAnXG4gIHwgJ2ZvcnRyYW4nXG4gIHwgJ2dsc2wnXG4gIHwgJ2doZXJraW4nXG4gIHwgJ2dvJ1xuICB8ICdncm9vdnknXG4gIHwgJ2h0bWwnXG4gIHwgJ2hhc2tlbGwnXG4gIHwgJ2pzb24nXG4gIHwgJ2phdmEnXG4gIHwgJ2phdmFzY3JpcHQnXG4gIHwgJ2xlc3MnXG4gIHwgJ2xpc3AnXG4gIHwgJ2x1YSdcbiAgfCAnbWFrZWZpbGUnXG4gIHwgJ21hcmtkb3duJ1xuICB8ICdtYXRsYWInXG4gIHwgJ25peCdcbiAgfCAnb2NhbWwnXG4gIHwgJ29iamVjdGl2ZWMnXG4gIHwgJ3BocCdcbiAgfCAncGVybCdcbiAgfCAncG93ZXJzaGVsbCdcbiAgfCAncHJvbG9nJ1xuICB8ICdwcm90b2J1ZidcbiAgfCAncHl0aG9uJ1xuICB8ICdyJ1xuICB8ICdydWJ5J1xuICB8ICdydXN0J1xuICB8ICdzY3NzJ1xuICB8ICdzcWwnXG4gIHwgJ3NjYWxhJ1xuICB8ICdzY2hlbWUnXG4gIHwgJ3NoZWxsc2Vzc2lvbidcbiAgfCAnc3dpZnQnXG4gIHwgJ3R5cGVzY3JpcHQnXG4gIHwgJ3ZibmV0J1xuICB8ICd2YWxhJ1xuICB8ICd2ZXJpbG9nJ1xuICB8IChzdHJpbmcgJiB7fSlcblxuZXhwb3J0IGludGVyZmFjZSBEb2NzQ29kZUJsb2NrQXR0cnMge1xuICBsYW5ndWFnZT86IERvY3NLbm93bkNvZGVCbG9ja0xhbmd1YWdlXG4gIHdvcmRXcmFwPzogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBEb2NzQ29kZUJsb2NrRGlyZWN0aW9uID0gJ2x0cicgfCAncnRsJ1xuZXhwb3J0IHR5cGUgRG9jc0NvZGVCbG9ja0FsaWdubWVudCA9ICdzdGFydCcgfCAnZW5kJyB8ICdjZW50ZXInIHwgJ2p1c3RpZnknXG5leHBvcnQgdHlwZSBEb2NzQ29kZUJsb2NrSW5kZW50ID0gMSB8IDIgfCAzIHwgNCB8IDUgfCA2IHwgNyB8IDhcblxuZXhwb3J0IGludGVyZmFjZSBEb2NzQ29kZUJsb2NrVGV4dE5vZGUge1xuICBlbGVtZW50OiAndGV4dCdcbiAgdGV4dDogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc0NvZGVCbG9ja1BhcmFncmFwaEF0dHJzIHtcbiAgZGlyZWN0aW9uPzogRG9jc0NvZGVCbG9ja0RpcmVjdGlvblxuICBsaW5lSGVpZ2h0Pzogc3RyaW5nXG4gIHRleHRJbmRlbnQ/OiBzdHJpbmdcbiAgYWxpZ25tZW50PzogRG9jc0NvZGVCbG9ja0FsaWdubWVudFxuICBpbmRlbnQ/OiBEb2NzQ29kZUJsb2NrSW5kZW50XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc0NvZGVCbG9ja1BhcmFncmFwaE5vZGUge1xuICBlbGVtZW50OiAncGFyYWdyYXBoJ1xuICBhdHRyczogRG9jc0NvZGVCbG9ja1BhcmFncmFwaEF0dHJzIHwgbnVsbFxuICBjb250ZW50OiBEb2NzQ29kZUJsb2NrVGV4dE5vZGVbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3NDb2RlQmxvY2tJbnNlcnRPcHRpb25zIHtcbiAgYXR0cnM/OiBEb2NzQ29kZUJsb2NrQXR0cnNcbiAgY29udGVudD86IERvY3NDb2RlQmxvY2tQYXJhZ3JhcGhOb2RlW11cbn1cblxuZXhwb3J0IHR5cGUgVE9DTm9kZVR5cGUgPVxuICB8ICdoZWFkaW5nJ1xuICB8ICdvcmRlcmVkLWxpc3QnXG4gIHwgJ2J1bGxldC1saXN0J1xuICB8ICd0YXNrJ1xuICB8IHN0cmluZ1xuXG5leHBvcnQgaW50ZXJmYWNlIERvY3NUT0NJdGVtIHtcbiAgaWQ6IHN0cmluZ1xuICBsZXZlbDogc3RyaW5nXG4gIHRleHQ6IHN0cmluZ1xuICBwb3M6IG51bWJlclxuICBub2RlVHlwZTogVE9DTm9kZVR5cGVcbiAgbGVhZGluZ1N5bWJvbDogc3RyaW5nIHwgbnVsbFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3NTaWRlYmFyU3RhdGUge1xuICB2aXNpYmxlOiBib29sZWFuXG4gIHNlbGVjdGVkVGFiOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzVGFibGVTZWxlY3Rpb24ge1xuICByb3c6IG51bWJlclxuICBjb2x1bW46IG51bWJlclxuICByb3dDb3VudDogbnVtYmVyXG4gIGNvbHVtbkNvdW50OiBudW1iZXJcbn1cblxuZXhwb3J0IGVudW0gRWRpdG9yU2F2ZVN0YXR1cyB7XG4gIE5vQ2hhbmdlID0gMCxcbiAgU3VjY2VzcyA9IDEsXG4gIEZhaWwgPSAyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWRpdG9yU2F2ZVJlc3VsdCB7XG4gIHN0YXR1czogRWRpdG9yU2F2ZVN0YXR1c1xufVxuXG5leHBvcnQgdHlwZSBDb250ZW50ID0gc3RyaW5nIHwgQXJyYXlCdWZmZXIgfCBSZWNvcmQ8c3RyaW5nLCBuZXZlcj4gfCBvYmplY3RcblxuZXhwb3J0IGludGVyZmFjZSBDbGlwYm9hcmRQYXN0ZVBhcmFtcyB7XG4gIGh0bWw6IHN0cmluZ1xuICB0ZXh0OiBzdHJpbmdcbiAgYmFzZTY0RmlsZT86IHN0cmluZ1xuICByZW1vdmVUcmFpbGluZ0VtcHR5Um93cz86IGJvb2xlYW5cbiAgcmVtb3ZlVHJhaWxpbmdFbXB0eUNvbHVtbnM/OiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIFNoZWV0QXBwZW5kRGF0YUF4aXMgPSAncm93JyB8ICdjb2x1bW4nXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hlZXRTZWxlY3Rpb24ge1xuICBnZXRSYW5nZTogKHZhbHVlPzogU2hlZXRSYW5nZVZhbHVlKSA9PiBTaGVldFJhbmdlRmFjYWRlIHwgbnVsbFxuICBzZXRSYW5nZTogKHZhbHVlOiBTaGVldFJhbmdlVmFsdWUgfCBudWxsKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBlbnVtIFNoZWV0UmFuZ2VUeXBlIHtcbiAgQ2VsbHMgPSAnY2VsbHMnLFxuICBSb3dzID0gJ3Jvd3MnLFxuICBDb2x1bW5zID0gJ2NvbHVtbnMnLFxuICBTaGVldCA9ICdzaGVldCdcbn1cblxuZXhwb3J0IHR5cGUgU2hlZXRSYW5nZVZhbHVlID1cbiAgfCB7XG4gICAgICB0eXBlOiBgJHtTaGVldFJhbmdlVHlwZS5DZWxsc31gXG4gICAgICByb3c6IG51bWJlclxuICAgICAgcm93Q291bnQ6IG51bWJlclxuICAgICAgY29sdW1uOiBudW1iZXJcbiAgICAgIGNvbHVtbkNvdW50OiBudW1iZXJcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogYCR7U2hlZXRSYW5nZVR5cGUuUm93c31gXG4gICAgICByb3c6IG51bWJlclxuICAgICAgcm93Q291bnQ6IG51bWJlclxuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBgJHtTaGVldFJhbmdlVHlwZS5Db2x1bW5zfWBcbiAgICAgIGNvbHVtbjogbnVtYmVyXG4gICAgICBjb2x1bW5Db3VudDogbnVtYmVyXG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IGAke1NoZWV0UmFuZ2VUeXBlLlNoZWV0fWBcbiAgICB9XG5cbmV4cG9ydCB0eXBlIFNoZWV0Q2VsbFJhbmdlID0gT21pdDxcbiAgRXh0cmFjdDxTaGVldFJhbmdlVmFsdWUsIHsgdHlwZTogYCR7U2hlZXRSYW5nZVR5cGUuQ2VsbHN9YCB9PixcbiAgJ3R5cGUnXG4+XG5cbmV4cG9ydCB0eXBlIFNoZWV0UmFuZ2VUZXh0ID0gc3RyaW5nIHwgc3RyaW5nW11bXVxuXG5leHBvcnQgdHlwZSBTaGVldENlbGxWYWx1ZSA9XG4gIHwgeyB0eXBlOiAncHJpbWl0aXZlJzsgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfVxuICB8IHsgdHlwZTogJ2RhdGUnOyB2YWx1ZTogbnVtYmVyIH1cbiAgfCB7IHR5cGU6ICdjYWxjRXJyb3InOyB2YWx1ZTogeyBlcnJvcjogc3RyaW5nIH0gfVxuXG5leHBvcnQgdHlwZSBTaGVldFdyaXRhYmxlQ2VsbFZhbHVlID0gRXhjbHVkZTxcbiAgU2hlZXRDZWxsVmFsdWUsXG4gIHsgdHlwZTogJ2NhbGNFcnJvcicgfVxuPlxuXG5leHBvcnQgdHlwZSBGb3JtYXRDYXRlZ29yeSA9IHN0cmluZ1xuZXhwb3J0IHR5cGUgQWxpZ25WYWx1ZSA9ICdsZWZ0JyB8ICdyaWdodCcgfCAnY2VudGVyJyB8ICdqdXN0aWZ5J1xuZXhwb3J0IHR5cGUgVmVydGljYWxWYWx1ZSA9ICd0b3AnIHwgJ21pZGRsZScgfCAnYm90dG9tJ1xuZXhwb3J0IHR5cGUgV3JhcFZhbHVlID0gJ292ZXJmbG93JyB8ICd3cmFwJyB8ICdjbGlwJ1xuXG5leHBvcnQgaW50ZXJmYWNlIEJvcmRlclN0eWxlIHtcbiAgc3R5bGU/OiBzdHJpbmdcbiAgY29sb3I/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSaWNoVGV4dEl0ZW0ge1xuICB0ZXh0OiBzdHJpbmdcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IHVuZGVmaW5lZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoZWV0V3JpdGFibGVDZWxsTWV0YSB7XG4gIGZvcm1hdENhdGVnb3J5PzogRm9ybWF0Q2F0ZWdvcnlcbiAgY29sb3I/OiBzdHJpbmdcbiAgYmFja2dyb3VuZD86IHN0cmluZ1xuICBmb250RmFtaWx5Pzogc3RyaW5nXG4gIGZvbnRTaXplPzogbnVtYmVyXG4gIGFsaWduPzogQWxpZ25WYWx1ZVxuICBib2xkPzogYm9vbGVhblxuICBpdGFsaWM/OiBib29sZWFuXG4gIHVuZGVybGluZT86IGJvb2xlYW5cbiAgc3RyaWtlPzogYm9vbGVhblxuICB2ZXJ0aWNhbD86IFZlcnRpY2FsVmFsdWVcbiAgd3JhcD86IFdyYXBWYWx1ZVxuICB0ZXh0Um90YXRpb24/OiBudW1iZXJcbiAgdGV4dEluZGVudD86IG51bWJlclxuICBib3JkZXJUb3A/OiBCb3JkZXJTdHlsZVxuICBib3JkZXJSaWdodD86IEJvcmRlclN0eWxlXG4gIGJvcmRlckJvdHRvbT86IEJvcmRlclN0eWxlXG4gIGJvcmRlckxlZnQ/OiBCb3JkZXJTdHlsZVxuICBkaWFnb25hbERvd24/OiBCb3JkZXJTdHlsZVxuICBkaWFnb25hbFVwPzogQm9yZGVyU3R5bGVcbiAgcHJlY2lzaW9uPzogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hlZXRDZWxsRGF0YSBleHRlbmRzIFNoZWV0V3JpdGFibGVDZWxsTWV0YSB7XG4gIHZhbHVlOiBTaGVldENlbGxWYWx1ZSB8IG51bGxcbiAgZm9ybXVsYTogc3RyaW5nIHwgbnVsbFxuICB0ZXh0OiBzdHJpbmdcbiAgZm9ybWF0Pzogc3RyaW5nXG4gIHNwYW4/OiBTaGVldENlbGxSYW5nZVxuICByaWNoVGV4dD86IFJpY2hUZXh0SXRlbVtdXG59XG5cbmV4cG9ydCB0eXBlIFNoZWV0V3JpdGFibGVDZWxsRGF0YSA9XG4gIHwgKHsgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBEYXRlIHwgbnVsbCB9ICYgU2hlZXRXcml0YWJsZUNlbGxNZXRhKVxuICB8ICh7XG4gICAgICBmb3JtdWxhOiBzdHJpbmcgfCBudWxsXG4gICAgICBxdW90ZVByZWZpeD86IGJvb2xlYW5cbiAgICB9ICYgU2hlZXRXcml0YWJsZUNlbGxNZXRhKVxuICB8ICh7XG4gICAgICB0ZXh0OiBzdHJpbmcgfCBudWxsXG4gICAgICByaWNoVGV4dD86IFJpY2hUZXh0SXRlbVtdXG4gICAgfSAmIFNoZWV0V3JpdGFibGVDZWxsTWV0YSlcblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hNYXRjaCB7XG4gIHJvdzogbnVtYmVyXG4gIGNvbHVtbjogbnVtYmVyXG4gIHRleHQ6IHN0cmluZ1xuICBpc0xpbmtDZWxsPzogYm9vbGVhblxuICBmb3JtdWxhSW5mbz86IHtcbiAgICBmb3JtdWxhVGV4dDogc3RyaW5nXG4gICAgaGFzRm9ybXVsYTogYm9vbGVhblxuICB9XG59XG5cbmV4cG9ydCB0eXBlIFBlcm1pc3Npb25EaWN0ID0gUmVjb3JkPG51bWJlciwgUGVybWlzc2lvbkxldmVsPlxuXG5leHBvcnQgZW51bSBQZXJtaXNzaW9uTGV2ZWwge1xuICBFZGl0YWJsZSA9IDAsXG4gIFJlYWRPbmx5ID0gMSxcbiAgUHJpdmF0ZSA9IDJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRSYW5nZUxvY2tQYXJhbXMge1xuICByYW5nZXM/OiBTaGVldENlbGxSYW5nZVtdXG4gIHNoZWV0SWQ/OiBzdHJpbmdcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgdXNlclBlcm1pc3Npb25zOiBQZXJtaXNzaW9uRGljdFxuICBkZXBhcnRtZW50UGVybWlzc2lvbnM/OiBQZXJtaXNzaW9uRGljdFxuICB2aXNpdG9yUGVybWlzc2lvbj86IFBlcm1pc3Npb25MZXZlbFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZFNoZWV0TG9ja1BhcmFtcyB7XG4gIHNoZWV0SWQ/OiBzdHJpbmdcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgdXNlclBlcm1pc3Npb25zOiBQZXJtaXNzaW9uRGljdFxuICBkZXBhcnRtZW50UGVybWlzc2lvbnM/OiBQZXJtaXNzaW9uRGljdFxuICB2aXNpdG9yUGVybWlzc2lvbj86IFBlcm1pc3Npb25MZXZlbFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlbW92ZVJhbmdlTG9ja3NQYXJhbXMge1xuICBzaGVldElkPzogc3RyaW5nXG4gIHJhbmdlcz86IFNoZWV0Q2VsbFJhbmdlW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZW1vdmVTaGVldExvY2tQYXJhbXMge1xuICBzaGVldElkPzogc3RyaW5nXG59XG5cbmV4cG9ydCBlbnVtIE1lbnRpb25UeXBlcyB7XG4gIENvbW1lbnQgPSAnY29tbWVudCcsXG4gIE1lbnRpb24gPSAnbWVudGlvbl9hdCcsXG4gIERhdGVNZW50aW9uID0gJ2RhdGVfbWVudGlvbidcbn1cblxuZXhwb3J0IHR5cGUgUmV2aXNpb25DcmVhdGVPcHRpb25zID0gc3RyaW5nIHwgeyBuYW1lOiBzdHJpbmcgfVxuXG5leHBvcnQgdHlwZSBTaGVldENoYXJ0Rmlyc3RBcyA9XG4gIHwgJ2F1dG8nXG4gIHwgJ3Nlcmllc0xhYmVsJ1xuICB8ICdjYXRlZ29yeUxhYmVsJ1xuICB8ICdub25lJ1xuZXhwb3J0IHR5cGUgU2hlZXRDaGFydFNlcmllc09yaWVudGF0aW9uID0gJ2F1dG8nIHwgJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJ1xuZXhwb3J0IHR5cGUgU2hlZXRDaGFydFR5cGUgPVxuICB8ICdwaWUnXG4gIHwgJ2RvdWdobnV0J1xuICB8ICdjaGluYU1hcCdcbiAgfCAnZnVubmVsJ1xuICB8ICdzdW5idXJzdCdcbiAgfCAnZ2F1Z2UnXG4gIHwgJ2dhbnR0J1xuICB8ICdhYnN0cmFjdCdcbiAgfCAnY29sdW1uQ2x1c3RlcmVkJ1xuICB8ICdjb2x1bW5TdGFja2VkJ1xuICB8ICdjb2x1bW5TdGFja2VkMTAwJ1xuICB8ICdiYXJDbHVzdGVyZWQnXG4gIHwgJ2JhclN0YWNrZWQnXG4gIHwgJ2JhclN0YWNrZWQxMDAnXG4gIHwgJ2xpbmUnXG4gIHwgJ2xpbmVTdGFja2VkJ1xuICB8ICdsaW5lU3RhY2tlZDEwMCdcbiAgfCAnbGluZU1hcmtlcnMnXG4gIHwgJ2xpbmVNYXJrZXJzU3RhY2tlZCdcbiAgfCAnbGluZU1hcmtlcnNTdGFja2VkMTAwJ1xuICB8ICdhcmVhJ1xuICB8ICdhcmVhU3RhY2tlZCdcbiAgfCAnYXJlYVN0YWNrZWQxMDAnXG4gIHwgJ3N0b2NrT0hMQydcbiAgfCAneHlTY2F0dGVyJ1xuICB8ICdidWJibGUnXG4gIHwgJ2hpc3RvZ3JhbSdcbiAgfCAnd2F0ZXJmYWxsJ1xuICB8ICdjb21iaW5hdGlvbidcblxuZXhwb3J0IGludGVyZmFjZSBBZGRDaGFydEZyb21TZWxlY3Rpb25CdWlsdGluUGFyYW1zIHtcbiAgY2hhcnRUeXBlPzogU2hlZXRDaGFydFR5cGVcbiAgc2VyaWVzPzoge1xuICAgIG9yaWVudGF0aW9uPzogU2hlZXRDaGFydFNlcmllc09yaWVudGF0aW9uXG4gICAgdHJpbVBhZGRpbmdzPzogYm9vbGVhblxuICAgIGZpcnN0QXM/OiBTaGVldENoYXJ0Rmlyc3RBc1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkQ2hhcnRGcm9tU2VsZWN0aW9uRXh0ZXJuYWxQYXJhbXNcbiAgZXh0ZW5kcyBBZGRDaGFydEZyb21TZWxlY3Rpb25CdWlsdGluUGFyYW1zIHtcbiAgcmVjb21tZW5kYXRpb25Nb2RlPzogJ2J1aWx0aW4nIHwgJ2V4dGVybmFsJ1xufVxuXG5leHBvcnQgdHlwZSBBZGRDaGFydEZyb21TZWxlY3Rpb25QYXJhbXMgPVxuICB8IEFkZENoYXJ0RnJvbVNlbGVjdGlvbkJ1aWx0aW5QYXJhbXNcbiAgfCBBZGRDaGFydEZyb21TZWxlY3Rpb25FeHRlcm5hbFBhcmFtc1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkZENoYXJ0RnJvbVNlbGVjdGlvblJlc3VsdCB7XG4gIGNoYXJ0SWQ6IHN0cmluZ1xuICBjaGFydFR5cGU6IFNoZWV0Q2hhcnRUeXBlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWRpdG9yVGV4dEZvcm1hdDxDb2xvciA9IHN0cmluZz4ge1xuICBib2xkOiBib29sZWFuXG4gIGl0YWxpYzogYm9vbGVhblxuICB1bmRlcmxpbmU6IGJvb2xlYW5cbiAgc3RyaWtlOiBib29sZWFuXG4gIGNvbG9yOiBDb2xvclxuICBoaWdobGlnaHQ6IENvbG9yXG4gIHNpemU6IG51bWJlciB8IHN0cmluZ1xuICBmYW1pbHk6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBQcmVzZW50YXRpb25Ib3Jpem9udGFsQWxpZ24gPVxuICB8ICdsZWZ0J1xuICB8ICdjZW50ZXInXG4gIHwgJ3JpZ2h0J1xuICB8ICdqdXN0aWZ5J1xuICB8ICdkaXN0J1xuXG5leHBvcnQgdHlwZSBQcmVzZW50YXRpb25WZXJ0aWNhbEFsaWduID1cbiAgfCAndG9wJ1xuICB8ICdtaWQnXG4gIHwgJ2JvdHRvbSdcbiAgfCAnd29yZEFydFZlcnQnXG4gIHwgJ2VhVmVydCdcbiAgfCAnbW9uZ29saWFuVmVydCdcbiAgfCAndmVydCdcbiAgfCAndmVydDI3MCdcblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25JbmRlbnQge1xuICBsZWZ0PzogbnVtYmVyXG4gIHJpZ2h0PzogbnVtYmVyXG4gIGZpcnN0TGluZT86IG51bWJlclxufVxuXG5leHBvcnQgdHlwZSBQcmVzZW50YXRpb25MaW5lU3BhY2VSdWxlID0gJ2F0TGVhc3QnIHwgJ2F1dG8nIHwgJ2V4YWN0J1xuZXhwb3J0IHR5cGUgUHJlc2VudGF0aW9uQnVsbGV0U3ViVHlwZSA9IHN0cmluZ1xuZXhwb3J0IHR5cGUgUHJlc2VudGF0aW9uT3JkZXJlZFN1YlR5cGUgPVxuICB8ICdhcmFiaWNQZXJpb2QnXG4gIHwgJ2FyYWJpY1BhcmVuQm90aCdcbiAgfCAnZWExQ2hzUGVyaW9kJ1xuICB8ICdjaGluZXNlTnVtYmVyUGFyZW5Cb3RoJ1xuICB8ICdhbHBoYUxjUGFyZW5SJ1xuICB8ICdyb21hbkxjUGVyaW9kJ1xuICB8ICdhbHBoYVVjUGVyaW9kJ1xuXG5leHBvcnQgdHlwZSBQcmVzZW50YXRpb25MaXN0VHlwZSA9XG4gIHwgeyB0eXBlOiAnbm9uZScgfVxuICB8IHsgdHlwZTogJ2J1bGxldCc7IHN1YlR5cGU/OiBQcmVzZW50YXRpb25CdWxsZXRTdWJUeXBlOyBjaGFyPzogc3RyaW5nIH1cbiAgfCB7XG4gICAgICB0eXBlOiAnb3JkZXJlZCdcbiAgICAgIHN1YlR5cGU/OiBQcmVzZW50YXRpb25PcmRlcmVkU3ViVHlwZVxuICAgICAgc3RhcnRBdD86IG51bWJlclxuICAgIH1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25QYXJhZ3JhcGhTcGFjaW5nIHtcbiAgbGluZT86IG51bWJlclxuICBsaW5lUnVsZT86IFByZXNlbnRhdGlvbkxpbmVTcGFjZVJ1bGVcbiAgYmVmb3JlPzogbnVtYmVyXG4gIGFmdGVyPzogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uUGFyYWdyYXBoU3R5bGUge1xuICBhbGlnbj86IFByZXNlbnRhdGlvbkhvcml6b250YWxBbGlnblxuICB2ZXJ0aWNhbD86IFByZXNlbnRhdGlvblZlcnRpY2FsQWxpZ25cbiAgZGlyZWN0aW9uPzogJ2x0cicgfCAncnRsJ1xuICBpbmRlbnQ/OiBQcmVzZW50YXRpb25JbmRlbnRcbiAgc3BhY2luZz86IFByZXNlbnRhdGlvblBhcmFncmFwaFNwYWNpbmdcbiAgbGlzdFR5cGU/OiBQcmVzZW50YXRpb25MaXN0VHlwZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXNlbnRhdGlvblRleHRTdHlsZSB7XG4gIGJvbGQ/OiBib29sZWFuXG4gIGl0YWxpYz86IGJvb2xlYW5cbiAgdW5kZXJsaW5lPzogYm9vbGVhblxuICBzdHJpa2V0aHJvdWdoPzogYm9vbGVhblxuICBmb250U2l6ZT86IG51bWJlclxuICBmb250RmFtaWx5Pzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uUGFyYWdyYXBoIHtcbiAgdGV4dDogc3RyaW5nXG4gIHRleHRTdHlsZT86IFByZXNlbnRhdGlvblRleHRTdHlsZVxuICBwYXJhZ3JhcGhTdHlsZT86IFByZXNlbnRhdGlvblBhcmFncmFwaFN0eWxlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uT2Zmc2V0IHtcbiAgeDogbnVtYmVyXG4gIHk6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXNlbnRhdGlvblNpemUge1xuICB3aWR0aDogbnVtYmVyXG4gIGhlaWdodDogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uU2hhcGVGaWxsIHtcbiAgdHlwZT86ICdzb2xpZCcgfCAnbm9uZSdcbiAgY29sb3I/OiBzdHJpbmdcbiAgdHJhbnNwYXJlbmN5PzogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uU2hhcGVMYXlvdXQge1xuICByb3RhdGlvbj86IG51bWJlclxuICBmbGlwSG9yaXpvbnRhbD86IGJvb2xlYW5cbiAgZmxpcFZlcnRpY2FsPzogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBQcmVzZW50YXRpb25TaGFwZURhc2hUeXBlID1cbiAgfCAnZGFzaCdcbiAgfCAnZGFzaERvdCdcbiAgfCAnZG90J1xuICB8ICdsZ0Rhc2gnXG4gIHwgJ2xnRGFzaERvdCdcbiAgfCAnbGdEYXNoRG90RG90J1xuICB8ICdzb2xpZCdcblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25TaGFwZUxpbmUge1xuICB2aXNpYmxlPzogYm9vbGVhblxuICBjb2xvcj86IHN0cmluZ1xuICB0cmFuc3BhcmVuY3k/OiBudW1iZXJcbiAgd2lkdGg/OiBudW1iZXJcbiAgZGFzaFR5cGU/OiBQcmVzZW50YXRpb25TaGFwZURhc2hUeXBlXG59XG5cbmV4cG9ydCB0eXBlIFByZXNlbnRhdGlvblNoYXBlQ29udGVudCA9IHN0cmluZyB8IFByZXNlbnRhdGlvblBhcmFncmFwaFtdXG5leHBvcnQgdHlwZSBQcmVzZW50YXRpb25MaW5lU2hhcGVUeXBlID1cbiAgfCAnbGluZSdcbiAgfCAnbGluZVdpdGhBcnJvdydcbiAgfCAnbGluZVdpdGhUd29BcnJvd3MnXG4gIHwgJ2JlbnRDb25uZWN0b3I1J1xuICB8ICdiZW50Q29ubmVjdG9yNVdpdGhBcnJvdydcbiAgfCAnYmVudENvbm5lY3RvcjVXaXRoVHdvQXJyb3dzJ1xuICB8ICdjdXJ2ZWRDb25uZWN0b3IzJ1xuICB8ICdjdXJ2ZWRDb25uZWN0b3IzV2l0aEFycm93J1xuICB8ICdjdXJ2ZWRDb25uZWN0b3IzV2l0aFR3b0Fycm93cydcbiAgfCAnc3BsaW5lJ1xuZXhwb3J0IHR5cGUgUHJlc2VudGF0aW9uU2hhcGVUeXBlID0gc3RyaW5nXG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uU2hhcGVCYXNlT3B0aW9ucyB7XG4gIG9mZnNldDogUHJlc2VudGF0aW9uT2Zmc2V0XG4gIHNpemU6IFByZXNlbnRhdGlvblNpemVcbiAgZmlsbD86IFByZXNlbnRhdGlvblNoYXBlRmlsbFxuICBsaW5lPzogUHJlc2VudGF0aW9uU2hhcGVMaW5lXG4gIGxheW91dD86IFByZXNlbnRhdGlvblNoYXBlTGF5b3V0XG59XG5cbmV4cG9ydCB0eXBlIFByZXNlbnRhdGlvbkluc2VydFNoYXBlT3B0aW9ucyA9XG4gIHwgKFByZXNlbnRhdGlvblNoYXBlQmFzZU9wdGlvbnMgJiB7XG4gICAgICB0eXBlOiBQcmVzZW50YXRpb25MaW5lU2hhcGVUeXBlXG4gICAgICBjb250ZW50PzogbmV2ZXJcbiAgICB9KVxuICB8IChQcmVzZW50YXRpb25TaGFwZUJhc2VPcHRpb25zICYge1xuICAgICAgdHlwZTogRXhjbHVkZTxQcmVzZW50YXRpb25TaGFwZVR5cGUsIFByZXNlbnRhdGlvbkxpbmVTaGFwZVR5cGU+XG4gICAgICBjb250ZW50PzogUHJlc2VudGF0aW9uU2hhcGVDb250ZW50XG4gICAgfSlcblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25TaGFwZSB7XG4gIGlkOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIHR5cGU6IFByZXNlbnRhdGlvblNoYXBlVHlwZVxuICB0ZXh0Q29udGVudD86IHN0cmluZ1xuICBzZXRGaWxsOiAoZmlsbDogUHJlc2VudGF0aW9uU2hhcGVGaWxsKSA9PiB2b2lkXG4gIHNldExpbmU6IChsaW5lOiBQcmVzZW50YXRpb25TaGFwZUxpbmUpID0+IHZvaWRcbiAgc2V0TGF5b3V0OiAobGF5b3V0OiBQcmVzZW50YXRpb25TaGFwZUxheW91dCkgPT4gdm9pZFxuICByZW1vdmU6ICgpID0+IHZvaWRcbn1cblxuZXhwb3J0IHR5cGUgUHJlc2VudGF0aW9uUGFyYWdyYXBoTGluZVNwYWNpbmcgPVxuICB8IDAuOVxuICB8IDEuMFxuICB8IDEuMTVcbiAgfCAxLjVcbiAgfCAyLjBcbiAgfCAyLjVcbiAgfCAzLjBcblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25UYWJsZUNlbGwge1xuICBzZXRTdHlsZTogKHN0eWxlOiBQcmVzZW50YXRpb25UYWJsZUNlbGxTdHlsZSkgPT4gdm9pZFxuICBjbGVhclN0eWxlOiAoKSA9PiB2b2lkXG59XG5cbmV4cG9ydCB0eXBlIFByZXNlbnRhdGlvblRhYmxlQ2VsbFN0eWxlID0gUHJlc2VudGF0aW9uVGV4dFN0eWxlICZcbiAgUHJlc2VudGF0aW9uUGFyYWdyYXBoU3R5bGVcblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25UYWJsZVNlbGVjdGlvbiB7XG4gIHJvdzogbnVtYmVyXG4gIGNvbHVtbjogbnVtYmVyXG4gIHJvd0NvdW50OiBudW1iZXJcbiAgY29sdW1uQ291bnQ6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXNlbnRhdGlvblRhYmxlUmFuZ2Uge1xuICBzZXRTdHlsZTogKHN0eWxlOiBQcmVzZW50YXRpb25UYWJsZUNlbGxTdHlsZSkgPT4gdm9pZFxuICBjbGVhclN0eWxlOiAoKSA9PiB2b2lkXG4gIHNldFNwYW46ICgpID0+IHZvaWRcbiAgcmVtb3ZlU3BhbjogKCkgPT4gdm9pZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXNlbnRhdGlvblRhYmxlSXRlbSB7XG4gIGlkOiBzdHJpbmdcbiAgcm93Q291bnQ6IG51bWJlclxuICBjb2x1bW5Db3VudDogbnVtYmVyXG4gIHJlbW92ZTogKCkgPT4gdm9pZFxuICBpbnNlcnRSb3dzOiAoXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBjb3VudDogbnVtYmVyLFxuICAgIHBsYWNlbWVudD86ICdiZWZvcmUnIHwgJ2FmdGVyJ1xuICApID0+IHZvaWRcbiAgaW5zZXJ0Q29sdW1uczogKFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgY291bnQ6IG51bWJlcixcbiAgICBwbGFjZW1lbnQ/OiAnYmVmb3JlJyB8ICdhZnRlcidcbiAgKSA9PiB2b2lkXG4gIGRlbGV0ZVJvd3M6IChpbmRleDogbnVtYmVyLCBjb3VudDogbnVtYmVyKSA9PiB2b2lkXG4gIGRlbGV0ZUNvbHVtbnM6IChpbmRleDogbnVtYmVyLCBjb3VudDogbnVtYmVyKSA9PiB2b2lkXG4gIHNldFJvd0hlaWdodDogKGluZGV4OiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSA9PiB2b2lkXG4gIHNldENvbHVtbldpZHRoOiAoaW5kZXg6IG51bWJlciwgd2lkdGg6IG51bWJlcikgPT4gdm9pZFxuICBnZXRDZWxsOiAocm93OiBudW1iZXIsIGNvbHVtbjogbnVtYmVyKSA9PiBQcmVzZW50YXRpb25UYWJsZUNlbGwgfCBudWxsXG4gIGdldFJhbmdlOiAocmFuZ2U6IFByZXNlbnRhdGlvblRhYmxlU2VsZWN0aW9uKSA9PiBQcmVzZW50YXRpb25UYWJsZVJhbmdlIHwgbnVsbFxuICBzZXREaXJlY3Rpb246IChkaXJlY3Rpb246ICdsdHInIHwgJ3J0bCcpID0+IHZvaWRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25UYWJsZU9wdGlvbnMge1xuICBvZmZzZXQ6IFByZXNlbnRhdGlvbk9mZnNldFxuICByb3dDb3VudDogbnVtYmVyXG4gIGNvbHVtbkNvdW50OiBudW1iZXJcbiAgcm93SGVpZ2h0czogbnVtYmVyW11cbiAgY29sdW1uV2lkdGhzOiBudW1iZXJbXVxuICBjb250ZW50Pzogc3RyaW5nIHwgUHJlc2VudGF0aW9uUGFyYWdyYXBoW11cbn1cblxuZXhwb3J0IHR5cGUgUHJlc2VudGF0aW9uVGV4dEJveERpcmVjdGlvbiA9ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCdcblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25UZXh0Qm94T3B0aW9uc1xuICBleHRlbmRzIFByZXNlbnRhdGlvblNoYXBlQmFzZU9wdGlvbnMge1xuICBjb250ZW50PzogUHJlc2VudGF0aW9uU2hhcGVDb250ZW50XG4gIGRpcmVjdGlvbj86IFByZXNlbnRhdGlvblRleHRCb3hEaXJlY3Rpb25cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25UZXh0UmFuZ2VWYWx1ZSB7XG4gIHN0YXJ0OiBzdHJpbmdcbiAgZW5kOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2Nrc0ZhY2FkZSB7XG4gIHNob3c6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgaGlkZTogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBhZGRSYW5nZUxvY2s6IChvcHRpb25zOiBBZGRSYW5nZUxvY2tQYXJhbXMpID0+IFByb21pc2U8dm9pZD5cbiAgYWRkU2hlZXRMb2NrOiAob3B0aW9uczogQWRkU2hlZXRMb2NrUGFyYW1zKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHJlbW92ZVJhbmdlTG9ja3NJblJhbmdlczogKG9wdGlvbnM6IFJlbW92ZVJhbmdlTG9ja3NQYXJhbXMpID0+IFByb21pc2U8dm9pZD5cbiAgcmVtb3ZlU2hlZXRMb2NrOiAob3B0aW9uczogUmVtb3ZlU2hlZXRMb2NrUGFyYW1zKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVudGlvbkZhY2FkZSB7XG4gIGxvY2F0ZUNlbGxCeUd1aWQ6IChcbiAgICBndWlkOiBzdHJpbmcsXG4gICAgbm90aWZpY2F0aW9uVHlwZT86IE1lbnRpb25UeXBlc1xuICApID0+IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW50RmFjYWRlIHtcbiAgc2V0Q29udGVudDogKGNvbnRlbnQ6IENvbnRlbnQpID0+IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBWZXJzaW9uRmFjYWRlIHtcbiAgc2hvdz86ICgpID0+IFByb21pc2U8dm9pZD5cbiAgaGlkZT86ICgpID0+IFByb21pc2U8dm9pZD5cbiAgY3JlYXRlUmV2aXNpb246IChcbiAgICBvcHRpb25zPzogUmV2aXNpb25DcmVhdGVPcHRpb25zXG4gICkgPT4gUHJvbWlzZTx1bmRlZmluZWQgfCBudWxsIHwgRG9jdW1lbnRFcnJvck1lc3NhZ2U+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uRmFjYWRlIHtcbiAgc3RhcnQ6IChpbmRleD86IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICBxdWl0OiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHN0YXJ0RnJvbUN1cnJlbnQ6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgc3RhcnRSZW1vdGVMaXZlOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHN0YXJ0U3BlYWtlclZpZXc6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgYWRkQ2hhbmdlTGlzdGVuZXI6IChsaXN0ZW5lcjogKHBheWxvYWQ6IHVua25vd24pID0+IHZvaWQpID0+ICgpID0+IHZvaWRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzUmFuZ2VGYWNhZGUge1xuICBzdGFydDogbnVtYmVyXG4gIGVuZDogbnVtYmVyXG4gIGlzQ2FyZXQ6IGJvb2xlYW5cbiAgZ2V0VGV4dDogKCkgPT4gUHJvbWlzZTxzdHJpbmc+XG4gIGdldEh0bWw6ICgpID0+IFByb21pc2U8c3RyaW5nPlxuICBzZXRUZXh0OiAodGV4dDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHNldEh0bWw6IChodG1sOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgZ2V0Qm91bmRpbmc6ICgpID0+IFByb21pc2U8RG9jc1JhbmdlQm91bmRpbmcgfCBudWxsPlxuICBzZXRTdHlsZTogKHN0eWxlOiBEb2NzVGV4dFN0eWxlKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGNvbnRpbnVlV3JpdGluZzogKFxuICAgIGNvbnRlbnQ6IHN0cmluZyxcbiAgICB0eXBlOiBEb2NzQ29udGludWVXcml0aW5nVHlwZSxcbiAgICBhYm9ydD86ICgpID0+IHZvaWRcbiAgKSA9PiBQcm9taXNlPGJvb2xlYW4+XG4gIHNldExpc3RTdHlsZTogKHN0eWxlOiBEb2NzTGlzdFN0eWxlKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGluc2VydExpbms6IChcbiAgICBocmVmOiBzdHJpbmcsXG4gICAgdGV4dDogc3RyaW5nLFxuICAgIHZpZXdUeXBlOiAnbGluaycgfCAnY2FyZCcgfCAncHJldmlldydcbiAgKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGluc2VydEltYWdlOiAoZGF0YTogRmlsZSB8IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBpbnNlcnRBdHRhY2htZW50OiAoXG4gICAgZGF0YTogRmlsZSxcbiAgICB2aWV3VHlwZTogJ2xpbmsnIHwgJ2NhcmQnIHwgJ3ByZXZpZXcnXG4gICkgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRQYXJhZ3JhcGhUeXBlOiAodHlwZTogRG9jc1BhcmFncmFwaFR5cGUpID0+IFByb21pc2U8dm9pZD5cbiAgY2xlYXJTdHlsZTogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBjbGVhckNvbnRlbnQ6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgY2xlYXJBbGw6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgaW5zZXJ0SG9yaXpvbnRhbFJ1bGU6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgaW5zZXJ0UXVvdGU6ICgpID0+IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzU2VsZWN0aW9uRmFjYWRlIHtcbiAgZ2V0UmFuZ2U6ICh2YWx1ZT86IERvY3NSYW5nZVZhbHVlKSA9PiBQcm9taXNlPERvY3NSYW5nZUZhY2FkZSB8IG51bGw+XG4gIHNldFJhbmdlOiAodmFsdWU6IERvY3NSYW5nZVZhbHVlIHwgbnVsbCkgPT4gUHJvbWlzZTx2b2lkPlxuICBhZGRSYW5nZUxpc3RlbmVyOiAoXG4gICAgbGlzdGVuZXI6ICh2YWx1ZTogRG9jc1JhbmdlVmFsdWUgfCBudWxsKSA9PiB2b2lkXG4gICkgPT4gKCkgPT4gdm9pZFxuICBnZXRXaG9sZVJhbmdlOiAoKSA9PiBQcm9taXNlPERvY3NSYW5nZUZhY2FkZSB8IG51bGw+XG4gIGluc2VydFRleHQ6ICh0ZXh0OiBzdHJpbmcpID0+IFByb21pc2U8RG9jc1JhbmdlVmFsdWU+XG4gIGluc2VydEh0bWw6IChodG1sOiBzdHJpbmcpID0+IFByb21pc2U8RG9jc1JhbmdlVmFsdWU+XG4gIGluc2VydFRhYmxlOiAoXG4gICAgcm93Q291bnQ6IG51bWJlcixcbiAgICBjb2x1bW5Db3VudDogbnVtYmVyXG4gICkgPT4gUHJvbWlzZTx7IHRhYmxlSWQ6IHN0cmluZyB9PlxuICBpbnNlcnRDb2RlQmxvY2s6IChvcHRpb25zPzogRG9jc0NvZGVCbG9ja0luc2VydE9wdGlvbnMpID0+IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzU2VhcmNoRmFjYWRlIHtcbiAgZmluZE9uZTogKHBhcmFtczogRG9jc1NlYXJjaFBhcmFtcykgPT4gUHJvbWlzZTxEb2NzU2VhcmNoUmVzdWx0IHwgbnVsbD5cbiAgZmluZEFsbDogKHBhcmFtczogRG9jc1NlYXJjaFBhcmFtcykgPT4gUHJvbWlzZTxEb2NzU2VhcmNoUmVzdWx0W10gfCBudWxsPlxuICByZXBsYWNlT25lOiAoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwYXJhbXM6IERvY3NSZXBsYWNlUGFyYW1zXG4gICkgPT4gUHJvbWlzZTxEb2NzUmVwbGFjZVJlc3VsdCB8IG51bGw+XG4gIHJlcGxhY2VBbGw6IChwYXJhbXM6IERvY3NSZXBsYWNlUGFyYW1zKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGNsZWFyOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc091dGxpbmVGYWNhZGUge1xuICBzaG93OiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGhpZGU6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgZ2V0T3BlbjogKCkgPT4gUHJvbWlzZTxib29sZWFuPlxuICBzZXRPcGVuOiAoaXNPcGVuOiBib29sZWFuKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGdldEFsbDogKCkgPT4gUHJvbWlzZTxEb2NzVE9DSXRlbVtdPlxuICBnZXRPbmU6IChpZDogc3RyaW5nKSA9PiBQcm9taXNlPERvY3NUT0NJdGVtIHwgbnVsbD5cbiAgZGVsZXRlQWxsOiAoKSA9PiBQcm9taXNlPGJvb2xlYW4+XG4gIGRlbGV0ZU9uZTogKGlkOiBzdHJpbmcpID0+IFByb21pc2U8Ym9vbGVhbj5cbiAgYWRkOiAoaXRlbTogT21pdDxEb2NzVE9DSXRlbSwgJ2lkJz4pID0+IFByb21pc2U8Ym9vbGVhbj5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzU2lkZWJhckZhY2FkZSB7XG4gIHNob3c6ICh0YWI/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgY2xvc2U6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgZ2V0U3RhdGU6ICgpID0+IFByb21pc2U8RG9jc1NpZGViYXJTdGF0ZT5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzVGFibGVDZWxsRmFjYWRlIHtcbiAgdGFibGVJZDogc3RyaW5nXG4gIHJvdzogbnVtYmVyXG4gIGNvbHVtbjogbnVtYmVyXG4gIHNldEZvcm11bGE6IChcbiAgICBmb3JtdWxhOiAnc3VtJyB8ICdhdmVyYWdlJyxcbiAgICByYW5nZXM6IERvY3NUYWJsZVNlbGVjdGlvbltdXG4gICkgPT4gUHJvbWlzZTx2b2lkPlxuICByZW1vdmVGb3JtdWxhOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHNldFN0eWxlOiAoc3R5bGU6IERvY3NUYWJsZUNlbGxTdHlsZSkgPT4gUHJvbWlzZTx2b2lkPlxuICBjbGVhclN0eWxlOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc1RhYmxlUmFuZ2VGYWNhZGUge1xuICB0YWJsZUlkOiBzdHJpbmdcbiAgc2VsZWN0aW9uOiBEb2NzVGFibGVTZWxlY3Rpb25cbiAgc2V0U3R5bGU6IChzdHlsZTogRG9jc1RhYmxlQ2VsbFN0eWxlKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGNsZWFyU3R5bGU6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgc2V0U3BhbjogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICByZW1vdmVTcGFuOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc1RhYmxlRmFjYWRlIHtcbiAgdGFibGVJZDogc3RyaW5nXG4gIGluc2VydFJvd3M6IChcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGNvdW50OiBudW1iZXIsXG4gICAgcGxhY2VtZW50PzogJ2JlZm9yZScgfCAnYWZ0ZXInXG4gICkgPT4gUHJvbWlzZTx2b2lkPlxuICBpbnNlcnRDb2x1bW5zOiAoXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBjb3VudDogbnVtYmVyLFxuICAgIHBsYWNlbWVudD86ICdiZWZvcmUnIHwgJ2FmdGVyJ1xuICApID0+IFByb21pc2U8dm9pZD5cbiAgZGVsZXRlUm93czogKGluZGV4OiBudW1iZXIsIGNvdW50OiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgZGVsZXRlQ29sdW1uczogKGluZGV4OiBudW1iZXIsIGNvdW50OiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgc2V0Um93SGVpZ2h0OiAoaW5kZXg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgc2V0Q29sdW1uV2lkdGg6IChpbmRleDogbnVtYmVyLCB3aWR0aDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHNldEZ1bGxzY3JlZW46IChzdGF0dXM6IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD5cbiAgZ2V0Q2VsbDogKHJvdzogbnVtYmVyLCBjb2x1bW46IG51bWJlcikgPT4gUHJvbWlzZTxEb2NzVGFibGVDZWxsRmFjYWRlIHwgbnVsbD5cbiAgZ2V0UmFuZ2U6IChcbiAgICBzZWxlY3Rpb246IERvY3NUYWJsZVNlbGVjdGlvblxuICApID0+IFByb21pc2U8RG9jc1RhYmxlUmFuZ2VGYWNhZGUgfCBudWxsPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3NUYWJsZXNGYWNhZGUge1xuICBnZXRBbGw6ICgpID0+IFByb21pc2U8RG9jc1RhYmxlRmFjYWRlW10+XG4gIGdldE9uZTogKHRhYmxlSWQ6IHN0cmluZykgPT4gUHJvbWlzZTxEb2NzVGFibGVGYWNhZGUgfCBudWxsPlxuICBkZWxldGVPbmU6ICh0YWJsZUlkOiBzdHJpbmcpID0+IFByb21pc2U8Ym9vbGVhbj5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzU2V0dGluZ3NGYWNhZGUge1xuICBnZXRQYWdlV2lkdGg6ICgpID0+IFByb21pc2U8RG9jc1BhZ2VXaWR0aD5cbiAgc2V0UGFnZVdpZHRoOiAod2lkdGg6IERvY3NQYWdlV2lkdGgpID0+IFByb21pc2U8dm9pZD5cbiAgZ2V0RGVmYXVsdFN0eWxlOiAoKSA9PiBQcm9taXNlPERvY3NEZWZhdWx0U3R5bGU+XG4gIHNldERlZmF1bHRTdHlsZTogKHN0eWxlOiBQYXJ0aWFsPERvY3NEZWZhdWx0U3R5bGU+KSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hlZXRSYW5nZUZhY2FkZSB7XG4gIHNoZWV0SWQ/OiBzdHJpbmdcbiAgcm93OiBudW1iZXJcbiAgY29sdW1uOiBudW1iZXJcbiAgcm93Q291bnQ6IG51bWJlclxuICBjb2x1bW5Db3VudDogbnVtYmVyXG4gIGdldFRleHQ6IChmb3JtYXQ/OiAncGxhaW4nIHwgJ21hdHJpeCcpID0+IFByb21pc2U8c3RyaW5nIHwgc3RyaW5nW11bXT5cbiAgc2V0VGV4dDogKHRleHQ6IFNoZWV0UmFuZ2VUZXh0KSA9PiBQcm9taXNlPHZvaWQ+XG4gIGdldEh0bWw6ICgpID0+IFByb21pc2U8c3RyaW5nPlxuICBzZXRIdG1sOiAoaHRtbDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGdldFZhbHVlOiAoKSA9PiBQcm9taXNlPChTaGVldENlbGxWYWx1ZSB8IG51bGwpW11bXT5cbiAgc2V0VmFsdWU6ICh2YWx1ZXM6IChTaGVldFdyaXRhYmxlQ2VsbFZhbHVlIHwgbnVsbClbXVtdKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGdldERhdGE6ICgpID0+IFByb21pc2U8U2hlZXRDZWxsRGF0YVtdW10+XG4gIGdldEZvcm11bGE6ICgpID0+IFByb21pc2U8KHN0cmluZyB8IG51bGwpW11bXT5cbiAgc2V0Rm9ybXVsYTogKGZvcm11bGE6IChzdHJpbmcgfCBudWxsKVtdW10pID0+IFByb21pc2U8dm9pZD5cbiAgc2V0RGF0YTogKGRhdGE6IFNoZWV0V3JpdGFibGVDZWxsRGF0YVtdW10pID0+IFByb21pc2U8dm9pZD5cbiAgc2V0U3BhbjogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICByZW1vdmVTcGFuOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGdldFNwYW5zOiAoKSA9PiBQcm9taXNlPFNoZWV0Q2VsbFJhbmdlW10gfCBudWxsPlxuICBjbGVhckNvbnRlbnQ6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgY2xlYXJTdHlsZTogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBjbGVhckFsbDogKCkgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoZWV0Q2VsbEZhY2FkZSB7XG4gIHNoZWV0SWQ/OiBzdHJpbmdcbiAgcm93OiBudW1iZXJcbiAgY29sdW1uOiBudW1iZXJcbiAgZ2V0Q2VsbFRleHQ6ICgpID0+IFByb21pc2U8c3RyaW5nPlxuICBzZXRDZWxsVGV4dDogKHRleHQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBnZXRDZWxsVmFsdWU6ICgpID0+IFByb21pc2U8U2hlZXRDZWxsVmFsdWUgfCBudWxsPlxuICBnZXRDZWxsRGF0YTogKCkgPT4gUHJvbWlzZTxTaGVldENlbGxEYXRhPlxuICBnZXRDZWxsRm9ybXVsYTogKCkgPT4gUHJvbWlzZTxzdHJpbmcgfCBudWxsPlxuICBzZXRDZWxsRm9ybXVsYTogKGZvcm11bGE6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRDZWxsVmFsdWU6ICh2YWx1ZTogU2hlZXRXcml0YWJsZUNlbGxWYWx1ZSB8IG51bGwpID0+IFByb21pc2U8dm9pZD5cbiAgc2V0Q2VsbERhdGE6IChkYXRhOiBTaGVldFdyaXRhYmxlQ2VsbERhdGEpID0+IFByb21pc2U8dm9pZD5cbiAgc2V0Q2hlY2tib3g6IChjaGVja2VkOiBib29sZWFuKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHNldFNjb3JlOiAoc2NvcmU6IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSkgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRQcm9ncmVzczogKHByb2dyZXNzOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgaW5zZXJ0SW1hZ2U6IChkYXRhOiBGaWxlIHwgc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGluc2VydE1lbnRpb246ICh1c2VySWQ6IG51bWJlciwgdXNlck5hbWU6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBpbnNlcnRBdHRhY2htZW50TGluazogKGRhdGE6IEZpbGUpID0+IFByb21pc2U8dm9pZD5cbiAgY2xlYXJDb250ZW50OiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGNsZWFyU3R5bGU6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgY2xlYXJBbGw6ICgpID0+IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGVldFdvcmtzaGVldEZhY2FkZSB7XG4gIGlkPzogc3RyaW5nXG4gIG5hbWU/OiBzdHJpbmdcbiAgZ2V0U2VsZWN0aW9uczogKCkgPT4gUHJvbWlzZTxTaGVldFNlbGVjdGlvbltdIHwgbnVsbD5cbiAgZ2V0UmFuZ2U6ICh2YWx1ZTogU2hlZXRSYW5nZVZhbHVlKSA9PiBQcm9taXNlPFNoZWV0UmFuZ2VGYWNhZGUgfCBudWxsPlxuICBhZGRSYW5nZUxpc3RlbmVyOiAoXG4gICAgbGlzdGVuZXI6ICh2YWx1ZToge1xuICAgICAgc2hlZXQ6IHN0cmluZ1xuICAgICAgcmFuZ2VzOiBTaGVldFJhbmdlVmFsdWVbXSB8IG51bGxcbiAgICB9KSA9PiB2b2lkXG4gICkgPT4gKCkgPT4gdm9pZFxuICBnZXRCb3VuZGluZzogKHJhbmdlOiBTaGVldFJhbmdlVmFsdWUpID0+IFByb21pc2U8e1xuICAgIGxlZnQ6IG51bWJlclxuICAgIHRvcDogbnVtYmVyXG4gICAgd2lkdGg6IG51bWJlclxuICAgIGhlaWdodDogbnVtYmVyXG4gIH0gfCBudWxsPlxuICBsb2NhdGVDZWxsOiAocm93OiBudW1iZXIsIGNvbHVtbjogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGdldENlbGw6IChyb3c6IG51bWJlciwgY29sdW1uOiBudW1iZXIpID0+IFByb21pc2U8U2hlZXRDZWxsRmFjYWRlIHwgbnVsbD5cbiAgZ2V0QWN0aXZlQ2VsbDogKCkgPT4gUHJvbWlzZTxTaGVldENlbGxGYWNhZGUgfCBudWxsPlxuICBzZXRBY3RpdmVDZWxsOiAob3B0aW9uczogeyByb3c6IG51bWJlcjsgY29sdW1uOiBudW1iZXIgfSkgPT4gUHJvbWlzZTx2b2lkPlxuICBzZWFyY2g6IChcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAgcmFuZ2U/OiBTaGVldFJhbmdlVmFsdWUgfCBTaGVldFJhbmdlVmFsdWVbXVxuICApID0+IFByb21pc2U8dm9pZD5cbiAgY2FuY2VsU2VhcmNoOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHBhc3RlOiAocGFyYW1zOiBDbGlwYm9hcmRQYXN0ZVBhcmFtcykgPT4gUHJvbWlzZTx2b2lkPlxuICBnZXRWaWV3cG9ydFNpemU6ICgpID0+IFByb21pc2U8eyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9PlxuICBlbmRFZGl0OiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGFkZFJvd3M6IChpbmRleDogbnVtYmVyLCBjb3VudDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGFkZENvbHVtbnM6IChpbmRleDogbnVtYmVyLCBjb3VudDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGRlbGV0ZVJvd3M6IChpbmRleDogbnVtYmVyLCBjb3VudDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGRlbGV0ZUNvbHVtbnM6IChpbmRleDogbnVtYmVyLCBjb3VudDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGFwcGVuZERhdGE6IChcbiAgICBkYXRhOiBTaGVldFdyaXRhYmxlQ2VsbERhdGFbXVtdLFxuICAgIGF4aXM/OiBTaGVldEFwcGVuZERhdGFBeGlzXG4gICkgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRSb3dzSGVpZ2h0OiAoZGF0YTogQXJyYXk8eyByb3c6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfT4pID0+IFByb21pc2U8dm9pZD5cbiAgc2V0Q29sdW1uc1dpZHRoOiAoXG4gICAgZGF0YTogQXJyYXk8eyBjb2x1bW46IG51bWJlcjsgd2lkdGg6IG51bWJlciB9PlxuICApID0+IFByb21pc2U8dm9pZD5cbiAgc2V0Um93c1Zpc2libGU6IChyb3dzOiBudW1iZXJbXSwgdmlzaWJsZTogYm9vbGVhbikgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRDb2x1bW5zVmlzaWJsZTogKGNvbHVtbnM6IG51bWJlcltdLCB2aXNpYmxlOiBib29sZWFuKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHNldEZyb3plblJvd0NvdW50OiAoY291bnQ6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRGcm96ZW5Db2x1bW5Db3VudDogKGNvdW50OiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgc2V0VGFiQ29sb3I6IChjb2xvcjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHJlbmFtZTogKG5hbWU6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRWaXNpYmxlOiAodmlzaWJsZTogYm9vbGVhbikgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoZWV0V29ya2Jvb2tGYWNhZGUge1xuICBnZXRXb3Jrc2hlZXRzOiAoKSA9PiBQcm9taXNlPFNoZWV0V29ya3NoZWV0RmFjYWRlW10+XG4gIGdldFdvcmtzaGVldEJ5SWQ6IChzaGVldElkOiBzdHJpbmcpID0+IFByb21pc2U8U2hlZXRXb3Jrc2hlZXRGYWNhZGUgfCBudWxsPlxuICBnZXRBY3RpdmVXb3Jrc2hlZXQ6ICgpID0+IFByb21pc2U8U2hlZXRXb3Jrc2hlZXRGYWNhZGU+XG4gIHNldEFjdGl2ZVdvcmtzaGVldDogKHNoZWV0SWQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBzYXZlOiAoKSA9PiBQcm9taXNlPEVkaXRvclNhdmVSZXN1bHQ+XG4gIGFkZFdvcmtzaGVldDogKG5hbWU/OiBzdHJpbmcsIGluZGV4PzogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGRlbGV0ZVdvcmtzaGVldDogKHNoZWV0SWQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBtb3ZlV29ya3NoZWV0OiAoc2hlZXRJZDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hlZXRDaGFydHNGYWNhZGUge1xuICBhZGRDaGFydEZyb21TZWxlY3Rpb246IChcbiAgICBwYXJhbXM/OiBBZGRDaGFydEZyb21TZWxlY3Rpb25QYXJhbXNcbiAgKSA9PiBQcm9taXNlPEFkZENoYXJ0RnJvbVNlbGVjdGlvblJlc3VsdCB8IHVuZGVmaW5lZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGVldFNlbGVjdGlvbnNGYWNhZGUge1xuICBnZXRBbGw6ICgpID0+IFByb21pc2U8U2hlZXRSYW5nZVZhbHVlW10+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uU2xpZGVGYWNhZGUge1xuICBpZDogc3RyaW5nXG4gIGdldEluZGV4OiAoKSA9PiBQcm9taXNlPG51bWJlcj5cbiAgZ2V0U2hhcGVzOiAoKSA9PiBQcm9taXNlPFByZXNlbnRhdGlvblNoYXBlW10+XG4gIGdldFRhYmxlczogKCkgPT4gUHJvbWlzZTxQcmVzZW50YXRpb25UYWJsZUl0ZW1bXT5cbiAgaW5zZXJ0U2hhcGU6IChcbiAgICBvcHRpb25zOiBQcmVzZW50YXRpb25JbnNlcnRTaGFwZU9wdGlvbnNcbiAgKSA9PiBQcm9taXNlPFByZXNlbnRhdGlvblNoYXBlPlxuICBpbnNlcnRUZXh0Qm94OiAoXG4gICAgb3B0aW9uczogUHJlc2VudGF0aW9uVGV4dEJveE9wdGlvbnNcbiAgKSA9PiBQcm9taXNlPFByZXNlbnRhdGlvblNoYXBlPlxuICBpbnNlcnRUYWJsZTogKFxuICAgIG9wdGlvbnM6IFByZXNlbnRhdGlvblRhYmxlT3B0aW9uc1xuICApID0+IFByb21pc2U8UHJlc2VudGF0aW9uVGFibGVJdGVtPlxuICBpbnNlcnRJbWFnZTogKFxuICAgIGltYWdlOiBGaWxlLFxuICAgIHNpemU/OiBQcmVzZW50YXRpb25TaXplLFxuICAgIG9mZnNldD86IFByZXNlbnRhdGlvbk9mZnNldFxuICApID0+IFByb21pc2U8dm9pZD5cbiAgaW5zZXJ0QXVkaW86IChcbiAgICBkYXRhOiBGaWxlLFxuICAgIHNpemU/OiBQcmVzZW50YXRpb25TaXplLFxuICAgIG9mZnNldD86IFByZXNlbnRhdGlvbk9mZnNldCxcbiAgICBuYW1lPzogc3RyaW5nXG4gICkgPT4gUHJvbWlzZTx2b2lkPlxuICBpbnNlcnRWaWRlbzogKFxuICAgIGRhdGE6IEZpbGUsXG4gICAgc2l6ZT86IFByZXNlbnRhdGlvblNpemUsXG4gICAgb2Zmc2V0PzogUHJlc2VudGF0aW9uT2Zmc2V0LFxuICAgIG5hbWU/OiBzdHJpbmdcbiAgKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGluc2VydEF0dGFjaG1lbnQ6IChcbiAgICBmaWxlOiBGaWxlLFxuICAgIHNpemU/OiBQcmVzZW50YXRpb25TaXplLFxuICAgIG9mZnNldD86IFByZXNlbnRhdGlvbk9mZnNldCxcbiAgICBuYW1lPzogc3RyaW5nXG4gICkgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXNlbnRhdGlvblNsaWRlc0ZhY2FkZSB7XG4gIGdldEN1cnJlbnRTbGlkZTogKCkgPT4gUHJvbWlzZTxQcmVzZW50YXRpb25TbGlkZUZhY2FkZT5cbiAgc2V0Q3VycmVudFNsaWRlSW5kZXg6IChzbGlkZUlkOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgZ2V0U2xpZGVJbmRleDogKHNsaWRlSWQ6IHN0cmluZykgPT4gUHJvbWlzZTxudW1iZXI+XG4gIGdldFNsaWRlc0NvdW50OiAoKSA9PiBQcm9taXNlPG51bWJlcj5cbiAgZ2V0U2xpZGVzOiAoKSA9PiBQcm9taXNlPFByZXNlbnRhdGlvblNsaWRlRmFjYWRlW10+XG4gIGdldFNsaWRlQnlJZDogKHNsaWRlSWQ6IHN0cmluZykgPT4gUHJvbWlzZTxQcmVzZW50YXRpb25TbGlkZUZhY2FkZSB8IG51bGw+XG4gIGdldFNlbGVjdGVkU2xpZGVzOiAoaWRzPzogc3RyaW5nW10pID0+IFByb21pc2U8UHJlc2VudGF0aW9uU2xpZGVGYWNhZGVbXT5cbiAgc2V0U2VsZWN0ZWRTbGlkZXM6IChpZHM6IHN0cmluZ1tdKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGFkZFNsaWRlOiAoKSA9PiBQcm9taXNlPFByZXNlbnRhdGlvblNsaWRlRmFjYWRlPlxuICBkdXBsaWNhdGVTbGlkZTogKHNsaWRlSWQ6IHN0cmluZykgPT4gUHJvbWlzZTxQcmVzZW50YXRpb25TbGlkZUZhY2FkZT5cbiAgZGVsZXRlU2xpZGU6IChzbGlkZUlkOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgaGlkZVNsaWRlOiAoc2xpZGVJZDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uVGV4dFJhbmdlRmFjYWRlIHtcbiAgc3RhcnQ6IHN0cmluZ1xuICBlbmQ6IHN0cmluZ1xuICBnZXRUZXh0OiAoKSA9PiBQcm9taXNlPHN0cmluZz5cbiAgc2V0VGV4dDogKHRleHQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBnZXRIdG1sOiAoKSA9PiBQcm9taXNlPHN0cmluZz5cbiAgc2V0SHRtbDogKGh0bWw6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBnZXRCb3VuZGluZzogKCkgPT4gUHJvbWlzZTx7XG4gICAgbGVmdDogbnVtYmVyXG4gICAgdG9wOiBudW1iZXJcbiAgICB3aWR0aDogbnVtYmVyXG4gICAgaGVpZ2h0OiBudW1iZXJcbiAgfSB8IG51bGw+XG4gIHNldFN0eWxlOiAoc3R5bGU6IFByZXNlbnRhdGlvblRleHRTdHlsZSkgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRWZXJ0aWNhbEFsaWduOiAodmVydGljYWw6IFByZXNlbnRhdGlvblZlcnRpY2FsQWxpZ24pID0+IFByb21pc2U8dm9pZD5cbiAgc2V0SG9yaXpvbnRhbEFsaWduOiAoYWxpZ246IFByZXNlbnRhdGlvbkhvcml6b250YWxBbGlnbikgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRMaXN0U3R5bGU6IChzdHlsZTogUHJlc2VudGF0aW9uTGlzdFR5cGUpID0+IFByb21pc2U8dm9pZD5cbiAgc2V0TGluZVNwYWNpbmc6IChzcGFjaW5nOiBQcmVzZW50YXRpb25QYXJhZ3JhcGhMaW5lU3BhY2luZykgPT4gUHJvbWlzZTx2b2lkPlxuICBpbmNyZWFzZUluZGVudDogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBkZWNyZWFzZUluZGVudDogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRUZXh0RGlyZWN0aW9uOiAoZGlyZWN0aW9uOiAnbHRyJyB8ICdydGwnKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGNsZWFyU3R5bGU6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgY2xlYXJDb250ZW50OiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGNsZWFyQWxsOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGluc2VydExpbms6ICh1cmw6IHN0cmluZywgdGV4dDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uU2VsZWN0aW9uRmFjYWRlIHtcbiAgZ2V0VGV4dFJhbmdlOiAoXG4gICAgdmFsdWU/OiBQcmVzZW50YXRpb25UZXh0UmFuZ2VWYWx1ZVxuICApID0+IFByb21pc2U8UHJlc2VudGF0aW9uVGV4dFJhbmdlRmFjYWRlIHwgbnVsbD5cbiAgc2V0VGV4dFJhbmdlOiAodmFsdWU6IFByZXNlbnRhdGlvblRleHRSYW5nZVZhbHVlIHwgbnVsbCkgPT4gUHJvbWlzZTx2b2lkPlxuICBnZXRTZWxlY3RlZFNoYXBlczogKGlkcz86IHN0cmluZ1tdKSA9PiBQcm9taXNlPFByZXNlbnRhdGlvblNoYXBlW10gfCBudWxsPlxuICBzZXRTZWxlY3RlZFNoYXBlczogKGlkczogc3RyaW5nW10gfCBudWxsKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGFkZFJhbmdlTGlzdGVuZXI6IChcbiAgICBsaXN0ZW5lcjogKHZhbHVlOiBQcmVzZW50YXRpb25UZXh0UmFuZ2VWYWx1ZSB8IG51bGwpID0+IHZvaWRcbiAgKSA9PiAoKSA9PiB2b2lkXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uVGV4dEZhY2FkZSB7XG4gIGdldDogKFxuICAgIHJhbmdlPzogUHJlc2VudGF0aW9uVGV4dFJhbmdlVmFsdWVcbiAgKSA9PiBQcm9taXNlPFBhcnRpYWw8RWRpdG9yVGV4dEZvcm1hdD4+XG4gIGFwcGx5OiAoXG4gICAgZm9ybWF0OiBQYXJ0aWFsPEVkaXRvclRleHRGb3JtYXQ+LFxuICAgIHJhbmdlPzogUHJlc2VudGF0aW9uVGV4dFJhbmdlVmFsdWVcbiAgKSA9PiBQcm9taXNlPFBhcnRpYWw8RWRpdG9yVGV4dEZvcm1hdD4+XG4gIGNsZWFyOiAocmFuZ2U6IFByZXNlbnRhdGlvblRleHRSYW5nZVZhbHVlKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uWm9vbUZhY2FkZSB7XG4gIGdldFBlcmNlbnRhZ2U6ICgpID0+IFByb21pc2U8bnVtYmVyPlxuICBzZXRQZXJjZW50YWdlOiAocGVyY2VudGFnZTogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHNldEZpdE1vZGU6IChtb2RlOiAnbm9uZScgfCAnd2luZG93JykgPT4gUHJvbWlzZTx2b2lkPlxuICBnZXRGaXRNb2RlOiAoKSA9PiBQcm9taXNlPCdub25lJyB8ICd3aW5kb3cnPlxuICB6b29tSW46ICgpID0+IFByb21pc2U8dm9pZD5cbiAgem9vbU91dDogKCkgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXNlbnRhdGlvbkV2ZW50U3Vic2NyaXB0aW9uRmFjYWRlIHtcbiAgYWRkRXJyb3JMaXN0ZW5lcjogKFxuICAgIGxpc3RlbmVyOiAoZXJyb3I6IHsgY29kZTogbnVtYmVyIHwgc3RyaW5nOyBtZXNzYWdlPzogc3RyaW5nIH0pID0+IHZvaWRcbiAgKSA9PiAoKSA9PiB2b2lkXG4gIGFkZExvYWRlZExpc3RlbmVyOiAobGlzdGVuZXI6ICgpID0+IHZvaWQpID0+ICgpID0+IHZvaWRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPZmZpY2VTREtSb290RmFjYWRlU3RhdGUge1xuICB0aXRsZT86IFRpdGxlRmFjYWRlXG4gIGhpc3Rvcnk/OiBIaXN0b3J5RmFjYWRlXG4gIGNvbW1lbnRzPzogQ29tbWVudHNGYWNhZGVcbiAgZGlzY3Vzc2lvbj86IERpc2N1c3Npb25GYWNhZGVcbiAgY29sbGFib3JhdG9yPzogQ29sbGFib3JhdG9yRmFjYWRlXG4gIGV4dGVybmFsQXBwPzogRXh0ZXJuYWxBcHBGYWNhZGVcbiAgbG9ja3M/OiBMb2Nrc0ZhY2FkZVxuICBtZW50aW9uPzogTWVudGlvbkZhY2FkZVxuICBjb250ZW50PzogQ29udGVudEZhY2FkZVxuICB2ZXJzaW9uPzogVmVyc2lvbkZhY2FkZVxuICBwcmVzZW50YXRpb24/OiBQcmVzZW50YXRpb25GYWNhZGVcbiAgc2VsZWN0aW9uPzogRG9jc1NlbGVjdGlvbkZhY2FkZSB8IFByZXNlbnRhdGlvblNlbGVjdGlvbkZhY2FkZVxuICBzZWFyY2g/OiBEb2NzU2VhcmNoRmFjYWRlXG4gIG91dGxpbmU/OiBEb2NzT3V0bGluZUZhY2FkZVxuICBzaWRlYmFyPzogRG9jc1NpZGViYXJGYWNhZGVcbiAgdGFibGVzPzogRG9jc1RhYmxlc0ZhY2FkZVxuICBzZXR0aW5ncz86IERvY3NTZXR0aW5nc0ZhY2FkZVxuICB3b3JrYm9vaz86IFNoZWV0V29ya2Jvb2tGYWNhZGVcbiAgYWN0aXZlU2hlZXQ/OiBTaGVldFdvcmtzaGVldEZhY2FkZVxuICBjaGFydHM/OiBTaGVldENoYXJ0c0ZhY2FkZVxuICBzZWxlY3Rpb25zPzogU2hlZXRTZWxlY3Rpb25zRmFjYWRlXG4gIHNsaWRlcz86IFByZXNlbnRhdGlvblNsaWRlc0ZhY2FkZVxuICB0ZXh0PzogUHJlc2VudGF0aW9uVGV4dEZhY2FkZVxuICB6b29tPzogUHJlc2VudGF0aW9uWm9vbUZhY2FkZVxuICBldmVudFN1YnNjcmlwdGlvbj86IFByZXNlbnRhdGlvbkV2ZW50U3Vic2NyaXB0aW9uRmFjYWRlXG4gIGJhdGNoQ2hhbmdlcz86IDxUPihjYWxsYmFjazogKCkgPT4gVCB8IFByb21pc2U8VD4pID0+IFByb21pc2U8QXdhaXRlZDxUPj5cbiAgZXhwb3J0PzogKHR5cGU6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBwcmludD86ICgpID0+IFByb21pc2U8dm9pZD5cbiAgc2V0Rm9jdXM/OiAoaXNGb2N1czogYm9vbGVhbikgPT4gUHJvbWlzZTx2b2lkPlxufVxuIiwiaW1wb3J0IHsgSW52b2tlTWV0aG9kIH0gZnJvbSAnd2Vib2ZmaWNlLWpzLXNkay1zaGFyZWQnXG5cbmV4cG9ydCBjb25zdCBIRUFERVJfQkFSU19NRVRIT0QgPSB7XG4gIGdldFZpc2libGU6ICdoZWFkZXJCYXJzLmdldFZpc2libGUnLFxuICBzZXRWaXNpYmxlOiAnaGVhZGVyQmFycy5zZXRWaXNpYmxlJyxcbiAgYWRkQ29tbWFuZDogJ2hlYWRlckJhcnMuYWRkQ29tbWFuZCcsXG4gIGdldENvbW1hbmQ6ICdoZWFkZXJCYXJzLmdldENvbW1hbmQnLFxuICBzZXRDb21tYW5kVmlzaWJsZTogJ2hlYWRlckJhcnMuc2V0Q29tbWFuZFZpc2libGUnLFxuICBzZXRDb21tYW5kRGlzYWJsZWQ6ICdoZWFkZXJCYXJzLnNldENvbW1hbmREaXNhYmxlZCcsXG4gIHNldENvbW1hbmRTcmM6ICdoZWFkZXJCYXJzLnNldENvbW1hbmRTcmMnLFxuICBzZXRDb21tYW5kTGFiZWw6ICdoZWFkZXJCYXJzLnNldENvbW1hbmRMYWJlbCcsXG4gIHNldENvbW1hbmRFZGl0YWJsZTogJ2hlYWRlckJhcnMuc2V0Q29tbWFuZEVkaXRhYmxlJyxcbiAgc2V0Q29tbWFuZENhbGxiYWNrRW5hYmxlZDogJ2hlYWRlckJhcnMuc2V0Q29tbWFuZENhbGxiYWNrRW5hYmxlZCcsXG4gIGxpc3RWaWV3Q29tbWFuZHM6ICdoZWFkZXJCYXJzLmxpc3RWaWV3Q29tbWFuZHMnLFxuICBoYW5kbGVDb21tYW5kQ2xpY2s6ICdoZWFkZXJCYXJzLmhhbmRsZUNvbW1hbmRDbGljaydcbn0gYXMgY29uc3RcblxuZXhwb3J0IGNvbnN0IEhFQURFUl9CQVJTX0NIQU5HRURfRVZFTlQgPSAnaGVhZGVyQmFyczpjaGFuZ2VkJ1xuXG5leHBvcnQgaW50ZXJmYWNlIEhlYWRlckJhcnNDb21tYW5kRGVmaW5pdGlvbiB7XG4gIGlkOiBzdHJpbmdcbiAgc2VjdGlvbj86IHN0cmluZ1xuICBvcmRlcj86IG51bWJlclxuICBsYWJlbD86IHN0cmluZ1xuICB2aXNpYmxlPzogYm9vbGVhblxuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgZWRpdGFibGU/OiBib29sZWFuXG4gIHR5cGU/OiAnYWN0aW9uJyB8ICdzdHJ1Y3R1cmFsJ1xuICByZW5kZXJUeXBlPzogc3RyaW5nXG4gIHNyYz86IHN0cmluZ1xuICBvbkNsaWNrPzogKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBIZWFkZXJCYXJzQ29tbWFuZFN0YXRlIGV4dGVuZHMgSGVhZGVyQmFyc0NvbW1hbmREZWZpbml0aW9uIHtcbiAgdHlwZTogJ2FjdGlvbicgfCAnc3RydWN0dXJhbCdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIZWFkZXJCYXJzQ29tbWFuZFJlZiB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmdcbiAgdmlzaWJsZTogYm9vbGVhblxuICBkaXNhYmxlZDogYm9vbGVhblxuICBzcmM/OiBzdHJpbmdcbiAgbGFiZWw/OiBzdHJpbmdcbiAgZWRpdGFibGU/OiBib29sZWFuXG4gIG9uQ29tbWFuZENsaWNrPzogKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD5cbiAgZ2V0U3RhdGU6ICgpID0+IEhlYWRlckJhcnNDb21tYW5kU3RhdGUgfCB1bmRlZmluZWRcbn1cblxuZXhwb3J0IHR5cGUgSGVhZGVyQmFyc1RpdGxlQ2hhbmdlSGFuZGxlciA9IChcbiAgdGl0bGU6IHN0cmluZ1xuKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPlxuXG5leHBvcnQgaW50ZXJmYWNlIEhlYWRlckJhcnNGYWNhZGUge1xuICB2aXNpYmxlOiBib29sZWFuXG4gIG9uVGl0bGVDaGFuZ2U/OiBIZWFkZXJCYXJzVGl0bGVDaGFuZ2VIYW5kbGVyXG4gIGdldFZpc2libGU6ICgpID0+IFByb21pc2U8Ym9vbGVhbj5cbiAgc2V0VmlzaWJsZTogKHZpc2libGU6IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD5cbiAgYWRkQ29tbWFuZDogKFxuICAgIGNvbW1hbmQ6IEhlYWRlckJhcnNDb21tYW5kRGVmaW5pdGlvbixcbiAgICBwb3NDb21tYW5kOiBzdHJpbmcsXG4gICAgcG9zPzogJ2JlZm9yZScgfCAnYWZ0ZXInXG4gICkgPT4gUHJvbWlzZTxib29sZWFuPlxuICBnZXRDb21tYW5kOiAoaWQ6IHN0cmluZykgPT4gSGVhZGVyQmFyc0NvbW1hbmRSZWZcbiAgbGlzdFZpZXdDb21tYW5kczogKCkgPT4gUHJvbWlzZTxIZWFkZXJCYXJzQ29tbWFuZFN0YXRlW10+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyQmFyc0NoYW5nZWRQYXlsb2FkIHtcbiAgcmVhc29uPzogc3RyaW5nXG4gIGNvbW1hbmRJZD86IHN0cmluZ1xuICB2ZXJzaW9uPzogbnVtYmVyXG4gIHNuYXBzaG90Pzoge1xuICAgIHZpc2libGU6IGJvb2xlYW5cbiAgICBjb21tYW5kczogSGVhZGVyQmFyc0NvbW1hbmRTdGF0ZVtdXG4gIH1cbn1cblxuaW50ZXJmYWNlIEhlYWRlckJhcnNIb3N0IHtcbiAgZ2V0VmlzaWJsZVN0YXRlKCk6IGJvb2xlYW5cbiAgc2V0VmlzaWJsZVN0YXRlKHZpc2libGU6IGJvb2xlYW4pOiB2b2lkXG4gIGdldENvbW1hbmRzTWFwKCk6IE1hcDxzdHJpbmcsIEhlYWRlckJhcnNDb21tYW5kU3RhdGU+XG4gIGdldE92ZXJyaWRlc01hcCgpOiBNYXA8c3RyaW5nLCAoKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD4pIHwgdW5kZWZpbmVkPlxuICBnZXRSZWZzTWFwKCk6IE1hcDxzdHJpbmcsIEhlYWRlckJhcnNDb21tYW5kUmVmPlxuICBnZXRUaXRsZUhhbmRsZXIoKTogSGVhZGVyQmFyc1RpdGxlQ2hhbmdlSGFuZGxlciB8IHVuZGVmaW5lZFxuICBzZXRUaXRsZUhhbmRsZXIoaGFuZGxlcjogSGVhZGVyQmFyc1RpdGxlQ2hhbmdlSGFuZGxlciB8IHVuZGVmaW5lZCk6IHZvaWRcbiAgaXNUaXRsZVN1YnNjcmliZWQoKTogYm9vbGVhblxuICBzZXRUaXRsZVN1YnNjcmliZWQoc3Vic2NyaWJlZDogYm9vbGVhbik6IHZvaWRcbiAgaW52b2tlSGVhZGVyQmFyczxUPihcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICBwYXlsb2FkPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgKTogUHJvbWlzZTxUPlxuICBlbWl0SGVhZGVyQmFyc0Vycm9yKG1lc3NhZ2U6IHN0cmluZywgZXJyOiB1bmtub3duKTogdm9pZFxuICBvbkludGVybmFsVGl0bGVDaGFuZ2UobGlzdGVuZXI6ICh0aXRsZTogdW5rbm93bikgPT4gdm9pZCk6IHZvaWRcbiAgc3Vic2NyaWJlRWRpdG9yVGl0bGVDaGFuZ2UoKTogUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdEhlYWRlckJhcnNGYWNhZGUoaG9zdDogSGVhZGVyQmFyc0hvc3QpOiBIZWFkZXJCYXJzRmFjYWRlIHtcbiAgY29uc3QgZmFjYWRlOiBIZWFkZXJCYXJzRmFjYWRlID0ge1xuICAgIHZpc2libGU6IGZhbHNlLFxuICAgIG9uVGl0bGVDaGFuZ2U6IHVuZGVmaW5lZCxcbiAgICBnZXRWaXNpYmxlOiBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gYXdhaXQgc3luY0hlYWRlckJhcnNWaXNpYmxlKGhvc3QpXG4gICAgfSxcbiAgICBzZXRWaXNpYmxlOiBhc3luYyAodmlzaWJsZTogYm9vbGVhbikgPT4ge1xuICAgICAgYXdhaXQgc2V0SGVhZGVyQmFyc1Zpc2libGUoaG9zdCwgdmlzaWJsZSlcbiAgICB9LFxuICAgIGFkZENvbW1hbmQ6IGFzeW5jIChcbiAgICAgIGNvbW1hbmQ6IEhlYWRlckJhcnNDb21tYW5kRGVmaW5pdGlvbixcbiAgICAgIHBvc0NvbW1hbmQ6IHN0cmluZyxcbiAgICAgIHBvczogJ2JlZm9yZScgfCAnYWZ0ZXInID0gJ2FmdGVyJ1xuICAgICkgPT4ge1xuICAgICAgY29uc3QgeyBvbkNsaWNrLCAuLi5jb21tYW5kUGF5bG9hZCB9ID0gY29tbWFuZFxuICAgICAgY29uc3QgYWRkZWQgPSBhd2FpdCBob3N0Lmludm9rZUhlYWRlckJhcnM8Ym9vbGVhbj4oXG4gICAgICAgIEhFQURFUl9CQVJTX01FVEhPRC5hZGRDb21tYW5kLFxuICAgICAgICB7IGNvbW1hbmQ6IGNvbW1hbmRQYXlsb2FkLCBwb3NDb21tYW5kLCBwb3MgfVxuICAgICAgKVxuICAgICAgY29uc3QgY2xpY2tIYW5kbGVyID0gb25DbGlja1xuICAgICAgaWYgKGFkZGVkICYmIHR5cGVvZiBjbGlja0hhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgaG9zdC5nZXRPdmVycmlkZXNNYXAoKS5zZXQoY29tbWFuZC5pZCwgY2xpY2tIYW5kbGVyKVxuICAgICAgICBhd2FpdCBob3N0Lmludm9rZUhlYWRlckJhcnM8dW5kZWZpbmVkPihcbiAgICAgICAgICBIRUFERVJfQkFSU19NRVRIT0Quc2V0Q29tbWFuZENhbGxiYWNrRW5hYmxlZCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogY29tbWFuZC5pZCxcbiAgICAgICAgICAgIGVuYWJsZWQ6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIHJldHVybiBhZGRlZFxuICAgIH0sXG4gICAgZ2V0Q29tbWFuZDogKGlkOiBzdHJpbmcpID0+IGdldEhlYWRlckJhcnNDb21tYW5kUmVmKGhvc3QsIGlkKSxcbiAgICBsaXN0Vmlld0NvbW1hbmRzOiBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjb21tYW5kcyA9IGF3YWl0IGhvc3QuaW52b2tlSGVhZGVyQmFyczxIZWFkZXJCYXJzQ29tbWFuZFN0YXRlW10+KFxuICAgICAgICBIRUFERVJfQkFSU19NRVRIT0QubGlzdFZpZXdDb21tYW5kc1xuICAgICAgKVxuICAgICAgc3luY0hlYWRlckJhcnNDb21tYW5kcyhob3N0LCBjb21tYW5kcylcbiAgICAgIHJldHVybiBjb21tYW5kc1xuICAgIH1cbiAgfVxuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmYWNhZGUsICd2aXNpYmxlJywge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogKCkgPT4gaG9zdC5nZXRWaXNpYmxlU3RhdGUoKSxcbiAgICBzZXQ6IChuZXh0OiBib29sZWFuKSA9PiB7XG4gICAgICBzZXRIZWFkZXJCYXJzVmlzaWJsZShob3N0LCBuZXh0KS5jYXRjaCgoZXJyOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGhvc3QuZW1pdEhlYWRlckJhcnNFcnJvcignc2V0IGhlYWRlckJhcnMudmlzaWJsZSBmYWlsZWQnLCBlcnIpXG4gICAgICB9KVxuICAgIH1cbiAgfSlcblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZmFjYWRlLCAnb25UaXRsZUNoYW5nZScsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6ICgpID0+IGhvc3QuZ2V0VGl0bGVIYW5kbGVyKCksXG4gICAgc2V0OiAoaGFuZGxlcjogSGVhZGVyQmFyc1RpdGxlQ2hhbmdlSGFuZGxlciB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgaG9zdC5zZXRUaXRsZUhhbmRsZXIoaGFuZGxlcilcbiAgICAgIGlmICh0eXBlb2YgaGFuZGxlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGVuc3VyZUhlYWRlckJhcnNUaXRsZUNoYW5nZVN1YnNjcmlwdGlvbihob3N0KS5jYXRjaCgoZXJyOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGhvc3QuZW1pdEhlYWRlckJhcnNFcnJvcignc3Vic2NyaWJlIGhlYWRlckJhcnMgdGl0bGVDaGFuZ2UgZmFpbGVkJywgZXJyKVxuICAgICAgfSlcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIGZhY2FkZVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlSGVhZGVyQmFyc1RpdGxlQ2hhbmdlU3Vic2NyaXB0aW9uKFxuICBob3N0OiBIZWFkZXJCYXJzSG9zdFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChob3N0LmlzVGl0bGVTdWJzY3JpYmVkKCkpIHtcbiAgICByZXR1cm5cbiAgfVxuICBob3N0LnNldFRpdGxlU3Vic2NyaWJlZCh0cnVlKVxuICBob3N0Lm9uSW50ZXJuYWxUaXRsZUNoYW5nZSgodGl0bGU6IHVua25vd24pID0+IHtcbiAgICBpZiAodHlwZW9mIHRpdGxlICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGhvc3QuZ2V0VGl0bGVIYW5kbGVyKCk/Lih0aXRsZSlcbiAgfSlcbiAgdHJ5IHtcbiAgICBhd2FpdCBob3N0LnN1YnNjcmliZUVkaXRvclRpdGxlQ2hhbmdlKClcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICBob3N0LnNldFRpdGxlU3Vic2NyaWJlZChmYWxzZSlcbiAgICB0aHJvdyBlcnJvclxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzeW5jSGVhZGVyQmFyc0NvbW1hbmRzKFxuICBob3N0OiBIZWFkZXJCYXJzSG9zdCxcbiAgY29tbWFuZHM6IEhlYWRlckJhcnNDb21tYW5kU3RhdGVbXVxuKSB7XG4gIGNvbnN0IGNvbW1hbmRNYXAgPSBob3N0LmdldENvbW1hbmRzTWFwKClcbiAgY29tbWFuZE1hcC5jbGVhcigpXG4gIGZvciAoY29uc3QgY29tbWFuZCBvZiBjb21tYW5kcykge1xuICAgIGNvbW1hbmRNYXAuc2V0KGNvbW1hbmQuaWQsIGNvbW1hbmQpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5SGVhZGVyQmFyc0NoYW5nZWQoXG4gIGhvc3Q6IEhlYWRlckJhcnNIb3N0LFxuICBwYXlsb2FkPzogSGVhZGVyQmFyc0NoYW5nZWRQYXlsb2FkXG4pIHtcbiAgY29uc3Qgc25hcHNob3QgPSBwYXlsb2FkPy5zbmFwc2hvdFxuICBpZiAoIXNuYXBzaG90KSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgaG9zdC5zZXRWaXNpYmxlU3RhdGUoc25hcHNob3QudmlzaWJsZSlcbiAgc3luY0hlYWRlckJhcnNDb21tYW5kcyhob3N0LCBzbmFwc2hvdC5jb21tYW5kcylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN5bmNIZWFkZXJCYXJzVmlzaWJsZShcbiAgaG9zdDogSGVhZGVyQmFyc0hvc3Rcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBwYXlsb2FkID0gYXdhaXQgaG9zdC5pbnZva2VIZWFkZXJCYXJzPHsgdmlzaWJsZTogYm9vbGVhbiB9PihcbiAgICBIRUFERVJfQkFSU19NRVRIT0QuZ2V0VmlzaWJsZVxuICApXG4gIGhvc3Quc2V0VmlzaWJsZVN0YXRlKHBheWxvYWQudmlzaWJsZSlcbiAgcmV0dXJuIGhvc3QuZ2V0VmlzaWJsZVN0YXRlKClcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNldEhlYWRlckJhcnNWaXNpYmxlKFxuICBob3N0OiBIZWFkZXJCYXJzSG9zdCxcbiAgdmlzaWJsZTogYm9vbGVhblxuKSB7XG4gIGhvc3Quc2V0VmlzaWJsZVN0YXRlKHZpc2libGUpXG4gIGF3YWl0IGhvc3QuaW52b2tlSGVhZGVyQmFyczx1bmRlZmluZWQ+KEhFQURFUl9CQVJTX01FVEhPRC5zZXRWaXNpYmxlLCB7XG4gICAgdmlzaWJsZVxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGVhZGVyQmFyc0NvbW1hbmRSZWYoXG4gIGhvc3Q6IEhlYWRlckJhcnNIb3N0LFxuICBpZDogc3RyaW5nXG4pOiBIZWFkZXJCYXJzQ29tbWFuZFJlZiB7XG4gIGNvbnN0IHJlZnMgPSBob3N0LmdldFJlZnNNYXAoKVxuICBjb25zdCBleGlzdGluZyA9IHJlZnMuZ2V0KGlkKVxuICBpZiAoZXhpc3RpbmcpIHtcbiAgICByZXR1cm4gZXhpc3RpbmdcbiAgfVxuXG4gIGNvbnN0IGNvbW1hbmRzID0gaG9zdC5nZXRDb21tYW5kc01hcCgpXG4gIGlmICghY29tbWFuZHMuaGFzKGlkKSkge1xuICAgIGhvc3RcbiAgICAgIC5pbnZva2VIZWFkZXJCYXJzPHsgY29tbWFuZDogSGVhZGVyQmFyc0NvbW1hbmRTdGF0ZSB8IG51bGwgfT4oXG4gICAgICAgIEhFQURFUl9CQVJTX01FVEhPRC5nZXRDb21tYW5kLFxuICAgICAgICB7IGlkIH1cbiAgICAgIClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChwYXlsb2FkLmNvbW1hbmQpIHtcbiAgICAgICAgICBjb21tYW5kcy5zZXQoaWQsIHBheWxvYWQuY29tbWFuZClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGhvc3QuZW1pdEhlYWRlckJhcnNFcnJvcignZmV0Y2ggaGVhZGVyQmFycyBjb21tYW5kIGZhaWxlZCcsIGVycilcbiAgICAgIH0pXG4gIH1cblxuICBjb25zdCByZWY6IEhlYWRlckJhcnNDb21tYW5kUmVmID0ge1xuICAgIGlkLFxuICAgIHZpc2libGU6IHRydWUsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIHNyYzogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgZWRpdGFibGU6IHVuZGVmaW5lZCxcbiAgICBvbkNvbW1hbmRDbGljazogdW5kZWZpbmVkLFxuICAgIGdldFN0YXRlOiAoKSA9PiBjb21tYW5kcy5nZXQoaWQpXG4gIH1cblxuICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhyZWYsIHtcbiAgICB2aXNpYmxlOiB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiBjb21tYW5kcy5nZXQoaWQpPy52aXNpYmxlICE9PSBmYWxzZSxcbiAgICAgIHNldDogKG5leHQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGNvbW1hbmRzLmdldChpZClcbiAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICBjb21tYW5kcy5zZXQoaWQsIHsgLi4uY3VycmVudCwgdmlzaWJsZTogbmV4dCB9KVxuICAgICAgICB9XG4gICAgICAgIGhvc3RcbiAgICAgICAgICAuaW52b2tlSGVhZGVyQmFyczx1bmRlZmluZWQ+KEhFQURFUl9CQVJTX01FVEhPRC5zZXRDb21tYW5kVmlzaWJsZSwge1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiBuZXh0XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGVycjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgaG9zdC5lbWl0SGVhZGVyQmFyc0Vycm9yKFxuICAgICAgICAgICAgICAnc2V0IGhlYWRlckJhcnMgY29tbWFuZCB2aXNpYmxlIGZhaWxlZCcsXG4gICAgICAgICAgICAgIGVyclxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICB9XG4gICAgfSxcbiAgICBkaXNhYmxlZDoge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogKCkgPT4gY29tbWFuZHMuZ2V0KGlkKT8uZGlzYWJsZWQgPT09IHRydWUsXG4gICAgICBzZXQ6IChuZXh0OiBib29sZWFuKSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBjb21tYW5kcy5nZXQoaWQpXG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgY29tbWFuZHMuc2V0KGlkLCB7IC4uLmN1cnJlbnQsIGRpc2FibGVkOiBuZXh0IH0pXG4gICAgICAgIH1cbiAgICAgICAgaG9zdFxuICAgICAgICAgIC5pbnZva2VIZWFkZXJCYXJzPHVuZGVmaW5lZD4oSEVBREVSX0JBUlNfTUVUSE9ELnNldENvbW1hbmREaXNhYmxlZCwge1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICBkaXNhYmxlZDogbmV4dFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnI6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgIGhvc3QuZW1pdEhlYWRlckJhcnNFcnJvcihcbiAgICAgICAgICAgICAgJ3NldCBoZWFkZXJCYXJzIGNvbW1hbmQgZGlzYWJsZWQgZmFpbGVkJyxcbiAgICAgICAgICAgICAgZXJyXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIHNyYzoge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogKCkgPT4gY29tbWFuZHMuZ2V0KGlkKT8uc3JjLFxuICAgICAgc2V0OiAobmV4dDogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgbmV4dCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50ID0gY29tbWFuZHMuZ2V0KGlkKVxuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgIGNvbW1hbmRzLnNldChpZCwgeyAuLi5jdXJyZW50LCBzcmM6IG5leHQgfSlcbiAgICAgICAgfVxuICAgICAgICBob3N0XG4gICAgICAgICAgLmludm9rZUhlYWRlckJhcnM8dW5kZWZpbmVkPihIRUFERVJfQkFSU19NRVRIT0Quc2V0Q29tbWFuZFNyYywge1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICBzcmM6IG5leHRcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICBob3N0LmVtaXRIZWFkZXJCYXJzRXJyb3IoJ3NldCBoZWFkZXJCYXJzIGNvbW1hbmQgc3JjIGZhaWxlZCcsIGVycilcbiAgICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgbGFiZWw6IHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6ICgpID0+IGNvbW1hbmRzLmdldChpZCk/LmxhYmVsLFxuICAgICAgc2V0OiAobmV4dDogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0eXBlb2YgbmV4dCAhPT0gJ3N0cmluZycgfHxcbiAgICAgICAgICBpZCA9PT0gJ3RpdGxlJyB8fFxuICAgICAgICAgIGlkID09PSAnc2F2ZS1zdGF0dXMnXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBjb21tYW5kcy5nZXQoaWQpXG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgY29tbWFuZHMuc2V0KGlkLCB7IC4uLmN1cnJlbnQsIGxhYmVsOiBuZXh0IH0pXG4gICAgICAgIH1cbiAgICAgICAgaG9zdFxuICAgICAgICAgIC5pbnZva2VIZWFkZXJCYXJzPHVuZGVmaW5lZD4oSEVBREVSX0JBUlNfTUVUSE9ELnNldENvbW1hbmRMYWJlbCwge1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICBsYWJlbDogbmV4dFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnI6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgIGhvc3QuZW1pdEhlYWRlckJhcnNFcnJvcignc2V0IGhlYWRlckJhcnMgY29tbWFuZCBsYWJlbCBmYWlsZWQnLCBlcnIpXG4gICAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIGVkaXRhYmxlOiB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiBjb21tYW5kcy5nZXQoaWQpPy5lZGl0YWJsZSxcbiAgICAgIHNldDogKG5leHQ6IGJvb2xlYW4gfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgaWYgKGlkICE9PSAndGl0bGUnKSB7XG4gICAgICAgICAgaG9zdC5lbWl0SGVhZGVyQmFyc0Vycm9yKFxuICAgICAgICAgICAgJ2hlYWRlckJhcnMgY29tbWFuZCBlZGl0YWJsZSBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgdGl0bGUnLFxuICAgICAgICAgICAgbmV3IEVycm9yKCdoZWFkZXJCYXJzIGNvbW1hbmQgZWRpdGFibGUgaXMgb25seSBzdXBwb3J0ZWQgZm9yIHRpdGxlJylcbiAgICAgICAgICApXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VycmVudCA9IGNvbW1hbmRzLmdldChpZClcbiAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICBjb21tYW5kcy5zZXQoaWQsIHsgLi4uY3VycmVudCwgZWRpdGFibGU6IG5leHQgfSlcbiAgICAgICAgfVxuICAgICAgICBob3N0XG4gICAgICAgICAgLmludm9rZUhlYWRlckJhcnM8dW5kZWZpbmVkPihIRUFERVJfQkFSU19NRVRIT0Quc2V0Q29tbWFuZEVkaXRhYmxlLCB7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIGVkaXRhYmxlOiBuZXh0XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGVycjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgaG9zdC5lbWl0SGVhZGVyQmFyc0Vycm9yKFxuICAgICAgICAgICAgICAnc2V0IGhlYWRlckJhcnMgY29tbWFuZCBlZGl0YWJsZSBmYWlsZWQnLFxuICAgICAgICAgICAgICBlcnJcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgb25Db21tYW5kQ2xpY2s6IHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6ICgpID0+IGhvc3QuZ2V0T3ZlcnJpZGVzTWFwKCkuZ2V0KGlkKSxcbiAgICAgIHNldDogKGhhbmRsZXI6ICgoKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPikgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgaG9zdC5nZXRPdmVycmlkZXNNYXAoKS5zZXQoaWQsIGhhbmRsZXIpXG4gICAgICAgIGhvc3RcbiAgICAgICAgICAuaW52b2tlSGVhZGVyQmFyczx1bmRlZmluZWQ+KFxuICAgICAgICAgICAgSEVBREVSX0JBUlNfTUVUSE9ELnNldENvbW1hbmRDYWxsYmFja0VuYWJsZWQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICBlbmFibGVkOiB0eXBlb2YgaGFuZGxlciA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgICAuY2F0Y2goKGVycjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgaG9zdC5lbWl0SGVhZGVyQmFyc0Vycm9yKFxuICAgICAgICAgICAgICAnc2V0IGhlYWRlckJhcnMgY29tbWFuZCBjYWxsYmFjayBmYWlsZWQnLFxuICAgICAgICAgICAgICBlcnJcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfSlcblxuICByZWZzLnNldChpZCwgcmVmKVxuICByZXR1cm4gcmVmXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdWJzY3JpYmVIZWFkZXJCYXJzVGl0bGVDaGFuZ2UoXG4gIGludm9rZTogPFQ+KG1ldGhvZDogc3RyaW5nLCBhcmdzOiB1bmtub3duW10pID0+IFByb21pc2U8VD5cbikge1xuICBhd2FpdCBpbnZva2UoSW52b2tlTWV0aG9kLkxpc3RlbkVkaXRvckV2ZW50LCBbJ3RpdGxlQ2hhbmdlJ10pXG59XG4iLCJpbXBvcnQgJ2NvcmUtanMvZmVhdHVyZXMvcHJvbWlzZSdcbmltcG9ydCAnY29yZS1qcy9mZWF0dXJlcy91cmwnXG5pbXBvcnQgJ2NvcmUtanMvZmVhdHVyZXMvYXJyYXkvaW5jbHVkZXMnXG5pbXBvcnQgJ2NvcmUtanMvZmVhdHVyZXMvb2JqZWN0L2Fzc2lnbidcbmltcG9ydCAncHJveHktcG9seWZpbGwnXG5pbXBvcnQge1xuICBPZmZpY2VTREtCcm9hZGNhc3RDaGFubmVsLFxuICBPZmZpY2VTREtNZXNzYWdlRXZlbnQsXG4gIGlzT2ZmaWNlU0RLTWVzc2FnZUV2ZW50TGlrZSxcbiAgT2ZmaWNlU0RLRXZlbnRMaWtlXG59IGZyb20gJ29mZmljZXNkay1icm9hZGNhc3QtY2hhbm5lbCdcbmltcG9ydCB7IFN0YXJ0UGFyYW1zIH0gZnJvbSAnd2Vib2ZmaWNlLXN0YXJ0cGFyYW1zJ1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnXG5pbXBvcnQgeyBUaW55RW1pdHRlciB9IGZyb20gJ3RpbnktZW1pdHRlcidcbmltcG9ydCBnZXRHbG9iYWwgZnJvbSAnZ2xvYmFsdGhpcy9wb2x5ZmlsbCdcbmltcG9ydCB7XG4gIENvbnRhaW5lck1ldGhvZCxcbiAgQ29udGFpbmVyUmVjdCxcbiAgRGlzYWJsZU1lbnRpb25DYXJkcyxcbiAgRmlsZVR5cGUsXG4gIEludm9rZU1ldGhvZCxcbiAgTW91c2VNb3ZlUGF5bG9hZCxcbiAgUmVhZHlTdGF0ZSxcbiAgUGVyZm9ybWFuY2VFbnRyeSxcbiAgRGV2aWNlTW9kZSxcbiAgR2VuZXJhdGVVcmxIYW5kbGVyLFxuICBHZW5lcmF0ZVVybEluZm8sXG4gIEFQSUFkYXB0b3IsXG4gIFJlcXVlc3RDb250ZXh0LFxuICBTREtFdmVudCxcbiAgU2hvd1RvYXN0T3B0aW9ucyxcbiAgQ3JlZGVudGlhbHNcbn0gZnJvbSAnd2Vib2ZmaWNlLWpzLXNkay1zaGFyZWQnXG5pbXBvcnQgRXhwaXJlU2V0IGZyb20gJ2V4cGlyZS1zZXQnXG5cbmltcG9ydCB7XG4gIERvY3VtZW50LFxuICBEb2N1bWVudFBybyxcbiAgUHJlc2VudGF0aW9uLFxuICBTcHJlYWRzaGVldCxcbiAgVGFibGUsXG4gIEZvcm0sXG4gIEZsb3djaGFydFxufSBmcm9tICcuJ1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnLi9hc3NlcnQnXG5pbXBvcnQge1xuICBFbXB0eVBhZ2VPcHRpb25zLFxuICBOb3JtYWxpemVkRW1wdHlQYWdlT3B0aW9ucyxcbiAgbm9ybWFsaXplRW1wdHlQYWdlT3B0aW9uc1xufSBmcm9tICcuL3R5cGVzL0VtcHR5UGFnZSdcbmltcG9ydCB7XG4gIEJhc2VFZGl0b3IsXG4gIENvbGxhYm9yYXRvcixcbiAgQ29sbGFib3JhdG9yc0NoYW5nZWRQYXlsb2FkXG59IGZyb20gJy4vdHlwZXMvQmFzZUVkaXRvcidcbmltcG9ydCB7XG4gIFNsYXNoTWVudUJ1dHRvbixcbiAgU2xhc2hNZW51RW50cnksXG4gIFNsYXNoTWVudU9wdGlvbnNcbn0gZnJvbSAnLi90eXBlcy9TbGFzaE1lbnUnXG5pbXBvcnQge1xuICBhcHBseUhlYWRlckJhcnNDaGFuZ2VkLFxuICBlbnN1cmVIZWFkZXJCYXJzVGl0bGVDaGFuZ2VTdWJzY3JpcHRpb24sXG4gIGdldEhlYWRlckJhcnNDb21tYW5kUmVmLFxuICBIRUFERVJfQkFSU19DSEFOR0VEX0VWRU5ULFxuICBIRUFERVJfQkFSU19NRVRIT0QsXG4gIGluaXRIZWFkZXJCYXJzRmFjYWRlLFxuICBzZXRIZWFkZXJCYXJzVmlzaWJsZSxcbiAgc3luY0hlYWRlckJhcnNDb21tYW5kcyxcbiAgc3luY0hlYWRlckJhcnNWaXNpYmxlXG59IGZyb20gJy4vT2ZmaWNlU0RLLmhlYWRlckJhcnMnXG5pbXBvcnQgeyBidWlsZFJvb3RGYWNhZGVTdGF0ZSB9IGZyb20gJy4vT2ZmaWNlU0RLLmZhY2FkZSdcbmltcG9ydCB0eXBlIHtcbiAgQ29sbGFib3JhdG9yRmFjYWRlLFxuICBDb21tZW50c0ZhY2FkZSxcbiAgQ29udGVudEZhY2FkZSxcbiAgRGlzY3Vzc2lvbkZhY2FkZSxcbiAgRG9jc091dGxpbmVGYWNhZGUsXG4gIERvY3NTZWFyY2hGYWNhZGUsXG4gIERvY3NTZWxlY3Rpb25GYWNhZGUsXG4gIERvY3NTZXR0aW5nc0ZhY2FkZSxcbiAgRG9jc1NpZGViYXJGYWNhZGUsXG4gIERvY3NUYWJsZXNGYWNhZGUsXG4gIEV4dGVybmFsQXBwRmFjYWRlLFxuICBIaXN0b3J5RmFjYWRlLFxuICBMb2Nrc0ZhY2FkZSxcbiAgTWVudGlvbkZhY2FkZSxcbiAgUHJlc2VudGF0aW9uRXZlbnRTdWJzY3JpcHRpb25GYWNhZGUsXG4gIFByZXNlbnRhdGlvbkZhY2FkZSxcbiAgUHJlc2VudGF0aW9uU2VsZWN0aW9uRmFjYWRlLFxuICBQcmVzZW50YXRpb25TbGlkZXNGYWNhZGUsXG4gIFByZXNlbnRhdGlvblRleHRGYWNhZGUsXG4gIFByZXNlbnRhdGlvblpvb21GYWNhZGUsXG4gIFNoZWV0Q2hhcnRzRmFjYWRlLFxuICBTaGVldFNlbGVjdGlvbnNGYWNhZGUsXG4gIFNoZWV0V29ya2Jvb2tGYWNhZGUsXG4gIFNoZWV0V29ya3NoZWV0RmFjYWRlLFxuICBUaXRsZUZhY2FkZSxcbiAgVmVyc2lvbkZhY2FkZVxufSBmcm9tICcuL09mZmljZVNESy5mYWNhZGUudHlwZXMnXG5pbXBvcnQgdHlwZSB7XG4gIEhlYWRlckJhcnNDaGFuZ2VkUGF5bG9hZCxcbiAgSGVhZGVyQmFyc0NvbW1hbmRSZWYsXG4gIEhlYWRlckJhcnNDb21tYW5kU3RhdGUsXG4gIEhlYWRlckJhcnNGYWNhZGUsXG4gIEhlYWRlckJhcnNUaXRsZUNoYW5nZUhhbmRsZXJcbn0gZnJvbSAnLi9PZmZpY2VTREsuaGVhZGVyQmFycydcblxuZXhwb3J0ICogZnJvbSAnLi9PZmZpY2VTREsuZmFjYWRlLnR5cGVzJ1xuZXhwb3J0ICogZnJvbSAnLi9PZmZpY2VTREsuaGVhZGVyQmFycydcblxuY29uc3QgZ2xvYmFsVGhpcyA9IGdldEdsb2JhbCgpXG5jb25zdCBBVUQgPSAnc21qc3NkaydcbmNvbnN0IFNNX1BBUkFNU19LRVkgPSAnc21QYXJhbXMnXG5jb25zdCBMT0FESU5HX09QVElPTlNfS0VZID0gJ2xvYWRpbmdPcHRpb25zJ1xuY29uc3QgTEVHQUNZX0xBTkdVQUdFX01BUCA9IHtcbiAgZW46ICdlbi1VUycsXG4gIGphOiAnamEtSlAnXG59IGFzIGNvbnN0XG5jb25zdCBTVVBQT1JURURfTEFOR1VBR0VTID0gW1xuICAnemgtQ04nLFxuICAnemgtVFcnLFxuICAnZW4tVVMnLFxuICAnamEtSlAnLFxuICAna28tS1InLFxuICAnZXMtRVMnLFxuICAncHQtUFQnLFxuICAnZGUtREUnLFxuICAnZnItRlInLFxuICAnaXQtSVQnLFxuICAncnUtUlUnLFxuICAnaWQtSUQnLFxuICAndmktVk4nLFxuICAndGgtVEgnLFxuICAnbXMtTVknLFxuICAnYXItU0EnXG5dIGFzIGNvbnN0XG50eXBlIFN1cHBvcnRlZExhbmd1YWdlID0gKHR5cGVvZiBTVVBQT1JURURfTEFOR1VBR0VTKVtudW1iZXJdXG50eXBlIExlZ2FjeUxhbmd1YWdlID0ga2V5b2YgdHlwZW9mIExFR0FDWV9MQU5HVUFHRV9NQVBcbmNvbnN0IEVESVRPUl9GQUNBREVfQ0FMTEJBQ0tfTUVUSE9EID0gJ2VkaXRvckZhY2FkZS5oYW5kbGVDYWxsYmFjaydcbmNvbnN0IFNMQVNIX01FTlVfTUVUSE9EID0ge1xuICBoYW5kbGVCdXR0b25DbGljazogJ3NsYXNoTWVudS5oYW5kbGVCdXR0b25DbGljaydcbn0gYXMgY29uc3RcbmNvbnN0IFBSRUxPQURfTUVTU0FHRV9UWVBFID0ge1xuICBSRUFEWTogJ1NES19QUkVMT0FEX1JFQURZJyxcbiAgSU5JVDogJ1NES19QUkVMT0FEX0lOSVQnLFxuICBBQ0s6ICdTREtfUFJFTE9BRF9BQ0snLFxuICBET05FOiAnU0RLX1BSRUxPQURfRE9ORScsXG4gIEVSUk9SOiAnU0RLX1BSRUxPQURfRVJST1InXG59IGFzIGNvbnN0XG5jb25zdCBQUk9NSVNFX0xJS0VfUFJPWFlfUFJPUFMgPSBuZXcgU2V0KFsndGhlbicsICdjYXRjaCcsICdmaW5hbGx5J10pXG5cbnR5cGUgRWRpdG9yRmFjYWRlQ2FsbGJhY2sgPSAoLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3duIHwgUHJvbWlzZTx1bmtub3duPlxuXG5pbnRlcmZhY2UgU2VyaWFsaXplZFNsYXNoTWVudUJ1dHRvbiBleHRlbmRzIE9taXQ8U2xhc2hNZW51QnV0dG9uLCAnY2FsbGJhY2snPiB7XG4gIGNhbGxiYWNrSWQ/OiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIFNlcmlhbGl6ZWRTbGFzaE1lbnVFbnRyeSBleHRlbmRzIE9taXQ8U2xhc2hNZW51RW50cnksICdjaGlsZHJlbic+IHtcbiAgY2hpbGRyZW4/OiBTZXJpYWxpemVkU2xhc2hNZW51SXRlbVtdXG59XG5cbnR5cGUgU2VyaWFsaXplZFNsYXNoTWVudUl0ZW0gPVxuICB8IFNlcmlhbGl6ZWRTbGFzaE1lbnVCdXR0b25cbiAgfCBTZXJpYWxpemVkU2xhc2hNZW51RW50cnlcblxuaW50ZXJmYWNlIFNlcmlhbGl6ZWRTbGFzaE1lbnVPcHRpb25zIHtcbiAgZW50cmllczogU2VyaWFsaXplZFNsYXNoTWVudUl0ZW1bXVxufVxuXG4vKipcbiAqIOWFvOWuueaXp+eJiOivreiogOe8qeWGme+8jOW5tue7n+S4gOaYoOWwhOS4uuagh+WHhuivreiogOS7o+eggeOAglxuICovXG5mdW5jdGlvbiBub3JtYWxpemVMYW5ndWFnZShsYW5nOiBzdHJpbmcpOiBTdXBwb3J0ZWRMYW5ndWFnZSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBMRUdBQ1lfTEFOR1VBR0VfTUFQW2xhbmcgYXMgTGVnYWN5TGFuZ3VhZ2VdID8/IGxhbmdcblxuICBpZiAoKFNVUFBPUlRFRF9MQU5HVUFHRVMgYXMgcmVhZG9ubHkgc3RyaW5nW10pLmluY2x1ZGVzKG5vcm1hbGl6ZWQpKSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZWQgYXMgU3VwcG9ydGVkTGFuZ3VhZ2VcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gaXNTbGFzaE1lbnVFbnRyeShcbiAgaXRlbTogU2xhc2hNZW51RW50cnkgfCBTbGFzaE1lbnVCdXR0b25cbik6IGl0ZW0gaXMgU2xhc2hNZW51RW50cnkge1xuICByZXR1cm4gaXRlbS50eXBlID09PSAnZW50cnknXG59XG5cbmZ1bmN0aW9uIHNob3VsZFNraXBGYWNhZGVQcm94eVByb3AocHJvcDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBQUk9NSVNFX0xJS0VfUFJPWFlfUFJPUFMuaGFzKHByb3ApXG59XG5cbmV4cG9ydCBjb25zdCBNZXNzYWdlRXZlbnQgPSBJbnZva2VNZXRob2RcblxuZXhwb3J0IGNsYXNzIE9mZmljZVNESyBleHRlbmRzIFRpbnlFbWl0dGVyIHtcbiAgLyoqXG4gICAqIOe8lui+keWZqOmhtemdouWvueW6lOeahCBpZnJhbWUg5YWD57Sg44CC6ZyA6KaB5rOo5oSP6LCD5pW054i25YWD57Sg5aSn5bCP5p2l5o6n5Yi2IGlmcmFtZSDlpKflsI/jgIJcbiAgICovXG4gIGVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50XG4gIHJlYWRvbmx5IHV1aWQ6IHN0cmluZ1xuICByZWFkb25seSB1c2VyVXVpZD86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiDkvKDnu5/mlofmoaPnvJbovpHlmajlrp7kvotcbiAgICogQGRlcHJlY2F0ZWQgLSDnlKggYHNkay5nZXRFZGl0b3I8VD4oKWAg5pu/5LujXG4gICAqL1xuICBkb2N1bWVudFBybz86IERvY3VtZW50UHJvLkVkaXRvclxuXG4gIC8qKlxuICAgKiDovbvmlofmoaPnvJbovpHlmajlrp7kvotcbiAgICogQGRlcHJlY2F0ZWQgLSDnlKggYHNkay5nZXRFZGl0b3I8VD4oKWAg5pu/5LujXG4gICAqL1xuICBkb2N1bWVudD86IERvY3VtZW50LkVkaXRvclxuXG4gIC8qKlxuICAgKiDooajmoLznvJbovpHlmajlrp7kvotcbiAgICogQGRlcHJlY2F0ZWQgLSDnlKggYHNkay5nZXRFZGl0b3I8VD4oKWAg5pu/5LujXG4gICAqL1xuICBzcHJlYWRzaGVldD86IFNwcmVhZHNoZWV0LkVkaXRvclxuXG4gIC8qKlxuICAgKiDlvZPliY3lpZfku7bmlK/mjIHnmoTmoIfpopjog73lipvjgIJcbiAgICovXG4gIHRpdGxlPzogVGl0bGVGYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE5Y6G5Y+y6IO95Yqb44CCXG4gICAqL1xuICBoaXN0b3J5PzogSGlzdG9yeUZhY2FkZVxuXG4gIC8qKlxuICAgKiDlvZPliY3lpZfku7bmlK/mjIHnmoTor4Torrrog73lipvjgIJcbiAgICovXG4gIGNvbW1lbnRzPzogQ29tbWVudHNGYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE6K6o6K666IO95Yqb44CCXG4gICAqL1xuICBkaXNjdXNzaW9uPzogRGlzY3Vzc2lvbkZhY2FkZVxuXG4gIC8qKlxuICAgKiDlvZPliY3lpZfku7bmlK/mjIHnmoTnvJblhpnogIXkvqfovrnmoI/og73lipvjgIJcbiAgICovXG4gIGNvbGxhYm9yYXRvcj86IENvbGxhYm9yYXRvckZhY2FkZVxuXG4gIC8qKlxuICAgKiDlvZPliY3lpZfku7bmlK/mjIHnmoTnrKzkuInmlrnlupTnlKjmj5LlhaXog73lipvjgIJcbiAgICovXG4gIGV4dGVybmFsQXBwPzogRXh0ZXJuYWxBcHBGYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE6ZSB5a6a6IO95Yqb44CCXG4gICAqL1xuICBsb2Nrcz86IExvY2tzRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOaPkOWPiuWumuS9jeiDveWKm+OAglxuICAgKi9cbiAgbWVudGlvbj86IE1lbnRpb25GYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE5YaF5a655YaZ5YWl6IO95Yqb44CCXG4gICAqL1xuICBjb250ZW50PzogQ29udGVudEZhY2FkZVxuXG4gIC8qKlxuICAgKiDlvZPliY3lpZfku7bmlK/mjIHnmoTniYjmnKzog73lipvjgIJcbiAgICovXG4gIHZlcnNpb24/OiBWZXJzaW9uRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOa8lOekuuiDveWKm+OAglxuICAgKi9cbiAgcHJlc2VudGF0aW9uPzogUHJlc2VudGF0aW9uRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOmAieWMuuiDveWKm+OAglxuICAgKi9cbiAgc2VsZWN0aW9uPzogRG9jc1NlbGVjdGlvbkZhY2FkZSB8IFByZXNlbnRhdGlvblNlbGVjdGlvbkZhY2FkZVxuXG4gIC8qKlxuICAgKiDlvZPliY3lpZfku7bmlK/mjIHnmoTmkJzntKLog73lipvjgIJcbiAgICovXG4gIHNlYXJjaD86IERvY3NTZWFyY2hGYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE55uu5b2V6IO95Yqb44CCXG4gICAqL1xuICBvdXRsaW5lPzogRG9jc091dGxpbmVGYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE5L6n6L655qCP6IO95Yqb44CCXG4gICAqL1xuICBzaWRlYmFyPzogRG9jc1NpZGViYXJGYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE6KGo5qC86ZuG5ZCI6IO95Yqb44CCXG4gICAqL1xuICB0YWJsZXM/OiBEb2NzVGFibGVzRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOiuvue9ruiDveWKm+OAglxuICAgKi9cbiAgc2V0dGluZ3M/OiBEb2NzU2V0dGluZ3NGYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE5bel5L2c57C/6IO95Yqb44CCXG4gICAqL1xuICB3b3JrYm9vaz86IFNoZWV0V29ya2Jvb2tGYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE5b2T5YmN5bel5L2c6KGo6IO95Yqb44CCXG4gICAqL1xuICBhY3RpdmVTaGVldD86IFNoZWV0V29ya3NoZWV0RmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOWbvuihqOiDveWKm+OAglxuICAgKi9cbiAgY2hhcnRzPzogU2hlZXRDaGFydHNGYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE5aSa6YCJ5Yy66IO95Yqb44CCXG4gICAqL1xuICBzZWxlY3Rpb25zPzogU2hlZXRTZWxlY3Rpb25zRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOW5u+eBr+eJh+mbhuWQiOiDveWKm+OAglxuICAgKi9cbiAgc2xpZGVzPzogUHJlc2VudGF0aW9uU2xpZGVzRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOaWh+acrOiDveWKm+OAglxuICAgKi9cbiAgdGV4dD86IFByZXNlbnRhdGlvblRleHRGYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE57yp5pS+6IO95Yqb44CCXG4gICAqL1xuICB6b29tPzogUHJlc2VudGF0aW9uWm9vbUZhY2FkZVxuXG4gIC8qKlxuICAgKiDlvZPliY3lpZfku7bmlK/mjIHnmoTkuovku7borqLpmIXog73lipvjgIJcbiAgICovXG4gIGV2ZW50U3Vic2NyaXB0aW9uPzogUHJlc2VudGF0aW9uRXZlbnRTdWJzY3JpcHRpb25GYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE5om56YeP5Y+Y5pu06IO95Yqb44CCXG4gICAqL1xuICBiYXRjaENoYW5nZXM/OiA8VD4oY2FsbGJhY2s6ICgpID0+IFQgfCBQcm9taXNlPFQ+KSA9PiBQcm9taXNlPEF3YWl0ZWQ8VD4+XG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOWvvOWHuuiDveWKm+OAglxuICAgKi9cbiAgZXhwb3J0PzogKHR5cGU6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuXG4gIC8qKlxuICAgKiDlvZPliY3lpZfku7bmlK/mjIHnmoTmiZPljbDog73lipvjgIJcbiAgICovXG4gIHByaW50PzogKCkgPT4gUHJvbWlzZTx2b2lkPlxuXG4gIC8qKlxuICAgKiDlvZPliY3lpZfku7bmlK/mjIHnmoTogZrnhKbog73lipvjgIJcbiAgICovXG4gIHNldEZvY3VzPzogKGlzRm9jdXM6IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD5cblxuICAvKipcbiAgICog5bqU55So6KGo5qC857yW6L6R5Zmo5a6e5L6LXG4gICAqIEBkZXByZWNhdGVkIC0g55SoIGBzZGsuZ2V0RWRpdG9yPFQ+KClgIOabv+S7o1xuICAgKi9cbiAgdGFibGU/OiBUYWJsZS5FZGl0b3JcblxuICAvKipcbiAgICog6KGo5Y2V57yW6L6R5Zmo5a6e5L6LXG4gICAqIEBkZXByZWNhdGVkIC0g55SoIGBzZGsuZ2V0RWRpdG9yPFQ+KClgIOabv+S7o1xuICAgKi9cbiAgZm9ybT86IEZvcm0uRWRpdG9yXG5cbiAgLyoqXG4gICAqIOWbvuiwsee8lui+keWZqOWunuS+i1xuICAgKiBAZGVwcmVjYXRlZCAtIOeUqCBgc2RrLmdldEVkaXRvcjxUPigpYCDmm7/ku6NcbiAgICovXG4gIGZsb3djaGFydD86IEZsb3djaGFydC5FZGl0b3JcbiAgcmVhZG9ubHkgaGVhZGVyQmFyczogSGVhZGVyQmFyc0ZhY2FkZVxuXG4gIHByaXZhdGUgX2ZpbGVUeXBlOiBGaWxlVHlwZSA9IEZpbGVUeXBlLlVua25vd25cbiAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlSGFuZGxlcjogKGV2dDogZ2xvYmFsVGhpcy5NZXNzYWdlRXZlbnQpID0+IHZvaWQgPVxuICAgICgpID0+IHVuZGVmaW5lZFxuXG4gIC8qKlxuICAgKiDlhoXpg6ggZXZlbnQgZW1pdHRlcu+8jOavlOWmgueUqOadpeS4rei9rCBlZGl0b3Ig5LqL5Lu2XG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGVtaXR0ZXI6IFRpbnlFbWl0dGVyID0gbmV3IFRpbnlFbWl0dGVyKClcblxuICBwcml2YXRlIGNoYW5uZWw6IE9mZmljZVNES0Jyb2FkY2FzdENoYW5uZWxcbiAgcHJpdmF0ZSByZWFkb25seSBjb25uZWN0T3B0aW9uczogT2ZmaWNlU0RLT3B0aW9uc1xuICBwcml2YXRlIF9yZWFkeVN0YXRlOiBSZWFkeVN0YXRlID0gUmVhZHlTdGF0ZS5Mb2FkaW5nXG4gIHByaXZhdGUgZWRpdG9yOiBhbnlcbiAgcHJpdmF0ZSByZWFkb25seSBzdGFydFBhcmFtczogU3RhcnRQYXJhbXNcbiAgcHJpdmF0ZSBjb2xsYWJvcmF0b3JzOiBDb2xsYWJvcmF0b3JbXSA9IFtdXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpQWRhcHRvcjogc3RyaW5nXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpQWRhcHRvckNvbnRleHQ6IHN0cmluZ1xuICBwcml2YXRlIHJlYWRvbmx5IGhhbmRsZWRNZXNzYWdlQ2FjaGU6IEV4cGlyZVNldDxzdHJpbmc+XG4gIC8qKlxuICAgKiDmtojmga/ov4fmnJ/ml7bpl7TvvIzljZXkvY3mr6vnp5LvvIzpu5jorqQgNSDliIbpkp9cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZUV4cGlyZXM6IG51bWJlclxuICAvKipcbiAgICogU0RLIOacjeWKoeWZqOeahOWcsOWdgFxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBlbmRwb2ludDogVVJMXG4gIHByaXZhdGUgcmVhZG9ubHkgc2FtZU9yaWdpbjogYm9vbGVhblxuICBwcml2YXRlIGhlYWRlckJhcnNWaXNpYmxlID0gdHJ1ZVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgaGVhZGVyQmFyc0NvbW1hbmRzID0gbmV3IE1hcDxcbiAgICBzdHJpbmcsXG4gICAgSGVhZGVyQmFyc0NvbW1hbmRTdGF0ZVxuICA+KClcblxuICBwcml2YXRlIHJlYWRvbmx5IGhlYWRlckJhcnNDb21tYW5kT3ZlcnJpZGVzID0gbmV3IE1hcDxcbiAgICBzdHJpbmcsXG4gICAgKCgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KSB8IHVuZGVmaW5lZFxuICA+KClcblxuICBwcml2YXRlIHJlYWRvbmx5IHNsYXNoTWVudUNhbGxiYWNrcyA9IG5ldyBNYXA8c3RyaW5nLCAoKSA9PiB2b2lkPigpXG4gIHByaXZhdGUgcmVhZG9ubHkgZWRpdG9yRmFjYWRlQ2FsbGJhY2tzID0gbmV3IE1hcDxcbiAgICBzdHJpbmcsXG4gICAgRWRpdG9yRmFjYWRlQ2FsbGJhY2tcbiAgPigpXG5cbiAgcHJpdmF0ZSByZWFkb25seSBoZWFkZXJCYXJzQ29tbWFuZFJlZnMgPSBuZXcgTWFwPFxuICAgIHN0cmluZyxcbiAgICBIZWFkZXJCYXJzQ29tbWFuZFJlZlxuICA+KClcblxuICBwcml2YXRlIGhlYWRlckJhcnNUaXRsZUNoYW5nZUhhbmRsZXI/OiBIZWFkZXJCYXJzVGl0bGVDaGFuZ2VIYW5kbGVyXG4gIHByaXZhdGUgaGVhZGVyQmFyc1RpdGxlQ2hhbmdlU3Vic2NyaWJlZCA9IGZhbHNlXG5cbiAgcHJpdmF0ZSByZWFkb25seSBvblZpZXdwb3J0UmVzaXplOiAoKSA9PiB2b2lkXG5cbiAgLyoqXG4gICAqIOW9kuS4gOWMluWQjueahOe8uuecgemhtemFjee9ru+8jOaehOmAoOaXtuS4gOasoeeul+WujO+8jOWQjue7reS7heivu+WPluOAglxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBub3JtYWxpemVkRW1wdHlQYWdlOiBOb3JtYWxpemVkRW1wdHlQYWdlT3B0aW9uc1xuICBwcml2YXRlIHJlYWRvbmx5IHByZWxvYWRBY2tUaW1lb3V0TXMgPSAyMDAwXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJlbG9hZERvbmVUaW1lb3V0TXMgPSA4MDAwXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJlbG9hZFJlYWR5VGltZW91dE1zID0gMzAwMFxuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9mZmljZVNES09wdGlvbnMpIHtcbiAgICBzdXBlcigpXG5cbiAgICB0aGlzLmNvbm5lY3RPcHRpb25zID0gb3B0aW9uc1xuICAgIHRoaXMudXVpZCA9IHV1aWQoKVxuICAgIHRoaXMudXNlclV1aWQgPSBvcHRpb25zLnVzZXJVdWlkXG4gICAgdGhpcy5ub3JtYWxpemVkRW1wdHlQYWdlID0gbm9ybWFsaXplRW1wdHlQYWdlT3B0aW9ucyhvcHRpb25zLmVtcHR5UGFnZSlcblxuICAgIGFzc2VydDxIVE1MRWxlbWVudD4oXG4gICAgICBvcHRpb25zLmNvbnRhaW5lcixcbiAgICAgIChpbnB1dCkgPT4gaW5wdXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCxcbiAgICAgIGBjb250YWluZXIgaXMgbm90IGFuIEhUTUxFbGVtZW50OiBcIiR7U3RyaW5nKG9wdGlvbnMuY29udGFpbmVyKX1cImBcbiAgICApXG4gICAgYXNzZXJ0PEhUTUxFbGVtZW50PihcbiAgICAgIG9wdGlvbnMuY29udGFpbmVyLFxuICAgICAgKGlucHV0OiBIVE1MRWxlbWVudCkgPT5cbiAgICAgICAgIVsnaWZyYW1lJywgJ2ZyYW1lJywgJ2VtYmVkJywgJ29iamVjdCddLmluY2x1ZGVzKFxuICAgICAgICAgIGlucHV0LnRhZ05hbWUudG9Mb3dlckNhc2UoKVxuICAgICAgICApLFxuICAgICAgYGludmFsaWQgY29udGFpbmVyIGVsZW1lbnQgdHlwZTogXCIke29wdGlvbnMuY29udGFpbmVyLnRhZ05hbWV9XCLvvIxESVYgYXJlIHJlY29tbWVuZGVkLmBcbiAgICApXG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5lbmRwb2ludCA9IG5ldyBVUkwob3B0aW9ucy5lbmRwb2ludClcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgZW5kcG9pbnQ6IFwiJHtvcHRpb25zLmVuZHBvaW50fVwiYClcbiAgICB9XG4gICAgdGhpcy5zYW1lT3JpZ2luID0gdGhpcy5lbmRwb2ludC5vcmlnaW4gPT09IGdsb2JhbFRoaXMubG9jYXRpb24ub3JpZ2luXG5cbiAgICBpZiAoL1xcL3Nka1xcL3YyXFwvKi9pLnRlc3QodGhpcy5lbmRwb2ludC5wYXRobmFtZSkgPT09IGZhbHNlKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBHZW5lcmFsbHkgdGhlIGVuZHBvaW50IHNob3VsZCBlbmQgd2l0aCBcIi9zZGsvdjJcIiwgcGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBjb3JyZWN0OiBcIiR7dGhpcy5lbmRwb2ludC50b1N0cmluZygpfVwiYFxuICAgICAgKVxuICAgIH1cblxuICAgIHRoaXMuYXBpQWRhcHRvciA9IG9wdGlvbnMuYXBpQWRhcHRvciA/IG9wdGlvbnMuYXBpQWRhcHRvci50b1N0cmluZygpIDogJydcbiAgICB0aGlzLmFwaUFkYXB0b3JDb250ZXh0ID0gb3B0aW9ucy5hcGlBZGFwdG9yQ29udGV4dFxuICAgICAgPyBKU09OLnN0cmluZ2lmeShvcHRpb25zLmFwaUFkYXB0b3JDb250ZXh0KVxuICAgICAgOiAnJ1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc3RhcnRQYXJhbXMgPSBuZXcgU3RhcnRQYXJhbXMoXG4gICAgICAgIG9wdGlvbnMuc21QYXJhbXMgPz9cbiAgICAgICAgICBuZXcgVVJMU2VhcmNoUGFyYW1zKGdsb2JhbFRoaXMubG9jYXRpb24/LnNlYXJjaCkuZ2V0KFNNX1BBUkFNU19LRVkpID8/XG4gICAgICAgICAgJydcbiAgICAgIClcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLnN0YXJ0UGFyYW1zID0gbmV3IFN0YXJ0UGFyYW1zKClcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZGVidWcgPT09ICdib29sZWFuJykge1xuICAgICAgdGhpcy5zdGFydFBhcmFtcy5kZWJ1ZyA9IHRoaXMuY29ubmVjdE9wdGlvbnMuZGVidWdcbiAgICB9XG5cbiAgICB0aGlzLm9uVmlld3BvcnRSZXNpemUgPSAoKSA9PiB7XG4gICAgICA7KGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5jaGFubmVsLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICBldmVudDogU0RLRXZlbnQuVmlld3BvcnRSZXNpemUsXG4gICAgICAgICAgcGF5bG9hZDogdGhpcy5nZXRDb250YWluZXJSZWN0KClcbiAgICAgICAgfSlcbiAgICAgIH0pKCkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICB0aGlzLmVtaXQoXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICBuZXcgRXJyb3IoYEZhaWxlZCB0byBlbWl0IHJlc2l6ZSBldmVudDogJHtTdHJpbmcoZXJyKX1gKVxuICAgICAgICApXG4gICAgICB9KVxuICAgIH1cblxuICAgIHRoaXMuaW5pdENoYW5uZWwoKVxuICAgIHRoaXMuaGVhZGVyQmFycyA9IHRoaXMuaW5pdEhlYWRlckJhcnNGYWNhZGUoKVxuXG4gICAgbGV0IG1lc3NhZ2VFeHBpcmVzID0gb3B0aW9ucy5tZXNzYWdlRXhwaXJlc1xuICAgIGlmICh0eXBlb2YgbWVzc2FnZUV4cGlyZXMgIT09ICdudW1iZXInKSB7XG4gICAgICBtZXNzYWdlRXhwaXJlcyA9IDYwICogNSAqIDEwMDBcbiAgICB9XG4gICAgdGhpcy5tZXNzYWdlRXhwaXJlcyA9IGFzc2VydChcbiAgICAgIG1lc3NhZ2VFeHBpcmVzLFxuICAgICAgKGlucHV0KSA9PiAhaXNOYU4oaW5wdXQpICYmIGlucHV0ID4gMCxcbiAgICAgIGBcIm1lc3NhZ2VFeHBpcmVzXCIgaXMgbm90IGFuIHZhbGlkIG51bWJlcjogXCIke21lc3NhZ2VFeHBpcmVzfVwiYFxuICAgIClcbiAgICB0aGlzLmhhbmRsZWRNZXNzYWdlQ2FjaGUgPSBuZXcgRXhwaXJlU2V0PHN0cmluZz4obWVzc2FnZUV4cGlyZXMpXG5cbiAgICBpZiAoIXRoaXMuc2FtZU9yaWdpbikge1xuICAgICAgLy8g5rOo5YaM5Y+v5Lul5Y+N5rOo5YaM55qE5Ye95pWwXG4gICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyID0gKGV2dDogZ2xvYmFsVGhpcy5NZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgICAgLy8g5bCG5raI5oGv6L2s5YWlIE9mZmljZVNES0Jyb2FkY2FzdENoYW5uZWwg5aSE55CGXG4gICAgICAgIGNvbnN0IGRhdGEgPSBldnQuZGF0YVxuICAgICAgICBpZiAoXG4gICAgICAgICAgaXNPZmZpY2VTREtNZXNzYWdlRXZlbnRMaWtlKGRhdGEpICYmXG4gICAgICAgICAgdGhpcy5zaG91bGRIYW5kbGVNZXNzYWdlKGRhdGEpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuaGFuZGxlZE1lc3NhZ2VDYWNoZS5hZGQoZGF0YS5pZClcbiAgICAgICAgICB0aGlzLmNoYW5uZWxcbiAgICAgICAgICAgIC5kaXN0cmlidXRlTWVzc2FnZShldnQuZGF0YSBhcyBPZmZpY2VTREtNZXNzYWdlRXZlbnQpXG4gICAgICAgICAgICAuY2F0Y2goKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGVycilcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgZmlsZVR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbGVUeXBlXG4gIH1cblxuICBnZXQgcmVhZHlTdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZHlTdGF0ZVxuICB9XG5cbiAgLyoqXG4gICAqIOWIpOaWreW9k+WJjeWunuS+i+aYr+WQpuW6lOivpeWQkSBpZnJhbWUg5pq06ZyyIHNsYXNoTWVudeOAglxuICAgKiDovpPlhaXvvJrml6DvvIzor7vlj5blvZPliY3mlofku7bnsbvlnovkuI4gc3RhcnRQYXJhbXMudHlwZSDmj5DnpLrjgIJcbiAgICog6L6T5Ye677ya5LuF5Zyo5piO56Gu5pivIGRvY3PvvIzmiJblsJrmnKrmi7/liLDmlofku7bnsbvlnovkuJTmsqHmnInmmI7noa7pnZ4gZG9jcyDmj5DnpLrml7bov5Tlm54gdHJ1ZeOAglxuICAgKi9cbiAgcHJpdmF0ZSBzaG91bGRFeHBvc2VTbGFzaE1lbnUoKSB7XG4gICAgaWYgKCF0aGlzLmNvbm5lY3RPcHRpb25zLnNsYXNoTWVudSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZmlsZVR5cGUgPT09IEZpbGVUeXBlLkRvY3VtZW50KSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGlmICh0aGlzLmZpbGVUeXBlICE9PSBGaWxlVHlwZS5Vbmtub3duKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBjb25zdCBoaW50ZWRUeXBlID0gdGhpcy5nZXRTbGFzaE1lbnVUeXBlSGludCgpXG4gICAgaWYgKHR5cGVvZiBoaW50ZWRUeXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gWydkb2MnLCAnZG9jcycsICdkb2N1bWVudCddLmluY2x1ZGVzKGhpbnRlZFR5cGUpXG4gIH1cblxuICAvKipcbiAgICog5LuOIHN0YXJ0UGFyYW1zIOS4reaPkOWPluaWh+S7tuexu+Wei+aPkOekuuOAglxuICAgKiDovpPlhaXvvJrml6DjgIJcbiAgICog6L6T5Ye677ya5qCH5YeG5YyW5ZCO55qEIHR5cGUg5a2X56ym5Liy77yb6Iul5pyq6YWN572u5YiZ6L+U5ZueIHVuZGVmaW5lZOOAglxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTbGFzaE1lbnVUeXBlSGludCgpIHtcbiAgICBjb25zdCB0eXBlID0gKHRoaXMuc3RhcnRQYXJhbXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLnR5cGVcbiAgICBpZiAodHlwZW9mIHR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHR5cGUudHJpbSgpLnRvTG93ZXJDYXNlKClcbiAgICByZXR1cm4gbm9ybWFsaXplZCB8fCB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiDlsIblrr/kuLvkvKDlhaXnmoQgc2xhc2hNZW51IOi9rOaIkOWPr+i3qCBpZnJhbWUg5Lyg6L6T55qE57qv5pWw5o2u57uT5p6E44CCXG4gICAqIOi+k+WFpe+8muW9k+WJjeWunuS+i+S4iueahCBgT2ZmaWNlU0RLT3B0aW9ucy5zbGFzaE1lbnVg44CCXG4gICAqIOi+k+WHuu+8muWOu+mZpOecn+WunuWHveaVsOOAgemZhOW4piBjYWxsYmFja0lkIOeahCBzbGFzaE1lbnUg6YWN572u77yb5LiN6YCC55So5pe26L+U5ZueIHVuZGVmaW5lZOOAglxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVTZXJpYWxpemVkU2xhc2hNZW51KCk6IFNlcmlhbGl6ZWRTbGFzaE1lbnVPcHRpb25zIHwgdW5kZWZpbmVkIHtcbiAgICB0aGlzLnNsYXNoTWVudUNhbGxiYWNrcy5jbGVhcigpXG5cbiAgICBpZiAoIXRoaXMuc2hvdWxkRXhwb3NlU2xhc2hNZW51KCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCB7IHNsYXNoTWVudSB9ID0gdGhpcy5jb25uZWN0T3B0aW9uc1xuICAgIGlmICghc2xhc2hNZW51IHx8ICFBcnJheS5pc0FycmF5KHNsYXNoTWVudS5lbnRyaWVzKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBlbnRyaWVzOiB0aGlzLnNlcmlhbGl6ZVNsYXNoTWVudUl0ZW1zKHNsYXNoTWVudS5lbnRyaWVzLCBbJ2VudHJpZXMnXSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog6YCS5b2S5bqP5YiX5YyWIHNsYXNoTWVudSDoj5zljZXpobnvvIzlubbnmbvorrAgYnV0dG9uIGNhbGxiYWNr44CCXG4gICAqIOi+k+WFpe+8muiPnOWNlemhueaVsOe7hOS4juW9k+WJjemAkuW9kui3r+W+hOOAglxuICAgKiDovpPlh7rvvJrku4XljIXlkKvnu5PmnoTljJblhYvpmoblronlhajlrZfmrrXnmoToj5zljZXpobnmlbDnu4TjgIJcbiAgICovXG4gIHByaXZhdGUgc2VyaWFsaXplU2xhc2hNZW51SXRlbXMoXG4gICAgaXRlbXM6IEFycmF5PFNsYXNoTWVudUVudHJ5IHwgU2xhc2hNZW51QnV0dG9uPixcbiAgICBwYXRoOiBzdHJpbmdbXVxuICApOiBTZXJpYWxpemVkU2xhc2hNZW51SXRlbVtdIHtcbiAgICByZXR1cm4gaXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgbmV4dFBhdGggPSBbLi4ucGF0aCwgYCR7aW5kZXh9YCwgaXRlbS5uYW1lXVxuICAgICAgaWYgKGlzU2xhc2hNZW51RW50cnkoaXRlbSkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgIGNoaWxkcmVuOiBpdGVtLmNoaWxkcmVuXG4gICAgICAgICAgICA/IHRoaXMuc2VyaWFsaXplU2xhc2hNZW51SXRlbXMoaXRlbS5jaGlsZHJlbiwgbmV4dFBhdGgpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNhbGxiYWNrSWQgPSB0aGlzLnJlZ2lzdGVyU2xhc2hNZW51Q2FsbGJhY2sobmV4dFBhdGgsIGl0ZW0uY2FsbGJhY2spXG4gICAgICBjb25zdCBzZXJpYWxpemVkSXRlbTogU2VyaWFsaXplZFNsYXNoTWVudUJ1dHRvbiA9IHtcbiAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxuICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXG4gICAgICAgIGRpc2FibGVkOiBpdGVtLmRpc2FibGVkLFxuICAgICAgICBsYWJlbDogaXRlbS5sYWJlbCxcbiAgICAgICAgaWNvbjogaXRlbS5pY29uXG4gICAgICB9XG5cbiAgICAgIGlmIChjYWxsYmFja0lkKSB7XG4gICAgICAgIHNlcmlhbGl6ZWRJdGVtLmNhbGxiYWNrSWQgPSBjYWxsYmFja0lkXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzZXJpYWxpemVkSXRlbVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICog5Li6IHNsYXNoTWVudSBidXR0b24gY2FsbGJhY2sg55Sf5oiQ56iz5a6aIGlkIOW5tuazqOWGjOWIsOWGheWtmOihqOOAglxuICAgKiDovpPlhaXvvJroj5zljZXot6/lvoTkuI7lj6/pgIkgY2FsbGJhY2vjgIJcbiAgICog6L6T5Ye677ya5rOo5YaM5ZCO55qEIGNhbGxiYWNrSWTvvJvoi6XmnKrmj5DkvpsgY2FsbGJhY2sg5YiZ6L+U5ZueIHVuZGVmaW5lZOOAglxuICAgKi9cbiAgcHJpdmF0ZSByZWdpc3RlclNsYXNoTWVudUNhbGxiYWNrKHBhdGg6IHN0cmluZ1tdLCBjYWxsYmFjaz86ICgpID0+IHZvaWQpIHtcbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgY2FsbGJhY2tJZCA9IGBzbGFzaC1tZW51OiR7cGF0aC5qb2luKCc6Jyl9YFxuICAgIHRoaXMuc2xhc2hNZW51Q2FsbGJhY2tzLnNldChjYWxsYmFja0lkLCBjYWxsYmFjaylcbiAgICByZXR1cm4gY2FsbGJhY2tJZFxuICB9XG5cbiAgZ2V0RWRpdG9yPFxuICAgIFQgZXh0ZW5kc1xuICAgICAgfCBCYXNlRWRpdG9yXG4gICAgICB8IERvY3VtZW50LkVkaXRvclxuICAgICAgfCBEb2N1bWVudFByby5FZGl0b3JcbiAgICAgIHwgUHJlc2VudGF0aW9uLkVkaXRvclxuICAgICAgfCBTcHJlYWRzaGVldC5FZGl0b3JcbiAgICAgIHwgRm9ybS5FZGl0b3JcbiAgICAgIHwgRmxvd2NoYXJ0LkVkaXRvclxuICAgICAgfCBUYWJsZS5FZGl0b3IgPSBCYXNlRWRpdG9yXG4gID4oKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yIGFzIFRcbiAgfVxuXG4gIC8qKlxuICAgKiDmm7TmlrDpibTmnYMgc2lnbmF0dXJlIOWSjCB0b2tlblxuICAgKiBAZGVwcmVjYXRlZCAtIOeUqCBgT2ZmaWNlU0RLT3B0aW9ucy5nZXRDcmVkZW50aWFscygpYCDmm7/ku6NcbiAgICovXG4gIGFzeW5jIHNldENyZWRlbnRpYWxzKHBheWxvYWQ6IHsgc2lnbmF0dXJlOiBzdHJpbmc7IHRva2VuOiBzdHJpbmcgfSkge1xuICAgIGF3YWl0IHRoaXMuY2hhbm5lbC5pbnZva2UoSW52b2tlTWV0aG9kLlNldENyZWRlbnRpYWxzLCBbcGF5bG9hZF0sIHtcbiAgICAgIGF1ZGllbmNlOiBBVURcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIOiuvue9ruefs+WiqOeahOmJtOadgyBzaWduYXR1cmXjgILnlKjkuo7lrp7ml7bmm7TmlrDpibTmnYPkv6Hmga/vvIzkvJjljJbnlKjmiLflh7rnjrDlm6Dplb/ml7bpl7TmlL7nva7vvIzpibTmnYPlpLHotKXogIzlvJXotbfnmoTkvZPpqozpl67popjjgIJcbiAgICogQGRlcHJlY2F0ZWQgLSDnlKggYHNkay5zZXRDcmVkZW50aWFscygpYCDmm7/ku6NcbiAgICovXG4gIGFzeW5jIHNldFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZykge1xuICAgIGF3YWl0IHRoaXMuY2hhbm5lbC5pbnZva2UoSW52b2tlTWV0aG9kLlNldENyZWRlbnRpYWxzLCBbeyBzaWduYXR1cmUgfV0sIHtcbiAgICAgIGF1ZGllbmNlOiBBVURcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIOiuvue9ruaCqOezu+e7n+eahOmJtOadgyB0b2tlbuOAgueUqOS6juWunuaXtuabtOaWsOmJtOadg+S/oeaBr++8jOS8mOWMlueUqOaIt+WHuueOsOWboOmVv+aXtumXtOaUvue9ru+8jOmJtOadg+Wksei0peiAjOW8lei1t+eahOS9k+mqjOmXrumimOOAglxuICAgKiBAZGVwcmVjYXRlZCAtIOeUqCBgc2RrLnNldENyZWRlbnRpYWxzKClgIOabv+S7o1xuICAgKi9cbiAgYXN5bmMgc2V0VG9rZW4odG9rZW46IHN0cmluZykge1xuICAgIGF3YWl0IHRoaXMuY2hhbm5lbC5pbnZva2UoSW52b2tlTWV0aG9kLlNldENyZWRlbnRpYWxzLCBbeyB0b2tlbiB9XSwge1xuICAgICAgYXVkaWVuY2U6IEFVRFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5oCn6IO95L+h5oGv54mH5q615YiX6KGo77yM55Sx5LqO5oCn6IO95qCH6K6w5piv5YiG5q6155qE44CB5byC5q2l55qE77yM5Zug5q2k5q+P5qyh6LCD55So5pe26I635Y+W55qE5YiX6KGo5pyJ5Y+v6IO95LiN5LiA6Ie0XG4gICAqL1xuICBhc3luYyBnZXRQZXJmb3JtYW5jZUVudHJpZXMoKTogUHJvbWlzZTxQZXJmb3JtYW5jZUVudHJ5W10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jaGFubmVsLmludm9rZShcbiAgICAgIEludm9rZU1ldGhvZC5SZXF1ZXN0UGVyZm9ybWFuY2VFbnRyaWVzLFxuICAgICAgW10sXG4gICAgICB7XG4gICAgICAgIGF1ZGllbmNlOiBBVURcbiAgICAgIH1cbiAgICApXG4gIH1cblxuICBkaXNjb25uZWN0KCkge1xuICAgIHRoaXMuc2xhc2hNZW51Q2FsbGJhY2tzLmNsZWFyKClcbiAgICB0aGlzLmVkaXRvckZhY2FkZUNhbGxiYWNrcy5jbGVhcigpXG4gICAgaWYgKHRoaXMuZWxlbWVudD8ucGFyZW50RWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICB0aGlzLmVsZW1lbnQucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnQpXG4gICAgfVxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgdGhpcy5tZXNzYWdlSGFuZGxlcilcbiAgICBpZiAod2luZG93LnZpc3VhbFZpZXdwb3J0KSB7XG4gICAgICB3aW5kb3cudmlzdWFsVmlld3BvcnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vblZpZXdwb3J0UmVzaXplKVxuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vblZpZXdwb3J0UmVzaXplKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDliJ3lp4vljJYgU0RL77yM6L+U5ZueIFByb21pc2XvvIzlvZMgUmVhZFN0YXRlIOWPmOS4uiBSZWFkeSDmiJYgRmFpbGVkIOaXtu+8jFByb21pc2Ug5bCG6KKrIHJlc29sdmXjgIJcbiAgICogUHJvbWlzZSByZXNvdmxlZCDkuI3ku6PooajnvJbovpHlmajlt7Lnu4/lrozmlbTliqDovb3lrozmr5XvvIzlj6rku6PooaggU0RLIOW3sue7j+WHhuWkh+WlveS6huOAglxuICAgKiDlkIzml7YgUHJvbWlzZSDkuIDnm7QgcGVuZGluZyDkuZ/kuI3ku6PooajnvJbovpHlmajliqDovb3lpLHotKXvvIzlj6rku6Pooajml6Dms5XpgJrov4cgU0RLIOWSjOe8lui+keWZqOS6pOS6kuOAglxuICAgKiDmr5TlpoLlj5fmtY/op4jlmajpmZDliLbml6Dms5Xlj5Hlh7ogcG9zdE1lc3NhZ2UoKSDml7bvvIxQcm9taXNlIOWwhuS8muS4gOebtCBwZW5kaW5n44CCXG4gICAqL1xuICBhc3luYyBpbml0KCkge1xuICAgIGlmICh0aGlzLl9yZWFkeVN0YXRlICE9PSBSZWFkeVN0YXRlLkxvYWRpbmcpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuX3JlYWR5U3RhdGUgPSBSZWFkeVN0YXRlLkxvYWRpbmdFZGl0b3JcblxuICAgIGlmICghdGhpcy5zYW1lT3JpZ2luKSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMubWVzc2FnZUhhbmRsZXIpXG4gICAgfVxuXG4gICAgdGhpcy5lbGVtZW50ID0gYXdhaXQgdGhpcy5pbml0SWZyYW1lKClcblxuICAgIHRoaXMuY29ubmVjdE9wdGlvbnMuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudClcbiAgICBhd2FpdCB0aGlzLnJ1blByZWxvYWRIYW5kc2hha2UoKVxuXG4gICAgdGhpcy5lZGl0b3IgPSB0aGlzLmluaXRFZGl0b3IoKVxuXG4gICAgLyoqXG4gICAgICog562J5b6F57yW6L6R5ZmoIFJlYWR5U3RhdGUg5Y+Y5YyW5Zue6LCDXG4gICAgICovXG4gICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgbGV0IGRvbmUgPSBmYWxzZVxuICAgICAgY29uc3QgcmVhZHlTdGF0ZUhhbmRsZXIgPSAocGF5bG9hZDogUmVhZHlTdGF0ZUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RhdGUsIGVycm9yLCBmaWxlVHlwZSB9ID0gcGF5bG9hZFxuXG4gICAgICAgIHRoaXMuX3JlYWR5U3RhdGUgPSBzdGF0ZVxuXG4gICAgICAgIGlmIChmaWxlVHlwZSAmJiB0aGlzLl9maWxlVHlwZSA9PT0gRmlsZVR5cGUuVW5rbm93bikge1xuICAgICAgICAgIHRoaXMuX2ZpbGVUeXBlID0gZmlsZVR5cGVcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIGRvbmUgPSB0cnVlXG4gICAgICAgICAgcmVqZWN0KHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycgPyBuZXcgRXJyb3IoZXJyb3IpIDogZXJyb3IpXG4gICAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09IFJlYWR5U3RhdGUuUmVhZHkpIHtcbiAgICAgICAgICBkb25lID0gdHJ1ZVxuICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICB0aGlzLm9mZihFdmVudC5SZWFkeVN0YXRlLCByZWFkeVN0YXRlSGFuZGxlcilcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLm9uKEV2ZW50LlJlYWR5U3RhdGUsIHJlYWR5U3RhdGVIYW5kbGVyKVxuICAgIH0pXG5cbiAgICBzd2l0Y2ggKHRoaXMuZmlsZVR5cGUpIHtcbiAgICAgIGNhc2UgRmlsZVR5cGUuRG9jdW1lbnQ6XG4gICAgICAgIHRoaXMuZG9jdW1lbnQgPSB0aGlzLmVkaXRvciBhcyBEb2N1bWVudC5FZGl0b3JcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgRmlsZVR5cGUuRG9jdW1lbnRQcm86XG4gICAgICAgIHRoaXMuZG9jdW1lbnRQcm8gPSB0aGlzLmVkaXRvciBhcyBEb2N1bWVudFByby5FZGl0b3JcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgRmlsZVR5cGUuU3ByZWFkc2hlZXQ6XG4gICAgICAgIHRoaXMuc3ByZWFkc2hlZXQgPSB0aGlzLmVkaXRvciBhcyBTcHJlYWRzaGVldC5FZGl0b3JcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgRmlsZVR5cGUuVGFibGU6XG4gICAgICAgIHRoaXMudGFibGUgPSB0aGlzLmVkaXRvciBhcyBUYWJsZS5FZGl0b3JcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgRmlsZVR5cGUuRm9ybTpcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5lZGl0b3IgYXMgRm9ybS5FZGl0b3JcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgRmlsZVR5cGUuRmxvd2NoYXJ0OlxuICAgICAgICB0aGlzLmZsb3djaGFydCA9IHRoaXMuZWRpdG9yIGFzIEZsb3djaGFydC5FZGl0b3JcbiAgICB9XG5cbiAgICB0aGlzLmluc3RhbGxSb290RmFjYWRlKClcbiAgfVxuXG4gIC8qKlxuICAgKiDnrYnlvoUgU0RLIOi/m+WFpSBSZWFkeSDnirbmgIHjgILoi6Xlt7IgcmVhZHnvvIzliJnnm7TmjqXov5Tlm57jgIJcbiAgICovXG4gIGFzeW5jIHJlYWR5KCkge1xuICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT09IFJlYWR5U3RhdGUuUmVhZHkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBhd2FpdCB0aGlzLmluaXQoKVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBpbml0SWZyYW1lKCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmNvbm5lY3RPcHRpb25zXG5cbiAgICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKVxuICAgIGlmcmFtZS5zdHlsZS5ib3JkZXIgPSAnbm9uZSdcbiAgICBpZnJhbWUuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJ1xuICAgIGlmcmFtZS5zdHlsZS53aWR0aCA9ICcxMDAlJ1xuICAgIGlmcmFtZS5zdHlsZS5oZWlnaHQgPSAnMTAwJSdcbiAgICAvLyDop6PlhrPpobXpnaLlh7rnjrDmu5rliqjmnaEgJiDpobbpg6jooqvmiKrmlq3nmoTpl67pophcbiAgICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdibG9jaydcblxuICAgIGlmICgnYWxsb3cnIGluIGlmcmFtZSkge1xuICAgICAgaWZyYW1lLmFsbG93ID1cbiAgICAgICAgdGhpcy5jb25uZWN0T3B0aW9ucy5hbGxvd1BvbGljeSA/P1xuICAgICAgICAnZnVsbHNjcmVlbiAqO2NsaXBib2FyZC1yZWFkICo7Y2xpcGJvYXJkLXdyaXRlICo7J1xuICAgIH0gZWxzZSB7XG4gICAgICA7KGlmcmFtZSBhcyBhbnkpLmFsbG93RnVsbHNjcmVlbiA9IHRydWVcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmVuZHBvaW50XG4gICAgdXJsLnBhdGhuYW1lID0gYCR7dXJsLnBhdGhuYW1lfS9hcGkvJHthc3NlcnQ8c3RyaW5nPihcbiAgICAgIG9wdGlvbnMuZmlsZUlkLFxuICAgICAgbm90RW1wdHlTdHJpbmcsXG4gICAgICBgXCJmaWxlSWRcIiBpcyBtaXNzaW5nIG9yIGVtcHR5OiAke29wdGlvbnMuZmlsZUlkfWBcbiAgICApfS9wcmVsb2FkYC5yZXBsYWNlKC9cXC8rL2csICcvJylcblxuICAgIGNvbnN0IHBhcmFtcyA9IG9wdGlvbnMucGFyYW1zXG4gICAgaWYgKHBhcmFtcykge1xuICAgICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoa2V5LCBwYXJhbXNba2V5XSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmRldmljZU1vZGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnZGV2aWNlTW9kZScsIG9wdGlvbnMuZGV2aWNlTW9kZS50cmltKCkpXG4gICAgfVxuXG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoU01fUEFSQU1TX0tFWSwgdGhpcy5zdGFydFBhcmFtcy50b1N0cmluZygpKVxuXG4gICAgaWYgKG9wdGlvbnMuc2hvd0xvYWRpbmdFZmZlY3QgfHwgb3B0aW9ucy5zaG93TG9hZGluZykge1xuICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2xvYWRpbmdFZmZlY3QnLCAndHJ1ZScpXG4gICAgICBpZiAob3B0aW9ucy5sb2FkaW5nT3B0aW9ucykge1xuICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldChcbiAgICAgICAgICBMT0FESU5HX09QVElPTlNfS0VZLFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG9wdGlvbnMubG9hZGluZ09wdGlvbnMpXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyDorr7nva7lvZPliY3nvJbovpHlmajor63oqIBcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMubGFuZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRMYW5nID0gbm9ybWFsaXplTGFuZ3VhZ2Uob3B0aW9ucy5sYW5nKVxuICAgICAgaWYgKG5vcm1hbGl6ZWRMYW5nKSB7XG4gICAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdsYW5nJywgbm9ybWFsaXplZExhbmcpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2pzdmVyJywgcHJvY2Vzcy5lbnYuVkVSU0lPTiA/PyAnJylcblxuICAgIGFzc2VydDxzdHJpbmc+KFxuICAgICAgb3B0aW9ucy50b2tlbixcbiAgICAgIG5vdEVtcHR5U3RyaW5nLFxuICAgICAgYFwidG9rZW5cIiBpcyBtaXNzaW5nIG9yIGVtcHR5OiBcIiR7b3B0aW9ucy50b2tlbn1cImBcbiAgICApXG5cbiAgICBhc3NlcnQ8c3RyaW5nPihcbiAgICAgIG9wdGlvbnMuc2lnbmF0dXJlLFxuICAgICAgbm90RW1wdHlTdHJpbmcsXG4gICAgICBgXCJzaWduYXR1cmVcIiBpcyBtaXNzaW5nIG9yIGVtcHR5OiBcIiR7b3B0aW9ucy5zaWduYXR1cmV9XCJgXG4gICAgKVxuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCd1dWlkJywgdGhpcy51dWlkKVxuICAgIHRoaXMudXNlclV1aWQgJiYgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3VzZXJVdWlkJywgdGhpcy51c2VyVXVpZClcblxuICAgIGlmcmFtZS5zcmMgPSB1cmwudG9TdHJpbmcoKVxuXG4gICAgcmV0dXJuIGlmcmFtZVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBydW5QcmVsb2FkSGFuZHNoYWtlKCkge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5jb25uZWN0T3B0aW9ucy50b2tlblxuICAgIGNvbnN0IHNpZ25hdHVyZSA9IHRoaXMuY29ubmVjdE9wdGlvbnMuc2lnbmF0dXJlXG4gICAgY29uc3QgZmlsZUd1aWQgPSB0aGlzLmNvbm5lY3RPcHRpb25zLmZpbGVJZFxuICAgIGNvbnN0IHJlcXVlc3RJZCA9IHV1aWQoKVxuXG4gICAgdHlwZSBQcmVsb2FkTWVzc2FnZSA9IHtcbiAgICAgIHR5cGU/OiBzdHJpbmdcbiAgICAgIHJlcXVlc3RJZD86IHN0cmluZ1xuICAgICAgcGF5bG9hZD86IHtcbiAgICAgICAgdG9rZW4/OiBzdHJpbmdcbiAgICAgICAgc2lnbmF0dXJlPzogc3RyaW5nXG4gICAgICAgIGZpbGVHdWlkPzogc3RyaW5nXG4gICAgICAgIG1vZGU/OiAnZWRpdCcgfCAncHJldmlldydcbiAgICAgIH1cbiAgICAgIGVycm9yPzoge1xuICAgICAgICBjb2RlPzogc3RyaW5nXG4gICAgICAgIG1lc3NhZ2U/OiBzdHJpbmdcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcmVhZHlSZXNvbHZlZCA9IGZhbHNlXG4gICAgbGV0IGFja1Jlc29sdmVkID0gZmFsc2VcbiAgICBsZXQgZG9uZVJlc29sdmVkID0gZmFsc2VcbiAgICBsZXQgYWNrVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGxcbiAgICBsZXQgZG9uZVRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsXG5cbiAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBjbGVhbnVwID0gKCkgPT4ge1xuICAgICAgICBpZiAoYWNrVGltZXIpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQoYWNrVGltZXIpXG4gICAgICAgICAgYWNrVGltZXIgPSBudWxsXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvbmVUaW1lcikge1xuICAgICAgICAgIGNsZWFyVGltZW91dChkb25lVGltZXIpXG4gICAgICAgICAgZG9uZVRpbWVyID0gbnVsbFxuICAgICAgICB9XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgaGFuZGxlTWVzc2FnZSlcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2VuZEluaXQgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuZWxlbWVudD8uY29udGVudFdpbmRvdz8ucG9zdE1lc3NhZ2UoXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogUFJFTE9BRF9NRVNTQUdFX1RZUEUuSU5JVCxcbiAgICAgICAgICAgIHJlcXVlc3RJZCxcbiAgICAgICAgICAgIHRzOiBEYXRlLm5vdygpLFxuICAgICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgICB0b2tlbixcbiAgICAgICAgICAgICAgc2lnbmF0dXJlLFxuICAgICAgICAgICAgICBmaWxlR3VpZCxcbiAgICAgICAgICAgICAgbW9kZTogdGhpcy5jb25uZWN0T3B0aW9ucy5tb2RlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAnKidcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBoYW5kbGVNZXNzYWdlID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IGV2ZW50LmRhdGEgYXMgUHJlbG9hZE1lc3NhZ2VcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFkYXRhIHx8XG4gICAgICAgICAgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnIHx8XG4gICAgICAgICAgdHlwZW9mIGRhdGEudHlwZSAhPT0gJ3N0cmluZydcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGF0YS50eXBlID09PSBQUkVMT0FEX01FU1NBR0VfVFlQRS5SRUFEWSAmJiAhcmVhZHlSZXNvbHZlZCkge1xuICAgICAgICAgIHJlYWR5UmVzb2x2ZWQgPSB0cnVlXG4gICAgICAgICAgc2VuZEluaXQoKVxuICAgICAgICAgIGFja1RpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBzZW5kSW5pdCgpXG4gICAgICAgICAgICBkb25lVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgY2xlYW51cCgpXG4gICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ3ByZWxvYWQgaW5pdCB0aW1lb3V0JykpXG4gICAgICAgICAgICB9LCB0aGlzLnByZWxvYWREb25lVGltZW91dE1zKVxuICAgICAgICAgIH0sIHRoaXMucHJlbG9hZEFja1RpbWVvdXRNcylcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkYXRhLnJlcXVlc3RJZCAhPT0gcmVxdWVzdElkKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGF0YS50eXBlID09PSBQUkVMT0FEX01FU1NBR0VfVFlQRS5BQ0spIHtcbiAgICAgICAgICBhY2tSZXNvbHZlZCA9IHRydWVcbiAgICAgICAgICBpZiAoYWNrVGltZXIpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChhY2tUaW1lcilcbiAgICAgICAgICAgIGFja1RpbWVyID0gbnVsbFxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIWRvbmVUaW1lcikge1xuICAgICAgICAgICAgZG9uZVRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIGNsZWFudXAoKVxuICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdwcmVsb2FkIGRvbmUgdGltZW91dCcpKVxuICAgICAgICAgICAgfSwgdGhpcy5wcmVsb2FkRG9uZVRpbWVvdXRNcylcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGF0YS50eXBlID09PSBQUkVMT0FEX01FU1NBR0VfVFlQRS5ET05FKSB7XG4gICAgICAgICAgZG9uZVJlc29sdmVkID0gdHJ1ZVxuICAgICAgICAgIGNsZWFudXAoKVxuICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRhdGEudHlwZSA9PT0gUFJFTE9BRF9NRVNTQUdFX1RZUEUuRVJST1IpIHtcbiAgICAgICAgICBjbGVhbnVwKClcbiAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGRhdGEuZXJyb3I/Lm1lc3NhZ2UgfHwgZGF0YS5lcnJvcj8uY29kZSB8fCAncHJlbG9hZCBpbml0IGZhaWxlZCdcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBoYW5kbGVNZXNzYWdlKVxuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKCFyZWFkeVJlc29sdmVkICYmICFhY2tSZXNvbHZlZCAmJiAhZG9uZVJlc29sdmVkKSB7XG4gICAgICAgICAgY2xlYW51cCgpXG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcigncHJlbG9hZCByZWFkeSB0aW1lb3V0JykpXG4gICAgICAgIH1cbiAgICAgIH0sIHRoaXMucHJlbG9hZFJlYWR5VGltZW91dE1zKVxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIGluaXRDaGFubmVsKCkge1xuICAgIGNvbnN0IGNoYW5uZWwgPSAodGhpcy5jaGFubmVsID0gbmV3IE9mZmljZVNES0Jyb2FkY2FzdENoYW5uZWwoe1xuICAgICAgY2hhbm5lbElkOiB0aGlzLnN0YXJ0UGFyYW1zLmNoYW5uZWxJZCxcbiAgICAgIGRlYnVnOiB0aGlzLmNvbm5lY3RPcHRpb25zLmRlYnVnLFxuICAgICAgYXV0b1N0cnVjdHVyZWRDbG9uZTogdHJ1ZSxcbiAgICAgIGRlYnVnTmFtZXNwYWNlOiAnU01fU0RLX0NIQU4nXG4gICAgfSkpXG5cbiAgICBpZiAoIXRoaXMuc3RhcnRQYXJhbXMuY2hhbm5lbElkKSB7XG4gICAgICB0aGlzLnN0YXJ0UGFyYW1zLmNoYW5uZWxJZCA9IGNoYW5uZWwuaWRcbiAgICB9XG5cbiAgICBjaGFubmVsLm9uKCdlcnJvcicsIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyKVxuICAgIH0pXG5cbiAgICBjaGFubmVsLm9uKCdtZXNzYWdlRXJyb3InLCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGVycilcbiAgICB9KVxuXG4gICAgLyoqXG4gICAgICog6Z2eIHNhbWUgb3JpZ2luIOaXtu+8jOeUqOS4jeS6hiBicm9hZGNhc3QgY2hhbm5lbO+8jOmcgOimgeWcqCBwb3N0TWVzc2FnZSDml7bvvIzlsIbmtojmga/ovazliLAgaWZyYW1lXG4gICAgICovXG4gICAgaWYgKCF0aGlzLnNhbWVPcmlnaW4pIHtcbiAgICAgIGNoYW5uZWwub24oXG4gICAgICAgICdwb3N0TWVzc2FnZScsXG4gICAgICAgIChldnQ6IE9mZmljZVNES01lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgICAgIHRoaXMuZWxlbWVudD8uY29udGVudFdpbmRvdz8ucG9zdE1lc3NhZ2UoZXZ0LCAnKicpXG4gICAgICAgIH0sXG4gICAgICAgIHsgYXVkaWVuY2U6ICcqJyB9XG4gICAgICApXG4gICAgfVxuXG4gICAgY2hhbm5lbC5vbihcbiAgICAgICdtZXNzYWdlJyxcbiAgICAgIChtc2c6IE9mZmljZVNES01lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0gbXNnLmRhdGEgYXMgYW55XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDnm5HlkKwgUmVhZHlTdGF0ZSDlj5jmm7RcbiAgICAgICAgICovXG4gICAgICAgIGlmIChkYXRhPy5ldmVudCA9PT0gSW52b2tlTWV0aG9kLlJlYWR5U3RhdGUpIHtcbiAgICAgICAgICB0aGlzLmVtaXQoRXZlbnQuUmVhZHlTdGF0ZSwgZGF0YS5wYXlsb2FkKVxuICAgICAgICB9IGVsc2UgaWYgKGRhdGE/LmV2ZW50ID09PSBFRElUT1JfUkVOREVSRURfRVZFTlQpIHtcbiAgICAgICAgICB0aGlzLmVtaXQoRXZlbnQuRWRpdG9yUmVuZGVyZWQsIGRhdGEucGF5bG9hZClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYXVkaWVuY2U6IEFVRCB9XG4gICAgKVxuXG4gICAgLyoqXG4gICAgICog5aSE55CG6ZSZ6K+v5LqL5Lu2XG4gICAgICovXG4gICAgY2hhbm5lbC5hZGRJbnZva2VIYW5kbGVyKFxuICAgICAgSW52b2tlTWV0aG9kLkVycm9yLFxuICAgICAgKHBheWxvYWQ6IHVua25vd24pID0+IHtcbiAgICAgICAgdGhpcy5lbWl0KEV2ZW50LkVycm9yLCBwYXlsb2FkKVxuICAgICAgfSxcbiAgICAgIHsgYXVkaWVuY2U6IEFVRCB9XG4gICAgKVxuXG4gICAgLyoqXG4gICAgICog5Yid5aeL5YyW57yW6L6R5Zmo77yM6K+35rGC6YWN572uXG4gICAgICovXG4gICAgY2hhbm5lbC5hZGRJbnZva2VIYW5kbGVyKFxuICAgICAgSW52b2tlTWV0aG9kLlNES0luaXQsXG4gICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge31cblxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmNvbm5lY3RPcHRpb25zKS5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgICAgaWYgKGsgPT09ICdzbGFzaE1lbnUnKSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgdiA9IHRoaXMuY29ubmVjdE9wdGlvbnNbayBhcyBrZXlvZiB0eXBlb2YgdGhpcy5jb25uZWN0T3B0aW9uc11cbiAgICAgICAgICBvcHRzW2tdID0gdlxuICAgICAgICAgIC8vIOWHveaVsOeUqCBib29sZWFuIOagh+iusOacieiuvue9ruWAvFxuICAgICAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgb3B0c1tgaGFzJHtrWzBdLnRvVXBwZXJDYXNlKCl9JHtrLnNsaWNlKDEpfWBdID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCBzbGFzaE1lbnUgPSB0aGlzLmNyZWF0ZVNlcmlhbGl6ZWRTbGFzaE1lbnUoKVxuICAgICAgICBpZiAoc2xhc2hNZW51KSB7XG4gICAgICAgICAgb3B0cy5zbGFzaE1lbnUgPSBzbGFzaE1lbnVcbiAgICAgICAgfVxuXG4gICAgICAgIG9wdHMuYXBpQWRhcHRvciA9IHRoaXMuYXBpQWRhcHRvclxuICAgICAgICBvcHRzLmFwaUFkYXB0b3JDb250ZXh0ID0gdGhpcy5hcGlBZGFwdG9yQ29udGV4dFxuICAgICAgICAvLyDlvZLkuIDljJblkI7nmoTnvLrnnIHpobXphY3nva7jgIJpZnJhbWUg5L6n77yIbGl6YXJkLXNlcnZpY2UtaWZyYW1lLXNka++8ieebtOaOpea2iOi0ue+8jFxuICAgICAgICAvLyDkuI3pnIDopoHlho0gZmFsbGJhY2sg6buY6K6k5YC844CC5pyq5p2l5aaC6ZyA5omp5bGV5a2X5q6177yM5ZyoIG5vcm1hbGl6ZUVtcHR5UGFnZU9wdGlvbnMg5YaF57uf5LiA5aSE55CG44CCXG4gICAgICAgIG9wdHMuZW1wdHlQYWdlID0gdGhpcy5ub3JtYWxpemVkRW1wdHlQYWdlXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICAgIHV1aWQ6IHRoaXMudXVpZFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhdWRpZW5jZTogQVVEIH1cbiAgICApXG5cbiAgICAvKipcbiAgICAgKiDnm5HlkKwgU0RLIOebuOWFs+eahOS6i+S7tu+8jOWwhuS6i+S7tui9rOWFpSBTREsg5LqL5Lu255uR5ZCs5ZmoXG4gICAgICovXG4gICAgY2hhbm5lbC5hZGRJbnZva2VIYW5kbGVyKFxuICAgICAgSW52b2tlTWV0aG9kLkRpc3BhdGNoU0RLRXZlbnQsXG4gICAgICBhc3luYyAoZXZlbnQ6IHN0cmluZywgYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgICAgIGlmIChldmVudCA9PT0gSEVBREVSX0JBUlNfQ0hBTkdFRF9FVkVOVCkge1xuICAgICAgICAgIHRoaXMuYXBwbHlIZWFkZXJCYXJzQ2hhbmdlZChhcmdzWzBdIGFzIEhlYWRlckJhcnNDaGFuZ2VkUGF5bG9hZClcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVtaXQoZXZlbnQsIC4uLmFyZ3MpXG4gICAgICB9LFxuICAgICAgeyBhdWRpZW5jZTogQVVEIH1cbiAgICApXG5cbiAgICBjaGFubmVsLmFkZEludm9rZUhhbmRsZXIoXG4gICAgICBIRUFERVJfQkFSU19NRVRIT0QuaGFuZGxlQ29tbWFuZENsaWNrLFxuICAgICAgYXN5bmMgKGlkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgaGFuZGxlciA9IHRoaXMuaGVhZGVyQmFyc0NvbW1hbmRPdmVycmlkZXMuZ2V0KGlkKVxuICAgICAgICBpZiAodHlwZW9mIGhhbmRsZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBoYW5kbGVyKClcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH0sXG4gICAgICB7IGF1ZGllbmNlOiBBVUQgfVxuICAgIClcblxuICAgIGNoYW5uZWwuYWRkSW52b2tlSGFuZGxlcihcbiAgICAgIFNMQVNIX01FTlVfTUVUSE9ELmhhbmRsZUJ1dHRvbkNsaWNrLFxuICAgICAgYXN5bmMgKGNhbGxiYWNrSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBoYW5kbGVyID0gdGhpcy5zbGFzaE1lbnVDYWxsYmFja3MuZ2V0KGNhbGxiYWNrSWQpXG4gICAgICAgIGlmICh0eXBlb2YgaGFuZGxlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFtzbGFzaE1lbnVdIGNhbGxiYWNrIG5vdCBmb3VuZDogJHtTdHJpbmcoY2FsbGJhY2tJZCl9YClcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoaGFuZGxlcigpKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSxcbiAgICAgIHsgYXVkaWVuY2U6IEFVRCB9XG4gICAgKVxuXG4gICAgY2hhbm5lbC5hZGRJbnZva2VIYW5kbGVyKFxuICAgICAgRURJVE9SX0ZBQ0FERV9DQUxMQkFDS19NRVRIT0QsXG4gICAgICBhc3luYyAoY2FsbGJhY2tJZDogc3RyaW5nLCBhcmdzOiB1bmtub3duW10gPSBbXSkgPT4ge1xuICAgICAgICBjb25zdCBoYW5kbGVyID0gdGhpcy5lZGl0b3JGYWNhZGVDYWxsYmFja3MuZ2V0KGNhbGxiYWNrSWQpXG4gICAgICAgIGlmICh0eXBlb2YgaGFuZGxlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBgW2VkaXRvckZhY2FkZV0gY2FsbGJhY2sgbm90IGZvdW5kOiAke1N0cmluZyhjYWxsYmFja0lkKX1gXG4gICAgICAgICAgKVxuICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKGhhbmRsZXIoLi4uYXJncykpXG4gICAgICB9LFxuICAgICAgeyBhdWRpZW5jZTogQVVEIH1cbiAgICApXG5cbiAgICAvKipcbiAgICAgKiDnm5HlkKznvJbovpHlmajnm7jlhbPnmoTkuovku7bvvIzlsIbkuovku7bovazlhaXnvJbovpHlmajkuovku7bnm5HlkKzlmahcbiAgICAgKi9cbiAgICBjaGFubmVsLmFkZEludm9rZUhhbmRsZXIoXG4gICAgICBJbnZva2VNZXRob2QuRGlzcGF0Y2hFZGl0b3JFdmVudCxcbiAgICAgIGFzeW5jIChldmVudDogc3RyaW5nLCBwYXlsb2FkOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGlmIChldmVudCA9PT0gJ2NvbGxhYm9yYXRvcnNDaGFuZ2VkJykge1xuICAgICAgICAgIHRoaXMudXBkYXRlQ29sbGFib3JhdG9ycyhwYXlsb2FkKVxuICAgICAgICB9XG4gICAgICAgIC8vIOe8uuecgemhteS6i+S7tuaYryBTREsg57qn5LqL5Lu277yM5Y2z5L2/6LWw5LqGIGVkaXRvciDpgJrpgZPkuZ/nm7TmjqXlpJbmipvliLAgU0RLIOWunuS+i++8jFxuICAgICAgICAvLyDmlrnkvr/lrr/kuLvpgJrov4cgYHNkay5vbignZW1wdHlQYWdlU2hvd24nLCAuLi4pYCDorqLpmIXjgIJcbiAgICAgICAgLy8g5ZCM5pe25LuN5L+d55WZIGVtaXR0ZXIuZW1pdO+8jOmBv+WFjeegtOWdjyBlZGl0b3Iub24g55qE6K6i6ZiF6Lev5b6E44CCXG4gICAgICAgIGlmIChpc0VtcHR5UGFnZUV2ZW50KGV2ZW50KSkge1xuICAgICAgICAgIHRoaXMuZW1pdChldmVudCwgcGF5bG9hZClcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVtaXR0ZXIuZW1pdChldmVudCwgcGF5bG9hZClcbiAgICAgIH0sXG4gICAgICB7IGF1ZGllbmNlOiBBVUQgfVxuICAgIClcblxuICAgIHRoaXMuYmluZENvbnRhaW5lck1ldGhvZEhhbmRsZXJzKClcblxuICAgIGlmICh3aW5kb3cudmlzdWFsVmlld3BvcnQpIHtcbiAgICAgIHdpbmRvdy52aXN1YWxWaWV3cG9ydC5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uVmlld3BvcnRSZXNpemUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uVmlld3BvcnRSZXNpemUpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOWIneWni+WMluWkhOeQhue8lui+keWZqOmcgOimgeWuueWZqOi/lOWbnuaVsOaNrueahOaWueazlVxuICAgKi9cbiAgcHJpdmF0ZSBiaW5kQ29udGFpbmVyTWV0aG9kSGFuZGxlcnMoKSB7XG4gICAgY29uc3QgY2hhbm5lbCA9IHRoaXMuY2hhbm5lbFxuXG4gICAgY2hhbm5lbC5hZGRJbnZva2VIYW5kbGVyKFxuICAgICAgQ29udGFpbmVyTWV0aG9kLkdlbmVyYXRlVXJsLFxuICAgICAgYXN5bmMgKFxuICAgICAgICBmaWxlSWQ6IHN0cmluZyxcbiAgICAgICAgaW5mbz86IEdlbmVyYXRlVXJsSW5mbyxcbiAgICAgICAgc21QYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICAgICApID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbm5lY3RPcHRpb25zLmdlbmVyYXRlVXJsICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBcIiR7Q29udGFpbmVyTWV0aG9kLkdlbmVyYXRlVXJsfVwiIG5vdCBmb3VuZGApXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgICB0aGlzLmNvbm5lY3RPcHRpb25zLmdlbmVyYXRlVXJsKGZpbGVJZCwgaW5mbywgc21QYXJhbXMpXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICB7IGF1ZGllbmNlOiBBVUQgfVxuICAgIClcblxuICAgIGNoYW5uZWwuYWRkSW52b2tlSGFuZGxlcihcbiAgICAgIENvbnRhaW5lck1ldGhvZC5IYW5kbGVDdXN0b21UYXNrLFxuICAgICAgYXN5bmMgKHRhc2tJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25uZWN0T3B0aW9ucy5oYW5kbGVDdXN0b21UYXNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBcIiR7Q29udGFpbmVyTWV0aG9kLkhhbmRsZUN1c3RvbVRhc2t9XCIgbm90IGZvdW5kYClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICAgIHRoaXMuY29ubmVjdE9wdGlvbnMuaGFuZGxlQ3VzdG9tVGFzayh0YXNrSWQpXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICB7IGF1ZGllbmNlOiBBVUQgfVxuICAgIClcblxuICAgIGNoYW5uZWwuYWRkSW52b2tlSGFuZGxlcihcbiAgICAgIENvbnRhaW5lck1ldGhvZC5PcGVuTGluayxcbiAgICAgIGFzeW5jICh1cmw6IHN0cmluZywgdGFyZ2V0Pzogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25uZWN0T3B0aW9ucy5vcGVuTGluayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgXCIke0NvbnRhaW5lck1ldGhvZC5PcGVuTGlua31cIiBub3QgZm91bmRgKVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29ubmVjdE9wdGlvbnMub3BlbkxpbmsodXJsLCB0YXJnZXQpXG4gICAgICB9LFxuICAgICAgeyBhdWRpZW5jZTogQVVEIH1cbiAgICApXG5cbiAgICBjaGFubmVsLmFkZEludm9rZUhhbmRsZXIoXG4gICAgICBDb250YWluZXJNZXRob2QuR2V0RmlsZUluZm9Gcm9tVXJsLFxuICAgICAgYXN5bmMgKHVybDogc3RyaW5nKSA9PiB7XG4gICAgICAgIC8vIDIwMjQwNjA3IOmSn+eri+WSjOWNoumYs+aUueS6hiBzZGstaWZyYW1lLWFzc2V0cyDnmoQgcGFyc2VVcmwg5Ye95pWw5LmL5ZCO77yMZ2V0RmlsZUluZm9Gcm9tVXJsIOeOsOWcqOW/hemhu+eUseeUqOaIt+aPkOS+m1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29ubmVjdE9wdGlvbnMuZ2V0RmlsZUluZm9Gcm9tVXJsICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFwiJHtDb250YWluZXJNZXRob2QuR2V0RmlsZUluZm9Gcm9tVXJsfVwiIG5vdCBhIGZ1bmN0aW9uYFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jb25uZWN0T3B0aW9ucy5nZXRGaWxlSW5mb0Zyb21VcmwodXJsKVxuICAgICAgfSxcbiAgICAgIHsgYXVkaWVuY2U6IEFVRCB9XG4gICAgKVxuXG4gICAgY2hhbm5lbC5hZGRJbnZva2VIYW5kbGVyKFxuICAgICAgQ29udGFpbmVyTWV0aG9kLk1lbnRpb25DbGlja0hhbmRsZXJGb3JNb2JpbGUsXG4gICAgICBhc3luYyAocGF5bG9hZDogTW91c2VNb3ZlUGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdHlwZW9mIHRoaXMuY29ubmVjdE9wdGlvbnMubWVudGlvbkNsaWNrSGFuZGxlckZvck1vYmlsZSAhPT0gJ2Z1bmN0aW9uJ1xuICAgICAgICApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgXCIke0NvbnRhaW5lck1ldGhvZC5NZW50aW9uQ2xpY2tIYW5kbGVyRm9yTW9iaWxlfVwiIG5vdCBmb3VuZGBcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHBheWxvYWQgPT09ICdvYmplY3QnICYmIHBheWxvYWQgIT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgICBwYXlsb2FkLnggKz0gcmVjdC54XG4gICAgICAgICAgcGF5bG9hZC55ICs9IHJlY3QueVxuXG4gICAgICAgICAgaWYgKHBheWxvYWQuaXNNZW50aW9uKSB7XG4gICAgICAgICAgICBwYXlsb2FkLm1lbnRpb25JbmZvLmxlZnQgKz0gcmVjdC54XG4gICAgICAgICAgICBwYXlsb2FkLm1lbnRpb25JbmZvLnRvcCArPSByZWN0LnlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb25uZWN0T3B0aW9ucy5tZW50aW9uQ2xpY2tIYW5kbGVyRm9yTW9iaWxlKHBheWxvYWQpXG4gICAgICB9LFxuICAgICAgeyBhdWRpZW5jZTogQVVEIH1cbiAgICApXG5cbiAgICBjaGFubmVsLmFkZEludm9rZUhhbmRsZXIoXG4gICAgICBDb250YWluZXJNZXRob2QuR2V0Q29udGFpbmVyUmVjdCxcbiAgICAgIGFzeW5jICgpID0+IHRoaXMuZ2V0Q29udGFpbmVyUmVjdCgpLFxuICAgICAgeyBhdWRpZW5jZTogQVVEIH1cbiAgICApXG4gICAgY2hhbm5lbC5hZGRJbnZva2VIYW5kbGVyKFxuICAgICAgQ29udGFpbmVyTWV0aG9kLlNob3dUb2FzdCxcbiAgICAgIGFzeW5jIChvcHRpb25zOiBTaG93VG9hc3RPcHRpb25zKSA9PiB7XG4gICAgICAgIHRoaXMuY29ubmVjdE9wdGlvbnMuc2hvd1RvYXN0Py4ob3B0aW9ucylcbiAgICAgIH0sXG4gICAgICB7IGF1ZGllbmNlOiBBVUQgfVxuICAgIClcbiAgICBjaGFubmVsLmFkZEludm9rZUhhbmRsZXIoXG4gICAgICBDb250YWluZXJNZXRob2QuR2V0Q3JlZGVudGlhbHMsXG4gICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbm5lY3RPcHRpb25zLmdldENyZWRlbnRpYWxzPy4oKVxuICAgICAgfSxcbiAgICAgIHsgYXVkaWVuY2U6IEFVRCB9XG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0SGVhZGVyQmFyc0ZhY2FkZSgpOiBIZWFkZXJCYXJzRmFjYWRlIHtcbiAgICByZXR1cm4gaW5pdEhlYWRlckJhcnNGYWNhZGUoe1xuICAgICAgZ2V0VmlzaWJsZVN0YXRlOiAoKSA9PiB0aGlzLmhlYWRlckJhcnNWaXNpYmxlLFxuICAgICAgc2V0VmlzaWJsZVN0YXRlOiAodmlzaWJsZTogYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLmhlYWRlckJhcnNWaXNpYmxlID0gdmlzaWJsZVxuICAgICAgfSxcbiAgICAgIGdldENvbW1hbmRzTWFwOiAoKSA9PiB0aGlzLmhlYWRlckJhcnNDb21tYW5kcyxcbiAgICAgIGdldE92ZXJyaWRlc01hcDogKCkgPT4gdGhpcy5oZWFkZXJCYXJzQ29tbWFuZE92ZXJyaWRlcyxcbiAgICAgIGdldFJlZnNNYXA6ICgpID0+IHRoaXMuaGVhZGVyQmFyc0NvbW1hbmRSZWZzLFxuICAgICAgZ2V0VGl0bGVIYW5kbGVyOiAoKSA9PiB0aGlzLmhlYWRlckJhcnNUaXRsZUNoYW5nZUhhbmRsZXIsXG4gICAgICBzZXRUaXRsZUhhbmRsZXI6IChoYW5kbGVyOiBIZWFkZXJCYXJzVGl0bGVDaGFuZ2VIYW5kbGVyIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgIHRoaXMuaGVhZGVyQmFyc1RpdGxlQ2hhbmdlSGFuZGxlciA9IGhhbmRsZXJcbiAgICAgIH0sXG4gICAgICBpc1RpdGxlU3Vic2NyaWJlZDogKCkgPT4gdGhpcy5oZWFkZXJCYXJzVGl0bGVDaGFuZ2VTdWJzY3JpYmVkLFxuICAgICAgc2V0VGl0bGVTdWJzY3JpYmVkOiAoc3Vic2NyaWJlZDogYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLmhlYWRlckJhcnNUaXRsZUNoYW5nZVN1YnNjcmliZWQgPSBzdWJzY3JpYmVkXG4gICAgICB9LFxuICAgICAgaW52b2tlSGVhZGVyQmFyczogdGhpcy5pbnZva2VIZWFkZXJCYXJzLmJpbmQodGhpcyksXG4gICAgICBlbWl0SGVhZGVyQmFyc0Vycm9yOiAobWVzc2FnZTogc3RyaW5nLCBlcnI6IHVua25vd24pID0+IHtcbiAgICAgICAgdGhpcy5lbWl0KFxuICAgICAgICAgIEV2ZW50LkVycm9yLFxuICAgICAgICAgIGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyIDogbmV3IEVycm9yKGAke21lc3NhZ2V9OiAke1N0cmluZyhlcnIpfWApXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBvbkludGVybmFsVGl0bGVDaGFuZ2U6IChsaXN0ZW5lcjogKHRpdGxlOiB1bmtub3duKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgIHRoaXMuZW1pdHRlci5vbigndGl0bGVDaGFuZ2UnLCBsaXN0ZW5lcilcbiAgICAgIH0sXG4gICAgICBzdWJzY3JpYmVFZGl0b3JUaXRsZUNoYW5nZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmNoYW5uZWwuaW52b2tlKFxuICAgICAgICAgIEludm9rZU1ldGhvZC5MaXN0ZW5FZGl0b3JFdmVudCxcbiAgICAgICAgICBbJ3RpdGxlQ2hhbmdlJ10sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYXVkaWVuY2U6IEFVRFxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICog6K6i6ZiFIGlmcmFtZSDkvqcgdGl0bGVDaGFuZ2Ug5LqL5Lu277yM5bm25Zyo5a6/5Li76K6+572u5LqGIGhlYWRlckJhcnMub25UaXRsZUNoYW5nZSDml7bovazlj5HmoIfpopjlgLzjgIJcbiAgICog6L6T5YWl77ya5peg44CCXG4gICAqIOi+k+WHuu+8muebkeWQrOW7uueri+aIkOWKn+WQjui/lOWbniBQcm9taXNlPHZvaWQ+77yb6YeN5aSN6LCD55So5Y+q5Lya6K6i6ZiF5LiA5qyh44CCXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGVuc3VyZUhlYWRlckJhcnNUaXRsZUNoYW5nZVN1YnNjcmlwdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBlbnN1cmVIZWFkZXJCYXJzVGl0bGVDaGFuZ2VTdWJzY3JpcHRpb24odGhpcy5jcmVhdGVIZWFkZXJCYXJzSG9zdCgpKVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBpbnZva2VIZWFkZXJCYXJzPFQ+KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIHBheWxvYWQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICApOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBhcmdzID0gcGF5bG9hZCA9PT0gdW5kZWZpbmVkID8gW10gOiBbcGF5bG9hZF1cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jaGFubmVsLmludm9rZShtZXRob2QgYXMgYW55LCBhcmdzLCB7XG4gICAgICBhdWRpZW5jZTogQVVEXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgc3luY0hlYWRlckJhcnNDb21tYW5kcyhjb21tYW5kczogSGVhZGVyQmFyc0NvbW1hbmRTdGF0ZVtdKSB7XG4gICAgc3luY0hlYWRlckJhcnNDb21tYW5kcyh0aGlzLmNyZWF0ZUhlYWRlckJhcnNIb3N0KCksIGNvbW1hbmRzKVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVIZWFkZXJCYXJzSG9zdCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0VmlzaWJsZVN0YXRlOiAoKSA9PiB0aGlzLmhlYWRlckJhcnNWaXNpYmxlLFxuICAgICAgc2V0VmlzaWJsZVN0YXRlOiAodmlzaWJsZTogYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLmhlYWRlckJhcnNWaXNpYmxlID0gdmlzaWJsZVxuICAgICAgfSxcbiAgICAgIGdldENvbW1hbmRzTWFwOiAoKSA9PiB0aGlzLmhlYWRlckJhcnNDb21tYW5kcyxcbiAgICAgIGdldE92ZXJyaWRlc01hcDogKCkgPT4gdGhpcy5oZWFkZXJCYXJzQ29tbWFuZE92ZXJyaWRlcyxcbiAgICAgIGdldFJlZnNNYXA6ICgpID0+IHRoaXMuaGVhZGVyQmFyc0NvbW1hbmRSZWZzLFxuICAgICAgZ2V0VGl0bGVIYW5kbGVyOiAoKSA9PiB0aGlzLmhlYWRlckJhcnNUaXRsZUNoYW5nZUhhbmRsZXIsXG4gICAgICBzZXRUaXRsZUhhbmRsZXI6IChoYW5kbGVyOiBIZWFkZXJCYXJzVGl0bGVDaGFuZ2VIYW5kbGVyIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgIHRoaXMuaGVhZGVyQmFyc1RpdGxlQ2hhbmdlSGFuZGxlciA9IGhhbmRsZXJcbiAgICAgIH0sXG4gICAgICBpc1RpdGxlU3Vic2NyaWJlZDogKCkgPT4gdGhpcy5oZWFkZXJCYXJzVGl0bGVDaGFuZ2VTdWJzY3JpYmVkLFxuICAgICAgc2V0VGl0bGVTdWJzY3JpYmVkOiAoc3Vic2NyaWJlZDogYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLmhlYWRlckJhcnNUaXRsZUNoYW5nZVN1YnNjcmliZWQgPSBzdWJzY3JpYmVkXG4gICAgICB9LFxuICAgICAgaW52b2tlSGVhZGVyQmFyczogdGhpcy5pbnZva2VIZWFkZXJCYXJzLmJpbmQodGhpcyksXG4gICAgICBlbWl0SGVhZGVyQmFyc0Vycm9yOiAobWVzc2FnZTogc3RyaW5nLCBlcnI6IHVua25vd24pID0+IHtcbiAgICAgICAgdGhpcy5lbWl0KFxuICAgICAgICAgIEV2ZW50LkVycm9yLFxuICAgICAgICAgIGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyIDogbmV3IEVycm9yKGAke21lc3NhZ2V9OiAke1N0cmluZyhlcnIpfWApXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBvbkludGVybmFsVGl0bGVDaGFuZ2U6IChsaXN0ZW5lcjogKHRpdGxlOiB1bmtub3duKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgIHRoaXMuZW1pdHRlci5vbigndGl0bGVDaGFuZ2UnLCBsaXN0ZW5lcilcbiAgICAgIH0sXG4gICAgICBzdWJzY3JpYmVFZGl0b3JUaXRsZUNoYW5nZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmNoYW5uZWwuaW52b2tlKFxuICAgICAgICAgIEludm9rZU1ldGhvZC5MaXN0ZW5FZGl0b3JFdmVudCxcbiAgICAgICAgICBbJ3RpdGxlQ2hhbmdlJ10sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYXVkaWVuY2U6IEFVRFxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlIZWFkZXJCYXJzQ2hhbmdlZChwYXlsb2FkPzogSGVhZGVyQmFyc0NoYW5nZWRQYXlsb2FkKSB7XG4gICAgYXBwbHlIZWFkZXJCYXJzQ2hhbmdlZCh0aGlzLmNyZWF0ZUhlYWRlckJhcnNIb3N0KCksIHBheWxvYWQpXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHN5bmNIZWFkZXJCYXJzVmlzaWJsZSgpIHtcbiAgICByZXR1cm4gYXdhaXQgc3luY0hlYWRlckJhcnNWaXNpYmxlKHRoaXMuY3JlYXRlSGVhZGVyQmFyc0hvc3QoKSlcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2V0SGVhZGVyQmFyc1Zpc2libGUodmlzaWJsZTogYm9vbGVhbikge1xuICAgIGF3YWl0IHNldEhlYWRlckJhcnNWaXNpYmxlKHRoaXMuY3JlYXRlSGVhZGVyQmFyc0hvc3QoKSwgdmlzaWJsZSlcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SGVhZGVyQmFyc0NvbW1hbmRSZWYoaWQ6IHN0cmluZyk6IEhlYWRlckJhcnNDb21tYW5kUmVmIHtcbiAgICByZXR1cm4gZ2V0SGVhZGVyQmFyc0NvbW1hbmRSZWYodGhpcy5jcmVhdGVIZWFkZXJCYXJzSG9zdCgpLCBpZClcbiAgfVxuXG4gIC8qKlxuICAgKiDms6jlhozkuIDkuKrlj6/kvpsgaWZyYW1lIOS+p+WPjeWQkeiwg+eUqOeahCBmYWNhZGUgY2FsbGJhY2vjgIJcbiAgICog6L6T5YWl77ya5a6/5Li75L6nIGNhbGxiYWNr44CCXG4gICAqIOi+k+WHuu+8muS+m+i3qOeql+WNj+iuruS9v+eUqOeahCBjYWxsYmFja0lk44CCXG4gICAqL1xuICBwcml2YXRlIHJlZ2lzdGVyRWRpdG9yRmFjYWRlQ2FsbGJhY2soY2FsbGJhY2s6IEVkaXRvckZhY2FkZUNhbGxiYWNrKSB7XG4gICAgY29uc3QgY2FsbGJhY2tJZCA9IGBlZGl0b3ItZmFjYWRlOiR7dXVpZCgpfWBcbiAgICB0aGlzLmVkaXRvckZhY2FkZUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJZCwgY2FsbGJhY2spXG4gICAgcmV0dXJuIGNhbGxiYWNrSWRcbiAgfVxuXG4gIC8qKlxuICAgKiDms6jplIDlt7Lms6jlhoznmoQgZmFjYWRlIGNhbGxiYWNr44CCXG4gICAqIOi+k+WFpe+8mmNhbGxiYWNrSWTjgIJcbiAgICog6L6T5Ye677ya5peg44CCXG4gICAqL1xuICBwcml2YXRlIHVucmVnaXN0ZXJFZGl0b3JGYWNhZGVDYWxsYmFjayhjYWxsYmFja0lkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmVkaXRvckZhY2FkZUNhbGxiYWNrcy5kZWxldGUoY2FsbGJhY2tJZClcbiAgfVxuXG4gIC8qKlxuICAgKiDliJvlu7rln7rkuo4gbWV0aG9kLXBhdGgg55qE5qih5Z2XIGZhY2FkZeOAglxuICAgKiDovpPlhaXvvJrmqKHlnZfliY3nvIDkuI7lsJHph4/oh6rlrprkuYnlrp7njrDopobnm5bjgIJcbiAgICog6L6T5Ye677ya5YW25L2Z5pa55rOV5oyJIGAke3ByZWZpeH0uJHttZXRob2R9YCDoh6rliqjmoaXmjqXjgIJcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRWRpdG9yRmFjYWRlTW9kdWxlPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICAgIHByZWZpeDogc3RyaW5nLFxuICAgIG92ZXJyaWRlczogUGFydGlhbDxUPlxuICApOiBUIHtcbiAgICByZXR1cm4gbmV3IFByb3h5KG92ZXJyaWRlcyBhcyBULCB7XG4gICAgICBnZXQ6ICh0YXJnZXQsIHByb3ApID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBwcm9wICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2hvdWxkU2tpcEZhY2FkZVByb3h5UHJvcChwcm9wKSkge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRhcmdldCwgcHJvcCkpIHtcbiAgICAgICAgICByZXR1cm4gdGFyZ2V0W3Byb3AgYXMga2V5b2YgVF1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXN5bmMgKC4uLmFyZ3M6IHVua25vd25bXSkgPT5cbiAgICAgICAgICBhd2FpdCB0aGlzLmludm9rZUVkaXRvckZhY2FkZShgJHtwcmVmaXh9LiR7cHJvcH1gLCBhcmdzKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICog5Li6IHZhbHVlLWJhc2VkIGxvY2F0b3Ig5Yib5bu65pys5Zyw5a+56LGhIGZhY2FkZeOAglxuICAgKiDovpPlhaXvvJptZXRob2QtcGF0aCDliY3nvIDjgIFsb2NhdG9yIOWSjOmdmeaAgeWxnuaAp+OAglxuICAgKiDovpPlh7rvvJrmlK/mjIHnu6fnu63ov5znqIvosIPnlKjnmoTmnKzlnLAgZmFjYWRl44CCXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZVZhbHVlT2JqZWN0RmFjYWRlPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICAgIHByZWZpeDogc3RyaW5nLFxuICAgIGxvY2F0b3I6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHN0YXRpY0ZpZWxkczogUGFydGlhbDxUPlxuICApOiBUIHtcbiAgICByZXR1cm4gbmV3IFByb3h5KHN0YXRpY0ZpZWxkcyBhcyBULCB7XG4gICAgICBnZXQ6ICh0YXJnZXQsIHByb3ApID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBwcm9wICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2hvdWxkU2tpcEZhY2FkZVByb3h5UHJvcChwcm9wKSkge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRhcmdldCwgcHJvcCkpIHtcbiAgICAgICAgICByZXR1cm4gdGFyZ2V0W3Byb3AgYXMga2V5b2YgVF1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXN5bmMgKC4uLmFyZ3M6IHVua25vd25bXSkgPT5cbiAgICAgICAgICBhd2FpdCB0aGlzLmludm9rZUVkaXRvckZhY2FkZShgJHtwcmVmaXh9LiR7cHJvcH1gLCBbbG9jYXRvciwgLi4uYXJnc10pXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiDms6jlhozkuIDkuKrln7rkuo4gY2FsbGJhY2sg5Y2P6K6u55qEIGxpc3RlbmVy44CCXG4gICAqIOi+k+WFpe+8muazqOWGjOaWueazleWQjeS4juebkeWQrOWZqOOAglxuICAgKiDovpPlh7rvvJrkvpvlrr/kuLvkvqflj5bmtojms6jlhoznmoTlh73mlbDjgIJcbiAgICovXG4gIHByaXZhdGUgcmVnaXN0ZXJFZGl0b3JGYWNhZGVMaXN0ZW5lcjxUPihcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICBsaXN0ZW5lcjogKHBheWxvYWQ6IFQpID0+IHZvaWRcbiAgKTogKCkgPT4gdm9pZCB7XG4gICAgY29uc3QgY2FsbGJhY2tJZCA9IHRoaXMucmVnaXN0ZXJFZGl0b3JGYWNhZGVDYWxsYmFjayhhc3luYyAocGF5bG9hZDogVCkgPT5cbiAgICAgIGxpc3RlbmVyKHBheWxvYWQpXG4gICAgKVxuICAgIHRoaXMuaW52b2tlRWRpdG9yRmFjYWRlKG1ldGhvZCwgW2NhbGxiYWNrSWRdKS5jYXRjaCgoZXJyOiB1bmtub3duKSA9PiB7XG4gICAgICB0aGlzLmVtaXQoXG4gICAgICAgIEV2ZW50LkVycm9yLFxuICAgICAgICBlcnIgaW5zdGFuY2VvZiBFcnJvclxuICAgICAgICAgID8gZXJyXG4gICAgICAgICAgOiBuZXcgRXJyb3IoYHJlZ2lzdGVyIGVkaXRvciBmYWNhZGUgbGlzdGVuZXIgZmFpbGVkOiAke1N0cmluZyhlcnIpfWApXG4gICAgICApXG4gICAgfSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdGhpcy51bnJlZ2lzdGVyRWRpdG9yRmFjYWRlQ2FsbGJhY2soY2FsbGJhY2tJZClcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluc3RhbGxSb290RmFjYWRlKCkge1xuICAgIHRoaXMuY2xlYXJSb290RmFjYWRlKClcbiAgICBPYmplY3QuYXNzaWduKFxuICAgICAgdGhpcyxcbiAgICAgIGJ1aWxkUm9vdEZhY2FkZVN0YXRlKHtcbiAgICAgICAgZmlsZVR5cGU6IHRoaXMuZmlsZVR5cGUsXG4gICAgICAgIGludm9rZUVkaXRvckZhY2FkZTogdGhpcy5pbnZva2VFZGl0b3JGYWNhZGUuYmluZCh0aGlzKSxcbiAgICAgICAgbGlzdGVuRWRpdG9yRXZlbnQ6IHRoaXMubGlzdGVuRWRpdG9yRXZlbnQuYmluZCh0aGlzKSxcbiAgICAgICAgY3JlYXRlRWRpdG9yRmFjYWRlTW9kdWxlOiB0aGlzLmNyZWF0ZUVkaXRvckZhY2FkZU1vZHVsZS5iaW5kKHRoaXMpLFxuICAgICAgICBjcmVhdGVWYWx1ZU9iamVjdEZhY2FkZTogdGhpcy5jcmVhdGVWYWx1ZU9iamVjdEZhY2FkZS5iaW5kKHRoaXMpLFxuICAgICAgICByZWdpc3RlckVkaXRvckZhY2FkZUxpc3RlbmVyOlxuICAgICAgICAgIHRoaXMucmVnaXN0ZXJFZGl0b3JGYWNhZGVMaXN0ZW5lci5iaW5kKHRoaXMpLFxuICAgICAgICByZWdpc3RlckVkaXRvckZhY2FkZUNhbGxiYWNrOlxuICAgICAgICAgIHRoaXMucmVnaXN0ZXJFZGl0b3JGYWNhZGVDYWxsYmFjay5iaW5kKHRoaXMpLFxuICAgICAgICB1bnJlZ2lzdGVyRWRpdG9yRmFjYWRlQ2FsbGJhY2s6XG4gICAgICAgICAgdGhpcy51bnJlZ2lzdGVyRWRpdG9yRmFjYWRlQ2FsbGJhY2suYmluZCh0aGlzKVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICAvKipcbiAgICog6YeN572u5qC557qn6IO95Yqb5ZG95ZCN56m66Ze077yM6YG/5YWN5LiN5ZCM5aWX5Lu26Ze05a2X5q615q6L55WZ44CCXG4gICAqIOi+k+WFpe+8muaXoOOAglxuICAgKiDovpPlh7rvvJrlsIbmiYDmnIkgZmFjYWRlIOWtl+autee9ruepuuOAglxuICAgKi9cbiAgcHJpdmF0ZSBjbGVhclJvb3RGYWNhZGUoKSB7XG4gICAgdGhpcy50aXRsZSA9IHVuZGVmaW5lZFxuICAgIHRoaXMuaGlzdG9yeSA9IHVuZGVmaW5lZFxuICAgIHRoaXMuY29tbWVudHMgPSB1bmRlZmluZWRcbiAgICB0aGlzLmxvY2tzID0gdW5kZWZpbmVkXG4gICAgdGhpcy5tZW50aW9uID0gdW5kZWZpbmVkXG4gICAgdGhpcy5jb250ZW50ID0gdW5kZWZpbmVkXG4gICAgdGhpcy52ZXJzaW9uID0gdW5kZWZpbmVkXG4gICAgdGhpcy5wcmVzZW50YXRpb24gPSB1bmRlZmluZWRcbiAgICB0aGlzLnNlbGVjdGlvbiA9IHVuZGVmaW5lZFxuICAgIHRoaXMuc2VhcmNoID0gdW5kZWZpbmVkXG4gICAgdGhpcy5vdXRsaW5lID0gdW5kZWZpbmVkXG4gICAgdGhpcy5zaWRlYmFyID0gdW5kZWZpbmVkXG4gICAgdGhpcy50YWJsZXMgPSB1bmRlZmluZWRcbiAgICB0aGlzLnNldHRpbmdzID0gdW5kZWZpbmVkXG4gICAgdGhpcy53b3JrYm9vayA9IHVuZGVmaW5lZFxuICAgIHRoaXMuYWN0aXZlU2hlZXQgPSB1bmRlZmluZWRcbiAgICB0aGlzLmNoYXJ0cyA9IHVuZGVmaW5lZFxuICAgIHRoaXMuc2VsZWN0aW9ucyA9IHVuZGVmaW5lZFxuICAgIHRoaXMuc2xpZGVzID0gdW5kZWZpbmVkXG4gICAgdGhpcy50ZXh0ID0gdW5kZWZpbmVkXG4gICAgdGhpcy56b29tID0gdW5kZWZpbmVkXG4gICAgdGhpcy5ldmVudFN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZFxuICAgIHRoaXMuYmF0Y2hDaGFuZ2VzID0gdW5kZWZpbmVkXG4gICAgdGhpcy5leHBvcnQgPSB1bmRlZmluZWRcbiAgICB0aGlzLnByaW50ID0gdW5kZWZpbmVkXG4gICAgdGhpcy5zZXRGb2N1cyA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIOiwg+eUqOaYvuW8jyBlZGl0b3IgZmFjYWRlIG1ldGhvZC1wYXRo44CCXG4gICAqIOi+k+WFpe+8mm1ldGhvZC1wYXRoIOS4juWPguaVsOaVsOe7hOOAglxuICAgKiDovpPlh7rvvJrov5Tlm54gaWZyYW1lIOS+p+W6j+WIl+WMlue7k+aenOOAglxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBpbnZva2VFZGl0b3JGYWNhZGU8VD4oXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgYXJnczogdW5rbm93bltdID0gW11cbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY2hhbm5lbC5pbnZva2UoXG4gICAgICBJbnZva2VNZXRob2QuSW52b2tlRWRpdG9yTWV0aG9kLFxuICAgICAgW21ldGhvZCwgYXJnc10sXG4gICAgICB7XG4gICAgICAgIGF1ZGllbmNlOiBBVURcbiAgICAgIH1cbiAgICApXG4gIH1cblxuICAvKipcbiAgICog5Li657uT5p6E5YyWIGZhY2FkZSDlu7rnq4sgZWRpdG9yIOS6i+S7tuebkeWQrO+8jOW5tui/lOWbnuWPlua2iOebkeWQrOWHveaVsOOAglxuICAgKiDovpPlhaXvvJrkuovku7blkI3kuI7nm5HlkKzlmajjgIJcbiAgICog6L6T5Ye677ya6L+U5Zue5LiA5Liq5Y+v5Y+W5raI5b2T5YmN55uR5ZCs55qE5Ye95pWw44CCXG4gICAqL1xuICBwcml2YXRlIGxpc3RlbkVkaXRvckV2ZW50PFQ+KFxuICAgIGV2ZW50OiBzdHJpbmcsXG4gICAgbGlzdGVuZXI6IChwYXlsb2FkOiBUKSA9PiB2b2lkXG4gICk6ICgpID0+IHZvaWQge1xuICAgIHRoaXMuZW1pdHRlci5vbihldmVudCwgbGlzdGVuZXIgYXMgRXZlbnRDYWxsYmFjaylcbiAgICB0aGlzLmNoYW5uZWxcbiAgICAgIC5pbnZva2UoSW52b2tlTWV0aG9kLkxpc3RlbkVkaXRvckV2ZW50LCBbZXZlbnRdLCB7XG4gICAgICAgIGF1ZGllbmNlOiBBVURcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycjogdW5rbm93bikgPT4ge1xuICAgICAgICB0aGlzLmVtaXQoXG4gICAgICAgICAgRXZlbnQuRXJyb3IsXG4gICAgICAgICAgZXJyIGluc3RhbmNlb2YgRXJyb3JcbiAgICAgICAgICAgID8gZXJyXG4gICAgICAgICAgICA6IG5ldyBFcnJvcihgbGlzdGVuIGVkaXRvciBldmVudCBmYWlsZWQ6ICR7U3RyaW5nKGVycil9YClcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdGhpcy5lbWl0dGVyLm9mZihldmVudCwgbGlzdGVuZXIgYXMgRXZlbnRDYWxsYmFjaylcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRFZGl0b3IoKSB7XG4gICAgY29uc3QgYWRqdXN0RXZlbnROYW1lID0gKGV2ZW50OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgICAgLy8g5YW85a655pen5LqL5Lu25ZCNXG4gICAgICBpZiAoZXZlbnQgPT09ICdzYXZlU3RhdHVzRGlkQ2hhbmdlJykge1xuICAgICAgICByZXR1cm4gJ3NhdmVTdGF0dXNDaGFuZ2VkJ1xuICAgICAgfVxuICAgICAgcmV0dXJuIGV2ZW50XG4gICAgfVxuXG4gICAgY29uc3QgaW5zdCA9IHtcbiAgICAgIG9uOiBhc3luYyAoZXZlbnQ6IHN0cmluZywgY2FsbGJhY2s6IEV2ZW50Q2FsbGJhY2spID0+IHtcbiAgICAgICAgZXZlbnQgPSBhZGp1c3RFdmVudE5hbWUoZXZlbnQpXG4gICAgICAgIHRoaXMuZW1pdHRlci5vbihldmVudCwgY2FsbGJhY2spXG5cbiAgICAgICAgYXdhaXQgdGhpcy5jaGFubmVsLmludm9rZShJbnZva2VNZXRob2QuTGlzdGVuRWRpdG9yRXZlbnQsIFtldmVudF0sIHtcbiAgICAgICAgICBhdWRpZW5jZTogQVVEXG4gICAgICAgIH0pXG4gICAgICB9LFxuXG4gICAgICBvZmY6IChldmVudDogc3RyaW5nLCBjYWxsYmFjazogRXZlbnRDYWxsYmFjaykgPT4ge1xuICAgICAgICBldmVudCA9IGFkanVzdEV2ZW50TmFtZShldmVudClcbiAgICAgICAgdGhpcy5lbWl0dGVyLm9mZihldmVudCwgY2FsbGJhY2spXG4gICAgICB9LFxuXG4gICAgICBnZXRDb2xsYWJvcmF0b3JzOiAoKSA9PiBbLi4udGhpcy5jb2xsYWJvcmF0b3JzXVxuICAgIH1cblxuICAgIC8vIOWIm+W7uuW1jOWllyBQcm94eSDku6XmlK/mjIHlpJrlsYLnuqfosIPnlKhcbiAgICBjb25zdCBjcmVhdGVOZXN0ZWRQcm94eSA9IChwYXRoOiBzdHJpbmdbXSA9IFtdKTogYW55ID0+IHtcbiAgICAgIGNvbnN0IHByb3h5RnVuYyA9IGZ1bmN0aW9uICgpIHt9XG4gICAgICByZXR1cm4gbmV3IFByb3h5KHByb3h5RnVuYywge1xuICAgICAgICBnZXQ6ICh0YXJnZXQsIHByb3ApID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnICYmIHNob3VsZFNraXBGYWNhZGVQcm94eVByb3AocHJvcCkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyDlpoLmnpzmmK/moLnnuqfliKvnmoTpooTlrprkuYnmlrnms5XvvIhvbi9vZmbvvInvvIznm7TmjqXov5Tlm55cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBwYXRoLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGluc3QsIHByb3ApXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gKGluc3QgYXMgYW55KVtwcm9wXVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIOWvueS6juWHveaVsOeahOWGhee9ruWxnuaAp++8iOWmgiBjYWxs44CBYXBwbHnjgIFiaW5kIOetie+8iVxuICAgICAgICAgIC8vIOi/lOWbnuWOn+WHveaVsOeahOWvueW6lOWxnuaAp++8jOi/meagt+e8luivkeWQjueahOS7o+eggeaJjeiDveato+W4uOW3peS9nFxuICAgICAgICAgIC8vIOS+i+Wmgu+8mmVkaXRvci50ZXN0KCkg57yW6K+R5ZCO5Y+Y5oiQIGVkaXRvci50ZXN0LmNhbGwoKVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgWydjYWxsJywgJ2FwcGx5JywgJ2JpbmQnXS5pbmNsdWRlcyhwcm9wKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuICh0YXJnZXQgYXMgYW55KVtwcm9wXVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIOWvueS6juWFtuS7luWxnuaAp++8jOi/lOWbnuaWsOeahOW1jOWllyBQcm94eVxuICAgICAgICAgIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVOZXN0ZWRQcm94eShbLi4ucGF0aCwgcHJvcF0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICB9LFxuICAgICAgICBhcHBseTogKF90YXJnZXQsIF90aGlzQXJnLCBhcmdzOiB1bmtub3duW10pID0+IHtcbiAgICAgICAgICAvLyDlvZPkvZzkuLrlh73mlbDosIPnlKjml7bvvIzlsIblrozmlbTot6/lvoTlkozlj4LmlbDlj5HpgIHnu5nnvJbovpHlmahcbiAgICAgICAgICBpZiAocGF0aC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jaGFubmVsLmludm9rZShcbiAgICAgICAgICAgICAgSW52b2tlTWV0aG9kLkludm9rZUVkaXRvck1ldGhvZCxcbiAgICAgICAgICAgICAgW3BhdGguam9pbignLicpLCBhcmdzXSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGF1ZGllbmNlOiBBVURcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCBwID0gY3JlYXRlTmVzdGVkUHJveHkoKVxuXG4gICAgcmV0dXJuIHBcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkSGFuZGxlTWVzc2FnZShldnQ6IE9mZmljZVNES0V2ZW50TGlrZSk6IGJvb2xlYW4ge1xuICAgIGlmIChcbiAgICAgIC8vIOS4jeaYr+W9k+WJjSBjaGFubmVsIOeahOa2iOaBr1xuICAgICAgZXZ0LmNoYW5uZWxJZCAhPT0gdGhpcy5jaGFubmVsLmlkIHx8XG4gICAgICAvLyDmtojmga/lt7Lnu4/ov4fmnJ9cbiAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtcGx1cy1vcGVyYW5kcyAqL1xuICAgICAgZXZ0LnRpbWUgKyB0aGlzLm1lc3NhZ2VFeHBpcmVzIDwgRGF0ZS5ub3coKSB8fFxuICAgICAgLy8g5bey57uP5aSE55CG6L+HXG4gICAgICB0aGlzLmhhbmRsZWRNZXNzYWdlQ2FjaGUuaGFzKGV2dC5jb250ZXh0Lm1lc3NhZ2VJZClcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBwcml2YXRlIGdldENvbnRhaW5lclJlY3QoKSB7XG4gICAgY29uc3QgcmVjdCA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IHBheWxvYWQ6IENvbnRhaW5lclJlY3QgPSB7XG4gICAgICB2aWV3cG9ydFdpZHRoOiB3aW5kb3cuaW5uZXJXaWR0aCxcbiAgICAgIHZpZXdwb3J0SGVpZ2h0OiB3aW5kb3cuaW5uZXJIZWlnaHQsXG4gICAgICB0b3A6IHJlY3QudG9wLFxuICAgICAgbGVmdDogcmVjdC5sZWZ0LFxuICAgICAgYm90dG9tOiByZWN0LmJvdHRvbSxcbiAgICAgIHJpZ2h0OiByZWN0LnJpZ2h0LFxuICAgICAgc2Nyb2xsVG9wOiBkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50Py5zY3JvbGxUb3AsXG4gICAgICB2aXN1YWxWaWV3cG9ydDoge31cbiAgICB9XG5cbiAgICBpZiAod2luZG93LnZpc3VhbFZpZXdwb3J0KSB7XG4gICAgICBwYXlsb2FkLnZpc3VhbFZpZXdwb3J0ID0ge1xuICAgICAgICB3aWR0aDogd2luZG93LnZpc3VhbFZpZXdwb3J0LndpZHRoLFxuICAgICAgICBoZWlnaHQ6IHdpbmRvdy52aXN1YWxWaWV3cG9ydC5oZWlnaHQsXG4gICAgICAgIG9mZnNldExlZnQ6IHdpbmRvdy52aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0LFxuICAgICAgICBvZmZzZXRUb3A6IHdpbmRvdy52aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3AsXG4gICAgICAgIHBhZ2VMZWZ0OiB3aW5kb3cudmlzdWFsVmlld3BvcnQucGFnZUxlZnQsXG4gICAgICAgIHBhZ2VUb3A6IHdpbmRvdy52aXN1YWxWaWV3cG9ydC5wYWdlVG9wLFxuICAgICAgICBzY2FsZTogd2luZG93LnZpc3VhbFZpZXdwb3J0LnNjYWxlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBheWxvYWRcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29sbGFib3JhdG9ycyhwYXlsb2FkOiB1bmtub3duKSB7XG4gICAgaWYgKFxuICAgICAgcGF5bG9hZCAmJlxuICAgICAgdHlwZW9mIHBheWxvYWQgPT09ICdvYmplY3QnICYmXG4gICAgICBBcnJheS5pc0FycmF5KFxuICAgICAgICAocGF5bG9hZCBhcyBQYXJ0aWFsPENvbGxhYm9yYXRvcnNDaGFuZ2VkUGF5bG9hZD4pLmNvbGxhYm9yYXRvcnNcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBwYXlsb2FkIGFzIENvbGxhYm9yYXRvcnNDaGFuZ2VkUGF5bG9hZFxuICAgICAgdGhpcy5jb2xsYWJvcmF0b3JzID0gWy4uLmRhdGEuY29sbGFib3JhdG9yc11cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbm90RW1wdHlTdHJpbmcoaW5wdXQ/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycgJiYgaW5wdXQudHJpbSgpLmxlbmd0aCA+IDBcbn1cblxuY29uc3QgRU1QVFlfUEFHRV9FVkVOVFMgPSBuZXcgU2V0PHN0cmluZz4oW1xuICAnZW1wdHlQYWdlU2hvd24nLFxuICAnZW1wdHlQYWdlQWN0aW9uJyxcbiAgJ2VtcHR5UGFnZUhpZGRlbidcbl0pXG5cbmZ1bmN0aW9uIGlzRW1wdHlQYWdlRXZlbnQoZXZlbnQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gRU1QVFlfUEFHRV9FVkVOVFMuaGFzKGV2ZW50KVxufVxuXG4vKipcbiAqIOmcgOimgeWuueWZqOaPkOS+m+e7mee8lui+keWZqOS9v+eUqOeahOaWueazlVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lck1ldGhvZHMge1xuICAvKipcbiAgICog6I635Y+W5a655Zmo5bC65a+4562J5L+h5oGvXG4gICAqL1xuICBbQ29udGFpbmVyTWV0aG9kLkdldENvbnRhaW5lclJlY3RdPzogKCkgPT4gQ29udGFpbmVyUmVjdFxuXG4gIC8qKlxuICAgKiDlpITnkIbnn7PloqjmlofmoaPlhoXngrnlh7vpk77mjqXkuovku7ZcbiAgICovXG4gIFtDb250YWluZXJNZXRob2QuT3BlbkxpbmtdPzogKFxuICAgIC8qKlxuICAgICAqIOebruagh+mTvuaOpVxuICAgICAqL1xuICAgIHVybDogc3RyaW5nLFxuXG4gICAgLyoqXG4gICAgICog5oSP5LmJ5ZKMIHdpbmRvdy5vcGVuIOeahOesrOS6jOS4quWPguaVsOS4gOagt++8jOWxnuS6juefs+WiqOW7uuiurueahOWAvO+8jOWFt+S9k+aYr+WQpumcgOimgeS9v+eUqOivt+aOpeWFpeaWueiHquihjOWIpOaWreOAglxuICAgICAqL1xuICAgIHRhcmdldD86IHN0cmluZ1xuICApID0+IHZvaWRcblxuICAvKipcbiAgICog55Sf5oiQ5o+S5YWl5Yiw55+z5aKo5paH5qGj5Lit55qE6ZO+5o6l77yM55So5LqO5aSE55CGIEAg5paH5Lu2562J5Yqf6IO96ZyA6KaB5o+S5YWl55qE6ZO+5o6lXG4gICAqL1xuICBbQ29udGFpbmVyTWV0aG9kLkdlbmVyYXRlVXJsXT86IEdlbmVyYXRlVXJsSGFuZGxlclxuXG4gIC8qKlxuICAgKiDnlKjkuo7np7vliqjnq6/lpITnkIYgQCDngrnlh7vkuovku7ZcbiAgICovXG4gIFtDb250YWluZXJNZXRob2QuTWVudGlvbkNsaWNrSGFuZGxlckZvck1vYmlsZV0/OiAoXG4gICAgcGF5bG9hZDogTW91c2VNb3ZlUGF5bG9hZFxuICApID0+IHZvaWRcblxuICAvKipcbiAgICog55So5LqO5LuO5a6i5oi35Lia5YqhIFVSTCDkuK3ojrflj5blr7nlupTnmoTmlofku7YgSUTvvIzkvpvnvJbovpHlmajkvb/nlKjjgIJcbiAgICovXG4gIFtDb250YWluZXJNZXRob2QuR2V0RmlsZUluZm9Gcm9tVXJsXT86ICh1cmw6IHN0cmluZykgPT4gUHJvbWlzZTxcbiAgICB8IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOaWh+S7tiBJRFxuICAgICAgICAgKi9cbiAgICAgICAgZmlsZUlkOiBzdHJpbmdcbiAgICAgIH1cbiAgICB8IHVuZGVmaW5lZFxuICA+XG5cbiAgLyoqXG4gICAqIOeUqOS6juaYvuekuuWuouaIt+iHquWumuS5iXRvYXN044CCXG4gICAqL1xuICBbQ29udGFpbmVyTWV0aG9kLlNob3dUb2FzdF0/OiAob3B0aW9uczogU2hvd1RvYXN0T3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPlxuXG4gIC8qKlxuICAgKiDpgJrnn6XnlKjmiLfmiafooYzoh6rlrprkuYnmk43kvZzvvIzmk43kvZznlLHnlKjmiLfoh6rlrprkuYnmjInpkq7op6blj5FcbiAgICovXG4gIFtDb250YWluZXJNZXRob2QuSGFuZGxlQ3VzdG9tVGFza10/OiAodGFza0lkOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIOivt+axguWuueWZqOiOt+WPlumJtOadg+S/oeaBr1xuICAgKiBAcmV0dXJucyB7Q3JlZGVudGlhbHN9IOmJtOadg+S/oeaBr1xuICAgKi9cbiAgW0NvbnRhaW5lck1ldGhvZC5HZXRDcmVkZW50aWFsc106ICgpID0+IFByb21pc2U8Q3JlZGVudGlhbHM+XG59XG5cbmV4cG9ydCBlbnVtIEV2ZW50IHtcbiAgLyoqXG4gICAqIFNESyDliJ3lp4vljJbkuovku7bvvIznlKjkuo7lhoXpg6jpgLvovpFcbiAgICovXG4gIFNES0luaXQgPSAnU0RLSW5pdCcsXG5cbiAgLyoqXG4gICAqIOmUmeivr+S6i+S7tu+8jOWMheWQq+e8lui+keWZqOaKm+WHuueahOmUmeivr1xuICAgKi9cbiAgRXJyb3IgPSAnZXJyb3InLFxuXG4gIC8qKlxuICAgKiBPZmZpY2VTREsg54q25oCB5Y+Y5YyW5LqL5Lu2XG4gICAqL1xuICBSZWFkeVN0YXRlID0gJ3JlYWR5U3RhdGUnLFxuXG4gIC8qKlxuICAgKiDnvJbovpHlmajnnJ/mraPlrozmiJBcIummluWxj+a4suafk1wi55qE5L+h5Y+344CCXG4gICAqXG4gICAqIOeUsSBpZnJhbWUg5YaF57yW6L6R5Zmo5Zyo6Ieq6Lqr5riy5p+T56iz5a6a5ZCO6YCa6L+HIGNoYW5uZWwg5Y+R6YCB77yMU0RLIOS+p+i9rOWPkeS4uuacrOS6i+S7tuOAglxuICAgKiDlrr/kuLvlj6/mjInpnIDnm5HlkKzlroPmnaXljLrliIYgU0RLIFJlYWR5IOS4jue8lui+keWZqOinhuiniemmluWxj+WujOaIkOOAglxuICAgKi9cbiAgRWRpdG9yUmVuZGVyZWQgPSAnZWRpdG9yUmVuZGVyZWQnLFxuXG4gIC8qKlxuICAgKiDnvJbovpHlmajkuovku7ZcbiAgICovXG4gIEVkaXRvckV2ZW50ID0gJ2VkaXRvckV2ZW50J1xufVxuXG4vKipcbiAqIGlmcmFtZSDlhoXkvqfnlKjmnaXkuIrmiqVcIue8lui+keWZqOW3suWujOaIkOmmluWxj+a4suafk1wi55qEIGNoYW5uZWwg5LqL5Lu25ZCN44CCXG4gKlxuICog5LiOIGBJbnZva2VNZXRob2QuUmVhZHlTdGF0ZWAg55qE5p6a5Li+5YC85L+d5oyB5Zyo5ZCM5LiA5ZG95ZCN56m66Ze077yM5L2G5LiN5YWlIHNoYXJlZCDljIXvvIxcbiAqIOS7peWFjei3qOerr+eJiOacrOiApuWQiOOAgmlmcmFtZSDkvqfnuqblrprlhpnlrZfnrKbkuLLljbPlj6/jgIJcbiAqL1xuZXhwb3J0IGNvbnN0IEVESVRPUl9SRU5ERVJFRF9FVkVOVCA9ICdlZGl0b3JSZW5kZXJlZCdcblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlIHtcbiAgdXVpZD86IHN0cmluZ1xuICBldmVudDogc3RyaW5nXG4gIGJvZHk6IGFueVxuICBlcnJvcj86IEVycm9yXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUV2ZW50UGF5bG9hZCB7XG4gIGV2ZW50OiBJbnZva2VNZXRob2RcbiAgZGF0YTogdW5rbm93bltdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVyTWV0aG9kUGF5bG9hZCB7XG4gIG1ldGhvZDogQ29udGFpbmVyTWV0aG9kXG4gIGFyZ3M6IHVua25vd25bXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlYWR5U3RhdGVFdmVudCB7XG4gIHN0YXRlOiBSZWFkeVN0YXRlXG4gIGZpbGVUeXBlOiBGaWxlVHlwZVxuICBlcnJvcj86IEVycm9yIHwgc3RyaW5nXG59XG5cbi8qKlxuICog5LqL5Lu25Zue6LCD5Ye95pWwXG4gKi9cbmV4cG9ydCB0eXBlIEV2ZW50Q2FsbGJhY2sgPSAoLi4uYXJnczogYW55W10pID0+IGFueVxuXG4vKipcbiAqIFNESyB0b2FzdCDmlofmoYjphY3nva7vvIzlgLzku4XlhYHorrjlrZfnrKbkuLLmiJbltYzlpZflr7nosaHjgIJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTREtUb2FzdE9wdGlvbnMge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBTREtUb2FzdE9wdGlvbnMgfCB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBpZnJhbWUg5YaF572u5Yqg6L296aG16YWN572u77yM5Y+q5pSv5oyB5Y+v5bqP5YiX5YyW5a2X5q6144CCXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGluZ09wdGlvbnMge1xuICAvKipcbiAgICog6Ieq5a6a5LmJ5Yqg6L296aG1IExvZ2/jgILkvKDlrZfnrKbkuLLml7bkvZzkuLrlm77niYcgVVJMIC8gZGF0YVVSTCDkvb/nlKjvvJtcbiAgICog5LygIGZhbHNlIOaXtumakOiXjyBMb2dv77yb5LiN5Lyg5pe25L2/55SoIGlmcmFtZSDlhoXpu5jorqTnn7PloqggTG9nb+OAglxuICAgKi9cbiAgbG9nbz86IHN0cmluZyB8IGZhbHNlXG4gIC8qKlxuICAgKiDoh6rlrprkuYnliqDovb3pobXmj5DnpLrmlofmoYjjgILkuI3kvKDml7bkvb/nlKggaWZyYW1lIOWGhem7mOiupOaWh+ahiOOAglxuICAgKi9cbiAgdGlwPzogc3RyaW5nXG59XG5cbi8qKlxuICogT2ZmaWNlU0RLIOWIneWni+WMluWPguaVsFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9mZmljZVNES09wdGlvbnNcbiAgZXh0ZW5kcyBPbWl0PENvbnRhaW5lck1ldGhvZHMsICdnZXRDb250YWluZXJSZWN0Jz4ge1xuICAvKipcbiAgICog55+z5aKoIFNESyDmnI3liqHlmajlnLDlnYBcbiAgICovXG4gIGVuZHBvaW50OiBzdHJpbmdcblxuICAvKipcbiAgICog5oKo6KaB5omT5byA55qE5paH5qGjIElEXG4gICAqL1xuICBmaWxlSWQ6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiDnlKjkuo7nn7PloqggU0RLIOmJtOadg+eUqOeahOetvuWQjVxuICAgKi9cbiAgc2lnbmF0dXJlOiBzdHJpbmdcblxuICAvKipcbiAgICogaWZyYW1lIOaMgui9veeahOebruagh+WuueWZqFxuICAgKi9cbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudFxuXG4gIC8qKlxuICAgKiDnlKjkuo7mgqjns7vnu5/pibTmnYPkvb/nlKjnmoQgdG9rZW5cbiAgICovXG4gIHRva2VuOiBzdHJpbmdcblxuICAvKipcbiAgICog5Yi35paw6Ym05p2D5L+h5oGv55qE6Ze06ZqU5pe26Ze077yM5Y2V5L2N5Li65q+r56eSXG4gICAqL1xuICByZWZyZXNoQ3JlZGVudGlhbHNJbnRlcnZhbDogbnVtYmVyXG5cbiAgLyoqXG4gICAqIOa3u+WKoOWIsCBpZnJhbWUgVVJMU2VhcmNoUGFyYW1zIOeahOWPguaVsOWIl+ihqFxuICAgKi9cbiAgcGFyYW1zPzoge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZ1xuICB9XG5cbiAgLyoqXG4gICAqIOW9k+WJjeaJk+W8gOaooeW8j+OAgmBwcmV2aWV3YCDnlKjkuo7pooTop4jmgIHvvIzlhbbkvZnlnLrmma/pu5jorqTmjIkgYGVkaXRgIOWkhOeQhuOAglxuICAgKi9cbiAgbW9kZT86ICdlZGl0JyB8ICdwcmV2aWV3J1xuXG4gIC8qKlxuICAgKiDnn7PloqggU0RLIFVSTCDlj4LmlbAgdXJsP3NtUGFyYW1zPXtwYXJhbXN977yM55So5LqO5Lyg6YCS55+z5aKoIFNESyDlhoXpg6jpnIDopoHnmoTlj4LmlbDjgIJcbiAgICovXG4gIHNtUGFyYW1zPzpcbiAgICB8IHN0cmluZ1xuICAgIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICB8IEFycmF5PHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+PlxuXG4gIC8qKlxuICAgKiDmjIflrprnn7PloqggU0RLIOe8lui+keWZqOeVjOmdouivreiogO+8jOa3u+WKoOWIsCBpZnJhbWUgVVJMU2VhcmNoUGFyYW1zIOeahOWPguaVsOWIl+ihqOOAglxuICAgKiDoi6XmnKrmjIflrprvvIzliJkgaWZyYW1lIOS9v+eUqOacjeWKoeWZqOiuvue9rueahOm7mOiupOivreiogOOAglxuICAgKlxuICAgKiDnm67liY3mlK/mjIHnmoTmoIflh4bor63oqIDlj5blgLzvvJpcbiAgICogMS4gemgtQ07vvIjnroDkvZPkuK3mlofvvIlcbiAgICogMi4gemgtVFfvvIjnuYHkvZPkuK3mlofvvIlcbiAgICogMy4gZW4tVVPvvIjoi7HmlofvvIlcbiAgICogNC4gamEtSlDvvIjml6XmlofvvIlcbiAgICogNS4ga28tS1LvvIjpn6nmlofvvIlcbiAgICogNi4gZXMtRVPvvIjopb/nj63niZnor63vvIlcbiAgICogNy4gcHQtUFTvvIjokaHokITniZnor63vvIlcbiAgICogOC4gZGUtREXvvIjlvrfor63vvIlcbiAgICogOS4gZnItRlLvvIjms5Xor63vvIlcbiAgICogMTAuIGl0LUlU77yI5oSP5aSn5Yip6K+t77yJXG4gICAqIDExLiBydS1SVe+8iOS/hOivre+8iVxuICAgKiAxMi4gaWQtSUTvvIjljbDlsLzor63vvIlcbiAgICogMTMuIHZpLVZO77yI6LaK5Y2X6K+t77yJXG4gICAqIDE0LiB0aC1USO+8iOazsOivre+8iVxuICAgKiAxNS4gbXMtTVnvvIjpqazmnaXor63vvIlcbiAgICogMTYuIGFyLVNB77yI6Zi/5ouJ5Lyv6K+t77yJXG4gICAqXG4gICAqIOS4uuWFvOWuueaXp+eJiOWGmeazle+8jOS7jeaOpeWPlyBlbuOAgWph77yM5Lyg5YWl5ZCO5Lya6Ieq5Yqo5pig5bCE5Li6IGVuLVVT44CBamEtSlDjgIJcbiAgICovXG4gIGxhbmc/OlxuICAgIHwgJ3poLUNOJ1xuICAgIHwgJ3poLVRXJ1xuICAgIHwgJ2VuLVVTJ1xuICAgIHwgJ2phLUpQJ1xuICAgIHwgJ2tvLUtSJ1xuICAgIHwgJ2VzLUVTJ1xuICAgIHwgJ3B0LVBUJ1xuICAgIHwgJ2RlLURFJ1xuICAgIHwgJ2ZyLUZSJ1xuICAgIHwgJ2l0LUlUJ1xuICAgIHwgJ3J1LVJVJ1xuICAgIHwgJ2lkLUlEJ1xuICAgIHwgJ3ZpLVZOJ1xuICAgIHwgJ3RoLVRIJ1xuICAgIHwgJ21zLU1ZJ1xuICAgIHwgJ2FyLVNBJ1xuICAgIHwgJ2VuJ1xuICAgIHwgJ2phJ1xuXG4gIC8qKlxuICAgKiDmmK/lkKbnpoHnlKjmj5Dlj4rnmoTmta7liqjljaHniYfnu4Tku7ZcbiAgICovXG4gIGRpc2FibGVNZW50aW9uQ2FyZHM/OiBEaXNhYmxlTWVudGlvbkNhcmRzXG5cbiAgLyoqXG4gICAqIOeUqOS6juimhueblue8lui+keWZqOWGhemDqOWIhiB0b2FzdCDmlofmoYjjgIJcbiAgICog5pSv5oyB5aWX5Lu257G75Z6L77yaZm9ybeOAgWRvY3VtZW50UHJv44CBcHJlc2VudGF0aW9u44CBc3ByZWFkc2hlZXTjgIF0YWJsZe+8iOS7heWvueaUr+aMgSB1aSDphY3nva7nmoTlpZfku7bnlJ/mlYjvvInjgIJcbiAgICog5b2T5YmN5bey5paH5qGj5YyW5pSv5oyB5a2X5q6177yadWkudG9hc3QudGlwcy5lZGl0Lm5vUGVybWlzc2lvbuOAglxuICAgKiDlhbbku5blrZfmrrXmmoLkuI3kvZzkuLrnqLPlrprlhazlhbEgQVBJIOaJv+ivuuOAglxuICAgKi9cbiAgdWk/OiB7XG4gICAgdG9hc3Q/OiBTREtUb2FzdE9wdGlvbnNcbiAgfVxuXG4gIC8qKlxuICAgKiDnlKjkuo7mjqfliLYgaWZyYW1lIGZlYXR1cmUgcG9saWN5IChodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy96aC1DTi9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvRmVhdHVyZS1Qb2xpY3kpIOOAglxuICAgKiDkvJropobnm5bpu5jorqTnmoQgcG9saWN577yM5Zug5q2k5L2/55So5pe26ZyA6KaB5rOo5oSP5oqK6ZyA6KaB55qEIHBvbGljeSDlhpnlrozmlbTjgIJcbiAgICovXG4gIGFsbG93UG9saWN5Pzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIOaYr+WQpuW8gOWQr+iwg+ivleaooeW8j++8jHRydWUg5Lya6YCa6L+HIGNvbnNvbGUg5omT5Y2w5LiA5Lqb5L+h5oGvXG4gICAqL1xuICBkZWJ1Zz86IGJvb2xlYW5cblxuICAvKipcbiAgICog57yW6L6R5Zmo5o+S5Lu26YWN572u77yM5LiN5piv5omA5pyJ57G75Z6L55qE5aWX5Lu26YO95pSv5oyB77yM5Lul5aWX5Lu25piv5ZCm5o+Q5L6bIFBsdWdpbk9wdGlvbnMg5Li65YeGXG4gICAqL1xuICBwbHVnaW5zPzogU3ByZWFkc2hlZXQuUGx1Z2luT3B0aW9ucyB8IFRhYmxlLlBsdWdpbk9wdGlvbnNcblxuICAvKipcbiAgICogaWZyYW1lIHBvc3RNZXNzYWdlIOeahOebruaghyBvcmlnaW7vvIzpu5jorqTmmK/lvZPliY3pobXpnaLnmoQgbG9jYXRpb24ub3JpZ2lu44CCXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICB0YXJnZXRPcmlnaW4/OiBzdHJpbmdcblxuICAvKipcbiAgICog5L2/55So5LuA5LmI6K6+5aSH57G75Z6L5qih5byP77yM5Lya55u05o6l5b2x5ZON5Yqf6IO95ZKM5qC35byP77yM5LiN5Lyg5YC85oiW56m65a2X56ym5Liy5YiZ6buY6K6k55SoIHVzZXItYWdlbnQg6Ieq5Yqo5Yik5pat44CC5Y+X54mI5pys6ZmQ5Yi277yM5LiN5piv5omA5pyJ57G75Z6L6YO95pSv5oyB44CCXG4gICAqL1xuICBkZXZpY2VNb2RlPzogRGV2aWNlTW9kZVxuXG4gIC8qKlxuICAgKiDmmK/lkKbnpoHnlKjpu5jorqTnmoTnrb7lkI3nu4Tku7bvvIzku6XmlK/mjIHoh6rlrprkuYnnrb7lkI3nu4Tku7bjgILlj5fniYjmnKzpmZDliLbvvIzpg6jliIbniYjmnKznmoTnibnlrprnsbvlnovmlofmoaPmiY3mlK/mjIHjgIJcbiAgICovXG4gIGRpc2FibGVTaWduYXR1cmVDb21wb25lbnQ/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIOaOp+WItiBoZWFkZXJiYXIg57uE5Lu25piv5ZCm5bGV56S677yMZmFsc2Ug6KGo56S66ZqQ6JeP44CCXG4gICAqL1xuICBoZWFkZXJCYXJzVmlzaWJsZT86IGJvb2xlYW5cblxuICAvKipcbiAgICogZG9jcyDmlpzmnaDoj5zljZXphY3nva7jgIJcbiAgICog5LuFIGRvY3Mg5paH5Lu257G75Z6L55Sf5pWI77ybYGJ1dHRvbi5jYWxsYmFja2Ag5a6e6ZmF6L+Q6KGM5Zyo5a6/5Li76aG177yMXG4gICAqIOS8muWcqCBpZnJhbWUg5YaF54K55Ye76I+c5Y2V5oyJ6ZKu5ZCO6YCa6L+HIHBvc3RNZXNzYWdlL2NoYW5uZWwg5Zue6LCD6Kem5Y+R44CCXG4gICAqL1xuICBzbGFzaE1lbnU/OiBTbGFzaE1lbnVPcHRpb25zXG5cbiAgLyoqXG4gICAqIOaYr+WQpuaYvuekuuWGhee9rueahOWKoOi9veWKqOeUu++8jOWPquWcqOmdmeaAgei1hOa6kOWKoOi9veWIsOe8lui+keWZqOa4suafk+i/meS4qumYtuauteaYvuekulxuICAgKi9cbiAgc2hvd0xvYWRpbmdFZmZlY3Q/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIOaYr+WQpuWQr+eUqCBpZnJhbWUg5YaF572u6buY6K6k5Yqg6L296aG177yM6buY6K6kIGZhbHNl44CCXG4gICAqIOmakOiXj+WQjuaOpeWFpeaWueWPr+iHquWumuS5ieWklumDqCBsb2FkaW5n44CCXG4gICAqL1xuICBzaG93TG9hZGluZz86IGJvb2xlYW5cblxuICAvKipcbiAgICogaWZyYW1lIOWGhee9ruWKoOi9vemhtemFjee9ruOAguS7heWcqCBgc2hvd0xvYWRpbmcgPT09IHRydWVgXG4gICAqIOaIliBgc2hvd0xvYWRpbmdFZmZlY3QgPT09IHRydWVgIOaXtumAj+S8oOe7mSBpZnJhbWXjgIJcbiAgICovXG4gIGxvYWRpbmdPcHRpb25zPzogTG9hZGluZ09wdGlvbnNcblxuICAvKipcbiAgICog55So5LqO5Zyo57yW6L6R5Zmo5Y+R6LW3IEFQSSDor7fmsYLml7bvvIzlr7nor7fmsYLlj4LmlbDov5vooYzkv67mlLnnmoTlh73mlbDjgILor6bnu4bnlKjms5Xop4HmlofmoaPjgIJcbiAgICovXG4gIGFwaUFkYXB0b3I/OiBBUElBZGFwdG9yXG5cbiAgLyoqXG4gICAqIOeUqOS6juWcqOe8lui+keWZqOWPkei1tyBBUEkg6K+35rGC5pe277yM5a+56K+35rGC5Y+C5pWw6L+b6KGM5L+u5pS555qE5Ye95pWw5pe25Lyg5YWl55qE5LiK5LiL5paH5pWw5o2u44CCXG4gICAqL1xuICBhcGlBZGFwdG9yQ29udGV4dD86IFJlcXVlc3RDb250ZXh0XG5cbiAgLyoqXG4gICAqIOeUqOS6juWIpOaWremAmuS/oea2iOaBr+i/h+acn+aXtumXtO+8jOi/h+acn+WQjueahOa2iOaBr+S8muiiq+aKm+W8g++8jOm7mOiupCA1IOWIhumSn+OAglxuICAgKi9cbiAgbWVzc2FnZUV4cGlyZXM/OiBudW1iZXJcblxuICAvKipcbiAgICog5Yqg5a+G5ZCO55qE55So5oi3aWRcbiAgICovXG4gIHVzZXJVdWlkPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIOe8uuecgemhte+8iEVtcHR5IFBhZ2XvvInphY3nva7jgIJcbiAgICogLSDkuI3kvKDmiJbkvKAgYHRydWVg77ya5ZCv55So6buY6K6k57y655yB6aG16IO95Yqb77yI5pyJ5YaF572u5Zu+54mH5LiO6buY6K6k5paH5qGI77yMKirml6DmjInpkq4qKu+8iVxuICAgKiAtIOS8oCBgZmFsc2Vg77ya5a6M5YWo5YWz6ZetXG4gICAqIC0g5Lyg5a+56LGh77ya57K+57uG5o6n5Yi25ZCv55So55qEIHNjZW5l44CBdG9rZW4g6L+H5pyf562W55Wl77yM5Lul5Y+K5q+P5LiqIHNjZW5lIOeahFxuICAgKiAgIOaWh+ahiC/mjInpkq7oh6rlrprkuYnvvIhgb3ZlcnJpZGVzYO+8ieOAgum7mOiupOS4jea4suafk+S7u+S9leaMiemSru+8jOWuv+S4u+mcgOimgeaMiemSruaXtuW/hemhu1xuICAgKiAgIOWcqCBgb3ZlcnJpZGVzW3NjZW5lXS5wcmltYXJ5L3NlY29uZGFyeWAg6YeM5pi+5byP6YWN572uIGxhYmVs77yM54K55Ye757uf5LiA6Kem5Y+RXG4gICAqICAgYGVtcHR5UGFnZUFjdGlvbmAg5LqL5Lu255Sx5a6/5Li75aSE55CG44CCXG4gICAqXG4gICAqIOebuOWFs+S6i+S7tu+8mmBlbXB0eVBhZ2VTaG93bmAgLyBgZW1wdHlQYWdlQWN0aW9uYCAvIGBlbXB0eVBhZ2VIaWRkZW5g44CCXG4gICAqIOivpuingSBgLi90eXBlcy9FbXB0eVBhZ2UudHNg44CCXG4gICAqL1xuICBlbXB0eVBhZ2U/OiBib29sZWFuIHwgRW1wdHlQYWdlT3B0aW9uc1xufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGFzc2VydDxUPihcbiAgaW5wdXQ6IGFueSxcbiAgY29uZGl0aW9uOiAoaW5wdXQ6IGFueSkgPT4gYm9vbGVhbixcbiAgbWVzc2FnZTogc3RyaW5nXG4pOiBUIHtcbiAgaWYgKGNvbmRpdGlvbihpbnB1dCkpIHtcbiAgICByZXR1cm4gaW5wdXRcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKVxufVxuIiwiaW1wb3J0IHsgT2ZmaWNlU0RLLCBPZmZpY2VTREtPcHRpb25zIH0gZnJvbSAnLi9PZmZpY2VTREsnXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdE9wdGlvbnMgZXh0ZW5kcyBPZmZpY2VTREtPcHRpb25zIHt9XG5cbi8qKlxuICog5Yid5aeL5YyWIFNES++8jOi/lOWbniBQcm9taXNl77yM5b2TIFJlYWRTdGF0ZSDlj5jkuLogUmVhZHkg5oiWIEZhaWxlZCDml7bvvIxQcm9taXNlIOWwhuiiqyByZXNvbHZl44CCXG4gKiBQcm9taXNlIHJlc292bGVkIOS4jeS7o+ihqOe8lui+keWZqOW3sue7j+WujOaVtOWKoOi9veWujOavle+8jOWPquS7o+ihqCBTREsg5bey57uP5YeG5aSH5aW95LqG44CCXG4gKiDlkIzml7YgUHJvbWlzZSDkuIDnm7QgcGVuZGluZyDkuZ/kuI3ku6PooajnvJbovpHlmajliqDovb3lpLHotKXvvIzlj6rku6Pooajml6Dms5XpgJrov4cgU0RLIOWSjOe8lui+keWZqOS6pOS6kuOAglxuICog5q+U5aaC5Y+X5rWP6KeI5Zmo6ZmQ5Yi25peg5rOV5Y+R5Ye6IHBvc3RNZXNzYWdlKCkg5pe277yMUHJvbWlzZSDlsIbkvJrkuIDnm7QgcGVuZGluZ+OAglxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29ubmVjdChvcHRpb25zOiBDb25uZWN0T3B0aW9ucyk6IFByb21pc2U8T2ZmaWNlU0RLPiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc2RrID0gbmV3IE9mZmljZVNESyhvcHRpb25zKVxuICAgIGF3YWl0IHNkay5pbml0KClcbiAgICByZXR1cm4gc2RrXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZygnRmFpbGVkIHRvIGluaXQgT2ZmaWNlU0RLJywge1xuICAgICAgZXJyb3I6IGUsXG4gICAgICBvcHRpb25zXG4gICAgfSlcbiAgICB0aHJvdyBlXG4gIH1cbn1cbiIsImltcG9ydCAqIGFzIERvY3VtZW50UHJvIGZyb20gJy4vdHlwZXMvRG9jdW1lbnRQcm8nXG5pbXBvcnQgKiBhcyBEb2N1bWVudCBmcm9tICcuL3R5cGVzL0RvY3VtZW50J1xuaW1wb3J0ICogYXMgU3ByZWFkc2hlZXQgZnJvbSAnLi90eXBlcy9TcHJlYWRzaGVldCdcbmltcG9ydCAqIGFzIFByZXNlbnRhdGlvbiBmcm9tICcuL3R5cGVzL1ByZXNlbnRhdGlvbidcbmltcG9ydCAqIGFzIFRhYmxlIGZyb20gJy4vdHlwZXMvVGFibGUnXG5pbXBvcnQgKiBhcyBGb3JtIGZyb20gJy4vdHlwZXMvRm9ybSdcbmltcG9ydCAqIGFzIEZsb3djaGFydCBmcm9tICcuL3R5cGVzL0Zsb3dDaGFydCdcbmltcG9ydCB7IEV2ZW50TWFwIGFzIEJhc2VFdmVudE1hcCwgQmFzZUVkaXRvciB9IGZyb20gJy4vdHlwZXMvQmFzZUVkaXRvcidcblxuZXhwb3J0ICogZnJvbSAnd2Vib2ZmaWNlLWpzLXNkay1zaGFyZWQnXG5cbmV4cG9ydCAqIGZyb20gJy4vY29ubmVjdCdcblxuZXhwb3J0ICogZnJvbSAnLi9PZmZpY2VTREsnXG5cbmV4cG9ydCB0eXBlIHtcbiAgRW1wdHlQYWdlU2NlbmUsXG4gIEVtcHR5UGFnZU9wdGlvbnMsXG4gIEVtcHR5UGFnZUFjdGlvbk92ZXJyaWRlLFxuICBFbXB0eVBhZ2VDb250ZW50T3ZlcnJpZGUsXG4gIE5vcm1hbGl6ZWRFbXB0eVBhZ2VPcHRpb25zLFxuICBFbXB0eVBhZ2VTaG93blBheWxvYWQsXG4gIEVtcHR5UGFnZUFjdGlvblBheWxvYWQsXG4gIEVtcHR5UGFnZUhpZGRlblBheWxvYWQsXG4gIEZpbGVPcGVuRmFpbGVkUmVhc29uLFxuICBUb2tlbkV4cGlyZWRTdHJhdGVneVxufSBmcm9tICcuL3R5cGVzL0VtcHR5UGFnZSdcbmV4cG9ydCB0eXBlIHtcbiAgU2xhc2hNZW51QnV0dG9uLFxuICBTbGFzaE1lbnVFbnRyeSxcbiAgU2xhc2hNZW51T3B0aW9uc1xufSBmcm9tICcuL3R5cGVzL1NsYXNoTWVudSdcbmV4cG9ydCB7XG4gIEFMTF9FTVBUWV9QQUdFX1NDRU5FUyxcbiAgbm9ybWFsaXplRW1wdHlQYWdlT3B0aW9uc1xufSBmcm9tICcuL3R5cGVzL0VtcHR5UGFnZSdcblxuZXhwb3J0IHtcbiAgQmFzZUVkaXRvcixcbiAgRG9jdW1lbnRQcm8sXG4gIERvY3VtZW50LFxuICBTcHJlYWRzaGVldCxcbiAgUHJlc2VudGF0aW9uLFxuICBUYWJsZSxcbiAgRm9ybSxcbiAgRmxvd2NoYXJ0LFxuICBCYXNlRXZlbnRNYXBcbn1cblxuZXhwb3J0IGNvbnN0IFNUQVJUX1BBUkFNU19GSUVMRCA9ICdzbVBhcmFtcydcbiIsIi8qKlxuICog57y655yB6aG16IO95Yqb55qE5a+55aSW5aWR57qm57G75Z6L44CCXG4gKlxuICog5YWz5LqOIHNjZW5lIOaemuS4vuW9kuWxnu+8iOW3suehruWumu+8ie+8mlxuICogICBQMX5QNCDlrp7mlr3mnJ/vvIzkuKTkvqfvvIhzaGltby1qcy1zZGsg5LiOIGxpemFyZC1zZXJ2aWNlLWlmcmFtZS1zZGvvvInlnKjmnKzlnLAgdHlwZXNcbiAqICAg5paH5Lu26YeM5omL5bel5L+d5oyB5a2X6Z2i6YeP5LiA6Ie077yb6IGU6LCD56iz5a6a5ZCO5rKJ5reA5YiwIGBzaGltby1qcy1zZGstc2hhcmVkYCDnmoTluLjph4/kuK3jgIJcbiAqL1xuXG4vKipcbiAqIOe8uuecgemhteWcuuaZr+aemuS4vu+8jOW/hemhu+S4jiBgbGl6YXJkLXNlcnZpY2UtaWZyYW1lLXNka2Ag5L6n5a6M5YWo5LiA6Ie044CCXG4gKi9cbmV4cG9ydCB0eXBlIEVtcHR5UGFnZVNjZW5lID1cbiAgfCAnZmlsZS1vcGVuLWZhaWxlZCdcbiAgfCAnbm8tcGVybWlzc2lvbidcbiAgfCAnbmV0d29yay1lcnJvcidcbiAgfCAndG9rZW4tZXhwaXJlZCdcblxuLyoqXG4gKiBgZmlsZS1vcGVuLWZhaWxlZGAg5LiL5Y+v57uG5YiG55qE5a2Q5Y6f5Zug77yM5om/6L29IEhUVFAg5Y2P6K6u57qn5beu5byC77ybXG4gKiDkv53mjIEgc2NlbmUg5p6a5Li+57KS5bqm56iz5a6a77yM57uG6IqC6YCa6L+HIHJlYXNvbiDkuIvpkrvjgIJcbiAqL1xuZXhwb3J0IHR5cGUgRmlsZU9wZW5GYWlsZWRSZWFzb24gPVxuICB8ICdmaWxlLW5vdC1mb3VuZCdcbiAgfCAnZmlsZS1kZWxldGVkJ1xuICB8ICdmaWxlLWxvYWQtZmFpbGVkJ1xuICB8ICd1bmtub3duJ1xuXG5leHBvcnQgdHlwZSBUb2tlbkV4cGlyZWRTdHJhdGVneSA9ICdyZWZyZXNoLWZpcnN0JyB8ICdzaG93LWltbWVkaWF0ZWx5J1xuXG4vKipcbiAqIOWNleS4quaMiemSrueahOiHquWumuS5ieOAgueCueWHu+WQjue7n+S4gOinpuWPkSBgZW1wdHlQYWdlQWN0aW9uYCDkuovku7bvvIxcbiAqIOWuv+S4u+ebkeWQrOS6i+S7tuWQjuiHquihjOWGs+WumuWQjue7reihjOS4uu+8iOmHjeeZuyAvIOmHjeivlSAvIOmakOiXj+etie+8ieOAglxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVtcHR5UGFnZUFjdGlvbk92ZXJyaWRlIHtcbiAgLyoqIOaMiemSruaWh+ahiOOAguW/heWhq+OAgiAqL1xuICBsYWJlbDogc3RyaW5nXG59XG5cbi8qKlxuICog5Y2V5LiqIHNjZW5lIOeahOaWh+ahiC/mjInpkq7oh6rlrprkuYnjgILmnKrmj5DkvpvnmoTlrZfmrrXotbDlhoXnva7pu5jorqTvvIjmlofmoYjotbDpu5jorqTvvIzmjInpkq7kuI3muLLmn5PvvInjgIJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbXB0eVBhZ2VDb250ZW50T3ZlcnJpZGUge1xuICAvKiog6KaG55uW5qCH6aKY44CCICovXG4gIHRpdGxlPzogc3RyaW5nXG4gIC8qKiDopobnm5bmj4/ov7DjgIIgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgLyoqIOS4u+aMiemSruOAguS4jeS8oOWImeS4jea4suafk+S4u+aMiemSruOAgiAqL1xuICBwcmltYXJ5PzogRW1wdHlQYWdlQWN0aW9uT3ZlcnJpZGVcbiAgLyoqIOasoeaMiemSruOAguS4jeS8oOWImeS4jea4suafk+asoeaMiemSruOAgiAqL1xuICBzZWNvbmRhcnk/OiBFbXB0eVBhZ2VBY3Rpb25PdmVycmlkZVxufVxuXG4vKipcbiAqIOWuv+S4u+mAmui/hyBgY29ubmVjdCh7IGVtcHR5UGFnZSB9KWAg5Lyg5YWl55qE6YWN572u44CC5omA5pyJ5a2X5q615Z2H5Y+v6YCJ44CCXG4gKlxuICog6buY6K6k6KGM5Li677yaXG4gKiAtIOWbvueJhyAvIOaWh+ahiO+8iHRpdGxlIC8gZGVzY3JpcHRpb27vvInlnYflhoXnva7vvIzlrr/kuLvml6DpnIDkvKBcbiAqIC0gKirpu5jorqTkuI3muLLmn5Pku7vkvZXmjInpkq4qKuOAguWmgumcgOaMiemSru+8jOW/hemhu+WcqCBgb3ZlcnJpZGVzW3NjZW5lXS5wcmltYXJ5L3NlY29uZGFyeWBcbiAqICAg6YeM5pi+5byP6YWN572uIGxhYmVs44CC5oyJ6ZKu54K55Ye757uf5LiA6Kem5Y+RIGBlbXB0eVBhZ2VBY3Rpb25gIOS6i+S7tuOAglxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVtcHR5UGFnZU9wdGlvbnMge1xuICAvKipcbiAgICog5oC75byA5YWz77yM6buY6K6kIHRydWXjgIJcbiAgICovXG4gIGVuYWJsZWQ/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIOWQr+eUqOeahOWcuuaZr+eZveWQjeWNleOAguacquaMh+WumuaXtuWFqOmDqOWQr+eUqOOAglxuICAgKi9cbiAgc2NlbmVzPzogRW1wdHlQYWdlU2NlbmVbXVxuXG4gIC8qKlxuICAgKiB0b2tlbiDov4fmnJ/lnLrmma/nmoTlrprliLbnrZbnlaXvvJpcbiAgICogLSBgcmVmcmVzaC1maXJzdGDvvIjpu5jorqTvvInvvJrlhYjotbDkuIDmrKEgZ2V0Q3JlZGVudGlhbHMg5Yi35paw77yM5aSx6LSl5YaN5bGV56S657y655yB6aG1XG4gICAqICAgLSDku4XlnKjlrr/kuLvkvKDkuoYgYGdldENyZWRlbnRpYWxzYCDml7bnlJ/mlYhcbiAgICogICAtIOacgOWkmumHjeivlSAxIOasoe+8jDVzIOi2heaXtuaMieWksei0peWkhOeQhlxuICAgKiAtIGBzaG93LWltbWVkaWF0ZWx5YO+8mueri+WNs+Wxleekuu+8jOS4jeWBmuWIt+aWsOWwneivlVxuICAgKlxuICAgKiDmnKrkvKAgYGdldENyZWRlbnRpYWxzYCDml7bvvIzml6DorrrphY3nva7lpoLkvZXpg73mjIkgYHNob3ctaW1tZWRpYXRlbHlgIOaJp+ihjOOAglxuICAgKi9cbiAgdG9rZW5FeHBpcmVkU3RyYXRlZ3k/OiBUb2tlbkV4cGlyZWRTdHJhdGVneVxuXG4gIC8qKlxuICAgKiDmjIkgc2NlbmUg6Ieq5a6a5LmJ5paH5qGI5ZKM5oyJ6ZKu44CC5pyq6YWN572uIHNjZW5lIOi1sOm7mOiupOihjOS4uu+8iOm7mOiupOaWh+ahiCArIOaXoOaMiemSru+8ieOAglxuICAgKi9cbiAgb3ZlcnJpZGVzPzogUGFydGlhbDxSZWNvcmQ8RW1wdHlQYWdlU2NlbmUsIEVtcHR5UGFnZUNvbnRlbnRPdmVycmlkZT4+XG59XG5cbi8qKlxuICog5b2S5LiA5YyW5ZCO55qE57y655yB6aG16YWN572u77yM6YCP5Lyg57uZIGlmcmFtZSDkvb/nlKjjgIJcbiAqIOaJgOacieWfuuehgOWtl+autemDveaYr+W/heWhq+S4lOWujOaVtOWhq+WFhe+8jGlmcmFtZSDkvqfkuI3pnIDopoHlho3ooaXpu5jorqTlgLzjgIJcbiAqIGBvdmVycmlkZXNgIOS/neaMgeeogOeWj++8iOS7heaQuuW4puWuv+S4u+aYvuW8j+S8oOWFpeeahOWtl+aute+8ie+8jOmBv+WFjemAj+S8oOWkmuS9meaVsOaNruOAglxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vcm1hbGl6ZWRFbXB0eVBhZ2VPcHRpb25zIHtcbiAgZW5hYmxlZDogYm9vbGVhblxuICBzY2VuZXM6IEVtcHR5UGFnZVNjZW5lW11cbiAgdG9rZW5FeHBpcmVkU3RyYXRlZ3k6IFRva2VuRXhwaXJlZFN0cmF0ZWd5XG4gIG92ZXJyaWRlczogUGFydGlhbDxSZWNvcmQ8RW1wdHlQYWdlU2NlbmUsIEVtcHR5UGFnZUNvbnRlbnRPdmVycmlkZT4+XG59XG5cbi8qKlxuICogYGVtcHR5UGFnZVNob3duYCDkuovku7YgcGF5bG9hZOOAglxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVtcHR5UGFnZVNob3duUGF5bG9hZCB7XG4gIHNjZW5lOiBFbXB0eVBhZ2VTY2VuZVxuICAvKipcbiAgICogc2NlbmUg5YaF55qE5a2Q57G75Z6L77yI5aaCIEZpbGVPcGVuRmFpbGVkUmVhc29u77yJ77yM5a6/5Li75Y+v55So5LqO5a6a5Yi25paH5qGI5oiW5Z+L54K544CCXG4gICAqL1xuICByZWFzb24/OiBGaWxlT3BlbkZhaWxlZFJlYXNvbiB8IHN0cmluZ1xuICBodHRwU3RhdHVzPzogbnVtYmVyXG4gIHJldHJ5YWJsZT86IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBgZW1wdHlQYWdlQWN0aW9uYCDkuovku7YgcGF5bG9hZO+8jOaMiemSruiiq+eCueWHu+aXtuinpuWPkeOAglxuICog5a6/5Li75qC55o2uIHNjZW5lICsgYWN0aW9uIOWGs+WumuS4muWKoeihjOS4uu+8iOmHjeeZuyAvIOmHjeivlSAvIOmakOiXj+etie+8ieOAglxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVtcHR5UGFnZUFjdGlvblBheWxvYWQge1xuICBzY2VuZTogRW1wdHlQYWdlU2NlbmVcbiAgYWN0aW9uOiAncHJpbWFyeScgfCAnc2Vjb25kYXJ5J1xufVxuXG4vKipcbiAqIGBlbXB0eVBhZ2VIaWRkZW5gIOS6i+S7tiBwYXlsb2Fk44CCXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1wdHlQYWdlSGlkZGVuUGF5bG9hZCB7XG4gIHNjZW5lOiBFbXB0eVBhZ2VTY2VuZVxufVxuXG4vKipcbiAqIOWujOaVtOeahCBzY2VuZSDliJfooajvvIznlKjkuo7kvZzkuLrpu5jorqTlgLzkuI7lkIjms5XmgKfmoKHpqozjgIJcbiAqL1xuZXhwb3J0IGNvbnN0IEFMTF9FTVBUWV9QQUdFX1NDRU5FUzogRW1wdHlQYWdlU2NlbmVbXSA9IFtcbiAgJ2ZpbGUtb3Blbi1mYWlsZWQnLFxuICAnbm8tcGVybWlzc2lvbicsXG4gICduZXR3b3JrLWVycm9yJyxcbiAgJ3Rva2VuLWV4cGlyZWQnXG5dXG5cbmZ1bmN0aW9uIHJlc29sdmVTY2VuZXMoaW5wdXQ6IEVtcHR5UGFnZVNjZW5lW10gfCB1bmRlZmluZWQpOiBFbXB0eVBhZ2VTY2VuZVtdIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGlucHV0KSkge1xuICAgIHJldHVybiBbLi4uQUxMX0VNUFRZX1BBR0VfU0NFTkVTXVxuICB9XG5cbiAgY29uc3QgZmlsdGVyZWQ6IEVtcHR5UGFnZVNjZW5lW10gPSBbXVxuICBmb3IgKGNvbnN0IHNjZW5lIG9mIGlucHV0KSB7XG4gICAgaWYgKEFMTF9FTVBUWV9QQUdFX1NDRU5FUy5pbmNsdWRlcyhzY2VuZSkpIHtcbiAgICAgIGZpbHRlcmVkLnB1c2goc2NlbmUpXG4gICAgfVxuICB9XG5cbiAgaWYgKGZpbHRlcmVkLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbLi4uQUxMX0VNUFRZX1BBR0VfU0NFTkVTXVxuICB9XG5cbiAgcmV0dXJuIGZpbHRlcmVkXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVUb2tlbkV4cGlyZWRTdHJhdGVneShcbiAgaW5wdXQ6IFRva2VuRXhwaXJlZFN0cmF0ZWd5IHwgdW5kZWZpbmVkXG4pOiBUb2tlbkV4cGlyZWRTdHJhdGVneSB7XG4gIGlmIChpbnB1dCA9PT0gJ3Nob3ctaW1tZWRpYXRlbHknKSB7XG4gICAgcmV0dXJuICdzaG93LWltbWVkaWF0ZWx5J1xuICB9XG4gIHJldHVybiAncmVmcmVzaC1maXJzdCdcbn1cblxuZnVuY3Rpb24gcGlja1N0cmluZyh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA+IDAgPyB2YWx1ZSA6IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiByZXNvbHZlQWN0aW9uKFxuICBpbnB1dDogRW1wdHlQYWdlQWN0aW9uT3ZlcnJpZGUgfCB1bmRlZmluZWRcbik6IEVtcHR5UGFnZUFjdGlvbk92ZXJyaWRlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFpbnB1dCB8fCB0eXBlb2YgaW5wdXQgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG4gIGNvbnN0IGxhYmVsID0gcGlja1N0cmluZyhpbnB1dC5sYWJlbClcbiAgaWYgKCFsYWJlbCkge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuICByZXR1cm4geyBsYWJlbCB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVDb250ZW50T3ZlcnJpZGUoXG4gIGlucHV0OiBFbXB0eVBhZ2VDb250ZW50T3ZlcnJpZGUgfCB1bmRlZmluZWRcbik6IEVtcHR5UGFnZUNvbnRlbnRPdmVycmlkZSB8IHVuZGVmaW5lZCB7XG4gIGlmICghaW5wdXQgfHwgdHlwZW9mIGlucHV0ICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogRW1wdHlQYWdlQ29udGVudE92ZXJyaWRlID0ge31cbiAgY29uc3QgdGl0bGUgPSBwaWNrU3RyaW5nKGlucHV0LnRpdGxlKVxuICBpZiAodGl0bGUpIHtcbiAgICByZXN1bHQudGl0bGUgPSB0aXRsZVxuICB9XG4gIGNvbnN0IGRlc2NyaXB0aW9uID0gcGlja1N0cmluZyhpbnB1dC5kZXNjcmlwdGlvbilcbiAgaWYgKGRlc2NyaXB0aW9uKSB7XG4gICAgcmVzdWx0LmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25cbiAgfVxuICBjb25zdCBwcmltYXJ5ID0gcmVzb2x2ZUFjdGlvbihpbnB1dC5wcmltYXJ5KVxuICBpZiAocHJpbWFyeSkge1xuICAgIHJlc3VsdC5wcmltYXJ5ID0gcHJpbWFyeVxuICB9XG4gIGNvbnN0IHNlY29uZGFyeSA9IHJlc29sdmVBY3Rpb24oaW5wdXQuc2Vjb25kYXJ5KVxuICBpZiAoc2Vjb25kYXJ5KSB7XG4gICAgcmVzdWx0LnNlY29uZGFyeSA9IHNlY29uZGFyeVxuICB9XG5cbiAgLy8g5YWo6YOo5a2X5q616YO957y65aSx5pe26KeG5Li6XCLmnKrphY3nva5cIu+8jOiuqea2iOi0ueS+p+i1sOm7mOiupOWIhuaUr1xuICBpZiAoXG4gICAgcmVzdWx0LnRpdGxlID09PSB1bmRlZmluZWQgJiZcbiAgICByZXN1bHQuZGVzY3JpcHRpb24gPT09IHVuZGVmaW5lZCAmJlxuICAgIHJlc3VsdC5wcmltYXJ5ID09PSB1bmRlZmluZWQgJiZcbiAgICByZXN1bHQuc2Vjb25kYXJ5ID09PSB1bmRlZmluZWRcbiAgKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5mdW5jdGlvbiByZXNvbHZlT3ZlcnJpZGVzKFxuICBpbnB1dDogRW1wdHlQYWdlT3B0aW9uc1snb3ZlcnJpZGVzJ11cbik6IFBhcnRpYWw8UmVjb3JkPEVtcHR5UGFnZVNjZW5lLCBFbXB0eVBhZ2VDb250ZW50T3ZlcnJpZGU+PiB7XG4gIGlmICghaW5wdXQgfHwgdHlwZW9mIGlucHV0ICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiB7fVxuICB9XG5cbiAgY29uc3QgcmVzdWx0OiBQYXJ0aWFsPFJlY29yZDxFbXB0eVBhZ2VTY2VuZSwgRW1wdHlQYWdlQ29udGVudE92ZXJyaWRlPj4gPSB7fVxuICBmb3IgKGNvbnN0IHNjZW5lIG9mIEFMTF9FTVBUWV9QQUdFX1NDRU5FUykge1xuICAgIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZUNvbnRlbnRPdmVycmlkZShpbnB1dFtzY2VuZV0pXG4gICAgaWYgKHJlc29sdmVkKSB7XG4gICAgICByZXN1bHRbc2NlbmVdID0gcmVzb2x2ZWRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG4vKipcbiAqIOaKiuWuv+S4u+S8oOWFpeeahCBgZW1wdHlQYWdlYCDphY3nva7lvZLkuIDljJbmiJDlrozmlbTlr7nosaHjgIJcbiAqXG4gKiAtIOacquS8oCAvIHVuZGVmaW5lZO+8muWQr+eUqOWFqOmDqCBzY2VuZe+8jOS9v+eUqOm7mOiupCB0b2tlbkV4cGlyZWRTdHJhdGVnee+8jOS4jeaQuuW4piBvdmVycmlkZXNcbiAqIC0g5LygIHRydWXvvJrnrYnku7fkuo4gYHsgZW5hYmxlZDogdHJ1ZSB9YFxuICogLSDkvKAgZmFsc2XvvJrnrYnku7fkuo4gYHsgZW5hYmxlZDogZmFsc2UgfWDvvIzlhbbkvZnlrZfmrrXku43loavlhYXpu5jorqTku6Xkv53or4HlvaLnirbkuIDoh7RcbiAqIC0g5Lyg5a+56LGh77ya5oyJ5a2X5q616KaG55uW77yM5pyq6KaG55uW6YOo5YiG5L2/55So6buY6K6kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVFbXB0eVBhZ2VPcHRpb25zKFxuICBpbnB1dD86IGJvb2xlYW4gfCBFbXB0eVBhZ2VPcHRpb25zXG4pOiBOb3JtYWxpemVkRW1wdHlQYWdlT3B0aW9ucyB7XG4gIGlmIChpbnB1dCA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICBzY2VuZXM6IFsuLi5BTExfRU1QVFlfUEFHRV9TQ0VORVNdLFxuICAgICAgdG9rZW5FeHBpcmVkU3RyYXRlZ3k6ICdyZWZyZXNoLWZpcnN0JyxcbiAgICAgIG92ZXJyaWRlczoge31cbiAgICB9XG4gIH1cblxuICBpZiAoaW5wdXQgPT09IHRydWUgfHwgaW5wdXQgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB7XG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgc2NlbmVzOiBbLi4uQUxMX0VNUFRZX1BBR0VfU0NFTkVTXSxcbiAgICAgIHRva2VuRXhwaXJlZFN0cmF0ZWd5OiAncmVmcmVzaC1maXJzdCcsXG4gICAgICBvdmVycmlkZXM6IHt9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlbmFibGVkOiB0eXBlb2YgaW5wdXQuZW5hYmxlZCA9PT0gJ2Jvb2xlYW4nID8gaW5wdXQuZW5hYmxlZCA6IHRydWUsXG4gICAgc2NlbmVzOiByZXNvbHZlU2NlbmVzKGlucHV0LnNjZW5lcyksXG4gICAgdG9rZW5FeHBpcmVkU3RyYXRlZ3k6IHJlc29sdmVUb2tlbkV4cGlyZWRTdHJhdGVneShcbiAgICAgIGlucHV0LnRva2VuRXhwaXJlZFN0cmF0ZWd5XG4gICAgKSxcbiAgICBvdmVycmlkZXM6IHJlc29sdmVPdmVycmlkZXMoaW5wdXQub3ZlcnJpZGVzKVxuICB9XG59XG4iLCIvLyBVbmlxdWUgSUQgY3JlYXRpb24gcmVxdWlyZXMgYSBoaWdoIHF1YWxpdHkgcmFuZG9tICMgZ2VuZXJhdG9yLiBJbiB0aGUgYnJvd3NlciB3ZSB0aGVyZWZvcmVcbi8vIHJlcXVpcmUgdGhlIGNyeXB0byBBUEkgYW5kIGRvIG5vdCBzdXBwb3J0IGJ1aWx0LWluIGZhbGxiYWNrIHRvIGxvd2VyIHF1YWxpdHkgcmFuZG9tIG51bWJlclxuLy8gZ2VuZXJhdG9ycyAobGlrZSBNYXRoLnJhbmRvbSgpKS5cbnZhciBnZXRSYW5kb21WYWx1ZXM7XG52YXIgcm5kczggPSBuZXcgVWludDhBcnJheSgxNik7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBybmcoKSB7XG4gIC8vIGxhenkgbG9hZCBzbyB0aGF0IGVudmlyb25tZW50cyB0aGF0IG5lZWQgdG8gcG9seWZpbGwgaGF2ZSBhIGNoYW5jZSB0byBkbyBzb1xuICBpZiAoIWdldFJhbmRvbVZhbHVlcykge1xuICAgIC8vIGdldFJhbmRvbVZhbHVlcyBuZWVkcyB0byBiZSBpbnZva2VkIGluIGEgY29udGV4dCB3aGVyZSBcInRoaXNcIiBpcyBhIENyeXB0byBpbXBsZW1lbnRhdGlvbi4gQWxzbyxcbiAgICAvLyBmaW5kIHRoZSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBjcnlwdG8gKG1zQ3J5cHRvKSBvbiBJRTExLlxuICAgIGdldFJhbmRvbVZhbHVlcyA9IHR5cGVvZiBjcnlwdG8gIT09ICd1bmRlZmluZWQnICYmIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMgJiYgY3J5cHRvLmdldFJhbmRvbVZhbHVlcy5iaW5kKGNyeXB0bykgfHwgdHlwZW9mIG1zQ3J5cHRvICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgbXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzID09PSAnZnVuY3Rpb24nICYmIG1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcy5iaW5kKG1zQ3J5cHRvKTtcblxuICAgIGlmICghZ2V0UmFuZG9tVmFsdWVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NyeXB0by5nZXRSYW5kb21WYWx1ZXMoKSBub3Qgc3VwcG9ydGVkLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3V1aWRqcy91dWlkI2dldHJhbmRvbXZhbHVlcy1ub3Qtc3VwcG9ydGVkJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGdldFJhbmRvbVZhbHVlcyhybmRzOCk7XG59IiwiZXhwb3J0IGRlZmF1bHQgL14oPzpbMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMS01XVswLTlhLWZdezN9LVs4OWFiXVswLTlhLWZdezN9LVswLTlhLWZdezEyfXwwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDApJC9pOyIsImltcG9ydCBSRUdFWCBmcm9tICcuL3JlZ2V4LmpzJztcblxuZnVuY3Rpb24gdmFsaWRhdGUodXVpZCkge1xuICByZXR1cm4gdHlwZW9mIHV1aWQgPT09ICdzdHJpbmcnICYmIFJFR0VYLnRlc3QodXVpZCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHZhbGlkYXRlOyIsImltcG9ydCB2YWxpZGF0ZSBmcm9tICcuL3ZhbGlkYXRlLmpzJztcbi8qKlxuICogQ29udmVydCBhcnJheSBvZiAxNiBieXRlIHZhbHVlcyB0byBVVUlEIHN0cmluZyBmb3JtYXQgb2YgdGhlIGZvcm06XG4gKiBYWFhYWFhYWC1YWFhYLVhYWFgtWFhYWC1YWFhYWFhYWFhYWFhcbiAqL1xuXG52YXIgYnl0ZVRvSGV4ID0gW107XG5cbmZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyArK2kpIHtcbiAgYnl0ZVRvSGV4LnB1c2goKGkgKyAweDEwMCkudG9TdHJpbmcoMTYpLnN1YnN0cigxKSk7XG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeShhcnIpIHtcbiAgdmFyIG9mZnNldCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMDtcbiAgLy8gTm90ZTogQmUgY2FyZWZ1bCBlZGl0aW5nIHRoaXMgY29kZSEgIEl0J3MgYmVlbiB0dW5lZCBmb3IgcGVyZm9ybWFuY2VcbiAgLy8gYW5kIHdvcmtzIGluIHdheXMgeW91IG1heSBub3QgZXhwZWN0LiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3V1aWRqcy91dWlkL3B1bGwvNDM0XG4gIHZhciB1dWlkID0gKGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMF1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDJdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgM11dICsgJy0nICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA0XV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDVdXSArICctJyArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgNl1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA3XV0gKyAnLScgKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDhdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgOV1dICsgJy0nICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxMF1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxMV1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxMl1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxM11dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxNF1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxNV1dKS50b0xvd2VyQ2FzZSgpOyAvLyBDb25zaXN0ZW5jeSBjaGVjayBmb3IgdmFsaWQgVVVJRC4gIElmIHRoaXMgdGhyb3dzLCBpdCdzIGxpa2VseSBkdWUgdG8gb25lXG4gIC8vIG9mIHRoZSBmb2xsb3dpbmc6XG4gIC8vIC0gT25lIG9yIG1vcmUgaW5wdXQgYXJyYXkgdmFsdWVzIGRvbid0IG1hcCB0byBhIGhleCBvY3RldCAobGVhZGluZyB0b1xuICAvLyBcInVuZGVmaW5lZFwiIGluIHRoZSB1dWlkKVxuICAvLyAtIEludmFsaWQgaW5wdXQgdmFsdWVzIGZvciB0aGUgUkZDIGB2ZXJzaW9uYCBvciBgdmFyaWFudGAgZmllbGRzXG5cbiAgaWYgKCF2YWxpZGF0ZSh1dWlkKSkge1xuICAgIHRocm93IFR5cGVFcnJvcignU3RyaW5naWZpZWQgVVVJRCBpcyBpbnZhbGlkJyk7XG4gIH1cblxuICByZXR1cm4gdXVpZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgc3RyaW5naWZ5OyIsImltcG9ydCBybmcgZnJvbSAnLi9ybmcuanMnO1xuaW1wb3J0IHN0cmluZ2lmeSBmcm9tICcuL3N0cmluZ2lmeS5qcyc7IC8vICoqYHYxKClgIC0gR2VuZXJhdGUgdGltZS1iYXNlZCBVVUlEKipcbi8vXG4vLyBJbnNwaXJlZCBieSBodHRwczovL2dpdGh1Yi5jb20vTGlvc0svVVVJRC5qc1xuLy8gYW5kIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvbGlicmFyeS91dWlkLmh0bWxcblxudmFyIF9ub2RlSWQ7XG5cbnZhciBfY2xvY2tzZXE7IC8vIFByZXZpb3VzIHV1aWQgY3JlYXRpb24gdGltZVxuXG5cbnZhciBfbGFzdE1TZWNzID0gMDtcbnZhciBfbGFzdE5TZWNzID0gMDsgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS91dWlkanMvdXVpZCBmb3IgQVBJIGRldGFpbHNcblxuZnVuY3Rpb24gdjEob3B0aW9ucywgYnVmLCBvZmZzZXQpIHtcbiAgdmFyIGkgPSBidWYgJiYgb2Zmc2V0IHx8IDA7XG4gIHZhciBiID0gYnVmIHx8IG5ldyBBcnJheSgxNik7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICB2YXIgbm9kZSA9IG9wdGlvbnMubm9kZSB8fCBfbm9kZUlkO1xuICB2YXIgY2xvY2tzZXEgPSBvcHRpb25zLmNsb2Nrc2VxICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLmNsb2Nrc2VxIDogX2Nsb2Nrc2VxOyAvLyBub2RlIGFuZCBjbG9ja3NlcSBuZWVkIHRvIGJlIGluaXRpYWxpemVkIHRvIHJhbmRvbSB2YWx1ZXMgaWYgdGhleSdyZSBub3RcbiAgLy8gc3BlY2lmaWVkLiAgV2UgZG8gdGhpcyBsYXppbHkgdG8gbWluaW1pemUgaXNzdWVzIHJlbGF0ZWQgdG8gaW5zdWZmaWNpZW50XG4gIC8vIHN5c3RlbSBlbnRyb3B5LiAgU2VlICMxODlcblxuICBpZiAobm9kZSA9PSBudWxsIHx8IGNsb2Nrc2VxID09IG51bGwpIHtcbiAgICB2YXIgc2VlZEJ5dGVzID0gb3B0aW9ucy5yYW5kb20gfHwgKG9wdGlvbnMucm5nIHx8IHJuZykoKTtcblxuICAgIGlmIChub2RlID09IG51bGwpIHtcbiAgICAgIC8vIFBlciA0LjUsIGNyZWF0ZSBhbmQgNDgtYml0IG5vZGUgaWQsICg0NyByYW5kb20gYml0cyArIG11bHRpY2FzdCBiaXQgPSAxKVxuICAgICAgbm9kZSA9IF9ub2RlSWQgPSBbc2VlZEJ5dGVzWzBdIHwgMHgwMSwgc2VlZEJ5dGVzWzFdLCBzZWVkQnl0ZXNbMl0sIHNlZWRCeXRlc1szXSwgc2VlZEJ5dGVzWzRdLCBzZWVkQnl0ZXNbNV1dO1xuICAgIH1cblxuICAgIGlmIChjbG9ja3NlcSA9PSBudWxsKSB7XG4gICAgICAvLyBQZXIgNC4yLjIsIHJhbmRvbWl6ZSAoMTQgYml0KSBjbG9ja3NlcVxuICAgICAgY2xvY2tzZXEgPSBfY2xvY2tzZXEgPSAoc2VlZEJ5dGVzWzZdIDw8IDggfCBzZWVkQnl0ZXNbN10pICYgMHgzZmZmO1xuICAgIH1cbiAgfSAvLyBVVUlEIHRpbWVzdGFtcHMgYXJlIDEwMCBuYW5vLXNlY29uZCB1bml0cyBzaW5jZSB0aGUgR3JlZ29yaWFuIGVwb2NoLFxuICAvLyAoMTU4Mi0xMC0xNSAwMDowMCkuICBKU051bWJlcnMgYXJlbid0IHByZWNpc2UgZW5vdWdoIGZvciB0aGlzLCBzb1xuICAvLyB0aW1lIGlzIGhhbmRsZWQgaW50ZXJuYWxseSBhcyAnbXNlY3MnIChpbnRlZ2VyIG1pbGxpc2Vjb25kcykgYW5kICduc2VjcydcbiAgLy8gKDEwMC1uYW5vc2Vjb25kcyBvZmZzZXQgZnJvbSBtc2Vjcykgc2luY2UgdW5peCBlcG9jaCwgMTk3MC0wMS0wMSAwMDowMC5cblxuXG4gIHZhciBtc2VjcyA9IG9wdGlvbnMubXNlY3MgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMubXNlY3MgOiBEYXRlLm5vdygpOyAvLyBQZXIgNC4yLjEuMiwgdXNlIGNvdW50IG9mIHV1aWQncyBnZW5lcmF0ZWQgZHVyaW5nIHRoZSBjdXJyZW50IGNsb2NrXG4gIC8vIGN5Y2xlIHRvIHNpbXVsYXRlIGhpZ2hlciByZXNvbHV0aW9uIGNsb2NrXG5cbiAgdmFyIG5zZWNzID0gb3B0aW9ucy5uc2VjcyAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5uc2VjcyA6IF9sYXN0TlNlY3MgKyAxOyAvLyBUaW1lIHNpbmNlIGxhc3QgdXVpZCBjcmVhdGlvbiAoaW4gbXNlY3MpXG5cbiAgdmFyIGR0ID0gbXNlY3MgLSBfbGFzdE1TZWNzICsgKG5zZWNzIC0gX2xhc3ROU2VjcykgLyAxMDAwMDsgLy8gUGVyIDQuMi4xLjIsIEJ1bXAgY2xvY2tzZXEgb24gY2xvY2sgcmVncmVzc2lvblxuXG4gIGlmIChkdCA8IDAgJiYgb3B0aW9ucy5jbG9ja3NlcSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY2xvY2tzZXEgPSBjbG9ja3NlcSArIDEgJiAweDNmZmY7XG4gIH0gLy8gUmVzZXQgbnNlY3MgaWYgY2xvY2sgcmVncmVzc2VzIChuZXcgY2xvY2tzZXEpIG9yIHdlJ3ZlIG1vdmVkIG9udG8gYSBuZXdcbiAgLy8gdGltZSBpbnRlcnZhbFxuXG5cbiAgaWYgKChkdCA8IDAgfHwgbXNlY3MgPiBfbGFzdE1TZWNzKSAmJiBvcHRpb25zLm5zZWNzID09PSB1bmRlZmluZWQpIHtcbiAgICBuc2VjcyA9IDA7XG4gIH0gLy8gUGVyIDQuMi4xLjIgVGhyb3cgZXJyb3IgaWYgdG9vIG1hbnkgdXVpZHMgYXJlIHJlcXVlc3RlZFxuXG5cbiAgaWYgKG5zZWNzID49IDEwMDAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXVpZC52MSgpOiBDYW4ndCBjcmVhdGUgbW9yZSB0aGFuIDEwTSB1dWlkcy9zZWNcIik7XG4gIH1cblxuICBfbGFzdE1TZWNzID0gbXNlY3M7XG4gIF9sYXN0TlNlY3MgPSBuc2VjcztcbiAgX2Nsb2Nrc2VxID0gY2xvY2tzZXE7IC8vIFBlciA0LjEuNCAtIENvbnZlcnQgZnJvbSB1bml4IGVwb2NoIHRvIEdyZWdvcmlhbiBlcG9jaFxuXG4gIG1zZWNzICs9IDEyMjE5MjkyODAwMDAwOyAvLyBgdGltZV9sb3dgXG5cbiAgdmFyIHRsID0gKChtc2VjcyAmIDB4ZmZmZmZmZikgKiAxMDAwMCArIG5zZWNzKSAlIDB4MTAwMDAwMDAwO1xuICBiW2krK10gPSB0bCA+Pj4gMjQgJiAweGZmO1xuICBiW2krK10gPSB0bCA+Pj4gMTYgJiAweGZmO1xuICBiW2krK10gPSB0bCA+Pj4gOCAmIDB4ZmY7XG4gIGJbaSsrXSA9IHRsICYgMHhmZjsgLy8gYHRpbWVfbWlkYFxuXG4gIHZhciB0bWggPSBtc2VjcyAvIDB4MTAwMDAwMDAwICogMTAwMDAgJiAweGZmZmZmZmY7XG4gIGJbaSsrXSA9IHRtaCA+Pj4gOCAmIDB4ZmY7XG4gIGJbaSsrXSA9IHRtaCAmIDB4ZmY7IC8vIGB0aW1lX2hpZ2hfYW5kX3ZlcnNpb25gXG5cbiAgYltpKytdID0gdG1oID4+PiAyNCAmIDB4ZiB8IDB4MTA7IC8vIGluY2x1ZGUgdmVyc2lvblxuXG4gIGJbaSsrXSA9IHRtaCA+Pj4gMTYgJiAweGZmOyAvLyBgY2xvY2tfc2VxX2hpX2FuZF9yZXNlcnZlZGAgKFBlciA0LjIuMiAtIGluY2x1ZGUgdmFyaWFudClcblxuICBiW2krK10gPSBjbG9ja3NlcSA+Pj4gOCB8IDB4ODA7IC8vIGBjbG9ja19zZXFfbG93YFxuXG4gIGJbaSsrXSA9IGNsb2Nrc2VxICYgMHhmZjsgLy8gYG5vZGVgXG5cbiAgZm9yICh2YXIgbiA9IDA7IG4gPCA2OyArK24pIHtcbiAgICBiW2kgKyBuXSA9IG5vZGVbbl07XG4gIH1cblxuICByZXR1cm4gYnVmIHx8IHN0cmluZ2lmeShiKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdjE7IiwiaW1wb3J0IHZhbGlkYXRlIGZyb20gJy4vdmFsaWRhdGUuanMnO1xuXG5mdW5jdGlvbiBwYXJzZSh1dWlkKSB7XG4gIGlmICghdmFsaWRhdGUodXVpZCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ0ludmFsaWQgVVVJRCcpO1xuICB9XG5cbiAgdmFyIHY7XG4gIHZhciBhcnIgPSBuZXcgVWludDhBcnJheSgxNik7IC8vIFBhcnNlICMjIyMjIyMjLS4uLi4tLi4uLi0uLi4uLS4uLi4uLi4uLi4uLlxuXG4gIGFyclswXSA9ICh2ID0gcGFyc2VJbnQodXVpZC5zbGljZSgwLCA4KSwgMTYpKSA+Pj4gMjQ7XG4gIGFyclsxXSA9IHYgPj4+IDE2ICYgMHhmZjtcbiAgYXJyWzJdID0gdiA+Pj4gOCAmIDB4ZmY7XG4gIGFyclszXSA9IHYgJiAweGZmOyAvLyBQYXJzZSAuLi4uLi4uLi0jIyMjLS4uLi4tLi4uLi0uLi4uLi4uLi4uLi5cblxuICBhcnJbNF0gPSAodiA9IHBhcnNlSW50KHV1aWQuc2xpY2UoOSwgMTMpLCAxNikpID4+PiA4O1xuICBhcnJbNV0gPSB2ICYgMHhmZjsgLy8gUGFyc2UgLi4uLi4uLi4tLi4uLi0jIyMjLS4uLi4tLi4uLi4uLi4uLi4uXG5cbiAgYXJyWzZdID0gKHYgPSBwYXJzZUludCh1dWlkLnNsaWNlKDE0LCAxOCksIDE2KSkgPj4+IDg7XG4gIGFycls3XSA9IHYgJiAweGZmOyAvLyBQYXJzZSAuLi4uLi4uLi0uLi4uLS4uLi4tIyMjIy0uLi4uLi4uLi4uLi5cblxuICBhcnJbOF0gPSAodiA9IHBhcnNlSW50KHV1aWQuc2xpY2UoMTksIDIzKSwgMTYpKSA+Pj4gODtcbiAgYXJyWzldID0gdiAmIDB4ZmY7IC8vIFBhcnNlIC4uLi4uLi4uLS4uLi4tLi4uLi0uLi4uLSMjIyMjIyMjIyMjI1xuICAvLyAoVXNlIFwiL1wiIHRvIGF2b2lkIDMyLWJpdCB0cnVuY2F0aW9uIHdoZW4gYml0LXNoaWZ0aW5nIGhpZ2gtb3JkZXIgYnl0ZXMpXG5cbiAgYXJyWzEwXSA9ICh2ID0gcGFyc2VJbnQodXVpZC5zbGljZSgyNCwgMzYpLCAxNikpIC8gMHgxMDAwMDAwMDAwMCAmIDB4ZmY7XG4gIGFyclsxMV0gPSB2IC8gMHgxMDAwMDAwMDAgJiAweGZmO1xuICBhcnJbMTJdID0gdiA+Pj4gMjQgJiAweGZmO1xuICBhcnJbMTNdID0gdiA+Pj4gMTYgJiAweGZmO1xuICBhcnJbMTRdID0gdiA+Pj4gOCAmIDB4ZmY7XG4gIGFyclsxNV0gPSB2ICYgMHhmZjtcbiAgcmV0dXJuIGFycjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgcGFyc2U7IiwiaW1wb3J0IHN0cmluZ2lmeSBmcm9tICcuL3N0cmluZ2lmeS5qcyc7XG5pbXBvcnQgcGFyc2UgZnJvbSAnLi9wYXJzZS5qcyc7XG5cbmZ1bmN0aW9uIHN0cmluZ1RvQnl0ZXMoc3RyKSB7XG4gIHN0ciA9IHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChzdHIpKTsgLy8gVVRGOCBlc2NhcGVcblxuICB2YXIgYnl0ZXMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgIGJ5dGVzLnB1c2goc3RyLmNoYXJDb2RlQXQoaSkpO1xuICB9XG5cbiAgcmV0dXJuIGJ5dGVzO1xufVxuXG5leHBvcnQgdmFyIEROUyA9ICc2YmE3YjgxMC05ZGFkLTExZDEtODBiNC0wMGMwNGZkNDMwYzgnO1xuZXhwb3J0IHZhciBVUkwgPSAnNmJhN2I4MTEtOWRhZC0xMWQxLTgwYjQtMDBjMDRmZDQzMGM4JztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChuYW1lLCB2ZXJzaW9uLCBoYXNoZnVuYykge1xuICBmdW5jdGlvbiBnZW5lcmF0ZVVVSUQodmFsdWUsIG5hbWVzcGFjZSwgYnVmLCBvZmZzZXQpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgdmFsdWUgPSBzdHJpbmdUb0J5dGVzKHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG5hbWVzcGFjZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG5hbWVzcGFjZSA9IHBhcnNlKG5hbWVzcGFjZSk7XG4gICAgfVxuXG4gICAgaWYgKG5hbWVzcGFjZS5sZW5ndGggIT09IDE2KSB7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ05hbWVzcGFjZSBtdXN0IGJlIGFycmF5LWxpa2UgKDE2IGl0ZXJhYmxlIGludGVnZXIgdmFsdWVzLCAwLTI1NSknKTtcbiAgICB9IC8vIENvbXB1dGUgaGFzaCBvZiBuYW1lc3BhY2UgYW5kIHZhbHVlLCBQZXIgNC4zXG4gICAgLy8gRnV0dXJlOiBVc2Ugc3ByZWFkIHN5bnRheCB3aGVuIHN1cHBvcnRlZCBvbiBhbGwgcGxhdGZvcm1zLCBlLmcuIGBieXRlcyA9XG4gICAgLy8gaGFzaGZ1bmMoWy4uLm5hbWVzcGFjZSwgLi4uIHZhbHVlXSlgXG5cblxuICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KDE2ICsgdmFsdWUubGVuZ3RoKTtcbiAgICBieXRlcy5zZXQobmFtZXNwYWNlKTtcbiAgICBieXRlcy5zZXQodmFsdWUsIG5hbWVzcGFjZS5sZW5ndGgpO1xuICAgIGJ5dGVzID0gaGFzaGZ1bmMoYnl0ZXMpO1xuICAgIGJ5dGVzWzZdID0gYnl0ZXNbNl0gJiAweDBmIHwgdmVyc2lvbjtcbiAgICBieXRlc1s4XSA9IGJ5dGVzWzhdICYgMHgzZiB8IDB4ODA7XG5cbiAgICBpZiAoYnVmKSB7XG4gICAgICBvZmZzZXQgPSBvZmZzZXQgfHwgMDtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgKytpKSB7XG4gICAgICAgIGJ1ZltvZmZzZXQgKyBpXSA9IGJ5dGVzW2ldO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYnVmO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmdpZnkoYnl0ZXMpO1xuICB9IC8vIEZ1bmN0aW9uI25hbWUgaXMgbm90IHNldHRhYmxlIG9uIHNvbWUgcGxhdGZvcm1zICgjMjcwKVxuXG5cbiAgdHJ5IHtcbiAgICBnZW5lcmF0ZVVVSUQubmFtZSA9IG5hbWU7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eVxuICB9IGNhdGNoIChlcnIpIHt9IC8vIEZvciBDb21tb25KUyBkZWZhdWx0IGV4cG9ydCBzdXBwb3J0XG5cblxuICBnZW5lcmF0ZVVVSUQuRE5TID0gRE5TO1xuICBnZW5lcmF0ZVVVSUQuVVJMID0gVVJMO1xuICByZXR1cm4gZ2VuZXJhdGVVVUlEO1xufSIsIi8qXG4gKiBCcm93c2VyLWNvbXBhdGlibGUgSmF2YVNjcmlwdCBNRDVcbiAqXG4gKiBNb2RpZmljYXRpb24gb2YgSmF2YVNjcmlwdCBNRDVcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL0phdmFTY3JpcHQtTUQ1XG4gKlxuICogQ29weXJpZ2h0IDIwMTEsIFNlYmFzdGlhbiBUc2NoYW5cbiAqIGh0dHBzOi8vYmx1ZWltcC5uZXRcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2U6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVFxuICpcbiAqIEJhc2VkIG9uXG4gKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJTQSBEYXRhIFNlY3VyaXR5LCBJbmMuIE1ENSBNZXNzYWdlXG4gKiBEaWdlc3QgQWxnb3JpdGhtLCBhcyBkZWZpbmVkIGluIFJGQyAxMzIxLlxuICogVmVyc2lvbiAyLjIgQ29weXJpZ2h0IChDKSBQYXVsIEpvaG5zdG9uIDE5OTkgLSAyMDA5XG4gKiBPdGhlciBjb250cmlidXRvcnM6IEdyZWcgSG9sdCwgQW5kcmV3IEtlcGVydCwgWWRuYXIsIExvc3RpbmV0XG4gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2VcbiAqIFNlZSBodHRwOi8vcGFqaG9tZS5vcmcudWsvY3J5cHQvbWQ1IGZvciBtb3JlIGluZm8uXG4gKi9cbmZ1bmN0aW9uIG1kNShieXRlcykge1xuICBpZiAodHlwZW9mIGJ5dGVzID09PSAnc3RyaW5nJykge1xuICAgIHZhciBtc2cgPSB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoYnl0ZXMpKTsgLy8gVVRGOCBlc2NhcGVcblxuICAgIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkobXNnLmxlbmd0aCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7ICsraSkge1xuICAgICAgYnl0ZXNbaV0gPSBtc2cuY2hhckNvZGVBdChpKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWQ1VG9IZXhFbmNvZGVkQXJyYXkod29yZHNUb01kNShieXRlc1RvV29yZHMoYnl0ZXMpLCBieXRlcy5sZW5ndGggKiA4KSk7XG59XG4vKlxuICogQ29udmVydCBhbiBhcnJheSBvZiBsaXR0bGUtZW5kaWFuIHdvcmRzIHRvIGFuIGFycmF5IG9mIGJ5dGVzXG4gKi9cblxuXG5mdW5jdGlvbiBtZDVUb0hleEVuY29kZWRBcnJheShpbnB1dCkge1xuICB2YXIgb3V0cHV0ID0gW107XG4gIHZhciBsZW5ndGgzMiA9IGlucHV0Lmxlbmd0aCAqIDMyO1xuICB2YXIgaGV4VGFiID0gJzAxMjM0NTY3ODlhYmNkZWYnO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoMzI7IGkgKz0gOCkge1xuICAgIHZhciB4ID0gaW5wdXRbaSA+PiA1XSA+Pj4gaSAlIDMyICYgMHhmZjtcbiAgICB2YXIgaGV4ID0gcGFyc2VJbnQoaGV4VGFiLmNoYXJBdCh4ID4+PiA0ICYgMHgwZikgKyBoZXhUYWIuY2hhckF0KHggJiAweDBmKSwgMTYpO1xuICAgIG91dHB1dC5wdXNoKGhleCk7XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufVxuLyoqXG4gKiBDYWxjdWxhdGUgb3V0cHV0IGxlbmd0aCB3aXRoIHBhZGRpbmcgYW5kIGJpdCBsZW5ndGhcbiAqL1xuXG5cbmZ1bmN0aW9uIGdldE91dHB1dExlbmd0aChpbnB1dExlbmd0aDgpIHtcbiAgcmV0dXJuIChpbnB1dExlbmd0aDggKyA2NCA+Pj4gOSA8PCA0KSArIDE0ICsgMTtcbn1cbi8qXG4gKiBDYWxjdWxhdGUgdGhlIE1ENSBvZiBhbiBhcnJheSBvZiBsaXR0bGUtZW5kaWFuIHdvcmRzLCBhbmQgYSBiaXQgbGVuZ3RoLlxuICovXG5cblxuZnVuY3Rpb24gd29yZHNUb01kNSh4LCBsZW4pIHtcbiAgLyogYXBwZW5kIHBhZGRpbmcgKi9cbiAgeFtsZW4gPj4gNV0gfD0gMHg4MCA8PCBsZW4gJSAzMjtcbiAgeFtnZXRPdXRwdXRMZW5ndGgobGVuKSAtIDFdID0gbGVuO1xuICB2YXIgYSA9IDE3MzI1ODQxOTM7XG4gIHZhciBiID0gLTI3MTczMzg3OTtcbiAgdmFyIGMgPSAtMTczMjU4NDE5NDtcbiAgdmFyIGQgPSAyNzE3MzM4Nzg7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSArPSAxNikge1xuICAgIHZhciBvbGRhID0gYTtcbiAgICB2YXIgb2xkYiA9IGI7XG4gICAgdmFyIG9sZGMgPSBjO1xuICAgIHZhciBvbGRkID0gZDtcbiAgICBhID0gbWQ1ZmYoYSwgYiwgYywgZCwgeFtpXSwgNywgLTY4MDg3NjkzNik7XG4gICAgZCA9IG1kNWZmKGQsIGEsIGIsIGMsIHhbaSArIDFdLCAxMiwgLTM4OTU2NDU4Nik7XG4gICAgYyA9IG1kNWZmKGMsIGQsIGEsIGIsIHhbaSArIDJdLCAxNywgNjA2MTA1ODE5KTtcbiAgICBiID0gbWQ1ZmYoYiwgYywgZCwgYSwgeFtpICsgM10sIDIyLCAtMTA0NDUyNTMzMCk7XG4gICAgYSA9IG1kNWZmKGEsIGIsIGMsIGQsIHhbaSArIDRdLCA3LCAtMTc2NDE4ODk3KTtcbiAgICBkID0gbWQ1ZmYoZCwgYSwgYiwgYywgeFtpICsgNV0sIDEyLCAxMjAwMDgwNDI2KTtcbiAgICBjID0gbWQ1ZmYoYywgZCwgYSwgYiwgeFtpICsgNl0sIDE3LCAtMTQ3MzIzMTM0MSk7XG4gICAgYiA9IG1kNWZmKGIsIGMsIGQsIGEsIHhbaSArIDddLCAyMiwgLTQ1NzA1OTgzKTtcbiAgICBhID0gbWQ1ZmYoYSwgYiwgYywgZCwgeFtpICsgOF0sIDcsIDE3NzAwMzU0MTYpO1xuICAgIGQgPSBtZDVmZihkLCBhLCBiLCBjLCB4W2kgKyA5XSwgMTIsIC0xOTU4NDE0NDE3KTtcbiAgICBjID0gbWQ1ZmYoYywgZCwgYSwgYiwgeFtpICsgMTBdLCAxNywgLTQyMDYzKTtcbiAgICBiID0gbWQ1ZmYoYiwgYywgZCwgYSwgeFtpICsgMTFdLCAyMiwgLTE5OTA0MDQxNjIpO1xuICAgIGEgPSBtZDVmZihhLCBiLCBjLCBkLCB4W2kgKyAxMl0sIDcsIDE4MDQ2MDM2ODIpO1xuICAgIGQgPSBtZDVmZihkLCBhLCBiLCBjLCB4W2kgKyAxM10sIDEyLCAtNDAzNDExMDEpO1xuICAgIGMgPSBtZDVmZihjLCBkLCBhLCBiLCB4W2kgKyAxNF0sIDE3LCAtMTUwMjAwMjI5MCk7XG4gICAgYiA9IG1kNWZmKGIsIGMsIGQsIGEsIHhbaSArIDE1XSwgMjIsIDEyMzY1MzUzMjkpO1xuICAgIGEgPSBtZDVnZyhhLCBiLCBjLCBkLCB4W2kgKyAxXSwgNSwgLTE2NTc5NjUxMCk7XG4gICAgZCA9IG1kNWdnKGQsIGEsIGIsIGMsIHhbaSArIDZdLCA5LCAtMTA2OTUwMTYzMik7XG4gICAgYyA9IG1kNWdnKGMsIGQsIGEsIGIsIHhbaSArIDExXSwgMTQsIDY0MzcxNzcxMyk7XG4gICAgYiA9IG1kNWdnKGIsIGMsIGQsIGEsIHhbaV0sIDIwLCAtMzczODk3MzAyKTtcbiAgICBhID0gbWQ1Z2coYSwgYiwgYywgZCwgeFtpICsgNV0sIDUsIC03MDE1NTg2OTEpO1xuICAgIGQgPSBtZDVnZyhkLCBhLCBiLCBjLCB4W2kgKyAxMF0sIDksIDM4MDE2MDgzKTtcbiAgICBjID0gbWQ1Z2coYywgZCwgYSwgYiwgeFtpICsgMTVdLCAxNCwgLTY2MDQ3ODMzNSk7XG4gICAgYiA9IG1kNWdnKGIsIGMsIGQsIGEsIHhbaSArIDRdLCAyMCwgLTQwNTUzNzg0OCk7XG4gICAgYSA9IG1kNWdnKGEsIGIsIGMsIGQsIHhbaSArIDldLCA1LCA1Njg0NDY0MzgpO1xuICAgIGQgPSBtZDVnZyhkLCBhLCBiLCBjLCB4W2kgKyAxNF0sIDksIC0xMDE5ODAzNjkwKTtcbiAgICBjID0gbWQ1Z2coYywgZCwgYSwgYiwgeFtpICsgM10sIDE0LCAtMTg3MzYzOTYxKTtcbiAgICBiID0gbWQ1Z2coYiwgYywgZCwgYSwgeFtpICsgOF0sIDIwLCAxMTYzNTMxNTAxKTtcbiAgICBhID0gbWQ1Z2coYSwgYiwgYywgZCwgeFtpICsgMTNdLCA1LCAtMTQ0NDY4MTQ2Nyk7XG4gICAgZCA9IG1kNWdnKGQsIGEsIGIsIGMsIHhbaSArIDJdLCA5LCAtNTE0MDM3ODQpO1xuICAgIGMgPSBtZDVnZyhjLCBkLCBhLCBiLCB4W2kgKyA3XSwgMTQsIDE3MzUzMjg0NzMpO1xuICAgIGIgPSBtZDVnZyhiLCBjLCBkLCBhLCB4W2kgKyAxMl0sIDIwLCAtMTkyNjYwNzczNCk7XG4gICAgYSA9IG1kNWhoKGEsIGIsIGMsIGQsIHhbaSArIDVdLCA0LCAtMzc4NTU4KTtcbiAgICBkID0gbWQ1aGgoZCwgYSwgYiwgYywgeFtpICsgOF0sIDExLCAtMjAyMjU3NDQ2Myk7XG4gICAgYyA9IG1kNWhoKGMsIGQsIGEsIGIsIHhbaSArIDExXSwgMTYsIDE4MzkwMzA1NjIpO1xuICAgIGIgPSBtZDVoaChiLCBjLCBkLCBhLCB4W2kgKyAxNF0sIDIzLCAtMzUzMDk1NTYpO1xuICAgIGEgPSBtZDVoaChhLCBiLCBjLCBkLCB4W2kgKyAxXSwgNCwgLTE1MzA5OTIwNjApO1xuICAgIGQgPSBtZDVoaChkLCBhLCBiLCBjLCB4W2kgKyA0XSwgMTEsIDEyNzI4OTMzNTMpO1xuICAgIGMgPSBtZDVoaChjLCBkLCBhLCBiLCB4W2kgKyA3XSwgMTYsIC0xNTU0OTc2MzIpO1xuICAgIGIgPSBtZDVoaChiLCBjLCBkLCBhLCB4W2kgKyAxMF0sIDIzLCAtMTA5NDczMDY0MCk7XG4gICAgYSA9IG1kNWhoKGEsIGIsIGMsIGQsIHhbaSArIDEzXSwgNCwgNjgxMjc5MTc0KTtcbiAgICBkID0gbWQ1aGgoZCwgYSwgYiwgYywgeFtpXSwgMTEsIC0zNTg1MzcyMjIpO1xuICAgIGMgPSBtZDVoaChjLCBkLCBhLCBiLCB4W2kgKyAzXSwgMTYsIC03MjI1MjE5NzkpO1xuICAgIGIgPSBtZDVoaChiLCBjLCBkLCBhLCB4W2kgKyA2XSwgMjMsIDc2MDI5MTg5KTtcbiAgICBhID0gbWQ1aGgoYSwgYiwgYywgZCwgeFtpICsgOV0sIDQsIC02NDAzNjQ0ODcpO1xuICAgIGQgPSBtZDVoaChkLCBhLCBiLCBjLCB4W2kgKyAxMl0sIDExLCAtNDIxODE1ODM1KTtcbiAgICBjID0gbWQ1aGgoYywgZCwgYSwgYiwgeFtpICsgMTVdLCAxNiwgNTMwNzQyNTIwKTtcbiAgICBiID0gbWQ1aGgoYiwgYywgZCwgYSwgeFtpICsgMl0sIDIzLCAtOTk1MzM4NjUxKTtcbiAgICBhID0gbWQ1aWkoYSwgYiwgYywgZCwgeFtpXSwgNiwgLTE5ODYzMDg0NCk7XG4gICAgZCA9IG1kNWlpKGQsIGEsIGIsIGMsIHhbaSArIDddLCAxMCwgMTEyNjg5MTQxNSk7XG4gICAgYyA9IG1kNWlpKGMsIGQsIGEsIGIsIHhbaSArIDE0XSwgMTUsIC0xNDE2MzU0OTA1KTtcbiAgICBiID0gbWQ1aWkoYiwgYywgZCwgYSwgeFtpICsgNV0sIDIxLCAtNTc0MzQwNTUpO1xuICAgIGEgPSBtZDVpaShhLCBiLCBjLCBkLCB4W2kgKyAxMl0sIDYsIDE3MDA0ODU1NzEpO1xuICAgIGQgPSBtZDVpaShkLCBhLCBiLCBjLCB4W2kgKyAzXSwgMTAsIC0xODk0OTg2NjA2KTtcbiAgICBjID0gbWQ1aWkoYywgZCwgYSwgYiwgeFtpICsgMTBdLCAxNSwgLTEwNTE1MjMpO1xuICAgIGIgPSBtZDVpaShiLCBjLCBkLCBhLCB4W2kgKyAxXSwgMjEsIC0yMDU0OTIyNzk5KTtcbiAgICBhID0gbWQ1aWkoYSwgYiwgYywgZCwgeFtpICsgOF0sIDYsIDE4NzMzMTMzNTkpO1xuICAgIGQgPSBtZDVpaShkLCBhLCBiLCBjLCB4W2kgKyAxNV0sIDEwLCAtMzA2MTE3NDQpO1xuICAgIGMgPSBtZDVpaShjLCBkLCBhLCBiLCB4W2kgKyA2XSwgMTUsIC0xNTYwMTk4MzgwKTtcbiAgICBiID0gbWQ1aWkoYiwgYywgZCwgYSwgeFtpICsgMTNdLCAyMSwgMTMwOTE1MTY0OSk7XG4gICAgYSA9IG1kNWlpKGEsIGIsIGMsIGQsIHhbaSArIDRdLCA2LCAtMTQ1NTIzMDcwKTtcbiAgICBkID0gbWQ1aWkoZCwgYSwgYiwgYywgeFtpICsgMTFdLCAxMCwgLTExMjAyMTAzNzkpO1xuICAgIGMgPSBtZDVpaShjLCBkLCBhLCBiLCB4W2kgKyAyXSwgMTUsIDcxODc4NzI1OSk7XG4gICAgYiA9IG1kNWlpKGIsIGMsIGQsIGEsIHhbaSArIDldLCAyMSwgLTM0MzQ4NTU1MSk7XG4gICAgYSA9IHNhZmVBZGQoYSwgb2xkYSk7XG4gICAgYiA9IHNhZmVBZGQoYiwgb2xkYik7XG4gICAgYyA9IHNhZmVBZGQoYywgb2xkYyk7XG4gICAgZCA9IHNhZmVBZGQoZCwgb2xkZCk7XG4gIH1cblxuICByZXR1cm4gW2EsIGIsIGMsIGRdO1xufVxuLypcbiAqIENvbnZlcnQgYW4gYXJyYXkgYnl0ZXMgdG8gYW4gYXJyYXkgb2YgbGl0dGxlLWVuZGlhbiB3b3Jkc1xuICogQ2hhcmFjdGVycyA+MjU1IGhhdmUgdGhlaXIgaGlnaC1ieXRlIHNpbGVudGx5IGlnbm9yZWQuXG4gKi9cblxuXG5mdW5jdGlvbiBieXRlc1RvV29yZHMoaW5wdXQpIHtcbiAgaWYgKGlucHV0Lmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHZhciBsZW5ndGg4ID0gaW5wdXQubGVuZ3RoICogODtcbiAgdmFyIG91dHB1dCA9IG5ldyBVaW50MzJBcnJheShnZXRPdXRwdXRMZW5ndGgobGVuZ3RoOCkpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoODsgaSArPSA4KSB7XG4gICAgb3V0cHV0W2kgPj4gNV0gfD0gKGlucHV0W2kgLyA4XSAmIDB4ZmYpIDw8IGkgJSAzMjtcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59XG4vKlxuICogQWRkIGludGVnZXJzLCB3cmFwcGluZyBhdCAyXjMyLiBUaGlzIHVzZXMgMTYtYml0IG9wZXJhdGlvbnMgaW50ZXJuYWxseVxuICogdG8gd29yayBhcm91bmQgYnVncyBpbiBzb21lIEpTIGludGVycHJldGVycy5cbiAqL1xuXG5cbmZ1bmN0aW9uIHNhZmVBZGQoeCwgeSkge1xuICB2YXIgbHN3ID0gKHggJiAweGZmZmYpICsgKHkgJiAweGZmZmYpO1xuICB2YXIgbXN3ID0gKHggPj4gMTYpICsgKHkgPj4gMTYpICsgKGxzdyA+PiAxNik7XG4gIHJldHVybiBtc3cgPDwgMTYgfCBsc3cgJiAweGZmZmY7XG59XG4vKlxuICogQml0d2lzZSByb3RhdGUgYSAzMi1iaXQgbnVtYmVyIHRvIHRoZSBsZWZ0LlxuICovXG5cblxuZnVuY3Rpb24gYml0Um90YXRlTGVmdChudW0sIGNudCkge1xuICByZXR1cm4gbnVtIDw8IGNudCB8IG51bSA+Pj4gMzIgLSBjbnQ7XG59XG4vKlxuICogVGhlc2UgZnVuY3Rpb25zIGltcGxlbWVudCB0aGUgZm91ciBiYXNpYyBvcGVyYXRpb25zIHRoZSBhbGdvcml0aG0gdXNlcy5cbiAqL1xuXG5cbmZ1bmN0aW9uIG1kNWNtbihxLCBhLCBiLCB4LCBzLCB0KSB7XG4gIHJldHVybiBzYWZlQWRkKGJpdFJvdGF0ZUxlZnQoc2FmZUFkZChzYWZlQWRkKGEsIHEpLCBzYWZlQWRkKHgsIHQpKSwgcyksIGIpO1xufVxuXG5mdW5jdGlvbiBtZDVmZihhLCBiLCBjLCBkLCB4LCBzLCB0KSB7XG4gIHJldHVybiBtZDVjbW4oYiAmIGMgfCB+YiAmIGQsIGEsIGIsIHgsIHMsIHQpO1xufVxuXG5mdW5jdGlvbiBtZDVnZyhhLCBiLCBjLCBkLCB4LCBzLCB0KSB7XG4gIHJldHVybiBtZDVjbW4oYiAmIGQgfCBjICYgfmQsIGEsIGIsIHgsIHMsIHQpO1xufVxuXG5mdW5jdGlvbiBtZDVoaChhLCBiLCBjLCBkLCB4LCBzLCB0KSB7XG4gIHJldHVybiBtZDVjbW4oYiBeIGMgXiBkLCBhLCBiLCB4LCBzLCB0KTtcbn1cblxuZnVuY3Rpb24gbWQ1aWkoYSwgYiwgYywgZCwgeCwgcywgdCkge1xuICByZXR1cm4gbWQ1Y21uKGMgXiAoYiB8IH5kKSwgYSwgYiwgeCwgcywgdCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG1kNTsiLCJpbXBvcnQgdjM1IGZyb20gJy4vdjM1LmpzJztcbmltcG9ydCBtZDUgZnJvbSAnLi9tZDUuanMnO1xudmFyIHYzID0gdjM1KCd2MycsIDB4MzAsIG1kNSk7XG5leHBvcnQgZGVmYXVsdCB2MzsiLCJpbXBvcnQgcm5nIGZyb20gJy4vcm5nLmpzJztcbmltcG9ydCBzdHJpbmdpZnkgZnJvbSAnLi9zdHJpbmdpZnkuanMnO1xuXG5mdW5jdGlvbiB2NChvcHRpb25zLCBidWYsIG9mZnNldCkge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIHJuZHMgPSBvcHRpb25zLnJhbmRvbSB8fCAob3B0aW9ucy5ybmcgfHwgcm5nKSgpOyAvLyBQZXIgNC40LCBzZXQgYml0cyBmb3IgdmVyc2lvbiBhbmQgYGNsb2NrX3NlcV9oaV9hbmRfcmVzZXJ2ZWRgXG5cbiAgcm5kc1s2XSA9IHJuZHNbNl0gJiAweDBmIHwgMHg0MDtcbiAgcm5kc1s4XSA9IHJuZHNbOF0gJiAweDNmIHwgMHg4MDsgLy8gQ29weSBieXRlcyB0byBidWZmZXIsIGlmIHByb3ZpZGVkXG5cbiAgaWYgKGJ1Zikge1xuICAgIG9mZnNldCA9IG9mZnNldCB8fCAwO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgKytpKSB7XG4gICAgICBidWZbb2Zmc2V0ICsgaV0gPSBybmRzW2ldO1xuICAgIH1cblxuICAgIHJldHVybiBidWY7XG4gIH1cblxuICByZXR1cm4gc3RyaW5naWZ5KHJuZHMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB2NDsiLCIvLyBBZGFwdGVkIGZyb20gQ2hyaXMgVmVuZXNzJyBTSEExIGNvZGUgYXRcbi8vIGh0dHA6Ly93d3cubW92YWJsZS10eXBlLmNvLnVrL3NjcmlwdHMvc2hhMS5odG1sXG5mdW5jdGlvbiBmKHMsIHgsIHksIHopIHtcbiAgc3dpdGNoIChzKSB7XG4gICAgY2FzZSAwOlxuICAgICAgcmV0dXJuIHggJiB5IF4gfnggJiB6O1xuXG4gICAgY2FzZSAxOlxuICAgICAgcmV0dXJuIHggXiB5IF4gejtcblxuICAgIGNhc2UgMjpcbiAgICAgIHJldHVybiB4ICYgeSBeIHggJiB6IF4geSAmIHo7XG5cbiAgICBjYXNlIDM6XG4gICAgICByZXR1cm4geCBeIHkgXiB6O1xuICB9XG59XG5cbmZ1bmN0aW9uIFJPVEwoeCwgbikge1xuICByZXR1cm4geCA8PCBuIHwgeCA+Pj4gMzIgLSBuO1xufVxuXG5mdW5jdGlvbiBzaGExKGJ5dGVzKSB7XG4gIHZhciBLID0gWzB4NWE4Mjc5OTksIDB4NmVkOWViYTEsIDB4OGYxYmJjZGMsIDB4Y2E2MmMxZDZdO1xuICB2YXIgSCA9IFsweDY3NDUyMzAxLCAweGVmY2RhYjg5LCAweDk4YmFkY2ZlLCAweDEwMzI1NDc2LCAweGMzZDJlMWYwXTtcblxuICBpZiAodHlwZW9mIGJ5dGVzID09PSAnc3RyaW5nJykge1xuICAgIHZhciBtc2cgPSB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoYnl0ZXMpKTsgLy8gVVRGOCBlc2NhcGVcblxuICAgIGJ5dGVzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7ICsraSkge1xuICAgICAgYnl0ZXMucHVzaChtc2cuY2hhckNvZGVBdChpKSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKCFBcnJheS5pc0FycmF5KGJ5dGVzKSkge1xuICAgIC8vIENvbnZlcnQgQXJyYXktbGlrZSB0byBBcnJheVxuICAgIGJ5dGVzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYnl0ZXMpO1xuICB9XG5cbiAgYnl0ZXMucHVzaCgweDgwKTtcbiAgdmFyIGwgPSBieXRlcy5sZW5ndGggLyA0ICsgMjtcbiAgdmFyIE4gPSBNYXRoLmNlaWwobCAvIDE2KTtcbiAgdmFyIE0gPSBuZXcgQXJyYXkoTik7XG5cbiAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IE47ICsrX2kpIHtcbiAgICB2YXIgYXJyID0gbmV3IFVpbnQzMkFycmF5KDE2KTtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgMTY7ICsraikge1xuICAgICAgYXJyW2pdID0gYnl0ZXNbX2kgKiA2NCArIGogKiA0XSA8PCAyNCB8IGJ5dGVzW19pICogNjQgKyBqICogNCArIDFdIDw8IDE2IHwgYnl0ZXNbX2kgKiA2NCArIGogKiA0ICsgMl0gPDwgOCB8IGJ5dGVzW19pICogNjQgKyBqICogNCArIDNdO1xuICAgIH1cblxuICAgIE1bX2ldID0gYXJyO1xuICB9XG5cbiAgTVtOIC0gMV1bMTRdID0gKGJ5dGVzLmxlbmd0aCAtIDEpICogOCAvIE1hdGgucG93KDIsIDMyKTtcbiAgTVtOIC0gMV1bMTRdID0gTWF0aC5mbG9vcihNW04gLSAxXVsxNF0pO1xuICBNW04gLSAxXVsxNV0gPSAoYnl0ZXMubGVuZ3RoIC0gMSkgKiA4ICYgMHhmZmZmZmZmZjtcblxuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBOOyArK19pMikge1xuICAgIHZhciBXID0gbmV3IFVpbnQzMkFycmF5KDgwKTtcblxuICAgIGZvciAodmFyIHQgPSAwOyB0IDwgMTY7ICsrdCkge1xuICAgICAgV1t0XSA9IE1bX2kyXVt0XTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfdCA9IDE2OyBfdCA8IDgwOyArK190KSB7XG4gICAgICBXW190XSA9IFJPVEwoV1tfdCAtIDNdIF4gV1tfdCAtIDhdIF4gV1tfdCAtIDE0XSBeIFdbX3QgLSAxNl0sIDEpO1xuICAgIH1cblxuICAgIHZhciBhID0gSFswXTtcbiAgICB2YXIgYiA9IEhbMV07XG4gICAgdmFyIGMgPSBIWzJdO1xuICAgIHZhciBkID0gSFszXTtcbiAgICB2YXIgZSA9IEhbNF07XG5cbiAgICBmb3IgKHZhciBfdDIgPSAwOyBfdDIgPCA4MDsgKytfdDIpIHtcbiAgICAgIHZhciBzID0gTWF0aC5mbG9vcihfdDIgLyAyMCk7XG4gICAgICB2YXIgVCA9IFJPVEwoYSwgNSkgKyBmKHMsIGIsIGMsIGQpICsgZSArIEtbc10gKyBXW190Ml0gPj4+IDA7XG4gICAgICBlID0gZDtcbiAgICAgIGQgPSBjO1xuICAgICAgYyA9IFJPVEwoYiwgMzApID4+PiAwO1xuICAgICAgYiA9IGE7XG4gICAgICBhID0gVDtcbiAgICB9XG5cbiAgICBIWzBdID0gSFswXSArIGEgPj4+IDA7XG4gICAgSFsxXSA9IEhbMV0gKyBiID4+PiAwO1xuICAgIEhbMl0gPSBIWzJdICsgYyA+Pj4gMDtcbiAgICBIWzNdID0gSFszXSArIGQgPj4+IDA7XG4gICAgSFs0XSA9IEhbNF0gKyBlID4+PiAwO1xuICB9XG5cbiAgcmV0dXJuIFtIWzBdID4+IDI0ICYgMHhmZiwgSFswXSA+PiAxNiAmIDB4ZmYsIEhbMF0gPj4gOCAmIDB4ZmYsIEhbMF0gJiAweGZmLCBIWzFdID4+IDI0ICYgMHhmZiwgSFsxXSA+PiAxNiAmIDB4ZmYsIEhbMV0gPj4gOCAmIDB4ZmYsIEhbMV0gJiAweGZmLCBIWzJdID4+IDI0ICYgMHhmZiwgSFsyXSA+PiAxNiAmIDB4ZmYsIEhbMl0gPj4gOCAmIDB4ZmYsIEhbMl0gJiAweGZmLCBIWzNdID4+IDI0ICYgMHhmZiwgSFszXSA+PiAxNiAmIDB4ZmYsIEhbM10gPj4gOCAmIDB4ZmYsIEhbM10gJiAweGZmLCBIWzRdID4+IDI0ICYgMHhmZiwgSFs0XSA+PiAxNiAmIDB4ZmYsIEhbNF0gPj4gOCAmIDB4ZmYsIEhbNF0gJiAweGZmXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgc2hhMTsiLCJpbXBvcnQgdjM1IGZyb20gJy4vdjM1LmpzJztcbmltcG9ydCBzaGExIGZyb20gJy4vc2hhMS5qcyc7XG52YXIgdjUgPSB2MzUoJ3Y1JywgMHg1MCwgc2hhMSk7XG5leHBvcnQgZGVmYXVsdCB2NTsiLCJleHBvcnQgZGVmYXVsdCAnMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwJzsiLCJpbXBvcnQgdmFsaWRhdGUgZnJvbSAnLi92YWxpZGF0ZS5qcyc7XG5cbmZ1bmN0aW9uIHZlcnNpb24odXVpZCkge1xuICBpZiAoIXZhbGlkYXRlKHV1aWQpKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKCdJbnZhbGlkIFVVSUQnKTtcbiAgfVxuXG4gIHJldHVybiBwYXJzZUludCh1dWlkLnN1YnN0cigxNCwgMSksIDE2KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdmVyc2lvbjsiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fdmFsdWVzID0gKHRoaXMgJiYgdGhpcy5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykge1xuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59O1xudmFyIF9fcmVhZCA9ICh0aGlzICYmIHRoaXMuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gYXI7XG59O1xudmFyIF9hO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5jb252ZXJ0RmlsZVR5cGUgPSBleHBvcnRzLkZpbGVUeXBlQWxpYXMgPSBleHBvcnRzLkZpbGVUeXBlID0gdm9pZCAwO1xuLyoqXG4gKiDnn7PloqjmlofmoaPnsbvlnotcbiAqL1xudmFyIEZpbGVUeXBlO1xuKGZ1bmN0aW9uIChGaWxlVHlwZSkge1xuICAgIC8qKlxuICAgICAqIOS8oOe7n+aWh+aho1xuICAgICAqL1xuICAgIEZpbGVUeXBlW1wiRG9jdW1lbnRQcm9cIl0gPSBcImRvY3VtZW50UHJvXCI7XG4gICAgLyoqXG4gICAgICog6L275paH5qGjXG4gICAgICovXG4gICAgRmlsZVR5cGVbXCJEb2N1bWVudFwiXSA9IFwiZG9jdW1lbnRcIjtcbiAgICAvKipcbiAgICAgKiDooajmoLxcbiAgICAgKi9cbiAgICBGaWxlVHlwZVtcIlNwcmVhZHNoZWV0XCJdID0gXCJzcHJlYWRzaGVldFwiO1xuICAgIC8qKlxuICAgICAqIOS4k+S4muW5u+eBr+eJh1xuICAgICAqL1xuICAgIEZpbGVUeXBlW1wiUHJlc2VudGF0aW9uXCJdID0gXCJwcmVzZW50YXRpb25cIjtcbiAgICAvKipcbiAgICAgKiDlupTnlKjooajmoLxcbiAgICAgKi9cbiAgICBGaWxlVHlwZVtcIlRhYmxlXCJdID0gXCJ0YWJsZVwiO1xuICAgIC8qKlxuICAgICAqIOihqOWNlVxuICAgICAqL1xuICAgIEZpbGVUeXBlW1wiRm9ybVwiXSA9IFwiZm9ybVwiO1xuICAgIC8qKlxuICAgICAqIOa1geeoi+WbvlxuICAgICAqL1xuICAgIEZpbGVUeXBlW1wiRmxvd2NoYXJ0XCJdID0gXCJmbG93Y2hhcnRcIjtcbiAgICAvKipcbiAgICAgKiDmgJ3nu7Tlr7zlm75cbiAgICAgKi9cbiAgICBGaWxlVHlwZVtcIk1pbmRtYXBcIl0gPSBcIm1pbmRtYXBcIjtcbiAgICAvKipcbiAgICAgKiDnmb3mnb9cbiAgICAgKi9cbiAgICBGaWxlVHlwZVtcIkJvYXJkXCJdID0gXCJib2FyZFwiO1xuICAgIC8qKlxuICAgICAqIOacquefpeexu+Wei1xuICAgICAqL1xuICAgIEZpbGVUeXBlW1wiVW5rbm93blwiXSA9IFwidW5rbm93blwiO1xufSkoRmlsZVR5cGUgPSBleHBvcnRzLkZpbGVUeXBlIHx8IChleHBvcnRzLkZpbGVUeXBlID0ge30pKTtcbmV4cG9ydHMuRmlsZVR5cGVBbGlhcyA9IChfYSA9IHt9LFxuICAgIF9hW0ZpbGVUeXBlLkRvY3VtZW50XSA9ICdkb2NzJyxcbiAgICBfYVtGaWxlVHlwZS5Eb2N1bWVudFByb10gPSAnZG9jeCcsXG4gICAgX2FbRmlsZVR5cGUuU3ByZWFkc2hlZXRdID0gJ3NoZWV0cycsXG4gICAgX2FbRmlsZVR5cGUuUHJlc2VudGF0aW9uXSA9ICdwcmVzZW50YXRpb24nLFxuICAgIF9hW0ZpbGVUeXBlLlRhYmxlXSA9ICd0YWJsZScsXG4gICAgX2FbRmlsZVR5cGUuRm9ybV0gPSAnZm9ybScsXG4gICAgX2FbRmlsZVR5cGUuTWluZG1hcF0gPSAnbWluZG1hcCcsXG4gICAgX2FbRmlsZVR5cGUuQm9hcmRdID0gJ2JvYXJkJyxcbiAgICBfYVtGaWxlVHlwZS5GbG93Y2hhcnRdID0gJ2Zsb3djaGFydCcsXG4gICAgX2EpO1xuLyoqXG4gKiDmoLnmja7kvKDlhaXlgLzovazmjaLkuLogRmlsZVR5cGUg5p6a5Li+5YC8XG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnRGaWxlVHlwZSh2YWx1ZSkge1xuICAgIHZhciBlXzEsIF9hLCBlXzIsIF9iO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfYyA9IF9fdmFsdWVzKE9iamVjdC5lbnRyaWVzKEZpbGVUeXBlKSksIF9kID0gX2MubmV4dCgpOyAhX2QuZG9uZTsgX2QgPSBfYy5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2UgPSBfX3JlYWQoX2QudmFsdWUsIDIpLCBrID0gX2VbMF0sIHYgPSBfZVsxXTtcbiAgICAgICAgICAgICAgICBpZiAoayA9PT0gdmFsdWUgfHwgdiA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2QgJiYgIV9kLmRvbmUgJiYgKF9hID0gX2MucmV0dXJuKSkgX2EuY2FsbChfYyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIF9mID0gX192YWx1ZXMoT2JqZWN0LmVudHJpZXMoZXhwb3J0cy5GaWxlVHlwZUFsaWFzKSksIF9nID0gX2YubmV4dCgpOyAhX2cuZG9uZTsgX2cgPSBfZi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2ggPSBfX3JlYWQoX2cudmFsdWUsIDIpLCBrID0gX2hbMF0sIHYgPSBfaFsxXTtcbiAgICAgICAgICAgICAgICBpZiAodiA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2cgJiYgIV9nLmRvbmUgJiYgKF9iID0gX2YucmV0dXJuKSkgX2IuY2FsbChfZik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMikgdGhyb3cgZV8yLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHN3aXRjaCAodmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgLTI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlLkRvY3VtZW50O1xuICAgICAgICAgICAgY2FzZSAtNDpcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGUuU3ByZWFkc2hlZXQ7XG4gICAgICAgICAgICBjYXNlIC02OlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZS5Eb2N1bWVudFBybztcbiAgICAgICAgICAgIGNhc2UgLTc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlLk1pbmRtYXA7XG4gICAgICAgICAgICBjYXNlIC04OlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZS5Gb3JtO1xuICAgICAgICAgICAgY2FzZSAtOTpcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGUuQm9hcmQ7XG4gICAgICAgICAgICBjYXNlIC0xMDpcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGUuUHJlc2VudGF0aW9uO1xuICAgICAgICAgICAgY2FzZSAtMTE6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlLlRhYmxlO1xuICAgICAgICAgICAgY2FzZSAtMTM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlLkZsb3djaGFydDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gRmlsZVR5cGUuVW5rbm93bjtcbn1cbmV4cG9ydHMuY29udmVydEZpbGVUeXBlID0gY29udmVydEZpbGVUeXBlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlJlYWR5U3RhdGUgPSBleHBvcnRzLmlzU0RLRXZlbnRNZXNzYWdlID0gZXhwb3J0cy5TREtFdmVudCA9IHZvaWQgMDtcbi8qKlxuICogU0RLIOebuOWFs+eahOS6i+S7tu+8jOWSjOe8lui+keWZqOaXoOWFs1xuICovXG5leHBvcnRzLlNES0V2ZW50ID0gT2JqZWN0LmZyZWV6ZSh7XG4gICAgLyoqXG4gICAgICog5LiA6Iis5oyHIGNvbnRhaW5lciB2aWV3cG9ydCDlj5HnlJ/lj5jljJbml7bop6blj5HvvIzmr5TlpoLnqpflj6PlpKflsI/lj5jljJbjgILkvJrkvJjlhYjkvb/nlKggd2luZG93LnZpc3VhbFZpZXdwb3J0IHJlc2l6ZSDkuovku7bvvIzkuI3lj6/nlKjml7bkvb/nlKggd2luZG93LnJlc2l6ZSDkuovku7bjgIJcbiAgICAgKi9cbiAgICBWaWV3cG9ydFJlc2l6ZTogJ1ZpZXdwb3J0UmVzaXplJyxcbiAgICAvKipcbiAgICAgKiBTREsg5ZKM57yW6L6R5Zmo5Yid5aeL5YyW54q25oCBXG4gICAgICovXG4gICAgUmVhZHlTdGF0ZTogJ1JlYWR5U3RhdGUnLFxufSk7XG4vKipcbiAqIOWIpOaWreaYr+WQpuaYryBTREtFdmVudCDkuovku7bmtojmga9cbiAqL1xuZnVuY3Rpb24gaXNTREtFdmVudE1lc3NhZ2UoaW5wdXQpIHtcbiAgICB2YXIgZXZlbnQ7XG4gICAgaWYgKGlucHV0ICE9IG51bGwpIHtcbiAgICAgICAgZXZlbnQgPSBpbnB1dC5ldmVudDtcbiAgICB9XG4gICAgcmV0dXJuIHR5cGVvZiBldmVudCA9PT0gJ3N0cmluZycgJiYgZXZlbnQgaW4gZXhwb3J0cy5TREtFdmVudDtcbn1cbmV4cG9ydHMuaXNTREtFdmVudE1lc3NhZ2UgPSBpc1NES0V2ZW50TWVzc2FnZTtcbi8qKlxuICogU0RLIOWSjOe8lui+keWZqOWIneWni+WMlueKtuaAgVxuICovXG52YXIgUmVhZHlTdGF0ZTtcbihmdW5jdGlvbiAoUmVhZHlTdGF0ZSkge1xuICAgIC8qKlxuICAgICAqIOato+WcqOWIneWni+WMliBTREtcbiAgICAgKi9cbiAgICBSZWFkeVN0YXRlW1wiTG9hZGluZ1wiXSA9IFwibG9hZGluZ1wiO1xuICAgIC8qKlxuICAgICAqIOato+WcqOWIneWni+WMlue8lui+keWZqFxuICAgICAqL1xuICAgIFJlYWR5U3RhdGVbXCJMb2FkaW5nRWRpdG9yXCJdID0gXCJsb2FkaW5nRWRpdG9yXCI7XG4gICAgLyoqXG4gICAgICogU0RLIOWSjOe8lui+keWZqOWIneWni+WMluWujOaIkO+8jOWboOe8lui+keWZqOWQq+W8guatpee7hOS7tu+8jOWboOatpOS7heS7o+ihqOWPr+S7peWSjOe8lui+keWZqOS6pOS6ku+8jOS4jeS7o+ihqOe8lui+keWZqOWujOaIkOWFqOmDqOWKoOi9veOAglxuICAgICAqL1xuICAgIFJlYWR5U3RhdGVbXCJSZWFkeVwiXSA9IFwicmVhZHlcIjtcbiAgICAvKipcbiAgICAgKiDliJ3lp4vljJblpLHotKVcbiAgICAgKi9cbiAgICBSZWFkeVN0YXRlW1wiRmFpbGVkXCJdID0gXCJmYWlsZWRcIjtcbiAgICAvKipcbiAgICAgKiDlt7Lnu4/ooqvplIDmr4FcbiAgICAgKi9cbiAgICBSZWFkeVN0YXRlW1wiRGlzY29ubmVjdGVkXCJdID0gXCJkaXNjb25uZWN0ZWRcIjtcbn0pKFJlYWR5U3RhdGUgPSBleHBvcnRzLlJlYWR5U3RhdGUgfHwgKGV4cG9ydHMuUmVhZHlTdGF0ZSA9IHt9KSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2NyZWF0ZUJpbmRpbmcgPSAodGhpcyAmJiB0aGlzLl9fY3JlYXRlQmluZGluZykgfHwgKE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcbiAgICBpZiAoIWRlc2MgfHwgKFwiZ2V0XCIgaW4gZGVzYyA/ICFtLl9fZXNNb2R1bGUgOiBkZXNjLndyaXRhYmxlIHx8IGRlc2MuY29uZmlndXJhYmxlKSkge1xuICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCBkZXNjKTtcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgICBvW2syXSA9IG1ba107XG59KSk7XG52YXIgX19leHBvcnRTdGFyID0gKHRoaXMgJiYgdGhpcy5fX2V4cG9ydFN0YXIpIHx8IGZ1bmN0aW9uKG0sIGV4cG9ydHMpIHtcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGV4cG9ydHMsIHApKSBfX2NyZWF0ZUJpbmRpbmcoZXhwb3J0cywgbSwgcCk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL3R5cGVzXCIpLCBleHBvcnRzKTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9BUElBZGFwdG9yXCIpLCBleHBvcnRzKTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9GaWxlXCIpLCBleHBvcnRzKTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9ldmVudFwiKSwgZXhwb3J0cyk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVXJsU2hhcmluZ1R5cGUgPSBleHBvcnRzLlNwcmVhZHNoZWV0U2hhcmluZ0Zyb20gPSBleHBvcnRzLkNvbnRhaW5lck1ldGhvZCA9IGV4cG9ydHMuSW52b2tlTWV0aG9kID0gdm9pZCAwO1xuLyoqXG4gKiBKUyBTREsg5LmL6Ze06YCa5L+h55So55qE5pa55rOV44CC5LiA6Iis55So5ZyoIFdlYm9mZmljZUJyb2FkY2FzdENoYW5uZWwuaW52b2tlKCkg5Lit44CCXG4gKi9cbnZhciBJbnZva2VNZXRob2Q7XG4oZnVuY3Rpb24gKEludm9rZU1ldGhvZCkge1xuICAgIC8qKlxuICAgICAqIFNESyDliJ3lp4vljJbvvIznlKjkuo7ojrflj5bphY3nva7kv6Hmga9cbiAgICAgKi9cbiAgICBJbnZva2VNZXRob2RbXCJTREtJbml0XCJdID0gXCJTREtJbml0XCI7XG4gICAgLyoqXG4gICAgICog55So5LqOIGVycm9yIOWkhOeQhlxuICAgICAqL1xuICAgIEludm9rZU1ldGhvZFtcIkVycm9yXCJdID0gXCJlcnJvclwiO1xuICAgIC8qKlxuICAgICAqIOeUqOS6juWkhOeQhiBSZWFkeVN0YXRlIOWPmOWMllxuICAgICAqL1xuICAgIEludm9rZU1ldGhvZFtcIlJlYWR5U3RhdGVcIl0gPSBcInJlYWR5U3RhdGVcIjtcbiAgICAvKipcbiAgICAgKiDnlKjkuo7mm7TmlrDpibTmnYPkv6Hmga9cbiAgICAgKi9cbiAgICBJbnZva2VNZXRob2RbXCJTZXRDcmVkZW50aWFsc1wiXSA9IFwic2V0Q3JlZGVudGlhbHNcIjtcbiAgICAvKipcbiAgICAgKiDosIPnlKjlrrnlmajmlrnms5VcbiAgICAgKi9cbiAgICBJbnZva2VNZXRob2RbXCJJbnZva2VDb250YWluZXJNZXRob2RcIl0gPSBcImludm9rZUNvbnRhaW5lck1ldGhvZFwiO1xuICAgIC8qKlxuICAgICAqIOivt+axguiwg+eUqOe8lui+keWZqOaWueazle+8jOW5tuWwhue7k+aenOi/lOWbnlxuICAgICAqL1xuICAgIEludm9rZU1ldGhvZFtcIkludm9rZUVkaXRvck1ldGhvZFwiXSA9IFwiaW52b2tlRWRpdG9yTWV0aG9kXCI7XG4gICAgLyoqXG4gICAgICog5rS+5Y+RIFNESyDoh6rouqvnm7jlhbPnmoTkuovku7ZcbiAgICAgKi9cbiAgICBJbnZva2VNZXRob2RbXCJEaXNwYXRjaFNES0V2ZW50XCJdID0gXCJkaXNwYXRjaFNES0V2ZW50XCI7XG4gICAgLyoqXG4gICAgICog5rS+5Y+R57yW6L6R5Zmo55u45YWz55qE5LqL5Lu2XG4gICAgICovXG4gICAgSW52b2tlTWV0aG9kW1wiRGlzcGF0Y2hFZGl0b3JFdmVudFwiXSA9IFwiZGlzcGF0Y2hFZGl0b3JFdmVudFwiO1xuICAgIC8qKlxuICAgICAqIOebkeWQrOe8lui+keWZqOebuOWFs+eahOS6i+S7tlxuICAgICAqL1xuICAgIEludm9rZU1ldGhvZFtcIkxpc3RlbkVkaXRvckV2ZW50XCJdID0gXCJsaXN0ZW5FZGl0b3JFdmVudFwiO1xuICAgIC8qKlxuICAgICAqIOivt+axguaAp+iDveS/oeaBr+WIl+ihqFxuICAgICAqL1xuICAgIEludm9rZU1ldGhvZFtcIlJlcXVlc3RQZXJmb3JtYW5jZUVudHJpZXNcIl0gPSBcInJlcXVlc3RQZXJmb3JtYW5jZUVudHJpZXNcIjtcbn0pKEludm9rZU1ldGhvZCA9IGV4cG9ydHMuSW52b2tlTWV0aG9kIHx8IChleHBvcnRzLkludm9rZU1ldGhvZCA9IHt9KSk7XG4vKipcbiAqIOWuueWZqOiDveaPkOS+m+eahOaWueazlVxuICovXG52YXIgQ29udGFpbmVyTWV0aG9kO1xuKGZ1bmN0aW9uIChDb250YWluZXJNZXRob2QpIHtcbiAgICAvKipcbiAgICAgKiDojrflj5blrrnlmajnmoTlsLrlr7jkv6Hmga9cbiAgICAgKi9cbiAgICBDb250YWluZXJNZXRob2RbXCJHZXRDb250YWluZXJSZWN0XCJdID0gXCJnZXRDb250YWluZXJSZWN0XCI7XG4gICAgLyoqXG4gICAgICog6K+35rGC5a655Zmo5omT5byA6ZO+5o6lXG4gICAgICovXG4gICAgQ29udGFpbmVyTWV0aG9kW1wiT3BlbkxpbmtcIl0gPSBcIm9wZW5MaW5rXCI7XG4gICAgLyoqXG4gICAgICog6K+35rGC5a655Zmo55Sf5oiQIFVSTFxuICAgICAqL1xuICAgIENvbnRhaW5lck1ldGhvZFtcIkdlbmVyYXRlVXJsXCJdID0gXCJnZW5lcmF0ZVVybFwiO1xuICAgIC8qKlxuICAgICAqIOivt+axguWuueWZqOaJk+W8gOWkhOeQhuenu+WKqOerr+eCueWHu+S6i+S7tlxuICAgICAqL1xuICAgIENvbnRhaW5lck1ldGhvZFtcIk1lbnRpb25DbGlja0hhbmRsZXJGb3JNb2JpbGVcIl0gPSBcIm1lbnRpb25DbGlja0hhbmRsZXJGb3JNb2JpbGVcIjtcbiAgICAvKipcbiAgICAgKiDor7fmsYLlrrnlmajop6PmnpAgVVJM77yM5bm26L+U5ZueIEZpbGVJbmZvXG4gICAgICovXG4gICAgQ29udGFpbmVyTWV0aG9kW1wiR2V0RmlsZUluZm9Gcm9tVXJsXCJdID0gXCJnZXRGaWxlSW5mb0Zyb21VcmxcIjtcbiAgICAvKipcbiAgICAgKiDor7fmsYLlrrnlmajmmL7npLrnrb7lkI3nu4Tku7bvvIzlj5flpZfku7blkozniYjmnKzpmZDliLZcbiAgICAgKi9cbiAgICBDb250YWluZXJNZXRob2RbXCJTaG93U2lnbmF0dXJlQ29tcG9uZW50XCJdID0gXCJzaG93U2lnbmF0dXJlQ29tcG9uZW50XCI7XG4gICAgLyoqXG4gICAgICog6K+35rGC5a655Zmo5pi+56S6dG9hc3TvvIzlj5flpZfku7blkozniYjmnKzpmZDliLZcbiAgICAgKi9cbiAgICBDb250YWluZXJNZXRob2RbXCJTaG93VG9hc3RcIl0gPSBcInNob3dUb2FzdFwiO1xuICAgIC8qKlxuICAgICAqIOmAmuefpeeUqOaIt+aJp+ihjOiHquWumuS5ieaTjeS9nO+8jOaTjeS9nOeUseeUqOaIt+iHquWumuS5ieaMiemSruinpuWPkVxuICAgICAqL1xuICAgIENvbnRhaW5lck1ldGhvZFtcIkhhbmRsZUN1c3RvbVRhc2tcIl0gPSBcImhhbmRsZUN1c3RvbVRhc2tcIjtcbiAgICAvKipcbiAgICAgKiDor7fmsYLlrrnlmajojrflj5bpibTmnYPkv6Hmga9cbiAgICAgKi9cbiAgICBDb250YWluZXJNZXRob2RbXCJHZXRDcmVkZW50aWFsc1wiXSA9IFwiZ2V0Q3JlZGVudGlhbHNcIjtcbn0pKENvbnRhaW5lck1ldGhvZCA9IGV4cG9ydHMuQ29udGFpbmVyTWV0aG9kIHx8IChleHBvcnRzLkNvbnRhaW5lck1ldGhvZCA9IHt9KSk7XG52YXIgU3ByZWFkc2hlZXRTaGFyaW5nRnJvbTtcbihmdW5jdGlvbiAoU3ByZWFkc2hlZXRTaGFyaW5nRnJvbSkge1xuICAgIC8qKlxuICAgICAqIOiOt+WPlumAieWMuumTvuaOpVxuICAgICAqL1xuICAgIFNwcmVhZHNoZWV0U2hhcmluZ0Zyb21bXCJjb3B5UmFuZ2VMaW5rXCJdID0gXCJjb3B5UmFuZ2VMaW5rXCI7XG4gICAgLyoqXG4gICAgICog5aSN5Yi254us56uL6KeG5Zu+6ZO+5o6lXG4gICAgICovXG4gICAgU3ByZWFkc2hlZXRTaGFyaW5nRnJvbVtcImNvcHlWaWV3cG9ydExpbmtcIl0gPSBcImNvcHlWaWV3cG9ydExpbmtcIjtcbiAgICAvKipcbiAgICAgKiDlpI3liLbpk77mjqXliLDlt6XkvZzooajnmoTlhoXpk77mjqVcbiAgICAgKi9cbiAgICBTcHJlYWRzaGVldFNoYXJpbmdGcm9tW1wiY29weVNoZWV0TGlua1wiXSA9IFwiY29weVNoZWV0TGlua1wiO1xuICAgIC8qKlxuICAgICAqIOi3qOihqOagvOW8leeUqFxuICAgICAqL1xuICAgIFNwcmVhZHNoZWV0U2hhcmluZ0Zyb21bXCJpbXBvcnRSYW5nZVwiXSA9IFwiaW1wb3J0UmFuZ2VcIjtcbiAgICAvKipcbiAgICAgKiDpooTop4jooqvot6jooajlvJXnlKjmiJblkIjlubblt6XkvZzooajlvJXnlKjnmoTooajmoLxcbiAgICAgKi9cbiAgICBTcHJlYWRzaGVldFNoYXJpbmdGcm9tW1wicHJldmlld1wiXSA9IFwicHJldmlld1wiO1xufSkoU3ByZWFkc2hlZXRTaGFyaW5nRnJvbSA9IGV4cG9ydHMuU3ByZWFkc2hlZXRTaGFyaW5nRnJvbSB8fCAoZXhwb3J0cy5TcHJlYWRzaGVldFNoYXJpbmdGcm9tID0ge30pKTtcbi8qKlxuICog5YiG5Lqr6ZO+5o6l55qE57G75Z6L77yM55So5LqO5ZyoIGdlbmVyYXRlVXJsIOS4rei/lOWbnuS4jeWQjOeahCBVUkzjgIJcbiAqIOavlOWmgiByZXR1cm4gc2hhcmluZ1R5cGUgPT09IFVybFNoYXJpbmdUeXBlLkZvcm1GaWxsID8gJy9mb3JtLzEvZmlsbCcgOiAnL2Zvcm0vMSfjgIJcbiAqICcvZm9ybS8xL2ZpbGwnIOS4uuWvueWkluWMv+WQjeWPr+iuv+mXruWhq+WGmeihqOWNleeahOmTvuaOpe+8jCcvZm9ybS8xJyDkuLrlr7nlhoXnvJbovpHooajljZXlhYPntKDjgIHpnIDpibTmnYPnmoTpk77mjqXjgIJcbiAqL1xudmFyIFVybFNoYXJpbmdUeXBlO1xuKGZ1bmN0aW9uIChVcmxTaGFyaW5nVHlwZSkge1xuICAgIC8qKlxuICAgICAqIOS7o+ihqOWIhuS6q+eahOaYr+i9u+aWh+aho+mTvuaOpVxuICAgICAqL1xuICAgIFVybFNoYXJpbmdUeXBlW1wiRG9jXCJdID0gXCJkb2NcIjtcbiAgICAvKipcbiAgICAgKiDku6PooajliIbkuqvnmoTmmK/kvKDnu5/mlofmoaPpk77mjqVcbiAgICAgKi9cbiAgICBVcmxTaGFyaW5nVHlwZVtcIkRvY3hcIl0gPSBcImRvY3hcIjtcbiAgICAvKipcbiAgICAgKiDku6PooajliIbkuqvnmoTmmK/ooajmoLzpk77mjqVcbiAgICAgKi9cbiAgICBVcmxTaGFyaW5nVHlwZVtcIlNwcmVhZHNoZWV0XCJdID0gXCJzaGVldFwiO1xuICAgIC8qKlxuICAgICAqIOS7o+ihqOWIhuS6q+eahOaYr+ihqOWNlee8lui+keWZqOmTvuaOpVxuICAgICAqL1xuICAgIFVybFNoYXJpbmdUeXBlW1wiRm9ybVwiXSA9IFwiZm9ybVwiO1xuICAgIC8qKlxuICAgICAqIOS7o+ihqOWIhuS6q+eahOaYr+ihqOWNlemihOiniOmTvuaOpVxuICAgICAqL1xuICAgIFVybFNoYXJpbmdUeXBlW1wiRm9ybVByZXZpZXdcIl0gPSBcImZvcm1QcmV2aWV3XCI7XG4gICAgLyoqXG4gICAgICog5Luj6KGo5YiG5Lqr55qE5piv6KGo5Y2V5aGr5YaZ6ZO+5o6lXG4gICAgICovXG4gICAgVXJsU2hhcmluZ1R5cGVbXCJGb3JtRmlsbFwiXSA9IFwiZm9ybUZpbGxcIjtcbiAgICAvKipcbiAgICAgKiDku6PooajliIbkuqvnmoTmmK/lubvnga/niYfpk77mjqVcbiAgICAgKi9cbiAgICBVcmxTaGFyaW5nVHlwZVtcIlByZXNlbnRhdGlvblwiXSA9IFwicHJlc2VudGF0aW9uXCI7XG4gICAgLyoqXG4gICAgICog5Luj6KGo5YiG5Lqr55qE5piv5bqU55So6KGo5qC86ZO+5o6lXG4gICAgICovXG4gICAgVXJsU2hhcmluZ1R5cGVbXCJUYWJsZVwiXSA9IFwidGFibGVcIjtcbiAgICAvKipcbiAgICAgKiDku6PooajliIbkuqvnmoTmmK/mtYHnqIvlm77pk77mjqVcbiAgICAgKi9cbiAgICBVcmxTaGFyaW5nVHlwZVtcIkZsb3djaGFydFwiXSA9IFwiZmxvd2NoYXJ0XCI7XG4gICAgLyoqXG4gICAgICog5Luj6KGo5YiG5Lqr55qE5piv5oCd57u05a+85Zu+6ZO+5o6lXG4gICAgICovXG4gICAgVXJsU2hhcmluZ1R5cGVbXCJNaW5kbWFwXCJdID0gXCJtaW5kbWFwXCI7XG4gICAgLyoqXG4gICAgICog5Luj6KGo5YiG5Lqr55qE5piv55m95p2/6ZO+5o6lXG4gICAgICovXG4gICAgVXJsU2hhcmluZ1R5cGVbXCJCb2FyZFwiXSA9IFwiYm9hcmRcIjtcbn0pKFVybFNoYXJpbmdUeXBlID0gZXhwb3J0cy5VcmxTaGFyaW5nVHlwZSB8fCAoZXhwb3J0cy5VcmxTaGFyaW5nVHlwZSA9IHt9KSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuU3RhcnRQYXJhbXMgPSB2b2lkIDA7XG52YXIgaXNfcGxhaW5fb2JqXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImlzLXBsYWluLW9ialwiKSk7XG52YXIgYmFzZTYyc3RyXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImJhc2U2MnN0clwiKSk7XG52YXIgYmFzZTYyID0gYmFzZTYyc3RyXzEuZGVmYXVsdC5jcmVhdGVJbnN0YW5jZSgpO1xudmFyIFN0YXJ0UGFyYW1zID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIC8qKlxuICAgICAqIOWIm+W7uuS4gOS4qiBTdGFydFBhcmFtcyDlr7nosaHjgIJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXJhbXMg5Y+C5pWw5a+56LGh77yM5Y+v5Lul5piv5a2X56ym5Liy44CB57qv5a+56LGh5oiWIFN0YXJ0UGFyYW1zIOWunuS+i+OAguaOpeWPl+aVsOe7hOW9ouW8j++8jOS8oOWFpeaVsOe7hOS8muWQiOW5tuaJgOaciemhueebruOAglxuICAgICAqL1xuICAgIGZ1bmN0aW9uIFN0YXJ0UGFyYW1zKHBhcmFtcykge1xuICAgICAgICBpZiAodHlwZW9mIHBhcmFtcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiBTdGFydFBhcmFtcy5wYXJzZShwYXJhbXMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoMCwgaXNfcGxhaW5fb2JqXzEuZGVmYXVsdCkocGFyYW1zKSkge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBwYXJhbXMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHBhcmFtcyBpbnN0YW5jZW9mIFN0YXJ0UGFyYW1zKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocGFyYW1zKSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocGFyYW1zKSkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBwYXJhbXNfMSA9IHBhcmFtczsgX2kgPCBwYXJhbXNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgcGFyYW0gPSBwYXJhbXNfMVtfaV07XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBTdGFydFBhcmFtcy5wYXJzZShwYXJhbSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChwYXJhbSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwYXJhbSkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8g5aSN5Yi25pen5YC8XG4gICAgICAgIGlmICh0aGlzLmZpbGVHdWlkID09IG51bGwgJiYgdGhpcy5ndWlkICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZUd1aWQgPSB0aGlzLmd1aWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8g5aaC5p6c5YC85LiN5LiA6Ie077yM5YiZ55SoIGZpbGVHdWlkIOimhuebliBndWlk77yM6YG/5YWN5Ye66Zeu6aKYXG4gICAgICAgIGlmICh0aGlzLmd1aWQgIT0gbnVsbCAmJiB0aGlzLmZpbGVHdWlkICE9PSB0aGlzLmd1aWQpIHtcbiAgICAgICAgICAgIHRoaXMuZ3VpZCA9IHRoaXMuZmlsZUd1aWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICog5bCG5a2X56ym5Liy6Kej5p6Q5Li6IFN0YXJ0UGFyYW1zIOWvueixoeOAglxuICAgICAqXG4gICAgICogQHBhcmFtIHBhcmFtU3RyIOW+heino+aekOeahOWtl+espuS4suOAglxuICAgICAqL1xuICAgIFN0YXJ0UGFyYW1zLnBhcnNlID0gZnVuY3Rpb24gKHBhcmFtU3RyKSB7XG4gICAgICAgIHJldHVybiBuZXcgU3RhcnRQYXJhbXMoSlNPTi5wYXJzZShiYXNlNjIuZGVjb2RlU3RyKHBhcmFtU3RyKSkpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5bCGIFN0YXJ0UGFyYW1zIOWvueixoei9rOaNouS4uuWtl+espuS4suOAglxuICAgICAqL1xuICAgIFN0YXJ0UGFyYW1zLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGJhc2U2Mi5lbmNvZGVTdHIoSlNPTi5zdHJpbmdpZnkodGhpcykpO1xuICAgIH07XG4gICAgcmV0dXJuIFN0YXJ0UGFyYW1zO1xufSgpKTtcbmV4cG9ydHMuU3RhcnRQYXJhbXMgPSBTdGFydFBhcmFtcztcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fY3JlYXRlQmluZGluZyA9ICh0aGlzICYmIHRoaXMuX19jcmVhdGVCaW5kaW5nKSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XG4gICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIG9bazJdID0gbVtrXTtcbn0pKTtcbnZhciBfX2V4cG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9fZXhwb3J0U3RhcikgfHwgZnVuY3Rpb24obSwgZXhwb3J0cykge1xuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXhwb3J0cywgcCkpIF9fY3JlYXRlQmluZGluZyhleHBvcnRzLCBtLCBwKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vU3RhcnRQYXJhbXNcIiksIGV4cG9ydHMpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHZhbHVlID0+IHtcblx0aWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgIT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Y29uc3QgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKTtcblx0cmV0dXJuIHByb3RvdHlwZSA9PT0gbnVsbCB8fCBwcm90b3R5cGUgPT09IE9iamVjdC5wcm90b3R5cGU7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL3N0YWJsZS9hcnJheS9pbmNsdWRlcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9zdGFibGUvb2JqZWN0L2Fzc2lnbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9zdGFibGUvcHJvbWlzZScpO1xuLy8gVE9ETzogUmVtb3ZlIGZyb20gYGNvcmUtanNANGBcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXNuZXh0LnByb21pc2UudHJ5Jyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzbmV4dC5wcm9taXNlLndpdGgtcmVzb2x2ZXJzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL3N0YWJsZS91cmwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCIndXNlIHN0cmljdCc7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLmFycmF5LmluY2x1ZGVzJyk7XG52YXIgZW50cnlVbmJpbmQgPSByZXF1aXJlKCcuLi8uLi9pbnRlcm5hbHMvZW50cnktdW5iaW5kJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZW50cnlVbmJpbmQoJ0FycmF5JywgJ2luY2x1ZGVzJyk7XG4iLCIndXNlIHN0cmljdCc7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLm9iamVjdC5hc3NpZ24nKTtcbnZhciBwYXRoID0gcmVxdWlyZSgnLi4vLi4vaW50ZXJuYWxzL3BhdGgnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXRoLk9iamVjdC5hc3NpZ247XG4iLCIndXNlIHN0cmljdCc7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLmFnZ3JlZ2F0ZS1lcnJvcicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5hcnJheS5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnByb21pc2UnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMucHJvbWlzZS5hbGwtc2V0dGxlZCcpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5wcm9taXNlLmFueScpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5wcm9taXNlLnRyeScpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5wcm9taXNlLndpdGgtcmVzb2x2ZXJzJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnByb21pc2UuZmluYWxseScpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5zdHJpbmcuaXRlcmF0b3InKTtcbnZhciBwYXRoID0gcmVxdWlyZSgnLi4vLi4vaW50ZXJuYWxzL3BhdGgnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXRoLlByb21pc2U7XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL2Z1bGwvYXJyYXkvaW5jbHVkZXMnKTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vZnVsbC9vYmplY3QvYXNzaWduJyk7XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL2Z1bGwvcHJvbWlzZScpO1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9mdWxsL3VybCcpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL2FjdHVhbC9hcnJheS9pbmNsdWRlcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9hY3R1YWwvb2JqZWN0L2Fzc2lnbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9hY3R1YWwvcHJvbWlzZScpO1xuLy8gVE9ETzogUmVtb3ZlIGZyb20gYGNvcmUtanNANGBcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXNuZXh0LmFnZ3JlZ2F0ZS1lcnJvcicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lc25leHQucHJvbWlzZS5hbGwtc2V0dGxlZCcpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lc25leHQucHJvbWlzZS5hbnknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vYWN0dWFsL3VybCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgdHJ5VG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZycpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYEFzc2VydDogSXNDYWxsYWJsZShhcmd1bWVudCkgaXMgdHJ1ZWBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChpc0NhbGxhYmxlKGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcih0cnlUb1N0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY29uc3RydWN0b3InKTtcbnZhciB0cnlUb1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90cnktdG8tc3RyaW5nJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgQXNzZXJ0OiBJc0NvbnN0cnVjdG9yKGFyZ3VtZW50KSBpcyB0cnVlYFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGlzQ29uc3RydWN0b3IoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKHRyeVRvU3RyaW5nKGFyZ3VtZW50KSArICcgaXMgbm90IGEgY29uc3RydWN0b3InKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNQb3NzaWJsZVByb3RvdHlwZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wb3NzaWJsZS1wcm90b3R5cGUnKTtcblxudmFyICRTdHJpbmcgPSBTdHJpbmc7XG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGlzUG9zc2libGVQcm90b3R5cGUoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKFwiQ2FuJ3Qgc2V0IFwiICsgJFN0cmluZyhhcmd1bWVudCkgKyAnIGFzIGEgcHJvdG90eXBlJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG5cbnZhciBVTlNDT1BBQkxFUyA9IHdlbGxLbm93blN5bWJvbCgndW5zY29wYWJsZXMnKTtcbnZhciBBcnJheVByb3RvdHlwZSA9IEFycmF5LnByb3RvdHlwZTtcblxuLy8gQXJyYXkucHJvdG90eXBlW0BAdW5zY29wYWJsZXNdXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS1AQHVuc2NvcGFibGVzXG5pZiAoQXJyYXlQcm90b3R5cGVbVU5TQ09QQUJMRVNdID09PSB1bmRlZmluZWQpIHtcbiAgZGVmaW5lUHJvcGVydHkoQXJyYXlQcm90b3R5cGUsIFVOU0NPUEFCTEVTLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIHZhbHVlOiBjcmVhdGUobnVsbClcbiAgfSk7XG59XG5cbi8vIGFkZCBhIGtleSB0byBBcnJheS5wcm90b3R5cGVbQEB1bnNjb3BhYmxlc11cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICBBcnJheVByb3RvdHlwZVtVTlNDT1BBQkxFU11ba2V5XSA9IHRydWU7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzUHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZicpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFByb3RvdHlwZSkge1xuICBpZiAoaXNQcm90b3R5cGVPZihQcm90b3R5cGUsIGl0KSkgcmV0dXJuIGl0O1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcignSW5jb3JyZWN0IGludm9jYXRpb24nKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciAkU3RyaW5nID0gU3RyaW5nO1xudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBBc3NlcnQ6IFR5cGUoYXJndW1lbnQpIGlzIE9iamVjdGBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChpc09iamVjdChhcmd1bWVudCkpIHJldHVybiBhcmd1bWVudDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoJFN0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhbiBvYmplY3QnKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBjYWxsV2l0aFNhZmVJdGVyYXRpb25DbG9zaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NhbGwtd2l0aC1zYWZlLWl0ZXJhdGlvbi1jbG9zaW5nJyk7XG52YXIgaXNBcnJheUl0ZXJhdG9yTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWFycmF5LWl0ZXJhdG9yLW1ldGhvZCcpO1xudmFyIGlzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY29uc3RydWN0b3InKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xudmFyIGNyZWF0ZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eScpO1xudmFyIGdldEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvcicpO1xudmFyIGdldEl0ZXJhdG9yTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QnKTtcblxudmFyICRBcnJheSA9IEFycmF5O1xuXG4vLyBgQXJyYXkuZnJvbWAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LmZyb21cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZnJvbShhcnJheUxpa2UgLyogLCBtYXBmbiA9IHVuZGVmaW5lZCwgdGhpc0FyZyA9IHVuZGVmaW5lZCAqLykge1xuICB2YXIgTyA9IHRvT2JqZWN0KGFycmF5TGlrZSk7XG4gIHZhciBJU19DT05TVFJVQ1RPUiA9IGlzQ29uc3RydWN0b3IodGhpcyk7XG4gIHZhciBhcmd1bWVudHNMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgbWFwZm4gPSBhcmd1bWVudHNMZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuICB2YXIgbWFwcGluZyA9IG1hcGZuICE9PSB1bmRlZmluZWQ7XG4gIGlmIChtYXBwaW5nKSBtYXBmbiA9IGJpbmQobWFwZm4sIGFyZ3VtZW50c0xlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQpO1xuICB2YXIgaXRlcmF0b3JNZXRob2QgPSBnZXRJdGVyYXRvck1ldGhvZChPKTtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxlbmd0aCwgcmVzdWx0LCBzdGVwLCBpdGVyYXRvciwgbmV4dCwgdmFsdWU7XG4gIC8vIGlmIHRoZSB0YXJnZXQgaXMgbm90IGl0ZXJhYmxlIG9yIGl0J3MgYW4gYXJyYXkgd2l0aCB0aGUgZGVmYXVsdCBpdGVyYXRvciAtIHVzZSBhIHNpbXBsZSBjYXNlXG4gIGlmIChpdGVyYXRvck1ldGhvZCAmJiAhKHRoaXMgPT09ICRBcnJheSAmJiBpc0FycmF5SXRlcmF0b3JNZXRob2QoaXRlcmF0b3JNZXRob2QpKSkge1xuICAgIHJlc3VsdCA9IElTX0NPTlNUUlVDVE9SID8gbmV3IHRoaXMoKSA6IFtdO1xuICAgIGl0ZXJhdG9yID0gZ2V0SXRlcmF0b3IoTywgaXRlcmF0b3JNZXRob2QpO1xuICAgIG5leHQgPSBpdGVyYXRvci5uZXh0O1xuICAgIGZvciAoOyEoc3RlcCA9IGNhbGwobmV4dCwgaXRlcmF0b3IpKS5kb25lOyBpbmRleCsrKSB7XG4gICAgICB2YWx1ZSA9IG1hcHBpbmcgPyBjYWxsV2l0aFNhZmVJdGVyYXRpb25DbG9zaW5nKGl0ZXJhdG9yLCBtYXBmbiwgW3N0ZXAudmFsdWUsIGluZGV4XSwgdHJ1ZSkgOiBzdGVwLnZhbHVlO1xuICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgdmFsdWUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICByZXN1bHQgPSBJU19DT05TVFJVQ1RPUiA/IG5ldyB0aGlzKGxlbmd0aCkgOiAkQXJyYXkobGVuZ3RoKTtcbiAgICBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgdmFsdWUgPSBtYXBwaW5nID8gbWFwZm4oT1tpbmRleF0sIGluZGV4KSA6IE9baW5kZXhdO1xuICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgdmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXN1bHQubGVuZ3RoID0gaW5kZXg7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUueyBpbmRleE9mLCBpbmNsdWRlcyB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKE8pO1xuICAgIGlmIChsZW5ndGggPT09IDApIHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gICAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGZyb21JbmRleCwgbGVuZ3RoKTtcbiAgICB2YXIgdmFsdWU7XG4gICAgLy8gQXJyYXkjaW5jbHVkZXMgdXNlcyBTYW1lVmFsdWVaZXJvIGVxdWFsaXR5IGFsZ29yaXRobVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9PSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICAgICAgaWYgKHZhbHVlICE9PSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgaWYgKChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSAmJiBPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcbiAgaW5jbHVkZXM6IGNyZWF0ZU1ldGhvZCh0cnVlKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5pbmRleE9mYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5kZXhvZlxuICBpbmRleE9mOiBjcmVhdGVNZXRob2QoZmFsc2UpXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHVuY3VycnlUaGlzKFtdLnNsaWNlKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhcnJheVNsaWNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXNsaWNlJyk7XG5cbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5cbnZhciBzb3J0ID0gZnVuY3Rpb24gKGFycmF5LCBjb21wYXJlZm4pIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBpZiAobGVuZ3RoIDwgOCkge1xuICAgIC8vIGluc2VydGlvbiBzb3J0XG4gICAgdmFyIGkgPSAxO1xuICAgIHZhciBlbGVtZW50LCBqO1xuXG4gICAgd2hpbGUgKGkgPCBsZW5ndGgpIHtcbiAgICAgIGogPSBpO1xuICAgICAgZWxlbWVudCA9IGFycmF5W2ldO1xuICAgICAgd2hpbGUgKGogJiYgY29tcGFyZWZuKGFycmF5W2ogLSAxXSwgZWxlbWVudCkgPiAwKSB7XG4gICAgICAgIGFycmF5W2pdID0gYXJyYXlbLS1qXTtcbiAgICAgIH1cbiAgICAgIGlmIChqICE9PSBpKyspIGFycmF5W2pdID0gZWxlbWVudDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gbWVyZ2Ugc29ydFxuICAgIHZhciBtaWRkbGUgPSBmbG9vcihsZW5ndGggLyAyKTtcbiAgICB2YXIgbGVmdCA9IHNvcnQoYXJyYXlTbGljZShhcnJheSwgMCwgbWlkZGxlKSwgY29tcGFyZWZuKTtcbiAgICB2YXIgcmlnaHQgPSBzb3J0KGFycmF5U2xpY2UoYXJyYXksIG1pZGRsZSksIGNvbXBhcmVmbik7XG4gICAgdmFyIGxsZW5ndGggPSBsZWZ0Lmxlbmd0aDtcbiAgICB2YXIgcmxlbmd0aCA9IHJpZ2h0Lmxlbmd0aDtcbiAgICB2YXIgbGluZGV4ID0gMDtcbiAgICB2YXIgcmluZGV4ID0gMDtcblxuICAgIHdoaWxlIChsaW5kZXggPCBsbGVuZ3RoIHx8IHJpbmRleCA8IHJsZW5ndGgpIHtcbiAgICAgIGFycmF5W2xpbmRleCArIHJpbmRleF0gPSAobGluZGV4IDwgbGxlbmd0aCAmJiByaW5kZXggPCBybGVuZ3RoKVxuICAgICAgICA/IGNvbXBhcmVmbihsZWZ0W2xpbmRleF0sIHJpZ2h0W3JpbmRleF0pIDw9IDAgPyBsZWZ0W2xpbmRleCsrXSA6IHJpZ2h0W3JpbmRleCsrXVxuICAgICAgICA6IGxpbmRleCA8IGxsZW5ndGggPyBsZWZ0W2xpbmRleCsrXSA6IHJpZ2h0W3JpbmRleCsrXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXJyYXk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNvcnQ7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgaXRlcmF0b3JDbG9zZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvci1jbG9zZScpO1xuXG4vLyBjYWxsIHNvbWV0aGluZyBvbiBpdGVyYXRvciBzdGVwIHdpdGggc2FmZSBjbG9zaW5nIG9uIGVycm9yXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYXRvciwgZm4sIHZhbHVlLCBFTlRSSUVTKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEVOVFJJRVMgPyBmbihhbk9iamVjdCh2YWx1ZSlbMF0sIHZhbHVlWzFdKSA6IGZuKHZhbHVlKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCAndGhyb3cnLCBlcnJvcik7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcbnZhciBTQUZFX0NMT1NJTkcgPSBmYWxzZTtcblxudHJ5IHtcbiAgdmFyIGNhbGxlZCA9IDA7XG4gIHZhciBpdGVyYXRvcldpdGhSZXR1cm4gPSB7XG4gICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHsgZG9uZTogISFjYWxsZWQrKyB9O1xuICAgIH0sXG4gICAgJ3JldHVybic6IGZ1bmN0aW9uICgpIHtcbiAgICAgIFNBRkVfQ0xPU0lORyA9IHRydWU7XG4gICAgfVxuICB9O1xuICBpdGVyYXRvcldpdGhSZXR1cm5bSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tYXJyYXktZnJvbSwgbm8tdGhyb3ctbGl0ZXJhbCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICBBcnJheS5mcm9tKGl0ZXJhdG9yV2l0aFJldHVybiwgZnVuY3Rpb24gKCkgeyB0aHJvdyAyOyB9KTtcbn0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYywgU0tJUF9DTE9TSU5HKSB7XG4gIHRyeSB7XG4gICAgaWYgKCFTS0lQX0NMT1NJTkcgJiYgIVNBRkVfQ0xPU0lORykgcmV0dXJuIGZhbHNlO1xuICB9IGNhdGNoIChlcnJvcikgeyByZXR1cm4gZmFsc2U7IH0gLy8gd29ya2Fyb3VuZCBvZiBvbGQgV2ViS2l0ICsgYGV2YWxgIGJ1Z1xuICB2YXIgSVRFUkFUSU9OX1NVUFBPUlQgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICB2YXIgb2JqZWN0ID0ge307XG4gICAgb2JqZWN0W0lURVJBVE9SXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4geyBkb25lOiBJVEVSQVRJT05fU1VQUE9SVCA9IHRydWUgfTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuICAgIGV4ZWMob2JqZWN0KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gSVRFUkFUSU9OX1NVUFBPUlQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG52YXIgdG9TdHJpbmcgPSB1bmN1cnJ5VGhpcyh7fS50b1N0cmluZyk7XG52YXIgc3RyaW5nU2xpY2UgPSB1bmN1cnJ5VGhpcygnJy5zbGljZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBzdHJpbmdTbGljZSh0b1N0cmluZyhpdCksIDgsIC0xKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgVE9fU1RSSU5HX1RBR19TVVBQT1JUID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZy10YWctc3VwcG9ydCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBjbGFzc29mUmF3ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xudmFyICRPYmplY3QgPSBPYmplY3Q7XG5cbi8vIEVTMyB3cm9uZyBoZXJlXG52YXIgQ09SUkVDVF9BUkdVTUVOVFMgPSBjbGFzc29mUmF3KGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PT0gJ0FyZ3VtZW50cyc7XG5cbi8vIGZhbGxiYWNrIGZvciBJRTExIFNjcmlwdCBBY2Nlc3MgRGVuaWVkIGVycm9yXG52YXIgdHJ5R2V0ID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gaXRba2V5XTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxufTtcblxuLy8gZ2V0dGluZyB0YWcgZnJvbSBFUzYrIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYFxubW9kdWxlLmV4cG9ydHMgPSBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPyBjbGFzc29mUmF3IDogZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPLCB0YWcsIHJlc3VsdDtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyAnVW5kZWZpbmVkJyA6IGl0ID09PSBudWxsID8gJ051bGwnXG4gICAgLy8gQEB0b1N0cmluZ1RhZyBjYXNlXG4gICAgOiB0eXBlb2YgKHRhZyA9IHRyeUdldChPID0gJE9iamVjdChpdCksIFRPX1NUUklOR19UQUcpKSA9PSAnc3RyaW5nJyA/IHRhZ1xuICAgIC8vIGJ1aWx0aW5UYWcgY2FzZVxuICAgIDogQ09SUkVDVF9BUkdVTUVOVFMgPyBjbGFzc29mUmF3KE8pXG4gICAgLy8gRVMzIGFyZ3VtZW50cyBmYWxsYmFja1xuICAgIDogKHJlc3VsdCA9IGNsYXNzb2ZSYXcoTykpID09PSAnT2JqZWN0JyAmJiBpc0NhbGxhYmxlKE8uY2FsbGVlKSA/ICdBcmd1bWVudHMnIDogcmVzdWx0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIG93bktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb3duLWtleXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzb3VyY2UsIGV4Y2VwdGlvbnMpIHtcbiAgdmFyIGtleXMgPSBvd25LZXlzKHNvdXJjZSk7XG4gIHZhciBkZWZpbmVQcm9wZXJ0eSA9IGRlZmluZVByb3BlcnR5TW9kdWxlLmY7XG4gIHZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUuZjtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgaWYgKCFoYXNPd24odGFyZ2V0LCBrZXkpICYmICEoZXhjZXB0aW9ucyAmJiBoYXNPd24oZXhjZXB0aW9ucywga2V5KSkpIHtcbiAgICAgIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTtcbiAgICB9XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBGKCkgeyAvKiBlbXB0eSAqLyB9XG4gIEYucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gbnVsbDtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRwcm90b3R5cGVvZiAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBGKCkpICE9PSBGLnByb3RvdHlwZTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gYENyZWF0ZUl0ZXJSZXN1bHRPYmplY3RgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1jcmVhdGVpdGVycmVzdWx0b2JqZWN0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh2YWx1ZSwgZG9uZSkge1xuICByZXR1cm4geyB2YWx1ZTogdmFsdWUsIGRvbmU6IGRvbmUgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gREVTQ1JJUFRPUlMgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKG9iamVjdCwga2V5LCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgdmFsdWUpKTtcbn0gOiBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYml0bWFwLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIGlmIChERVNDUklQVE9SUykgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIGtleSwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDAsIHZhbHVlKSk7XG4gIGVsc2Ugb2JqZWN0W2tleV0gPSB2YWx1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgbWFrZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWFrZS1idWlsdC1pbicpO1xudmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBuYW1lLCBkZXNjcmlwdG9yKSB7XG4gIGlmIChkZXNjcmlwdG9yLmdldCkgbWFrZUJ1aWx0SW4oZGVzY3JpcHRvci5nZXQsIG5hbWUsIHsgZ2V0dGVyOiB0cnVlIH0pO1xuICBpZiAoZGVzY3JpcHRvci5zZXQpIG1ha2VCdWlsdEluKGRlc2NyaXB0b3Iuc2V0LCBuYW1lLCB7IHNldHRlcjogdHJ1ZSB9KTtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5LmYodGFyZ2V0LCBuYW1lLCBkZXNjcmlwdG9yKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBtYWtlQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYWtlLWJ1aWx0LWluJyk7XG52YXIgZGVmaW5lR2xvYmFsUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBrZXksIHZhbHVlLCBvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucykgb3B0aW9ucyA9IHt9O1xuICB2YXIgc2ltcGxlID0gb3B0aW9ucy5lbnVtZXJhYmxlO1xuICB2YXIgbmFtZSA9IG9wdGlvbnMubmFtZSAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5uYW1lIDoga2V5O1xuICBpZiAoaXNDYWxsYWJsZSh2YWx1ZSkpIG1ha2VCdWlsdEluKHZhbHVlLCBuYW1lLCBvcHRpb25zKTtcbiAgaWYgKG9wdGlvbnMuZ2xvYmFsKSB7XG4gICAgaWYgKHNpbXBsZSkgT1trZXldID0gdmFsdWU7XG4gICAgZWxzZSBkZWZpbmVHbG9iYWxQcm9wZXJ0eShrZXksIHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFvcHRpb25zLnVuc2FmZSkgZGVsZXRlIE9ba2V5XTtcbiAgICAgIGVsc2UgaWYgKE9ba2V5XSkgc2ltcGxlID0gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gICAgaWYgKHNpbXBsZSkgT1trZXldID0gdmFsdWU7XG4gICAgZWxzZSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKE8sIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6ICFvcHRpb25zLm5vbkNvbmZpZ3VyYWJsZSxcbiAgICAgIHdyaXRhYmxlOiAhb3B0aW9ucy5ub25Xcml0YWJsZVxuICAgIH0pO1xuICB9IHJldHVybiBPO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHNyYywgb3B0aW9ucykge1xuICBmb3IgKHZhciBrZXkgaW4gc3JjKSBkZWZpbmVCdWlsdEluKHRhcmdldCwga2V5LCBzcmNba2V5XSwgb3B0aW9ucyk7XG4gIHJldHVybiB0YXJnZXQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgdHJ5IHtcbiAgICBkZWZpbmVQcm9wZXJ0eShnbG9iYWxUaGlzLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGdsb2JhbFRoaXNba2V5XSA9IHZhbHVlO1xuICB9IHJldHVybiB2YWx1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gRGV0ZWN0IElFOCdzIGluY29tcGxldGUgZGVmaW5lUHJvcGVydHkgaW1wbGVtZW50YXRpb25cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAxLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KVsxXSAhPT0gNztcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyIGRvY3VtZW50ID0gZ2xvYmFsVGhpcy5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIEVYSVNUUyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIEVYSVNUUyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaXRlcmFibGUgRE9NIGNvbGxlY3Rpb25zXG4vLyBmbGFnIC0gYGl0ZXJhYmxlYCBpbnRlcmZhY2UgLSAnZW50cmllcycsICdrZXlzJywgJ3ZhbHVlcycsICdmb3JFYWNoJyBtZXRob2RzXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgQ1NTUnVsZUxpc3Q6IDAsXG4gIENTU1N0eWxlRGVjbGFyYXRpb246IDAsXG4gIENTU1ZhbHVlTGlzdDogMCxcbiAgQ2xpZW50UmVjdExpc3Q6IDAsXG4gIERPTVJlY3RMaXN0OiAwLFxuICBET01TdHJpbmdMaXN0OiAwLFxuICBET01Ub2tlbkxpc3Q6IDEsXG4gIERhdGFUcmFuc2Zlckl0ZW1MaXN0OiAwLFxuICBGaWxlTGlzdDogMCxcbiAgSFRNTEFsbENvbGxlY3Rpb246IDAsXG4gIEhUTUxDb2xsZWN0aW9uOiAwLFxuICBIVE1MRm9ybUVsZW1lbnQ6IDAsXG4gIEhUTUxTZWxlY3RFbGVtZW50OiAwLFxuICBNZWRpYUxpc3Q6IDAsXG4gIE1pbWVUeXBlQXJyYXk6IDAsXG4gIE5hbWVkTm9kZU1hcDogMCxcbiAgTm9kZUxpc3Q6IDEsXG4gIFBhaW50UmVxdWVzdExpc3Q6IDAsXG4gIFBsdWdpbjogMCxcbiAgUGx1Z2luQXJyYXk6IDAsXG4gIFNWR0xlbmd0aExpc3Q6IDAsXG4gIFNWR051bWJlckxpc3Q6IDAsXG4gIFNWR1BhdGhTZWdMaXN0OiAwLFxuICBTVkdQb2ludExpc3Q6IDAsXG4gIFNWR1N0cmluZ0xpc3Q6IDAsXG4gIFNWR1RyYW5zZm9ybUxpc3Q6IDAsXG4gIFNvdXJjZUJ1ZmZlckxpc3Q6IDAsXG4gIFN0eWxlU2hlZXRMaXN0OiAwLFxuICBUZXh0VHJhY2tDdWVMaXN0OiAwLFxuICBUZXh0VHJhY2tMaXN0OiAwLFxuICBUb3VjaExpc3Q6IDBcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyBpbiBvbGQgV2ViS2l0IHZlcnNpb25zLCBgZWxlbWVudC5jbGFzc0xpc3RgIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBnbG9iYWwgYERPTVRva2VuTGlzdGBcbnZhciBkb2N1bWVudENyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcblxudmFyIGNsYXNzTGlzdCA9IGRvY3VtZW50Q3JlYXRlRWxlbWVudCgnc3BhbicpLmNsYXNzTGlzdDtcbnZhciBET01Ub2tlbkxpc3RQcm90b3R5cGUgPSBjbGFzc0xpc3QgJiYgY2xhc3NMaXN0LmNvbnN0cnVjdG9yICYmIGNsYXNzTGlzdC5jb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gRE9NVG9rZW5MaXN0UHJvdG90eXBlID09PSBPYmplY3QucHJvdG90eXBlID8gdW5kZWZpbmVkIDogRE9NVG9rZW5MaXN0UHJvdG90eXBlO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ09OU1RSVUNUT1IsIE1FVEhPRCkge1xuICByZXR1cm4gdW5jdXJyeVRoaXMoZ2xvYmFsVGhpc1tDT05TVFJVQ1RPUl0ucHJvdG90eXBlW01FVEhPRF0pO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIElFOC0gZG9uJ3QgZW51bSBidWcga2V5c1xubW9kdWxlLmV4cG9ydHMgPSBbXG4gICdjb25zdHJ1Y3RvcicsXG4gICdoYXNPd25Qcm9wZXJ0eScsXG4gICdpc1Byb3RvdHlwZU9mJyxcbiAgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJyxcbiAgJ3RvTG9jYWxlU3RyaW5nJyxcbiAgJ3RvU3RyaW5nJyxcbiAgJ3ZhbHVlT2YnXG5dO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC11c2VyLWFnZW50Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gL2lwYWR8aXBob25lfGlwb2QvaS50ZXN0KHVzZXJBZ2VudCkgJiYgdHlwZW9mIFBlYmJsZSAhPSAndW5kZWZpbmVkJztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQtdXNlci1hZ2VudCcpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVkb3Mvbm8tdnVsbmVyYWJsZSAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IC8oPzppcGFkfGlwaG9uZXxpcG9kKS4qYXBwbGV3ZWJraXQvaS50ZXN0KHVzZXJBZ2VudCk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgRU5WSVJPTk1FTlQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBFTlZJUk9OTUVOVCA9PT0gJ05PREUnO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC11c2VyLWFnZW50Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gL3dlYjBzKD8hLipjaHJvbWUpL2kudGVzdCh1c2VyQWdlbnQpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcblxudmFyIG5hdmlnYXRvciA9IGdsb2JhbFRoaXMubmF2aWdhdG9yO1xudmFyIHVzZXJBZ2VudCA9IG5hdmlnYXRvciAmJiBuYXZpZ2F0b3IudXNlckFnZW50O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHVzZXJBZ2VudCA/IFN0cmluZyh1c2VyQWdlbnQpIDogJyc7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC11c2VyLWFnZW50Jyk7XG5cbnZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xudmFyIERlbm8gPSBnbG9iYWxUaGlzLkRlbm87XG52YXIgdmVyc2lvbnMgPSBwcm9jZXNzICYmIHByb2Nlc3MudmVyc2lvbnMgfHwgRGVubyAmJiBEZW5vLnZlcnNpb247XG52YXIgdjggPSB2ZXJzaW9ucyAmJiB2ZXJzaW9ucy52ODtcbnZhciBtYXRjaCwgdmVyc2lvbjtcblxuaWYgKHY4KSB7XG4gIG1hdGNoID0gdjguc3BsaXQoJy4nKTtcbiAgLy8gaW4gb2xkIENocm9tZSwgdmVyc2lvbnMgb2YgVjggaXNuJ3QgVjggPSBDaHJvbWUgLyAxMFxuICAvLyBidXQgdGhlaXIgY29ycmVjdCB2ZXJzaW9ucyBhcmUgbm90IGludGVyZXN0aW5nIGZvciB1c1xuICB2ZXJzaW9uID0gbWF0Y2hbMF0gPiAwICYmIG1hdGNoWzBdIDwgNCA/IDEgOiArKG1hdGNoWzBdICsgbWF0Y2hbMV0pO1xufVxuXG4vLyBCcm93c2VyRlMgTm9kZUpTIGBwcm9jZXNzYCBwb2x5ZmlsbCBpbmNvcnJlY3RseSBzZXQgYC52OGAgdG8gYDAuMGBcbi8vIHNvIGNoZWNrIGB1c2VyQWdlbnRgIGV2ZW4gaWYgYC52OGAgZXhpc3RzLCBidXQgMFxuaWYgKCF2ZXJzaW9uICYmIHVzZXJBZ2VudCkge1xuICBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvRWRnZVxcLyhcXGQrKS8pO1xuICBpZiAoIW1hdGNoIHx8IG1hdGNoWzFdID49IDc0KSB7XG4gICAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0Nocm9tZVxcLyhcXGQrKS8pO1xuICAgIGlmIChtYXRjaCkgdmVyc2lvbiA9ICttYXRjaFsxXTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZlcnNpb247XG4iLCIndXNlIHN0cmljdCc7XG4vKiBnbG9iYWwgQnVuLCBEZW5vIC0tIGRldGVjdGlvbiAqL1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQtdXNlci1hZ2VudCcpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcblxudmFyIHVzZXJBZ2VudFN0YXJ0c1dpdGggPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHJldHVybiB1c2VyQWdlbnQuc2xpY2UoMCwgc3RyaW5nLmxlbmd0aCkgPT09IHN0cmluZztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gKGZ1bmN0aW9uICgpIHtcbiAgaWYgKHVzZXJBZ2VudFN0YXJ0c1dpdGgoJ0J1bi8nKSkgcmV0dXJuICdCVU4nO1xuICBpZiAodXNlckFnZW50U3RhcnRzV2l0aCgnQ2xvdWRmbGFyZS1Xb3JrZXJzJykpIHJldHVybiAnQ0xPVURGTEFSRSc7XG4gIGlmICh1c2VyQWdlbnRTdGFydHNXaXRoKCdEZW5vLycpKSByZXR1cm4gJ0RFTk8nO1xuICBpZiAodXNlckFnZW50U3RhcnRzV2l0aCgnTm9kZS5qcy8nKSkgcmV0dXJuICdOT0RFJztcbiAgaWYgKGdsb2JhbFRoaXMuQnVuICYmIHR5cGVvZiBCdW4udmVyc2lvbiA9PSAnc3RyaW5nJykgcmV0dXJuICdCVU4nO1xuICBpZiAoZ2xvYmFsVGhpcy5EZW5vICYmIHR5cGVvZiBEZW5vLnZlcnNpb24gPT0gJ29iamVjdCcpIHJldHVybiAnREVOTyc7XG4gIGlmIChjbGFzc29mKGdsb2JhbFRoaXMucHJvY2VzcykgPT09ICdwcm9jZXNzJykgcmV0dXJuICdOT0RFJztcbiAgaWYgKGdsb2JhbFRoaXMud2luZG93ICYmIGdsb2JhbFRoaXMuZG9jdW1lbnQpIHJldHVybiAnQlJPV1NFUic7XG4gIHJldHVybiAnUkVTVCc7XG59KSgpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG52YXIgJEVycm9yID0gRXJyb3I7XG52YXIgcmVwbGFjZSA9IHVuY3VycnlUaGlzKCcnLnJlcGxhY2UpO1xuXG52YXIgVEVTVCA9IChmdW5jdGlvbiAoYXJnKSB7IHJldHVybiBTdHJpbmcobmV3ICRFcnJvcihhcmcpLnN0YWNrKTsgfSkoJ3p4Y2FzZCcpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlZG9zL25vLXZ1bG5lcmFibGUsIHNvbmFyanMvc2xvdy1yZWdleCAtLSBzYWZlXG52YXIgVjhfT1JfQ0hBS1JBX1NUQUNLX0VOVFJZID0gL1xcblxccyphdCBbXjpdKjpbXlxcbl0qLztcbnZhciBJU19WOF9PUl9DSEFLUkFfU1RBQ0sgPSBWOF9PUl9DSEFLUkFfU1RBQ0tfRU5UUlkudGVzdChURVNUKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoc3RhY2ssIGRyb3BFbnRyaWVzKSB7XG4gIGlmIChJU19WOF9PUl9DSEFLUkFfU1RBQ0sgJiYgdHlwZW9mIHN0YWNrID09ICdzdHJpbmcnICYmICEkRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UpIHtcbiAgICB3aGlsZSAoZHJvcEVudHJpZXMtLSkgc3RhY2sgPSByZXBsYWNlKHN0YWNrLCBWOF9PUl9DSEFLUkFfU1RBQ0tfRU5UUlksICcnKTtcbiAgfSByZXR1cm4gc3RhY2s7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBjbGVhckVycm9yU3RhY2sgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXJyb3Itc3RhY2stY2xlYXInKTtcbnZhciBFUlJPUl9TVEFDS19JTlNUQUxMQUJMRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lcnJvci1zdGFjay1pbnN0YWxsYWJsZScpO1xuXG4vLyBub24tc3RhbmRhcmQgVjhcbnZhciBjYXB0dXJlU3RhY2tUcmFjZSA9IEVycm9yLmNhcHR1cmVTdGFja1RyYWNlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChlcnJvciwgQywgc3RhY2ssIGRyb3BFbnRyaWVzKSB7XG4gIGlmIChFUlJPUl9TVEFDS19JTlNUQUxMQUJMRSkge1xuICAgIGlmIChjYXB0dXJlU3RhY2tUcmFjZSkgY2FwdHVyZVN0YWNrVHJhY2UoZXJyb3IsIEMpO1xuICAgIGVsc2UgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KGVycm9yLCAnc3RhY2snLCBjbGVhckVycm9yU3RhY2soc3RhY2ssIGRyb3BFbnRyaWVzKSk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ2EnKTtcbiAgaWYgKCEoJ3N0YWNrJyBpbiBlcnJvcikpIHJldHVybiB0cnVlO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVycm9yLCAnc3RhY2snLCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgNykpO1xuICByZXR1cm4gZXJyb3Iuc3RhY2sgIT09IDc7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKS5mO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xudmFyIGRlZmluZUdsb2JhbFByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHknKTtcbnZhciBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcycpO1xudmFyIGlzRm9yY2VkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWZvcmNlZCcpO1xuXG4vKlxuICBvcHRpb25zLnRhcmdldCAgICAgICAgIC0gbmFtZSBvZiB0aGUgdGFyZ2V0IG9iamVjdFxuICBvcHRpb25zLmdsb2JhbCAgICAgICAgIC0gdGFyZ2V0IGlzIHRoZSBnbG9iYWwgb2JqZWN0XG4gIG9wdGlvbnMuc3RhdCAgICAgICAgICAgLSBleHBvcnQgYXMgc3RhdGljIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucHJvdG8gICAgICAgICAgLSBleHBvcnQgYXMgcHJvdG90eXBlIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucmVhbCAgICAgICAgICAgLSByZWFsIHByb3RvdHlwZSBtZXRob2QgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLmZvcmNlZCAgICAgICAgIC0gZXhwb3J0IGV2ZW4gaWYgdGhlIG5hdGl2ZSBmZWF0dXJlIGlzIGF2YWlsYWJsZVxuICBvcHRpb25zLmJpbmQgICAgICAgICAgIC0gYmluZCBtZXRob2RzIHRvIHRoZSB0YXJnZXQsIHJlcXVpcmVkIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy53cmFwICAgICAgICAgICAtIHdyYXAgY29uc3RydWN0b3JzIHRvIHByZXZlbnRpbmcgZ2xvYmFsIHBvbGx1dGlvbiwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLnVuc2FmZSAgICAgICAgIC0gdXNlIHRoZSBzaW1wbGUgYXNzaWdubWVudCBvZiBwcm9wZXJ0eSBpbnN0ZWFkIG9mIGRlbGV0ZSArIGRlZmluZVByb3BlcnR5XG4gIG9wdGlvbnMuc2hhbSAgICAgICAgICAgLSBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gIG9wdGlvbnMuZW51bWVyYWJsZSAgICAgLSBleHBvcnQgYXMgZW51bWVyYWJsZSBwcm9wZXJ0eVxuICBvcHRpb25zLmRvbnRDYWxsR2V0U2V0IC0gcHJldmVudCBjYWxsaW5nIGEgZ2V0dGVyIG9uIHRhcmdldFxuICBvcHRpb25zLm5hbWUgICAgICAgICAgIC0gdGhlIC5uYW1lIG9mIHRoZSBmdW5jdGlvbiBpZiBpdCBkb2VzIG5vdCBtYXRjaCB0aGUga2V5XG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3B0aW9ucywgc291cmNlKSB7XG4gIHZhciBUQVJHRVQgPSBvcHRpb25zLnRhcmdldDtcbiAgdmFyIEdMT0JBTCA9IG9wdGlvbnMuZ2xvYmFsO1xuICB2YXIgU1RBVElDID0gb3B0aW9ucy5zdGF0O1xuICB2YXIgRk9SQ0VELCB0YXJnZXQsIGtleSwgdGFyZ2V0UHJvcGVydHksIHNvdXJjZVByb3BlcnR5LCBkZXNjcmlwdG9yO1xuICBpZiAoR0xPQkFMKSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsVGhpcztcbiAgfSBlbHNlIGlmIChTVEFUSUMpIHtcbiAgICB0YXJnZXQgPSBnbG9iYWxUaGlzW1RBUkdFVF0gfHwgZGVmaW5lR2xvYmFsUHJvcGVydHkoVEFSR0VULCB7fSk7XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsVGhpc1tUQVJHRVRdICYmIGdsb2JhbFRoaXNbVEFSR0VUXS5wcm90b3R5cGU7XG4gIH1cbiAgaWYgKHRhcmdldCkgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgc291cmNlUHJvcGVydHkgPSBzb3VyY2Vba2V5XTtcbiAgICBpZiAob3B0aW9ucy5kb250Q2FsbEdldFNldCkge1xuICAgICAgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSk7XG4gICAgICB0YXJnZXRQcm9wZXJ0eSA9IGRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci52YWx1ZTtcbiAgICB9IGVsc2UgdGFyZ2V0UHJvcGVydHkgPSB0YXJnZXRba2V5XTtcbiAgICBGT1JDRUQgPSBpc0ZvcmNlZChHTE9CQUwgPyBrZXkgOiBUQVJHRVQgKyAoU1RBVElDID8gJy4nIDogJyMnKSArIGtleSwgb3B0aW9ucy5mb3JjZWQpO1xuICAgIC8vIGNvbnRhaW5lZCBpbiB0YXJnZXRcbiAgICBpZiAoIUZPUkNFRCAmJiB0YXJnZXRQcm9wZXJ0eSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodHlwZW9mIHNvdXJjZVByb3BlcnR5ID09IHR5cGVvZiB0YXJnZXRQcm9wZXJ0eSkgY29udGludWU7XG4gICAgICBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzKHNvdXJjZVByb3BlcnR5LCB0YXJnZXRQcm9wZXJ0eSk7XG4gICAgfVxuICAgIC8vIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgICBpZiAob3B0aW9ucy5zaGFtIHx8ICh0YXJnZXRQcm9wZXJ0eSAmJiB0YXJnZXRQcm9wZXJ0eS5zaGFtKSkge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHNvdXJjZVByb3BlcnR5LCAnc2hhbScsIHRydWUpO1xuICAgIH1cbiAgICBkZWZpbmVCdWlsdEluKHRhcmdldCwga2V5LCBzb3VyY2VQcm9wZXJ0eSwgb3B0aW9ucyk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhZXhlYygpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBGdW5jdGlvblByb3RvdHlwZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbnZhciBhcHBseSA9IEZ1bmN0aW9uUHJvdG90eXBlLmFwcGx5O1xudmFyIGNhbGwgPSBGdW5jdGlvblByb3RvdHlwZS5jYWxsO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tcmVmbGVjdCAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBSZWZsZWN0ID09ICdvYmplY3QnICYmIFJlZmxlY3QuYXBwbHkgfHwgKE5BVElWRV9CSU5EID8gY2FsbC5iaW5kKGFwcGx5KSA6IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGNhbGwuYXBwbHkoYXBwbHksIGFyZ3VtZW50cyk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMtY2xhdXNlJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBOQVRJVkVfQklORCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZScpO1xuXG52YXIgYmluZCA9IHVuY3VycnlUaGlzKHVuY3VycnlUaGlzLmJpbmQpO1xuXG4vLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0KSB7XG4gIGFDYWxsYWJsZShmbik7XG4gIHJldHVybiB0aGF0ID09PSB1bmRlZmluZWQgPyBmbiA6IE5BVElWRV9CSU5EID8gYmluZChmbiwgdGhhdCkgOiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1mdW5jdGlvbi1wcm90b3R5cGUtYmluZCAtLSBzYWZlXG4gIHZhciB0ZXN0ID0gKGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSkuYmluZCgpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zIC0tIHNhZmVcbiAgcmV0dXJuIHR5cGVvZiB0ZXN0ICE9ICdmdW5jdGlvbicgfHwgdGVzdC5oYXNPd25Qcm9wZXJ0eSgncHJvdG90eXBlJyk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfQklORCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZScpO1xuXG52YXIgY2FsbCA9IEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9CSU5EID8gY2FsbC5iaW5kKGNhbGwpIDogZnVuY3Rpb24gKCkge1xuICByZXR1cm4gY2FsbC5hcHBseShjYWxsLCBhcmd1bWVudHMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG5cbnZhciBGdW5jdGlvblByb3RvdHlwZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciBnZXREZXNjcmlwdG9yID0gREVTQ1JJUFRPUlMgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxudmFyIEVYSVNUUyA9IGhhc093bihGdW5jdGlvblByb3RvdHlwZSwgJ25hbWUnKTtcbi8vIGFkZGl0aW9uYWwgcHJvdGVjdGlvbiBmcm9tIG1pbmlmaWVkIC8gbWFuZ2xlZCAvIGRyb3BwZWQgZnVuY3Rpb24gbmFtZXNcbnZhciBQUk9QRVIgPSBFWElTVFMgJiYgKGZ1bmN0aW9uIHNvbWV0aGluZygpIHsgLyogZW1wdHkgKi8gfSkubmFtZSA9PT0gJ3NvbWV0aGluZyc7XG52YXIgQ09ORklHVVJBQkxFID0gRVhJU1RTICYmICghREVTQ1JJUFRPUlMgfHwgKERFU0NSSVBUT1JTICYmIGdldERlc2NyaXB0b3IoRnVuY3Rpb25Qcm90b3R5cGUsICduYW1lJykuY29uZmlndXJhYmxlKSk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBFWElTVFM6IEVYSVNUUyxcbiAgUFJPUEVSOiBQUk9QRVIsXG4gIENPTkZJR1VSQUJMRTogQ09ORklHVVJBQkxFXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwga2V5LCBtZXRob2QpIHtcbiAgdHJ5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG4gICAgcmV0dXJuIHVuY3VycnlUaGlzKGFDYWxsYWJsZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwga2V5KVttZXRob2RdKSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2xhc3NvZlJhdyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbikge1xuICAvLyBOYXNob3JuIGJ1ZzpcbiAgLy8gICBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMTEyOFxuICAvLyAgIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8xMTMwXG4gIGlmIChjbGFzc29mUmF3KGZuKSA9PT0gJ0Z1bmN0aW9uJykgcmV0dXJuIHVuY3VycnlUaGlzKGZuKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgTkFUSVZFX0JJTkQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUnKTtcblxudmFyIEZ1bmN0aW9uUHJvdG90eXBlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xudmFyIGNhbGwgPSBGdW5jdGlvblByb3RvdHlwZS5jYWxsO1xudmFyIHVuY3VycnlUaGlzV2l0aEJpbmQgPSBOQVRJVkVfQklORCAmJiBGdW5jdGlvblByb3RvdHlwZS5iaW5kLmJpbmQoY2FsbCwgY2FsbCk7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX0JJTkQgPyB1bmN1cnJ5VGhpc1dpdGhCaW5kIDogZnVuY3Rpb24gKGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGNhbGwuYXBwbHkoZm4sIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciBhRnVuY3Rpb24gPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGlzQ2FsbGFibGUoYXJndW1lbnQpID8gYXJndW1lbnQgOiB1bmRlZmluZWQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lc3BhY2UsIG1ldGhvZCkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBhRnVuY3Rpb24oZ2xvYmFsVGhpc1tuYW1lc3BhY2VdKSA6IGdsb2JhbFRoaXNbbmFtZXNwYWNlXSAmJiBnbG9iYWxUaGlzW25hbWVzcGFjZV1bbWV0aG9kXTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBpc051bGxPclVuZGVmaW5lZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZCcpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKGl0KSkgcmV0dXJuIGdldE1ldGhvZChpdCwgSVRFUkFUT1IpXG4gICAgfHwgZ2V0TWV0aG9kKGl0LCAnQEBpdGVyYXRvcicpXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0cnlUb1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90cnktdG8tc3RyaW5nJyk7XG52YXIgZ2V0SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQsIHVzaW5nSXRlcmF0b3IpIHtcbiAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBnZXRJdGVyYXRvck1ldGhvZChhcmd1bWVudCkgOiB1c2luZ0l0ZXJhdG9yO1xuICBpZiAoYUNhbGxhYmxlKGl0ZXJhdG9yTWV0aG9kKSkgcmV0dXJuIGFuT2JqZWN0KGNhbGwoaXRlcmF0b3JNZXRob2QsIGFyZ3VtZW50KSk7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKHRyeVRvU3RyaW5nKGFyZ3VtZW50KSArICcgaXMgbm90IGl0ZXJhYmxlJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgaXNOdWxsT3JVbmRlZmluZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQnKTtcblxuLy8gYEdldE1ldGhvZGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldG1ldGhvZFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoViwgUCkge1xuICB2YXIgZnVuYyA9IFZbUF07XG4gIHJldHVybiBpc051bGxPclVuZGVmaW5lZChmdW5jKSA/IHVuZGVmaW5lZCA6IGFDYWxsYWJsZShmdW5jKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2hlY2sgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICYmIGl0Lk1hdGggPT09IE1hdGggJiYgaXQ7XG59O1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxubW9kdWxlLmV4cG9ydHMgPVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tZ2xvYmFsLXRoaXMgLS0gc2FmZVxuICBjaGVjayh0eXBlb2YgZ2xvYmFsVGhpcyA9PSAnb2JqZWN0JyAmJiBnbG9iYWxUaGlzKSB8fFxuICBjaGVjayh0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdykgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAtLSBzYWZlXG4gIGNoZWNrKHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYpIHx8XG4gIGNoZWNrKHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsKSB8fFxuICBjaGVjayh0eXBlb2YgdGhpcyA9PSAnb2JqZWN0JyAmJiB0aGlzKSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmMgLS0gZmFsbGJhY2tcbiAgKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pKCkgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcblxudmFyIGhhc093blByb3BlcnR5ID0gdW5jdXJyeVRoaXMoe30uaGFzT3duUHJvcGVydHkpO1xuXG4vLyBgSGFzT3duUHJvcGVydHlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1oYXNvd25wcm9wZXJ0eVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1oYXNvd24gLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuaGFzT3duIHx8IGZ1bmN0aW9uIGhhc093bihpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eSh0b09iamVjdChpdCksIGtleSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSB7fTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgdHJ5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSAtLSBzYWZlXG4gICAgYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IGNvbnNvbGUuZXJyb3IoYSkgOiBjb25zb2xlLmVycm9yKGEsIGIpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJbignZG9jdW1lbnQnLCAnZG9jdW1lbnRFbGVtZW50Jyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcblxuLy8gVGhhbmtzIHRvIElFOCBmb3IgaXRzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFERVNDUklQVE9SUyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3JlYXRlRWxlbWVudCgnZGl2JyksICdhJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfVxuICB9KS5hICE9PSA3O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG5cbnZhciAkT2JqZWN0ID0gT2JqZWN0O1xudmFyIHNwbGl0ID0gdW5jdXJyeVRoaXMoJycuc3BsaXQpO1xuXG4vLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xubW9kdWxlLmV4cG9ydHMgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIHRocm93cyBhbiBlcnJvciBpbiByaGlubywgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3JoaW5vL2lzc3Vlcy8zNDZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGlucyAtLSBzYWZlXG4gIHJldHVybiAhJE9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApO1xufSkgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNsYXNzb2YoaXQpID09PSAnU3RyaW5nJyA/IHNwbGl0KGl0LCAnJykgOiAkT2JqZWN0KGl0KTtcbn0gOiAkT2JqZWN0O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBzdG9yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUnKTtcblxudmFyIGZ1bmN0aW9uVG9TdHJpbmcgPSB1bmN1cnJ5VGhpcyhGdW5jdGlvbi50b1N0cmluZyk7XG5cbi8vIHRoaXMgaGVscGVyIGJyb2tlbiBpbiBgY29yZS1qc0AzLjQuMS0zLjQuNGAsIHNvIHdlIGNhbid0IHVzZSBgc2hhcmVkYCBoZWxwZXJcbmlmICghaXNDYWxsYWJsZShzdG9yZS5pbnNwZWN0U291cmNlKSkge1xuICBzdG9yZS5pbnNwZWN0U291cmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uVG9TdHJpbmcoaXQpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0b3JlLmluc3BlY3RTb3VyY2U7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xuXG4vLyBgSW5zdGFsbEVycm9yQ2F1c2VgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWVycm9yLWNhdXNlLyNzZWMtZXJyb3JvYmplY3RzLWluc3RhbGwtZXJyb3ItY2F1c2Vcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIG9wdGlvbnMpIHtcbiAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpICYmICdjYXVzZScgaW4gb3B0aW9ucykge1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShPLCAnY2F1c2UnLCBvcHRpb25zLmNhdXNlKTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfV0VBS19NQVAgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2Vhay1tYXAtYmFzaWMtZGV0ZWN0aW9uJyk7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcblxudmFyIE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEID0gJ09iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkJztcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWxUaGlzLlR5cGVFcnJvcjtcbnZhciBXZWFrTWFwID0gZ2xvYmFsVGhpcy5XZWFrTWFwO1xudmFyIHNldCwgZ2V0LCBoYXM7XG5cbnZhciBlbmZvcmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBoYXMoaXQpID8gZ2V0KGl0KSA6IHNldChpdCwge30pO1xufTtcblxudmFyIGdldHRlckZvciA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoaXQpIHtcbiAgICB2YXIgc3RhdGU7XG4gICAgaWYgKCFpc09iamVjdChpdCkgfHwgKHN0YXRlID0gZ2V0KGl0KSkudHlwZSAhPT0gVFlQRSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAnICsgVFlQRSArICcgcmVxdWlyZWQnKTtcbiAgICB9IHJldHVybiBzdGF0ZTtcbiAgfTtcbn07XG5cbmlmIChOQVRJVkVfV0VBS19NQVAgfHwgc2hhcmVkLnN0YXRlKSB7XG4gIHZhciBzdG9yZSA9IHNoYXJlZC5zdGF0ZSB8fCAoc2hhcmVkLnN0YXRlID0gbmV3IFdlYWtNYXAoKSk7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLXNlbGYtYXNzaWduIC0tIHByb3RvdHlwZSBtZXRob2RzIHByb3RlY3Rpb24gKi9cbiAgc3RvcmUuZ2V0ID0gc3RvcmUuZ2V0O1xuICBzdG9yZS5oYXMgPSBzdG9yZS5oYXM7XG4gIHN0b3JlLnNldCA9IHN0b3JlLnNldDtcbiAgLyogZXNsaW50LWVuYWJsZSBuby1zZWxmLWFzc2lnbiAtLSBwcm90b3R5cGUgbWV0aG9kcyBwcm90ZWN0aW9uICovXG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBpZiAoc3RvcmUuaGFzKGl0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcihPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCk7XG4gICAgbWV0YWRhdGEuZmFjYWRlID0gaXQ7XG4gICAgc3RvcmUuc2V0KGl0LCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gc3RvcmUuZ2V0KGl0KSB8fCB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHN0b3JlLmhhcyhpdCk7XG4gIH07XG59IGVsc2Uge1xuICB2YXIgU1RBVEUgPSBzaGFyZWRLZXkoJ3N0YXRlJyk7XG4gIGhpZGRlbktleXNbU1RBVEVdID0gdHJ1ZTtcbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGlmIChoYXNPd24oaXQsIFNUQVRFKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCk7XG4gICAgbWV0YWRhdGEuZmFjYWRlID0gaXQ7XG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KGl0LCBTVEFURSwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGhhc093bihpdCwgU1RBVEUpID8gaXRbU1RBVEVdIDoge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBoYXNPd24oaXQsIFNUQVRFKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogc2V0LFxuICBnZXQ6IGdldCxcbiAgaGFzOiBoYXMsXG4gIGVuZm9yY2U6IGVuZm9yY2UsXG4gIGdldHRlckZvcjogZ2V0dGVyRm9yXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIEFycmF5UHJvdG90eXBlID0gQXJyYXkucHJvdG90eXBlO1xuXG4vLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvdHlwZVtJVEVSQVRPUl0gPT09IGl0KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLUlzSFRNTEREQS1pbnRlcm5hbC1zbG90XG52YXIgZG9jdW1lbnRBbGwgPSB0eXBlb2YgZG9jdW1lbnQgPT0gJ29iamVjdCcgJiYgZG9jdW1lbnQuYWxsO1xuXG4vLyBgSXNDYWxsYWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWlzY2FsbGFibGVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLXR5cGVvZi11bmRlZmluZWQgLS0gcmVxdWlyZWQgZm9yIHRlc3Rpbmdcbm1vZHVsZS5leHBvcnRzID0gdHlwZW9mIGRvY3VtZW50QWxsID09ICd1bmRlZmluZWQnICYmIGRvY3VtZW50QWxsICE9PSB1bmRlZmluZWQgPyBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmd1bWVudCA9PSAnZnVuY3Rpb24nIHx8IGFyZ3VtZW50ID09PSBkb2N1bWVudEFsbDtcbn0gOiBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmd1bWVudCA9PSAnZnVuY3Rpb24nO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGluc3BlY3RTb3VyY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UnKTtcblxudmFyIG5vb3AgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG52YXIgY29uc3RydWN0ID0gZ2V0QnVpbHRJbignUmVmbGVjdCcsICdjb25zdHJ1Y3QnKTtcbnZhciBjb25zdHJ1Y3RvclJlZ0V4cCA9IC9eXFxzKig/OmNsYXNzfGZ1bmN0aW9uKVxcYi87XG52YXIgZXhlYyA9IHVuY3VycnlUaGlzKGNvbnN0cnVjdG9yUmVnRXhwLmV4ZWMpO1xudmFyIElOQ09SUkVDVF9UT19TVFJJTkcgPSAhY29uc3RydWN0b3JSZWdFeHAudGVzdChub29wKTtcblxudmFyIGlzQ29uc3RydWN0b3JNb2Rlcm4gPSBmdW5jdGlvbiBpc0NvbnN0cnVjdG9yKGFyZ3VtZW50KSB7XG4gIGlmICghaXNDYWxsYWJsZShhcmd1bWVudCkpIHJldHVybiBmYWxzZTtcbiAgdHJ5IHtcbiAgICBjb25zdHJ1Y3Qobm9vcCwgW10sIGFyZ3VtZW50KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbnZhciBpc0NvbnN0cnVjdG9yTGVnYWN5ID0gZnVuY3Rpb24gaXNDb25zdHJ1Y3Rvcihhcmd1bWVudCkge1xuICBpZiAoIWlzQ2FsbGFibGUoYXJndW1lbnQpKSByZXR1cm4gZmFsc2U7XG4gIHN3aXRjaCAoY2xhc3NvZihhcmd1bWVudCkpIHtcbiAgICBjYXNlICdBc3luY0Z1bmN0aW9uJzpcbiAgICBjYXNlICdHZW5lcmF0b3JGdW5jdGlvbic6XG4gICAgY2FzZSAnQXN5bmNHZW5lcmF0b3JGdW5jdGlvbic6IHJldHVybiBmYWxzZTtcbiAgfVxuICB0cnkge1xuICAgIC8vIHdlIGNhbid0IGNoZWNrIC5wcm90b3R5cGUgc2luY2UgY29uc3RydWN0b3JzIHByb2R1Y2VkIGJ5IC5iaW5kIGhhdmVuJ3QgaXRcbiAgICAvLyBgRnVuY3Rpb24jdG9TdHJpbmdgIHRocm93cyBvbiBzb21lIGJ1aWx0LWl0IGZ1bmN0aW9uIGluIHNvbWUgbGVnYWN5IGVuZ2luZXNcbiAgICAvLyAoZm9yIGV4YW1wbGUsIGBET01RdWFkYCBhbmQgc2ltaWxhciBpbiBGRjQxLSlcbiAgICByZXR1cm4gSU5DT1JSRUNUX1RPX1NUUklORyB8fCAhIWV4ZWMoY29uc3RydWN0b3JSZWdFeHAsIGluc3BlY3RTb3VyY2UoYXJndW1lbnQpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcblxuaXNDb25zdHJ1Y3RvckxlZ2FjeS5zaGFtID0gdHJ1ZTtcblxuLy8gYElzQ29uc3RydWN0b3JgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1pc2NvbnN0cnVjdG9yXG5tb2R1bGUuZXhwb3J0cyA9ICFjb25zdHJ1Y3QgfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgY2FsbGVkO1xuICByZXR1cm4gaXNDb25zdHJ1Y3Rvck1vZGVybihpc0NvbnN0cnVjdG9yTW9kZXJuLmNhbGwpXG4gICAgfHwgIWlzQ29uc3RydWN0b3JNb2Rlcm4oT2JqZWN0KVxuICAgIHx8ICFpc0NvbnN0cnVjdG9yTW9kZXJuKGZ1bmN0aW9uICgpIHsgY2FsbGVkID0gdHJ1ZTsgfSlcbiAgICB8fCBjYWxsZWQ7XG59KSA/IGlzQ29uc3RydWN0b3JMZWdhY3kgOiBpc0NvbnN0cnVjdG9yTW9kZXJuO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG52YXIgcmVwbGFjZW1lbnQgPSAvI3xcXC5wcm90b3R5cGVcXC4vO1xuXG52YXIgaXNGb3JjZWQgPSBmdW5jdGlvbiAoZmVhdHVyZSwgZGV0ZWN0aW9uKSB7XG4gIHZhciB2YWx1ZSA9IGRhdGFbbm9ybWFsaXplKGZlYXR1cmUpXTtcbiAgcmV0dXJuIHZhbHVlID09PSBQT0xZRklMTCA/IHRydWVcbiAgICA6IHZhbHVlID09PSBOQVRJVkUgPyBmYWxzZVxuICAgIDogaXNDYWxsYWJsZShkZXRlY3Rpb24pID8gZmFpbHMoZGV0ZWN0aW9uKVxuICAgIDogISFkZXRlY3Rpb247XG59O1xuXG52YXIgbm9ybWFsaXplID0gaXNGb3JjZWQubm9ybWFsaXplID0gZnVuY3Rpb24gKHN0cmluZykge1xuICByZXR1cm4gU3RyaW5nKHN0cmluZykucmVwbGFjZShyZXBsYWNlbWVudCwgJy4nKS50b0xvd2VyQ2FzZSgpO1xufTtcblxudmFyIGRhdGEgPSBpc0ZvcmNlZC5kYXRhID0ge307XG52YXIgTkFUSVZFID0gaXNGb3JjZWQuTkFUSVZFID0gJ04nO1xudmFyIFBPTFlGSUxMID0gaXNGb3JjZWQuUE9MWUZJTEwgPSAnUCc7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGb3JjZWQ7XG4iLCIndXNlIHN0cmljdCc7XG4vLyB3ZSBjYW4ndCB1c2UganVzdCBgaXQgPT0gbnVsbGAgc2luY2Ugb2YgYGRvY3VtZW50LmFsbGAgc3BlY2lhbCBjYXNlXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLUlzSFRNTEREQS1pbnRlcm5hbC1zbG90LWFlY1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID09PSBudWxsIHx8IGl0ID09PSB1bmRlZmluZWQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogaXNDYWxsYWJsZShpdCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gaXNPYmplY3QoYXJndW1lbnQpIHx8IGFyZ3VtZW50ID09PSBudWxsO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZmFsc2U7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mJyk7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG5cbm1vZHVsZS5leHBvcnRzID0gVVNFX1NZTUJPTF9BU19VSUQgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJztcbn0gOiBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyICRTeW1ib2wgPSBnZXRCdWlsdEluKCdTeW1ib2wnKTtcbiAgcmV0dXJuIGlzQ2FsbGFibGUoJFN5bWJvbCkgJiYgaXNQcm90b3R5cGVPZigkU3ltYm9sLnByb3RvdHlwZSwgJE9iamVjdChpdCkpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRyeVRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RyeS10by1zdHJpbmcnKTtcbnZhciBpc0FycmF5SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXktaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcbnZhciBpc1Byb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YnKTtcbnZhciBnZXRJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3InKTtcbnZhciBnZXRJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgaXRlcmF0b3JDbG9zZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvci1jbG9zZScpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxudmFyIFJlc3VsdCA9IGZ1bmN0aW9uIChzdG9wcGVkLCByZXN1bHQpIHtcbiAgdGhpcy5zdG9wcGVkID0gc3RvcHBlZDtcbiAgdGhpcy5yZXN1bHQgPSByZXN1bHQ7XG59O1xuXG52YXIgUmVzdWx0UHJvdG90eXBlID0gUmVzdWx0LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmFibGUsIHVuYm91bmRGdW5jdGlvbiwgb3B0aW9ucykge1xuICB2YXIgdGhhdCA9IG9wdGlvbnMgJiYgb3B0aW9ucy50aGF0O1xuICB2YXIgQVNfRU5UUklFUyA9ICEhKG9wdGlvbnMgJiYgb3B0aW9ucy5BU19FTlRSSUVTKTtcbiAgdmFyIElTX1JFQ09SRCA9ICEhKG9wdGlvbnMgJiYgb3B0aW9ucy5JU19SRUNPUkQpO1xuICB2YXIgSVNfSVRFUkFUT1IgPSAhIShvcHRpb25zICYmIG9wdGlvbnMuSVNfSVRFUkFUT1IpO1xuICB2YXIgSU5URVJSVVBURUQgPSAhIShvcHRpb25zICYmIG9wdGlvbnMuSU5URVJSVVBURUQpO1xuICB2YXIgZm4gPSBiaW5kKHVuYm91bmRGdW5jdGlvbiwgdGhhdCk7XG4gIHZhciBpdGVyYXRvciwgaXRlckZuLCBpbmRleCwgbGVuZ3RoLCByZXN1bHQsIG5leHQsIHN0ZXA7XG5cbiAgdmFyIHN0b3AgPSBmdW5jdGlvbiAoY29uZGl0aW9uKSB7XG4gICAgaWYgKGl0ZXJhdG9yKSBpdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCAnbm9ybWFsJywgY29uZGl0aW9uKTtcbiAgICByZXR1cm4gbmV3IFJlc3VsdCh0cnVlLCBjb25kaXRpb24pO1xuICB9O1xuXG4gIHZhciBjYWxsRm4gPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAoQVNfRU5UUklFUykge1xuICAgICAgYW5PYmplY3QodmFsdWUpO1xuICAgICAgcmV0dXJuIElOVEVSUlVQVEVEID8gZm4odmFsdWVbMF0sIHZhbHVlWzFdLCBzdG9wKSA6IGZuKHZhbHVlWzBdLCB2YWx1ZVsxXSk7XG4gICAgfSByZXR1cm4gSU5URVJSVVBURUQgPyBmbih2YWx1ZSwgc3RvcCkgOiBmbih2YWx1ZSk7XG4gIH07XG5cbiAgaWYgKElTX1JFQ09SRCkge1xuICAgIGl0ZXJhdG9yID0gaXRlcmFibGUuaXRlcmF0b3I7XG4gIH0gZWxzZSBpZiAoSVNfSVRFUkFUT1IpIHtcbiAgICBpdGVyYXRvciA9IGl0ZXJhYmxlO1xuICB9IGVsc2Uge1xuICAgIGl0ZXJGbiA9IGdldEl0ZXJhdG9yTWV0aG9kKGl0ZXJhYmxlKTtcbiAgICBpZiAoIWl0ZXJGbikgdGhyb3cgbmV3ICRUeXBlRXJyb3IodHJ5VG9TdHJpbmcoaXRlcmFibGUpICsgJyBpcyBub3QgaXRlcmFibGUnKTtcbiAgICAvLyBvcHRpbWlzYXRpb24gZm9yIGFycmF5IGl0ZXJhdG9yc1xuICAgIGlmIChpc0FycmF5SXRlcmF0b3JNZXRob2QoaXRlckZuKSkge1xuICAgICAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKGl0ZXJhYmxlKTsgbGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICAgICAgcmVzdWx0ID0gY2FsbEZuKGl0ZXJhYmxlW2luZGV4XSk7XG4gICAgICAgIGlmIChyZXN1bHQgJiYgaXNQcm90b3R5cGVPZihSZXN1bHRQcm90b3R5cGUsIHJlc3VsdCkpIHJldHVybiByZXN1bHQ7XG4gICAgICB9IHJldHVybiBuZXcgUmVzdWx0KGZhbHNlKTtcbiAgICB9XG4gICAgaXRlcmF0b3IgPSBnZXRJdGVyYXRvcihpdGVyYWJsZSwgaXRlckZuKTtcbiAgfVxuXG4gIG5leHQgPSBJU19SRUNPUkQgPyBpdGVyYWJsZS5uZXh0IDogaXRlcmF0b3IubmV4dDtcbiAgd2hpbGUgKCEoc3RlcCA9IGNhbGwobmV4dCwgaXRlcmF0b3IpKS5kb25lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGNhbGxGbihzdGVwLnZhbHVlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaXRlcmF0b3JDbG9zZShpdGVyYXRvciwgJ3Rocm93JywgZXJyb3IpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHJlc3VsdCA9PSAnb2JqZWN0JyAmJiByZXN1bHQgJiYgaXNQcm90b3R5cGVPZihSZXN1bHRQcm90b3R5cGUsIHJlc3VsdCkpIHJldHVybiByZXN1bHQ7XG4gIH0gcmV0dXJuIG5ldyBSZXN1bHQoZmFsc2UpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBnZXRNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1ldGhvZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYXRvciwga2luZCwgdmFsdWUpIHtcbiAgdmFyIGlubmVyUmVzdWx0LCBpbm5lckVycm9yO1xuICBhbk9iamVjdChpdGVyYXRvcik7XG4gIHRyeSB7XG4gICAgaW5uZXJSZXN1bHQgPSBnZXRNZXRob2QoaXRlcmF0b3IsICdyZXR1cm4nKTtcbiAgICBpZiAoIWlubmVyUmVzdWx0KSB7XG4gICAgICBpZiAoa2luZCA9PT0gJ3Rocm93JykgdGhyb3cgdmFsdWU7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGlubmVyUmVzdWx0ID0gY2FsbChpbm5lclJlc3VsdCwgaXRlcmF0b3IpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlubmVyRXJyb3IgPSB0cnVlO1xuICAgIGlubmVyUmVzdWx0ID0gZXJyb3I7XG4gIH1cbiAgaWYgKGtpbmQgPT09ICd0aHJvdycpIHRocm93IHZhbHVlO1xuICBpZiAoaW5uZXJFcnJvcikgdGhyb3cgaW5uZXJSZXN1bHQ7XG4gIGFuT2JqZWN0KGlubmVyUmVzdWx0KTtcbiAgcmV0dXJuIHZhbHVlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMtY29yZScpLkl0ZXJhdG9yUHJvdG90eXBlO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzJyk7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSXRlcmF0b3JDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCwgRU5VTUVSQUJMRV9ORVhUKSB7XG4gIHZhciBUT19TVFJJTkdfVEFHID0gTkFNRSArICcgSXRlcmF0b3InO1xuICBJdGVyYXRvckNvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSwgeyBuZXh0OiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoKyFFTlVNRVJBQkxFX05FWFQsIG5leHQpIH0pO1xuICBzZXRUb1N0cmluZ1RhZyhJdGVyYXRvckNvbnN0cnVjdG9yLCBUT19TVFJJTkdfVEFHLCBmYWxzZSwgdHJ1ZSk7XG4gIEl0ZXJhdG9yc1tUT19TVFJJTkdfVEFHXSA9IHJldHVyblRoaXM7XG4gIHJldHVybiBJdGVyYXRvckNvbnN0cnVjdG9yO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIEZ1bmN0aW9uTmFtZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1uYW1lJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItY3JlYXRlLWNvbnN0cnVjdG9yJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YnKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZicpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycycpO1xudmFyIEl0ZXJhdG9yc0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzLWNvcmUnKTtcblxudmFyIFBST1BFUl9GVU5DVElPTl9OQU1FID0gRnVuY3Rpb25OYW1lLlBST1BFUjtcbnZhciBDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSA9IEZ1bmN0aW9uTmFtZS5DT05GSUdVUkFCTEU7XG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSBJdGVyYXRvcnNDb3JlLkl0ZXJhdG9yUHJvdG90eXBlO1xudmFyIEJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgPSBJdGVyYXRvcnNDb3JlLkJVR0dZX1NBRkFSSV9JVEVSQVRPUlM7XG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgS0VZUyA9ICdrZXlzJztcbnZhciBWQUxVRVMgPSAndmFsdWVzJztcbnZhciBFTlRSSUVTID0gJ2VudHJpZXMnO1xuXG52YXIgcmV0dXJuVGhpcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEl0ZXJhYmxlLCBOQU1FLCBJdGVyYXRvckNvbnN0cnVjdG9yLCBuZXh0LCBERUZBVUxULCBJU19TRVQsIEZPUkNFRCkge1xuICBjcmVhdGVJdGVyYXRvckNvbnN0cnVjdG9yKEl0ZXJhdG9yQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpO1xuXG4gIHZhciBnZXRJdGVyYXRpb25NZXRob2QgPSBmdW5jdGlvbiAoS0lORCkge1xuICAgIGlmIChLSU5EID09PSBERUZBVUxUICYmIGRlZmF1bHRJdGVyYXRvcikgcmV0dXJuIGRlZmF1bHRJdGVyYXRvcjtcbiAgICBpZiAoIUJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgJiYgS0lORCAmJiBLSU5EIGluIEl0ZXJhYmxlUHJvdG90eXBlKSByZXR1cm4gSXRlcmFibGVQcm90b3R5cGVbS0lORF07XG5cbiAgICBzd2l0Y2ggKEtJTkQpIHtcbiAgICAgIGNhc2UgS0VZUzogcmV0dXJuIGZ1bmN0aW9uIGtleXMoKSB7IHJldHVybiBuZXcgSXRlcmF0b3JDb25zdHJ1Y3Rvcih0aGlzLCBLSU5EKTsgfTtcbiAgICAgIGNhc2UgVkFMVUVTOiByZXR1cm4gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gbmV3IEl0ZXJhdG9yQ29uc3RydWN0b3IodGhpcywgS0lORCk7IH07XG4gICAgICBjYXNlIEVOVFJJRVM6IHJldHVybiBmdW5jdGlvbiBlbnRyaWVzKCkgeyByZXR1cm4gbmV3IEl0ZXJhdG9yQ29uc3RydWN0b3IodGhpcywgS0lORCk7IH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5ldyBJdGVyYXRvckNvbnN0cnVjdG9yKHRoaXMpOyB9O1xuICB9O1xuXG4gIHZhciBUT19TVFJJTkdfVEFHID0gTkFNRSArICcgSXRlcmF0b3InO1xuICB2YXIgSU5DT1JSRUNUX1ZBTFVFU19OQU1FID0gZmFsc2U7XG4gIHZhciBJdGVyYWJsZVByb3RvdHlwZSA9IEl0ZXJhYmxlLnByb3RvdHlwZTtcbiAgdmFyIG5hdGl2ZUl0ZXJhdG9yID0gSXRlcmFibGVQcm90b3R5cGVbSVRFUkFUT1JdXG4gICAgfHwgSXRlcmFibGVQcm90b3R5cGVbJ0BAaXRlcmF0b3InXVxuICAgIHx8IERFRkFVTFQgJiYgSXRlcmFibGVQcm90b3R5cGVbREVGQVVMVF07XG4gIHZhciBkZWZhdWx0SXRlcmF0b3IgPSAhQlVHR1lfU0FGQVJJX0lURVJBVE9SUyAmJiBuYXRpdmVJdGVyYXRvciB8fCBnZXRJdGVyYXRpb25NZXRob2QoREVGQVVMVCk7XG4gIHZhciBhbnlOYXRpdmVJdGVyYXRvciA9IE5BTUUgPT09ICdBcnJheScgPyBJdGVyYWJsZVByb3RvdHlwZS5lbnRyaWVzIHx8IG5hdGl2ZUl0ZXJhdG9yIDogbmF0aXZlSXRlcmF0b3I7XG4gIHZhciBDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIG1ldGhvZHMsIEtFWTtcblxuICAvLyBmaXggbmF0aXZlXG4gIGlmIChhbnlOYXRpdmVJdGVyYXRvcikge1xuICAgIEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKGFueU5hdGl2ZUl0ZXJhdG9yLmNhbGwobmV3IEl0ZXJhYmxlKCkpKTtcbiAgICBpZiAoQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlICYmIEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZS5uZXh0KSB7XG4gICAgICBpZiAoIUlTX1BVUkUgJiYgZ2V0UHJvdG90eXBlT2YoQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlKSAhPT0gSXRlcmF0b3JQcm90b3R5cGUpIHtcbiAgICAgICAgaWYgKHNldFByb3RvdHlwZU9mKSB7XG4gICAgICAgICAgc2V0UHJvdG90eXBlT2YoQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLCBJdGVyYXRvclByb3RvdHlwZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIWlzQ2FsbGFibGUoQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlW0lURVJBVE9SXSkpIHtcbiAgICAgICAgICBkZWZpbmVCdWlsdEluKEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIHJldHVyblRoaXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBTZXQgQEB0b1N0cmluZ1RhZyB0byBuYXRpdmUgaXRlcmF0b3JzXG4gICAgICBzZXRUb1N0cmluZ1RhZyhDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIFRPX1NUUklOR19UQUcsIHRydWUsIHRydWUpO1xuICAgICAgaWYgKElTX1BVUkUpIEl0ZXJhdG9yc1tUT19TVFJJTkdfVEFHXSA9IHJldHVyblRoaXM7XG4gICAgfVxuICB9XG5cbiAgLy8gZml4IEFycmF5LnByb3RvdHlwZS57IHZhbHVlcywgQEBpdGVyYXRvciB9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoUFJPUEVSX0ZVTkNUSU9OX05BTUUgJiYgREVGQVVMVCA9PT0gVkFMVUVTICYmIG5hdGl2ZUl0ZXJhdG9yICYmIG5hdGl2ZUl0ZXJhdG9yLm5hbWUgIT09IFZBTFVFUykge1xuICAgIGlmICghSVNfUFVSRSAmJiBDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSkge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KEl0ZXJhYmxlUHJvdG90eXBlLCAnbmFtZScsIFZBTFVFUyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIElOQ09SUkVDVF9WQUxVRVNfTkFNRSA9IHRydWU7XG4gICAgICBkZWZhdWx0SXRlcmF0b3IgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBjYWxsKG5hdGl2ZUl0ZXJhdG9yLCB0aGlzKTsgfTtcbiAgICB9XG4gIH1cblxuICAvLyBleHBvcnQgYWRkaXRpb25hbCBtZXRob2RzXG4gIGlmIChERUZBVUxUKSB7XG4gICAgbWV0aG9kcyA9IHtcbiAgICAgIHZhbHVlczogZ2V0SXRlcmF0aW9uTWV0aG9kKFZBTFVFUyksXG4gICAgICBrZXlzOiBJU19TRVQgPyBkZWZhdWx0SXRlcmF0b3IgOiBnZXRJdGVyYXRpb25NZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiBnZXRJdGVyYXRpb25NZXRob2QoRU5UUklFUylcbiAgICB9O1xuICAgIGlmIChGT1JDRUQpIGZvciAoS0VZIGluIG1ldGhvZHMpIHtcbiAgICAgIGlmIChCVUdHWV9TQUZBUklfSVRFUkFUT1JTIHx8IElOQ09SUkVDVF9WQUxVRVNfTkFNRSB8fCAhKEtFWSBpbiBJdGVyYWJsZVByb3RvdHlwZSkpIHtcbiAgICAgICAgZGVmaW5lQnVpbHRJbihJdGVyYWJsZVByb3RvdHlwZSwgS0VZLCBtZXRob2RzW0tFWV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSAkKHsgdGFyZ2V0OiBOQU1FLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBCVUdHWV9TQUZBUklfSVRFUkFUT1JTIHx8IElOQ09SUkVDVF9WQUxVRVNfTkFNRSB9LCBtZXRob2RzKTtcbiAgfVxuXG4gIC8vIGRlZmluZSBpdGVyYXRvclxuICBpZiAoKCFJU19QVVJFIHx8IEZPUkNFRCkgJiYgSXRlcmFibGVQcm90b3R5cGVbSVRFUkFUT1JdICE9PSBkZWZhdWx0SXRlcmF0b3IpIHtcbiAgICBkZWZpbmVCdWlsdEluKEl0ZXJhYmxlUHJvdG90eXBlLCBJVEVSQVRPUiwgZGVmYXVsdEl0ZXJhdG9yLCB7IG5hbWU6IERFRkFVTFQgfSk7XG4gIH1cbiAgSXRlcmF0b3JzW05BTUVdID0gZGVmYXVsdEl0ZXJhdG9yO1xuXG4gIHJldHVybiBtZXRob2RzO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgZGVmaW5lQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4nKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIEJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgPSBmYWxzZTtcblxuLy8gYCVJdGVyYXRvclByb3RvdHlwZSVgIG9iamVjdFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0laXRlcmF0b3Jwcm90b3R5cGUlLW9iamVjdFxudmFyIEl0ZXJhdG9yUHJvdG90eXBlLCBQcm90b3R5cGVPZkFycmF5SXRlcmF0b3JQcm90b3R5cGUsIGFycmF5SXRlcmF0b3I7XG5cbi8qIGVzbGludC1kaXNhYmxlIGVzL25vLWFycmF5LXByb3RvdHlwZS1rZXlzIC0tIHNhZmUgKi9cbmlmIChbXS5rZXlzKSB7XG4gIGFycmF5SXRlcmF0b3IgPSBbXS5rZXlzKCk7XG4gIC8vIFNhZmFyaSA4IGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxuICBpZiAoISgnbmV4dCcgaW4gYXJyYXlJdGVyYXRvcikpIEJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgPSB0cnVlO1xuICBlbHNlIHtcbiAgICBQcm90b3R5cGVPZkFycmF5SXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90b3R5cGVPZihnZXRQcm90b3R5cGVPZihhcnJheUl0ZXJhdG9yKSk7XG4gICAgaWYgKFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZSAhPT0gT2JqZWN0LnByb3RvdHlwZSkgSXRlcmF0b3JQcm90b3R5cGUgPSBQcm90b3R5cGVPZkFycmF5SXRlcmF0b3JQcm90b3R5cGU7XG4gIH1cbn1cblxudmFyIE5FV19JVEVSQVRPUl9QUk9UT1RZUEUgPSAhaXNPYmplY3QoSXRlcmF0b3JQcm90b3R5cGUpIHx8IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRlc3QgPSB7fTtcbiAgLy8gRkY0NC0gbGVnYWN5IGl0ZXJhdG9ycyBjYXNlXG4gIHJldHVybiBJdGVyYXRvclByb3RvdHlwZVtJVEVSQVRPUl0uY2FsbCh0ZXN0KSAhPT0gdGVzdDtcbn0pO1xuXG5pZiAoTkVXX0lURVJBVE9SX1BST1RPVFlQRSkgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcbmVsc2UgaWYgKElTX1BVUkUpIEl0ZXJhdG9yUHJvdG90eXBlID0gY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlKTtcblxuLy8gYCVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSVpdGVyYXRvcnByb3RvdHlwZSUtQEBpdGVyYXRvclxuaWYgKCFpc0NhbGxhYmxlKEl0ZXJhdG9yUHJvdG90eXBlW0lURVJBVE9SXSkpIHtcbiAgZGVmaW5lQnVpbHRJbihJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBJdGVyYXRvclByb3RvdHlwZTogSXRlcmF0b3JQcm90b3R5cGUsXG4gIEJVR0dZX1NBRkFSSV9JVEVSQVRPUlM6IEJVR0dZX1NBRkFSSV9JVEVSQVRPUlNcbn07XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IHt9O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xuXG4vLyBgTGVuZ3RoT2ZBcnJheUxpa2VgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1sZW5ndGhvZmFycmF5bGlrZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiB0b0xlbmd0aChvYmoubGVuZ3RoKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUnKS5DT05GSUdVUkFCTEU7XG52YXIgaW5zcGVjdFNvdXJjZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZScpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcblxudmFyIGVuZm9yY2VJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5lbmZvcmNlO1xudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldDtcbnZhciAkU3RyaW5nID0gU3RyaW5nO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgc3RyaW5nU2xpY2UgPSB1bmN1cnJ5VGhpcygnJy5zbGljZSk7XG52YXIgcmVwbGFjZSA9IHVuY3VycnlUaGlzKCcnLnJlcGxhY2UpO1xudmFyIGpvaW4gPSB1bmN1cnJ5VGhpcyhbXS5qb2luKTtcblxudmFyIENPTkZJR1VSQUJMRV9MRU5HVEggPSBERVNDUklQVE9SUyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCAnbGVuZ3RoJywgeyB2YWx1ZTogOCB9KS5sZW5ndGggIT09IDg7XG59KTtcblxudmFyIFRFTVBMQVRFID0gU3RyaW5nKFN0cmluZykuc3BsaXQoJ1N0cmluZycpO1xuXG52YXIgbWFrZUJ1aWx0SW4gPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh2YWx1ZSwgbmFtZSwgb3B0aW9ucykge1xuICBpZiAoc3RyaW5nU2xpY2UoJFN0cmluZyhuYW1lKSwgMCwgNykgPT09ICdTeW1ib2woJykge1xuICAgIG5hbWUgPSAnWycgKyByZXBsYWNlKCRTdHJpbmcobmFtZSksIC9eU3ltYm9sXFwoKFteKV0qKVxcKS4qJC8sICckMScpICsgJ10nO1xuICB9XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuZ2V0dGVyKSBuYW1lID0gJ2dldCAnICsgbmFtZTtcbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zZXR0ZXIpIG5hbWUgPSAnc2V0ICcgKyBuYW1lO1xuICBpZiAoIWhhc093bih2YWx1ZSwgJ25hbWUnKSB8fCAoQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUgJiYgdmFsdWUubmFtZSAhPT0gbmFtZSkpIHtcbiAgICBpZiAoREVTQ1JJUFRPUlMpIGRlZmluZVByb3BlcnR5KHZhbHVlLCAnbmFtZScsIHsgdmFsdWU6IG5hbWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbiAgICBlbHNlIHZhbHVlLm5hbWUgPSBuYW1lO1xuICB9XG4gIGlmIChDT05GSUdVUkFCTEVfTEVOR1RIICYmIG9wdGlvbnMgJiYgaGFzT3duKG9wdGlvbnMsICdhcml0eScpICYmIHZhbHVlLmxlbmd0aCAhPT0gb3B0aW9ucy5hcml0eSkge1xuICAgIGRlZmluZVByb3BlcnR5KHZhbHVlLCAnbGVuZ3RoJywgeyB2YWx1ZTogb3B0aW9ucy5hcml0eSB9KTtcbiAgfVxuICB0cnkge1xuICAgIGlmIChvcHRpb25zICYmIGhhc093bihvcHRpb25zLCAnY29uc3RydWN0b3InKSAmJiBvcHRpb25zLmNvbnN0cnVjdG9yKSB7XG4gICAgICBpZiAoREVTQ1JJUFRPUlMpIGRlZmluZVByb3BlcnR5KHZhbHVlLCAncHJvdG90eXBlJywgeyB3cml0YWJsZTogZmFsc2UgfSk7XG4gICAgLy8gaW4gVjggfiBDaHJvbWUgNTMsIHByb3RvdHlwZXMgb2Ygc29tZSBtZXRob2RzLCBsaWtlIGBBcnJheS5wcm90b3R5cGUudmFsdWVzYCwgYXJlIG5vbi13cml0YWJsZVxuICAgIH0gZWxzZSBpZiAodmFsdWUucHJvdG90eXBlKSB2YWx1ZS5wcm90b3R5cGUgPSB1bmRlZmluZWQ7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgdmFyIHN0YXRlID0gZW5mb3JjZUludGVybmFsU3RhdGUodmFsdWUpO1xuICBpZiAoIWhhc093bihzdGF0ZSwgJ3NvdXJjZScpKSB7XG4gICAgc3RhdGUuc291cmNlID0gam9pbihURU1QTEFURSwgdHlwZW9mIG5hbWUgPT0gJ3N0cmluZycgPyBuYW1lIDogJycpO1xuICB9IHJldHVybiB2YWx1ZTtcbn07XG5cbi8vIGFkZCBmYWtlIEZ1bmN0aW9uI3RvU3RyaW5nIGZvciBjb3JyZWN0IHdvcmsgd3JhcHBlZCBtZXRob2RzIC8gY29uc3RydWN0b3JzIHdpdGggbWV0aG9kcyBsaWtlIExvRGFzaCBpc05hdGl2ZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWV4dGVuZC1uYXRpdmUgLS0gcmVxdWlyZWRcbkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyA9IG1ha2VCdWlsdEluKGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gaXNDYWxsYWJsZSh0aGlzKSAmJiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnNvdXJjZSB8fCBpbnNwZWN0U291cmNlKHRoaXMpO1xufSwgJ3RvU3RyaW5nJyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5cbi8vIGBNYXRoLnRydW5jYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWF0aC50cnVuY1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW1hdGgtdHJ1bmMgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBNYXRoLnRydW5jIHx8IGZ1bmN0aW9uIHRydW5jKHgpIHtcbiAgdmFyIG4gPSAreDtcbiAgcmV0dXJuIChuID4gMCA/IGZsb29yIDogY2VpbCkobik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBzYWZlR2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zYWZlLWdldC1idWlsdC1pbicpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgbWFjcm90YXNrID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Rhc2snKS5zZXQ7XG52YXIgUXVldWUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcXVldWUnKTtcbnZhciBJU19JT1MgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQtaXMtaW9zJyk7XG52YXIgSVNfSU9TX1BFQkJMRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC1pcy1pb3MtcGViYmxlJyk7XG52YXIgSVNfV0VCT1NfV0VCS0lUID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50LWlzLXdlYm9zLXdlYmtpdCcpO1xudmFyIElTX05PREUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQtaXMtbm9kZScpO1xuXG52YXIgTXV0YXRpb25PYnNlcnZlciA9IGdsb2JhbFRoaXMuTXV0YXRpb25PYnNlcnZlciB8fCBnbG9iYWxUaGlzLldlYktpdE11dGF0aW9uT2JzZXJ2ZXI7XG52YXIgZG9jdW1lbnQgPSBnbG9iYWxUaGlzLmRvY3VtZW50O1xudmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG52YXIgUHJvbWlzZSA9IGdsb2JhbFRoaXMuUHJvbWlzZTtcbnZhciBtaWNyb3Rhc2sgPSBzYWZlR2V0QnVpbHRJbigncXVldWVNaWNyb3Rhc2snKTtcbnZhciBub3RpZnksIHRvZ2dsZSwgbm9kZSwgcHJvbWlzZSwgdGhlbjtcblxuLy8gbW9kZXJuIGVuZ2luZXMgaGF2ZSBxdWV1ZU1pY3JvdGFzayBtZXRob2RcbmlmICghbWljcm90YXNrKSB7XG4gIHZhciBxdWV1ZSA9IG5ldyBRdWV1ZSgpO1xuXG4gIHZhciBmbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGFyZW50LCBmbjtcbiAgICBpZiAoSVNfTk9ERSAmJiAocGFyZW50ID0gcHJvY2Vzcy5kb21haW4pKSBwYXJlbnQuZXhpdCgpO1xuICAgIHdoaWxlIChmbiA9IHF1ZXVlLmdldCgpKSB0cnkge1xuICAgICAgZm4oKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKHF1ZXVlLmhlYWQpIG5vdGlmeSgpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIGlmIChwYXJlbnQpIHBhcmVudC5lbnRlcigpO1xuICB9O1xuXG4gIC8vIGJyb3dzZXJzIHdpdGggTXV0YXRpb25PYnNlcnZlciwgZXhjZXB0IGlPUyAtIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8zMzlcbiAgLy8gYWxzbyBleGNlcHQgV2ViT1MgV2Via2l0IGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84OThcbiAgaWYgKCFJU19JT1MgJiYgIUlTX05PREUgJiYgIUlTX1dFQk9TX1dFQktJVCAmJiBNdXRhdGlvbk9ic2VydmVyICYmIGRvY3VtZW50KSB7XG4gICAgdG9nZ2xlID0gdHJ1ZTtcbiAgICBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpO1xuICAgIG5ldyBNdXRhdGlvbk9ic2VydmVyKGZsdXNoKS5vYnNlcnZlKG5vZGUsIHsgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBub2RlLmRhdGEgPSB0b2dnbGUgPSAhdG9nZ2xlO1xuICAgIH07XG4gIC8vIGVudmlyb25tZW50cyB3aXRoIG1heWJlIG5vbi1jb21wbGV0ZWx5IGNvcnJlY3QsIGJ1dCBleGlzdGVudCBQcm9taXNlXG4gIH0gZWxzZSBpZiAoIUlTX0lPU19QRUJCTEUgJiYgUHJvbWlzZSAmJiBQcm9taXNlLnJlc29sdmUpIHtcbiAgICAvLyBQcm9taXNlLnJlc29sdmUgd2l0aG91dCBhbiBhcmd1bWVudCB0aHJvd3MgYW4gZXJyb3IgaW4gTEcgV2ViT1MgMlxuICAgIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICAvLyB3b3JrYXJvdW5kIG9mIFdlYktpdCB+IGlPUyBTYWZhcmkgMTAuMSBidWdcbiAgICBwcm9taXNlLmNvbnN0cnVjdG9yID0gUHJvbWlzZTtcbiAgICB0aGVuID0gYmluZChwcm9taXNlLnRoZW4sIHByb21pc2UpO1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoZW4oZmx1c2gpO1xuICAgIH07XG4gIC8vIE5vZGUuanMgd2l0aG91dCBwcm9taXNlc1xuICB9IGVsc2UgaWYgKElTX05PREUpIHtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGZsdXNoKTtcbiAgICB9O1xuICAvLyBmb3Igb3RoZXIgZW52aXJvbm1lbnRzIC0gbWFjcm90YXNrIGJhc2VkIG9uOlxuICAvLyAtIHNldEltbWVkaWF0ZVxuICAvLyAtIE1lc3NhZ2VDaGFubmVsXG4gIC8vIC0gd2luZG93LnBvc3RNZXNzYWdlXG4gIC8vIC0gb25yZWFkeXN0YXRlY2hhbmdlXG4gIC8vIC0gc2V0VGltZW91dFxuICB9IGVsc2Uge1xuICAgIC8vIGB3ZWJwYWNrYCBkZXYgc2VydmVyIGJ1ZyBvbiBJRSBnbG9iYWwgbWV0aG9kcyAtIHVzZSBiaW5kKGZuLCBnbG9iYWwpXG4gICAgbWFjcm90YXNrID0gYmluZChtYWNyb3Rhc2ssIGdsb2JhbFRoaXMpO1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIG1hY3JvdGFzayhmbHVzaCk7XG4gICAgfTtcbiAgfVxuXG4gIG1pY3JvdGFzayA9IGZ1bmN0aW9uIChmbikge1xuICAgIGlmICghcXVldWUuaGVhZCkgbm90aWZ5KCk7XG4gICAgcXVldWUuYWRkKGZuKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtaWNyb3Rhc2s7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbnZhciBQcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uIChDKSB7XG4gIHZhciByZXNvbHZlLCByZWplY3Q7XG4gIHRoaXMucHJvbWlzZSA9IG5ldyBDKGZ1bmN0aW9uICgkJHJlc29sdmUsICQkcmVqZWN0KSB7XG4gICAgaWYgKHJlc29sdmUgIT09IHVuZGVmaW5lZCB8fCByZWplY3QgIT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3ICRUeXBlRXJyb3IoJ0JhZCBQcm9taXNlIGNvbnN0cnVjdG9yJyk7XG4gICAgcmVzb2x2ZSA9ICQkcmVzb2x2ZTtcbiAgICByZWplY3QgPSAkJHJlamVjdDtcbiAgfSk7XG4gIHRoaXMucmVzb2x2ZSA9IGFDYWxsYWJsZShyZXNvbHZlKTtcbiAgdGhpcy5yZWplY3QgPSBhQ2FsbGFibGUocmVqZWN0KTtcbn07XG5cbi8vIGBOZXdQcm9taXNlQ2FwYWJpbGl0eWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW5ld3Byb21pc2VjYXBhYmlsaXR5XG5tb2R1bGUuZXhwb3J0cy5mID0gZnVuY3Rpb24gKEMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlQ2FwYWJpbGl0eShDKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50LCAkZGVmYXVsdCkge1xuICByZXR1cm4gYXJndW1lbnQgPT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50cy5sZW5ndGggPCAyID8gJycgOiAkZGVmYXVsdCA6IHRvU3RyaW5nKGFyZ3VtZW50KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIG9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scycpO1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWFzc2lnbiAtLSBzYWZlXG52YXIgJGFzc2lnbiA9IE9iamVjdC5hc3NpZ247XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgY29uY2F0ID0gdW5jdXJyeVRoaXMoW10uY29uY2F0KTtcblxuLy8gYE9iamVjdC5hc3NpZ25gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuYXNzaWduXG5tb2R1bGUuZXhwb3J0cyA9ICEkYXNzaWduIHx8IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gc2hvdWxkIGhhdmUgY29ycmVjdCBvcmRlciBvZiBvcGVyYXRpb25zIChFZGdlIGJ1ZylcbiAgaWYgKERFU0NSSVBUT1JTICYmICRhc3NpZ24oeyBiOiAxIH0sICRhc3NpZ24oZGVmaW5lUHJvcGVydHkoe30sICdhJywge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICBkZWZpbmVQcm9wZXJ0eSh0aGlzLCAnYicsIHtcbiAgICAgICAgdmFsdWU6IDMsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9XG4gIH0pLCB7IGI6IDIgfSkpLmIgIT09IDEpIHJldHVybiB0cnVlO1xuICAvLyBzaG91bGQgd29yayB3aXRoIHN5bWJvbHMgYW5kIHNob3VsZCBoYXZlIGRldGVybWluaXN0aWMgcHJvcGVydHkgb3JkZXIgKFY4IGJ1ZylcbiAgdmFyIEEgPSB7fTtcbiAgdmFyIEIgPSB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLXN5bWJvbCAtLSBzYWZlXG4gIHZhciBzeW1ib2wgPSBTeW1ib2woJ2Fzc2lnbiBkZXRlY3Rpb24nKTtcbiAgdmFyIGFscGhhYmV0ID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0JztcbiAgQVtzeW1ib2xdID0gNztcbiAgYWxwaGFiZXQuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGNocikgeyBCW2Nocl0gPSBjaHI7IH0pO1xuICByZXR1cm4gJGFzc2lnbih7fSwgQSlbc3ltYm9sXSAhPT0gNyB8fCBvYmplY3RLZXlzKCRhc3NpZ24oe30sIEIpKS5qb2luKCcnKSAhPT0gYWxwaGFiZXQ7XG59KSA/IGZ1bmN0aW9uIGFzc2lnbih0YXJnZXQsIHNvdXJjZSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzIC0tIHJlcXVpcmVkIGZvciBgLmxlbmd0aGBcbiAgdmFyIFQgPSB0b09iamVjdCh0YXJnZXQpO1xuICB2YXIgYXJndW1lbnRzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gMTtcbiAgdmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZS5mO1xuICB2YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZS5mO1xuICB3aGlsZSAoYXJndW1lbnRzTGVuZ3RoID4gaW5kZXgpIHtcbiAgICB2YXIgUyA9IEluZGV4ZWRPYmplY3QoYXJndW1lbnRzW2luZGV4KytdKTtcbiAgICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5U3ltYm9scyA/IGNvbmNhdChvYmplY3RLZXlzKFMpLCBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoUykpIDogb2JqZWN0S2V5cyhTKTtcbiAgICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgdmFyIGogPSAwO1xuICAgIHZhciBrZXk7XG4gICAgd2hpbGUgKGxlbmd0aCA+IGopIHtcbiAgICAgIGtleSA9IGtleXNbaisrXTtcbiAgICAgIGlmICghREVTQ1JJUFRPUlMgfHwgY2FsbChwcm9wZXJ0eUlzRW51bWVyYWJsZSwgUywga2V5KSkgVFtrZXldID0gU1trZXldO1xuICAgIH1cbiAgfSByZXR1cm4gVDtcbn0gOiAkYXNzaWduO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZ2xvYmFsIEFjdGl2ZVhPYmplY3QgLS0gb2xkIElFLCBXU0ggKi9cbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBkZWZpbmVQcm9wZXJ0aWVzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydGllcycpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9odG1sJyk7XG52YXIgZG9jdW1lbnRDcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcblxudmFyIEdUID0gJz4nO1xudmFyIExUID0gJzwnO1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xudmFyIFNDUklQVCA9ICdzY3JpcHQnO1xudmFyIElFX1BST1RPID0gc2hhcmVkS2V5KCdJRV9QUk9UTycpO1xuXG52YXIgRW1wdHlDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcblxudmFyIHNjcmlwdFRhZyA9IGZ1bmN0aW9uIChjb250ZW50KSB7XG4gIHJldHVybiBMVCArIFNDUklQVCArIEdUICsgY29udGVudCArIExUICsgJy8nICsgU0NSSVBUICsgR1Q7XG59O1xuXG4vLyBDcmVhdGUgb2JqZWN0IHdpdGggZmFrZSBgbnVsbGAgcHJvdG90eXBlOiB1c2UgQWN0aXZlWCBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIE51bGxQcm90b09iamVjdFZpYUFjdGl2ZVggPSBmdW5jdGlvbiAoYWN0aXZlWERvY3VtZW50KSB7XG4gIGFjdGl2ZVhEb2N1bWVudC53cml0ZShzY3JpcHRUYWcoJycpKTtcbiAgYWN0aXZlWERvY3VtZW50LmNsb3NlKCk7XG4gIHZhciB0ZW1wID0gYWN0aXZlWERvY3VtZW50LnBhcmVudFdpbmRvdy5PYmplY3Q7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWFzc2lnbm1lbnQgLS0gYXZvaWQgbWVtb3J5IGxlYWtcbiAgYWN0aXZlWERvY3VtZW50ID0gbnVsbDtcbiAgcmV0dXJuIHRlbXA7XG59O1xuXG4vLyBDcmVhdGUgb2JqZWN0IHdpdGggZmFrZSBgbnVsbGAgcHJvdG90eXBlOiB1c2UgaWZyYW1lIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgTnVsbFByb3RvT2JqZWN0VmlhSUZyYW1lID0gZnVuY3Rpb24gKCkge1xuICAvLyBUaHJhc2gsIHdhc3RlIGFuZCBzb2RvbXk6IElFIEdDIGJ1Z1xuICB2YXIgaWZyYW1lID0gZG9jdW1lbnRDcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcbiAgdmFyIEpTID0gJ2phdmEnICsgU0NSSVBUICsgJzonO1xuICB2YXIgaWZyYW1lRG9jdW1lbnQ7XG4gIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICBodG1sLmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy80NzVcbiAgaWZyYW1lLnNyYyA9IFN0cmluZyhKUyk7XG4gIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gIGlmcmFtZURvY3VtZW50Lm9wZW4oKTtcbiAgaWZyYW1lRG9jdW1lbnQud3JpdGUoc2NyaXB0VGFnKCdkb2N1bWVudC5GPU9iamVjdCcpKTtcbiAgaWZyYW1lRG9jdW1lbnQuY2xvc2UoKTtcbiAgcmV0dXJuIGlmcmFtZURvY3VtZW50LkY7XG59O1xuXG4vLyBDaGVjayBmb3IgZG9jdW1lbnQuZG9tYWluIGFuZCBhY3RpdmUgeCBzdXBwb3J0XG4vLyBObyBuZWVkIHRvIHVzZSBhY3RpdmUgeCBhcHByb2FjaCB3aGVuIGRvY3VtZW50LmRvbWFpbiBpcyBub3Qgc2V0XG4vLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2VzLXNoaW1zL2VzNS1zaGltL2lzc3Vlcy8xNTBcbi8vIHZhcmlhdGlvbiBvZiBodHRwczovL2dpdGh1Yi5jb20va2l0Y2FtYnJpZGdlL2VzNS1zaGltL2NvbW1pdC80ZjczOGFjMDY2MzQ2XG4vLyBhdm9pZCBJRSBHQyBidWdcbnZhciBhY3RpdmVYRG9jdW1lbnQ7XG52YXIgTnVsbFByb3RvT2JqZWN0ID0gZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIGFjdGl2ZVhEb2N1bWVudCA9IG5ldyBBY3RpdmVYT2JqZWN0KCdodG1sZmlsZScpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBpZ25vcmUgKi8gfVxuICBOdWxsUHJvdG9PYmplY3QgPSB0eXBlb2YgZG9jdW1lbnQgIT0gJ3VuZGVmaW5lZCdcbiAgICA/IGRvY3VtZW50LmRvbWFpbiAmJiBhY3RpdmVYRG9jdW1lbnRcbiAgICAgID8gTnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWChhY3RpdmVYRG9jdW1lbnQpIC8vIG9sZCBJRVxuICAgICAgOiBOdWxsUHJvdG9PYmplY3RWaWFJRnJhbWUoKVxuICAgIDogTnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWChhY3RpdmVYRG9jdW1lbnQpOyAvLyBXU0hcbiAgdmFyIGxlbmd0aCA9IGVudW1CdWdLZXlzLmxlbmd0aDtcbiAgd2hpbGUgKGxlbmd0aC0tKSBkZWxldGUgTnVsbFByb3RvT2JqZWN0W1BST1RPVFlQRV1bZW51bUJ1Z0tleXNbbGVuZ3RoXV07XG4gIHJldHVybiBOdWxsUHJvdG9PYmplY3QoKTtcbn07XG5cbmhpZGRlbktleXNbSUVfUFJPVE9dID0gdHJ1ZTtcblxuLy8gYE9iamVjdC5jcmVhdGVgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuY3JlYXRlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWNyZWF0ZSAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKE8gIT09IG51bGwpIHtcbiAgICBFbXB0eUNvbnN0cnVjdG9yW1BST1RPVFlQRV0gPSBhbk9iamVjdChPKTtcbiAgICByZXN1bHQgPSBuZXcgRW1wdHlDb25zdHJ1Y3RvcigpO1xuICAgIEVtcHR5Q29uc3RydWN0b3JbUFJPVE9UWVBFXSA9IG51bGw7XG4gICAgLy8gYWRkIFwiX19wcm90b19fXCIgZm9yIE9iamVjdC5nZXRQcm90b3R5cGVPZiBwb2x5ZmlsbFxuICAgIHJlc3VsdFtJRV9QUk9UT10gPSBPO1xuICB9IGVsc2UgcmVzdWx0ID0gTnVsbFByb3RvT2JqZWN0KCk7XG4gIHJldHVybiBQcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiBkZWZpbmVQcm9wZXJ0aWVzTW9kdWxlLmYocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1ZycpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBvYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzJyk7XG5cbi8vIGBPYmplY3QuZGVmaW5lUHJvcGVydGllc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0aWVzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnRpZXMgLS0gc2FmZVxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgJiYgIVY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIHZhciBwcm9wcyA9IHRvSW5kZXhlZE9iamVjdChQcm9wZXJ0aWVzKTtcbiAgdmFyIGtleXMgPSBvYmplY3RLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChsZW5ndGggPiBpbmRleCkgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihPLCBrZXkgPSBrZXlzW2luZGV4KytdLCBwcm9wc1trZXldKTtcbiAgcmV0dXJuIE87XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcbnZhciBWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1ZycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgJGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xudmFyIEVOVU1FUkFCTEUgPSAnZW51bWVyYWJsZSc7XG52YXIgQ09ORklHVVJBQkxFID0gJ2NvbmZpZ3VyYWJsZSc7XG52YXIgV1JJVEFCTEUgPSAnd3JpdGFibGUnO1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnR5XG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/IFY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID8gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAodHlwZW9mIE8gPT09ICdmdW5jdGlvbicgJiYgUCA9PT0gJ3Byb3RvdHlwZScgJiYgJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzICYmIFdSSVRBQkxFIGluIEF0dHJpYnV0ZXMgJiYgIUF0dHJpYnV0ZXNbV1JJVEFCTEVdKSB7XG4gICAgdmFyIGN1cnJlbnQgPSAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICAgIGlmIChjdXJyZW50ICYmIGN1cnJlbnRbV1JJVEFCTEVdKSB7XG4gICAgICBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgICAgIEF0dHJpYnV0ZXMgPSB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogQ09ORklHVVJBQkxFIGluIEF0dHJpYnV0ZXMgPyBBdHRyaWJ1dGVzW0NPTkZJR1VSQUJMRV0gOiBjdXJyZW50W0NPTkZJR1VSQUJMRV0sXG4gICAgICAgIGVudW1lcmFibGU6IEVOVU1FUkFCTEUgaW4gQXR0cmlidXRlcyA/IEF0dHJpYnV0ZXNbRU5VTUVSQUJMRV0gOiBjdXJyZW50W0VOVU1FUkFCTEVdLFxuICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuICB9IHJldHVybiAkZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG59IDogJGRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuICRkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBuZXcgJFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlJyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXknKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yXG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JbmRleGVkT2JqZWN0KE8pO1xuICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXNPd24oTywgUCkpIHJldHVybiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoIWNhbGwocHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUuZiwgTywgUCksIE9bUF0pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpbnRlcm5hbE9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG5cbnZhciBoaWRkZW5LZXlzID0gZW51bUJ1Z0tleXMuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eW5hbWVzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5bmFtZXMgLS0gc2FmZVxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhPKSB7XG4gIHJldHVybiBpbnRlcm5hbE9iamVjdEtleXMoTywgaGlkZGVuS2V5cyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eXN5bWJvbHMgLS0gc2FmZVxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xudmFyIENPUlJFQ1RfUFJPVE9UWVBFX0dFVFRFUiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb3JyZWN0LXByb3RvdHlwZS1nZXR0ZXInKTtcblxudmFyIElFX1BST1RPID0gc2hhcmVkS2V5KCdJRV9QUk9UTycpO1xudmFyICRPYmplY3QgPSBPYmplY3Q7XG52YXIgT2JqZWN0UHJvdG90eXBlID0gJE9iamVjdC5wcm90b3R5cGU7XG5cbi8vIGBPYmplY3QuZ2V0UHJvdG90eXBlT2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0cHJvdG90eXBlb2Zcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0cHJvdG90eXBlb2YgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBDT1JSRUNUX1BST1RPVFlQRV9HRVRURVIgPyAkT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gKE8pIHtcbiAgdmFyIG9iamVjdCA9IHRvT2JqZWN0KE8pO1xuICBpZiAoaGFzT3duKG9iamVjdCwgSUVfUFJPVE8pKSByZXR1cm4gb2JqZWN0W0lFX1BST1RPXTtcbiAgdmFyIGNvbnN0cnVjdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yO1xuICBpZiAoaXNDYWxsYWJsZShjb25zdHJ1Y3RvcikgJiYgb2JqZWN0IGluc3RhbmNlb2YgY29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gY29uc3RydWN0b3IucHJvdG90eXBlO1xuICB9IHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiAkT2JqZWN0ID8gT2JqZWN0UHJvdG90eXBlIDogbnVsbDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gdW5jdXJyeVRoaXMoe30uaXNQcm90b3R5cGVPZik7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBpbmRleE9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzJykuaW5kZXhPZjtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbnZhciBwdXNoID0gdW5jdXJyeVRoaXMoW10ucHVzaCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZXMpIHtcbiAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3Qob2JqZWN0KTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIE8pICFoYXNPd24oaGlkZGVuS2V5cywga2V5KSAmJiBoYXNPd24oTywga2V5KSAmJiBwdXNoKHJlc3VsdCwga2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhc093bihPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5pbmRleE9mKHJlc3VsdCwga2V5KSB8fCBwdXNoKHJlc3VsdCwga2V5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpbnRlcm5hbE9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG5cbi8vIGBPYmplY3Qua2V5c2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5rZXlzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWtleXMgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pIHtcbiAgcmV0dXJuIGludGVybmFsT2JqZWN0S2V5cyhPLCBlbnVtQnVnS2V5cyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIE5hc2hvcm4gfiBKREs4IGJ1Z1xudmFyIE5BU0hPUk5fQlVHID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICYmICEkcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh7IDE6IDIgfSwgMSk7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eWlzZW51bWVyYWJsZVxuZXhwb3J0cy5mID0gTkFTSE9STl9CVUcgPyBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShWKSB7XG4gIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsIFYpO1xuICByZXR1cm4gISFkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZTtcbn0gOiAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4iLCIndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAtLSBzYWZlICovXG52YXIgdW5jdXJyeVRoaXNBY2Nlc3NvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMtYWNjZXNzb3InKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xudmFyIGFQb3NzaWJsZVByb3RvdHlwZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLXBvc3NpYmxlLXByb3RvdHlwZScpO1xuXG4vLyBgT2JqZWN0LnNldFByb3RvdHlwZU9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnNldHByb3RvdHlwZW9mXG4vLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3Qtc2V0cHJvdG90eXBlb2YgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgKCdfX3Byb3RvX18nIGluIHt9ID8gZnVuY3Rpb24gKCkge1xuICB2YXIgQ09SUkVDVF9TRVRURVIgPSBmYWxzZTtcbiAgdmFyIHRlc3QgPSB7fTtcbiAgdmFyIHNldHRlcjtcbiAgdHJ5IHtcbiAgICBzZXR0ZXIgPSB1bmN1cnJ5VGhpc0FjY2Vzc29yKE9iamVjdC5wcm90b3R5cGUsICdfX3Byb3RvX18nLCAnc2V0Jyk7XG4gICAgc2V0dGVyKHRlc3QsIFtdKTtcbiAgICBDT1JSRUNUX1NFVFRFUiA9IHRlc3QgaW5zdGFuY2VvZiBBcnJheTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gZnVuY3Rpb24gc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pIHtcbiAgICByZXF1aXJlT2JqZWN0Q29lcmNpYmxlKE8pO1xuICAgIGFQb3NzaWJsZVByb3RvdHlwZShwcm90byk7XG4gICAgaWYgKCFpc09iamVjdChPKSkgcmV0dXJuIE87XG4gICAgaWYgKENPUlJFQ1RfU0VUVEVSKSBzZXR0ZXIoTywgcHJvdG8pO1xuICAgIGVsc2UgTy5fX3Byb3RvX18gPSBwcm90bztcbiAgICByZXR1cm4gTztcbiAgfTtcbn0oKSA6IHVuZGVmaW5lZCk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgVE9fU1RSSU5HX1RBR19TVVBQT1JUID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZy10YWctc3VwcG9ydCcpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZicpO1xuXG4vLyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gVE9fU1RSSU5HX1RBR19TVVBQT1JUID8ge30udG9TdHJpbmcgOiBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuICdbb2JqZWN0ICcgKyBjbGFzc29mKHRoaXMpICsgJ10nO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgT3JkaW5hcnlUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9yZGluYXJ5dG9wcmltaXRpdmVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGlucHV0LCBwcmVmKSB7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAocHJlZiA9PT0gJ3N0cmluZycgJiYgaXNDYWxsYWJsZShmbiA9IGlucHV0LnRvU3RyaW5nKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKGlzQ2FsbGFibGUoZm4gPSBpbnB1dC52YWx1ZU9mKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHByZWYgIT09ICdzdHJpbmcnICYmIGlzQ2FsbGFibGUoZm4gPSBpbnB1dC50b1N0cmluZykgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG52YXIgY29uY2F0ID0gdW5jdXJyeVRoaXMoW10uY29uY2F0KTtcblxuLy8gYWxsIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBub24tZW51bWVyYWJsZSBhbmQgc3ltYm9sc1xubW9kdWxlLmV4cG9ydHMgPSBnZXRCdWlsdEluKCdSZWZsZWN0JywgJ293bktleXMnKSB8fCBmdW5jdGlvbiBvd25LZXlzKGl0KSB7XG4gIHZhciBrZXlzID0gZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZS5mKGFuT2JqZWN0KGl0KSk7XG4gIHZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUuZjtcbiAgcmV0dXJuIGdldE93blByb3BlcnR5U3ltYm9scyA/IGNvbmNhdChrZXlzLCBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpKSA6IGtleXM7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBnbG9iYWxUaGlzO1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiB7IGVycm9yOiBmYWxzZSwgdmFsdWU6IGV4ZWMoKSB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB7IGVycm9yOiB0cnVlLCB2YWx1ZTogZXJyb3IgfTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtbmF0aXZlLWNvbnN0cnVjdG9yJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzRm9yY2VkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWZvcmNlZCcpO1xudmFyIGluc3BlY3RTb3VyY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBFTlZJUk9OTUVOVCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIFY4X1ZFUlNJT04gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQtdjgtdmVyc2lvbicpO1xuXG52YXIgTmF0aXZlUHJvbWlzZVByb3RvdHlwZSA9IE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciAmJiBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IucHJvdG90eXBlO1xudmFyIFNQRUNJRVMgPSB3ZWxsS25vd25TeW1ib2woJ3NwZWNpZXMnKTtcbnZhciBTVUJDTEFTU0lORyA9IGZhbHNlO1xudmFyIE5BVElWRV9QUk9NSVNFX1JFSkVDVElPTl9FVkVOVCA9IGlzQ2FsbGFibGUoZ2xvYmFsVGhpcy5Qcm9taXNlUmVqZWN0aW9uRXZlbnQpO1xuXG52YXIgRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IgPSBpc0ZvcmNlZCgnUHJvbWlzZScsIGZ1bmN0aW9uICgpIHtcbiAgdmFyIFBST01JU0VfQ09OU1RSVUNUT1JfU09VUkNFID0gaW5zcGVjdFNvdXJjZShOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IpO1xuICB2YXIgR0xPQkFMX0NPUkVfSlNfUFJPTUlTRSA9IFBST01JU0VfQ09OU1RSVUNUT1JfU09VUkNFICE9PSBTdHJpbmcoTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yKTtcbiAgLy8gVjggNi42IChOb2RlIDEwIGFuZCBDaHJvbWUgNjYpIGhhdmUgYSBidWcgd2l0aCByZXNvbHZpbmcgY3VzdG9tIHRoZW5hYmxlc1xuICAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD04MzA1NjVcbiAgLy8gV2UgY2FuJ3QgZGV0ZWN0IGl0IHN5bmNocm9ub3VzbHksIHNvIGp1c3QgY2hlY2sgdmVyc2lvbnNcbiAgaWYgKCFHTE9CQUxfQ09SRV9KU19QUk9NSVNFICYmIFY4X1ZFUlNJT04gPT09IDY2KSByZXR1cm4gdHJ1ZTtcbiAgLy8gV2UgbmVlZCBQcm9taXNlI3sgY2F0Y2gsIGZpbmFsbHkgfSBpbiB0aGUgcHVyZSB2ZXJzaW9uIGZvciBwcmV2ZW50aW5nIHByb3RvdHlwZSBwb2xsdXRpb25cbiAgaWYgKElTX1BVUkUgJiYgIShOYXRpdmVQcm9taXNlUHJvdG90eXBlWydjYXRjaCddICYmIE5hdGl2ZVByb21pc2VQcm90b3R5cGVbJ2ZpbmFsbHknXSkpIHJldHVybiB0cnVlO1xuICAvLyBXZSBjYW4ndCB1c2UgQEBzcGVjaWVzIGZlYXR1cmUgZGV0ZWN0aW9uIGluIFY4IHNpbmNlIGl0IGNhdXNlc1xuICAvLyBkZW9wdGltaXphdGlvbiBhbmQgcGVyZm9ybWFuY2UgZGVncmFkYXRpb25cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzY3OVxuICBpZiAoIVY4X1ZFUlNJT04gfHwgVjhfVkVSU0lPTiA8IDUxIHx8ICEvbmF0aXZlIGNvZGUvLnRlc3QoUFJPTUlTRV9DT05TVFJVQ1RPUl9TT1VSQ0UpKSB7XG4gICAgLy8gRGV0ZWN0IGNvcnJlY3RuZXNzIG9mIHN1YmNsYXNzaW5nIHdpdGggQEBzcGVjaWVzIHN1cHBvcnRcbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSgxKTsgfSk7XG4gICAgdmFyIEZha2VQcm9taXNlID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgICAgIGV4ZWMoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pO1xuICAgIH07XG4gICAgdmFyIGNvbnN0cnVjdG9yID0gcHJvbWlzZS5jb25zdHJ1Y3RvciA9IHt9O1xuICAgIGNvbnN0cnVjdG9yW1NQRUNJRVNdID0gRmFrZVByb21pc2U7XG4gICAgU1VCQ0xBU1NJTkcgPSBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KSBpbnN0YW5jZW9mIEZha2VQcm9taXNlO1xuICAgIGlmICghU1VCQ0xBU1NJTkcpIHJldHVybiB0cnVlO1xuICAvLyBVbmhhbmRsZWQgcmVqZWN0aW9ucyB0cmFja2luZyBzdXBwb3J0LCBOb2RlSlMgUHJvbWlzZSB3aXRob3V0IGl0IGZhaWxzIEBAc3BlY2llcyB0ZXN0XG4gIH0gcmV0dXJuICFHTE9CQUxfQ09SRV9KU19QUk9NSVNFICYmIChFTlZJUk9OTUVOVCA9PT0gJ0JST1dTRVInIHx8IEVOVklST05NRU5UID09PSAnREVOTycpICYmICFOQVRJVkVfUFJPTUlTRV9SRUpFQ1RJT05fRVZFTlQ7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIENPTlNUUlVDVE9SOiBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUixcbiAgUkVKRUNUSU9OX0VWRU5UOiBOQVRJVkVfUFJPTUlTRV9SRUpFQ1RJT05fRVZFTlQsXG4gIFNVQkNMQVNTSU5HOiBTVUJDTEFTU0lOR1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2xvYmFsVGhpcy5Qcm9taXNlO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQywgeCkge1xuICBhbk9iamVjdChDKTtcbiAgaWYgKGlzT2JqZWN0KHgpICYmIHguY29uc3RydWN0b3IgPT09IEMpIHJldHVybiB4O1xuICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eS5mKEMpO1xuICB2YXIgcmVzb2x2ZSA9IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmU7XG4gIHJlc29sdmUoeCk7XG4gIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5wcm9taXNlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3InKTtcbnZhciBjaGVja0NvcnJlY3RuZXNzT2ZJdGVyYXRpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2hlY2stY29ycmVjdG5lc3Mtb2YtaXRlcmF0aW9uJyk7XG52YXIgRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKS5DT05TVFJVQ1RPUjtcblxubW9kdWxlLmV4cG9ydHMgPSBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiB8fCAhY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uKGZ1bmN0aW9uIChpdGVyYWJsZSkge1xuICBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IuYWxsKGl0ZXJhYmxlKS50aGVuKHVuZGVmaW5lZCwgZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIFF1ZXVlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmhlYWQgPSBudWxsO1xuICB0aGlzLnRhaWwgPSBudWxsO1xufTtcblxuUXVldWUucHJvdG90eXBlID0ge1xuICBhZGQ6IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIGVudHJ5ID0geyBpdGVtOiBpdGVtLCBuZXh0OiBudWxsIH07XG4gICAgdmFyIHRhaWwgPSB0aGlzLnRhaWw7XG4gICAgaWYgKHRhaWwpIHRhaWwubmV4dCA9IGVudHJ5O1xuICAgIGVsc2UgdGhpcy5oZWFkID0gZW50cnk7XG4gICAgdGhpcy50YWlsID0gZW50cnk7XG4gIH0sXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHZhciBlbnRyeSA9IHRoaXMuaGVhZDtcbiAgICBpZiAoZW50cnkpIHtcbiAgICAgIHZhciBuZXh0ID0gdGhpcy5oZWFkID0gZW50cnkubmV4dDtcbiAgICAgIGlmIChuZXh0ID09PSBudWxsKSB0aGlzLnRhaWwgPSBudWxsO1xuICAgICAgcmV0dXJuIGVudHJ5Lml0ZW07XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFF1ZXVlO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgUmVxdWlyZU9iamVjdENvZXJjaWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlcXVpcmVvYmplY3Rjb2VyY2libGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpc051bGxPclVuZGVmaW5lZChpdCkpIHRocm93IG5ldyAkVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBBdm9pZCBOb2RlSlMgZXhwZXJpbWVudGFsIHdhcm5pbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgaWYgKCFERVNDUklQVE9SUykgcmV0dXJuIGdsb2JhbFRoaXNbbmFtZV07XG4gIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbFRoaXMsIG5hbWUpO1xuICByZXR1cm4gZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLnZhbHVlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGRlZmluZUJ1aWx0SW5BY2Nlc3NvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4tYWNjZXNzb3InKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDT05TVFJVQ1RPUl9OQU1FKSB7XG4gIHZhciBDb25zdHJ1Y3RvciA9IGdldEJ1aWx0SW4oQ09OU1RSVUNUT1JfTkFNRSk7XG5cbiAgaWYgKERFU0NSSVBUT1JTICYmIENvbnN0cnVjdG9yICYmICFDb25zdHJ1Y3RvcltTUEVDSUVTXSkge1xuICAgIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihDb25zdHJ1Y3RvciwgU1BFQ0lFUywge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9XG4gICAgfSk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgVEFHLCBTVEFUSUMpIHtcbiAgaWYgKHRhcmdldCAmJiAhU1RBVElDKSB0YXJnZXQgPSB0YXJnZXQucHJvdG90eXBlO1xuICBpZiAodGFyZ2V0ICYmICFoYXNPd24odGFyZ2V0LCBUT19TVFJJTkdfVEFHKSkge1xuICAgIGRlZmluZVByb3BlcnR5KHRhcmdldCwgVE9fU1RSSU5HX1RBRywgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiBUQUcgfSk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcblxudmFyIGtleXMgPSBzaGFyZWQoJ2tleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBrZXlzW2tleV0gfHwgKGtleXNba2V5XSA9IHVpZChrZXkpKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGRlZmluZUdsb2JhbFByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHknKTtcblxudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gbW9kdWxlLmV4cG9ydHMgPSBnbG9iYWxUaGlzW1NIQVJFRF0gfHwgZGVmaW5lR2xvYmFsUHJvcGVydHkoU0hBUkVELCB7fSk7XG5cbihzdG9yZS52ZXJzaW9ucyB8fCAoc3RvcmUudmVyc2lvbnMgPSBbXSkpLnB1c2goe1xuICB2ZXJzaW9uOiAnMy4zOS4wJyxcbiAgbW9kZTogSVNfUFVSRSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE0LTIwMjQgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknLFxuICBsaWNlbnNlOiAnaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4zOS4wL0xJQ0VOU0UnLFxuICBzb3VyY2U6ICdodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcydcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHN0b3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgfHwge30pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBhQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jb25zdHJ1Y3RvcicpO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG5cbi8vIGBTcGVjaWVzQ29uc3RydWN0b3JgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zcGVjaWVzY29uc3RydWN0b3Jcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIGRlZmF1bHRDb25zdHJ1Y3Rvcikge1xuICB2YXIgQyA9IGFuT2JqZWN0KE8pLmNvbnN0cnVjdG9yO1xuICB2YXIgUztcbiAgcmV0dXJuIEMgPT09IHVuZGVmaW5lZCB8fCBpc051bGxPclVuZGVmaW5lZChTID0gYW5PYmplY3QoQylbU1BFQ0lFU10pID8gZGVmYXVsdENvbnN0cnVjdG9yIDogYUNvbnN0cnVjdG9yKFMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG52YXIgY2hhckF0ID0gdW5jdXJyeVRoaXMoJycuY2hhckF0KTtcbnZhciBjaGFyQ29kZUF0ID0gdW5jdXJyeVRoaXMoJycuY2hhckNvZGVBdCk7XG52YXIgc3RyaW5nU2xpY2UgPSB1bmN1cnJ5VGhpcygnJy5zbGljZSk7XG5cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoQ09OVkVSVF9UT19TVFJJTkcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgcG9zKSB7XG4gICAgdmFyIFMgPSB0b1N0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKCR0aGlzKSk7XG4gICAgdmFyIHBvc2l0aW9uID0gdG9JbnRlZ2VyT3JJbmZpbml0eShwb3MpO1xuICAgIHZhciBzaXplID0gUy5sZW5ndGg7XG4gICAgdmFyIGZpcnN0LCBzZWNvbmQ7XG4gICAgaWYgKHBvc2l0aW9uIDwgMCB8fCBwb3NpdGlvbiA+PSBzaXplKSByZXR1cm4gQ09OVkVSVF9UT19TVFJJTkcgPyAnJyA6IHVuZGVmaW5lZDtcbiAgICBmaXJzdCA9IGNoYXJDb2RlQXQoUywgcG9zaXRpb24pO1xuICAgIHJldHVybiBmaXJzdCA8IDB4RDgwMCB8fCBmaXJzdCA+IDB4REJGRiB8fCBwb3NpdGlvbiArIDEgPT09IHNpemVcbiAgICAgIHx8IChzZWNvbmQgPSBjaGFyQ29kZUF0KFMsIHBvc2l0aW9uICsgMSkpIDwgMHhEQzAwIHx8IHNlY29uZCA+IDB4REZGRlxuICAgICAgICA/IENPTlZFUlRfVE9fU1RSSU5HXG4gICAgICAgICAgPyBjaGFyQXQoUywgcG9zaXRpb24pXG4gICAgICAgICAgOiBmaXJzdFxuICAgICAgICA6IENPTlZFUlRfVE9fU1RSSU5HXG4gICAgICAgICAgPyBzdHJpbmdTbGljZShTLCBwb3NpdGlvbiwgcG9zaXRpb24gKyAyKVxuICAgICAgICAgIDogKGZpcnN0IC0gMHhEODAwIDw8IDEwKSArIChzZWNvbmQgLSAweERDMDApICsgMHgxMDAwMDtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgU3RyaW5nLnByb3RvdHlwZS5jb2RlUG9pbnRBdGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5jb2RlcG9pbnRhdFxuICBjb2RlQXQ6IGNyZWF0ZU1ldGhvZChmYWxzZSksXG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLmF0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21hdGhpYXNieW5lbnMvU3RyaW5nLnByb3RvdHlwZS5hdFxuICBjaGFyQXQ6IGNyZWF0ZU1ldGhvZCh0cnVlKVxufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9iZXN0aWVqcy9wdW55Y29kZS5qcy9ibG9iL21hc3Rlci9wdW55Y29kZS5qc1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG52YXIgbWF4SW50ID0gMjE0NzQ4MzY0NzsgLy8gYWthLiAweDdGRkZGRkZGIG9yIDJeMzEtMVxudmFyIGJhc2UgPSAzNjtcbnZhciB0TWluID0gMTtcbnZhciB0TWF4ID0gMjY7XG52YXIgc2tldyA9IDM4O1xudmFyIGRhbXAgPSA3MDA7XG52YXIgaW5pdGlhbEJpYXMgPSA3MjtcbnZhciBpbml0aWFsTiA9IDEyODsgLy8gMHg4MFxudmFyIGRlbGltaXRlciA9ICctJzsgLy8gJ1xceDJEJ1xudmFyIHJlZ2V4Tm9uQVNDSUkgPSAvW15cXDAtXFx1MDA3RV0vOyAvLyBub24tQVNDSUkgY2hhcnNcbnZhciByZWdleFNlcGFyYXRvcnMgPSAvWy5cXHUzMDAyXFx1RkYwRVxcdUZGNjFdL2c7IC8vIFJGQyAzNDkwIHNlcGFyYXRvcnNcbnZhciBPVkVSRkxPV19FUlJPUiA9ICdPdmVyZmxvdzogaW5wdXQgbmVlZHMgd2lkZXIgaW50ZWdlcnMgdG8gcHJvY2Vzcyc7XG52YXIgYmFzZU1pbnVzVE1pbiA9IGJhc2UgLSB0TWluO1xuXG52YXIgJFJhbmdlRXJyb3IgPSBSYW5nZUVycm9yO1xudmFyIGV4ZWMgPSB1bmN1cnJ5VGhpcyhyZWdleFNlcGFyYXRvcnMuZXhlYyk7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIGZyb21DaGFyQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG52YXIgY2hhckNvZGVBdCA9IHVuY3VycnlUaGlzKCcnLmNoYXJDb2RlQXQpO1xudmFyIGpvaW4gPSB1bmN1cnJ5VGhpcyhbXS5qb2luKTtcbnZhciBwdXNoID0gdW5jdXJyeVRoaXMoW10ucHVzaCk7XG52YXIgcmVwbGFjZSA9IHVuY3VycnlUaGlzKCcnLnJlcGxhY2UpO1xudmFyIHNwbGl0ID0gdW5jdXJyeVRoaXMoJycuc3BsaXQpO1xudmFyIHRvTG93ZXJDYXNlID0gdW5jdXJyeVRoaXMoJycudG9Mb3dlckNhc2UpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgbnVtZXJpYyBjb2RlIHBvaW50cyBvZiBlYWNoIFVuaWNvZGVcbiAqIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLiBXaGlsZSBKYXZhU2NyaXB0IHVzZXMgVUNTLTIgaW50ZXJuYWxseSxcbiAqIHRoaXMgZnVuY3Rpb24gd2lsbCBjb252ZXJ0IGEgcGFpciBvZiBzdXJyb2dhdGUgaGFsdmVzIChlYWNoIG9mIHdoaWNoXG4gKiBVQ1MtMiBleHBvc2VzIGFzIHNlcGFyYXRlIGNoYXJhY3RlcnMpIGludG8gYSBzaW5nbGUgY29kZSBwb2ludCxcbiAqIG1hdGNoaW5nIFVURi0xNi5cbiAqL1xudmFyIHVjczJkZWNvZGUgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHZhciBvdXRwdXQgPSBbXTtcbiAgdmFyIGNvdW50ZXIgPSAwO1xuICB2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcbiAgd2hpbGUgKGNvdW50ZXIgPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBjaGFyQ29kZUF0KHN0cmluZywgY291bnRlcisrKTtcbiAgICBpZiAodmFsdWUgPj0gMHhEODAwICYmIHZhbHVlIDw9IDB4REJGRiAmJiBjb3VudGVyIDwgbGVuZ3RoKSB7XG4gICAgICAvLyBJdCdzIGEgaGlnaCBzdXJyb2dhdGUsIGFuZCB0aGVyZSBpcyBhIG5leHQgY2hhcmFjdGVyLlxuICAgICAgdmFyIGV4dHJhID0gY2hhckNvZGVBdChzdHJpbmcsIGNvdW50ZXIrKyk7XG4gICAgICBpZiAoKGV4dHJhICYgMHhGQzAwKSA9PT0gMHhEQzAwKSB7IC8vIExvdyBzdXJyb2dhdGUuXG4gICAgICAgIHB1c2gob3V0cHV0LCAoKHZhbHVlICYgMHgzRkYpIDw8IDEwKSArIChleHRyYSAmIDB4M0ZGKSArIDB4MTAwMDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSXQncyBhbiB1bm1hdGNoZWQgc3Vycm9nYXRlOyBvbmx5IGFwcGVuZCB0aGlzIGNvZGUgdW5pdCwgaW4gY2FzZSB0aGVcbiAgICAgICAgLy8gbmV4dCBjb2RlIHVuaXQgaXMgdGhlIGhpZ2ggc3Vycm9nYXRlIG9mIGEgc3Vycm9nYXRlIHBhaXIuXG4gICAgICAgIHB1c2gob3V0cHV0LCB2YWx1ZSk7XG4gICAgICAgIGNvdW50ZXItLTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcHVzaChvdXRwdXQsIHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dHB1dDtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSBkaWdpdC9pbnRlZ2VyIGludG8gYSBiYXNpYyBjb2RlIHBvaW50LlxuICovXG52YXIgZGlnaXRUb0Jhc2ljID0gZnVuY3Rpb24gKGRpZ2l0KSB7XG4gIC8vICAwLi4yNSBtYXAgdG8gQVNDSUkgYS4ueiBvciBBLi5aXG4gIC8vIDI2Li4zNSBtYXAgdG8gQVNDSUkgMC4uOVxuICByZXR1cm4gZGlnaXQgKyAyMiArIDc1ICogKGRpZ2l0IDwgMjYpO1xufTtcblxuLyoqXG4gKiBCaWFzIGFkYXB0YXRpb24gZnVuY3Rpb24gYXMgcGVyIHNlY3Rpb24gMy40IG9mIFJGQyAzNDkyLlxuICogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM0OTIjc2VjdGlvbi0zLjRcbiAqL1xudmFyIGFkYXB0ID0gZnVuY3Rpb24gKGRlbHRhLCBudW1Qb2ludHMsIGZpcnN0VGltZSkge1xuICB2YXIgayA9IDA7XG4gIGRlbHRhID0gZmlyc3RUaW1lID8gZmxvb3IoZGVsdGEgLyBkYW1wKSA6IGRlbHRhID4+IDE7XG4gIGRlbHRhICs9IGZsb29yKGRlbHRhIC8gbnVtUG9pbnRzKTtcbiAgd2hpbGUgKGRlbHRhID4gYmFzZU1pbnVzVE1pbiAqIHRNYXggPj4gMSkge1xuICAgIGRlbHRhID0gZmxvb3IoZGVsdGEgLyBiYXNlTWludXNUTWluKTtcbiAgICBrICs9IGJhc2U7XG4gIH1cbiAgcmV0dXJuIGZsb29yKGsgKyAoYmFzZU1pbnVzVE1pbiArIDEpICogZGVsdGEgLyAoZGVsdGEgKyBza2V3KSk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scyAoZS5nLiBhIGRvbWFpbiBuYW1lIGxhYmVsKSB0byBhXG4gKiBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzLlxuICovXG52YXIgZW5jb2RlID0gZnVuY3Rpb24gKGlucHV0KSB7XG4gIHZhciBvdXRwdXQgPSBbXTtcblxuICAvLyBDb252ZXJ0IHRoZSBpbnB1dCBpbiBVQ1MtMiB0byBhbiBhcnJheSBvZiBVbmljb2RlIGNvZGUgcG9pbnRzLlxuICBpbnB1dCA9IHVjczJkZWNvZGUoaW5wdXQpO1xuXG4gIC8vIENhY2hlIHRoZSBsZW5ndGguXG4gIHZhciBpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aDtcblxuICAvLyBJbml0aWFsaXplIHRoZSBzdGF0ZS5cbiAgdmFyIG4gPSBpbml0aWFsTjtcbiAgdmFyIGRlbHRhID0gMDtcbiAgdmFyIGJpYXMgPSBpbml0aWFsQmlhcztcbiAgdmFyIGksIGN1cnJlbnRWYWx1ZTtcblxuICAvLyBIYW5kbGUgdGhlIGJhc2ljIGNvZGUgcG9pbnRzLlxuICBmb3IgKGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICBjdXJyZW50VmFsdWUgPSBpbnB1dFtpXTtcbiAgICBpZiAoY3VycmVudFZhbHVlIDwgMHg4MCkge1xuICAgICAgcHVzaChvdXRwdXQsIGZyb21DaGFyQ29kZShjdXJyZW50VmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICB2YXIgYmFzaWNMZW5ndGggPSBvdXRwdXQubGVuZ3RoOyAvLyBudW1iZXIgb2YgYmFzaWMgY29kZSBwb2ludHMuXG4gIHZhciBoYW5kbGVkQ1BDb3VudCA9IGJhc2ljTGVuZ3RoOyAvLyBudW1iZXIgb2YgY29kZSBwb2ludHMgdGhhdCBoYXZlIGJlZW4gaGFuZGxlZDtcblxuICAvLyBGaW5pc2ggdGhlIGJhc2ljIHN0cmluZyB3aXRoIGEgZGVsaW1pdGVyIHVubGVzcyBpdCdzIGVtcHR5LlxuICBpZiAoYmFzaWNMZW5ndGgpIHtcbiAgICBwdXNoKG91dHB1dCwgZGVsaW1pdGVyKTtcbiAgfVxuXG4gIC8vIE1haW4gZW5jb2RpbmcgbG9vcDpcbiAgd2hpbGUgKGhhbmRsZWRDUENvdW50IDwgaW5wdXRMZW5ndGgpIHtcbiAgICAvLyBBbGwgbm9uLWJhc2ljIGNvZGUgcG9pbnRzIDwgbiBoYXZlIGJlZW4gaGFuZGxlZCBhbHJlYWR5LiBGaW5kIHRoZSBuZXh0IGxhcmdlciBvbmU6XG4gICAgdmFyIG0gPSBtYXhJbnQ7XG4gICAgZm9yIChpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjdXJyZW50VmFsdWUgPSBpbnB1dFtpXTtcbiAgICAgIGlmIChjdXJyZW50VmFsdWUgPj0gbiAmJiBjdXJyZW50VmFsdWUgPCBtKSB7XG4gICAgICAgIG0gPSBjdXJyZW50VmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSW5jcmVhc2UgYGRlbHRhYCBlbm91Z2ggdG8gYWR2YW5jZSB0aGUgZGVjb2RlcidzIDxuLGk+IHN0YXRlIHRvIDxtLDA+LCBidXQgZ3VhcmQgYWdhaW5zdCBvdmVyZmxvdy5cbiAgICB2YXIgaGFuZGxlZENQQ291bnRQbHVzT25lID0gaGFuZGxlZENQQ291bnQgKyAxO1xuICAgIGlmIChtIC0gbiA+IGZsb29yKChtYXhJbnQgLSBkZWx0YSkgLyBoYW5kbGVkQ1BDb3VudFBsdXNPbmUpKSB7XG4gICAgICB0aHJvdyBuZXcgJFJhbmdlRXJyb3IoT1ZFUkZMT1dfRVJST1IpO1xuICAgIH1cblxuICAgIGRlbHRhICs9IChtIC0gbikgKiBoYW5kbGVkQ1BDb3VudFBsdXNPbmU7XG4gICAgbiA9IG07XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGN1cnJlbnRWYWx1ZSA9IGlucHV0W2ldO1xuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSA8IG4gJiYgKytkZWx0YSA+IG1heEludCkge1xuICAgICAgICB0aHJvdyBuZXcgJFJhbmdlRXJyb3IoT1ZFUkZMT1dfRVJST1IpO1xuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PT0gbikge1xuICAgICAgICAvLyBSZXByZXNlbnQgZGVsdGEgYXMgYSBnZW5lcmFsaXplZCB2YXJpYWJsZS1sZW5ndGggaW50ZWdlci5cbiAgICAgICAgdmFyIHEgPSBkZWx0YTtcbiAgICAgICAgdmFyIGsgPSBiYXNlO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgIHZhciB0ID0gayA8PSBiaWFzID8gdE1pbiA6IGsgPj0gYmlhcyArIHRNYXggPyB0TWF4IDogayAtIGJpYXM7XG4gICAgICAgICAgaWYgKHEgPCB0KSBicmVhaztcbiAgICAgICAgICB2YXIgcU1pbnVzVCA9IHEgLSB0O1xuICAgICAgICAgIHZhciBiYXNlTWludXNUID0gYmFzZSAtIHQ7XG4gICAgICAgICAgcHVzaChvdXRwdXQsIGZyb21DaGFyQ29kZShkaWdpdFRvQmFzaWModCArIHFNaW51c1QgJSBiYXNlTWludXNUKSkpO1xuICAgICAgICAgIHEgPSBmbG9vcihxTWludXNUIC8gYmFzZU1pbnVzVCk7XG4gICAgICAgICAgayArPSBiYXNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVzaChvdXRwdXQsIGZyb21DaGFyQ29kZShkaWdpdFRvQmFzaWMocSkpKTtcbiAgICAgICAgYmlhcyA9IGFkYXB0KGRlbHRhLCBoYW5kbGVkQ1BDb3VudFBsdXNPbmUsIGhhbmRsZWRDUENvdW50ID09PSBiYXNpY0xlbmd0aCk7XG4gICAgICAgIGRlbHRhID0gMDtcbiAgICAgICAgaGFuZGxlZENQQ291bnQrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkZWx0YSsrO1xuICAgIG4rKztcbiAgfVxuICByZXR1cm4gam9pbihvdXRwdXQsICcnKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGlucHV0KSB7XG4gIHZhciBlbmNvZGVkID0gW107XG4gIHZhciBsYWJlbHMgPSBzcGxpdChyZXBsYWNlKHRvTG93ZXJDYXNlKGlucHV0KSwgcmVnZXhTZXBhcmF0b3JzLCAnXFx1MDAyRScpLCAnLicpO1xuICB2YXIgaSwgbGFiZWw7XG4gIGZvciAoaSA9IDA7IGkgPCBsYWJlbHMubGVuZ3RoOyBpKyspIHtcbiAgICBsYWJlbCA9IGxhYmVsc1tpXTtcbiAgICBwdXNoKGVuY29kZWQsIGV4ZWMocmVnZXhOb25BU0NJSSwgbGFiZWwpID8gJ3huLS0nICsgZW5jb2RlKGxhYmVsKSA6IGxhYmVsKTtcbiAgfVxuICByZXR1cm4gam9pbihlbmNvZGVkLCAnLicpO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIGVzL25vLXN5bWJvbCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZyAqL1xudmFyIFY4X1ZFUlNJT04gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQtdjgtdmVyc2lvbicpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xuXG52YXIgJFN0cmluZyA9IGdsb2JhbFRoaXMuU3RyaW5nO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5c3ltYm9scyAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xubW9kdWxlLmV4cG9ydHMgPSAhIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN5bWJvbCA9IFN5bWJvbCgnc3ltYm9sIGRldGVjdGlvbicpO1xuICAvLyBDaHJvbWUgMzggU3ltYm9sIGhhcyBpbmNvcnJlY3QgdG9TdHJpbmcgY29udmVyc2lvblxuICAvLyBgZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzYCBwb2x5ZmlsbCBzeW1ib2xzIGNvbnZlcnRlZCB0byBvYmplY3QgYXJlIG5vdCBTeW1ib2wgaW5zdGFuY2VzXG4gIC8vIG5iOiBEbyBub3QgY2FsbCBgU3RyaW5nYCBkaXJlY3RseSB0byBhdm9pZCB0aGlzIGJlaW5nIG9wdGltaXplZCBvdXQgdG8gYHN5bWJvbCsnJ2Agd2hpY2ggd2lsbCxcbiAgLy8gb2YgY291cnNlLCBmYWlsLlxuICByZXR1cm4gISRTdHJpbmcoc3ltYm9sKSB8fCAhKE9iamVjdChzeW1ib2wpIGluc3RhbmNlb2YgU3ltYm9sKSB8fFxuICAgIC8vIENocm9tZSAzOC00MCBzeW1ib2xzIGFyZSBub3QgaW5oZXJpdGVkIGZyb20gRE9NIGNvbGxlY3Rpb25zIHByb3RvdHlwZXMgdG8gaW5zdGFuY2VzXG4gICAgIVN5bWJvbC5zaGFtICYmIFY4X1ZFUlNJT04gJiYgVjhfVkVSU0lPTiA8IDQxO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGFwcGx5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWFwcGx5Jyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGh0bWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaHRtbCcpO1xudmFyIGFycmF5U2xpY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc2xpY2UnKTtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG52YXIgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdmFsaWRhdGUtYXJndW1lbnRzLWxlbmd0aCcpO1xudmFyIElTX0lPUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC1pcy1pb3MnKTtcbnZhciBJU19OT0RFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50LWlzLW5vZGUnKTtcblxudmFyIHNldCA9IGdsb2JhbFRoaXMuc2V0SW1tZWRpYXRlO1xudmFyIGNsZWFyID0gZ2xvYmFsVGhpcy5jbGVhckltbWVkaWF0ZTtcbnZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xudmFyIERpc3BhdGNoID0gZ2xvYmFsVGhpcy5EaXNwYXRjaDtcbnZhciBGdW5jdGlvbiA9IGdsb2JhbFRoaXMuRnVuY3Rpb247XG52YXIgTWVzc2FnZUNoYW5uZWwgPSBnbG9iYWxUaGlzLk1lc3NhZ2VDaGFubmVsO1xudmFyIFN0cmluZyA9IGdsb2JhbFRoaXMuU3RyaW5nO1xudmFyIGNvdW50ZXIgPSAwO1xudmFyIHF1ZXVlID0ge307XG52YXIgT05SRUFEWVNUQVRFQ0hBTkdFID0gJ29ucmVhZHlzdGF0ZWNoYW5nZSc7XG52YXIgJGxvY2F0aW9uLCBkZWZlciwgY2hhbm5lbCwgcG9ydDtcblxuZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBEZW5vIHRocm93cyBhIFJlZmVyZW5jZUVycm9yIG9uIGBsb2NhdGlvbmAgYWNjZXNzIHdpdGhvdXQgYC0tbG9jYXRpb25gIGZsYWdcbiAgJGxvY2F0aW9uID0gZ2xvYmFsVGhpcy5sb2NhdGlvbjtcbn0pO1xuXG52YXIgcnVuID0gZnVuY3Rpb24gKGlkKSB7XG4gIGlmIChoYXNPd24ocXVldWUsIGlkKSkge1xuICAgIHZhciBmbiA9IHF1ZXVlW2lkXTtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICAgIGZuKCk7XG4gIH1cbn07XG5cbnZhciBydW5uZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBydW4oaWQpO1xuICB9O1xufTtcblxudmFyIGV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgcnVuKGV2ZW50LmRhdGEpO1xufTtcblxudmFyIGdsb2JhbFBvc3RNZXNzYWdlRGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgLy8gb2xkIGVuZ2luZXMgaGF2ZSBub3QgbG9jYXRpb24ub3JpZ2luXG4gIGdsb2JhbFRoaXMucG9zdE1lc3NhZ2UoU3RyaW5nKGlkKSwgJGxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArICRsb2NhdGlvbi5ob3N0KTtcbn07XG5cbi8vIE5vZGUuanMgMC45KyAmIElFMTArIGhhcyBzZXRJbW1lZGlhdGUsIG90aGVyd2lzZTpcbmlmICghc2V0IHx8ICFjbGVhcikge1xuICBzZXQgPSBmdW5jdGlvbiBzZXRJbW1lZGlhdGUoaGFuZGxlcikge1xuICAgIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDEpO1xuICAgIHZhciBmbiA9IGlzQ2FsbGFibGUoaGFuZGxlcikgPyBoYW5kbGVyIDogRnVuY3Rpb24oaGFuZGxlcik7XG4gICAgdmFyIGFyZ3MgPSBhcnJheVNsaWNlKGFyZ3VtZW50cywgMSk7XG4gICAgcXVldWVbKytjb3VudGVyXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwcGx5KGZuLCB1bmRlZmluZWQsIGFyZ3MpO1xuICAgIH07XG4gICAgZGVmZXIoY291bnRlcik7XG4gICAgcmV0dXJuIGNvdW50ZXI7XG4gIH07XG4gIGNsZWFyID0gZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaWQpIHtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICB9O1xuICAvLyBOb2RlLmpzIDAuOC1cbiAgaWYgKElTX05PREUpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhydW5uZXIoaWQpKTtcbiAgICB9O1xuICAvLyBTcGhlcmUgKEpTIGdhbWUgZW5naW5lKSBEaXNwYXRjaCBBUElcbiAgfSBlbHNlIGlmIChEaXNwYXRjaCAmJiBEaXNwYXRjaC5ub3cpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgRGlzcGF0Y2gubm93KHJ1bm5lcihpZCkpO1xuICAgIH07XG4gIC8vIEJyb3dzZXJzIHdpdGggTWVzc2FnZUNoYW5uZWwsIGluY2x1ZGVzIFdlYldvcmtlcnNcbiAgLy8gZXhjZXB0IGlPUyAtIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy82MjRcbiAgfSBlbHNlIGlmIChNZXNzYWdlQ2hhbm5lbCAmJiAhSVNfSU9TKSB7XG4gICAgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xuICAgIHBvcnQgPSBjaGFubmVsLnBvcnQyO1xuICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gZXZlbnRMaXN0ZW5lcjtcbiAgICBkZWZlciA9IGJpbmQocG9ydC5wb3N0TWVzc2FnZSwgcG9ydCk7XG4gIC8vIEJyb3dzZXJzIHdpdGggcG9zdE1lc3NhZ2UsIHNraXAgV2ViV29ya2Vyc1xuICAvLyBJRTggaGFzIHBvc3RNZXNzYWdlLCBidXQgaXQncyBzeW5jICYgdHlwZW9mIGl0cyBwb3N0TWVzc2FnZSBpcyAnb2JqZWN0J1xuICB9IGVsc2UgaWYgKFxuICAgIGdsb2JhbFRoaXMuYWRkRXZlbnRMaXN0ZW5lciAmJlxuICAgIGlzQ2FsbGFibGUoZ2xvYmFsVGhpcy5wb3N0TWVzc2FnZSkgJiZcbiAgICAhZ2xvYmFsVGhpcy5pbXBvcnRTY3JpcHRzICYmXG4gICAgJGxvY2F0aW9uICYmICRsb2NhdGlvbi5wcm90b2NvbCAhPT0gJ2ZpbGU6JyAmJlxuICAgICFmYWlscyhnbG9iYWxQb3N0TWVzc2FnZURlZmVyKVxuICApIHtcbiAgICBkZWZlciA9IGdsb2JhbFBvc3RNZXNzYWdlRGVmZXI7XG4gICAgZ2xvYmFsVGhpcy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnRMaXN0ZW5lciwgZmFsc2UpO1xuICAvLyBJRTgtXG4gIH0gZWxzZSBpZiAoT05SRUFEWVNUQVRFQ0hBTkdFIGluIGNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpKSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIGh0bWwuYXBwZW5kQ2hpbGQoY3JlYXRlRWxlbWVudCgnc2NyaXB0JykpW09OUkVBRFlTVEFURUNIQU5HRV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGh0bWwucmVtb3ZlQ2hpbGQodGhpcyk7XG4gICAgICAgIHJ1bihpZCk7XG4gICAgICB9O1xuICAgIH07XG4gIC8vIFJlc3Qgb2xkIGJyb3dzZXJzXG4gIH0gZWxzZSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIHNldFRpbWVvdXQocnVubmVyKGlkKSwgMCk7XG4gICAgfTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBzZXQsXG4gIGNsZWFyOiBjbGVhclxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcblxudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBIZWxwZXIgZm9yIGEgcG9wdWxhciByZXBlYXRpbmcgY2FzZSBvZiB0aGUgc3BlYzpcbi8vIExldCBpbnRlZ2VyIGJlID8gVG9JbnRlZ2VyKGluZGV4KS5cbi8vIElmIGludGVnZXIgPCAwLCBsZXQgcmVzdWx0IGJlIG1heCgobGVuZ3RoICsgaW50ZWdlciksIDApOyBlbHNlIGxldCByZXN1bHQgYmUgbWluKGludGVnZXIsIGxlbmd0aCkuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIHZhciBpbnRlZ2VyID0gdG9JbnRlZ2VyT3JJbmZpbml0eShpbmRleCk7XG4gIHJldHVybiBpbnRlZ2VyIDwgMCA/IG1heChpbnRlZ2VyICsgbGVuZ3RoLCAwKSA6IG1pbihpbnRlZ2VyLCBsZW5ndGgpO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJbmRleGVkT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoaXQpKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdHJ1bmMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWF0aC10cnVuYycpO1xuXG4vLyBgVG9JbnRlZ2VyT3JJbmZpbml0eWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvaW50ZWdlcm9yaW5maW5pdHlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBudW1iZXIgPSArYXJndW1lbnQ7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gIHJldHVybiBudW1iZXIgIT09IG51bWJlciB8fCBudW1iZXIgPT09IDAgPyAwIDogdHJ1bmMobnVtYmVyKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG5cbnZhciBtaW4gPSBNYXRoLm1pbjtcblxuLy8gYFRvTGVuZ3RoYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9sZW5ndGhcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBsZW4gPSB0b0ludGVnZXJPckluZmluaXR5KGFyZ3VtZW50KTtcbiAgcmV0dXJuIGxlbiA+IDAgPyBtaW4obGVuLCAweDFGRkZGRkZGRkZGRkZGKSA6IDA7IC8vIDIgKiogNTMgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG5cbi8vIGBUb09iamVjdGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvb2JqZWN0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gJE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG52YXIgb3JkaW5hcnlUb1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vcmRpbmFyeS10by1wcmltaXRpdmUnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG52YXIgVE9fUFJJTUlUSVZFID0gd2VsbEtub3duU3ltYm9sKCd0b1ByaW1pdGl2ZScpO1xuXG4vLyBgVG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b3ByaW1pdGl2ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5wdXQsIHByZWYpIHtcbiAgaWYgKCFpc09iamVjdChpbnB1dCkgfHwgaXNTeW1ib2woaW5wdXQpKSByZXR1cm4gaW5wdXQ7XG4gIHZhciBleG90aWNUb1ByaW0gPSBnZXRNZXRob2QoaW5wdXQsIFRPX1BSSU1JVElWRSk7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChleG90aWNUb1ByaW0pIHtcbiAgICBpZiAocHJlZiA9PT0gdW5kZWZpbmVkKSBwcmVmID0gJ2RlZmF1bHQnO1xuICAgIHJlc3VsdCA9IGNhbGwoZXhvdGljVG9QcmltLCBpbnB1dCwgcHJlZik7XG4gICAgaWYgKCFpc09iamVjdChyZXN1bHQpIHx8IGlzU3ltYm9sKHJlc3VsdCkpIHJldHVybiByZXN1bHQ7XG4gICAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG4gIH1cbiAgaWYgKHByZWYgPT09IHVuZGVmaW5lZCkgcHJlZiA9ICdudW1iZXInO1xuICByZXR1cm4gb3JkaW5hcnlUb1ByaW1pdGl2ZShpbnB1dCwgcHJlZik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByaW1pdGl2ZScpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xuXG4vLyBgVG9Qcm9wZXJ0eUtleWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJvcGVydHlrZXlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBrZXkgPSB0b1ByaW1pdGl2ZShhcmd1bWVudCwgJ3N0cmluZycpO1xuICByZXR1cm4gaXNTeW1ib2woa2V5KSA/IGtleSA6IGtleSArICcnO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG52YXIgdGVzdCA9IHt9O1xuXG50ZXN0W1RPX1NUUklOR19UQUddID0gJ3onO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN0cmluZyh0ZXN0KSA9PT0gJ1tvYmplY3Qgel0nO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZicpO1xuXG52YXIgJFN0cmluZyA9IFN0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGNsYXNzb2YoYXJndW1lbnQpID09PSAnU3ltYm9sJykgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNvbnZlcnQgYSBTeW1ib2wgdmFsdWUgdG8gYSBzdHJpbmcnKTtcbiAgcmV0dXJuICRTdHJpbmcoYXJndW1lbnQpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkU3RyaW5nID0gU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB0cnkge1xuICAgIHJldHVybiAkU3RyaW5nKGFyZ3VtZW50KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gJ09iamVjdCc7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbnZhciBpZCA9IDA7XG52YXIgcG9zdGZpeCA9IE1hdGgucmFuZG9tKCk7XG52YXIgdG9TdHJpbmcgPSB1bmN1cnJ5VGhpcygxLjAudG9TdHJpbmcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuICdTeW1ib2woJyArIChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5KSArICcpXycgKyB0b1N0cmluZygrK2lkICsgcG9zdGZpeCwgMzYpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG5cbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9yZWxhdGl2ZS11cmwtc3R5bGUgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgdmFyIHVybCA9IG5ldyBVUkwoJ2I/YT0xJmI9MiZjPTMnLCAnaHR0cHM6Ly9hJyk7XG4gIHZhciBwYXJhbXMgPSB1cmwuc2VhcmNoUGFyYW1zO1xuICB2YXIgcGFyYW1zMiA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoJ2E9MSZhPTImYj0zJyk7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgdXJsLnBhdGhuYW1lID0gJ2MlMjBkJztcbiAgcGFyYW1zLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICBwYXJhbXNbJ2RlbGV0ZSddKCdiJyk7XG4gICAgcmVzdWx0ICs9IGtleSArIHZhbHVlO1xuICB9KTtcbiAgcGFyYW1zMlsnZGVsZXRlJ10oJ2EnLCAyKTtcbiAgLy8gYHVuZGVmaW5lZGAgY2FzZSBpcyBhIENocm9taXVtIDExNyBidWdcbiAgLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MTQyMjJcbiAgcGFyYW1zMlsnZGVsZXRlJ10oJ2InLCB1bmRlZmluZWQpO1xuICByZXR1cm4gKElTX1BVUkUgJiYgKCF1cmwudG9KU09OIHx8ICFwYXJhbXMyLmhhcygnYScsIDEpIHx8IHBhcmFtczIuaGFzKCdhJywgMikgfHwgIXBhcmFtczIuaGFzKCdhJywgdW5kZWZpbmVkKSB8fCBwYXJhbXMyLmhhcygnYicpKSlcbiAgICB8fCAoIXBhcmFtcy5zaXplICYmIChJU19QVVJFIHx8ICFERVNDUklQVE9SUykpXG4gICAgfHwgIXBhcmFtcy5zb3J0XG4gICAgfHwgdXJsLmhyZWYgIT09ICdodHRwczovL2EvYyUyMGQ/YT0xJmM9MydcbiAgICB8fCBwYXJhbXMuZ2V0KCdjJykgIT09ICczJ1xuICAgIHx8IFN0cmluZyhuZXcgVVJMU2VhcmNoUGFyYW1zKCc/YT0xJykpICE9PSAnYT0xJ1xuICAgIHx8ICFwYXJhbXNbSVRFUkFUT1JdXG4gICAgLy8gdGhyb3dzIGluIEVkZ2VcbiAgICB8fCBuZXcgVVJMKCdodHRwczovL2FAYicpLnVzZXJuYW1lICE9PSAnYSdcbiAgICB8fCBuZXcgVVJMU2VhcmNoUGFyYW1zKG5ldyBVUkxTZWFyY2hQYXJhbXMoJ2E9YicpKS5nZXQoJ2EnKSAhPT0gJ2InXG4gICAgLy8gbm90IHB1bnljb2RlZCBpbiBFZGdlXG4gICAgfHwgbmV3IFVSTCgnaHR0cHM6Ly/RgtC10YHRgicpLmhvc3QgIT09ICd4bi0tZTFheWJjJ1xuICAgIC8vIG5vdCBlc2NhcGVkIGluIENocm9tZSA2Mi1cbiAgICB8fCBuZXcgVVJMKCdodHRwczovL2Ej0LEnKS5oYXNoICE9PSAnIyVEMCVCMSdcbiAgICAvLyBmYWlscyBpbiBDaHJvbWUgNjYtXG4gICAgfHwgcmVzdWx0ICE9PSAnYTFjMydcbiAgICAvLyB0aHJvd3MgaW4gU2FmYXJpXG4gICAgfHwgbmV3IFVSTCgnaHR0cHM6Ly94JywgdW5kZWZpbmVkKS5ob3N0ICE9PSAneCc7XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIGVzL25vLXN5bWJvbCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZyAqL1xudmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9TWU1CT0wgJiZcbiAgIVN5bWJvbC5zaGFtICYmXG4gIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT0gJ3N5bWJvbCc7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG4vLyBWOCB+IENocm9tZSAzNi1cbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMzMzRcbm1vZHVsZS5leHBvcnRzID0gREVTQ1JJUFRPUlMgJiYgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCAncHJvdG90eXBlJywge1xuICAgIHZhbHVlOiA0MixcbiAgICB3cml0YWJsZTogZmFsc2VcbiAgfSkucHJvdG90eXBlICE9PSA0Mjtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHBhc3NlZCwgcmVxdWlyZWQpIHtcbiAgaWYgKHBhc3NlZCA8IHJlcXVpcmVkKSB0aHJvdyBuZXcgJFR5cGVFcnJvcignTm90IGVub3VnaCBhcmd1bWVudHMnKTtcbiAgcmV0dXJuIHBhc3NlZDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxudmFyIFdlYWtNYXAgPSBnbG9iYWxUaGlzLldlYWtNYXA7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNDYWxsYWJsZShXZWFrTWFwKSAmJiAvbmF0aXZlIGNvZGUvLnRlc3QoU3RyaW5nKFdlYWtNYXApKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xudmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpO1xudmFyIFVTRV9TWU1CT0xfQVNfVUlEID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkJyk7XG5cbnZhciBTeW1ib2wgPSBnbG9iYWxUaGlzLlN5bWJvbDtcbnZhciBXZWxsS25vd25TeW1ib2xzU3RvcmUgPSBzaGFyZWQoJ3drcycpO1xudmFyIGNyZWF0ZVdlbGxLbm93blN5bWJvbCA9IFVTRV9TWU1CT0xfQVNfVUlEID8gU3ltYm9sWydmb3InXSB8fCBTeW1ib2wgOiBTeW1ib2wgJiYgU3ltYm9sLndpdGhvdXRTZXR0ZXIgfHwgdWlkO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIGlmICghaGFzT3duKFdlbGxLbm93blN5bWJvbHNTdG9yZSwgbmFtZSkpIHtcbiAgICBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPSBOQVRJVkVfU1lNQk9MICYmIGhhc093bihTeW1ib2wsIG5hbWUpXG4gICAgICA/IFN5bWJvbFtuYW1lXVxuICAgICAgOiBjcmVhdGVXZWxsS25vd25TeW1ib2woJ1N5bWJvbC4nICsgbmFtZSk7XG4gIH0gcmV0dXJuIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBpc1Byb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZicpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMnKTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBpbnN0YWxsRXJyb3JDYXVzZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnN0YWxsLWVycm9yLWNhdXNlJyk7XG52YXIgaW5zdGFsbEVycm9yU3RhY2sgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXJyb3Itc3RhY2staW5zdGFsbCcpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xudmFyIG5vcm1hbGl6ZVN0cmluZ0FyZ3VtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25vcm1hbGl6ZS1zdHJpbmctYXJndW1lbnQnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG52YXIgJEVycm9yID0gRXJyb3I7XG52YXIgcHVzaCA9IFtdLnB1c2g7XG5cbnZhciAkQWdncmVnYXRlRXJyb3IgPSBmdW5jdGlvbiBBZ2dyZWdhdGVFcnJvcihlcnJvcnMsIG1lc3NhZ2UgLyogLCBvcHRpb25zICovKSB7XG4gIHZhciBpc0luc3RhbmNlID0gaXNQcm90b3R5cGVPZihBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSwgdGhpcyk7XG4gIHZhciB0aGF0O1xuICBpZiAoc2V0UHJvdG90eXBlT2YpIHtcbiAgICB0aGF0ID0gc2V0UHJvdG90eXBlT2YobmV3ICRFcnJvcigpLCBpc0luc3RhbmNlID8gZ2V0UHJvdG90eXBlT2YodGhpcykgOiBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSk7XG4gIH0gZWxzZSB7XG4gICAgdGhhdCA9IGlzSW5zdGFuY2UgPyB0aGlzIDogY3JlYXRlKEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlKTtcbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkodGhhdCwgVE9fU1RSSU5HX1RBRywgJ0Vycm9yJyk7XG4gIH1cbiAgaWYgKG1lc3NhZ2UgIT09IHVuZGVmaW5lZCkgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHRoYXQsICdtZXNzYWdlJywgbm9ybWFsaXplU3RyaW5nQXJndW1lbnQobWVzc2FnZSkpO1xuICBpbnN0YWxsRXJyb3JTdGFjayh0aGF0LCAkQWdncmVnYXRlRXJyb3IsIHRoYXQuc3RhY2ssIDEpO1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIGluc3RhbGxFcnJvckNhdXNlKHRoYXQsIGFyZ3VtZW50c1syXSk7XG4gIHZhciBlcnJvcnNBcnJheSA9IFtdO1xuICBpdGVyYXRlKGVycm9ycywgcHVzaCwgeyB0aGF0OiBlcnJvcnNBcnJheSB9KTtcbiAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHRoYXQsICdlcnJvcnMnLCBlcnJvcnNBcnJheSk7XG4gIHJldHVybiB0aGF0O1xufTtcblxuaWYgKHNldFByb3RvdHlwZU9mKSBzZXRQcm90b3R5cGVPZigkQWdncmVnYXRlRXJyb3IsICRFcnJvcik7XG5lbHNlIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMoJEFnZ3JlZ2F0ZUVycm9yLCAkRXJyb3IsIHsgbmFtZTogdHJ1ZSB9KTtcblxudmFyIEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlID0gJEFnZ3JlZ2F0ZUVycm9yLnByb3RvdHlwZSA9IGNyZWF0ZSgkRXJyb3IucHJvdG90eXBlLCB7XG4gIGNvbnN0cnVjdG9yOiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgJEFnZ3JlZ2F0ZUVycm9yKSxcbiAgbWVzc2FnZTogY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsICcnKSxcbiAgbmFtZTogY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsICdBZ2dyZWdhdGVFcnJvcicpXG59KTtcblxuLy8gYEFnZ3JlZ2F0ZUVycm9yYCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hZ2dyZWdhdGUtZXJyb3ItY29uc3RydWN0b3JcbiQoeyBnbG9iYWw6IHRydWUsIGNvbnN0cnVjdG9yOiB0cnVlLCBhcml0eTogMiB9LCB7XG4gIEFnZ3JlZ2F0ZUVycm9yOiAkQWdncmVnYXRlRXJyb3Jcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIHRoaXMgbW9kdWxlIGZyb20gYGNvcmUtanNANGAgc2luY2UgaXQncyByZXBsYWNlZCB0byBtb2R1bGUgYmVsb3dcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMuYWdncmVnYXRlLWVycm9yLmNvbnN0cnVjdG9yJyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkaW5jbHVkZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMnKS5pbmNsdWRlcztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzJyk7XG5cbi8vIEZGOTkrIGJ1Z1xudmFyIEJST0tFTl9PTl9TUEFSU0UgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1hcnJheS1wcm90b3R5cGUtaW5jbHVkZXMgLS0gZGV0ZWN0aW9uXG4gIHJldHVybiAhQXJyYXkoMSkuaW5jbHVkZXMoKTtcbn0pO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBCUk9LRU5fT05fU1BBUlNFIH0sIHtcbiAgaW5jbHVkZXM6IGZ1bmN0aW9uIGluY2x1ZGVzKGVsIC8qICwgZnJvbUluZGV4ID0gMCAqLykge1xuICAgIHJldHVybiAkaW5jbHVkZXModGhpcywgZWwsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAdW5zY29wYWJsZXNcbmFkZFRvVW5zY29wYWJsZXMoJ2luY2x1ZGVzJyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xudmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKS5mO1xudmFyIGRlZmluZUl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9yLWRlZmluZScpO1xudmFyIGNyZWF0ZUl0ZXJSZXN1bHRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLWl0ZXItcmVzdWx0LW9iamVjdCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG5cbnZhciBBUlJBWV9JVEVSQVRPUiA9ICdBcnJheSBJdGVyYXRvcic7XG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcihBUlJBWV9JVEVSQVRPUik7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZW50cmllc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5lbnRyaWVzXG4vLyBgQXJyYXkucHJvdG90eXBlLmtleXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUua2V5c1xuLy8gYEFycmF5LnByb3RvdHlwZS52YWx1ZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUudmFsdWVzXG4vLyBgQXJyYXkucHJvdG90eXBlW0BAaXRlcmF0b3JdYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAaXRlcmF0b3Jcbi8vIGBDcmVhdGVBcnJheUl0ZXJhdG9yYCBpbnRlcm5hbCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtY3JlYXRlYXJyYXlpdGVyYXRvclxubW9kdWxlLmV4cG9ydHMgPSBkZWZpbmVJdGVyYXRvcihBcnJheSwgJ0FycmF5JywgZnVuY3Rpb24gKGl0ZXJhdGVkLCBraW5kKSB7XG4gIHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgIHR5cGU6IEFSUkFZX0lURVJBVE9SLFxuICAgIHRhcmdldDogdG9JbmRleGVkT2JqZWN0KGl0ZXJhdGVkKSwgLy8gdGFyZ2V0XG4gICAgaW5kZXg6IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gICAga2luZDoga2luZCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBraW5kXG4gIH0pO1xuLy8gYCVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJWFycmF5aXRlcmF0b3Jwcm90b3R5cGUlLm5leHRcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgdmFyIHRhcmdldCA9IHN0YXRlLnRhcmdldDtcbiAgdmFyIGluZGV4ID0gc3RhdGUuaW5kZXgrKztcbiAgaWYgKCF0YXJnZXQgfHwgaW5kZXggPj0gdGFyZ2V0Lmxlbmd0aCkge1xuICAgIHN0YXRlLnRhcmdldCA9IG51bGw7XG4gICAgcmV0dXJuIGNyZWF0ZUl0ZXJSZXN1bHRPYmplY3QodW5kZWZpbmVkLCB0cnVlKTtcbiAgfVxuICBzd2l0Y2ggKHN0YXRlLmtpbmQpIHtcbiAgICBjYXNlICdrZXlzJzogcmV0dXJuIGNyZWF0ZUl0ZXJSZXN1bHRPYmplY3QoaW5kZXgsIGZhbHNlKTtcbiAgICBjYXNlICd2YWx1ZXMnOiByZXR1cm4gY3JlYXRlSXRlclJlc3VsdE9iamVjdCh0YXJnZXRbaW5kZXhdLCBmYWxzZSk7XG4gIH0gcmV0dXJuIGNyZWF0ZUl0ZXJSZXN1bHRPYmplY3QoW2luZGV4LCB0YXJnZXRbaW5kZXhdXSwgZmFsc2UpO1xufSwgJ3ZhbHVlcycpO1xuXG4vLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyVcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtY3JlYXRldW5tYXBwZWRhcmd1bWVudHNvYmplY3Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtY3JlYXRlbWFwcGVkYXJndW1lbnRzb2JqZWN0XG52YXIgdmFsdWVzID0gSXRlcmF0b3JzLkFyZ3VtZW50cyA9IEl0ZXJhdG9ycy5BcnJheTtcblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEB1bnNjb3BhYmxlc1xuYWRkVG9VbnNjb3BhYmxlcygna2V5cycpO1xuYWRkVG9VbnNjb3BhYmxlcygndmFsdWVzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCdlbnRyaWVzJyk7XG5cbi8vIFY4IH4gQ2hyb21lIDQ1LSBidWdcbmlmICghSVNfUFVSRSAmJiBERVNDUklQVE9SUyAmJiB2YWx1ZXMubmFtZSAhPT0gJ3ZhbHVlcycpIHRyeSB7XG4gIGRlZmluZVByb3BlcnR5KHZhbHVlcywgJ25hbWUnLCB7IHZhbHVlOiAndmFsdWVzJyB9KTtcbn0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtYXNzaWduJyk7XG5cbi8vIGBPYmplY3QuYXNzaWduYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmFzc2lnblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1hc3NpZ24gLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBhcml0eTogMiwgZm9yY2VkOiBPYmplY3QuYXNzaWduICE9PSBhc3NpZ24gfSwge1xuICBhc3NpZ246IGFzc2lnblxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgVE9fU1RSSU5HX1RBR19TVVBQT1JUID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZy10YWctc3VwcG9ydCcpO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXRvLXN0cmluZycpO1xuXG4vLyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmdcbmlmICghVE9fU1RSSU5HX1RBR19TVVBQT1JUKSB7XG4gIGRlZmluZUJ1aWx0SW4oT2JqZWN0LnByb3RvdHlwZSwgJ3RvU3RyaW5nJywgdG9TdHJpbmcsIHsgdW5zYWZlOiB0cnVlIH0pO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wZXJmb3JtJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG52YXIgUFJPTUlTRV9TVEFUSUNTX0lOQ09SUkVDVF9JVEVSQVRJT04gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1zdGF0aWNzLWluY29ycmVjdC1pdGVyYXRpb24nKTtcblxuLy8gYFByb21pc2UuYWxsU2V0dGxlZGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UuYWxsc2V0dGxlZFxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IFBST01JU0VfU1RBVElDU19JTkNPUlJFQ1RfSVRFUkFUSU9OIH0sIHtcbiAgYWxsU2V0dGxlZDogZnVuY3Rpb24gYWxsU2V0dGxlZChpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYoQyk7XG4gICAgdmFyIHJlc29sdmUgPSBjYXBhYmlsaXR5LnJlc29sdmU7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBwcm9taXNlUmVzb2x2ZSA9IGFDYWxsYWJsZShDLnJlc29sdmUpO1xuICAgICAgdmFyIHZhbHVlcyA9IFtdO1xuICAgICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgICAgdmFyIHJlbWFpbmluZyA9IDE7XG4gICAgICBpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICB2YXIgaW5kZXggPSBjb3VudGVyKys7XG4gICAgICAgIHZhciBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICBjYWxsKHByb21pc2VSZXNvbHZlLCBDLCBwcm9taXNlKS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIGlmIChhbHJlYWR5Q2FsbGVkKSByZXR1cm47XG4gICAgICAgICAgYWxyZWFkeUNhbGxlZCA9IHRydWU7XG4gICAgICAgICAgdmFsdWVzW2luZGV4XSA9IHsgc3RhdHVzOiAnZnVsZmlsbGVkJywgdmFsdWU6IHZhbHVlIH07XG4gICAgICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlc1tpbmRleF0gPSB7IHN0YXR1czogJ3JlamVjdGVkJywgcmVhc29uOiBlcnJvciB9O1xuICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICB9KTtcbiAgICBpZiAocmVzdWx0LmVycm9yKSByZWplY3QocmVzdWx0LnZhbHVlKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcGVyZm9ybScpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xudmFyIFBST01JU0VfU1RBVElDU19JTkNPUlJFQ1RfSVRFUkFUSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2Utc3RhdGljcy1pbmNvcnJlY3QtaXRlcmF0aW9uJyk7XG5cbi8vIGBQcm9taXNlLmFsbGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UuYWxsXG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHN0YXQ6IHRydWUsIGZvcmNlZDogUFJPTUlTRV9TVEFUSUNTX0lOQ09SUkVDVF9JVEVSQVRJT04gfSwge1xuICBhbGw6IGZ1bmN0aW9uIGFsbChpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYoQyk7XG4gICAgdmFyIHJlc29sdmUgPSBjYXBhYmlsaXR5LnJlc29sdmU7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciAkcHJvbWlzZVJlc29sdmUgPSBhQ2FsbGFibGUoQy5yZXNvbHZlKTtcbiAgICAgIHZhciB2YWx1ZXMgPSBbXTtcbiAgICAgIHZhciBjb3VudGVyID0gMDtcbiAgICAgIHZhciByZW1haW5pbmcgPSAxO1xuICAgICAgaXRlcmF0ZShpdGVyYWJsZSwgZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gY291bnRlcisrO1xuICAgICAgICB2YXIgYWxyZWFkeUNhbGxlZCA9IGZhbHNlO1xuICAgICAgICByZW1haW5pbmcrKztcbiAgICAgICAgY2FsbCgkcHJvbWlzZVJlc29sdmUsIEMsIHByb21pc2UpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKGFscmVhZHlDYWxsZWQpIHJldHVybjtcbiAgICAgICAgICBhbHJlYWR5Q2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgICB2YWx1ZXNbaW5kZXhdID0gdmFsdWU7XG4gICAgICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgICAgICB9LCByZWplY3QpO1xuICAgICAgfSk7XG4gICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lcnJvcikgcmVqZWN0KHJlc3VsdC52YWx1ZSk7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcGVyZm9ybScpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xudmFyIFBST01JU0VfU1RBVElDU19JTkNPUlJFQ1RfSVRFUkFUSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2Utc3RhdGljcy1pbmNvcnJlY3QtaXRlcmF0aW9uJyk7XG5cbnZhciBQUk9NSVNFX0FOWV9FUlJPUiA9ICdObyBvbmUgcHJvbWlzZSByZXNvbHZlZCc7XG5cbi8vIGBQcm9taXNlLmFueWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UuYW55XG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHN0YXQ6IHRydWUsIGZvcmNlZDogUFJPTUlTRV9TVEFUSUNTX0lOQ09SUkVDVF9JVEVSQVRJT04gfSwge1xuICBhbnk6IGZ1bmN0aW9uIGFueShpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgQWdncmVnYXRlRXJyb3IgPSBnZXRCdWlsdEluKCdBZ2dyZWdhdGVFcnJvcicpO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZihDKTtcbiAgICB2YXIgcmVzb2x2ZSA9IGNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHByb21pc2VSZXNvbHZlID0gYUNhbGxhYmxlKEMucmVzb2x2ZSk7XG4gICAgICB2YXIgZXJyb3JzID0gW107XG4gICAgICB2YXIgY291bnRlciA9IDA7XG4gICAgICB2YXIgcmVtYWluaW5nID0gMTtcbiAgICAgIHZhciBhbHJlYWR5UmVzb2x2ZWQgPSBmYWxzZTtcbiAgICAgIGl0ZXJhdGUoaXRlcmFibGUsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGNvdW50ZXIrKztcbiAgICAgICAgdmFyIGFscmVhZHlSZWplY3RlZCA9IGZhbHNlO1xuICAgICAgICByZW1haW5pbmcrKztcbiAgICAgICAgY2FsbChwcm9taXNlUmVzb2x2ZSwgQywgcHJvbWlzZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeVJlamVjdGVkIHx8IGFscmVhZHlSZXNvbHZlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlSZXNvbHZlZCA9IHRydWU7XG4gICAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIGlmIChhbHJlYWR5UmVqZWN0ZWQgfHwgYWxyZWFkeVJlc29sdmVkKSByZXR1cm47XG4gICAgICAgICAgYWxyZWFkeVJlamVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICBlcnJvcnNbaW5kZXhdID0gZXJyb3I7XG4gICAgICAgICAgLS1yZW1haW5pbmcgfHwgcmVqZWN0KG5ldyBBZ2dyZWdhdGVFcnJvcihlcnJvcnMsIFBST01JU0VfQU5ZX0VSUk9SKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICAtLXJlbWFpbmluZyB8fCByZWplY3QobmV3IEFnZ3JlZ2F0ZUVycm9yKGVycm9ycywgUFJPTUlTRV9BTllfRVJST1IpKTtcbiAgICB9KTtcbiAgICBpZiAocmVzdWx0LmVycm9yKSByZWplY3QocmVzdWx0LnZhbHVlKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtY29uc3RydWN0b3ItZGV0ZWN0aW9uJykuQ09OU1RSVUNUT1I7XG52YXIgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtbmF0aXZlLWNvbnN0cnVjdG9yJyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgZGVmaW5lQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4nKTtcblxudmFyIE5hdGl2ZVByb21pc2VQcm90b3R5cGUgPSBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgJiYgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yLnByb3RvdHlwZTtcblxuLy8gYFByb21pc2UucHJvdG90eXBlLmNhdGNoYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5wcm90b3R5cGUuY2F0Y2hcbiQoeyB0YXJnZXQ6ICdQcm9taXNlJywgcHJvdG86IHRydWUsIGZvcmNlZDogRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IsIHJlYWw6IHRydWUgfSwge1xuICAnY2F0Y2gnOiBmdW5jdGlvbiAob25SZWplY3RlZCkge1xuICAgIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBvblJlamVjdGVkKTtcbiAgfVxufSk7XG5cbi8vIG1ha2VzIHN1cmUgdGhhdCBuYXRpdmUgcHJvbWlzZS1iYXNlZCBBUElzIGBQcm9taXNlI2NhdGNoYCBwcm9wZXJseSB3b3JrcyB3aXRoIHBhdGNoZWQgYFByb21pc2UjdGhlbmBcbmlmICghSVNfUFVSRSAmJiBpc0NhbGxhYmxlKE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvcikpIHtcbiAgdmFyIG1ldGhvZCA9IGdldEJ1aWx0SW4oJ1Byb21pc2UnKS5wcm90b3R5cGVbJ2NhdGNoJ107XG4gIGlmIChOYXRpdmVQcm9taXNlUHJvdG90eXBlWydjYXRjaCddICE9PSBtZXRob2QpIHtcbiAgICBkZWZpbmVCdWlsdEluKE5hdGl2ZVByb21pc2VQcm90b3R5cGUsICdjYXRjaCcsIG1ldGhvZCwgeyB1bnNhZmU6IHRydWUgfSk7XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIElTX05PREUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQtaXMtbm9kZScpO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBzZXRTcGVjaWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1zcGVjaWVzJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1pbnN0YW5jZScpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgdGFzayA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90YXNrJykuc2V0O1xudmFyIG1pY3JvdGFzayA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9taWNyb3Rhc2snKTtcbnZhciBob3N0UmVwb3J0RXJyb3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hvc3QtcmVwb3J0LWVycm9ycycpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcGVyZm9ybScpO1xudmFyIFF1ZXVlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3F1ZXVlJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xudmFyIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLW5hdGl2ZS1jb25zdHJ1Y3RvcicpO1xudmFyIFByb21pc2VDb25zdHJ1Y3RvckRldGVjdGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcblxudmFyIFBST01JU0UgPSAnUHJvbWlzZSc7XG52YXIgRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IgPSBQcm9taXNlQ29uc3RydWN0b3JEZXRlY3Rpb24uQ09OU1RSVUNUT1I7XG52YXIgTkFUSVZFX1BST01JU0VfUkVKRUNUSU9OX0VWRU5UID0gUHJvbWlzZUNvbnN0cnVjdG9yRGV0ZWN0aW9uLlJFSkVDVElPTl9FVkVOVDtcbnZhciBOQVRJVkVfUFJPTUlTRV9TVUJDTEFTU0lORyA9IFByb21pc2VDb25zdHJ1Y3RvckRldGVjdGlvbi5TVUJDTEFTU0lORztcbnZhciBnZXRJbnRlcm5hbFByb21pc2VTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFBST01JU0UpO1xudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBOYXRpdmVQcm9taXNlUHJvdG90eXBlID0gTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yICYmIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG52YXIgUHJvbWlzZUNvbnN0cnVjdG9yID0gTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yO1xudmFyIFByb21pc2VQcm90b3R5cGUgPSBOYXRpdmVQcm9taXNlUHJvdG90eXBlO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbFRoaXMuVHlwZUVycm9yO1xudmFyIGRvY3VtZW50ID0gZ2xvYmFsVGhpcy5kb2N1bWVudDtcbnZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZjtcbnZhciBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eTtcblxudmFyIERJU1BBVENIX0VWRU5UID0gISEoZG9jdW1lbnQgJiYgZG9jdW1lbnQuY3JlYXRlRXZlbnQgJiYgZ2xvYmFsVGhpcy5kaXNwYXRjaEV2ZW50KTtcbnZhciBVTkhBTkRMRURfUkVKRUNUSU9OID0gJ3VuaGFuZGxlZHJlamVjdGlvbic7XG52YXIgUkVKRUNUSU9OX0hBTkRMRUQgPSAncmVqZWN0aW9uaGFuZGxlZCc7XG52YXIgUEVORElORyA9IDA7XG52YXIgRlVMRklMTEVEID0gMTtcbnZhciBSRUpFQ1RFRCA9IDI7XG52YXIgSEFORExFRCA9IDE7XG52YXIgVU5IQU5ETEVEID0gMjtcblxudmFyIEludGVybmFsLCBPd25Qcm9taXNlQ2FwYWJpbGl0eSwgUHJvbWlzZVdyYXBwZXIsIG5hdGl2ZVRoZW47XG5cbi8vIGhlbHBlcnNcbnZhciBpc1RoZW5hYmxlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciB0aGVuO1xuICByZXR1cm4gaXNPYmplY3QoaXQpICYmIGlzQ2FsbGFibGUodGhlbiA9IGl0LnRoZW4pID8gdGhlbiA6IGZhbHNlO1xufTtcblxudmFyIGNhbGxSZWFjdGlvbiA9IGZ1bmN0aW9uIChyZWFjdGlvbiwgc3RhdGUpIHtcbiAgdmFyIHZhbHVlID0gc3RhdGUudmFsdWU7XG4gIHZhciBvayA9IHN0YXRlLnN0YXRlID09PSBGVUxGSUxMRUQ7XG4gIHZhciBoYW5kbGVyID0gb2sgPyByZWFjdGlvbi5vayA6IHJlYWN0aW9uLmZhaWw7XG4gIHZhciByZXNvbHZlID0gcmVhY3Rpb24ucmVzb2x2ZTtcbiAgdmFyIHJlamVjdCA9IHJlYWN0aW9uLnJlamVjdDtcbiAgdmFyIGRvbWFpbiA9IHJlYWN0aW9uLmRvbWFpbjtcbiAgdmFyIHJlc3VsdCwgdGhlbiwgZXhpdGVkO1xuICB0cnkge1xuICAgIGlmIChoYW5kbGVyKSB7XG4gICAgICBpZiAoIW9rKSB7XG4gICAgICAgIGlmIChzdGF0ZS5yZWplY3Rpb24gPT09IFVOSEFORExFRCkgb25IYW5kbGVVbmhhbmRsZWQoc3RhdGUpO1xuICAgICAgICBzdGF0ZS5yZWplY3Rpb24gPSBIQU5ETEVEO1xuICAgICAgfVxuICAgICAgaWYgKGhhbmRsZXIgPT09IHRydWUpIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgZWxzZSB7XG4gICAgICAgIGlmIChkb21haW4pIGRvbWFpbi5lbnRlcigpO1xuICAgICAgICByZXN1bHQgPSBoYW5kbGVyKHZhbHVlKTsgLy8gY2FuIHRocm93XG4gICAgICAgIGlmIChkb21haW4pIHtcbiAgICAgICAgICBkb21haW4uZXhpdCgpO1xuICAgICAgICAgIGV4aXRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQgPT09IHJlYWN0aW9uLnByb21pc2UpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ1Byb21pc2UtY2hhaW4gY3ljbGUnKSk7XG4gICAgICB9IGVsc2UgaWYgKHRoZW4gPSBpc1RoZW5hYmxlKHJlc3VsdCkpIHtcbiAgICAgICAgY2FsbCh0aGVuLCByZXN1bHQsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICB9IGVsc2UgcmVzb2x2ZShyZXN1bHQpO1xuICAgIH0gZWxzZSByZWplY3QodmFsdWUpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChkb21haW4gJiYgIWV4aXRlZCkgZG9tYWluLmV4aXQoKTtcbiAgICByZWplY3QoZXJyb3IpO1xuICB9XG59O1xuXG52YXIgbm90aWZ5ID0gZnVuY3Rpb24gKHN0YXRlLCBpc1JlamVjdCkge1xuICBpZiAoc3RhdGUubm90aWZpZWQpIHJldHVybjtcbiAgc3RhdGUubm90aWZpZWQgPSB0cnVlO1xuICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgIHZhciByZWFjdGlvbnMgPSBzdGF0ZS5yZWFjdGlvbnM7XG4gICAgdmFyIHJlYWN0aW9uO1xuICAgIHdoaWxlIChyZWFjdGlvbiA9IHJlYWN0aW9ucy5nZXQoKSkge1xuICAgICAgY2FsbFJlYWN0aW9uKHJlYWN0aW9uLCBzdGF0ZSk7XG4gICAgfVxuICAgIHN0YXRlLm5vdGlmaWVkID0gZmFsc2U7XG4gICAgaWYgKGlzUmVqZWN0ICYmICFzdGF0ZS5yZWplY3Rpb24pIG9uVW5oYW5kbGVkKHN0YXRlKTtcbiAgfSk7XG59O1xuXG52YXIgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChuYW1lLCBwcm9taXNlLCByZWFzb24pIHtcbiAgdmFyIGV2ZW50LCBoYW5kbGVyO1xuICBpZiAoRElTUEFUQ0hfRVZFTlQpIHtcbiAgICBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuICAgIGV2ZW50LnByb21pc2UgPSBwcm9taXNlO1xuICAgIGV2ZW50LnJlYXNvbiA9IHJlYXNvbjtcbiAgICBldmVudC5pbml0RXZlbnQobmFtZSwgZmFsc2UsIHRydWUpO1xuICAgIGdsb2JhbFRoaXMuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIH0gZWxzZSBldmVudCA9IHsgcHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiByZWFzb24gfTtcbiAgaWYgKCFOQVRJVkVfUFJPTUlTRV9SRUpFQ1RJT05fRVZFTlQgJiYgKGhhbmRsZXIgPSBnbG9iYWxUaGlzWydvbicgKyBuYW1lXSkpIGhhbmRsZXIoZXZlbnQpO1xuICBlbHNlIGlmIChuYW1lID09PSBVTkhBTkRMRURfUkVKRUNUSU9OKSBob3N0UmVwb3J0RXJyb3JzKCdVbmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb24nLCByZWFzb24pO1xufTtcblxudmFyIG9uVW5oYW5kbGVkID0gZnVuY3Rpb24gKHN0YXRlKSB7XG4gIGNhbGwodGFzaywgZ2xvYmFsVGhpcywgZnVuY3Rpb24gKCkge1xuICAgIHZhciBwcm9taXNlID0gc3RhdGUuZmFjYWRlO1xuICAgIHZhciB2YWx1ZSA9IHN0YXRlLnZhbHVlO1xuICAgIHZhciBJU19VTkhBTkRMRUQgPSBpc1VuaGFuZGxlZChzdGF0ZSk7XG4gICAgdmFyIHJlc3VsdDtcbiAgICBpZiAoSVNfVU5IQU5ETEVEKSB7XG4gICAgICByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKElTX05PREUpIHtcbiAgICAgICAgICBwcm9jZXNzLmVtaXQoJ3VuaGFuZGxlZFJlamVjdGlvbicsIHZhbHVlLCBwcm9taXNlKTtcbiAgICAgICAgfSBlbHNlIGRpc3BhdGNoRXZlbnQoVU5IQU5ETEVEX1JFSkVDVElPTiwgcHJvbWlzZSwgdmFsdWUpO1xuICAgICAgfSk7XG4gICAgICAvLyBCcm93c2VycyBzaG91bGQgbm90IHRyaWdnZXIgYHJlamVjdGlvbkhhbmRsZWRgIGV2ZW50IGlmIGl0IHdhcyBoYW5kbGVkIGhlcmUsIE5vZGVKUyAtIHNob3VsZFxuICAgICAgc3RhdGUucmVqZWN0aW9uID0gSVNfTk9ERSB8fCBpc1VuaGFuZGxlZChzdGF0ZSkgPyBVTkhBTkRMRUQgOiBIQU5ETEVEO1xuICAgICAgaWYgKHJlc3VsdC5lcnJvcikgdGhyb3cgcmVzdWx0LnZhbHVlO1xuICAgIH1cbiAgfSk7XG59O1xuXG52YXIgaXNVbmhhbmRsZWQgPSBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgcmV0dXJuIHN0YXRlLnJlamVjdGlvbiAhPT0gSEFORExFRCAmJiAhc3RhdGUucGFyZW50O1xufTtcblxudmFyIG9uSGFuZGxlVW5oYW5kbGVkID0gZnVuY3Rpb24gKHN0YXRlKSB7XG4gIGNhbGwodGFzaywgZ2xvYmFsVGhpcywgZnVuY3Rpb24gKCkge1xuICAgIHZhciBwcm9taXNlID0gc3RhdGUuZmFjYWRlO1xuICAgIGlmIChJU19OT0RFKSB7XG4gICAgICBwcm9jZXNzLmVtaXQoJ3JlamVjdGlvbkhhbmRsZWQnLCBwcm9taXNlKTtcbiAgICB9IGVsc2UgZGlzcGF0Y2hFdmVudChSRUpFQ1RJT05fSEFORExFRCwgcHJvbWlzZSwgc3RhdGUudmFsdWUpO1xuICB9KTtcbn07XG5cbnZhciBiaW5kID0gZnVuY3Rpb24gKGZuLCBzdGF0ZSwgdW53cmFwKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBmbihzdGF0ZSwgdmFsdWUsIHVud3JhcCk7XG4gIH07XG59O1xuXG52YXIgaW50ZXJuYWxSZWplY3QgPSBmdW5jdGlvbiAoc3RhdGUsIHZhbHVlLCB1bndyYXApIHtcbiAgaWYgKHN0YXRlLmRvbmUpIHJldHVybjtcbiAgc3RhdGUuZG9uZSA9IHRydWU7XG4gIGlmICh1bndyYXApIHN0YXRlID0gdW53cmFwO1xuICBzdGF0ZS52YWx1ZSA9IHZhbHVlO1xuICBzdGF0ZS5zdGF0ZSA9IFJFSkVDVEVEO1xuICBub3RpZnkoc3RhdGUsIHRydWUpO1xufTtcblxudmFyIGludGVybmFsUmVzb2x2ZSA9IGZ1bmN0aW9uIChzdGF0ZSwgdmFsdWUsIHVud3JhcCkge1xuICBpZiAoc3RhdGUuZG9uZSkgcmV0dXJuO1xuICBzdGF0ZS5kb25lID0gdHJ1ZTtcbiAgaWYgKHVud3JhcCkgc3RhdGUgPSB1bndyYXA7XG4gIHRyeSB7XG4gICAgaWYgKHN0YXRlLmZhY2FkZSA9PT0gdmFsdWUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZlwiKTtcbiAgICB2YXIgdGhlbiA9IGlzVGhlbmFibGUodmFsdWUpO1xuICAgIGlmICh0aGVuKSB7XG4gICAgICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgd3JhcHBlciA9IHsgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjYWxsKHRoZW4sIHZhbHVlLFxuICAgICAgICAgICAgYmluZChpbnRlcm5hbFJlc29sdmUsIHdyYXBwZXIsIHN0YXRlKSxcbiAgICAgICAgICAgIGJpbmQoaW50ZXJuYWxSZWplY3QsIHdyYXBwZXIsIHN0YXRlKVxuICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgaW50ZXJuYWxSZWplY3Qod3JhcHBlciwgZXJyb3IsIHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLnZhbHVlID0gdmFsdWU7XG4gICAgICBzdGF0ZS5zdGF0ZSA9IEZVTEZJTExFRDtcbiAgICAgIG5vdGlmeShzdGF0ZSwgZmFsc2UpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpbnRlcm5hbFJlamVjdCh7IGRvbmU6IGZhbHNlIH0sIGVycm9yLCBzdGF0ZSk7XG4gIH1cbn07XG5cbi8vIGNvbnN0cnVjdG9yIHBvbHlmaWxsXG5pZiAoRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IpIHtcbiAgLy8gMjUuNC4zLjEgUHJvbWlzZShleGVjdXRvcilcbiAgUHJvbWlzZUNvbnN0cnVjdG9yID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIGFuSW5zdGFuY2UodGhpcywgUHJvbWlzZVByb3RvdHlwZSk7XG4gICAgYUNhbGxhYmxlKGV4ZWN1dG9yKTtcbiAgICBjYWxsKEludGVybmFsLCB0aGlzKTtcbiAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFByb21pc2VTdGF0ZSh0aGlzKTtcbiAgICB0cnkge1xuICAgICAgZXhlY3V0b3IoYmluZChpbnRlcm5hbFJlc29sdmUsIHN0YXRlKSwgYmluZChpbnRlcm5hbFJlamVjdCwgc3RhdGUpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaW50ZXJuYWxSZWplY3Qoc3RhdGUsIGVycm9yKTtcbiAgICB9XG4gIH07XG5cbiAgUHJvbWlzZVByb3RvdHlwZSA9IFByb21pc2VDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzIC0tIHJlcXVpcmVkIGZvciBgLmxlbmd0aGBcbiAgSW50ZXJuYWwgPSBmdW5jdGlvbiBQcm9taXNlKGV4ZWN1dG9yKSB7XG4gICAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgICB0eXBlOiBQUk9NSVNFLFxuICAgICAgZG9uZTogZmFsc2UsXG4gICAgICBub3RpZmllZDogZmFsc2UsXG4gICAgICBwYXJlbnQ6IGZhbHNlLFxuICAgICAgcmVhY3Rpb25zOiBuZXcgUXVldWUoKSxcbiAgICAgIHJlamVjdGlvbjogZmFsc2UsXG4gICAgICBzdGF0ZTogUEVORElORyxcbiAgICAgIHZhbHVlOiBudWxsXG4gICAgfSk7XG4gIH07XG5cbiAgLy8gYFByb21pc2UucHJvdG90eXBlLnRoZW5gIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UucHJvdG90eXBlLnRoZW5cbiAgSW50ZXJuYWwucHJvdG90eXBlID0gZGVmaW5lQnVpbHRJbihQcm9taXNlUHJvdG90eXBlLCAndGhlbicsIGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFByb21pc2VTdGF0ZSh0aGlzKTtcbiAgICB2YXIgcmVhY3Rpb24gPSBuZXdQcm9taXNlQ2FwYWJpbGl0eShzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgUHJvbWlzZUNvbnN0cnVjdG9yKSk7XG4gICAgc3RhdGUucGFyZW50ID0gdHJ1ZTtcbiAgICByZWFjdGlvbi5vayA9IGlzQ2FsbGFibGUob25GdWxmaWxsZWQpID8gb25GdWxmaWxsZWQgOiB0cnVlO1xuICAgIHJlYWN0aW9uLmZhaWwgPSBpc0NhbGxhYmxlKG9uUmVqZWN0ZWQpICYmIG9uUmVqZWN0ZWQ7XG4gICAgcmVhY3Rpb24uZG9tYWluID0gSVNfTk9ERSA/IHByb2Nlc3MuZG9tYWluIDogdW5kZWZpbmVkO1xuICAgIGlmIChzdGF0ZS5zdGF0ZSA9PT0gUEVORElORykgc3RhdGUucmVhY3Rpb25zLmFkZChyZWFjdGlvbik7XG4gICAgZWxzZSBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgICAgY2FsbFJlYWN0aW9uKHJlYWN0aW9uLCBzdGF0ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlYWN0aW9uLnByb21pc2U7XG4gIH0pO1xuXG4gIE93blByb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwcm9taXNlID0gbmV3IEludGVybmFsKCk7XG4gICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxQcm9taXNlU3RhdGUocHJvbWlzZSk7XG4gICAgdGhpcy5wcm9taXNlID0gcHJvbWlzZTtcbiAgICB0aGlzLnJlc29sdmUgPSBiaW5kKGludGVybmFsUmVzb2x2ZSwgc3RhdGUpO1xuICAgIHRoaXMucmVqZWN0ID0gYmluZChpbnRlcm5hbFJlamVjdCwgc3RhdGUpO1xuICB9O1xuXG4gIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uIChDKSB7XG4gICAgcmV0dXJuIEMgPT09IFByb21pc2VDb25zdHJ1Y3RvciB8fCBDID09PSBQcm9taXNlV3JhcHBlclxuICAgICAgPyBuZXcgT3duUHJvbWlzZUNhcGFiaWxpdHkoQylcbiAgICAgIDogbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICB9O1xuXG4gIGlmICghSVNfUFVSRSAmJiBpc0NhbGxhYmxlKE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvcikgJiYgTmF0aXZlUHJvbWlzZVByb3RvdHlwZSAhPT0gT2JqZWN0LnByb3RvdHlwZSkge1xuICAgIG5hdGl2ZVRoZW4gPSBOYXRpdmVQcm9taXNlUHJvdG90eXBlLnRoZW47XG5cbiAgICBpZiAoIU5BVElWRV9QUk9NSVNFX1NVQkNMQVNTSU5HKSB7XG4gICAgICAvLyBtYWtlIGBQcm9taXNlI3RoZW5gIHJldHVybiBhIHBvbHlmaWxsZWQgYFByb21pc2VgIGZvciBuYXRpdmUgcHJvbWlzZS1iYXNlZCBBUElzXG4gICAgICBkZWZpbmVCdWlsdEluKE5hdGl2ZVByb21pc2VQcm90b3R5cGUsICd0aGVuJywgZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUNvbnN0cnVjdG9yKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICBjYWxsKG5hdGl2ZVRoZW4sIHRoYXQsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpO1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzY0MFxuICAgICAgfSwgeyB1bnNhZmU6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgLy8gbWFrZSBgLmNvbnN0cnVjdG9yID09PSBQcm9taXNlYCB3b3JrIGZvciBuYXRpdmUgcHJvbWlzZS1iYXNlZCBBUElzXG4gICAgdHJ5IHtcbiAgICAgIGRlbGV0ZSBOYXRpdmVQcm9taXNlUHJvdG90eXBlLmNvbnN0cnVjdG9yO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cblxuICAgIC8vIG1ha2UgYGluc3RhbmNlb2YgUHJvbWlzZWAgd29yayBmb3IgbmF0aXZlIHByb21pc2UtYmFzZWQgQVBJc1xuICAgIGlmIChzZXRQcm90b3R5cGVPZikge1xuICAgICAgc2V0UHJvdG90eXBlT2YoTmF0aXZlUHJvbWlzZVByb3RvdHlwZSwgUHJvbWlzZVByb3RvdHlwZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIGBQcm9taXNlYCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLWV4ZWN1dG9yXG4kKHsgZ2xvYmFsOiB0cnVlLCBjb25zdHJ1Y3RvcjogdHJ1ZSwgd3JhcDogdHJ1ZSwgZm9yY2VkOiBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiB9LCB7XG4gIFByb21pc2U6IFByb21pc2VDb25zdHJ1Y3RvclxufSk7XG5cbnNldFRvU3RyaW5nVGFnKFByb21pc2VDb25zdHJ1Y3RvciwgUFJPTUlTRSwgZmFsc2UsIHRydWUpO1xuc2V0U3BlY2llcyhQUk9NSVNFKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLW5hdGl2ZS1jb25zdHJ1Y3RvcicpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciBwcm9taXNlUmVzb2x2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLXJlc29sdmUnKTtcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xuXG52YXIgTmF0aXZlUHJvbWlzZVByb3RvdHlwZSA9IE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciAmJiBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IucHJvdG90eXBlO1xuXG4vLyBTYWZhcmkgYnVnIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA4MjlcbnZhciBOT05fR0VORVJJQyA9ICEhTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8tdGhlbmFibGUgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgTmF0aXZlUHJvbWlzZVByb3RvdHlwZVsnZmluYWxseSddLmNhbGwoeyB0aGVuOiBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0gfSwgZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KTtcbn0pO1xuXG4vLyBgUHJvbWlzZS5wcm90b3R5cGUuZmluYWxseWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UucHJvdG90eXBlLmZpbmFsbHlcbiQoeyB0YXJnZXQ6ICdQcm9taXNlJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogTk9OX0dFTkVSSUMgfSwge1xuICAnZmluYWxseSc6IGZ1bmN0aW9uIChvbkZpbmFsbHkpIHtcbiAgICB2YXIgQyA9IHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCBnZXRCdWlsdEluKCdQcm9taXNlJykpO1xuICAgIHZhciBpc0Z1bmN0aW9uID0gaXNDYWxsYWJsZShvbkZpbmFsbHkpO1xuICAgIHJldHVybiB0aGlzLnRoZW4oXG4gICAgICBpc0Z1bmN0aW9uID8gZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKEMsIG9uRmluYWxseSgpKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHg7IH0pO1xuICAgICAgfSA6IG9uRmluYWxseSxcbiAgICAgIGlzRnVuY3Rpb24gPyBmdW5jdGlvbiAoZSkge1xuICAgICAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoQywgb25GaW5hbGx5KCkpLnRoZW4oZnVuY3Rpb24gKCkgeyB0aHJvdyBlOyB9KTtcbiAgICAgIH0gOiBvbkZpbmFsbHlcbiAgICApO1xuICB9XG59KTtcblxuLy8gbWFrZXMgc3VyZSB0aGF0IG5hdGl2ZSBwcm9taXNlLWJhc2VkIEFQSXMgYFByb21pc2UjZmluYWxseWAgcHJvcGVybHkgd29ya3Mgd2l0aCBwYXRjaGVkIGBQcm9taXNlI3RoZW5gXG5pZiAoIUlTX1BVUkUgJiYgaXNDYWxsYWJsZShOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IpKSB7XG4gIHZhciBtZXRob2QgPSBnZXRCdWlsdEluKCdQcm9taXNlJykucHJvdG90eXBlWydmaW5hbGx5J107XG4gIGlmIChOYXRpdmVQcm9taXNlUHJvdG90eXBlWydmaW5hbGx5J10gIT09IG1ldGhvZCkge1xuICAgIGRlZmluZUJ1aWx0SW4oTmF0aXZlUHJvbWlzZVByb3RvdHlwZSwgJ2ZpbmFsbHknLCBtZXRob2QsIHsgdW5zYWZlOiB0cnVlIH0pO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiBSZW1vdmUgdGhpcyBtb2R1bGUgZnJvbSBgY29yZS1qc0A0YCBzaW5jZSBpdCdzIHNwbGl0IHRvIG1vZHVsZXMgbGlzdGVkIGJlbG93XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnByb21pc2UuY29uc3RydWN0b3InKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMucHJvbWlzZS5hbGwnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMucHJvbWlzZS5jYXRjaCcpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5wcm9taXNlLnJhY2UnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMucHJvbWlzZS5yZWplY3QnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMucHJvbWlzZS5yZXNvbHZlJyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BlcmZvcm0nKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcbnZhciBQUk9NSVNFX1NUQVRJQ1NfSU5DT1JSRUNUX0lURVJBVElPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLXN0YXRpY3MtaW5jb3JyZWN0LWl0ZXJhdGlvbicpO1xuXG4vLyBgUHJvbWlzZS5yYWNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5yYWNlXG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHN0YXQ6IHRydWUsIGZvcmNlZDogUFJPTUlTRV9TVEFUSUNTX0lOQ09SUkVDVF9JVEVSQVRJT04gfSwge1xuICByYWNlOiBmdW5jdGlvbiByYWNlKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZihDKTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyICRwcm9taXNlUmVzb2x2ZSA9IGFDYWxsYWJsZShDLnJlc29sdmUpO1xuICAgICAgaXRlcmF0ZShpdGVyYWJsZSwgZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgY2FsbCgkcHJvbWlzZVJlc29sdmUsIEMsIHByb21pc2UpLnRoZW4oY2FwYWJpbGl0eS5yZXNvbHZlLCByZWplY3QpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lcnJvcikgcmVqZWN0KHJlc3VsdC52YWx1ZSk7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKS5DT05TVFJVQ1RPUjtcblxuLy8gYFByb21pc2UucmVqZWN0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5yZWplY3RcbiQoeyB0YXJnZXQ6ICdQcm9taXNlJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiB9LCB7XG4gIHJlamVjdDogZnVuY3Rpb24gcmVqZWN0KHIpIHtcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYodGhpcyk7XG4gICAgdmFyIGNhcGFiaWxpdHlSZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICBjYXBhYmlsaXR5UmVqZWN0KHIpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3InKTtcbnZhciBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpLkNPTlNUUlVDVE9SO1xudmFyIHByb21pc2VSZXNvbHZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtcmVzb2x2ZScpO1xuXG52YXIgUHJvbWlzZUNvbnN0cnVjdG9yV3JhcHBlciA9IGdldEJ1aWx0SW4oJ1Byb21pc2UnKTtcbnZhciBDSEVDS19XUkFQUEVSID0gSVNfUFVSRSAmJiAhRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1I7XG5cbi8vIGBQcm9taXNlLnJlc29sdmVgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnJlc29sdmVcbiQoeyB0YXJnZXQ6ICdQcm9taXNlJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIHx8IEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SIH0sIHtcbiAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSh4KSB7XG4gICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKENIRUNLX1dSQVBQRVIgJiYgdGhpcyA9PT0gUHJvbWlzZUNvbnN0cnVjdG9yV3JhcHBlciA/IE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciA6IHRoaXMsIHgpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBhcHBseSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1hcHBseScpO1xudmFyIHNsaWNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXNsaWNlJyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wZXJmb3JtJyk7XG5cbnZhciBQcm9taXNlID0gZ2xvYmFsVGhpcy5Qcm9taXNlO1xuXG52YXIgQUNDRVBUX0FSR1VNRU5UUyA9IGZhbHNlO1xuLy8gQXZvaWRpbmcgdGhlIHVzZSBvZiBwb2x5ZmlsbHMgb2YgdGhlIHByZXZpb3VzIGl0ZXJhdGlvbiBvZiB0aGlzIHByb3Bvc2FsXG4vLyB0aGF0IGRvZXMgbm90IGFjY2VwdCBhcmd1bWVudHMgb2YgdGhlIGNhbGxiYWNrXG52YXIgRk9SQ0VEID0gIVByb21pc2UgfHwgIVByb21pc2VbJ3RyeSddIHx8IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICBQcm9taXNlWyd0cnknXShmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgICBBQ0NFUFRfQVJHVU1FTlRTID0gYXJndW1lbnQgPT09IDg7XG4gIH0sIDgpO1xufSkuZXJyb3IgfHwgIUFDQ0VQVF9BUkdVTUVOVFM7XG5cbi8vIGBQcm9taXNlLnRyeWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UudHJ5XG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHN0YXQ6IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgJ3RyeSc6IGZ1bmN0aW9uIChjYWxsYmFja2ZuIC8qICwgLi4uYXJncyAqLykge1xuICAgIHZhciBhcmdzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBzbGljZShhcmd1bWVudHMsIDEpIDogW107XG4gICAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZih0aGlzKTtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gYXBwbHkoYUNhbGxhYmxlKGNhbGxiYWNrZm4pLCB1bmRlZmluZWQsIGFyZ3MpO1xuICAgIH0pO1xuICAgIChyZXN1bHQuZXJyb3IgPyBwcm9taXNlQ2FwYWJpbGl0eS5yZWplY3QgOiBwcm9taXNlQ2FwYWJpbGl0eS5yZXNvbHZlKShyZXN1bHQudmFsdWUpO1xuICAgIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcblxuLy8gYFByb21pc2Uud2l0aFJlc29sdmVyc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2Uud2l0aFJlc29sdmVyc1xuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBzdGF0OiB0cnVlIH0sIHtcbiAgd2l0aFJlc29sdmVyczogZnVuY3Rpb24gd2l0aFJlc29sdmVycygpIHtcbiAgICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mKHRoaXMpO1xuICAgIHJldHVybiB7XG4gICAgICBwcm9taXNlOiBwcm9taXNlQ2FwYWJpbGl0eS5wcm9taXNlLFxuICAgICAgcmVzb2x2ZTogcHJvbWlzZUNhcGFiaWxpdHkucmVzb2x2ZSxcbiAgICAgIHJlamVjdDogcHJvbWlzZUNhcGFiaWxpdHkucmVqZWN0XG4gICAgfTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXgnKTtcblxudmFyICRSYW5nZUVycm9yID0gUmFuZ2VFcnJvcjtcbnZhciBmcm9tQ2hhckNvZGUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLXN0cmluZy1mcm9tY29kZXBvaW50IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG52YXIgJGZyb21Db2RlUG9pbnQgPSBTdHJpbmcuZnJvbUNvZGVQb2ludDtcbnZhciBqb2luID0gdW5jdXJyeVRoaXMoW10uam9pbik7XG5cbi8vIGxlbmd0aCBzaG91bGQgYmUgMSwgb2xkIEZGIHByb2JsZW1cbnZhciBJTkNPUlJFQ1RfTEVOR1RIID0gISEkZnJvbUNvZGVQb2ludCAmJiAkZnJvbUNvZGVQb2ludC5sZW5ndGggIT09IDE7XG5cbi8vIGBTdHJpbmcuZnJvbUNvZGVQb2ludGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5mcm9tY29kZXBvaW50XG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgc3RhdDogdHJ1ZSwgYXJpdHk6IDEsIGZvcmNlZDogSU5DT1JSRUNUX0xFTkdUSCB9LCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyAtLSByZXF1aXJlZCBmb3IgYC5sZW5ndGhgXG4gIGZyb21Db2RlUG9pbnQ6IGZ1bmN0aW9uIGZyb21Db2RlUG9pbnQoeCkge1xuICAgIHZhciBlbGVtZW50cyA9IFtdO1xuICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgY29kZTtcbiAgICB3aGlsZSAobGVuZ3RoID4gaSkge1xuICAgICAgY29kZSA9ICthcmd1bWVudHNbaSsrXTtcbiAgICAgIGlmICh0b0Fic29sdXRlSW5kZXgoY29kZSwgMHgxMEZGRkYpICE9PSBjb2RlKSB0aHJvdyBuZXcgJFJhbmdlRXJyb3IoY29kZSArICcgaXMgbm90IGEgdmFsaWQgY29kZSBwb2ludCcpO1xuICAgICAgZWxlbWVudHNbaV0gPSBjb2RlIDwgMHgxMDAwMFxuICAgICAgICA/IGZyb21DaGFyQ29kZShjb2RlKVxuICAgICAgICA6IGZyb21DaGFyQ29kZSgoKGNvZGUgLT0gMHgxMDAwMCkgPj4gMTApICsgMHhEODAwLCBjb2RlICUgMHg0MDAgKyAweERDMDApO1xuICAgIH0gcmV0dXJuIGpvaW4oZWxlbWVudHMsICcnKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2hhckF0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1tdWx0aWJ5dGUnKS5jaGFyQXQ7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xudmFyIGRlZmluZUl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9yLWRlZmluZScpO1xudmFyIGNyZWF0ZUl0ZXJSZXN1bHRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLWl0ZXItcmVzdWx0LW9iamVjdCcpO1xuXG52YXIgU1RSSU5HX0lURVJBVE9SID0gJ1N0cmluZyBJdGVyYXRvcic7XG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcihTVFJJTkdfSVRFUkFUT1IpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZVtAQGl0ZXJhdG9yXWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUtQEBpdGVyYXRvclxuZGVmaW5lSXRlcmF0b3IoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24gKGl0ZXJhdGVkKSB7XG4gIHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgIHR5cGU6IFNUUklOR19JVEVSQVRPUixcbiAgICBzdHJpbmc6IHRvU3RyaW5nKGl0ZXJhdGVkKSxcbiAgICBpbmRleDogMFxuICB9KTtcbi8vIGAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0lc3RyaW5naXRlcmF0b3Jwcm90b3R5cGUlLm5leHRcbn0sIGZ1bmN0aW9uIG5leHQoKSB7XG4gIHZhciBzdGF0ZSA9IGdldEludGVybmFsU3RhdGUodGhpcyk7XG4gIHZhciBzdHJpbmcgPSBzdGF0ZS5zdHJpbmc7XG4gIHZhciBpbmRleCA9IHN0YXRlLmluZGV4O1xuICB2YXIgcG9pbnQ7XG4gIGlmIChpbmRleCA+PSBzdHJpbmcubGVuZ3RoKSByZXR1cm4gY3JlYXRlSXRlclJlc3VsdE9iamVjdCh1bmRlZmluZWQsIHRydWUpO1xuICBwb2ludCA9IGNoYXJBdChzdHJpbmcsIGluZGV4KTtcbiAgc3RhdGUuaW5kZXggKz0gcG9pbnQubGVuZ3RoO1xuICByZXR1cm4gY3JlYXRlSXRlclJlc3VsdE9iamVjdChwb2ludCwgZmFsc2UpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiBSZW1vdmUgZnJvbSBgY29yZS1qc0A0YFxucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5hZ2dyZWdhdGUtZXJyb3InKTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgXG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnByb21pc2UuYWxsLXNldHRsZWQuanMnKTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgXG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnByb21pc2UuYW55Jyk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiBSZW1vdmUgZnJvbSBgY29yZS1qc0A0YFxucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5wcm9taXNlLnRyeS5qcycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIGZyb20gYGNvcmUtanNANGBcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMucHJvbWlzZS53aXRoLXJlc29sdmVycycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBET01JdGVyYWJsZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9tLWl0ZXJhYmxlcycpO1xudmFyIERPTVRva2VuTGlzdFByb3RvdHlwZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb20tdG9rZW4tbGlzdC1wcm90b3R5cGUnKTtcbnZhciBBcnJheUl0ZXJhdG9yTWV0aG9kcyA9IHJlcXVpcmUoJy4uL21vZHVsZXMvZXMuYXJyYXkuaXRlcmF0b3InKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIEFycmF5VmFsdWVzID0gQXJyYXlJdGVyYXRvck1ldGhvZHMudmFsdWVzO1xuXG52YXIgaGFuZGxlUHJvdG90eXBlID0gZnVuY3Rpb24gKENvbGxlY3Rpb25Qcm90b3R5cGUsIENPTExFQ1RJT05fTkFNRSkge1xuICBpZiAoQ29sbGVjdGlvblByb3RvdHlwZSkge1xuICAgIC8vIHNvbWUgQ2hyb21lIHZlcnNpb25zIGhhdmUgbm9uLWNvbmZpZ3VyYWJsZSBtZXRob2RzIG9uIERPTVRva2VuTGlzdFxuICAgIGlmIChDb2xsZWN0aW9uUHJvdG90eXBlW0lURVJBVE9SXSAhPT0gQXJyYXlWYWx1ZXMpIHRyeSB7XG4gICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoQ29sbGVjdGlvblByb3RvdHlwZSwgSVRFUkFUT1IsIEFycmF5VmFsdWVzKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgQ29sbGVjdGlvblByb3RvdHlwZVtJVEVSQVRPUl0gPSBBcnJheVZhbHVlcztcbiAgICB9XG4gICAgc2V0VG9TdHJpbmdUYWcoQ29sbGVjdGlvblByb3RvdHlwZSwgQ09MTEVDVElPTl9OQU1FLCB0cnVlKTtcbiAgICBpZiAoRE9NSXRlcmFibGVzW0NPTExFQ1RJT05fTkFNRV0pIGZvciAodmFyIE1FVEhPRF9OQU1FIGluIEFycmF5SXRlcmF0b3JNZXRob2RzKSB7XG4gICAgICAvLyBzb21lIENocm9tZSB2ZXJzaW9ucyBoYXZlIG5vbi1jb25maWd1cmFibGUgbWV0aG9kcyBvbiBET01Ub2tlbkxpc3RcbiAgICAgIGlmIChDb2xsZWN0aW9uUHJvdG90eXBlW01FVEhPRF9OQU1FXSAhPT0gQXJyYXlJdGVyYXRvck1ldGhvZHNbTUVUSE9EX05BTUVdKSB0cnkge1xuICAgICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoQ29sbGVjdGlvblByb3RvdHlwZSwgTUVUSE9EX05BTUUsIEFycmF5SXRlcmF0b3JNZXRob2RzW01FVEhPRF9OQU1FXSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBDb2xsZWN0aW9uUHJvdG90eXBlW01FVEhPRF9OQU1FXSA9IEFycmF5SXRlcmF0b3JNZXRob2RzW01FVEhPRF9OQU1FXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmZvciAodmFyIENPTExFQ1RJT05fTkFNRSBpbiBET01JdGVyYWJsZXMpIHtcbiAgaGFuZGxlUHJvdG90eXBlKGdsb2JhbFRoaXNbQ09MTEVDVElPTl9OQU1FXSAmJiBnbG9iYWxUaGlzW0NPTExFQ1RJT05fTkFNRV0ucHJvdG90eXBlLCBDT0xMRUNUSU9OX05BTUUpO1xufVxuXG5oYW5kbGVQcm90b3R5cGUoRE9NVG9rZW5MaXN0UHJvdG90eXBlLCAnRE9NVG9rZW5MaXN0Jyk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiBpbiBjb3JlLWpzQDQsIG1vdmUgL21vZHVsZXMvIGRlcGVuZGVuY2llcyB0byBwdWJsaWMgZW50cmllcyBmb3IgYmV0dGVyIG9wdGltaXphdGlvbiBieSB0b29scyBsaWtlIGBwcmVzZXQtZW52YFxucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5hcnJheS5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5zdHJpbmcuZnJvbS1jb2RlLXBvaW50Jyk7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgc2FmZUdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2FmZS1nZXQtYnVpbHQtaW4nKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgVVNFX05BVElWRV9VUkwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXJsLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG52YXIgZGVmaW5lQnVpbHRJbkFjY2Vzc29yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3NvcicpO1xudmFyIGRlZmluZUJ1aWx0SW5zID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbnMnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIGNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItY3JlYXRlLWNvbnN0cnVjdG9yJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4taW5zdGFuY2UnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZicpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyICR0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIGdldEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvcicpO1xudmFyIGdldEl0ZXJhdG9yTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QnKTtcbnZhciBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1pdGVyLXJlc3VsdC1vYmplY3QnKTtcbnZhciB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgYXJyYXlTb3J0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXNvcnQnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIFVSTF9TRUFSQ0hfUEFSQU1TID0gJ1VSTFNlYXJjaFBhcmFtcyc7XG52YXIgVVJMX1NFQVJDSF9QQVJBTVNfSVRFUkFUT1IgPSBVUkxfU0VBUkNIX1BBUkFNUyArICdJdGVyYXRvcic7XG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIGdldEludGVybmFsUGFyYW1zU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcihVUkxfU0VBUkNIX1BBUkFNUyk7XG52YXIgZ2V0SW50ZXJuYWxJdGVyYXRvclN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IoVVJMX1NFQVJDSF9QQVJBTVNfSVRFUkFUT1IpO1xuXG52YXIgbmF0aXZlRmV0Y2ggPSBzYWZlR2V0QnVpbHRJbignZmV0Y2gnKTtcbnZhciBOYXRpdmVSZXF1ZXN0ID0gc2FmZUdldEJ1aWx0SW4oJ1JlcXVlc3QnKTtcbnZhciBIZWFkZXJzID0gc2FmZUdldEJ1aWx0SW4oJ0hlYWRlcnMnKTtcbnZhciBSZXF1ZXN0UHJvdG90eXBlID0gTmF0aXZlUmVxdWVzdCAmJiBOYXRpdmVSZXF1ZXN0LnByb3RvdHlwZTtcbnZhciBIZWFkZXJzUHJvdG90eXBlID0gSGVhZGVycyAmJiBIZWFkZXJzLnByb3RvdHlwZTtcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWxUaGlzLlR5cGVFcnJvcjtcbnZhciBlbmNvZGVVUklDb21wb25lbnQgPSBnbG9iYWxUaGlzLmVuY29kZVVSSUNvbXBvbmVudDtcbnZhciBmcm9tQ2hhckNvZGUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xudmFyIGZyb21Db2RlUG9pbnQgPSBnZXRCdWlsdEluKCdTdHJpbmcnLCAnZnJvbUNvZGVQb2ludCcpO1xudmFyICRwYXJzZUludCA9IHBhcnNlSW50O1xudmFyIGNoYXJBdCA9IHVuY3VycnlUaGlzKCcnLmNoYXJBdCk7XG52YXIgam9pbiA9IHVuY3VycnlUaGlzKFtdLmpvaW4pO1xudmFyIHB1c2ggPSB1bmN1cnJ5VGhpcyhbXS5wdXNoKTtcbnZhciByZXBsYWNlID0gdW5jdXJyeVRoaXMoJycucmVwbGFjZSk7XG52YXIgc2hpZnQgPSB1bmN1cnJ5VGhpcyhbXS5zaGlmdCk7XG52YXIgc3BsaWNlID0gdW5jdXJyeVRoaXMoW10uc3BsaWNlKTtcbnZhciBzcGxpdCA9IHVuY3VycnlUaGlzKCcnLnNwbGl0KTtcbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcbnZhciBleGVjID0gdW5jdXJyeVRoaXMoLy4vLmV4ZWMpO1xuXG52YXIgcGx1cyA9IC9cXCsvZztcbnZhciBGQUxMQkFDS19SRVBMQUNFUiA9ICdcXHVGRkZEJztcbnZhciBWQUxJRF9IRVggPSAvXlswLTlhLWZdKyQvaTtcblxudmFyIHBhcnNlSGV4T2N0ZXQgPSBmdW5jdGlvbiAoc3RyaW5nLCBzdGFydCkge1xuICB2YXIgc3Vic3RyID0gc3RyaW5nU2xpY2Uoc3RyaW5nLCBzdGFydCwgc3RhcnQgKyAyKTtcbiAgaWYgKCFleGVjKFZBTElEX0hFWCwgc3Vic3RyKSkgcmV0dXJuIE5hTjtcblxuICByZXR1cm4gJHBhcnNlSW50KHN1YnN0ciwgMTYpO1xufTtcblxudmFyIGdldExlYWRpbmdPbmVzID0gZnVuY3Rpb24gKG9jdGV0KSB7XG4gIHZhciBjb3VudCA9IDA7XG4gIGZvciAodmFyIG1hc2sgPSAweDgwOyBtYXNrID4gMCAmJiAob2N0ZXQgJiBtYXNrKSAhPT0gMDsgbWFzayA+Pj0gMSkge1xuICAgIGNvdW50Kys7XG4gIH1cbiAgcmV0dXJuIGNvdW50O1xufTtcblxudmFyIHV0ZjhEZWNvZGUgPSBmdW5jdGlvbiAob2N0ZXRzKSB7XG4gIHZhciBjb2RlUG9pbnQgPSBudWxsO1xuXG4gIHN3aXRjaCAob2N0ZXRzLmxlbmd0aCkge1xuICAgIGNhc2UgMTpcbiAgICAgIGNvZGVQb2ludCA9IG9jdGV0c1swXTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIGNvZGVQb2ludCA9IChvY3RldHNbMF0gJiAweDFGKSA8PCA2IHwgKG9jdGV0c1sxXSAmIDB4M0YpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAzOlxuICAgICAgY29kZVBvaW50ID0gKG9jdGV0c1swXSAmIDB4MEYpIDw8IDEyIHwgKG9jdGV0c1sxXSAmIDB4M0YpIDw8IDYgfCAob2N0ZXRzWzJdICYgMHgzRik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDQ6XG4gICAgICBjb2RlUG9pbnQgPSAob2N0ZXRzWzBdICYgMHgwNykgPDwgMTggfCAob2N0ZXRzWzFdICYgMHgzRikgPDwgMTIgfCAob2N0ZXRzWzJdICYgMHgzRikgPDwgNiB8IChvY3RldHNbM10gJiAweDNGKTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIGNvZGVQb2ludCA+IDB4MTBGRkZGID8gbnVsbCA6IGNvZGVQb2ludDtcbn07XG5cbnZhciBkZWNvZGUgPSBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgaW5wdXQgPSByZXBsYWNlKGlucHV0LCBwbHVzLCAnICcpO1xuICB2YXIgbGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuICB2YXIgcmVzdWx0ID0gJyc7XG4gIHZhciBpID0gMDtcblxuICB3aGlsZSAoaSA8IGxlbmd0aCkge1xuICAgIHZhciBkZWNvZGVkQ2hhciA9IGNoYXJBdChpbnB1dCwgaSk7XG5cbiAgICBpZiAoZGVjb2RlZENoYXIgPT09ICclJykge1xuICAgICAgaWYgKGNoYXJBdChpbnB1dCwgaSArIDEpID09PSAnJScgfHwgaSArIDMgPiBsZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0ICs9ICclJztcbiAgICAgICAgaSsrO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIG9jdGV0ID0gcGFyc2VIZXhPY3RldChpbnB1dCwgaSArIDEpO1xuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICAgICAgaWYgKG9jdGV0ICE9PSBvY3RldCkge1xuICAgICAgICByZXN1bHQgKz0gZGVjb2RlZENoYXI7XG4gICAgICAgIGkrKztcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGkgKz0gMjtcbiAgICAgIHZhciBieXRlU2VxdWVuY2VMZW5ndGggPSBnZXRMZWFkaW5nT25lcyhvY3RldCk7XG5cbiAgICAgIGlmIChieXRlU2VxdWVuY2VMZW5ndGggPT09IDApIHtcbiAgICAgICAgZGVjb2RlZENoYXIgPSBmcm9tQ2hhckNvZGUob2N0ZXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGJ5dGVTZXF1ZW5jZUxlbmd0aCA9PT0gMSB8fCBieXRlU2VxdWVuY2VMZW5ndGggPiA0KSB7XG4gICAgICAgICAgcmVzdWx0ICs9IEZBTExCQUNLX1JFUExBQ0VSO1xuICAgICAgICAgIGkrKztcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBvY3RldHMgPSBbb2N0ZXRdO1xuICAgICAgICB2YXIgc2VxdWVuY2VJbmRleCA9IDE7XG5cbiAgICAgICAgd2hpbGUgKHNlcXVlbmNlSW5kZXggPCBieXRlU2VxdWVuY2VMZW5ndGgpIHtcbiAgICAgICAgICBpKys7XG4gICAgICAgICAgaWYgKGkgKyAzID4gbGVuZ3RoIHx8IGNoYXJBdChpbnB1dCwgaSkgIT09ICclJykgYnJlYWs7XG5cbiAgICAgICAgICB2YXIgbmV4dEJ5dGUgPSBwYXJzZUhleE9jdGV0KGlucHV0LCBpICsgMSk7XG5cbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICAgICAgICAgIGlmIChuZXh0Qnl0ZSAhPT0gbmV4dEJ5dGUpIHtcbiAgICAgICAgICAgIGkgKz0gMztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobmV4dEJ5dGUgPiAxOTEgfHwgbmV4dEJ5dGUgPCAxMjgpIGJyZWFrO1xuXG4gICAgICAgICAgcHVzaChvY3RldHMsIG5leHRCeXRlKTtcbiAgICAgICAgICBpICs9IDI7XG4gICAgICAgICAgc2VxdWVuY2VJbmRleCsrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9jdGV0cy5sZW5ndGggIT09IGJ5dGVTZXF1ZW5jZUxlbmd0aCkge1xuICAgICAgICAgIHJlc3VsdCArPSBGQUxMQkFDS19SRVBMQUNFUjtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjb2RlUG9pbnQgPSB1dGY4RGVjb2RlKG9jdGV0cyk7XG4gICAgICAgIGlmIChjb2RlUG9pbnQgPT09IG51bGwpIHtcbiAgICAgICAgICByZXN1bHQgKz0gRkFMTEJBQ0tfUkVQTEFDRVI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVjb2RlZENoYXIgPSBmcm9tQ29kZVBvaW50KGNvZGVQb2ludCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXN1bHQgKz0gZGVjb2RlZENoYXI7XG4gICAgaSsrO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbnZhciBmaW5kID0gL1shJygpfl18JTIwL2c7XG5cbnZhciByZXBsYWNlbWVudHMgPSB7XG4gICchJzogJyUyMScsXG4gIFwiJ1wiOiAnJTI3JyxcbiAgJygnOiAnJTI4JyxcbiAgJyknOiAnJTI5JyxcbiAgJ34nOiAnJTdFJyxcbiAgJyUyMCc6ICcrJ1xufTtcblxudmFyIHJlcGxhY2VyID0gZnVuY3Rpb24gKG1hdGNoKSB7XG4gIHJldHVybiByZXBsYWNlbWVudHNbbWF0Y2hdO1xufTtcblxudmFyIHNlcmlhbGl6ZSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gcmVwbGFjZShlbmNvZGVVUklDb21wb25lbnQoaXQpLCBmaW5kLCByZXBsYWNlcik7XG59O1xuXG52YXIgVVJMU2VhcmNoUGFyYW1zSXRlcmF0b3IgPSBjcmVhdGVJdGVyYXRvckNvbnN0cnVjdG9yKGZ1bmN0aW9uIEl0ZXJhdG9yKHBhcmFtcywga2luZCkge1xuICBzZXRJbnRlcm5hbFN0YXRlKHRoaXMsIHtcbiAgICB0eXBlOiBVUkxfU0VBUkNIX1BBUkFNU19JVEVSQVRPUixcbiAgICB0YXJnZXQ6IGdldEludGVybmFsUGFyYW1zU3RhdGUocGFyYW1zKS5lbnRyaWVzLFxuICAgIGluZGV4OiAwLFxuICAgIGtpbmQ6IGtpbmRcbiAgfSk7XG59LCBVUkxfU0VBUkNIX1BBUkFNUywgZnVuY3Rpb24gbmV4dCgpIHtcbiAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxJdGVyYXRvclN0YXRlKHRoaXMpO1xuICB2YXIgdGFyZ2V0ID0gc3RhdGUudGFyZ2V0O1xuICB2YXIgaW5kZXggPSBzdGF0ZS5pbmRleCsrO1xuICBpZiAoIXRhcmdldCB8fCBpbmRleCA+PSB0YXJnZXQubGVuZ3RoKSB7XG4gICAgc3RhdGUudGFyZ2V0ID0gbnVsbDtcbiAgICByZXR1cm4gY3JlYXRlSXRlclJlc3VsdE9iamVjdCh1bmRlZmluZWQsIHRydWUpO1xuICB9XG4gIHZhciBlbnRyeSA9IHRhcmdldFtpbmRleF07XG4gIHN3aXRjaCAoc3RhdGUua2luZCkge1xuICAgIGNhc2UgJ2tleXMnOiByZXR1cm4gY3JlYXRlSXRlclJlc3VsdE9iamVjdChlbnRyeS5rZXksIGZhbHNlKTtcbiAgICBjYXNlICd2YWx1ZXMnOiByZXR1cm4gY3JlYXRlSXRlclJlc3VsdE9iamVjdChlbnRyeS52YWx1ZSwgZmFsc2UpO1xuICB9IHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KFtlbnRyeS5rZXksIGVudHJ5LnZhbHVlXSwgZmFsc2UpO1xufSwgdHJ1ZSk7XG5cbnZhciBVUkxTZWFyY2hQYXJhbXNTdGF0ZSA9IGZ1bmN0aW9uIChpbml0KSB7XG4gIHRoaXMuZW50cmllcyA9IFtdO1xuICB0aGlzLnVybCA9IG51bGw7XG5cbiAgaWYgKGluaXQgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChpc09iamVjdChpbml0KSkgdGhpcy5wYXJzZU9iamVjdChpbml0KTtcbiAgICBlbHNlIHRoaXMucGFyc2VRdWVyeSh0eXBlb2YgaW5pdCA9PSAnc3RyaW5nJyA/IGNoYXJBdChpbml0LCAwKSA9PT0gJz8nID8gc3RyaW5nU2xpY2UoaW5pdCwgMSkgOiBpbml0IDogJHRvU3RyaW5nKGluaXQpKTtcbiAgfVxufTtcblxuVVJMU2VhcmNoUGFyYW1zU3RhdGUucHJvdG90eXBlID0ge1xuICB0eXBlOiBVUkxfU0VBUkNIX1BBUkFNUyxcbiAgYmluZFVSTDogZnVuY3Rpb24gKHVybCkge1xuICAgIHRoaXMudXJsID0gdXJsO1xuICAgIHRoaXMudXBkYXRlKCk7XG4gIH0sXG4gIHBhcnNlT2JqZWN0OiBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgdmFyIGVudHJpZXMgPSB0aGlzLmVudHJpZXM7XG4gICAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gZ2V0SXRlcmF0b3JNZXRob2Qob2JqZWN0KTtcbiAgICB2YXIgaXRlcmF0b3IsIG5leHQsIHN0ZXAsIGVudHJ5SXRlcmF0b3IsIGVudHJ5TmV4dCwgZmlyc3QsIHNlY29uZDtcblxuICAgIGlmIChpdGVyYXRvck1ldGhvZCkge1xuICAgICAgaXRlcmF0b3IgPSBnZXRJdGVyYXRvcihvYmplY3QsIGl0ZXJhdG9yTWV0aG9kKTtcbiAgICAgIG5leHQgPSBpdGVyYXRvci5uZXh0O1xuICAgICAgd2hpbGUgKCEoc3RlcCA9IGNhbGwobmV4dCwgaXRlcmF0b3IpKS5kb25lKSB7XG4gICAgICAgIGVudHJ5SXRlcmF0b3IgPSBnZXRJdGVyYXRvcihhbk9iamVjdChzdGVwLnZhbHVlKSk7XG4gICAgICAgIGVudHJ5TmV4dCA9IGVudHJ5SXRlcmF0b3IubmV4dDtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChmaXJzdCA9IGNhbGwoZW50cnlOZXh0LCBlbnRyeUl0ZXJhdG9yKSkuZG9uZSB8fFxuICAgICAgICAgIChzZWNvbmQgPSBjYWxsKGVudHJ5TmV4dCwgZW50cnlJdGVyYXRvcikpLmRvbmUgfHxcbiAgICAgICAgICAhY2FsbChlbnRyeU5leHQsIGVudHJ5SXRlcmF0b3IpLmRvbmVcbiAgICAgICAgKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBzZXF1ZW5jZSB3aXRoIGxlbmd0aCAyJyk7XG4gICAgICAgIHB1c2goZW50cmllcywgeyBrZXk6ICR0b1N0cmluZyhmaXJzdC52YWx1ZSksIHZhbHVlOiAkdG9TdHJpbmcoc2Vjb25kLnZhbHVlKSB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgZm9yICh2YXIga2V5IGluIG9iamVjdCkgaWYgKGhhc093bihvYmplY3QsIGtleSkpIHtcbiAgICAgIHB1c2goZW50cmllcywgeyBrZXk6IGtleSwgdmFsdWU6ICR0b1N0cmluZyhvYmplY3Rba2V5XSkgfSk7XG4gICAgfVxuICB9LFxuICBwYXJzZVF1ZXJ5OiBmdW5jdGlvbiAocXVlcnkpIHtcbiAgICBpZiAocXVlcnkpIHtcbiAgICAgIHZhciBlbnRyaWVzID0gdGhpcy5lbnRyaWVzO1xuICAgICAgdmFyIGF0dHJpYnV0ZXMgPSBzcGxpdChxdWVyeSwgJyYnKTtcbiAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICB2YXIgYXR0cmlidXRlLCBlbnRyeTtcbiAgICAgIHdoaWxlIChpbmRleCA8IGF0dHJpYnV0ZXMubGVuZ3RoKSB7XG4gICAgICAgIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXNbaW5kZXgrK107XG4gICAgICAgIGlmIChhdHRyaWJ1dGUubGVuZ3RoKSB7XG4gICAgICAgICAgZW50cnkgPSBzcGxpdChhdHRyaWJ1dGUsICc9Jyk7XG4gICAgICAgICAgcHVzaChlbnRyaWVzLCB7XG4gICAgICAgICAgICBrZXk6IGRlY29kZShzaGlmdChlbnRyeSkpLFxuICAgICAgICAgICAgdmFsdWU6IGRlY29kZShqb2luKGVudHJ5LCAnPScpKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBzZXJpYWxpemU6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZW50cmllcyA9IHRoaXMuZW50cmllcztcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgZW50cnk7XG4gICAgd2hpbGUgKGluZGV4IDwgZW50cmllcy5sZW5ndGgpIHtcbiAgICAgIGVudHJ5ID0gZW50cmllc1tpbmRleCsrXTtcbiAgICAgIHB1c2gocmVzdWx0LCBzZXJpYWxpemUoZW50cnkua2V5KSArICc9JyArIHNlcmlhbGl6ZShlbnRyeS52YWx1ZSkpO1xuICAgIH0gcmV0dXJuIGpvaW4ocmVzdWx0LCAnJicpO1xuICB9LFxuICB1cGRhdGU6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmVudHJpZXMubGVuZ3RoID0gMDtcbiAgICB0aGlzLnBhcnNlUXVlcnkodGhpcy51cmwucXVlcnkpO1xuICB9LFxuICB1cGRhdGVVUkw6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy51cmwpIHRoaXMudXJsLnVwZGF0ZSgpO1xuICB9XG59O1xuXG4vLyBgVVJMU2VhcmNoUGFyYW1zYCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNpbnRlcmZhY2UtdXJsc2VhcmNocGFyYW1zXG52YXIgVVJMU2VhcmNoUGFyYW1zQ29uc3RydWN0b3IgPSBmdW5jdGlvbiBVUkxTZWFyY2hQYXJhbXMoLyogaW5pdCAqLykge1xuICBhbkluc3RhbmNlKHRoaXMsIFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSk7XG4gIHZhciBpbml0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQ7XG4gIHZhciBzdGF0ZSA9IHNldEludGVybmFsU3RhdGUodGhpcywgbmV3IFVSTFNlYXJjaFBhcmFtc1N0YXRlKGluaXQpKTtcbiAgaWYgKCFERVNDUklQVE9SUykgdGhpcy5zaXplID0gc3RhdGUuZW50cmllcy5sZW5ndGg7XG59O1xuXG52YXIgVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlID0gVVJMU2VhcmNoUGFyYW1zQ29uc3RydWN0b3IucHJvdG90eXBlO1xuXG5kZWZpbmVCdWlsdElucyhVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUsIHtcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuYXBwZW5kYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsc2VhcmNocGFyYW1zLWFwcGVuZFxuICBhcHBlbmQ6IGZ1bmN0aW9uIGFwcGVuZChuYW1lLCB2YWx1ZSkge1xuICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcyk7XG4gICAgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGgoYXJndW1lbnRzLmxlbmd0aCwgMik7XG4gICAgcHVzaChzdGF0ZS5lbnRyaWVzLCB7IGtleTogJHRvU3RyaW5nKG5hbWUpLCB2YWx1ZTogJHRvU3RyaW5nKHZhbHVlKSB9KTtcbiAgICBpZiAoIURFU0NSSVBUT1JTKSB0aGlzLmxlbmd0aCsrO1xuICAgIHN0YXRlLnVwZGF0ZVVSTCgpO1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5kZWxldGVgIG1ldGhvZFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmxzZWFyY2hwYXJhbXMtZGVsZXRlXG4gICdkZWxldGUnOiBmdW5jdGlvbiAobmFtZSAvKiAsIHZhbHVlICovKSB7XG4gICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdmFsaWRhdGVBcmd1bWVudHNMZW5ndGgoYXJndW1lbnRzLmxlbmd0aCwgMSk7XG4gICAgdmFyIGVudHJpZXMgPSBzdGF0ZS5lbnRyaWVzO1xuICAgIHZhciBrZXkgPSAkdG9TdHJpbmcobmFtZSk7XG4gICAgdmFyICR2YWx1ZSA9IGxlbmd0aCA8IDIgPyB1bmRlZmluZWQgOiBhcmd1bWVudHNbMV07XG4gICAgdmFyIHZhbHVlID0gJHZhbHVlID09PSB1bmRlZmluZWQgPyAkdmFsdWUgOiAkdG9TdHJpbmcoJHZhbHVlKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHdoaWxlIChpbmRleCA8IGVudHJpZXMubGVuZ3RoKSB7XG4gICAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICAgIGlmIChlbnRyeS5rZXkgPT09IGtleSAmJiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCBlbnRyeS52YWx1ZSA9PT0gdmFsdWUpKSB7XG4gICAgICAgIHNwbGljZShlbnRyaWVzLCBpbmRleCwgMSk7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSBicmVhaztcbiAgICAgIH0gZWxzZSBpbmRleCsrO1xuICAgIH1cbiAgICBpZiAoIURFU0NSSVBUT1JTKSB0aGlzLnNpemUgPSBlbnRyaWVzLmxlbmd0aDtcbiAgICBzdGF0ZS51cGRhdGVVUkwoKTtcbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuZ2V0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsc2VhcmNocGFyYW1zLWdldFxuICBnZXQ6IGZ1bmN0aW9uIGdldChuYW1lKSB7XG4gICAgdmFyIGVudHJpZXMgPSBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpLmVudHJpZXM7XG4gICAgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGgoYXJndW1lbnRzLmxlbmd0aCwgMSk7XG4gICAgdmFyIGtleSA9ICR0b1N0cmluZyhuYW1lKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIGZvciAoOyBpbmRleCA8IGVudHJpZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBpZiAoZW50cmllc1tpbmRleF0ua2V5ID09PSBrZXkpIHJldHVybiBlbnRyaWVzW2luZGV4XS52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmdldEFsbGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybHNlYXJjaHBhcmFtcy1nZXRhbGxcbiAgZ2V0QWxsOiBmdW5jdGlvbiBnZXRBbGwobmFtZSkge1xuICAgIHZhciBlbnRyaWVzID0gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKS5lbnRyaWVzO1xuICAgIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDEpO1xuICAgIHZhciBrZXkgPSAkdG9TdHJpbmcobmFtZSk7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgZm9yICg7IGluZGV4IDwgZW50cmllcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGlmIChlbnRyaWVzW2luZGV4XS5rZXkgPT09IGtleSkgcHVzaChyZXN1bHQsIGVudHJpZXNbaW5kZXhdLnZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaGFzYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsc2VhcmNocGFyYW1zLWhhc1xuICBoYXM6IGZ1bmN0aW9uIGhhcyhuYW1lIC8qICwgdmFsdWUgKi8pIHtcbiAgICB2YXIgZW50cmllcyA9IGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcykuZW50cmllcztcbiAgICB2YXIgbGVuZ3RoID0gdmFsaWRhdGVBcmd1bWVudHNMZW5ndGgoYXJndW1lbnRzLmxlbmd0aCwgMSk7XG4gICAgdmFyIGtleSA9ICR0b1N0cmluZyhuYW1lKTtcbiAgICB2YXIgJHZhbHVlID0gbGVuZ3RoIDwgMiA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1sxXTtcbiAgICB2YXIgdmFsdWUgPSAkdmFsdWUgPT09IHVuZGVmaW5lZCA/ICR2YWx1ZSA6ICR0b1N0cmluZygkdmFsdWUpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgd2hpbGUgKGluZGV4IDwgZW50cmllcy5sZW5ndGgpIHtcbiAgICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXgrK107XG4gICAgICBpZiAoZW50cnkua2V5ID09PSBrZXkgJiYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgZW50cnkudmFsdWUgPT09IHZhbHVlKSkgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuc2V0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsc2VhcmNocGFyYW1zLXNldFxuICBzZXQ6IGZ1bmN0aW9uIHNldChuYW1lLCB2YWx1ZSkge1xuICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcyk7XG4gICAgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGgoYXJndW1lbnRzLmxlbmd0aCwgMSk7XG4gICAgdmFyIGVudHJpZXMgPSBzdGF0ZS5lbnRyaWVzO1xuICAgIHZhciBmb3VuZCA9IGZhbHNlO1xuICAgIHZhciBrZXkgPSAkdG9TdHJpbmcobmFtZSk7XG4gICAgdmFyIHZhbCA9ICR0b1N0cmluZyh2YWx1ZSk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgZW50cnk7XG4gICAgZm9yICg7IGluZGV4IDwgZW50cmllcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgICBpZiAoZW50cnkua2V5ID09PSBrZXkpIHtcbiAgICAgICAgaWYgKGZvdW5kKSBzcGxpY2UoZW50cmllcywgaW5kZXgtLSwgMSk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICBlbnRyeS52YWx1ZSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWZvdW5kKSBwdXNoKGVudHJpZXMsIHsga2V5OiBrZXksIHZhbHVlOiB2YWwgfSk7XG4gICAgaWYgKCFERVNDUklQVE9SUykgdGhpcy5zaXplID0gZW50cmllcy5sZW5ndGg7XG4gICAgc3RhdGUudXBkYXRlVVJMKCk7XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLnNvcnRgIG1ldGhvZFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmxzZWFyY2hwYXJhbXMtc29ydFxuICBzb3J0OiBmdW5jdGlvbiBzb3J0KCkge1xuICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcyk7XG4gICAgYXJyYXlTb3J0KHN0YXRlLmVudHJpZXMsIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gYS5rZXkgPiBiLmtleSA/IDEgOiAtMTtcbiAgICB9KTtcbiAgICBzdGF0ZS51cGRhdGVVUkwoKTtcbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuZm9yRWFjaGAgbWV0aG9kXG4gIGZvckVhY2g6IGZ1bmN0aW9uIGZvckVhY2goY2FsbGJhY2sgLyogLCB0aGlzQXJnICovKSB7XG4gICAgdmFyIGVudHJpZXMgPSBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpLmVudHJpZXM7XG4gICAgdmFyIGJvdW5kRnVuY3Rpb24gPSBiaW5kKGNhbGxiYWNrLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgZW50cnk7XG4gICAgd2hpbGUgKGluZGV4IDwgZW50cmllcy5sZW5ndGgpIHtcbiAgICAgIGVudHJ5ID0gZW50cmllc1tpbmRleCsrXTtcbiAgICAgIGJvdW5kRnVuY3Rpb24oZW50cnkudmFsdWUsIGVudHJ5LmtleSwgdGhpcyk7XG4gICAgfVxuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5rZXlzYCBtZXRob2RcbiAga2V5czogZnVuY3Rpb24ga2V5cygpIHtcbiAgICByZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtc0l0ZXJhdG9yKHRoaXMsICdrZXlzJyk7XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLnZhbHVlc2AgbWV0aG9kXG4gIHZhbHVlczogZnVuY3Rpb24gdmFsdWVzKCkge1xuICAgIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zSXRlcmF0b3IodGhpcywgJ3ZhbHVlcycpO1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5lbnRyaWVzYCBtZXRob2RcbiAgZW50cmllczogZnVuY3Rpb24gZW50cmllcygpIHtcbiAgICByZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtc0l0ZXJhdG9yKHRoaXMsICdlbnRyaWVzJyk7XG4gIH1cbn0sIHsgZW51bWVyYWJsZTogdHJ1ZSB9KTtcblxuLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGVbQEBpdGVyYXRvcl1gIG1ldGhvZFxuZGVmaW5lQnVpbHRJbihVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUsIElURVJBVE9SLCBVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUuZW50cmllcywgeyBuYW1lOiAnZW50cmllcycgfSk7XG5cbi8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLnRvU3RyaW5nYCBtZXRob2Rcbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jdXJsc2VhcmNocGFyYW1zLXN0cmluZ2lmaWNhdGlvbi1iZWhhdmlvclxuZGVmaW5lQnVpbHRJbihVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUsICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKS5zZXJpYWxpemUoKTtcbn0sIHsgZW51bWVyYWJsZTogdHJ1ZSB9KTtcblxuLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuc2l6ZWAgZ2V0dGVyXG4vLyBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL3VybC9wdWxsLzczNFxuaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVCdWlsdEluQWNjZXNzb3IoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLCAnc2l6ZScsIHtcbiAgZ2V0OiBmdW5jdGlvbiBzaXplKCkge1xuICAgIHJldHVybiBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpLmVudHJpZXMubGVuZ3RoO1xuICB9LFxuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWVcbn0pO1xuXG5zZXRUb1N0cmluZ1RhZyhVUkxTZWFyY2hQYXJhbXNDb25zdHJ1Y3RvciwgVVJMX1NFQVJDSF9QQVJBTVMpO1xuXG4kKHsgZ2xvYmFsOiB0cnVlLCBjb25zdHJ1Y3RvcjogdHJ1ZSwgZm9yY2VkOiAhVVNFX05BVElWRV9VUkwgfSwge1xuICBVUkxTZWFyY2hQYXJhbXM6IFVSTFNlYXJjaFBhcmFtc0NvbnN0cnVjdG9yXG59KTtcblxuLy8gV3JhcCBgZmV0Y2hgIGFuZCBgUmVxdWVzdGAgZm9yIGNvcnJlY3Qgd29yayB3aXRoIHBvbHlmaWxsZWQgYFVSTFNlYXJjaFBhcmFtc2BcbmlmICghVVNFX05BVElWRV9VUkwgJiYgaXNDYWxsYWJsZShIZWFkZXJzKSkge1xuICB2YXIgaGVhZGVyc0hhcyA9IHVuY3VycnlUaGlzKEhlYWRlcnNQcm90b3R5cGUuaGFzKTtcbiAgdmFyIGhlYWRlcnNTZXQgPSB1bmN1cnJ5VGhpcyhIZWFkZXJzUHJvdG90eXBlLnNldCk7XG5cbiAgdmFyIHdyYXBSZXF1ZXN0T3B0aW9ucyA9IGZ1bmN0aW9uIChpbml0KSB7XG4gICAgaWYgKGlzT2JqZWN0KGluaXQpKSB7XG4gICAgICB2YXIgYm9keSA9IGluaXQuYm9keTtcbiAgICAgIHZhciBoZWFkZXJzO1xuICAgICAgaWYgKGNsYXNzb2YoYm9keSkgPT09IFVSTF9TRUFSQ0hfUEFSQU1TKSB7XG4gICAgICAgIGhlYWRlcnMgPSBpbml0LmhlYWRlcnMgPyBuZXcgSGVhZGVycyhpbml0LmhlYWRlcnMpIDogbmV3IEhlYWRlcnMoKTtcbiAgICAgICAgaWYgKCFoZWFkZXJzSGFzKGhlYWRlcnMsICdjb250ZW50LXR5cGUnKSkge1xuICAgICAgICAgIGhlYWRlcnNTZXQoaGVhZGVycywgJ2NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjcmVhdGUoaW5pdCwge1xuICAgICAgICAgIGJvZHk6IGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigwLCAkdG9TdHJpbmcoYm9keSkpLFxuICAgICAgICAgIGhlYWRlcnM6IGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigwLCBoZWFkZXJzKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IHJldHVybiBpbml0O1xuICB9O1xuXG4gIGlmIChpc0NhbGxhYmxlKG5hdGl2ZUZldGNoKSkge1xuICAgICQoeyBnbG9iYWw6IHRydWUsIGVudW1lcmFibGU6IHRydWUsIGRvbnRDYWxsR2V0U2V0OiB0cnVlLCBmb3JjZWQ6IHRydWUgfSwge1xuICAgICAgZmV0Y2g6IGZ1bmN0aW9uIGZldGNoKGlucHV0IC8qICwgaW5pdCAqLykge1xuICAgICAgICByZXR1cm4gbmF0aXZlRmV0Y2goaW5wdXQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gd3JhcFJlcXVlc3RPcHRpb25zKGFyZ3VtZW50c1sxXSkgOiB7fSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpZiAoaXNDYWxsYWJsZShOYXRpdmVSZXF1ZXN0KSkge1xuICAgIHZhciBSZXF1ZXN0Q29uc3RydWN0b3IgPSBmdW5jdGlvbiBSZXF1ZXN0KGlucHV0IC8qICwgaW5pdCAqLykge1xuICAgICAgYW5JbnN0YW5jZSh0aGlzLCBSZXF1ZXN0UHJvdG90eXBlKTtcbiAgICAgIHJldHVybiBuZXcgTmF0aXZlUmVxdWVzdChpbnB1dCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyB3cmFwUmVxdWVzdE9wdGlvbnMoYXJndW1lbnRzWzFdKSA6IHt9KTtcbiAgICB9O1xuXG4gICAgUmVxdWVzdFByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFJlcXVlc3RDb25zdHJ1Y3RvcjtcbiAgICBSZXF1ZXN0Q29uc3RydWN0b3IucHJvdG90eXBlID0gUmVxdWVzdFByb3RvdHlwZTtcblxuICAgICQoeyBnbG9iYWw6IHRydWUsIGNvbnN0cnVjdG9yOiB0cnVlLCBkb250Q2FsbEdldFNldDogdHJ1ZSwgZm9yY2VkOiB0cnVlIH0sIHtcbiAgICAgIFJlcXVlc3Q6IFJlcXVlc3RDb25zdHJ1Y3RvclxuICAgIH0pO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBVUkxTZWFyY2hQYXJhbXM6IFVSTFNlYXJjaFBhcmFtc0NvbnN0cnVjdG9yLFxuICBnZXRTdGF0ZTogZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3ZhbGlkYXRlLWFyZ3VtZW50cy1sZW5ndGgnKTtcblxudmFyICRVUkxTZWFyY2hQYXJhbXMgPSBVUkxTZWFyY2hQYXJhbXM7XG52YXIgVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlID0gJFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGU7XG52YXIgYXBwZW5kID0gdW5jdXJyeVRoaXMoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLmFwcGVuZCk7XG52YXIgJGRlbGV0ZSA9IHVuY3VycnlUaGlzKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZVsnZGVsZXRlJ10pO1xudmFyIGZvckVhY2ggPSB1bmN1cnJ5VGhpcyhVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUuZm9yRWFjaCk7XG52YXIgcHVzaCA9IHVuY3VycnlUaGlzKFtdLnB1c2gpO1xudmFyIHBhcmFtcyA9IG5ldyAkVVJMU2VhcmNoUGFyYW1zKCdhPTEmYT0yJmI9MycpO1xuXG5wYXJhbXNbJ2RlbGV0ZSddKCdhJywgMSk7XG4vLyBgdW5kZWZpbmVkYCBjYXNlIGlzIGEgQ2hyb21pdW0gMTE3IGJ1Z1xuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MTQyMjJcbnBhcmFtc1snZGVsZXRlJ10oJ2InLCB1bmRlZmluZWQpO1xuXG5pZiAocGFyYW1zICsgJycgIT09ICdhPTInKSB7XG4gIGRlZmluZUJ1aWx0SW4oVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLCAnZGVsZXRlJywgZnVuY3Rpb24gKG5hbWUgLyogLCB2YWx1ZSAqLykge1xuICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciAkdmFsdWUgPSBsZW5ndGggPCAyID8gdW5kZWZpbmVkIDogYXJndW1lbnRzWzFdO1xuICAgIGlmIChsZW5ndGggJiYgJHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiAkZGVsZXRlKHRoaXMsIG5hbWUpO1xuICAgIHZhciBlbnRyaWVzID0gW107XG4gICAgZm9yRWFjaCh0aGlzLCBmdW5jdGlvbiAodiwgaykgeyAvLyBhbHNvIHZhbGlkYXRlcyBgdGhpc2BcbiAgICAgIHB1c2goZW50cmllcywgeyBrZXk6IGssIHZhbHVlOiB2IH0pO1xuICAgIH0pO1xuICAgIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGxlbmd0aCwgMSk7XG4gICAgdmFyIGtleSA9IHRvU3RyaW5nKG5hbWUpO1xuICAgIHZhciB2YWx1ZSA9IHRvU3RyaW5nKCR2YWx1ZSk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgZGluZGV4ID0gMDtcbiAgICB2YXIgZm91bmQgPSBmYWxzZTtcbiAgICB2YXIgZW50cmllc0xlbmd0aCA9IGVudHJpZXMubGVuZ3RoO1xuICAgIHZhciBlbnRyeTtcbiAgICB3aGlsZSAoaW5kZXggPCBlbnRyaWVzTGVuZ3RoKSB7XG4gICAgICBlbnRyeSA9IGVudHJpZXNbaW5kZXgrK107XG4gICAgICBpZiAoZm91bmQgfHwgZW50cnkua2V5ID09PSBrZXkpIHtcbiAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAkZGVsZXRlKHRoaXMsIGVudHJ5LmtleSk7XG4gICAgICB9IGVsc2UgZGluZGV4Kys7XG4gICAgfVxuICAgIHdoaWxlIChkaW5kZXggPCBlbnRyaWVzTGVuZ3RoKSB7XG4gICAgICBlbnRyeSA9IGVudHJpZXNbZGluZGV4KytdO1xuICAgICAgaWYgKCEoZW50cnkua2V5ID09PSBrZXkgJiYgZW50cnkudmFsdWUgPT09IHZhbHVlKSkgYXBwZW5kKHRoaXMsIGVudHJ5LmtleSwgZW50cnkudmFsdWUpO1xuICAgIH1cbiAgfSwgeyBlbnVtZXJhYmxlOiB0cnVlLCB1bnNhZmU6IHRydWUgfSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZGVmaW5lQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4nKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoJyk7XG5cbnZhciAkVVJMU2VhcmNoUGFyYW1zID0gVVJMU2VhcmNoUGFyYW1zO1xudmFyIFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSA9ICRVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlO1xudmFyIGdldEFsbCA9IHVuY3VycnlUaGlzKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZS5nZXRBbGwpO1xudmFyICRoYXMgPSB1bmN1cnJ5VGhpcyhVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUuaGFzKTtcbnZhciBwYXJhbXMgPSBuZXcgJFVSTFNlYXJjaFBhcmFtcygnYT0xJyk7XG5cbi8vIGB1bmRlZmluZWRgIGNhc2UgaXMgYSBDaHJvbWl1bSAxMTcgYnVnXG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0xNDIyMlxuaWYgKHBhcmFtcy5oYXMoJ2EnLCAyKSB8fCAhcGFyYW1zLmhhcygnYScsIHVuZGVmaW5lZCkpIHtcbiAgZGVmaW5lQnVpbHRJbihVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUsICdoYXMnLCBmdW5jdGlvbiBoYXMobmFtZSAvKiAsIHZhbHVlICovKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyICR2YWx1ZSA9IGxlbmd0aCA8IDIgPyB1bmRlZmluZWQgOiBhcmd1bWVudHNbMV07XG4gICAgaWYgKGxlbmd0aCAmJiAkdmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuICRoYXModGhpcywgbmFtZSk7XG4gICAgdmFyIHZhbHVlcyA9IGdldEFsbCh0aGlzLCBuYW1lKTsgLy8gYWxzbyB2YWxpZGF0ZXMgYHRoaXNgXG4gICAgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGgobGVuZ3RoLCAxKTtcbiAgICB2YXIgdmFsdWUgPSB0b1N0cmluZygkdmFsdWUpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgd2hpbGUgKGluZGV4IDwgdmFsdWVzLmxlbmd0aCkge1xuICAgICAgaWYgKHZhbHVlc1tpbmRleCsrXSA9PT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIH0gcmV0dXJuIGZhbHNlO1xuICB9LCB7IGVudW1lcmFibGU6IHRydWUsIHVuc2FmZTogdHJ1ZSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IFJlbW92ZSB0aGlzIG1vZHVsZSBmcm9tIGBjb3JlLWpzQDRgIHNpbmNlIGl0J3MgcmVwbGFjZWQgdG8gbW9kdWxlIGJlbG93XG5yZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5jb25zdHJ1Y3RvcicpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgZGVmaW5lQnVpbHRJbkFjY2Vzc29yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3NvcicpO1xuXG52YXIgVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlID0gVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZTtcbnZhciBmb3JFYWNoID0gdW5jdXJyeVRoaXMoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLmZvckVhY2gpO1xuXG4vLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5zaXplYCBnZXR0ZXJcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvdXJsL3B1bGwvNzM0XG5pZiAoREVTQ1JJUFRPUlMgJiYgISgnc2l6ZScgaW4gVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlKSkge1xuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLCAnc2l6ZScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uIHNpemUoKSB7XG4gICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgZm9yRWFjaCh0aGlzLCBmdW5jdGlvbiAoKSB7IGNvdW50Kys7IH0pO1xuICAgICAgcmV0dXJuIGNvdW50O1xuICAgIH0sXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IHRydWVcbiAgfSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdmFsaWRhdGUtYXJndW1lbnRzLWxlbmd0aCcpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIFVTRV9OQVRJVkVfVVJMID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VybC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKTtcblxudmFyIFVSTCA9IGdldEJ1aWx0SW4oJ1VSTCcpO1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvaXNzdWVzLzQ3NTA1XG4vLyBodHRwczovL2dpdGh1Yi5jb20vZGVub2xhbmQvZGVuby9pc3N1ZXMvMTg4OTNcbnZhciBUSFJPV1NfV0lUSE9VVF9BUkdVTUVOVFMgPSBVU0VfTkFUSVZFX1VSTCAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIFVSTC5jYW5QYXJzZSgpO1xufSk7XG5cbi8vIEJ1biB+IDEuMC4zMCBidWdcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9vdmVuLXNoL2J1bi9pc3N1ZXMvOTI1MFxudmFyIFdST05HX0FSSVRZID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gVVJMLmNhblBhcnNlLmxlbmd0aCAhPT0gMTtcbn0pO1xuXG4vLyBgVVJMLmNhblBhcnNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1jYW5wYXJzZVxuJCh7IHRhcmdldDogJ1VSTCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogIVRIUk9XU19XSVRIT1VUX0FSR1VNRU5UUyB8fCBXUk9OR19BUklUWSB9LCB7XG4gIGNhblBhcnNlOiBmdW5jdGlvbiBjYW5QYXJzZSh1cmwpIHtcbiAgICB2YXIgbGVuZ3RoID0gdmFsaWRhdGVBcmd1bWVudHNMZW5ndGgoYXJndW1lbnRzLmxlbmd0aCwgMSk7XG4gICAgdmFyIHVybFN0cmluZyA9IHRvU3RyaW5nKHVybCk7XG4gICAgdmFyIGJhc2UgPSBsZW5ndGggPCAyIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogdG9TdHJpbmcoYXJndW1lbnRzWzFdKTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuICEhbmV3IFVSTCh1cmxTdHJpbmcsIGJhc2UpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IGluIGNvcmUtanNANCwgbW92ZSAvbW9kdWxlcy8gZGVwZW5kZW5jaWVzIHRvIHB1YmxpYyBlbnRyaWVzIGZvciBiZXR0ZXIgb3B0aW1pemF0aW9uIGJ5IHRvb2xzIGxpa2UgYHByZXNldC1lbnZgXG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnN0cmluZy5pdGVyYXRvcicpO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBVU0VfTkFUSVZFX1VSTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91cmwtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgZGVmaW5lQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVCdWlsdEluQWNjZXNzb3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1pbnN0YW5jZScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1hc3NpZ24nKTtcbnZhciBhcnJheUZyb20gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktZnJvbScpO1xudmFyIGFycmF5U2xpY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc2xpY2UnKTtcbnZhciBjb2RlQXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLW11bHRpYnl0ZScpLmNvZGVBdDtcbnZhciB0b0FTQ0lJID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1wdW55Y29kZS10by1hc2NpaScpO1xudmFyICR0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3ZhbGlkYXRlLWFyZ3VtZW50cy1sZW5ndGgnKTtcbnZhciBVUkxTZWFyY2hQYXJhbXNNb2R1bGUgPSByZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5jb25zdHJ1Y3RvcicpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcblxudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBnZXRJbnRlcm5hbFVSTFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IoJ1VSTCcpO1xudmFyIFVSTFNlYXJjaFBhcmFtcyA9IFVSTFNlYXJjaFBhcmFtc01vZHVsZS5VUkxTZWFyY2hQYXJhbXM7XG52YXIgZ2V0SW50ZXJuYWxTZWFyY2hQYXJhbXNTdGF0ZSA9IFVSTFNlYXJjaFBhcmFtc01vZHVsZS5nZXRTdGF0ZTtcblxudmFyIE5hdGl2ZVVSTCA9IGdsb2JhbFRoaXMuVVJMO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbFRoaXMuVHlwZUVycm9yO1xudmFyIHBhcnNlSW50ID0gZ2xvYmFsVGhpcy5wYXJzZUludDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG52YXIgcG93ID0gTWF0aC5wb3c7XG52YXIgY2hhckF0ID0gdW5jdXJyeVRoaXMoJycuY2hhckF0KTtcbnZhciBleGVjID0gdW5jdXJyeVRoaXMoLy4vLmV4ZWMpO1xudmFyIGpvaW4gPSB1bmN1cnJ5VGhpcyhbXS5qb2luKTtcbnZhciBudW1iZXJUb1N0cmluZyA9IHVuY3VycnlUaGlzKDEuMC50b1N0cmluZyk7XG52YXIgcG9wID0gdW5jdXJyeVRoaXMoW10ucG9wKTtcbnZhciBwdXNoID0gdW5jdXJyeVRoaXMoW10ucHVzaCk7XG52YXIgcmVwbGFjZSA9IHVuY3VycnlUaGlzKCcnLnJlcGxhY2UpO1xudmFyIHNoaWZ0ID0gdW5jdXJyeVRoaXMoW10uc2hpZnQpO1xudmFyIHNwbGl0ID0gdW5jdXJyeVRoaXMoJycuc3BsaXQpO1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xudmFyIHRvTG93ZXJDYXNlID0gdW5jdXJyeVRoaXMoJycudG9Mb3dlckNhc2UpO1xudmFyIHVuc2hpZnQgPSB1bmN1cnJ5VGhpcyhbXS51bnNoaWZ0KTtcblxudmFyIElOVkFMSURfQVVUSE9SSVRZID0gJ0ludmFsaWQgYXV0aG9yaXR5JztcbnZhciBJTlZBTElEX1NDSEVNRSA9ICdJbnZhbGlkIHNjaGVtZSc7XG52YXIgSU5WQUxJRF9IT1NUID0gJ0ludmFsaWQgaG9zdCc7XG52YXIgSU5WQUxJRF9QT1JUID0gJ0ludmFsaWQgcG9ydCc7XG5cbnZhciBBTFBIQSA9IC9bYS16XS9pO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlZ2V4cC9uby1vYnNjdXJlLXJhbmdlIC0tIHNhZmVcbnZhciBBTFBIQU5VTUVSSUMgPSAvW1xcZCstLmEtel0vaTtcbnZhciBESUdJVCA9IC9cXGQvO1xudmFyIEhFWF9TVEFSVCA9IC9eMHgvaTtcbnZhciBPQ1QgPSAvXlswLTddKyQvO1xudmFyIERFQyA9IC9eXFxkKyQvO1xudmFyIEhFWCA9IC9eW1xcZGEtZl0rJC9pO1xuLyogZXNsaW50LWRpc2FibGUgcmVnZXhwL25vLWNvbnRyb2wtY2hhcmFjdGVyIC0tIHNhZmUgKi9cbnZhciBGT1JCSURERU5fSE9TVF9DT0RFX1BPSU5UID0gL1tcXDBcXHRcXG5cXHIgIyUvOjw+P0BbXFxcXFxcXV58XS87XG52YXIgRk9SQklEREVOX0hPU1RfQ09ERV9QT0lOVF9FWENMVURJTkdfUEVSQ0VOVCA9IC9bXFwwXFx0XFxuXFxyICMvOjw+P0BbXFxcXFxcXV58XS87XG52YXIgTEVBRElOR19DMF9DT05UUk9MX09SX1NQQUNFID0gL15bXFx1MDAwMC1cXHUwMDIwXSsvO1xudmFyIFRSQUlMSU5HX0MwX0NPTlRST0xfT1JfU1BBQ0UgPSAvKF58W15cXHUwMDAwLVxcdTAwMjBdKVtcXHUwMDAwLVxcdTAwMjBdKyQvO1xudmFyIFRBQl9BTkRfTkVXX0xJTkUgPSAvW1xcdFxcblxccl0vZztcbi8qIGVzbGludC1lbmFibGUgcmVnZXhwL25vLWNvbnRyb2wtY2hhcmFjdGVyIC0tIHNhZmUgKi9cbnZhciBFT0Y7XG5cbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jaXB2NC1udW1iZXItcGFyc2VyXG52YXIgcGFyc2VJUHY0ID0gZnVuY3Rpb24gKGlucHV0KSB7XG4gIHZhciBwYXJ0cyA9IHNwbGl0KGlucHV0LCAnLicpO1xuICB2YXIgcGFydHNMZW5ndGgsIG51bWJlcnMsIGluZGV4LCBwYXJ0LCByYWRpeCwgbnVtYmVyLCBpcHY0O1xuICBpZiAocGFydHMubGVuZ3RoICYmIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdID09PSAnJykge1xuICAgIHBhcnRzLmxlbmd0aC0tO1xuICB9XG4gIHBhcnRzTGVuZ3RoID0gcGFydHMubGVuZ3RoO1xuICBpZiAocGFydHNMZW5ndGggPiA0KSByZXR1cm4gaW5wdXQ7XG4gIG51bWJlcnMgPSBbXTtcbiAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgcGFydHNMZW5ndGg7IGluZGV4KyspIHtcbiAgICBwYXJ0ID0gcGFydHNbaW5kZXhdO1xuICAgIGlmIChwYXJ0ID09PSAnJykgcmV0dXJuIGlucHV0O1xuICAgIHJhZGl4ID0gMTA7XG4gICAgaWYgKHBhcnQubGVuZ3RoID4gMSAmJiBjaGFyQXQocGFydCwgMCkgPT09ICcwJykge1xuICAgICAgcmFkaXggPSBleGVjKEhFWF9TVEFSVCwgcGFydCkgPyAxNiA6IDg7XG4gICAgICBwYXJ0ID0gc3RyaW5nU2xpY2UocGFydCwgcmFkaXggPT09IDggPyAxIDogMik7XG4gICAgfVxuICAgIGlmIChwYXJ0ID09PSAnJykge1xuICAgICAgbnVtYmVyID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFleGVjKHJhZGl4ID09PSAxMCA/IERFQyA6IHJhZGl4ID09PSA4ID8gT0NUIDogSEVYLCBwYXJ0KSkgcmV0dXJuIGlucHV0O1xuICAgICAgbnVtYmVyID0gcGFyc2VJbnQocGFydCwgcmFkaXgpO1xuICAgIH1cbiAgICBwdXNoKG51bWJlcnMsIG51bWJlcik7XG4gIH1cbiAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgcGFydHNMZW5ndGg7IGluZGV4KyspIHtcbiAgICBudW1iZXIgPSBudW1iZXJzW2luZGV4XTtcbiAgICBpZiAoaW5kZXggPT09IHBhcnRzTGVuZ3RoIC0gMSkge1xuICAgICAgaWYgKG51bWJlciA+PSBwb3coMjU2LCA1IC0gcGFydHNMZW5ndGgpKSByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2UgaWYgKG51bWJlciA+IDI1NSkgcmV0dXJuIG51bGw7XG4gIH1cbiAgaXB2NCA9IHBvcChudW1iZXJzKTtcbiAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbnVtYmVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICBpcHY0ICs9IG51bWJlcnNbaW5kZXhdICogcG93KDI1NiwgMyAtIGluZGV4KTtcbiAgfVxuICByZXR1cm4gaXB2NDtcbn07XG5cbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1pcHY2LXBhcnNlclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1zdGF0ZW1lbnRzIC0tIFRPRE9cbnZhciBwYXJzZUlQdjYgPSBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgdmFyIGFkZHJlc3MgPSBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF07XG4gIHZhciBwaWVjZUluZGV4ID0gMDtcbiAgdmFyIGNvbXByZXNzID0gbnVsbDtcbiAgdmFyIHBvaW50ZXIgPSAwO1xuICB2YXIgdmFsdWUsIGxlbmd0aCwgbnVtYmVyc1NlZW4sIGlwdjRQaWVjZSwgbnVtYmVyLCBzd2Fwcywgc3dhcDtcblxuICB2YXIgY2hyID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBjaGFyQXQoaW5wdXQsIHBvaW50ZXIpO1xuICB9O1xuXG4gIGlmIChjaHIoKSA9PT0gJzonKSB7XG4gICAgaWYgKGNoYXJBdChpbnB1dCwgMSkgIT09ICc6JykgcmV0dXJuO1xuICAgIHBvaW50ZXIgKz0gMjtcbiAgICBwaWVjZUluZGV4Kys7XG4gICAgY29tcHJlc3MgPSBwaWVjZUluZGV4O1xuICB9XG4gIHdoaWxlIChjaHIoKSkge1xuICAgIGlmIChwaWVjZUluZGV4ID09PSA4KSByZXR1cm47XG4gICAgaWYgKGNocigpID09PSAnOicpIHtcbiAgICAgIGlmIChjb21wcmVzcyAhPT0gbnVsbCkgcmV0dXJuO1xuICAgICAgcG9pbnRlcisrO1xuICAgICAgcGllY2VJbmRleCsrO1xuICAgICAgY29tcHJlc3MgPSBwaWVjZUluZGV4O1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHZhbHVlID0gbGVuZ3RoID0gMDtcbiAgICB3aGlsZSAobGVuZ3RoIDwgNCAmJiBleGVjKEhFWCwgY2hyKCkpKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlICogMTYgKyBwYXJzZUludChjaHIoKSwgMTYpO1xuICAgICAgcG9pbnRlcisrO1xuICAgICAgbGVuZ3RoKys7XG4gICAgfVxuICAgIGlmIChjaHIoKSA9PT0gJy4nKSB7XG4gICAgICBpZiAobGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgICBwb2ludGVyIC09IGxlbmd0aDtcbiAgICAgIGlmIChwaWVjZUluZGV4ID4gNikgcmV0dXJuO1xuICAgICAgbnVtYmVyc1NlZW4gPSAwO1xuICAgICAgd2hpbGUgKGNocigpKSB7XG4gICAgICAgIGlwdjRQaWVjZSA9IG51bGw7XG4gICAgICAgIGlmIChudW1iZXJzU2VlbiA+IDApIHtcbiAgICAgICAgICBpZiAoY2hyKCkgPT09ICcuJyAmJiBudW1iZXJzU2VlbiA8IDQpIHBvaW50ZXIrKztcbiAgICAgICAgICBlbHNlIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWV4ZWMoRElHSVQsIGNocigpKSkgcmV0dXJuO1xuICAgICAgICB3aGlsZSAoZXhlYyhESUdJVCwgY2hyKCkpKSB7XG4gICAgICAgICAgbnVtYmVyID0gcGFyc2VJbnQoY2hyKCksIDEwKTtcbiAgICAgICAgICBpZiAoaXB2NFBpZWNlID09PSBudWxsKSBpcHY0UGllY2UgPSBudW1iZXI7XG4gICAgICAgICAgZWxzZSBpZiAoaXB2NFBpZWNlID09PSAwKSByZXR1cm47XG4gICAgICAgICAgZWxzZSBpcHY0UGllY2UgPSBpcHY0UGllY2UgKiAxMCArIG51bWJlcjtcbiAgICAgICAgICBpZiAoaXB2NFBpZWNlID4gMjU1KSByZXR1cm47XG4gICAgICAgICAgcG9pbnRlcisrO1xuICAgICAgICB9XG4gICAgICAgIGFkZHJlc3NbcGllY2VJbmRleF0gPSBhZGRyZXNzW3BpZWNlSW5kZXhdICogMjU2ICsgaXB2NFBpZWNlO1xuICAgICAgICBudW1iZXJzU2VlbisrO1xuICAgICAgICBpZiAobnVtYmVyc1NlZW4gPT09IDIgfHwgbnVtYmVyc1NlZW4gPT09IDQpIHBpZWNlSW5kZXgrKztcbiAgICAgIH1cbiAgICAgIGlmIChudW1iZXJzU2VlbiAhPT0gNCkgcmV0dXJuO1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIGlmIChjaHIoKSA9PT0gJzonKSB7XG4gICAgICBwb2ludGVyKys7XG4gICAgICBpZiAoIWNocigpKSByZXR1cm47XG4gICAgfSBlbHNlIGlmIChjaHIoKSkgcmV0dXJuO1xuICAgIGFkZHJlc3NbcGllY2VJbmRleCsrXSA9IHZhbHVlO1xuICB9XG4gIGlmIChjb21wcmVzcyAhPT0gbnVsbCkge1xuICAgIHN3YXBzID0gcGllY2VJbmRleCAtIGNvbXByZXNzO1xuICAgIHBpZWNlSW5kZXggPSA3O1xuICAgIHdoaWxlIChwaWVjZUluZGV4ICE9PSAwICYmIHN3YXBzID4gMCkge1xuICAgICAgc3dhcCA9IGFkZHJlc3NbcGllY2VJbmRleF07XG4gICAgICBhZGRyZXNzW3BpZWNlSW5kZXgtLV0gPSBhZGRyZXNzW2NvbXByZXNzICsgc3dhcHMgLSAxXTtcbiAgICAgIGFkZHJlc3NbY29tcHJlc3MgKyAtLXN3YXBzXSA9IHN3YXA7XG4gICAgfVxuICB9IGVsc2UgaWYgKHBpZWNlSW5kZXggIT09IDgpIHJldHVybjtcbiAgcmV0dXJuIGFkZHJlc3M7XG59O1xuXG52YXIgZmluZExvbmdlc3RaZXJvU2VxdWVuY2UgPSBmdW5jdGlvbiAoaXB2Nikge1xuICB2YXIgbWF4SW5kZXggPSBudWxsO1xuICB2YXIgbWF4TGVuZ3RoID0gMTtcbiAgdmFyIGN1cnJTdGFydCA9IG51bGw7XG4gIHZhciBjdXJyTGVuZ3RoID0gMDtcbiAgdmFyIGluZGV4ID0gMDtcbiAgZm9yICg7IGluZGV4IDwgODsgaW5kZXgrKykge1xuICAgIGlmIChpcHY2W2luZGV4XSAhPT0gMCkge1xuICAgICAgaWYgKGN1cnJMZW5ndGggPiBtYXhMZW5ndGgpIHtcbiAgICAgICAgbWF4SW5kZXggPSBjdXJyU3RhcnQ7XG4gICAgICAgIG1heExlbmd0aCA9IGN1cnJMZW5ndGg7XG4gICAgICB9XG4gICAgICBjdXJyU3RhcnQgPSBudWxsO1xuICAgICAgY3Vyckxlbmd0aCA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjdXJyU3RhcnQgPT09IG51bGwpIGN1cnJTdGFydCA9IGluZGV4O1xuICAgICAgKytjdXJyTGVuZ3RoO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY3Vyckxlbmd0aCA+IG1heExlbmd0aCA/IGN1cnJTdGFydCA6IG1heEluZGV4O1xufTtcblxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNob3N0LXNlcmlhbGl6aW5nXG52YXIgc2VyaWFsaXplSG9zdCA9IGZ1bmN0aW9uIChob3N0KSB7XG4gIHZhciByZXN1bHQsIGluZGV4LCBjb21wcmVzcywgaWdub3JlMDtcblxuICAvLyBpcHY0XG4gIGlmICh0eXBlb2YgaG9zdCA9PSAnbnVtYmVyJykge1xuICAgIHJlc3VsdCA9IFtdO1xuICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IDQ7IGluZGV4KyspIHtcbiAgICAgIHVuc2hpZnQocmVzdWx0LCBob3N0ICUgMjU2KTtcbiAgICAgIGhvc3QgPSBmbG9vcihob3N0IC8gMjU2KTtcbiAgICB9XG4gICAgcmV0dXJuIGpvaW4ocmVzdWx0LCAnLicpO1xuICB9XG5cbiAgLy8gaXB2NlxuICBpZiAodHlwZW9mIGhvc3QgPT0gJ29iamVjdCcpIHtcbiAgICByZXN1bHQgPSAnJztcbiAgICBjb21wcmVzcyA9IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGhvc3QpO1xuICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IDg7IGluZGV4KyspIHtcbiAgICAgIGlmIChpZ25vcmUwICYmIGhvc3RbaW5kZXhdID09PSAwKSBjb250aW51ZTtcbiAgICAgIGlmIChpZ25vcmUwKSBpZ25vcmUwID0gZmFsc2U7XG4gICAgICBpZiAoY29tcHJlc3MgPT09IGluZGV4KSB7XG4gICAgICAgIHJlc3VsdCArPSBpbmRleCA/ICc6JyA6ICc6Oic7XG4gICAgICAgIGlnbm9yZTAgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ICs9IG51bWJlclRvU3RyaW5nKGhvc3RbaW5kZXhdLCAxNik7XG4gICAgICAgIGlmIChpbmRleCA8IDcpIHJlc3VsdCArPSAnOic7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAnWycgKyByZXN1bHQgKyAnXSc7XG4gIH1cblxuICByZXR1cm4gaG9zdDtcbn07XG5cbnZhciBDMENvbnRyb2xQZXJjZW50RW5jb2RlU2V0ID0ge307XG52YXIgZnJhZ21lbnRQZXJjZW50RW5jb2RlU2V0ID0gYXNzaWduKHt9LCBDMENvbnRyb2xQZXJjZW50RW5jb2RlU2V0LCB7XG4gICcgJzogMSwgJ1wiJzogMSwgJzwnOiAxLCAnPic6IDEsICdgJzogMVxufSk7XG52YXIgcGF0aFBlcmNlbnRFbmNvZGVTZXQgPSBhc3NpZ24oe30sIGZyYWdtZW50UGVyY2VudEVuY29kZVNldCwge1xuICAnIyc6IDEsICc/JzogMSwgJ3snOiAxLCAnfSc6IDFcbn0pO1xudmFyIHVzZXJpbmZvUGVyY2VudEVuY29kZVNldCA9IGFzc2lnbih7fSwgcGF0aFBlcmNlbnRFbmNvZGVTZXQsIHtcbiAgJy8nOiAxLCAnOic6IDEsICc7JzogMSwgJz0nOiAxLCAnQCc6IDEsICdbJzogMSwgJ1xcXFwnOiAxLCAnXSc6IDEsICdeJzogMSwgJ3wnOiAxXG59KTtcblxudmFyIHBlcmNlbnRFbmNvZGUgPSBmdW5jdGlvbiAoY2hyLCBzZXQpIHtcbiAgdmFyIGNvZGUgPSBjb2RlQXQoY2hyLCAwKTtcbiAgcmV0dXJuIGNvZGUgPiAweDIwICYmIGNvZGUgPCAweDdGICYmICFoYXNPd24oc2V0LCBjaHIpID8gY2hyIDogZW5jb2RlVVJJQ29tcG9uZW50KGNocik7XG59O1xuXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI3NwZWNpYWwtc2NoZW1lXG52YXIgc3BlY2lhbFNjaGVtZXMgPSB7XG4gIGZ0cDogMjEsXG4gIGZpbGU6IG51bGwsXG4gIGh0dHA6IDgwLFxuICBodHRwczogNDQzLFxuICB3czogODAsXG4gIHdzczogNDQzXG59O1xuXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI3dpbmRvd3MtZHJpdmUtbGV0dGVyXG52YXIgaXNXaW5kb3dzRHJpdmVMZXR0ZXIgPSBmdW5jdGlvbiAoc3RyaW5nLCBub3JtYWxpemVkKSB7XG4gIHZhciBzZWNvbmQ7XG4gIHJldHVybiBzdHJpbmcubGVuZ3RoID09PSAyICYmIGV4ZWMoQUxQSEEsIGNoYXJBdChzdHJpbmcsIDApKVxuICAgICYmICgoc2Vjb25kID0gY2hhckF0KHN0cmluZywgMSkpID09PSAnOicgfHwgKCFub3JtYWxpemVkICYmIHNlY29uZCA9PT0gJ3wnKSk7XG59O1xuXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI3N0YXJ0LXdpdGgtYS13aW5kb3dzLWRyaXZlLWxldHRlclxudmFyIHN0YXJ0c1dpdGhXaW5kb3dzRHJpdmVMZXR0ZXIgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHZhciB0aGlyZDtcbiAgcmV0dXJuIHN0cmluZy5sZW5ndGggPiAxICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKHN0cmluZ1NsaWNlKHN0cmluZywgMCwgMikpICYmIChcbiAgICBzdHJpbmcubGVuZ3RoID09PSAyIHx8XG4gICAgKCh0aGlyZCA9IGNoYXJBdChzdHJpbmcsIDIpKSA9PT0gJy8nIHx8IHRoaXJkID09PSAnXFxcXCcgfHwgdGhpcmQgPT09ICc/JyB8fCB0aGlyZCA9PT0gJyMnKVxuICApO1xufTtcblxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNzaW5nbGUtZG90LXBhdGgtc2VnbWVudFxudmFyIGlzU2luZ2xlRG90ID0gZnVuY3Rpb24gKHNlZ21lbnQpIHtcbiAgcmV0dXJuIHNlZ21lbnQgPT09ICcuJyB8fCB0b0xvd2VyQ2FzZShzZWdtZW50KSA9PT0gJyUyZSc7XG59O1xuXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvdWJsZS1kb3QtcGF0aC1zZWdtZW50XG52YXIgaXNEb3VibGVEb3QgPSBmdW5jdGlvbiAoc2VnbWVudCkge1xuICBzZWdtZW50ID0gdG9Mb3dlckNhc2Uoc2VnbWVudCk7XG4gIHJldHVybiBzZWdtZW50ID09PSAnLi4nIHx8IHNlZ21lbnQgPT09ICclMmUuJyB8fCBzZWdtZW50ID09PSAnLiUyZScgfHwgc2VnbWVudCA9PT0gJyUyZSUyZSc7XG59O1xuXG4vLyBTdGF0ZXM6XG52YXIgU0NIRU1FX1NUQVJUID0ge307XG52YXIgU0NIRU1FID0ge307XG52YXIgTk9fU0NIRU1FID0ge307XG52YXIgU1BFQ0lBTF9SRUxBVElWRV9PUl9BVVRIT1JJVFkgPSB7fTtcbnZhciBQQVRIX09SX0FVVEhPUklUWSA9IHt9O1xudmFyIFJFTEFUSVZFID0ge307XG52YXIgUkVMQVRJVkVfU0xBU0ggPSB7fTtcbnZhciBTUEVDSUFMX0FVVEhPUklUWV9TTEFTSEVTID0ge307XG52YXIgU1BFQ0lBTF9BVVRIT1JJVFlfSUdOT1JFX1NMQVNIRVMgPSB7fTtcbnZhciBBVVRIT1JJVFkgPSB7fTtcbnZhciBIT1NUID0ge307XG52YXIgSE9TVE5BTUUgPSB7fTtcbnZhciBQT1JUID0ge307XG52YXIgRklMRSA9IHt9O1xudmFyIEZJTEVfU0xBU0ggPSB7fTtcbnZhciBGSUxFX0hPU1QgPSB7fTtcbnZhciBQQVRIX1NUQVJUID0ge307XG52YXIgUEFUSCA9IHt9O1xudmFyIENBTk5PVF9CRV9BX0JBU0VfVVJMX1BBVEggPSB7fTtcbnZhciBRVUVSWSA9IHt9O1xudmFyIEZSQUdNRU5UID0ge307XG5cbnZhciBVUkxTdGF0ZSA9IGZ1bmN0aW9uICh1cmwsIGlzQmFzZSwgYmFzZSkge1xuICB2YXIgdXJsU3RyaW5nID0gJHRvU3RyaW5nKHVybCk7XG4gIHZhciBiYXNlU3RhdGUsIGZhaWx1cmUsIHNlYXJjaFBhcmFtcztcbiAgaWYgKGlzQmFzZSkge1xuICAgIGZhaWx1cmUgPSB0aGlzLnBhcnNlKHVybFN0cmluZyk7XG4gICAgaWYgKGZhaWx1cmUpIHRocm93IG5ldyBUeXBlRXJyb3IoZmFpbHVyZSk7XG4gICAgdGhpcy5zZWFyY2hQYXJhbXMgPSBudWxsO1xuICB9IGVsc2Uge1xuICAgIGlmIChiYXNlICE9PSB1bmRlZmluZWQpIGJhc2VTdGF0ZSA9IG5ldyBVUkxTdGF0ZShiYXNlLCB0cnVlKTtcbiAgICBmYWlsdXJlID0gdGhpcy5wYXJzZSh1cmxTdHJpbmcsIG51bGwsIGJhc2VTdGF0ZSk7XG4gICAgaWYgKGZhaWx1cmUpIHRocm93IG5ldyBUeXBlRXJyb3IoZmFpbHVyZSk7XG4gICAgc2VhcmNoUGFyYW1zID0gZ2V0SW50ZXJuYWxTZWFyY2hQYXJhbXNTdGF0ZShuZXcgVVJMU2VhcmNoUGFyYW1zKCkpO1xuICAgIHNlYXJjaFBhcmFtcy5iaW5kVVJMKHRoaXMpO1xuICAgIHRoaXMuc2VhcmNoUGFyYW1zID0gc2VhcmNoUGFyYW1zO1xuICB9XG59O1xuXG5VUkxTdGF0ZS5wcm90b3R5cGUgPSB7XG4gIHR5cGU6ICdVUkwnLFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI3VybC1wYXJzaW5nXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtc3RhdGVtZW50cyAtLSBUT0RPXG4gIHBhcnNlOiBmdW5jdGlvbiAoaW5wdXQsIHN0YXRlT3ZlcnJpZGUsIGJhc2UpIHtcbiAgICB2YXIgdXJsID0gdGhpcztcbiAgICB2YXIgc3RhdGUgPSBzdGF0ZU92ZXJyaWRlIHx8IFNDSEVNRV9TVEFSVDtcbiAgICB2YXIgcG9pbnRlciA9IDA7XG4gICAgdmFyIGJ1ZmZlciA9ICcnO1xuICAgIHZhciBzZWVuQXQgPSBmYWxzZTtcbiAgICB2YXIgc2VlbkJyYWNrZXQgPSBmYWxzZTtcbiAgICB2YXIgc2VlblBhc3N3b3JkVG9rZW4gPSBmYWxzZTtcbiAgICB2YXIgY29kZVBvaW50cywgY2hyLCBidWZmZXJDb2RlUG9pbnRzLCBmYWlsdXJlO1xuXG4gICAgaW5wdXQgPSAkdG9TdHJpbmcoaW5wdXQpO1xuXG4gICAgaWYgKCFzdGF0ZU92ZXJyaWRlKSB7XG4gICAgICB1cmwuc2NoZW1lID0gJyc7XG4gICAgICB1cmwudXNlcm5hbWUgPSAnJztcbiAgICAgIHVybC5wYXNzd29yZCA9ICcnO1xuICAgICAgdXJsLmhvc3QgPSBudWxsO1xuICAgICAgdXJsLnBvcnQgPSBudWxsO1xuICAgICAgdXJsLnBhdGggPSBbXTtcbiAgICAgIHVybC5xdWVyeSA9IG51bGw7XG4gICAgICB1cmwuZnJhZ21lbnQgPSBudWxsO1xuICAgICAgdXJsLmNhbm5vdEJlQUJhc2VVUkwgPSBmYWxzZTtcbiAgICAgIGlucHV0ID0gcmVwbGFjZShpbnB1dCwgTEVBRElOR19DMF9DT05UUk9MX09SX1NQQUNFLCAnJyk7XG4gICAgICBpbnB1dCA9IHJlcGxhY2UoaW5wdXQsIFRSQUlMSU5HX0MwX0NPTlRST0xfT1JfU1BBQ0UsICckMScpO1xuICAgIH1cblxuICAgIGlucHV0ID0gcmVwbGFjZShpbnB1dCwgVEFCX0FORF9ORVdfTElORSwgJycpO1xuXG4gICAgY29kZVBvaW50cyA9IGFycmF5RnJvbShpbnB1dCk7XG5cbiAgICB3aGlsZSAocG9pbnRlciA8PSBjb2RlUG9pbnRzLmxlbmd0aCkge1xuICAgICAgY2hyID0gY29kZVBvaW50c1twb2ludGVyXTtcbiAgICAgIHN3aXRjaCAoc3RhdGUpIHtcbiAgICAgICAgY2FzZSBTQ0hFTUVfU1RBUlQ6XG4gICAgICAgICAgaWYgKGNociAmJiBleGVjKEFMUEhBLCBjaHIpKSB7XG4gICAgICAgICAgICBidWZmZXIgKz0gdG9Mb3dlckNhc2UoY2hyKTtcbiAgICAgICAgICAgIHN0YXRlID0gU0NIRU1FO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIXN0YXRlT3ZlcnJpZGUpIHtcbiAgICAgICAgICAgIHN0YXRlID0gTk9fU0NIRU1FO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfSBlbHNlIHJldHVybiBJTlZBTElEX1NDSEVNRTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFNDSEVNRTpcbiAgICAgICAgICBpZiAoY2hyICYmIChleGVjKEFMUEhBTlVNRVJJQywgY2hyKSB8fCBjaHIgPT09ICcrJyB8fCBjaHIgPT09ICctJyB8fCBjaHIgPT09ICcuJykpIHtcbiAgICAgICAgICAgIGJ1ZmZlciArPSB0b0xvd2VyQ2FzZShjaHIpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hyID09PSAnOicpIHtcbiAgICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlICYmIChcbiAgICAgICAgICAgICAgKHVybC5pc1NwZWNpYWwoKSAhPT0gaGFzT3duKHNwZWNpYWxTY2hlbWVzLCBidWZmZXIpKSB8fFxuICAgICAgICAgICAgICAoYnVmZmVyID09PSAnZmlsZScgJiYgKHVybC5pbmNsdWRlc0NyZWRlbnRpYWxzKCkgfHwgdXJsLnBvcnQgIT09IG51bGwpKSB8fFxuICAgICAgICAgICAgICAodXJsLnNjaGVtZSA9PT0gJ2ZpbGUnICYmICF1cmwuaG9zdClcbiAgICAgICAgICAgICkpIHJldHVybjtcbiAgICAgICAgICAgIHVybC5zY2hlbWUgPSBidWZmZXI7XG4gICAgICAgICAgICBpZiAoc3RhdGVPdmVycmlkZSkge1xuICAgICAgICAgICAgICBpZiAodXJsLmlzU3BlY2lhbCgpICYmIHNwZWNpYWxTY2hlbWVzW3VybC5zY2hlbWVdID09PSB1cmwucG9ydCkgdXJsLnBvcnQgPSBudWxsO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidWZmZXIgPSAnJztcbiAgICAgICAgICAgIGlmICh1cmwuc2NoZW1lID09PSAnZmlsZScpIHtcbiAgICAgICAgICAgICAgc3RhdGUgPSBGSUxFO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh1cmwuaXNTcGVjaWFsKCkgJiYgYmFzZSAmJiBiYXNlLnNjaGVtZSA9PT0gdXJsLnNjaGVtZSkge1xuICAgICAgICAgICAgICBzdGF0ZSA9IFNQRUNJQUxfUkVMQVRJVkVfT1JfQVVUSE9SSVRZO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh1cmwuaXNTcGVjaWFsKCkpIHtcbiAgICAgICAgICAgICAgc3RhdGUgPSBTUEVDSUFMX0FVVEhPUklUWV9TTEFTSEVTO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlUG9pbnRzW3BvaW50ZXIgKyAxXSA9PT0gJy8nKSB7XG4gICAgICAgICAgICAgIHN0YXRlID0gUEFUSF9PUl9BVVRIT1JJVFk7XG4gICAgICAgICAgICAgIHBvaW50ZXIrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHVybC5jYW5ub3RCZUFCYXNlVVJMID0gdHJ1ZTtcbiAgICAgICAgICAgICAgcHVzaCh1cmwucGF0aCwgJycpO1xuICAgICAgICAgICAgICBzdGF0ZSA9IENBTk5PVF9CRV9BX0JBU0VfVVJMX1BBVEg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmICghc3RhdGVPdmVycmlkZSkge1xuICAgICAgICAgICAgYnVmZmVyID0gJyc7XG4gICAgICAgICAgICBzdGF0ZSA9IE5PX1NDSEVNRTtcbiAgICAgICAgICAgIHBvaW50ZXIgPSAwO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfSBlbHNlIHJldHVybiBJTlZBTElEX1NDSEVNRTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIE5PX1NDSEVNRTpcbiAgICAgICAgICBpZiAoIWJhc2UgfHwgKGJhc2UuY2Fubm90QmVBQmFzZVVSTCAmJiBjaHIgIT09ICcjJykpIHJldHVybiBJTlZBTElEX1NDSEVNRTtcbiAgICAgICAgICBpZiAoYmFzZS5jYW5ub3RCZUFCYXNlVVJMICYmIGNociA9PT0gJyMnKSB7XG4gICAgICAgICAgICB1cmwuc2NoZW1lID0gYmFzZS5zY2hlbWU7XG4gICAgICAgICAgICB1cmwucGF0aCA9IGFycmF5U2xpY2UoYmFzZS5wYXRoKTtcbiAgICAgICAgICAgIHVybC5xdWVyeSA9IGJhc2UucXVlcnk7XG4gICAgICAgICAgICB1cmwuZnJhZ21lbnQgPSAnJztcbiAgICAgICAgICAgIHVybC5jYW5ub3RCZUFCYXNlVVJMID0gdHJ1ZTtcbiAgICAgICAgICAgIHN0YXRlID0gRlJBR01FTlQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgc3RhdGUgPSBiYXNlLnNjaGVtZSA9PT0gJ2ZpbGUnID8gRklMRSA6IFJFTEFUSVZFO1xuICAgICAgICAgIGNvbnRpbnVlO1xuXG4gICAgICAgIGNhc2UgU1BFQ0lBTF9SRUxBVElWRV9PUl9BVVRIT1JJVFk6XG4gICAgICAgICAgaWYgKGNociA9PT0gJy8nICYmIGNvZGVQb2ludHNbcG9pbnRlciArIDFdID09PSAnLycpIHtcbiAgICAgICAgICAgIHN0YXRlID0gU1BFQ0lBTF9BVVRIT1JJVFlfSUdOT1JFX1NMQVNIRVM7XG4gICAgICAgICAgICBwb2ludGVyKys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0YXRlID0gUkVMQVRJVkU7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9IGJyZWFrO1xuXG4gICAgICAgIGNhc2UgUEFUSF9PUl9BVVRIT1JJVFk6XG4gICAgICAgICAgaWYgKGNociA9PT0gJy8nKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IEFVVEhPUklUWTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBSRUxBVElWRTpcbiAgICAgICAgICB1cmwuc2NoZW1lID0gYmFzZS5zY2hlbWU7XG4gICAgICAgICAgaWYgKGNociA9PT0gRU9GKSB7XG4gICAgICAgICAgICB1cmwudXNlcm5hbWUgPSBiYXNlLnVzZXJuYW1lO1xuICAgICAgICAgICAgdXJsLnBhc3N3b3JkID0gYmFzZS5wYXNzd29yZDtcbiAgICAgICAgICAgIHVybC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgICAgdXJsLnBvcnQgPSBiYXNlLnBvcnQ7XG4gICAgICAgICAgICB1cmwucGF0aCA9IGFycmF5U2xpY2UoYmFzZS5wYXRoKTtcbiAgICAgICAgICAgIHVybC5xdWVyeSA9IGJhc2UucXVlcnk7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaHIgPT09ICcvJyB8fCAoY2hyID09PSAnXFxcXCcgJiYgdXJsLmlzU3BlY2lhbCgpKSkge1xuICAgICAgICAgICAgc3RhdGUgPSBSRUxBVElWRV9TTEFTSDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNociA9PT0gJz8nKSB7XG4gICAgICAgICAgICB1cmwudXNlcm5hbWUgPSBiYXNlLnVzZXJuYW1lO1xuICAgICAgICAgICAgdXJsLnBhc3N3b3JkID0gYmFzZS5wYXNzd29yZDtcbiAgICAgICAgICAgIHVybC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgICAgdXJsLnBvcnQgPSBiYXNlLnBvcnQ7XG4gICAgICAgICAgICB1cmwucGF0aCA9IGFycmF5U2xpY2UoYmFzZS5wYXRoKTtcbiAgICAgICAgICAgIHVybC5xdWVyeSA9ICcnO1xuICAgICAgICAgICAgc3RhdGUgPSBRVUVSWTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNociA9PT0gJyMnKSB7XG4gICAgICAgICAgICB1cmwudXNlcm5hbWUgPSBiYXNlLnVzZXJuYW1lO1xuICAgICAgICAgICAgdXJsLnBhc3N3b3JkID0gYmFzZS5wYXNzd29yZDtcbiAgICAgICAgICAgIHVybC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgICAgdXJsLnBvcnQgPSBiYXNlLnBvcnQ7XG4gICAgICAgICAgICB1cmwucGF0aCA9IGFycmF5U2xpY2UoYmFzZS5wYXRoKTtcbiAgICAgICAgICAgIHVybC5xdWVyeSA9IGJhc2UucXVlcnk7XG4gICAgICAgICAgICB1cmwuZnJhZ21lbnQgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gRlJBR01FTlQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVybC51c2VybmFtZSA9IGJhc2UudXNlcm5hbWU7XG4gICAgICAgICAgICB1cmwucGFzc3dvcmQgPSBiYXNlLnBhc3N3b3JkO1xuICAgICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgICB1cmwucG9ydCA9IGJhc2UucG9ydDtcbiAgICAgICAgICAgIHVybC5wYXRoID0gYXJyYXlTbGljZShiYXNlLnBhdGgpO1xuICAgICAgICAgICAgdXJsLnBhdGgubGVuZ3RoLS07XG4gICAgICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9IGJyZWFrO1xuXG4gICAgICAgIGNhc2UgUkVMQVRJVkVfU0xBU0g6XG4gICAgICAgICAgaWYgKHVybC5pc1NwZWNpYWwoKSAmJiAoY2hyID09PSAnLycgfHwgY2hyID09PSAnXFxcXCcpKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IFNQRUNJQUxfQVVUSE9SSVRZX0lHTk9SRV9TTEFTSEVTO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hyID09PSAnLycpIHtcbiAgICAgICAgICAgIHN0YXRlID0gQVVUSE9SSVRZO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1cmwudXNlcm5hbWUgPSBiYXNlLnVzZXJuYW1lO1xuICAgICAgICAgICAgdXJsLnBhc3N3b3JkID0gYmFzZS5wYXNzd29yZDtcbiAgICAgICAgICAgIHVybC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgICAgdXJsLnBvcnQgPSBiYXNlLnBvcnQ7XG4gICAgICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9IGJyZWFrO1xuXG4gICAgICAgIGNhc2UgU1BFQ0lBTF9BVVRIT1JJVFlfU0xBU0hFUzpcbiAgICAgICAgICBzdGF0ZSA9IFNQRUNJQUxfQVVUSE9SSVRZX0lHTk9SRV9TTEFTSEVTO1xuICAgICAgICAgIGlmIChjaHIgIT09ICcvJyB8fCBjaGFyQXQoYnVmZmVyLCBwb2ludGVyICsgMSkgIT09ICcvJykgY29udGludWU7XG4gICAgICAgICAgcG9pbnRlcisrO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgU1BFQ0lBTF9BVVRIT1JJVFlfSUdOT1JFX1NMQVNIRVM6XG4gICAgICAgICAgaWYgKGNociAhPT0gJy8nICYmIGNociAhPT0gJ1xcXFwnKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IEFVVEhPUklUWTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gYnJlYWs7XG5cbiAgICAgICAgY2FzZSBBVVRIT1JJVFk6XG4gICAgICAgICAgaWYgKGNociA9PT0gJ0AnKSB7XG4gICAgICAgICAgICBpZiAoc2VlbkF0KSBidWZmZXIgPSAnJTQwJyArIGJ1ZmZlcjtcbiAgICAgICAgICAgIHNlZW5BdCA9IHRydWU7XG4gICAgICAgICAgICBidWZmZXJDb2RlUG9pbnRzID0gYXJyYXlGcm9tKGJ1ZmZlcik7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1ZmZlckNvZGVQb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgdmFyIGNvZGVQb2ludCA9IGJ1ZmZlckNvZGVQb2ludHNbaV07XG4gICAgICAgICAgICAgIGlmIChjb2RlUG9pbnQgPT09ICc6JyAmJiAhc2VlblBhc3N3b3JkVG9rZW4pIHtcbiAgICAgICAgICAgICAgICBzZWVuUGFzc3dvcmRUb2tlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdmFyIGVuY29kZWRDb2RlUG9pbnRzID0gcGVyY2VudEVuY29kZShjb2RlUG9pbnQsIHVzZXJpbmZvUGVyY2VudEVuY29kZVNldCk7XG4gICAgICAgICAgICAgIGlmIChzZWVuUGFzc3dvcmRUb2tlbikgdXJsLnBhc3N3b3JkICs9IGVuY29kZWRDb2RlUG9pbnRzO1xuICAgICAgICAgICAgICBlbHNlIHVybC51c2VybmFtZSArPSBlbmNvZGVkQ29kZVBvaW50cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJ1ZmZlciA9ICcnO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBjaHIgPT09IEVPRiB8fCBjaHIgPT09ICcvJyB8fCBjaHIgPT09ICc/JyB8fCBjaHIgPT09ICcjJyB8fFxuICAgICAgICAgICAgKGNociA9PT0gJ1xcXFwnICYmIHVybC5pc1NwZWNpYWwoKSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlmIChzZWVuQXQgJiYgYnVmZmVyID09PSAnJykgcmV0dXJuIElOVkFMSURfQVVUSE9SSVRZO1xuICAgICAgICAgICAgcG9pbnRlciAtPSBhcnJheUZyb20oYnVmZmVyKS5sZW5ndGggKyAxO1xuICAgICAgICAgICAgYnVmZmVyID0gJyc7XG4gICAgICAgICAgICBzdGF0ZSA9IEhPU1Q7XG4gICAgICAgICAgfSBlbHNlIGJ1ZmZlciArPSBjaHI7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBIT1NUOlxuICAgICAgICBjYXNlIEhPU1ROQU1FOlxuICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlICYmIHVybC5zY2hlbWUgPT09ICdmaWxlJykge1xuICAgICAgICAgICAgc3RhdGUgPSBGSUxFX0hPU1Q7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNociA9PT0gJzonICYmICFzZWVuQnJhY2tldCkge1xuICAgICAgICAgICAgaWYgKGJ1ZmZlciA9PT0gJycpIHJldHVybiBJTlZBTElEX0hPU1Q7XG4gICAgICAgICAgICBmYWlsdXJlID0gdXJsLnBhcnNlSG9zdChidWZmZXIpO1xuICAgICAgICAgICAgaWYgKGZhaWx1cmUpIHJldHVybiBmYWlsdXJlO1xuICAgICAgICAgICAgYnVmZmVyID0gJyc7XG4gICAgICAgICAgICBzdGF0ZSA9IFBPUlQ7XG4gICAgICAgICAgICBpZiAoc3RhdGVPdmVycmlkZSA9PT0gSE9TVE5BTUUpIHJldHVybjtcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgY2hyID09PSBFT0YgfHwgY2hyID09PSAnLycgfHwgY2hyID09PSAnPycgfHwgY2hyID09PSAnIycgfHxcbiAgICAgICAgICAgIChjaHIgPT09ICdcXFxcJyAmJiB1cmwuaXNTcGVjaWFsKCkpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAodXJsLmlzU3BlY2lhbCgpICYmIGJ1ZmZlciA9PT0gJycpIHJldHVybiBJTlZBTElEX0hPU1Q7XG4gICAgICAgICAgICBpZiAoc3RhdGVPdmVycmlkZSAmJiBidWZmZXIgPT09ICcnICYmICh1cmwuaW5jbHVkZXNDcmVkZW50aWFscygpIHx8IHVybC5wb3J0ICE9PSBudWxsKSkgcmV0dXJuO1xuICAgICAgICAgICAgZmFpbHVyZSA9IHVybC5wYXJzZUhvc3QoYnVmZmVyKTtcbiAgICAgICAgICAgIGlmIChmYWlsdXJlKSByZXR1cm4gZmFpbHVyZTtcbiAgICAgICAgICAgIGJ1ZmZlciA9ICcnO1xuICAgICAgICAgICAgc3RhdGUgPSBQQVRIX1NUQVJUO1xuICAgICAgICAgICAgaWYgKHN0YXRlT3ZlcnJpZGUpIHJldHVybjtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoY2hyID09PSAnWycpIHNlZW5CcmFja2V0ID0gdHJ1ZTtcbiAgICAgICAgICAgIGVsc2UgaWYgKGNociA9PT0gJ10nKSBzZWVuQnJhY2tldCA9IGZhbHNlO1xuICAgICAgICAgICAgYnVmZmVyICs9IGNocjtcbiAgICAgICAgICB9IGJyZWFrO1xuXG4gICAgICAgIGNhc2UgUE9SVDpcbiAgICAgICAgICBpZiAoZXhlYyhESUdJVCwgY2hyKSkge1xuICAgICAgICAgICAgYnVmZmVyICs9IGNocjtcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgY2hyID09PSBFT0YgfHwgY2hyID09PSAnLycgfHwgY2hyID09PSAnPycgfHwgY2hyID09PSAnIycgfHxcbiAgICAgICAgICAgIChjaHIgPT09ICdcXFxcJyAmJiB1cmwuaXNTcGVjaWFsKCkpIHx8XG4gICAgICAgICAgICBzdGF0ZU92ZXJyaWRlXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAoYnVmZmVyICE9PSAnJykge1xuICAgICAgICAgICAgICB2YXIgcG9ydCA9IHBhcnNlSW50KGJ1ZmZlciwgMTApO1xuICAgICAgICAgICAgICBpZiAocG9ydCA+IDB4RkZGRikgcmV0dXJuIElOVkFMSURfUE9SVDtcbiAgICAgICAgICAgICAgdXJsLnBvcnQgPSAodXJsLmlzU3BlY2lhbCgpICYmIHBvcnQgPT09IHNwZWNpYWxTY2hlbWVzW3VybC5zY2hlbWVdKSA/IG51bGwgOiBwb3J0O1xuICAgICAgICAgICAgICBidWZmZXIgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlKSByZXR1cm47XG4gICAgICAgICAgICBzdGF0ZSA9IFBBVEhfU1RBUlQ7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9IGVsc2UgcmV0dXJuIElOVkFMSURfUE9SVDtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIEZJTEU6XG4gICAgICAgICAgdXJsLnNjaGVtZSA9ICdmaWxlJztcbiAgICAgICAgICBpZiAoY2hyID09PSAnLycgfHwgY2hyID09PSAnXFxcXCcpIHN0YXRlID0gRklMRV9TTEFTSDtcbiAgICAgICAgICBlbHNlIGlmIChiYXNlICYmIGJhc2Uuc2NoZW1lID09PSAnZmlsZScpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoY2hyKSB7XG4gICAgICAgICAgICAgIGNhc2UgRU9GOlxuICAgICAgICAgICAgICAgIHVybC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgICAgICAgIHVybC5wYXRoID0gYXJyYXlTbGljZShiYXNlLnBhdGgpO1xuICAgICAgICAgICAgICAgIHVybC5xdWVyeSA9IGJhc2UucXVlcnk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgJz8nOlxuICAgICAgICAgICAgICAgIHVybC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgICAgICAgIHVybC5wYXRoID0gYXJyYXlTbGljZShiYXNlLnBhdGgpO1xuICAgICAgICAgICAgICAgIHVybC5xdWVyeSA9ICcnO1xuICAgICAgICAgICAgICAgIHN0YXRlID0gUVVFUlk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgJyMnOlxuICAgICAgICAgICAgICAgIHVybC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgICAgICAgIHVybC5wYXRoID0gYXJyYXlTbGljZShiYXNlLnBhdGgpO1xuICAgICAgICAgICAgICAgIHVybC5xdWVyeSA9IGJhc2UucXVlcnk7XG4gICAgICAgICAgICAgICAgdXJsLmZyYWdtZW50ID0gJyc7XG4gICAgICAgICAgICAgICAgc3RhdGUgPSBGUkFHTUVOVDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAoIXN0YXJ0c1dpdGhXaW5kb3dzRHJpdmVMZXR0ZXIoam9pbihhcnJheVNsaWNlKGNvZGVQb2ludHMsIHBvaW50ZXIpLCAnJykpKSB7XG4gICAgICAgICAgICAgICAgICB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICAgICAgICAgIHVybC5wYXRoID0gYXJyYXlTbGljZShiYXNlLnBhdGgpO1xuICAgICAgICAgICAgICAgICAgdXJsLnNob3J0ZW5QYXRoKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RhdGUgPSBQQVRIO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfSBicmVhaztcblxuICAgICAgICBjYXNlIEZJTEVfU0xBU0g6XG4gICAgICAgICAgaWYgKGNociA9PT0gJy8nIHx8IGNociA9PT0gJ1xcXFwnKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IEZJTEVfSE9TVDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYmFzZSAmJiBiYXNlLnNjaGVtZSA9PT0gJ2ZpbGUnICYmICFzdGFydHNXaXRoV2luZG93c0RyaXZlTGV0dGVyKGpvaW4oYXJyYXlTbGljZShjb2RlUG9pbnRzLCBwb2ludGVyKSwgJycpKSkge1xuICAgICAgICAgICAgaWYgKGlzV2luZG93c0RyaXZlTGV0dGVyKGJhc2UucGF0aFswXSwgdHJ1ZSkpIHB1c2godXJsLnBhdGgsIGJhc2UucGF0aFswXSk7XG4gICAgICAgICAgICBlbHNlIHVybC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgICAgY29udGludWU7XG5cbiAgICAgICAgY2FzZSBGSUxFX0hPU1Q6XG4gICAgICAgICAgaWYgKGNociA9PT0gRU9GIHx8IGNociA9PT0gJy8nIHx8IGNociA9PT0gJ1xcXFwnIHx8IGNociA9PT0gJz8nIHx8IGNociA9PT0gJyMnKSB7XG4gICAgICAgICAgICBpZiAoIXN0YXRlT3ZlcnJpZGUgJiYgaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYnVmZmVyKSkge1xuICAgICAgICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGJ1ZmZlciA9PT0gJycpIHtcbiAgICAgICAgICAgICAgdXJsLmhvc3QgPSAnJztcbiAgICAgICAgICAgICAgaWYgKHN0YXRlT3ZlcnJpZGUpIHJldHVybjtcbiAgICAgICAgICAgICAgc3RhdGUgPSBQQVRIX1NUQVJUO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZmFpbHVyZSA9IHVybC5wYXJzZUhvc3QoYnVmZmVyKTtcbiAgICAgICAgICAgICAgaWYgKGZhaWx1cmUpIHJldHVybiBmYWlsdXJlO1xuICAgICAgICAgICAgICBpZiAodXJsLmhvc3QgPT09ICdsb2NhbGhvc3QnKSB1cmwuaG9zdCA9ICcnO1xuICAgICAgICAgICAgICBpZiAoc3RhdGVPdmVycmlkZSkgcmV0dXJuO1xuICAgICAgICAgICAgICBidWZmZXIgPSAnJztcbiAgICAgICAgICAgICAgc3RhdGUgPSBQQVRIX1NUQVJUO1xuICAgICAgICAgICAgfSBjb250aW51ZTtcbiAgICAgICAgICB9IGVsc2UgYnVmZmVyICs9IGNocjtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFBBVEhfU1RBUlQ6XG4gICAgICAgICAgaWYgKHVybC5pc1NwZWNpYWwoKSkge1xuICAgICAgICAgICAgc3RhdGUgPSBQQVRIO1xuICAgICAgICAgICAgaWYgKGNociAhPT0gJy8nICYmIGNociAhPT0gJ1xcXFwnKSBjb250aW51ZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFzdGF0ZU92ZXJyaWRlICYmIGNociA9PT0gJz8nKSB7XG4gICAgICAgICAgICB1cmwucXVlcnkgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gUVVFUlk7XG4gICAgICAgICAgfSBlbHNlIGlmICghc3RhdGVPdmVycmlkZSAmJiBjaHIgPT09ICcjJykge1xuICAgICAgICAgICAgdXJsLmZyYWdtZW50ID0gJyc7XG4gICAgICAgICAgICBzdGF0ZSA9IEZSQUdNRU5UO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hyICE9PSBFT0YpIHtcbiAgICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICAgIGlmIChjaHIgIT09ICcvJykgY29udGludWU7XG4gICAgICAgICAgfSBicmVhaztcblxuICAgICAgICBjYXNlIFBBVEg6XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgY2hyID09PSBFT0YgfHwgY2hyID09PSAnLycgfHxcbiAgICAgICAgICAgIChjaHIgPT09ICdcXFxcJyAmJiB1cmwuaXNTcGVjaWFsKCkpIHx8XG4gICAgICAgICAgICAoIXN0YXRlT3ZlcnJpZGUgJiYgKGNociA9PT0gJz8nIHx8IGNociA9PT0gJyMnKSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlmIChpc0RvdWJsZURvdChidWZmZXIpKSB7XG4gICAgICAgICAgICAgIHVybC5zaG9ydGVuUGF0aCgpO1xuICAgICAgICAgICAgICBpZiAoY2hyICE9PSAnLycgJiYgIShjaHIgPT09ICdcXFxcJyAmJiB1cmwuaXNTcGVjaWFsKCkpKSB7XG4gICAgICAgICAgICAgICAgcHVzaCh1cmwucGF0aCwgJycpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzU2luZ2xlRG90KGJ1ZmZlcikpIHtcbiAgICAgICAgICAgICAgaWYgKGNociAhPT0gJy8nICYmICEoY2hyID09PSAnXFxcXCcgJiYgdXJsLmlzU3BlY2lhbCgpKSkge1xuICAgICAgICAgICAgICAgIHB1c2godXJsLnBhdGgsICcnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKHVybC5zY2hlbWUgPT09ICdmaWxlJyAmJiAhdXJsLnBhdGgubGVuZ3RoICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGJ1ZmZlcikpIHtcbiAgICAgICAgICAgICAgICBpZiAodXJsLmhvc3QpIHVybC5ob3N0ID0gJyc7XG4gICAgICAgICAgICAgICAgYnVmZmVyID0gY2hhckF0KGJ1ZmZlciwgMCkgKyAnOic7IC8vIG5vcm1hbGl6ZSB3aW5kb3dzIGRyaXZlIGxldHRlclxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHB1c2godXJsLnBhdGgsIGJ1ZmZlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidWZmZXIgPSAnJztcbiAgICAgICAgICAgIGlmICh1cmwuc2NoZW1lID09PSAnZmlsZScgJiYgKGNociA9PT0gRU9GIHx8IGNociA9PT0gJz8nIHx8IGNociA9PT0gJyMnKSkge1xuICAgICAgICAgICAgICB3aGlsZSAodXJsLnBhdGgubGVuZ3RoID4gMSAmJiB1cmwucGF0aFswXSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICBzaGlmdCh1cmwucGF0aCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaHIgPT09ICc/Jykge1xuICAgICAgICAgICAgICB1cmwucXVlcnkgPSAnJztcbiAgICAgICAgICAgICAgc3RhdGUgPSBRVUVSWTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hyID09PSAnIycpIHtcbiAgICAgICAgICAgICAgdXJsLmZyYWdtZW50ID0gJyc7XG4gICAgICAgICAgICAgIHN0YXRlID0gRlJBR01FTlQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmZlciArPSBwZXJjZW50RW5jb2RlKGNociwgcGF0aFBlcmNlbnRFbmNvZGVTZXQpO1xuICAgICAgICAgIH0gYnJlYWs7XG5cbiAgICAgICAgY2FzZSBDQU5OT1RfQkVfQV9CQVNFX1VSTF9QQVRIOlxuICAgICAgICAgIGlmIChjaHIgPT09ICc/Jykge1xuICAgICAgICAgICAgdXJsLnF1ZXJ5ID0gJyc7XG4gICAgICAgICAgICBzdGF0ZSA9IFFVRVJZO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hyID09PSAnIycpIHtcbiAgICAgICAgICAgIHVybC5mcmFnbWVudCA9ICcnO1xuICAgICAgICAgICAgc3RhdGUgPSBGUkFHTUVOVDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNociAhPT0gRU9GKSB7XG4gICAgICAgICAgICB1cmwucGF0aFswXSArPSBwZXJjZW50RW5jb2RlKGNociwgQzBDb250cm9sUGVyY2VudEVuY29kZVNldCk7XG4gICAgICAgICAgfSBicmVhaztcblxuICAgICAgICBjYXNlIFFVRVJZOlxuICAgICAgICAgIGlmICghc3RhdGVPdmVycmlkZSAmJiBjaHIgPT09ICcjJykge1xuICAgICAgICAgICAgdXJsLmZyYWdtZW50ID0gJyc7XG4gICAgICAgICAgICBzdGF0ZSA9IEZSQUdNRU5UO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hyICE9PSBFT0YpIHtcbiAgICAgICAgICAgIGlmIChjaHIgPT09IFwiJ1wiICYmIHVybC5pc1NwZWNpYWwoKSkgdXJsLnF1ZXJ5ICs9ICclMjcnO1xuICAgICAgICAgICAgZWxzZSBpZiAoY2hyID09PSAnIycpIHVybC5xdWVyeSArPSAnJTIzJztcbiAgICAgICAgICAgIGVsc2UgdXJsLnF1ZXJ5ICs9IHBlcmNlbnRFbmNvZGUoY2hyLCBDMENvbnRyb2xQZXJjZW50RW5jb2RlU2V0KTtcbiAgICAgICAgICB9IGJyZWFrO1xuXG4gICAgICAgIGNhc2UgRlJBR01FTlQ6XG4gICAgICAgICAgaWYgKGNociAhPT0gRU9GKSB1cmwuZnJhZ21lbnQgKz0gcGVyY2VudEVuY29kZShjaHIsIGZyYWdtZW50UGVyY2VudEVuY29kZVNldCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHBvaW50ZXIrKztcbiAgICB9XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jaG9zdC1wYXJzaW5nXG4gIHBhcnNlSG9zdDogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgdmFyIHJlc3VsdCwgY29kZVBvaW50cywgaW5kZXg7XG4gICAgaWYgKGNoYXJBdChpbnB1dCwgMCkgPT09ICdbJykge1xuICAgICAgaWYgKGNoYXJBdChpbnB1dCwgaW5wdXQubGVuZ3RoIC0gMSkgIT09ICddJykgcmV0dXJuIElOVkFMSURfSE9TVDtcbiAgICAgIHJlc3VsdCA9IHBhcnNlSVB2NihzdHJpbmdTbGljZShpbnB1dCwgMSwgLTEpKTtcbiAgICAgIGlmICghcmVzdWx0KSByZXR1cm4gSU5WQUxJRF9IT1NUO1xuICAgICAgdGhpcy5ob3N0ID0gcmVzdWx0O1xuICAgIC8vIG9wYXF1ZSBob3N0XG4gICAgfSBlbHNlIGlmICghdGhpcy5pc1NwZWNpYWwoKSkge1xuICAgICAgaWYgKGV4ZWMoRk9SQklEREVOX0hPU1RfQ09ERV9QT0lOVF9FWENMVURJTkdfUEVSQ0VOVCwgaW5wdXQpKSByZXR1cm4gSU5WQUxJRF9IT1NUO1xuICAgICAgcmVzdWx0ID0gJyc7XG4gICAgICBjb2RlUG9pbnRzID0gYXJyYXlGcm9tKGlucHV0KTtcbiAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IGNvZGVQb2ludHMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIHJlc3VsdCArPSBwZXJjZW50RW5jb2RlKGNvZGVQb2ludHNbaW5kZXhdLCBDMENvbnRyb2xQZXJjZW50RW5jb2RlU2V0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaG9zdCA9IHJlc3VsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXQgPSB0b0FTQ0lJKGlucHV0KTtcbiAgICAgIGlmIChleGVjKEZPUkJJRERFTl9IT1NUX0NPREVfUE9JTlQsIGlucHV0KSkgcmV0dXJuIElOVkFMSURfSE9TVDtcbiAgICAgIHJlc3VsdCA9IHBhcnNlSVB2NChpbnB1dCk7XG4gICAgICBpZiAocmVzdWx0ID09PSBudWxsKSByZXR1cm4gSU5WQUxJRF9IT1NUO1xuICAgICAgdGhpcy5ob3N0ID0gcmVzdWx0O1xuICAgIH1cbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNjYW5ub3QtaGF2ZS1hLXVzZXJuYW1lLXBhc3N3b3JkLXBvcnRcbiAgY2Fubm90SGF2ZVVzZXJuYW1lUGFzc3dvcmRQb3J0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICF0aGlzLmhvc3QgfHwgdGhpcy5jYW5ub3RCZUFCYXNlVVJMIHx8IHRoaXMuc2NoZW1lID09PSAnZmlsZSc7XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jaW5jbHVkZS1jcmVkZW50aWFsc1xuICBpbmNsdWRlc0NyZWRlbnRpYWxzOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMudXNlcm5hbWUgIT09ICcnIHx8IHRoaXMucGFzc3dvcmQgIT09ICcnO1xuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2lzLXNwZWNpYWxcbiAgaXNTcGVjaWFsOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGhhc093bihzcGVjaWFsU2NoZW1lcywgdGhpcy5zY2hlbWUpO1xuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI3Nob3J0ZW4tYS11cmxzLXBhdGhcbiAgc2hvcnRlblBhdGg6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGF0aCA9IHRoaXMucGF0aDtcbiAgICB2YXIgcGF0aFNpemUgPSBwYXRoLmxlbmd0aDtcbiAgICBpZiAocGF0aFNpemUgJiYgKHRoaXMuc2NoZW1lICE9PSAnZmlsZScgfHwgcGF0aFNpemUgIT09IDEgfHwgIWlzV2luZG93c0RyaXZlTGV0dGVyKHBhdGhbMF0sIHRydWUpKSkge1xuICAgICAgcGF0aC5sZW5ndGgtLTtcbiAgICB9XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC11cmwtc2VyaWFsaXplclxuICBzZXJpYWxpemU6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdXJsID0gdGhpcztcbiAgICB2YXIgc2NoZW1lID0gdXJsLnNjaGVtZTtcbiAgICB2YXIgdXNlcm5hbWUgPSB1cmwudXNlcm5hbWU7XG4gICAgdmFyIHBhc3N3b3JkID0gdXJsLnBhc3N3b3JkO1xuICAgIHZhciBob3N0ID0gdXJsLmhvc3Q7XG4gICAgdmFyIHBvcnQgPSB1cmwucG9ydDtcbiAgICB2YXIgcGF0aCA9IHVybC5wYXRoO1xuICAgIHZhciBxdWVyeSA9IHVybC5xdWVyeTtcbiAgICB2YXIgZnJhZ21lbnQgPSB1cmwuZnJhZ21lbnQ7XG4gICAgdmFyIG91dHB1dCA9IHNjaGVtZSArICc6JztcbiAgICBpZiAoaG9zdCAhPT0gbnVsbCkge1xuICAgICAgb3V0cHV0ICs9ICcvLyc7XG4gICAgICBpZiAodXJsLmluY2x1ZGVzQ3JlZGVudGlhbHMoKSkge1xuICAgICAgICBvdXRwdXQgKz0gdXNlcm5hbWUgKyAocGFzc3dvcmQgPyAnOicgKyBwYXNzd29yZCA6ICcnKSArICdAJztcbiAgICAgIH1cbiAgICAgIG91dHB1dCArPSBzZXJpYWxpemVIb3N0KGhvc3QpO1xuICAgICAgaWYgKHBvcnQgIT09IG51bGwpIG91dHB1dCArPSAnOicgKyBwb3J0O1xuICAgIH0gZWxzZSBpZiAoc2NoZW1lID09PSAnZmlsZScpIG91dHB1dCArPSAnLy8nO1xuICAgIG91dHB1dCArPSB1cmwuY2Fubm90QmVBQmFzZVVSTCA/IHBhdGhbMF0gOiBwYXRoLmxlbmd0aCA/ICcvJyArIGpvaW4ocGF0aCwgJy8nKSA6ICcnO1xuICAgIGlmIChxdWVyeSAhPT0gbnVsbCkgb3V0cHV0ICs9ICc/JyArIHF1ZXJ5O1xuICAgIGlmIChmcmFnbWVudCAhPT0gbnVsbCkgb3V0cHV0ICs9ICcjJyArIGZyYWdtZW50O1xuICAgIHJldHVybiBvdXRwdXQ7XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1ocmVmXG4gIHNldEhyZWY6IGZ1bmN0aW9uIChocmVmKSB7XG4gICAgdmFyIGZhaWx1cmUgPSB0aGlzLnBhcnNlKGhyZWYpO1xuICAgIGlmIChmYWlsdXJlKSB0aHJvdyBuZXcgVHlwZUVycm9yKGZhaWx1cmUpO1xuICAgIHRoaXMuc2VhcmNoUGFyYW1zLnVwZGF0ZSgpO1xuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtb3JpZ2luXG4gIGdldE9yaWdpbjogZnVuY3Rpb24gKCkge1xuICAgIHZhciBzY2hlbWUgPSB0aGlzLnNjaGVtZTtcbiAgICB2YXIgcG9ydCA9IHRoaXMucG9ydDtcbiAgICBpZiAoc2NoZW1lID09PSAnYmxvYicpIHRyeSB7XG4gICAgICByZXR1cm4gbmV3IFVSTENvbnN0cnVjdG9yKHNjaGVtZS5wYXRoWzBdKS5vcmlnaW47XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiAnbnVsbCc7XG4gICAgfVxuICAgIGlmIChzY2hlbWUgPT09ICdmaWxlJyB8fCAhdGhpcy5pc1NwZWNpYWwoKSkgcmV0dXJuICdudWxsJztcbiAgICByZXR1cm4gc2NoZW1lICsgJzovLycgKyBzZXJpYWxpemVIb3N0KHRoaXMuaG9zdCkgKyAocG9ydCAhPT0gbnVsbCA/ICc6JyArIHBvcnQgOiAnJyk7XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1wcm90b2NvbFxuICBnZXRQcm90b2NvbDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnNjaGVtZSArICc6JztcbiAgfSxcbiAgc2V0UHJvdG9jb2w6IGZ1bmN0aW9uIChwcm90b2NvbCkge1xuICAgIHRoaXMucGFyc2UoJHRvU3RyaW5nKHByb3RvY29sKSArICc6JywgU0NIRU1FX1NUQVJUKTtcbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXVzZXJuYW1lXG4gIGdldFVzZXJuYW1lOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMudXNlcm5hbWU7XG4gIH0sXG4gIHNldFVzZXJuYW1lOiBmdW5jdGlvbiAodXNlcm5hbWUpIHtcbiAgICB2YXIgY29kZVBvaW50cyA9IGFycmF5RnJvbSgkdG9TdHJpbmcodXNlcm5hbWUpKTtcbiAgICBpZiAodGhpcy5jYW5ub3RIYXZlVXNlcm5hbWVQYXNzd29yZFBvcnQoKSkgcmV0dXJuO1xuICAgIHRoaXMudXNlcm5hbWUgPSAnJztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvZGVQb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMudXNlcm5hbWUgKz0gcGVyY2VudEVuY29kZShjb2RlUG9pbnRzW2ldLCB1c2VyaW5mb1BlcmNlbnRFbmNvZGVTZXQpO1xuICAgIH1cbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXBhc3N3b3JkXG4gIGdldFBhc3N3b3JkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFzc3dvcmQ7XG4gIH0sXG4gIHNldFBhc3N3b3JkOiBmdW5jdGlvbiAocGFzc3dvcmQpIHtcbiAgICB2YXIgY29kZVBvaW50cyA9IGFycmF5RnJvbSgkdG9TdHJpbmcocGFzc3dvcmQpKTtcbiAgICBpZiAodGhpcy5jYW5ub3RIYXZlVXNlcm5hbWVQYXNzd29yZFBvcnQoKSkgcmV0dXJuO1xuICAgIHRoaXMucGFzc3dvcmQgPSAnJztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvZGVQb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMucGFzc3dvcmQgKz0gcGVyY2VudEVuY29kZShjb2RlUG9pbnRzW2ldLCB1c2VyaW5mb1BlcmNlbnRFbmNvZGVTZXQpO1xuICAgIH1cbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLWhvc3RcbiAgZ2V0SG9zdDogZnVuY3Rpb24gKCkge1xuICAgIHZhciBob3N0ID0gdGhpcy5ob3N0O1xuICAgIHZhciBwb3J0ID0gdGhpcy5wb3J0O1xuICAgIHJldHVybiBob3N0ID09PSBudWxsID8gJydcbiAgICAgIDogcG9ydCA9PT0gbnVsbCA/IHNlcmlhbGl6ZUhvc3QoaG9zdClcbiAgICAgIDogc2VyaWFsaXplSG9zdChob3N0KSArICc6JyArIHBvcnQ7XG4gIH0sXG4gIHNldEhvc3Q6IGZ1bmN0aW9uIChob3N0KSB7XG4gICAgaWYgKHRoaXMuY2Fubm90QmVBQmFzZVVSTCkgcmV0dXJuO1xuICAgIHRoaXMucGFyc2UoaG9zdCwgSE9TVCk7XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1ob3N0bmFtZVxuICBnZXRIb3N0bmFtZTogZnVuY3Rpb24gKCkge1xuICAgIHZhciBob3N0ID0gdGhpcy5ob3N0O1xuICAgIHJldHVybiBob3N0ID09PSBudWxsID8gJycgOiBzZXJpYWxpemVIb3N0KGhvc3QpO1xuICB9LFxuICBzZXRIb3N0bmFtZTogZnVuY3Rpb24gKGhvc3RuYW1lKSB7XG4gICAgaWYgKHRoaXMuY2Fubm90QmVBQmFzZVVSTCkgcmV0dXJuO1xuICAgIHRoaXMucGFyc2UoaG9zdG5hbWUsIEhPU1ROQU1FKTtcbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXBvcnRcbiAgZ2V0UG9ydDogZnVuY3Rpb24gKCkge1xuICAgIHZhciBwb3J0ID0gdGhpcy5wb3J0O1xuICAgIHJldHVybiBwb3J0ID09PSBudWxsID8gJycgOiAkdG9TdHJpbmcocG9ydCk7XG4gIH0sXG4gIHNldFBvcnQ6IGZ1bmN0aW9uIChwb3J0KSB7XG4gICAgaWYgKHRoaXMuY2Fubm90SGF2ZVVzZXJuYW1lUGFzc3dvcmRQb3J0KCkpIHJldHVybjtcbiAgICBwb3J0ID0gJHRvU3RyaW5nKHBvcnQpO1xuICAgIGlmIChwb3J0ID09PSAnJykgdGhpcy5wb3J0ID0gbnVsbDtcbiAgICBlbHNlIHRoaXMucGFyc2UocG9ydCwgUE9SVCk7XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1wYXRobmFtZVxuICBnZXRQYXRobmFtZTogZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYXRoID0gdGhpcy5wYXRoO1xuICAgIHJldHVybiB0aGlzLmNhbm5vdEJlQUJhc2VVUkwgPyBwYXRoWzBdIDogcGF0aC5sZW5ndGggPyAnLycgKyBqb2luKHBhdGgsICcvJykgOiAnJztcbiAgfSxcbiAgc2V0UGF0aG5hbWU6IGZ1bmN0aW9uIChwYXRobmFtZSkge1xuICAgIGlmICh0aGlzLmNhbm5vdEJlQUJhc2VVUkwpIHJldHVybjtcbiAgICB0aGlzLnBhdGggPSBbXTtcbiAgICB0aGlzLnBhcnNlKHBhdGhuYW1lLCBQQVRIX1NUQVJUKTtcbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXNlYXJjaFxuICBnZXRTZWFyY2g6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcXVlcnkgPSB0aGlzLnF1ZXJ5O1xuICAgIHJldHVybiBxdWVyeSA/ICc/JyArIHF1ZXJ5IDogJyc7XG4gIH0sXG4gIHNldFNlYXJjaDogZnVuY3Rpb24gKHNlYXJjaCkge1xuICAgIHNlYXJjaCA9ICR0b1N0cmluZyhzZWFyY2gpO1xuICAgIGlmIChzZWFyY2ggPT09ICcnKSB7XG4gICAgICB0aGlzLnF1ZXJ5ID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNoYXJBdChzZWFyY2gsIDApID09PSAnPycpIHNlYXJjaCA9IHN0cmluZ1NsaWNlKHNlYXJjaCwgMSk7XG4gICAgICB0aGlzLnF1ZXJ5ID0gJyc7XG4gICAgICB0aGlzLnBhcnNlKHNlYXJjaCwgUVVFUlkpO1xuICAgIH1cbiAgICB0aGlzLnNlYXJjaFBhcmFtcy51cGRhdGUoKTtcbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXNlYXJjaHBhcmFtc1xuICBnZXRTZWFyY2hQYXJhbXM6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hQYXJhbXMuZmFjYWRlO1xuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtaGFzaFxuICBnZXRIYXNoOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGZyYWdtZW50ID0gdGhpcy5mcmFnbWVudDtcbiAgICByZXR1cm4gZnJhZ21lbnQgPyAnIycgKyBmcmFnbWVudCA6ICcnO1xuICB9LFxuICBzZXRIYXNoOiBmdW5jdGlvbiAoaGFzaCkge1xuICAgIGhhc2ggPSAkdG9TdHJpbmcoaGFzaCk7XG4gICAgaWYgKGhhc2ggPT09ICcnKSB7XG4gICAgICB0aGlzLmZyYWdtZW50ID0gbnVsbDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGNoYXJBdChoYXNoLCAwKSA9PT0gJyMnKSBoYXNoID0gc3RyaW5nU2xpY2UoaGFzaCwgMSk7XG4gICAgdGhpcy5mcmFnbWVudCA9ICcnO1xuICAgIHRoaXMucGFyc2UoaGFzaCwgRlJBR01FTlQpO1xuICB9LFxuICB1cGRhdGU6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnF1ZXJ5ID0gdGhpcy5zZWFyY2hQYXJhbXMuc2VyaWFsaXplKCkgfHwgbnVsbDtcbiAgfVxufTtcblxuLy8gYFVSTGAgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jdXJsLWNsYXNzXG52YXIgVVJMQ29uc3RydWN0b3IgPSBmdW5jdGlvbiBVUkwodXJsIC8qICwgYmFzZSAqLykge1xuICB2YXIgdGhhdCA9IGFuSW5zdGFuY2UodGhpcywgVVJMUHJvdG90eXBlKTtcbiAgdmFyIGJhc2UgPSB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChhcmd1bWVudHMubGVuZ3RoLCAxKSA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gIHZhciBzdGF0ZSA9IHNldEludGVybmFsU3RhdGUodGhhdCwgbmV3IFVSTFN0YXRlKHVybCwgZmFsc2UsIGJhc2UpKTtcbiAgaWYgKCFERVNDUklQVE9SUykge1xuICAgIHRoYXQuaHJlZiA9IHN0YXRlLnNlcmlhbGl6ZSgpO1xuICAgIHRoYXQub3JpZ2luID0gc3RhdGUuZ2V0T3JpZ2luKCk7XG4gICAgdGhhdC5wcm90b2NvbCA9IHN0YXRlLmdldFByb3RvY29sKCk7XG4gICAgdGhhdC51c2VybmFtZSA9IHN0YXRlLmdldFVzZXJuYW1lKCk7XG4gICAgdGhhdC5wYXNzd29yZCA9IHN0YXRlLmdldFBhc3N3b3JkKCk7XG4gICAgdGhhdC5ob3N0ID0gc3RhdGUuZ2V0SG9zdCgpO1xuICAgIHRoYXQuaG9zdG5hbWUgPSBzdGF0ZS5nZXRIb3N0bmFtZSgpO1xuICAgIHRoYXQucG9ydCA9IHN0YXRlLmdldFBvcnQoKTtcbiAgICB0aGF0LnBhdGhuYW1lID0gc3RhdGUuZ2V0UGF0aG5hbWUoKTtcbiAgICB0aGF0LnNlYXJjaCA9IHN0YXRlLmdldFNlYXJjaCgpO1xuICAgIHRoYXQuc2VhcmNoUGFyYW1zID0gc3RhdGUuZ2V0U2VhcmNoUGFyYW1zKCk7XG4gICAgdGhhdC5oYXNoID0gc3RhdGUuZ2V0SGFzaCgpO1xuICB9XG59O1xuXG52YXIgVVJMUHJvdG90eXBlID0gVVJMQ29uc3RydWN0b3IucHJvdG90eXBlO1xuXG52YXIgYWNjZXNzb3JEZXNjcmlwdG9yID0gZnVuY3Rpb24gKGdldHRlciwgc2V0dGVyKSB7XG4gIHJldHVybiB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKVtnZXR0ZXJdKCk7XG4gICAgfSxcbiAgICBzZXQ6IHNldHRlciAmJiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIHJldHVybiBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpW3NldHRlcl0odmFsdWUpO1xuICAgIH0sXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IHRydWVcbiAgfTtcbn07XG5cbmlmIChERVNDUklQVE9SUykge1xuICAvLyBgVVJMLnByb3RvdHlwZS5ocmVmYCBhY2Nlc3NvcnMgcGFpclxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtaHJlZlxuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoVVJMUHJvdG90eXBlLCAnaHJlZicsIGFjY2Vzc29yRGVzY3JpcHRvcignc2VyaWFsaXplJywgJ3NldEhyZWYnKSk7XG4gIC8vIGBVUkwucHJvdG90eXBlLm9yaWdpbmAgZ2V0dGVyXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1vcmlnaW5cbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFByb3RvdHlwZSwgJ29yaWdpbicsIGFjY2Vzc29yRGVzY3JpcHRvcignZ2V0T3JpZ2luJykpO1xuICAvLyBgVVJMLnByb3RvdHlwZS5wcm90b2NvbGAgYWNjZXNzb3JzIHBhaXJcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXByb3RvY29sXG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxQcm90b3R5cGUsICdwcm90b2NvbCcsIGFjY2Vzc29yRGVzY3JpcHRvcignZ2V0UHJvdG9jb2wnLCAnc2V0UHJvdG9jb2wnKSk7XG4gIC8vIGBVUkwucHJvdG90eXBlLnVzZXJuYW1lYCBhY2Nlc3NvcnMgcGFpclxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtdXNlcm5hbWVcbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFByb3RvdHlwZSwgJ3VzZXJuYW1lJywgYWNjZXNzb3JEZXNjcmlwdG9yKCdnZXRVc2VybmFtZScsICdzZXRVc2VybmFtZScpKTtcbiAgLy8gYFVSTC5wcm90b3R5cGUucGFzc3dvcmRgIGFjY2Vzc29ycyBwYWlyXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1wYXNzd29yZFxuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoVVJMUHJvdG90eXBlLCAncGFzc3dvcmQnLCBhY2Nlc3NvckRlc2NyaXB0b3IoJ2dldFBhc3N3b3JkJywgJ3NldFBhc3N3b3JkJykpO1xuICAvLyBgVVJMLnByb3RvdHlwZS5ob3N0YCBhY2Nlc3NvcnMgcGFpclxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtaG9zdFxuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoVVJMUHJvdG90eXBlLCAnaG9zdCcsIGFjY2Vzc29yRGVzY3JpcHRvcignZ2V0SG9zdCcsICdzZXRIb3N0JykpO1xuICAvLyBgVVJMLnByb3RvdHlwZS5ob3N0bmFtZWAgYWNjZXNzb3JzIHBhaXJcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLWhvc3RuYW1lXG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxQcm90b3R5cGUsICdob3N0bmFtZScsIGFjY2Vzc29yRGVzY3JpcHRvcignZ2V0SG9zdG5hbWUnLCAnc2V0SG9zdG5hbWUnKSk7XG4gIC8vIGBVUkwucHJvdG90eXBlLnBvcnRgIGFjY2Vzc29ycyBwYWlyXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1wb3J0XG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxQcm90b3R5cGUsICdwb3J0JywgYWNjZXNzb3JEZXNjcmlwdG9yKCdnZXRQb3J0JywgJ3NldFBvcnQnKSk7XG4gIC8vIGBVUkwucHJvdG90eXBlLnBhdGhuYW1lYCBhY2Nlc3NvcnMgcGFpclxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtcGF0aG5hbWVcbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFByb3RvdHlwZSwgJ3BhdGhuYW1lJywgYWNjZXNzb3JEZXNjcmlwdG9yKCdnZXRQYXRobmFtZScsICdzZXRQYXRobmFtZScpKTtcbiAgLy8gYFVSTC5wcm90b3R5cGUuc2VhcmNoYCBhY2Nlc3NvcnMgcGFpclxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtc2VhcmNoXG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxQcm90b3R5cGUsICdzZWFyY2gnLCBhY2Nlc3NvckRlc2NyaXB0b3IoJ2dldFNlYXJjaCcsICdzZXRTZWFyY2gnKSk7XG4gIC8vIGBVUkwucHJvdG90eXBlLnNlYXJjaFBhcmFtc2AgZ2V0dGVyXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1zZWFyY2hwYXJhbXNcbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFByb3RvdHlwZSwgJ3NlYXJjaFBhcmFtcycsIGFjY2Vzc29yRGVzY3JpcHRvcignZ2V0U2VhcmNoUGFyYW1zJykpO1xuICAvLyBgVVJMLnByb3RvdHlwZS5oYXNoYCBhY2Nlc3NvcnMgcGFpclxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtaGFzaFxuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoVVJMUHJvdG90eXBlLCAnaGFzaCcsIGFjY2Vzc29yRGVzY3JpcHRvcignZ2V0SGFzaCcsICdzZXRIYXNoJykpO1xufVxuXG4vLyBgVVJMLnByb3RvdHlwZS50b0pTT05gIG1ldGhvZFxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXRvanNvblxuZGVmaW5lQnVpbHRJbihVUkxQcm90b3R5cGUsICd0b0pTT04nLCBmdW5jdGlvbiB0b0pTT04oKSB7XG4gIHJldHVybiBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpLnNlcmlhbGl6ZSgpO1xufSwgeyBlbnVtZXJhYmxlOiB0cnVlIH0pO1xuXG4vLyBgVVJMLnByb3RvdHlwZS50b1N0cmluZ2AgbWV0aG9kXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI1VSTC1zdHJpbmdpZmljYXRpb24tYmVoYXZpb3JcbmRlZmluZUJ1aWx0SW4oVVJMUHJvdG90eXBlLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIGdldEludGVybmFsVVJMU3RhdGUodGhpcykuc2VyaWFsaXplKCk7XG59LCB7IGVudW1lcmFibGU6IHRydWUgfSk7XG5cbmlmIChOYXRpdmVVUkwpIHtcbiAgdmFyIG5hdGl2ZUNyZWF0ZU9iamVjdFVSTCA9IE5hdGl2ZVVSTC5jcmVhdGVPYmplY3RVUkw7XG4gIHZhciBuYXRpdmVSZXZva2VPYmplY3RVUkwgPSBOYXRpdmVVUkwucmV2b2tlT2JqZWN0VVJMO1xuICAvLyBgVVJMLmNyZWF0ZU9iamVjdFVSTGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9VUkwvY3JlYXRlT2JqZWN0VVJMXG4gIGlmIChuYXRpdmVDcmVhdGVPYmplY3RVUkwpIGRlZmluZUJ1aWx0SW4oVVJMQ29uc3RydWN0b3IsICdjcmVhdGVPYmplY3RVUkwnLCBiaW5kKG5hdGl2ZUNyZWF0ZU9iamVjdFVSTCwgTmF0aXZlVVJMKSk7XG4gIC8vIGBVUkwucmV2b2tlT2JqZWN0VVJMYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1VSTC9yZXZva2VPYmplY3RVUkxcbiAgaWYgKG5hdGl2ZVJldm9rZU9iamVjdFVSTCkgZGVmaW5lQnVpbHRJbihVUkxDb25zdHJ1Y3RvciwgJ3Jldm9rZU9iamVjdFVSTCcsIGJpbmQobmF0aXZlUmV2b2tlT2JqZWN0VVJMLCBOYXRpdmVVUkwpKTtcbn1cblxuc2V0VG9TdHJpbmdUYWcoVVJMQ29uc3RydWN0b3IsICdVUkwnKTtcblxuJCh7IGdsb2JhbDogdHJ1ZSwgY29uc3RydWN0b3I6IHRydWUsIGZvcmNlZDogIVVTRV9OQVRJVkVfVVJMLCBzaGFtOiAhREVTQ1JJUFRPUlMgfSwge1xuICBVUkw6IFVSTENvbnN0cnVjdG9yXG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IFJlbW92ZSB0aGlzIG1vZHVsZSBmcm9tIGBjb3JlLWpzQDRgIHNpbmNlIGl0J3MgcmVwbGFjZWQgdG8gbW9kdWxlIGJlbG93XG5yZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi51cmwuY29uc3RydWN0b3InKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdmFsaWRhdGUtYXJndW1lbnRzLWxlbmd0aCcpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIFVTRV9OQVRJVkVfVVJMID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VybC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKTtcblxudmFyIFVSTCA9IGdldEJ1aWx0SW4oJ1VSTCcpO1xuXG4vLyBgVVJMLnBhcnNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1jYW5wYXJzZVxuJCh7IHRhcmdldDogJ1VSTCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogIVVTRV9OQVRJVkVfVVJMIH0sIHtcbiAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlKHVybCkge1xuICAgIHZhciBsZW5ndGggPSB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChhcmd1bWVudHMubGVuZ3RoLCAxKTtcbiAgICB2YXIgdXJsU3RyaW5nID0gdG9TdHJpbmcodXJsKTtcbiAgICB2YXIgYmFzZSA9IGxlbmd0aCA8IDIgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiB0b1N0cmluZyhhcmd1bWVudHNbMV0pO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbmV3IFVSTCh1cmxTdHJpbmcsIGJhc2UpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG5cbi8vIGBVUkwucHJvdG90eXBlLnRvSlNPTmAgbWV0aG9kXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtdG9qc29uXG4kKHsgdGFyZ2V0OiAnVVJMJywgcHJvdG86IHRydWUsIGVudW1lcmFibGU6IHRydWUgfSwge1xuICB0b0pTT046IGZ1bmN0aW9uIHRvSlNPTigpIHtcbiAgICByZXR1cm4gY2FsbChVUkwucHJvdG90eXBlLnRvU3RyaW5nLCB0aGlzKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vZXMvYXJyYXkvaW5jbHVkZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vZXMvb2JqZWN0L2Fzc2lnbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9lcy9wcm9taXNlJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuaXRlcmF0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vd2ViL3VybCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5kZWxldGUnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmhhcycpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuc2l6ZScpO1xudmFyIHBhdGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcGF0aCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGguVVJMU2VhcmNoUGFyYW1zO1xuIiwiJ3VzZSBzdHJpY3QnO1xucmVxdWlyZSgnLi91cmwtc2VhcmNoLXBhcmFtcycpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIudXJsJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi51cmwuY2FuLXBhcnNlJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi51cmwucGFyc2UnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLnVybC50by1qc29uJyk7XG52YXIgcGF0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wYXRoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0aC5VUkw7XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLy8gc3RhcnR1cFxuLy8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vLyBUaGlzIGVudHJ5IG1vZHVsZSBpcyByZWZlcmVuY2VkIGJ5IG90aGVyIG1vZHVsZXMgc28gaXQgY2FuJ3QgYmUgaW5saW5lZFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgxNTYpO1xuIl0sIm5hbWVzIjpbInJvb3QiLCJmYWN0b3J5IiwiZXhwb3J0cyIsIm1vZHVsZSIsImRlZmluZSIsImFtZCIsInNlbGYiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiQmFzZTYyU3RyIiwiYWxwaGFiZXQiLCJ0aGlzIiwibG9va3VwIiwiY3JlYXRlTG9va3VwVGFibGUiLCJnZXRCeXRlcyIsInN0ciIsImJ5dGVzIiwiaSIsImxlbmd0aCIsImNoYXIiLCJjaGFyQ29kZUF0IiwicHVzaCIsImdldFN0cmluZyIsImFyciIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsImFwcGx5IiwiY3JlYXRlSW5zdGFuY2UiLCJjcmVhdGVJbnN0YW5jZVdpdGhHbXBDaGFyYWN0ZXJTZXQiLCJDaGFyYWN0ZXJTZXRzIiwiR01QIiwiY3JlYXRlSW5zdGFuY2VXaXRoSW52ZXJ0ZWRDaGFyYWN0ZXJTZXQiLCJJTlZFUlRFRCIsInRyYW5zbGF0ZSIsImluZGljZXMiLCJkaWN0aW9uYXJ5IiwidHJhbnNsYXRpb24iLCJfaSIsImluZGljZXNfMSIsImluZGljZXNpIiwiY29udmVydCIsIm1lc3NhZ2UiLCJzb3VyY2VCYXNlIiwidGFyZ2V0QmFzZSIsIm91dCIsInNvdXJjZSIsInF1b3RpZW50IiwicmVtYWluZGVyIiwic291cmNlXzEiLCJhY2N1bXVsYXRvciIsImRpZ2l0IiwicmV2ZXJzZSIsInByb3RvdHlwZSIsImVuY29kZSIsIlNUQU5EQVJEX0JBU0UiLCJUQVJHRVRfQkFTRSIsImRlY29kZSIsImVuY29kZWQiLCJwcmVwYXJlZCIsImVuY29kZVN0ciIsImlucHV0IiwiZGVjb2RlU3RyIiwiQXJyYXkiLCJFeHBpcmVTZXQiLCJjb25zdHJ1Y3RvciIsInRpbWVvdXQiLCJnY0RlbGF5IiwiZGIiLCJNYXAiLCJuZXh0R2MiLCJzaXplIiwiYWxsIiwicyIsIlNldCIsImZvckVhY2giLCJfIiwidiIsImFkZCIsInNldCIsIkRhdGUiLCJub3ciLCJzY2hlZHVsZUdjIiwiaGFzIiwiZGVsZXRlIiwiZ2MiLCJ0IiwiZm9yY2UiLCJjbGVhclRpbWVvdXQiLCJ0cyIsInNldFRpbWVvdXQiLCJiaW5kIiwid2luZG93IiwiRnVuY3Rpb24iLCJpbXBsZW1lbnRhdGlvbiIsImciLCJNYXRoIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwibiIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiT1BFTl9CUk9BRENBU1RfQ0hBTk5FTFMiLCJCcm9hZGNhc3RDaGFubmVsIiwiY2xlYXJOb2RlRm9sZGVyIiwiZmlsbE9wdGlvbnNXaXRoRGVmYXVsdHMiLCJvIiwiY2hvb3NlTWV0aG9kIiwidHlwZSIsInRoZW4iLCJyIiwiUFJPTUlTRV9SRVNPTFZFRF9GQUxTRSIsImVuZm9yY2VPcHRpb25zIiwiYSIsInUiLCJjIiwiaWQiLCJuYW1lIiwib3B0aW9ucyIsIm1ldGhvZCIsIl9pTCIsIl9vbk1MIiwiX2FkZEVMIiwiaW50ZXJuYWwiLCJfdU1QIiwiX2JlZkMiLCJfcHJlcFAiLCJjcmVhdGUiLCJpc1Byb21pc2UiLCJfc3RhdGUiLCJsIiwidGltZSIsIm1pY3JvU2Vjb25kcyIsImRhdGEiLCJQUk9NSVNFX1JFU09MVkVEX1ZPSUQiLCJwb3N0TWVzc2FnZSIsImNhdGNoIiwiZCIsImYiLCJmbiIsIm9uTWVzc2FnZSIsImgiLCJmaWx0ZXIiLCJfcHVia2V5IiwiY2xvc2VkIiwiRXJyb3IiLCJKU09OIiwic3RyaW5naWZ5IiwicG9zdEludGVybmFsIiwib25tZXNzYWdlIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJmaW5kIiwiY2xvc2UiLCJQcm9taXNlIiwiZnJvbSIsIm1hcCIsImlzQ2xvc2VkIiwiY3JlYXRlTGVhZGVyRWxlY3Rpb24iLCJiZUxlYWRlciIsImVudW1lcmFibGUiLCJnZXQiLCJfbGVhZGVyRWxlY3RvciIsInBhcnNlIiwiZmFsbGJhY2tJbnRlcnZhbCIsInJlc3BvbnNlVGltZSIsImF2ZXJhZ2VSZXNwb25zZVRpbWUiLCJkaWUiLCJicm9hZGNhc3RDaGFubmVsIiwiX29wdGlvbnMiLCJpc0xlYWRlciIsImhhc0xlYWRlciIsImlzRGVhZCIsInRva2VuIiwicmFuZG9tVG9rZW4iLCJfYXBsUSIsIl9hcGxRQyIsIl91bmwiLCJfbHN0bnMiLCJfZHBMIiwiX2RwTEMiLCJjb250ZXh0IiwiYWN0aW9uIiwiYXBwbHlPbmNlIiwic2xlZXAiLCJQUk9NSVNFX1JFU09MVkVEX1RSVUUiLCJyYWNlIiwicmVqZWN0IiwiYXdhaXRMZWFkZXJzaGlwIiwiX2FMUCIsIm9uZHVwbGljYXRlIiwicmVtb3ZlIiwiY29uY2F0IiwibWV0aG9kcyIsIkJvb2xlYW4iLCJ3ZWJXb3JrZXJTdXBwb3J0IiwiaXNOb2RlIiwiY2FuQmVVc2VkIiwidyIsIkMiLCJjbGVhbk9sZE1lc3NhZ2VzIiwicCIsInkiLCJjcmVhdGVEYXRhYmFzZSIsImdldEFsbE1lc3NhZ2VzIiwidHJhbnNhY3Rpb24iLCJvYmplY3RTdG9yZSIsIm9wZW5DdXJzb3IiLCJvbnN1Y2Nlc3MiLCJ0YXJnZXQiLCJyZXN1bHQiLCJjb250aW51ZSIsImdldElkYiIsImdldE1lc3NhZ2VzSGlnaGVyVGhhbiIsImdldE9sZE1lc3NhZ2VzIiwiYiIsInJlbW92ZU1lc3NhZ2VCeUlkIiwid3JpdGVNZXNzYWdlIiwiaW5kZXhlZERCIiwibW96SW5kZXhlZERCIiwid2Via2l0SW5kZXhlZERCIiwibXNJbmRleGVkREIiLCJvcGVuIiwib251cGdyYWRlbmVlZGVkIiwiY3JlYXRlT2JqZWN0U3RvcmUiLCJrZXlQYXRoIiwiYXV0b0luY3JlbWVudCIsIm9uZXJyb3IiLCJ1dWlkIiwiZ2V0VGltZSIsIm9uY29tcGxldGUiLCJJREJLZXlSYW5nZSIsImJvdW5kIiwibGFzdEN1cnNvcklkIiwiY2hhbm5lbE5hbWUiLCJlTUlzIiwiT2JsaXZpb3VzU2V0IiwiaWRiIiwidHRsIiwid3JpdGVCbG9ja1Byb21pc2UiLCJtZXNzYWdlc0NhbGxiYWNrIiwicmVhZFF1ZXVlUHJvbWlzZXMiLCJvbmNsb3NlIiwibSIsIm1lc3NhZ2VzQ2FsbGJhY2tUaW1lIiwic29ydCIsInJhbmRvbUludCIsIkUiLCJhZGRTdG9yYWdlRXZlbnRMaXN0ZW5lciIsImdldExvY2FsU3RvcmFnZSIsInJlbW92ZVN0b3JhZ2VFdmVudExpc3RlbmVyIiwic3RvcmFnZUtleSIsImxvY2FsU3RvcmFnZSIsInNldEl0ZW0iLCJkb2N1bWVudCIsImNyZWF0ZUV2ZW50IiwiaW5pdEV2ZW50Iiwia2V5IiwibmV3VmFsdWUiLCJkaXNwYXRjaEV2ZW50IiwibG9jYWxzdG9yYWdlIiwicmVtb3ZlVGltZW91dCIsImxpc3RlbmVyIiwicmVtb3ZlSXRlbSIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJiYyIsInN1YkZucyIsImFyZ3VtZW50cyIsIm5vZGUiLCJtYXhQYXJhbGxlbFdyaXRlcyIsInVzZUZhc3RQYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJ0b1N0cmluZyIsInN1YnN0cmluZyIsInJlc29sdmUiLCJjYWxsIiwiZm9ybWF0QXJncyIsInVzZUNvbG9ycyIsIm5hbWVzcGFjZSIsImh1bWFuaXplIiwiZGlmZiIsImNvbG9yIiwic3BsaWNlIiwicmVwbGFjZSIsInNhdmUiLCJzdG9yYWdlIiwibG9hZCIsImdldEl0ZW0iLCJlbnYiLCJERUJVRyIsInByb2Nlc3MiLCJfX253anMiLCJtYXRjaCIsImRvY3VtZW50RWxlbWVudCIsInN0eWxlIiwiV2Via2l0QXBwZWFyYW5jZSIsImNvbnNvbGUiLCJmaXJlYnVnIiwiZXhjZXB0aW9uIiwidGFibGUiLCJwYXJzZUludCIsIlJlZ0V4cCIsIiQxIiwiZGVzdHJveSIsIndhcm4iLCJjb2xvcnMiLCJsb2ciLCJkZWJ1ZyIsImZvcm1hdHRlcnMiLCJqIiwiZW5hYmxlZCIsIk51bWJlciIsInByZXYiLCJjdXJyIiwiY29lcmNlIiwidW5zaGlmdCIsInNlbGVjdENvbG9yIiwiZXh0ZW5kIiwiY29uZmlndXJhYmxlIiwibmFtZXNwYWNlcyIsImluaXQiLCJzdGFjayIsImRpc2FibGUiLCJuYW1lcyIsInNraXBzIiwiam9pbiIsImVuYWJsZSIsInNwbGl0Iiwic2xpY2UiLCJ0ZXN0Iiwia2V5cyIsImFicyIsInJvdW5kIiwiZXhlYyIsInBhcnNlRmxvYXQiLCJpc0Zpbml0ZSIsImxvbmciLCJyZW1vdmVUb29PbGRWYWx1ZXMiLCJ0aW1lTWFwIiwiY2xlYXIiLCJuZXh0IiwicnVuIiwiZnVuIiwiYXJyYXkiLCJuZXh0VGljayIsInRpdGxlIiwiYnJvd3NlciIsImFyZ3YiLCJ2ZXJzaW9uIiwidmVyc2lvbnMiLCJvbiIsImFkZExpc3RlbmVyIiwib25jZSIsIm9mZiIsInJlbW92ZUxpc3RlbmVyIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwiZW1pdCIsInByZXBlbmRMaXN0ZW5lciIsInByZXBlbmRPbmNlTGlzdGVuZXIiLCJsaXN0ZW5lcnMiLCJiaW5kaW5nIiwiY3dkIiwiY2hkaXIiLCJ1bWFzayIsImN0eCIsIlRpbnlFbWl0dGVyIiwiX19leHRlbmRzIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJoYXNPd25Qcm9wZXJ0eSIsIlR5cGVFcnJvciIsImFzc2VydCIsIkFzc2VydEVycm9yIiwiU09VUkNFX05BTUVTUEFDRSIsIkludm9rZUVycm9yIiwiTWVzc2FnZVRpbWVvdXRFcnJvciIsIk1lc3NhZ2VFcnJvciIsIl9fY3JlYXRlQmluZGluZyIsIl9fZXhwb3J0U3RhciIsIl9faW1wb3J0RGVmYXVsdCIsIk9mZmljZVNES01lc3NhZ2VFdmVudCIsImlzT2ZmaWNlU0RLTWVzc2FnZUV2ZW50TGlrZSIsIk9mZmljZVNES0Jyb2FkY2FzdENoYW5uZWwiLCJvcmlnaW4iLCJlbWl0dGVyIiwiY2hhbm5lbElkIiwiYXNzaWduIiwibWVzc2FnZUlkIiwidHJpbSIsImRlZmluZVByb3BlcnRpZXMiLCJfX2F3YWl0ZXIiLCJ0aHJvdyIsImRvbmUiLCJfX2dlbmVyYXRvciIsImxhYmVsIiwic2VudCIsInRyeXMiLCJvcHMiLCJyZXR1cm4iLCJwb3AiLCJfX3NwcmVhZEFycmF5IiwiQ29udGV4dFR5cGUiLCJERUJVR19OQU1FU1BBQ0UiLCJJTlZPS0VfREVGQVVUTF9USU1FT1VUIiwiaW52b2tlSGFuZGxlcnMiLCJldmVudEhhbmRsZXJzIiwiZW1pdHRlcklkIiwiX2RlYnVnTmFtZXNwYWNlIiwiZGVidWdOYW1lc3BhY2UiLCJhdXRvU3RydWN0dXJlZENsb25lIiwiYnJvYWRjYXN0Q2hhbm5lbE9wdGlvbnMiLCJpbml0TWVzc2FnZUV2ZW50Iiwib3JpZ2luTWVzc2FnZSIsImRpc3RyaWJ1dGVNZXNzYWdlIiwiY2hhbm5lbCIsImxvY2F0aW9uIiwic3RydWN0dXJlZENsb25lIiwicmVwbGFjZXIiLCJpc0FycmF5IiwiaGFuZGxlciIsImF1ZGllbmNlIiwiaGFuZGxlcnMiLCJtZXJnZUNvbnRleHRzIiwic3RydWN0dXJlZENsb25lZCIsIm9uTWVzc2FnZUFycml2ZSIsIkludm9rZVJlcXVlc3QiLCJoYW5kbGVJbnZva2VSZXF1ZXN0IiwiSW52b2tlUmVzcG9uc2UiLCJoYW5kbGVJbnZva2VSZXNwb25zZSIsImFyZ3MiLCJlcnJvciIsImludm9rZSIsInBheWxvYWQiLCJhZGRJbnZva2VIYW5kbGVyIiwicmVtb3ZlSW52b2tlSGFuZGxlciIsIkFycmF5QnVmZmVyIiwiRGF0YVZpZXciLCJGaWxlIiwiRmlsZUxpc3QiLCJCbG9iIiwiSW1hZ2VCaXRtYXAiLCJJbWFnZURhdGEiLCJnZXRQcm90b3R5cGVPZiIsIlVpbnQ4QXJyYXkiLCJjcnlwdG8iLCJtc0NyeXB0byIsImdldFJhbmRvbVZhbHVlcyIsInBhZFN0YXJ0IiwiZ2V0U2l6ZSIsInJlbW92ZUFsbCIsInJ1bkFsbCIsIldvcmtlckdsb2JhbFNjb3BlIiwidG9TdHJpbmdUYWciLCJjYWNoZWRTZXRUaW1lb3V0IiwiY2FjaGVkQ2xlYXJUaW1lb3V0IiwiZGVmYXVsdFNldFRpbW91dCIsImRlZmF1bHRDbGVhclRpbWVvdXQiLCJydW5UaW1lb3V0IiwiY3VycmVudFF1ZXVlIiwicXVldWUiLCJkcmFpbmluZyIsInF1ZXVlSW5kZXgiLCJjbGVhblVwTmV4dFRpY2siLCJkcmFpblF1ZXVlIiwibGVuIiwibWFya2VyIiwicnVuQ2xlYXJUaW1lb3V0IiwiSXRlbSIsIm5vb3AiLCJkaXIiLCJzY29wZSIsInByb2R1Y3QiLCJQcm94eSIsInJldm9jYWJsZSIsIlByb3h5UG9seWZpbGwiLCJsYXN0UmV2b2tlRm4iLCJpc09iamVjdCIsInZhbGlkYXRlUHJvdG8iLCJwcm90byIsIiRPYmplY3QiLCJjYW5DcmVhdGVOdWxsUHJvdG9PYmplY3RzIiwib2JqZWN0Q3JlYXRlIiwiU3ludGF4RXJyb3IiLCJUIiwiZ2V0UHJvdG8iLCJPIiwidW5kZWZpbmVkIiwidGhyb3dSZXZva2VkIiwidHJhcCIsInVuc2FmZUhhbmRsZXIiLCJrIiwicHJveHkiLCJpc01ldGhvZCIsInVzaW5nTmV3IiwiZ2V0dGVyIiwicHJvcCIsInNldHRlciIsInByb3BlcnR5TmFtZXMiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwicHJvcGVydHlNYXAiLCJyZWFsIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZGVzYyIsInByb3RvdHlwZU9rIiwic2V0UHJvdG8iLCJzZWFsIiwiY2FsbGJhY2siLCJldnRBcnIiLCJldnRzIiwibGl2ZUV2ZW50cyIsImNyZWF0ZURvY3NSYW5nZUZhY2FkZSIsImhvc3QiLCJsb2NhdG9yIiwiY3JlYXRlVmFsdWVPYmplY3RGYWNhZGUiLCJzdGFydCIsImVuZCIsImlzQ2FyZXQiLCJjcmVhdGVEb2NzVGFibGVGYWNhZGUiLCJ0YWJsZUlkIiwiZ2V0Q2VsbCIsInJvdyIsImNvbHVtbiIsImludm9rZUVkaXRvckZhY2FkZSIsIm5leHRMb2NhdG9yIiwiZ2V0UmFuZ2UiLCJzZWxlY3Rpb24iLCJjcmVhdGVTaGVldFJhbmdlRmFjYWRlIiwiY3JlYXRlU2hlZXRDZWxsRmFjYWRlIiwiY3JlYXRlU2hlZXRXb3Jrc2hlZXRGYWNhZGUiLCJyYW5nZUxvY2F0b3IiLCJjZWxsTG9jYXRvciIsImdldEFjdGl2ZUNlbGwiLCJjcmVhdGVQcmVzZW50YXRpb25UZXh0UmFuZ2VGYWNhZGUiLCJjcmVhdGVQcmVzZW50YXRpb25TbGlkZUZhY2FkZSIsInNsaWRlSWQiLCJ0aXRsZUZhY2FkZSIsImFkZENoYW5nZWRMaXN0ZW5lciIsImxpc3RlbkVkaXRvckV2ZW50Iiwic2V0VGl0bGUiLCJjb21tZW50c0ZhY2FkZSIsInNob3ciLCJoaWRlIiwiaGlzdG9yeUZhY2FkZSIsImRpc2N1c3Npb25GYWNhZGUiLCJjb2xsYWJvcmF0b3JGYWNhZGUiLCJleHRlcm5hbEFwcEZhY2FkZSIsImluc2VydCIsInVybCIsInBhcmFtcyIsImxvY2tzRmFjYWRlIiwiYWRkUmFuZ2VMb2NrIiwiYWRkU2hlZXRMb2NrIiwicmVtb3ZlUmFuZ2VMb2Nrc0luUmFuZ2VzIiwicmVtb3ZlU2hlZXRMb2NrIiwibWVudGlvbkZhY2FkZSIsImxvY2F0ZUNlbGxCeUd1aWQiLCJndWlkIiwibm90aWZpY2F0aW9uVHlwZSIsImNvbnRlbnRGYWNhZGUiLCJzZXRDb250ZW50IiwiY29udGVudCIsInZlcnNpb25GYWNhZGUiLCJjcmVhdGVSZXZpc2lvbiIsInByZXNlbnRhdGlvbkZhY2FkZSIsImluZGV4IiwicXVpdCIsInN0YXJ0RnJvbUN1cnJlbnQiLCJzdGFydFJlbW90ZUxpdmUiLCJzdGFydFNwZWFrZXJWaWV3IiwiYWRkQ2hhbmdlTGlzdGVuZXIiLCJyZWdpc3RlckVkaXRvckZhY2FkZUxpc3RlbmVyIiwiYmF0Y2hDaGFuZ2VzRmFjYWRlIiwiY2FsbGJhY2tJZCIsInJlZ2lzdGVyRWRpdG9yRmFjYWRlQ2FsbGJhY2siLCJ1bnJlZ2lzdGVyRWRpdG9yRmFjYWRlQ2FsbGJhY2siLCJwcmludEZhY2FkZSIsImV4cG9ydEZhY2FkZSIsImRvY3NTZWxlY3Rpb25GYWNhZGUiLCJjcmVhdGVFZGl0b3JGYWNhZGVNb2R1bGUiLCJnZXRXaG9sZVJhbmdlIiwiYWRkUmFuZ2VMaXN0ZW5lciIsImRvY3NUYWJsZXNGYWNhZGUiLCJnZXRBbGwiLCJnZXRPbmUiLCJzaGVldFdvcmtib29rRmFjYWRlIiwiZ2V0V29ya3NoZWV0cyIsInNoZWV0IiwiZ2V0V29ya3NoZWV0QnlJZCIsInNoZWV0SWQiLCJ3b3Jrc2hlZXQiLCJnZXRBY3RpdmVXb3Jrc2hlZXQiLCJwcmVzZW50YXRpb25TbGlkZXNGYWNhZGUiLCJnZXRDdXJyZW50U2xpZGUiLCJzbGlkZSIsImdldFNsaWRlcyIsImdldFNsaWRlQnlJZCIsImdldFNlbGVjdGVkU2xpZGVzIiwiaWRzIiwiYWRkU2xpZGUiLCJkdXBsaWNhdGVTbGlkZSIsInByZXNlbnRhdGlvblNlbGVjdGlvbkZhY2FkZSIsImdldFRleHRSYW5nZSIsInByZXNlbnRhdGlvbkV2ZW50U3Vic2NyaXB0aW9uRmFjYWRlIiwiYWRkRXJyb3JMaXN0ZW5lciIsImFkZExvYWRlZExpc3RlbmVyIiwiZG9jc091dGxpbmVGYWNhZGUiLCJmaWxlVHlwZSIsIkZpbGVUeXBlIiwiRG9jdW1lbnQiLCJoaXN0b3J5IiwiY29tbWVudHMiLCJkaXNjdXNzaW9uIiwiY29sbGFib3JhdG9yIiwiZXh0ZXJuYWxBcHAiLCJwcmVzZW50YXRpb24iLCJzZXR0aW5ncyIsInNlYXJjaCIsIm91dGxpbmUiLCJzaWRlYmFyIiwidGFibGVzIiwiYmF0Y2hDaGFuZ2VzIiwicHJpbnQiLCJTcHJlYWRzaGVldCIsImxvY2tzIiwibWVudGlvbiIsIndvcmtib29rIiwiYWN0aXZlU2hlZXQiLCJhY3RpdmUiLCJjaGFydHMiLCJzZWxlY3Rpb25zIiwiZXhwb3J0Iiwic2V0Rm9jdXMiLCJpc0ZvY3VzIiwiUHJlc2VudGF0aW9uIiwic2xpZGVzIiwidGV4dCIsInpvb20iLCJldmVudFN1YnNjcmlwdGlvbiIsIk1lbnRpb25UeXBlcyIsIlBlcm1pc3Npb25MZXZlbCIsIlNoZWV0UmFuZ2VUeXBlIiwiRWRpdG9yU2F2ZVN0YXR1cyIsImVuc3VyZUhlYWRlckJhcnNUaXRsZUNoYW5nZVN1YnNjcmlwdGlvbiIsImlzVGl0bGVTdWJzY3JpYmVkIiwic2V0VGl0bGVTdWJzY3JpYmVkIiwib25JbnRlcm5hbFRpdGxlQ2hhbmdlIiwiZ2V0VGl0bGVIYW5kbGVyIiwic3Vic2NyaWJlRWRpdG9yVGl0bGVDaGFuZ2UiLCJzeW5jSGVhZGVyQmFyc0NvbW1hbmRzIiwiY29tbWFuZHMiLCJjb21tYW5kTWFwIiwiZ2V0Q29tbWFuZHNNYXAiLCJjb21tYW5kIiwic3luY0hlYWRlckJhcnNWaXNpYmxlIiwiaW52b2tlSGVhZGVyQmFycyIsIkhFQURFUl9CQVJTX01FVEhPRCIsImdldFZpc2libGUiLCJzZXRWaXNpYmxlU3RhdGUiLCJ2aXNpYmxlIiwiZ2V0VmlzaWJsZVN0YXRlIiwic2V0SGVhZGVyQmFyc1Zpc2libGUiLCJzZXRWaXNpYmxlIiwiZ2V0SGVhZGVyQmFyc0NvbW1hbmRSZWYiLCJyZWZzIiwiZ2V0UmVmc01hcCIsImV4aXN0aW5nIiwiZ2V0Q29tbWFuZCIsImVyciIsImVtaXRIZWFkZXJCYXJzRXJyb3IiLCJyZWYiLCJkaXNhYmxlZCIsInNyYyIsImVkaXRhYmxlIiwib25Db21tYW5kQ2xpY2siLCJnZXRTdGF0ZSIsImN1cnJlbnQiLCJzZXRDb21tYW5kVmlzaWJsZSIsInNldENvbW1hbmREaXNhYmxlZCIsInNldENvbW1hbmRTcmMiLCJzZXRDb21tYW5kTGFiZWwiLCJzZXRDb21tYW5kRWRpdGFibGUiLCJnZXRPdmVycmlkZXNNYXAiLCJzZXRDb21tYW5kQ2FsbGJhY2tFbmFibGVkIiwiYWRkQ29tbWFuZCIsImxpc3RWaWV3Q29tbWFuZHMiLCJoYW5kbGVDb21tYW5kQ2xpY2siLCJIRUFERVJfQkFSU19DSEFOR0VEX0VWRU5UIiwiZmFjYWRlIiwib25UaXRsZUNoYW5nZSIsInBvc0NvbW1hbmQiLCJwb3MiLCJvbkNsaWNrIiwiY29tbWFuZFBheWxvYWQiLCJhZGRlZCIsImNsaWNrSGFuZGxlciIsInNldFRpdGxlSGFuZGxlciIsInNuYXBzaG90IiwiSW52b2tlTWV0aG9kIiwiTGlzdGVuRWRpdG9yRXZlbnQiLCJnbG9iYWxUaGlzIiwiQVVEIiwiU01fUEFSQU1TX0tFWSIsIkxFR0FDWV9MQU5HVUFHRV9NQVAiLCJlbiIsImphIiwiU1VQUE9SVEVEX0xBTkdVQUdFUyIsIlBST01JU0VfTElLRV9QUk9YWV9QUk9QUyIsInNob3VsZFNraXBGYWNhZGVQcm94eVByb3AiLCJNZXNzYWdlRXZlbnQiLCJfZmlsZVR5cGUiLCJVbmtub3duIiwibWVzc2FnZUhhbmRsZXIiLCJfcmVhZHlTdGF0ZSIsIlJlYWR5U3RhdGUiLCJMb2FkaW5nIiwiY29sbGFib3JhdG9ycyIsImhlYWRlckJhcnNWaXNpYmxlIiwiaGVhZGVyQmFyc0NvbW1hbmRzIiwiaGVhZGVyQmFyc0NvbW1hbmRPdmVycmlkZXMiLCJzbGFzaE1lbnVDYWxsYmFja3MiLCJlZGl0b3JGYWNhZGVDYWxsYmFja3MiLCJoZWFkZXJCYXJzQ29tbWFuZFJlZnMiLCJoZWFkZXJCYXJzVGl0bGVDaGFuZ2VTdWJzY3JpYmVkIiwicHJlbG9hZEFja1RpbWVvdXRNcyIsInByZWxvYWREb25lVGltZW91dE1zIiwicHJlbG9hZFJlYWR5VGltZW91dE1zIiwiY29ubmVjdE9wdGlvbnMiLCJ1c2VyVXVpZCIsIm5vcm1hbGl6ZWRFbXB0eVBhZ2UiLCJub3JtYWxpemVFbXB0eVBhZ2VPcHRpb25zIiwiZW1wdHlQYWdlIiwiY29udGFpbmVyIiwiSFRNTEVsZW1lbnQiLCJ0YWdOYW1lIiwiZW5kcG9pbnQiLCJVUkwiLCJzYW1lT3JpZ2luIiwicGF0aG5hbWUiLCJhcGlBZGFwdG9yIiwiYXBpQWRhcHRvckNvbnRleHQiLCJzdGFydFBhcmFtcyIsIlN0YXJ0UGFyYW1zIiwic21QYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJvblZpZXdwb3J0UmVzaXplIiwiZXZlbnQiLCJTREtFdmVudCIsIlZpZXdwb3J0UmVzaXplIiwiZ2V0Q29udGFpbmVyUmVjdCIsImluaXRDaGFubmVsIiwiaGVhZGVyQmFycyIsImluaXRIZWFkZXJCYXJzRmFjYWRlIiwibWVzc2FnZUV4cGlyZXMiLCJpc05hTiIsImhhbmRsZWRNZXNzYWdlQ2FjaGUiLCJldnQiLCJzaG91bGRIYW5kbGVNZXNzYWdlIiwic2hvdWxkRXhwb3NlU2xhc2hNZW51Iiwic2xhc2hNZW51IiwiaGludGVkVHlwZSIsImdldFNsYXNoTWVudVR5cGVIaW50IiwiY3JlYXRlU2VyaWFsaXplZFNsYXNoTWVudSIsImVudHJpZXMiLCJzZXJpYWxpemVTbGFzaE1lbnVJdGVtcyIsIml0ZW1zIiwicGF0aCIsIml0ZW0iLCJuZXh0UGF0aCIsImlzU2xhc2hNZW51RW50cnkiLCJjaGlsZHJlbiIsInJlZ2lzdGVyU2xhc2hNZW51Q2FsbGJhY2siLCJzZXJpYWxpemVkSXRlbSIsImljb24iLCJnZXRFZGl0b3IiLCJlZGl0b3IiLCJzZXRDcmVkZW50aWFscyIsIlNldENyZWRlbnRpYWxzIiwic2V0U2lnbmF0dXJlIiwic2lnbmF0dXJlIiwic2V0VG9rZW4iLCJnZXRQZXJmb3JtYW5jZUVudHJpZXMiLCJSZXF1ZXN0UGVyZm9ybWFuY2VFbnRyaWVzIiwiZGlzY29ubmVjdCIsImVsZW1lbnQiLCJwYXJlbnRFbGVtZW50IiwicmVtb3ZlQ2hpbGQiLCJ2aXN1YWxWaWV3cG9ydCIsIkxvYWRpbmdFZGl0b3IiLCJpbml0SWZyYW1lIiwiYXBwZW5kQ2hpbGQiLCJydW5QcmVsb2FkSGFuZHNoYWtlIiwiaW5pdEVkaXRvciIsInJlYWR5U3RhdGVIYW5kbGVyIiwic3RhdGUiLCJSZWFkeSIsIkV2ZW50IiwiRG9jdW1lbnRQcm8iLCJkb2N1bWVudFBybyIsInNwcmVhZHNoZWV0IiwiVGFibGUiLCJGb3JtIiwiZm9ybSIsIkZsb3djaGFydCIsImZsb3djaGFydCIsImluc3RhbGxSb290RmFjYWRlIiwicmVhZHkiLCJyZWFkeVN0YXRlIiwiaWZyYW1lIiwiY3JlYXRlRWxlbWVudCIsImJvcmRlciIsIm92ZXJmbG93Iiwid2lkdGgiLCJoZWlnaHQiLCJkaXNwbGF5IiwiYWxsb3ciLCJhbGxvd1BvbGljeSIsImFsbG93RnVsbHNjcmVlbiIsImZpbGVJZCIsIm5vdEVtcHR5U3RyaW5nIiwic2VhcmNoUGFyYW1zIiwiZGV2aWNlTW9kZSIsInNob3dMb2FkaW5nRWZmZWN0Iiwic2hvd0xvYWRpbmciLCJsb2FkaW5nT3B0aW9ucyIsImxhbmciLCJub3JtYWxpemVkTGFuZyIsIm5vcm1hbGl6ZWQiLCJub3JtYWxpemVMYW5ndWFnZSIsImZpbGVHdWlkIiwicmVxdWVzdElkIiwicmVhZHlSZXNvbHZlZCIsImFja1Jlc29sdmVkIiwiZG9uZVJlc29sdmVkIiwiYWNrVGltZXIiLCJkb25lVGltZXIiLCJjbGVhbnVwIiwiaGFuZGxlTWVzc2FnZSIsInNlbmRJbml0IiwiY29udGVudFdpbmRvdyIsIm1vZGUiLCJjb2RlIiwibXNnIiwiRURJVE9SX1JFTkRFUkVEX0VWRU5UIiwiRWRpdG9yUmVuZGVyZWQiLCJTREtJbml0Iiwib3B0cyIsInRvVXBwZXJDYXNlIiwiRGlzcGF0Y2hTREtFdmVudCIsImFwcGx5SGVhZGVyQmFyc0NoYW5nZWQiLCJEaXNwYXRjaEVkaXRvckV2ZW50IiwidXBkYXRlQ29sbGFib3JhdG9ycyIsIkVNUFRZX1BBR0VfRVZFTlRTIiwiaXNFbXB0eVBhZ2VFdmVudCIsImJpbmRDb250YWluZXJNZXRob2RIYW5kbGVycyIsIkNvbnRhaW5lck1ldGhvZCIsIkdlbmVyYXRlVXJsIiwiaW5mbyIsImdlbmVyYXRlVXJsIiwiSGFuZGxlQ3VzdG9tVGFzayIsInRhc2tJZCIsImhhbmRsZUN1c3RvbVRhc2siLCJPcGVuTGluayIsIm9wZW5MaW5rIiwiR2V0RmlsZUluZm9Gcm9tVXJsIiwiZ2V0RmlsZUluZm9Gcm9tVXJsIiwiTWVudGlvbkNsaWNrSGFuZGxlckZvck1vYmlsZSIsIm1lbnRpb25DbGlja0hhbmRsZXJGb3JNb2JpbGUiLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwieCIsImlzTWVudGlvbiIsIm1lbnRpb25JbmZvIiwibGVmdCIsInRvcCIsIkdldENvbnRhaW5lclJlY3QiLCJTaG93VG9hc3QiLCJzaG93VG9hc3QiLCJHZXRDcmVkZW50aWFscyIsImdldENyZWRlbnRpYWxzIiwiaGVhZGVyQmFyc1RpdGxlQ2hhbmdlSGFuZGxlciIsInN1YnNjcmliZWQiLCJjcmVhdGVIZWFkZXJCYXJzSG9zdCIsInByZWZpeCIsIm92ZXJyaWRlcyIsInN0YXRpY0ZpZWxkcyIsImNsZWFyUm9vdEZhY2FkZSIsImJ1aWxkUm9vdEZhY2FkZVN0YXRlIiwiSW52b2tlRWRpdG9yTWV0aG9kIiwiYWRqdXN0RXZlbnROYW1lIiwiaW5zdCIsImdldENvbGxhYm9yYXRvcnMiLCJjcmVhdGVOZXN0ZWRQcm94eSIsIl90YXJnZXQiLCJfdGhpc0FyZyIsInZpZXdwb3J0V2lkdGgiLCJpbm5lcldpZHRoIiwidmlld3BvcnRIZWlnaHQiLCJpbm5lckhlaWdodCIsImJvdHRvbSIsInJpZ2h0Iiwic2Nyb2xsVG9wIiwic2Nyb2xsaW5nRWxlbWVudCIsIm9mZnNldExlZnQiLCJvZmZzZXRUb3AiLCJwYWdlTGVmdCIsInBhZ2VUb3AiLCJzY2FsZSIsIk9mZmljZVNESyIsImNvbmRpdGlvbiIsInNkayIsIkFMTF9FTVBUWV9QQUdFX1NDRU5FUyIsIlNUQVJUX1BBUkFNU19GSUVMRCIsInJlc29sdmVTY2VuZXMiLCJmaWx0ZXJlZCIsInNjZW5lIiwicmVzb2x2ZVRva2VuRXhwaXJlZFN0cmF0ZWd5IiwicGlja1N0cmluZyIsInJlc29sdmVBY3Rpb24iLCJyZXNvbHZlQ29udGVudE92ZXJyaWRlIiwiZGVzY3JpcHRpb24iLCJwcmltYXJ5Iiwic2Vjb25kYXJ5IiwicmVzb2x2ZU92ZXJyaWRlcyIsInJlc29sdmVkIiwic2NlbmVzIiwidG9rZW5FeHBpcmVkU3RyYXRlZ3kiLCJybmRzOCIsInJuZyIsImJ5dGVUb0hleCIsInN1YnN0ciIsIm9mZnNldCIsIl9ub2RlSWQiLCJfY2xvY2tzZXEiLCJfbGFzdE1TZWNzIiwiX2xhc3ROU2VjcyIsImJ1ZiIsImNsb2Nrc2VxIiwic2VlZEJ5dGVzIiwibXNlY3MiLCJuc2VjcyIsImR0IiwidGwiLCJ0bWgiLCJoYXNoZnVuYyIsImdlbmVyYXRlVVVJRCIsInVuZXNjYXBlIiwiZW5jb2RlVVJJQ29tcG9uZW50Iiwic3RyaW5nVG9CeXRlcyIsIkROUyIsImdldE91dHB1dExlbmd0aCIsImlucHV0TGVuZ3RoOCIsInNhZmVBZGQiLCJsc3ciLCJtZDVjbW4iLCJxIiwibnVtIiwiY250IiwibWQ1ZmYiLCJtZDVnZyIsIm1kNWhoIiwibWQ1aWkiLCJ2MzUiLCJvdXRwdXQiLCJsZW5ndGgzMiIsImhleFRhYiIsImhleCIsImNoYXJBdCIsIm1kNVRvSGV4RW5jb2RlZEFycmF5Iiwib2xkYSIsIm9sZGIiLCJvbGRjIiwib2xkZCIsIndvcmRzVG9NZDUiLCJsZW5ndGg4IiwiVWludDMyQXJyYXkiLCJieXRlc1RvV29yZHMiLCJybmRzIiwieiIsIlJPVEwiLCJLIiwiSCIsIk4iLCJjZWlsIiwiTSIsInBvdyIsIl9pMiIsIlciLCJfdCIsIl90MiIsIl9hIiwiX192YWx1ZXMiLCJfX3JlYWQiLCJhciIsImNvbnZlcnRGaWxlVHlwZSIsIkZpbGVUeXBlQWxpYXMiLCJNaW5kbWFwIiwiQm9hcmQiLCJlXzEiLCJlXzIiLCJfYiIsIl9jIiwiX2QiLCJfZSIsImVfMV8xIiwiX2YiLCJfZyIsIl9oIiwiZV8yXzEiLCJpc1NES0V2ZW50TWVzc2FnZSIsImZyZWV6ZSIsImsyIiwid3JpdGFibGUiLCJVcmxTaGFyaW5nVHlwZSIsIlNwcmVhZHNoZWV0U2hhcmluZ0Zyb20iLCJtb2QiLCJpc19wbGFpbl9vYmpfMSIsImJhc2U2MiIsInBhcmFtc18xIiwicGFyYW0iLCJwYXJhbVN0ciIsInBhcmVudCIsImVudHJ5VW5iaW5kIiwiaXNDYWxsYWJsZSIsInRyeVRvU3RyaW5nIiwiJFR5cGVFcnJvciIsImFyZ3VtZW50IiwiaXNDb25zdHJ1Y3RvciIsImlzUG9zc2libGVQcm90b3R5cGUiLCIkU3RyaW5nIiwid2VsbEtub3duU3ltYm9sIiwiVU5TQ09QQUJMRVMiLCJBcnJheVByb3RvdHlwZSIsImlzUHJvdG90eXBlT2YiLCJpdCIsIlByb3RvdHlwZSIsInRvT2JqZWN0IiwiY2FsbFdpdGhTYWZlSXRlcmF0aW9uQ2xvc2luZyIsImlzQXJyYXlJdGVyYXRvck1ldGhvZCIsImxlbmd0aE9mQXJyYXlMaWtlIiwiY3JlYXRlUHJvcGVydHkiLCJnZXRJdGVyYXRvciIsImdldEl0ZXJhdG9yTWV0aG9kIiwiJEFycmF5IiwiYXJyYXlMaWtlIiwiSVNfQ09OU1RSVUNUT1IiLCJhcmd1bWVudHNMZW5ndGgiLCJtYXBmbiIsIm1hcHBpbmciLCJzdGVwIiwiaXRlcmF0b3JNZXRob2QiLCJ0b0luZGV4ZWRPYmplY3QiLCJ0b0Fic29sdXRlSW5kZXgiLCJjcmVhdGVNZXRob2QiLCJJU19JTkNMVURFUyIsIiR0aGlzIiwiZWwiLCJmcm9tSW5kZXgiLCJpbmRleE9mIiwidW5jdXJyeVRoaXMiLCJhcnJheVNsaWNlIiwiY29tcGFyZWZuIiwibWlkZGxlIiwibGxlbmd0aCIsInJsZW5ndGgiLCJsaW5kZXgiLCJyaW5kZXgiLCJhbk9iamVjdCIsIml0ZXJhdG9yQ2xvc2UiLCJFTlRSSUVTIiwiSVRFUkFUT1IiLCJTQUZFX0NMT1NJTkciLCJjYWxsZWQiLCJpdGVyYXRvcldpdGhSZXR1cm4iLCJTS0lQX0NMT1NJTkciLCJJVEVSQVRJT05fU1VQUE9SVCIsIm9iamVjdCIsInN0cmluZ1NsaWNlIiwiVE9fU1RSSU5HX1RBR19TVVBQT1JUIiwiY2xhc3NvZlJhdyIsIlRPX1NUUklOR19UQUciLCJDT1JSRUNUX0FSR1VNRU5UUyIsInRhZyIsInRyeUdldCIsImNhbGxlZSIsImhhc093biIsIm93bktleXMiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUiLCJkZWZpbmVQcm9wZXJ0eU1vZHVsZSIsImV4Y2VwdGlvbnMiLCJmYWlscyIsIkYiLCJERVNDUklQVE9SUyIsImNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciIsImJpdG1hcCIsIm1ha2VCdWlsdEluIiwiZGVzY3JpcHRvciIsImRlZmluZUdsb2JhbFByb3BlcnR5Iiwic2ltcGxlIiwiZ2xvYmFsIiwidW5zYWZlIiwibm9uQ29uZmlndXJhYmxlIiwibm9uV3JpdGFibGUiLCJkZWZpbmVCdWlsdEluIiwiRVhJU1RTIiwiQ1NTUnVsZUxpc3QiLCJDU1NTdHlsZURlY2xhcmF0aW9uIiwiQ1NTVmFsdWVMaXN0IiwiQ2xpZW50UmVjdExpc3QiLCJET01SZWN0TGlzdCIsIkRPTVN0cmluZ0xpc3QiLCJET01Ub2tlbkxpc3QiLCJEYXRhVHJhbnNmZXJJdGVtTGlzdCIsIkhUTUxBbGxDb2xsZWN0aW9uIiwiSFRNTENvbGxlY3Rpb24iLCJIVE1MRm9ybUVsZW1lbnQiLCJIVE1MU2VsZWN0RWxlbWVudCIsIk1lZGlhTGlzdCIsIk1pbWVUeXBlQXJyYXkiLCJOYW1lZE5vZGVNYXAiLCJOb2RlTGlzdCIsIlBhaW50UmVxdWVzdExpc3QiLCJQbHVnaW4iLCJQbHVnaW5BcnJheSIsIlNWR0xlbmd0aExpc3QiLCJTVkdOdW1iZXJMaXN0IiwiU1ZHUGF0aFNlZ0xpc3QiLCJTVkdQb2ludExpc3QiLCJTVkdTdHJpbmdMaXN0IiwiU1ZHVHJhbnNmb3JtTGlzdCIsIlNvdXJjZUJ1ZmZlckxpc3QiLCJTdHlsZVNoZWV0TGlzdCIsIlRleHRUcmFja0N1ZUxpc3QiLCJUZXh0VHJhY2tMaXN0IiwiVG91Y2hMaXN0IiwiY2xhc3NMaXN0IiwiZG9jdW1lbnRDcmVhdGVFbGVtZW50IiwiRE9NVG9rZW5MaXN0UHJvdG90eXBlIiwiQ09OU1RSVUNUT1IiLCJNRVRIT0QiLCJQZWJibGUiLCJFTlZJUk9OTUVOVCIsIkRlbm8iLCJ2OCIsImNsYXNzb2YiLCJ1c2VyQWdlbnRTdGFydHNXaXRoIiwic3RyaW5nIiwiQnVuIiwiJEVycm9yIiwiVEVTVCIsIlY4X09SX0NIQUtSQV9TVEFDS19FTlRSWSIsIklTX1Y4X09SX0NIQUtSQV9TVEFDSyIsImRyb3BFbnRyaWVzIiwicHJlcGFyZVN0YWNrVHJhY2UiLCJjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkiLCJjbGVhckVycm9yU3RhY2siLCJFUlJPUl9TVEFDS19JTlNUQUxMQUJMRSIsImNhcHR1cmVTdGFja1RyYWNlIiwiY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyIsImlzRm9yY2VkIiwidGFyZ2V0UHJvcGVydHkiLCJzb3VyY2VQcm9wZXJ0eSIsIlRBUkdFVCIsIkdMT0JBTCIsIlNUQVRJQyIsInN0YXQiLCJkb250Q2FsbEdldFNldCIsImZvcmNlZCIsInNoYW0iLCJOQVRJVkVfQklORCIsIkZ1bmN0aW9uUHJvdG90eXBlIiwiUmVmbGVjdCIsImFDYWxsYWJsZSIsInRoYXQiLCJnZXREZXNjcmlwdG9yIiwiUFJPUEVSIiwiQ09ORklHVVJBQkxFIiwidW5jdXJyeVRoaXNXaXRoQmluZCIsImdldE1ldGhvZCIsImlzTnVsbE9yVW5kZWZpbmVkIiwiSXRlcmF0b3JzIiwidXNpbmdJdGVyYXRvciIsIlYiLCJQIiwiZnVuYyIsImNoZWNrIiwiZ2V0QnVpbHRJbiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwic3RvcmUiLCJmdW5jdGlvblRvU3RyaW5nIiwiaW5zcGVjdFNvdXJjZSIsImNhdXNlIiwiTkFUSVZFX1dFQUtfTUFQIiwic2hhcmVkIiwic2hhcmVkS2V5IiwiaGlkZGVuS2V5cyIsIk9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEIiwiV2Vha01hcCIsIm1ldGFkYXRhIiwiU1RBVEUiLCJlbmZvcmNlIiwiZ2V0dGVyRm9yIiwiVFlQRSIsImRvY3VtZW50QWxsIiwiY29uc3RydWN0IiwiY29uc3RydWN0b3JSZWdFeHAiLCJJTkNPUlJFQ1RfVE9fU1RSSU5HIiwiaXNDb25zdHJ1Y3Rvck1vZGVybiIsImlzQ29uc3RydWN0b3JMZWdhY3kiLCJyZXBsYWNlbWVudCIsImZlYXR1cmUiLCJkZXRlY3Rpb24iLCJub3JtYWxpemUiLCJQT0xZRklMTCIsIk5BVElWRSIsIlVTRV9TWU1CT0xfQVNfVUlEIiwiJFN5bWJvbCIsIlJlc3VsdCIsInN0b3BwZWQiLCJSZXN1bHRQcm90b3R5cGUiLCJpdGVyYWJsZSIsInVuYm91bmRGdW5jdGlvbiIsIml0ZXJGbiIsIkFTX0VOVFJJRVMiLCJJU19SRUNPUkQiLCJJU19JVEVSQVRPUiIsIklOVEVSUlVQVEVEIiwic3RvcCIsImNhbGxGbiIsImtpbmQiLCJpbm5lclJlc3VsdCIsImlubmVyRXJyb3IiLCJJdGVyYXRvclByb3RvdHlwZSIsInNldFRvU3RyaW5nVGFnIiwicmV0dXJuVGhpcyIsIkl0ZXJhdG9yQ29uc3RydWN0b3IiLCJOQU1FIiwiRU5VTUVSQUJMRV9ORVhUIiwiJCIsIklTX1BVUkUiLCJGdW5jdGlvbk5hbWUiLCJjcmVhdGVJdGVyYXRvckNvbnN0cnVjdG9yIiwiSXRlcmF0b3JzQ29yZSIsIlBST1BFUl9GVU5DVElPTl9OQU1FIiwiQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUiLCJCVUdHWV9TQUZBUklfSVRFUkFUT1JTIiwiS0VZUyIsIlZBTFVFUyIsIkl0ZXJhYmxlIiwiREVGQVVMVCIsIklTX1NFVCIsIkZPUkNFRCIsIkN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSIsIktFWSIsImdldEl0ZXJhdGlvbk1ldGhvZCIsIktJTkQiLCJkZWZhdWx0SXRlcmF0b3IiLCJJdGVyYWJsZVByb3RvdHlwZSIsIklOQ09SUkVDVF9WQUxVRVNfTkFNRSIsIm5hdGl2ZUl0ZXJhdG9yIiwiYW55TmF0aXZlSXRlcmF0b3IiLCJ2YWx1ZXMiLCJQcm90b3R5cGVPZkFycmF5SXRlcmF0b3JQcm90b3R5cGUiLCJhcnJheUl0ZXJhdG9yIiwidG9MZW5ndGgiLCJvYmoiLCJJbnRlcm5hbFN0YXRlTW9kdWxlIiwiZW5mb3JjZUludGVybmFsU3RhdGUiLCJnZXRJbnRlcm5hbFN0YXRlIiwiQ09ORklHVVJBQkxFX0xFTkdUSCIsIlRFTVBMQVRFIiwiYXJpdHkiLCJ0cnVuYyIsIm5vdGlmeSIsInRvZ2dsZSIsInByb21pc2UiLCJzYWZlR2V0QnVpbHRJbiIsIm1hY3JvdGFzayIsIlF1ZXVlIiwiSVNfSU9TIiwiSVNfSU9TX1BFQkJMRSIsIklTX1dFQk9TX1dFQktJVCIsIklTX05PREUiLCJNdXRhdGlvbk9ic2VydmVyIiwiV2ViS2l0TXV0YXRpb25PYnNlcnZlciIsIm1pY3JvdGFzayIsImZsdXNoIiwiZG9tYWluIiwiZXhpdCIsImhlYWQiLCJlbnRlciIsImNyZWF0ZVRleHROb2RlIiwib2JzZXJ2ZSIsImNoYXJhY3RlckRhdGEiLCJQcm9taXNlQ2FwYWJpbGl0eSIsIiQkcmVzb2x2ZSIsIiQkcmVqZWN0IiwiJGRlZmF1bHQiLCJvYmplY3RLZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlIiwicHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUiLCJJbmRleGVkT2JqZWN0IiwiJGFzc2lnbiIsIkEiLCJCIiwic3ltYm9sIiwiY2hyIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiUyIsImFjdGl2ZVhEb2N1bWVudCIsImRlZmluZVByb3BlcnRpZXNNb2R1bGUiLCJlbnVtQnVnS2V5cyIsImh0bWwiLCJQUk9UT1RZUEUiLCJTQ1JJUFQiLCJJRV9QUk9UTyIsIkVtcHR5Q29uc3RydWN0b3IiLCJzY3JpcHRUYWciLCJMVCIsIk51bGxQcm90b09iamVjdFZpYUFjdGl2ZVgiLCJ3cml0ZSIsInRlbXAiLCJwYXJlbnRXaW5kb3ciLCJOdWxsUHJvdG9PYmplY3QiLCJBY3RpdmVYT2JqZWN0IiwiaWZyYW1lRG9jdW1lbnQiLCJKUyIsIlByb3BlcnRpZXMiLCJWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyIsInByb3BzIiwiSUU4X0RPTV9ERUZJTkUiLCJ0b1Byb3BlcnR5S2V5IiwiJGRlZmluZVByb3BlcnR5IiwiJGdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIkVOVU1FUkFCTEUiLCJXUklUQUJMRSIsIkF0dHJpYnV0ZXMiLCJpbnRlcm5hbE9iamVjdEtleXMiLCJDT1JSRUNUX1BST1RPVFlQRV9HRVRURVIiLCJPYmplY3RQcm90b3R5cGUiLCIkcHJvcGVydHlJc0VudW1lcmFibGUiLCJOQVNIT1JOX0JVRyIsInVuY3VycnlUaGlzQWNjZXNzb3IiLCJyZXF1aXJlT2JqZWN0Q29lcmNpYmxlIiwiYVBvc3NpYmxlUHJvdG90eXBlIiwiQ09SUkVDVF9TRVRURVIiLCJwcmVmIiwidmFsIiwidmFsdWVPZiIsImdldE93blByb3BlcnR5TmFtZXNNb2R1bGUiLCJOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IiLCJWOF9WRVJTSU9OIiwiTmF0aXZlUHJvbWlzZVByb3RvdHlwZSIsIlNQRUNJRVMiLCJTVUJDTEFTU0lORyIsIk5BVElWRV9QUk9NSVNFX1JFSkVDVElPTl9FVkVOVCIsIlByb21pc2VSZWplY3Rpb25FdmVudCIsIkZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SIiwiUFJPTUlTRV9DT05TVFJVQ1RPUl9TT1VSQ0UiLCJHTE9CQUxfQ09SRV9KU19QUk9NSVNFIiwiRmFrZVByb21pc2UiLCJSRUpFQ1RJT05fRVZFTlQiLCJuZXdQcm9taXNlQ2FwYWJpbGl0eSIsInByb21pc2VDYXBhYmlsaXR5IiwiY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uIiwidGFpbCIsImVudHJ5IiwiZGVmaW5lQnVpbHRJbkFjY2Vzc29yIiwiQ09OU1RSVUNUT1JfTkFNRSIsIkNvbnN0cnVjdG9yIiwiVEFHIiwidWlkIiwiU0hBUkVEIiwiY29weXJpZ2h0IiwibGljZW5zZSIsImFDb25zdHJ1Y3RvciIsImRlZmF1bHRDb25zdHJ1Y3RvciIsInRvSW50ZWdlck9ySW5maW5pdHkiLCJDT05WRVJUX1RPX1NUUklORyIsImZpcnN0Iiwic2Vjb25kIiwicG9zaXRpb24iLCJjb2RlQXQiLCJtYXhJbnQiLCJyZWdleE5vbkFTQ0lJIiwicmVnZXhTZXBhcmF0b3JzIiwiT1ZFUkZMT1dfRVJST1IiLCIkUmFuZ2VFcnJvciIsIlJhbmdlRXJyb3IiLCJkaWdpdFRvQmFzaWMiLCJhZGFwdCIsImRlbHRhIiwibnVtUG9pbnRzIiwiZmlyc3RUaW1lIiwiYmFzZU1pbnVzVE1pbiIsImJhc2UiLCJjb3VudGVyIiwiZXh0cmEiLCJ1Y3MyZGVjb2RlIiwiY3VycmVudFZhbHVlIiwiaW5wdXRMZW5ndGgiLCJiaWFzIiwiYmFzaWNMZW5ndGgiLCJoYW5kbGVkQ1BDb3VudCIsImhhbmRsZWRDUENvdW50UGx1c09uZSIsInFNaW51c1QiLCJiYXNlTWludXNUIiwibGFiZWxzIiwiJGxvY2F0aW9uIiwiZGVmZXIiLCJwb3J0IiwidmFsaWRhdGVBcmd1bWVudHNMZW5ndGgiLCJzZXRJbW1lZGlhdGUiLCJjbGVhckltbWVkaWF0ZSIsIkRpc3BhdGNoIiwiTWVzc2FnZUNoYW5uZWwiLCJPTlJFQURZU1RBVEVDSEFOR0UiLCJydW5uZXIiLCJldmVudExpc3RlbmVyIiwiZ2xvYmFsUG9zdE1lc3NhZ2VEZWZlciIsInByb3RvY29sIiwicG9ydDIiLCJwb3J0MSIsImltcG9ydFNjcmlwdHMiLCJtYXgiLCJtaW4iLCJpbnRlZ2VyIiwibnVtYmVyIiwiaXNTeW1ib2wiLCJvcmRpbmFyeVRvUHJpbWl0aXZlIiwiVE9fUFJJTUlUSVZFIiwiZXhvdGljVG9QcmltIiwidG9QcmltaXRpdmUiLCJwb3N0Zml4IiwicGFyYW1zMiIsInRvSlNPTiIsImhyZWYiLCJ1c2VybmFtZSIsImhhc2giLCJOQVRJVkVfU1lNQk9MIiwicGFzc2VkIiwicmVxdWlyZWQiLCJXZWxsS25vd25TeW1ib2xzU3RvcmUiLCJjcmVhdGVXZWxsS25vd25TeW1ib2wiLCJ3aXRob3V0U2V0dGVyIiwiaW5zdGFsbEVycm9yQ2F1c2UiLCJpbnN0YWxsRXJyb3JTdGFjayIsIml0ZXJhdGUiLCJub3JtYWxpemVTdHJpbmdBcmd1bWVudCIsIiRBZ2dyZWdhdGVFcnJvciIsImVycm9ycyIsImlzSW5zdGFuY2UiLCJBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSIsImVycm9yc0FycmF5IiwiQWdncmVnYXRlRXJyb3IiLCIkaW5jbHVkZXMiLCJhZGRUb1Vuc2NvcGFibGVzIiwiZGVmaW5lSXRlcmF0b3IiLCJjcmVhdGVJdGVyUmVzdWx0T2JqZWN0IiwiQVJSQVlfSVRFUkFUT1IiLCJzZXRJbnRlcm5hbFN0YXRlIiwiaXRlcmF0ZWQiLCJBcmd1bWVudHMiLCJuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSIsInBlcmZvcm0iLCJhbGxTZXR0bGVkIiwiY2FwYWJpbGl0eSIsInByb21pc2VSZXNvbHZlIiwicmVtYWluaW5nIiwiYWxyZWFkeUNhbGxlZCIsInN0YXR1cyIsInJlYXNvbiIsIiRwcm9taXNlUmVzb2x2ZSIsIlBST01JU0VfU1RBVElDU19JTkNPUlJFQ1RfSVRFUkFUSU9OIiwiUFJPTUlTRV9BTllfRVJST1IiLCJhbnkiLCJhbHJlYWR5UmVzb2x2ZWQiLCJhbHJlYWR5UmVqZWN0ZWQiLCJvblJlamVjdGVkIiwiSW50ZXJuYWwiLCJPd25Qcm9taXNlQ2FwYWJpbGl0eSIsIm5hdGl2ZVRoZW4iLCJzZXRTcGVjaWVzIiwiYW5JbnN0YW5jZSIsInNwZWNpZXNDb25zdHJ1Y3RvciIsInRhc2siLCJob3N0UmVwb3J0RXJyb3JzIiwiUHJvbWlzZUNvbnN0cnVjdG9yRGV0ZWN0aW9uIiwiUFJPTUlTRSIsIk5BVElWRV9QUk9NSVNFX1NVQkNMQVNTSU5HIiwiZ2V0SW50ZXJuYWxQcm9taXNlU3RhdGUiLCJQcm9taXNlQ29uc3RydWN0b3IiLCJQcm9taXNlUHJvdG90eXBlIiwibmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5IiwiRElTUEFUQ0hfRVZFTlQiLCJVTkhBTkRMRURfUkVKRUNUSU9OIiwiaXNUaGVuYWJsZSIsImNhbGxSZWFjdGlvbiIsInJlYWN0aW9uIiwiZXhpdGVkIiwib2siLCJmYWlsIiwicmVqZWN0aW9uIiwib25IYW5kbGVVbmhhbmRsZWQiLCJpc1JlamVjdCIsIm5vdGlmaWVkIiwicmVhY3Rpb25zIiwib25VbmhhbmRsZWQiLCJpc1VuaGFuZGxlZCIsInVud3JhcCIsImludGVybmFsUmVqZWN0IiwiaW50ZXJuYWxSZXNvbHZlIiwid3JhcHBlciIsImV4ZWN1dG9yIiwib25GdWxmaWxsZWQiLCJQcm9taXNlV3JhcHBlciIsIndyYXAiLCJvbkZpbmFsbHkiLCJpc0Z1bmN0aW9uIiwiY2FwYWJpbGl0eVJlamVjdCIsIlByb21pc2VDb25zdHJ1Y3RvcldyYXBwZXIiLCJDSEVDS19XUkFQUEVSIiwiQUNDRVBUX0FSR1VNRU5UUyIsImNhbGxiYWNrZm4iLCJ3aXRoUmVzb2x2ZXJzIiwiJGZyb21Db2RlUG9pbnQiLCJmcm9tQ29kZVBvaW50IiwiZWxlbWVudHMiLCJTVFJJTkdfSVRFUkFUT1IiLCJwb2ludCIsIkRPTUl0ZXJhYmxlcyIsIkFycmF5SXRlcmF0b3JNZXRob2RzIiwiQXJyYXlWYWx1ZXMiLCJoYW5kbGVQcm90b3R5cGUiLCJDb2xsZWN0aW9uUHJvdG90eXBlIiwiQ09MTEVDVElPTl9OQU1FIiwiTUVUSE9EX05BTUUiLCJVU0VfTkFUSVZFX1VSTCIsImRlZmluZUJ1aWx0SW5zIiwiJHRvU3RyaW5nIiwiYXJyYXlTb3J0IiwiVVJMX1NFQVJDSF9QQVJBTVMiLCJVUkxfU0VBUkNIX1BBUkFNU19JVEVSQVRPUiIsImdldEludGVybmFsUGFyYW1zU3RhdGUiLCJnZXRJbnRlcm5hbEl0ZXJhdG9yU3RhdGUiLCJuYXRpdmVGZXRjaCIsIk5hdGl2ZVJlcXVlc3QiLCJIZWFkZXJzIiwiUmVxdWVzdFByb3RvdHlwZSIsIkhlYWRlcnNQcm90b3R5cGUiLCIkcGFyc2VJbnQiLCJzaGlmdCIsInBsdXMiLCJWQUxJRF9IRVgiLCJwYXJzZUhleE9jdGV0IiwiTmFOIiwiZ2V0TGVhZGluZ09uZXMiLCJvY3RldCIsImNvdW50IiwibWFzayIsInV0ZjhEZWNvZGUiLCJvY3RldHMiLCJjb2RlUG9pbnQiLCJkZWNvZGVkQ2hhciIsImJ5dGVTZXF1ZW5jZUxlbmd0aCIsInNlcXVlbmNlSW5kZXgiLCJuZXh0Qnl0ZSIsInJlcGxhY2VtZW50cyIsInNlcmlhbGl6ZSIsIlVSTFNlYXJjaFBhcmFtc0l0ZXJhdG9yIiwiVVJMU2VhcmNoUGFyYW1zU3RhdGUiLCJwYXJzZU9iamVjdCIsInBhcnNlUXVlcnkiLCJiaW5kVVJMIiwidXBkYXRlIiwiZW50cnlJdGVyYXRvciIsImVudHJ5TmV4dCIsInF1ZXJ5IiwiYXR0cmlidXRlIiwiYXR0cmlidXRlcyIsInVwZGF0ZVVSTCIsIlVSTFNlYXJjaFBhcmFtc0NvbnN0cnVjdG9yIiwiVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlIiwiYXBwZW5kIiwiJHZhbHVlIiwiZm91bmQiLCJib3VuZEZ1bmN0aW9uIiwiaGVhZGVyc0hhcyIsImhlYWRlcnNTZXQiLCJ3cmFwUmVxdWVzdE9wdGlvbnMiLCJoZWFkZXJzIiwiYm9keSIsImZldGNoIiwiUmVxdWVzdENvbnN0cnVjdG9yIiwiUmVxdWVzdCIsIiRVUkxTZWFyY2hQYXJhbXMiLCIkZGVsZXRlIiwiZGluZGV4IiwiZW50cmllc0xlbmd0aCIsIiRoYXMiLCJUSFJPV1NfV0lUSE9VVF9BUkdVTUVOVFMiLCJjYW5QYXJzZSIsIldST05HX0FSSVRZIiwidXJsU3RyaW5nIiwiRU9GIiwiYXJyYXlGcm9tIiwidG9BU0NJSSIsIlVSTFNlYXJjaFBhcmFtc01vZHVsZSIsImdldEludGVybmFsVVJMU3RhdGUiLCJnZXRJbnRlcm5hbFNlYXJjaFBhcmFtc1N0YXRlIiwiTmF0aXZlVVJMIiwibnVtYmVyVG9TdHJpbmciLCJJTlZBTElEX1NDSEVNRSIsIklOVkFMSURfSE9TVCIsIklOVkFMSURfUE9SVCIsIkFMUEhBIiwiQUxQSEFOVU1FUklDIiwiRElHSVQiLCJIRVhfU1RBUlQiLCJPQ1QiLCJERUMiLCJIRVgiLCJGT1JCSURERU5fSE9TVF9DT0RFX1BPSU5UIiwiRk9SQklEREVOX0hPU1RfQ09ERV9QT0lOVF9FWENMVURJTkdfUEVSQ0VOVCIsIkxFQURJTkdfQzBfQ09OVFJPTF9PUl9TUEFDRSIsIlRSQUlMSU5HX0MwX0NPTlRST0xfT1JfU1BBQ0UiLCJUQUJfQU5EX05FV19MSU5FIiwic2VyaWFsaXplSG9zdCIsImNvbXByZXNzIiwiaWdub3JlMCIsImlwdjYiLCJtYXhJbmRleCIsIm1heExlbmd0aCIsImN1cnJTdGFydCIsImN1cnJMZW5ndGgiLCJmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZSIsIkMwQ29udHJvbFBlcmNlbnRFbmNvZGVTZXQiLCJmcmFnbWVudFBlcmNlbnRFbmNvZGVTZXQiLCJwYXRoUGVyY2VudEVuY29kZVNldCIsInVzZXJpbmZvUGVyY2VudEVuY29kZVNldCIsInBlcmNlbnRFbmNvZGUiLCJzcGVjaWFsU2NoZW1lcyIsImZ0cCIsImZpbGUiLCJodHRwIiwiaHR0cHMiLCJ3cyIsIndzcyIsImlzV2luZG93c0RyaXZlTGV0dGVyIiwic3RhcnRzV2l0aFdpbmRvd3NEcml2ZUxldHRlciIsInRoaXJkIiwiaXNTaW5nbGVEb3QiLCJzZWdtZW50IiwiU0NIRU1FX1NUQVJUIiwiU0NIRU1FIiwiTk9fU0NIRU1FIiwiU1BFQ0lBTF9SRUxBVElWRV9PUl9BVVRIT1JJVFkiLCJQQVRIX09SX0FVVEhPUklUWSIsIlJFTEFUSVZFIiwiUkVMQVRJVkVfU0xBU0giLCJTUEVDSUFMX0FVVEhPUklUWV9TTEFTSEVTIiwiU1BFQ0lBTF9BVVRIT1JJVFlfSUdOT1JFX1NMQVNIRVMiLCJBVVRIT1JJVFkiLCJIT1NUIiwiSE9TVE5BTUUiLCJQT1JUIiwiRklMRSIsIkZJTEVfU0xBU0giLCJGSUxFX0hPU1QiLCJQQVRIX1NUQVJUIiwiUEFUSCIsIkNBTk5PVF9CRV9BX0JBU0VfVVJMX1BBVEgiLCJRVUVSWSIsIkZSQUdNRU5UIiwiVVJMU3RhdGUiLCJpc0Jhc2UiLCJiYXNlU3RhdGUiLCJmYWlsdXJlIiwic3RhdGVPdmVycmlkZSIsImNvZGVQb2ludHMiLCJidWZmZXJDb2RlUG9pbnRzIiwicG9pbnRlciIsImJ1ZmZlciIsInNlZW5BdCIsInNlZW5CcmFja2V0Iiwic2VlblBhc3N3b3JkVG9rZW4iLCJzY2hlbWUiLCJwYXNzd29yZCIsImZyYWdtZW50IiwiY2Fubm90QmVBQmFzZVVSTCIsImlzU3BlY2lhbCIsImluY2x1ZGVzQ3JlZGVudGlhbHMiLCJlbmNvZGVkQ29kZVBvaW50cyIsInBhcnNlSG9zdCIsInNob3J0ZW5QYXRoIiwibnVtYmVyc1NlZW4iLCJpcHY0UGllY2UiLCJzd2FwcyIsInN3YXAiLCJhZGRyZXNzIiwicGllY2VJbmRleCIsInBhcnNlSVB2NiIsInBhcnRzTGVuZ3RoIiwibnVtYmVycyIsInBhcnQiLCJyYWRpeCIsImlwdjQiLCJwYXJ0cyIsInBhcnNlSVB2NCIsImNhbm5vdEhhdmVVc2VybmFtZVBhc3N3b3JkUG9ydCIsInBhdGhTaXplIiwic2V0SHJlZiIsImdldE9yaWdpbiIsIlVSTENvbnN0cnVjdG9yIiwiZ2V0UHJvdG9jb2wiLCJzZXRQcm90b2NvbCIsImdldFVzZXJuYW1lIiwic2V0VXNlcm5hbWUiLCJnZXRQYXNzd29yZCIsInNldFBhc3N3b3JkIiwiZ2V0SG9zdCIsInNldEhvc3QiLCJnZXRIb3N0bmFtZSIsInNldEhvc3RuYW1lIiwiaG9zdG5hbWUiLCJnZXRQb3J0Iiwic2V0UG9ydCIsImdldFBhdGhuYW1lIiwic2V0UGF0aG5hbWUiLCJnZXRTZWFyY2giLCJzZXRTZWFyY2giLCJnZXRTZWFyY2hQYXJhbXMiLCJnZXRIYXNoIiwic2V0SGFzaCIsIlVSTFByb3RvdHlwZSIsImFjY2Vzc29yRGVzY3JpcHRvciIsIm5hdGl2ZUNyZWF0ZU9iamVjdFVSTCIsImNyZWF0ZU9iamVjdFVSTCIsIm5hdGl2ZVJldm9rZU9iamVjdFVSTCIsInJldm9rZU9iamVjdFVSTCIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iLCJkZWZpbml0aW9uIl0sInNvdXJjZVJvb3QiOiIifQ==
|