weboffice-js-sdk 2.0.2 → 2.0.3-beta.5
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 +493 -0
- package/{OfficeSDK.d.ts → dist/OfficeSDK.d.ts} +111 -5
- package/{index.d.ts → dist/index.d.ts} +2 -0
- package/dist/index.js +2 -0
- package/dist/types/EmptyPage.d.ts +120 -0
- package/package.json +55 -5
- 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 f=0;f<e.length-1&&0===e[f];f++)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 f(e){return e._addEL.message.length>0||e._addEL.internal.length>0}function d(e,t,r){e._addEL[t].push(r),function(e){if(!e._iL&&f(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&&!f(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,d(this,"message",t)):this._onML=null},addEventListener:function(e,t){d(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=E,t.canBeUsed=C,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=f,t.getOldMessages=h,t.microSeconds=void 0,t.onMessage=w,t.postMessage=b,t.removeMessageById=d,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 f(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 d(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 d(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()},m(i),i}))}function m(e){e.closed||g(e).then((function(){return(0,n.sleep)(e.options.idb.fallbackInterval)})).then((function(){return m(e)}))}function g(e){return e.closed?n.PROMISE_RESOLVED_VOID:e.messagesCallback?f(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,g(e)}function C(){return!n.isNode&&!!c()}function E(e){return 2*e.idb.fallbackInterval}t.type="idb";var S={create:v,close:y,onMessage:w,postMessage:b,canBeUsed:C,type:"idb",averageResponseTime:E,microSeconds:a};t.default=S},924:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addStorageEventListener=f,t.averageResponseTime=g,t.canBeUsed=m,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=d,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 f(e,t){var r=u(e),n=function(e){e.key===r&&t(JSON.parse(e.newValue))};return window.addEventListener("storage",n),n}function d(e){window.removeEventListener("storage",e)}function h(e,t){if(t=(0,o.fillOptionsWithDefaults)(t),!m())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=f(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){d(e.listener)}function v(e,t,r){e.messagesCallbackTime=r,e.messagesCallback=t}function m(){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 g(){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:m,type:s,averageResponseTime:g,microSeconds:a};t.default=y},115:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.averageResponseTime=f,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 f(){return 150}t.type=i;var d={create:a,close:s,onMessage:u,postMessage:c,canBeUsed:l,type:i,averageResponseTime:f,microSeconds:o};t.default=d},574:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.averageResponseTime=f,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 f(){return 5}var d={create:a,close:s,onMessage:u,postMessage:c,canBeUsed:l,type:o,averageResponseTime:f,microSeconds:n};t.default=d},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 f(){u&&s&&(u=!1,s.length?c=s.concat(c):l=-1,c.length&&d())}function d(){if(!u){var e=a(f);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(d)},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),f=r(928),d=r(86),h=a(r(227)),p=a(r(675)),v=r(131);t.INVOKE_DEFAUTL_TIMEOUT=6e4,t.DEBUG_NAMESPACE="SM_CHAN";var m,g=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 f.OfficeSDKMessageEvent(t)},e.prototype.structuredClone=function(e){return this.autoStructuredClone?(0,d.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,f.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 f.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)!==m.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)===m.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,f,d;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]),f=l,[4,u.handler.apply(u,n)];case 3:return f.data=o.sent(),[3,5];case 4:return d=o.sent(),l.error=d,[3,5];case 5:return[4,this.postMessage(l,Object.assign({},a,{type:m.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,f=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){f.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(){f.emitter.off(s),n(new l.MessageTimeoutError("".concat(e," invoke timeout")))}),a)})),[4,this.postMessage(n,Object.assign({},i,{messageId:s,timeout:a,type:m.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=g,function(e){e[e.InvokeRequest=0]="InvokeRequest",e[e.InvokeResponse=1]="InvokeResponse"}(m=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 f=Object.assign({},r);return f.replacer=void 0,e(r.replacer(t),f)}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:()=>f,getSize:()=>p,removeAll:()=>h,runAll:()=>d});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 f(e){if(l||(l=!0,c.add(d)),"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 d(){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 f(){u&&s&&(u=!1,s.length?c=s.concat(c):l=-1,c.length&&d())}function d(){if(!u){var e=a(f);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(d)},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 f=function(){};t=function(){u=null,f=function(e){throw new TypeError(`Cannot perform '${e}' on a proxy that has been revoked`)}},setTimeout((function(){t=null}),0);const d=l;l={get:null,set:null,apply:null,construct:null};for(let e in d){if(!(e in l))throw new TypeError(`Proxy polyfill does not support trap '${e}'`);l[e]=d[e]}"function"==typeof d&&(l.apply=d.apply.bind(d));const h=c(u);let p,v=!1,m=!1;"function"==typeof u?(p=function(){const e=this&&this.constructor===p,t=Array.prototype.slice.call(arguments);return f(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=[],m=!0):p=i||null!==h?a(h):{};const g=l.get?function(e){return f("get"),l.get(this,e,p)}:function(e){return f("get"),this[e]},y=l.set?function(e,t){f("set"),l.set(this,e,t,p)}:function(e,t){f("set"),this[e]=t},b=o.getOwnPropertyNames(u),w={};b.forEach((function(e){if((v||m)&&e in p)return;const t=o.getOwnPropertyDescriptor(u,e),r={enumerable:Boolean(t.enumerable),get:g.bind(u,e),set:y.bind(u,e)};o.defineProperty(p,e,r),w[e]=!0}));let C=!0;if(v||m){const e=o.setPrototypeOf||([].__proto__===Array.prototype?function(e,t){return n(t),e.__proto__=t,e}:s);h&&e(p,h)||(C=!1)}if(l.get||!C)for(let e in u)w[e]||o.defineProperty(p,e,{get:g.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},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.__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())}))},s=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])}}},c=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},u=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))},l=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),d=r(4339),h=r(611),p=r(1504),v=l(r(5323)),m=r(4057),g=l(r(1582)),y=r(9368),b=r(2560),w=(0,v.default)(),C="smjssdk",E="smParams",S=["zh-CN","en","ja","ar-SA","ru-RU"],O="headerBars.setCommandCallbackEnabled";t.MessageEvent=m.InvokeMethod;var _=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 p.TinyEmitter,i._readyState=m.ReadyState.Loading,i.collaborators=[],i.headerBarsVisible=!0,i.headerBarsCommands=new Map,i.headerBarsCommandOverrides=new Map,i.headerBarsCommandRefs=new Map,i.preloadAckTimeoutMs=2e3,i.preloadDoneTimeoutMs=8e3,i.preloadReadyTimeoutMs=3e3,i.connectOptions=t,i.uuid=(0,h.v4)(),i.userUuid=t.userUuid,i.normalizedEmptyPage=(0,b.normalizeEmptyPageOptions)(t.emptyPage),(0,y.assert)(t.container,(function(e){return e instanceof HTMLElement}),'container is not an HTMLElement: "'.concat(String(t.container),'"')),(0,y.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===w.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 d.StartParams(null!==(o=null!==(r=t.smParams)&&void 0!==r?r:new URLSearchParams(null===(n=w.location)||void 0===n?void 0:n.search).get(E))&&void 0!==o?o:"")}catch(e){i.startParams=new d.StartParams}"boolean"==typeof t.debug&&(i.startParams.debug=i.connectOptions.debug),i.onViewportResize=function(){a(i,void 0,void 0,(function(){return s(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 c=t.messageExpires;return"number"!=typeof c&&(c=3e5),i.messageExpires=(0,y.assert)(c,(function(e){return!isNaN(e)&&e>0}),'"messageExpires" is not an valid number: "'.concat(c,'"')),i.handledMessageCache=new g.default(c),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.getEditor=function(){return this.editor},r.prototype.setCredentials=function(e){return a(this,void 0,void 0,(function(){return s(this,(function(t){switch(t.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.SetCredentials,[e],{audience:C})];case 1:return t.sent(),[2]}}))}))},r.prototype.setSignature=function(e){return a(this,void 0,void 0,(function(){return s(this,(function(t){switch(t.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.SetCredentials,[{signature:e}],{audience:C})];case 1:return t.sent(),[2]}}))}))},r.prototype.setToken=function(e){return a(this,void 0,void 0,(function(){return s(this,(function(t){switch(t.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.SetCredentials,[{token:e}],{audience:C})];case 1:return t.sent(),[2]}}))}))},r.prototype.getPerformanceEntries=function(){return a(this,void 0,void 0,(function(){return s(this,(function(e){switch(e.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.RequestPerformanceEntries,[],{audience:C})];case 1:return[2,e.sent()]}}))}))},r.prototype.disconnect=function(){var e;(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 a(this,void 0,void 0,(function(){var e,t=this;return s(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(A.ReadyState,o)};t.on(A.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.Presentation:this.presentation=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[2]}}))}))},r.prototype.initIframe=function(){var e;return a(this,void 0,void 0,(function(){var t,r,n,o;return s(this,(function(i){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,y.assert)(t.fileId,P,'"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(E,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&&S.includes(t.lang)&&n.searchParams.set("lang",t.lang),n.searchParams.set("jsver",null!=="2.0.3-beta.5"?"2.0.3-beta.5":""),(0,y.assert)(t.token,P,'"token" is missing or empty: "'.concat(t.token,'"')),(0,y.assert)(t.signature,P,'"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 a(this,void 0,void 0,(function(){var e,t,r,n,o,i,a,c,u,l=this;return s(this,(function(s){switch(s.label){case 0:return e=this.connectOptions.token,t=this.connectOptions.signature,r=this.connectOptions.fileId,n=(0,h.v4)(),o=!1,i=!1,a=!1,c=null,u=null,[4,new Promise((function(s,f){var d=function(){c&&(clearTimeout(c),c=null),u&&(clearTimeout(u),u=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(c=setTimeout((function(){h(),u=setTimeout((function(){d(),f(new Error("preload init timeout"))}),l.preloadDoneTimeoutMs)}),l.preloadAckTimeoutMs));if(p.requestId===n)return"SDK_PRELOAD_ACK"===p.type?(i=!0,c&&(clearTimeout(c),c=null),void(u||(u=setTimeout((function(){d(),f(new Error("preload done timeout"))}),l.preloadDoneTimeoutMs)))):"SDK_PRELOAD_DONE"===p.type?(a=!0,d(),void s()):void("SDK_PRELOAD_ERROR"===p.type&&(d(),f(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||(d(),f(new Error("preload ready timeout")))}),l.preloadReadyTimeoutMs)}))];case 1:return s.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(A.ReadyState,n.payload):(null==n?void 0:n.event)===t.EDITOR_RENDERED_EVENT&&e.emit(A.EditorRendered,n.payload)}),{audience:C}),r.addInvokeHandler(m.InvokeMethod.Error,(function(t){e.emit(A.Error,t)}),{audience:C}),r.addInvokeHandler(m.InvokeMethod.SDKInit,(function(){return a(e,void 0,void 0,(function(){var e,t=this;return s(this,(function(r){return e={},Object.keys(this.connectOptions).forEach((function(r){var n=t.connectOptions[r];e[r]=n,"function"==typeof n&&(e["has".concat(r[0].toUpperCase()).concat(r.slice(1))]=!0)})),e.apiAdaptor=this.apiAdaptor,e.apiAdaptorContext=this.apiAdaptorContext,e.emptyPage=this.normalizedEmptyPage,[2,i(i({},e),{uuid:this.uuid})]}))}))}),{audience:C}),r.addInvokeHandler(m.InvokeMethod.DispatchSDKEvent,(function(t,r){return a(e,void 0,void 0,(function(){return s(this,(function(e){return"headerBars:changed"===t&&this.applyHeaderBarsChanged(r[0]),this.emit.apply(this,u([t],r,!1)),[2]}))}))}),{audience:C}),r.addInvokeHandler("headerBars.handleCommandClick",(function(t){return a(e,void 0,void 0,(function(){var e;return s(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:C}),r.addInvokeHandler(m.InvokeMethod.DispatchEditorEvent,(function(t,r){return a(e,void 0,void 0,(function(){return s(this,(function(e){return"collaboratorsChanged"===t&&this.updateCollaborators(r),function(e){return x.has(e)}(t)&&this.emit(t,r),this.emitter.emit(t,r),[2]}))}))}),{audience:C}),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 a(e,void 0,void 0,(function(){return s(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:C}),t.addInvokeHandler(m.ContainerMethod.HandleCustomTask,(function(t){return a(e,void 0,void 0,(function(){return s(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:C}),t.addInvokeHandler(m.ContainerMethod.OpenLink,(function(t,r){return a(e,void 0,void 0,(function(){return s(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:C}),t.addInvokeHandler(m.ContainerMethod.GetFileInfoFromUrl,(function(t){return a(e,void 0,void 0,(function(){return s(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:C}),t.addInvokeHandler(m.ContainerMethod.MentionClickHandlerForMobile,(function(t){return a(e,void 0,void 0,(function(){var e;return s(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:C}),t.addInvokeHandler(m.ContainerMethod.GetContainerRect,(function(){return a(e,void 0,void 0,(function(){return s(this,(function(e){return[2,this.getContainerRect()]}))}))}),{audience:C}),t.addInvokeHandler(m.ContainerMethod.ShowToast,(function(t){return a(e,void 0,void 0,(function(){var e,r;return s(this,(function(n){return null===(r=(e=this.connectOptions).showToast)||void 0===r||r.call(e,t),[2]}))}))}),{audience:C}),t.addInvokeHandler(m.ContainerMethod.GetCredentials,(function(){return a(e,void 0,void 0,(function(){var e,t;return s(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:C})},r.prototype.initHeaderBarsFacade=function(){var e=this,t={visible:!1,getVisible:function(){return a(e,void 0,void 0,(function(){return s(this,(function(e){switch(e.label){case 0:return[4,this.syncHeaderBarsVisible()];case 1:return[2,e.sent()]}}))}))},setVisible:function(t){return a(e,void 0,void 0,(function(){return s(this,(function(e){switch(e.label){case 0:return[4,this.setHeaderBarsVisible(t)];case 1:return e.sent(),[2]}}))}))},addCommand:function(t,r,n){return void 0===n&&(n="after"),a(e,void 0,void 0,(function(){var e,o,i,a;return s(this,(function(s){switch(s.label){case 0:return e=t.onClick,o=c(t,["onClick"]),[4,this.invokeHeaderBars("headerBars.addCommand",{command:o,posCommand:r,pos:n})];case 1:return i=s.sent(),a=e,i&&"function"==typeof a?(this.headerBarsCommandOverrides.set(t.id,a),[4,this.invokeHeaderBars(O,{id:t.id,enabled:!0})]):[3,3];case 2:s.sent(),s.label=3;case 3:return[2,i]}}))}))},getCommand:function(t){return e.getHeaderBarsCommandRef(t)},listViewCommands:function(){return a(e,void 0,void 0,(function(){var e;return s(this,(function(t){switch(t.label){case 0:return[4,this.invokeHeaderBars("headerBars.listViewCommands")];case 1:return e=t.sent(),this.syncHeaderBarsCommands(e),[2,e]}}))}))},setTitleDraft:function(t){return a(e,void 0,void 0,(function(){return s(this,(function(e){switch(e.label){case 0:return[4,this.invokeHeaderBars("headerBars.setTitleDraft",{title:t})];case 1:return e.sent(),[2]}}))}))},confirmTitleChange:function(t){return a(e,void 0,void 0,(function(){return s(this,(function(e){switch(e.label){case 0:return[4,this.invokeHeaderBars("headerBars.confirmTitleChange",{title:t})];case 1:return e.sent(),[2]}}))}))}};return Object.defineProperty(t,"visible",{configurable:!0,enumerable:!0,get:function(){return e.headerBarsVisible},set:function(t){e.setHeaderBarsVisible(t).catch((function(t){e.emit(A.Error,t instanceof Error?t:new Error("set headerBars.visible failed: ".concat(String(t))))}))}}),t},r.prototype.invokeHeaderBars=function(e,t){return a(this,void 0,void 0,(function(){var r;return s(this,(function(n){switch(n.label){case 0:return r=void 0===t?[]:[t],[4,this.channel.invoke(e,r,{audience:C})];case 1:return[2,n.sent()]}}))}))},r.prototype.syncHeaderBarsCommands=function(e){this.headerBarsCommands.clear();for(var t=0,r=e;t<r.length;t++){var n=r[t];this.headerBarsCommands.set(n.id,n)}},r.prototype.applyHeaderBarsChanged=function(e){var t=null==e?void 0:e.snapshot;t&&(this.headerBarsVisible=t.visible,this.syncHeaderBarsCommands(t.commands))},r.prototype.syncHeaderBarsVisible=function(){return a(this,void 0,void 0,(function(){var e;return s(this,(function(t){switch(t.label){case 0:return[4,this.invokeHeaderBars("headerBars.getVisible")];case 1:return e=t.sent(),this.headerBarsVisible=e.visible,[2,this.headerBarsVisible]}}))}))},r.prototype.setHeaderBarsVisible=function(e){return a(this,void 0,void 0,(function(){return s(this,(function(t){switch(t.label){case 0:return this.headerBarsVisible=e,[4,this.invokeHeaderBars("headerBars.setVisible",{visible:e})];case 1:return t.sent(),[2]}}))}))},r.prototype.getHeaderBarsCommandRef=function(e){var t=this,r=this.headerBarsCommandRefs.get(e);if(r)return r;this.headerBarsCommands.has(e)||this.invokeHeaderBars("headerBars.getCommand",{id:e}).then((function(r){r.command&&t.headerBarsCommands.set(e,r.command)})).catch((function(e){t.emit(A.Error,e instanceof Error?e:new Error("fetch headerBars command failed: ".concat(String(e))))}));var n={id:e,visible:!0,disabled:!1,editable:void 0,onCommandClick:void 0,getState:function(){return t.headerBarsCommands.get(e)}};return Object.defineProperties(n,{visible:{configurable:!0,enumerable:!0,get:function(){var r;return!1!==(null===(r=t.headerBarsCommands.get(e))||void 0===r?void 0:r.visible)},set:function(r){var n=t.headerBarsCommands.get(e);n&&t.headerBarsCommands.set(e,i(i({},n),{visible:r})),t.invokeHeaderBars("headerBars.setCommandVisible",{id:e,visible:r}).catch((function(e){t.emit(A.Error,e instanceof Error?e:new Error("set headerBars command visible failed: ".concat(String(e))))}))}},disabled:{configurable:!0,enumerable:!0,get:function(){var r;return!0===(null===(r=t.headerBarsCommands.get(e))||void 0===r?void 0:r.disabled)},set:function(r){var n=t.headerBarsCommands.get(e);n&&t.headerBarsCommands.set(e,i(i({},n),{disabled:r})),t.invokeHeaderBars("headerBars.setCommandDisabled",{id:e,disabled:r}).catch((function(e){t.emit(A.Error,e instanceof Error?e:new Error("set headerBars command disabled failed: ".concat(String(e))))}))}},editable:{configurable:!0,enumerable:!0,get:function(){var r;return null===(r=t.headerBarsCommands.get(e))||void 0===r?void 0:r.editable},set:function(r){if("title"===e){var n=t.headerBarsCommands.get(e);n&&t.headerBarsCommands.set(e,i(i({},n),{editable:r})),t.invokeHeaderBars("headerBars.setCommandEditable",{id:e,editable:r}).catch((function(e){t.emit(A.Error,e instanceof Error?e:new Error("set headerBars command editable failed: ".concat(String(e))))}))}else t.emit(A.Error,new Error("headerBars command editable is only supported for title"))}},onCommandClick:{configurable:!0,enumerable:!0,get:function(){return t.headerBarsCommandOverrides.get(e)},set:function(r){t.headerBarsCommandOverrides.set(e,r),t.invokeHeaderBars(O,{id:e,enabled:"function"==typeof r}).catch((function(e){t.emit(A.Error,e instanceof Error?e:new Error("set headerBars command callback failed: ".concat(String(e))))}))}}}),this.headerBarsCommandRefs.set(e,n),n},r.prototype.initEditor=function(){var e=this,t=function(e){return"saveStatusDidChange"===e?"saveStatusChanged":e},r={on:function(r,n){return a(e,void 0,void 0,(function(){return s(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:C})];case 1:return e.sent(),[2]}}))}))},off:function(r,n){r=t(r),e.emitter.off(r,n)},getCollaborators:function(){return u([],e.collaborators,!0)}},n=function(t){return void 0===t&&(t=[]),new Proxy((function(){}),{get:function(e,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(u(u([],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:C})}})};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=u([],t.collaborators,!0)}},r}(p.TinyEmitter);function P(e){return"string"==typeof e&&e.trim().length>0}t.OfficeSDK=_;var A,x=new Set(["emptyPageShown","emptyPageAction","emptyPageHidden"]);!function(e){e.SDKInit="SDKInit",e.Error="error",e.ReadyState="readyState",e.EditorRendered="editorRendered",e.EditorEvent="editorEvent"}(A=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 f=i(r(7642));t.Table=f;var d=i(r(6954));t.Form=d;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:()=>M,parse:()=>m,stringify:()=>l,v1:()=>v,v3:()=>_,v4:()=>P,v5:()=>k,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 f,d,h=0,p=0;const v=function(e,t,r){var n=t&&r||0,o=t||new Array(16),a=(e=e||{}).node||f,s=void 0!==e.clockseq?e.clockseq:d;if(null==a||null==s){var c=e.random||(e.rng||i)();null==a&&(a=f=[1|c[0],c[1],c[2],c[3],c[4],c[5]]),null==s&&(s=d=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,m=u-h+(v-p)/1e4;if(m<0&&void 0===e.clockseq&&(s=s+1&16383),(m<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,d=s;var g=(1e4*(268435455&(u+=122192928e5))+v)%4294967296;o[n++]=g>>>24&255,o[n++]=g>>>16&255,o[n++]=g>>>8&255,o[n++]=255&g;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)},m=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 g(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=m(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 C(e,t,r,n,o,i,a){return w(t&r|~t&n,e,t,o,i,a)}function E(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 _=g("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=C(r,n,o,i,e[a],7,-680876936),i=C(i,r,n,o,e[a+1],12,-389564586),o=C(o,i,r,n,e[a+2],17,606105819),n=C(n,o,i,r,e[a+3],22,-1044525330),r=C(r,n,o,i,e[a+4],7,-176418897),i=C(i,r,n,o,e[a+5],12,1200080426),o=C(o,i,r,n,e[a+6],17,-1473231341),n=C(n,o,i,r,e[a+7],22,-45705983),r=C(r,n,o,i,e[a+8],7,1770035416),i=C(i,r,n,o,e[a+9],12,-1958414417),o=C(o,i,r,n,e[a+10],17,-42063),n=C(n,o,i,r,e[a+11],22,-1990404162),r=C(r,n,o,i,e[a+12],7,1804603682),i=C(i,r,n,o,e[a+13],12,-40341101),o=C(o,i,r,n,e[a+14],17,-1502002290),r=E(r,n=C(n,o,i,r,e[a+15],22,1236535329),o,i,e[a+1],5,-165796510),i=E(i,r,n,o,e[a+6],9,-1069501632),o=E(o,i,r,n,e[a+11],14,643717713),n=E(n,o,i,r,e[a],20,-373897302),r=E(r,n,o,i,e[a+5],5,-701558691),i=E(i,r,n,o,e[a+10],9,38016083),o=E(o,i,r,n,e[a+15],14,-660478335),n=E(n,o,i,r,e[a+4],20,-405537848),r=E(r,n,o,i,e[a+9],5,568446438),i=E(i,r,n,o,e[a+14],9,-1019803690),o=E(o,i,r,n,e[a+3],14,-187363961),n=E(n,o,i,r,e[a+8],20,1163531501),r=E(r,n,o,i,e[a+13],5,-1444681467),i=E(i,r,n,o,e[a+2],9,-51403784),o=E(o,i,r,n,e[a+7],14,1735328473),r=S(r,n=E(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))})),P=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 A(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 x(e,t){return e<<t|e>>>32-t}const k=g("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 f=0;f<a;++f){for(var d=new Uint32Array(80),h=0;h<16;++h)d[h]=s[f][h];for(var p=16;p<80;++p)d[p]=x(d[p-3]^d[p-8]^d[p-14]^d[p-16],1);for(var v=r[0],m=r[1],g=r[2],y=r[3],b=r[4],w=0;w<80;++w){var C=Math.floor(w/20),E=x(v,5)+A(C,m,g,y)+b+t[C]+d[w]>>>0;b=y,y=g,g=x(m,30)>>>0,m=v,v=E}r[0]=r[0]+v>>>0,r[1]=r[1]+m>>>0,r[2]=r[2]+g>>>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]]})),M="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 f=i(l.value,2),d=f[0],h=f[1];if(d===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 m=i(v.value,2);if(d=m[0],(h=m[1])===e)return d}}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),f=r(81),d=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,m=void 0!==v;m&&(v=n(v,p>2?arguments[2]:void 0));var g,y,b,w,C,E,S=d(t),O=0;if(!S||this===h&&s(S))for(g=u(t),y=r?new this(g):h(g);g>O;O++)E=m?v(t[O],O):t[O],l(y,O,E);else for(y=r?new this:[],C=(w=f(t,S)).next;!(b=o(C,w)).done;O++)E=m?a(w,v,[b.value,O],!0):b.value,l(y,O,E);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),f=i(n(e,u),t),d=l.length,h=f.length,p=0,v=0;p<d||v<h;)e[p+v]=p<d&&v<h?t(l[p],f[v])<=0?l[p++]:f[v++]:p<d?l[p++]:f[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 f=s[l];n(e,f)||r&&n(r,f)||c(e,f,u(t,f))}}},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,f,d,h,p=e.target,v=e.global,m=e.stat;if(r=v?n:m?n[p]||s(p,{}):n[p]&&n[p].prototype)for(l in t){if(d=t[l],f=e.dontCallGetSet?(h=o(r,l))&&h.value:r[l],!u(v?l:p+(m?".":"#")+l,e.forced)&&void 0!==f){if(typeof d==typeof f)continue;c(d,f)}(e.sham||f&&f.sham)&&i(d,"sham",!0),a(r,l,d,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),f=r(7629),d=r(6119),h=r(421),p="Object already initialized",v=s.TypeError,m=s.WeakMap;if(a||f.state){var g=f.state||(f.state=new m);g.get=g.get,g.has=g.has,g.set=g.set,n=function(e,t){if(g.has(e))throw new v(p);return t.facade=e,g.set(e,t),t},o=function(e){return g.get(e)||{}},i=function(e){return g.has(e)}}else{var y=d("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"),f=/^\s*(?:class|function)\b/,d=n(f.exec),h=!f.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||!!d(f,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),f=r(851),d=r(9539),h=TypeError,p=function(e,t){this.stopped=e,this.result=t},v=p.prototype;e.exports=function(e,t,r){var m,g,y,b,w,C,E,S=r&&r.that,O=!(!r||!r.AS_ENTRIES),_=!(!r||!r.IS_RECORD),P=!(!r||!r.IS_ITERATOR),A=!(!r||!r.INTERRUPTED),x=n(t,S),k=function(e){return m&&d(m,"normal",e),new p(!0,e)},M=function(e){return O?(i(e),A?x(e[0],e[1],k):x(e[0],e[1])):A?x(e,k):x(e)};if(_)m=e.iterator;else if(P)m=e;else{if(!(g=f(e)))throw new h(a(e)+" is not iterable");if(s(g)){for(y=0,b=c(e);b>y;y++)if((w=M(e[y]))&&u(v,w))return w;return new p(!1)}m=l(e,g)}for(C=_?e.next:m.next;!(E=o(C,m)).done;){try{w=M(E.value)}catch(e){d(m,"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),f=r(687),d=r(6699),h=r(6840),p=r(8227),v=r(6269),m=r(7657),g=a.PROPER,y=a.CONFIGURABLE,b=m.IteratorPrototype,w=m.BUGGY_SAFARI_ITERATORS,C=p("iterator"),E="keys",S="values",O="entries",_=function(){return this};e.exports=function(e,t,r,a,p,m,P){c(r,t,a);var A,x,k,M=function(e){if(e===p&&I)return I;if(!w&&e&&e in j)return j[e];switch(e){case E:case S:case O:return function(){return new r(this,e)}}return function(){return new r(this)}},T=t+" Iterator",L=!1,j=e.prototype,R=j[C]||j["@@iterator"]||p&&j[p],I=!w&&R||M(p),D="Array"===t&&j.entries||R;if(D&&(A=u(D.call(new e)))!==Object.prototype&&A.next&&(i||u(A)===b||(l?l(A,b):s(A[C])||h(A,C,_)),f(A,T,!0,!0),i&&(v[T]=_)),g&&p===S&&R&&R.name!==S&&(!i&&y?d(j,"name",S):(L=!0,I=function(){return o(R,this)})),p)if(x={values:M(S),keys:m?I:M(E),entries:M(O)},P)for(k in x)(w||L||!(k in j))&&h(j,k,x[k]);else n({target:t,proto:!0,forced:w||L},x);return i&&!P||j[C]===I||h(j,C,I,{name:p}),v[t]=I,x}},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),f=r(6840),d=r(8227),h=r(6395),p=d("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])||f(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),f=l.enforce,d=l.get,h=String,p=Object.defineProperty,v=n("".slice),m=n("".replace),g=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="["+m(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=f(e);return a(n,"source")||(n.source=g(b,"string"==typeof t?t:"")),e};Function.prototype.toString=w((function(){return i(this)&&d(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),f=r(9225).set,d=r(8265),h=r(9544),p=r(4265),v=r(7860),m=r(8574),g=c.MutationObserver||c.WebKitMutationObserver,y=c.document,b=c.process,w=c.Promise,C=u("queueMicrotask");if(!C){var E=new d,S=function(){var e,t;for(m&&(e=b.domain)&&e.exit();t=E.get();)try{t()}catch(e){throw E.head&&n(),e}e&&e.enter()};h||m||v||!g||!y?!p&&w&&w.resolve?((a=w.resolve(void 0)).constructor=w,s=l(a.then,a),n=function(){s(S)}):m?n=function(){b.nextTick(S)}:(f=l(f,c),n=function(){f(S)}):(o=!0,i=y.createTextNode(""),new g(S).observe(i,{characterData:!0}),n=function(){i.data=o=!o}),C=function(e){E.head||n(),E.add(e)}}e.exports=C},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),f=r(7055),d=Object.assign,h=Object.defineProperty,p=o([].concat);e.exports=!d||a((function(){if(n&&1!==d({b:1},d(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!==d({},e)[r]||s(d({},t)).join("")!==o}))?function(e,t){for(var r=l(e),o=arguments.length,a=1,d=c.f,h=u.f;o>a;)for(var v,m=f(arguments[a++]),g=d?p(s(m),d(m)):s(m),y=g.length,b=0;y>b;)v=g[b++],n&&!i(h,m,v)||(r[v]=m[v]);return r}:d},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),f="prototype",d="script",h=l("IE_PROTO"),p=function(){},v=function(e){return"<"+d+">"+e+"</"+d+">"},m=function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t},g=function(){try{n=new ActiveXObject("htmlfile")}catch(e){}var e,t,r;g="undefined"!=typeof document?document.domain&&n?m(n):(t=u("iframe"),r="java"+d+":",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):m(n);for(var o=a.length;o--;)delete g[f][a[o]];return g()};s[h]=!0,e.exports=Object.create||function(e,t){var r;return null!==e?(p[f]=o(e),r=new p,p[f]=null,r[h]=e):r=g(),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,f="enumerable",d="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:d in r?r[d]:n[d],enumerable:f in r?r[f]:n[f],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),f=Object.getOwnPropertyDescriptor;t.f=n?f:function(e,t){if(e=s(e),t=c(t),l)try{return f(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),f=r(9519),d=o&&o.prototype,h=c("species"),p=!1,v=i(n.PromiseRejectionEvent),m=a("Promise",(function(){var e=s(o),t=e!==String(o);if(!t&&66===f)return!0;if(l&&(!d.catch||!d.finally))return!0;if(!f||f<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:m,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,f=i(a(t)),d=o(r),h=f.length;return d<0||d>=h?e?"":void 0:(n=c(f,d))<55296||n>56319||d+1===h||(l=c(f,d+1))<56320||l>57343?e?s(f,d):n:e?u(f,d,d+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,f=String.fromCharCode,d=n("".charCodeAt),h=n([].join),p=n([].push),v=n("".replace),m=n("".split),g=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=d(e,r++);if(o>=55296&&o<=56319&&r<n){var i=d(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,f(n));var m=t.length,g=m;for(m&&p(t,"-");g<i;){var w=o;for(r=0;r<e.length;r++)(n=e[r])>=a&&n<w&&(w=n);var C=g+1;if(w-a>l((o-u)/C))throw new c(s);for(u+=(w-a)*C,a=w,r=0;r<e.length;r++){if((n=e[r])<a&&++u>o)throw new c(s);if(n===a){for(var E=u,S=36;;){var O=S<=v?1:S>=v+26?26:S-v;if(E<O)break;var _=E-O,P=36-O;p(t,f(y(O+_%P))),E=l(_/P),S+=36}p(t,f(y(E))),v=b(u,C,g===m),u=0,g++}}u++,a++}return h(t,"")};e.exports=function(e){var t,r,n=[],o=m(v(g(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),f=r(9297),d=r(9039),h=r(397),p=r(7680),v=r(4055),m=r(2812),g=r(9544),y=r(8574),b=s.setImmediate,w=s.clearImmediate,C=s.process,E=s.Dispatch,S=s.Function,O=s.MessageChannel,_=s.String,P=0,A={},x="onreadystatechange";d((function(){n=s.location}));var k=function(e){if(f(A,e)){var t=A[e];delete A[e],t()}},M=function(e){return function(){k(e)}},T=function(e){k(e.data)},L=function(e){s.postMessage(_(e),n.protocol+"//"+n.host)};b&&w||(b=function(e){m(arguments.length,1);var t=l(e)?e:S(e),r=p(arguments,1);return A[++P]=function(){c(t,void 0,r)},o(P),P},w=function(e){delete A[e]},y?o=function(e){C.nextTick(M(e))}:E&&E.now?o=function(e){E.now(M(e))}:O&&!g?(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&&!d(L)?(o=L,s.addEventListener("message",T,!1)):o=x in v("script")?function(e){h.appendChild(v("script"))[x]=function(){h.removeChild(this),k(e)}}:function(e){setTimeout(M(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"),f=c?u.for||u:u&&u.withoutSetter||a;e.exports=function(e){return i(l,e)||(l[e]=s&&i(u,e)?u[e]:f("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),f=r(7584),d=r(747),h=r(2652),p=r(2603),v=r(8227)("toStringTag"),m=Error,g=[].push,y=function(e,t){var r,n=o(b,this);a?r=a(new m,n?i(this):b):(r=n?this:c(b),u(r,v,"Error")),void 0!==t&&u(r,"message",p(t)),d(r,y,r.stack,1),arguments.length>2&&f(r,arguments[2]);var s=[];return h(e,g,{that:s}),u(r,"errors",s),r};a?a(y,m):s(y,m,{name:!0});var b=y.prototype=c(m.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),f=r(3724),d="Array Iterator",h=a.set,p=a.getterFor(d);e.exports=c(Array,"Array",(function(e,t){h(this,{type:d,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&&f&&"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),f="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,d=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||d(new r(a,f)))}))})),--c||d(new r(a,f))}));return h.error&&d(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 f=s("Promise").prototype.catch;l.catch!==f&&u(l,"catch",f,{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),f=r(6840),d=r(2967),h=r(687),p=r(7633),v=r(9306),m=r(4901),g=r(34),y=r(679),b=r(2293),w=r(9225).set,C=r(1955),E=r(3138),S=r(1103),O=r(8265),_=r(1181),P=r(550),A=r(916),x=r(6043),k="Promise",M=A.CONSTRUCTOR,T=A.REJECTION_EVENT,L=A.SUBCLASSING,j=_.getterFor(k),R=_.set,I=P&&P.prototype,D=P,B=I,F=u.TypeError,U=u.document,N=u.process,H=x.f,V=H,G=!!(U&&U.createEvent&&u.dispatchEvent),z="unhandledrejection",K=function(e){var t;return!(!g(e)||!m(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,f=e.domain;try{s?(a||(2===t.rejection&&$(t),t.rejection=1),!0===s?r=i:(f&&f.enter(),r=s(i),f&&(f.exit(),o=!0)),r===e.promise?u(new F("Promise-chain cycle")):(n=K(r))?l(n,r,c,u):c(r)):u(i)}catch(e){f&&!o&&f.exit(),u(e)}},W=function(e,t){e.notified||(e.notified=!0,C((function(){for(var r,n=e.reactions;r=n.get();)q(r,e);e.notified=!1,t&&!e.rejection&&Q(e)})))},J=function(e,t,r){var n,o;G?((n=U.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&&E("Unhandled promise rejection",r)},Q=function(e){l(w,u,(function(){var t,r=e.facade,n=e.value;if(Y(e)&&(t=S((function(){c?N.emit("unhandledRejection",n,r):J(z,r,n)})),e.rejection=c||Y(e)?2:1,t.error))throw t.value}))},Y=function(e){return 1!==e.rejection&&!e.parent},$=function(e){l(w,u,(function(){var t=e.facade;c?N.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 F("Promise can't be resolved itself");var n=K(t);n?C((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(M&&(B=(D=function(e){y(this,B),v(e),l(n,this);var t=j(this);try{e(X(ee,t),X(Z,t))}catch(e){Z(t,e)}}).prototype,(n=function(e){R(this,{type:k,done:!1,notified:!1,parent:!1,reactions:new O,rejection:!1,state:0,value:null})}).prototype=f(B,"then",(function(e,t){var r=j(this),n=H(b(this,D));return r.parent=!0,n.ok=!m(e)||e,n.fail=m(t)&&t,n.domain=c?N.domain:void 0,0===r.state?r.reactions.add(n):C((function(){q(n,r)})),n.promise})),o=function(){var e=new n,t=j(e);this.promise=e,this.resolve=X(ee,t),this.reject=X(Z,t)},x.f=H=function(e){return e===D||void 0===e?new o(e):V(e)},!s&&m(P)&&I!==Object.prototype)){i=I.then,L||f(I,"then",(function(e,t){var r=this;return new D((function(e,t){l(i,r,e,t)})).then(e,t)}),{unsafe:!0});try{delete I.constructor}catch(e){}d&&d(I,B)}a({global:!0,constructor:!0,wrap:!0,forced:M},{Promise:D}),h(D,k,!1,!0),p(k)},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),f=r(6840),d=i&&i.prototype;if(n({target:"Promise",proto:!0,real:!0,forced:!!i&&a((function(){d.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;d.finally!==h&&f(d,"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,f=!1;n({target:"Promise",stat:!0,forced:!l||!l.try||u((function(){l.try((function(e){f=8===e}),8)})).error||!f},{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,f=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 d in o)f(n[d]&&n[d].prototype,d);f(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),f=r(6840),d=r(2106),h=r(6279),p=r(687),v=r(3994),m=r(1181),g=r(679),y=r(4901),b=r(9297),w=r(6080),C=r(6955),E=r(8551),S=r(34),O=r(655),_=r(2360),P=r(6980),A=r(81),x=r(851),k=r(2529),M=r(2812),T=r(8227),L=r(4488),j=T("iterator"),R="URLSearchParams",I=R+"Iterator",D=m.set,B=m.getterFor(R),F=m.getterFor(I),U=i("fetch"),N=i("Request"),H=i("Headers"),V=N&&N.prototype,G=H&&H.prototype,z=o.TypeError,K=o.encodeURIComponent,q=String.fromCharCode,W=a("String","fromCodePoint"),J=parseInt,Q=c("".charAt),Y=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=Q(e,n);if("%"===o){if("%"===Q(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||"%"!==Q(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,fe={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},de=function(e){return fe[e]},he=function(e){return X(K(e),le,de)},pe=v((function(e,t){D(this,{type:I,target:B(e).entries,index:0,kind:t})}),R,(function(){var e=F(this),t=e.target,r=e.index++;if(!t||r>=t.length)return e.target=null,k(void 0,!0);var n=t[r];switch(e.kind){case"keys":return k(n.key,!1);case"values":return k(n.value,!1)}return k([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?"?"===Q(e,0)?re(e,1):e:O(e)))};ve.prototype={type:R,bindURL:function(e){this.url=e,this.update()},parseObject:function(e){var t,r,n,o,i,a,c,u=this.entries,l=x(e);if(l)for(r=(t=A(e,l)).next;!(n=s(r,t)).done;){if(i=(o=A(E(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 f in e)b(e,f)&&$(u,{key:f,value:O(e[f])})},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(Y(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 Y(r,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var me=function(){g(this,ge);var e=D(this,new ve(arguments.length>0?arguments[0]:void 0));u||(this.size=e.entries.length)},ge=me.prototype;if(h(ge,{append:function(e,t){var r=B(this);M(arguments.length,2),$(r.entries,{key:O(e),value:O(t)}),u||this.length++,r.updateURL()},delete:function(e){for(var t=B(this),r=M(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=B(this).entries;M(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=B(this).entries;M(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=B(this).entries,r=M(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=B(this);M(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=B(this);L(e.entries,(function(e,t){return e.key>t.key?1:-1})),e.updateURL()},forEach:function(e){for(var t,r=B(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}),f(ge,j,ge.entries,{name:"entries"}),f(ge,"toString",(function(){return B(this).serialize()}),{enumerable:!0}),u&&d(ge,"size",{get:function(){return B(this).entries.length},configurable:!0,enumerable:!0}),p(me,R),n({global:!0,constructor:!0,forced:!l},{URLSearchParams:me}),!l&&y(H)){var ye=c(G.has),be=c(G.set),we=function(e){if(S(e)){var t,r=e.body;if(C(r)===R)return t=e.headers?new H(e.headers):new H,ye(t,"content-type")||be(t,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),_(e,{body:P(0,O(r)),headers:P(0,t)})}return e};if(y(U)&&n({global:!0,enumerable:!0,dontCallGetSet:!0,forced:!0},{fetch:function(e){return U(e,arguments.length>1?we(arguments[1]):{})}}),y(N)){var Ce=function(e){return g(this,V),new N(e,arguments.length>1?we(arguments[1]):{})};V.constructor=Ce,Ce.prototype=V,n({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:Ce})}}e.exports={URLSearchParams:me,getState:B}},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),f=o(c.forEach),d=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=[];f(this,(function(e,t){d(n,{key:t,value:e})})),a(t,1);for(var o,s=i(e),c=i(r),h=0,p=0,v=!1,m=n.length;h<m;)o=n[h++],v||o.key===s?(v=!0,l(this,o.key)):p++;for(;p<m;)(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),f=new s("a=1");!f.has("a",2)&&f.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()})),f=i((function(){return 1!==u.canParse.length}));n({target:"URL",stat:!0,forced:!l||f},{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),f=r(2106),d=r(679),h=r(9297),p=r(4213),v=r(7916),m=r(7680),g=r(8183).codeAt,y=r(6098),b=r(655),w=r(687),C=r(2812),E=r(8406),S=r(1181),O=S.set,_=S.getterFor("URL"),P=E.URLSearchParams,A=E.getState,x=s.URL,k=s.TypeError,M=s.parseInt,T=Math.floor,L=Math.pow,j=u("".charAt),R=u(/./.exec),I=u([].join),D=u(1..toString),B=u([].pop),F=u([].push),U=u("".replace),N=u([].shift),H=u("".split),V=u("".slice),G=u("".toLowerCase),z=u([].unshift),K="Invalid scheme",q="Invalid host",W="Invalid port",J=/[a-z]/i,Q=/[\d+-.a-z]/i,Y=/\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 I(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+=D(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}),fe=function(e,t){var r=g(e,0);return r>32&&r<127&&!h(t,e)?e:encodeURIComponent(e)},de={ftp:21,file:null,http:80,https:443,ws:80,wss:443},he=function(e,t){var r;return 2===e.length&&R(J,j(e,0))&&(":"===(r=j(e,1))||!t&&"|"===r)},pe=function(e){var t;return e.length>1&&he(V(e,0,2))&&(2===e.length||"/"===(t=j(e,2))||"\\"===t||"?"===t||"#"===t)},ve=function(e){return"."===e||"%2e"===G(e)},me={},ge={},ye={},be={},we={},Ce={},Ee={},Se={},Oe={},_e={},Pe={},Ae={},xe={},ke={},Me={},Te={},Le={},je={},Re={},Ie={},De={},Be=function(e,t,r){var n,o,i,a=b(e);if(t){if(o=this.parse(a))throw new k(o);this.searchParams=null}else{if(void 0!==r&&(n=new Be(r,!0)),o=this.parse(a,null,n))throw new k(o);(i=A(new P)).bindURL(this),this.searchParams=i}};Be.prototype={type:"URL",parse:function(e,t,r){var o,i,a,s,c,u=this,l=t||me,f=0,d="",p=!1,g=!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=U(e,ne,""),e=U(e,oe,"$1")),e=U(e,ie,""),o=v(e);f<=o.length;){switch(i=o[f],l){case me:if(!i||!R(J,i)){if(t)return K;l=ye;continue}d+=G(i),l=ge;break;case ge:if(i&&(R(Q,i)||"+"===i||"-"===i||"."===i))d+=G(i);else{if(":"!==i){if(t)return K;d="",l=ye,f=0;continue}if(t&&(u.isSpecial()!==h(de,d)||"file"===d&&(u.includesCredentials()||null!==u.port)||"file"===u.scheme&&!u.host))return;if(u.scheme=d,t)return void(u.isSpecial()&&de[u.scheme]===u.port&&(u.port=null));d="","file"===u.scheme?l=ke:u.isSpecial()&&r&&r.scheme===u.scheme?l=be:u.isSpecial()?l=Se:"/"===o[f+1]?(l=we,f++):(u.cannotBeABaseURL=!0,F(u.path,""),l=Re)}break;case ye:if(!r||r.cannotBeABaseURL&&"#"!==i)return K;if(r.cannotBeABaseURL&&"#"===i){u.scheme=r.scheme,u.path=m(r.path),u.query=r.query,u.fragment="",u.cannotBeABaseURL=!0,l=De;break}l="file"===r.scheme?ke:Ce;continue;case be:if("/"!==i||"/"!==o[f+1]){l=Ce;continue}l=Oe,f++;break;case we:if("/"===i){l=_e;break}l=je;continue;case Ce: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=m(r.path),u.query=r.query;else if("/"===i||"\\"===i&&u.isSpecial())l=Ee;else if("?"===i)u.username=r.username,u.password=r.password,u.host=r.host,u.port=r.port,u.path=m(r.path),u.query="",l=Ie;else{if("#"!==i){u.username=r.username,u.password=r.password,u.host=r.host,u.port=r.port,u.path=m(r.path),u.path.length--,l=je;continue}u.username=r.username,u.password=r.password,u.host=r.host,u.port=r.port,u.path=m(r.path),u.query=r.query,u.fragment="",l=De}break;case Ee:if(!u.isSpecial()||"/"!==i&&"\\"!==i){if("/"!==i){u.username=r.username,u.password=r.password,u.host=r.host,u.port=r.port,l=je;continue}l=_e}else l=Oe;break;case Se:if(l=Oe,"/"!==i||"/"!==j(d,f+1))continue;f++;break;case Oe:if("/"!==i&&"\\"!==i){l=_e;continue}break;case _e:if("@"===i){p&&(d="%40"+d),p=!0,a=v(d);for(var w=0;w<a.length;w++){var C=a[w];if(":"!==C||y){var E=fe(C,le);y?u.password+=E:u.username+=E}else y=!0}d=""}else if(i===n||"/"===i||"?"===i||"#"===i||"\\"===i&&u.isSpecial()){if(p&&""===d)return"Invalid authority";f-=v(d).length+1,d="",l=Pe}else d+=i;break;case Pe:case Ae:if(t&&"file"===u.scheme){l=Te;continue}if(":"!==i||g){if(i===n||"/"===i||"?"===i||"#"===i||"\\"===i&&u.isSpecial()){if(u.isSpecial()&&""===d)return q;if(t&&""===d&&(u.includesCredentials()||null!==u.port))return;if(s=u.parseHost(d))return s;if(d="",l=Le,t)return;continue}"["===i?g=!0:"]"===i&&(g=!1),d+=i}else{if(""===d)return q;if(s=u.parseHost(d))return s;if(d="",l=xe,t===Ae)return}break;case xe:if(!R(Y,i)){if(i===n||"/"===i||"?"===i||"#"===i||"\\"===i&&u.isSpecial()||t){if(""!==d){var S=M(d,10);if(S>65535)return W;u.port=u.isSpecial()&&S===de[u.scheme]?null:S,d=""}if(t)return;l=Le;continue}return W}d+=i;break;case ke:if(u.scheme="file","/"===i||"\\"===i)l=Me;else{if(!r||"file"!==r.scheme){l=je;continue}switch(i){case n:u.host=r.host,u.path=m(r.path),u.query=r.query;break;case"?":u.host=r.host,u.path=m(r.path),u.query="",l=Ie;break;case"#":u.host=r.host,u.path=m(r.path),u.query=r.query,u.fragment="",l=De;break;default:pe(I(m(o,f),""))||(u.host=r.host,u.path=m(r.path),u.shortenPath()),l=je;continue}}break;case Me:if("/"===i||"\\"===i){l=Te;break}r&&"file"===r.scheme&&!pe(I(m(o,f),""))&&(he(r.path[0],!0)?F(u.path,r.path[0]):u.host=r.host),l=je;continue;case Te:if(i===n||"/"===i||"\\"===i||"?"===i||"#"===i){if(!t&&he(d))l=je;else if(""===d){if(u.host="",t)return;l=Le}else{if(s=u.parseHost(d))return s;if("localhost"===u.host&&(u.host=""),t)return;d="",l=Le}continue}d+=i;break;case Le:if(u.isSpecial()){if(l=je,"/"!==i&&"\\"!==i)continue}else if(t||"?"!==i)if(t||"#"!==i){if(i!==n&&(l=je,"/"!==i))continue}else u.fragment="",l=De;else u.query="",l=Ie;break;case je:if(i===n||"/"===i||"\\"===i&&u.isSpecial()||!t&&("?"===i||"#"===i)){if(".."===(c=G(c=d))||"%2e."===c||".%2e"===c||"%2e%2e"===c?(u.shortenPath(),"/"===i||"\\"===i&&u.isSpecial()||F(u.path,"")):ve(d)?"/"===i||"\\"===i&&u.isSpecial()||F(u.path,""):("file"===u.scheme&&!u.path.length&&he(d)&&(u.host&&(u.host=""),d=j(d,0)+":"),F(u.path,d)),d="","file"===u.scheme&&(i===n||"?"===i||"#"===i))for(;u.path.length>1&&""===u.path[0];)N(u.path);"?"===i?(u.query="",l=Ie):"#"===i&&(u.fragment="",l=De)}else d+=fe(i,ue);break;case Re:"?"===i?(u.query="",l=Ie):"#"===i?(u.fragment="",l=De):i!==n&&(u.path[0]+=fe(i,se));break;case Ie:t||"#"!==i?i!==n&&("'"===i&&u.isSpecial()?u.query+="%27":u.query+="#"===i?"%23":fe(i,se)):(u.fragment="",l=De);break;case De:i!==n&&(u.fragment+=fe(i,ce))}f++}},parseHost:function(e){var t,r,n;if("["===j(e,0)){if("]"!==j(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,f=0,d=function(){return j(e,f)};if(":"===d()){if(":"!==j(e,1))return;f+=2,l=++u}for(;d();){if(8===u)return;if(":"!==d()){for(t=r=0;r<4&&R(ee,d());)t=16*t+M(d(),16),f++,r++;if("."===d()){if(0===r)return;if(f-=r,u>6)return;for(n=0;d();){if(o=null,n>0){if(!("."===d()&&n<4))return;f++}if(!R(Y,d()))return;for(;R(Y,d());){if(i=M(d(),10),null===o)o=i;else{if(0===o)return;o=10*o+i}if(o>255)return;f++}c[u]=256*c[u]+o,2!=++n&&4!==n||u++}if(4!==n)return;break}if(":"===d()){if(f++,!d())return}else if(d())return;c[u++]=t}else{if(null!==l)return;f++,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),R(te,e))return q;if(t=function(e){var t,r,n,o,i,a,s,c=H(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"===j(o,0)&&(i=R($,o)?16:8,o=V(o,8===i?1:2)),""===o)a=0;else{if(!R(10===i?Z:8===i?X:ee,o))return e;a=M(o,i)}F(r,a)}for(n=0;n<t;n++)if(a=r[n],n===t-1){if(a>=L(256,5-t))return null}else if(a>255)return null;for(s=B(r),n=0;n<r.length;n++)s+=r[n]*L(256,3-n);return s}(e),null===t)return q;this.host=t}else{if(R(re,e))return q;for(t="",r=v(e),n=0;n<r.length;n++)t+=fe(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(de,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?"/"+I(a,"/"):"",null!==s&&(u+="?"+s),null!==c&&(u+="#"+c),u},setHref:function(e){var t=this.parse(e);if(t)throw new k(t);this.searchParams.update()},getOrigin:function(){var e=this.scheme,t=this.port;if("blob"===e)try{return new Fe(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)+":",me)},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+=fe(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+=fe(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,Pe)},getHostname:function(){var e=this.host;return null===e?"":ae(e)},setHostname:function(e){this.cannotBeABaseURL||this.parse(e,Ae)},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,xe))},getPathname:function(){var e=this.path;return this.cannotBeABaseURL?e[0]:e.length?"/"+I(e,"/"):""},setPathname:function(e){this.cannotBeABaseURL||(this.path=[],this.parse(e,Le))},getSearch:function(){var e=this.query;return e?"?"+e:""},setSearch:function(e){""===(e=b(e))?this.query=null:("?"===j(e,0)&&(e=V(e,1)),this.query="",this.parse(e,Ie)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var e=this.fragment;return e?"#"+e:""},setHash:function(e){""!==(e=b(e))?("#"===j(e,0)&&(e=V(e,1)),this.fragment="",this.parse(e,De)):this.fragment=null},update:function(){this.query=this.searchParams.serialize()||null}};var Fe=function(e){var t=d(this,Ue),r=C(arguments.length,1)>1?arguments[1]:void 0,n=O(t,new Be(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())},Ue=Fe.prototype,Ne=function(e,t){return{get:function(){return _(this)[e]()},set:t&&function(e){return _(this)[t](e)},configurable:!0,enumerable:!0}};if(i&&(f(Ue,"href",Ne("serialize","setHref")),f(Ue,"origin",Ne("getOrigin")),f(Ue,"protocol",Ne("getProtocol","setProtocol")),f(Ue,"username",Ne("getUsername","setUsername")),f(Ue,"password",Ne("getPassword","setPassword")),f(Ue,"host",Ne("getHost","setHost")),f(Ue,"hostname",Ne("getHostname","setHostname")),f(Ue,"port",Ne("getPort","setPort")),f(Ue,"pathname",Ne("getPathname","setPathname")),f(Ue,"search",Ne("getSearch","setSearch")),f(Ue,"searchParams",Ne("getSearchParams")),f(Ue,"hash",Ne("getHash","setHash"))),l(Ue,"toJSON",(function(){return _(this).serialize()}),{enumerable:!0}),l(Ue,"toString",(function(){return _(this).serialize()}),{enumerable:!0}),x){var He=x.createObjectURL,Ve=x.revokeObjectURL;He&&l(Fe,"createObjectURL",c(He,x)),Ve&&l(Fe,"revokeObjectURL",c(Ve,x))}w(Fe,"URL"),o({global:!0,constructor:!0,forced:!a,sham:!i},{URL:Fe})},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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJtYXBwaW5ncyI6IkNBQUEsU0FBMkNBLEVBQU1DLEdBQzFCLGlCQUFaQyxTQUEwQyxpQkFBWEMsT0FDeENBLE9BQU9ELFFBQVVELElBQ1EsbUJBQVhHLFFBQXlCQSxPQUFPQyxJQUM5Q0QsT0FBTyxHQUFJSCxHQUNlLGlCQUFaQyxRQUNkQSxRQUF3QixlQUFJRCxJQUU1QkQsRUFBcUIsZUFBSUMsR0FDMUIsQ0FURCxDQVNHSyxNQUFNLEksdUNDUlRDLE9BQU9DLGVBQWVOLEVBQVMsYUFBYyxDQUFFTyxPQUFPLElBQ3RELElBQUlDLEVBQTJCLFdBQzNCLFNBQVNBLEVBQVVDLEdBQ2ZDLEtBQUtELFNBQVdBLEVBQ2hCQyxLQUFLQyxPQUFTRCxLQUFLRSxtQkFDdkIsQ0E2SUEsT0E1SUFKLEVBQVVLLFNBQVcsU0FBVUMsR0FFM0IsSUFEQSxJQUFJQyxFQUFRLEdBQ0hDLEVBQUksRUFBR0EsRUFBSUYsRUFBSUcsT0FBUUQsSUFBSyxDQUNqQyxJQUFJRSxFQUFPSixFQUFJSyxXQUFXSCxHQUUxQkQsRUFBTUssS0FBWSxJQUFQRixFQUNmLENBQ0EsT0FBT0gsQ0FDWCxFQUNBUCxFQUFVYSxVQUFZLFNBQVVDLEdBQzVCLE9BQU9DLE9BQU9DLGFBQWFDLE1BQU1mLEtBQU1ZLEVBQzNDLEVBTUFkLEVBQVVrQixlQUFpQixXQUN2QixPQUFPaEIsS0FBS2lCLG1DQUNoQixFQU1BbkIsRUFBVW1CLGtDQUFvQyxXQUMxQyxPQUFPLElBQUluQixFQUFVQSxFQUFVb0IsY0FBY0MsSUFDakQsRUFNQXJCLEVBQVVzQix1Q0FBeUMsV0FDL0MsT0FBTyxJQUFJdEIsRUFBVUEsRUFBVW9CLGNBQWNHLFNBQ2pELEVBS0F2QixFQUFVd0IsVUFBWSxTQUFVQyxFQUFTQyxHQUVyQyxJQURBLElBQUlDLEVBQWMsR0FDVEMsRUFBSyxFQUFHQyxFQUFZSixFQUFTRyxFQUFLQyxFQUFVcEIsT0FBUW1CLElBQU0sQ0FDL0QsSUFBSUUsRUFBV0QsRUFBVUQsR0FDekJELEVBQVlmLEtBQUtjLEVBQVdJLEdBQ2hDLENBQ0EsT0FBT0gsQ0FDWCxFQUlBM0IsRUFBVStCLFFBQVUsU0FBVUMsRUFBU0MsRUFBWUMsR0FNL0MsSUFGQSxJQUFJQyxFQUFNLEdBQ05DLEVBQVNKLEVBQ05JLEVBQU8zQixPQUFTLEdBQUcsQ0FHdEIsSUFGQSxJQUFJNEIsRUFBVyxHQUNYQyxFQUFZLEVBQ1BWLEVBQUssRUFBR1csRUFBV0gsRUFBUVIsRUFBS1csRUFBUzlCLE9BQVFtQixJQUFNLENBQzVELElBRUlZLEdBQXlCLElBRmZELEVBQVNYLElBRWNVLEVBQVlMLEVBQzdDUSxHQUFTRCxFQUFlQSxFQUFjTixHQUFlQSxFQUN6REksRUFBWUUsRUFBY04sR0FDdEJHLEVBQVM1QixPQUFTLEdBQUtnQyxFQUFRLElBQy9CSixFQUFTekIsS0FBSzZCLEVBRXRCLENBQ0FOLEVBQUl2QixLQUFLMEIsR0FDVEYsRUFBU0MsQ0FDYixDQUVBLElBQUssSUFBSTdCLEVBQUksRUFBR0EsRUFBSXdCLEVBQVF2QixPQUFTLEdBQW9CLElBQWZ1QixFQUFReEIsR0FBVUEsSUFDeEQyQixFQUFJdkIsS0FBSyxHQUViLE9BQU91QixFQUFJTyxTQUNmLEVBT0ExQyxFQUFVMkMsVUFBVUMsT0FBUyxTQUFVWixHQUNuQyxJQUFJUCxFQUFVekIsRUFBVStCLFFBQVFDLEVBQVNoQyxFQUFVNkMsY0FBZTdDLEVBQVU4QyxhQUM1RSxPQUFPOUMsRUFBVXdCLFVBQVVDLEVBQVN2QixLQUFLRCxTQUM3QyxFQU9BRCxFQUFVMkMsVUFBVUksT0FBUyxTQUFVQyxHQUNuQyxJQUFJQyxFQUFXakQsRUFBVXdCLFVBQVV3QixFQUFTOUMsS0FBS0MsUUFDakQsT0FBT0gsRUFBVStCLFFBQVFrQixFQUFVakQsRUFBVThDLFlBQWE5QyxFQUFVNkMsY0FDeEUsRUFDQTdDLEVBQVUyQyxVQUFVTyxVQUFZLFNBQVVDLEdBQ3RDLE9BQU9uRCxFQUFVYSxVQUFVWCxLQUFLMEMsT0FBTzVDLEVBQVVLLFNBQVM4QyxJQUM5RCxFQUNBbkQsRUFBVTJDLFVBQVVTLFVBQVksU0FBVUQsR0FDdEMsT0FBT25ELEVBQVVhLFVBQVVYLEtBQUs2QyxPQUFPL0MsRUFBVUssU0FBUzhDLElBQzlELEVBSUFuRCxFQUFVMkMsVUFBVXZDLGtCQUFvQixXQUVwQyxJQURBLElBQUlELEVBQVMsSUFBSWtELE1BQU0sS0FDZDdDLEVBQUksRUFBR0EsRUFBSSxJQUFLQSxJQUVyQkwsRUFBT0QsS0FBS0QsU0FBU08sSUFBVyxJQUFKQSxFQUVoQyxPQUFPTCxDQUNYLEVBQ0FILEVBQVVvQixjQUFnQixDQUN0QkMsSUFBSyxDQUNELElBQUlWLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxJQUVsSFksU0FBVSxDQUNOLElBQUlaLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFX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QUFFakcsWUFBWSxFQUFNQyxJQUFLdTRDLEVBQVd2eUMsSUFFMUUsRUNORG15QyxFQUFvQnQ4QyxFQUFJLFdBQ3ZCLEdBQTBCLGlCQUFmb2EsV0FBeUIsT0FBT0EsV0FDM0MsSUFDQyxPQUFPdmYsTUFBUSxJQUFJaUYsU0FBUyxjQUFiLEVBQ2hCLENBQUUsTUFBT0ksR0FDUixHQUFzQixpQkFBWEwsT0FBcUIsT0FBT0EsTUFDeEMsQ0FDQSxDQVB1QixHQ0F4Qnk4QyxFQUFvQjE3QyxFQUFJLENBQUN3OUIsRUFBSy9rQixJQUFVN2UsT0FBTzhDLFVBQVVpVSxlQUFlOUYsS0FBSzJ5QixFQUFLL2tCLEdDQ2xGaWpDLEVBQW9CdDdDLEVBQUs3RyxJQUNILG9CQUFYbUcsUUFBMEJBLE9BQU9vVyxhQUMxQ2xjLE9BQU9DLGVBQWVOLEVBQVNtRyxPQUFPb1csWUFBYSxDQUFFaGMsTUFBTyxXQUU3REYsT0FBT0MsZUFBZU4sRUFBUyxhQUFjLENBQUVPLE9BQU8sR0FBTyxFQ0ZwQzRoRCxFQUFvQixLIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2Jhc2U2MnN0ci9kaXN0L3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9leHBpcmUtc2V0L2xpYi9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvZ2xvYmFsdGhpcy9pbXBsZW1lbnRhdGlvbi5icm93c2VyLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2dsb2JhbHRoaXMvcG9seWZpbGwuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvb2ZmaWNlc2RrLWJyb2FkY2FzdC1jaGFubmVsL2Rpc3Qvb2ZmaWNlc2RrLWJyb2FkY2FzdC1jaGFubmVsLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3Byb2Nlc3MvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9wcm94eS1wb2x5ZmlsbC9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvcHJveHktcG9seWZpbGwvc3JjL3Byb3h5LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3RpbnktZW1pdHRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL3NyYy9PZmZpY2VTREsudHMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9zcmMvYXNzZXJ0LnRzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vc3JjL2Nvbm5lY3QudHMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9zcmMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9zcmMvdHlwZXMvRW1wdHlQYWdlLnRzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci9ybmcuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL3JlZ2V4LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci92YWxpZGF0ZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvc3RyaW5naWZ5LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci92MS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvcGFyc2UuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL3YzNS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvbWQ1LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci92My5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvdjQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL3NoYTEuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL3Y1LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci9uaWwuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL3ZlcnNpb24uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvd2Vib2ZmaWNlLWpzLXNkay1zaGFyZWQvZGlzdC9BUElBZGFwdG9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3dlYm9mZmljZS1qcy1zZGstc2hhcmVkL2Rpc3QvRmlsZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy93ZWJvZmZpY2UtanMtc2RrLXNoYXJlZC9kaXN0L2V2ZW50LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3dlYm9mZmljZS1qcy1zZGstc2hhcmVkL2Rpc3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvd2Vib2ZmaWNlLWpzLXNkay1zaGFyZWQvZGlzdC90eXBlcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy93ZWJvZmZpY2Utc3RhcnRwYXJhbXMvZGlzdC9TdGFydFBhcmFtcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy93ZWJvZmZpY2Utc3RhcnRwYXJhbXMvZGlzdC9pbmRleC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy93ZWJvZmZpY2Utc3RhcnRwYXJhbXMvbm9kZV9tb2R1bGVzL2lzLXBsYWluLW9iai9pbmRleC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2FjdHVhbC9hcnJheS9pbmNsdWRlcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2FjdHVhbC9vYmplY3QvYXNzaWduLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvYWN0dWFsL3Byb21pc2UvaW5kZXguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9hY3R1YWwvdXJsL2luZGV4LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZXMvYXJyYXkvaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9lcy9vYmplY3QvYXNzaWduLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZXMvcHJvbWlzZS9pbmRleC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ZlYXR1cmVzL2FycmF5L2luY2x1ZGVzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZmVhdHVyZXMvb2JqZWN0L2Fzc2lnbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ZlYXR1cmVzL3Byb21pc2UvaW5kZXguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9mZWF0dXJlcy91cmwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9mdWxsL2FycmF5L2luY2x1ZGVzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZnVsbC9vYmplY3QvYXNzaWduLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZnVsbC9wcm9taXNlL2luZGV4LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZnVsbC91cmwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYS1jYWxsYWJsZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtcG9zc2libGUtcHJvdG90eXBlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktZnJvbS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1pbmNsdWRlcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1zbGljZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1zb3J0LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NhbGwtd2l0aC1zYWZlLWl0ZXJhdGlvbi1jbG9zaW5nLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLXJhdy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb3JyZWN0LXByb3RvdHlwZS1nZXR0ZXIuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLWl0ZXItcmVzdWx0LW9iamVjdC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3Nvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWlucy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Rlc2NyaXB0b3JzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RvbS1pdGVyYWJsZXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9tLXRva2VuLWxpc3QtcHJvdG90eXBlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VudHJ5LXVuYmluZC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Vudmlyb25tZW50LWlzLWlvcy1wZWJibGUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW52aXJvbm1lbnQtaXMtaW9zLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Vudmlyb25tZW50LWlzLW5vZGUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW52aXJvbm1lbnQtaXMtd2Vib3Mtd2Via2l0LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Vudmlyb25tZW50LXVzZXItYWdlbnQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW52aXJvbm1lbnQtdjgtdmVyc2lvbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnZpcm9ubWVudC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lcnJvci1zdGFjay1jbGVhci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lcnJvci1zdGFjay1pbnN0YWxsLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Vycm9yLXN0YWNrLWluc3RhbGxhYmxlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2V4cG9ydC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1hcHBseS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1uYW1lLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy1hY2Nlc3Nvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMtY2xhdXNlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtYnVpbHQtaW4uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LW1ldGhvZC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwtdGhpcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGRlbi1rZXlzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hvc3QtcmVwb3J0LWVycm9ycy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9odG1sLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luc3RhbGwtZXJyb3ItY2F1c2UuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtYXJyYXktaXRlcmF0b3ItbWV0aG9kLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNhbGxhYmxlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWZvcmNlZC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcG9zc2libGUtcHJvdG90eXBlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXB1cmUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtc3ltYm9sLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdGUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3ItY2xvc2UuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3ItY3JlYXRlLWNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9yLWRlZmluZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvcnMtY29yZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvcnMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbWFrZS1idWlsdC1pbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9tYXRoLXRydW5jLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21pY3JvdGFzay5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25vcm1hbGl6ZS1zdHJpbmctYXJndW1lbnQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWFzc2lnbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtY3JlYXRlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydGllcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC10by1zdHJpbmcuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3JkaW5hcnktdG8tcHJpbWl0aXZlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL293bi1rZXlzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3BhdGguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcGVyZm9ybS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wcm9taXNlLWNvbnN0cnVjdG9yLWRldGVjdGlvbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wcm9taXNlLW5hdGl2ZS1jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wcm9taXNlLXJlc29sdmUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcHJvbWlzZS1zdGF0aWNzLWluY29ycmVjdC1pdGVyYXRpb24uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcXVldWUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NhZmUtZ2V0LWJ1aWx0LWluLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC1zcGVjaWVzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC1rZXkuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy1tdWx0aWJ5dGUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLXB1bnljb2RlLXRvLWFzY2lpLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdGFzay5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tc3RyaW5nLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RyeS10by1zdHJpbmcuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdWlkLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VybC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdjgtcHJvdG90eXBlLWRlZmluZS1idWcuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdmFsaWRhdGUtYXJndW1lbnRzLWxlbmd0aC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFnZ3JlZ2F0ZS1lcnJvci5jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYWdncmVnYXRlLWVycm9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5pbmNsdWRlcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5hc3NpZ24uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UuYWxsLXNldHRsZWQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UuYWxsLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLmFueS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5jYXRjaC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5maW5hbGx5LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLnJhY2UuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UucmVqZWN0LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLnJlc29sdmUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UudHJ5LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLndpdGgtcmVzb2x2ZXJzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuZnJvbS1jb2RlLXBvaW50LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5hZ2dyZWdhdGUtZXJyb3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5wcm9taXNlLmFsbC1zZXR0bGVkLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQucHJvbWlzZS5hbnkuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5wcm9taXNlLnRyeS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnByb21pc2Uud2l0aC1yZXNvbHZlcnMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmRlbGV0ZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmhhcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuc2l6ZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC5jYW4tcGFyc2UuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwuY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwucGFyc2UuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwudG8tanNvbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL3N0YWJsZS9hcnJheS9pbmNsdWRlcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL3N0YWJsZS9vYmplY3QvYXNzaWduLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvc3RhYmxlL3Byb21pc2UvaW5kZXguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9zdGFibGUvdXJsL2luZGV4LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvd2ViL3VybC1zZWFyY2gtcGFyYW1zLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvd2ViL3VybC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvd2VicGFjay9zdGFydHVwIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIldlYk9mZmljZUpTU0RLXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIldlYk9mZmljZUpTU0RLXCJdID0gZmFjdG9yeSgpO1xufSkoc2VsZiwgKCkgPT4ge1xucmV0dXJuICIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciBCYXNlNjJTdHIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBCYXNlNjJTdHIoYWxwaGFiZXQpIHtcclxuICAgICAgICB0aGlzLmFscGhhYmV0ID0gYWxwaGFiZXQ7XHJcbiAgICAgICAgdGhpcy5sb29rdXAgPSB0aGlzLmNyZWF0ZUxvb2t1cFRhYmxlKCk7XHJcbiAgICB9XHJcbiAgICBCYXNlNjJTdHIuZ2V0Qnl0ZXMgPSBmdW5jdGlvbiAoc3RyKSB7XHJcbiAgICAgICAgdmFyIGJ5dGVzID0gW107XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIGNoYXIgPSBzdHIuY2hhckNvZGVBdChpKTtcclxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgICAgICAgICAgYnl0ZXMucHVzaChjaGFyICYgMHhGRik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBieXRlcztcclxuICAgIH07XHJcbiAgICBCYXNlNjJTdHIuZ2V0U3RyaW5nID0gZnVuY3Rpb24gKGFycikge1xyXG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KHRoaXMsIGFycik7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGEge0BsaW5rIEJhc2U2Mn0gaW5zdGFuY2UuIERlZmF1bHRzIHRvIHRoZSBHTVAtc3R5bGUgY2hhcmFjdGVyIHNldC5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJuIGEge0BsaW5rIEJhc2U2Mn0gaW5zdGFuY2UuXHJcbiAgICAgKi9cclxuICAgIEJhc2U2MlN0ci5jcmVhdGVJbnN0YW5jZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVJbnN0YW5jZVdpdGhHbXBDaGFyYWN0ZXJTZXQoKTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSB7QGxpbmsgQmFzZTYyfSBpbnN0YW5jZSB1c2luZyB0aGUgR01QLXN0eWxlIGNoYXJhY3RlciBzZXQuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybiBhIHtAbGluayBCYXNlNjJ9IGluc3RhbmNlLlxyXG4gICAgICovXHJcbiAgICBCYXNlNjJTdHIuY3JlYXRlSW5zdGFuY2VXaXRoR21wQ2hhcmFjdGVyU2V0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgQmFzZTYyU3RyKEJhc2U2MlN0ci5DaGFyYWN0ZXJTZXRzLkdNUCk7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGEge0BsaW5rIEJhc2U2Mn0gaW5zdGFuY2UgdXNpbmcgdGhlIGludmVydGVkIGNoYXJhY3RlciBzZXQuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybiBhIHtAbGluayBCYXNlNjJ9IGluc3RhbmNlLlxyXG4gICAgICovXHJcbiAgICBCYXNlNjJTdHIuY3JlYXRlSW5zdGFuY2VXaXRoSW52ZXJ0ZWRDaGFyYWN0ZXJTZXQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBCYXNlNjJTdHIoQmFzZTYyU3RyLkNoYXJhY3RlclNldHMuSU5WRVJURUQpO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogVXNlcyB0aGUgZWxlbWVudHMgb2YgYSBieXRlIGFycmF5IGFzIGluZGljZXMgdG8gYSBkaWN0aW9uYXJ5IGFuZCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlc1xyXG4gICAgICogaW4gZm9ybSBvZiBhIGJ5dGUgYXJyYXkuXHJcbiAgICAgKi9cclxuICAgIEJhc2U2MlN0ci50cmFuc2xhdGUgPSBmdW5jdGlvbiAoaW5kaWNlcywgZGljdGlvbmFyeSkge1xyXG4gICAgICAgIHZhciB0cmFuc2xhdGlvbiA9IFtdO1xyXG4gICAgICAgIGZvciAodmFyIF9pID0gMCwgaW5kaWNlc18xID0gaW5kaWNlczsgX2kgPCBpbmRpY2VzXzEubGVuZ3RoOyBfaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBpbmRpY2VzaSA9IGluZGljZXNfMVtfaV07XHJcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uLnB1c2goZGljdGlvbmFyeVtpbmRpY2VzaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJhbnNsYXRpb247XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBDb252ZXJ0cyBhIGJ5dGUgYXJyYXkgZnJvbSBhIHNvdXJjZSBiYXNlIHRvIGEgdGFyZ2V0IGJhc2UgdXNpbmcgdGhlIGFscGhhYmV0LlxyXG4gICAgICovXHJcbiAgICBCYXNlNjJTdHIuY29udmVydCA9IGZ1bmN0aW9uIChtZXNzYWdlLCBzb3VyY2VCYXNlLCB0YXJnZXRCYXNlKSB7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogVGhpcyBhbGdvcml0aG0gaXMgaW5zcGlyZWQgYnk6IGh0dHA6Ly9jb2RlZ29sZi5zdGFja2V4Y2hhbmdlLmNvbS9hLzIxNjcyXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdmFyIG91dCA9IFtdO1xyXG4gICAgICAgIHZhciBzb3VyY2UgPSBtZXNzYWdlO1xyXG4gICAgICAgIHdoaWxlIChzb3VyY2UubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB2YXIgcXVvdGllbnQgPSBbXTtcclxuICAgICAgICAgICAgdmFyIHJlbWFpbmRlciA9IDA7XHJcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMCwgc291cmNlXzEgPSBzb3VyY2U7IF9pIDwgc291cmNlXzEubGVuZ3RoOyBfaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc291cmNlaSA9IHNvdXJjZV8xW19pXTtcclxuICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgICAgICAgICAgICB2YXIgYWNjdW11bGF0b3IgPSAoc291cmNlaSAmIDB4RkYpICsgcmVtYWluZGVyICogc291cmNlQmFzZTtcclxuICAgICAgICAgICAgICAgIHZhciBkaWdpdCA9IChhY2N1bXVsYXRvciAtIChhY2N1bXVsYXRvciAlIHRhcmdldEJhc2UpKSAvIHRhcmdldEJhc2U7XHJcbiAgICAgICAgICAgICAgICByZW1haW5kZXIgPSBhY2N1bXVsYXRvciAlIHRhcmdldEJhc2U7XHJcbiAgICAgICAgICAgICAgICBpZiAocXVvdGllbnQubGVuZ3RoID4gMCB8fCBkaWdpdCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBxdW90aWVudC5wdXNoKGRpZ2l0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvdXQucHVzaChyZW1haW5kZXIpO1xyXG4gICAgICAgICAgICBzb3VyY2UgPSBxdW90aWVudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gcGFkIG91dHB1dCB3aXRoIHplcm9lcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBudW1iZXIgb2YgbGVhZGluZyB6ZXJvZXMgaW4gdGhlIG1lc3NhZ2VcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1lc3NhZ2UubGVuZ3RoIC0gMSAmJiBtZXNzYWdlW2ldID09PSAwOyBpKyspIHtcclxuICAgICAgICAgICAgb3V0LnB1c2goMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBvdXQucmV2ZXJzZSgpO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogRW5jb2RlcyBhIHNlcXVlbmNlIG9mIGJ5dGVzIGluIEJhc2U2MiBlbmNvZGluZy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gbWVzc2FnZSBhIGJ5dGUgc2VxdWVuY2UuXHJcbiAgICAgKiBAcmV0dXJuIGEgc2VxdWVuY2Ugb2YgQmFzZTYyLWVuY29kZWQgYnl0ZXMuXHJcbiAgICAgKi9cclxuICAgIEJhc2U2MlN0ci5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gKG1lc3NhZ2UpIHtcclxuICAgICAgICB2YXIgaW5kaWNlcyA9IEJhc2U2MlN0ci5jb252ZXJ0KG1lc3NhZ2UsIEJhc2U2MlN0ci5TVEFOREFSRF9CQVNFLCBCYXNlNjJTdHIuVEFSR0VUX0JBU0UpO1xyXG4gICAgICAgIHJldHVybiBCYXNlNjJTdHIudHJhbnNsYXRlKGluZGljZXMsIHRoaXMuYWxwaGFiZXQpO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogRGVjb2RlcyBhIHNlcXVlbmNlIG9mIEJhc2U2Mi1lbmNvZGVkIGJ5dGVzLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBlbmNvZGVkIGEgc2VxdWVuY2Ugb2YgQmFzZTYyLWVuY29kZWQgYnl0ZXMuXHJcbiAgICAgKiBAcmV0dXJuIGEgYnl0ZSBzZXF1ZW5jZS5cclxuICAgICAqL1xyXG4gICAgQmFzZTYyU3RyLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiAoZW5jb2RlZCkge1xyXG4gICAgICAgIHZhciBwcmVwYXJlZCA9IEJhc2U2MlN0ci50cmFuc2xhdGUoZW5jb2RlZCwgdGhpcy5sb29rdXApO1xyXG4gICAgICAgIHJldHVybiBCYXNlNjJTdHIuY29udmVydChwcmVwYXJlZCwgQmFzZTYyU3RyLlRBUkdFVF9CQVNFLCBCYXNlNjJTdHIuU1RBTkRBUkRfQkFTRSk7XHJcbiAgICB9O1xyXG4gICAgQmFzZTYyU3RyLnByb3RvdHlwZS5lbmNvZGVTdHIgPSBmdW5jdGlvbiAoaW5wdXQpIHtcclxuICAgICAgICByZXR1cm4gQmFzZTYyU3RyLmdldFN0cmluZyh0aGlzLmVuY29kZShCYXNlNjJTdHIuZ2V0Qnl0ZXMoaW5wdXQpKSk7XHJcbiAgICB9O1xyXG4gICAgQmFzZTYyU3RyLnByb3RvdHlwZS5kZWNvZGVTdHIgPSBmdW5jdGlvbiAoaW5wdXQpIHtcclxuICAgICAgICByZXR1cm4gQmFzZTYyU3RyLmdldFN0cmluZyh0aGlzLmRlY29kZShCYXNlNjJTdHIuZ2V0Qnl0ZXMoaW5wdXQpKSk7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIHRoZSBsb29rdXAgdGFibGUgZnJvbSBjaGFyYWN0ZXIgdG8gaW5kZXggb2YgY2hhcmFjdGVyIGluIGNoYXJhY3RlciBzZXQuXHJcbiAgICAgKi9cclxuICAgIEJhc2U2MlN0ci5wcm90b3R5cGUuY3JlYXRlTG9va3VwVGFibGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIGxvb2t1cCA9IG5ldyBBcnJheSgyNTYpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyBpKyspIHtcclxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgICAgICAgICAgbG9va3VwW3RoaXMuYWxwaGFiZXRbaV1dID0gKGkgJiAweEZGKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGxvb2t1cDtcclxuICAgIH07XHJcbiAgICBCYXNlNjJTdHIuQ2hhcmFjdGVyU2V0cyA9IHtcclxuICAgICAgICBHTVA6IFtcclxuICAgICAgICAgICAgJzAnLmNoYXJDb2RlQXQoMCksICcxJy5jaGFyQ29kZUF0KDApLCAnMicuY2hhckNvZGVBdCgwKSwgJzMnLmNoYXJDb2RlQXQoMCksICc0Jy5jaGFyQ29kZUF0KDApLCAnNScuY2hhckNvZGVBdCgwKSwgJzYnLmNoYXJDb2RlQXQoMCksICc3Jy5jaGFyQ29kZUF0KDApLFxyXG4gICAgICAgICAgICAnOCcuY2hhckNvZGVBdCgwKSwgJzknLmNoYXJDb2RlQXQoMCksICdBJy5jaGFyQ29kZUF0KDApLCAnQicuY2hhckNvZGVBdCgwKSwgJ0MnLmNoYXJDb2RlQXQoMCksICdEJy5jaGFyQ29kZUF0KDApLCAnRScuY2hhckNvZGVBdCgwKSwgJ0YnLmNoYXJDb2RlQXQoMCksXHJcbiAgICAgICAgICAgICdHJy5jaGFyQ29kZUF0KDApLCAnSCcuY2hhckNvZGVBdCgwKSwgJ0knLmNoYXJDb2RlQXQoMCksICdKJy5jaGFyQ29kZUF0KDApLCAnSycuY2hhckNvZGVBdCgwKSwgJ0wnLmNoYXJDb2RlQXQoMCksICdNJy5jaGFyQ29kZUF0KDApLCAnTicuY2hhckNvZGVBdCgwKSxcclxuICAgICAgICAgICAgJ08nLmNoYXJDb2RlQXQoMCksICdQJy5jaGFyQ29kZUF0KDApLCAnUScuY2hhckNvZGVBdCgwKSwgJ1InLmNoYXJDb2RlQXQoMCksICdTJy5jaGFyQ29kZUF0KDApLCAnVCcuY2hhckNvZGVBdCgwKSwgJ1UnLmNoYXJDb2RlQXQoMCksICdWJy5jaGFyQ29kZUF0KDApLFxyXG4gICAgICAgICAgICAnVycuY2hhckNvZGVBdCgwKSwgJ1gnLmNoYXJDb2RlQXQoMCksICdZJy5jaGFyQ29kZUF0KDApLCAnWicuY2hhckNvZGVBdCgwKSwgJ2EnLmNoYXJDb2RlQXQoMCksICdiJy5jaGFyQ29kZUF0KDApLCAnYycuY2hhckNvZGVBdCgwKSwgJ2QnLmNoYXJDb2RlQXQoMCksXHJcbiAgICAgICAgICAgICdlJy5jaGFyQ29kZUF0KDApLCAnZicuY2hhckNvZGVBdCgwKSwgJ2cnLmNoYXJDb2RlQXQoMCksICdoJy5jaGFyQ29kZUF0KDApLCAnaScuY2hhckNvZGVBdCgwKSwgJ2onLmNoYXJDb2RlQXQoMCksICdrJy5jaGFyQ29kZUF0KDApLCAnbCcuY2hhckNvZGVBdCgwKSxcclxuICAgICAgICAgICAgJ20nLmNoYXJDb2RlQXQoMCksICduJy5jaGFyQ29kZUF0KDApLCAnbycuY2hhckNvZGVBdCgwKSwgJ3AnLmNoYXJDb2RlQXQoMCksICdxJy5jaGFyQ29kZUF0KDApLCAncicuY2hhckNvZGVBdCgwKSwgJ3MnLmNoYXJDb2RlQXQoMCksICd0Jy5jaGFyQ29kZUF0KDApLFxyXG4gICAgICAgICAgICAndScuY2hhckNvZGVBdCgwKSwgJ3YnLmNoYXJDb2RlQXQoMCksICd3Jy5jaGFyQ29kZUF0KDApLCAneCcuY2hhckNvZGVBdCgwKSwgJ3knLmNoYXJDb2RlQXQoMCksICd6Jy5jaGFyQ29kZUF0KDApXHJcbiAgICAgICAgXSxcclxuICAgICAgICBJTlZFUlRFRDogW1xyXG4gICAgICAgICAgICAnMCcuY2hhckNvZGVBdCgwKSwgJzEnLmNoYXJDb2RlQXQoMCksICcyJy5jaGFyQ29kZUF0KDApLCAnMycuY2hhckNvZGVBdCgwKSwgJzQnLmNoYXJDb2RlQXQoMCksICc1Jy5jaGFyQ29kZUF0KDApLCAnNicuY2hhckNvZGVBdCgwKSwgJzcnLmNoYXJDb2RlQXQoMCksXHJcbiAgICAgICAgICAgICc4Jy5jaGFyQ29kZUF0KDApLCAnOScuY2hhckNvZGVBdCgwKSwgJ2EnLmNoYXJDb2RlQXQoMCksICdiJy5jaGFyQ29kZUF0KDApLCAnYycuY2hhckNvZGVBdCgwKSwgJ2QnLmNoYXJDb2RlQXQoMCksICdlJy5jaGFyQ29kZUF0KDApLCAnZicuY2hhckNvZGVBdCgwKSxcclxuICAgICAgICAgICAgJ2cnLmNoYXJDb2RlQXQoMCksICdoJy5jaGFyQ29kZUF0KDApLCAnaScuY2hhckNvZGVBdCgwKSwgJ2onLmNoYXJDb2RlQXQoMCksICdrJy5jaGFyQ29kZUF0KDApLCAnbCcuY2hhckNvZGVBdCgwKSwgJ20nLmNoYXJDb2RlQXQoMCksICduJy5jaGFyQ29kZUF0KDApLFxyXG4gICAgICAgICAgICAnbycuY2hhckNvZGVBdCgwKSwgJ3AnLmNoYXJDb2RlQXQoMCksICdxJy5jaGFyQ29kZUF0KDApLCAncicuY2hhckNvZGVBdCgwKSwgJ3MnLmNoYXJDb2RlQXQoMCksICd0Jy5jaGFyQ29kZUF0KDApLCAndScuY2hhckNvZGVBdCgwKSwgJ3YnLmNoYXJDb2RlQXQoMCksXHJcbiAgICAgICAgICAgICd3Jy5jaGFyQ29kZUF0KDApLCAneCcuY2hhckNvZGVBdCgwKSwgJ3knLmNoYXJDb2RlQXQoMCksICd6Jy5jaGFyQ29kZUF0KDApLCAnQScuY2hhckNvZGVBdCgwKSwgJ0InLmNoYXJDb2RlQXQoMCksICdDJy5jaGFyQ29kZUF0KDApLCAnRCcuY2hhckNvZGVBdCgwKSxcclxuICAgICAgICAgICAgJ0UnLmNoYXJDb2RlQXQoMCksICdGJy5jaGFyQ29kZUF0KDApLCAnRycuY2hhckNvZGVBdCgwKSwgJ0gnLmNoYXJDb2RlQXQoMCksICdJJy5jaGFyQ29kZUF0KDApLCAnSicuY2hhckNvZGVBdCgwKSwgJ0snLmNoYXJDb2RlQXQoMCksICdMJy5jaGFyQ29kZUF0KDApLFxyXG4gICAgICAgICAgICAnTScuY2hhckNvZGVBdCgwKSwgJ04nLmNoYXJDb2RlQXQoMCksICdPJy5jaGFyQ29kZUF0KDApLCAnUCcuY2hhckNvZGVBdCgwKSwgJ1EnLmNoYXJDb2RlQXQoMCksICdSJy5jaGFyQ29kZUF0KDApLCAnUycuY2hhckNvZGVBdCgwKSwgJ1QnLmNoYXJDb2RlQXQoMCksXHJcbiAgICAgICAgICAgICdVJy5jaGFyQ29kZUF0KDApLCAnVicuY2hhckNvZGVBdCgwKSwgJ1cnLmNoYXJDb2RlQXQoMCksICdYJy5jaGFyQ29kZUF0KDApLCAnWScuY2hhckNvZGVBdCgwKSwgJ1onLmNoYXJDb2RlQXQoMClcclxuICAgICAgICBdXHJcbiAgICB9O1xyXG4gICAgQmFzZTYyU3RyLlNUQU5EQVJEX0JBU0UgPSAyNTY7XHJcbiAgICBCYXNlNjJTdHIuVEFSR0VUX0JBU0UgPSA2MjtcclxuICAgIHJldHVybiBCYXNlNjJTdHI7XHJcbn0oKSk7XHJcbmV4cG9ydHMuZGVmYXVsdCA9IEJhc2U2MlN0cjtcclxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuQ29weXJpZ2h0IDIwMjAgU29ydW5vbWVcbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3QgR0NfREVMQVkgPSA1O1xuY2xhc3MgRXhwaXJlU2V0IHtcbiAgICBjb25zdHJ1Y3Rvcih0aW1lb3V0LCBnY0RlbGF5KSB7XG4gICAgICAgIHRoaXMudGltZW91dCA9IHRpbWVvdXQ7XG4gICAgICAgIHRoaXMuZGIgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMubmV4dEdjID0gbnVsbDtcbiAgICAgICAgdGhpcy5nY0RlbGF5ID0gZ2NEZWxheSB8fCBHQ19ERUxBWTtcbiAgICB9XG4gICAgZ2V0IHNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRiLnNpemU7XG4gICAgfVxuICAgIGdldCBhbGwoKSB7XG4gICAgICAgIGNvbnN0IHMgPSBuZXcgU2V0KCk7XG4gICAgICAgIHRoaXMuZGIuZm9yRWFjaCgoXywgdikgPT4ge1xuICAgICAgICAgICAgcy5hZGQodik7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcztcbiAgICB9XG4gICAgYWRkKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuZGIuc2V0KHZhbHVlLCBEYXRlLm5vdygpICsgdGhpcy50aW1lb3V0KTtcbiAgICAgICAgdGhpcy5zY2hlZHVsZUdjKCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBoYXModmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGIuaGFzKHZhbHVlKTtcbiAgICB9XG4gICAgZGVsZXRlKHZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLmRiLmhhcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuZGIuZGVsZXRlKHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuc2NoZWR1bGVHYyh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgZ2MoKSB7XG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICAgIHRoaXMuZGIuZm9yRWFjaCgodCwgdikgPT4ge1xuICAgICAgICAgICAgaWYgKHQgPCBub3cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRiLmRlbGV0ZSh2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubmV4dEdjID0gbnVsbDtcbiAgICAgICAgdGhpcy5zY2hlZHVsZUdjKCk7XG4gICAgfVxuICAgIHNjaGVkdWxlR2MoZm9yY2UgPSBmYWxzZSkge1xuICAgICAgICBpZiAoZm9yY2UgJiYgdGhpcy5uZXh0R2MpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLm5leHRHYyk7XG4gICAgICAgICAgICB0aGlzLm5leHRHYyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubmV4dEdjICE9PSBudWxsIHx8IHRoaXMuZGIuc2l6ZSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCB0cyA9IC0xO1xuICAgICAgICB0aGlzLmRiLmZvckVhY2goKHQpID0+IHtcbiAgICAgICAgICAgIGlmICh0cyA9PT0gLTEgfHwgdCA8IHRzKSB7XG4gICAgICAgICAgICAgICAgdHMgPSB0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRzID09PSAtMSkge1xuICAgICAgICAgICAgdHMgPSBEYXRlLm5vdygpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRpbWVvdXQgPSB0cyAtIERhdGUubm93KCkgKyB0aGlzLmdjRGVsYXk7XG4gICAgICAgIHRoaXMubmV4dEdjID0gc2V0VGltZW91dCh0aGlzLmdjLmJpbmQodGhpcyksIHRpbWVvdXQpO1xuICAgIH1cbn1cbmV4cG9ydHMuZGVmYXVsdCA9IEV4cGlyZVNldDtcbm1vZHVsZS5leHBvcnRzID0gRXhwaXJlU2V0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IEV4cGlyZVNldDtcbiIsIi8qIGVzbGludCBuby1uZWdhdGVkLWNvbmRpdGlvbjogMCwgbm8tbmV3LWZ1bmM6IDAgKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5pZiAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnKSB7XG5cdG1vZHVsZS5leHBvcnRzID0gc2VsZjtcbn0gZWxzZSBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0bW9kdWxlLmV4cG9ydHMgPSB3aW5kb3c7XG59IGVsc2Uge1xuXHRtb2R1bGUuZXhwb3J0cyA9IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBpbXBsZW1lbnRhdGlvbiA9IHJlcXVpcmUoJy4vaW1wbGVtZW50YXRpb24nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZXRQb2x5ZmlsbCgpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWwgIT09ICdvYmplY3QnIHx8ICFnbG9iYWwgfHwgZ2xvYmFsLk1hdGggIT09IE1hdGggfHwgZ2xvYmFsLkFycmF5ICE9PSBBcnJheSkge1xuXHRcdHJldHVybiBpbXBsZW1lbnRhdGlvbjtcblx0fVxuXHRyZXR1cm4gZ2xvYmFsO1xufTtcbiIsIiFmdW5jdGlvbihlLHQpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcIm9iamVjdFwiPT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPXQoKTtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sdCk7ZWxzZXt2YXIgbj10KCk7Zm9yKHZhciByIGluIG4pKFwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHM6ZSlbcl09bltyXX19KHNlbGYsKCgpPT4oKCk9Pnt2YXIgZT17MzE4OmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fSxlLmV4cG9ydHMuX19lc01vZHVsZT0hMCxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHN9LDg6ZT0+e2Z1bmN0aW9uIHQobil7cmV0dXJuIGUuZXhwb3J0cz10PVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwLGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyx0KG4pfWUuZXhwb3J0cz10LGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwLGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0c30sOTkxOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lk9QRU5fQlJPQURDQVNUX0NIQU5ORUxTPXQuQnJvYWRjYXN0Q2hhbm5lbD12b2lkIDAsdC5jbGVhck5vZGVGb2xkZXI9ZnVuY3Rpb24oZSl7ZT0oMCxzLmZpbGxPcHRpb25zV2l0aERlZmF1bHRzKShlKTt2YXIgdD0oMCxvLmNob29zZU1ldGhvZCkoZSk7cmV0dXJuXCJub2RlXCI9PT10LnR5cGU/dC5jbGVhck5vZGVGb2xkZXIoKS50aGVuKChmdW5jdGlvbigpe3JldHVybiEwfSkpOnIuUFJPTUlTRV9SRVNPTFZFRF9GQUxTRX0sdC5lbmZvcmNlT3B0aW9ucz1mdW5jdGlvbihlKXthPWV9O3ZhciByPW4oMjAyKSxvPW4oNjMyKSxzPW4oNDIzKSxpPW5ldyBTZXQ7dC5PUEVOX0JST0FEQ0FTVF9DSEFOTkVMUz1pO3ZhciBhLHU9MCxjPWZ1bmN0aW9uKGUsdCl7dmFyIG4sYzt0aGlzLmlkPXUrKyxpLmFkZCh0aGlzKSx0aGlzLm5hbWU9ZSxhJiYodD1hKSx0aGlzLm9wdGlvbnM9KDAscy5maWxsT3B0aW9uc1dpdGhEZWZhdWx0cykodCksdGhpcy5tZXRob2Q9KDAsby5jaG9vc2VNZXRob2QpKHRoaXMub3B0aW9ucyksdGhpcy5faUw9ITEsdGhpcy5fb25NTD1udWxsLHRoaXMuX2FkZEVMPXttZXNzYWdlOltdLGludGVybmFsOltdfSx0aGlzLl91TVA9bmV3IFNldCx0aGlzLl9iZWZDPVtdLHRoaXMuX3ByZXBQPW51bGwsYz0obj10aGlzKS5tZXRob2QuY3JlYXRlKG4ubmFtZSxuLm9wdGlvbnMpLCgwLHIuaXNQcm9taXNlKShjKT8obi5fcHJlcFA9YyxjLnRoZW4oKGZ1bmN0aW9uKGUpe24uX3N0YXRlPWV9KSkpOm4uX3N0YXRlPWN9O2Z1bmN0aW9uIGwoZSx0LG4pe3ZhciBvPXt0aW1lOmUubWV0aG9kLm1pY3JvU2Vjb25kcygpLHR5cGU6dCxkYXRhOm59O3JldHVybihlLl9wcmVwUD9lLl9wcmVwUDpyLlBST01JU0VfUkVTT0xWRURfVk9JRCkudGhlbigoZnVuY3Rpb24oKXt2YXIgdD1lLm1ldGhvZC5wb3N0TWVzc2FnZShlLl9zdGF0ZSxvKTtyZXR1cm4gZS5fdU1QLmFkZCh0KSx0LmNhdGNoKCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gZS5fdU1QLmRlbGV0ZSh0KX0pKSx0fSkpfWZ1bmN0aW9uIGQoZSl7cmV0dXJuIGUuX2FkZEVMLm1lc3NhZ2UubGVuZ3RoPjB8fGUuX2FkZEVMLmludGVybmFsLmxlbmd0aD4wfWZ1bmN0aW9uIGYoZSx0LG4pe2UuX2FkZEVMW3RdLnB1c2gobiksZnVuY3Rpb24oZSl7aWYoIWUuX2lMJiZkKGUpKXt2YXIgdD1mdW5jdGlvbih0KXtlLl9hZGRFTFt0LnR5cGVdLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPWUudGltZS0xZTU7dC50aW1lPj1uJiZlLmZuKHQuZGF0YSl9KSl9LG49ZS5tZXRob2QubWljcm9TZWNvbmRzKCk7ZS5fcHJlcFA/ZS5fcHJlcFAudGhlbigoZnVuY3Rpb24oKXtlLl9pTD0hMCxlLm1ldGhvZC5vbk1lc3NhZ2UoZS5fc3RhdGUsdCxuKX0pKTooZS5faUw9ITAsZS5tZXRob2Qub25NZXNzYWdlKGUuX3N0YXRlLHQsbikpfX0oZSl9ZnVuY3Rpb24gaChlLHQsbil7ZS5fYWRkRUxbdF09ZS5fYWRkRUxbdF0uZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZSE9PW59KSksZnVuY3Rpb24oZSl7aWYoZS5faUwmJiFkKGUpKXtlLl9pTD0hMTt2YXIgdD1lLm1ldGhvZC5taWNyb1NlY29uZHMoKTtlLm1ldGhvZC5vbk1lc3NhZ2UoZS5fc3RhdGUsbnVsbCx0KX19KGUpfXQuQnJvYWRjYXN0Q2hhbm5lbD1jLGMuX3B1YmtleT0hMCxjLnByb3RvdHlwZT17cG9zdE1lc3NhZ2U6ZnVuY3Rpb24oZSl7aWYodGhpcy5jbG9zZWQpdGhyb3cgbmV3IEVycm9yKFwiQnJvYWRjYXN0Q2hhbm5lbC5wb3N0TWVzc2FnZSgpOiBDYW5ub3QgcG9zdCBtZXNzYWdlIGFmdGVyIGNoYW5uZWwgaGFzIGNsb3NlZCBcIitKU09OLnN0cmluZ2lmeShlKSk7cmV0dXJuIGwodGhpcyxcIm1lc3NhZ2VcIixlKX0scG9zdEludGVybmFsOmZ1bmN0aW9uKGUpe3JldHVybiBsKHRoaXMsXCJpbnRlcm5hbFwiLGUpfSxzZXQgb25tZXNzYWdlKGUpe3ZhciB0PXt0aW1lOnRoaXMubWV0aG9kLm1pY3JvU2Vjb25kcygpLGZuOmV9O2godGhpcyxcIm1lc3NhZ2VcIix0aGlzLl9vbk1MKSxlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlPyh0aGlzLl9vbk1MPXQsZih0aGlzLFwibWVzc2FnZVwiLHQpKTp0aGlzLl9vbk1MPW51bGx9LGFkZEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXtmKHRoaXMsZSx7dGltZTp0aGlzLm1ldGhvZC5taWNyb1NlY29uZHMoKSxmbjp0fSl9LHJlbW92ZUV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXtoKHRoaXMsZSx0aGlzLl9hZGRFTFtlXS5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZS5mbj09PXR9KSkpfSxjbG9zZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYoIXRoaXMuY2xvc2VkKXtpLmRlbGV0ZSh0aGlzKSx0aGlzLmNsb3NlZD0hMDt2YXIgdD10aGlzLl9wcmVwUD90aGlzLl9wcmVwUDpyLlBST01JU0VfUkVTT0xWRURfVk9JRDtyZXR1cm4gdGhpcy5fb25NTD1udWxsLHRoaXMuX2FkZEVMLm1lc3NhZ2U9W10sdC50aGVuKChmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLmFsbChBcnJheS5mcm9tKGUuX3VNUCkpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UuYWxsKGUuX2JlZkMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZSgpfSkpKX0pKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBlLm1ldGhvZC5jbG9zZShlLl9zdGF0ZSl9KSl9fSxnZXQgdHlwZSgpe3JldHVybiB0aGlzLm1ldGhvZC50eXBlfSxnZXQgaXNDbG9zZWQoKXtyZXR1cm4gdGhpcy5jbG9zZWR9fX0sNDM3OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDU4NSk7ZS5leHBvcnRzPXtCcm9hZGNhc3RDaGFubmVsOnIuQnJvYWRjYXN0Q2hhbm5lbCxjcmVhdGVMZWFkZXJFbGVjdGlvbjpyLmNyZWF0ZUxlYWRlckVsZWN0aW9uLGNsZWFyTm9kZUZvbGRlcjpyLmNsZWFyTm9kZUZvbGRlcixlbmZvcmNlT3B0aW9uczpyLmVuZm9yY2VPcHRpb25zLGJlTGVhZGVyOnIuYmVMZWFkZXJ9fSw1ODU6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiQnJvYWRjYXN0Q2hhbm5lbFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLkJyb2FkY2FzdENoYW5uZWx9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJPUEVOX0JST0FEQ0FTVF9DSEFOTkVMU1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLk9QRU5fQlJPQURDQVNUX0NIQU5ORUxTfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiYmVMZWFkZXJcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5iZUxlYWRlcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImNsZWFyTm9kZUZvbGRlclwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLmNsZWFyTm9kZUZvbGRlcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImNyZWF0ZUxlYWRlckVsZWN0aW9uXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uY3JlYXRlTGVhZGVyRWxlY3Rpb259fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJlbmZvcmNlT3B0aW9uc1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLmVuZm9yY2VPcHRpb25zfX0pO3ZhciByPW4oOTkxKSxvPW4oNTUwKX0sNTUwOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmJlTGVhZGVyPWEsdC5jcmVhdGVMZWFkZXJFbGVjdGlvbj1mdW5jdGlvbihlLHQpe2lmKGUuX2xlYWRlckVsZWN0b3IpdGhyb3cgbmV3IEVycm9yKFwiQnJvYWRjYXN0Q2hhbm5lbCBhbHJlYWR5IGhhcyBhIGxlYWRlci1lbGVjdG9yXCIpO3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZXx8KGU9e30pLChlPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZSkpKS5mYWxsYmFja0ludGVydmFsfHwoZS5mYWxsYmFja0ludGVydmFsPTNlMyksZS5yZXNwb25zZVRpbWV8fChlLnJlc3BvbnNlVGltZT10Lm1ldGhvZC5hdmVyYWdlUmVzcG9uc2VUaW1lKHQub3B0aW9ucykpLGV9KHQsZSk7dmFyIG49bmV3IHMoZSx0KTtyZXR1cm4gZS5fYmVmQy5wdXNoKChmdW5jdGlvbigpe3JldHVybiBuLmRpZSgpfSkpLGUuX2xlYWRlckVsZWN0b3I9bixufTt2YXIgcj1uKDIwMiksbz1uKDQ5OSkscz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7dGhpcy5icm9hZGNhc3RDaGFubmVsPWUsdGhpcy5fb3B0aW9ucz10LHRoaXMuaXNMZWFkZXI9ITEsdGhpcy5oYXNMZWFkZXI9ITEsdGhpcy5pc0RlYWQ9ITEsdGhpcy50b2tlbj0oMCxyLnJhbmRvbVRva2VuKSgpLHRoaXMuX2FwbFE9ci5QUk9NSVNFX1JFU09MVkVEX1ZPSUQsdGhpcy5fYXBsUUM9MCx0aGlzLl91bmw9W10sdGhpcy5fbHN0bnM9W10sdGhpcy5fZHBMPWZ1bmN0aW9uKCl7fSx0aGlzLl9kcExDPSExO3ZhciBvPWZ1bmN0aW9uKGUpe1wibGVhZGVyXCI9PT1lLmNvbnRleHQmJihcImRlYXRoXCI9PT1lLmFjdGlvbiYmKG4uaGFzTGVhZGVyPSExKSxcInRlbGxcIj09PWUuYWN0aW9uJiYobi5oYXNMZWFkZXI9ITApKX07dGhpcy5icm9hZGNhc3RDaGFubmVsLmFkZEV2ZW50TGlzdGVuZXIoXCJpbnRlcm5hbFwiLG8pLHRoaXMuX2xzdG5zLnB1c2gobyl9O2Z1bmN0aW9uIGkoZSx0KXt2YXIgbj17Y29udGV4dDpcImxlYWRlclwiLGFjdGlvbjp0LHRva2VuOmUudG9rZW59O3JldHVybiBlLmJyb2FkY2FzdENoYW5uZWwucG9zdEludGVybmFsKG4pfWZ1bmN0aW9uIGEoZSl7ZS5pc0xlYWRlcj0hMCxlLmhhc0xlYWRlcj0hMDt2YXIgdD0oMCxvLmFkZCkoKGZ1bmN0aW9uKCl7cmV0dXJuIGUuZGllKCl9KSk7ZS5fdW5sLnB1c2godCk7dmFyIG49ZnVuY3Rpb24odCl7XCJsZWFkZXJcIj09PXQuY29udGV4dCYmXCJhcHBseVwiPT09dC5hY3Rpb24mJmkoZSxcInRlbGxcIiksXCJsZWFkZXJcIiE9PXQuY29udGV4dHx8XCJ0ZWxsXCIhPT10LmFjdGlvbnx8ZS5fZHBMQ3x8KGUuX2RwTEM9ITAsZS5fZHBMKCksaShlLFwidGVsbFwiKSl9O3JldHVybiBlLmJyb2FkY2FzdENoYW5uZWwuYWRkRXZlbnRMaXN0ZW5lcihcImludGVybmFsXCIsbiksZS5fbHN0bnMucHVzaChuKSxpKGUsXCJ0ZWxsXCIpfXMucHJvdG90eXBlPXthcHBseU9uY2U6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5pc0xlYWRlcj8oMCxyLnNsZWVwKSgwLCEwKTp0aGlzLmlzRGVhZD8oMCxyLnNsZWVwKSgwLCExKTp0aGlzLl9hcGxRQz4xP3RoaXMuX2FwbFE6KHRoaXMuX2FwbFFDPXRoaXMuX2FwbFFDKzEsdGhpcy5fYXBsUT10aGlzLl9hcGxRLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7aWYodC5pc0xlYWRlcilyZXR1cm4gci5QUk9NSVNFX1JFU09MVkVEX1RSVUU7dmFyIG4sbz0hMSxzPW5ldyBQcm9taXNlKChmdW5jdGlvbihlKXtuPWZ1bmN0aW9uKCl7bz0hMCxlKCl9fSkpLHU9W10sYz1mdW5jdGlvbihlKXtcImxlYWRlclwiPT09ZS5jb250ZXh0JiZlLnRva2VuIT10LnRva2VuJiYodS5wdXNoKGUpLFwiYXBwbHlcIj09PWUuYWN0aW9uJiZlLnRva2VuPnQudG9rZW4mJm4oKSxcInRlbGxcIj09PWUuYWN0aW9uJiYobigpLHQuaGFzTGVhZGVyPSEwKSl9O3QuYnJvYWRjYXN0Q2hhbm5lbC5hZGRFdmVudExpc3RlbmVyKFwiaW50ZXJuYWxcIixjKTt2YXIgbD1lPzQqdC5fb3B0aW9ucy5yZXNwb25zZVRpbWU6dC5fb3B0aW9ucy5yZXNwb25zZVRpbWU7cmV0dXJuIGkodCxcImFwcGx5XCIpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmFjZShbKDAsci5zbGVlcCkobCkscy50aGVuKChmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IpfSkpXSl9KSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gaSh0LFwiYXBwbHlcIil9KSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yYWNlKFsoMCxyLnNsZWVwKShsKSxzLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcil9KSldKX0pKS5jYXRjaCgoZnVuY3Rpb24oKXt9KSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gdC5icm9hZGNhc3RDaGFubmVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJpbnRlcm5hbFwiLGMpLCFvJiZhKHQpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuITB9KSl9KSl9KCl9KSkudGhlbigoZnVuY3Rpb24oKXt0Ll9hcGxRQz10Ll9hcGxRQy0xfSkpLHRoaXMuX2FwbFEudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gdC5pc0xlYWRlcn0pKSl9LGF3YWl0TGVhZGVyc2hpcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hTFB8fCh0aGlzLl9hTFA9KGU9dGhpcykuaXNMZWFkZXI/ci5QUk9NSVNFX1JFU09MVkVEX1ZPSUQ6bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpe3ZhciBuPSExO2Z1bmN0aW9uIG8oKXtufHwobj0hMCxlLmJyb2FkY2FzdENoYW5uZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImludGVybmFsXCIscyksdCghMCkpfWUuYXBwbHlPbmNlKCkudGhlbigoZnVuY3Rpb24oKXtlLmlzTGVhZGVyJiZvKCl9KSksZnVuY3Rpb24gdCgpe3JldHVybigwLHIuc2xlZXApKGUuX29wdGlvbnMuZmFsbGJhY2tJbnRlcnZhbCkudGhlbigoZnVuY3Rpb24oKXtpZighZS5pc0RlYWQmJiFuKXJldHVybiBlLmlzTGVhZGVyP3ZvaWQgbygpOmUuYXBwbHlPbmNlKCEwKS50aGVuKChmdW5jdGlvbigpe2UuaXNMZWFkZXI/bygpOnQoKX0pKX0pKX0oKTt2YXIgcz1mdW5jdGlvbih0KXtcImxlYWRlclwiPT09dC5jb250ZXh0JiZcImRlYXRoXCI9PT10LmFjdGlvbiYmKGUuaGFzTGVhZGVyPSExLGUuYXBwbHlPbmNlKCkudGhlbigoZnVuY3Rpb24oKXtlLmlzTGVhZGVyJiZvKCl9KSkpfTtlLmJyb2FkY2FzdENoYW5uZWwuYWRkRXZlbnRMaXN0ZW5lcihcImludGVybmFsXCIscyksZS5fbHN0bnMucHVzaChzKX0pKSksdGhpcy5fYUxQO3ZhciBlfSxzZXQgb25kdXBsaWNhdGUoZSl7dGhpcy5fZHBMPWV9LGRpZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHRoaXMuX2xzdG5zLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLmJyb2FkY2FzdENoYW5uZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImludGVybmFsXCIsdCl9KSksdGhpcy5fbHN0bnM9W10sdGhpcy5fdW5sLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlbW92ZSgpfSkpLHRoaXMuX3VubD1bXSx0aGlzLmlzTGVhZGVyJiYodGhpcy5oYXNMZWFkZXI9ITEsdGhpcy5pc0xlYWRlcj0hMSksdGhpcy5pc0RlYWQ9ITAsaSh0aGlzLFwiZGVhdGhcIil9fX0sNjMyOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDMxOCk7big4KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmNob29zZU1ldGhvZD1mdW5jdGlvbihlKXt2YXIgdD1bXS5jb25jYXQoZS5tZXRob2RzLGMpLmZpbHRlcihCb29sZWFuKTtpZihlLnR5cGUpe2lmKFwic2ltdWxhdGVcIj09PWUudHlwZSlyZXR1cm4gYS5kZWZhdWx0O3ZhciBuPXQuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudHlwZT09PWUudHlwZX0pKTtpZihuKXJldHVybiBuO3Rocm93IG5ldyBFcnJvcihcIm1ldGhvZC10eXBlIFwiK2UudHlwZStcIiBub3QgZm91bmRcIil9ZS53ZWJXb3JrZXJTdXBwb3J0fHx1LmlzTm9kZXx8KHQ9dC5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVyblwiaWRiXCIhPT1lLnR5cGV9KSkpO3ZhciByPXQuZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2FuQmVVc2VkKCl9KSk7aWYocilyZXR1cm4gcjt0aHJvdyBuZXcgRXJyb3IoXCJObyB1c2VhYmxlIG1ldGhvZCBmb3VuZCBpbiBcIitKU09OLnN0cmluZ2lmeShjLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudHlwZX0pKSkpfTt2YXIgbz1yKG4oMTE1KSkscz1yKG4oMTIyKSksaT1yKG4oOTI0KSksYT1yKG4oNTc0KSksdT1uKDIwMiksYz1bby5kZWZhdWx0LHMuZGVmYXVsdCxpLmRlZmF1bHRdfSwxMjI6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuYXZlcmFnZVJlc3BvbnNlVGltZT13LHQuY2FuQmVVc2VkPUMsdC5jbGVhbk9sZE1lc3NhZ2VzPXAsdC5jbG9zZT15LHQuY3JlYXRlPXYsdC5jcmVhdGVEYXRhYmFzZT1jLHQuZGVmYXVsdD12b2lkIDAsdC5nZXRBbGxNZXNzYWdlcz1mdW5jdGlvbihlKXt2YXIgdD1lLnRyYW5zYWN0aW9uKGEpLm9iamVjdFN0b3JlKGEpLG49W107cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlKXt0Lm9wZW5DdXJzb3IoKS5vbnN1Y2Nlc3M9ZnVuY3Rpb24odCl7dmFyIHI9dC50YXJnZXQucmVzdWx0O3I/KG4ucHVzaChyLnZhbHVlKSxyLmNvbnRpbnVlKCkpOmUobil9fSkpfSx0LmdldElkYj11LHQuZ2V0TWVzc2FnZXNIaWdoZXJUaGFuPWQsdC5nZXRPbGRNZXNzYWdlcz1oLHQubWljcm9TZWNvbmRzPXZvaWQgMCx0Lm9uTWVzc2FnZT1fLHQucG9zdE1lc3NhZ2U9Yix0LnJlbW92ZU1lc3NhZ2VCeUlkPWYsdC50eXBlPXZvaWQgMCx0LndyaXRlTWVzc2FnZT1sO3ZhciByPW4oMjAyKSxvPW4oMTUxKSxzPW4oNDIzKSxpPXIubWljcm9TZWNvbmRzO3QubWljcm9TZWNvbmRzPWk7dmFyIGE9XCJtZXNzYWdlc1wiO2Z1bmN0aW9uIHUoKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgaW5kZXhlZERCKXJldHVybiBpbmRleGVkREI7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyl7aWYodm9pZCAwIT09d2luZG93Lm1vekluZGV4ZWREQilyZXR1cm4gd2luZG93Lm1vekluZGV4ZWREQjtpZih2b2lkIDAhPT13aW5kb3cud2Via2l0SW5kZXhlZERCKXJldHVybiB3aW5kb3cud2Via2l0SW5kZXhlZERCO2lmKHZvaWQgMCE9PXdpbmRvdy5tc0luZGV4ZWREQilyZXR1cm4gd2luZG93Lm1zSW5kZXhlZERCfXJldHVybiExfWZ1bmN0aW9uIGMoZSl7dmFyIHQ9XCJwdWJrZXkuYnJvYWRjYXN0LWNoYW5uZWwtMC1cIitlLG49dSgpLm9wZW4odCwxKTtyZXR1cm4gbi5vbnVwZ3JhZGVuZWVkZWQ9ZnVuY3Rpb24oZSl7ZS50YXJnZXQucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3JlKGEse2tleVBhdGg6XCJpZFwiLGF1dG9JbmNyZW1lbnQ6ITB9KX0sbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7bi5vbmVycm9yPWZ1bmN0aW9uKGUpe3JldHVybiB0KGUpfSxuLm9uc3VjY2Vzcz1mdW5jdGlvbigpe2Uobi5yZXN1bHQpfX0pKX1mdW5jdGlvbiBsKGUsdCxuKXt2YXIgcj17dXVpZDp0LHRpbWU6KG5ldyBEYXRlKS5nZXRUaW1lKCksZGF0YTpufSxvPWUudHJhbnNhY3Rpb24oW2FdLFwicmVhZHdyaXRlXCIpO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSx0KXtvLm9uY29tcGxldGU9ZnVuY3Rpb24oKXtyZXR1cm4gZSgpfSxvLm9uZXJyb3I9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSl9LG8ub2JqZWN0U3RvcmUoYSkuYWRkKHIpfSkpfWZ1bmN0aW9uIGQoZSx0KXt2YXIgbj1lLnRyYW5zYWN0aW9uKGEpLm9iamVjdFN0b3JlKGEpLHI9W107cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlKXsoZnVuY3Rpb24oKXt0cnl7dmFyIGU9SURCS2V5UmFuZ2UuYm91bmQodCsxLDEvMCk7cmV0dXJuIG4ub3BlbkN1cnNvcihlKX1jYXRjaChlKXtyZXR1cm4gbi5vcGVuQ3Vyc29yKCl9fSgpKS5vbnN1Y2Nlc3M9ZnVuY3Rpb24obil7dmFyIG89bi50YXJnZXQucmVzdWx0O28/by52YWx1ZS5pZDx0KzE/by5jb250aW51ZSh0KzEpOihyLnB1c2goby52YWx1ZSksby5jb250aW51ZSgpKTplKHIpfX0pKX1mdW5jdGlvbiBmKGUsdCl7dmFyIG49ZS50cmFuc2FjdGlvbihbYV0sXCJyZWFkd3JpdGVcIikub2JqZWN0U3RvcmUoYSkuZGVsZXRlKHQpO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7bi5vbnN1Y2Nlc3M9ZnVuY3Rpb24oKXtyZXR1cm4gZSgpfX0pKX1mdW5jdGlvbiBoKGUsdCl7dmFyIG49KG5ldyBEYXRlKS5nZXRUaW1lKCktdCxyPWUudHJhbnNhY3Rpb24oYSkub2JqZWN0U3RvcmUoYSksbz1bXTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe3Iub3BlbkN1cnNvcigpLm9uc3VjY2Vzcz1mdW5jdGlvbih0KXt2YXIgcj10LnRhcmdldC5yZXN1bHQ7aWYocil7dmFyIHM9ci52YWx1ZTtpZighKHMudGltZTxuKSlyZXR1cm4gdm9pZCBlKG8pO28ucHVzaChzKSxyLmNvbnRpbnVlKCl9ZWxzZSBlKG8pfX0pKX1mdW5jdGlvbiBwKGUsdCl7cmV0dXJuIGgoZSx0KS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gUHJvbWlzZS5hbGwodC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBmKGUsdC5pZCl9KSkpfSkpfWZ1bmN0aW9uIHYoZSx0KXtyZXR1cm4gdD0oMCxzLmZpbGxPcHRpb25zV2l0aERlZmF1bHRzKSh0KSxjKGUpLnRoZW4oKGZ1bmN0aW9uKG4pe3ZhciBzPXtjbG9zZWQ6ITEsbGFzdEN1cnNvcklkOjAsY2hhbm5lbE5hbWU6ZSxvcHRpb25zOnQsdXVpZDooMCxyLnJhbmRvbVRva2VuKSgpLGVNSXM6bmV3IG8uT2JsaXZpb3VzU2V0KDIqdC5pZGIudHRsKSx3cml0ZUJsb2NrUHJvbWlzZTpyLlBST01JU0VfUkVTT0xWRURfVk9JRCxtZXNzYWdlc0NhbGxiYWNrOm51bGwscmVhZFF1ZXVlUHJvbWlzZXM6W10sZGI6bn07cmV0dXJuIG4ub25jbG9zZT1mdW5jdGlvbigpe3MuY2xvc2VkPSEwLHQuaWRiLm9uY2xvc2UmJnQuaWRiLm9uY2xvc2UoKX0sbShzKSxzfSkpfWZ1bmN0aW9uIG0oZSl7ZS5jbG9zZWR8fGcoZSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4oMCxyLnNsZWVwKShlLm9wdGlvbnMuaWRiLmZhbGxiYWNrSW50ZXJ2YWwpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG0oZSl9KSl9ZnVuY3Rpb24gZyhlKXtyZXR1cm4gZS5jbG9zZWQ/ci5QUk9NSVNFX1JFU09MVkVEX1ZPSUQ6ZS5tZXNzYWdlc0NhbGxiYWNrP2QoZS5kYixlLmxhc3RDdXJzb3JJZCkudGhlbigoZnVuY3Rpb24odCl7dmFyIG49dC5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiEhZX0pKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkPmUubGFzdEN1cnNvcklkJiYoZS5sYXN0Q3Vyc29ySWQ9dC5pZCksdH0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLHQpe3JldHVybiEoZS51dWlkPT09dC51dWlkfHx0LmVNSXMuaGFzKGUuaWQpfHxlLmRhdGEudGltZTx0Lm1lc3NhZ2VzQ2FsbGJhY2tUaW1lKX0odCxlKX0pKS5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLnRpbWUtdC50aW1lfSkpO3JldHVybiBuLmZvckVhY2goKGZ1bmN0aW9uKHQpe2UubWVzc2FnZXNDYWxsYmFjayYmKGUuZU1Jcy5hZGQodC5pZCksZS5tZXNzYWdlc0NhbGxiYWNrKHQuZGF0YSkpfSkpLHIuUFJPTUlTRV9SRVNPTFZFRF9WT0lEfSkpOnIuUFJPTUlTRV9SRVNPTFZFRF9WT0lEfWZ1bmN0aW9uIHkoZSl7ZS5jbG9zZWQ9ITAsZS5kYi5jbG9zZSgpfWZ1bmN0aW9uIGIoZSx0KXtyZXR1cm4gZS53cml0ZUJsb2NrUHJvbWlzZT1lLndyaXRlQmxvY2tQcm9taXNlLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGwoZS5kYixlLnV1aWQsdCl9KSkudGhlbigoZnVuY3Rpb24oKXswPT09KDAsci5yYW5kb21JbnQpKDAsMTApJiZwKGUuZGIsZS5vcHRpb25zLmlkYi50dGwpfSkpLGUud3JpdGVCbG9ja1Byb21pc2V9ZnVuY3Rpb24gXyhlLHQsbil7ZS5tZXNzYWdlc0NhbGxiYWNrVGltZT1uLGUubWVzc2FnZXNDYWxsYmFjaz10LGcoZSl9ZnVuY3Rpb24gQygpe3JldHVybiFyLmlzTm9kZSYmISF1KCl9ZnVuY3Rpb24gdyhlKXtyZXR1cm4gMiplLmlkYi5mYWxsYmFja0ludGVydmFsfXQudHlwZT1cImlkYlwiO3ZhciBFPXtjcmVhdGU6dixjbG9zZTp5LG9uTWVzc2FnZTpfLHBvc3RNZXNzYWdlOmIsY2FuQmVVc2VkOkMsdHlwZTpcImlkYlwiLGF2ZXJhZ2VSZXNwb25zZVRpbWU6dyxtaWNyb1NlY29uZHM6aX07dC5kZWZhdWx0PUV9LDkyNDooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5hZGRTdG9yYWdlRXZlbnRMaXN0ZW5lcj1kLHQuYXZlcmFnZVJlc3BvbnNlVGltZT1nLHQuY2FuQmVVc2VkPW0sdC5jbG9zZT1wLHQuY3JlYXRlPWgsdC5kZWZhdWx0PXZvaWQgMCx0LmdldExvY2FsU3RvcmFnZT11LHQubWljcm9TZWNvbmRzPXZvaWQgMCx0Lm9uTWVzc2FnZT12LHQucG9zdE1lc3NhZ2U9bCx0LnJlbW92ZVN0b3JhZ2VFdmVudExpc3RlbmVyPWYsdC5zdG9yYWdlS2V5PWMsdC50eXBlPXZvaWQgMDt2YXIgcj1uKDE1MSksbz1uKDQyMykscz1uKDIwMiksaT1zLm1pY3JvU2Vjb25kczt0Lm1pY3JvU2Vjb25kcz1pO3ZhciBhPVwibG9jYWxzdG9yYWdlXCI7ZnVuY3Rpb24gdSgpe3ZhciBlO2lmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiB3aW5kb3cpcmV0dXJuIG51bGw7dHJ5e2U9d2luZG93LmxvY2FsU3RvcmFnZSxlPXdpbmRvd1tcImllOC1ldmVudGxpc3RlbmVyL3N0b3JhZ2VcIl18fHdpbmRvdy5sb2NhbFN0b3JhZ2V9Y2F0Y2goZSl7fXJldHVybiBlfWZ1bmN0aW9uIGMoZSl7cmV0dXJuXCJwdWJrZXkuYnJvYWRjYXN0Q2hhbm5lbC1cIitlfWZ1bmN0aW9uIGwoZSx0KXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4peygwLHMuc2xlZXApKCkudGhlbigoZnVuY3Rpb24oKXt2YXIgcj1jKGUuY2hhbm5lbE5hbWUpLG89e3Rva2VuOigwLHMucmFuZG9tVG9rZW4pKCksdGltZToobmV3IERhdGUpLmdldFRpbWUoKSxkYXRhOnQsdXVpZDplLnV1aWR9LGk9SlNPTi5zdHJpbmdpZnkobyk7dSgpLnNldEl0ZW0ocixpKTt2YXIgYT1kb2N1bWVudC5jcmVhdGVFdmVudChcIkV2ZW50XCIpO2EuaW5pdEV2ZW50KFwic3RvcmFnZVwiLCEwLCEwKSxhLmtleT1yLGEubmV3VmFsdWU9aSx3aW5kb3cuZGlzcGF0Y2hFdmVudChhKSxuKCl9KSl9KSl9ZnVuY3Rpb24gZChlLHQpe3ZhciBuPWMoZSkscj1mdW5jdGlvbihlKXtlLmtleT09PW4mJnQoSlNPTi5wYXJzZShlLm5ld1ZhbHVlKSl9O3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInN0b3JhZ2VcIixyKSxyfWZ1bmN0aW9uIGYoZSl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzdG9yYWdlXCIsZSl9ZnVuY3Rpb24gaChlLHQpe2lmKHQ9KDAsby5maWxsT3B0aW9uc1dpdGhEZWZhdWx0cykodCksIW0oKSl0aHJvdyBuZXcgRXJyb3IoXCJCcm9hZGNhc3RDaGFubmVsOiBsb2NhbHN0b3JhZ2UgY2Fubm90IGJlIHVzZWRcIik7dmFyIG49KDAscy5yYW5kb21Ub2tlbikoKSxpPW5ldyByLk9ibGl2aW91c1NldCh0LmxvY2Fsc3RvcmFnZS5yZW1vdmVUaW1lb3V0KSxhPXtjaGFubmVsTmFtZTplLHV1aWQ6bixlTUlzOml9O3JldHVybiBhLmxpc3RlbmVyPWQoZSwoZnVuY3Rpb24oZSl7YS5tZXNzYWdlc0NhbGxiYWNrJiZlLnV1aWQhPT1uJiZlLnRva2VuJiYhaS5oYXMoZS50b2tlbikmJihlLmRhdGEudGltZSYmZS5kYXRhLnRpbWU8YS5tZXNzYWdlc0NhbGxiYWNrVGltZXx8KGkuYWRkKGUudG9rZW4pLGEubWVzc2FnZXNDYWxsYmFjayhlLmRhdGEpKSl9KSksYX1mdW5jdGlvbiBwKGUpe2YoZS5saXN0ZW5lcil9ZnVuY3Rpb24gdihlLHQsbil7ZS5tZXNzYWdlc0NhbGxiYWNrVGltZT1uLGUubWVzc2FnZXNDYWxsYmFjaz10fWZ1bmN0aW9uIG0oKXtpZihzLmlzTm9kZSlyZXR1cm4hMTt2YXIgZT11KCk7aWYoIWUpcmV0dXJuITE7dHJ5e3ZhciB0PVwiX19icm9hZGNhc3RjaGFubmVsX2NoZWNrXCI7ZS5zZXRJdGVtKHQsXCJ3b3Jrc1wiKSxlLnJlbW92ZUl0ZW0odCl9Y2F0Y2goZSl7cmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gZygpe3ZhciBlPW5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtyZXR1cm4gZS5pbmNsdWRlcyhcInNhZmFyaVwiKSYmIWUuaW5jbHVkZXMoXCJjaHJvbWVcIik/MjQwOjEyMH10LnR5cGU9YTt2YXIgeT17Y3JlYXRlOmgsY2xvc2U6cCxvbk1lc3NhZ2U6dixwb3N0TWVzc2FnZTpsLGNhbkJlVXNlZDptLHR5cGU6YSxhdmVyYWdlUmVzcG9uc2VUaW1lOmcsbWljcm9TZWNvbmRzOml9O3QuZGVmYXVsdD15fSwxMTU6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuYXZlcmFnZVJlc3BvbnNlVGltZT1kLHQuY2FuQmVVc2VkPWwsdC5jbG9zZT1hLHQuY3JlYXRlPWksdC5taWNyb1NlY29uZHM9dC5kZWZhdWx0PXZvaWQgMCx0Lm9uTWVzc2FnZT1jLHQucG9zdE1lc3NhZ2U9dSx0LnR5cGU9dm9pZCAwO3ZhciByPW4oMjAyKSxvPXIubWljcm9TZWNvbmRzO3QubWljcm9TZWNvbmRzPW87dmFyIHM9XCJuYXRpdmVcIjtmdW5jdGlvbiBpKGUpe3ZhciB0PXttZXNzYWdlc0NhbGxiYWNrOm51bGwsYmM6bmV3IEJyb2FkY2FzdENoYW5uZWwoZSksc3ViRm5zOltdfTtyZXR1cm4gdC5iYy5vbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7dC5tZXNzYWdlc0NhbGxiYWNrJiZ0Lm1lc3NhZ2VzQ2FsbGJhY2soZS5kYXRhKX0sdH1mdW5jdGlvbiBhKGUpe2UuYmMuY2xvc2UoKSxlLnN1YkZucz1bXX1mdW5jdGlvbiB1KGUsdCl7dHJ5e3JldHVybiBlLmJjLnBvc3RNZXNzYWdlKHQsITEpLHIuUFJPTUlTRV9SRVNPTFZFRF9WT0lEfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX19ZnVuY3Rpb24gYyhlLHQpe2UubWVzc2FnZXNDYWxsYmFjaz10fWZ1bmN0aW9uIGwoKXtpZihyLmlzTm9kZSYmXCJ1bmRlZmluZWRcIj09dHlwZW9mIHdpbmRvdylyZXR1cm4hMTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBCcm9hZGNhc3RDaGFubmVsKXtpZihCcm9hZGNhc3RDaGFubmVsLl9wdWJrZXkpdGhyb3cgbmV3IEVycm9yKFwiQnJvYWRjYXN0Q2hhbm5lbDogRG8gbm90IG92ZXJ3cml0ZSB3aW5kb3cuQnJvYWRjYXN0Q2hhbm5lbCB3aXRoIHRoaXMgbW9kdWxlLCB0aGlzIGlzIG5vdCBhIHBvbHlmaWxsXCIpO3JldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIGQoKXtyZXR1cm4gMTUwfXQudHlwZT1zO3ZhciBmPXtjcmVhdGU6aSxjbG9zZTphLG9uTWVzc2FnZTpjLHBvc3RNZXNzYWdlOnUsY2FuQmVVc2VkOmwsdHlwZTpzLGF2ZXJhZ2VSZXNwb25zZVRpbWU6ZCxtaWNyb1NlY29uZHM6b307dC5kZWZhdWx0PWZ9LDU3NDooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5hdmVyYWdlUmVzcG9uc2VUaW1lPWQsdC5jYW5CZVVzZWQ9bCx0LmNsb3NlPWEsdC5jcmVhdGU9aSx0Lm1pY3JvU2Vjb25kcz10LmRlZmF1bHQ9dm9pZCAwLHQub25NZXNzYWdlPWMsdC5wb3N0TWVzc2FnZT11LHQudHlwZT12b2lkIDA7dmFyIHI9bigyMDIpLm1pY3JvU2Vjb25kczt0Lm1pY3JvU2Vjb25kcz1yO3ZhciBvPVwic2ltdWxhdGVcIjt0LnR5cGU9bzt2YXIgcz1uZXcgU2V0O2Z1bmN0aW9uIGkoZSl7dmFyIHQ9e25hbWU6ZSxtZXNzYWdlc0NhbGxiYWNrOm51bGx9O3JldHVybiBzLmFkZCh0KSx0fWZ1bmN0aW9uIGEoZSl7cy5kZWxldGUoZSl9ZnVuY3Rpb24gdShlLHQpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obil7cmV0dXJuIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7QXJyYXkuZnJvbShzKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWU9PT1lLm5hbWV9KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdCE9PWV9KSkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4hIWUubWVzc2FnZXNDYWxsYmFja30pKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS5tZXNzYWdlc0NhbGxiYWNrKHQpfSkpLG4oKX0pLDUpfSkpfWZ1bmN0aW9uIGMoZSx0KXtlLm1lc3NhZ2VzQ2FsbGJhY2s9dH1mdW5jdGlvbiBsKCl7cmV0dXJuITB9ZnVuY3Rpb24gZCgpe3JldHVybiA1fXZhciBmPXtjcmVhdGU6aSxjbG9zZTphLG9uTWVzc2FnZTpjLHBvc3RNZXNzYWdlOnUsY2FuQmVVc2VkOmwsdHlwZTpvLGF2ZXJhZ2VSZXNwb25zZVRpbWU6ZCxtaWNyb1NlY29uZHM6cn07dC5kZWZhdWx0PWZ9LDQyMzooZSx0KT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuZmlsbE9wdGlvbnNXaXRoRGVmYXVsdHM9ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sdD1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUpKTtyZXR1cm4gdm9pZCAwPT09dC53ZWJXb3JrZXJTdXBwb3J0JiYodC53ZWJXb3JrZXJTdXBwb3J0PSEwKSx0LmlkYnx8KHQuaWRiPXt9KSx0LmlkYi50dGx8fCh0LmlkYi50dGw9NDVlMyksdC5pZGIuZmFsbGJhY2tJbnRlcnZhbHx8KHQuaWRiLmZhbGxiYWNrSW50ZXJ2YWw9MTUwKSxlLmlkYiYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5pZGIub25jbG9zZSYmKHQuaWRiLm9uY2xvc2U9ZS5pZGIub25jbG9zZSksdC5sb2NhbHN0b3JhZ2V8fCh0LmxvY2Fsc3RvcmFnZT17fSksdC5sb2NhbHN0b3JhZ2UucmVtb3ZlVGltZW91dHx8KHQubG9jYWxzdG9yYWdlLnJlbW92ZVRpbWVvdXQ9NmU0KSxlLm1ldGhvZHMmJih0Lm1ldGhvZHM9ZS5tZXRob2RzKSx0Lm5vZGV8fCh0Lm5vZGU9e30pLHQubm9kZS50dGx8fCh0Lm5vZGUudHRsPTEyZTQpLHQubm9kZS5tYXhQYXJhbGxlbFdyaXRlc3x8KHQubm9kZS5tYXhQYXJhbGxlbFdyaXRlcz0yMDQ4KSx2b2lkIDA9PT10Lm5vZGUudXNlRmFzdFBhdGgmJih0Lm5vZGUudXNlRmFzdFBhdGg9ITApLHR9fSwyMDI6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO3ZhciByPW4oMTU1KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmlzTm9kZT10LlBST01JU0VfUkVTT0xWRURfVk9JRD10LlBST01JU0VfUkVTT0xWRURfVFJVRT10LlBST01JU0VfUkVTT0xWRURfRkFMU0U9dm9pZCAwLHQuaXNQcm9taXNlPWZ1bmN0aW9uKGUpe3JldHVybiEoIWV8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUudGhlbil9LHQubWljcm9TZWNvbmRzPWZ1bmN0aW9uKCl7dmFyIGU9KG5ldyBEYXRlKS5nZXRUaW1lKCk7cmV0dXJuIGU9PT1hPzFlMyplKyArK3U6KGE9ZSx1PTAsMWUzKmUpfSx0LnJhbmRvbUludD1mdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKHQtZSsxKStlKX0sdC5yYW5kb21Ub2tlbj1mdW5jdGlvbigpe3JldHVybiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMil9LHQuc2xlZXA9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZXx8KGU9MCksbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4pe3JldHVybiBzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBuKHQpfSksZSl9KSl9O3ZhciBvPVByb21pc2UucmVzb2x2ZSghMSk7dC5QUk9NSVNFX1JFU09MVkVEX0ZBTFNFPW87dmFyIHM9UHJvbWlzZS5yZXNvbHZlKCEwKTt0LlBST01JU0VfUkVTT0xWRURfVFJVRT1zO3ZhciBpPVByb21pc2UucmVzb2x2ZSgpO3QuUFJPTUlTRV9SRVNPTFZFRF9WT0lEPWk7dmFyIGE9MCx1PTAsYz1cIltvYmplY3QgcHJvY2Vzc11cIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2b2lkIDAhPT1yP3I6MCk7dC5pc05vZGU9Y30sMjI3OihlLHQsbik9Pnt2YXIgcj1uKDE1NSk7dC5mb3JtYXRBcmdzPWZ1bmN0aW9uKHQpe2lmKHRbMF09KHRoaXMudXNlQ29sb3JzP1wiJWNcIjpcIlwiKSt0aGlzLm5hbWVzcGFjZSsodGhpcy51c2VDb2xvcnM/XCIgJWNcIjpcIiBcIikrdFswXSsodGhpcy51c2VDb2xvcnM/XCIlYyBcIjpcIiBcIikrXCIrXCIrZS5leHBvcnRzLmh1bWFuaXplKHRoaXMuZGlmZiksIXRoaXMudXNlQ29sb3JzKXJldHVybjtjb25zdCBuPVwiY29sb3I6IFwiK3RoaXMuY29sb3I7dC5zcGxpY2UoMSwwLG4sXCJjb2xvcjogaW5oZXJpdFwiKTtsZXQgcj0wLG89MDt0WzBdLnJlcGxhY2UoLyVbYS16QS1aJV0vZywoZT0+e1wiJSVcIiE9PWUmJihyKyssXCIlY1wiPT09ZSYmKG89cikpfSkpLHQuc3BsaWNlKG8sMCxuKX0sdC5zYXZlPWZ1bmN0aW9uKGUpe3RyeXtlP3Quc3RvcmFnZS5zZXRJdGVtKFwiZGVidWdcIixlKTp0LnN0b3JhZ2UucmVtb3ZlSXRlbShcImRlYnVnXCIpfWNhdGNoKGUpe319LHQubG9hZD1mdW5jdGlvbigpe2xldCBlO3RyeXtlPXQuc3RvcmFnZS5nZXRJdGVtKFwiZGVidWdcIil9Y2F0Y2goZSl7fXJldHVybiFlJiZ2b2lkIDAhPT1yJiZcImVudlwiaW4gciYmKGU9ci5lbnYuREVCVUcpLGV9LHQudXNlQ29sb3JzPWZ1bmN0aW9uKCl7cmV0dXJuIShcInVuZGVmaW5lZFwiPT10eXBlb2Ygd2luZG93fHwhd2luZG93LnByb2Nlc3N8fFwicmVuZGVyZXJcIiE9PXdpbmRvdy5wcm9jZXNzLnR5cGUmJiF3aW5kb3cucHJvY2Vzcy5fX253anMpfHwoXCJ1bmRlZmluZWRcIj09dHlwZW9mIG5hdmlnYXRvcnx8IW5hdmlnYXRvci51c2VyQWdlbnR8fCFuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goLyhlZGdlfHRyaWRlbnQpXFwvKFxcZCspLykpJiYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLldlYmtpdEFwcGVhcmFuY2V8fFwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5jb25zb2xlJiYod2luZG93LmNvbnNvbGUuZmlyZWJ1Z3x8d2luZG93LmNvbnNvbGUuZXhjZXB0aW9uJiZ3aW5kb3cuY29uc29sZS50YWJsZSl8fFwidW5kZWZpbmVkXCIhPXR5cGVvZiBuYXZpZ2F0b3ImJm5hdmlnYXRvci51c2VyQWdlbnQmJm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5tYXRjaCgvZmlyZWZveFxcLyhcXGQrKS8pJiZwYXJzZUludChSZWdFeHAuJDEsMTApPj0zMXx8XCJ1bmRlZmluZWRcIiE9dHlwZW9mIG5hdmlnYXRvciYmbmF2aWdhdG9yLnVzZXJBZ2VudCYmbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLm1hdGNoKC9hcHBsZXdlYmtpdFxcLyhcXGQrKS8pKX0sdC5zdG9yYWdlPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBsb2NhbFN0b3JhZ2V9Y2F0Y2goZSl7fX0oKSx0LmRlc3Ryb3k9KCgpPT57bGV0IGU9ITE7cmV0dXJuKCk9PntlfHwoZT0hMCxjb25zb2xlLndhcm4oXCJJbnN0YW5jZSBtZXRob2QgYGRlYnVnLmRlc3Ryb3koKWAgaXMgZGVwcmVjYXRlZCBhbmQgbm8gbG9uZ2VyIGRvZXMgYW55dGhpbmcuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIG9mIGBkZWJ1Z2AuXCIpKX19KSgpLHQuY29sb3JzPVtcIiMwMDAwQ0NcIixcIiMwMDAwRkZcIixcIiMwMDMzQ0NcIixcIiMwMDMzRkZcIixcIiMwMDY2Q0NcIixcIiMwMDY2RkZcIixcIiMwMDk5Q0NcIixcIiMwMDk5RkZcIixcIiMwMENDMDBcIixcIiMwMENDMzNcIixcIiMwMENDNjZcIixcIiMwMENDOTlcIixcIiMwMENDQ0NcIixcIiMwMENDRkZcIixcIiMzMzAwQ0NcIixcIiMzMzAwRkZcIixcIiMzMzMzQ0NcIixcIiMzMzMzRkZcIixcIiMzMzY2Q0NcIixcIiMzMzY2RkZcIixcIiMzMzk5Q0NcIixcIiMzMzk5RkZcIixcIiMzM0NDMDBcIixcIiMzM0NDMzNcIixcIiMzM0NDNjZcIixcIiMzM0NDOTlcIixcIiMzM0NDQ0NcIixcIiMzM0NDRkZcIixcIiM2NjAwQ0NcIixcIiM2NjAwRkZcIixcIiM2NjMzQ0NcIixcIiM2NjMzRkZcIixcIiM2NkNDMDBcIixcIiM2NkNDMzNcIixcIiM5OTAwQ0NcIixcIiM5OTAwRkZcIixcIiM5OTMzQ0NcIixcIiM5OTMzRkZcIixcIiM5OUNDMDBcIixcIiM5OUNDMzNcIixcIiNDQzAwMDBcIixcIiNDQzAwMzNcIixcIiNDQzAwNjZcIixcIiNDQzAwOTlcIixcIiNDQzAwQ0NcIixcIiNDQzAwRkZcIixcIiNDQzMzMDBcIixcIiNDQzMzMzNcIixcIiNDQzMzNjZcIixcIiNDQzMzOTlcIixcIiNDQzMzQ0NcIixcIiNDQzMzRkZcIixcIiNDQzY2MDBcIixcIiNDQzY2MzNcIixcIiNDQzk5MDBcIixcIiNDQzk5MzNcIixcIiNDQ0NDMDBcIixcIiNDQ0NDMzNcIixcIiNGRjAwMDBcIixcIiNGRjAwMzNcIixcIiNGRjAwNjZcIixcIiNGRjAwOTlcIixcIiNGRjAwQ0NcIixcIiNGRjAwRkZcIixcIiNGRjMzMDBcIixcIiNGRjMzMzNcIixcIiNGRjMzNjZcIixcIiNGRjMzOTlcIixcIiNGRjMzQ0NcIixcIiNGRjMzRkZcIixcIiNGRjY2MDBcIixcIiNGRjY2MzNcIixcIiNGRjk5MDBcIixcIiNGRjk5MzNcIixcIiNGRkNDMDBcIixcIiNGRkNDMzNcIl0sdC5sb2c9Y29uc29sZS5kZWJ1Z3x8Y29uc29sZS5sb2d8fCgoKT0+e30pLGUuZXhwb3J0cz1uKDQ0NykodCk7Y29uc3R7Zm9ybWF0dGVyczpvfT1lLmV4cG9ydHM7by5qPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoZSl9Y2F0Y2goZSl7cmV0dXJuXCJbVW5leHBlY3RlZEpTT05QYXJzZUVycm9yXTogXCIrZS5tZXNzYWdlfX19LDQ0NzooZSx0LG4pPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7bGV0IG4sbyxzLGk9bnVsbDtmdW5jdGlvbiBhKC4uLmUpe2lmKCFhLmVuYWJsZWQpcmV0dXJuO2NvbnN0IHI9YSxvPU51bWJlcihuZXcgRGF0ZSkscz1vLShufHxvKTtyLmRpZmY9cyxyLnByZXY9bixyLmN1cnI9byxuPW8sZVswXT10LmNvZXJjZShlWzBdKSxcInN0cmluZ1wiIT10eXBlb2YgZVswXSYmZS51bnNoaWZ0KFwiJU9cIik7bGV0IGk9MDtlWzBdPWVbMF0ucmVwbGFjZSgvJShbYS16QS1aJV0pL2csKChuLG8pPT57aWYoXCIlJVwiPT09bilyZXR1cm5cIiVcIjtpKys7Y29uc3Qgcz10LmZvcm1hdHRlcnNbb107aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygcyl7Y29uc3QgdD1lW2ldO249cy5jYWxsKHIsdCksZS5zcGxpY2UoaSwxKSxpLS19cmV0dXJuIG59KSksdC5mb3JtYXRBcmdzLmNhbGwocixlKSwoci5sb2d8fHQubG9nKS5hcHBseShyLGUpfXJldHVybiBhLm5hbWVzcGFjZT1lLGEudXNlQ29sb3JzPXQudXNlQ29sb3JzKCksYS5jb2xvcj10LnNlbGVjdENvbG9yKGUpLGEuZXh0ZW5kPXIsYS5kZXN0cm95PXQuZGVzdHJveSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxcImVuYWJsZWRcIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITEsZ2V0OigpPT5udWxsIT09aT9pOihvIT09dC5uYW1lc3BhY2VzJiYobz10Lm5hbWVzcGFjZXMscz10LmVuYWJsZWQoZSkpLHMpLHNldDplPT57aT1lfX0pLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQuaW5pdCYmdC5pbml0KGEpLGF9ZnVuY3Rpb24gcihlLG4pe2NvbnN0IHI9dCh0aGlzLm5hbWVzcGFjZSsodm9pZCAwPT09bj9cIjpcIjpuKStlKTtyZXR1cm4gci5sb2c9dGhpcy5sb2cscn1mdW5jdGlvbiBvKGUpe3JldHVybiBlLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIsZS50b1N0cmluZygpLmxlbmd0aC0yKS5yZXBsYWNlKC9cXC5cXCpcXD8kLyxcIipcIil9cmV0dXJuIHQuZGVidWc9dCx0LmRlZmF1bHQ9dCx0LmNvZXJjZT1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEVycm9yP2Uuc3RhY2t8fGUubWVzc2FnZTplfSx0LmRpc2FibGU9ZnVuY3Rpb24oKXtjb25zdCBlPVsuLi50Lm5hbWVzLm1hcChvKSwuLi50LnNraXBzLm1hcChvKS5tYXAoKGU9PlwiLVwiK2UpKV0uam9pbihcIixcIik7cmV0dXJuIHQuZW5hYmxlKFwiXCIpLGV9LHQuZW5hYmxlPWZ1bmN0aW9uKGUpe2xldCBuO3Quc2F2ZShlKSx0Lm5hbWVzcGFjZXM9ZSx0Lm5hbWVzPVtdLHQuc2tpcHM9W107Y29uc3Qgcj0oXCJzdHJpbmdcIj09dHlwZW9mIGU/ZTpcIlwiKS5zcGxpdCgvW1xccyxdKy8pLG89ci5sZW5ndGg7Zm9yKG49MDtuPG87bisrKXJbbl0mJihcIi1cIj09PShlPXJbbl0ucmVwbGFjZSgvXFwqL2csXCIuKj9cIikpWzBdP3Quc2tpcHMucHVzaChuZXcgUmVnRXhwKFwiXlwiK2Uuc2xpY2UoMSkrXCIkXCIpKTp0Lm5hbWVzLnB1c2gobmV3IFJlZ0V4cChcIl5cIitlK1wiJFwiKSkpfSx0LmVuYWJsZWQ9ZnVuY3Rpb24oZSl7aWYoXCIqXCI9PT1lW2UubGVuZ3RoLTFdKXJldHVybiEwO2xldCBuLHI7Zm9yKG49MCxyPXQuc2tpcHMubGVuZ3RoO248cjtuKyspaWYodC5za2lwc1tuXS50ZXN0KGUpKXJldHVybiExO2ZvcihuPTAscj10Lm5hbWVzLmxlbmd0aDtuPHI7bisrKWlmKHQubmFtZXNbbl0udGVzdChlKSlyZXR1cm4hMDtyZXR1cm4hMX0sdC5odW1hbml6ZT1uKDgyNCksdC5kZXN0cm95PWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKFwiSW5zdGFuY2UgbWV0aG9kIGBkZWJ1Zy5kZXN0cm95KClgIGlzIGRlcHJlY2F0ZWQgYW5kIG5vIGxvbmdlciBkb2VzIGFueXRoaW5nLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiBvZiBgZGVidWdgLlwiKX0sT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgobj0+e3Rbbl09ZVtuXX0pKSx0Lm5hbWVzPVtdLHQuc2tpcHM9W10sdC5mb3JtYXR0ZXJzPXt9LHQuc2VsZWN0Q29sb3I9ZnVuY3Rpb24oZSl7bGV0IG49MDtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyluPShuPDw1KS1uK2UuY2hhckNvZGVBdCh0KSxufD0wO3JldHVybiB0LmNvbG9yc1tNYXRoLmFicyhuKSV0LmNvbG9ycy5sZW5ndGhdfSx0LmVuYWJsZSh0LmxvYWQoKSksdH19LDY0MzplPT57ZS5leHBvcnRzPSExfSw4MjQ6ZT0+e3ZhciB0PTFlMyxuPTYwKnQscj02MCpuLG89MjQqcjtmdW5jdGlvbiBzKGUsdCxuLHIpe3ZhciBvPXQ+PTEuNSpuO3JldHVybiBNYXRoLnJvdW5kKGUvbikrXCIgXCIrcisobz9cInNcIjpcIlwiKX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSxpKXtpPWl8fHt9O3ZhciBhLHUsYz10eXBlb2YgZTtpZihcInN0cmluZ1wiPT09YyYmZS5sZW5ndGg+MClyZXR1cm4gZnVuY3Rpb24oZSl7aWYoISgoZT1TdHJpbmcoZSkpLmxlbmd0aD4xMDApKXt2YXIgcz0vXigtPyg/OlxcZCspP1xcLj9cXGQrKSAqKG1pbGxpc2Vjb25kcz98bXNlY3M/fG1zfHNlY29uZHM/fHNlY3M/fHN8bWludXRlcz98bWlucz98bXxob3Vycz98aHJzP3xofGRheXM/fGR8d2Vla3M/fHd8eWVhcnM/fHlycz98eSk/JC9pLmV4ZWMoZSk7aWYocyl7dmFyIGk9cGFyc2VGbG9hdChzWzFdKTtzd2l0Y2goKHNbMl18fFwibXNcIikudG9Mb3dlckNhc2UoKSl7Y2FzZVwieWVhcnNcIjpjYXNlXCJ5ZWFyXCI6Y2FzZVwieXJzXCI6Y2FzZVwieXJcIjpjYXNlXCJ5XCI6cmV0dXJuIDMxNTU3NmU1Kmk7Y2FzZVwid2Vla3NcIjpjYXNlXCJ3ZWVrXCI6Y2FzZVwid1wiOnJldHVybiA2MDQ4ZTUqaTtjYXNlXCJkYXlzXCI6Y2FzZVwiZGF5XCI6Y2FzZVwiZFwiOnJldHVybiBpKm87Y2FzZVwiaG91cnNcIjpjYXNlXCJob3VyXCI6Y2FzZVwiaHJzXCI6Y2FzZVwiaHJcIjpjYXNlXCJoXCI6cmV0dXJuIGkqcjtjYXNlXCJtaW51dGVzXCI6Y2FzZVwibWludXRlXCI6Y2FzZVwibWluc1wiOmNhc2VcIm1pblwiOmNhc2VcIm1cIjpyZXR1cm4gaSpuO2Nhc2VcInNlY29uZHNcIjpjYXNlXCJzZWNvbmRcIjpjYXNlXCJzZWNzXCI6Y2FzZVwic2VjXCI6Y2FzZVwic1wiOnJldHVybiBpKnQ7Y2FzZVwibWlsbGlzZWNvbmRzXCI6Y2FzZVwibWlsbGlzZWNvbmRcIjpjYXNlXCJtc2Vjc1wiOmNhc2VcIm1zZWNcIjpjYXNlXCJtc1wiOnJldHVybiBpO2RlZmF1bHQ6cmV0dXJufX19fShlKTtpZihcIm51bWJlclwiPT09YyYmaXNGaW5pdGUoZSkpcmV0dXJuIGkubG9uZz8oYT1lLCh1PU1hdGguYWJzKGEpKT49bz9zKGEsdSxvLFwiZGF5XCIpOnU+PXI/cyhhLHUscixcImhvdXJcIik6dT49bj9zKGEsdSxuLFwibWludXRlXCIpOnU+PXQ/cyhhLHUsdCxcInNlY29uZFwiKTphK1wiIG1zXCIpOmZ1bmN0aW9uKGUpe3ZhciBzPU1hdGguYWJzKGUpO3JldHVybiBzPj1vP01hdGgucm91bmQoZS9vKStcImRcIjpzPj1yP01hdGgucm91bmQoZS9yKStcImhcIjpzPj1uP01hdGgucm91bmQoZS9uKStcIm1cIjpzPj10P01hdGgucm91bmQoZS90KStcInNcIjplK1wibXNcIn0oZSk7dGhyb3cgbmV3IEVycm9yKFwidmFsIGlzIG5vdCBhIG5vbi1lbXB0eSBzdHJpbmcgb3IgYSB2YWxpZCBudW1iZXIuIHZhbD1cIitKU09OLnN0cmluZ2lmeShlKSl9fSwxNTE6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24ucih0KSxuLmQodCx7T2JsaXZpb3VzU2V0OigpPT5yLG5vdzooKT0+cyxyZW1vdmVUb29PbGRWYWx1ZXM6KCk9Pm99KTt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy50dGw9ZSx0aGlzLnNldD1uZXcgU2V0LHRoaXMudGltZU1hcD1uZXcgTWFwfXJldHVybiBlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0LmhhcyhlKX0sZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7dGhpcy50aW1lTWFwLnNldChlLHMoKSksdGhpcy5zZXQuYWRkKGUpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7byh0KX0pLDApfSxlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2V0LmNsZWFyKCksdGhpcy50aW1lTWFwLmNsZWFyKCl9LGV9KCk7ZnVuY3Rpb24gbyhlKXtmb3IodmFyIHQ9cygpLWUudHRsLG49ZS5zZXRbU3ltYm9sLml0ZXJhdG9yXSgpOzspe3ZhciByPW4ubmV4dCgpLnZhbHVlO2lmKCFyKXJldHVybjtpZighKGUudGltZU1hcC5nZXQocik8dCkpcmV0dXJuO2UudGltZU1hcC5kZWxldGUociksZS5zZXQuZGVsZXRlKHIpfX1mdW5jdGlvbiBzKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9fSwxNTU6ZT0+e3ZhciB0LG4scj1lLmV4cG9ydHM9e307ZnVuY3Rpb24gbygpe3Rocm93IG5ldyBFcnJvcihcInNldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWRcIil9ZnVuY3Rpb24gcygpe3Rocm93IG5ldyBFcnJvcihcImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZFwiKX1mdW5jdGlvbiBpKGUpe2lmKHQ9PT1zZXRUaW1lb3V0KXJldHVybiBzZXRUaW1lb3V0KGUsMCk7aWYoKHQ9PT1vfHwhdCkmJnNldFRpbWVvdXQpcmV0dXJuIHQ9c2V0VGltZW91dCxzZXRUaW1lb3V0KGUsMCk7dHJ5e3JldHVybiB0KGUsMCl9Y2F0Y2gobil7dHJ5e3JldHVybiB0LmNhbGwobnVsbCxlLDApfWNhdGNoKG4pe3JldHVybiB0LmNhbGwodGhpcyxlLDApfX19IWZ1bmN0aW9uKCl7dHJ5e3Q9XCJmdW5jdGlvblwiPT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0Om99Y2F0Y2goZSl7dD1vfXRyeXtuPVwiZnVuY3Rpb25cIj09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6c31jYXRjaChlKXtuPXN9fSgpO3ZhciBhLHU9W10sYz0hMSxsPS0xO2Z1bmN0aW9uIGQoKXtjJiZhJiYoYz0hMSxhLmxlbmd0aD91PWEuY29uY2F0KHUpOmw9LTEsdS5sZW5ndGgmJmYoKSl9ZnVuY3Rpb24gZigpe2lmKCFjKXt2YXIgZT1pKGQpO2M9ITA7Zm9yKHZhciB0PXUubGVuZ3RoO3Q7KXtmb3IoYT11LHU9W107KytsPHQ7KWEmJmFbbF0ucnVuKCk7bD0tMSx0PXUubGVuZ3RofWE9bnVsbCxjPSExLGZ1bmN0aW9uKGUpe2lmKG49PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dChlKTtpZigobj09PXN8fCFuKSYmY2xlYXJUaW1lb3V0KXJldHVybiBuPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQoZSk7dHJ5e24oZSl9Y2F0Y2godCl7dHJ5e3JldHVybiBuLmNhbGwobnVsbCxlKX1jYXRjaCh0KXtyZXR1cm4gbi5jYWxsKHRoaXMsZSl9fX0oZSl9fWZ1bmN0aW9uIGgoZSx0KXt0aGlzLmZ1bj1lLHRoaXMuYXJyYXk9dH1mdW5jdGlvbiBwKCl7fXIubmV4dFRpY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWZvcih2YXIgbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTt1LnB1c2gobmV3IGgoZSx0KSksMSE9PXUubGVuZ3RofHxjfHxpKGYpfSxoLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfSxyLnRpdGxlPVwiYnJvd3NlclwiLHIuYnJvd3Nlcj0hMCxyLmVudj17fSxyLmFyZ3Y9W10sci52ZXJzaW9uPVwiXCIsci52ZXJzaW9ucz17fSxyLm9uPXAsci5hZGRMaXN0ZW5lcj1wLHIub25jZT1wLHIub2ZmPXAsci5yZW1vdmVMaXN0ZW5lcj1wLHIucmVtb3ZlQWxsTGlzdGVuZXJzPXAsci5lbWl0PXAsci5wcmVwZW5kTGlzdGVuZXI9cCxyLnByZXBlbmRPbmNlTGlzdGVuZXI9cCxyLmxpc3RlbmVycz1mdW5jdGlvbihlKXtyZXR1cm5bXX0sci5iaW5kaW5nPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihcInByb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkXCIpfSxyLmN3ZD1mdW5jdGlvbigpe3JldHVyblwiL1wifSxyLmNoZGlyPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihcInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZFwiKX0sci51bWFzaz1mdW5jdGlvbigpe3JldHVybiAwfX0sMjc5OmU9PntmdW5jdGlvbiB0KCl7fXQucHJvdG90eXBlPXtvbjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5lfHwodGhpcy5lPXt9KTtyZXR1cm4ocltlXXx8KHJbZV09W10pKS5wdXNoKHtmbjp0LGN0eDpufSksdGhpc30sb25jZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcztmdW5jdGlvbiBvKCl7ci5vZmYoZSxvKSx0LmFwcGx5KG4sYXJndW1lbnRzKX1yZXR1cm4gby5fPXQsdGhpcy5vbihlLG8sbil9LGVtaXQ6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLG49KCh0aGlzLmV8fCh0aGlzLmU9e30pKVtlXXx8W10pLnNsaWNlKCkscj0wLG89bi5sZW5ndGg7cjxvO3IrKyluW3JdLmZuLmFwcGx5KG5bcl0uY3R4LHQpO3JldHVybiB0aGlzfSxvZmY6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmV8fCh0aGlzLmU9e30pLHI9bltlXSxvPVtdO2lmKHImJnQpZm9yKHZhciBzPTAsaT1yLmxlbmd0aDtzPGk7cysrKXJbc10uZm4hPT10JiZyW3NdLmZuLl8hPT10JiZvLnB1c2gocltzXSk7cmV0dXJuIG8ubGVuZ3RoP25bZV09bzpkZWxldGUgbltlXSx0aGlzfX0sZS5leHBvcnRzPXQsZS5leHBvcnRzLlRpbnlFbWl0dGVyPXR9LDc5NzpmdW5jdGlvbihlLHQpe1widXNlIHN0cmljdFwiO3ZhciBuLHI9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChuPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG49T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pfSxuKGUsdCl9LGZ1bmN0aW9uKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIrU3RyaW5nKHQpK1wiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7ZnVuY3Rpb24gcigpe3RoaXMuY29uc3RydWN0b3I9ZX1uKGUsdCksZS5wcm90b3R5cGU9bnVsbD09PXQ/T2JqZWN0LmNyZWF0ZSh0KTooci5wcm90b3R5cGU9dC5wcm90b3R5cGUsbmV3IHIpfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5hc3NlcnQ9dC5Bc3NlcnRFcnJvcj12b2lkIDA7dmFyIG89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBudWxsIT09ZSYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIHIodCxlKSx0fShFcnJvcik7dC5Bc3NlcnRFcnJvcj1vLHQuYXNzZXJ0PWZ1bmN0aW9uKGUsdCxuKXtpZih0KGUpKXJldHVybiBlO3Rocm93IG5ldyBvKG4pfX0sNjAxOihlLHQpPT57XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5TT1VSQ0VfTkFNRVNQQUNFPXZvaWQgMCx0LlNPVVJDRV9OQU1FU1BBQ0U9XCJPZmZpY2VTREtCcm9hZGNhc3RDaGFubmVsXCJ9LDc1ODpmdW5jdGlvbihlLHQpe1widXNlIHN0cmljdFwiO3ZhciBuLHI9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fChuPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG49T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pfSxuKGUsdCl9LGZ1bmN0aW9uKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIrU3RyaW5nKHQpK1wiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7ZnVuY3Rpb24gcigpe3RoaXMuY29uc3RydWN0b3I9ZX1uKGUsdCksZS5wcm90b3R5cGU9bnVsbD09PXQ/T2JqZWN0LmNyZWF0ZSh0KTooci5wcm90b3R5cGU9dC5wcm90b3R5cGUsbmV3IHIpfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5JbnZva2VFcnJvcj10Lk1lc3NhZ2VUaW1lb3V0RXJyb3I9dC5NZXNzYWdlRXJyb3I9dm9pZCAwO3ZhciBvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCl7dmFyIG49ZS5jYWxsKHRoaXMsdCl8fHRoaXM7cmV0dXJuIG4ubmFtZT1cIk1lc3NhZ2VFcnJvclwiLE9iamVjdC5zZXRQcm90b3R5cGVPZihuLHMucHJvdG90eXBlKSxufXJldHVybiByKHQsZSksdH0oRXJyb3IpO3QuTWVzc2FnZUVycm9yPW87dmFyIHM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuKXt2YXIgcj1lLmNhbGwodGhpcyxuKXx8dGhpcztyZXR1cm4gci5uYW1lPVwiTWVzc2FnZVRpbWVvdXRFcnJvclwiLE9iamVjdC5zZXRQcm90b3R5cGVPZihyLHQucHJvdG90eXBlKSxyfXJldHVybiByKHQsZSksdH0oRXJyb3IpO3QuTWVzc2FnZVRpbWVvdXRFcnJvcj1zO3ZhciBpPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCl7dmFyIG49ZS5jYWxsKHRoaXMsdCl8fHRoaXM7cmV0dXJuIG4ubmFtZT1cIkludm9rZUVycm9yXCIsT2JqZWN0LnNldFByb3RvdHlwZU9mKG4scy5wcm90b3R5cGUpLG59cmV0dXJuIHIodCxlKSx0fShFcnJvcik7dC5JbnZva2VFcnJvcj1pfSw2MDc6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pfTpmdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj1uKSxlW3JdPXRbbl19KSxvPXRoaXMmJnRoaXMuX19leHBvcnRTdGFyfHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKVwiZGVmYXVsdFwiPT09bnx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil8fHIodCxlLG4pfSxzPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuT2ZmaWNlU0RLTWVzc2FnZUV2ZW50PXQuaXNPZmZpY2VTREtNZXNzYWdlRXZlbnRMaWtlPXQuT2ZmaWNlU0RLQnJvYWRjYXN0Q2hhbm5lbD12b2lkIDA7dmFyIGk9cyhuKDYyMykpO3QuT2ZmaWNlU0RLQnJvYWRjYXN0Q2hhbm5lbD1pLmRlZmF1bHQ7dmFyIGE9big5MjgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiaXNPZmZpY2VTREtNZXNzYWdlRXZlbnRMaWtlXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEuaXNPZmZpY2VTREtNZXNzYWdlRXZlbnRMaWtlfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiT2ZmaWNlU0RLTWVzc2FnZUV2ZW50XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEuT2ZmaWNlU0RLTWVzc2FnZUV2ZW50fX0pLG8obig5MjgpLHQpLG8obig2MjMpLHQpLG8obig3NTgpLHQpLG8obig4NiksdCksbyhuKDYwMSksdCl9LDkyODooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5pc09mZmljZVNES01lc3NhZ2VFdmVudExpa2U9dC5PZmZpY2VTREtNZXNzYWdlRXZlbnQ9dm9pZCAwO3ZhciByPW4oMTMxKSxvPW4oNzk3KSxzPW4oNjAxKSxpPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZGF0YSxuPWUuY29udGV4dCxpPWUudGltZSxhPWUub3JpZ2luLHU9ZS5lbWl0dGVyLGM9ZS5jaGFubmVsSWQsbD1PYmplY3QuYXNzaWduKHt9LG4se2NoYW5uZWxJZDpjfSk7XCJzdHJpbmdcIj09dHlwZW9mIGwubWVzc2FnZUlkJiZcIlwiIT09bC5tZXNzYWdlSWQudHJpbSgpfHwobC5tZXNzYWdlSWQ9KDAsci51dWlkKSgpKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLHtkYXRhOntlbnVtZXJhYmxlOiEwLHZhbHVlOnR9LGNvbnRleHQ6e2VudW1lcmFibGU6ITAsdmFsdWU6bH0sdGltZTp7ZW51bWVyYWJsZTohMCx2YWx1ZTpudWxsIT1pP2k6RGF0ZS5ub3coKX0saWQ6e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGwubWVzc2FnZUlkfX0sc291cmNlOntlbnVtZXJhYmxlOiEwLHZhbHVlOnMuU09VUkNFX05BTUVTUEFDRX0sb3JpZ2luOntlbnVtZXJhYmxlOiEwLHZhbHVlOmF9LGVtaXR0ZXI6e2VudW1lcmFibGU6ITAsdmFsdWU6dX0sY2hhbm5lbElkOntlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBsLmNoYW5uZWxJZH19fSksKDAsby5hc3NlcnQpKHRoaXMuY29udGV4dC5jaGFubmVsSWQsKGZ1bmN0aW9uKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlJiZlLmxlbmd0aD4wfSksXCJjaGFubmVsIGlkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nXCIpLCgwLG8uYXNzZXJ0KSh0aGlzLmlkLChmdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmZS5sZW5ndGg+MH0pLFwiaWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmdcIiksKDAsby5hc3NlcnQpKHRoaXMudGltZSwoZnVuY3Rpb24oZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGUmJmU+PTB9KSxcInRpbWUgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlclwiKX07dC5PZmZpY2VTREtNZXNzYWdlRXZlbnQ9aSx0LmlzT2ZmaWNlU0RLTWVzc2FnZUV2ZW50TGlrZT1mdW5jdGlvbihlKXtpZihlIGluc3RhbmNlb2YgaSlyZXR1cm4hMDtpZihcIm9iamVjdFwiPT10eXBlb2YgZSYmbnVsbCE9ZSl7dmFyIHQ9ZTtyZXR1cm4gdC5zb3VyY2U9PT1zLlNPVVJDRV9OQU1FU1BBQ0UmJlwic3RyaW5nXCI9PXR5cGVvZiB0LmNoYW5uZWxJZCYmdC5jaGFubmVsSWQubGVuZ3RoPjAmJm51bGwhPXQuY29udGV4dH1yZXR1cm4hMX19LDYyMzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9dGhpcyYmdGhpcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihvLHMpe2Z1bmN0aW9uIGkoZSl7dHJ5e3Uoci5uZXh0KGUpKX1jYXRjaChlKXtzKGUpfX1mdW5jdGlvbiBhKGUpe3RyeXt1KHIudGhyb3coZSkpfWNhdGNoKGUpe3MoZSl9fWZ1bmN0aW9uIHUoZSl7dmFyIHQ7ZS5kb25lP28oZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygbj90Om5ldyBuKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKGksYSl9dSgocj1yLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfSxvPXRoaXMmJnRoaXMuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvLHMsaT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZvWzBdKXRocm93IG9bMV07cmV0dXJuIG9bMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gcz17bmV4dDphKDApLHRocm93OmEoMSkscmV0dXJuOmEoMil9LFwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmKHNbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSkscztmdW5jdGlvbiBhKHMpe3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24ocyl7aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtmb3IoO2k7KXRyeXtpZihuPTEsciYmKG89MiZzWzBdP3IucmV0dXJuOnNbMF0/ci50aHJvd3x8KChvPXIucmV0dXJuKSYmby5jYWxsKHIpLDApOnIubmV4dCkmJiEobz1vLmNhbGwocixzWzFdKSkuZG9uZSlyZXR1cm4gbztzd2l0Y2gocj0wLG8mJihzPVsyJnNbMF0sby52YWx1ZV0pLHNbMF0pe2Nhc2UgMDpjYXNlIDE6bz1zO2JyZWFrO2Nhc2UgNDpyZXR1cm4gaS5sYWJlbCsrLHt2YWx1ZTpzWzFdLGRvbmU6ITF9O2Nhc2UgNTppLmxhYmVsKysscj1zWzFdLHM9WzBdO2NvbnRpbnVlO2Nhc2UgNzpzPWkub3BzLnBvcCgpLGkudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKG89KG89aS50cnlzKS5sZW5ndGg+MCYmb1tvLmxlbmd0aC0xXSl8fDYhPT1zWzBdJiYyIT09c1swXSkpe2k9MDtjb250aW51ZX1pZigzPT09c1swXSYmKCFvfHxzWzFdPm9bMF0mJnNbMV08b1szXSkpe2kubGFiZWw9c1sxXTticmVha31pZig2PT09c1swXSYmaS5sYWJlbDxvWzFdKXtpLmxhYmVsPW9bMV0sbz1zO2JyZWFrfWlmKG8mJmkubGFiZWw8b1syXSl7aS5sYWJlbD1vWzJdLGkub3BzLnB1c2gocyk7YnJlYWt9b1syXSYmaS5vcHMucG9wKCksaS50cnlzLnBvcCgpO2NvbnRpbnVlfXM9dC5jYWxsKGUsaSl9Y2F0Y2goZSl7cz1bNixlXSxyPTB9ZmluYWxseXtuPW89MH1pZig1JnNbMF0pdGhyb3cgc1sxXTtyZXR1cm57dmFsdWU6c1swXT9zWzFdOnZvaWQgMCxkb25lOiEwfX0oW3MsYV0pfX19LHM9dGhpcyYmdGhpcy5fX3NwcmVhZEFycmF5fHxmdW5jdGlvbihlLHQsbil7aWYobnx8Mj09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKHZhciByLG89MCxzPXQubGVuZ3RoO288cztvKyspIXImJm8gaW4gdHx8KHJ8fChyPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsMCxvKSkscltvXT10W29dKTtyZXR1cm4gZS5jb25jYXQocnx8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCkpfSxpPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuQ29udGV4dFR5cGU9dC5ERUJVR19OQU1FU1BBQ0U9dC5JTlZPS0VfREVGQVVUTF9USU1FT1VUPXZvaWQgMDt2YXIgYT1uKDQzNyksdT1uKDI3OSksYz1uKDc5NyksbD1uKDc1OCksZD1uKDkyOCksZj1uKDg2KSxoPWkobigyMjcpKSxwPWkobig2NzUpKSx2PW4oMTMxKTt0LklOVk9LRV9ERUZBVVRMX1RJTUVPVVQ9NmU0LHQuREVCVUdfTkFNRVNQQUNFPVwiU01fQ0hBTlwiO3ZhciBtLGc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZhciBuLHM9dGhpczt0aGlzLmludm9rZUhhbmRsZXJzPW5ldyBNYXAsdGhpcy5ldmVudEhhbmRsZXJzPW5ldyBNYXAsdGhpcy5lbWl0dGVySWQ9KDAsdi51dWlkKSgpLHRoaXMuX2RlYnVnTmFtZXNwYWNlPXQuREVCVUdfTkFNRVNQQUNFLHRoaXMuZGVidWc9ITA9PT1lLmRlYnVnLHRoaXMuZGVidWdOYW1lc3BhY2U9bnVsbCE9PShuPWUuZGVidWdOYW1lc3BhY2UpJiZ2b2lkIDAhPT1uP246dC5ERUJVR19OQU1FU1BBQ0UsdGhpcy5hdXRvU3RydWN0dXJlZENsb25lPSEwPT09ZS5hdXRvU3RydWN0dXJlZENsb25lLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLFwiaWRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTpcInN0cmluZ1wiPT10eXBlb2YgZS5jaGFubmVsSWQ/KDAsYy5hc3NlcnQpKGUuY2hhbm5lbElkLnRyaW0oKSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUubGVuZ3RoPjB9KSxcImNoYW5uZWxJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZ1wiKTooMCx2LnV1aWQpKCl9KSx0aGlzLmVtaXR0ZXI9bmV3IHUuVGlueUVtaXR0ZXI7dmFyIGk9bmV3IGEuQnJvYWRjYXN0Q2hhbm5lbCh0aGlzLmlkLGUuYnJvYWRjYXN0Q2hhbm5lbE9wdGlvbnMpO2kuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwoZnVuY3Rpb24oZSl7cihzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIHQsbixyO3JldHVybiBvKHRoaXMsKGZ1bmN0aW9uKG8pe3N3aXRjaChvLmxhYmVsKXtjYXNlIDA6dHJ5e3Q9dGhpcy5pbml0TWVzc2FnZUV2ZW50KGUpfWNhdGNoKHQpe3JldHVybihuPW5ldyBsLk1lc3NhZ2VFcnJvcihudWxsIT09KHI9bnVsbD09dD92b2lkIDA6dC5tZXNzYWdlKSYmdm9pZCAwIT09cj9yOlwibWVzc2FnZSBjYW5ub3QgYmUgaGFuZGxlZFwiKSkub3JpZ2luTWVzc2FnZT1lLmRhdGEsdGhpcy5lbWl0KFwibWVzc2FnZUVycm9yXCIsbiksWzJdfXJldHVybls0LHRoaXMuZGlzdHJpYnV0ZU1lc3NhZ2UodCldO2Nhc2UgMTpyZXR1cm4gby5zZW50KCksWzJdfX0pKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIHIocyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3JldHVybiBvKHRoaXMsKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVtaXQoXCJlcnJvclwiLGUpLFsyXX0pKX0pKX0pKX0pKSx0aGlzLmNoYW5uZWw9aX1yZXR1cm4gZS5wcm90b3R5cGUuaW5pdE1lc3NhZ2VFdmVudD1mdW5jdGlvbihlKXt2YXIgdD1PYmplY3QuYXNzaWduKHtlbWl0dGVyOnRoaXMuZW1pdHRlcklkfSxlLHtjaGFubmVsSWQ6dGhpcy5pZH0pO3JldHVyblwic3RyaW5nXCIhPXR5cGVvZiB0Lm9yaWdpbiYmKHQub3JpZ2luPWxvY2F0aW9uLm9yaWdpbiksbmV3IGQuT2ZmaWNlU0RLTWVzc2FnZUV2ZW50KHQpfSxlLnByb3RvdHlwZS5zdHJ1Y3R1cmVkQ2xvbmU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYXV0b1N0cnVjdHVyZWRDbG9uZT8oMCxmLnN0cnVjdHVyZWRDbG9uZSkoZSx7cmVwbGFjZXI6ZnVuY3Rpb24oKXt9fSk6ZX0sZS5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5ldmVudEhhbmRsZXJzLmdldChlKTtBcnJheS5pc0FycmF5KHIpfHwocj1bXSksci5wdXNoKFt0LG5dKSx0aGlzLmV2ZW50SGFuZGxlcnMuc2V0KGUscil9LGUucHJvdG90eXBlLm9uPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzO3JldHVybiB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZSx0LG4pLGZ1bmN0aW9uKCl7ci5vZmYoZSx0LG4pfX0sZS5wcm90b3R5cGUub25jZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyxvPWZ1bmN0aW9uKG4sbyl7ci5vZmYoZSx0LG8pLHQobixvKX07cmV0dXJuIG8uaGFuZGxlcj10LHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihlLG8sbiksZnVuY3Rpb24oKXtyLm9mZihlLHQsbil9fSxlLnByb3RvdHlwZS5vZmY9ZnVuY3Rpb24oZSx0LG4pe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXRoaXMuZXZlbnRIYW5kbGVycy5kZWxldGUoZSk7ZWxzZXt2YXIgcj10aGlzLmV2ZW50SGFuZGxlcnMuZ2V0KGUpO0FycmF5LmlzQXJyYXkocikmJihcIipcIj09PShudWxsPT1uP3ZvaWQgMDpuLmF1ZGllbmNlKT90aGlzLmV2ZW50SGFuZGxlcnMuZGVsZXRlKGUpOnRoaXMuZXZlbnRIYW5kbGVycy5zZXQoZSxyLmZpbHRlcigoZnVuY3Rpb24oZSl7dmFyIHI9ZVswXSxvPWVbMV07cmV0dXJuIHIhPT10JiZyLmhhbmRsZXIhPT10fHwobnVsbD09bz92b2lkIDA6by5hdWRpZW5jZSk9PT0obnVsbD09bj92b2lkIDA6bi5hdWRpZW5jZSl9KSkpKX19LGUucHJvdG90eXBlLmVtaXQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuZXZlbnRIYW5kbGVycy5nZXQoZSk7aWYodGhpcy5sb2coXCJlbWl0IGV2ZW50XCIse25hbWU6ZSxkYXRhOnQsY29udGV4dDpuLGhhbmRsZXJzOnJ9KSxBcnJheS5pc0FycmF5KHIpKWZvcih2YXIgbz0wLHM9cjtvPHMubGVuZ3RoO28rKyl7dmFyIGk9c1tvXSxhPWlbMF07eShpWzFdLG4pJiZhKHQsbil9fSxlLnByb3RvdHlwZS5wb3N0TWVzc2FnZT1mdW5jdGlvbihlLHQpe3JldHVybiByKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgbixyLHMsaTtyZXR1cm4gbyh0aGlzLChmdW5jdGlvbihvKXtzd2l0Y2goby5sYWJlbCl7Y2FzZSAwOnRyeXtyPXRoaXMuc3RydWN0dXJlZENsb25lKGUpLG49KDAsZC5pc09mZmljZVNES01lc3NhZ2VFdmVudExpa2UpKHIpP3RoaXMuaW5pdE1lc3NhZ2VFdmVudChyKTp0aGlzLmluaXRNZXNzYWdlRXZlbnQoe2RhdGE6cixjb250ZXh0Om51bGwhPXQ/dGhpcy5tZXJnZUNvbnRleHRzKFt0XSk6dH0pfWNhdGNoKHQpe3Rocm93IHRoaXMubG9nKFwibWVzc2FnZSBpbnZhbGlkXCIsZSx0KSwoaT1uZXcgbC5NZXNzYWdlRXJyb3IobnVsbD09dD92b2lkIDA6dC5tZXNzYWdlKSkub3JpZ2luTWVzc2FnZT1yLGl9by5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gby50cnlzLnB1c2goWzEsMywsNF0pLHRoaXMubG9nKFwicHJlIHBvc3RNZXNzYWdlXCIse21lc3NhZ2U6cixvcmlnaW46ZSxjb250ZXh0OnQsc3RydWN0dXJlZENsb25lZDp0aGlzLmF1dG9TdHJ1Y3R1cmVkQ2xvbmV9KSxbNCx0aGlzLmNoYW5uZWwucG9zdE1lc3NhZ2UobildO2Nhc2UgMjpyZXR1cm4gby5zZW50KCksdGhpcy5lbWl0KFwicG9zdE1lc3NhZ2VcIixuLG4uY29udGV4dCksdGhpcy5sb2coXCJwb3N0TWVzc2FnZSBzdWNjZXNzXCIsbiksWzMsNF07Y2FzZSAzOnRocm93IHM9by5zZW50KCksdGhpcy5sb2coXCJwb3N0IG1lc3NhZ2UgZXJyb3JcIixzKSwoaT1uZXcgbC5NZXNzYWdlRXJyb3IobnVsbD09cz92b2lkIDA6cy5tZXNzYWdlKSkub3JpZ2luTWVzc2FnZT1lLGk7Y2FzZSA0OnJldHVyblsyXX19KSl9KSl9LGUucHJvdG90eXBlLmRpc3RyaWJ1dGVNZXNzYWdlPWZ1bmN0aW9uKGUpe3ZhciB0LG4scztyZXR1cm4gcih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIHIsaTtyZXR1cm4gbyh0aGlzLChmdW5jdGlvbihvKXtzd2l0Y2goby5sYWJlbCl7Y2FzZSAwOnJldHVybihudWxsPT09KHQ9KHI9ZSkuY29udGV4dCl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuY2hhbm5lbElkKSE9PXRoaXMuaWR8fHIuZW1pdHRlcj09PXRoaXMuZW1pdHRlcklkPyh0aGlzLmxvZyhcImRpc2NhcmQgbWVzc2FnZVwiLHIpLFsyXSk6XCJmdW5jdGlvblwiIT10eXBlb2YgdGhpcy5vbk1lc3NhZ2VBcnJpdmU/WzMsMl06WzQsdGhpcy5vbk1lc3NhZ2VBcnJpdmUocildO2Nhc2UgMTppZighKChpPW8uc2VudCgpKWluc3RhbmNlb2YgZC5PZmZpY2VTREtNZXNzYWdlRXZlbnQpKXJldHVybiB0aGlzLmxvZyhcInNraXAgZGlzdHJpYnV0aW5nIG1lc3NhZ2UgYnkgYG9uTWVzc2FnZUFycml2ZWBcIix7bWVzc2FnZTppLG9yaWdpbjplfSksWzJdO3I9aSxvLmxhYmVsPTI7Y2FzZSAyOnJldHVybiB0aGlzLmxvZyhcImRpc3RyaWJ1dGUgbWVzc2FnZVwiLHttZXNzYWdlOnIsb3JpZ2luOmV9KSwobnVsbD09PShuPXIuY29udGV4dCl8fHZvaWQgMD09PW4/dm9pZCAwOm4udHlwZSkhPT1tLkludm9rZVJlcXVlc3Q/WzMsNF06WzQsdGhpcy5oYW5kbGVJbnZva2VSZXF1ZXN0KHIpXTtjYXNlIDM6cmV0dXJuIG8uc2VudCgpLFsyXTtjYXNlIDQ6cmV0dXJuKG51bGw9PT0ocz1yLmNvbnRleHQpfHx2b2lkIDA9PT1zP3ZvaWQgMDpzLnR5cGUpPT09bS5JbnZva2VSZXNwb25zZT8odGhpcy5oYW5kbGVJbnZva2VSZXNwb25zZShyKSxbMl0pOih0aGlzLmVtaXQoXCJtZXNzYWdlXCIscixyLmNvbnRleHQpLFsyXSl9fSkpfSkpfSxlLnByb3RvdHlwZS5oYW5kbGVJbnZva2VSZXF1ZXN0PWZ1bmN0aW9uKGUpe3JldHVybiByKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgdCxuLHIscyxpLGEsdSxjLGwsZCxmO3JldHVybiBvKHRoaXMsKGZ1bmN0aW9uKG8pe3N3aXRjaChvLmxhYmVsKXtjYXNlIDA6aWYoISgwLHAuZGVmYXVsdCkoZS5kYXRhKSl0aHJvdyB0aGlzLmxvZyhcImludmFsaWQgaW52b2tlIHJlcXVlc3RcIixlKSxuZXcgRXJyb3IoXCJJbnZva2VSZXF1ZXN0IGRhdGEgbXVzdCBiZSBhbiBvYmplY3RcIik7aWYodD1lLmRhdGEsbj10Lm5hbWUscj10LmFyZ3Mscz10aGlzLmludm9rZUhhbmRsZXJzLmdldChuKSx0aGlzLmxvZyhcImhhbmRsZSBpbnZva2UgcmVxdWVzdFwiLHttZXNzYWdlOmUsaGFuZGxlcnM6c30pLGk9ZS5jb250ZXh0LCFBcnJheS5pc0FycmF5KHMpfHwwPT09cy5sZW5ndGgpcmV0dXJuIHRoaXMubG9nKFwibm8gaW52b2tlIGhhbmRsZXJzXCIsbiksWzJdO2E9MCx1PXMsby5sYWJlbD0xO2Nhc2UgMTppZighKGE8dS5sZW5ndGgpKXJldHVyblszLDhdO2lmKCF5KChjPXVbYV0pLmNvbnRleHQsaSkpcmV0dXJuWzMsN107bD17ZGF0YTp2b2lkIDB9LG8ubGFiZWw9MjtjYXNlIDI6cmV0dXJuIG8udHJ5cy5wdXNoKFsyLDQsLDVdKSxkPWwsWzQsYy5oYW5kbGVyLmFwcGx5KGMscildO2Nhc2UgMzpyZXR1cm4gZC5kYXRhPW8uc2VudCgpLFszLDVdO2Nhc2UgNDpyZXR1cm4gZj1vLnNlbnQoKSxsLmVycm9yPWYsWzMsNV07Y2FzZSA1OnJldHVybls0LHRoaXMucG9zdE1lc3NhZ2UobCxPYmplY3QuYXNzaWduKHt9LGkse3R5cGU6bS5JbnZva2VSZXNwb25zZX0pKV07Y2FzZSA2OnJldHVybiBvLnNlbnQoKSxbMl07Y2FzZSA3OnJldHVybiBhKyssWzMsMV07Y2FzZSA4OnJldHVybiB0aGlzLmxvZyhcIm5vIGludm9rZSBoYW5kbGVyIGZvdW5kXCIsbiksWzJdfX0pKX0pKX0sZS5wcm90b3R5cGUuaGFuZGxlSW52b2tlUmVzcG9uc2U9ZnVuY3Rpb24oZSl7aWYodGhpcy5sb2coXCJoYW5kbGUgaW52b2tlIHJlc3BvbnNlXCIsZSksXCJzdHJpbmdcIiE9dHlwZW9mIGUuaWQpdGhyb3cgbmV3IGwuSW52b2tlRXJyb3IoXCJJbnZva2UgcmVzcG9uc2UgY29udGV4dCBpZCBpcyBpbnZhbGlkXCIpO3RoaXMuZW1pdHRlci5lbWl0KGUuaWQsZS5kYXRhKX0sZS5wcm90b3R5cGUubWVyZ2VDb250ZXh0cz1mdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmFzc2lnbi5hcHBseShPYmplY3Qscyhbe2NoYW5uZWxJZDp0aGlzLmlkfV0sZSwhMSkpfSxlLnByb3RvdHlwZS5pbnZva2U9ZnVuY3Rpb24oZSxuLHMpe3JldHVybiByKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgcixpLGEsdSxjLGQ9dGhpcztyZXR1cm4gbyh0aGlzLChmdW5jdGlvbihvKXtzd2l0Y2goby5sYWJlbCl7Y2FzZSAwOnJldHVybiByPXtuYW1lOmUsYXJnczpufSxpPVwibnVtYmVyXCI9PXR5cGVvZihudWxsPT1zP3ZvaWQgMDpzLnRpbWVvdXQpJiYobnVsbD09cz92b2lkIDA6cy50aW1lb3V0KT4wP251bGw9PXM/dm9pZCAwOnMudGltZW91dDp0LklOVk9LRV9ERUZBVVRMX1RJTUVPVVQsYT0oMCx2LnV1aWQpKCksdT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24odCxyKXtkLmVtaXR0ZXIub25jZShhLChmdW5jdGlvbihvKXtpZihvLmVycm9yIGluc3RhbmNlb2YgbC5JbnZva2VFcnJvcilyKG8uZXJyb3IpO2Vsc2UgaWYobnVsbCE9by5lcnJvcil7dmFyIHM9bmV3IGwuSW52b2tlRXJyb3IoXCJzdHJpbmdcIj09dHlwZW9mIG8uZXJyb3I/by5lcnJvcjpvLmVycm9yLm1lc3NhZ2UpO3MubWV0aG9kPWUscy5hcmd1bWVudHM9bixyKHMpfWVsc2UgdChvLmRhdGEpfSkpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZC5lbWl0dGVyLm9mZihhKSxyKG5ldyBsLk1lc3NhZ2VUaW1lb3V0RXJyb3IoXCJcIi5jb25jYXQoZSxcIiBpbnZva2UgdGltZW91dFwiKSkpfSksaSl9KSksWzQsdGhpcy5wb3N0TWVzc2FnZShyLE9iamVjdC5hc3NpZ24oe30scyx7bWVzc2FnZUlkOmEsdGltZW91dDppLHR5cGU6bS5JbnZva2VSZXF1ZXN0fSkpXTtjYXNlIDE6by5zZW50KCksby5sYWJlbD0yO2Nhc2UgMjpyZXR1cm4gby50cnlzLnB1c2goWzIsNCwsNV0pLFs0LHVdO2Nhc2UgMzpyZXR1cm5bMixvLnNlbnQoKV07Y2FzZSA0OnRocm93IGM9by5zZW50KCksdGhpcy5sb2coXCJpbnZva2UgZXJyb3JcIix7aWQ6YSxuYW1lOmUsYXJnczpuLHBheWxvYWQ6cixlcnJvcjpjfSksYztjYXNlIDU6cmV0dXJuWzJdfX0pKX0pKX0sZS5wcm90b3R5cGUuYWRkSW52b2tlSGFuZGxlcj1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5pbnZva2VIYW5kbGVycy5nZXQoZSk7QXJyYXkuaXNBcnJheShyKXx8KHI9W10pLHIucHVzaCh7aGFuZGxlcjp0LGNvbnRleHQ6bn0pLHRoaXMuaW52b2tlSGFuZGxlcnMuc2V0KGUscil9LGUucHJvdG90eXBlLnJlbW92ZUludm9rZUhhbmRsZXI9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuaW52b2tlSGFuZGxlcnMuZ2V0KGUpO0FycmF5LmlzQXJyYXkocikmJnRoaXMuaW52b2tlSGFuZGxlcnMuc2V0KGUsci5maWx0ZXIoKGZ1bmN0aW9uKGUpe3ZhciByO3JldHVybiBlLmhhbmRsZXIhPT10fHwobnVsbD09PShyPWUuY29udGV4dCl8fHZvaWQgMD09PXI/dm9pZCAwOnIuYXVkaWVuY2UpIT09KG51bGw9PW4/dm9pZCAwOm4uYXVkaWVuY2UpfSkpKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiZGVidWdcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGguZGVmYXVsdC5lbmFibGVkKHRoaXMuX2RlYnVnTmFtZXNwYWNlKX0sc2V0OmZ1bmN0aW9uKGUpe2guZGVmYXVsdC5lbmFibGUoZT90aGlzLl9kZWJ1Z05hbWVzcGFjZTpcIi1cIi5jb25jYXQodGhpcy5fZGVidWdOYW1lc3BhY2UpKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJkZWJ1Z05hbWVzcGFjZVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVidWdOYW1lc3BhY2V9LHNldDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmRlYnVnO2guZGVmYXVsdC5lbmFibGUoXCItXCIuY29uY2F0KHRoaXMuX2RlYnVnTmFtZXNwYWNlKSksdGhpcy5sb2c9KDAsaC5kZWZhdWx0KShlKSx0aGlzLl9kZWJ1Z05hbWVzcGFjZT1lLHQmJmguZGVmYXVsdC5lbmFibGUoZSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZX0oKTtmdW5jdGlvbiB5KGUsdCl7dmFyIG49bnVsbD09ZT92b2lkIDA6ZS5hdWRpZW5jZSxyPW51bGw9PXQ/dm9pZCAwOnQuYXVkaWVuY2U7cmV0dXJuIG49PT1yfHxcIipcIj09PW58fFwiKlwiPT09cn10LmRlZmF1bHQ9ZyxmdW5jdGlvbihlKXtlW2UuSW52b2tlUmVxdWVzdD0wXT1cIkludm9rZVJlcXVlc3RcIixlW2UuSW52b2tlUmVzcG9uc2U9MV09XCJJbnZva2VSZXNwb25zZVwifShtPXQuQ29udGV4dFR5cGV8fCh0LkNvbnRleHRUeXBlPXt9KSl9LDg2OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnN0cnVjdHVyZWRDbG9uZT12b2lkIDA7dmFyIG89cihuKDY3NSkpLHM9big5MjgpO2Z1bmN0aW9uIGkoZSx0KXt0cnl7cmV0dXJuIGUgaW5zdGFuY2VvZiB0fWNhdGNoKGUpe3JldHVybiExfX10LnN0cnVjdHVyZWRDbG9uZT1mdW5jdGlvbiBlKHQsbil7aWYodm9pZCAwPT09biYmKG49e30pLFwic3RyaW5nXCI9PXR5cGVvZiB0fHxcIm51bWJlclwiPT10eXBlb2YgdHx8XCJib29sZWFuXCI9PXR5cGVvZiB0fHxudWxsPT10fHx0IGluc3RhbmNlb2YgRGF0ZXx8dCBpbnN0YW5jZW9mIFJlZ0V4cHx8dCBpbnN0YW5jZW9mIEJvb2xlYW58fHQgaW5zdGFuY2VvZiBTdHJpbmd8fHQgaW5zdGFuY2VvZiBzLk9mZmljZVNES01lc3NhZ2VFdmVudClyZXR1cm4gdDt0cnl7Zm9yKHZhciByPTAsYT1bd2luZG93LkFycmF5QnVmZmVyLHdpbmRvdy5NYXAsd2luZG93LlNldCx3aW5kb3cuRGF0YVZpZXcsd2luZG93LkZpbGUsd2luZG93LkZpbGVMaXN0LHdpbmRvdy5CbG9iLHdpbmRvdy5JbWFnZUJpdG1hcCx3aW5kb3cuSW1hZ2VEYXRhXTtyPGEubGVuZ3RoO3IrKylpZihpKHQsYVtyXSkpcmV0dXJuIHR9Y2F0Y2goZSl7fWlmKCgwLG8uZGVmYXVsdCkodCkpe3ZhciB1PXQsYz17fTtmb3IodmFyIGwgaW4gdSkhMD09PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh1LGwpJiYoY1tsXT1lKHVbbF0sbikpO3JldHVybiBjfWlmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZSh0LG4pfSkpO2lmKHQgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gdC5tZXNzYWdlO3RyeXtpZih0IGluc3RhbmNlb2YgT2JqZWN0LmdldFByb3RvdHlwZU9mKFVpbnQ4QXJyYXkpKXJldHVybiB0fWNhdGNoKGUpe31pZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBuLnJlcGxhY2VyKXt2YXIgZD1PYmplY3QuYXNzaWduKHt9LG4pO3JldHVybiBkLnJlcGxhY2VyPXZvaWQgMCxlKG4ucmVwbGFjZXIodCksZCl9dGhyb3cgbmV3IEVycm9yKFwiXCIuY29uY2F0KFN0cmluZyh0KSxcIiBjb3VsZCBub3QgYmUgY2xvbmVkXCIpKX19LDEzMTooZSx0KT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQudXVpZD12b2lkIDAsdC51dWlkPWZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQ9W10sbj0obnVsbCE9PShlPXdpbmRvdy5jcnlwdG8pJiZ2b2lkIDAhPT1lP2U6d2luZG93Lm1zQ3J5cHRvKS5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMjApKSxyPTA7cjxuLmxlbmd0aDtyKyspdC5wdXNoKG5bcl0udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsXCIwXCIpKTtmb3IodmFyIG89MCxzPVs0LDcsMTAsMTNdO288cy5sZW5ndGg7bysrKXRbc1tvXV09XCItXCI7cmV0dXJuIHQuam9pbihcIlwiKX19LDQ5OTooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5yKHQpLG4uZCh0LHthZGQ6KCk9PmQsZ2V0U2l6ZTooKT0+cCxyZW1vdmVBbGw6KCk9PmgscnVuQWxsOigpPT5mfSk7dmFyIHI9big2NDMpLG89bi5uKHIpO2NvbnN0IHM9e2FkZDpmdW5jdGlvbihlKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZSYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlKTtlbHNle2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKXJldHVybjt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImJlZm9yZXVubG9hZFwiLChmdW5jdGlvbigpe2UoKX0pLCEwKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInVubG9hZFwiLChmdW5jdGlvbigpe2UoKX0pLCEwKX19fTt2YXIgaT1uKDE5OSksYT1uLm4oaSksdT1vKCk/YSgpOnMsYz1uZXcgU2V0LGw9ITE7ZnVuY3Rpb24gZChlKXtpZihsfHwobD0hMCx1LmFkZChmKSksXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoXCJMaXN0ZW5lciBpcyBubyBmdW5jdGlvblwiKTtyZXR1cm4gYy5hZGQoZSkse3JlbW92ZTpmdW5jdGlvbigpe3JldHVybiBjLmRlbGV0ZShlKX0scnVuOmZ1bmN0aW9uKCl7cmV0dXJuIGMuZGVsZXRlKGUpLGUoKX19fWZ1bmN0aW9uIGYoKXt2YXIgZT1bXTtyZXR1cm4gYy5mb3JFYWNoKChmdW5jdGlvbih0KXtlLnB1c2godCgpKSxjLmRlbGV0ZSh0KX0pKSxQcm9taXNlLmFsbChlKX1mdW5jdGlvbiBoKCl7Yy5jbGVhcigpfWZ1bmN0aW9uIHAoKXtyZXR1cm4gYy5zaXplfX0sMTk5OigpPT57fSw2NzU6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSl7aWYoXCJbb2JqZWN0IE9iamVjdF1cIiE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSlyZXR1cm4hMTtjb25zdCB0PU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtyZXR1cm4gbnVsbD09PXR8fHQ9PT1PYmplY3QucHJvdG90eXBlfW4ucih0KSxuLmQodCx7ZGVmYXVsdDooKT0+cn0pfX0sdD17fTtmdW5jdGlvbiBuKHIpe3ZhciBvPXRbcl07aWYodm9pZCAwIT09bylyZXR1cm4gby5leHBvcnRzO3ZhciBzPXRbcl09e2V4cG9ydHM6e319O3JldHVybiBlW3JdLmNhbGwocy5leHBvcnRzLHMscy5leHBvcnRzLG4pLHMuZXhwb3J0c31yZXR1cm4gbi5uPWU9Pnt2YXIgdD1lJiZlLl9fZXNNb2R1bGU/KCk9PmUuZGVmYXVsdDooKT0+ZTtyZXR1cm4gbi5kKHQse2E6dH0pLHR9LG4uZD0oZSx0KT0+e2Zvcih2YXIgciBpbiB0KW4ubyh0LHIpJiYhbi5vKGUscikmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0sbi5vPShlLHQpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSxuLnI9ZT0+e1widW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZTpcIk1vZHVsZVwifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9LG4oNjA3KX0pKCkpKTsiLCIvLyBzaGltIGZvciB1c2luZyBwcm9jZXNzIGluIGJyb3dzZXJcbnZhciBwcm9jZXNzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcblxuLy8gY2FjaGVkIGZyb20gd2hhdGV2ZXIgZ2xvYmFsIGlzIHByZXNlbnQgc28gdGhhdCB0ZXN0IHJ1bm5lcnMgdGhhdCBzdHViIGl0XG4vLyBkb24ndCBicmVhayB0aGluZ3MuICBCdXQgd2UgbmVlZCB0byB3cmFwIGl0IGluIGEgdHJ5IGNhdGNoIGluIGNhc2UgaXQgaXNcbi8vIHdyYXBwZWQgaW4gc3RyaWN0IG1vZGUgY29kZSB3aGljaCBkb2Vzbid0IGRlZmluZSBhbnkgZ2xvYmFscy4gIEl0J3MgaW5zaWRlIGFcbi8vIGZ1bmN0aW9uIGJlY2F1c2UgdHJ5L2NhdGNoZXMgZGVvcHRpbWl6ZSBpbiBjZXJ0YWluIGVuZ2luZXMuXG5cbnZhciBjYWNoZWRTZXRUaW1lb3V0O1xudmFyIGNhY2hlZENsZWFyVGltZW91dDtcblxuZnVuY3Rpb24gZGVmYXVsdFNldFRpbW91dCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbmZ1bmN0aW9uIGRlZmF1bHRDbGVhclRpbWVvdXQgKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG4oZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2V0VGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2YgY2xlYXJUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuICAgIH1cbn0gKCkpXG5mdW5jdGlvbiBydW5UaW1lb3V0KGZ1bikge1xuICAgIGlmIChjYWNoZWRTZXRUaW1lb3V0ID09PSBzZXRUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICAvLyBpZiBzZXRUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkU2V0VGltZW91dCA9PT0gZGVmYXVsdFNldFRpbW91dCB8fCAhY2FjaGVkU2V0VGltZW91dCkgJiYgc2V0VGltZW91dCkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dChmdW4sIDApO1xuICAgIH0gY2F0Y2goZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwobnVsbCwgZnVuLCAwKTtcbiAgICAgICAgfSBjYXRjaChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yXG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKHRoaXMsIGZ1biwgMCk7XG4gICAgICAgIH1cbiAgICB9XG5cblxufVxuZnVuY3Rpb24gcnVuQ2xlYXJUaW1lb3V0KG1hcmtlcikge1xuICAgIGlmIChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGNsZWFyVGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICAvLyBpZiBjbGVhclRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGRlZmF1bHRDbGVhclRpbWVvdXQgfHwgIWNhY2hlZENsZWFyVGltZW91dCkgJiYgY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCAgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbChudWxsLCBtYXJrZXIpO1xuICAgICAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yLlxuICAgICAgICAgICAgLy8gU29tZSB2ZXJzaW9ucyBvZiBJLkUuIGhhdmUgZGlmZmVyZW50IHJ1bGVzIGZvciBjbGVhclRpbWVvdXQgdnMgc2V0VGltZW91dFxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKHRoaXMsIG1hcmtlcik7XG4gICAgICAgIH1cbiAgICB9XG5cblxuXG59XG52YXIgcXVldWUgPSBbXTtcbnZhciBkcmFpbmluZyA9IGZhbHNlO1xudmFyIGN1cnJlbnRRdWV1ZTtcbnZhciBxdWV1ZUluZGV4ID0gLTE7XG5cbmZ1bmN0aW9uIGNsZWFuVXBOZXh0VGljaygpIHtcbiAgICBpZiAoIWRyYWluaW5nIHx8ICFjdXJyZW50UXVldWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIGlmIChjdXJyZW50UXVldWUubGVuZ3RoKSB7XG4gICAgICAgIHF1ZXVlID0gY3VycmVudFF1ZXVlLmNvbmNhdChxdWV1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgIH1cbiAgICBpZiAocXVldWUubGVuZ3RoKSB7XG4gICAgICAgIGRyYWluUXVldWUoKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRyYWluUXVldWUoKSB7XG4gICAgaWYgKGRyYWluaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHRpbWVvdXQgPSBydW5UaW1lb3V0KGNsZWFuVXBOZXh0VGljayk7XG4gICAgZHJhaW5pbmcgPSB0cnVlO1xuXG4gICAgdmFyIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB3aGlsZShsZW4pIHtcbiAgICAgICAgY3VycmVudFF1ZXVlID0gcXVldWU7XG4gICAgICAgIHF1ZXVlID0gW107XG4gICAgICAgIHdoaWxlICgrK3F1ZXVlSW5kZXggPCBsZW4pIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UXVldWUpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50UXVldWVbcXVldWVJbmRleF0ucnVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgICAgICBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgfVxuICAgIGN1cnJlbnRRdWV1ZSA9IG51bGw7XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBydW5DbGVhclRpbWVvdXQodGltZW91dCk7XG59XG5cbnByb2Nlc3MubmV4dFRpY2sgPSBmdW5jdGlvbiAoZnVuKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCAtIDEpO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcXVldWUucHVzaChuZXcgSXRlbShmdW4sIGFyZ3MpKTtcbiAgICBpZiAocXVldWUubGVuZ3RoID09PSAxICYmICFkcmFpbmluZykge1xuICAgICAgICBydW5UaW1lb3V0KGRyYWluUXVldWUpO1xuICAgIH1cbn07XG5cbi8vIHY4IGxpa2VzIHByZWRpY3RpYmxlIG9iamVjdHNcbmZ1bmN0aW9uIEl0ZW0oZnVuLCBhcnJheSkge1xuICAgIHRoaXMuZnVuID0gZnVuO1xuICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcbn1cbkl0ZW0ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZ1bi5hcHBseShudWxsLCB0aGlzLmFycmF5KTtcbn07XG5wcm9jZXNzLnRpdGxlID0gJ2Jyb3dzZXInO1xucHJvY2Vzcy5icm93c2VyID0gdHJ1ZTtcbnByb2Nlc3MuZW52ID0ge307XG5wcm9jZXNzLmFyZ3YgPSBbXTtcbnByb2Nlc3MudmVyc2lvbiA9ICcnOyAvLyBlbXB0eSBzdHJpbmcgdG8gYXZvaWQgcmVnZXhwIGlzc3Vlc1xucHJvY2Vzcy52ZXJzaW9ucyA9IHt9O1xuXG5mdW5jdGlvbiBub29wKCkge31cblxucHJvY2Vzcy5vbiA9IG5vb3A7XG5wcm9jZXNzLmFkZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3Mub25jZSA9IG5vb3A7XG5wcm9jZXNzLm9mZiA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUxpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzID0gbm9vcDtcbnByb2Nlc3MuZW1pdCA9IG5vb3A7XG5wcm9jZXNzLnByZXBlbmRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnByZXBlbmRPbmNlTGlzdGVuZXIgPSBub29wO1xuXG5wcm9jZXNzLmxpc3RlbmVycyA9IGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiBbXSB9XG5cbnByb2Nlc3MuYmluZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcblxucHJvY2Vzcy5jd2QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnLycgfTtcbnByb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5wcm9jZXNzLnVtYXNrID0gZnVuY3Rpb24oKSB7IHJldHVybiAwOyB9O1xuIiwiLypcbiAqIENvcHlyaWdodCAyMDE4IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3RcbiAqIHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mXG4gKiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVRcbiAqIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZVxuICogTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXJcbiAqIHRoZSBMaWNlbnNlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuKGZ1bmN0aW9uKHNjb3BlKSB7XG4gIGlmIChzY29wZVsnUHJveHknXSkge1xuICAgIHJldHVybjtcbiAgfVxuICBzY29wZS5Qcm94eSA9IHJlcXVpcmUoJy4vcHJveHkuanMnKSgpO1xuICBzY29wZS5Qcm94eVsncmV2b2NhYmxlJ10gPSBzY29wZS5Qcm94eS5yZXZvY2FibGU7XG59KShcbiAgKCd1bmRlZmluZWQnICE9PSB0eXBlb2YgcHJvY2VzcyAmJlxuICAgICdbb2JqZWN0IHByb2Nlc3NdJyA9PT0ge30udG9TdHJpbmcuY2FsbChwcm9jZXNzKSkgfHxcbiAgKCd1bmRlZmluZWQnICE9PSB0eXBlb2YgbmF2aWdhdG9yICYmIG5hdmlnYXRvci5wcm9kdWN0ID09PSAnUmVhY3ROYXRpdmUnKVxuICAgID8gZ2xvYmFsXG4gICAgOiBzZWxmXG4pO1xuXG4iLCIvKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdFxuICogdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2ZcbiAqIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVFxuICogV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlXG4gKiBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlclxuICogdGhlIExpY2Vuc2UuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwcm94eVBvbHlmaWxsKCkge1xuICBsZXQgbGFzdFJldm9rZUZuID0gbnVsbDtcbiAgbGV0IFByb3h5UG9seWZpbGw7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Kn0gb1xuICAgKiBAcmV0dXJuIHtib29sZWFufSB3aGV0aGVyIHRoaXMgaXMgcHJvYmFibHkgYSAobm9uLW51bGwpIE9iamVjdFxuICAgKi9cbiAgZnVuY3Rpb24gaXNPYmplY3Qobykge1xuICAgIHJldHVybiBvID8gKHR5cGVvZiBvID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgbyA9PT0gJ2Z1bmN0aW9uJykgOiBmYWxzZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHZhbGlkYXRlUHJvdG8ocHJvdG8pIHtcbiAgICBpZiAocHJvdG8gIT09IG51bGwgJiYgIWlzT2JqZWN0KHByb3RvKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignT2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBiZSBhbiBPYmplY3Qgb3IgbnVsbDogJyArIHByb3RvKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCAkT2JqZWN0ID0gT2JqZWN0O1xuXG4gIC8vIENsb3N1cmUgYXNzdW1lcyB0aGF0IGB7X19wcm90b19fOiBudWxsfSBpbnN0YW5jZW9mIE9iamVjdGAgaXMgYWx3YXlzIHRydWUsIGhlbmNlIHdoeSB3ZSBjaGVjayBhZ2FpbnN0IGEgZGlmZmVyZW50IG5hbWUuXG4gIGNvbnN0IGNhbkNyZWF0ZU51bGxQcm90b09iamVjdHMgPSBCb29sZWFuKCRPYmplY3QuY3JlYXRlKSB8fCAhKHsgX19wcm90b19fOiBudWxsIH0gaW5zdGFuY2VvZiAkT2JqZWN0KTtcbiAgY29uc3Qgb2JqZWN0Q3JlYXRlID1cbiAgICAkT2JqZWN0LmNyZWF0ZSB8fFxuICAgIChjYW5DcmVhdGVOdWxsUHJvdG9PYmplY3RzXG4gICAgICA/IGZ1bmN0aW9uIGNyZWF0ZShwcm90bykge1xuICAgICAgICAgIHZhbGlkYXRlUHJvdG8ocHJvdG8pO1xuICAgICAgICAgIHJldHVybiB7IF9fcHJvdG9fXzogcHJvdG8gfTtcbiAgICAgICAgfVxuICAgICAgOiBmdW5jdGlvbiBjcmVhdGUocHJvdG8pIHtcbiAgICAgICAgICB2YWxpZGF0ZVByb3RvKHByb3RvKTtcbiAgICAgICAgICBpZiAocHJvdG8gPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcignTmF0aXZlIE9iamVjdC5jcmVhdGUgaXMgcmVxdWlyZWQgdG8gY3JlYXRlIG9iamVjdHMgd2l0aCBudWxsIHByb3RvdHlwZScpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIG5iLiBjYXN0IHRvIGNvbnZpbmNlIENsb3N1cmUgY29tcGlsZXIgdGhhdCB0aGlzIGlzIGEgY29uc3RydWN0b3JcbiAgICAgICAgICB2YXIgVCA9IC8qKiBAdHlwZSB7IUZ1bmN0aW9ufSAqLyAoZnVuY3Rpb24gVCgpIHt9KTtcbiAgICAgICAgICBULnByb3RvdHlwZSA9IHByb3RvO1xuICAgICAgICAgIHJldHVybiBuZXcgVCgpO1xuICAgICAgICB9KTtcblxuICBjb25zdCBub29wID0gZnVuY3Rpb24oKSB7IHJldHVybiBudWxsOyB9O1xuXG4gIGNvbnN0IGdldFByb3RvID1cbiAgICAkT2JqZWN0LmdldFByb3RvdHlwZU9mIHx8XG4gICAgKFtdLl9fcHJvdG9fXyA9PT0gQXJyYXkucHJvdG90eXBlXG4gICAgICA/IGZ1bmN0aW9uIGdldFByb3RvdHlwZU9mKE8pIHtcbiAgICAgICAgICAvLyBJZiBPLltbUHJvdG90eXBlXV0gPT09IG51bGwsIHRoZW4gdGhlIF9fcHJvdG9fXyBhY2Nlc3NvciB3b24ndCBleGlzdCxcbiAgICAgICAgICAvLyBhcyBpdCdzIGluaGVyaXRlZCBmcm9tIGBPYmplY3QucHJvdG90eXBlYFxuICAgICAgICAgIGNvbnN0IHByb3RvID0gTy5fX3Byb3RvX187XG4gICAgICAgICAgcmV0dXJuIGlzT2JqZWN0KHByb3RvKSA/IHByb3RvIDogbnVsbDtcbiAgICAgICAgfVxuICAgICAgOiBub29wKTtcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7IU9iamVjdH0gdGFyZ2V0XG4gICAqIEBwYXJhbSB7e2FwcGx5LCBjb25zdHJ1Y3QsIGdldCwgc2V0fX0gaGFuZGxlclxuICAgKi9cbiAgUHJveHlQb2x5ZmlsbCA9IGZ1bmN0aW9uKHRhcmdldCwgaGFuZGxlcikge1xuICAgIGNvbnN0IG5ld1RhcmdldCA9IHRoaXMgJiYgdGhpcyBpbnN0YW5jZW9mIFByb3h5UG9seWZpbGwgPyB0aGlzLmNvbnN0cnVjdG9yIDogdW5kZWZpbmVkO1xuICAgIGlmIChuZXdUYXJnZXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNvbnN0cnVjdG9yIFByb3h5IHJlcXVpcmVzICduZXcnXCIpO1xuICAgIH1cblxuICAgIGlmICghaXNPYmplY3QodGFyZ2V0KSB8fCAhaXNPYmplY3QoaGFuZGxlcikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjcmVhdGUgcHJveHkgd2l0aCBhIG5vbi1vYmplY3QgYXMgdGFyZ2V0IG9yIGhhbmRsZXInKTtcbiAgICB9XG5cbiAgICAvLyBDb25zdHJ1Y3QgcmV2b2tlIGZ1bmN0aW9uLCBhbmQgc2V0IGxhc3RSZXZva2VGbiBzbyB0aGF0IFByb3h5LnJldm9jYWJsZSBjYW4gc3RlYWwgaXQuXG4gICAgLy8gVGhlIGNhbGxlciBtaWdodCBnZXQgdGhlIHdyb25nIHJldm9rZSBmdW5jdGlvbiBpZiBhIHVzZXIgcmVwbGFjZXMgb3Igd3JhcHMgc2NvcGUuUHJveHlcbiAgICAvLyB0byBjYWxsIGl0c2VsZiwgYnV0IHRoYXQgc2VlbXMgdW5saWtlbHkgZXNwZWNpYWxseSB3aGVuIHVzaW5nIHRoZSBwb2x5ZmlsbC5cbiAgICBsZXQgdGhyb3dSZXZva2VkID0gZnVuY3Rpb24oKSB7fTtcbiAgICBsYXN0UmV2b2tlRm4gPSBmdW5jdGlvbigpIHtcbiAgICAgIC8qKiBAc3VwcHJlc3Mge2NoZWNrVHlwZXN9ICovXG4gICAgICB0YXJnZXQgPSBudWxsOyAgLy8gY2xlYXIgcmVmXG4gICAgICB0aHJvd1Jldm9rZWQgPSBmdW5jdGlvbih0cmFwKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCBwZXJmb3JtICcke3RyYXB9JyBvbiBhIHByb3h5IHRoYXQgaGFzIGJlZW4gcmV2b2tlZGApO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICBsYXN0UmV2b2tlRm4gPSBudWxsO1xuICAgIH0sIDApO1xuXG4gICAgLy8gRmFpbCBvbiB1bnN1cHBvcnRlZCB0cmFwczogQ2hyb21lIGRvZXNuJ3QgZG8gdGhpcywgYnV0IGVuc3VyZSB0aGF0IHVzZXJzIG9mIHRoZSBwb2x5ZmlsbFxuICAgIC8vIGFyZSBhIGJpdCBtb3JlIGNhcmVmdWwuIENvcHkgdGhlIGludGVybmFsIHBhcnRzIG9mIGhhbmRsZXIgdG8gcHJldmVudCB1c2VyIGNoYW5nZXMuXG4gICAgY29uc3QgdW5zYWZlSGFuZGxlciA9IGhhbmRsZXI7XG4gICAgaGFuZGxlciA9IHsgJ2dldCc6IG51bGwsICdzZXQnOiBudWxsLCAnYXBwbHknOiBudWxsLCAnY29uc3RydWN0JzogbnVsbCB9O1xuICAgIGZvciAobGV0IGsgaW4gdW5zYWZlSGFuZGxlcikge1xuICAgICAgaWYgKCEoayBpbiBoYW5kbGVyKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBQcm94eSBwb2x5ZmlsbCBkb2VzIG5vdCBzdXBwb3J0IHRyYXAgJyR7a30nYCk7XG4gICAgICB9XG4gICAgICBoYW5kbGVyW2tdID0gdW5zYWZlSGFuZGxlcltrXTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB1bnNhZmVIYW5kbGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyBBbGxvdyBoYW5kbGVyIHRvIGJlIGEgZnVuY3Rpb24gKHdoaWNoIGhhcyBhbiAnYXBwbHknIG1ldGhvZCkuIFRoaXMgbWF0Y2hlcyB3aGF0IGlzXG4gICAgICAvLyBwcm9iYWJseSBhIGJ1ZyBpbiBuYXRpdmUgdmVyc2lvbnMuIEl0IHRyZWF0cyB0aGUgYXBwbHkgY2FsbCBhcyBhIHRyYXAgdG8gYmUgY29uZmlndXJlZC5cbiAgICAgIGhhbmRsZXIuYXBwbHkgPSB1bnNhZmVIYW5kbGVyLmFwcGx5LmJpbmQodW5zYWZlSGFuZGxlcik7XG4gICAgfVxuXG4gICAgLy8gRGVmaW5lIHByb3h5IGFzIGFuIG9iamVjdCB0aGF0IGV4dGVuZHMgdGFyZ2V0LltbUHJvdG90eXBlXV0sXG4gICAgLy8gb3IgYSBGdW5jdGlvbiAoaWYgZWl0aGVyIGl0J3MgY2FsbGFibGUsIG9yIGFwcGx5IGlzIHNldCkuXG4gICAgY29uc3QgcHJvdG8gPSBnZXRQcm90byh0YXJnZXQpOyAgLy8gY2FuIHJldHVybiBudWxsIGluIG9sZCBicm93c2Vyc1xuICAgIGxldCBwcm94eTtcbiAgICBsZXQgaXNNZXRob2QgPSBmYWxzZTtcbiAgICBsZXQgaXNBcnJheSA9IGZhbHNlO1xuICAgIGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwcm94eSA9IGZ1bmN0aW9uIFByb3h5UG9seWZpbGwoKSB7XG4gICAgICAgIGNvbnN0IHVzaW5nTmV3ID0gKHRoaXMgJiYgdGhpcy5jb25zdHJ1Y3RvciA9PT0gcHJveHkpO1xuICAgICAgICBjb25zdCBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgICAgICAgdGhyb3dSZXZva2VkKHVzaW5nTmV3ID8gJ2NvbnN0cnVjdCcgOiAnYXBwbHknKTtcblxuICAgICAgICAvLyBUT0RPKHNhbXRob3IpOiBDbG9zdXJlIGNvbXBpbGVyIGRvZXNuJ3Qga25vdyBhYm91dCAnY29uc3RydWN0JywgYXR0ZW1wdHMgdG8gcmVuYW1lIGl0LlxuICAgICAgICBpZiAodXNpbmdOZXcgJiYgaGFuZGxlclsnY29uc3RydWN0J10pIHtcbiAgICAgICAgICByZXR1cm4gaGFuZGxlclsnY29uc3RydWN0J10uY2FsbCh0aGlzLCB0YXJnZXQsIGFyZ3MpO1xuICAgICAgICB9IGVsc2UgaWYgKCF1c2luZ05ldyAmJiBoYW5kbGVyLmFwcGx5KSB7XG4gICAgICAgICAgcmV0dXJuIGhhbmRsZXJbJ2FwcGx5J10odGFyZ2V0LCB0aGlzLCBhcmdzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHNpbmNlIHRoZSB0YXJnZXQgd2FzIGEgZnVuY3Rpb24sIGZhbGxiYWNrIHRvIGNhbGxpbmcgaXQgZGlyZWN0bHkuXG4gICAgICAgIGlmICh1c2luZ05ldykge1xuICAgICAgICAgIC8vIGluc3BpcmVkIGJ5IGFuc3dlcnMgdG8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xLzE2MDY3OTdcbiAgICAgICAgICBhcmdzLnVuc2hpZnQodGFyZ2V0KTsgIC8vIHBhc3MgY2xhc3MgYXMgZmlyc3QgYXJnIHRvIGNvbnN0cnVjdG9yLCBhbHRob3VnaCBpcnJlbGV2YW50XG4gICAgICAgICAgLy8gbmIuIGNhc3QgdG8gY29udmluY2UgQ2xvc3VyZSBjb21waWxlciB0aGF0IHRoaXMgaXMgYSBjb25zdHJ1Y3RvclxuICAgICAgICAgIGNvbnN0IGYgPSAvKiogQHR5cGUgeyFGdW5jdGlvbn0gKi8gKHRhcmdldC5iaW5kLmFwcGx5KHRhcmdldCwgYXJncykpO1xuICAgICAgICAgIHJldHVybiBuZXcgZigpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YXJnZXQuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9O1xuICAgICAgaXNNZXRob2QgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodGFyZ2V0IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHByb3h5ID0gW107XG4gICAgICBpc0FycmF5ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJveHkgPSAoY2FuQ3JlYXRlTnVsbFByb3RvT2JqZWN0cyB8fCBwcm90byAhPT0gbnVsbCkgPyBvYmplY3RDcmVhdGUocHJvdG8pIDoge307XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIGRlZmF1bHQgZ2V0dGVycy9zZXR0ZXJzLiBDcmVhdGUgZGlmZmVyZW50IGNvZGUgcGF0aHMgYXMgaGFuZGxlci5nZXQvaGFuZGxlci5zZXQgY2FuJ3RcbiAgICAvLyBjaGFuZ2UgYWZ0ZXIgY3JlYXRpb24uXG4gICAgY29uc3QgZ2V0dGVyID0gaGFuZGxlci5nZXQgPyBmdW5jdGlvbihwcm9wKSB7XG4gICAgICB0aHJvd1Jldm9rZWQoJ2dldCcpO1xuICAgICAgcmV0dXJuIGhhbmRsZXIuZ2V0KHRoaXMsIHByb3AsIHByb3h5KTtcbiAgICB9IDogZnVuY3Rpb24ocHJvcCkge1xuICAgICAgdGhyb3dSZXZva2VkKCdnZXQnKTtcbiAgICAgIHJldHVybiB0aGlzW3Byb3BdO1xuICAgIH07XG4gICAgY29uc3Qgc2V0dGVyID0gaGFuZGxlci5zZXQgPyBmdW5jdGlvbihwcm9wLCB2YWx1ZSkge1xuICAgICAgdGhyb3dSZXZva2VkKCdzZXQnKTtcbiAgICAgIGNvbnN0IHN0YXR1cyA9IGhhbmRsZXIuc2V0KHRoaXMsIHByb3AsIHZhbHVlLCBwcm94eSk7XG4gICAgICAvLyBUT0RPKHNhbXRob3IpOiBJZiB0aGUgY2FsbGluZyBjb2RlIGlzIGluIHN0cmljdCBtb2RlLCB0aHJvdyBUeXBlRXJyb3IuXG4gICAgICAvLyBpZiAoIXN0YXR1cykge1xuICAgICAgICAvLyBJdCdzIChzb21ldGltZXMpIHBvc3NpYmxlIHRvIHdvcmsgdGhpcyBvdXQsIGlmIHRoaXMgY29kZSBpc24ndCBzdHJpY3QtIHRyeSB0byBsb2FkIHRoZVxuICAgICAgICAvLyBjYWxsZWUsIGFuZCBpZiBpdCdzIGF2YWlsYWJsZSwgdGhhdCBjb2RlIGlzIG5vbi1zdHJpY3QuIEhvd2V2ZXIsIHRoaXMgaXNuJ3QgZXhoYXVzdGl2ZS5cbiAgICAgIC8vIH1cbiAgICB9IDogZnVuY3Rpb24ocHJvcCwgdmFsdWUpIHtcbiAgICAgIHRocm93UmV2b2tlZCgnc2V0Jyk7XG4gICAgICB0aGlzW3Byb3BdID0gdmFsdWU7XG4gICAgfTtcblxuICAgIC8vIENsb25lIGRpcmVjdCBwcm9wZXJ0aWVzIChpLmUuLCBub3QgcGFydCBvZiBhIHByb3RvdHlwZSkuXG4gICAgY29uc3QgcHJvcGVydHlOYW1lcyA9ICRPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0YXJnZXQpO1xuICAgIGNvbnN0IHByb3BlcnR5TWFwID0ge307XG4gICAgcHJvcGVydHlOYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKHByb3ApIHtcbiAgICAgIGlmICgoaXNNZXRob2QgfHwgaXNBcnJheSkgJiYgcHJvcCBpbiBwcm94eSkge1xuICAgICAgICByZXR1cm47ICAvLyBpZ25vcmUgcHJvcGVydGllcyBhbHJlYWR5IGhlcmUsIGUuZy4gJ2JpbmQnLCAncHJvdG90eXBlJyBldGNcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlYWwgPSAkT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIHByb3ApO1xuICAgICAgY29uc3QgZGVzYyA9IHtcbiAgICAgICAgZW51bWVyYWJsZTogQm9vbGVhbihyZWFsLmVudW1lcmFibGUpLFxuICAgICAgICBnZXQ6IGdldHRlci5iaW5kKHRhcmdldCwgcHJvcCksXG4gICAgICAgIHNldDogc2V0dGVyLmJpbmQodGFyZ2V0LCBwcm9wKSxcbiAgICAgIH07XG4gICAgICAkT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3h5LCBwcm9wLCBkZXNjKTtcbiAgICAgIHByb3BlcnR5TWFwW3Byb3BdID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIC8vIFNldCB0aGUgcHJvdG90eXBlLCBvciBjbG9uZSBhbGwgcHJvdG90eXBlIG1ldGhvZHMgKGFsd2F5cyByZXF1aXJlZCBpZiBhIGdldHRlciBpcyBwcm92aWRlZCkuXG4gICAgLy8gVE9ETyhzYW10aG9yKTogV2UgZG9uJ3QgYWxsb3cgcHJvdG90eXBlIG1ldGhvZHMgdG8gYmUgc2V0LiBJdCdzIChldmVuIG1vcmUpIGF3a3dhcmQuXG4gICAgLy8gQW4gYWx0ZXJuYXRpdmUgaGVyZSB3b3VsZCBiZSB0byBfanVzdF8gY2xvbmUgbWV0aG9kcyB0byBrZWVwIGJlaGF2aW9yIGNvbnNpc3RlbnQuXG4gICAgbGV0IHByb3RvdHlwZU9rID0gdHJ1ZTtcbiAgICBpZiAoaXNNZXRob2QgfHwgaXNBcnJheSkge1xuICAgICAgLy8gQXJyYXlzIGFuZCBtZXRob2RzIGFyZSBzcGVjaWFsOiBhYm92ZSwgd2UgaW5zdGFudGlhdGUgYm9yaW5nIHZlcnNpb25zIG9mIHRoZXNlIHRoZW4gc3dhcFxuICAgICAgLy8gb3VyIHRoZWlyIHByb3RvdHlwZSBsYXRlci4gU28gd2Ugb25seSBuZWVkIHRvIHVzZSBzZXRQcm90b3R5cGVPZiBpbiB0aGVzZSBjYXNlcy4gU29tZSBvbGRcbiAgICAgIC8vIGVuZ2luZXMgc3VwcG9ydCBgT2JqZWN0LmdldFByb3RvdHlwZU9mYCBidXQgbm90IGBPYmplY3Quc2V0UHJvdG90eXBlT2ZgLlxuICAgICAgY29uc3Qgc2V0UHJvdG8gPVxuICAgICAgICAkT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgIChbXS5fX3Byb3RvX18gPT09IEFycmF5LnByb3RvdHlwZVxuICAgICAgICAgID8gZnVuY3Rpb24gc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pIHtcbiAgICAgICAgICAgICAgdmFsaWRhdGVQcm90byhwcm90byk7XG4gICAgICAgICAgICAgIE8uX19wcm90b19fID0gcHJvdG87XG4gICAgICAgICAgICAgIHJldHVybiBPO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIDogbm9vcCk7XG4gICAgICBpZiAoIShwcm90byAmJiBzZXRQcm90byhwcm94eSwgcHJvdG8pKSkge1xuICAgICAgICBwcm90b3R5cGVPayA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaGFuZGxlci5nZXQgfHwgIXByb3RvdHlwZU9rKSB7XG4gICAgICBmb3IgKGxldCBrIGluIHRhcmdldCkge1xuICAgICAgICBpZiAocHJvcGVydHlNYXBba10pIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAkT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3h5LCBrLCB7IGdldDogZ2V0dGVyLmJpbmQodGFyZ2V0LCBrKSB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGUgUHJveHkgcG9seWZpbGwgY2Fubm90IGhhbmRsZSBhZGRpbmcgbmV3IHByb3BlcnRpZXMuIFNlYWwgdGhlIHRhcmdldCBhbmQgcHJveHkuXG4gICAgJE9iamVjdC5zZWFsKHRhcmdldCk7XG4gICAgJE9iamVjdC5zZWFsKHByb3h5KTtcblxuICAgIHJldHVybiBwcm94eTsgIC8vIG5iLiBpZiBpc01ldGhvZCBpcyB0cnVlLCBwcm94eSAhPSB0aGlzXG4gIH07XG5cbiAgUHJveHlQb2x5ZmlsbC5yZXZvY2FibGUgPSBmdW5jdGlvbih0YXJnZXQsIGhhbmRsZXIpIHtcbiAgICBjb25zdCBwID0gbmV3IFByb3h5UG9seWZpbGwodGFyZ2V0LCBoYW5kbGVyKTtcbiAgICByZXR1cm4geyAncHJveHknOiBwLCAncmV2b2tlJzogbGFzdFJldm9rZUZuIH07XG4gIH07XG5cbiAgcmV0dXJuIFByb3h5UG9seWZpbGw7XG59XG4iLCJmdW5jdGlvbiBFICgpIHtcbiAgLy8gS2VlcCB0aGlzIGVtcHR5IHNvIGl0J3MgZWFzaWVyIHRvIGluaGVyaXQgZnJvbVxuICAvLyAodmlhIGh0dHBzOi8vZ2l0aHViLmNvbS9saXBzbWFjayBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9zY290dGNvcmdhbi90aW55LWVtaXR0ZXIvaXNzdWVzLzMpXG59XG5cbkUucHJvdG90eXBlID0ge1xuICBvbjogZnVuY3Rpb24gKG5hbWUsIGNhbGxiYWNrLCBjdHgpIHtcbiAgICB2YXIgZSA9IHRoaXMuZSB8fCAodGhpcy5lID0ge30pO1xuXG4gICAgKGVbbmFtZV0gfHwgKGVbbmFtZV0gPSBbXSkpLnB1c2goe1xuICAgICAgZm46IGNhbGxiYWNrLFxuICAgICAgY3R4OiBjdHhcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuXG4gIG9uY2U6IGZ1bmN0aW9uIChuYW1lLCBjYWxsYmFjaywgY3R4KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIGZ1bmN0aW9uIGxpc3RlbmVyICgpIHtcbiAgICAgIHNlbGYub2ZmKG5hbWUsIGxpc3RlbmVyKTtcbiAgICAgIGNhbGxiYWNrLmFwcGx5KGN0eCwgYXJndW1lbnRzKTtcbiAgICB9O1xuXG4gICAgbGlzdGVuZXIuXyA9IGNhbGxiYWNrXG4gICAgcmV0dXJuIHRoaXMub24obmFtZSwgbGlzdGVuZXIsIGN0eCk7XG4gIH0sXG5cbiAgZW1pdDogZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB2YXIgZGF0YSA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgICB2YXIgZXZ0QXJyID0gKCh0aGlzLmUgfHwgKHRoaXMuZSA9IHt9KSlbbmFtZV0gfHwgW10pLnNsaWNlKCk7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBsZW4gPSBldnRBcnIubGVuZ3RoO1xuXG4gICAgZm9yIChpOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGV2dEFycltpXS5mbi5hcHBseShldnRBcnJbaV0uY3R4LCBkYXRhKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcblxuICBvZmY6IGZ1bmN0aW9uIChuYW1lLCBjYWxsYmFjaykge1xuICAgIHZhciBlID0gdGhpcy5lIHx8ICh0aGlzLmUgPSB7fSk7XG4gICAgdmFyIGV2dHMgPSBlW25hbWVdO1xuICAgIHZhciBsaXZlRXZlbnRzID0gW107XG5cbiAgICBpZiAoZXZ0cyAmJiBjYWxsYmFjaykge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGV2dHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgaWYgKGV2dHNbaV0uZm4gIT09IGNhbGxiYWNrICYmIGV2dHNbaV0uZm4uXyAhPT0gY2FsbGJhY2spXG4gICAgICAgICAgbGl2ZUV2ZW50cy5wdXNoKGV2dHNbaV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlbW92ZSBldmVudCBmcm9tIHF1ZXVlIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtcbiAgICAvLyBTdWdnZXN0ZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL2xhemRcbiAgICAvLyBSZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9zY290dGNvcmdhbi90aW55LWVtaXR0ZXIvY29tbWl0L2M2ZWJmYWE5YmM5NzNiMzNkMTEwYTg0YTMwNzc0MmI3Y2Y5NGM5NTMjY29tbWl0Y29tbWVudC01MDI0OTEwXG5cbiAgICAobGl2ZUV2ZW50cy5sZW5ndGgpXG4gICAgICA/IGVbbmFtZV0gPSBsaXZlRXZlbnRzXG4gICAgICA6IGRlbGV0ZSBlW25hbWVdO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRTtcbm1vZHVsZS5leHBvcnRzLlRpbnlFbWl0dGVyID0gRTtcbiIsImltcG9ydCAnY29yZS1qcy9mZWF0dXJlcy9wcm9taXNlJ1xuaW1wb3J0ICdjb3JlLWpzL2ZlYXR1cmVzL3VybCdcbmltcG9ydCAnY29yZS1qcy9mZWF0dXJlcy9hcnJheS9pbmNsdWRlcydcbmltcG9ydCAnY29yZS1qcy9mZWF0dXJlcy9vYmplY3QvYXNzaWduJ1xuaW1wb3J0ICdwcm94eS1wb2x5ZmlsbCdcbmltcG9ydCB7XG4gIE9mZmljZVNES0Jyb2FkY2FzdENoYW5uZWwsXG4gIE9mZmljZVNES01lc3NhZ2VFdmVudCxcbiAgaXNPZmZpY2VTREtNZXNzYWdlRXZlbnRMaWtlLFxuICBPZmZpY2VTREtFdmVudExpa2Vcbn0gZnJvbSAnb2ZmaWNlc2RrLWJyb2FkY2FzdC1jaGFubmVsJ1xuaW1wb3J0IHsgU3RhcnRQYXJhbXMgfSBmcm9tICd3ZWJvZmZpY2Utc3RhcnRwYXJhbXMnXG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCdcbmltcG9ydCB7IFRpbnlFbWl0dGVyIH0gZnJvbSAndGlueS1lbWl0dGVyJ1xuaW1wb3J0IGdldEdsb2JhbCBmcm9tICdnbG9iYWx0aGlzL3BvbHlmaWxsJ1xuaW1wb3J0IHtcbiAgQ29udGFpbmVyTWV0aG9kLFxuICBDb250YWluZXJSZWN0LFxuICBEaXNhYmxlTWVudGlvbkNhcmRzLFxuICBGaWxlVHlwZSxcbiAgSW52b2tlTWV0aG9kLFxuICBNb3VzZU1vdmVQYXlsb2FkLFxuICBSZWFkeVN0YXRlLFxuICBQZXJmb3JtYW5jZUVudHJ5LFxuICBEZXZpY2VNb2RlLFxuICBHZW5lcmF0ZVVybEhhbmRsZXIsXG4gIEdlbmVyYXRlVXJsSW5mbyxcbiAgQVBJQWRhcHRvcixcbiAgUmVxdWVzdENvbnRleHQsXG4gIFNES0V2ZW50LFxuICBTaG93VG9hc3RPcHRpb25zLFxuICBDcmVkZW50aWFsc1xufSBmcm9tICd3ZWJvZmZpY2UtanMtc2RrLXNoYXJlZCdcbmltcG9ydCBFeHBpcmVTZXQgZnJvbSAnZXhwaXJlLXNldCdcblxuaW1wb3J0IHtcbiAgRG9jdW1lbnQsXG4gIERvY3VtZW50UHJvLFxuICBQcmVzZW50YXRpb24sXG4gIFNwcmVhZHNoZWV0LFxuICBUYWJsZSxcbiAgRm9ybSxcbiAgRmxvd2NoYXJ0XG59IGZyb20gJy4nXG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICcuL2Fzc2VydCdcbmltcG9ydCB7XG4gIEVtcHR5UGFnZU9wdGlvbnMsXG4gIE5vcm1hbGl6ZWRFbXB0eVBhZ2VPcHRpb25zLFxuICBub3JtYWxpemVFbXB0eVBhZ2VPcHRpb25zXG59IGZyb20gJy4vdHlwZXMvRW1wdHlQYWdlJ1xuaW1wb3J0IHtcbiAgQmFzZUVkaXRvcixcbiAgQ29sbGFib3JhdG9yLFxuICBDb2xsYWJvcmF0b3JzQ2hhbmdlZFBheWxvYWRcbn0gZnJvbSAnLi90eXBlcy9CYXNlRWRpdG9yJ1xuXG5jb25zdCBnbG9iYWxUaGlzID0gZ2V0R2xvYmFsKClcbmNvbnN0IEFVRCA9ICdzbWpzc2RrJ1xuY29uc3QgU01fUEFSQU1TX0tFWSA9ICdzbVBhcmFtcydcbmNvbnN0IExPQURJTkdfT1BUSU9OU19LRVkgPSAnbG9hZGluZ09wdGlvbnMnXG5jb25zdCBTVVBQT1JURURfTEFOR1VBR0VTID0gWyd6aC1DTicsICdlbicsICdqYScsICdhci1TQScsICdydS1SVSddXG5jb25zdCBIRUFERVJfQkFSU19NRVRIT0QgPSB7XG4gIGdldFZpc2libGU6ICdoZWFkZXJCYXJzLmdldFZpc2libGUnLFxuICBzZXRWaXNpYmxlOiAnaGVhZGVyQmFycy5zZXRWaXNpYmxlJyxcbiAgYWRkQ29tbWFuZDogJ2hlYWRlckJhcnMuYWRkQ29tbWFuZCcsXG4gIGdldENvbW1hbmQ6ICdoZWFkZXJCYXJzLmdldENvbW1hbmQnLFxuICBzZXRDb21tYW5kVmlzaWJsZTogJ2hlYWRlckJhcnMuc2V0Q29tbWFuZFZpc2libGUnLFxuICBzZXRDb21tYW5kRGlzYWJsZWQ6ICdoZWFkZXJCYXJzLnNldENvbW1hbmREaXNhYmxlZCcsXG4gIHNldENvbW1hbmRFZGl0YWJsZTogJ2hlYWRlckJhcnMuc2V0Q29tbWFuZEVkaXRhYmxlJyxcbiAgc2V0Q29tbWFuZENhbGxiYWNrRW5hYmxlZDogJ2hlYWRlckJhcnMuc2V0Q29tbWFuZENhbGxiYWNrRW5hYmxlZCcsXG4gIHNldFRpdGxlRHJhZnQ6ICdoZWFkZXJCYXJzLnNldFRpdGxlRHJhZnQnLFxuICBjb25maXJtVGl0bGVDaGFuZ2U6ICdoZWFkZXJCYXJzLmNvbmZpcm1UaXRsZUNoYW5nZScsXG4gIGxpc3RWaWV3Q29tbWFuZHM6ICdoZWFkZXJCYXJzLmxpc3RWaWV3Q29tbWFuZHMnLFxuICBoYW5kbGVDb21tYW5kQ2xpY2s6ICdoZWFkZXJCYXJzLmhhbmRsZUNvbW1hbmRDbGljaydcbn0gYXMgY29uc3RcbmNvbnN0IEhFQURFUl9CQVJTX0NIQU5HRURfRVZFTlQgPSAnaGVhZGVyQmFyczpjaGFuZ2VkJ1xuY29uc3QgUFJFTE9BRF9NRVNTQUdFX1RZUEUgPSB7XG4gIFJFQURZOiAnU0RLX1BSRUxPQURfUkVBRFknLFxuICBJTklUOiAnU0RLX1BSRUxPQURfSU5JVCcsXG4gIEFDSzogJ1NES19QUkVMT0FEX0FDSycsXG4gIERPTkU6ICdTREtfUFJFTE9BRF9ET05FJyxcbiAgRVJST1I6ICdTREtfUFJFTE9BRF9FUlJPUidcbn0gYXMgY29uc3RcblxuZXhwb3J0IGludGVyZmFjZSBIZWFkZXJCYXJzQ29tbWFuZERlZmluaXRpb24ge1xuICBpZDogc3RyaW5nXG4gIHNlY3Rpb24/OiBzdHJpbmdcbiAgb3JkZXI/OiBudW1iZXJcbiAgbGFiZWw/OiBzdHJpbmdcbiAgdmlzaWJsZT86IGJvb2xlYW5cbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIGVkaXRhYmxlPzogYm9vbGVhblxuICB0eXBlPzogJ2FjdGlvbicgfCAnc3RydWN0dXJhbCdcbiAgcmVuZGVyVHlwZT86IHN0cmluZ1xuICBzcmM/OiBzdHJpbmdcbiAgb25DbGljaz86ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyQmFyc0NvbW1hbmRTdGF0ZSBleHRlbmRzIEhlYWRlckJhcnNDb21tYW5kRGVmaW5pdGlvbiB7XG4gIHR5cGU6ICdhY3Rpb24nIHwgJ3N0cnVjdHVyYWwnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyQmFyc0NvbW1hbmRSZWYge1xuICByZWFkb25seSBpZDogc3RyaW5nXG4gIHZpc2libGU6IGJvb2xlYW5cbiAgZGlzYWJsZWQ6IGJvb2xlYW5cbiAgZWRpdGFibGU/OiBib29sZWFuXG4gIG9uQ29tbWFuZENsaWNrPzogKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD5cbiAgZ2V0U3RhdGU6ICgpID0+IEhlYWRlckJhcnNDb21tYW5kU3RhdGUgfCB1bmRlZmluZWRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIZWFkZXJCYXJzRmFjYWRlIHtcbiAgdmlzaWJsZTogYm9vbGVhblxuICBnZXRWaXNpYmxlOiAoKSA9PiBQcm9taXNlPGJvb2xlYW4+XG4gIHNldFZpc2libGU6ICh2aXNpYmxlOiBib29sZWFuKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGFkZENvbW1hbmQ6IChcbiAgICBjb21tYW5kOiBIZWFkZXJCYXJzQ29tbWFuZERlZmluaXRpb24sXG4gICAgcG9zQ29tbWFuZDogc3RyaW5nLFxuICAgIHBvcz86ICdiZWZvcmUnIHwgJ2FmdGVyJ1xuICApID0+IFByb21pc2U8Ym9vbGVhbj5cbiAgZ2V0Q29tbWFuZDogKGlkOiBzdHJpbmcpID0+IEhlYWRlckJhcnNDb21tYW5kUmVmXG4gIGxpc3RWaWV3Q29tbWFuZHM6ICgpID0+IFByb21pc2U8SGVhZGVyQmFyc0NvbW1hbmRTdGF0ZVtdPlxuICBzZXRUaXRsZURyYWZ0OiAodGl0bGU6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBjb25maXJtVGl0bGVDaGFuZ2U6ICh0aXRsZTogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmludGVyZmFjZSBIZWFkZXJCYXJzQ2hhbmdlZFBheWxvYWQge1xuICByZWFzb24/OiBzdHJpbmdcbiAgY29tbWFuZElkPzogc3RyaW5nXG4gIHZlcnNpb24/OiBudW1iZXJcbiAgc25hcHNob3Q/OiB7XG4gICAgdmlzaWJsZTogYm9vbGVhblxuICAgIGNvbW1hbmRzOiBIZWFkZXJCYXJzQ29tbWFuZFN0YXRlW11cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgTWVzc2FnZUV2ZW50ID0gSW52b2tlTWV0aG9kXG5cbmV4cG9ydCBjbGFzcyBPZmZpY2VTREsgZXh0ZW5kcyBUaW55RW1pdHRlciB7XG4gIC8qKlxuICAgKiDnvJbovpHlmajpobXpnaLlr7nlupTnmoQgaWZyYW1lIOWFg+e0oOOAgumcgOimgeazqOaEj+iwg+aVtOeItuWFg+e0oOWkp+Wwj+adpeaOp+WItiBpZnJhbWUg5aSn5bCP44CCXG4gICAqL1xuICBlbGVtZW50OiBIVE1MSUZyYW1lRWxlbWVudFxuICByZWFkb25seSB1dWlkOiBzdHJpbmdcbiAgcmVhZG9ubHkgdXNlclV1aWQ/OiBzdHJpbmdcblxuICAvKipcbiAgICog5Lyg57uf5paH5qGj57yW6L6R5Zmo5a6e5L6LXG4gICAqIEBkZXByZWNhdGVkIC0g55SoIGBzZGsuZ2V0RWRpdG9yPFQ+KClgIOabv+S7o1xuICAgKi9cbiAgZG9jdW1lbnRQcm8/OiBEb2N1bWVudFByby5FZGl0b3JcblxuICAvKipcbiAgICog6L275paH5qGj57yW6L6R5Zmo5a6e5L6LXG4gICAqIEBkZXByZWNhdGVkIC0g55SoIGBzZGsuZ2V0RWRpdG9yPFQ+KClgIOabv+S7o1xuICAgKi9cbiAgZG9jdW1lbnQ/OiBEb2N1bWVudC5FZGl0b3JcblxuICAvKipcbiAgICog6KGo5qC857yW6L6R5Zmo5a6e5L6LXG4gICAqIEBkZXByZWNhdGVkIC0g55SoIGBzZGsuZ2V0RWRpdG9yPFQ+KClgIOabv+S7o1xuICAgKi9cbiAgc3ByZWFkc2hlZXQ/OiBTcHJlYWRzaGVldC5FZGl0b3JcblxuICAvKipcbiAgICog5LiT5Lia5bm754Gv54mH57yW6L6R5Zmo5a6e5L6LXG4gICAqIEBkZXByZWNhdGVkIC0g55SoIGBzZGsuZ2V0RWRpdG9yPFQ+KClgIOabv+S7o1xuICAgKi9cbiAgcHJlc2VudGF0aW9uPzogUHJlc2VudGF0aW9uLkVkaXRvclxuXG4gIC8qKlxuICAgKiDlupTnlKjooajmoLznvJbovpHlmajlrp7kvotcbiAgICogQGRlcHJlY2F0ZWQgLSDnlKggYHNkay5nZXRFZGl0b3I8VD4oKWAg5pu/5LujXG4gICAqL1xuICB0YWJsZT86IFRhYmxlLkVkaXRvclxuXG4gIC8qKlxuICAgKiDooajljZXnvJbovpHlmajlrp7kvotcbiAgICogQGRlcHJlY2F0ZWQgLSDnlKggYHNkay5nZXRFZGl0b3I8VD4oKWAg5pu/5LujXG4gICAqL1xuICBmb3JtPzogRm9ybS5FZGl0b3JcblxuICAvKipcbiAgICog5Zu+6LCx57yW6L6R5Zmo5a6e5L6LXG4gICAqIEBkZXByZWNhdGVkIC0g55SoIGBzZGsuZ2V0RWRpdG9yPFQ+KClgIOabv+S7o1xuICAgKi9cbiAgZmxvd2NoYXJ0PzogRmxvd2NoYXJ0LkVkaXRvclxuICByZWFkb25seSBoZWFkZXJCYXJzOiBIZWFkZXJCYXJzRmFjYWRlXG5cbiAgcHJpdmF0ZSBfZmlsZVR5cGU6IEZpbGVUeXBlID0gRmlsZVR5cGUuVW5rbm93blxuICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VIYW5kbGVyOiAoZXZ0OiBnbG9iYWxUaGlzLk1lc3NhZ2VFdmVudCkgPT4gdm9pZCA9XG4gICAgKCkgPT4gdW5kZWZpbmVkXG5cbiAgLyoqXG4gICAqIOWGhemDqCBldmVudCBlbWl0dGVy77yM5q+U5aaC55So5p2l5Lit6L2sIGVkaXRvciDkuovku7ZcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZW1pdHRlcjogVGlueUVtaXR0ZXIgPSBuZXcgVGlueUVtaXR0ZXIoKVxuXG4gIHByaXZhdGUgY2hhbm5lbDogT2ZmaWNlU0RLQnJvYWRjYXN0Q2hhbm5lbFxuICBwcml2YXRlIHJlYWRvbmx5IGNvbm5lY3RPcHRpb25zOiBPZmZpY2VTREtPcHRpb25zXG4gIHByaXZhdGUgX3JlYWR5U3RhdGU6IFJlYWR5U3RhdGUgPSBSZWFkeVN0YXRlLkxvYWRpbmdcbiAgcHJpdmF0ZSBlZGl0b3I6IGFueVxuICBwcml2YXRlIHJlYWRvbmx5IHN0YXJ0UGFyYW1zOiBTdGFydFBhcmFtc1xuICBwcml2YXRlIGNvbGxhYm9yYXRvcnM6IENvbGxhYm9yYXRvcltdID0gW11cbiAgcHJpdmF0ZSByZWFkb25seSBhcGlBZGFwdG9yOiBzdHJpbmdcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlBZGFwdG9yQ29udGV4dDogc3RyaW5nXG4gIHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlZE1lc3NhZ2VDYWNoZTogRXhwaXJlU2V0PHN0cmluZz5cbiAgLyoqXG4gICAqIOa2iOaBr+i/h+acn+aXtumXtO+8jOWNleS9jeavq+enku+8jOm7mOiupCA1IOWIhumSn1xuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlRXhwaXJlczogbnVtYmVyXG4gIC8qKlxuICAgKiBTREsg5pyN5Yqh5Zmo55qE5Zyw5Z2AXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGVuZHBvaW50OiBVUkxcbiAgcHJpdmF0ZSByZWFkb25seSBzYW1lT3JpZ2luOiBib29sZWFuXG4gIHByaXZhdGUgaGVhZGVyQmFyc1Zpc2libGUgPSB0cnVlXG5cbiAgcHJpdmF0ZSByZWFkb25seSBoZWFkZXJCYXJzQ29tbWFuZHMgPSBuZXcgTWFwPFxuICAgIHN0cmluZyxcbiAgICBIZWFkZXJCYXJzQ29tbWFuZFN0YXRlXG4gID4oKVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgaGVhZGVyQmFyc0NvbW1hbmRPdmVycmlkZXMgPSBuZXcgTWFwPFxuICAgIHN0cmluZyxcbiAgICAoKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD4pIHwgdW5kZWZpbmVkXG4gID4oKVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgaGVhZGVyQmFyc0NvbW1hbmRSZWZzID0gbmV3IE1hcDxcbiAgICBzdHJpbmcsXG4gICAgSGVhZGVyQmFyc0NvbW1hbmRSZWZcbiAgPigpXG5cbiAgcHJpdmF0ZSByZWFkb25seSBvblZpZXdwb3J0UmVzaXplOiAoKSA9PiB2b2lkXG5cbiAgLyoqXG4gICAqIOW9kuS4gOWMluWQjueahOe8uuecgemhtemFjee9ru+8jOaehOmAoOaXtuS4gOasoeeul+WujO+8jOWQjue7reS7heivu+WPluOAglxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBub3JtYWxpemVkRW1wdHlQYWdlOiBOb3JtYWxpemVkRW1wdHlQYWdlT3B0aW9uc1xuICBwcml2YXRlIHJlYWRvbmx5IHByZWxvYWRBY2tUaW1lb3V0TXMgPSAyMDAwXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJlbG9hZERvbmVUaW1lb3V0TXMgPSA4MDAwXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJlbG9hZFJlYWR5VGltZW91dE1zID0gMzAwMFxuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9mZmljZVNES09wdGlvbnMpIHtcbiAgICBzdXBlcigpXG5cbiAgICB0aGlzLmNvbm5lY3RPcHRpb25zID0gb3B0aW9uc1xuICAgIHRoaXMudXVpZCA9IHV1aWQoKVxuICAgIHRoaXMudXNlclV1aWQgPSBvcHRpb25zLnVzZXJVdWlkXG4gICAgdGhpcy5ub3JtYWxpemVkRW1wdHlQYWdlID0gbm9ybWFsaXplRW1wdHlQYWdlT3B0aW9ucyhvcHRpb25zLmVtcHR5UGFnZSlcblxuICAgIGFzc2VydDxIVE1MRWxlbWVudD4oXG4gICAgICBvcHRpb25zLmNvbnRhaW5lcixcbiAgICAgIChpbnB1dCkgPT4gaW5wdXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCxcbiAgICAgIGBjb250YWluZXIgaXMgbm90IGFuIEhUTUxFbGVtZW50OiBcIiR7U3RyaW5nKG9wdGlvbnMuY29udGFpbmVyKX1cImBcbiAgICApXG4gICAgYXNzZXJ0PEhUTUxFbGVtZW50PihcbiAgICAgIG9wdGlvbnMuY29udGFpbmVyLFxuICAgICAgKGlucHV0OiBIVE1MRWxlbWVudCkgPT5cbiAgICAgICAgIVsnaWZyYW1lJywgJ2ZyYW1lJywgJ2VtYmVkJywgJ29iamVjdCddLmluY2x1ZGVzKFxuICAgICAgICAgIGlucHV0LnRhZ05hbWUudG9Mb3dlckNhc2UoKVxuICAgICAgICApLFxuICAgICAgYGludmFsaWQgY29udGFpbmVyIGVsZW1lbnQgdHlwZTogXCIke29wdGlvbnMuY29udGFpbmVyLnRhZ05hbWV9XCLvvIxESVYgYXJlIHJlY29tbWVuZGVkLmBcbiAgICApXG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5lbmRwb2ludCA9IG5ldyBVUkwob3B0aW9ucy5lbmRwb2ludClcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgZW5kcG9pbnQ6IFwiJHtvcHRpb25zLmVuZHBvaW50fVwiYClcbiAgICB9XG4gICAgdGhpcy5zYW1lT3JpZ2luID0gdGhpcy5lbmRwb2ludC5vcmlnaW4gPT09IGdsb2JhbFRoaXMubG9jYXRpb24ub3JpZ2luXG5cbiAgICBpZiAoL1xcL3Nka1xcL3YyXFwvKi9pLnRlc3QodGhpcy5lbmRwb2ludC5wYXRobmFtZSkgPT09IGZhbHNlKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBHZW5lcmFsbHkgdGhlIGVuZHBvaW50IHNob3VsZCBlbmQgd2l0aCBcIi9zZGsvdjJcIiwgcGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBjb3JyZWN0OiBcIiR7dGhpcy5lbmRwb2ludC50b1N0cmluZygpfVwiYFxuICAgICAgKVxuICAgIH1cblxuICAgIHRoaXMuYXBpQWRhcHRvciA9IG9wdGlvbnMuYXBpQWRhcHRvciA/IG9wdGlvbnMuYXBpQWRhcHRvci50b1N0cmluZygpIDogJydcbiAgICB0aGlzLmFwaUFkYXB0b3JDb250ZXh0ID0gb3B0aW9ucy5hcGlBZGFwdG9yQ29udGV4dFxuICAgICAgPyBKU09OLnN0cmluZ2lmeShvcHRpb25zLmFwaUFkYXB0b3JDb250ZXh0KVxuICAgICAgOiAnJ1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc3RhcnRQYXJhbXMgPSBuZXcgU3RhcnRQYXJhbXMoXG4gICAgICAgIG9wdGlvbnMuc21QYXJhbXMgPz9cbiAgICAgICAgICBuZXcgVVJMU2VhcmNoUGFyYW1zKGdsb2JhbFRoaXMubG9jYXRpb24/LnNlYXJjaCkuZ2V0KFNNX1BBUkFNU19LRVkpID8/XG4gICAgICAgICAgJydcbiAgICAgIClcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLnN0YXJ0UGFyYW1zID0gbmV3IFN0YXJ0UGFyYW1zKClcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZGVidWcgPT09ICdib29sZWFuJykge1xuICAgICAgdGhpcy5zdGFydFBhcmFtcy5kZWJ1ZyA9IHRoaXMuY29ubmVjdE9wdGlvbnMuZGVidWdcbiAgICB9XG5cbiAgICB0aGlzLm9uVmlld3BvcnRSZXNpemUgPSAoKSA9PiB7XG4gICAgICA7KGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5jaGFubmVsLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICBldmVudDogU0RLRXZlbnQuVmlld3BvcnRSZXNpemUsXG4gICAgICAgICAgcGF5bG9hZDogdGhpcy5nZXRDb250YWluZXJSZWN0KClcbiAgICAgICAgfSlcbiAgICAgIH0pKCkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICB0aGlzLmVtaXQoXG4gICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICBuZXcgRXJyb3IoYEZhaWxlZCB0byBlbWl0IHJlc2l6ZSBldmVudDogJHtTdHJpbmcoZXJyKX1gKVxuICAgICAgICApXG4gICAgICB9KVxuICAgIH1cblxuICAgIHRoaXMuaW5pdENoYW5uZWwoKVxuICAgIHRoaXMuaGVhZGVyQmFycyA9IHRoaXMuaW5pdEhlYWRlckJhcnNGYWNhZGUoKVxuXG4gICAgbGV0IG1lc3NhZ2VFeHBpcmVzID0gb3B0aW9ucy5tZXNzYWdlRXhwaXJlc1xuICAgIGlmICh0eXBlb2YgbWVzc2FnZUV4cGlyZXMgIT09ICdudW1iZXInKSB7XG4gICAgICBtZXNzYWdlRXhwaXJlcyA9IDYwICogNSAqIDEwMDBcbiAgICB9XG4gICAgdGhpcy5tZXNzYWdlRXhwaXJlcyA9IGFzc2VydChcbiAgICAgIG1lc3NhZ2VFeHBpcmVzLFxuICAgICAgKGlucHV0KSA9PiAhaXNOYU4oaW5wdXQpICYmIGlucHV0ID4gMCxcbiAgICAgIGBcIm1lc3NhZ2VFeHBpcmVzXCIgaXMgbm90IGFuIHZhbGlkIG51bWJlcjogXCIke21lc3NhZ2VFeHBpcmVzfVwiYFxuICAgIClcbiAgICB0aGlzLmhhbmRsZWRNZXNzYWdlQ2FjaGUgPSBuZXcgRXhwaXJlU2V0PHN0cmluZz4obWVzc2FnZUV4cGlyZXMpXG5cbiAgICBpZiAoIXRoaXMuc2FtZU9yaWdpbikge1xuICAgICAgLy8g5rOo5YaM5Y+v5Lul5Y+N5rOo5YaM55qE5Ye95pWwXG4gICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyID0gKGV2dDogZ2xvYmFsVGhpcy5NZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgICAgLy8g5bCG5raI5oGv6L2s5YWlIE9mZmljZVNES0Jyb2FkY2FzdENoYW5uZWwg5aSE55CGXG4gICAgICAgIGNvbnN0IGRhdGEgPSBldnQuZGF0YVxuICAgICAgICBpZiAoXG4gICAgICAgICAgaXNPZmZpY2VTREtNZXNzYWdlRXZlbnRMaWtlKGRhdGEpICYmXG4gICAgICAgICAgdGhpcy5zaG91bGRIYW5kbGVNZXNzYWdlKGRhdGEpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuaGFuZGxlZE1lc3NhZ2VDYWNoZS5hZGQoZGF0YS5pZClcbiAgICAgICAgICB0aGlzLmNoYW5uZWxcbiAgICAgICAgICAgIC5kaXN0cmlidXRlTWVzc2FnZShldnQuZGF0YSBhcyBPZmZpY2VTREtNZXNzYWdlRXZlbnQpXG4gICAgICAgICAgICAuY2F0Y2goKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGVycilcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgZmlsZVR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbGVUeXBlXG4gIH1cblxuICBnZXQgcmVhZHlTdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZHlTdGF0ZVxuICB9XG5cbiAgZ2V0RWRpdG9yPFxuICAgIFQgZXh0ZW5kc1xuICAgICAgfCBCYXNlRWRpdG9yXG4gICAgICB8IERvY3VtZW50LkVkaXRvclxuICAgICAgfCBEb2N1bWVudFByby5FZGl0b3JcbiAgICAgIHwgUHJlc2VudGF0aW9uLkVkaXRvclxuICAgICAgfCBTcHJlYWRzaGVldC5FZGl0b3JcbiAgICAgIHwgRm9ybS5FZGl0b3JcbiAgICAgIHwgRmxvd2NoYXJ0LkVkaXRvclxuICAgICAgfCBUYWJsZS5FZGl0b3IgPSBCYXNlRWRpdG9yXG4gID4oKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yIGFzIFRcbiAgfVxuXG4gIC8qKlxuICAgKiDmm7TmlrDpibTmnYMgc2lnbmF0dXJlIOWSjCB0b2tlblxuICAgKiBAZGVwcmVjYXRlZCAtIOeUqCBgT2ZmaWNlU0RLT3B0aW9ucy5nZXRDcmVkZW50aWFscygpYCDmm7/ku6NcbiAgICovXG4gIGFzeW5jIHNldENyZWRlbnRpYWxzKHBheWxvYWQ6IHsgc2lnbmF0dXJlOiBzdHJpbmc7IHRva2VuOiBzdHJpbmcgfSkge1xuICAgIGF3YWl0IHRoaXMuY2hhbm5lbC5pbnZva2UoSW52b2tlTWV0aG9kLlNldENyZWRlbnRpYWxzLCBbcGF5bG9hZF0sIHtcbiAgICAgIGF1ZGllbmNlOiBBVURcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIOiuvue9ruefs+WiqOeahOmJtOadgyBzaWduYXR1cmXjgILnlKjkuo7lrp7ml7bmm7TmlrDpibTmnYPkv6Hmga/vvIzkvJjljJbnlKjmiLflh7rnjrDlm6Dplb/ml7bpl7TmlL7nva7vvIzpibTmnYPlpLHotKXogIzlvJXotbfnmoTkvZPpqozpl67popjjgIJcbiAgICogQGRlcHJlY2F0ZWQgLSDnlKggYHNkay5zZXRDcmVkZW50aWFscygpYCDmm7/ku6NcbiAgICovXG4gIGFzeW5jIHNldFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZykge1xuICAgIGF3YWl0IHRoaXMuY2hhbm5lbC5pbnZva2UoSW52b2tlTWV0aG9kLlNldENyZWRlbnRpYWxzLCBbeyBzaWduYXR1cmUgfV0sIHtcbiAgICAgIGF1ZGllbmNlOiBBVURcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIOiuvue9ruaCqOezu+e7n+eahOmJtOadgyB0b2tlbuOAgueUqOS6juWunuaXtuabtOaWsOmJtOadg+S/oeaBr++8jOS8mOWMlueUqOaIt+WHuueOsOWboOmVv+aXtumXtOaUvue9ru+8jOmJtOadg+Wksei0peiAjOW8lei1t+eahOS9k+mqjOmXrumimOOAglxuICAgKiBAZGVwcmVjYXRlZCAtIOeUqCBgc2RrLnNldENyZWRlbnRpYWxzKClgIOabv+S7o1xuICAgKi9cbiAgYXN5bmMgc2V0VG9rZW4odG9rZW46IHN0cmluZykge1xuICAgIGF3YWl0IHRoaXMuY2hhbm5lbC5pbnZva2UoSW52b2tlTWV0aG9kLlNldENyZWRlbnRpYWxzLCBbeyB0b2tlbiB9XSwge1xuICAgICAgYXVkaWVuY2U6IEFVRFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5oCn6IO95L+h5oGv54mH5q615YiX6KGo77yM55Sx5LqO5oCn6IO95qCH6K6w5piv5YiG5q6155qE44CB5byC5q2l55qE77yM5Zug5q2k5q+P5qyh6LCD55So5pe26I635Y+W55qE5YiX6KGo5pyJ5Y+v6IO95LiN5LiA6Ie0XG4gICAqL1xuICBhc3luYyBnZXRQZXJmb3JtYW5jZUVudHJpZXMoKTogUHJvbWlzZTxQZXJmb3JtYW5jZUVudHJ5W10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jaGFubmVsLmludm9rZShcbiAgICAgIEludm9rZU1ldGhvZC5SZXF1ZXN0UGVyZm9ybWFuY2VFbnRyaWVzLFxuICAgICAgW10sXG4gICAgICB7XG4gICAgICAgIGF1ZGllbmNlOiBBVURcbiAgICAgIH1cbiAgICApXG4gIH1cblxuICBkaXNjb25uZWN0KCkge1xuICAgIGlmICh0aGlzLmVsZW1lbnQ/LnBhcmVudEVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgdGhpcy5lbGVtZW50LnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KVxuICAgIH1cbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMubWVzc2FnZUhhbmRsZXIpXG4gICAgaWYgKHdpbmRvdy52aXN1YWxWaWV3cG9ydCkge1xuICAgICAgd2luZG93LnZpc3VhbFZpZXdwb3J0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25WaWV3cG9ydFJlc2l6ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25WaWV3cG9ydFJlc2l6ZSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog5Yid5aeL5YyWIFNES++8jOi/lOWbniBQcm9taXNl77yM5b2TIFJlYWRTdGF0ZSDlj5jkuLogUmVhZHkg5oiWIEZhaWxlZCDml7bvvIxQcm9taXNlIOWwhuiiqyByZXNvbHZl44CCXG4gICAqIFByb21pc2UgcmVzb3ZsZWQg5LiN5Luj6KGo57yW6L6R5Zmo5bey57uP5a6M5pW05Yqg6L295a6M5q+V77yM5Y+q5Luj6KGoIFNESyDlt7Lnu4/lh4blpIflpb3kuobjgIJcbiAgICog5ZCM5pe2IFByb21pc2Ug5LiA55u0IHBlbmRpbmcg5Lmf5LiN5Luj6KGo57yW6L6R5Zmo5Yqg6L295aSx6LSl77yM5Y+q5Luj6KGo5peg5rOV6YCa6L+HIFNESyDlkoznvJbovpHlmajkuqTkupLjgIJcbiAgICog5q+U5aaC5Y+X5rWP6KeI5Zmo6ZmQ5Yi25peg5rOV5Y+R5Ye6IHBvc3RNZXNzYWdlKCkg5pe277yMUHJvbWlzZSDlsIbkvJrkuIDnm7QgcGVuZGluZ+OAglxuICAgKi9cbiAgYXN5bmMgaW5pdCgpIHtcbiAgICBpZiAodGhpcy5fcmVhZHlTdGF0ZSAhPT0gUmVhZHlTdGF0ZS5Mb2FkaW5nKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLl9yZWFkeVN0YXRlID0gUmVhZHlTdGF0ZS5Mb2FkaW5nRWRpdG9yXG5cbiAgICBpZiAoIXRoaXMuc2FtZU9yaWdpbikge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCB0aGlzLm1lc3NhZ2VIYW5kbGVyKVxuICAgIH1cblxuICAgIHRoaXMuZWxlbWVudCA9IGF3YWl0IHRoaXMuaW5pdElmcmFtZSgpXG5cbiAgICB0aGlzLmNvbm5lY3RPcHRpb25zLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpXG4gICAgYXdhaXQgdGhpcy5ydW5QcmVsb2FkSGFuZHNoYWtlKClcblxuICAgIHRoaXMuZWRpdG9yID0gdGhpcy5pbml0RWRpdG9yKClcblxuICAgIC8qKlxuICAgICAqIOetieW+hee8lui+keWZqCBSZWFkeVN0YXRlIOWPmOWMluWbnuiwg1xuICAgICAqL1xuICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGxldCBkb25lID0gZmFsc2VcbiAgICAgIGNvbnN0IHJlYWR5U3RhdGVIYW5kbGVyID0gKHBheWxvYWQ6IFJlYWR5U3RhdGVFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0YXRlLCBlcnJvciwgZmlsZVR5cGUgfSA9IHBheWxvYWRcblxuICAgICAgICB0aGlzLl9yZWFkeVN0YXRlID0gc3RhdGVcblxuICAgICAgICBpZiAoZmlsZVR5cGUgJiYgdGhpcy5fZmlsZVR5cGUgPT09IEZpbGVUeXBlLlVua25vd24pIHtcbiAgICAgICAgICB0aGlzLl9maWxlVHlwZSA9IGZpbGVUeXBlXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICBkb25lID0gdHJ1ZVxuICAgICAgICAgIHJlamVjdCh0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnID8gbmV3IEVycm9yKGVycm9yKSA6IGVycm9yKVxuICAgICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSBSZWFkeVN0YXRlLlJlYWR5KSB7XG4gICAgICAgICAgZG9uZSA9IHRydWVcbiAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgdGhpcy5vZmYoRXZlbnQuUmVhZHlTdGF0ZSwgcmVhZHlTdGF0ZUhhbmRsZXIpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5vbihFdmVudC5SZWFkeVN0YXRlLCByZWFkeVN0YXRlSGFuZGxlcilcbiAgICB9KVxuXG4gICAgc3dpdGNoICh0aGlzLmZpbGVUeXBlKSB7XG4gICAgICBjYXNlIEZpbGVUeXBlLkRvY3VtZW50OlxuICAgICAgICB0aGlzLmRvY3VtZW50ID0gdGhpcy5lZGl0b3IgYXMgRG9jdW1lbnQuRWRpdG9yXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEZpbGVUeXBlLkRvY3VtZW50UHJvOlxuICAgICAgICB0aGlzLmRvY3VtZW50UHJvID0gdGhpcy5lZGl0b3IgYXMgRG9jdW1lbnRQcm8uRWRpdG9yXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEZpbGVUeXBlLlNwcmVhZHNoZWV0OlxuICAgICAgICB0aGlzLnNwcmVhZHNoZWV0ID0gdGhpcy5lZGl0b3IgYXMgU3ByZWFkc2hlZXQuRWRpdG9yXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEZpbGVUeXBlLlByZXNlbnRhdGlvbjpcbiAgICAgICAgdGhpcy5wcmVzZW50YXRpb24gPSB0aGlzLmVkaXRvciBhcyBQcmVzZW50YXRpb24uRWRpdG9yXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEZpbGVUeXBlLlRhYmxlOlxuICAgICAgICB0aGlzLnRhYmxlID0gdGhpcy5lZGl0b3IgYXMgVGFibGUuRWRpdG9yXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEZpbGVUeXBlLkZvcm06XG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZWRpdG9yIGFzIEZvcm0uRWRpdG9yXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEZpbGVUeXBlLkZsb3djaGFydDpcbiAgICAgICAgdGhpcy5mbG93Y2hhcnQgPSB0aGlzLmVkaXRvciBhcyBGbG93Y2hhcnQuRWRpdG9yXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBpbml0SWZyYW1lKCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmNvbm5lY3RPcHRpb25zXG5cbiAgICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKVxuICAgIGlmcmFtZS5zdHlsZS5ib3JkZXIgPSAnbm9uZSdcbiAgICBpZnJhbWUuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJ1xuICAgIGlmcmFtZS5zdHlsZS53aWR0aCA9ICcxMDAlJ1xuICAgIGlmcmFtZS5zdHlsZS5oZWlnaHQgPSAnMTAwJSdcbiAgICAvLyDop6PlhrPpobXpnaLlh7rnjrDmu5rliqjmnaEgJiDpobbpg6jooqvmiKrmlq3nmoTpl67pophcbiAgICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdibG9jaydcblxuICAgIGlmICgnYWxsb3cnIGluIGlmcmFtZSkge1xuICAgICAgaWZyYW1lLmFsbG93ID1cbiAgICAgICAgdGhpcy5jb25uZWN0T3B0aW9ucy5hbGxvd1BvbGljeSA/P1xuICAgICAgICAnZnVsbHNjcmVlbiAqO2NsaXBib2FyZC1yZWFkICo7Y2xpcGJvYXJkLXdyaXRlICo7J1xuICAgIH0gZWxzZSB7XG4gICAgICA7KGlmcmFtZSBhcyBhbnkpLmFsbG93RnVsbHNjcmVlbiA9IHRydWVcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmVuZHBvaW50XG4gICAgdXJsLnBhdGhuYW1lID0gYCR7dXJsLnBhdGhuYW1lfS9hcGkvJHthc3NlcnQ8c3RyaW5nPihcbiAgICAgIG9wdGlvbnMuZmlsZUlkLFxuICAgICAgbm90RW1wdHlTdHJpbmcsXG4gICAgICBgXCJmaWxlSWRcIiBpcyBtaXNzaW5nIG9yIGVtcHR5OiAke29wdGlvbnMuZmlsZUlkfWBcbiAgICApfS9wcmVsb2FkYC5yZXBsYWNlKC9cXC8rL2csICcvJylcblxuICAgIGNvbnN0IHBhcmFtcyA9IG9wdGlvbnMucGFyYW1zXG4gICAgaWYgKHBhcmFtcykge1xuICAgICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoa2V5LCBwYXJhbXNba2V5XSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmRldmljZU1vZGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnZGV2aWNlTW9kZScsIG9wdGlvbnMuZGV2aWNlTW9kZS50cmltKCkpXG4gICAgfVxuXG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoU01fUEFSQU1TX0tFWSwgdGhpcy5zdGFydFBhcmFtcy50b1N0cmluZygpKVxuXG4gICAgaWYgKG9wdGlvbnMuc2hvd0xvYWRpbmdFZmZlY3QgfHwgb3B0aW9ucy5zaG93TG9hZGluZykge1xuICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2xvYWRpbmdFZmZlY3QnLCAndHJ1ZScpXG4gICAgICBpZiAob3B0aW9ucy5sb2FkaW5nT3B0aW9ucykge1xuICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldChcbiAgICAgICAgICBMT0FESU5HX09QVElPTlNfS0VZLFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG9wdGlvbnMubG9hZGluZ09wdGlvbnMpXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyDorr7nva7lvZPliY3nvJbovpHlmajor63oqIBcbiAgICBpZiAoXG4gICAgICB0eXBlb2Ygb3B0aW9ucy5sYW5nID09PSAnc3RyaW5nJyAmJlxuICAgICAgU1VQUE9SVEVEX0xBTkdVQUdFUy5pbmNsdWRlcyhvcHRpb25zLmxhbmcpXG4gICAgKSB7XG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnbGFuZycsIG9wdGlvbnMubGFuZylcbiAgICB9XG5cbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnanN2ZXInLCBwcm9jZXNzLmVudi5WRVJTSU9OID8/ICcnKVxuXG4gICAgYXNzZXJ0PHN0cmluZz4oXG4gICAgICBvcHRpb25zLnRva2VuLFxuICAgICAgbm90RW1wdHlTdHJpbmcsXG4gICAgICBgXCJ0b2tlblwiIGlzIG1pc3Npbmcgb3IgZW1wdHk6IFwiJHtvcHRpb25zLnRva2VufVwiYFxuICAgIClcblxuICAgIGFzc2VydDxzdHJpbmc+KFxuICAgICAgb3B0aW9ucy5zaWduYXR1cmUsXG4gICAgICBub3RFbXB0eVN0cmluZyxcbiAgICAgIGBcInNpZ25hdHVyZVwiIGlzIG1pc3Npbmcgb3IgZW1wdHk6IFwiJHtvcHRpb25zLnNpZ25hdHVyZX1cImBcbiAgICApXG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3V1aWQnLCB0aGlzLnV1aWQpXG4gICAgdGhpcy51c2VyVXVpZCAmJiB1cmwuc2VhcmNoUGFyYW1zLnNldCgndXNlclV1aWQnLCB0aGlzLnVzZXJVdWlkKVxuXG4gICAgaWZyYW1lLnNyYyA9IHVybC50b1N0cmluZygpXG5cbiAgICByZXR1cm4gaWZyYW1lXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJ1blByZWxvYWRIYW5kc2hha2UoKSB7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmNvbm5lY3RPcHRpb25zLnRva2VuXG4gICAgY29uc3Qgc2lnbmF0dXJlID0gdGhpcy5jb25uZWN0T3B0aW9ucy5zaWduYXR1cmVcbiAgICBjb25zdCBmaWxlR3VpZCA9IHRoaXMuY29ubmVjdE9wdGlvbnMuZmlsZUlkXG4gICAgY29uc3QgcmVxdWVzdElkID0gdXVpZCgpXG5cbiAgICB0eXBlIFByZWxvYWRNZXNzYWdlID0ge1xuICAgICAgdHlwZT86IHN0cmluZ1xuICAgICAgcmVxdWVzdElkPzogc3RyaW5nXG4gICAgICBwYXlsb2FkPzoge1xuICAgICAgICB0b2tlbj86IHN0cmluZ1xuICAgICAgICBzaWduYXR1cmU/OiBzdHJpbmdcbiAgICAgICAgZmlsZUd1aWQ/OiBzdHJpbmdcbiAgICAgICAgbW9kZT86ICdlZGl0JyB8ICdwcmV2aWV3J1xuICAgICAgfVxuICAgICAgZXJyb3I/OiB7XG4gICAgICAgIGNvZGU/OiBzdHJpbmdcbiAgICAgICAgbWVzc2FnZT86IHN0cmluZ1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCByZWFkeVJlc29sdmVkID0gZmFsc2VcbiAgICBsZXQgYWNrUmVzb2x2ZWQgPSBmYWxzZVxuICAgIGxldCBkb25lUmVzb2x2ZWQgPSBmYWxzZVxuICAgIGxldCBhY2tUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbFxuICAgIGxldCBkb25lVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGxcblxuICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XG4gICAgICAgIGlmIChhY2tUaW1lcikge1xuICAgICAgICAgIGNsZWFyVGltZW91dChhY2tUaW1lcilcbiAgICAgICAgICBhY2tUaW1lciA9IG51bGxcbiAgICAgICAgfVxuICAgICAgICBpZiAoZG9uZVRpbWVyKSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KGRvbmVUaW1lcilcbiAgICAgICAgICBkb25lVGltZXIgPSBudWxsXG4gICAgICAgIH1cbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBoYW5kbGVNZXNzYWdlKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBzZW5kSW5pdCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5lbGVtZW50Py5jb250ZW50V2luZG93Py5wb3N0TWVzc2FnZShcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBQUkVMT0FEX01FU1NBR0VfVFlQRS5JTklULFxuICAgICAgICAgICAgcmVxdWVzdElkLFxuICAgICAgICAgICAgdHM6IERhdGUubm93KCksXG4gICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgIHRva2VuLFxuICAgICAgICAgICAgICBzaWduYXR1cmUsXG4gICAgICAgICAgICAgIGZpbGVHdWlkLFxuICAgICAgICAgICAgICBtb2RlOiB0aGlzLmNvbm5lY3RPcHRpb25zLm1vZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgICcqJ1xuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhhbmRsZU1lc3NhZ2UgPSAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0gZXZlbnQuZGF0YSBhcyBQcmVsb2FkTWVzc2FnZVxuICAgICAgICBpZiAoXG4gICAgICAgICAgIWRhdGEgfHxcbiAgICAgICAgICB0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcgfHxcbiAgICAgICAgICB0eXBlb2YgZGF0YS50eXBlICE9PSAnc3RyaW5nJ1xuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkYXRhLnR5cGUgPT09IFBSRUxPQURfTUVTU0FHRV9UWVBFLlJFQURZICYmICFyZWFkeVJlc29sdmVkKSB7XG4gICAgICAgICAgcmVhZHlSZXNvbHZlZCA9IHRydWVcbiAgICAgICAgICBzZW5kSW5pdCgpXG4gICAgICAgICAgYWNrVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHNlbmRJbml0KClcbiAgICAgICAgICAgIGRvbmVUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICBjbGVhbnVwKClcbiAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcigncHJlbG9hZCBpbml0IHRpbWVvdXQnKSlcbiAgICAgICAgICAgIH0sIHRoaXMucHJlbG9hZERvbmVUaW1lb3V0TXMpXG4gICAgICAgICAgfSwgdGhpcy5wcmVsb2FkQWNrVGltZW91dE1zKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRhdGEucmVxdWVzdElkICE9PSByZXF1ZXN0SWQpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkYXRhLnR5cGUgPT09IFBSRUxPQURfTUVTU0FHRV9UWVBFLkFDSykge1xuICAgICAgICAgIGFja1Jlc29sdmVkID0gdHJ1ZVxuICAgICAgICAgIGlmIChhY2tUaW1lcikge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGFja1RpbWVyKVxuICAgICAgICAgICAgYWNrVGltZXIgPSBudWxsXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghZG9uZVRpbWVyKSB7XG4gICAgICAgICAgICBkb25lVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgY2xlYW51cCgpXG4gICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ3ByZWxvYWQgZG9uZSB0aW1lb3V0JykpXG4gICAgICAgICAgICB9LCB0aGlzLnByZWxvYWREb25lVGltZW91dE1zKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkYXRhLnR5cGUgPT09IFBSRUxPQURfTUVTU0FHRV9UWVBFLkRPTkUpIHtcbiAgICAgICAgICBkb25lUmVzb2x2ZWQgPSB0cnVlXG4gICAgICAgICAgY2xlYW51cCgpXG4gICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGF0YS50eXBlID09PSBQUkVMT0FEX01FU1NBR0VfVFlQRS5FUlJPUikge1xuICAgICAgICAgIGNsZWFudXAoKVxuICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgZGF0YS5lcnJvcj8ubWVzc2FnZSB8fCBkYXRhLmVycm9yPy5jb2RlIHx8ICdwcmVsb2FkIGluaXQgZmFpbGVkJ1xuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGhhbmRsZU1lc3NhZ2UpXG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoIXJlYWR5UmVzb2x2ZWQgJiYgIWFja1Jlc29sdmVkICYmICFkb25lUmVzb2x2ZWQpIHtcbiAgICAgICAgICBjbGVhbnVwKClcbiAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdwcmVsb2FkIHJlYWR5IHRpbWVvdXQnKSlcbiAgICAgICAgfVxuICAgICAgfSwgdGhpcy5wcmVsb2FkUmVhZHlUaW1lb3V0TXMpXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgaW5pdENoYW5uZWwoKSB7XG4gICAgY29uc3QgY2hhbm5lbCA9ICh0aGlzLmNoYW5uZWwgPSBuZXcgT2ZmaWNlU0RLQnJvYWRjYXN0Q2hhbm5lbCh7XG4gICAgICBjaGFubmVsSWQ6IHRoaXMuc3RhcnRQYXJhbXMuY2hhbm5lbElkLFxuICAgICAgZGVidWc6IHRoaXMuY29ubmVjdE9wdGlvbnMuZGVidWcsXG4gICAgICBhdXRvU3RydWN0dXJlZENsb25lOiB0cnVlLFxuICAgICAgZGVidWdOYW1lc3BhY2U6ICdTTV9TREtfQ0hBTidcbiAgICB9KSlcblxuICAgIGlmICghdGhpcy5zdGFydFBhcmFtcy5jaGFubmVsSWQpIHtcbiAgICAgIHRoaXMuc3RhcnRQYXJhbXMuY2hhbm5lbElkID0gY2hhbm5lbC5pZFxuICAgIH1cblxuICAgIGNoYW5uZWwub24oJ2Vycm9yJywgKGVycjogRXJyb3IpID0+IHtcbiAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBlcnIpXG4gICAgfSlcblxuICAgIGNoYW5uZWwub24oJ21lc3NhZ2VFcnJvcicsIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyKVxuICAgIH0pXG5cbiAgICAvKipcbiAgICAgKiDpnZ4gc2FtZSBvcmlnaW4g5pe277yM55So5LiN5LqGIGJyb2FkY2FzdCBjaGFubmVs77yM6ZyA6KaB5ZyoIHBvc3RNZXNzYWdlIOaXtu+8jOWwhua2iOaBr+i9rOWIsCBpZnJhbWVcbiAgICAgKi9cbiAgICBpZiAoIXRoaXMuc2FtZU9yaWdpbikge1xuICAgICAgY2hhbm5lbC5vbihcbiAgICAgICAgJ3Bvc3RNZXNzYWdlJyxcbiAgICAgICAgKGV2dDogT2ZmaWNlU0RLTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgICAgICAgdGhpcy5lbGVtZW50Py5jb250ZW50V2luZG93Py5wb3N0TWVzc2FnZShldnQsICcqJylcbiAgICAgICAgfSxcbiAgICAgICAgeyBhdWRpZW5jZTogJyonIH1cbiAgICAgIClcbiAgICB9XG5cbiAgICBjaGFubmVsLm9uKFxuICAgICAgJ21lc3NhZ2UnLFxuICAgICAgKG1zZzogT2ZmaWNlU0RLTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBtc2cuZGF0YSBhcyBhbnlcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOebkeWQrCBSZWFkeVN0YXRlIOWPmOabtFxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKGRhdGE/LmV2ZW50ID09PSBJbnZva2VNZXRob2QuUmVhZHlTdGF0ZSkge1xuICAgICAgICAgIHRoaXMuZW1pdChFdmVudC5SZWFkeVN0YXRlLCBkYXRhLnBheWxvYWQpXG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YT8uZXZlbnQgPT09IEVESVRPUl9SRU5ERVJFRF9FVkVOVCkge1xuICAgICAgICAgIHRoaXMuZW1pdChFdmVudC5FZGl0b3JSZW5kZXJlZCwgZGF0YS5wYXlsb2FkKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhdWRpZW5jZTogQVVEIH1cbiAgICApXG5cbiAgICAvKipcbiAgICAgKiDlpITnkIbplJnor6/kuovku7ZcbiAgICAgKi9cbiAgICBjaGFubmVsLmFkZEludm9rZUhhbmRsZXIoXG4gICAgICBJbnZva2VNZXRob2QuRXJyb3IsXG4gICAgICAocGF5bG9hZDogdW5rbm93bikgPT4ge1xuICAgICAgICB0aGlzLmVtaXQoRXZlbnQuRXJyb3IsIHBheWxvYWQpXG4gICAgICB9LFxuICAgICAgeyBhdWRpZW5jZTogQVVEIH1cbiAgICApXG5cbiAgICAvKipcbiAgICAgKiDliJ3lp4vljJbnvJbovpHlmajvvIzor7fmsYLphY3nva5cbiAgICAgKi9cbiAgICBjaGFubmVsLmFkZEludm9rZUhhbmRsZXIoXG4gICAgICBJbnZva2VNZXRob2QuU0RLSW5pdCxcbiAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3Qgb3B0czogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fVxuXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuY29ubmVjdE9wdGlvbnMpLmZvckVhY2goKGspID0+IHtcbiAgICAgICAgICBjb25zdCB2ID0gdGhpcy5jb25uZWN0T3B0aW9uc1trIGFzIGtleW9mIHR5cGVvZiB0aGlzLmNvbm5lY3RPcHRpb25zXVxuICAgICAgICAgIG9wdHNba10gPSB2XG4gICAgICAgICAgLy8g5Ye95pWw55SoIGJvb2xlYW4g5qCH6K6w5pyJ6K6+572u5YC8XG4gICAgICAgICAgaWYgKHR5cGVvZiB2ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBvcHRzW2BoYXMke2tbMF0udG9VcHBlckNhc2UoKX0ke2suc2xpY2UoMSl9YF0gPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIG9wdHMuYXBpQWRhcHRvciA9IHRoaXMuYXBpQWRhcHRvclxuICAgICAgICBvcHRzLmFwaUFkYXB0b3JDb250ZXh0ID0gdGhpcy5hcGlBZGFwdG9yQ29udGV4dFxuICAgICAgICAvLyDlvZLkuIDljJblkI7nmoTnvLrnnIHpobXphY3nva7jgIJpZnJhbWUg5L6n77yIbGl6YXJkLXNlcnZpY2UtaWZyYW1lLXNka++8ieebtOaOpea2iOi0ue+8jFxuICAgICAgICAvLyDkuI3pnIDopoHlho0gZmFsbGJhY2sg6buY6K6k5YC844CC5pyq5p2l5aaC6ZyA5omp5bGV5a2X5q6177yM5ZyoIG5vcm1hbGl6ZUVtcHR5UGFnZU9wdGlvbnMg5YaF57uf5LiA5aSE55CG44CCXG4gICAgICAgIG9wdHMuZW1wdHlQYWdlID0gdGhpcy5ub3JtYWxpemVkRW1wdHlQYWdlXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICAgIHV1aWQ6IHRoaXMudXVpZFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhdWRpZW5jZTogQVVEIH1cbiAgICApXG5cbiAgICAvKipcbiAgICAgKiDnm5HlkKwgU0RLIOebuOWFs+eahOS6i+S7tu+8jOWwhuS6i+S7tui9rOWFpSBTREsg5LqL5Lu255uR5ZCs5ZmoXG4gICAgICovXG4gICAgY2hhbm5lbC5hZGRJbnZva2VIYW5kbGVyKFxuICAgICAgSW52b2tlTWV0aG9kLkRpc3BhdGNoU0RLRXZlbnQsXG4gICAgICBhc3luYyAoZXZlbnQ6IHN0cmluZywgYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgICAgIGlmIChldmVudCA9PT0gSEVBREVSX0JBUlNfQ0hBTkdFRF9FVkVOVCkge1xuICAgICAgICAgIHRoaXMuYXBwbHlIZWFkZXJCYXJzQ2hhbmdlZChhcmdzWzBdIGFzIEhlYWRlckJhcnNDaGFuZ2VkUGF5bG9hZClcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVtaXQoZXZlbnQsIC4uLmFyZ3MpXG4gICAgICB9LFxuICAgICAgeyBhdWRpZW5jZTogQVVEIH1cbiAgICApXG5cbiAgICBjaGFubmVsLmFkZEludm9rZUhhbmRsZXIoXG4gICAgICBIRUFERVJfQkFSU19NRVRIT0QuaGFuZGxlQ29tbWFuZENsaWNrLFxuICAgICAgYXN5bmMgKGlkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgaGFuZGxlciA9IHRoaXMuaGVhZGVyQmFyc0NvbW1hbmRPdmVycmlkZXMuZ2V0KGlkKVxuICAgICAgICBpZiAodHlwZW9mIGhhbmRsZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBoYW5kbGVyKClcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH0sXG4gICAgICB7IGF1ZGllbmNlOiBBVUQgfVxuICAgIClcblxuICAgIC8qKlxuICAgICAqIOebkeWQrOe8lui+keWZqOebuOWFs+eahOS6i+S7tu+8jOWwhuS6i+S7tui9rOWFpee8lui+keWZqOS6i+S7tuebkeWQrOWZqFxuICAgICAqL1xuICAgIGNoYW5uZWwuYWRkSW52b2tlSGFuZGxlcihcbiAgICAgIEludm9rZU1ldGhvZC5EaXNwYXRjaEVkaXRvckV2ZW50LFxuICAgICAgYXN5bmMgKGV2ZW50OiBzdHJpbmcsIHBheWxvYWQ6IHVua25vd24pID0+IHtcbiAgICAgICAgaWYgKGV2ZW50ID09PSAnY29sbGFib3JhdG9yc0NoYW5nZWQnKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVDb2xsYWJvcmF0b3JzKHBheWxvYWQpXG4gICAgICAgIH1cbiAgICAgICAgLy8g57y655yB6aG15LqL5Lu25pivIFNESyDnuqfkuovku7bvvIzljbPkvb/otbDkuoYgZWRpdG9yIOmAmumBk+S5n+ebtOaOpeWkluaKm+WIsCBTREsg5a6e5L6L77yMXG4gICAgICAgIC8vIOaWueS+v+Wuv+S4u+mAmui/hyBgc2RrLm9uKCdlbXB0eVBhZ2VTaG93bicsIC4uLilgIOiuoumYheOAglxuICAgICAgICAvLyDlkIzml7bku43kv53nlZkgZW1pdHRlci5lbWl077yM6YG/5YWN56C05Z2PIGVkaXRvci5vbiDnmoTorqLpmIXot6/lvoTjgIJcbiAgICAgICAgaWYgKGlzRW1wdHlQYWdlRXZlbnQoZXZlbnQpKSB7XG4gICAgICAgICAgdGhpcy5lbWl0KGV2ZW50LCBwYXlsb2FkKVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW1pdHRlci5lbWl0KGV2ZW50LCBwYXlsb2FkKVxuICAgICAgfSxcbiAgICAgIHsgYXVkaWVuY2U6IEFVRCB9XG4gICAgKVxuXG4gICAgdGhpcy5iaW5kQ29udGFpbmVyTWV0aG9kSGFuZGxlcnMoKVxuXG4gICAgaWYgKHdpbmRvdy52aXN1YWxWaWV3cG9ydCkge1xuICAgICAgd2luZG93LnZpc3VhbFZpZXdwb3J0LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25WaWV3cG9ydFJlc2l6ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25WaWV3cG9ydFJlc2l6ZSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog5Yid5aeL5YyW5aSE55CG57yW6L6R5Zmo6ZyA6KaB5a655Zmo6L+U5Zue5pWw5o2u55qE5pa55rOVXG4gICAqL1xuICBwcml2YXRlIGJpbmRDb250YWluZXJNZXRob2RIYW5kbGVycygpIHtcbiAgICBjb25zdCBjaGFubmVsID0gdGhpcy5jaGFubmVsXG5cbiAgICBjaGFubmVsLmFkZEludm9rZUhhbmRsZXIoXG4gICAgICBDb250YWluZXJNZXRob2QuR2VuZXJhdGVVcmwsXG4gICAgICBhc3luYyAoXG4gICAgICAgIGZpbGVJZDogc3RyaW5nLFxuICAgICAgICBpbmZvPzogR2VuZXJhdGVVcmxJbmZvLFxuICAgICAgICBzbVBhcmFtcz86IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgICAgICkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29ubmVjdE9wdGlvbnMuZ2VuZXJhdGVVcmwgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFwiJHtDb250YWluZXJNZXRob2QuR2VuZXJhdGVVcmx9XCIgbm90IGZvdW5kYClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICAgIHRoaXMuY29ubmVjdE9wdGlvbnMuZ2VuZXJhdGVVcmwoZmlsZUlkLCBpbmZvLCBzbVBhcmFtcylcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHsgYXVkaWVuY2U6IEFVRCB9XG4gICAgKVxuXG4gICAgY2hhbm5lbC5hZGRJbnZva2VIYW5kbGVyKFxuICAgICAgQ29udGFpbmVyTWV0aG9kLkhhbmRsZUN1c3RvbVRhc2ssXG4gICAgICBhc3luYyAodGFza0lkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbm5lY3RPcHRpb25zLmhhbmRsZUN1c3RvbVRhc2sgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFwiJHtDb250YWluZXJNZXRob2QuSGFuZGxlQ3VzdG9tVGFza31cIiBub3QgZm91bmRgKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCBQcm9taXNlLnJlc29sdmUoXG4gICAgICAgICAgdGhpcy5jb25uZWN0T3B0aW9ucy5oYW5kbGVDdXN0b21UYXNrKHRhc2tJZClcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHsgYXVkaWVuY2U6IEFVRCB9XG4gICAgKVxuXG4gICAgY2hhbm5lbC5hZGRJbnZva2VIYW5kbGVyKFxuICAgICAgQ29udGFpbmVyTWV0aG9kLk9wZW5MaW5rLFxuICAgICAgYXN5bmMgKHVybDogc3RyaW5nLCB0YXJnZXQ/OiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbm5lY3RPcHRpb25zLm9wZW5MaW5rICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBcIiR7Q29udGFpbmVyTWV0aG9kLk9wZW5MaW5rfVwiIG5vdCBmb3VuZGApXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb25uZWN0T3B0aW9ucy5vcGVuTGluayh1cmwsIHRhcmdldClcbiAgICAgIH0sXG4gICAgICB7IGF1ZGllbmNlOiBBVUQgfVxuICAgIClcblxuICAgIGNoYW5uZWwuYWRkSW52b2tlSGFuZGxlcihcbiAgICAgIENvbnRhaW5lck1ldGhvZC5HZXRGaWxlSW5mb0Zyb21VcmwsXG4gICAgICBhc3luYyAodXJsOiBzdHJpbmcpID0+IHtcbiAgICAgICAgLy8gMjAyNDA2MDcg6ZKf56uL5ZKM5Y2i6Ziz5pS55LqGIHNkay1pZnJhbWUtYXNzZXRzIOeahCBwYXJzZVVybCDlh73mlbDkuYvlkI7vvIxnZXRGaWxlSW5mb0Zyb21Vcmwg546w5Zyo5b+F6aG755Sx55So5oi35o+Q5L6bXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25uZWN0T3B0aW9ucy5nZXRGaWxlSW5mb0Zyb21VcmwgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgXCIke0NvbnRhaW5lck1ldGhvZC5HZXRGaWxlSW5mb0Zyb21Vcmx9XCIgbm90IGEgZnVuY3Rpb25gXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbm5lY3RPcHRpb25zLmdldEZpbGVJbmZvRnJvbVVybCh1cmwpXG4gICAgICB9LFxuICAgICAgeyBhdWRpZW5jZTogQVVEIH1cbiAgICApXG5cbiAgICBjaGFubmVsLmFkZEludm9rZUhhbmRsZXIoXG4gICAgICBDb250YWluZXJNZXRob2QuTWVudGlvbkNsaWNrSGFuZGxlckZvck1vYmlsZSxcbiAgICAgIGFzeW5jIChwYXlsb2FkOiBNb3VzZU1vdmVQYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0eXBlb2YgdGhpcy5jb25uZWN0T3B0aW9ucy5tZW50aW9uQ2xpY2tIYW5kbGVyRm9yTW9iaWxlICE9PSAnZnVuY3Rpb24nXG4gICAgICAgICkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBcIiR7Q29udGFpbmVyTWV0aG9kLk1lbnRpb25DbGlja0hhbmRsZXJGb3JNb2JpbGV9XCIgbm90IGZvdW5kYFxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgcGF5bG9hZCA9PT0gJ29iamVjdCcgJiYgcGF5bG9hZCAhPSBudWxsKSB7XG4gICAgICAgICAgY29uc3QgcmVjdCA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICAgIHBheWxvYWQueCArPSByZWN0LnhcbiAgICAgICAgICBwYXlsb2FkLnkgKz0gcmVjdC55XG5cbiAgICAgICAgICBpZiAocGF5bG9hZC5pc01lbnRpb24pIHtcbiAgICAgICAgICAgIHBheWxvYWQubWVudGlvbkluZm8ubGVmdCArPSByZWN0LnhcbiAgICAgICAgICAgIHBheWxvYWQubWVudGlvbkluZm8udG9wICs9IHJlY3QueVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbm5lY3RPcHRpb25zLm1lbnRpb25DbGlja0hhbmRsZXJGb3JNb2JpbGUocGF5bG9hZClcbiAgICAgIH0sXG4gICAgICB7IGF1ZGllbmNlOiBBVUQgfVxuICAgIClcblxuICAgIGNoYW5uZWwuYWRkSW52b2tlSGFuZGxlcihcbiAgICAgIENvbnRhaW5lck1ldGhvZC5HZXRDb250YWluZXJSZWN0LFxuICAgICAgYXN5bmMgKCkgPT4gdGhpcy5nZXRDb250YWluZXJSZWN0KCksXG4gICAgICB7IGF1ZGllbmNlOiBBVUQgfVxuICAgIClcbiAgICBjaGFubmVsLmFkZEludm9rZUhhbmRsZXIoXG4gICAgICBDb250YWluZXJNZXRob2QuU2hvd1RvYXN0LFxuICAgICAgYXN5bmMgKG9wdGlvbnM6IFNob3dUb2FzdE9wdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy5jb25uZWN0T3B0aW9ucy5zaG93VG9hc3Q/LihvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIHsgYXVkaWVuY2U6IEFVRCB9XG4gICAgKVxuICAgIGNoYW5uZWwuYWRkSW52b2tlSGFuZGxlcihcbiAgICAgIENvbnRhaW5lck1ldGhvZC5HZXRDcmVkZW50aWFscyxcbiAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY29ubmVjdE9wdGlvbnMuZ2V0Q3JlZGVudGlhbHM/LigpXG4gICAgICB9LFxuICAgICAgeyBhdWRpZW5jZTogQVVEIH1cbiAgICApXG4gIH1cblxuICBwcml2YXRlIGluaXRIZWFkZXJCYXJzRmFjYWRlKCk6IEhlYWRlckJhcnNGYWNhZGUge1xuICAgIGNvbnN0IGZhY2FkZTogSGVhZGVyQmFyc0ZhY2FkZSA9IHtcbiAgICAgIHZpc2libGU6IGZhbHNlLFxuICAgICAgZ2V0VmlzaWJsZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5zeW5jSGVhZGVyQmFyc1Zpc2libGUoKVxuICAgICAgfSxcbiAgICAgIHNldFZpc2libGU6IGFzeW5jICh2aXNpYmxlOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2V0SGVhZGVyQmFyc1Zpc2libGUodmlzaWJsZSlcbiAgICAgIH0sXG4gICAgICBhZGRDb21tYW5kOiBhc3luYyAoXG4gICAgICAgIGNvbW1hbmQ6IEhlYWRlckJhcnNDb21tYW5kRGVmaW5pdGlvbixcbiAgICAgICAgcG9zQ29tbWFuZDogc3RyaW5nLFxuICAgICAgICBwb3M6ICdiZWZvcmUnIHwgJ2FmdGVyJyA9ICdhZnRlcidcbiAgICAgICkgPT4ge1xuICAgICAgICBjb25zdCB7IG9uQ2xpY2ssIC4uLmNvbW1hbmRQYXlsb2FkIH0gPSBjb21tYW5kXG4gICAgICAgIGNvbnN0IGFkZGVkID0gYXdhaXQgdGhpcy5pbnZva2VIZWFkZXJCYXJzPGJvb2xlYW4+KFxuICAgICAgICAgIEhFQURFUl9CQVJTX01FVEhPRC5hZGRDb21tYW5kLFxuICAgICAgICAgIHsgY29tbWFuZDogY29tbWFuZFBheWxvYWQsIHBvc0NvbW1hbmQsIHBvcyB9XG4gICAgICAgIClcbiAgICAgICAgY29uc3QgY2xpY2tIYW5kbGVyID0gb25DbGlja1xuICAgICAgICBpZiAoYWRkZWQgJiYgdHlwZW9mIGNsaWNrSGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRoaXMuaGVhZGVyQmFyc0NvbW1hbmRPdmVycmlkZXMuc2V0KGNvbW1hbmQuaWQsIGNsaWNrSGFuZGxlcilcbiAgICAgICAgICBhd2FpdCB0aGlzLmludm9rZUhlYWRlckJhcnM8dW5kZWZpbmVkPihcbiAgICAgICAgICAgIEhFQURFUl9CQVJTX01FVEhPRC5zZXRDb21tYW5kQ2FsbGJhY2tFbmFibGVkLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogY29tbWFuZC5pZCxcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWRkZWRcbiAgICAgIH0sXG4gICAgICBnZXRDb21tYW5kOiAoaWQ6IHN0cmluZykgPT4gdGhpcy5nZXRIZWFkZXJCYXJzQ29tbWFuZFJlZihpZCksXG4gICAgICBsaXN0Vmlld0NvbW1hbmRzOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbW1hbmRzID0gYXdhaXQgdGhpcy5pbnZva2VIZWFkZXJCYXJzPEhlYWRlckJhcnNDb21tYW5kU3RhdGVbXT4oXG4gICAgICAgICAgSEVBREVSX0JBUlNfTUVUSE9ELmxpc3RWaWV3Q29tbWFuZHNcbiAgICAgICAgKVxuICAgICAgICB0aGlzLnN5bmNIZWFkZXJCYXJzQ29tbWFuZHMoY29tbWFuZHMpXG4gICAgICAgIHJldHVybiBjb21tYW5kc1xuICAgICAgfSxcbiAgICAgIHNldFRpdGxlRHJhZnQ6IGFzeW5jICh0aXRsZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaW52b2tlSGVhZGVyQmFyczx1bmRlZmluZWQ+KFxuICAgICAgICAgIEhFQURFUl9CQVJTX01FVEhPRC5zZXRUaXRsZURyYWZ0LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRpdGxlXG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgY29uZmlybVRpdGxlQ2hhbmdlOiBhc3luYyAodGl0bGU6IHN0cmluZykgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmludm9rZUhlYWRlckJhcnM8dW5kZWZpbmVkPihcbiAgICAgICAgICBIRUFERVJfQkFSU19NRVRIT0QuY29uZmlybVRpdGxlQ2hhbmdlLFxuICAgICAgICAgIHsgdGl0bGUgfVxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmYWNhZGUsICd2aXNpYmxlJywge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogKCkgPT4gdGhpcy5oZWFkZXJCYXJzVmlzaWJsZSxcbiAgICAgIHNldDogKG5leHQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgdGhpcy5zZXRIZWFkZXJCYXJzVmlzaWJsZShuZXh0KS5jYXRjaCgoZXJyOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbWl0KFxuICAgICAgICAgICAgRXZlbnQuRXJyb3IsXG4gICAgICAgICAgICBlcnIgaW5zdGFuY2VvZiBFcnJvclxuICAgICAgICAgICAgICA/IGVyclxuICAgICAgICAgICAgICA6IG5ldyBFcnJvcihgc2V0IGhlYWRlckJhcnMudmlzaWJsZSBmYWlsZWQ6ICR7U3RyaW5nKGVycil9YClcbiAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gZmFjYWRlXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGludm9rZUhlYWRlckJhcnM8VD4oXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgcGF5bG9hZD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICk6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IGFyZ3MgPSBwYXlsb2FkID09PSB1bmRlZmluZWQgPyBbXSA6IFtwYXlsb2FkXVxuICAgIHJldHVybiBhd2FpdCB0aGlzLmNoYW5uZWwuaW52b2tlKG1ldGhvZCBhcyBhbnksIGFyZ3MsIHtcbiAgICAgIGF1ZGllbmNlOiBBVURcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBzeW5jSGVhZGVyQmFyc0NvbW1hbmRzKGNvbW1hbmRzOiBIZWFkZXJCYXJzQ29tbWFuZFN0YXRlW10pIHtcbiAgICB0aGlzLmhlYWRlckJhcnNDb21tYW5kcy5jbGVhcigpXG4gICAgZm9yIChjb25zdCBjb21tYW5kIG9mIGNvbW1hbmRzKSB7XG4gICAgICB0aGlzLmhlYWRlckJhcnNDb21tYW5kcy5zZXQoY29tbWFuZC5pZCwgY29tbWFuZClcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5SGVhZGVyQmFyc0NoYW5nZWQocGF5bG9hZD86IEhlYWRlckJhcnNDaGFuZ2VkUGF5bG9hZCkge1xuICAgIGNvbnN0IHNuYXBzaG90ID0gcGF5bG9hZD8uc25hcHNob3RcbiAgICBpZiAoIXNuYXBzaG90KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGhpcy5oZWFkZXJCYXJzVmlzaWJsZSA9IHNuYXBzaG90LnZpc2libGVcbiAgICB0aGlzLnN5bmNIZWFkZXJCYXJzQ29tbWFuZHMoc25hcHNob3QuY29tbWFuZHMpXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHN5bmNIZWFkZXJCYXJzVmlzaWJsZSgpIHtcbiAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgdGhpcy5pbnZva2VIZWFkZXJCYXJzPHsgdmlzaWJsZTogYm9vbGVhbiB9PihcbiAgICAgIEhFQURFUl9CQVJTX01FVEhPRC5nZXRWaXNpYmxlXG4gICAgKVxuICAgIHRoaXMuaGVhZGVyQmFyc1Zpc2libGUgPSBwYXlsb2FkLnZpc2libGVcbiAgICByZXR1cm4gdGhpcy5oZWFkZXJCYXJzVmlzaWJsZVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZXRIZWFkZXJCYXJzVmlzaWJsZSh2aXNpYmxlOiBib29sZWFuKSB7XG4gICAgdGhpcy5oZWFkZXJCYXJzVmlzaWJsZSA9IHZpc2libGVcbiAgICBhd2FpdCB0aGlzLmludm9rZUhlYWRlckJhcnM8dW5kZWZpbmVkPihIRUFERVJfQkFSU19NRVRIT0Quc2V0VmlzaWJsZSwge1xuICAgICAgdmlzaWJsZVxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIGdldEhlYWRlckJhcnNDb21tYW5kUmVmKGlkOiBzdHJpbmcpOiBIZWFkZXJCYXJzQ29tbWFuZFJlZiB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmhlYWRlckJhcnNDb21tYW5kUmVmcy5nZXQoaWQpXG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICByZXR1cm4gZXhpc3RpbmdcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaGVhZGVyQmFyc0NvbW1hbmRzLmhhcyhpZCkpIHtcbiAgICAgIHRoaXMuaW52b2tlSGVhZGVyQmFyczx7IGNvbW1hbmQ6IEhlYWRlckJhcnNDb21tYW5kU3RhdGUgfCBudWxsIH0+KFxuICAgICAgICBIRUFERVJfQkFSU19NRVRIT0QuZ2V0Q29tbWFuZCxcbiAgICAgICAgeyBpZCB9XG4gICAgICApXG4gICAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgICAgaWYgKHBheWxvYWQuY29tbWFuZCkge1xuICAgICAgICAgICAgdGhpcy5oZWFkZXJCYXJzQ29tbWFuZHMuc2V0KGlkLCBwYXlsb2FkLmNvbW1hbmQpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycjogdW5rbm93bikgPT4ge1xuICAgICAgICAgIHRoaXMuZW1pdChcbiAgICAgICAgICAgIEV2ZW50LkVycm9yLFxuICAgICAgICAgICAgZXJyIGluc3RhbmNlb2YgRXJyb3JcbiAgICAgICAgICAgICAgPyBlcnJcbiAgICAgICAgICAgICAgOiBuZXcgRXJyb3IoYGZldGNoIGhlYWRlckJhcnMgY29tbWFuZCBmYWlsZWQ6ICR7U3RyaW5nKGVycil9YClcbiAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgY29uc3QgcmVmOiBIZWFkZXJCYXJzQ29tbWFuZFJlZiA9IHtcbiAgICAgIGlkLFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgIGVkaXRhYmxlOiB1bmRlZmluZWQsXG4gICAgICBvbkNvbW1hbmRDbGljazogdW5kZWZpbmVkLFxuICAgICAgZ2V0U3RhdGU6ICgpID0+IHRoaXMuaGVhZGVyQmFyc0NvbW1hbmRzLmdldChpZClcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMocmVmLCB7XG4gICAgICB2aXNpYmxlOiB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiAoKSA9PiB0aGlzLmhlYWRlckJhcnNDb21tYW5kcy5nZXQoaWQpPy52aXNpYmxlICE9PSBmYWxzZSxcbiAgICAgICAgc2V0OiAobmV4dDogYm9vbGVhbikgPT4ge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmhlYWRlckJhcnNDb21tYW5kcy5nZXQoaWQpXG4gICAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaGVhZGVyQmFyc0NvbW1hbmRzLnNldChpZCwgeyAuLi5jdXJyZW50LCB2aXNpYmxlOiBuZXh0IH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaW52b2tlSGVhZGVyQmFyczx1bmRlZmluZWQ+KFxuICAgICAgICAgICAgSEVBREVSX0JBUlNfTUVUSE9ELnNldENvbW1hbmRWaXNpYmxlLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgdmlzaWJsZTogbmV4dFxuICAgICAgICAgICAgfVxuICAgICAgICAgICkuY2F0Y2goKGVycjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbWl0KFxuICAgICAgICAgICAgICBFdmVudC5FcnJvcixcbiAgICAgICAgICAgICAgZXJyIGluc3RhbmNlb2YgRXJyb3JcbiAgICAgICAgICAgICAgICA/IGVyclxuICAgICAgICAgICAgICAgIDogbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgc2V0IGhlYWRlckJhcnMgY29tbWFuZCB2aXNpYmxlIGZhaWxlZDogJHtTdHJpbmcoZXJyKX1gXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGRpc2FibGVkOiB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiAoKSA9PiB0aGlzLmhlYWRlckJhcnNDb21tYW5kcy5nZXQoaWQpPy5kaXNhYmxlZCA9PT0gdHJ1ZSxcbiAgICAgICAgc2V0OiAobmV4dDogYm9vbGVhbikgPT4ge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmhlYWRlckJhcnNDb21tYW5kcy5nZXQoaWQpXG4gICAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaGVhZGVyQmFyc0NvbW1hbmRzLnNldChpZCwgeyAuLi5jdXJyZW50LCBkaXNhYmxlZDogbmV4dCB9KVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmludm9rZUhlYWRlckJhcnM8dW5kZWZpbmVkPihcbiAgICAgICAgICAgIEhFQURFUl9CQVJTX01FVEhPRC5zZXRDb21tYW5kRGlzYWJsZWQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICBkaXNhYmxlZDogbmV4dFxuICAgICAgICAgICAgfVxuICAgICAgICAgICkuY2F0Y2goKGVycjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbWl0KFxuICAgICAgICAgICAgICBFdmVudC5FcnJvcixcbiAgICAgICAgICAgICAgZXJyIGluc3RhbmNlb2YgRXJyb3JcbiAgICAgICAgICAgICAgICA/IGVyclxuICAgICAgICAgICAgICAgIDogbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgc2V0IGhlYWRlckJhcnMgY29tbWFuZCBkaXNhYmxlZCBmYWlsZWQ6ICR7U3RyaW5nKGVycil9YFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlZGl0YWJsZToge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogKCkgPT4gdGhpcy5oZWFkZXJCYXJzQ29tbWFuZHMuZ2V0KGlkKT8uZWRpdGFibGUsXG4gICAgICAgIHNldDogKG5leHQ6IGJvb2xlYW4gfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgICBpZiAoaWQgIT09ICd0aXRsZScpIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdChcbiAgICAgICAgICAgICAgRXZlbnQuRXJyb3IsXG4gICAgICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAnaGVhZGVyQmFycyBjb21tYW5kIGVkaXRhYmxlIGlzIG9ubHkgc3VwcG9ydGVkIGZvciB0aXRsZSdcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmhlYWRlckJhcnNDb21tYW5kcy5nZXQoaWQpXG4gICAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaGVhZGVyQmFyc0NvbW1hbmRzLnNldChpZCwgeyAuLi5jdXJyZW50LCBlZGl0YWJsZTogbmV4dCB9KVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmludm9rZUhlYWRlckJhcnM8dW5kZWZpbmVkPihcbiAgICAgICAgICAgIEhFQURFUl9CQVJTX01FVEhPRC5zZXRDb21tYW5kRWRpdGFibGUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICBlZGl0YWJsZTogbmV4dFxuICAgICAgICAgICAgfVxuICAgICAgICAgICkuY2F0Y2goKGVycjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbWl0KFxuICAgICAgICAgICAgICBFdmVudC5FcnJvcixcbiAgICAgICAgICAgICAgZXJyIGluc3RhbmNlb2YgRXJyb3JcbiAgICAgICAgICAgICAgICA/IGVyclxuICAgICAgICAgICAgICAgIDogbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgc2V0IGhlYWRlckJhcnMgY29tbWFuZCBlZGl0YWJsZSBmYWlsZWQ6ICR7U3RyaW5nKGVycil9YFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBvbkNvbW1hbmRDbGljazoge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogKCkgPT4gdGhpcy5oZWFkZXJCYXJzQ29tbWFuZE92ZXJyaWRlcy5nZXQoaWQpLFxuICAgICAgICBzZXQ6IChoYW5kbGVyOiAoKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD4pIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgICAgdGhpcy5oZWFkZXJCYXJzQ29tbWFuZE92ZXJyaWRlcy5zZXQoaWQsIGhhbmRsZXIpXG4gICAgICAgICAgdGhpcy5pbnZva2VIZWFkZXJCYXJzPHVuZGVmaW5lZD4oXG4gICAgICAgICAgICBIRUFERVJfQkFSU19NRVRIT0Quc2V0Q29tbWFuZENhbGxiYWNrRW5hYmxlZCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHR5cGVvZiBoYW5kbGVyID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKS5jYXRjaCgoZXJyOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVtaXQoXG4gICAgICAgICAgICAgIEV2ZW50LkVycm9yLFxuICAgICAgICAgICAgICBlcnIgaW5zdGFuY2VvZiBFcnJvclxuICAgICAgICAgICAgICAgID8gZXJyXG4gICAgICAgICAgICAgICAgOiBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBzZXQgaGVhZGVyQmFycyBjb21tYW5kIGNhbGxiYWNrIGZhaWxlZDogJHtTdHJpbmcoZXJyKX1gXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG5cbiAgICB0aGlzLmhlYWRlckJhcnNDb21tYW5kUmVmcy5zZXQoaWQsIHJlZilcbiAgICByZXR1cm4gcmVmXG4gIH1cblxuICBwcml2YXRlIGluaXRFZGl0b3IoKSB7XG4gICAgY29uc3QgYWRqdXN0RXZlbnROYW1lID0gKGV2ZW50OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgICAgLy8g5YW85a655pen5LqL5Lu25ZCNXG4gICAgICBpZiAoZXZlbnQgPT09ICdzYXZlU3RhdHVzRGlkQ2hhbmdlJykge1xuICAgICAgICByZXR1cm4gJ3NhdmVTdGF0dXNDaGFuZ2VkJ1xuICAgICAgfVxuICAgICAgcmV0dXJuIGV2ZW50XG4gICAgfVxuXG4gICAgY29uc3QgaW5zdCA9IHtcbiAgICAgIG9uOiBhc3luYyAoZXZlbnQ6IHN0cmluZywgY2FsbGJhY2s6IEV2ZW50Q2FsbGJhY2spID0+IHtcbiAgICAgICAgZXZlbnQgPSBhZGp1c3RFdmVudE5hbWUoZXZlbnQpXG4gICAgICAgIHRoaXMuZW1pdHRlci5vbihldmVudCwgY2FsbGJhY2spXG5cbiAgICAgICAgYXdhaXQgdGhpcy5jaGFubmVsLmludm9rZShJbnZva2VNZXRob2QuTGlzdGVuRWRpdG9yRXZlbnQsIFtldmVudF0sIHtcbiAgICAgICAgICBhdWRpZW5jZTogQVVEXG4gICAgICAgIH0pXG4gICAgICB9LFxuXG4gICAgICBvZmY6IChldmVudDogc3RyaW5nLCBjYWxsYmFjazogRXZlbnRDYWxsYmFjaykgPT4ge1xuICAgICAgICBldmVudCA9IGFkanVzdEV2ZW50TmFtZShldmVudClcbiAgICAgICAgdGhpcy5lbWl0dGVyLm9mZihldmVudCwgY2FsbGJhY2spXG4gICAgICB9LFxuXG4gICAgICBnZXRDb2xsYWJvcmF0b3JzOiAoKSA9PiBbLi4udGhpcy5jb2xsYWJvcmF0b3JzXVxuICAgIH1cblxuICAgIC8vIOWIm+W7uuW1jOWllyBQcm94eSDku6XmlK/mjIHlpJrlsYLnuqfosIPnlKhcbiAgICBjb25zdCBjcmVhdGVOZXN0ZWRQcm94eSA9IChwYXRoOiBzdHJpbmdbXSA9IFtdKTogYW55ID0+IHtcbiAgICAgIGNvbnN0IHByb3h5RnVuYyA9IGZ1bmN0aW9uICgpIHt9XG4gICAgICByZXR1cm4gbmV3IFByb3h5KHByb3h5RnVuYywge1xuICAgICAgICBnZXQ6ICh0YXJnZXQsIHByb3ApID0+IHtcbiAgICAgICAgICAvLyDlpoLmnpzmmK/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/mjIHnmoTor63oqIDlj5blgLzvvJpcbiAgICogMS4gemgtQ07vvIjnroDkvZPkuK3mlofvvIlcbiAgICogMi4gZW7vvIjoi7HmlofvvIlcbiAgICogMy4gamHvvIjml6XmlofvvIlcbiAgICogNC4gYXItU0HvvIjpmL/mi4nkvK/or63vvIlcbiAgICogNS4gcnUtUlXvvIjkv4Tor63vvIlcbiAgICovXG4gIGxhbmc/OiAnemgtQ04nIHwgJ2VuJyB8ICdqYScgfCAnYXItU0EnIHwgJ3J1LVJVJ1xuXG4gIC8qKlxuICAgKiDmmK/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+WItiBoZWFkZXJiYXIg57uE5Lu25piv5ZCm5bGV56S677yMZmFsc2Ug6KGo56S66ZqQ6JeP44CCXG4gICAqL1xuICBoZWFkZXJCYXJzVmlzaWJsZT86IGJvb2xlYW5cblxuICAvKipcbiAgICog5piv5ZCm5pi+56S65YaF572u55qE5Yqg6L295Yqo55S777yM5Y+q5Zyo6Z2Z5oCB6LWE5rqQ5Yqg6L295Yiw57yW6L6R5Zmo5riy5p+T6L+Z5Liq6Zi25q615pi+56S6XG4gICAqL1xuICBzaG93TG9hZGluZ0VmZmVjdD86IGJvb2xlYW5cblxuICAvKipcbiAgICog5piv5ZCm5ZCv55SoIGlmcmFtZSDlhoXnva7pu5jorqTliqDovb3pobXvvIzpu5jorqQgZmFsc2XjgIJcbiAgICog6ZqQ6JeP5ZCO5o6l5YWl5pa55Y+v6Ieq5a6a5LmJ5aSW6YOoIGxvYWRpbmfjgIJcbiAgICovXG4gIHNob3dMb2FkaW5nPzogYm9vbGVhblxuXG4gIC8qKlxuICAgKiBpZnJhbWUg5YaF572u5Yqg6L296aG16YWN572u44CC5LuF5ZyoIGBzaG93TG9hZGluZyA9PT0gdHJ1ZWBcbiAgICog5oiWIGBzaG93TG9hZGluZ0VmZmVjdCA9PT0gdHJ1ZWAg5pe26YCP5Lyg57uZIGlmcmFtZeOAglxuICAgKi9cbiAgbG9hZGluZ09wdGlvbnM/OiBMb2FkaW5nT3B0aW9uc1xuXG4gIC8qKlxuICAgKiDnlKjkuo7lnKjnvJbovpHlmajlj5HotbcgQVBJIOivt+axguaXtu+8jOWvueivt+axguWPguaVsOi/m+ihjOS/ruaUueeahOWHveaVsOOAguivpue7hueUqOazleingeaWh+aho+OAglxuICAgKi9cbiAgYXBpQWRhcHRvcj86IEFQSUFkYXB0b3JcblxuICAvKipcbiAgICog55So5LqO5Zyo57yW6L6R5Zmo5Y+R6LW3IEFQSSDor7fmsYLml7bvvIzlr7nor7fmsYLlj4LmlbDov5vooYzkv67mlLnnmoTlh73mlbDml7bkvKDlhaXnmoTkuIrkuIvmlofmlbDmja7jgIJcbiAgICovXG4gIGFwaUFkYXB0b3JDb250ZXh0PzogUmVxdWVzdENvbnRleHRcblxuICAvKipcbiAgICog55So5LqO5Yik5pat6YCa5L+h5raI5oGv6L+H5pyf5pe26Ze077yM6L+H5pyf5ZCO55qE5raI5oGv5Lya6KKr5oqb5byD77yM6buY6K6kIDUg5YiG6ZKf44CCXG4gICAqL1xuICBtZXNzYWdlRXhwaXJlcz86IG51bWJlclxuXG4gIC8qKlxuICAgKiDliqDlr4blkI7nmoTnlKjmiLdpZFxuICAgKi9cbiAgdXNlclV1aWQ/OiBzdHJpbmdcblxuICAvKipcbiAgICog57y655yB6aG177yIRW1wdHkgUGFnZe+8iemFjee9ruOAglxuICAgKiAtIOS4jeS8oOaIluS8oCBgdHJ1ZWDvvJrlkK/nlKjpu5jorqTnvLrnnIHpobXog73lipvvvIjmnInlhoXnva7lm77niYfkuI7pu5jorqTmlofmoYjvvIwqKuaXoOaMiemSrioq77yJXG4gICAqIC0g5LygIGBmYWxzZWDvvJrlrozlhajlhbPpl61cbiAgICogLSDkvKDlr7nosaHvvJrnsr7nu4bmjqfliLblkK/nlKjnmoQgc2NlbmXjgIF0b2tlbiDov4fmnJ/nrZbnlaXvvIzku6Xlj4rmr4/kuKogc2NlbmUg55qEXG4gICAqICAg5paH5qGIL+aMiemSruiHquWumuS5ie+8iGBvdmVycmlkZXNg77yJ44CC6buY6K6k5LiN5riy5p+T5Lu75L2V5oyJ6ZKu77yM5a6/5Li76ZyA6KaB5oyJ6ZKu5pe25b+F6aG7XG4gICAqICAg5ZyoIGBvdmVycmlkZXNbc2NlbmVdLnByaW1hcnkvc2Vjb25kYXJ5YCDph4zmmL7lvI/phY3nva4gbGFiZWzvvIzngrnlh7vnu5/kuIDop6blj5FcbiAgICogICBgZW1wdHlQYWdlQWN0aW9uYCDkuovku7bnlLHlrr/kuLvlpITnkIbjgIJcbiAgICpcbiAgICog55u45YWz5LqL5Lu277yaYGVtcHR5UGFnZVNob3duYCAvIGBlbXB0eVBhZ2VBY3Rpb25gIC8gYGVtcHR5UGFnZUhpZGRlbmDjgIJcbiAgICog6K+m6KeBIGAuL3R5cGVzL0VtcHR5UGFnZS50c2DjgIJcbiAgICovXG4gIGVtcHR5UGFnZT86IGJvb2xlYW4gfCBFbXB0eVBhZ2VPcHRpb25zXG59XG4iLCJleHBvcnQgZnVuY3Rpb24gYXNzZXJ0PFQ+KFxuICBpbnB1dDogYW55LFxuICBjb25kaXRpb246IChpbnB1dDogYW55KSA9PiBib29sZWFuLFxuICBtZXNzYWdlOiBzdHJpbmdcbik6IFQge1xuICBpZiAoY29uZGl0aW9uKGlucHV0KSkge1xuICAgIHJldHVybiBpbnB1dFxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpXG59XG4iLCJpbXBvcnQgeyBPZmZpY2VTREssIE9mZmljZVNES09wdGlvbnMgfSBmcm9tICcuL09mZmljZVNESydcblxuZXhwb3J0IGludGVyZmFjZSBDb25uZWN0T3B0aW9ucyBleHRlbmRzIE9mZmljZVNES09wdGlvbnMge31cblxuLyoqXG4gKiDliJ3lp4vljJYgU0RL77yM6L+U5ZueIFByb21pc2XvvIzlvZMgUmVhZFN0YXRlIOWPmOS4uiBSZWFkeSDmiJYgRmFpbGVkIOaXtu+8jFByb21pc2Ug5bCG6KKrIHJlc29sdmXjgIJcbiAqIFByb21pc2UgcmVzb3ZsZWQg5LiN5Luj6KGo57yW6L6R5Zmo5bey57uP5a6M5pW05Yqg6L295a6M5q+V77yM5Y+q5Luj6KGoIFNESyDlt7Lnu4/lh4blpIflpb3kuobjgIJcbiAqIOWQjOaXtiBQcm9taXNlIOS4gOebtCBwZW5kaW5nIOS5n+S4jeS7o+ihqOe8lui+keWZqOWKoOi9veWksei0pe+8jOWPquS7o+ihqOaXoOazlemAmui/hyBTREsg5ZKM57yW6L6R5Zmo5Lqk5LqS44CCXG4gKiDmr5TlpoLlj5fmtY/op4jlmajpmZDliLbml6Dms5Xlj5Hlh7ogcG9zdE1lc3NhZ2UoKSDml7bvvIxQcm9taXNlIOWwhuS8muS4gOebtCBwZW5kaW5n44CCXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb25uZWN0KG9wdGlvbnM6IENvbm5lY3RPcHRpb25zKTogUHJvbWlzZTxPZmZpY2VTREs+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzZGsgPSBuZXcgT2ZmaWNlU0RLKG9wdGlvbnMpXG4gICAgYXdhaXQgc2RrLmluaXQoKVxuICAgIHJldHVybiBzZGtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKCdGYWlsZWQgdG8gaW5pdCBPZmZpY2VTREsnLCB7XG4gICAgICBlcnJvcjogZSxcbiAgICAgIG9wdGlvbnNcbiAgICB9KVxuICAgIHRocm93IGVcbiAgfVxufVxuIiwiaW1wb3J0ICogYXMgRG9jdW1lbnRQcm8gZnJvbSAnLi90eXBlcy9Eb2N1bWVudFBybydcbmltcG9ydCAqIGFzIERvY3VtZW50IGZyb20gJy4vdHlwZXMvRG9jdW1lbnQnXG5pbXBvcnQgKiBhcyBTcHJlYWRzaGVldCBmcm9tICcuL3R5cGVzL1NwcmVhZHNoZWV0J1xuaW1wb3J0ICogYXMgUHJlc2VudGF0aW9uIGZyb20gJy4vdHlwZXMvUHJlc2VudGF0aW9uJ1xuaW1wb3J0ICogYXMgVGFibGUgZnJvbSAnLi90eXBlcy9UYWJsZSdcbmltcG9ydCAqIGFzIEZvcm0gZnJvbSAnLi90eXBlcy9Gb3JtJ1xuaW1wb3J0ICogYXMgRmxvd2NoYXJ0IGZyb20gJy4vdHlwZXMvRmxvd0NoYXJ0J1xuaW1wb3J0IHsgRXZlbnRNYXAgYXMgQmFzZUV2ZW50TWFwLCBCYXNlRWRpdG9yIH0gZnJvbSAnLi90eXBlcy9CYXNlRWRpdG9yJ1xuXG5leHBvcnQgKiBmcm9tICd3ZWJvZmZpY2UtanMtc2RrLXNoYXJlZCdcblxuZXhwb3J0ICogZnJvbSAnLi9jb25uZWN0J1xuXG5leHBvcnQgKiBmcm9tICcuL09mZmljZVNESydcblxuZXhwb3J0IHR5cGUge1xuICBFbXB0eVBhZ2VTY2VuZSxcbiAgRW1wdHlQYWdlT3B0aW9ucyxcbiAgRW1wdHlQYWdlQWN0aW9uT3ZlcnJpZGUsXG4gIEVtcHR5UGFnZUNvbnRlbnRPdmVycmlkZSxcbiAgTm9ybWFsaXplZEVtcHR5UGFnZU9wdGlvbnMsXG4gIEVtcHR5UGFnZVNob3duUGF5bG9hZCxcbiAgRW1wdHlQYWdlQWN0aW9uUGF5bG9hZCxcbiAgRW1wdHlQYWdlSGlkZGVuUGF5bG9hZCxcbiAgRmlsZU9wZW5GYWlsZWRSZWFzb24sXG4gIFRva2VuRXhwaXJlZFN0cmF0ZWd5XG59IGZyb20gJy4vdHlwZXMvRW1wdHlQYWdlJ1xuZXhwb3J0IHtcbiAgQUxMX0VNUFRZX1BBR0VfU0NFTkVTLFxuICBub3JtYWxpemVFbXB0eVBhZ2VPcHRpb25zXG59IGZyb20gJy4vdHlwZXMvRW1wdHlQYWdlJ1xuXG5leHBvcnQge1xuICBCYXNlRWRpdG9yLFxuICBEb2N1bWVudFBybyxcbiAgRG9jdW1lbnQsXG4gIFNwcmVhZHNoZWV0LFxuICBQcmVzZW50YXRpb24sXG4gIFRhYmxlLFxuICBGb3JtLFxuICBGbG93Y2hhcnQsXG4gIEJhc2VFdmVudE1hcFxufVxuXG5leHBvcnQgY29uc3QgU1RBUlRfUEFSQU1TX0ZJRUxEID0gJ3NtUGFyYW1zJ1xuIiwiLyoqXG4gKiDnvLrnnIHpobXog73lipvnmoTlr7nlpJblpZHnuqbnsbvlnovjgIJcbiAqXG4gKiDlhbPkuo4gc2NlbmUg5p6a5Li+5b2S5bGe77yI5bey56Gu5a6a77yJ77yaXG4gKiAgIFAxflA0IOWunuaWveacn++8jOS4pOS+p++8iHNoaW1vLWpzLXNkayDkuI4gbGl6YXJkLXNlcnZpY2UtaWZyYW1lLXNka++8ieWcqOacrOWcsCB0eXBlc1xuICogICDmlofku7bph4zmiYvlt6Xkv53mjIHlrZfpnaLph4/kuIDoh7TvvJvogZTosIPnqLPlrprlkI7msonmt4DliLAgYHNoaW1vLWpzLXNkay1zaGFyZWRgIOeahOW4uOmHj+S4reOAglxuICovXG5cbi8qKlxuICog57y655yB6aG15Zy65pmv5p6a5Li+77yM5b+F6aG75LiOIGBsaXphcmQtc2VydmljZS1pZnJhbWUtc2RrYCDkvqflrozlhajkuIDoh7TjgIJcbiAqL1xuZXhwb3J0IHR5cGUgRW1wdHlQYWdlU2NlbmUgPVxuICB8ICdmaWxlLW9wZW4tZmFpbGVkJ1xuICB8ICduby1wZXJtaXNzaW9uJ1xuICB8ICduZXR3b3JrLWVycm9yJ1xuICB8ICd0b2tlbi1leHBpcmVkJ1xuXG4vKipcbiAqIGBmaWxlLW9wZW4tZmFpbGVkYCDkuIvlj6/nu4bliIbnmoTlrZDljp/lm6DvvIzmib/ovb0gSFRUUCDljY/orq7nuqflt67lvILvvJtcbiAqIOS/neaMgSBzY2VuZSDmnprkuL7nspLluqbnqLPlrprvvIznu4boioLpgJrov4cgcmVhc29uIOS4i+mSu+OAglxuICovXG5leHBvcnQgdHlwZSBGaWxlT3BlbkZhaWxlZFJlYXNvbiA9XG4gIHwgJ2ZpbGUtbm90LWZvdW5kJ1xuICB8ICdmaWxlLWRlbGV0ZWQnXG4gIHwgJ2ZpbGUtbG9hZC1mYWlsZWQnXG4gIHwgJ3Vua25vd24nXG5cbmV4cG9ydCB0eXBlIFRva2VuRXhwaXJlZFN0cmF0ZWd5ID0gJ3JlZnJlc2gtZmlyc3QnIHwgJ3Nob3ctaW1tZWRpYXRlbHknXG5cbi8qKlxuICog5Y2V5Liq5oyJ6ZKu55qE6Ieq5a6a5LmJ44CC54K55Ye75ZCO57uf5LiA6Kem5Y+RIGBlbXB0eVBhZ2VBY3Rpb25gIOS6i+S7tu+8jFxuICog5a6/5Li755uR5ZCs5LqL5Lu25ZCO6Ieq6KGM5Yaz5a6a5ZCO57ut6KGM5Li677yI6YeN55m7IC8g6YeN6K+VIC8g6ZqQ6JeP562J77yJ44CCXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1wdHlQYWdlQWN0aW9uT3ZlcnJpZGUge1xuICAvKiog5oyJ6ZKu5paH5qGI44CC5b+F5aGr44CCICovXG4gIGxhYmVsOiBzdHJpbmdcbn1cblxuLyoqXG4gKiDljZXkuKogc2NlbmUg55qE5paH5qGIL+aMiemSruiHquWumuS5ieOAguacquaPkOS+m+eahOWtl+autei1sOWGhee9rum7mOiupO+8iOaWh+ahiOi1sOm7mOiupO+8jOaMiemSruS4jea4suafk++8ieOAglxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVtcHR5UGFnZUNvbnRlbnRPdmVycmlkZSB7XG4gIC8qKiDopobnm5bmoIfpopjjgIIgKi9cbiAgdGl0bGU/OiBzdHJpbmdcbiAgLyoqIOimhuebluaPj+i/sOOAgiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICAvKiog5Li75oyJ6ZKu44CC5LiN5Lyg5YiZ5LiN5riy5p+T5Li75oyJ6ZKu44CCICovXG4gIHByaW1hcnk/OiBFbXB0eVBhZ2VBY3Rpb25PdmVycmlkZVxuICAvKiog5qyh5oyJ6ZKu44CC5LiN5Lyg5YiZ5LiN5riy5p+T5qyh5oyJ6ZKu44CCICovXG4gIHNlY29uZGFyeT86IEVtcHR5UGFnZUFjdGlvbk92ZXJyaWRlXG59XG5cbi8qKlxuICog5a6/5Li76YCa6L+HIGBjb25uZWN0KHsgZW1wdHlQYWdlIH0pYCDkvKDlhaXnmoTphY3nva7jgILmiYDmnInlrZfmrrXlnYflj6/pgInjgIJcbiAqXG4gKiDpu5jorqTooYzkuLrvvJpcbiAqIC0g5Zu+54mHIC8g5paH5qGI77yIdGl0bGUgLyBkZXNjcmlwdGlvbu+8ieWdh+WGhee9ru+8jOWuv+S4u+aXoOmcgOS8oFxuICogLSAqKum7mOiupOS4jea4suafk+S7u+S9leaMiemSrioq44CC5aaC6ZyA5oyJ6ZKu77yM5b+F6aG75ZyoIGBvdmVycmlkZXNbc2NlbmVdLnByaW1hcnkvc2Vjb25kYXJ5YFxuICogICDph4zmmL7lvI/phY3nva4gbGFiZWzjgILmjInpkq7ngrnlh7vnu5/kuIDop6blj5EgYGVtcHR5UGFnZUFjdGlvbmAg5LqL5Lu244CCXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1wdHlQYWdlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiDmgLvlvIDlhbPvvIzpu5jorqQgdHJ1ZeOAglxuICAgKi9cbiAgZW5hYmxlZD86IGJvb2xlYW5cblxuICAvKipcbiAgICog5ZCv55So55qE5Zy65pmv55m95ZCN5Y2V44CC5pyq5oyH5a6a5pe25YWo6YOo5ZCv55So44CCXG4gICAqL1xuICBzY2VuZXM/OiBFbXB0eVBhZ2VTY2VuZVtdXG5cbiAgLyoqXG4gICAqIHRva2VuIOi/h+acn+WcuuaZr+eahOWumuWItuetlueVpe+8mlxuICAgKiAtIGByZWZyZXNoLWZpcnN0YO+8iOm7mOiupO+8ie+8muWFiOi1sOS4gOasoSBnZXRDcmVkZW50aWFscyDliLfmlrDvvIzlpLHotKXlho3lsZXnpLrnvLrnnIHpobVcbiAgICogICAtIOS7heWcqOWuv+S4u+S8oOS6hiBgZ2V0Q3JlZGVudGlhbHNgIOaXtueUn+aViFxuICAgKiAgIC0g5pyA5aSa6YeN6K+VIDEg5qyh77yMNXMg6LaF5pe25oyJ5aSx6LSl5aSE55CGXG4gICAqIC0gYHNob3ctaW1tZWRpYXRlbHlg77ya56uL5Y2z5bGV56S677yM5LiN5YGa5Yi35paw5bCd6K+VXG4gICAqXG4gICAqIOacquS8oCBgZ2V0Q3JlZGVudGlhbHNgIOaXtu+8jOaXoOiuuumFjee9ruWmguS9lemDveaMiSBgc2hvdy1pbW1lZGlhdGVseWAg5omn6KGM44CCXG4gICAqL1xuICB0b2tlbkV4cGlyZWRTdHJhdGVneT86IFRva2VuRXhwaXJlZFN0cmF0ZWd5XG5cbiAgLyoqXG4gICAqIOaMiSBzY2VuZSDoh6rlrprkuYnmlofmoYjlkozmjInpkq7jgILmnKrphY3nva4gc2NlbmUg6LWw6buY6K6k6KGM5Li677yI6buY6K6k5paH5qGIICsg5peg5oyJ6ZKu77yJ44CCXG4gICAqL1xuICBvdmVycmlkZXM/OiBQYXJ0aWFsPFJlY29yZDxFbXB0eVBhZ2VTY2VuZSwgRW1wdHlQYWdlQ29udGVudE92ZXJyaWRlPj5cbn1cblxuLyoqXG4gKiDlvZLkuIDljJblkI7nmoTnvLrnnIHpobXphY3nva7vvIzpgI/kvKDnu5kgaWZyYW1lIOS9v+eUqOOAglxuICog5omA5pyJ5Z+656GA5a2X5q616YO95piv5b+F5aGr5LiU5a6M5pW05aGr5YWF77yMaWZyYW1lIOS+p+S4jemcgOimgeWGjeihpem7mOiupOWAvOOAglxuICogYG92ZXJyaWRlc2Ag5L+d5oyB56iA55aP77yI5LuF5pC65bim5a6/5Li75pi+5byP5Lyg5YWl55qE5a2X5q6177yJ77yM6YG/5YWN6YCP5Lyg5aSa5L2Z5pWw5o2u44CCXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm9ybWFsaXplZEVtcHR5UGFnZU9wdGlvbnMge1xuICBlbmFibGVkOiBib29sZWFuXG4gIHNjZW5lczogRW1wdHlQYWdlU2NlbmVbXVxuICB0b2tlbkV4cGlyZWRTdHJhdGVneTogVG9rZW5FeHBpcmVkU3RyYXRlZ3lcbiAgb3ZlcnJpZGVzOiBQYXJ0aWFsPFJlY29yZDxFbXB0eVBhZ2VTY2VuZSwgRW1wdHlQYWdlQ29udGVudE92ZXJyaWRlPj5cbn1cblxuLyoqXG4gKiBgZW1wdHlQYWdlU2hvd25gIOS6i+S7tiBwYXlsb2Fk44CCXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1wdHlQYWdlU2hvd25QYXlsb2FkIHtcbiAgc2NlbmU6IEVtcHR5UGFnZVNjZW5lXG4gIC8qKlxuICAgKiBzY2VuZSDlhoXnmoTlrZDnsbvlnovvvIjlpoIgRmlsZU9wZW5GYWlsZWRSZWFzb27vvInvvIzlrr/kuLvlj6/nlKjkuo7lrprliLbmlofmoYjmiJbln4vngrnjgIJcbiAgICovXG4gIHJlYXNvbj86IEZpbGVPcGVuRmFpbGVkUmVhc29uIHwgc3RyaW5nXG4gIGh0dHBTdGF0dXM/OiBudW1iZXJcbiAgcmV0cnlhYmxlPzogYm9vbGVhblxufVxuXG4vKipcbiAqIGBlbXB0eVBhZ2VBY3Rpb25gIOS6i+S7tiBwYXlsb2Fk77yM5oyJ6ZKu6KKr54K55Ye75pe26Kem5Y+R44CCXG4gKiDlrr/kuLvmoLnmja4gc2NlbmUgKyBhY3Rpb24g5Yaz5a6a5Lia5Yqh6KGM5Li677yI6YeN55m7IC8g6YeN6K+VIC8g6ZqQ6JeP562J77yJ44CCXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1wdHlQYWdlQWN0aW9uUGF5bG9hZCB7XG4gIHNjZW5lOiBFbXB0eVBhZ2VTY2VuZVxuICBhY3Rpb246ICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknXG59XG5cbi8qKlxuICogYGVtcHR5UGFnZUhpZGRlbmAg5LqL5Lu2IHBheWxvYWTjgIJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbXB0eVBhZ2VIaWRkZW5QYXlsb2FkIHtcbiAgc2NlbmU6IEVtcHR5UGFnZVNjZW5lXG59XG5cbi8qKlxuICog5a6M5pW055qEIHNjZW5lIOWIl+ihqO+8jOeUqOS6juS9nOS4uum7mOiupOWAvOS4juWQiOazleaAp+agoemqjOOAglxuICovXG5leHBvcnQgY29uc3QgQUxMX0VNUFRZX1BBR0VfU0NFTkVTOiBFbXB0eVBhZ2VTY2VuZVtdID0gW1xuICAnZmlsZS1vcGVuLWZhaWxlZCcsXG4gICduby1wZXJtaXNzaW9uJyxcbiAgJ25ldHdvcmstZXJyb3InLFxuICAndG9rZW4tZXhwaXJlZCdcbl1cblxuZnVuY3Rpb24gcmVzb2x2ZVNjZW5lcyhpbnB1dDogRW1wdHlQYWdlU2NlbmVbXSB8IHVuZGVmaW5lZCk6IEVtcHR5UGFnZVNjZW5lW10ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoaW5wdXQpKSB7XG4gICAgcmV0dXJuIFsuLi5BTExfRU1QVFlfUEFHRV9TQ0VORVNdXG4gIH1cblxuICBjb25zdCBmaWx0ZXJlZDogRW1wdHlQYWdlU2NlbmVbXSA9IFtdXG4gIGZvciAoY29uc3Qgc2NlbmUgb2YgaW5wdXQpIHtcbiAgICBpZiAoQUxMX0VNUFRZX1BBR0VfU0NFTkVTLmluY2x1ZGVzKHNjZW5lKSkge1xuICAgICAgZmlsdGVyZWQucHVzaChzY2VuZSlcbiAgICB9XG4gIH1cblxuICBpZiAoZmlsdGVyZWQubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFsuLi5BTExfRU1QVFlfUEFHRV9TQ0VORVNdXG4gIH1cblxuICByZXR1cm4gZmlsdGVyZWRcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVRva2VuRXhwaXJlZFN0cmF0ZWd5KFxuICBpbnB1dDogVG9rZW5FeHBpcmVkU3RyYXRlZ3kgfCB1bmRlZmluZWRcbik6IFRva2VuRXhwaXJlZFN0cmF0ZWd5IHtcbiAgaWYgKGlucHV0ID09PSAnc2hvdy1pbW1lZGlhdGVseScpIHtcbiAgICByZXR1cm4gJ3Nob3ctaW1tZWRpYXRlbHknXG4gIH1cbiAgcmV0dXJuICdyZWZyZXNoLWZpcnN0J1xufVxuXG5mdW5jdGlvbiBwaWNrU3RyaW5nKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoID4gMCA/IHZhbHVlIDogdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVBY3Rpb24oXG4gIGlucHV0OiBFbXB0eVBhZ2VBY3Rpb25PdmVycmlkZSB8IHVuZGVmaW5lZFxuKTogRW1wdHlQYWdlQWN0aW9uT3ZlcnJpZGUgfCB1bmRlZmluZWQge1xuICBpZiAoIWlucHV0IHx8IHR5cGVvZiBpbnB1dCAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbiAgY29uc3QgbGFiZWwgPSBwaWNrU3RyaW5nKGlucHV0LmxhYmVsKVxuICBpZiAoIWxhYmVsKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG4gIHJldHVybiB7IGxhYmVsIH1cbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUNvbnRlbnRPdmVycmlkZShcbiAgaW5wdXQ6IEVtcHR5UGFnZUNvbnRlbnRPdmVycmlkZSB8IHVuZGVmaW5lZFxuKTogRW1wdHlQYWdlQ29udGVudE92ZXJyaWRlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFpbnB1dCB8fCB0eXBlb2YgaW5wdXQgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgY29uc3QgcmVzdWx0OiBFbXB0eVBhZ2VDb250ZW50T3ZlcnJpZGUgPSB7fVxuICBjb25zdCB0aXRsZSA9IHBpY2tTdHJpbmcoaW5wdXQudGl0bGUpXG4gIGlmICh0aXRsZSkge1xuICAgIHJlc3VsdC50aXRsZSA9IHRpdGxlXG4gIH1cbiAgY29uc3QgZGVzY3JpcHRpb24gPSBwaWNrU3RyaW5nKGlucHV0LmRlc2NyaXB0aW9uKVxuICBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICByZXN1bHQuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvblxuICB9XG4gIGNvbnN0IHByaW1hcnkgPSByZXNvbHZlQWN0aW9uKGlucHV0LnByaW1hcnkpXG4gIGlmIChwcmltYXJ5KSB7XG4gICAgcmVzdWx0LnByaW1hcnkgPSBwcmltYXJ5XG4gIH1cbiAgY29uc3Qgc2Vjb25kYXJ5ID0gcmVzb2x2ZUFjdGlvbihpbnB1dC5zZWNvbmRhcnkpXG4gIGlmIChzZWNvbmRhcnkpIHtcbiAgICByZXN1bHQuc2Vjb25kYXJ5ID0gc2Vjb25kYXJ5XG4gIH1cblxuICAvLyDlhajpg6jlrZfmrrXpg73nvLrlpLHml7bop4bkuLpcIuacqumFjee9rlwi77yM6K6p5raI6LS55L6n6LWw6buY6K6k5YiG5pSvXG4gIGlmIChcbiAgICByZXN1bHQudGl0bGUgPT09IHVuZGVmaW5lZCAmJlxuICAgIHJlc3VsdC5kZXNjcmlwdGlvbiA9PT0gdW5kZWZpbmVkICYmXG4gICAgcmVzdWx0LnByaW1hcnkgPT09IHVuZGVmaW5lZCAmJlxuICAgIHJlc3VsdC5zZWNvbmRhcnkgPT09IHVuZGVmaW5lZFxuICApIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVPdmVycmlkZXMoXG4gIGlucHV0OiBFbXB0eVBhZ2VPcHRpb25zWydvdmVycmlkZXMnXVxuKTogUGFydGlhbDxSZWNvcmQ8RW1wdHlQYWdlU2NlbmUsIEVtcHR5UGFnZUNvbnRlbnRPdmVycmlkZT4+IHtcbiAgaWYgKCFpbnB1dCB8fCB0eXBlb2YgaW5wdXQgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIHt9XG4gIH1cblxuICBjb25zdCByZXN1bHQ6IFBhcnRpYWw8UmVjb3JkPEVtcHR5UGFnZVNjZW5lLCBFbXB0eVBhZ2VDb250ZW50T3ZlcnJpZGU+PiA9IHt9XG4gIGZvciAoY29uc3Qgc2NlbmUgb2YgQUxMX0VNUFRZX1BBR0VfU0NFTkVTKSB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlQ29udGVudE92ZXJyaWRlKGlucHV0W3NjZW5lXSlcbiAgICBpZiAocmVzb2x2ZWQpIHtcbiAgICAgIHJlc3VsdFtzY2VuZV0gPSByZXNvbHZlZFxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0XG59XG5cbi8qKlxuICog5oqK5a6/5Li75Lyg5YWl55qEIGBlbXB0eVBhZ2VgIOmFjee9ruW9kuS4gOWMluaIkOWujOaVtOWvueixoeOAglxuICpcbiAqIC0g5pyq5LygIC8gdW5kZWZpbmVk77ya5ZCv55So5YWo6YOoIHNjZW5l77yM5L2/55So6buY6K6kIHRva2VuRXhwaXJlZFN0cmF0ZWd577yM5LiN5pC65bimIG92ZXJyaWRlc1xuICogLSDkvKAgdHJ1Ze+8muetieS7t+S6jiBgeyBlbmFibGVkOiB0cnVlIH1gXG4gKiAtIOS8oCBmYWxzZe+8muetieS7t+S6jiBgeyBlbmFibGVkOiBmYWxzZSB9YO+8jOWFtuS9meWtl+auteS7jeWhq+WFhem7mOiupOS7peS/neivgeW9oueKtuS4gOiHtFxuICogLSDkvKDlr7nosaHvvJrmjInlrZfmrrXopobnm5bvvIzmnKropobnm5bpg6jliIbkvb/nlKjpu5jorqRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUVtcHR5UGFnZU9wdGlvbnMoXG4gIGlucHV0PzogYm9vbGVhbiB8IEVtcHR5UGFnZU9wdGlvbnNcbik6IE5vcm1hbGl6ZWRFbXB0eVBhZ2VPcHRpb25zIHtcbiAgaWYgKGlucHV0ID09PSBmYWxzZSkge1xuICAgIHJldHVybiB7XG4gICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgIHNjZW5lczogWy4uLkFMTF9FTVBUWV9QQUdFX1NDRU5FU10sXG4gICAgICB0b2tlbkV4cGlyZWRTdHJhdGVneTogJ3JlZnJlc2gtZmlyc3QnLFxuICAgICAgb3ZlcnJpZGVzOiB7fVxuICAgIH1cbiAgfVxuXG4gIGlmIChpbnB1dCA9PT0gdHJ1ZSB8fCBpbnB1dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBzY2VuZXM6IFsuLi5BTExfRU1QVFlfUEFHRV9TQ0VORVNdLFxuICAgICAgdG9rZW5FeHBpcmVkU3RyYXRlZ3k6ICdyZWZyZXNoLWZpcnN0JyxcbiAgICAgIG92ZXJyaWRlczoge31cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGVuYWJsZWQ6IHR5cGVvZiBpbnB1dC5lbmFibGVkID09PSAnYm9vbGVhbicgPyBpbnB1dC5lbmFibGVkIDogdHJ1ZSxcbiAgICBzY2VuZXM6IHJlc29sdmVTY2VuZXMoaW5wdXQuc2NlbmVzKSxcbiAgICB0b2tlbkV4cGlyZWRTdHJhdGVneTogcmVzb2x2ZVRva2VuRXhwaXJlZFN0cmF0ZWd5KFxuICAgICAgaW5wdXQudG9rZW5FeHBpcmVkU3RyYXRlZ3lcbiAgICApLFxuICAgIG92ZXJyaWRlczogcmVzb2x2ZU92ZXJyaWRlcyhpbnB1dC5vdmVycmlkZXMpXG4gIH1cbn1cbiIsIi8vIFVuaXF1ZSBJRCBjcmVhdGlvbiByZXF1aXJlcyBhIGhpZ2ggcXVhbGl0eSByYW5kb20gIyBnZW5lcmF0b3IuIEluIHRoZSBicm93c2VyIHdlIHRoZXJlZm9yZVxuLy8gcmVxdWlyZSB0aGUgY3J5cHRvIEFQSSBhbmQgZG8gbm90IHN1cHBvcnQgYnVpbHQtaW4gZmFsbGJhY2sgdG8gbG93ZXIgcXVhbGl0eSByYW5kb20gbnVtYmVyXG4vLyBnZW5lcmF0b3JzIChsaWtlIE1hdGgucmFuZG9tKCkpLlxudmFyIGdldFJhbmRvbVZhbHVlcztcbnZhciBybmRzOCA9IG5ldyBVaW50OEFycmF5KDE2KTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJuZygpIHtcbiAgLy8gbGF6eSBsb2FkIHNvIHRoYXQgZW52aXJvbm1lbnRzIHRoYXQgbmVlZCB0byBwb2x5ZmlsbCBoYXZlIGEgY2hhbmNlIHRvIGRvIHNvXG4gIGlmICghZ2V0UmFuZG9tVmFsdWVzKSB7XG4gICAgLy8gZ2V0UmFuZG9tVmFsdWVzIG5lZWRzIHRvIGJlIGludm9rZWQgaW4gYSBjb250ZXh0IHdoZXJlIFwidGhpc1wiIGlzIGEgQ3J5cHRvIGltcGxlbWVudGF0aW9uLiBBbHNvLFxuICAgIC8vIGZpbmQgdGhlIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIG9mIGNyeXB0byAobXNDcnlwdG8pIG9uIElFMTEuXG4gICAgZ2V0UmFuZG9tVmFsdWVzID0gdHlwZW9mIGNyeXB0byAhPT0gJ3VuZGVmaW5lZCcgJiYgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyAmJiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzLmJpbmQoY3J5cHRvKSB8fCB0eXBlb2YgbXNDcnlwdG8gIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBtc0NyeXB0by5nZXRSYW5kb21WYWx1ZXMgPT09ICdmdW5jdGlvbicgJiYgbXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzLmJpbmQobXNDcnlwdG8pO1xuXG4gICAgaWYgKCFnZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY3J5cHRvLmdldFJhbmRvbVZhbHVlcygpIG5vdCBzdXBwb3J0ZWQuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdXVpZGpzL3V1aWQjZ2V0cmFuZG9tdmFsdWVzLW5vdC1zdXBwb3J0ZWQnKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZ2V0UmFuZG9tVmFsdWVzKHJuZHM4KTtcbn0iLCJleHBvcnQgZGVmYXVsdCAvXig/OlswLTlhLWZdezh9LVswLTlhLWZdezR9LVsxLTVdWzAtOWEtZl17M30tWzg5YWJdWzAtOWEtZl17M30tWzAtOWEtZl17MTJ9fDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCkkL2k7IiwiaW1wb3J0IFJFR0VYIGZyb20gJy4vcmVnZXguanMnO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZSh1dWlkKSB7XG4gIHJldHVybiB0eXBlb2YgdXVpZCA9PT0gJ3N0cmluZycgJiYgUkVHRVgudGVzdCh1dWlkKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdmFsaWRhdGU7IiwiaW1wb3J0IHZhbGlkYXRlIGZyb20gJy4vdmFsaWRhdGUuanMnO1xuLyoqXG4gKiBDb252ZXJ0IGFycmF5IG9mIDE2IGJ5dGUgdmFsdWVzIHRvIFVVSUQgc3RyaW5nIGZvcm1hdCBvZiB0aGUgZm9ybTpcbiAqIFhYWFhYWFhYLVhYWFgtWFhYWC1YWFhYLVhYWFhYWFhYWFhYWFxuICovXG5cbnZhciBieXRlVG9IZXggPSBbXTtcblxuZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7ICsraSkge1xuICBieXRlVG9IZXgucHVzaCgoaSArIDB4MTAwKS50b1N0cmluZygxNikuc3Vic3RyKDEpKTtcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5KGFycikge1xuICB2YXIgb2Zmc2V0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAwO1xuICAvLyBOb3RlOiBCZSBjYXJlZnVsIGVkaXRpbmcgdGhpcyBjb2RlISAgSXQncyBiZWVuIHR1bmVkIGZvciBwZXJmb3JtYW5jZVxuICAvLyBhbmQgd29ya3MgaW4gd2F5cyB5b3UgbWF5IG5vdCBleHBlY3QuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdXVpZGpzL3V1aWQvcHVsbC80MzRcbiAgdmFyIHV1aWQgPSAoYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAwXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDFdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMl1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAzXV0gKyAnLScgKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDRdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgNV1dICsgJy0nICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA2XV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDddXSArICctJyArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgOF1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA5XV0gKyAnLScgKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDEwXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDExXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDEyXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDEzXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDE0XV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDE1XV0pLnRvTG93ZXJDYXNlKCk7IC8vIENvbnNpc3RlbmN5IGNoZWNrIGZvciB2YWxpZCBVVUlELiAgSWYgdGhpcyB0aHJvd3MsIGl0J3MgbGlrZWx5IGR1ZSB0byBvbmVcbiAgLy8gb2YgdGhlIGZvbGxvd2luZzpcbiAgLy8gLSBPbmUgb3IgbW9yZSBpbnB1dCBhcnJheSB2YWx1ZXMgZG9uJ3QgbWFwIHRvIGEgaGV4IG9jdGV0IChsZWFkaW5nIHRvXG4gIC8vIFwidW5kZWZpbmVkXCIgaW4gdGhlIHV1aWQpXG4gIC8vIC0gSW52YWxpZCBpbnB1dCB2YWx1ZXMgZm9yIHRoZSBSRkMgYHZlcnNpb25gIG9yIGB2YXJpYW50YCBmaWVsZHNcblxuICBpZiAoIXZhbGlkYXRlKHV1aWQpKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKCdTdHJpbmdpZmllZCBVVUlEIGlzIGludmFsaWQnKTtcbiAgfVxuXG4gIHJldHVybiB1dWlkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzdHJpbmdpZnk7IiwiaW1wb3J0IHJuZyBmcm9tICcuL3JuZy5qcyc7XG5pbXBvcnQgc3RyaW5naWZ5IGZyb20gJy4vc3RyaW5naWZ5LmpzJzsgLy8gKipgdjEoKWAgLSBHZW5lcmF0ZSB0aW1lLWJhc2VkIFVVSUQqKlxuLy9cbi8vIEluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9MaW9zSy9VVUlELmpzXG4vLyBhbmQgaHR0cDovL2RvY3MucHl0aG9uLm9yZy9saWJyYXJ5L3V1aWQuaHRtbFxuXG52YXIgX25vZGVJZDtcblxudmFyIF9jbG9ja3NlcTsgLy8gUHJldmlvdXMgdXVpZCBjcmVhdGlvbiB0aW1lXG5cblxudmFyIF9sYXN0TVNlY3MgPSAwO1xudmFyIF9sYXN0TlNlY3MgPSAwOyAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3V1aWRqcy91dWlkIGZvciBBUEkgZGV0YWlsc1xuXG5mdW5jdGlvbiB2MShvcHRpb25zLCBidWYsIG9mZnNldCkge1xuICB2YXIgaSA9IGJ1ZiAmJiBvZmZzZXQgfHwgMDtcbiAgdmFyIGIgPSBidWYgfHwgbmV3IEFycmF5KDE2KTtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIHZhciBub2RlID0gb3B0aW9ucy5ub2RlIHx8IF9ub2RlSWQ7XG4gIHZhciBjbG9ja3NlcSA9IG9wdGlvbnMuY2xvY2tzZXEgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMuY2xvY2tzZXEgOiBfY2xvY2tzZXE7IC8vIG5vZGUgYW5kIGNsb2Nrc2VxIG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQgdG8gcmFuZG9tIHZhbHVlcyBpZiB0aGV5J3JlIG5vdFxuICAvLyBzcGVjaWZpZWQuICBXZSBkbyB0aGlzIGxhemlseSB0byBtaW5pbWl6ZSBpc3N1ZXMgcmVsYXRlZCB0byBpbnN1ZmZpY2llbnRcbiAgLy8gc3lzdGVtIGVudHJvcHkuICBTZWUgIzE4OVxuXG4gIGlmIChub2RlID09IG51bGwgfHwgY2xvY2tzZXEgPT0gbnVsbCkge1xuICAgIHZhciBzZWVkQnl0ZXMgPSBvcHRpb25zLnJhbmRvbSB8fCAob3B0aW9ucy5ybmcgfHwgcm5nKSgpO1xuXG4gICAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgICAgLy8gUGVyIDQuNSwgY3JlYXRlIGFuZCA0OC1iaXQgbm9kZSBpZCwgKDQ3IHJhbmRvbSBiaXRzICsgbXVsdGljYXN0IGJpdCA9IDEpXG4gICAgICBub2RlID0gX25vZGVJZCA9IFtzZWVkQnl0ZXNbMF0gfCAweDAxLCBzZWVkQnl0ZXNbMV0sIHNlZWRCeXRlc1syXSwgc2VlZEJ5dGVzWzNdLCBzZWVkQnl0ZXNbNF0sIHNlZWRCeXRlc1s1XV07XG4gICAgfVxuXG4gICAgaWYgKGNsb2Nrc2VxID09IG51bGwpIHtcbiAgICAgIC8vIFBlciA0LjIuMiwgcmFuZG9taXplICgxNCBiaXQpIGNsb2Nrc2VxXG4gICAgICBjbG9ja3NlcSA9IF9jbG9ja3NlcSA9IChzZWVkQnl0ZXNbNl0gPDwgOCB8IHNlZWRCeXRlc1s3XSkgJiAweDNmZmY7XG4gICAgfVxuICB9IC8vIFVVSUQgdGltZXN0YW1wcyBhcmUgMTAwIG5hbm8tc2Vjb25kIHVuaXRzIHNpbmNlIHRoZSBHcmVnb3JpYW4gZXBvY2gsXG4gIC8vICgxNTgyLTEwLTE1IDAwOjAwKS4gIEpTTnVtYmVycyBhcmVuJ3QgcHJlY2lzZSBlbm91Z2ggZm9yIHRoaXMsIHNvXG4gIC8vIHRpbWUgaXMgaGFuZGxlZCBpbnRlcm5hbGx5IGFzICdtc2VjcycgKGludGVnZXIgbWlsbGlzZWNvbmRzKSBhbmQgJ25zZWNzJ1xuICAvLyAoMTAwLW5hbm9zZWNvbmRzIG9mZnNldCBmcm9tIG1zZWNzKSBzaW5jZSB1bml4IGVwb2NoLCAxOTcwLTAxLTAxIDAwOjAwLlxuXG5cbiAgdmFyIG1zZWNzID0gb3B0aW9ucy5tc2VjcyAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5tc2VjcyA6IERhdGUubm93KCk7IC8vIFBlciA0LjIuMS4yLCB1c2UgY291bnQgb2YgdXVpZCdzIGdlbmVyYXRlZCBkdXJpbmcgdGhlIGN1cnJlbnQgY2xvY2tcbiAgLy8gY3ljbGUgdG8gc2ltdWxhdGUgaGlnaGVyIHJlc29sdXRpb24gY2xvY2tcblxuICB2YXIgbnNlY3MgPSBvcHRpb25zLm5zZWNzICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLm5zZWNzIDogX2xhc3ROU2VjcyArIDE7IC8vIFRpbWUgc2luY2UgbGFzdCB1dWlkIGNyZWF0aW9uIChpbiBtc2VjcylcblxuICB2YXIgZHQgPSBtc2VjcyAtIF9sYXN0TVNlY3MgKyAobnNlY3MgLSBfbGFzdE5TZWNzKSAvIDEwMDAwOyAvLyBQZXIgNC4yLjEuMiwgQnVtcCBjbG9ja3NlcSBvbiBjbG9jayByZWdyZXNzaW9uXG5cbiAgaWYgKGR0IDwgMCAmJiBvcHRpb25zLmNsb2Nrc2VxID09PSB1bmRlZmluZWQpIHtcbiAgICBjbG9ja3NlcSA9IGNsb2Nrc2VxICsgMSAmIDB4M2ZmZjtcbiAgfSAvLyBSZXNldCBuc2VjcyBpZiBjbG9jayByZWdyZXNzZXMgKG5ldyBjbG9ja3NlcSkgb3Igd2UndmUgbW92ZWQgb250byBhIG5ld1xuICAvLyB0aW1lIGludGVydmFsXG5cblxuICBpZiAoKGR0IDwgMCB8fCBtc2VjcyA+IF9sYXN0TVNlY3MpICYmIG9wdGlvbnMubnNlY3MgPT09IHVuZGVmaW5lZCkge1xuICAgIG5zZWNzID0gMDtcbiAgfSAvLyBQZXIgNC4yLjEuMiBUaHJvdyBlcnJvciBpZiB0b28gbWFueSB1dWlkcyBhcmUgcmVxdWVzdGVkXG5cblxuICBpZiAobnNlY3MgPj0gMTAwMDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1dWlkLnYxKCk6IENhbid0IGNyZWF0ZSBtb3JlIHRoYW4gMTBNIHV1aWRzL3NlY1wiKTtcbiAgfVxuXG4gIF9sYXN0TVNlY3MgPSBtc2VjcztcbiAgX2xhc3ROU2VjcyA9IG5zZWNzO1xuICBfY2xvY2tzZXEgPSBjbG9ja3NlcTsgLy8gUGVyIDQuMS40IC0gQ29udmVydCBmcm9tIHVuaXggZXBvY2ggdG8gR3JlZ29yaWFuIGVwb2NoXG5cbiAgbXNlY3MgKz0gMTIyMTkyOTI4MDAwMDA7IC8vIGB0aW1lX2xvd2BcblxuICB2YXIgdGwgPSAoKG1zZWNzICYgMHhmZmZmZmZmKSAqIDEwMDAwICsgbnNlY3MpICUgMHgxMDAwMDAwMDA7XG4gIGJbaSsrXSA9IHRsID4+PiAyNCAmIDB4ZmY7XG4gIGJbaSsrXSA9IHRsID4+PiAxNiAmIDB4ZmY7XG4gIGJbaSsrXSA9IHRsID4+PiA4ICYgMHhmZjtcbiAgYltpKytdID0gdGwgJiAweGZmOyAvLyBgdGltZV9taWRgXG5cbiAgdmFyIHRtaCA9IG1zZWNzIC8gMHgxMDAwMDAwMDAgKiAxMDAwMCAmIDB4ZmZmZmZmZjtcbiAgYltpKytdID0gdG1oID4+PiA4ICYgMHhmZjtcbiAgYltpKytdID0gdG1oICYgMHhmZjsgLy8gYHRpbWVfaGlnaF9hbmRfdmVyc2lvbmBcblxuICBiW2krK10gPSB0bWggPj4+IDI0ICYgMHhmIHwgMHgxMDsgLy8gaW5jbHVkZSB2ZXJzaW9uXG5cbiAgYltpKytdID0gdG1oID4+PiAxNiAmIDB4ZmY7IC8vIGBjbG9ja19zZXFfaGlfYW5kX3Jlc2VydmVkYCAoUGVyIDQuMi4yIC0gaW5jbHVkZSB2YXJpYW50KVxuXG4gIGJbaSsrXSA9IGNsb2Nrc2VxID4+PiA4IHwgMHg4MDsgLy8gYGNsb2NrX3NlcV9sb3dgXG5cbiAgYltpKytdID0gY2xvY2tzZXEgJiAweGZmOyAvLyBgbm9kZWBcblxuICBmb3IgKHZhciBuID0gMDsgbiA8IDY7ICsrbikge1xuICAgIGJbaSArIG5dID0gbm9kZVtuXTtcbiAgfVxuXG4gIHJldHVybiBidWYgfHwgc3RyaW5naWZ5KGIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB2MTsiLCJpbXBvcnQgdmFsaWRhdGUgZnJvbSAnLi92YWxpZGF0ZS5qcyc7XG5cbmZ1bmN0aW9uIHBhcnNlKHV1aWQpIHtcbiAgaWYgKCF2YWxpZGF0ZSh1dWlkKSkge1xuICAgIHRocm93IFR5cGVFcnJvcignSW52YWxpZCBVVUlEJyk7XG4gIH1cblxuICB2YXIgdjtcbiAgdmFyIGFyciA9IG5ldyBVaW50OEFycmF5KDE2KTsgLy8gUGFyc2UgIyMjIyMjIyMtLi4uLi0uLi4uLS4uLi4tLi4uLi4uLi4uLi4uXG5cbiAgYXJyWzBdID0gKHYgPSBwYXJzZUludCh1dWlkLnNsaWNlKDAsIDgpLCAxNikpID4+PiAyNDtcbiAgYXJyWzFdID0gdiA+Pj4gMTYgJiAweGZmO1xuICBhcnJbMl0gPSB2ID4+PiA4ICYgMHhmZjtcbiAgYXJyWzNdID0gdiAmIDB4ZmY7IC8vIFBhcnNlIC4uLi4uLi4uLSMjIyMtLi4uLi0uLi4uLS4uLi4uLi4uLi4uLlxuXG4gIGFycls0XSA9ICh2ID0gcGFyc2VJbnQodXVpZC5zbGljZSg5LCAxMyksIDE2KSkgPj4+IDg7XG4gIGFycls1XSA9IHYgJiAweGZmOyAvLyBQYXJzZSAuLi4uLi4uLi0uLi4uLSMjIyMtLi4uLi0uLi4uLi4uLi4uLi5cblxuICBhcnJbNl0gPSAodiA9IHBhcnNlSW50KHV1aWQuc2xpY2UoMTQsIDE4KSwgMTYpKSA+Pj4gODtcbiAgYXJyWzddID0gdiAmIDB4ZmY7IC8vIFBhcnNlIC4uLi4uLi4uLS4uLi4tLi4uLi0jIyMjLS4uLi4uLi4uLi4uLlxuXG4gIGFycls4XSA9ICh2ID0gcGFyc2VJbnQodXVpZC5zbGljZSgxOSwgMjMpLCAxNikpID4+PiA4O1xuICBhcnJbOV0gPSB2ICYgMHhmZjsgLy8gUGFyc2UgLi4uLi4uLi4tLi4uLi0uLi4uLS4uLi4tIyMjIyMjIyMjIyMjXG4gIC8vIChVc2UgXCIvXCIgdG8gYXZvaWQgMzItYml0IHRydW5jYXRpb24gd2hlbiBiaXQtc2hpZnRpbmcgaGlnaC1vcmRlciBieXRlcylcblxuICBhcnJbMTBdID0gKHYgPSBwYXJzZUludCh1dWlkLnNsaWNlKDI0LCAzNiksIDE2KSkgLyAweDEwMDAwMDAwMDAwICYgMHhmZjtcbiAgYXJyWzExXSA9IHYgLyAweDEwMDAwMDAwMCAmIDB4ZmY7XG4gIGFyclsxMl0gPSB2ID4+PiAyNCAmIDB4ZmY7XG4gIGFyclsxM10gPSB2ID4+PiAxNiAmIDB4ZmY7XG4gIGFyclsxNF0gPSB2ID4+PiA4ICYgMHhmZjtcbiAgYXJyWzE1XSA9IHYgJiAweGZmO1xuICByZXR1cm4gYXJyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBwYXJzZTsiLCJpbXBvcnQgc3RyaW5naWZ5IGZyb20gJy4vc3RyaW5naWZ5LmpzJztcbmltcG9ydCBwYXJzZSBmcm9tICcuL3BhcnNlLmpzJztcblxuZnVuY3Rpb24gc3RyaW5nVG9CeXRlcyhzdHIpIHtcbiAgc3RyID0gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHN0cikpOyAvLyBVVEY4IGVzY2FwZVxuXG4gIHZhciBieXRlcyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7XG4gICAgYnl0ZXMucHVzaChzdHIuY2hhckNvZGVBdChpKSk7XG4gIH1cblxuICByZXR1cm4gYnl0ZXM7XG59XG5cbmV4cG9ydCB2YXIgRE5TID0gJzZiYTdiODEwLTlkYWQtMTFkMS04MGI0LTAwYzA0ZmQ0MzBjOCc7XG5leHBvcnQgdmFyIFVSTCA9ICc2YmE3YjgxMS05ZGFkLTExZDEtODBiNC0wMGMwNGZkNDMwYzgnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKG5hbWUsIHZlcnNpb24sIGhhc2hmdW5jKSB7XG4gIGZ1bmN0aW9uIGdlbmVyYXRlVVVJRCh2YWx1ZSwgbmFtZXNwYWNlLCBidWYsIG9mZnNldCkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YWx1ZSA9IHN0cmluZ1RvQnl0ZXModmFsdWUpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbmFtZXNwYWNlID09PSAnc3RyaW5nJykge1xuICAgICAgbmFtZXNwYWNlID0gcGFyc2UobmFtZXNwYWNlKTtcbiAgICB9XG5cbiAgICBpZiAobmFtZXNwYWNlLmxlbmd0aCAhPT0gMTYpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcignTmFtZXNwYWNlIG11c3QgYmUgYXJyYXktbGlrZSAoMTYgaXRlcmFibGUgaW50ZWdlciB2YWx1ZXMsIDAtMjU1KScpO1xuICAgIH0gLy8gQ29tcHV0ZSBoYXNoIG9mIG5hbWVzcGFjZSBhbmQgdmFsdWUsIFBlciA0LjNcbiAgICAvLyBGdXR1cmU6IFVzZSBzcHJlYWQgc3ludGF4IHdoZW4gc3VwcG9ydGVkIG9uIGFsbCBwbGF0Zm9ybXMsIGUuZy4gYGJ5dGVzID1cbiAgICAvLyBoYXNoZnVuYyhbLi4ubmFtZXNwYWNlLCAuLi4gdmFsdWVdKWBcblxuXG4gICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoMTYgKyB2YWx1ZS5sZW5ndGgpO1xuICAgIGJ5dGVzLnNldChuYW1lc3BhY2UpO1xuICAgIGJ5dGVzLnNldCh2YWx1ZSwgbmFtZXNwYWNlLmxlbmd0aCk7XG4gICAgYnl0ZXMgPSBoYXNoZnVuYyhieXRlcyk7XG4gICAgYnl0ZXNbNl0gPSBieXRlc1s2XSAmIDB4MGYgfCB2ZXJzaW9uO1xuICAgIGJ5dGVzWzhdID0gYnl0ZXNbOF0gJiAweDNmIHwgMHg4MDtcblxuICAgIGlmIChidWYpIHtcbiAgICAgIG9mZnNldCA9IG9mZnNldCB8fCAwO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIHtcbiAgICAgICAgYnVmW29mZnNldCArIGldID0gYnl0ZXNbaV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBidWY7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZ2lmeShieXRlcyk7XG4gIH0gLy8gRnVuY3Rpb24jbmFtZSBpcyBub3Qgc2V0dGFibGUgb24gc29tZSBwbGF0Zm9ybXMgKCMyNzApXG5cblxuICB0cnkge1xuICAgIGdlbmVyYXRlVVVJRC5uYW1lID0gbmFtZTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5XG4gIH0gY2F0Y2ggKGVycikge30gLy8gRm9yIENvbW1vbkpTIGRlZmF1bHQgZXhwb3J0IHN1cHBvcnRcblxuXG4gIGdlbmVyYXRlVVVJRC5ETlMgPSBETlM7XG4gIGdlbmVyYXRlVVVJRC5VUkwgPSBVUkw7XG4gIHJldHVybiBnZW5lcmF0ZVVVSUQ7XG59IiwiLypcbiAqIEJyb3dzZXItY29tcGF0aWJsZSBKYXZhU2NyaXB0IE1ENVxuICpcbiAqIE1vZGlmaWNhdGlvbiBvZiBKYXZhU2NyaXB0IE1ENVxuICogaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvSmF2YVNjcmlwdC1NRDVcbiAqXG4gKiBDb3B5cmlnaHQgMjAxMSwgU2ViYXN0aWFuIFRzY2hhblxuICogaHR0cHM6Ly9ibHVlaW1wLm5ldFxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZTpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUXG4gKlxuICogQmFzZWQgb25cbiAqIEEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUlNBIERhdGEgU2VjdXJpdHksIEluYy4gTUQ1IE1lc3NhZ2VcbiAqIERpZ2VzdCBBbGdvcml0aG0sIGFzIGRlZmluZWQgaW4gUkZDIDEzMjEuXG4gKiBWZXJzaW9uIDIuMiBDb3B5cmlnaHQgKEMpIFBhdWwgSm9obnN0b24gMTk5OSAtIDIwMDlcbiAqIE90aGVyIGNvbnRyaWJ1dG9yczogR3JlZyBIb2x0LCBBbmRyZXcgS2VwZXJ0LCBZZG5hciwgTG9zdGluZXRcbiAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCU0QgTGljZW5zZVxuICogU2VlIGh0dHA6Ly9wYWpob21lLm9yZy51ay9jcnlwdC9tZDUgZm9yIG1vcmUgaW5mby5cbiAqL1xuZnVuY3Rpb24gbWQ1KGJ5dGVzKSB7XG4gIGlmICh0eXBlb2YgYnl0ZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFyIG1zZyA9IHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChieXRlcykpOyAvLyBVVEY4IGVzY2FwZVxuXG4gICAgYnl0ZXMgPSBuZXcgVWludDhBcnJheShtc2cubGVuZ3RoKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgKytpKSB7XG4gICAgICBieXRlc1tpXSA9IG1zZy5jaGFyQ29kZUF0KGkpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZDVUb0hleEVuY29kZWRBcnJheSh3b3Jkc1RvTWQ1KGJ5dGVzVG9Xb3JkcyhieXRlcyksIGJ5dGVzLmxlbmd0aCAqIDgpKTtcbn1cbi8qXG4gKiBDb252ZXJ0IGFuIGFycmF5IG9mIGxpdHRsZS1lbmRpYW4gd29yZHMgdG8gYW4gYXJyYXkgb2YgYnl0ZXNcbiAqL1xuXG5cbmZ1bmN0aW9uIG1kNVRvSGV4RW5jb2RlZEFycmF5KGlucHV0KSB7XG4gIHZhciBvdXRwdXQgPSBbXTtcbiAgdmFyIGxlbmd0aDMyID0gaW5wdXQubGVuZ3RoICogMzI7XG4gIHZhciBoZXhUYWIgPSAnMDEyMzQ1Njc4OWFiY2RlZic7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGgzMjsgaSArPSA4KSB7XG4gICAgdmFyIHggPSBpbnB1dFtpID4+IDVdID4+PiBpICUgMzIgJiAweGZmO1xuICAgIHZhciBoZXggPSBwYXJzZUludChoZXhUYWIuY2hhckF0KHggPj4+IDQgJiAweDBmKSArIGhleFRhYi5jaGFyQXQoeCAmIDB4MGYpLCAxNik7XG4gICAgb3V0cHV0LnB1c2goaGV4KTtcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59XG4vKipcbiAqIENhbGN1bGF0ZSBvdXRwdXQgbGVuZ3RoIHdpdGggcGFkZGluZyBhbmQgYml0IGxlbmd0aFxuICovXG5cblxuZnVuY3Rpb24gZ2V0T3V0cHV0TGVuZ3RoKGlucHV0TGVuZ3RoOCkge1xuICByZXR1cm4gKGlucHV0TGVuZ3RoOCArIDY0ID4+PiA5IDw8IDQpICsgMTQgKyAxO1xufVxuLypcbiAqIENhbGN1bGF0ZSB0aGUgTUQ1IG9mIGFuIGFycmF5IG9mIGxpdHRsZS1lbmRpYW4gd29yZHMsIGFuZCBhIGJpdCBsZW5ndGguXG4gKi9cblxuXG5mdW5jdGlvbiB3b3Jkc1RvTWQ1KHgsIGxlbikge1xuICAvKiBhcHBlbmQgcGFkZGluZyAqL1xuICB4W2xlbiA+PiA1XSB8PSAweDgwIDw8IGxlbiAlIDMyO1xuICB4W2dldE91dHB1dExlbmd0aChsZW4pIC0gMV0gPSBsZW47XG4gIHZhciBhID0gMTczMjU4NDE5MztcbiAgdmFyIGIgPSAtMjcxNzMzODc5O1xuICB2YXIgYyA9IC0xNzMyNTg0MTk0O1xuICB2YXIgZCA9IDI3MTczMzg3ODtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHgubGVuZ3RoOyBpICs9IDE2KSB7XG4gICAgdmFyIG9sZGEgPSBhO1xuICAgIHZhciBvbGRiID0gYjtcbiAgICB2YXIgb2xkYyA9IGM7XG4gICAgdmFyIG9sZGQgPSBkO1xuICAgIGEgPSBtZDVmZihhLCBiLCBjLCBkLCB4W2ldLCA3LCAtNjgwODc2OTM2KTtcbiAgICBkID0gbWQ1ZmYoZCwgYSwgYiwgYywgeFtpICsgMV0sIDEyLCAtMzg5NTY0NTg2KTtcbiAgICBjID0gbWQ1ZmYoYywgZCwgYSwgYiwgeFtpICsgMl0sIDE3LCA2MDYxMDU4MTkpO1xuICAgIGIgPSBtZDVmZihiLCBjLCBkLCBhLCB4W2kgKyAzXSwgMjIsIC0xMDQ0NTI1MzMwKTtcbiAgICBhID0gbWQ1ZmYoYSwgYiwgYywgZCwgeFtpICsgNF0sIDcsIC0xNzY0MTg4OTcpO1xuICAgIGQgPSBtZDVmZihkLCBhLCBiLCBjLCB4W2kgKyA1XSwgMTIsIDEyMDAwODA0MjYpO1xuICAgIGMgPSBtZDVmZihjLCBkLCBhLCBiLCB4W2kgKyA2XSwgMTcsIC0xNDczMjMxMzQxKTtcbiAgICBiID0gbWQ1ZmYoYiwgYywgZCwgYSwgeFtpICsgN10sIDIyLCAtNDU3MDU5ODMpO1xuICAgIGEgPSBtZDVmZihhLCBiLCBjLCBkLCB4W2kgKyA4XSwgNywgMTc3MDAzNTQxNik7XG4gICAgZCA9IG1kNWZmKGQsIGEsIGIsIGMsIHhbaSArIDldLCAxMiwgLTE5NTg0MTQ0MTcpO1xuICAgIGMgPSBtZDVmZihjLCBkLCBhLCBiLCB4W2kgKyAxMF0sIDE3LCAtNDIwNjMpO1xuICAgIGIgPSBtZDVmZihiLCBjLCBkLCBhLCB4W2kgKyAxMV0sIDIyLCAtMTk5MDQwNDE2Mik7XG4gICAgYSA9IG1kNWZmKGEsIGIsIGMsIGQsIHhbaSArIDEyXSwgNywgMTgwNDYwMzY4Mik7XG4gICAgZCA9IG1kNWZmKGQsIGEsIGIsIGMsIHhbaSArIDEzXSwgMTIsIC00MDM0MTEwMSk7XG4gICAgYyA9IG1kNWZmKGMsIGQsIGEsIGIsIHhbaSArIDE0XSwgMTcsIC0xNTAyMDAyMjkwKTtcbiAgICBiID0gbWQ1ZmYoYiwgYywgZCwgYSwgeFtpICsgMTVdLCAyMiwgMTIzNjUzNTMyOSk7XG4gICAgYSA9IG1kNWdnKGEsIGIsIGMsIGQsIHhbaSArIDFdLCA1LCAtMTY1Nzk2NTEwKTtcbiAgICBkID0gbWQ1Z2coZCwgYSwgYiwgYywgeFtpICsgNl0sIDksIC0xMDY5NTAxNjMyKTtcbiAgICBjID0gbWQ1Z2coYywgZCwgYSwgYiwgeFtpICsgMTFdLCAxNCwgNjQzNzE3NzEzKTtcbiAgICBiID0gbWQ1Z2coYiwgYywgZCwgYSwgeFtpXSwgMjAsIC0zNzM4OTczMDIpO1xuICAgIGEgPSBtZDVnZyhhLCBiLCBjLCBkLCB4W2kgKyA1XSwgNSwgLTcwMTU1ODY5MSk7XG4gICAgZCA9IG1kNWdnKGQsIGEsIGIsIGMsIHhbaSArIDEwXSwgOSwgMzgwMTYwODMpO1xuICAgIGMgPSBtZDVnZyhjLCBkLCBhLCBiLCB4W2kgKyAxNV0sIDE0LCAtNjYwNDc4MzM1KTtcbiAgICBiID0gbWQ1Z2coYiwgYywgZCwgYSwgeFtpICsgNF0sIDIwLCAtNDA1NTM3ODQ4KTtcbiAgICBhID0gbWQ1Z2coYSwgYiwgYywgZCwgeFtpICsgOV0sIDUsIDU2ODQ0NjQzOCk7XG4gICAgZCA9IG1kNWdnKGQsIGEsIGIsIGMsIHhbaSArIDE0XSwgOSwgLTEwMTk4MDM2OTApO1xuICAgIGMgPSBtZDVnZyhjLCBkLCBhLCBiLCB4W2kgKyAzXSwgMTQsIC0xODczNjM5NjEpO1xuICAgIGIgPSBtZDVnZyhiLCBjLCBkLCBhLCB4W2kgKyA4XSwgMjAsIDExNjM1MzE1MDEpO1xuICAgIGEgPSBtZDVnZyhhLCBiLCBjLCBkLCB4W2kgKyAxM10sIDUsIC0xNDQ0NjgxNDY3KTtcbiAgICBkID0gbWQ1Z2coZCwgYSwgYiwgYywgeFtpICsgMl0sIDksIC01MTQwMzc4NCk7XG4gICAgYyA9IG1kNWdnKGMsIGQsIGEsIGIsIHhbaSArIDddLCAxNCwgMTczNTMyODQ3Myk7XG4gICAgYiA9IG1kNWdnKGIsIGMsIGQsIGEsIHhbaSArIDEyXSwgMjAsIC0xOTI2NjA3NzM0KTtcbiAgICBhID0gbWQ1aGgoYSwgYiwgYywgZCwgeFtpICsgNV0sIDQsIC0zNzg1NTgpO1xuICAgIGQgPSBtZDVoaChkLCBhLCBiLCBjLCB4W2kgKyA4XSwgMTEsIC0yMDIyNTc0NDYzKTtcbiAgICBjID0gbWQ1aGgoYywgZCwgYSwgYiwgeFtpICsgMTFdLCAxNiwgMTgzOTAzMDU2Mik7XG4gICAgYiA9IG1kNWhoKGIsIGMsIGQsIGEsIHhbaSArIDE0XSwgMjMsIC0zNTMwOTU1Nik7XG4gICAgYSA9IG1kNWhoKGEsIGIsIGMsIGQsIHhbaSArIDFdLCA0LCAtMTUzMDk5MjA2MCk7XG4gICAgZCA9IG1kNWhoKGQsIGEsIGIsIGMsIHhbaSArIDRdLCAxMSwgMTI3Mjg5MzM1Myk7XG4gICAgYyA9IG1kNWhoKGMsIGQsIGEsIGIsIHhbaSArIDddLCAxNiwgLTE1NTQ5NzYzMik7XG4gICAgYiA9IG1kNWhoKGIsIGMsIGQsIGEsIHhbaSArIDEwXSwgMjMsIC0xMDk0NzMwNjQwKTtcbiAgICBhID0gbWQ1aGgoYSwgYiwgYywgZCwgeFtpICsgMTNdLCA0LCA2ODEyNzkxNzQpO1xuICAgIGQgPSBtZDVoaChkLCBhLCBiLCBjLCB4W2ldLCAxMSwgLTM1ODUzNzIyMik7XG4gICAgYyA9IG1kNWhoKGMsIGQsIGEsIGIsIHhbaSArIDNdLCAxNiwgLTcyMjUyMTk3OSk7XG4gICAgYiA9IG1kNWhoKGIsIGMsIGQsIGEsIHhbaSArIDZdLCAyMywgNzYwMjkxODkpO1xuICAgIGEgPSBtZDVoaChhLCBiLCBjLCBkLCB4W2kgKyA5XSwgNCwgLTY0MDM2NDQ4Nyk7XG4gICAgZCA9IG1kNWhoKGQsIGEsIGIsIGMsIHhbaSArIDEyXSwgMTEsIC00MjE4MTU4MzUpO1xuICAgIGMgPSBtZDVoaChjLCBkLCBhLCBiLCB4W2kgKyAxNV0sIDE2LCA1MzA3NDI1MjApO1xuICAgIGIgPSBtZDVoaChiLCBjLCBkLCBhLCB4W2kgKyAyXSwgMjMsIC05OTUzMzg2NTEpO1xuICAgIGEgPSBtZDVpaShhLCBiLCBjLCBkLCB4W2ldLCA2LCAtMTk4NjMwODQ0KTtcbiAgICBkID0gbWQ1aWkoZCwgYSwgYiwgYywgeFtpICsgN10sIDEwLCAxMTI2ODkxNDE1KTtcbiAgICBjID0gbWQ1aWkoYywgZCwgYSwgYiwgeFtpICsgMTRdLCAxNSwgLTE0MTYzNTQ5MDUpO1xuICAgIGIgPSBtZDVpaShiLCBjLCBkLCBhLCB4W2kgKyA1XSwgMjEsIC01NzQzNDA1NSk7XG4gICAgYSA9IG1kNWlpKGEsIGIsIGMsIGQsIHhbaSArIDEyXSwgNiwgMTcwMDQ4NTU3MSk7XG4gICAgZCA9IG1kNWlpKGQsIGEsIGIsIGMsIHhbaSArIDNdLCAxMCwgLTE4OTQ5ODY2MDYpO1xuICAgIGMgPSBtZDVpaShjLCBkLCBhLCBiLCB4W2kgKyAxMF0sIDE1LCAtMTA1MTUyMyk7XG4gICAgYiA9IG1kNWlpKGIsIGMsIGQsIGEsIHhbaSArIDFdLCAyMSwgLTIwNTQ5MjI3OTkpO1xuICAgIGEgPSBtZDVpaShhLCBiLCBjLCBkLCB4W2kgKyA4XSwgNiwgMTg3MzMxMzM1OSk7XG4gICAgZCA9IG1kNWlpKGQsIGEsIGIsIGMsIHhbaSArIDE1XSwgMTAsIC0zMDYxMTc0NCk7XG4gICAgYyA9IG1kNWlpKGMsIGQsIGEsIGIsIHhbaSArIDZdLCAxNSwgLTE1NjAxOTgzODApO1xuICAgIGIgPSBtZDVpaShiLCBjLCBkLCBhLCB4W2kgKyAxM10sIDIxLCAxMzA5MTUxNjQ5KTtcbiAgICBhID0gbWQ1aWkoYSwgYiwgYywgZCwgeFtpICsgNF0sIDYsIC0xNDU1MjMwNzApO1xuICAgIGQgPSBtZDVpaShkLCBhLCBiLCBjLCB4W2kgKyAxMV0sIDEwLCAtMTEyMDIxMDM3OSk7XG4gICAgYyA9IG1kNWlpKGMsIGQsIGEsIGIsIHhbaSArIDJdLCAxNSwgNzE4Nzg3MjU5KTtcbiAgICBiID0gbWQ1aWkoYiwgYywgZCwgYSwgeFtpICsgOV0sIDIxLCAtMzQzNDg1NTUxKTtcbiAgICBhID0gc2FmZUFkZChhLCBvbGRhKTtcbiAgICBiID0gc2FmZUFkZChiLCBvbGRiKTtcbiAgICBjID0gc2FmZUFkZChjLCBvbGRjKTtcbiAgICBkID0gc2FmZUFkZChkLCBvbGRkKTtcbiAgfVxuXG4gIHJldHVybiBbYSwgYiwgYywgZF07XG59XG4vKlxuICogQ29udmVydCBhbiBhcnJheSBieXRlcyB0byBhbiBhcnJheSBvZiBsaXR0bGUtZW5kaWFuIHdvcmRzXG4gKiBDaGFyYWN0ZXJzID4yNTUgaGF2ZSB0aGVpciBoaWdoLWJ5dGUgc2lsZW50bHkgaWdub3JlZC5cbiAqL1xuXG5cbmZ1bmN0aW9uIGJ5dGVzVG9Xb3JkcyhpbnB1dCkge1xuICBpZiAoaW5wdXQubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgdmFyIGxlbmd0aDggPSBpbnB1dC5sZW5ndGggKiA4O1xuICB2YXIgb3V0cHV0ID0gbmV3IFVpbnQzMkFycmF5KGdldE91dHB1dExlbmd0aChsZW5ndGg4KSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg4OyBpICs9IDgpIHtcbiAgICBvdXRwdXRbaSA+PiA1XSB8PSAoaW5wdXRbaSAvIDhdICYgMHhmZikgPDwgaSAlIDMyO1xuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn1cbi8qXG4gKiBBZGQgaW50ZWdlcnMsIHdyYXBwaW5nIGF0IDJeMzIuIFRoaXMgdXNlcyAxNi1iaXQgb3BlcmF0aW9ucyBpbnRlcm5hbGx5XG4gKiB0byB3b3JrIGFyb3VuZCBidWdzIGluIHNvbWUgSlMgaW50ZXJwcmV0ZXJzLlxuICovXG5cblxuZnVuY3Rpb24gc2FmZUFkZCh4LCB5KSB7XG4gIHZhciBsc3cgPSAoeCAmIDB4ZmZmZikgKyAoeSAmIDB4ZmZmZik7XG4gIHZhciBtc3cgPSAoeCA+PiAxNikgKyAoeSA+PiAxNikgKyAobHN3ID4+IDE2KTtcbiAgcmV0dXJuIG1zdyA8PCAxNiB8IGxzdyAmIDB4ZmZmZjtcbn1cbi8qXG4gKiBCaXR3aXNlIHJvdGF0ZSBhIDMyLWJpdCBudW1iZXIgdG8gdGhlIGxlZnQuXG4gKi9cblxuXG5mdW5jdGlvbiBiaXRSb3RhdGVMZWZ0KG51bSwgY250KSB7XG4gIHJldHVybiBudW0gPDwgY250IHwgbnVtID4+PiAzMiAtIGNudDtcbn1cbi8qXG4gKiBUaGVzZSBmdW5jdGlvbnMgaW1wbGVtZW50IHRoZSBmb3VyIGJhc2ljIG9wZXJhdGlvbnMgdGhlIGFsZ29yaXRobSB1c2VzLlxuICovXG5cblxuZnVuY3Rpb24gbWQ1Y21uKHEsIGEsIGIsIHgsIHMsIHQpIHtcbiAgcmV0dXJuIHNhZmVBZGQoYml0Um90YXRlTGVmdChzYWZlQWRkKHNhZmVBZGQoYSwgcSksIHNhZmVBZGQoeCwgdCkpLCBzKSwgYik7XG59XG5cbmZ1bmN0aW9uIG1kNWZmKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcbiAgcmV0dXJuIG1kNWNtbihiICYgYyB8IH5iICYgZCwgYSwgYiwgeCwgcywgdCk7XG59XG5cbmZ1bmN0aW9uIG1kNWdnKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcbiAgcmV0dXJuIG1kNWNtbihiICYgZCB8IGMgJiB+ZCwgYSwgYiwgeCwgcywgdCk7XG59XG5cbmZ1bmN0aW9uIG1kNWhoKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcbiAgcmV0dXJuIG1kNWNtbihiIF4gYyBeIGQsIGEsIGIsIHgsIHMsIHQpO1xufVxuXG5mdW5jdGlvbiBtZDVpaShhLCBiLCBjLCBkLCB4LCBzLCB0KSB7XG4gIHJldHVybiBtZDVjbW4oYyBeIChiIHwgfmQpLCBhLCBiLCB4LCBzLCB0KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWQ1OyIsImltcG9ydCB2MzUgZnJvbSAnLi92MzUuanMnO1xuaW1wb3J0IG1kNSBmcm9tICcuL21kNS5qcyc7XG52YXIgdjMgPSB2MzUoJ3YzJywgMHgzMCwgbWQ1KTtcbmV4cG9ydCBkZWZhdWx0IHYzOyIsImltcG9ydCBybmcgZnJvbSAnLi9ybmcuanMnO1xuaW1wb3J0IHN0cmluZ2lmeSBmcm9tICcuL3N0cmluZ2lmeS5qcyc7XG5cbmZ1bmN0aW9uIHY0KG9wdGlvbnMsIGJ1Ziwgb2Zmc2V0KSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICB2YXIgcm5kcyA9IG9wdGlvbnMucmFuZG9tIHx8IChvcHRpb25zLnJuZyB8fCBybmcpKCk7IC8vIFBlciA0LjQsIHNldCBiaXRzIGZvciB2ZXJzaW9uIGFuZCBgY2xvY2tfc2VxX2hpX2FuZF9yZXNlcnZlZGBcblxuICBybmRzWzZdID0gcm5kc1s2XSAmIDB4MGYgfCAweDQwO1xuICBybmRzWzhdID0gcm5kc1s4XSAmIDB4M2YgfCAweDgwOyAvLyBDb3B5IGJ5dGVzIHRvIGJ1ZmZlciwgaWYgcHJvdmlkZWRcblxuICBpZiAoYnVmKSB7XG4gICAgb2Zmc2V0ID0gb2Zmc2V0IHx8IDA7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIHtcbiAgICAgIGJ1ZltvZmZzZXQgKyBpXSA9IHJuZHNbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1ZjtcbiAgfVxuXG4gIHJldHVybiBzdHJpbmdpZnkocm5kcyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHY0OyIsIi8vIEFkYXB0ZWQgZnJvbSBDaHJpcyBWZW5lc3MnIFNIQTEgY29kZSBhdFxuLy8gaHR0cDovL3d3dy5tb3ZhYmxlLXR5cGUuY28udWsvc2NyaXB0cy9zaGExLmh0bWxcbmZ1bmN0aW9uIGYocywgeCwgeSwgeikge1xuICBzd2l0Y2ggKHMpIHtcbiAgICBjYXNlIDA6XG4gICAgICByZXR1cm4geCAmIHkgXiB+eCAmIHo7XG5cbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4geCBeIHkgXiB6O1xuXG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIHggJiB5IF4geCAmIHogXiB5ICYgejtcblxuICAgIGNhc2UgMzpcbiAgICAgIHJldHVybiB4IF4geSBeIHo7XG4gIH1cbn1cblxuZnVuY3Rpb24gUk9UTCh4LCBuKSB7XG4gIHJldHVybiB4IDw8IG4gfCB4ID4+PiAzMiAtIG47XG59XG5cbmZ1bmN0aW9uIHNoYTEoYnl0ZXMpIHtcbiAgdmFyIEsgPSBbMHg1YTgyNzk5OSwgMHg2ZWQ5ZWJhMSwgMHg4ZjFiYmNkYywgMHhjYTYyYzFkNl07XG4gIHZhciBIID0gWzB4Njc0NTIzMDEsIDB4ZWZjZGFiODksIDB4OThiYWRjZmUsIDB4MTAzMjU0NzYsIDB4YzNkMmUxZjBdO1xuXG4gIGlmICh0eXBlb2YgYnl0ZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFyIG1zZyA9IHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChieXRlcykpOyAvLyBVVEY4IGVzY2FwZVxuXG4gICAgYnl0ZXMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgKytpKSB7XG4gICAgICBieXRlcy5wdXNoKG1zZy5jaGFyQ29kZUF0KGkpKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkoYnl0ZXMpKSB7XG4gICAgLy8gQ29udmVydCBBcnJheS1saWtlIHRvIEFycmF5XG4gICAgYnl0ZXMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChieXRlcyk7XG4gIH1cblxuICBieXRlcy5wdXNoKDB4ODApO1xuICB2YXIgbCA9IGJ5dGVzLmxlbmd0aCAvIDQgKyAyO1xuICB2YXIgTiA9IE1hdGguY2VpbChsIC8gMTYpO1xuICB2YXIgTSA9IG5ldyBBcnJheShOKTtcblxuICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgTjsgKytfaSkge1xuICAgIHZhciBhcnIgPSBuZXcgVWludDMyQXJyYXkoMTYpO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCAxNjsgKytqKSB7XG4gICAgICBhcnJbal0gPSBieXRlc1tfaSAqIDY0ICsgaiAqIDRdIDw8IDI0IHwgYnl0ZXNbX2kgKiA2NCArIGogKiA0ICsgMV0gPDwgMTYgfCBieXRlc1tfaSAqIDY0ICsgaiAqIDQgKyAyXSA8PCA4IHwgYnl0ZXNbX2kgKiA2NCArIGogKiA0ICsgM107XG4gICAgfVxuXG4gICAgTVtfaV0gPSBhcnI7XG4gIH1cblxuICBNW04gLSAxXVsxNF0gPSAoYnl0ZXMubGVuZ3RoIC0gMSkgKiA4IC8gTWF0aC5wb3coMiwgMzIpO1xuICBNW04gLSAxXVsxNF0gPSBNYXRoLmZsb29yKE1bTiAtIDFdWzE0XSk7XG4gIE1bTiAtIDFdWzE1XSA9IChieXRlcy5sZW5ndGggLSAxKSAqIDggJiAweGZmZmZmZmZmO1xuXG4gIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IE47ICsrX2kyKSB7XG4gICAgdmFyIFcgPSBuZXcgVWludDMyQXJyYXkoODApO1xuXG4gICAgZm9yICh2YXIgdCA9IDA7IHQgPCAxNjsgKyt0KSB7XG4gICAgICBXW3RdID0gTVtfaTJdW3RdO1xuICAgIH1cblxuICAgIGZvciAodmFyIF90ID0gMTY7IF90IDwgODA7ICsrX3QpIHtcbiAgICAgIFdbX3RdID0gUk9UTChXW190IC0gM10gXiBXW190IC0gOF0gXiBXW190IC0gMTRdIF4gV1tfdCAtIDE2XSwgMSk7XG4gICAgfVxuXG4gICAgdmFyIGEgPSBIWzBdO1xuICAgIHZhciBiID0gSFsxXTtcbiAgICB2YXIgYyA9IEhbMl07XG4gICAgdmFyIGQgPSBIWzNdO1xuICAgIHZhciBlID0gSFs0XTtcblxuICAgIGZvciAodmFyIF90MiA9IDA7IF90MiA8IDgwOyArK190Mikge1xuICAgICAgdmFyIHMgPSBNYXRoLmZsb29yKF90MiAvIDIwKTtcbiAgICAgIHZhciBUID0gUk9UTChhLCA1KSArIGYocywgYiwgYywgZCkgKyBlICsgS1tzXSArIFdbX3QyXSA+Pj4gMDtcbiAgICAgIGUgPSBkO1xuICAgICAgZCA9IGM7XG4gICAgICBjID0gUk9UTChiLCAzMCkgPj4+IDA7XG4gICAgICBiID0gYTtcbiAgICAgIGEgPSBUO1xuICAgIH1cblxuICAgIEhbMF0gPSBIWzBdICsgYSA+Pj4gMDtcbiAgICBIWzFdID0gSFsxXSArIGIgPj4+IDA7XG4gICAgSFsyXSA9IEhbMl0gKyBjID4+PiAwO1xuICAgIEhbM10gPSBIWzNdICsgZCA+Pj4gMDtcbiAgICBIWzRdID0gSFs0XSArIGUgPj4+IDA7XG4gIH1cblxuICByZXR1cm4gW0hbMF0gPj4gMjQgJiAweGZmLCBIWzBdID4+IDE2ICYgMHhmZiwgSFswXSA+PiA4ICYgMHhmZiwgSFswXSAmIDB4ZmYsIEhbMV0gPj4gMjQgJiAweGZmLCBIWzFdID4+IDE2ICYgMHhmZiwgSFsxXSA+PiA4ICYgMHhmZiwgSFsxXSAmIDB4ZmYsIEhbMl0gPj4gMjQgJiAweGZmLCBIWzJdID4+IDE2ICYgMHhmZiwgSFsyXSA+PiA4ICYgMHhmZiwgSFsyXSAmIDB4ZmYsIEhbM10gPj4gMjQgJiAweGZmLCBIWzNdID4+IDE2ICYgMHhmZiwgSFszXSA+PiA4ICYgMHhmZiwgSFszXSAmIDB4ZmYsIEhbNF0gPj4gMjQgJiAweGZmLCBIWzRdID4+IDE2ICYgMHhmZiwgSFs0XSA+PiA4ICYgMHhmZiwgSFs0XSAmIDB4ZmZdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzaGExOyIsImltcG9ydCB2MzUgZnJvbSAnLi92MzUuanMnO1xuaW1wb3J0IHNoYTEgZnJvbSAnLi9zaGExLmpzJztcbnZhciB2NSA9IHYzNSgndjUnLCAweDUwLCBzaGExKTtcbmV4cG9ydCBkZWZhdWx0IHY1OyIsImV4cG9ydCBkZWZhdWx0ICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnOyIsImltcG9ydCB2YWxpZGF0ZSBmcm9tICcuL3ZhbGlkYXRlLmpzJztcblxuZnVuY3Rpb24gdmVyc2lvbih1dWlkKSB7XG4gIGlmICghdmFsaWRhdGUodXVpZCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ0ludmFsaWQgVVVJRCcpO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlSW50KHV1aWQuc3Vic3RyKDE0LCAxKSwgMTYpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB2ZXJzaW9uOyIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG52YXIgX19yZWFkID0gKHRoaXMgJiYgdGhpcy5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG52YXIgX2E7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmNvbnZlcnRGaWxlVHlwZSA9IGV4cG9ydHMuRmlsZVR5cGVBbGlhcyA9IGV4cG9ydHMuRmlsZVR5cGUgPSB2b2lkIDA7XG4vKipcbiAqIOefs+WiqOaWh+aho+exu+Wei1xuICovXG52YXIgRmlsZVR5cGU7XG4oZnVuY3Rpb24gKEZpbGVUeXBlKSB7XG4gICAgLyoqXG4gICAgICog5Lyg57uf5paH5qGjXG4gICAgICovXG4gICAgRmlsZVR5cGVbXCJEb2N1bWVudFByb1wiXSA9IFwiZG9jdW1lbnRQcm9cIjtcbiAgICAvKipcbiAgICAgKiDovbvmlofmoaNcbiAgICAgKi9cbiAgICBGaWxlVHlwZVtcIkRvY3VtZW50XCJdID0gXCJkb2N1bWVudFwiO1xuICAgIC8qKlxuICAgICAqIOihqOagvFxuICAgICAqL1xuICAgIEZpbGVUeXBlW1wiU3ByZWFkc2hlZXRcIl0gPSBcInNwcmVhZHNoZWV0XCI7XG4gICAgLyoqXG4gICAgICog5LiT5Lia5bm754Gv54mHXG4gICAgICovXG4gICAgRmlsZVR5cGVbXCJQcmVzZW50YXRpb25cIl0gPSBcInByZXNlbnRhdGlvblwiO1xuICAgIC8qKlxuICAgICAqIOW6lOeUqOihqOagvFxuICAgICAqL1xuICAgIEZpbGVUeXBlW1wiVGFibGVcIl0gPSBcInRhYmxlXCI7XG4gICAgLyoqXG4gICAgICog6KGo5Y2VXG4gICAgICovXG4gICAgRmlsZVR5cGVbXCJGb3JtXCJdID0gXCJmb3JtXCI7XG4gICAgLyoqXG4gICAgICog5rWB56iL5Zu+XG4gICAgICovXG4gICAgRmlsZVR5cGVbXCJGbG93Y2hhcnRcIl0gPSBcImZsb3djaGFydFwiO1xuICAgIC8qKlxuICAgICAqIOaAnee7tOWvvOWbvlxuICAgICAqL1xuICAgIEZpbGVUeXBlW1wiTWluZG1hcFwiXSA9IFwibWluZG1hcFwiO1xuICAgIC8qKlxuICAgICAqIOeZveadv1xuICAgICAqL1xuICAgIEZpbGVUeXBlW1wiQm9hcmRcIl0gPSBcImJvYXJkXCI7XG4gICAgLyoqXG4gICAgICog5pyq55+l57G75Z6LXG4gICAgICovXG4gICAgRmlsZVR5cGVbXCJVbmtub3duXCJdID0gXCJ1bmtub3duXCI7XG59KShGaWxlVHlwZSA9IGV4cG9ydHMuRmlsZVR5cGUgfHwgKGV4cG9ydHMuRmlsZVR5cGUgPSB7fSkpO1xuZXhwb3J0cy5GaWxlVHlwZUFsaWFzID0gKF9hID0ge30sXG4gICAgX2FbRmlsZVR5cGUuRG9jdW1lbnRdID0gJ2RvY3MnLFxuICAgIF9hW0ZpbGVUeXBlLkRvY3VtZW50UHJvXSA9ICdkb2N4JyxcbiAgICBfYVtGaWxlVHlwZS5TcHJlYWRzaGVldF0gPSAnc2hlZXRzJyxcbiAgICBfYVtGaWxlVHlwZS5QcmVzZW50YXRpb25dID0gJ3ByZXNlbnRhdGlvbicsXG4gICAgX2FbRmlsZVR5cGUuVGFibGVdID0gJ3RhYmxlJyxcbiAgICBfYVtGaWxlVHlwZS5Gb3JtXSA9ICdmb3JtJyxcbiAgICBfYVtGaWxlVHlwZS5NaW5kbWFwXSA9ICdtaW5kbWFwJyxcbiAgICBfYVtGaWxlVHlwZS5Cb2FyZF0gPSAnYm9hcmQnLFxuICAgIF9hW0ZpbGVUeXBlLkZsb3djaGFydF0gPSAnZmxvd2NoYXJ0JyxcbiAgICBfYSk7XG4vKipcbiAqIOagueaNruS8oOWFpeWAvOi9rOaNouS4uiBGaWxlVHlwZSDmnprkuL7lgLxcbiAqL1xuZnVuY3Rpb24gY29udmVydEZpbGVUeXBlKHZhbHVlKSB7XG4gICAgdmFyIGVfMSwgX2EsIGVfMiwgX2I7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIF9jID0gX192YWx1ZXMoT2JqZWN0LmVudHJpZXMoRmlsZVR5cGUpKSwgX2QgPSBfYy5uZXh0KCk7ICFfZC5kb25lOyBfZCA9IF9jLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBfZSA9IF9fcmVhZChfZC52YWx1ZSwgMiksIGsgPSBfZVswXSwgdiA9IF9lWzFdO1xuICAgICAgICAgICAgICAgIGlmIChrID09PSB2YWx1ZSB8fCB2ID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChfZCAmJiAhX2QuZG9uZSAmJiAoX2EgPSBfYy5yZXR1cm4pKSBfYS5jYWxsKF9jKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2YgPSBfX3ZhbHVlcyhPYmplY3QuZW50cmllcyhleHBvcnRzLkZpbGVUeXBlQWxpYXMpKSwgX2cgPSBfZi5uZXh0KCk7ICFfZy5kb25lOyBfZyA9IF9mLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBfaCA9IF9fcmVhZChfZy52YWx1ZSwgMiksIGsgPSBfaFswXSwgdiA9IF9oWzFdO1xuICAgICAgICAgICAgICAgIGlmICh2ID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMl8xKSB7IGVfMiA9IHsgZXJyb3I6IGVfMl8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChfZyAmJiAhX2cuZG9uZSAmJiAoX2IgPSBfZi5yZXR1cm4pKSBfYi5jYWxsKF9mKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yKSB0aHJvdyBlXzIuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgc3dpdGNoICh2YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSAtMjpcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGUuRG9jdW1lbnQ7XG4gICAgICAgICAgICBjYXNlIC00OlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZS5TcHJlYWRzaGVldDtcbiAgICAgICAgICAgIGNhc2UgLTY6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlLkRvY3VtZW50UHJvO1xuICAgICAgICAgICAgY2FzZSAtNzpcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGUuTWluZG1hcDtcbiAgICAgICAgICAgIGNhc2UgLTg6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlLkZvcm07XG4gICAgICAgICAgICBjYXNlIC05OlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZS5Cb2FyZDtcbiAgICAgICAgICAgIGNhc2UgLTEwOlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZS5QcmVzZW50YXRpb247XG4gICAgICAgICAgICBjYXNlIC0xMTpcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGUuVGFibGU7XG4gICAgICAgICAgICBjYXNlIC0xMzpcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGUuRmxvd2NoYXJ0O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBGaWxlVHlwZS5Vbmtub3duO1xufVxuZXhwb3J0cy5jb252ZXJ0RmlsZVR5cGUgPSBjb252ZXJ0RmlsZVR5cGU7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuUmVhZHlTdGF0ZSA9IGV4cG9ydHMuaXNTREtFdmVudE1lc3NhZ2UgPSBleHBvcnRzLlNES0V2ZW50ID0gdm9pZCAwO1xuLyoqXG4gKiBTREsg55u45YWz55qE5LqL5Lu277yM5ZKM57yW6L6R5Zmo5peg5YWzXG4gKi9cbmV4cG9ydHMuU0RLRXZlbnQgPSBPYmplY3QuZnJlZXplKHtcbiAgICAvKipcbiAgICAgKiDkuIDoiKzmjIcgY29udGFpbmVyIHZpZXdwb3J0IOWPkeeUn+WPmOWMluaXtuinpuWPke+8jOavlOWmgueql+WPo+Wkp+Wwj+WPmOWMluOAguS8muS8mOWFiOS9v+eUqCB3aW5kb3cudmlzdWFsVmlld3BvcnQgcmVzaXplIOS6i+S7tu+8jOS4jeWPr+eUqOaXtuS9v+eUqCB3aW5kb3cucmVzaXplIOS6i+S7tuOAglxuICAgICAqL1xuICAgIFZpZXdwb3J0UmVzaXplOiAnVmlld3BvcnRSZXNpemUnLFxuICAgIC8qKlxuICAgICAqIFNESyDlkoznvJbovpHlmajliJ3lp4vljJbnirbmgIFcbiAgICAgKi9cbiAgICBSZWFkeVN0YXRlOiAnUmVhZHlTdGF0ZScsXG59KTtcbi8qKlxuICog5Yik5pat5piv5ZCm5pivIFNES0V2ZW50IOS6i+S7tua2iOaBr1xuICovXG5mdW5jdGlvbiBpc1NES0V2ZW50TWVzc2FnZShpbnB1dCkge1xuICAgIHZhciBldmVudDtcbiAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICBldmVudCA9IGlucHV0LmV2ZW50O1xuICAgIH1cbiAgICByZXR1cm4gdHlwZW9mIGV2ZW50ID09PSAnc3RyaW5nJyAmJiBldmVudCBpbiBleHBvcnRzLlNES0V2ZW50O1xufVxuZXhwb3J0cy5pc1NES0V2ZW50TWVzc2FnZSA9IGlzU0RLRXZlbnRNZXNzYWdlO1xuLyoqXG4gKiBTREsg5ZKM57yW6L6R5Zmo5Yid5aeL5YyW54q25oCBXG4gKi9cbnZhciBSZWFkeVN0YXRlO1xuKGZ1bmN0aW9uIChSZWFkeVN0YXRlKSB7XG4gICAgLyoqXG4gICAgICog5q2j5Zyo5Yid5aeL5YyWIFNES1xuICAgICAqL1xuICAgIFJlYWR5U3RhdGVbXCJMb2FkaW5nXCJdID0gXCJsb2FkaW5nXCI7XG4gICAgLyoqXG4gICAgICog5q2j5Zyo5Yid5aeL5YyW57yW6L6R5ZmoXG4gICAgICovXG4gICAgUmVhZHlTdGF0ZVtcIkxvYWRpbmdFZGl0b3JcIl0gPSBcImxvYWRpbmdFZGl0b3JcIjtcbiAgICAvKipcbiAgICAgKiBTREsg5ZKM57yW6L6R5Zmo5Yid5aeL5YyW5a6M5oiQ77yM5Zug57yW6L6R5Zmo5ZCr5byC5q2l57uE5Lu277yM5Zug5q2k5LuF5Luj6KGo5Y+v5Lul5ZKM57yW6L6R5Zmo5Lqk5LqS77yM5LiN5Luj6KGo57yW6L6R5Zmo5a6M5oiQ5YWo6YOo5Yqg6L2944CCXG4gICAgICovXG4gICAgUmVhZHlTdGF0ZVtcIlJlYWR5XCJdID0gXCJyZWFkeVwiO1xuICAgIC8qKlxuICAgICAqIOWIneWni+WMluWksei0pVxuICAgICAqL1xuICAgIFJlYWR5U3RhdGVbXCJGYWlsZWRcIl0gPSBcImZhaWxlZFwiO1xuICAgIC8qKlxuICAgICAqIOW3sue7j+iiq+mUgOavgVxuICAgICAqL1xuICAgIFJlYWR5U3RhdGVbXCJEaXNjb25uZWN0ZWRcIl0gPSBcImRpc2Nvbm5lY3RlZFwiO1xufSkoUmVhZHlTdGF0ZSA9IGV4cG9ydHMuUmVhZHlTdGF0ZSB8fCAoZXhwb3J0cy5SZWFkeVN0YXRlID0ge30pKTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fY3JlYXRlQmluZGluZyA9ICh0aGlzICYmIHRoaXMuX19jcmVhdGVCaW5kaW5nKSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XG4gICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIG9bazJdID0gbVtrXTtcbn0pKTtcbnZhciBfX2V4cG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9fZXhwb3J0U3RhcikgfHwgZnVuY3Rpb24obSwgZXhwb3J0cykge1xuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXhwb3J0cywgcCkpIF9fY3JlYXRlQmluZGluZyhleHBvcnRzLCBtLCBwKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vdHlwZXNcIiksIGV4cG9ydHMpO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL0FQSUFkYXB0b3JcIiksIGV4cG9ydHMpO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL0ZpbGVcIiksIGV4cG9ydHMpO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL2V2ZW50XCIpLCBleHBvcnRzKTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5VcmxTaGFyaW5nVHlwZSA9IGV4cG9ydHMuU3ByZWFkc2hlZXRTaGFyaW5nRnJvbSA9IGV4cG9ydHMuQ29udGFpbmVyTWV0aG9kID0gZXhwb3J0cy5JbnZva2VNZXRob2QgPSB2b2lkIDA7XG4vKipcbiAqIEpTIFNESyDkuYvpl7TpgJrkv6HnlKjnmoTmlrnms5XjgILkuIDoiKznlKjlnKggV2Vib2ZmaWNlQnJvYWRjYXN0Q2hhbm5lbC5pbnZva2UoKSDkuK3jgIJcbiAqL1xudmFyIEludm9rZU1ldGhvZDtcbihmdW5jdGlvbiAoSW52b2tlTWV0aG9kKSB7XG4gICAgLyoqXG4gICAgICogU0RLIOWIneWni+WMlu+8jOeUqOS6juiOt+WPlumFjee9ruS/oeaBr1xuICAgICAqL1xuICAgIEludm9rZU1ldGhvZFtcIlNES0luaXRcIl0gPSBcIlNES0luaXRcIjtcbiAgICAvKipcbiAgICAgKiDnlKjkuo4gZXJyb3Ig5aSE55CGXG4gICAgICovXG4gICAgSW52b2tlTWV0aG9kW1wiRXJyb3JcIl0gPSBcImVycm9yXCI7XG4gICAgLyoqXG4gICAgICog55So5LqO5aSE55CGIFJlYWR5U3RhdGUg5Y+Y5YyWXG4gICAgICovXG4gICAgSW52b2tlTWV0aG9kW1wiUmVhZHlTdGF0ZVwiXSA9IFwicmVhZHlTdGF0ZVwiO1xuICAgIC8qKlxuICAgICAqIOeUqOS6juabtOaWsOmJtOadg+S/oeaBr1xuICAgICAqL1xuICAgIEludm9rZU1ldGhvZFtcIlNldENyZWRlbnRpYWxzXCJdID0gXCJzZXRDcmVkZW50aWFsc1wiO1xuICAgIC8qKlxuICAgICAqIOiwg+eUqOWuueWZqOaWueazlVxuICAgICAqL1xuICAgIEludm9rZU1ldGhvZFtcIkludm9rZUNvbnRhaW5lck1ldGhvZFwiXSA9IFwiaW52b2tlQ29udGFpbmVyTWV0aG9kXCI7XG4gICAgLyoqXG4gICAgICog6K+35rGC6LCD55So57yW6L6R5Zmo5pa55rOV77yM5bm25bCG57uT5p6c6L+U5ZueXG4gICAgICovXG4gICAgSW52b2tlTWV0aG9kW1wiSW52b2tlRWRpdG9yTWV0aG9kXCJdID0gXCJpbnZva2VFZGl0b3JNZXRob2RcIjtcbiAgICAvKipcbiAgICAgKiDmtL7lj5EgU0RLIOiHqui6q+ebuOWFs+eahOS6i+S7tlxuICAgICAqL1xuICAgIEludm9rZU1ldGhvZFtcIkRpc3BhdGNoU0RLRXZlbnRcIl0gPSBcImRpc3BhdGNoU0RLRXZlbnRcIjtcbiAgICAvKipcbiAgICAgKiDmtL7lj5HnvJbovpHlmajnm7jlhbPnmoTkuovku7ZcbiAgICAgKi9cbiAgICBJbnZva2VNZXRob2RbXCJEaXNwYXRjaEVkaXRvckV2ZW50XCJdID0gXCJkaXNwYXRjaEVkaXRvckV2ZW50XCI7XG4gICAgLyoqXG4gICAgICog55uR5ZCs57yW6L6R5Zmo55u45YWz55qE5LqL5Lu2XG4gICAgICovXG4gICAgSW52b2tlTWV0aG9kW1wiTGlzdGVuRWRpdG9yRXZlbnRcIl0gPSBcImxpc3RlbkVkaXRvckV2ZW50XCI7XG4gICAgLyoqXG4gICAgICog6K+35rGC5oCn6IO95L+h5oGv5YiX6KGoXG4gICAgICovXG4gICAgSW52b2tlTWV0aG9kW1wiUmVxdWVzdFBlcmZvcm1hbmNlRW50cmllc1wiXSA9IFwicmVxdWVzdFBlcmZvcm1hbmNlRW50cmllc1wiO1xufSkoSW52b2tlTWV0aG9kID0gZXhwb3J0cy5JbnZva2VNZXRob2QgfHwgKGV4cG9ydHMuSW52b2tlTWV0aG9kID0ge30pKTtcbi8qKlxuICog5a655Zmo6IO95o+Q5L6b55qE5pa55rOVXG4gKi9cbnZhciBDb250YWluZXJNZXRob2Q7XG4oZnVuY3Rpb24gKENvbnRhaW5lck1ldGhvZCkge1xuICAgIC8qKlxuICAgICAqIOiOt+WPluWuueWZqOeahOWwuuWvuOS/oeaBr1xuICAgICAqL1xuICAgIENvbnRhaW5lck1ldGhvZFtcIkdldENvbnRhaW5lclJlY3RcIl0gPSBcImdldENvbnRhaW5lclJlY3RcIjtcbiAgICAvKipcbiAgICAgKiDor7fmsYLlrrnlmajmiZPlvIDpk77mjqVcbiAgICAgKi9cbiAgICBDb250YWluZXJNZXRob2RbXCJPcGVuTGlua1wiXSA9IFwib3BlbkxpbmtcIjtcbiAgICAvKipcbiAgICAgKiDor7fmsYLlrrnlmajnlJ/miJAgVVJMXG4gICAgICovXG4gICAgQ29udGFpbmVyTWV0aG9kW1wiR2VuZXJhdGVVcmxcIl0gPSBcImdlbmVyYXRlVXJsXCI7XG4gICAgLyoqXG4gICAgICog6K+35rGC5a655Zmo5omT5byA5aSE55CG56e75Yqo56uv54K55Ye75LqL5Lu2XG4gICAgICovXG4gICAgQ29udGFpbmVyTWV0aG9kW1wiTWVudGlvbkNsaWNrSGFuZGxlckZvck1vYmlsZVwiXSA9IFwibWVudGlvbkNsaWNrSGFuZGxlckZvck1vYmlsZVwiO1xuICAgIC8qKlxuICAgICAqIOivt+axguWuueWZqOino+aekCBVUkzvvIzlubbov5Tlm54gRmlsZUluZm9cbiAgICAgKi9cbiAgICBDb250YWluZXJNZXRob2RbXCJHZXRGaWxlSW5mb0Zyb21VcmxcIl0gPSBcImdldEZpbGVJbmZvRnJvbVVybFwiO1xuICAgIC8qKlxuICAgICAqIOivt+axguWuueWZqOaYvuekuuetvuWQjee7hOS7tu+8jOWPl+Wll+S7tuWSjOeJiOacrOmZkOWItlxuICAgICAqL1xuICAgIENvbnRhaW5lck1ldGhvZFtcIlNob3dTaWduYXR1cmVDb21wb25lbnRcIl0gPSBcInNob3dTaWduYXR1cmVDb21wb25lbnRcIjtcbiAgICAvKipcbiAgICAgKiDor7fmsYLlrrnlmajmmL7npLp0b2FzdO+8jOWPl+Wll+S7tuWSjOeJiOacrOmZkOWItlxuICAgICAqL1xuICAgIENvbnRhaW5lck1ldGhvZFtcIlNob3dUb2FzdFwiXSA9IFwic2hvd1RvYXN0XCI7XG4gICAgLyoqXG4gICAgICog6YCa55+l55So5oi35omn6KGM6Ieq5a6a5LmJ5pON5L2c77yM5pON5L2c55Sx55So5oi36Ieq5a6a5LmJ5oyJ6ZKu6Kem5Y+RXG4gICAgICovXG4gICAgQ29udGFpbmVyTWV0aG9kW1wiSGFuZGxlQ3VzdG9tVGFza1wiXSA9IFwiaGFuZGxlQ3VzdG9tVGFza1wiO1xuICAgIC8qKlxuICAgICAqIOivt+axguWuueWZqOiOt+WPlumJtOadg+S/oeaBr1xuICAgICAqL1xuICAgIENvbnRhaW5lck1ldGhvZFtcIkdldENyZWRlbnRpYWxzXCJdID0gXCJnZXRDcmVkZW50aWFsc1wiO1xufSkoQ29udGFpbmVyTWV0aG9kID0gZXhwb3J0cy5Db250YWluZXJNZXRob2QgfHwgKGV4cG9ydHMuQ29udGFpbmVyTWV0aG9kID0ge30pKTtcbnZhciBTcHJlYWRzaGVldFNoYXJpbmdGcm9tO1xuKGZ1bmN0aW9uIChTcHJlYWRzaGVldFNoYXJpbmdGcm9tKSB7XG4gICAgLyoqXG4gICAgICog6I635Y+W6YCJ5Yy66ZO+5o6lXG4gICAgICovXG4gICAgU3ByZWFkc2hlZXRTaGFyaW5nRnJvbVtcImNvcHlSYW5nZUxpbmtcIl0gPSBcImNvcHlSYW5nZUxpbmtcIjtcbiAgICAvKipcbiAgICAgKiDlpI3liLbni6znq4vop4blm77pk77mjqVcbiAgICAgKi9cbiAgICBTcHJlYWRzaGVldFNoYXJpbmdGcm9tW1wiY29weVZpZXdwb3J0TGlua1wiXSA9IFwiY29weVZpZXdwb3J0TGlua1wiO1xuICAgIC8qKlxuICAgICAqIOWkjeWItumTvuaOpeWIsOW3peS9nOihqOeahOWGhemTvuaOpVxuICAgICAqL1xuICAgIFNwcmVhZHNoZWV0U2hhcmluZ0Zyb21bXCJjb3B5U2hlZXRMaW5rXCJdID0gXCJjb3B5U2hlZXRMaW5rXCI7XG4gICAgLyoqXG4gICAgICog6Leo6KGo5qC85byV55SoXG4gICAgICovXG4gICAgU3ByZWFkc2hlZXRTaGFyaW5nRnJvbVtcImltcG9ydFJhbmdlXCJdID0gXCJpbXBvcnRSYW5nZVwiO1xuICAgIC8qKlxuICAgICAqIOmihOiniOiiq+i3qOihqOW8leeUqOaIluWQiOW5tuW3peS9nOihqOW8leeUqOeahOihqOagvFxuICAgICAqL1xuICAgIFNwcmVhZHNoZWV0U2hhcmluZ0Zyb21bXCJwcmV2aWV3XCJdID0gXCJwcmV2aWV3XCI7XG59KShTcHJlYWRzaGVldFNoYXJpbmdGcm9tID0gZXhwb3J0cy5TcHJlYWRzaGVldFNoYXJpbmdGcm9tIHx8IChleHBvcnRzLlNwcmVhZHNoZWV0U2hhcmluZ0Zyb20gPSB7fSkpO1xuLyoqXG4gKiDliIbkuqvpk77mjqXnmoTnsbvlnovvvIznlKjkuo7lnKggZ2VuZXJhdGVVcmwg5Lit6L+U5Zue5LiN5ZCM55qEIFVSTOOAglxuICog5q+U5aaCIHJldHVybiBzaGFyaW5nVHlwZSA9PT0gVXJsU2hhcmluZ1R5cGUuRm9ybUZpbGwgPyAnL2Zvcm0vMS9maWxsJyA6ICcvZm9ybS8xJ+OAglxuICogJy9mb3JtLzEvZmlsbCcg5Li65a+55aSW5Yy/5ZCN5Y+v6K6/6Zeu5aGr5YaZ6KGo5Y2V55qE6ZO+5o6l77yMJy9mb3JtLzEnIOS4uuWvueWGhee8lui+keihqOWNleWFg+e0oOOAgemcgOmJtOadg+eahOmTvuaOpeOAglxuICovXG52YXIgVXJsU2hhcmluZ1R5cGU7XG4oZnVuY3Rpb24gKFVybFNoYXJpbmdUeXBlKSB7XG4gICAgLyoqXG4gICAgICog5Luj6KGo5YiG5Lqr55qE5piv6L275paH5qGj6ZO+5o6lXG4gICAgICovXG4gICAgVXJsU2hhcmluZ1R5cGVbXCJEb2NcIl0gPSBcImRvY1wiO1xuICAgIC8qKlxuICAgICAqIOS7o+ihqOWIhuS6q+eahOaYr+S8oOe7n+aWh+aho+mTvuaOpVxuICAgICAqL1xuICAgIFVybFNoYXJpbmdUeXBlW1wiRG9jeFwiXSA9IFwiZG9jeFwiO1xuICAgIC8qKlxuICAgICAqIOS7o+ihqOWIhuS6q+eahOaYr+ihqOagvOmTvuaOpVxuICAgICAqL1xuICAgIFVybFNoYXJpbmdUeXBlW1wiU3ByZWFkc2hlZXRcIl0gPSBcInNoZWV0XCI7XG4gICAgLyoqXG4gICAgICog5Luj6KGo5YiG5Lqr55qE5piv6KGo5Y2V57yW6L6R5Zmo6ZO+5o6lXG4gICAgICovXG4gICAgVXJsU2hhcmluZ1R5cGVbXCJGb3JtXCJdID0gXCJmb3JtXCI7XG4gICAgLyoqXG4gICAgICog5Luj6KGo5YiG5Lqr55qE5piv6KGo5Y2V6aKE6KeI6ZO+5o6lXG4gICAgICovXG4gICAgVXJsU2hhcmluZ1R5cGVbXCJGb3JtUHJldmlld1wiXSA9IFwiZm9ybVByZXZpZXdcIjtcbiAgICAvKipcbiAgICAgKiDku6PooajliIbkuqvnmoTmmK/ooajljZXloavlhpnpk77mjqVcbiAgICAgKi9cbiAgICBVcmxTaGFyaW5nVHlwZVtcIkZvcm1GaWxsXCJdID0gXCJmb3JtRmlsbFwiO1xuICAgIC8qKlxuICAgICAqIOS7o+ihqOWIhuS6q+eahOaYr+W5u+eBr+eJh+mTvuaOpVxuICAgICAqL1xuICAgIFVybFNoYXJpbmdUeXBlW1wiUHJlc2VudGF0aW9uXCJdID0gXCJwcmVzZW50YXRpb25cIjtcbiAgICAvKipcbiAgICAgKiDku6PooajliIbkuqvnmoTmmK/lupTnlKjooajmoLzpk77mjqVcbiAgICAgKi9cbiAgICBVcmxTaGFyaW5nVHlwZVtcIlRhYmxlXCJdID0gXCJ0YWJsZVwiO1xuICAgIC8qKlxuICAgICAqIOS7o+ihqOWIhuS6q+eahOaYr+a1geeoi+WbvumTvuaOpVxuICAgICAqL1xuICAgIFVybFNoYXJpbmdUeXBlW1wiRmxvd2NoYXJ0XCJdID0gXCJmbG93Y2hhcnRcIjtcbiAgICAvKipcbiAgICAgKiDku6PooajliIbkuqvnmoTmmK/mgJ3nu7Tlr7zlm77pk77mjqVcbiAgICAgKi9cbiAgICBVcmxTaGFyaW5nVHlwZVtcIk1pbmRtYXBcIl0gPSBcIm1pbmRtYXBcIjtcbiAgICAvKipcbiAgICAgKiDku6PooajliIbkuqvnmoTmmK/nmb3mnb/pk77mjqVcbiAgICAgKi9cbiAgICBVcmxTaGFyaW5nVHlwZVtcIkJvYXJkXCJdID0gXCJib2FyZFwiO1xufSkoVXJsU2hhcmluZ1R5cGUgPSBleHBvcnRzLlVybFNoYXJpbmdUeXBlIHx8IChleHBvcnRzLlVybFNoYXJpbmdUeXBlID0ge30pKTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5TdGFydFBhcmFtcyA9IHZvaWQgMDtcbnZhciBpc19wbGFpbl9vYmpfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiaXMtcGxhaW4tb2JqXCIpKTtcbnZhciBiYXNlNjJzdHJfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYmFzZTYyc3RyXCIpKTtcbnZhciBiYXNlNjIgPSBiYXNlNjJzdHJfMS5kZWZhdWx0LmNyZWF0ZUluc3RhbmNlKCk7XG52YXIgU3RhcnRQYXJhbXMgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgLyoqXG4gICAgICog5Yib5bu65LiA5LiqIFN0YXJ0UGFyYW1zIOWvueixoeOAglxuICAgICAqXG4gICAgICogQHBhcmFtIHBhcmFtcyDlj4LmlbDlr7nosaHvvIzlj6/ku6XmmK/lrZfnrKbkuLLjgIHnuq/lr7nosaHmiJYgU3RhcnRQYXJhbXMg5a6e5L6L44CC5o6l5Y+X5pWw57uE5b2i5byP77yM5Lyg5YWl5pWw57uE5Lya5ZCI5bm25omA5pyJ6aG555uu44CCXG4gICAgICovXG4gICAgZnVuY3Rpb24gU3RhcnRQYXJhbXMocGFyYW1zKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcGFyYW1zID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIFN0YXJ0UGFyYW1zLnBhcnNlKHBhcmFtcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCgwLCBpc19wbGFpbl9vYmpfMS5kZWZhdWx0KShwYXJhbXMpKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIHBhcmFtcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocGFyYW1zIGluc3RhbmNlb2YgU3RhcnRQYXJhbXMpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwYXJhbXMpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwYXJhbXMpKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDAsIHBhcmFtc18xID0gcGFyYW1zOyBfaSA8IHBhcmFtc18xLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgICAgIHZhciBwYXJhbSA9IHBhcmFtc18xW19pXTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHBhcmFtID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIFN0YXJ0UGFyYW1zLnBhcnNlKHBhcmFtKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBhcmFtICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHBhcmFtKSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyDlpI3liLbml6flgLxcbiAgICAgICAgaWYgKHRoaXMuZmlsZUd1aWQgPT0gbnVsbCAmJiB0aGlzLmd1aWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5maWxlR3VpZCA9IHRoaXMuZ3VpZDtcbiAgICAgICAgfVxuICAgICAgICAvLyDlpoLmnpzlgLzkuI3kuIDoh7TvvIzliJnnlKggZmlsZUd1aWQg6KaG55uWIGd1aWTvvIzpgb/lhY3lh7rpl67pophcbiAgICAgICAgaWYgKHRoaXMuZ3VpZCAhPSBudWxsICYmIHRoaXMuZmlsZUd1aWQgIT09IHRoaXMuZ3VpZCkge1xuICAgICAgICAgICAgdGhpcy5ndWlkID0gdGhpcy5maWxlR3VpZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiDlsIblrZfnrKbkuLLop6PmnpDkuLogU3RhcnRQYXJhbXMg5a+56LGh44CCXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFyYW1TdHIg5b6F6Kej5p6Q55qE5a2X56ym5Liy44CCXG4gICAgICovXG4gICAgU3RhcnRQYXJhbXMucGFyc2UgPSBmdW5jdGlvbiAocGFyYW1TdHIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdGFydFBhcmFtcyhKU09OLnBhcnNlKGJhc2U2Mi5kZWNvZGVTdHIocGFyYW1TdHIpKSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDlsIYgU3RhcnRQYXJhbXMg5a+56LGh6L2s5o2i5Li65a2X56ym5Liy44CCXG4gICAgICovXG4gICAgU3RhcnRQYXJhbXMucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gYmFzZTYyLmVuY29kZVN0cihKU09OLnN0cmluZ2lmeSh0aGlzKSk7XG4gICAgfTtcbiAgICByZXR1cm4gU3RhcnRQYXJhbXM7XG59KCkpO1xuZXhwb3J0cy5TdGFydFBhcmFtcyA9IFN0YXJ0UGFyYW1zO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19jcmVhdGVCaW5kaW5nID0gKHRoaXMgJiYgdGhpcy5fX2NyZWF0ZUJpbmRpbmcpIHx8IChPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSwgayk7XG4gICAgaWYgKCFkZXNjIHx8IChcImdldFwiIGluIGRlc2MgPyAhbS5fX2VzTW9kdWxlIDogZGVzYy53cml0YWJsZSB8fCBkZXNjLmNvbmZpZ3VyYWJsZSkpIHtcbiAgICAgIGRlc2MgPSB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH07XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgb1trMl0gPSBtW2tdO1xufSkpO1xudmFyIF9fZXhwb3J0U3RhciA9ICh0aGlzICYmIHRoaXMuX19leHBvcnRTdGFyKSB8fCBmdW5jdGlvbihtLCBleHBvcnRzKSB7XG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChleHBvcnRzLCBwKSkgX19jcmVhdGVCaW5kaW5nKGV4cG9ydHMsIG0sIHApO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9TdGFydFBhcmFtc1wiKSwgZXhwb3J0cyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gdmFsdWUgPT4ge1xuXHRpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRjb25zdCBwcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpO1xuXHRyZXR1cm4gcHJvdG90eXBlID09PSBudWxsIHx8IHByb3RvdHlwZSA9PT0gT2JqZWN0LnByb3RvdHlwZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vc3RhYmxlL2FycmF5L2luY2x1ZGVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL3N0YWJsZS9vYmplY3QvYXNzaWduJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL3N0YWJsZS9wcm9taXNlJyk7XG4vLyBUT0RPOiBSZW1vdmUgZnJvbSBgY29yZS1qc0A0YFxucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lc25leHQucHJvbWlzZS50cnknKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXNuZXh0LnByb21pc2Uud2l0aC1yZXNvbHZlcnMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vc3RhYmxlL3VybCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMuYXJyYXkuaW5jbHVkZXMnKTtcbnZhciBlbnRyeVVuYmluZCA9IHJlcXVpcmUoJy4uLy4uL2ludGVybmFscy9lbnRyeS11bmJpbmQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBlbnRyeVVuYmluZCgnQXJyYXknLCAnaW5jbHVkZXMnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMub2JqZWN0LmFzc2lnbicpO1xudmFyIHBhdGggPSByZXF1aXJlKCcuLi8uLi9pbnRlcm5hbHMvcGF0aCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGguT2JqZWN0LmFzc2lnbjtcbiIsIid1c2Ugc3RyaWN0JztcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMuYWdncmVnYXRlLWVycm9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLmFycmF5Lml0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMucHJvbWlzZScpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5wcm9taXNlLmFsbC1zZXR0bGVkJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnByb21pc2UuYW55Jyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnByb21pc2UudHJ5Jyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnByb21pc2Uud2l0aC1yZXNvbHZlcnMnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMucHJvbWlzZS5maW5hbGx5Jyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnN0cmluZy5pdGVyYXRvcicpO1xudmFyIHBhdGggPSByZXF1aXJlKCcuLi8uLi9pbnRlcm5hbHMvcGF0aCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGguUHJvbWlzZTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vZnVsbC9hcnJheS9pbmNsdWRlcycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9mdWxsL29iamVjdC9hc3NpZ24nKTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vZnVsbC9wcm9taXNlJyk7XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL2Z1bGwvdXJsJyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vYWN0dWFsL2FycmF5L2luY2x1ZGVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL2FjdHVhbC9vYmplY3QvYXNzaWduJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL2FjdHVhbC9wcm9taXNlJyk7XG4vLyBUT0RPOiBSZW1vdmUgZnJvbSBgY29yZS1qc0A0YFxucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lc25leHQuYWdncmVnYXRlLWVycm9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzbmV4dC5wcm9taXNlLmFsbC1zZXR0bGVkJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzbmV4dC5wcm9taXNlLmFueScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9hY3R1YWwvdXJsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciB0cnlUb1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90cnktdG8tc3RyaW5nJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgQXNzZXJ0OiBJc0NhbGxhYmxlKGFyZ3VtZW50KSBpcyB0cnVlYFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGlzQ2FsbGFibGUoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKHRyeVRvU3RyaW5nKGFyZ3VtZW50KSArICcgaXMgbm90IGEgZnVuY3Rpb24nKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jb25zdHJ1Y3RvcicpO1xudmFyIHRyeVRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RyeS10by1zdHJpbmcnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBBc3NlcnQ6IElzQ29uc3RydWN0b3IoYXJndW1lbnQpIGlzIHRydWVgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNDb25zdHJ1Y3Rvcihhcmd1bWVudCkpIHJldHVybiBhcmd1bWVudDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IodHJ5VG9TdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgYSBjb25zdHJ1Y3RvcicpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc1Bvc3NpYmxlUHJvdG90eXBlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXBvc3NpYmxlLXByb3RvdHlwZScpO1xuXG52YXIgJFN0cmluZyA9IFN0cmluZztcbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNQb3NzaWJsZVByb3RvdHlwZShhcmd1bWVudCkpIHJldHVybiBhcmd1bWVudDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoXCJDYW4ndCBzZXQgXCIgKyAkU3RyaW5nKGFyZ3VtZW50KSArICcgYXMgYSBwcm90b3R5cGUnKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5JykuZjtcblxudmFyIFVOU0NPUEFCTEVTID0gd2VsbEtub3duU3ltYm9sKCd1bnNjb3BhYmxlcycpO1xudmFyIEFycmF5UHJvdG90eXBlID0gQXJyYXkucHJvdG90eXBlO1xuXG4vLyBBcnJheS5wcm90b3R5cGVbQEB1bnNjb3BhYmxlc11cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAdW5zY29wYWJsZXNcbmlmIChBcnJheVByb3RvdHlwZVtVTlNDT1BBQkxFU10gPT09IHVuZGVmaW5lZCkge1xuICBkZWZpbmVQcm9wZXJ0eShBcnJheVByb3RvdHlwZSwgVU5TQ09QQUJMRVMsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgdmFsdWU6IGNyZWF0ZShudWxsKVxuICB9KTtcbn1cblxuLy8gYWRkIGEga2V5IHRvIEFycmF5LnByb3RvdHlwZVtAQHVuc2NvcGFibGVzXVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIEFycmF5UHJvdG90eXBlW1VOU0NPUEFCTEVTXVtrZXldID0gdHJ1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgUHJvdG90eXBlKSB7XG4gIGlmIChpc1Byb3RvdHlwZU9mKFByb3RvdHlwZSwgaXQpKSByZXR1cm4gaXQ7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKCdJbmNvcnJlY3QgaW52b2NhdGlvbicpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyICRTdHJpbmcgPSBTdHJpbmc7XG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYEFzc2VydDogVHlwZShhcmd1bWVudCkgaXMgT2JqZWN0YFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGlzT2JqZWN0KGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcigkU3RyaW5nKGFyZ3VtZW50KSArICcgaXMgbm90IGFuIG9iamVjdCcpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIGNhbGxXaXRoU2FmZUl0ZXJhdGlvbkNsb3NpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2FsbC13aXRoLXNhZmUtaXRlcmF0aW9uLWNsb3NpbmcnKTtcbnZhciBpc0FycmF5SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXktaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgaXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jb25zdHJ1Y3RvcicpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5Jyk7XG52YXIgZ2V0SXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yJyk7XG52YXIgZ2V0SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xuXG52YXIgJEFycmF5ID0gQXJyYXk7XG5cbi8vIGBBcnJheS5mcm9tYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkuZnJvbVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmcm9tKGFycmF5TGlrZSAvKiAsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkICovKSB7XG4gIHZhciBPID0gdG9PYmplY3QoYXJyYXlMaWtlKTtcbiAgdmFyIElTX0NPTlNUUlVDVE9SID0gaXNDb25zdHJ1Y3Rvcih0aGlzKTtcbiAgdmFyIGFyZ3VtZW50c0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBtYXBmbiA9IGFyZ3VtZW50c0xlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gIHZhciBtYXBwaW5nID0gbWFwZm4gIT09IHVuZGVmaW5lZDtcbiAgaWYgKG1hcHBpbmcpIG1hcGZuID0gYmluZChtYXBmbiwgYXJndW1lbnRzTGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZCk7XG4gIHZhciBpdGVyYXRvck1ldGhvZCA9IGdldEl0ZXJhdG9yTWV0aG9kKE8pO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yLCBuZXh0LCB2YWx1ZTtcbiAgLy8gaWYgdGhlIHRhcmdldCBpcyBub3QgaXRlcmFibGUgb3IgaXQncyBhbiBhcnJheSB3aXRoIHRoZSBkZWZhdWx0IGl0ZXJhdG9yIC0gdXNlIGEgc2ltcGxlIGNhc2VcbiAgaWYgKGl0ZXJhdG9yTWV0aG9kICYmICEodGhpcyA9PT0gJEFycmF5ICYmIGlzQXJyYXlJdGVyYXRvck1ldGhvZChpdGVyYXRvck1ldGhvZCkpKSB7XG4gICAgcmVzdWx0ID0gSVNfQ09OU1RSVUNUT1IgPyBuZXcgdGhpcygpIDogW107XG4gICAgaXRlcmF0b3IgPSBnZXRJdGVyYXRvcihPLCBpdGVyYXRvck1ldGhvZCk7XG4gICAgbmV4dCA9IGl0ZXJhdG9yLm5leHQ7XG4gICAgZm9yICg7IShzdGVwID0gY2FsbChuZXh0LCBpdGVyYXRvcikpLmRvbmU7IGluZGV4KyspIHtcbiAgICAgIHZhbHVlID0gbWFwcGluZyA/IGNhbGxXaXRoU2FmZUl0ZXJhdGlvbkNsb3NpbmcoaXRlcmF0b3IsIG1hcGZuLCBbc3RlcC52YWx1ZSwgaW5kZXhdLCB0cnVlKSA6IHN0ZXAudmFsdWU7XG4gICAgICBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGluZGV4LCB2YWx1ZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKE8pO1xuICAgIHJlc3VsdCA9IElTX0NPTlNUUlVDVE9SID8gbmV3IHRoaXMobGVuZ3RoKSA6ICRBcnJheShsZW5ndGgpO1xuICAgIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICB2YWx1ZSA9IG1hcHBpbmcgPyBtYXBmbihPW2luZGV4XSwgaW5kZXgpIDogT1tpbmRleF07XG4gICAgICBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGluZGV4LCB2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJlc3VsdC5sZW5ndGggPSBpbmRleDtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS57IGluZGV4T2YsIGluY2x1ZGVzIH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gbGVuZ3RoT2ZBcnJheUxpa2UoTyk7XG4gICAgaWYgKGxlbmd0aCA9PT0gMCkgcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICBpZiAoSVNfSU5DTFVERVMgJiYgZWwgIT09IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgICBpZiAodmFsdWUgIT09IHZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBBcnJheSNpbmRleE9mIGlnbm9yZXMgaG9sZXMsIEFycmF5I2luY2x1ZGVzIC0gbm90XG4gICAgfSBlbHNlIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICBpZiAoKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pICYmIE9baW5kZXhdID09PSBlbCkgcmV0dXJuIElTX0lOQ0xVREVTIHx8IGluZGV4IHx8IDA7XG4gICAgfSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBBcnJheS5wcm90b3R5cGUuaW5jbHVkZXNgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmNsdWRlc1xuICBpbmNsdWRlczogY3JlYXRlTWV0aG9kKHRydWUpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmluZGV4T2ZgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmRleG9mXG4gIGluZGV4T2Y6IGNyZWF0ZU1ldGhvZChmYWxzZSlcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gdW5jdXJyeVRoaXMoW10uc2xpY2UpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFycmF5U2xpY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc2xpY2UnKTtcblxudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcblxudmFyIHNvcnQgPSBmdW5jdGlvbiAoYXJyYXksIGNvbXBhcmVmbikge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGlmIChsZW5ndGggPCA4KSB7XG4gICAgLy8gaW5zZXJ0aW9uIHNvcnRcbiAgICB2YXIgaSA9IDE7XG4gICAgdmFyIGVsZW1lbnQsIGo7XG5cbiAgICB3aGlsZSAoaSA8IGxlbmd0aCkge1xuICAgICAgaiA9IGk7XG4gICAgICBlbGVtZW50ID0gYXJyYXlbaV07XG4gICAgICB3aGlsZSAoaiAmJiBjb21wYXJlZm4oYXJyYXlbaiAtIDFdLCBlbGVtZW50KSA+IDApIHtcbiAgICAgICAgYXJyYXlbal0gPSBhcnJheVstLWpdO1xuICAgICAgfVxuICAgICAgaWYgKGogIT09IGkrKykgYXJyYXlbal0gPSBlbGVtZW50O1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBtZXJnZSBzb3J0XG4gICAgdmFyIG1pZGRsZSA9IGZsb29yKGxlbmd0aCAvIDIpO1xuICAgIHZhciBsZWZ0ID0gc29ydChhcnJheVNsaWNlKGFycmF5LCAwLCBtaWRkbGUpLCBjb21wYXJlZm4pO1xuICAgIHZhciByaWdodCA9IHNvcnQoYXJyYXlTbGljZShhcnJheSwgbWlkZGxlKSwgY29tcGFyZWZuKTtcbiAgICB2YXIgbGxlbmd0aCA9IGxlZnQubGVuZ3RoO1xuICAgIHZhciBybGVuZ3RoID0gcmlnaHQubGVuZ3RoO1xuICAgIHZhciBsaW5kZXggPSAwO1xuICAgIHZhciByaW5kZXggPSAwO1xuXG4gICAgd2hpbGUgKGxpbmRleCA8IGxsZW5ndGggfHwgcmluZGV4IDwgcmxlbmd0aCkge1xuICAgICAgYXJyYXlbbGluZGV4ICsgcmluZGV4XSA9IChsaW5kZXggPCBsbGVuZ3RoICYmIHJpbmRleCA8IHJsZW5ndGgpXG4gICAgICAgID8gY29tcGFyZWZuKGxlZnRbbGluZGV4XSwgcmlnaHRbcmluZGV4XSkgPD0gMCA/IGxlZnRbbGluZGV4KytdIDogcmlnaHRbcmluZGV4KytdXG4gICAgICAgIDogbGluZGV4IDwgbGxlbmd0aCA/IGxlZnRbbGluZGV4KytdIDogcmlnaHRbcmluZGV4KytdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcnJheTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gc29ydDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBpdGVyYXRvckNsb3NlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9yLWNsb3NlJyk7XG5cbi8vIGNhbGwgc29tZXRoaW5nIG9uIGl0ZXJhdG9yIHN0ZXAgd2l0aCBzYWZlIGNsb3Npbmcgb24gZXJyb3Jcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhdG9yLCBmbiwgdmFsdWUsIEVOVFJJRVMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gRU5UUklFUyA/IGZuKGFuT2JqZWN0KHZhbHVlKVswXSwgdmFsdWVbMV0pIDogZm4odmFsdWUpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsICd0aHJvdycsIGVycm9yKTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIFNBRkVfQ0xPU0lORyA9IGZhbHNlO1xuXG50cnkge1xuICB2YXIgY2FsbGVkID0gMDtcbiAgdmFyIGl0ZXJhdG9yV2l0aFJldHVybiA9IHtcbiAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4geyBkb25lOiAhIWNhbGxlZCsrIH07XG4gICAgfSxcbiAgICAncmV0dXJuJzogZnVuY3Rpb24gKCkge1xuICAgICAgU0FGRV9DTE9TSU5HID0gdHJ1ZTtcbiAgICB9XG4gIH07XG4gIGl0ZXJhdG9yV2l0aFJldHVybltJVEVSQVRPUl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1hcnJheS1mcm9tLCBuby10aHJvdy1saXRlcmFsIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIEFycmF5LmZyb20oaXRlcmF0b3JXaXRoUmV0dXJuLCBmdW5jdGlvbiAoKSB7IHRocm93IDI7IH0pO1xufSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjLCBTS0lQX0NMT1NJTkcpIHtcbiAgdHJ5IHtcbiAgICBpZiAoIVNLSVBfQ0xPU0lORyAmJiAhU0FGRV9DTE9TSU5HKSByZXR1cm4gZmFsc2U7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IHJldHVybiBmYWxzZTsgfSAvLyB3b3JrYXJvdW5kIG9mIG9sZCBXZWJLaXQgKyBgZXZhbGAgYnVnXG4gIHZhciBJVEVSQVRJT05fU1VQUE9SVCA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBvYmplY3QgPSB7fTtcbiAgICBvYmplY3RbSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiB7IGRvbmU6IElURVJBVElPTl9TVVBQT1JUID0gdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gICAgZXhlYyhvYmplY3QpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBJVEVSQVRJT05fU1VQUE9SVDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbnZhciB0b1N0cmluZyA9IHVuY3VycnlUaGlzKHt9LnRvU3RyaW5nKTtcbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHN0cmluZ1NsaWNlKHRvU3RyaW5nKGl0KSwgOCwgLTEpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0Jyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGNsYXNzb2ZSYXcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG52YXIgJE9iamVjdCA9IE9iamVjdDtcblxuLy8gRVMzIHdyb25nIGhlcmVcbnZhciBDT1JSRUNUX0FSR1VNRU5UUyA9IGNsYXNzb2ZSYXcoZnVuY3Rpb24gKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID09PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG59O1xuXG4vLyBnZXR0aW5nIHRhZyBmcm9tIEVTNisgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgXG5tb2R1bGUuZXhwb3J0cyA9IFRPX1NUUklOR19UQUdfU1VQUE9SVCA/IGNsYXNzb2ZSYXcgOiBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8sIHRhZywgcmVzdWx0O1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAodGFnID0gdHJ5R2V0KE8gPSAkT2JqZWN0KGl0KSwgVE9fU1RSSU5HX1RBRykpID09ICdzdHJpbmcnID8gdGFnXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBDT1JSRUNUX0FSR1VNRU5UUyA/IGNsYXNzb2ZSYXcoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAocmVzdWx0ID0gY2xhc3NvZlJhdyhPKSkgPT09ICdPYmplY3QnICYmIGlzQ2FsbGFibGUoTy5jYWxsZWUpID8gJ0FyZ3VtZW50cycgOiByZXN1bHQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgb3duS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vd24ta2V5cycpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSwgZXhjZXB0aW9ucykge1xuICB2YXIga2V5cyA9IG93bktleXMoc291cmNlKTtcbiAgdmFyIGRlZmluZVByb3BlcnR5ID0gZGVmaW5lUHJvcGVydHlNb2R1bGUuZjtcbiAgdmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICBpZiAoIWhhc093bih0YXJnZXQsIGtleSkgJiYgIShleGNlcHRpb25zICYmIGhhc093bihleGNlcHRpb25zLCBrZXkpKSkge1xuICAgICAgZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpO1xuICAgIH1cbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEYoKSB7IC8qIGVtcHR5ICovIH1cbiAgRi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBudWxsO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldHByb3RvdHlwZW9mIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IEYoKSkgIT09IEYucHJvdG90eXBlO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBgQ3JlYXRlSXRlclJlc3VsdE9iamVjdGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWNyZWF0ZWl0ZXJyZXN1bHRvYmplY3Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHZhbHVlLCBkb25lKSB7XG4gIHJldHVybiB7IHZhbHVlOiB2YWx1ZSwgZG9uZTogZG9uZSB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyA/IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5TW9kdWxlLmYob2JqZWN0LCBrZXksIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKG9iamVjdCwga2V5LCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMCwgdmFsdWUpKTtcbiAgZWxzZSBvYmplY3Rba2V5XSA9IHZhbHVlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBtYWtlQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYWtlLWJ1aWx0LWluJyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIG5hbWUsIGRlc2NyaXB0b3IpIHtcbiAgaWYgKGRlc2NyaXB0b3IuZ2V0KSBtYWtlQnVpbHRJbihkZXNjcmlwdG9yLmdldCwgbmFtZSwgeyBnZXR0ZXI6IHRydWUgfSk7XG4gIGlmIChkZXNjcmlwdG9yLnNldCkgbWFrZUJ1aWx0SW4oZGVzY3JpcHRvci5zZXQsIG5hbWUsIHsgc2V0dGVyOiB0cnVlIH0pO1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHkuZih0YXJnZXQsIG5hbWUsIGRlc2NyaXB0b3IpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIG1ha2VCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVHbG9iYWxQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIGtleSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge307XG4gIHZhciBzaW1wbGUgPSBvcHRpb25zLmVudW1lcmFibGU7XG4gIHZhciBuYW1lID0gb3B0aW9ucy5uYW1lICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLm5hbWUgOiBrZXk7XG4gIGlmIChpc0NhbGxhYmxlKHZhbHVlKSkgbWFrZUJ1aWx0SW4odmFsdWUsIG5hbWUsIG9wdGlvbnMpO1xuICBpZiAob3B0aW9ucy5nbG9iYWwpIHtcbiAgICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgICBlbHNlIGRlZmluZUdsb2JhbFByb3BlcnR5KGtleSwgdmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIW9wdGlvbnMudW5zYWZlKSBkZWxldGUgT1trZXldO1xuICAgICAgZWxzZSBpZiAoT1trZXldKSBzaW1wbGUgPSB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgICBlbHNlIGRlZmluZVByb3BlcnR5TW9kdWxlLmYoTywga2V5LCB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogIW9wdGlvbnMubm9uQ29uZmlndXJhYmxlLFxuICAgICAgd3JpdGFibGU6ICFvcHRpb25zLm5vbldyaXRhYmxlXG4gICAgfSk7XG4gIH0gcmV0dXJuIE87XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgc3JjLCBvcHRpb25zKSB7XG4gIGZvciAodmFyIGtleSBpbiBzcmMpIGRlZmluZUJ1aWx0SW4odGFyZ2V0LCBrZXksIHNyY1trZXldLCBvcHRpb25zKTtcbiAgcmV0dXJuIHRhcmdldDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICB0cnkge1xuICAgIGRlZmluZVByb3BlcnR5KGdsb2JhbFRoaXMsIGtleSwgeyB2YWx1ZTogdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgZ2xvYmFsVGhpc1trZXldID0gdmFsdWU7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG4vLyBEZXRlY3QgSUU4J3MgaW5jb21wbGV0ZSBkZWZpbmVQcm9wZXJ0eSBpbXBsZW1lbnRhdGlvblxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIDEsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pWzFdICE9PSA3O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgZG9jdW1lbnQgPSBnbG9iYWxUaGlzLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgRVhJU1RTID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gRVhJU1RTID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyBpdGVyYWJsZSBET00gY29sbGVjdGlvbnNcbi8vIGZsYWcgLSBgaXRlcmFibGVgIGludGVyZmFjZSAtICdlbnRyaWVzJywgJ2tleXMnLCAndmFsdWVzJywgJ2ZvckVhY2gnIG1ldGhvZHNcbm1vZHVsZS5leHBvcnRzID0ge1xuICBDU1NSdWxlTGlzdDogMCxcbiAgQ1NTU3R5bGVEZWNsYXJhdGlvbjogMCxcbiAgQ1NTVmFsdWVMaXN0OiAwLFxuICBDbGllbnRSZWN0TGlzdDogMCxcbiAgRE9NUmVjdExpc3Q6IDAsXG4gIERPTVN0cmluZ0xpc3Q6IDAsXG4gIERPTVRva2VuTGlzdDogMSxcbiAgRGF0YVRyYW5zZmVySXRlbUxpc3Q6IDAsXG4gIEZpbGVMaXN0OiAwLFxuICBIVE1MQWxsQ29sbGVjdGlvbjogMCxcbiAgSFRNTENvbGxlY3Rpb246IDAsXG4gIEhUTUxGb3JtRWxlbWVudDogMCxcbiAgSFRNTFNlbGVjdEVsZW1lbnQ6IDAsXG4gIE1lZGlhTGlzdDogMCxcbiAgTWltZVR5cGVBcnJheTogMCxcbiAgTmFtZWROb2RlTWFwOiAwLFxuICBOb2RlTGlzdDogMSxcbiAgUGFpbnRSZXF1ZXN0TGlzdDogMCxcbiAgUGx1Z2luOiAwLFxuICBQbHVnaW5BcnJheTogMCxcbiAgU1ZHTGVuZ3RoTGlzdDogMCxcbiAgU1ZHTnVtYmVyTGlzdDogMCxcbiAgU1ZHUGF0aFNlZ0xpc3Q6IDAsXG4gIFNWR1BvaW50TGlzdDogMCxcbiAgU1ZHU3RyaW5nTGlzdDogMCxcbiAgU1ZHVHJhbnNmb3JtTGlzdDogMCxcbiAgU291cmNlQnVmZmVyTGlzdDogMCxcbiAgU3R5bGVTaGVldExpc3Q6IDAsXG4gIFRleHRUcmFja0N1ZUxpc3Q6IDAsXG4gIFRleHRUcmFja0xpc3Q6IDAsXG4gIFRvdWNoTGlzdDogMFxufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGluIG9sZCBXZWJLaXQgdmVyc2lvbnMsIGBlbGVtZW50LmNsYXNzTGlzdGAgaXMgbm90IGFuIGluc3RhbmNlIG9mIGdsb2JhbCBgRE9NVG9rZW5MaXN0YFxudmFyIGRvY3VtZW50Q3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xuXG52YXIgY2xhc3NMaXN0ID0gZG9jdW1lbnRDcmVhdGVFbGVtZW50KCdzcGFuJykuY2xhc3NMaXN0O1xudmFyIERPTVRva2VuTGlzdFByb3RvdHlwZSA9IGNsYXNzTGlzdCAmJiBjbGFzc0xpc3QuY29uc3RydWN0b3IgJiYgY2xhc3NMaXN0LmNvbnN0cnVjdG9yLnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBET01Ub2tlbkxpc3RQcm90b3R5cGUgPT09IE9iamVjdC5wcm90b3R5cGUgPyB1bmRlZmluZWQgOiBET01Ub2tlbkxpc3RQcm90b3R5cGU7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDT05TVFJVQ1RPUiwgTUVUSE9EKSB7XG4gIHJldHVybiB1bmN1cnJ5VGhpcyhnbG9iYWxUaGlzW0NPTlNUUlVDVE9SXS5wcm90b3R5cGVbTUVUSE9EXSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gSUU4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IFtcbiAgJ2NvbnN0cnVjdG9yJyxcbiAgJ2hhc093blByb3BlcnR5JyxcbiAgJ2lzUHJvdG90eXBlT2YnLFxuICAncHJvcGVydHlJc0VudW1lcmFibGUnLFxuICAndG9Mb2NhbGVTdHJpbmcnLFxuICAndG9TdHJpbmcnLFxuICAndmFsdWVPZidcbl07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50LXVzZXItYWdlbnQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAvaXBhZHxpcGhvbmV8aXBvZC9pLnRlc3QodXNlckFnZW50KSAmJiB0eXBlb2YgUGViYmxlICE9ICd1bmRlZmluZWQnO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC11c2VyLWFnZW50Jyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWRvcy9uby12dWxuZXJhYmxlIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gLyg/OmlwYWR8aXBob25lfGlwb2QpLiphcHBsZXdlYmtpdC9pLnRlc3QodXNlckFnZW50KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBFTlZJUk9OTUVOVCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEVOVklST05NRU5UID09PSAnTk9ERSc7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50LXVzZXItYWdlbnQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAvd2ViMHMoPyEuKmNocm9tZSkvaS50ZXN0KHVzZXJBZ2VudCk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xuXG52YXIgbmF2aWdhdG9yID0gZ2xvYmFsVGhpcy5uYXZpZ2F0b3I7XG52YXIgdXNlckFnZW50ID0gbmF2aWdhdG9yICYmIG5hdmlnYXRvci51c2VyQWdlbnQ7XG5cbm1vZHVsZS5leHBvcnRzID0gdXNlckFnZW50ID8gU3RyaW5nKHVzZXJBZ2VudCkgOiAnJztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50LXVzZXItYWdlbnQnKTtcblxudmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG52YXIgRGVubyA9IGdsb2JhbFRoaXMuRGVubztcbnZhciB2ZXJzaW9ucyA9IHByb2Nlc3MgJiYgcHJvY2Vzcy52ZXJzaW9ucyB8fCBEZW5vICYmIERlbm8udmVyc2lvbjtcbnZhciB2OCA9IHZlcnNpb25zICYmIHZlcnNpb25zLnY4O1xudmFyIG1hdGNoLCB2ZXJzaW9uO1xuXG5pZiAodjgpIHtcbiAgbWF0Y2ggPSB2OC5zcGxpdCgnLicpO1xuICAvLyBpbiBvbGQgQ2hyb21lLCB2ZXJzaW9ucyBvZiBWOCBpc24ndCBWOCA9IENocm9tZSAvIDEwXG4gIC8vIGJ1dCB0aGVpciBjb3JyZWN0IHZlcnNpb25zIGFyZSBub3QgaW50ZXJlc3RpbmcgZm9yIHVzXG4gIHZlcnNpb24gPSBtYXRjaFswXSA+IDAgJiYgbWF0Y2hbMF0gPCA0ID8gMSA6ICsobWF0Y2hbMF0gKyBtYXRjaFsxXSk7XG59XG5cbi8vIEJyb3dzZXJGUyBOb2RlSlMgYHByb2Nlc3NgIHBvbHlmaWxsIGluY29ycmVjdGx5IHNldCBgLnY4YCB0byBgMC4wYFxuLy8gc28gY2hlY2sgYHVzZXJBZ2VudGAgZXZlbiBpZiBgLnY4YCBleGlzdHMsIGJ1dCAwXG5pZiAoIXZlcnNpb24gJiYgdXNlckFnZW50KSB7XG4gIG1hdGNoID0gdXNlckFnZW50Lm1hdGNoKC9FZGdlXFwvKFxcZCspLyk7XG4gIGlmICghbWF0Y2ggfHwgbWF0Y2hbMV0gPj0gNzQpIHtcbiAgICBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvQ2hyb21lXFwvKFxcZCspLyk7XG4gICAgaWYgKG1hdGNoKSB2ZXJzaW9uID0gK21hdGNoWzFdO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdmVyc2lvbjtcbiIsIid1c2Ugc3RyaWN0Jztcbi8qIGdsb2JhbCBCdW4sIERlbm8gLS0gZGV0ZWN0aW9uICovXG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC11c2VyLWFnZW50Jyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xuXG52YXIgdXNlckFnZW50U3RhcnRzV2l0aCA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgcmV0dXJuIHVzZXJBZ2VudC5zbGljZSgwLCBzdHJpbmcubGVuZ3RoKSA9PT0gc3RyaW5nO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSAoZnVuY3Rpb24gKCkge1xuICBpZiAodXNlckFnZW50U3RhcnRzV2l0aCgnQnVuLycpKSByZXR1cm4gJ0JVTic7XG4gIGlmICh1c2VyQWdlbnRTdGFydHNXaXRoKCdDbG91ZGZsYXJlLVdvcmtlcnMnKSkgcmV0dXJuICdDTE9VREZMQVJFJztcbiAgaWYgKHVzZXJBZ2VudFN0YXJ0c1dpdGgoJ0Rlbm8vJykpIHJldHVybiAnREVOTyc7XG4gIGlmICh1c2VyQWdlbnRTdGFydHNXaXRoKCdOb2RlLmpzLycpKSByZXR1cm4gJ05PREUnO1xuICBpZiAoZ2xvYmFsVGhpcy5CdW4gJiYgdHlwZW9mIEJ1bi52ZXJzaW9uID09ICdzdHJpbmcnKSByZXR1cm4gJ0JVTic7XG4gIGlmIChnbG9iYWxUaGlzLkRlbm8gJiYgdHlwZW9mIERlbm8udmVyc2lvbiA9PSAnb2JqZWN0JykgcmV0dXJuICdERU5PJztcbiAgaWYgKGNsYXNzb2YoZ2xvYmFsVGhpcy5wcm9jZXNzKSA9PT0gJ3Byb2Nlc3MnKSByZXR1cm4gJ05PREUnO1xuICBpZiAoZ2xvYmFsVGhpcy53aW5kb3cgJiYgZ2xvYmFsVGhpcy5kb2N1bWVudCkgcmV0dXJuICdCUk9XU0VSJztcbiAgcmV0dXJuICdSRVNUJztcbn0pKCk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbnZhciAkRXJyb3IgPSBFcnJvcjtcbnZhciByZXBsYWNlID0gdW5jdXJyeVRoaXMoJycucmVwbGFjZSk7XG5cbnZhciBURVNUID0gKGZ1bmN0aW9uIChhcmcpIHsgcmV0dXJuIFN0cmluZyhuZXcgJEVycm9yKGFyZykuc3RhY2spOyB9KSgnenhjYXNkJyk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVkb3Mvbm8tdnVsbmVyYWJsZSwgc29uYXJqcy9zbG93LXJlZ2V4IC0tIHNhZmVcbnZhciBWOF9PUl9DSEFLUkFfU1RBQ0tfRU5UUlkgPSAvXFxuXFxzKmF0IFteOl0qOlteXFxuXSovO1xudmFyIElTX1Y4X09SX0NIQUtSQV9TVEFDSyA9IFY4X09SX0NIQUtSQV9TVEFDS19FTlRSWS50ZXN0KFRFU1QpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChzdGFjaywgZHJvcEVudHJpZXMpIHtcbiAgaWYgKElTX1Y4X09SX0NIQUtSQV9TVEFDSyAmJiB0eXBlb2Ygc3RhY2sgPT0gJ3N0cmluZycgJiYgISRFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSkge1xuICAgIHdoaWxlIChkcm9wRW50cmllcy0tKSBzdGFjayA9IHJlcGxhY2Uoc3RhY2ssIFY4X09SX0NIQUtSQV9TVEFDS19FTlRSWSwgJycpO1xuICB9IHJldHVybiBzdGFjaztcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGNsZWFyRXJyb3JTdGFjayA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lcnJvci1zdGFjay1jbGVhcicpO1xudmFyIEVSUk9SX1NUQUNLX0lOU1RBTExBQkxFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vycm9yLXN0YWNrLWluc3RhbGxhYmxlJyk7XG5cbi8vIG5vbi1zdGFuZGFyZCBWOFxudmFyIGNhcHR1cmVTdGFja1RyYWNlID0gRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGVycm9yLCBDLCBzdGFjaywgZHJvcEVudHJpZXMpIHtcbiAgaWYgKEVSUk9SX1NUQUNLX0lOU1RBTExBQkxFKSB7XG4gICAgaWYgKGNhcHR1cmVTdGFja1RyYWNlKSBjYXB0dXJlU3RhY2tUcmFjZShlcnJvciwgQyk7XG4gICAgZWxzZSBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoZXJyb3IsICdzdGFjaycsIGNsZWFyRXJyb3JTdGFjayhzdGFjaywgZHJvcEVudHJpZXMpKTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBlcnJvciA9IG5ldyBFcnJvcignYScpO1xuICBpZiAoISgnc3RhY2snIGluIGVycm9yKSkgcmV0dXJuIHRydWU7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXJyb3IsICdzdGFjaycsIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCA3KSk7XG4gIHJldHVybiBlcnJvci5zdGFjayAhPT0gNztcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpLmY7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG52YXIgZGVmaW5lR2xvYmFsUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eScpO1xudmFyIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzJyk7XG52YXIgaXNGb3JjZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtZm9yY2VkJyk7XG5cbi8qXG4gIG9wdGlvbnMudGFyZ2V0ICAgICAgICAgLSBuYW1lIG9mIHRoZSB0YXJnZXQgb2JqZWN0XG4gIG9wdGlvbnMuZ2xvYmFsICAgICAgICAgLSB0YXJnZXQgaXMgdGhlIGdsb2JhbCBvYmplY3RcbiAgb3B0aW9ucy5zdGF0ICAgICAgICAgICAtIGV4cG9ydCBhcyBzdGF0aWMgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5wcm90byAgICAgICAgICAtIGV4cG9ydCBhcyBwcm90b3R5cGUgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5yZWFsICAgICAgICAgICAtIHJlYWwgcHJvdG90eXBlIG1ldGhvZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMuZm9yY2VkICAgICAgICAgLSBleHBvcnQgZXZlbiBpZiB0aGUgbmF0aXZlIGZlYXR1cmUgaXMgYXZhaWxhYmxlXG4gIG9wdGlvbnMuYmluZCAgICAgICAgICAgLSBiaW5kIG1ldGhvZHMgdG8gdGhlIHRhcmdldCwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLndyYXAgICAgICAgICAgIC0gd3JhcCBjb25zdHJ1Y3RvcnMgdG8gcHJldmVudGluZyBnbG9iYWwgcG9sbHV0aW9uLCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMudW5zYWZlICAgICAgICAgLSB1c2UgdGhlIHNpbXBsZSBhc3NpZ25tZW50IG9mIHByb3BlcnR5IGluc3RlYWQgb2YgZGVsZXRlICsgZGVmaW5lUHJvcGVydHlcbiAgb3B0aW9ucy5zaGFtICAgICAgICAgICAtIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgb3B0aW9ucy5lbnVtZXJhYmxlICAgICAtIGV4cG9ydCBhcyBlbnVtZXJhYmxlIHByb3BlcnR5XG4gIG9wdGlvbnMuZG9udENhbGxHZXRTZXQgLSBwcmV2ZW50IGNhbGxpbmcgYSBnZXR0ZXIgb24gdGFyZ2V0XG4gIG9wdGlvbnMubmFtZSAgICAgICAgICAgLSB0aGUgLm5hbWUgb2YgdGhlIGZ1bmN0aW9uIGlmIGl0IGRvZXMgbm90IG1hdGNoIHRoZSBrZXlcbiovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcHRpb25zLCBzb3VyY2UpIHtcbiAgdmFyIFRBUkdFVCA9IG9wdGlvbnMudGFyZ2V0O1xuICB2YXIgR0xPQkFMID0gb3B0aW9ucy5nbG9iYWw7XG4gIHZhciBTVEFUSUMgPSBvcHRpb25zLnN0YXQ7XG4gIHZhciBGT1JDRUQsIHRhcmdldCwga2V5LCB0YXJnZXRQcm9wZXJ0eSwgc291cmNlUHJvcGVydHksIGRlc2NyaXB0b3I7XG4gIGlmIChHTE9CQUwpIHtcbiAgICB0YXJnZXQgPSBnbG9iYWxUaGlzO1xuICB9IGVsc2UgaWYgKFNUQVRJQykge1xuICAgIHRhcmdldCA9IGdsb2JhbFRoaXNbVEFSR0VUXSB8fCBkZWZpbmVHbG9iYWxQcm9wZXJ0eShUQVJHRVQsIHt9KTtcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXQgPSBnbG9iYWxUaGlzW1RBUkdFVF0gJiYgZ2xvYmFsVGhpc1tUQVJHRVRdLnByb3RvdHlwZTtcbiAgfVxuICBpZiAodGFyZ2V0KSBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICBzb3VyY2VQcm9wZXJ0eSA9IHNvdXJjZVtrZXldO1xuICAgIGlmIChvcHRpb25zLmRvbnRDYWxsR2V0U2V0KSB7XG4gICAgICBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KTtcbiAgICAgIHRhcmdldFByb3BlcnR5ID0gZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIH0gZWxzZSB0YXJnZXRQcm9wZXJ0eSA9IHRhcmdldFtrZXldO1xuICAgIEZPUkNFRCA9IGlzRm9yY2VkKEdMT0JBTCA/IGtleSA6IFRBUkdFVCArIChTVEFUSUMgPyAnLicgOiAnIycpICsga2V5LCBvcHRpb25zLmZvcmNlZCk7XG4gICAgLy8gY29udGFpbmVkIGluIHRhcmdldFxuICAgIGlmICghRk9SQ0VEICYmIHRhcmdldFByb3BlcnR5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0eXBlb2Ygc291cmNlUHJvcGVydHkgPT0gdHlwZW9mIHRhcmdldFByb3BlcnR5KSBjb250aW51ZTtcbiAgICAgIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMoc291cmNlUHJvcGVydHksIHRhcmdldFByb3BlcnR5KTtcbiAgICB9XG4gICAgLy8gYWRkIGEgZmxhZyB0byBub3QgY29tcGxldGVseSBmdWxsIHBvbHlmaWxsc1xuICAgIGlmIChvcHRpb25zLnNoYW0gfHwgKHRhcmdldFByb3BlcnR5ICYmIHRhcmdldFByb3BlcnR5LnNoYW0pKSB7XG4gICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoc291cmNlUHJvcGVydHksICdzaGFtJywgdHJ1ZSk7XG4gICAgfVxuICAgIGRlZmluZUJ1aWx0SW4odGFyZ2V0LCBrZXksIHNvdXJjZVByb3BlcnR5LCBvcHRpb25zKTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgTkFUSVZFX0JJTkQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUnKTtcblxudmFyIEZ1bmN0aW9uUHJvdG90eXBlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xudmFyIGFwcGx5ID0gRnVuY3Rpb25Qcm90b3R5cGUuYXBwbHk7XG52YXIgY2FsbCA9IEZ1bmN0aW9uUHJvdG90eXBlLmNhbGw7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1yZWZsZWN0IC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gdHlwZW9mIFJlZmxlY3QgPT0gJ29iamVjdCcgJiYgUmVmbGVjdC5hcHBseSB8fCAoTkFUSVZFX0JJTkQgPyBjYWxsLmJpbmQoYXBwbHkpIDogZnVuY3Rpb24gKCkge1xuICByZXR1cm4gY2FsbC5hcHBseShhcHBseSwgYXJndW1lbnRzKTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy1jbGF1c2UnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBiaW5kID0gdW5jdXJyeVRoaXModW5jdXJyeVRoaXMuYmluZCk7XG5cbi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQpIHtcbiAgYUNhbGxhYmxlKGZuKTtcbiAgcmV0dXJuIHRoYXQgPT09IHVuZGVmaW5lZCA/IGZuIDogTkFUSVZFX0JJTkQgPyBiaW5kKGZuLCB0aGF0KSA6IGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWZ1bmN0aW9uLXByb3RvdHlwZS1iaW5kIC0tIHNhZmVcbiAgdmFyIHRlc3QgPSAoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KS5iaW5kKCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgLS0gc2FmZVxuICByZXR1cm4gdHlwZW9mIHRlc3QgIT0gJ2Z1bmN0aW9uJyB8fCB0ZXN0Lmhhc093blByb3BlcnR5KCdwcm90b3R5cGUnKTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBjYWxsID0gRnVuY3Rpb24ucHJvdG90eXBlLmNhbGw7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX0JJTkQgPyBjYWxsLmJpbmQoY2FsbCkgOiBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBjYWxsLmFwcGx5KGNhbGwsIGFyZ3VtZW50cyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcblxudmFyIEZ1bmN0aW9uUHJvdG90eXBlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldERlc2NyaXB0b3IgPSBERVNDUklQVE9SUyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG52YXIgRVhJU1RTID0gaGFzT3duKEZ1bmN0aW9uUHJvdG90eXBlLCAnbmFtZScpO1xuLy8gYWRkaXRpb25hbCBwcm90ZWN0aW9uIGZyb20gbWluaWZpZWQgLyBtYW5nbGVkIC8gZHJvcHBlZCBmdW5jdGlvbiBuYW1lc1xudmFyIFBST1BFUiA9IEVYSVNUUyAmJiAoZnVuY3Rpb24gc29tZXRoaW5nKCkgeyAvKiBlbXB0eSAqLyB9KS5uYW1lID09PSAnc29tZXRoaW5nJztcbnZhciBDT05GSUdVUkFCTEUgPSBFWElTVFMgJiYgKCFERVNDUklQVE9SUyB8fCAoREVTQ1JJUFRPUlMgJiYgZ2V0RGVzY3JpcHRvcihGdW5jdGlvblByb3RvdHlwZSwgJ25hbWUnKS5jb25maWd1cmFibGUpKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEVYSVNUUzogRVhJU1RTLFxuICBQUk9QRVI6IFBST1BFUixcbiAgQ09ORklHVVJBQkxFOiBDT05GSUdVUkFCTEVcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBrZXksIG1ldGhvZCkge1xuICB0cnkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbiAgICByZXR1cm4gdW5jdXJyeVRoaXMoYUNhbGxhYmxlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBrZXkpW21ldGhvZF0pKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjbGFzc29mUmF3ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuKSB7XG4gIC8vIE5hc2hvcm4gYnVnOlxuICAvLyAgIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8xMTI4XG4gIC8vICAgaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzExMzBcbiAgaWYgKGNsYXNzb2ZSYXcoZm4pID09PSAnRnVuY3Rpb24nKSByZXR1cm4gdW5jdXJyeVRoaXMoZm4pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfQklORCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZScpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG52YXIgY2FsbCA9IEZ1bmN0aW9uUHJvdG90eXBlLmNhbGw7XG52YXIgdW5jdXJyeVRoaXNXaXRoQmluZCA9IE5BVElWRV9CSU5EICYmIEZ1bmN0aW9uUHJvdG90eXBlLmJpbmQuYmluZChjYWxsLCBjYWxsKTtcblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfQklORCA/IHVuY3VycnlUaGlzV2l0aEJpbmQgOiBmdW5jdGlvbiAoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gY2FsbC5hcHBseShmbiwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxudmFyIGFGdW5jdGlvbiA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gaXNDYWxsYWJsZShhcmd1bWVudCkgPyBhcmd1bWVudCA6IHVuZGVmaW5lZDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWVzcGFjZSwgbWV0aG9kKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IGFGdW5jdGlvbihnbG9iYWxUaGlzW25hbWVzcGFjZV0pIDogZ2xvYmFsVGhpc1tuYW1lc3BhY2VdICYmIGdsb2JhbFRoaXNbbmFtZXNwYWNlXVttZXRob2RdO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YnKTtcbnZhciBnZXRNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1ldGhvZCcpO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICghaXNOdWxsT3JVbmRlZmluZWQoaXQpKSByZXR1cm4gZ2V0TWV0aG9kKGl0LCBJVEVSQVRPUilcbiAgICB8fCBnZXRNZXRob2QoaXQsICdAQGl0ZXJhdG9yJylcbiAgICB8fCBJdGVyYXRvcnNbY2xhc3NvZihpdCldO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRyeVRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RyeS10by1zdHJpbmcnKTtcbnZhciBnZXRJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCwgdXNpbmdJdGVyYXRvcikge1xuICB2YXIgaXRlcmF0b3JNZXRob2QgPSBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IGdldEl0ZXJhdG9yTWV0aG9kKGFyZ3VtZW50KSA6IHVzaW5nSXRlcmF0b3I7XG4gIGlmIChhQ2FsbGFibGUoaXRlcmF0b3JNZXRob2QpKSByZXR1cm4gYW5PYmplY3QoY2FsbChpdGVyYXRvck1ldGhvZCwgYXJndW1lbnQpKTtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IodHJ5VG9TdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgaXRlcmFibGUnKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBpc051bGxPclVuZGVmaW5lZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZCcpO1xuXG4vLyBgR2V0TWV0aG9kYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZ2V0bWV0aG9kXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChWLCBQKSB7XG4gIHZhciBmdW5jID0gVltQXTtcbiAgcmV0dXJuIGlzTnVsbE9yVW5kZWZpbmVkKGZ1bmMpID8gdW5kZWZpbmVkIDogYUNhbGxhYmxlKGZ1bmMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjaGVjayA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgJiYgaXQuTWF0aCA9PT0gTWF0aCAmJiBpdDtcbn07XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG5tb2R1bGUuZXhwb3J0cyA9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1nbG9iYWwtdGhpcyAtLSBzYWZlXG4gIGNoZWNrKHR5cGVvZiBnbG9iYWxUaGlzID09ICdvYmplY3QnICYmIGdsb2JhbFRoaXMpIHx8XG4gIGNoZWNrKHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCcgJiYgd2luZG93KSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZikgfHxcbiAgY2hlY2sodHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwpIHx8XG4gIGNoZWNrKHR5cGVvZiB0aGlzID09ICdvYmplY3QnICYmIHRoaXMpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuYyAtLSBmYWxsYmFja1xuICAoZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSkoKSB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xuXG52YXIgaGFzT3duUHJvcGVydHkgPSB1bmN1cnJ5VGhpcyh7fS5oYXNPd25Qcm9wZXJ0eSk7XG5cbi8vIGBIYXNPd25Qcm9wZXJ0eWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWhhc293bnByb3BlcnR5XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWhhc293biAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5oYXNPd24gfHwgZnVuY3Rpb24gaGFzT3duKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5KHRvT2JqZWN0KGl0KSwga2V5KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IHt9O1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYSwgYikge1xuICB0cnkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlIC0tIHNhZmVcbiAgICBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gY29uc29sZS5lcnJvcihhKSA6IGNvbnNvbGUuZXJyb3IoYSwgYik7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRCdWlsdEluKCdkb2N1bWVudCcsICdkb2N1bWVudEVsZW1lbnQnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xuXG4vLyBUaGFua3MgdG8gSUU4IGZvciBpdHMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIURFU0NSSVBUT1JTICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjcmVhdGVFbGVtZW50KCdkaXYnKSwgJ2EnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9XG4gIH0pLmEgIT09IDc7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG52YXIgc3BsaXQgPSB1bmN1cnJ5VGhpcygnJy5zcGxpdCk7XG5cbi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG5tb2R1bGUuZXhwb3J0cyA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gdGhyb3dzIGFuIGVycm9yIGluIHJoaW5vLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvcmhpbm8vaXNzdWVzLzM0NlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zIC0tIHNhZmVcbiAgcmV0dXJuICEkT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCk7XG59KSA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY2xhc3NvZihpdCkgPT09ICdTdHJpbmcnID8gc3BsaXQoaXQsICcnKSA6ICRPYmplY3QoaXQpO1xufSA6ICRPYmplY3Q7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHN0b3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xuXG52YXIgZnVuY3Rpb25Ub1N0cmluZyA9IHVuY3VycnlUaGlzKEZ1bmN0aW9uLnRvU3RyaW5nKTtcblxuLy8gdGhpcyBoZWxwZXIgYnJva2VuIGluIGBjb3JlLWpzQDMuNC4xLTMuNC40YCwgc28gd2UgY2FuJ3QgdXNlIGBzaGFyZWRgIGhlbHBlclxuaWYgKCFpc0NhbGxhYmxlKHN0b3JlLmluc3BlY3RTb3VyY2UpKSB7XG4gIHN0b3JlLmluc3BlY3RTb3VyY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gZnVuY3Rpb25Ub1N0cmluZyhpdCk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RvcmUuaW5zcGVjdFNvdXJjZTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG5cbi8vIGBJbnN0YWxsRXJyb3JDYXVzZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtZXJyb3ItY2F1c2UvI3NlYy1lcnJvcm9iamVjdHMtaW5zdGFsbC1lcnJvci1jYXVzZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywgb3B0aW9ucykge1xuICBpZiAoaXNPYmplY3Qob3B0aW9ucykgJiYgJ2NhdXNlJyBpbiBvcHRpb25zKSB7XG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KE8sICdjYXVzZScsIG9wdGlvbnMuY2F1c2UpO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9XRUFLX01BUCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24nKTtcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG52YXIgT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQgPSAnT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWQnO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbFRoaXMuVHlwZUVycm9yO1xudmFyIFdlYWtNYXAgPSBnbG9iYWxUaGlzLldlYWtNYXA7XG52YXIgc2V0LCBnZXQsIGhhcztcblxudmFyIGVuZm9yY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGhhcyhpdCkgPyBnZXQoaXQpIDogc2V0KGl0LCB7fSk7XG59O1xuXG52YXIgZ2V0dGVyRm9yID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpdCkge1xuICAgIHZhciBzdGF0ZTtcbiAgICBpZiAoIWlzT2JqZWN0KGl0KSB8fCAoc3RhdGUgPSBnZXQoaXQpKS50eXBlICE9PSBUWVBFKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICcgKyBUWVBFICsgJyByZXF1aXJlZCcpO1xuICAgIH0gcmV0dXJuIHN0YXRlO1xuICB9O1xufTtcblxuaWYgKE5BVElWRV9XRUFLX01BUCB8fCBzaGFyZWQuc3RhdGUpIHtcbiAgdmFyIHN0b3JlID0gc2hhcmVkLnN0YXRlIHx8IChzaGFyZWQuc3RhdGUgPSBuZXcgV2Vha01hcCgpKTtcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tc2VsZi1hc3NpZ24gLS0gcHJvdG90eXBlIG1ldGhvZHMgcHJvdGVjdGlvbiAqL1xuICBzdG9yZS5nZXQgPSBzdG9yZS5nZXQ7XG4gIHN0b3JlLmhhcyA9IHN0b3JlLmhhcztcbiAgc3RvcmUuc2V0ID0gc3RvcmUuc2V0O1xuICAvKiBlc2xpbnQtZW5hYmxlIG5vLXNlbGYtYXNzaWduIC0tIHByb3RvdHlwZSBtZXRob2RzIHByb3RlY3Rpb24gKi9cbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGlmIChzdG9yZS5oYXMoaXQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEKTtcbiAgICBtZXRhZGF0YS5mYWNhZGUgPSBpdDtcbiAgICBzdG9yZS5zZXQoaXQsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBzdG9yZS5nZXQoaXQpIHx8IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gc3RvcmUuaGFzKGl0KTtcbiAgfTtcbn0gZWxzZSB7XG4gIHZhciBTVEFURSA9IHNoYXJlZEtleSgnc3RhdGUnKTtcbiAgaGlkZGVuS2V5c1tTVEFURV0gPSB0cnVlO1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgaWYgKGhhc093bihpdCwgU1RBVEUpKSB0aHJvdyBuZXcgVHlwZUVycm9yKE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEKTtcbiAgICBtZXRhZGF0YS5mYWNhZGUgPSBpdDtcbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoaXQsIFNUQVRFLCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gaGFzT3duKGl0LCBTVEFURSkgPyBpdFtTVEFURV0gOiB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGhhc093bihpdCwgU1RBVEUpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBzZXQsXG4gIGdldDogZ2V0LFxuICBoYXM6IGhhcyxcbiAgZW5mb3JjZTogZW5mb3JjZSxcbiAgZ2V0dGVyRm9yOiBnZXR0ZXJGb3Jcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycycpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgQXJyYXlQcm90b3R5cGUgPSBBcnJheS5wcm90b3R5cGU7XG5cbi8vIGNoZWNrIG9uIGRlZmF1bHQgQXJyYXkgaXRlcmF0b3Jcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAhPT0gdW5kZWZpbmVkICYmIChJdGVyYXRvcnMuQXJyYXkgPT09IGl0IHx8IEFycmF5UHJvdG90eXBlW0lURVJBVE9SXSA9PT0gaXQpO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtSXNIVE1MRERBLWludGVybmFsLXNsb3RcbnZhciBkb2N1bWVudEFsbCA9IHR5cGVvZiBkb2N1bWVudCA9PSAnb2JqZWN0JyAmJiBkb2N1bWVudC5hbGw7XG5cbi8vIGBJc0NhbGxhYmxlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNjYWxsYWJsZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8tdHlwZW9mLXVuZGVmaW5lZCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgZG9jdW1lbnRBbGwgPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnRBbGwgIT09IHVuZGVmaW5lZCA/IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09ICdmdW5jdGlvbicgfHwgYXJndW1lbnQgPT09IGRvY3VtZW50QWxsO1xufSA6IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09ICdmdW5jdGlvbic7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZicpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgaW5zcGVjdFNvdXJjZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZScpO1xuXG52YXIgbm9vcCA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBjb25zdHJ1Y3QgPSBnZXRCdWlsdEluKCdSZWZsZWN0JywgJ2NvbnN0cnVjdCcpO1xudmFyIGNvbnN0cnVjdG9yUmVnRXhwID0gL15cXHMqKD86Y2xhc3N8ZnVuY3Rpb24pXFxiLztcbnZhciBleGVjID0gdW5jdXJyeVRoaXMoY29uc3RydWN0b3JSZWdFeHAuZXhlYyk7XG52YXIgSU5DT1JSRUNUX1RPX1NUUklORyA9ICFjb25zdHJ1Y3RvclJlZ0V4cC50ZXN0KG5vb3ApO1xuXG52YXIgaXNDb25zdHJ1Y3Rvck1vZGVybiA9IGZ1bmN0aW9uIGlzQ29uc3RydWN0b3IoYXJndW1lbnQpIHtcbiAgaWYgKCFpc0NhbGxhYmxlKGFyZ3VtZW50KSkgcmV0dXJuIGZhbHNlO1xuICB0cnkge1xuICAgIGNvbnN0cnVjdChub29wLCBbXSwgYXJndW1lbnQpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxudmFyIGlzQ29uc3RydWN0b3JMZWdhY3kgPSBmdW5jdGlvbiBpc0NvbnN0cnVjdG9yKGFyZ3VtZW50KSB7XG4gIGlmICghaXNDYWxsYWJsZShhcmd1bWVudCkpIHJldHVybiBmYWxzZTtcbiAgc3dpdGNoIChjbGFzc29mKGFyZ3VtZW50KSkge1xuICAgIGNhc2UgJ0FzeW5jRnVuY3Rpb24nOlxuICAgIGNhc2UgJ0dlbmVyYXRvckZ1bmN0aW9uJzpcbiAgICBjYXNlICdBc3luY0dlbmVyYXRvckZ1bmN0aW9uJzogcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRyeSB7XG4gICAgLy8gd2UgY2FuJ3QgY2hlY2sgLnByb3RvdHlwZSBzaW5jZSBjb25zdHJ1Y3RvcnMgcHJvZHVjZWQgYnkgLmJpbmQgaGF2ZW4ndCBpdFxuICAgIC8vIGBGdW5jdGlvbiN0b1N0cmluZ2AgdGhyb3dzIG9uIHNvbWUgYnVpbHQtaXQgZnVuY3Rpb24gaW4gc29tZSBsZWdhY3kgZW5naW5lc1xuICAgIC8vIChmb3IgZXhhbXBsZSwgYERPTVF1YWRgIGFuZCBzaW1pbGFyIGluIEZGNDEtKVxuICAgIHJldHVybiBJTkNPUlJFQ1RfVE9fU1RSSU5HIHx8ICEhZXhlYyhjb25zdHJ1Y3RvclJlZ0V4cCwgaW5zcGVjdFNvdXJjZShhcmd1bWVudCkpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5pc0NvbnN0cnVjdG9yTGVnYWN5LnNoYW0gPSB0cnVlO1xuXG4vLyBgSXNDb25zdHJ1Y3RvcmAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWlzY29uc3RydWN0b3Jcbm1vZHVsZS5leHBvcnRzID0gIWNvbnN0cnVjdCB8fCBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBjYWxsZWQ7XG4gIHJldHVybiBpc0NvbnN0cnVjdG9yTW9kZXJuKGlzQ29uc3RydWN0b3JNb2Rlcm4uY2FsbClcbiAgICB8fCAhaXNDb25zdHJ1Y3Rvck1vZGVybihPYmplY3QpXG4gICAgfHwgIWlzQ29uc3RydWN0b3JNb2Rlcm4oZnVuY3Rpb24gKCkgeyBjYWxsZWQgPSB0cnVlOyB9KVxuICAgIHx8IGNhbGxlZDtcbn0pID8gaXNDb25zdHJ1Y3RvckxlZ2FjeSA6IGlzQ29uc3RydWN0b3JNb2Rlcm47XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciByZXBsYWNlbWVudCA9IC8jfFxcLnByb3RvdHlwZVxcLi87XG5cbnZhciBpc0ZvcmNlZCA9IGZ1bmN0aW9uIChmZWF0dXJlLCBkZXRlY3Rpb24pIHtcbiAgdmFyIHZhbHVlID0gZGF0YVtub3JtYWxpemUoZmVhdHVyZSldO1xuICByZXR1cm4gdmFsdWUgPT09IFBPTFlGSUxMID8gdHJ1ZVxuICAgIDogdmFsdWUgPT09IE5BVElWRSA/IGZhbHNlXG4gICAgOiBpc0NhbGxhYmxlKGRldGVjdGlvbikgPyBmYWlscyhkZXRlY3Rpb24pXG4gICAgOiAhIWRldGVjdGlvbjtcbn07XG5cbnZhciBub3JtYWxpemUgPSBpc0ZvcmNlZC5ub3JtYWxpemUgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHJldHVybiBTdHJpbmcoc3RyaW5nKS5yZXBsYWNlKHJlcGxhY2VtZW50LCAnLicpLnRvTG93ZXJDYXNlKCk7XG59O1xuXG52YXIgZGF0YSA9IGlzRm9yY2VkLmRhdGEgPSB7fTtcbnZhciBOQVRJVkUgPSBpc0ZvcmNlZC5OQVRJVkUgPSAnTic7XG52YXIgUE9MWUZJTEwgPSBpc0ZvcmNlZC5QT0xZRklMTCA9ICdQJztcblxubW9kdWxlLmV4cG9ydHMgPSBpc0ZvcmNlZDtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIHdlIGNhbid0IHVzZSBqdXN0IGBpdCA9PSBudWxsYCBzaW5jZSBvZiBgZG9jdW1lbnQuYWxsYCBzcGVjaWFsIGNhc2Vcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtSXNIVE1MRERBLWludGVybmFsLXNsb3QtYWVjXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPT09IG51bGwgfHwgaXQgPT09IHVuZGVmaW5lZDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiBpc0NhbGxhYmxlKGl0KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBpc09iamVjdChhcmd1bWVudCkgfHwgYXJndW1lbnQgPT09IG51bGw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmYWxzZTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc1Byb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YnKTtcbnZhciBVU0VfU1lNQk9MX0FTX1VJRCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZCcpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcblxubW9kdWxlLmV4cG9ydHMgPSBVU0VfU1lNQk9MX0FTX1VJRCA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnO1xufSA6IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgJFN5bWJvbCA9IGdldEJ1aWx0SW4oJ1N5bWJvbCcpO1xuICByZXR1cm4gaXNDYWxsYWJsZSgkU3ltYm9sKSAmJiBpc1Byb3RvdHlwZU9mKCRTeW1ib2wucHJvdG90eXBlLCAkT2JqZWN0KGl0KSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdHJ5VG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZycpO1xudmFyIGlzQXJyYXlJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1hcnJheS1pdGVyYXRvci1tZXRob2QnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xudmFyIGlzUHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZicpO1xudmFyIGdldEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvcicpO1xudmFyIGdldEl0ZXJhdG9yTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QnKTtcbnZhciBpdGVyYXRvckNsb3NlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9yLWNsb3NlJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG52YXIgUmVzdWx0ID0gZnVuY3Rpb24gKHN0b3BwZWQsIHJlc3VsdCkge1xuICB0aGlzLnN0b3BwZWQgPSBzdG9wcGVkO1xuICB0aGlzLnJlc3VsdCA9IHJlc3VsdDtcbn07XG5cbnZhciBSZXN1bHRQcm90b3R5cGUgPSBSZXN1bHQucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYWJsZSwgdW5ib3VuZEZ1bmN0aW9uLCBvcHRpb25zKSB7XG4gIHZhciB0aGF0ID0gb3B0aW9ucyAmJiBvcHRpb25zLnRoYXQ7XG4gIHZhciBBU19FTlRSSUVTID0gISEob3B0aW9ucyAmJiBvcHRpb25zLkFTX0VOVFJJRVMpO1xuICB2YXIgSVNfUkVDT1JEID0gISEob3B0aW9ucyAmJiBvcHRpb25zLklTX1JFQ09SRCk7XG4gIHZhciBJU19JVEVSQVRPUiA9ICEhKG9wdGlvbnMgJiYgb3B0aW9ucy5JU19JVEVSQVRPUik7XG4gIHZhciBJTlRFUlJVUFRFRCA9ICEhKG9wdGlvbnMgJiYgb3B0aW9ucy5JTlRFUlJVUFRFRCk7XG4gIHZhciBmbiA9IGJpbmQodW5ib3VuZEZ1bmN0aW9uLCB0aGF0KTtcbiAgdmFyIGl0ZXJhdG9yLCBpdGVyRm4sIGluZGV4LCBsZW5ndGgsIHJlc3VsdCwgbmV4dCwgc3RlcDtcblxuICB2YXIgc3RvcCA9IGZ1bmN0aW9uIChjb25kaXRpb24pIHtcbiAgICBpZiAoaXRlcmF0b3IpIGl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsICdub3JtYWwnLCBjb25kaXRpb24pO1xuICAgIHJldHVybiBuZXcgUmVzdWx0KHRydWUsIGNvbmRpdGlvbik7XG4gIH07XG5cbiAgdmFyIGNhbGxGbiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGlmIChBU19FTlRSSUVTKSB7XG4gICAgICBhbk9iamVjdCh2YWx1ZSk7XG4gICAgICByZXR1cm4gSU5URVJSVVBURUQgPyBmbih2YWx1ZVswXSwgdmFsdWVbMV0sIHN0b3ApIDogZm4odmFsdWVbMF0sIHZhbHVlWzFdKTtcbiAgICB9IHJldHVybiBJTlRFUlJVUFRFRCA/IGZuKHZhbHVlLCBzdG9wKSA6IGZuKHZhbHVlKTtcbiAgfTtcblxuICBpZiAoSVNfUkVDT1JEKSB7XG4gICAgaXRlcmF0b3IgPSBpdGVyYWJsZS5pdGVyYXRvcjtcbiAgfSBlbHNlIGlmIChJU19JVEVSQVRPUikge1xuICAgIGl0ZXJhdG9yID0gaXRlcmFibGU7XG4gIH0gZWxzZSB7XG4gICAgaXRlckZuID0gZ2V0SXRlcmF0b3JNZXRob2QoaXRlcmFibGUpO1xuICAgIGlmICghaXRlckZuKSB0aHJvdyBuZXcgJFR5cGVFcnJvcih0cnlUb1N0cmluZyhpdGVyYWJsZSkgKyAnIGlzIG5vdCBpdGVyYWJsZScpO1xuICAgIC8vIG9wdGltaXNhdGlvbiBmb3IgYXJyYXkgaXRlcmF0b3JzXG4gICAgaWYgKGlzQXJyYXlJdGVyYXRvck1ldGhvZChpdGVyRm4pKSB7XG4gICAgICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gbGVuZ3RoT2ZBcnJheUxpa2UoaXRlcmFibGUpOyBsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgICByZXN1bHQgPSBjYWxsRm4oaXRlcmFibGVbaW5kZXhdKTtcbiAgICAgICAgaWYgKHJlc3VsdCAmJiBpc1Byb3RvdHlwZU9mKFJlc3VsdFByb3RvdHlwZSwgcmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0gcmV0dXJuIG5ldyBSZXN1bHQoZmFsc2UpO1xuICAgIH1cbiAgICBpdGVyYXRvciA9IGdldEl0ZXJhdG9yKGl0ZXJhYmxlLCBpdGVyRm4pO1xuICB9XG5cbiAgbmV4dCA9IElTX1JFQ09SRCA/IGl0ZXJhYmxlLm5leHQgOiBpdGVyYXRvci5uZXh0O1xuICB3aGlsZSAoIShzdGVwID0gY2FsbChuZXh0LCBpdGVyYXRvcikpLmRvbmUpIHtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gY2FsbEZuKHN0ZXAudmFsdWUpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCAndGhyb3cnLCBlcnJvcik7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgcmVzdWx0ID09ICdvYmplY3QnICYmIHJlc3VsdCAmJiBpc1Byb3RvdHlwZU9mKFJlc3VsdFByb3RvdHlwZSwgcmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgfSByZXR1cm4gbmV3IFJlc3VsdChmYWxzZSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhdG9yLCBraW5kLCB2YWx1ZSkge1xuICB2YXIgaW5uZXJSZXN1bHQsIGlubmVyRXJyb3I7XG4gIGFuT2JqZWN0KGl0ZXJhdG9yKTtcbiAgdHJ5IHtcbiAgICBpbm5lclJlc3VsdCA9IGdldE1ldGhvZChpdGVyYXRvciwgJ3JldHVybicpO1xuICAgIGlmICghaW5uZXJSZXN1bHQpIHtcbiAgICAgIGlmIChraW5kID09PSAndGhyb3cnKSB0aHJvdyB2YWx1ZTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaW5uZXJSZXN1bHQgPSBjYWxsKGlubmVyUmVzdWx0LCBpdGVyYXRvcik7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaW5uZXJFcnJvciA9IHRydWU7XG4gICAgaW5uZXJSZXN1bHQgPSBlcnJvcjtcbiAgfVxuICBpZiAoa2luZCA9PT0gJ3Rocm93JykgdGhyb3cgdmFsdWU7XG4gIGlmIChpbm5lckVycm9yKSB0aHJvdyBpbm5lclJlc3VsdDtcbiAgYW5PYmplY3QoaW5uZXJSZXN1bHQpO1xuICByZXR1cm4gdmFsdWU7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEl0ZXJhdG9yUHJvdG90eXBlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycy1jb3JlJykuSXRlcmF0b3JQcm90b3R5cGU7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMnKTtcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChJdGVyYXRvckNvbnN0cnVjdG9yLCBOQU1FLCBuZXh0LCBFTlVNRVJBQkxFX05FWFQpIHtcbiAgdmFyIFRPX1NUUklOR19UQUcgPSBOQU1FICsgJyBJdGVyYXRvcic7XG4gIEl0ZXJhdG9yQ29uc3RydWN0b3IucHJvdG90eXBlID0gY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlLCB7IG5leHQ6IGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigrIUVOVU1FUkFCTEVfTkVYVCwgbmV4dCkgfSk7XG4gIHNldFRvU3RyaW5nVGFnKEl0ZXJhdG9yQ29uc3RydWN0b3IsIFRPX1NUUklOR19UQUcsIGZhbHNlLCB0cnVlKTtcbiAgSXRlcmF0b3JzW1RPX1NUUklOR19UQUddID0gcmV0dXJuVGhpcztcbiAgcmV0dXJuIEl0ZXJhdG9yQ29uc3RydWN0b3I7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgRnVuY3Rpb25OYW1lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvci1jcmVhdGUtY29uc3RydWN0b3InKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZicpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgZGVmaW5lQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4nKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzJyk7XG52YXIgSXRlcmF0b3JzQ29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMtY29yZScpO1xuXG52YXIgUFJPUEVSX0ZVTkNUSU9OX05BTUUgPSBGdW5jdGlvbk5hbWUuUFJPUEVSO1xudmFyIENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FID0gRnVuY3Rpb25OYW1lLkNPTkZJR1VSQUJMRTtcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IEl0ZXJhdG9yc0NvcmUuSXRlcmF0b3JQcm90b3R5cGU7XG52YXIgQlVHR1lfU0FGQVJJX0lURVJBVE9SUyA9IEl0ZXJhdG9yc0NvcmUuQlVHR1lfU0FGQVJJX0lURVJBVE9SUztcbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcbnZhciBLRVlTID0gJ2tleXMnO1xudmFyIFZBTFVFUyA9ICd2YWx1ZXMnO1xudmFyIEVOVFJJRVMgPSAnZW50cmllcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSXRlcmFibGUsIE5BTUUsIEl0ZXJhdG9yQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gIGNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IoSXRlcmF0b3JDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCk7XG5cbiAgdmFyIGdldEl0ZXJhdGlvbk1ldGhvZCA9IGZ1bmN0aW9uIChLSU5EKSB7XG4gICAgaWYgKEtJTkQgPT09IERFRkFVTFQgJiYgZGVmYXVsdEl0ZXJhdG9yKSByZXR1cm4gZGVmYXVsdEl0ZXJhdG9yO1xuICAgIGlmICghQlVHR1lfU0FGQVJJX0lURVJBVE9SUyAmJiBLSU5EICYmIEtJTkQgaW4gSXRlcmFibGVQcm90b3R5cGUpIHJldHVybiBJdGVyYWJsZVByb3RvdHlwZVtLSU5EXTtcblxuICAgIHN3aXRjaCAoS0lORCkge1xuICAgICAgY2FzZSBLRVlTOiByZXR1cm4gZnVuY3Rpb24ga2V5cygpIHsgcmV0dXJuIG5ldyBJdGVyYXRvckNvbnN0cnVjdG9yKHRoaXMsIEtJTkQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgSXRlcmF0b3JDb25zdHJ1Y3Rvcih0aGlzLCBLSU5EKTsgfTtcbiAgICAgIGNhc2UgRU5UUklFUzogcmV0dXJuIGZ1bmN0aW9uIGVudHJpZXMoKSB7IHJldHVybiBuZXcgSXRlcmF0b3JDb25zdHJ1Y3Rvcih0aGlzLCBLSU5EKTsgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gbmV3IEl0ZXJhdG9yQ29uc3RydWN0b3IodGhpcyk7IH07XG4gIH07XG5cbiAgdmFyIFRPX1NUUklOR19UQUcgPSBOQU1FICsgJyBJdGVyYXRvcic7XG4gIHZhciBJTkNPUlJFQ1RfVkFMVUVTX05BTUUgPSBmYWxzZTtcbiAgdmFyIEl0ZXJhYmxlUHJvdG90eXBlID0gSXRlcmFibGUucHJvdG90eXBlO1xuICB2YXIgbmF0aXZlSXRlcmF0b3IgPSBJdGVyYWJsZVByb3RvdHlwZVtJVEVSQVRPUl1cbiAgICB8fCBJdGVyYWJsZVByb3RvdHlwZVsnQEBpdGVyYXRvciddXG4gICAgfHwgREVGQVVMVCAmJiBJdGVyYWJsZVByb3RvdHlwZVtERUZBVUxUXTtcbiAgdmFyIGRlZmF1bHRJdGVyYXRvciA9ICFCVUdHWV9TQUZBUklfSVRFUkFUT1JTICYmIG5hdGl2ZUl0ZXJhdG9yIHx8IGdldEl0ZXJhdGlvbk1ldGhvZChERUZBVUxUKTtcbiAgdmFyIGFueU5hdGl2ZUl0ZXJhdG9yID0gTkFNRSA9PT0gJ0FycmF5JyA/IEl0ZXJhYmxlUHJvdG90eXBlLmVudHJpZXMgfHwgbmF0aXZlSXRlcmF0b3IgOiBuYXRpdmVJdGVyYXRvcjtcbiAgdmFyIEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSwgbWV0aG9kcywgS0VZO1xuXG4gIC8vIGZpeCBuYXRpdmVcbiAgaWYgKGFueU5hdGl2ZUl0ZXJhdG9yKSB7XG4gICAgQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoYW55TmF0aXZlSXRlcmF0b3IuY2FsbChuZXcgSXRlcmFibGUoKSkpO1xuICAgIGlmIChDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLm5leHQpIHtcbiAgICAgIGlmICghSVNfUFVSRSAmJiBnZXRQcm90b3R5cGVPZihDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUpICE9PSBJdGVyYXRvclByb3RvdHlwZSkge1xuICAgICAgICBpZiAoc2V0UHJvdG90eXBlT2YpIHtcbiAgICAgICAgICBzZXRQcm90b3R5cGVPZihDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIEl0ZXJhdG9yUHJvdG90eXBlKTtcbiAgICAgICAgfSBlbHNlIGlmICghaXNDYWxsYWJsZShDdXJyZW50SXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdKSkge1xuICAgICAgICAgIGRlZmluZUJ1aWx0SW4oQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLCBJVEVSQVRPUiwgcmV0dXJuVGhpcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIFNldCBAQHRvU3RyaW5nVGFnIHRvIG5hdGl2ZSBpdGVyYXRvcnNcbiAgICAgIHNldFRvU3RyaW5nVGFnKEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSwgVE9fU1RSSU5HX1RBRywgdHJ1ZSwgdHJ1ZSk7XG4gICAgICBpZiAoSVNfUFVSRSkgSXRlcmF0b3JzW1RPX1NUUklOR19UQUddID0gcmV0dXJuVGhpcztcbiAgICB9XG4gIH1cblxuICAvLyBmaXggQXJyYXkucHJvdG90eXBlLnsgdmFsdWVzLCBAQGl0ZXJhdG9yIH0ubmFtZSBpbiBWOCAvIEZGXG4gIGlmIChQUk9QRVJfRlVOQ1RJT05fTkFNRSAmJiBERUZBVUxUID09PSBWQUxVRVMgJiYgbmF0aXZlSXRlcmF0b3IgJiYgbmF0aXZlSXRlcmF0b3IubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgaWYgKCFJU19QVVJFICYmIENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FKSB7XG4gICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoSXRlcmFibGVQcm90b3R5cGUsICduYW1lJywgVkFMVUVTKTtcbiAgICB9IGVsc2Uge1xuICAgICAgSU5DT1JSRUNUX1ZBTFVFU19OQU1FID0gdHJ1ZTtcbiAgICAgIGRlZmF1bHRJdGVyYXRvciA9IGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuIGNhbGwobmF0aXZlSXRlcmF0b3IsIHRoaXMpOyB9O1xuICAgIH1cbiAgfVxuXG4gIC8vIGV4cG9ydCBhZGRpdGlvbmFsIG1ldGhvZHNcbiAgaWYgKERFRkFVTFQpIHtcbiAgICBtZXRob2RzID0ge1xuICAgICAgdmFsdWVzOiBnZXRJdGVyYXRpb25NZXRob2QoVkFMVUVTKSxcbiAgICAgIGtleXM6IElTX1NFVCA/IGRlZmF1bHRJdGVyYXRvciA6IGdldEl0ZXJhdGlvbk1ldGhvZChLRVlTKSxcbiAgICAgIGVudHJpZXM6IGdldEl0ZXJhdGlvbk1ldGhvZChFTlRSSUVTKVxuICAgIH07XG4gICAgaWYgKEZPUkNFRCkgZm9yIChLRVkgaW4gbWV0aG9kcykge1xuICAgICAgaWYgKEJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgfHwgSU5DT1JSRUNUX1ZBTFVFU19OQU1FIHx8ICEoS0VZIGluIEl0ZXJhYmxlUHJvdG90eXBlKSkge1xuICAgICAgICBkZWZpbmVCdWlsdEluKEl0ZXJhYmxlUHJvdG90eXBlLCBLRVksIG1ldGhvZHNbS0VZXSk7XG4gICAgICB9XG4gICAgfSBlbHNlICQoeyB0YXJnZXQ6IE5BTUUsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IEJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgfHwgSU5DT1JSRUNUX1ZBTFVFU19OQU1FIH0sIG1ldGhvZHMpO1xuICB9XG5cbiAgLy8gZGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUlTX1BVUkUgfHwgRk9SQ0VEKSAmJiBJdGVyYWJsZVByb3RvdHlwZVtJVEVSQVRPUl0gIT09IGRlZmF1bHRJdGVyYXRvcikge1xuICAgIGRlZmluZUJ1aWx0SW4oSXRlcmFibGVQcm90b3R5cGUsIElURVJBVE9SLCBkZWZhdWx0SXRlcmF0b3IsIHsgbmFtZTogREVGQVVMVCB9KTtcbiAgfVxuICBJdGVyYXRvcnNbTkFNRV0gPSBkZWZhdWx0SXRlcmF0b3I7XG5cbiAgcmV0dXJuIG1ldGhvZHM7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YnKTtcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgQlVHR1lfU0FGQVJJX0lURVJBVE9SUyA9IGZhbHNlO1xuXG4vLyBgJUl0ZXJhdG9yUHJvdG90eXBlJWAgb2JqZWN0XG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSVpdGVyYXRvcnByb3RvdHlwZSUtb2JqZWN0XG52YXIgSXRlcmF0b3JQcm90b3R5cGUsIFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZSwgYXJyYXlJdGVyYXRvcjtcblxuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tYXJyYXktcHJvdG90eXBlLWtleXMgLS0gc2FmZSAqL1xuaWYgKFtdLmtleXMpIHtcbiAgYXJyYXlJdGVyYXRvciA9IFtdLmtleXMoKTtcbiAgLy8gU2FmYXJpIDggaGFzIGJ1Z2d5IGl0ZXJhdG9ycyB3L28gYG5leHRgXG4gIGlmICghKCduZXh0JyBpbiBhcnJheUl0ZXJhdG9yKSkgQlVHR1lfU0FGQVJJX0lURVJBVE9SUyA9IHRydWU7XG4gIGVsc2Uge1xuICAgIFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKGdldFByb3RvdHlwZU9mKGFycmF5SXRlcmF0b3IpKTtcbiAgICBpZiAoUHJvdG90eXBlT2ZBcnJheUl0ZXJhdG9yUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlKSBJdGVyYXRvclByb3RvdHlwZSA9IFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZTtcbiAgfVxufVxuXG52YXIgTkVXX0lURVJBVE9SX1BST1RPVFlQRSA9ICFpc09iamVjdChJdGVyYXRvclByb3RvdHlwZSkgfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgdGVzdCA9IHt9O1xuICAvLyBGRjQ0LSBsZWdhY3kgaXRlcmF0b3JzIGNhc2VcbiAgcmV0dXJuIEl0ZXJhdG9yUHJvdG90eXBlW0lURVJBVE9SXS5jYWxsKHRlc3QpICE9PSB0ZXN0O1xufSk7XG5cbmlmIChORVdfSVRFUkFUT1JfUFJPVE9UWVBFKSBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuZWxzZSBpZiAoSVNfUFVSRSkgSXRlcmF0b3JQcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUpO1xuXG4vLyBgJUl0ZXJhdG9yUHJvdG90eXBlJVtAQGl0ZXJhdG9yXSgpYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJWl0ZXJhdG9ycHJvdG90eXBlJS1AQGl0ZXJhdG9yXG5pZiAoIWlzQ2FsbGFibGUoSXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdKSkge1xuICBkZWZpbmVCdWlsdEluKEl0ZXJhdG9yUHJvdG90eXBlLCBJVEVSQVRPUiwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEl0ZXJhdG9yUHJvdG90eXBlOiBJdGVyYXRvclByb3RvdHlwZSxcbiAgQlVHR1lfU0FGQVJJX0lURVJBVE9SUzogQlVHR1lfU0FGQVJJX0lURVJBVE9SU1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0ge307XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG5cbi8vIGBMZW5ndGhPZkFycmF5TGlrZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWxlbmd0aG9mYXJyYXlsaWtlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIHRvTGVuZ3RoKG9iai5sZW5ndGgpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tbmFtZScpLkNPTkZJR1VSQUJMRTtcbnZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xuXG52YXIgZW5mb3JjZUludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmVuZm9yY2U7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0O1xudmFyICRTdHJpbmcgPSBTdHJpbmc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcbnZhciByZXBsYWNlID0gdW5jdXJyeVRoaXMoJycucmVwbGFjZSk7XG52YXIgam9pbiA9IHVuY3VycnlUaGlzKFtdLmpvaW4pO1xuXG52YXIgQ09ORklHVVJBQkxFX0xFTkdUSCA9IERFU0NSSVBUT1JTICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eShmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sICdsZW5ndGgnLCB7IHZhbHVlOiA4IH0pLmxlbmd0aCAhPT0gODtcbn0pO1xuXG52YXIgVEVNUExBVEUgPSBTdHJpbmcoU3RyaW5nKS5zcGxpdCgnU3RyaW5nJyk7XG5cbnZhciBtYWtlQnVpbHRJbiA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHZhbHVlLCBuYW1lLCBvcHRpb25zKSB7XG4gIGlmIChzdHJpbmdTbGljZSgkU3RyaW5nKG5hbWUpLCAwLCA3KSA9PT0gJ1N5bWJvbCgnKSB7XG4gICAgbmFtZSA9ICdbJyArIHJlcGxhY2UoJFN0cmluZyhuYW1lKSwgL15TeW1ib2xcXCgoW14pXSopXFwpLiokLywgJyQxJykgKyAnXSc7XG4gIH1cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5nZXR0ZXIpIG5hbWUgPSAnZ2V0ICcgKyBuYW1lO1xuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnNldHRlcikgbmFtZSA9ICdzZXQgJyArIG5hbWU7XG4gIGlmICghaGFzT3duKHZhbHVlLCAnbmFtZScpIHx8IChDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSAmJiB2YWx1ZS5uYW1lICE9PSBuYW1lKSkge1xuICAgIGlmIChERVNDUklQVE9SUykgZGVmaW5lUHJvcGVydHkodmFsdWUsICduYW1lJywgeyB2YWx1ZTogbmFtZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuICAgIGVsc2UgdmFsdWUubmFtZSA9IG5hbWU7XG4gIH1cbiAgaWYgKENPTkZJR1VSQUJMRV9MRU5HVEggJiYgb3B0aW9ucyAmJiBoYXNPd24ob3B0aW9ucywgJ2FyaXR5JykgJiYgdmFsdWUubGVuZ3RoICE9PSBvcHRpb25zLmFyaXR5KSB7XG4gICAgZGVmaW5lUHJvcGVydHkodmFsdWUsICdsZW5ndGgnLCB7IHZhbHVlOiBvcHRpb25zLmFyaXR5IH0pO1xuICB9XG4gIHRyeSB7XG4gICAgaWYgKG9wdGlvbnMgJiYgaGFzT3duKG9wdGlvbnMsICdjb25zdHJ1Y3RvcicpICYmIG9wdGlvbnMuY29uc3RydWN0b3IpIHtcbiAgICAgIGlmIChERVNDUklQVE9SUykgZGVmaW5lUHJvcGVydHkodmFsdWUsICdwcm90b3R5cGUnLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTtcbiAgICAvLyBpbiBWOCB+IENocm9tZSA1MywgcHJvdG90eXBlcyBvZiBzb21lIG1ldGhvZHMsIGxpa2UgYEFycmF5LnByb3RvdHlwZS52YWx1ZXNgLCBhcmUgbm9uLXdyaXRhYmxlXG4gICAgfSBlbHNlIGlmICh2YWx1ZS5wcm90b3R5cGUpIHZhbHVlLnByb3RvdHlwZSA9IHVuZGVmaW5lZDtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICB2YXIgc3RhdGUgPSBlbmZvcmNlSW50ZXJuYWxTdGF0ZSh2YWx1ZSk7XG4gIGlmICghaGFzT3duKHN0YXRlLCAnc291cmNlJykpIHtcbiAgICBzdGF0ZS5zb3VyY2UgPSBqb2luKFRFTVBMQVRFLCB0eXBlb2YgbmFtZSA9PSAnc3RyaW5nJyA/IG5hbWUgOiAnJyk7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcblxuLy8gYWRkIGZha2UgRnVuY3Rpb24jdG9TdHJpbmcgZm9yIGNvcnJlY3Qgd29yayB3cmFwcGVkIG1ldGhvZHMgLyBjb25zdHJ1Y3RvcnMgd2l0aCBtZXRob2RzIGxpa2UgTG9EYXNoIGlzTmF0aXZlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXh0ZW5kLW5hdGl2ZSAtLSByZXF1aXJlZFxuRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nID0gbWFrZUJ1aWx0SW4oZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiBpc0NhbGxhYmxlKHRoaXMpICYmIGdldEludGVybmFsU3RhdGUodGhpcykuc291cmNlIHx8IGluc3BlY3RTb3VyY2UodGhpcyk7XG59LCAndG9TdHJpbmcnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcblxuLy8gYE1hdGgudHJ1bmNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXRoLnRydW5jXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tbWF0aC10cnVuYyAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGgudHJ1bmMgfHwgZnVuY3Rpb24gdHJ1bmMoeCkge1xuICB2YXIgbiA9ICt4O1xuICByZXR1cm4gKG4gPiAwID8gZmxvb3IgOiBjZWlsKShuKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIHNhZmVHZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NhZmUtZ2V0LWJ1aWx0LWluJyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBtYWNyb3Rhc2sgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdGFzaycpLnNldDtcbnZhciBRdWV1ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9xdWV1ZScpO1xudmFyIElTX0lPUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC1pcy1pb3MnKTtcbnZhciBJU19JT1NfUEVCQkxFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50LWlzLWlvcy1wZWJibGUnKTtcbnZhciBJU19XRUJPU19XRUJLSVQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQtaXMtd2Vib3Mtd2Via2l0Jyk7XG52YXIgSVNfTk9ERSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC1pcy1ub2RlJyk7XG5cbnZhciBNdXRhdGlvbk9ic2VydmVyID0gZ2xvYmFsVGhpcy5NdXRhdGlvbk9ic2VydmVyIHx8IGdsb2JhbFRoaXMuV2ViS2l0TXV0YXRpb25PYnNlcnZlcjtcbnZhciBkb2N1bWVudCA9IGdsb2JhbFRoaXMuZG9jdW1lbnQ7XG52YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbnZhciBQcm9taXNlID0gZ2xvYmFsVGhpcy5Qcm9taXNlO1xudmFyIG1pY3JvdGFzayA9IHNhZmVHZXRCdWlsdEluKCdxdWV1ZU1pY3JvdGFzaycpO1xudmFyIG5vdGlmeSwgdG9nZ2xlLCBub2RlLCBwcm9taXNlLCB0aGVuO1xuXG4vLyBtb2Rlcm4gZW5naW5lcyBoYXZlIHF1ZXVlTWljcm90YXNrIG1ldGhvZFxuaWYgKCFtaWNyb3Rhc2spIHtcbiAgdmFyIHF1ZXVlID0gbmV3IFF1ZXVlKCk7XG5cbiAgdmFyIGZsdXNoID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYXJlbnQsIGZuO1xuICAgIGlmIChJU19OT0RFICYmIChwYXJlbnQgPSBwcm9jZXNzLmRvbWFpbikpIHBhcmVudC5leGl0KCk7XG4gICAgd2hpbGUgKGZuID0gcXVldWUuZ2V0KCkpIHRyeSB7XG4gICAgICBmbigpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAocXVldWUuaGVhZCkgbm90aWZ5KCk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgaWYgKHBhcmVudCkgcGFyZW50LmVudGVyKCk7XG4gIH07XG5cbiAgLy8gYnJvd3NlcnMgd2l0aCBNdXRhdGlvbk9ic2VydmVyLCBleGNlcHQgaU9TIC0gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzMzOVxuICAvLyBhbHNvIGV4Y2VwdCBXZWJPUyBXZWJraXQgaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg5OFxuICBpZiAoIUlTX0lPUyAmJiAhSVNfTk9ERSAmJiAhSVNfV0VCT1NfV0VCS0lUICYmIE11dGF0aW9uT2JzZXJ2ZXIgJiYgZG9jdW1lbnQpIHtcbiAgICB0b2dnbGUgPSB0cnVlO1xuICAgIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7XG4gICAgbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZmx1c2gpLm9ic2VydmUobm9kZSwgeyBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pO1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIG5vZGUuZGF0YSA9IHRvZ2dsZSA9ICF0b2dnbGU7XG4gICAgfTtcbiAgLy8gZW52aXJvbm1lbnRzIHdpdGggbWF5YmUgbm9uLWNvbXBsZXRlbHkgY29ycmVjdCwgYnV0IGV4aXN0ZW50IFByb21pc2VcbiAgfSBlbHNlIGlmICghSVNfSU9TX1BFQkJMRSAmJiBQcm9taXNlICYmIFByb21pc2UucmVzb2x2ZSkge1xuICAgIC8vIFByb21pc2UucmVzb2x2ZSB3aXRob3V0IGFuIGFyZ3VtZW50IHRocm93cyBhbiBlcnJvciBpbiBMRyBXZWJPUyAyXG4gICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIC8vIHdvcmthcm91bmQgb2YgV2ViS2l0IH4gaU9TIFNhZmFyaSAxMC4xIGJ1Z1xuICAgIHByb21pc2UuY29uc3RydWN0b3IgPSBQcm9taXNlO1xuICAgIHRoZW4gPSBiaW5kKHByb21pc2UudGhlbiwgcHJvbWlzZSk7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgdGhlbihmbHVzaCk7XG4gICAgfTtcbiAgLy8gTm9kZS5qcyB3aXRob3V0IHByb21pc2VzXG4gIH0gZWxzZSBpZiAoSVNfTk9ERSkge1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZmx1c2gpO1xuICAgIH07XG4gIC8vIGZvciBvdGhlciBlbnZpcm9ubWVudHMgLSBtYWNyb3Rhc2sgYmFzZWQgb246XG4gIC8vIC0gc2V0SW1tZWRpYXRlXG4gIC8vIC0gTWVzc2FnZUNoYW5uZWxcbiAgLy8gLSB3aW5kb3cucG9zdE1lc3NhZ2VcbiAgLy8gLSBvbnJlYWR5c3RhdGVjaGFuZ2VcbiAgLy8gLSBzZXRUaW1lb3V0XG4gIH0gZWxzZSB7XG4gICAgLy8gYHdlYnBhY2tgIGRldiBzZXJ2ZXIgYnVnIG9uIElFIGdsb2JhbCBtZXRob2RzIC0gdXNlIGJpbmQoZm4sIGdsb2JhbClcbiAgICBtYWNyb3Rhc2sgPSBiaW5kKG1hY3JvdGFzaywgZ2xvYmFsVGhpcyk7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgbWFjcm90YXNrKGZsdXNoKTtcbiAgICB9O1xuICB9XG5cbiAgbWljcm90YXNrID0gZnVuY3Rpb24gKGZuKSB7XG4gICAgaWYgKCFxdWV1ZS5oZWFkKSBub3RpZnkoKTtcbiAgICBxdWV1ZS5hZGQoZm4pO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1pY3JvdGFzaztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxudmFyIFByb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKEMpIHtcbiAgdmFyIHJlc29sdmUsIHJlamVjdDtcbiAgdGhpcy5wcm9taXNlID0gbmV3IEMoZnVuY3Rpb24gKCQkcmVzb2x2ZSwgJCRyZWplY3QpIHtcbiAgICBpZiAocmVzb2x2ZSAhPT0gdW5kZWZpbmVkIHx8IHJlamVjdCAhPT0gdW5kZWZpbmVkKSB0aHJvdyBuZXcgJFR5cGVFcnJvcignQmFkIFByb21pc2UgY29uc3RydWN0b3InKTtcbiAgICByZXNvbHZlID0gJCRyZXNvbHZlO1xuICAgIHJlamVjdCA9ICQkcmVqZWN0O1xuICB9KTtcbiAgdGhpcy5yZXNvbHZlID0gYUNhbGxhYmxlKHJlc29sdmUpO1xuICB0aGlzLnJlamVjdCA9IGFDYWxsYWJsZShyZWplY3QpO1xufTtcblxuLy8gYE5ld1Byb21pc2VDYXBhYmlsaXR5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbmV3cHJvbWlzZWNhcGFiaWxpdHlcbm1vZHVsZS5leHBvcnRzLmYgPSBmdW5jdGlvbiAoQykge1xuICByZXR1cm4gbmV3IFByb21pc2VDYXBhYmlsaXR5KEMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQsICRkZWZhdWx0KSB7XG4gIHJldHVybiBhcmd1bWVudCA9PT0gdW5kZWZpbmVkID8gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyAnJyA6ICRkZWZhdWx0IDogdG9TdHJpbmcoYXJndW1lbnQpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgb2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cycpO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzJyk7XG52YXIgcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBJbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0Jyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtYXNzaWduIC0tIHNhZmVcbnZhciAkYXNzaWduID0gT2JqZWN0LmFzc2lnbjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBjb25jYXQgPSB1bmN1cnJ5VGhpcyhbXS5jb25jYXQpO1xuXG4vLyBgT2JqZWN0LmFzc2lnbmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5hc3NpZ25cbm1vZHVsZS5leHBvcnRzID0gISRhc3NpZ24gfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBzaG91bGQgaGF2ZSBjb3JyZWN0IG9yZGVyIG9mIG9wZXJhdGlvbnMgKEVkZ2UgYnVnKVxuICBpZiAoREVTQ1JJUFRPUlMgJiYgJGFzc2lnbih7IGI6IDEgfSwgJGFzc2lnbihkZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGRlZmluZVByb3BlcnR5KHRoaXMsICdiJywge1xuICAgICAgICB2YWx1ZTogMyxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2VcbiAgICAgIH0pO1xuICAgIH1cbiAgfSksIHsgYjogMiB9KSkuYiAhPT0gMSkgcmV0dXJuIHRydWU7XG4gIC8vIHNob3VsZCB3b3JrIHdpdGggc3ltYm9scyBhbmQgc2hvdWxkIGhhdmUgZGV0ZXJtaW5pc3RpYyBwcm9wZXJ0eSBvcmRlciAoVjggYnVnKVxuICB2YXIgQSA9IHt9O1xuICB2YXIgQiA9IHt9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tc3ltYm9sIC0tIHNhZmVcbiAgdmFyIHN5bWJvbCA9IFN5bWJvbCgnYXNzaWduIGRldGVjdGlvbicpO1xuICB2YXIgYWxwaGFiZXQgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3QnO1xuICBBW3N5bWJvbF0gPSA3O1xuICBhbHBoYWJldC5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAoY2hyKSB7IEJbY2hyXSA9IGNocjsgfSk7XG4gIHJldHVybiAkYXNzaWduKHt9LCBBKVtzeW1ib2xdICE9PSA3IHx8IG9iamVjdEtleXMoJGFzc2lnbih7fSwgQikpLmpvaW4oJycpICE9PSBhbHBoYWJldDtcbn0pID8gZnVuY3Rpb24gYXNzaWduKHRhcmdldCwgc291cmNlKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnMgLS0gcmVxdWlyZWQgZm9yIGAubGVuZ3RoYFxuICB2YXIgVCA9IHRvT2JqZWN0KHRhcmdldCk7XG4gIHZhciBhcmd1bWVudHNMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAxO1xuICB2YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmY7XG4gIHZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlLmY7XG4gIHdoaWxlIChhcmd1bWVudHNMZW5ndGggPiBpbmRleCkge1xuICAgIHZhciBTID0gSW5kZXhlZE9iamVjdChhcmd1bWVudHNbaW5kZXgrK10pO1xuICAgIHZhciBrZXlzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzID8gY29uY2F0KG9iamVjdEtleXMoUyksIGdldE93blByb3BlcnR5U3ltYm9scyhTKSkgOiBvYmplY3RLZXlzKFMpO1xuICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB2YXIgaiA9IDA7XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAobGVuZ3RoID4gaikge1xuICAgICAga2V5ID0ga2V5c1tqKytdO1xuICAgICAgaWYgKCFERVNDUklQVE9SUyB8fCBjYWxsKHByb3BlcnR5SXNFbnVtZXJhYmxlLCBTLCBrZXkpKSBUW2tleV0gPSBTW2tleV07XG4gICAgfVxuICB9IHJldHVybiBUO1xufSA6ICRhc3NpZ247XG4iLCIndXNlIHN0cmljdCc7XG4vKiBnbG9iYWwgQWN0aXZlWE9iamVjdCAtLSBvbGQgSUUsIFdTSCAqL1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGRlZmluZVByb3BlcnRpZXNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cycpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcbnZhciBodG1sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2h0bWwnKTtcbnZhciBkb2N1bWVudENyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xuXG52YXIgR1QgPSAnPic7XG52YXIgTFQgPSAnPCc7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG52YXIgU0NSSVBUID0gJ3NjcmlwdCc7XG52YXIgSUVfUFJPVE8gPSBzaGFyZWRLZXkoJ0lFX1BST1RPJyk7XG5cbnZhciBFbXB0eUNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuXG52YXIgc2NyaXB0VGFnID0gZnVuY3Rpb24gKGNvbnRlbnQpIHtcbiAgcmV0dXJuIExUICsgU0NSSVBUICsgR1QgKyBjb250ZW50ICsgTFQgKyAnLycgKyBTQ1JJUFQgKyBHVDtcbn07XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBBY3RpdmVYIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgTnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWCA9IGZ1bmN0aW9uIChhY3RpdmVYRG9jdW1lbnQpIHtcbiAgYWN0aXZlWERvY3VtZW50LndyaXRlKHNjcmlwdFRhZygnJykpO1xuICBhY3RpdmVYRG9jdW1lbnQuY2xvc2UoKTtcbiAgdmFyIHRlbXAgPSBhY3RpdmVYRG9jdW1lbnQucGFyZW50V2luZG93Lk9iamVjdDtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtYXNzaWdubWVudCAtLSBhdm9pZCBtZW1vcnkgbGVha1xuICBhY3RpdmVYRG9jdW1lbnQgPSBudWxsO1xuICByZXR1cm4gdGVtcDtcbn07XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBpZnJhbWUgT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBOdWxsUHJvdG9PYmplY3RWaWFJRnJhbWUgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSBkb2N1bWVudENyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICB2YXIgSlMgPSAnamF2YScgKyBTQ1JJUFQgKyAnOic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGh0bWwuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzQ3NVxuICBpZnJhbWUuc3JjID0gU3RyaW5nKEpTKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShzY3JpcHRUYWcoJ2RvY3VtZW50LkY9T2JqZWN0JykpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICByZXR1cm4gaWZyYW1lRG9jdW1lbnQuRjtcbn07XG5cbi8vIENoZWNrIGZvciBkb2N1bWVudC5kb21haW4gYW5kIGFjdGl2ZSB4IHN1cHBvcnRcbi8vIE5vIG5lZWQgdG8gdXNlIGFjdGl2ZSB4IGFwcHJvYWNoIHdoZW4gZG9jdW1lbnQuZG9tYWluIGlzIG5vdCBzZXRcbi8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZXMtc2hpbXMvZXM1LXNoaW0vaXNzdWVzLzE1MFxuLy8gdmFyaWF0aW9uIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9raXRjYW1icmlkZ2UvZXM1LXNoaW0vY29tbWl0LzRmNzM4YWMwNjYzNDZcbi8vIGF2b2lkIElFIEdDIGJ1Z1xudmFyIGFjdGl2ZVhEb2N1bWVudDtcbnZhciBOdWxsUHJvdG9PYmplY3QgPSBmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgYWN0aXZlWERvY3VtZW50ID0gbmV3IEFjdGl2ZVhPYmplY3QoJ2h0bWxmaWxlJyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGlnbm9yZSAqLyB9XG4gIE51bGxQcm90b09iamVjdCA9IHR5cGVvZiBkb2N1bWVudCAhPSAndW5kZWZpbmVkJ1xuICAgID8gZG9jdW1lbnQuZG9tYWluICYmIGFjdGl2ZVhEb2N1bWVudFxuICAgICAgPyBOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYKGFjdGl2ZVhEb2N1bWVudCkgLy8gb2xkIElFXG4gICAgICA6IE51bGxQcm90b09iamVjdFZpYUlGcmFtZSgpXG4gICAgOiBOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYKGFjdGl2ZVhEb2N1bWVudCk7IC8vIFdTSFxuICB2YXIgbGVuZ3RoID0gZW51bUJ1Z0tleXMubGVuZ3RoO1xuICB3aGlsZSAobGVuZ3RoLS0pIGRlbGV0ZSBOdWxsUHJvdG9PYmplY3RbUFJPVE9UWVBFXVtlbnVtQnVnS2V5c1tsZW5ndGhdXTtcbiAgcmV0dXJuIE51bGxQcm90b09iamVjdCgpO1xufTtcblxuaGlkZGVuS2V5c1tJRV9QUk9UT10gPSB0cnVlO1xuXG4vLyBgT2JqZWN0LmNyZWF0ZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5jcmVhdGVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtY3JlYXRlIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcykge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoTyAhPT0gbnVsbCkge1xuICAgIEVtcHR5Q29uc3RydWN0b3JbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eUNvbnN0cnVjdG9yKCk7XG4gICAgRW1wdHlDb25zdHJ1Y3RvcltQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBOdWxsUHJvdG9PYmplY3QoKTtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRlZmluZVByb3BlcnRpZXNNb2R1bGUuZihyZXN1bHQsIFByb3BlcnRpZXMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIFY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Y4LXByb3RvdHlwZS1kZWZpbmUtYnVnJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIG9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMnKTtcblxuLy8gYE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnRpZXNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydGllcyAtLSBzYWZlXG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyAmJiAhVjhfUFJPVE9UWVBFX0RFRklORV9CVUcgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIHByb3BzID0gdG9JbmRleGVkT2JqZWN0KFByb3BlcnRpZXMpO1xuICB2YXIga2V5cyA9IG9iamVjdEtleXMoUHJvcGVydGllcyk7XG4gIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKE8sIGtleSA9IGtleXNbaW5kZXgrK10sIHByb3BzW2tleV0pO1xuICByZXR1cm4gTztcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pZTgtZG9tLWRlZmluZScpO1xudmFyIFY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Y4LXByb3RvdHlwZS1kZWZpbmUtYnVnJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXknKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciAkZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG52YXIgRU5VTUVSQUJMRSA9ICdlbnVtZXJhYmxlJztcbnZhciBDT05GSUdVUkFCTEUgPSAnY29uZmlndXJhYmxlJztcbnZhciBXUklUQUJMRSA9ICd3cml0YWJsZSc7XG5cbi8vIGBPYmplY3QuZGVmaW5lUHJvcGVydHlgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydHlcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gVjhfUFJPVE9UWVBFX0RFRklORV9CVUcgPyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmICh0eXBlb2YgTyA9PT0gJ2Z1bmN0aW9uJyAmJiBQID09PSAncHJvdG90eXBlJyAmJiAndmFsdWUnIGluIEF0dHJpYnV0ZXMgJiYgV1JJVEFCTEUgaW4gQXR0cmlidXRlcyAmJiAhQXR0cmlidXRlc1tXUklUQUJMRV0pIHtcbiAgICB2YXIgY3VycmVudCA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCk7XG4gICAgaWYgKGN1cnJlbnQgJiYgY3VycmVudFtXUklUQUJMRV0pIHtcbiAgICAgIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICAgICAgQXR0cmlidXRlcyA9IHtcbiAgICAgICAgY29uZmlndXJhYmxlOiBDT05GSUdVUkFCTEUgaW4gQXR0cmlidXRlcyA/IEF0dHJpYnV0ZXNbQ09ORklHVVJBQkxFXSA6IGN1cnJlbnRbQ09ORklHVVJBQkxFXSxcbiAgICAgICAgZW51bWVyYWJsZTogRU5VTUVSQUJMRSBpbiBBdHRyaWJ1dGVzID8gQXR0cmlidXRlc1tFTlVNRVJBQkxFXSA6IGN1cnJlbnRbRU5VTUVSQUJMRV0sXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG4gIH0gcmV0dXJuICRkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKTtcbn0gOiAkZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gJGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IG5ldyAkVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCcpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3JcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKSB7XG4gIE8gPSB0b0luZGV4ZWRPYmplY3QoTyk7XG4gIFAgPSB0b1Byb3BlcnR5S2V5KFApO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKGhhc093bihPLCBQKSkgcmV0dXJuIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcighY2FsbChwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZS5mLCBPLCBQKSwgT1tQXSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGludGVybmFsT2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcblxudmFyIGhpZGRlbktleXMgPSBlbnVtQnVnS2V5cy5jb25jYXQoJ2xlbmd0aCcsICdwcm90b3R5cGUnKTtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5bmFtZXNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHluYW1lcyAtLSBzYWZlXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgcmV0dXJuIGludGVybmFsT2JqZWN0S2V5cyhPLCBoaWRkZW5LZXlzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5c3ltYm9scyAtLSBzYWZlXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG52YXIgQ09SUkVDVF9QUk9UT1RZUEVfR0VUVEVSID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcnJlY3QtcHJvdG90eXBlLWdldHRlcicpO1xuXG52YXIgSUVfUFJPVE8gPSBzaGFyZWRLZXkoJ0lFX1BST1RPJyk7XG52YXIgJE9iamVjdCA9IE9iamVjdDtcbnZhciBPYmplY3RQcm90b3R5cGUgPSAkT2JqZWN0LnByb3RvdHlwZTtcblxuLy8gYE9iamVjdC5nZXRQcm90b3R5cGVPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRwcm90b3R5cGVvZlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRwcm90b3R5cGVvZiAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IENPUlJFQ1RfUFJPVE9UWVBFX0dFVFRFUiA/ICRPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiAoTykge1xuICB2YXIgb2JqZWN0ID0gdG9PYmplY3QoTyk7XG4gIGlmIChoYXNPd24ob2JqZWN0LCBJRV9QUk9UTykpIHJldHVybiBvYmplY3RbSUVfUFJPVE9dO1xuICB2YXIgY29uc3RydWN0b3IgPSBvYmplY3QuY29uc3RydWN0b3I7XG4gIGlmIChpc0NhbGxhYmxlKGNvbnN0cnVjdG9yKSAmJiBvYmplY3QgaW5zdGFuY2VvZiBjb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiBjb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gIH0gcmV0dXJuIG9iamVjdCBpbnN0YW5jZW9mICRPYmplY3QgPyBPYmplY3RQcm90b3R5cGUgOiBudWxsO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB1bmN1cnJ5VGhpcyh7fS5pc1Byb3RvdHlwZU9mKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIGluZGV4T2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMnKS5pbmRleE9mO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcblxudmFyIHB1c2ggPSB1bmN1cnJ5VGhpcyhbXS5wdXNoKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgIWhhc093bihoaWRkZW5LZXlzLCBrZXkpICYmIGhhc093bihPLCBrZXkpICYmIHB1c2gocmVzdWx0LCBrZXkpO1xuICAvLyBEb24ndCBlbnVtIGJ1ZyAmIGhpZGRlbiBrZXlzXG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoaGFzT3duKE8sIGtleSA9IG5hbWVzW2krK10pKSB7XG4gICAgfmluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHB1c2gocmVzdWx0LCBrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGludGVybmFsT2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcblxuLy8gYE9iamVjdC5rZXlzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmtleXNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3Qta2V5cyAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gaW50ZXJuYWxPYmplY3RLZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJHByb3BlcnR5SXNFbnVtZXJhYmxlID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuLy8gTmFzaG9ybiB+IEpESzggYnVnXG52YXIgTkFTSE9STl9CVUcgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgJiYgISRwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHsgMTogMiB9LCAxKTtcblxuLy8gYE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGVgIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QucHJvdG90eXBlLnByb3BlcnR5aXNlbnVtZXJhYmxlXG5leHBvcnRzLmYgPSBOQVNIT1JOX0JVRyA/IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKFYpIHtcbiAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcywgVik7XG4gIHJldHVybiAhIWRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxlO1xufSA6ICRwcm9wZXJ0eUlzRW51bWVyYWJsZTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvIC0tIHNhZmUgKi9cbnZhciB1bmN1cnJ5VGhpc0FjY2Vzc29yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy1hY2Nlc3NvcicpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG52YXIgYVBvc3NpYmxlUHJvdG90eXBlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtcG9zc2libGUtcHJvdG90eXBlJyk7XG5cbi8vIGBPYmplY3Quc2V0UHJvdG90eXBlT2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3Quc2V0cHJvdG90eXBlb2Zcbi8vIFdvcmtzIHdpdGggX19wcm90b19fIG9ubHkuIE9sZCB2OCBjYW4ndCB3b3JrIHdpdGggbnVsbCBwcm90byBvYmplY3RzLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1zZXRwcm90b3R5cGVvZiAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyBmdW5jdGlvbiAoKSB7XG4gIHZhciBDT1JSRUNUX1NFVFRFUiA9IGZhbHNlO1xuICB2YXIgdGVzdCA9IHt9O1xuICB2YXIgc2V0dGVyO1xuICB0cnkge1xuICAgIHNldHRlciA9IHVuY3VycnlUaGlzQWNjZXNzb3IoT2JqZWN0LnByb3RvdHlwZSwgJ19fcHJvdG9fXycsICdzZXQnKTtcbiAgICBzZXR0ZXIodGVzdCwgW10pO1xuICAgIENPUlJFQ1RfU0VUVEVSID0gdGVzdCBpbnN0YW5jZW9mIEFycmF5O1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZihPLCBwcm90bykge1xuICAgIHJlcXVpcmVPYmplY3RDb2VyY2libGUoTyk7XG4gICAgYVBvc3NpYmxlUHJvdG90eXBlKHByb3RvKTtcbiAgICBpZiAoIWlzT2JqZWN0KE8pKSByZXR1cm4gTztcbiAgICBpZiAoQ09SUkVDVF9TRVRURVIpIHNldHRlcihPLCBwcm90byk7XG4gICAgZWxzZSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgIHJldHVybiBPO1xuICB9O1xufSgpIDogdW5kZWZpbmVkKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0Jyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPyB7fS50b1N0cmluZyA6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gJ1tvYmplY3QgJyArIGNsYXNzb2YodGhpcykgKyAnXSc7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBPcmRpbmFyeVRvUHJpbWl0aXZlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb3JkaW5hcnl0b3ByaW1pdGl2ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5wdXQsIHByZWYpIHtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChwcmVmID09PSAnc3RyaW5nJyAmJiBpc0NhbGxhYmxlKGZuID0gaW5wdXQudG9TdHJpbmcpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAoaXNDYWxsYWJsZShmbiA9IGlucHV0LnZhbHVlT2YpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAocHJlZiAhPT0gJ3N0cmluZycgJiYgaXNDYWxsYWJsZShmbiA9IGlucHV0LnRvU3RyaW5nKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcycpO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbnZhciBjb25jYXQgPSB1bmN1cnJ5VGhpcyhbXS5jb25jYXQpO1xuXG4vLyBhbGwgb2JqZWN0IGtleXMsIGluY2x1ZGVzIG5vbi1lbnVtZXJhYmxlIGFuZCBzeW1ib2xzXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW4oJ1JlZmxlY3QnLCAnb3duS2V5cycpIHx8IGZ1bmN0aW9uIG93bktleXMoaXQpIHtcbiAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlLmYoYW5PYmplY3QoaXQpKTtcbiAgdmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZS5mO1xuICByZXR1cm4gZ2V0T3duUHJvcGVydHlTeW1ib2xzID8gY29uY2F0KGtleXMsIGdldE93blByb3BlcnR5U3ltYm9scyhpdCkpIDoga2V5cztcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdsb2JhbFRoaXM7XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHsgZXJyb3I6IGZhbHNlLCB2YWx1ZTogZXhlYygpIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHsgZXJyb3I6IHRydWUsIHZhbHVlOiBlcnJvciB9O1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3InKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNGb3JjZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtZm9yY2VkJyk7XG52YXIgaW5zcGVjdFNvdXJjZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIEVOVklST05NRU5UID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgVjhfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC12OC12ZXJzaW9uJyk7XG5cbnZhciBOYXRpdmVQcm9taXNlUHJvdG90eXBlID0gTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yICYmIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xudmFyIFNVQkNMQVNTSU5HID0gZmFsc2U7XG52YXIgTkFUSVZFX1BST01JU0VfUkVKRUNUSU9OX0VWRU5UID0gaXNDYWxsYWJsZShnbG9iYWxUaGlzLlByb21pc2VSZWplY3Rpb25FdmVudCk7XG5cbnZhciBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiA9IGlzRm9yY2VkKCdQcm9taXNlJywgZnVuY3Rpb24gKCkge1xuICB2YXIgUFJPTUlTRV9DT05TVFJVQ1RPUl9TT1VSQ0UgPSBpbnNwZWN0U291cmNlKE5hdGl2ZVByb21pc2VDb25zdHJ1Y3Rvcik7XG4gIHZhciBHTE9CQUxfQ09SRV9KU19QUk9NSVNFID0gUFJPTUlTRV9DT05TVFJVQ1RPUl9TT1VSQ0UgIT09IFN0cmluZyhOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IpO1xuICAvLyBWOCA2LjYgKE5vZGUgMTAgYW5kIENocm9tZSA2NikgaGF2ZSBhIGJ1ZyB3aXRoIHJlc29sdmluZyBjdXN0b20gdGhlbmFibGVzXG4gIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTgzMDU2NVxuICAvLyBXZSBjYW4ndCBkZXRlY3QgaXQgc3luY2hyb25vdXNseSwgc28ganVzdCBjaGVjayB2ZXJzaW9uc1xuICBpZiAoIUdMT0JBTF9DT1JFX0pTX1BST01JU0UgJiYgVjhfVkVSU0lPTiA9PT0gNjYpIHJldHVybiB0cnVlO1xuICAvLyBXZSBuZWVkIFByb21pc2UjeyBjYXRjaCwgZmluYWxseSB9IGluIHRoZSBwdXJlIHZlcnNpb24gZm9yIHByZXZlbnRpbmcgcHJvdG90eXBlIHBvbGx1dGlvblxuICBpZiAoSVNfUFVSRSAmJiAhKE5hdGl2ZVByb21pc2VQcm90b3R5cGVbJ2NhdGNoJ10gJiYgTmF0aXZlUHJvbWlzZVByb3RvdHlwZVsnZmluYWxseSddKSkgcmV0dXJuIHRydWU7XG4gIC8vIFdlIGNhbid0IHVzZSBAQHNwZWNpZXMgZmVhdHVyZSBkZXRlY3Rpb24gaW4gVjggc2luY2UgaXQgY2F1c2VzXG4gIC8vIGRlb3B0aW1pemF0aW9uIGFuZCBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNjc5XG4gIGlmICghVjhfVkVSU0lPTiB8fCBWOF9WRVJTSU9OIDwgNTEgfHwgIS9uYXRpdmUgY29kZS8udGVzdChQUk9NSVNFX0NPTlNUUlVDVE9SX1NPVVJDRSkpIHtcbiAgICAvLyBEZXRlY3QgY29ycmVjdG5lc3Mgb2Ygc3ViY2xhc3Npbmcgd2l0aCBAQHNwZWNpZXMgc3VwcG9ydFxuICAgIHZhciBwcm9taXNlID0gbmV3IE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvcihmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKDEpOyB9KTtcbiAgICB2YXIgRmFrZVByb21pc2UgPSBmdW5jdGlvbiAoZXhlYykge1xuICAgICAgZXhlYyhmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sIGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSk7XG4gICAgfTtcbiAgICB2YXIgY29uc3RydWN0b3IgPSBwcm9taXNlLmNvbnN0cnVjdG9yID0ge307XG4gICAgY29uc3RydWN0b3JbU1BFQ0lFU10gPSBGYWtlUHJvbWlzZTtcbiAgICBTVUJDTEFTU0lORyA9IHByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pIGluc3RhbmNlb2YgRmFrZVByb21pc2U7XG4gICAgaWYgKCFTVUJDTEFTU0lORykgcmV0dXJuIHRydWU7XG4gIC8vIFVuaGFuZGxlZCByZWplY3Rpb25zIHRyYWNraW5nIHN1cHBvcnQsIE5vZGVKUyBQcm9taXNlIHdpdGhvdXQgaXQgZmFpbHMgQEBzcGVjaWVzIHRlc3RcbiAgfSByZXR1cm4gIUdMT0JBTF9DT1JFX0pTX1BST01JU0UgJiYgKEVOVklST05NRU5UID09PSAnQlJPV1NFUicgfHwgRU5WSVJPTk1FTlQgPT09ICdERU5PJykgJiYgIU5BVElWRV9QUk9NSVNFX1JFSkVDVElPTl9FVkVOVDtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgQ09OU1RSVUNUT1I6IEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SLFxuICBSRUpFQ1RJT05fRVZFTlQ6IE5BVElWRV9QUk9NSVNFX1JFSkVDVElPTl9FVkVOVCxcbiAgU1VCQ0xBU1NJTkc6IFNVQkNMQVNTSU5HXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBnbG9iYWxUaGlzLlByb21pc2U7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDLCB4KSB7XG4gIGFuT2JqZWN0KEMpO1xuICBpZiAoaXNPYmplY3QoeCkgJiYgeC5jb25zdHJ1Y3RvciA9PT0gQykgcmV0dXJuIHg7XG4gIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5LmYoQyk7XG4gIHZhciByZXNvbHZlID0gcHJvbWlzZUNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgcmVzb2x2ZSh4KTtcbiAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LnByb21pc2U7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLW5hdGl2ZS1jb25zdHJ1Y3RvcicpO1xudmFyIGNoZWNrQ29ycmVjdG5lc3NPZkl0ZXJhdGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jaGVjay1jb3JyZWN0bmVzcy1vZi1pdGVyYXRpb24nKTtcbnZhciBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpLkNPTlNUUlVDVE9SO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SIHx8ICFjaGVja0NvcnJlY3RuZXNzT2ZJdGVyYXRpb24oZnVuY3Rpb24gKGl0ZXJhYmxlKSB7XG4gIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3Rvci5hbGwoaXRlcmFibGUpLnRoZW4odW5kZWZpbmVkLCBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgUXVldWUgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuaGVhZCA9IG51bGw7XG4gIHRoaXMudGFpbCA9IG51bGw7XG59O1xuXG5RdWV1ZS5wcm90b3R5cGUgPSB7XG4gIGFkZDogZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB2YXIgZW50cnkgPSB7IGl0ZW06IGl0ZW0sIG5leHQ6IG51bGwgfTtcbiAgICB2YXIgdGFpbCA9IHRoaXMudGFpbDtcbiAgICBpZiAodGFpbCkgdGFpbC5uZXh0ID0gZW50cnk7XG4gICAgZWxzZSB0aGlzLmhlYWQgPSBlbnRyeTtcbiAgICB0aGlzLnRhaWwgPSBlbnRyeTtcbiAgfSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGVudHJ5ID0gdGhpcy5oZWFkO1xuICAgIGlmIChlbnRyeSkge1xuICAgICAgdmFyIG5leHQgPSB0aGlzLmhlYWQgPSBlbnRyeS5uZXh0O1xuICAgICAgaWYgKG5leHQgPT09IG51bGwpIHRoaXMudGFpbCA9IG51bGw7XG4gICAgICByZXR1cm4gZW50cnkuaXRlbTtcbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUXVldWU7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNOdWxsT3JVbmRlZmluZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVxdWlyZW9iamVjdGNvZXJjaWJsZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGl0KSkgdGhyb3cgbmV3ICRUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIEF2b2lkIE5vZGVKUyBleHBlcmltZW50YWwgd2FybmluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICBpZiAoIURFU0NSSVBUT1JTKSByZXR1cm4gZ2xvYmFsVGhpc1tuYW1lXTtcbiAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsVGhpcywgbmFtZSk7XG4gIHJldHVybiBkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IudmFsdWU7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgZGVmaW5lQnVpbHRJbkFjY2Vzc29yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3NvcicpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENPTlNUUlVDVE9SX05BTUUpIHtcbiAgdmFyIENvbnN0cnVjdG9yID0gZ2V0QnVpbHRJbihDT05TVFJVQ1RPUl9OQU1FKTtcblxuICBpZiAoREVTQ1JJUFRPUlMgJiYgQ29uc3RydWN0b3IgJiYgIUNvbnN0cnVjdG9yW1NQRUNJRVNdKSB7XG4gICAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKENvbnN0cnVjdG9yLCBTUEVDSUVTLCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH1cbiAgICB9KTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5JykuZjtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBUQUcsIFNUQVRJQykge1xuICBpZiAodGFyZ2V0ICYmICFTVEFUSUMpIHRhcmdldCA9IHRhcmdldC5wcm90b3R5cGU7XG4gIGlmICh0YXJnZXQgJiYgIWhhc093bih0YXJnZXQsIFRPX1NUUklOR19UQUcpKSB7XG4gICAgZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBUT19TVFJJTkdfVEFHLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IFRBRyB9KTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xuXG52YXIga2V5cyA9IHNoYXJlZCgna2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIGtleXNba2V5XSB8fCAoa2V5c1trZXldID0gdWlkKGtleSkpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgZGVmaW5lR2xvYmFsUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eScpO1xuXG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbFRoaXNbU0hBUkVEXSB8fCBkZWZpbmVHbG9iYWxQcm9wZXJ0eShTSEFSRUQsIHt9KTtcblxuKHN0b3JlLnZlcnNpb25zIHx8IChzdG9yZS52ZXJzaW9ucyA9IFtdKSkucHVzaCh7XG4gIHZlcnNpb246ICczLjM5LjAnLFxuICBtb2RlOiBJU19QVVJFID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMTQtMjAyNCBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KScsXG4gIGxpY2Vuc2U6ICdodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjM5LjAvTElDRU5TRScsXG4gIHNvdXJjZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzJ1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSB8fCB7fSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGFDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNvbnN0cnVjdG9yJyk7XG52YXIgaXNOdWxsT3JVbmRlZmluZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFNQRUNJRVMgPSB3ZWxsS25vd25TeW1ib2woJ3NwZWNpZXMnKTtcblxuLy8gYFNwZWNpZXNDb25zdHJ1Y3RvcmAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXNwZWNpZXNjb25zdHJ1Y3RvclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywgZGVmYXVsdENvbnN0cnVjdG9yKSB7XG4gIHZhciBDID0gYW5PYmplY3QoTykuY29uc3RydWN0b3I7XG4gIHZhciBTO1xuICByZXR1cm4gQyA9PT0gdW5kZWZpbmVkIHx8IGlzTnVsbE9yVW5kZWZpbmVkKFMgPSBhbk9iamVjdChDKVtTUEVDSUVTXSkgPyBkZWZhdWx0Q29uc3RydWN0b3IgOiBhQ29uc3RydWN0b3IoUyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbnZhciBjaGFyQXQgPSB1bmN1cnJ5VGhpcygnJy5jaGFyQXQpO1xudmFyIGNoYXJDb2RlQXQgPSB1bmN1cnJ5VGhpcygnJy5jaGFyQ29kZUF0KTtcbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChDT05WRVJUX1RPX1NUUklORykge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBwb3MpIHtcbiAgICB2YXIgUyA9IHRvU3RyaW5nKHJlcXVpcmVPYmplY3RDb2VyY2libGUoJHRoaXMpKTtcbiAgICB2YXIgcG9zaXRpb24gPSB0b0ludGVnZXJPckluZmluaXR5KHBvcyk7XG4gICAgdmFyIHNpemUgPSBTLmxlbmd0aDtcbiAgICB2YXIgZmlyc3QsIHNlY29uZDtcbiAgICBpZiAocG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID49IHNpemUpIHJldHVybiBDT05WRVJUX1RPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuICAgIGZpcnN0ID0gY2hhckNvZGVBdChTLCBwb3NpdGlvbik7XG4gICAgcmV0dXJuIGZpcnN0IDwgMHhEODAwIHx8IGZpcnN0ID4gMHhEQkZGIHx8IHBvc2l0aW9uICsgMSA9PT0gc2l6ZVxuICAgICAgfHwgKHNlY29uZCA9IGNoYXJDb2RlQXQoUywgcG9zaXRpb24gKyAxKSkgPCAweERDMDAgfHwgc2Vjb25kID4gMHhERkZGXG4gICAgICAgID8gQ09OVkVSVF9UT19TVFJJTkdcbiAgICAgICAgICA/IGNoYXJBdChTLCBwb3NpdGlvbilcbiAgICAgICAgICA6IGZpcnN0XG4gICAgICAgIDogQ09OVkVSVF9UT19TVFJJTkdcbiAgICAgICAgICA/IHN0cmluZ1NsaWNlKFMsIHBvc2l0aW9uLCBwb3NpdGlvbiArIDIpXG4gICAgICAgICAgOiAoZmlyc3QgLSAweEQ4MDAgPDwgMTApICsgKHNlY29uZCAtIDB4REMwMCkgKyAweDEwMDAwO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLmNvZGVQb2ludEF0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLmNvZGVwb2ludGF0XG4gIGNvZGVBdDogY3JlYXRlTWV0aG9kKGZhbHNlKSxcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUuYXRgIG1ldGhvZFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWF0aGlhc2J5bmVucy9TdHJpbmcucHJvdG90eXBlLmF0XG4gIGNoYXJBdDogY3JlYXRlTWV0aG9kKHRydWUpXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL3B1bnljb2RlLmpzL2Jsb2IvbWFzdGVyL3B1bnljb2RlLmpzXG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbnZhciBtYXhJbnQgPSAyMTQ3NDgzNjQ3OyAvLyBha2EuIDB4N0ZGRkZGRkYgb3IgMl4zMS0xXG52YXIgYmFzZSA9IDM2O1xudmFyIHRNaW4gPSAxO1xudmFyIHRNYXggPSAyNjtcbnZhciBza2V3ID0gMzg7XG52YXIgZGFtcCA9IDcwMDtcbnZhciBpbml0aWFsQmlhcyA9IDcyO1xudmFyIGluaXRpYWxOID0gMTI4OyAvLyAweDgwXG52YXIgZGVsaW1pdGVyID0gJy0nOyAvLyAnXFx4MkQnXG52YXIgcmVnZXhOb25BU0NJSSA9IC9bXlxcMC1cXHUwMDdFXS87IC8vIG5vbi1BU0NJSSBjaGFyc1xudmFyIHJlZ2V4U2VwYXJhdG9ycyA9IC9bLlxcdTMwMDJcXHVGRjBFXFx1RkY2MV0vZzsgLy8gUkZDIDM0OTAgc2VwYXJhdG9yc1xudmFyIE9WRVJGTE9XX0VSUk9SID0gJ092ZXJmbG93OiBpbnB1dCBuZWVkcyB3aWRlciBpbnRlZ2VycyB0byBwcm9jZXNzJztcbnZhciBiYXNlTWludXNUTWluID0gYmFzZSAtIHRNaW47XG5cbnZhciAkUmFuZ2VFcnJvciA9IFJhbmdlRXJyb3I7XG52YXIgZXhlYyA9IHVuY3VycnlUaGlzKHJlZ2V4U2VwYXJhdG9ycy5leGVjKTtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG52YXIgZnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcbnZhciBjaGFyQ29kZUF0ID0gdW5jdXJyeVRoaXMoJycuY2hhckNvZGVBdCk7XG52YXIgam9pbiA9IHVuY3VycnlUaGlzKFtdLmpvaW4pO1xudmFyIHB1c2ggPSB1bmN1cnJ5VGhpcyhbXS5wdXNoKTtcbnZhciByZXBsYWNlID0gdW5jdXJyeVRoaXMoJycucmVwbGFjZSk7XG52YXIgc3BsaXQgPSB1bmN1cnJ5VGhpcygnJy5zcGxpdCk7XG52YXIgdG9Mb3dlckNhc2UgPSB1bmN1cnJ5VGhpcygnJy50b0xvd2VyQ2FzZSk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBudW1lcmljIGNvZGUgcG9pbnRzIG9mIGVhY2ggVW5pY29kZVxuICogY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcuIFdoaWxlIEphdmFTY3JpcHQgdXNlcyBVQ1MtMiBpbnRlcm5hbGx5LFxuICogdGhpcyBmdW5jdGlvbiB3aWxsIGNvbnZlcnQgYSBwYWlyIG9mIHN1cnJvZ2F0ZSBoYWx2ZXMgKGVhY2ggb2Ygd2hpY2hcbiAqIFVDUy0yIGV4cG9zZXMgYXMgc2VwYXJhdGUgY2hhcmFjdGVycykgaW50byBhIHNpbmdsZSBjb2RlIHBvaW50LFxuICogbWF0Y2hpbmcgVVRGLTE2LlxuICovXG52YXIgdWNzMmRlY29kZSA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgdmFyIG91dHB1dCA9IFtdO1xuICB2YXIgY291bnRlciA9IDA7XG4gIHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoO1xuICB3aGlsZSAoY291bnRlciA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGNoYXJDb2RlQXQoc3RyaW5nLCBjb3VudGVyKyspO1xuICAgIGlmICh2YWx1ZSA+PSAweEQ4MDAgJiYgdmFsdWUgPD0gMHhEQkZGICYmIGNvdW50ZXIgPCBsZW5ndGgpIHtcbiAgICAgIC8vIEl0J3MgYSBoaWdoIHN1cnJvZ2F0ZSwgYW5kIHRoZXJlIGlzIGEgbmV4dCBjaGFyYWN0ZXIuXG4gICAgICB2YXIgZXh0cmEgPSBjaGFyQ29kZUF0KHN0cmluZywgY291bnRlcisrKTtcbiAgICAgIGlmICgoZXh0cmEgJiAweEZDMDApID09PSAweERDMDApIHsgLy8gTG93IHN1cnJvZ2F0ZS5cbiAgICAgICAgcHVzaChvdXRwdXQsICgodmFsdWUgJiAweDNGRikgPDwgMTApICsgKGV4dHJhICYgMHgzRkYpICsgMHgxMDAwMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJdCdzIGFuIHVubWF0Y2hlZCBzdXJyb2dhdGU7IG9ubHkgYXBwZW5kIHRoaXMgY29kZSB1bml0LCBpbiBjYXNlIHRoZVxuICAgICAgICAvLyBuZXh0IGNvZGUgdW5pdCBpcyB0aGUgaGlnaCBzdXJyb2dhdGUgb2YgYSBzdXJyb2dhdGUgcGFpci5cbiAgICAgICAgcHVzaChvdXRwdXQsIHZhbHVlKTtcbiAgICAgICAgY291bnRlci0tO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwdXNoKG91dHB1dCwgdmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGRpZ2l0L2ludGVnZXIgaW50byBhIGJhc2ljIGNvZGUgcG9pbnQuXG4gKi9cbnZhciBkaWdpdFRvQmFzaWMgPSBmdW5jdGlvbiAoZGlnaXQpIHtcbiAgLy8gIDAuLjI1IG1hcCB0byBBU0NJSSBhLi56IG9yIEEuLlpcbiAgLy8gMjYuLjM1IG1hcCB0byBBU0NJSSAwLi45XG4gIHJldHVybiBkaWdpdCArIDIyICsgNzUgKiAoZGlnaXQgPCAyNik7XG59O1xuXG4vKipcbiAqIEJpYXMgYWRhcHRhdGlvbiBmdW5jdGlvbiBhcyBwZXIgc2VjdGlvbiAzLjQgb2YgUkZDIDM0OTIuXG4gKiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzQ5MiNzZWN0aW9uLTMuNFxuICovXG52YXIgYWRhcHQgPSBmdW5jdGlvbiAoZGVsdGEsIG51bVBvaW50cywgZmlyc3RUaW1lKSB7XG4gIHZhciBrID0gMDtcbiAgZGVsdGEgPSBmaXJzdFRpbWUgPyBmbG9vcihkZWx0YSAvIGRhbXApIDogZGVsdGEgPj4gMTtcbiAgZGVsdGEgKz0gZmxvb3IoZGVsdGEgLyBudW1Qb2ludHMpO1xuICB3aGlsZSAoZGVsdGEgPiBiYXNlTWludXNUTWluICogdE1heCA+PiAxKSB7XG4gICAgZGVsdGEgPSBmbG9vcihkZWx0YSAvIGJhc2VNaW51c1RNaW4pO1xuICAgIGsgKz0gYmFzZTtcbiAgfVxuICByZXR1cm4gZmxvb3IoayArIChiYXNlTWludXNUTWluICsgMSkgKiBkZWx0YSAvIChkZWx0YSArIHNrZXcpKTtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzIChlLmcuIGEgZG9tYWluIG5hbWUgbGFiZWwpIHRvIGFcbiAqIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG4gKi9cbnZhciBlbmNvZGUgPSBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgdmFyIG91dHB1dCA9IFtdO1xuXG4gIC8vIENvbnZlcnQgdGhlIGlucHV0IGluIFVDUy0yIHRvIGFuIGFycmF5IG9mIFVuaWNvZGUgY29kZSBwb2ludHMuXG4gIGlucHV0ID0gdWNzMmRlY29kZShpbnB1dCk7XG5cbiAgLy8gQ2FjaGUgdGhlIGxlbmd0aC5cbiAgdmFyIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuXG4gIC8vIEluaXRpYWxpemUgdGhlIHN0YXRlLlxuICB2YXIgbiA9IGluaXRpYWxOO1xuICB2YXIgZGVsdGEgPSAwO1xuICB2YXIgYmlhcyA9IGluaXRpYWxCaWFzO1xuICB2YXIgaSwgY3VycmVudFZhbHVlO1xuXG4gIC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHMuXG4gIGZvciAoaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgIGN1cnJlbnRWYWx1ZSA9IGlucHV0W2ldO1xuICAgIGlmIChjdXJyZW50VmFsdWUgPCAweDgwKSB7XG4gICAgICBwdXNoKG91dHB1dCwgZnJvbUNoYXJDb2RlKGN1cnJlbnRWYWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBiYXNpY0xlbmd0aCA9IG91dHB1dC5sZW5ndGg7IC8vIG51bWJlciBvZiBiYXNpYyBjb2RlIHBvaW50cy5cbiAgdmFyIGhhbmRsZWRDUENvdW50ID0gYmFzaWNMZW5ndGg7IC8vIG51bWJlciBvZiBjb2RlIHBvaW50cyB0aGF0IGhhdmUgYmVlbiBoYW5kbGVkO1xuXG4gIC8vIEZpbmlzaCB0aGUgYmFzaWMgc3RyaW5nIHdpdGggYSBkZWxpbWl0ZXIgdW5sZXNzIGl0J3MgZW1wdHkuXG4gIGlmIChiYXNpY0xlbmd0aCkge1xuICAgIHB1c2gob3V0cHV0LCBkZWxpbWl0ZXIpO1xuICB9XG5cbiAgLy8gTWFpbiBlbmNvZGluZyBsb29wOlxuICB3aGlsZSAoaGFuZGxlZENQQ291bnQgPCBpbnB1dExlbmd0aCkge1xuICAgIC8vIEFsbCBub24tYmFzaWMgY29kZSBwb2ludHMgPCBuIGhhdmUgYmVlbiBoYW5kbGVkIGFscmVhZHkuIEZpbmQgdGhlIG5leHQgbGFyZ2VyIG9uZTpcbiAgICB2YXIgbSA9IG1heEludDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGN1cnJlbnRWYWx1ZSA9IGlucHV0W2ldO1xuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSA+PSBuICYmIGN1cnJlbnRWYWx1ZSA8IG0pIHtcbiAgICAgICAgbSA9IGN1cnJlbnRWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJbmNyZWFzZSBgZGVsdGFgIGVub3VnaCB0byBhZHZhbmNlIHRoZSBkZWNvZGVyJ3MgPG4saT4gc3RhdGUgdG8gPG0sMD4sIGJ1dCBndWFyZCBhZ2FpbnN0IG92ZXJmbG93LlxuICAgIHZhciBoYW5kbGVkQ1BDb3VudFBsdXNPbmUgPSBoYW5kbGVkQ1BDb3VudCArIDE7XG4gICAgaWYgKG0gLSBuID4gZmxvb3IoKG1heEludCAtIGRlbHRhKSAvIGhhbmRsZWRDUENvdW50UGx1c09uZSkpIHtcbiAgICAgIHRocm93IG5ldyAkUmFuZ2VFcnJvcihPVkVSRkxPV19FUlJPUik7XG4gICAgfVxuXG4gICAgZGVsdGEgKz0gKG0gLSBuKSAqIGhhbmRsZWRDUENvdW50UGx1c09uZTtcbiAgICBuID0gbTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgICAgY3VycmVudFZhbHVlID0gaW5wdXRbaV07XG4gICAgICBpZiAoY3VycmVudFZhbHVlIDwgbiAmJiArK2RlbHRhID4gbWF4SW50KSB7XG4gICAgICAgIHRocm93IG5ldyAkUmFuZ2VFcnJvcihPVkVSRkxPV19FUlJPUik7XG4gICAgICB9XG4gICAgICBpZiAoY3VycmVudFZhbHVlID09PSBuKSB7XG4gICAgICAgIC8vIFJlcHJlc2VudCBkZWx0YSBhcyBhIGdlbmVyYWxpemVkIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyLlxuICAgICAgICB2YXIgcSA9IGRlbHRhO1xuICAgICAgICB2YXIgayA9IGJhc2U7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgdmFyIHQgPSBrIDw9IGJpYXMgPyB0TWluIDogayA+PSBiaWFzICsgdE1heCA/IHRNYXggOiBrIC0gYmlhcztcbiAgICAgICAgICBpZiAocSA8IHQpIGJyZWFrO1xuICAgICAgICAgIHZhciBxTWludXNUID0gcSAtIHQ7XG4gICAgICAgICAgdmFyIGJhc2VNaW51c1QgPSBiYXNlIC0gdDtcbiAgICAgICAgICBwdXNoKG91dHB1dCwgZnJvbUNoYXJDb2RlKGRpZ2l0VG9CYXNpYyh0ICsgcU1pbnVzVCAlIGJhc2VNaW51c1QpKSk7XG4gICAgICAgICAgcSA9IGZsb29yKHFNaW51c1QgLyBiYXNlTWludXNUKTtcbiAgICAgICAgICBrICs9IGJhc2U7XG4gICAgICAgIH1cblxuICAgICAgICBwdXNoKG91dHB1dCwgZnJvbUNoYXJDb2RlKGRpZ2l0VG9CYXNpYyhxKSkpO1xuICAgICAgICBiaWFzID0gYWRhcHQoZGVsdGEsIGhhbmRsZWRDUENvdW50UGx1c09uZSwgaGFuZGxlZENQQ291bnQgPT09IGJhc2ljTGVuZ3RoKTtcbiAgICAgICAgZGVsdGEgPSAwO1xuICAgICAgICBoYW5kbGVkQ1BDb3VudCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGRlbHRhKys7XG4gICAgbisrO1xuICB9XG4gIHJldHVybiBqb2luKG91dHB1dCwgJycpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgdmFyIGVuY29kZWQgPSBbXTtcbiAgdmFyIGxhYmVscyA9IHNwbGl0KHJlcGxhY2UodG9Mb3dlckNhc2UoaW5wdXQpLCByZWdleFNlcGFyYXRvcnMsICdcXHUwMDJFJyksICcuJyk7XG4gIHZhciBpLCBsYWJlbDtcbiAgZm9yIChpID0gMDsgaSA8IGxhYmVscy5sZW5ndGg7IGkrKykge1xuICAgIGxhYmVsID0gbGFiZWxzW2ldO1xuICAgIHB1c2goZW5jb2RlZCwgZXhlYyhyZWdleE5vbkFTQ0lJLCBsYWJlbCkgPyAneG4tLScgKyBlbmNvZGUobGFiZWwpIDogbGFiZWwpO1xuICB9XG4gIHJldHVybiBqb2luKGVuY29kZWQsICcuJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgVjhfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC12OC12ZXJzaW9uJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG5cbnZhciAkU3RyaW5nID0gZ2xvYmFsVGhpcy5TdHJpbmc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlzeW1ib2xzIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG5tb2R1bGUuZXhwb3J0cyA9ICEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgc3ltYm9sID0gU3ltYm9sKCdzeW1ib2wgZGV0ZWN0aW9uJyk7XG4gIC8vIENocm9tZSAzOCBTeW1ib2wgaGFzIGluY29ycmVjdCB0b1N0cmluZyBjb252ZXJzaW9uXG4gIC8vIGBnZXQtb3duLXByb3BlcnR5LXN5bWJvbHNgIHBvbHlmaWxsIHN5bWJvbHMgY29udmVydGVkIHRvIG9iamVjdCBhcmUgbm90IFN5bWJvbCBpbnN0YW5jZXNcbiAgLy8gbmI6IERvIG5vdCBjYWxsIGBTdHJpbmdgIGRpcmVjdGx5IHRvIGF2b2lkIHRoaXMgYmVpbmcgb3B0aW1pemVkIG91dCB0byBgc3ltYm9sKycnYCB3aGljaCB3aWxsLFxuICAvLyBvZiBjb3Vyc2UsIGZhaWwuXG4gIHJldHVybiAhJFN0cmluZyhzeW1ib2wpIHx8ICEoT2JqZWN0KHN5bWJvbCkgaW5zdGFuY2VvZiBTeW1ib2wpIHx8XG4gICAgLy8gQ2hyb21lIDM4LTQwIHN5bWJvbHMgYXJlIG5vdCBpbmhlcml0ZWQgZnJvbSBET00gY29sbGVjdGlvbnMgcHJvdG90eXBlcyB0byBpbnN0YW5jZXNcbiAgICAhU3ltYm9sLnNoYW0gJiYgVjhfVkVSU0lPTiAmJiBWOF9WRVJTSU9OIDwgNDE7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgYXBwbHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYXBwbHknKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9odG1sJyk7XG52YXIgYXJyYXlTbGljZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zbGljZScpO1xudmFyIGNyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcbnZhciB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoJyk7XG52YXIgSVNfSU9TID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50LWlzLWlvcycpO1xudmFyIElTX05PREUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQtaXMtbm9kZScpO1xuXG52YXIgc2V0ID0gZ2xvYmFsVGhpcy5zZXRJbW1lZGlhdGU7XG52YXIgY2xlYXIgPSBnbG9iYWxUaGlzLmNsZWFySW1tZWRpYXRlO1xudmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG52YXIgRGlzcGF0Y2ggPSBnbG9iYWxUaGlzLkRpc3BhdGNoO1xudmFyIEZ1bmN0aW9uID0gZ2xvYmFsVGhpcy5GdW5jdGlvbjtcbnZhciBNZXNzYWdlQ2hhbm5lbCA9IGdsb2JhbFRoaXMuTWVzc2FnZUNoYW5uZWw7XG52YXIgU3RyaW5nID0gZ2xvYmFsVGhpcy5TdHJpbmc7XG52YXIgY291bnRlciA9IDA7XG52YXIgcXVldWUgPSB7fTtcbnZhciBPTlJFQURZU1RBVEVDSEFOR0UgPSAnb25yZWFkeXN0YXRlY2hhbmdlJztcbnZhciAkbG9jYXRpb24sIGRlZmVyLCBjaGFubmVsLCBwb3J0O1xuXG5mYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIERlbm8gdGhyb3dzIGEgUmVmZXJlbmNlRXJyb3Igb24gYGxvY2F0aW9uYCBhY2Nlc3Mgd2l0aG91dCBgLS1sb2NhdGlvbmAgZmxhZ1xuICAkbG9jYXRpb24gPSBnbG9iYWxUaGlzLmxvY2F0aW9uO1xufSk7XG5cbnZhciBydW4gPSBmdW5jdGlvbiAoaWQpIHtcbiAgaWYgKGhhc093bihxdWV1ZSwgaWQpKSB7XG4gICAgdmFyIGZuID0gcXVldWVbaWRdO1xuICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG4gICAgZm4oKTtcbiAgfVxufTtcblxudmFyIHJ1bm5lciA9IGZ1bmN0aW9uIChpZCkge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJ1bihpZCk7XG4gIH07XG59O1xuXG52YXIgZXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uIChldmVudCkge1xuICBydW4oZXZlbnQuZGF0YSk7XG59O1xuXG52YXIgZ2xvYmFsUG9zdE1lc3NhZ2VEZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAvLyBvbGQgZW5naW5lcyBoYXZlIG5vdCBsb2NhdGlvbi5vcmlnaW5cbiAgZ2xvYmFsVGhpcy5wb3N0TWVzc2FnZShTdHJpbmcoaWQpLCAkbG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgJGxvY2F0aW9uLmhvc3QpO1xufTtcblxuLy8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuaWYgKCFzZXQgfHwgIWNsZWFyKSB7XG4gIHNldCA9IGZ1bmN0aW9uIHNldEltbWVkaWF0ZShoYW5kbGVyKSB7XG4gICAgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGgoYXJndW1lbnRzLmxlbmd0aCwgMSk7XG4gICAgdmFyIGZuID0gaXNDYWxsYWJsZShoYW5kbGVyKSA/IGhhbmRsZXIgOiBGdW5jdGlvbihoYW5kbGVyKTtcbiAgICB2YXIgYXJncyA9IGFycmF5U2xpY2UoYXJndW1lbnRzLCAxKTtcbiAgICBxdWV1ZVsrK2NvdW50ZXJdID0gZnVuY3Rpb24gKCkge1xuICAgICAgYXBwbHkoZm4sIHVuZGVmaW5lZCwgYXJncyk7XG4gICAgfTtcbiAgICBkZWZlcihjb3VudGVyKTtcbiAgICByZXR1cm4gY291bnRlcjtcbiAgfTtcbiAgY2xlYXIgPSBmdW5jdGlvbiBjbGVhckltbWVkaWF0ZShpZCkge1xuICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG4gIH07XG4gIC8vIE5vZGUuanMgMC44LVxuICBpZiAoSVNfTk9ERSkge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKHJ1bm5lcihpZCkpO1xuICAgIH07XG4gIC8vIFNwaGVyZSAoSlMgZ2FtZSBlbmdpbmUpIERpc3BhdGNoIEFQSVxuICB9IGVsc2UgaWYgKERpc3BhdGNoICYmIERpc3BhdGNoLm5vdykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBEaXNwYXRjaC5ub3cocnVubmVyKGlkKSk7XG4gICAgfTtcbiAgLy8gQnJvd3NlcnMgd2l0aCBNZXNzYWdlQ2hhbm5lbCwgaW5jbHVkZXMgV2ViV29ya2Vyc1xuICAvLyBleGNlcHQgaU9TIC0gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzYyNFxuICB9IGVsc2UgaWYgKE1lc3NhZ2VDaGFubmVsICYmICFJU19JT1MpIHtcbiAgICBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7XG4gICAgcG9ydCA9IGNoYW5uZWwucG9ydDI7XG4gICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBldmVudExpc3RlbmVyO1xuICAgIGRlZmVyID0gYmluZChwb3J0LnBvc3RNZXNzYWdlLCBwb3J0KTtcbiAgLy8gQnJvd3NlcnMgd2l0aCBwb3N0TWVzc2FnZSwgc2tpcCBXZWJXb3JrZXJzXG4gIC8vIElFOCBoYXMgcG9zdE1lc3NhZ2UsIGJ1dCBpdCdzIHN5bmMgJiB0eXBlb2YgaXRzIHBvc3RNZXNzYWdlIGlzICdvYmplY3QnXG4gIH0gZWxzZSBpZiAoXG4gICAgZ2xvYmFsVGhpcy5hZGRFdmVudExpc3RlbmVyICYmXG4gICAgaXNDYWxsYWJsZShnbG9iYWxUaGlzLnBvc3RNZXNzYWdlKSAmJlxuICAgICFnbG9iYWxUaGlzLmltcG9ydFNjcmlwdHMgJiZcbiAgICAkbG9jYXRpb24gJiYgJGxvY2F0aW9uLnByb3RvY29sICE9PSAnZmlsZTonICYmXG4gICAgIWZhaWxzKGdsb2JhbFBvc3RNZXNzYWdlRGVmZXIpXG4gICkge1xuICAgIGRlZmVyID0gZ2xvYmFsUG9zdE1lc3NhZ2VEZWZlcjtcbiAgICBnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBldmVudExpc3RlbmVyLCBmYWxzZSk7XG4gIC8vIElFOC1cbiAgfSBlbHNlIGlmIChPTlJFQURZU1RBVEVDSEFOR0UgaW4gY3JlYXRlRWxlbWVudCgnc2NyaXB0JykpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgaHRtbC5hcHBlbmRDaGlsZChjcmVhdGVFbGVtZW50KCdzY3JpcHQnKSlbT05SRUFEWVNUQVRFQ0hBTkdFXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaHRtbC5yZW1vdmVDaGlsZCh0aGlzKTtcbiAgICAgICAgcnVuKGlkKTtcbiAgICAgIH07XG4gICAgfTtcbiAgLy8gUmVzdCBvbGQgYnJvd3NlcnNcbiAgfSBlbHNlIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgc2V0VGltZW91dChydW5uZXIoaWQpLCAwKTtcbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgY2xlYXI6IGNsZWFyXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xuXG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIEhlbHBlciBmb3IgYSBwb3B1bGFyIHJlcGVhdGluZyBjYXNlIG9mIHRoZSBzcGVjOlxuLy8gTGV0IGludGVnZXIgYmUgPyBUb0ludGVnZXIoaW5kZXgpLlxuLy8gSWYgaW50ZWdlciA8IDAsIGxldCByZXN1bHQgYmUgbWF4KChsZW5ndGggKyBpbnRlZ2VyKSwgMCk7IGVsc2UgbGV0IHJlc3VsdCBiZSBtaW4oaW50ZWdlciwgbGVuZ3RoKS5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgdmFyIGludGVnZXIgPSB0b0ludGVnZXJPckluZmluaXR5KGluZGV4KTtcbiAgcmV0dXJuIGludGVnZXIgPCAwID8gbWF4KGludGVnZXIgKyBsZW5ndGgsIDApIDogbWluKGludGVnZXIsIGxlbmd0aCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0Jyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIEluZGV4ZWRPYmplY3QocmVxdWlyZU9iamVjdENvZXJjaWJsZShpdCkpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0cnVuYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYXRoLXRydW5jJyk7XG5cbi8vIGBUb0ludGVnZXJPckluZmluaXR5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9pbnRlZ2Vyb3JpbmZpbml0eVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIG51bWJlciA9ICthcmd1bWVudDtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgcmV0dXJuIG51bWJlciAhPT0gbnVtYmVyIHx8IG51bWJlciA9PT0gMCA/IDAgOiB0cnVuYyhudW1iZXIpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcblxudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBgVG9MZW5ndGhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2xlbmd0aFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIGxlbiA9IHRvSW50ZWdlck9ySW5maW5pdHkoYXJndW1lbnQpO1xuICByZXR1cm4gbGVuID4gMCA/IG1pbihsZW4sIDB4MUZGRkZGRkZGRkZGRkYpIDogMDsgLy8gMiAqKiA1MyAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcblxuLy8gYFRvT2JqZWN0YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9vYmplY3Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiAkT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBvcmRpbmFyeVRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbnZhciBUT19QUklNSVRJVkUgPSB3ZWxsS25vd25TeW1ib2woJ3RvUHJpbWl0aXZlJyk7XG5cbi8vIGBUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICBpZiAoIWlzT2JqZWN0KGlucHV0KSB8fCBpc1N5bWJvbChpbnB1dCkpIHJldHVybiBpbnB1dDtcbiAgdmFyIGV4b3RpY1RvUHJpbSA9IGdldE1ldGhvZChpbnB1dCwgVE9fUFJJTUlUSVZFKTtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKGV4b3RpY1RvUHJpbSkge1xuICAgIGlmIChwcmVmID09PSB1bmRlZmluZWQpIHByZWYgPSAnZGVmYXVsdCc7XG4gICAgcmVzdWx0ID0gY2FsbChleG90aWNUb1ByaW0sIGlucHV0LCBwcmVmKTtcbiAgICBpZiAoIWlzT2JqZWN0KHJlc3VsdCkgfHwgaXNTeW1ib2wocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgICB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbiAgfVxuICBpZiAocHJlZiA9PT0gdW5kZWZpbmVkKSBwcmVmID0gJ251bWJlcic7XG4gIHJldHVybiBvcmRpbmFyeVRvUHJpbWl0aXZlKGlucHV0LCBwcmVmKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlJyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG5cbi8vIGBUb1Byb3BlcnR5S2V5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9wcm9wZXJ0eWtleVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIGtleSA9IHRvUHJpbWl0aXZlKGFyZ3VtZW50LCAnc3RyaW5nJyk7XG4gIHJldHVybiBpc1N5bWJvbChrZXkpID8ga2V5IDoga2V5ICsgJyc7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcbnZhciB0ZXN0ID0ge307XG5cbnRlc3RbVE9fU1RSSU5HX1RBR10gPSAneic7XG5cbm1vZHVsZS5leHBvcnRzID0gU3RyaW5nKHRlc3QpID09PSAnW29iamVjdCB6XSc7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG5cbnZhciAkU3RyaW5nID0gU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoY2xhc3NvZihhcmd1bWVudCkgPT09ICdTeW1ib2wnKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIHN0cmluZycpO1xuICByZXR1cm4gJFN0cmluZyhhcmd1bWVudCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRTdHJpbmcgPSBTdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICRTdHJpbmcoYXJndW1lbnQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiAnT2JqZWN0JztcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxudmFyIGlkID0gMDtcbnZhciBwb3N0Zml4ID0gTWF0aC5yYW5kb20oKTtcbnZhciB0b1N0cmluZyA9IHVuY3VycnlUaGlzKDEuMC50b1N0cmluZyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnICsgKGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXkpICsgJylfJyArIHRvU3RyaW5nKCsraWQgKyBwb3N0Zml4LCAzNik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL3JlbGF0aXZlLXVybC1zdHlsZSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICB2YXIgdXJsID0gbmV3IFVSTCgnYj9hPTEmYj0yJmM9MycsICdodHRwczovL2EnKTtcbiAgdmFyIHBhcmFtcyA9IHVybC5zZWFyY2hQYXJhbXM7XG4gIHZhciBwYXJhbXMyID0gbmV3IFVSTFNlYXJjaFBhcmFtcygnYT0xJmE9MiZiPTMnKTtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuICB1cmwucGF0aG5hbWUgPSAnYyUyMGQnO1xuICBwYXJhbXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUsIGtleSkge1xuICAgIHBhcmFtc1snZGVsZXRlJ10oJ2InKTtcbiAgICByZXN1bHQgKz0ga2V5ICsgdmFsdWU7XG4gIH0pO1xuICBwYXJhbXMyWydkZWxldGUnXSgnYScsIDIpO1xuICAvLyBgdW5kZWZpbmVkYCBjYXNlIGlzIGEgQ2hyb21pdW0gMTE3IGJ1Z1xuICAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0xNDIyMlxuICBwYXJhbXMyWydkZWxldGUnXSgnYicsIHVuZGVmaW5lZCk7XG4gIHJldHVybiAoSVNfUFVSRSAmJiAoIXVybC50b0pTT04gfHwgIXBhcmFtczIuaGFzKCdhJywgMSkgfHwgcGFyYW1zMi5oYXMoJ2EnLCAyKSB8fCAhcGFyYW1zMi5oYXMoJ2EnLCB1bmRlZmluZWQpIHx8IHBhcmFtczIuaGFzKCdiJykpKVxuICAgIHx8ICghcGFyYW1zLnNpemUgJiYgKElTX1BVUkUgfHwgIURFU0NSSVBUT1JTKSlcbiAgICB8fCAhcGFyYW1zLnNvcnRcbiAgICB8fCB1cmwuaHJlZiAhPT0gJ2h0dHBzOi8vYS9jJTIwZD9hPTEmYz0zJ1xuICAgIHx8IHBhcmFtcy5nZXQoJ2MnKSAhPT0gJzMnXG4gICAgfHwgU3RyaW5nKG5ldyBVUkxTZWFyY2hQYXJhbXMoJz9hPTEnKSkgIT09ICdhPTEnXG4gICAgfHwgIXBhcmFtc1tJVEVSQVRPUl1cbiAgICAvLyB0aHJvd3MgaW4gRWRnZVxuICAgIHx8IG5ldyBVUkwoJ2h0dHBzOi8vYUBiJykudXNlcm5hbWUgIT09ICdhJ1xuICAgIHx8IG5ldyBVUkxTZWFyY2hQYXJhbXMobmV3IFVSTFNlYXJjaFBhcmFtcygnYT1iJykpLmdldCgnYScpICE9PSAnYidcbiAgICAvLyBub3QgcHVueWNvZGVkIGluIEVkZ2VcbiAgICB8fCBuZXcgVVJMKCdodHRwczovL9GC0LXRgdGCJykuaG9zdCAhPT0gJ3huLS1lMWF5YmMnXG4gICAgLy8gbm90IGVzY2FwZWQgaW4gQ2hyb21lIDYyLVxuICAgIHx8IG5ldyBVUkwoJ2h0dHBzOi8vYSPQsScpLmhhc2ggIT09ICcjJUQwJUIxJ1xuICAgIC8vIGZhaWxzIGluIENocm9tZSA2Ni1cbiAgICB8fCByZXN1bHQgIT09ICdhMWMzJ1xuICAgIC8vIHRocm93cyBpbiBTYWZhcmlcbiAgICB8fCBuZXcgVVJMKCdodHRwczovL3gnLCB1bmRlZmluZWQpLmhvc3QgIT09ICd4Jztcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX1NZTUJPTCAmJlxuICAhU3ltYm9sLnNoYW0gJiZcbiAgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIFY4IH4gQ2hyb21lIDM2LVxuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzMzNFxubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sICdwcm90b3R5cGUnLCB7XG4gICAgdmFsdWU6IDQyLFxuICAgIHdyaXRhYmxlOiBmYWxzZVxuICB9KS5wcm90b3R5cGUgIT09IDQyO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocGFzc2VkLCByZXF1aXJlZCkge1xuICBpZiAocGFzc2VkIDwgcmVxdWlyZWQpIHRocm93IG5ldyAkVHlwZUVycm9yKCdOb3QgZW5vdWdoIGFyZ3VtZW50cycpO1xuICByZXR1cm4gcGFzc2VkO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG52YXIgV2Vha01hcCA9IGdsb2JhbFRoaXMuV2Vha01hcDtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0NhbGxhYmxlKFdlYWtNYXApICYmIC9uYXRpdmUgY29kZS8udGVzdChTdHJpbmcoV2Vha01hcCkpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQnKTtcblxudmFyIFN5bWJvbCA9IGdsb2JhbFRoaXMuU3ltYm9sO1xudmFyIFdlbGxLbm93blN5bWJvbHNTdG9yZSA9IHNoYXJlZCgnd2tzJyk7XG52YXIgY3JlYXRlV2VsbEtub3duU3ltYm9sID0gVVNFX1NZTUJPTF9BU19VSUQgPyBTeW1ib2xbJ2ZvciddIHx8IFN5bWJvbCA6IFN5bWJvbCAmJiBTeW1ib2wud2l0aG91dFNldHRlciB8fCB1aWQ7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgaWYgKCFoYXNPd24oV2VsbEtub3duU3ltYm9sc1N0b3JlLCBuYW1lKSkge1xuICAgIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXSA9IE5BVElWRV9TWU1CT0wgJiYgaGFzT3duKFN5bWJvbCwgbmFtZSlcbiAgICAgID8gU3ltYm9sW25hbWVdXG4gICAgICA6IGNyZWF0ZVdlbGxLbm93blN5bWJvbCgnU3ltYm9sLicgKyBuYW1lKTtcbiAgfSByZXR1cm4gV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGlzUHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZicpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YnKTtcbnZhciBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcycpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIGluc3RhbGxFcnJvckNhdXNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3RhbGwtZXJyb3ItY2F1c2UnKTtcbnZhciBpbnN0YWxsRXJyb3JTdGFjayA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lcnJvci1zdGFjay1pbnN0YWxsJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG52YXIgbm9ybWFsaXplU3RyaW5nQXJndW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbm9ybWFsaXplLXN0cmluZy1hcmd1bWVudCcpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcbnZhciAkRXJyb3IgPSBFcnJvcjtcbnZhciBwdXNoID0gW10ucHVzaDtcblxudmFyICRBZ2dyZWdhdGVFcnJvciA9IGZ1bmN0aW9uIEFnZ3JlZ2F0ZUVycm9yKGVycm9ycywgbWVzc2FnZSAvKiAsIG9wdGlvbnMgKi8pIHtcbiAgdmFyIGlzSW5zdGFuY2UgPSBpc1Byb3RvdHlwZU9mKEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLCB0aGlzKTtcbiAgdmFyIHRoYXQ7XG4gIGlmIChzZXRQcm90b3R5cGVPZikge1xuICAgIHRoYXQgPSBzZXRQcm90b3R5cGVPZihuZXcgJEVycm9yKCksIGlzSW5zdGFuY2UgPyBnZXRQcm90b3R5cGVPZih0aGlzKSA6IEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlKTtcbiAgfSBlbHNlIHtcbiAgICB0aGF0ID0gaXNJbnN0YW5jZSA/IHRoaXMgOiBjcmVhdGUoQWdncmVnYXRlRXJyb3JQcm90b3R5cGUpO1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSh0aGF0LCBUT19TVFJJTkdfVEFHLCAnRXJyb3InKTtcbiAgfVxuICBpZiAobWVzc2FnZSAhPT0gdW5kZWZpbmVkKSBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkodGhhdCwgJ21lc3NhZ2UnLCBub3JtYWxpemVTdHJpbmdBcmd1bWVudChtZXNzYWdlKSk7XG4gIGluc3RhbGxFcnJvclN0YWNrKHRoYXQsICRBZ2dyZWdhdGVFcnJvciwgdGhhdC5zdGFjaywgMSk7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMikgaW5zdGFsbEVycm9yQ2F1c2UodGhhdCwgYXJndW1lbnRzWzJdKTtcbiAgdmFyIGVycm9yc0FycmF5ID0gW107XG4gIGl0ZXJhdGUoZXJyb3JzLCBwdXNoLCB7IHRoYXQ6IGVycm9yc0FycmF5IH0pO1xuICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkodGhhdCwgJ2Vycm9ycycsIGVycm9yc0FycmF5KTtcbiAgcmV0dXJuIHRoYXQ7XG59O1xuXG5pZiAoc2V0UHJvdG90eXBlT2YpIHNldFByb3RvdHlwZU9mKCRBZ2dyZWdhdGVFcnJvciwgJEVycm9yKTtcbmVsc2UgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcygkQWdncmVnYXRlRXJyb3IsICRFcnJvciwgeyBuYW1lOiB0cnVlIH0pO1xuXG52YXIgQWdncmVnYXRlRXJyb3JQcm90b3R5cGUgPSAkQWdncmVnYXRlRXJyb3IucHJvdG90eXBlID0gY3JlYXRlKCRFcnJvci5wcm90b3R5cGUsIHtcbiAgY29uc3RydWN0b3I6IGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCAkQWdncmVnYXRlRXJyb3IpLFxuICBtZXNzYWdlOiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgJycpLFxuICBuYW1lOiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgJ0FnZ3JlZ2F0ZUVycm9yJylcbn0pO1xuXG4vLyBgQWdncmVnYXRlRXJyb3JgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFnZ3JlZ2F0ZS1lcnJvci1jb25zdHJ1Y3RvclxuJCh7IGdsb2JhbDogdHJ1ZSwgY29uc3RydWN0b3I6IHRydWUsIGFyaXR5OiAyIH0sIHtcbiAgQWdncmVnYXRlRXJyb3I6ICRBZ2dyZWdhdGVFcnJvclxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiBSZW1vdmUgdGhpcyBtb2R1bGUgZnJvbSBgY29yZS1qc0A0YCBzaW5jZSBpdCdzIHJlcGxhY2VkIHRvIG1vZHVsZSBiZWxvd1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5hZ2dyZWdhdGUtZXJyb3IuY29uc3RydWN0b3InKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRpbmNsdWRlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pbmNsdWRlcycpLmluY2x1ZGVzO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMnKTtcblxuLy8gRkY5OSsgYnVnXG52YXIgQlJPS0VOX09OX1NQQVJTRSA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWFycmF5LXByb3RvdHlwZS1pbmNsdWRlcyAtLSBkZXRlY3Rpb25cbiAgcmV0dXJuICFBcnJheSgxKS5pbmNsdWRlcygpO1xufSk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuaW5jbHVkZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IEJST0tFTl9PTl9TUEFSU0UgfSwge1xuICBpbmNsdWRlczogZnVuY3Rpb24gaW5jbHVkZXMoZWwgLyogLCBmcm9tSW5kZXggPSAwICovKSB7XG4gICAgcmV0dXJuICRpbmNsdWRlcyh0aGlzLCBlbCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEB1bnNjb3BhYmxlc1xuYWRkVG9VbnNjb3BhYmxlcygnaW5jbHVkZXMnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcycpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG52YXIgZGVmaW5lSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItZGVmaW5lJyk7XG52YXIgY3JlYXRlSXRlclJlc3VsdE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaXRlci1yZXN1bHQtb2JqZWN0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcblxudmFyIEFSUkFZX0lURVJBVE9SID0gJ0FycmF5IEl0ZXJhdG9yJztcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKEFSUkFZX0lURVJBVE9SKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5lbnRyaWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmVudHJpZXNcbi8vIGBBcnJheS5wcm90b3R5cGUua2V5c2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5rZXlzXG4vLyBgQXJyYXkucHJvdG90eXBlLnZhbHVlc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS52YWx1ZXNcbi8vIGBBcnJheS5wcm90b3R5cGVbQEBpdGVyYXRvcl1gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEBpdGVyYXRvclxuLy8gYENyZWF0ZUFycmF5SXRlcmF0b3JgIGludGVybmFsIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1jcmVhdGVhcnJheWl0ZXJhdG9yXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmluZUl0ZXJhdG9yKEFycmF5LCAnQXJyYXknLCBmdW5jdGlvbiAoaXRlcmF0ZWQsIGtpbmQpIHtcbiAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgdHlwZTogQVJSQVlfSVRFUkFUT1IsXG4gICAgdGFyZ2V0OiB0b0luZGV4ZWRPYmplY3QoaXRlcmF0ZWQpLCAvLyB0YXJnZXRcbiAgICBpbmRleDogMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbiAgICBraW5kOiBraW5kICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGtpbmRcbiAgfSk7XG4vLyBgJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlLm5leHRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0lYXJyYXlpdGVyYXRvcnByb3RvdHlwZSUubmV4dFxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpO1xuICB2YXIgdGFyZ2V0ID0gc3RhdGUudGFyZ2V0O1xuICB2YXIgaW5kZXggPSBzdGF0ZS5pbmRleCsrO1xuICBpZiAoIXRhcmdldCB8fCBpbmRleCA+PSB0YXJnZXQubGVuZ3RoKSB7XG4gICAgc3RhdGUudGFyZ2V0ID0gbnVsbDtcbiAgICByZXR1cm4gY3JlYXRlSXRlclJlc3VsdE9iamVjdCh1bmRlZmluZWQsIHRydWUpO1xuICB9XG4gIHN3aXRjaCAoc3RhdGUua2luZCkge1xuICAgIGNhc2UgJ2tleXMnOiByZXR1cm4gY3JlYXRlSXRlclJlc3VsdE9iamVjdChpbmRleCwgZmFsc2UpO1xuICAgIGNhc2UgJ3ZhbHVlcyc6IHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KHRhcmdldFtpbmRleF0sIGZhbHNlKTtcbiAgfSByZXR1cm4gY3JlYXRlSXRlclJlc3VsdE9iamVjdChbaW5kZXgsIHRhcmdldFtpbmRleF1dLCBmYWxzZSk7XG59LCAndmFsdWVzJyk7XG5cbi8vIGFyZ3VtZW50c0xpc3RbQEBpdGVyYXRvcl0gaXMgJUFycmF5UHJvdG9fdmFsdWVzJVxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1jcmVhdGV1bm1hcHBlZGFyZ3VtZW50c29iamVjdFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1jcmVhdGVtYXBwZWRhcmd1bWVudHNvYmplY3RcbnZhciB2YWx1ZXMgPSBJdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS1AQHVuc2NvcGFibGVzXG5hZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCd2YWx1ZXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ2VudHJpZXMnKTtcblxuLy8gVjggfiBDaHJvbWUgNDUtIGJ1Z1xuaWYgKCFJU19QVVJFICYmIERFU0NSSVBUT1JTICYmIHZhbHVlcy5uYW1lICE9PSAndmFsdWVzJykgdHJ5IHtcbiAgZGVmaW5lUHJvcGVydHkodmFsdWVzLCAnbmFtZScsIHsgdmFsdWU6ICd2YWx1ZXMnIH0pO1xufSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1hc3NpZ24nKTtcblxuLy8gYE9iamVjdC5hc3NpZ25gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuYXNzaWduXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWFzc2lnbiAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGFyaXR5OiAyLCBmb3JjZWQ6IE9iamVjdC5hc3NpZ24gIT09IGFzc2lnbiB9LCB7XG4gIGFzc2lnbjogYXNzaWduXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0Jyk7XG52YXIgZGVmaW5lQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4nKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtdG8tc3RyaW5nJyk7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZ1xuaWYgKCFUT19TVFJJTkdfVEFHX1NVUFBPUlQpIHtcbiAgZGVmaW5lQnVpbHRJbihPYmplY3QucHJvdG90eXBlLCAndG9TdHJpbmcnLCB0b1N0cmluZywgeyB1bnNhZmU6IHRydWUgfSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BlcmZvcm0nKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcbnZhciBQUk9NSVNFX1NUQVRJQ1NfSU5DT1JSRUNUX0lURVJBVElPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLXN0YXRpY3MtaW5jb3JyZWN0LWl0ZXJhdGlvbicpO1xuXG4vLyBgUHJvbWlzZS5hbGxTZXR0bGVkYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5hbGxzZXR0bGVkXG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHN0YXQ6IHRydWUsIGZvcmNlZDogUFJPTUlTRV9TVEFUSUNTX0lOQ09SUkVDVF9JVEVSQVRJT04gfSwge1xuICBhbGxTZXR0bGVkOiBmdW5jdGlvbiBhbGxTZXR0bGVkKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZihDKTtcbiAgICB2YXIgcmVzb2x2ZSA9IGNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHByb21pc2VSZXNvbHZlID0gYUNhbGxhYmxlKEMucmVzb2x2ZSk7XG4gICAgICB2YXIgdmFsdWVzID0gW107XG4gICAgICB2YXIgY291bnRlciA9IDA7XG4gICAgICB2YXIgcmVtYWluaW5nID0gMTtcbiAgICAgIGl0ZXJhdGUoaXRlcmFibGUsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGNvdW50ZXIrKztcbiAgICAgICAgdmFyIGFscmVhZHlDYWxsZWQgPSBmYWxzZTtcbiAgICAgICAgcmVtYWluaW5nKys7XG4gICAgICAgIGNhbGwocHJvbWlzZVJlc29sdmUsIEMsIHByb21pc2UpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKGFscmVhZHlDYWxsZWQpIHJldHVybjtcbiAgICAgICAgICBhbHJlYWR5Q2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgICB2YWx1ZXNbaW5kZXhdID0geyBzdGF0dXM6ICdmdWxmaWxsZWQnLCB2YWx1ZTogdmFsdWUgfTtcbiAgICAgICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIGlmIChhbHJlYWR5Q2FsbGVkKSByZXR1cm47XG4gICAgICAgICAgYWxyZWFkeUNhbGxlZCA9IHRydWU7XG4gICAgICAgICAgdmFsdWVzW2luZGV4XSA9IHsgc3RhdHVzOiAncmVqZWN0ZWQnLCByZWFzb246IGVycm9yIH07XG4gICAgICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZXJyb3IpIHJlamVjdChyZXN1bHQudmFsdWUpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wZXJmb3JtJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG52YXIgUFJPTUlTRV9TVEFUSUNTX0lOQ09SUkVDVF9JVEVSQVRJT04gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1zdGF0aWNzLWluY29ycmVjdC1pdGVyYXRpb24nKTtcblxuLy8gYFByb21pc2UuYWxsYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5hbGxcbiQoeyB0YXJnZXQ6ICdQcm9taXNlJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBQUk9NSVNFX1NUQVRJQ1NfSU5DT1JSRUNUX0lURVJBVElPTiB9LCB7XG4gIGFsbDogZnVuY3Rpb24gYWxsKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZihDKTtcbiAgICB2YXIgcmVzb2x2ZSA9IGNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyICRwcm9taXNlUmVzb2x2ZSA9IGFDYWxsYWJsZShDLnJlc29sdmUpO1xuICAgICAgdmFyIHZhbHVlcyA9IFtdO1xuICAgICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgICAgdmFyIHJlbWFpbmluZyA9IDE7XG4gICAgICBpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICB2YXIgaW5kZXggPSBjb3VudGVyKys7XG4gICAgICAgIHZhciBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICBjYWxsKCRwcm9taXNlUmVzb2x2ZSwgQywgcHJvbWlzZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlc1tpbmRleF0gPSB2YWx1ZTtcbiAgICAgICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgICAgIH0sIHJlamVjdCk7XG4gICAgICB9KTtcbiAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICB9KTtcbiAgICBpZiAocmVzdWx0LmVycm9yKSByZWplY3QocmVzdWx0LnZhbHVlKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wZXJmb3JtJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG52YXIgUFJPTUlTRV9TVEFUSUNTX0lOQ09SUkVDVF9JVEVSQVRJT04gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1zdGF0aWNzLWluY29ycmVjdC1pdGVyYXRpb24nKTtcblxudmFyIFBST01JU0VfQU5ZX0VSUk9SID0gJ05vIG9uZSBwcm9taXNlIHJlc29sdmVkJztcblxuLy8gYFByb21pc2UuYW55YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5hbnlcbiQoeyB0YXJnZXQ6ICdQcm9taXNlJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBQUk9NSVNFX1NUQVRJQ1NfSU5DT1JSRUNUX0lURVJBVElPTiB9LCB7XG4gIGFueTogZnVuY3Rpb24gYW55KGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBBZ2dyZWdhdGVFcnJvciA9IGdldEJ1aWx0SW4oJ0FnZ3JlZ2F0ZUVycm9yJyk7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mKEMpO1xuICAgIHZhciByZXNvbHZlID0gY2FwYWJpbGl0eS5yZXNvbHZlO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcHJvbWlzZVJlc29sdmUgPSBhQ2FsbGFibGUoQy5yZXNvbHZlKTtcbiAgICAgIHZhciBlcnJvcnMgPSBbXTtcbiAgICAgIHZhciBjb3VudGVyID0gMDtcbiAgICAgIHZhciByZW1haW5pbmcgPSAxO1xuICAgICAgdmFyIGFscmVhZHlSZXNvbHZlZCA9IGZhbHNlO1xuICAgICAgaXRlcmF0ZShpdGVyYWJsZSwgZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gY291bnRlcisrO1xuICAgICAgICB2YXIgYWxyZWFkeVJlamVjdGVkID0gZmFsc2U7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICBjYWxsKHByb21pc2VSZXNvbHZlLCBDLCBwcm9taXNlKS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIGlmIChhbHJlYWR5UmVqZWN0ZWQgfHwgYWxyZWFkeVJlc29sdmVkKSByZXR1cm47XG4gICAgICAgICAgYWxyZWFkeVJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgaWYgKGFscmVhZHlSZWplY3RlZCB8fCBhbHJlYWR5UmVzb2x2ZWQpIHJldHVybjtcbiAgICAgICAgICBhbHJlYWR5UmVqZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgIGVycm9yc1tpbmRleF0gPSBlcnJvcjtcbiAgICAgICAgICAtLXJlbWFpbmluZyB8fCByZWplY3QobmV3IEFnZ3JlZ2F0ZUVycm9yKGVycm9ycywgUFJPTUlTRV9BTllfRVJST1IpKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIC0tcmVtYWluaW5nIHx8IHJlamVjdChuZXcgQWdncmVnYXRlRXJyb3IoZXJyb3JzLCBQUk9NSVNFX0FOWV9FUlJPUikpO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZXJyb3IpIHJlamVjdChyZXN1bHQudmFsdWUpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKS5DT05TVFJVQ1RPUjtcbnZhciBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3InKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xuXG52YXIgTmF0aXZlUHJvbWlzZVByb3RvdHlwZSA9IE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciAmJiBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IucHJvdG90eXBlO1xuXG4vLyBgUHJvbWlzZS5wcm90b3R5cGUuY2F0Y2hgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnByb3RvdHlwZS5jYXRjaFxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiwgcmVhbDogdHJ1ZSB9LCB7XG4gICdjYXRjaCc6IGZ1bmN0aW9uIChvblJlamVjdGVkKSB7XG4gICAgcmV0dXJuIHRoaXMudGhlbih1bmRlZmluZWQsIG9uUmVqZWN0ZWQpO1xuICB9XG59KTtcblxuLy8gbWFrZXMgc3VyZSB0aGF0IG5hdGl2ZSBwcm9taXNlLWJhc2VkIEFQSXMgYFByb21pc2UjY2F0Y2hgIHByb3Blcmx5IHdvcmtzIHdpdGggcGF0Y2hlZCBgUHJvbWlzZSN0aGVuYFxuaWYgKCFJU19QVVJFICYmIGlzQ2FsbGFibGUoTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yKSkge1xuICB2YXIgbWV0aG9kID0gZ2V0QnVpbHRJbignUHJvbWlzZScpLnByb3RvdHlwZVsnY2F0Y2gnXTtcbiAgaWYgKE5hdGl2ZVByb21pc2VQcm90b3R5cGVbJ2NhdGNoJ10gIT09IG1ldGhvZCkge1xuICAgIGRlZmluZUJ1aWx0SW4oTmF0aXZlUHJvbWlzZVByb3RvdHlwZSwgJ2NhdGNoJywgbWV0aG9kLCB7IHVuc2FmZTogdHJ1ZSB9KTtcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgSVNfTk9ERSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC1pcy1ub2RlJyk7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG52YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIHNldFNwZWNpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXNwZWNpZXMnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLWluc3RhbmNlJyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciB0YXNrID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Rhc2snKS5zZXQ7XG52YXIgbWljcm90YXNrID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21pY3JvdGFzaycpO1xudmFyIGhvc3RSZXBvcnRFcnJvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaG9zdC1yZXBvcnQtZXJyb3JzJyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wZXJmb3JtJyk7XG52YXIgUXVldWUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcXVldWUnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtbmF0aXZlLWNvbnN0cnVjdG9yJyk7XG52YXIgUHJvbWlzZUNvbnN0cnVjdG9yRGV0ZWN0aW9uID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xuXG52YXIgUFJPTUlTRSA9ICdQcm9taXNlJztcbnZhciBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiA9IFByb21pc2VDb25zdHJ1Y3RvckRldGVjdGlvbi5DT05TVFJVQ1RPUjtcbnZhciBOQVRJVkVfUFJPTUlTRV9SRUpFQ1RJT05fRVZFTlQgPSBQcm9taXNlQ29uc3RydWN0b3JEZXRlY3Rpb24uUkVKRUNUSU9OX0VWRU5UO1xudmFyIE5BVElWRV9QUk9NSVNFX1NVQkNMQVNTSU5HID0gUHJvbWlzZUNvbnN0cnVjdG9yRGV0ZWN0aW9uLlNVQkNMQVNTSU5HO1xudmFyIGdldEludGVybmFsUHJvbWlzZVN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IoUFJPTUlTRSk7XG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIE5hdGl2ZVByb21pc2VQcm90b3R5cGUgPSBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgJiYgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbnZhciBQcm9taXNlQ29uc3RydWN0b3IgPSBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3I7XG52YXIgUHJvbWlzZVByb3RvdHlwZSA9IE5hdGl2ZVByb21pc2VQcm90b3R5cGU7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsVGhpcy5UeXBlRXJyb3I7XG52YXIgZG9jdW1lbnQgPSBnbG9iYWxUaGlzLmRvY3VtZW50O1xudmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mO1xudmFyIG5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5O1xuXG52YXIgRElTUEFUQ0hfRVZFTlQgPSAhIShkb2N1bWVudCAmJiBkb2N1bWVudC5jcmVhdGVFdmVudCAmJiBnbG9iYWxUaGlzLmRpc3BhdGNoRXZlbnQpO1xudmFyIFVOSEFORExFRF9SRUpFQ1RJT04gPSAndW5oYW5kbGVkcmVqZWN0aW9uJztcbnZhciBSRUpFQ1RJT05fSEFORExFRCA9ICdyZWplY3Rpb25oYW5kbGVkJztcbnZhciBQRU5ESU5HID0gMDtcbnZhciBGVUxGSUxMRUQgPSAxO1xudmFyIFJFSkVDVEVEID0gMjtcbnZhciBIQU5ETEVEID0gMTtcbnZhciBVTkhBTkRMRUQgPSAyO1xuXG52YXIgSW50ZXJuYWwsIE93blByb21pc2VDYXBhYmlsaXR5LCBQcm9taXNlV3JhcHBlciwgbmF0aXZlVGhlbjtcblxuLy8gaGVscGVyc1xudmFyIGlzVGhlbmFibGUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHRoZW47XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgaXNDYWxsYWJsZSh0aGVuID0gaXQudGhlbikgPyB0aGVuIDogZmFsc2U7XG59O1xuXG52YXIgY2FsbFJlYWN0aW9uID0gZnVuY3Rpb24gKHJlYWN0aW9uLCBzdGF0ZSkge1xuICB2YXIgdmFsdWUgPSBzdGF0ZS52YWx1ZTtcbiAgdmFyIG9rID0gc3RhdGUuc3RhdGUgPT09IEZVTEZJTExFRDtcbiAgdmFyIGhhbmRsZXIgPSBvayA/IHJlYWN0aW9uLm9rIDogcmVhY3Rpb24uZmFpbDtcbiAgdmFyIHJlc29sdmUgPSByZWFjdGlvbi5yZXNvbHZlO1xuICB2YXIgcmVqZWN0ID0gcmVhY3Rpb24ucmVqZWN0O1xuICB2YXIgZG9tYWluID0gcmVhY3Rpb24uZG9tYWluO1xuICB2YXIgcmVzdWx0LCB0aGVuLCBleGl0ZWQ7XG4gIHRyeSB7XG4gICAgaWYgKGhhbmRsZXIpIHtcbiAgICAgIGlmICghb2spIHtcbiAgICAgICAgaWYgKHN0YXRlLnJlamVjdGlvbiA9PT0gVU5IQU5ETEVEKSBvbkhhbmRsZVVuaGFuZGxlZChzdGF0ZSk7XG4gICAgICAgIHN0YXRlLnJlamVjdGlvbiA9IEhBTkRMRUQ7XG4gICAgICB9XG4gICAgICBpZiAoaGFuZGxlciA9PT0gdHJ1ZSkgcmVzdWx0ID0gdmFsdWU7XG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKGRvbWFpbikgZG9tYWluLmVudGVyKCk7XG4gICAgICAgIHJlc3VsdCA9IGhhbmRsZXIodmFsdWUpOyAvLyBjYW4gdGhyb3dcbiAgICAgICAgaWYgKGRvbWFpbikge1xuICAgICAgICAgIGRvbWFpbi5leGl0KCk7XG4gICAgICAgICAgZXhpdGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdCA9PT0gcmVhY3Rpb24ucHJvbWlzZSkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignUHJvbWlzZS1jaGFpbiBjeWNsZScpKTtcbiAgICAgIH0gZWxzZSBpZiAodGhlbiA9IGlzVGhlbmFibGUocmVzdWx0KSkge1xuICAgICAgICBjYWxsKHRoZW4sIHJlc3VsdCwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0gZWxzZSByZXNvbHZlKHJlc3VsdCk7XG4gICAgfSBlbHNlIHJlamVjdCh2YWx1ZSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGRvbWFpbiAmJiAhZXhpdGVkKSBkb21haW4uZXhpdCgpO1xuICAgIHJlamVjdChlcnJvcik7XG4gIH1cbn07XG5cbnZhciBub3RpZnkgPSBmdW5jdGlvbiAoc3RhdGUsIGlzUmVqZWN0KSB7XG4gIGlmIChzdGF0ZS5ub3RpZmllZCkgcmV0dXJuO1xuICBzdGF0ZS5ub3RpZmllZCA9IHRydWU7XG4gIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlYWN0aW9ucyA9IHN0YXRlLnJlYWN0aW9ucztcbiAgICB2YXIgcmVhY3Rpb247XG4gICAgd2hpbGUgKHJlYWN0aW9uID0gcmVhY3Rpb25zLmdldCgpKSB7XG4gICAgICBjYWxsUmVhY3Rpb24ocmVhY3Rpb24sIHN0YXRlKTtcbiAgICB9XG4gICAgc3RhdGUubm90aWZpZWQgPSBmYWxzZTtcbiAgICBpZiAoaXNSZWplY3QgJiYgIXN0YXRlLnJlamVjdGlvbikgb25VbmhhbmRsZWQoc3RhdGUpO1xuICB9KTtcbn07XG5cbnZhciBkaXNwYXRjaEV2ZW50ID0gZnVuY3Rpb24gKG5hbWUsIHByb21pc2UsIHJlYXNvbikge1xuICB2YXIgZXZlbnQsIGhhbmRsZXI7XG4gIGlmIChESVNQQVRDSF9FVkVOVCkge1xuICAgIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgZXZlbnQucHJvbWlzZSA9IHByb21pc2U7XG4gICAgZXZlbnQucmVhc29uID0gcmVhc29uO1xuICAgIGV2ZW50LmluaXRFdmVudChuYW1lLCBmYWxzZSwgdHJ1ZSk7XG4gICAgZ2xvYmFsVGhpcy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgfSBlbHNlIGV2ZW50ID0geyBwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHJlYXNvbiB9O1xuICBpZiAoIU5BVElWRV9QUk9NSVNFX1JFSkVDVElPTl9FVkVOVCAmJiAoaGFuZGxlciA9IGdsb2JhbFRoaXNbJ29uJyArIG5hbWVdKSkgaGFuZGxlcihldmVudCk7XG4gIGVsc2UgaWYgKG5hbWUgPT09IFVOSEFORExFRF9SRUpFQ1RJT04pIGhvc3RSZXBvcnRFcnJvcnMoJ1VuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbicsIHJlYXNvbik7XG59O1xuXG52YXIgb25VbmhhbmRsZWQgPSBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgY2FsbCh0YXNrLCBnbG9iYWxUaGlzLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHByb21pc2UgPSBzdGF0ZS5mYWNhZGU7XG4gICAgdmFyIHZhbHVlID0gc3RhdGUudmFsdWU7XG4gICAgdmFyIElTX1VOSEFORExFRCA9IGlzVW5oYW5kbGVkKHN0YXRlKTtcbiAgICB2YXIgcmVzdWx0O1xuICAgIGlmIChJU19VTkhBTkRMRUQpIHtcbiAgICAgIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoSVNfTk9ERSkge1xuICAgICAgICAgIHByb2Nlc3MuZW1pdCgndW5oYW5kbGVkUmVqZWN0aW9uJywgdmFsdWUsIHByb21pc2UpO1xuICAgICAgICB9IGVsc2UgZGlzcGF0Y2hFdmVudChVTkhBTkRMRURfUkVKRUNUSU9OLCBwcm9taXNlLCB2YWx1ZSk7XG4gICAgICB9KTtcbiAgICAgIC8vIEJyb3dzZXJzIHNob3VsZCBub3QgdHJpZ2dlciBgcmVqZWN0aW9uSGFuZGxlZGAgZXZlbnQgaWYgaXQgd2FzIGhhbmRsZWQgaGVyZSwgTm9kZUpTIC0gc2hvdWxkXG4gICAgICBzdGF0ZS5yZWplY3Rpb24gPSBJU19OT0RFIHx8IGlzVW5oYW5kbGVkKHN0YXRlKSA/IFVOSEFORExFRCA6IEhBTkRMRUQ7XG4gICAgICBpZiAocmVzdWx0LmVycm9yKSB0aHJvdyByZXN1bHQudmFsdWU7XG4gICAgfVxuICB9KTtcbn07XG5cbnZhciBpc1VuaGFuZGxlZCA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICByZXR1cm4gc3RhdGUucmVqZWN0aW9uICE9PSBIQU5ETEVEICYmICFzdGF0ZS5wYXJlbnQ7XG59O1xuXG52YXIgb25IYW5kbGVVbmhhbmRsZWQgPSBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgY2FsbCh0YXNrLCBnbG9iYWxUaGlzLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHByb21pc2UgPSBzdGF0ZS5mYWNhZGU7XG4gICAgaWYgKElTX05PREUpIHtcbiAgICAgIHByb2Nlc3MuZW1pdCgncmVqZWN0aW9uSGFuZGxlZCcsIHByb21pc2UpO1xuICAgIH0gZWxzZSBkaXNwYXRjaEV2ZW50KFJFSkVDVElPTl9IQU5ETEVELCBwcm9taXNlLCBzdGF0ZS52YWx1ZSk7XG4gIH0pO1xufTtcblxudmFyIGJpbmQgPSBmdW5jdGlvbiAoZm4sIHN0YXRlLCB1bndyYXApIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGZuKHN0YXRlLCB2YWx1ZSwgdW53cmFwKTtcbiAgfTtcbn07XG5cbnZhciBpbnRlcm5hbFJlamVjdCA9IGZ1bmN0aW9uIChzdGF0ZSwgdmFsdWUsIHVud3JhcCkge1xuICBpZiAoc3RhdGUuZG9uZSkgcmV0dXJuO1xuICBzdGF0ZS5kb25lID0gdHJ1ZTtcbiAgaWYgKHVud3JhcCkgc3RhdGUgPSB1bndyYXA7XG4gIHN0YXRlLnZhbHVlID0gdmFsdWU7XG4gIHN0YXRlLnN0YXRlID0gUkVKRUNURUQ7XG4gIG5vdGlmeShzdGF0ZSwgdHJ1ZSk7XG59O1xuXG52YXIgaW50ZXJuYWxSZXNvbHZlID0gZnVuY3Rpb24gKHN0YXRlLCB2YWx1ZSwgdW53cmFwKSB7XG4gIGlmIChzdGF0ZS5kb25lKSByZXR1cm47XG4gIHN0YXRlLmRvbmUgPSB0cnVlO1xuICBpZiAodW53cmFwKSBzdGF0ZSA9IHVud3JhcDtcbiAgdHJ5IHtcbiAgICBpZiAoc3RhdGUuZmFjYWRlID09PSB2YWx1ZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmXCIpO1xuICAgIHZhciB0aGVuID0gaXNUaGVuYWJsZSh2YWx1ZSk7XG4gICAgaWYgKHRoZW4pIHtcbiAgICAgIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB3cmFwcGVyID0geyBkb25lOiBmYWxzZSB9O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNhbGwodGhlbiwgdmFsdWUsXG4gICAgICAgICAgICBiaW5kKGludGVybmFsUmVzb2x2ZSwgd3JhcHBlciwgc3RhdGUpLFxuICAgICAgICAgICAgYmluZChpbnRlcm5hbFJlamVjdCwgd3JhcHBlciwgc3RhdGUpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBpbnRlcm5hbFJlamVjdCh3cmFwcGVyLCBlcnJvciwgc3RhdGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHN0YXRlLnN0YXRlID0gRlVMRklMTEVEO1xuICAgICAgbm90aWZ5KHN0YXRlLCBmYWxzZSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGludGVybmFsUmVqZWN0KHsgZG9uZTogZmFsc2UgfSwgZXJyb3IsIHN0YXRlKTtcbiAgfVxufTtcblxuLy8gY29uc3RydWN0b3IgcG9seWZpbGxcbmlmIChGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUikge1xuICAvLyAyNS40LjMuMSBQcm9taXNlKGV4ZWN1dG9yKVxuICBQcm9taXNlQ29uc3RydWN0b3IgPSBmdW5jdGlvbiBQcm9taXNlKGV4ZWN1dG9yKSB7XG4gICAgYW5JbnN0YW5jZSh0aGlzLCBQcm9taXNlUHJvdG90eXBlKTtcbiAgICBhQ2FsbGFibGUoZXhlY3V0b3IpO1xuICAgIGNhbGwoSW50ZXJuYWwsIHRoaXMpO1xuICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsUHJvbWlzZVN0YXRlKHRoaXMpO1xuICAgIHRyeSB7XG4gICAgICBleGVjdXRvcihiaW5kKGludGVybmFsUmVzb2x2ZSwgc3RhdGUpLCBiaW5kKGludGVybmFsUmVqZWN0LCBzdGF0ZSkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpbnRlcm5hbFJlamVjdChzdGF0ZSwgZXJyb3IpO1xuICAgIH1cbiAgfTtcblxuICBQcm9taXNlUHJvdG90eXBlID0gUHJvbWlzZUNvbnN0cnVjdG9yLnByb3RvdHlwZTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMgLS0gcmVxdWlyZWQgZm9yIGAubGVuZ3RoYFxuICBJbnRlcm5hbCA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICBzZXRJbnRlcm5hbFN0YXRlKHRoaXMsIHtcbiAgICAgIHR5cGU6IFBST01JU0UsXG4gICAgICBkb25lOiBmYWxzZSxcbiAgICAgIG5vdGlmaWVkOiBmYWxzZSxcbiAgICAgIHBhcmVudDogZmFsc2UsXG4gICAgICByZWFjdGlvbnM6IG5ldyBRdWV1ZSgpLFxuICAgICAgcmVqZWN0aW9uOiBmYWxzZSxcbiAgICAgIHN0YXRlOiBQRU5ESU5HLFxuICAgICAgdmFsdWU6IG51bGxcbiAgICB9KTtcbiAgfTtcblxuICAvLyBgUHJvbWlzZS5wcm90b3R5cGUudGhlbmAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5wcm90b3R5cGUudGhlblxuICBJbnRlcm5hbC5wcm90b3R5cGUgPSBkZWZpbmVCdWlsdEluKFByb21pc2VQcm90b3R5cGUsICd0aGVuJywgZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsUHJvbWlzZVN0YXRlKHRoaXMpO1xuICAgIHZhciByZWFjdGlvbiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCBQcm9taXNlQ29uc3RydWN0b3IpKTtcbiAgICBzdGF0ZS5wYXJlbnQgPSB0cnVlO1xuICAgIHJlYWN0aW9uLm9rID0gaXNDYWxsYWJsZShvbkZ1bGZpbGxlZCkgPyBvbkZ1bGZpbGxlZCA6IHRydWU7XG4gICAgcmVhY3Rpb24uZmFpbCA9IGlzQ2FsbGFibGUob25SZWplY3RlZCkgJiYgb25SZWplY3RlZDtcbiAgICByZWFjdGlvbi5kb21haW4gPSBJU19OT0RFID8gcHJvY2Vzcy5kb21haW4gOiB1bmRlZmluZWQ7XG4gICAgaWYgKHN0YXRlLnN0YXRlID09PSBQRU5ESU5HKSBzdGF0ZS5yZWFjdGlvbnMuYWRkKHJlYWN0aW9uKTtcbiAgICBlbHNlIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICBjYWxsUmVhY3Rpb24ocmVhY3Rpb24sIHN0YXRlKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVhY3Rpb24ucHJvbWlzZTtcbiAgfSk7XG5cbiAgT3duUHJvbWlzZUNhcGFiaWxpdHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHByb21pc2UgPSBuZXcgSW50ZXJuYWwoKTtcbiAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFByb21pc2VTdGF0ZShwcm9taXNlKTtcbiAgICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xuICAgIHRoaXMucmVzb2x2ZSA9IGJpbmQoaW50ZXJuYWxSZXNvbHZlLCBzdGF0ZSk7XG4gICAgdGhpcy5yZWplY3QgPSBiaW5kKGludGVybmFsUmVqZWN0LCBzdGF0ZSk7XG4gIH07XG5cbiAgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKEMpIHtcbiAgICByZXR1cm4gQyA9PT0gUHJvbWlzZUNvbnN0cnVjdG9yIHx8IEMgPT09IFByb21pc2VXcmFwcGVyXG4gICAgICA/IG5ldyBPd25Qcm9taXNlQ2FwYWJpbGl0eShDKVxuICAgICAgOiBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHkoQyk7XG4gIH07XG5cbiAgaWYgKCFJU19QVVJFICYmIGlzQ2FsbGFibGUoTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yKSAmJiBOYXRpdmVQcm9taXNlUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlKSB7XG4gICAgbmF0aXZlVGhlbiA9IE5hdGl2ZVByb21pc2VQcm90b3R5cGUudGhlbjtcblxuICAgIGlmICghTkFUSVZFX1BST01JU0VfU1VCQ0xBU1NJTkcpIHtcbiAgICAgIC8vIG1ha2UgYFByb21pc2UjdGhlbmAgcmV0dXJuIGEgcG9seWZpbGxlZCBgUHJvbWlzZWAgZm9yIG5hdGl2ZSBwcm9taXNlLWJhc2VkIEFQSXNcbiAgICAgIGRlZmluZUJ1aWx0SW4oTmF0aXZlUHJvbWlzZVByb3RvdHlwZSwgJ3RoZW4nLCBmdW5jdGlvbiB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gICAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlQ29uc3RydWN0b3IoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgIGNhbGwobmF0aXZlVGhlbiwgdGhhdCwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSkudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNjQwXG4gICAgICB9LCB7IHVuc2FmZTogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICAvLyBtYWtlIGAuY29uc3RydWN0b3IgPT09IFByb21pc2VgIHdvcmsgZm9yIG5hdGl2ZSBwcm9taXNlLWJhc2VkIEFQSXNcbiAgICB0cnkge1xuICAgICAgZGVsZXRlIE5hdGl2ZVByb21pc2VQcm90b3R5cGUuY29uc3RydWN0b3I7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuXG4gICAgLy8gbWFrZSBgaW5zdGFuY2VvZiBQcm9taXNlYCB3b3JrIGZvciBuYXRpdmUgcHJvbWlzZS1iYXNlZCBBUElzXG4gICAgaWYgKHNldFByb3RvdHlwZU9mKSB7XG4gICAgICBzZXRQcm90b3R5cGVPZihOYXRpdmVQcm9taXNlUHJvdG90eXBlLCBQcm9taXNlUHJvdG90eXBlKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gYFByb21pc2VgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UtZXhlY3V0b3JcbiQoeyBnbG9iYWw6IHRydWUsIGNvbnN0cnVjdG9yOiB0cnVlLCB3cmFwOiB0cnVlLCBmb3JjZWQ6IEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SIH0sIHtcbiAgUHJvbWlzZTogUHJvbWlzZUNvbnN0cnVjdG9yXG59KTtcblxuc2V0VG9TdHJpbmdUYWcoUHJvbWlzZUNvbnN0cnVjdG9yLCBQUk9NSVNFLCBmYWxzZSwgdHJ1ZSk7XG5zZXRTcGVjaWVzKFBST01JU0UpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtbmF0aXZlLWNvbnN0cnVjdG9yJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIHByb21pc2VSZXNvbHZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtcmVzb2x2ZScpO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG5cbnZhciBOYXRpdmVQcm9taXNlUHJvdG90eXBlID0gTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yICYmIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG5cbi8vIFNhZmFyaSBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDgyOVxudmFyIE5PTl9HRU5FUklDID0gISFOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgJiYgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uby10aGVuYWJsZSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICBOYXRpdmVQcm9taXNlUHJvdG90eXBlWydmaW5hbGx5J10uY2FsbCh7IHRoZW46IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSB9LCBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pO1xufSk7XG5cbi8vIGBQcm9taXNlLnByb3RvdHlwZS5maW5hbGx5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5wcm90b3R5cGUuZmluYWxseVxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBOT05fR0VORVJJQyB9LCB7XG4gICdmaW5hbGx5JzogZnVuY3Rpb24gKG9uRmluYWxseSkge1xuICAgIHZhciBDID0gc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsIGdldEJ1aWx0SW4oJ1Byb21pc2UnKSk7XG4gICAgdmFyIGlzRnVuY3Rpb24gPSBpc0NhbGxhYmxlKG9uRmluYWxseSk7XG4gICAgcmV0dXJuIHRoaXMudGhlbihcbiAgICAgIGlzRnVuY3Rpb24gPyBmdW5jdGlvbiAoeCkge1xuICAgICAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoQywgb25GaW5hbGx5KCkpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4geDsgfSk7XG4gICAgICB9IDogb25GaW5hbGx5LFxuICAgICAgaXNGdW5jdGlvbiA/IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDLCBvbkZpbmFsbHkoKSkudGhlbihmdW5jdGlvbiAoKSB7IHRocm93IGU7IH0pO1xuICAgICAgfSA6IG9uRmluYWxseVxuICAgICk7XG4gIH1cbn0pO1xuXG4vLyBtYWtlcyBzdXJlIHRoYXQgbmF0aXZlIHByb21pc2UtYmFzZWQgQVBJcyBgUHJvbWlzZSNmaW5hbGx5YCBwcm9wZXJseSB3b3JrcyB3aXRoIHBhdGNoZWQgYFByb21pc2UjdGhlbmBcbmlmICghSVNfUFVSRSAmJiBpc0NhbGxhYmxlKE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvcikpIHtcbiAgdmFyIG1ldGhvZCA9IGdldEJ1aWx0SW4oJ1Byb21pc2UnKS5wcm90b3R5cGVbJ2ZpbmFsbHknXTtcbiAgaWYgKE5hdGl2ZVByb21pc2VQcm90b3R5cGVbJ2ZpbmFsbHknXSAhPT0gbWV0aG9kKSB7XG4gICAgZGVmaW5lQnVpbHRJbihOYXRpdmVQcm9taXNlUHJvdG90eXBlLCAnZmluYWxseScsIG1ldGhvZCwgeyB1bnNhZmU6IHRydWUgfSk7XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IFJlbW92ZSB0aGlzIG1vZHVsZSBmcm9tIGBjb3JlLWpzQDRgIHNpbmNlIGl0J3Mgc3BsaXQgdG8gbW9kdWxlcyBsaXN0ZWQgYmVsb3dcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMucHJvbWlzZS5jb25zdHJ1Y3RvcicpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5wcm9taXNlLmFsbCcpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5wcm9taXNlLmNhdGNoJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnByb21pc2UucmFjZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5wcm9taXNlLnJlamVjdCcpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5wcm9taXNlLnJlc29sdmUnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcGVyZm9ybScpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xudmFyIFBST01JU0VfU1RBVElDU19JTkNPUlJFQ1RfSVRFUkFUSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2Utc3RhdGljcy1pbmNvcnJlY3QtaXRlcmF0aW9uJyk7XG5cbi8vIGBQcm9taXNlLnJhY2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnJhY2VcbiQoeyB0YXJnZXQ6ICdQcm9taXNlJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBQUk9NSVNFX1NUQVRJQ1NfSU5DT1JSRUNUX0lURVJBVElPTiB9LCB7XG4gIHJhY2U6IGZ1bmN0aW9uIHJhY2UoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mKEMpO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgJHByb21pc2VSZXNvbHZlID0gYUNhbGxhYmxlKEMucmVzb2x2ZSk7XG4gICAgICBpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICBjYWxsKCRwcm9taXNlUmVzb2x2ZSwgQywgcHJvbWlzZSkudGhlbihjYXBhYmlsaXR5LnJlc29sdmUsIHJlamVjdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpZiAocmVzdWx0LmVycm9yKSByZWplY3QocmVzdWx0LnZhbHVlKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpLkNPTlNUUlVDVE9SO1xuXG4vLyBgUHJvbWlzZS5yZWplY3RgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnJlamVjdFxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SIH0sIHtcbiAgcmVqZWN0OiBmdW5jdGlvbiByZWplY3Qocikge1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZih0aGlzKTtcbiAgICB2YXIgY2FwYWJpbGl0eVJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIGNhcGFiaWxpdHlSZWplY3Qocik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLW5hdGl2ZS1jb25zdHJ1Y3RvcicpO1xudmFyIEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtY29uc3RydWN0b3ItZGV0ZWN0aW9uJykuQ09OU1RSVUNUT1I7XG52YXIgcHJvbWlzZVJlc29sdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1yZXNvbHZlJyk7XG5cbnZhciBQcm9taXNlQ29uc3RydWN0b3JXcmFwcGVyID0gZ2V0QnVpbHRJbignUHJvbWlzZScpO1xudmFyIENIRUNLX1dSQVBQRVIgPSBJU19QVVJFICYmICFGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUjtcblxuLy8gYFByb21pc2UucmVzb2x2ZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UucmVzb2x2ZVxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfHwgRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IgfSwge1xuICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKHgpIHtcbiAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoQ0hFQ0tfV1JBUFBFUiAmJiB0aGlzID09PSBQcm9taXNlQ29uc3RydWN0b3JXcmFwcGVyID8gTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yIDogdGhpcywgeCk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGFwcGx5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWFwcGx5Jyk7XG52YXIgc2xpY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc2xpY2UnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BlcmZvcm0nKTtcblxudmFyIFByb21pc2UgPSBnbG9iYWxUaGlzLlByb21pc2U7XG5cbnZhciBBQ0NFUFRfQVJHVU1FTlRTID0gZmFsc2U7XG4vLyBBdm9pZGluZyB0aGUgdXNlIG9mIHBvbHlmaWxscyBvZiB0aGUgcHJldmlvdXMgaXRlcmF0aW9uIG9mIHRoaXMgcHJvcG9zYWxcbi8vIHRoYXQgZG9lcyBub3QgYWNjZXB0IGFyZ3VtZW50cyBvZiB0aGUgY2FsbGJhY2tcbnZhciBGT1JDRUQgPSAhUHJvbWlzZSB8fCAhUHJvbWlzZVsndHJ5J10gfHwgcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gIFByb21pc2VbJ3RyeSddKGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICAgIEFDQ0VQVF9BUkdVTUVOVFMgPSBhcmd1bWVudCA9PT0gODtcbiAgfSwgOCk7XG59KS5lcnJvciB8fCAhQUNDRVBUX0FSR1VNRU5UUztcblxuLy8gYFByb21pc2UudHJ5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS50cnlcbiQoeyB0YXJnZXQ6ICdQcm9taXNlJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBGT1JDRUQgfSwge1xuICAndHJ5JzogZnVuY3Rpb24gKGNhbGxiYWNrZm4gLyogLCAuLi5hcmdzICovKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IHNsaWNlKGFyZ3VtZW50cywgMSkgOiBbXTtcbiAgICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mKHRoaXMpO1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBhcHBseShhQ2FsbGFibGUoY2FsbGJhY2tmbiksIHVuZGVmaW5lZCwgYXJncyk7XG4gICAgfSk7XG4gICAgKHJlc3VsdC5lcnJvciA/IHByb21pc2VDYXBhYmlsaXR5LnJlamVjdCA6IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmUpKHJlc3VsdC52YWx1ZSk7XG4gICAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xuXG4vLyBgUHJvbWlzZS53aXRoUmVzb2x2ZXJzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS53aXRoUmVzb2x2ZXJzXG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHN0YXQ6IHRydWUgfSwge1xuICB3aXRoUmVzb2x2ZXJzOiBmdW5jdGlvbiB3aXRoUmVzb2x2ZXJzKCkge1xuICAgIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYodGhpcyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb21pc2U6IHByb21pc2VDYXBhYmlsaXR5LnByb21pc2UsXG4gICAgICByZXNvbHZlOiBwcm9taXNlQ2FwYWJpbGl0eS5yZXNvbHZlLFxuICAgICAgcmVqZWN0OiBwcm9taXNlQ2FwYWJpbGl0eS5yZWplY3RcbiAgICB9O1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCcpO1xuXG52YXIgJFJhbmdlRXJyb3IgPSBSYW5nZUVycm9yO1xudmFyIGZyb21DaGFyQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tc3RyaW5nLWZyb21jb2RlcG9pbnQgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbnZhciAkZnJvbUNvZGVQb2ludCA9IFN0cmluZy5mcm9tQ29kZVBvaW50O1xudmFyIGpvaW4gPSB1bmN1cnJ5VGhpcyhbXS5qb2luKTtcblxuLy8gbGVuZ3RoIHNob3VsZCBiZSAxLCBvbGQgRkYgcHJvYmxlbVxudmFyIElOQ09SUkVDVF9MRU5HVEggPSAhISRmcm9tQ29kZVBvaW50ICYmICRmcm9tQ29kZVBvaW50Lmxlbmd0aCAhPT0gMTtcblxuLy8gYFN0cmluZy5mcm9tQ29kZVBvaW50YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLmZyb21jb2RlcG9pbnRcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBzdGF0OiB0cnVlLCBhcml0eTogMSwgZm9yY2VkOiBJTkNPUlJFQ1RfTEVOR1RIIH0sIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzIC0tIHJlcXVpcmVkIGZvciBgLmxlbmd0aGBcbiAgZnJvbUNvZGVQb2ludDogZnVuY3Rpb24gZnJvbUNvZGVQb2ludCh4KSB7XG4gICAgdmFyIGVsZW1lbnRzID0gW107XG4gICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBjb2RlO1xuICAgIHdoaWxlIChsZW5ndGggPiBpKSB7XG4gICAgICBjb2RlID0gK2FyZ3VtZW50c1tpKytdO1xuICAgICAgaWYgKHRvQWJzb2x1dGVJbmRleChjb2RlLCAweDEwRkZGRikgIT09IGNvZGUpIHRocm93IG5ldyAkUmFuZ2VFcnJvcihjb2RlICsgJyBpcyBub3QgYSB2YWxpZCBjb2RlIHBvaW50Jyk7XG4gICAgICBlbGVtZW50c1tpXSA9IGNvZGUgPCAweDEwMDAwXG4gICAgICAgID8gZnJvbUNoYXJDb2RlKGNvZGUpXG4gICAgICAgIDogZnJvbUNoYXJDb2RlKCgoY29kZSAtPSAweDEwMDAwKSA+PiAxMCkgKyAweEQ4MDAsIGNvZGUgJSAweDQwMCArIDB4REMwMCk7XG4gICAgfSByZXR1cm4gam9pbihlbGVtZW50cywgJycpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjaGFyQXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLW11bHRpYnl0ZScpLmNoYXJBdDtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgZGVmaW5lSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItZGVmaW5lJyk7XG52YXIgY3JlYXRlSXRlclJlc3VsdE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaXRlci1yZXN1bHQtb2JqZWN0Jyk7XG5cbnZhciBTVFJJTkdfSVRFUkFUT1IgPSAnU3RyaW5nIEl0ZXJhdG9yJztcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFNUUklOR19JVEVSQVRPUik7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS1AQGl0ZXJhdG9yXG5kZWZpbmVJdGVyYXRvcihTdHJpbmcsICdTdHJpbmcnLCBmdW5jdGlvbiAoaXRlcmF0ZWQpIHtcbiAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgdHlwZTogU1RSSU5HX0lURVJBVE9SLFxuICAgIHN0cmluZzogdG9TdHJpbmcoaXRlcmF0ZWQpLFxuICAgIGluZGV4OiAwXG4gIH0pO1xuLy8gYCVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSVzdHJpbmdpdGVyYXRvcnByb3RvdHlwZSUubmV4dFxufSwgZnVuY3Rpb24gbmV4dCgpIHtcbiAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgdmFyIHN0cmluZyA9IHN0YXRlLnN0cmluZztcbiAgdmFyIGluZGV4ID0gc3RhdGUuaW5kZXg7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IHN0cmluZy5sZW5ndGgpIHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KHVuZGVmaW5lZCwgdHJ1ZSk7XG4gIHBvaW50ID0gY2hhckF0KHN0cmluZywgaW5kZXgpO1xuICBzdGF0ZS5pbmRleCArPSBwb2ludC5sZW5ndGg7XG4gIHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KHBvaW50LCBmYWxzZSk7XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgXG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLmFnZ3JlZ2F0ZS1lcnJvcicpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIGZyb20gYGNvcmUtanNANGBcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMucHJvbWlzZS5hbGwtc2V0dGxlZC5qcycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIGZyb20gYGNvcmUtanNANGBcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMucHJvbWlzZS5hbnknKTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgXG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnByb21pc2UudHJ5LmpzJyk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiBSZW1vdmUgZnJvbSBgY29yZS1qc0A0YFxucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5wcm9taXNlLndpdGgtcmVzb2x2ZXJzJyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIERPTUl0ZXJhYmxlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb20taXRlcmFibGVzJyk7XG52YXIgRE9NVG9rZW5MaXN0UHJvdG90eXBlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvbS10b2tlbi1saXN0LXByb3RvdHlwZScpO1xudmFyIEFycmF5SXRlcmF0b3JNZXRob2RzID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5hcnJheS5pdGVyYXRvcicpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgQXJyYXlWYWx1ZXMgPSBBcnJheUl0ZXJhdG9yTWV0aG9kcy52YWx1ZXM7XG5cbnZhciBoYW5kbGVQcm90b3R5cGUgPSBmdW5jdGlvbiAoQ29sbGVjdGlvblByb3RvdHlwZSwgQ09MTEVDVElPTl9OQU1FKSB7XG4gIGlmIChDb2xsZWN0aW9uUHJvdG90eXBlKSB7XG4gICAgLy8gc29tZSBDaHJvbWUgdmVyc2lvbnMgaGF2ZSBub24tY29uZmlndXJhYmxlIG1ldGhvZHMgb24gRE9NVG9rZW5MaXN0XG4gICAgaWYgKENvbGxlY3Rpb25Qcm90b3R5cGVbSVRFUkFUT1JdICE9PSBBcnJheVZhbHVlcykgdHJ5IHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShDb2xsZWN0aW9uUHJvdG90eXBlLCBJVEVSQVRPUiwgQXJyYXlWYWx1ZXMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBDb2xsZWN0aW9uUHJvdG90eXBlW0lURVJBVE9SXSA9IEFycmF5VmFsdWVzO1xuICAgIH1cbiAgICBzZXRUb1N0cmluZ1RhZyhDb2xsZWN0aW9uUHJvdG90eXBlLCBDT0xMRUNUSU9OX05BTUUsIHRydWUpO1xuICAgIGlmIChET01JdGVyYWJsZXNbQ09MTEVDVElPTl9OQU1FXSkgZm9yICh2YXIgTUVUSE9EX05BTUUgaW4gQXJyYXlJdGVyYXRvck1ldGhvZHMpIHtcbiAgICAgIC8vIHNvbWUgQ2hyb21lIHZlcnNpb25zIGhhdmUgbm9uLWNvbmZpZ3VyYWJsZSBtZXRob2RzIG9uIERPTVRva2VuTGlzdFxuICAgICAgaWYgKENvbGxlY3Rpb25Qcm90b3R5cGVbTUVUSE9EX05BTUVdICE9PSBBcnJheUl0ZXJhdG9yTWV0aG9kc1tNRVRIT0RfTkFNRV0pIHRyeSB7XG4gICAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShDb2xsZWN0aW9uUHJvdG90eXBlLCBNRVRIT0RfTkFNRSwgQXJyYXlJdGVyYXRvck1ldGhvZHNbTUVUSE9EX05BTUVdKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIENvbGxlY3Rpb25Qcm90b3R5cGVbTUVUSE9EX05BTUVdID0gQXJyYXlJdGVyYXRvck1ldGhvZHNbTUVUSE9EX05BTUVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZm9yICh2YXIgQ09MTEVDVElPTl9OQU1FIGluIERPTUl0ZXJhYmxlcykge1xuICBoYW5kbGVQcm90b3R5cGUoZ2xvYmFsVGhpc1tDT0xMRUNUSU9OX05BTUVdICYmIGdsb2JhbFRoaXNbQ09MTEVDVElPTl9OQU1FXS5wcm90b3R5cGUsIENPTExFQ1RJT05fTkFNRSk7XG59XG5cbmhhbmRsZVByb3RvdHlwZShET01Ub2tlbkxpc3RQcm90b3R5cGUsICdET01Ub2tlbkxpc3QnKTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IGluIGNvcmUtanNANCwgbW92ZSAvbW9kdWxlcy8gZGVwZW5kZW5jaWVzIHRvIHB1YmxpYyBlbnRyaWVzIGZvciBiZXR0ZXIgb3B0aW1pemF0aW9uIGJ5IHRvb2xzIGxpa2UgYHByZXNldC1lbnZgXG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLmFycmF5Lml0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnN0cmluZy5mcm9tLWNvZGUtcG9pbnQnKTtcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBzYWZlR2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zYWZlLWdldC1idWlsdC1pbicpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBVU0VfTkFUSVZFX1VSTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91cmwtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG52YXIgZGVmaW5lQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVCdWlsdEluQWNjZXNzb3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yJyk7XG52YXIgZGVmaW5lQnVpbHRJbnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWlucycpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvci1jcmVhdGUtY29uc3RydWN0b3InKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1pbnN0YW5jZScpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgJHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgZ2V0SXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yJyk7XG52YXIgZ2V0SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xudmFyIGNyZWF0ZUl0ZXJSZXN1bHRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLWl0ZXItcmVzdWx0LW9iamVjdCcpO1xudmFyIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3ZhbGlkYXRlLWFyZ3VtZW50cy1sZW5ndGgnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBhcnJheVNvcnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc29ydCcpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgVVJMX1NFQVJDSF9QQVJBTVMgPSAnVVJMU2VhcmNoUGFyYW1zJztcbnZhciBVUkxfU0VBUkNIX1BBUkFNU19JVEVSQVRPUiA9IFVSTF9TRUFSQ0hfUEFSQU1TICsgJ0l0ZXJhdG9yJztcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFVSTF9TRUFSQ0hfUEFSQU1TKTtcbnZhciBnZXRJbnRlcm5hbEl0ZXJhdG9yU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcihVUkxfU0VBUkNIX1BBUkFNU19JVEVSQVRPUik7XG5cbnZhciBuYXRpdmVGZXRjaCA9IHNhZmVHZXRCdWlsdEluKCdmZXRjaCcpO1xudmFyIE5hdGl2ZVJlcXVlc3QgPSBzYWZlR2V0QnVpbHRJbignUmVxdWVzdCcpO1xudmFyIEhlYWRlcnMgPSBzYWZlR2V0QnVpbHRJbignSGVhZGVycycpO1xudmFyIFJlcXVlc3RQcm90b3R5cGUgPSBOYXRpdmVSZXF1ZXN0ICYmIE5hdGl2ZVJlcXVlc3QucHJvdG90eXBlO1xudmFyIEhlYWRlcnNQcm90b3R5cGUgPSBIZWFkZXJzICYmIEhlYWRlcnMucHJvdG90eXBlO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbFRoaXMuVHlwZUVycm9yO1xudmFyIGVuY29kZVVSSUNvbXBvbmVudCA9IGdsb2JhbFRoaXMuZW5jb2RlVVJJQ29tcG9uZW50O1xudmFyIGZyb21DaGFyQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG52YXIgZnJvbUNvZGVQb2ludCA9IGdldEJ1aWx0SW4oJ1N0cmluZycsICdmcm9tQ29kZVBvaW50Jyk7XG52YXIgJHBhcnNlSW50ID0gcGFyc2VJbnQ7XG52YXIgY2hhckF0ID0gdW5jdXJyeVRoaXMoJycuY2hhckF0KTtcbnZhciBqb2luID0gdW5jdXJyeVRoaXMoW10uam9pbik7XG52YXIgcHVzaCA9IHVuY3VycnlUaGlzKFtdLnB1c2gpO1xudmFyIHJlcGxhY2UgPSB1bmN1cnJ5VGhpcygnJy5yZXBsYWNlKTtcbnZhciBzaGlmdCA9IHVuY3VycnlUaGlzKFtdLnNoaWZ0KTtcbnZhciBzcGxpY2UgPSB1bmN1cnJ5VGhpcyhbXS5zcGxpY2UpO1xudmFyIHNwbGl0ID0gdW5jdXJyeVRoaXMoJycuc3BsaXQpO1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xudmFyIGV4ZWMgPSB1bmN1cnJ5VGhpcygvLi8uZXhlYyk7XG5cbnZhciBwbHVzID0gL1xcKy9nO1xudmFyIEZBTExCQUNLX1JFUExBQ0VSID0gJ1xcdUZGRkQnO1xudmFyIFZBTElEX0hFWCA9IC9eWzAtOWEtZl0rJC9pO1xuXG52YXIgcGFyc2VIZXhPY3RldCA9IGZ1bmN0aW9uIChzdHJpbmcsIHN0YXJ0KSB7XG4gIHZhciBzdWJzdHIgPSBzdHJpbmdTbGljZShzdHJpbmcsIHN0YXJ0LCBzdGFydCArIDIpO1xuICBpZiAoIWV4ZWMoVkFMSURfSEVYLCBzdWJzdHIpKSByZXR1cm4gTmFOO1xuXG4gIHJldHVybiAkcGFyc2VJbnQoc3Vic3RyLCAxNik7XG59O1xuXG52YXIgZ2V0TGVhZGluZ09uZXMgPSBmdW5jdGlvbiAob2N0ZXQpIHtcbiAgdmFyIGNvdW50ID0gMDtcbiAgZm9yICh2YXIgbWFzayA9IDB4ODA7IG1hc2sgPiAwICYmIChvY3RldCAmIG1hc2spICE9PSAwOyBtYXNrID4+PSAxKSB7XG4gICAgY291bnQrKztcbiAgfVxuICByZXR1cm4gY291bnQ7XG59O1xuXG52YXIgdXRmOERlY29kZSA9IGZ1bmN0aW9uIChvY3RldHMpIHtcbiAgdmFyIGNvZGVQb2ludCA9IG51bGw7XG5cbiAgc3dpdGNoIChvY3RldHMubGVuZ3RoKSB7XG4gICAgY2FzZSAxOlxuICAgICAgY29kZVBvaW50ID0gb2N0ZXRzWzBdO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyOlxuICAgICAgY29kZVBvaW50ID0gKG9jdGV0c1swXSAmIDB4MUYpIDw8IDYgfCAob2N0ZXRzWzFdICYgMHgzRik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDM6XG4gICAgICBjb2RlUG9pbnQgPSAob2N0ZXRzWzBdICYgMHgwRikgPDwgMTIgfCAob2N0ZXRzWzFdICYgMHgzRikgPDwgNiB8IChvY3RldHNbMl0gJiAweDNGKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNDpcbiAgICAgIGNvZGVQb2ludCA9IChvY3RldHNbMF0gJiAweDA3KSA8PCAxOCB8IChvY3RldHNbMV0gJiAweDNGKSA8PCAxMiB8IChvY3RldHNbMl0gJiAweDNGKSA8PCA2IHwgKG9jdGV0c1szXSAmIDB4M0YpO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gY29kZVBvaW50ID4gMHgxMEZGRkYgPyBudWxsIDogY29kZVBvaW50O1xufTtcblxudmFyIGRlY29kZSA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICBpbnB1dCA9IHJlcGxhY2UoaW5wdXQsIHBsdXMsICcgJyk7XG4gIHZhciBsZW5ndGggPSBpbnB1dC5sZW5ndGg7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgdmFyIGkgPSAwO1xuXG4gIHdoaWxlIChpIDwgbGVuZ3RoKSB7XG4gICAgdmFyIGRlY29kZWRDaGFyID0gY2hhckF0KGlucHV0LCBpKTtcblxuICAgIGlmIChkZWNvZGVkQ2hhciA9PT0gJyUnKSB7XG4gICAgICBpZiAoY2hhckF0KGlucHV0LCBpICsgMSkgPT09ICclJyB8fCBpICsgMyA+IGxlbmd0aCkge1xuICAgICAgICByZXN1bHQgKz0gJyUnO1xuICAgICAgICBpKys7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgb2N0ZXQgPSBwYXJzZUhleE9jdGV0KGlucHV0LCBpICsgMSk7XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgICBpZiAob2N0ZXQgIT09IG9jdGV0KSB7XG4gICAgICAgIHJlc3VsdCArPSBkZWNvZGVkQ2hhcjtcbiAgICAgICAgaSsrO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaSArPSAyO1xuICAgICAgdmFyIGJ5dGVTZXF1ZW5jZUxlbmd0aCA9IGdldExlYWRpbmdPbmVzKG9jdGV0KTtcblxuICAgICAgaWYgKGJ5dGVTZXF1ZW5jZUxlbmd0aCA9PT0gMCkge1xuICAgICAgICBkZWNvZGVkQ2hhciA9IGZyb21DaGFyQ29kZShvY3RldCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYnl0ZVNlcXVlbmNlTGVuZ3RoID09PSAxIHx8IGJ5dGVTZXF1ZW5jZUxlbmd0aCA+IDQpIHtcbiAgICAgICAgICByZXN1bHQgKz0gRkFMTEJBQ0tfUkVQTEFDRVI7XG4gICAgICAgICAgaSsrO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG9jdGV0cyA9IFtvY3RldF07XG4gICAgICAgIHZhciBzZXF1ZW5jZUluZGV4ID0gMTtcblxuICAgICAgICB3aGlsZSAoc2VxdWVuY2VJbmRleCA8IGJ5dGVTZXF1ZW5jZUxlbmd0aCkge1xuICAgICAgICAgIGkrKztcbiAgICAgICAgICBpZiAoaSArIDMgPiBsZW5ndGggfHwgY2hhckF0KGlucHV0LCBpKSAhPT0gJyUnKSBicmVhaztcblxuICAgICAgICAgIHZhciBuZXh0Qnl0ZSA9IHBhcnNlSGV4T2N0ZXQoaW5wdXQsIGkgKyAxKTtcblxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgICAgICAgaWYgKG5leHRCeXRlICE9PSBuZXh0Qnl0ZSkge1xuICAgICAgICAgICAgaSArPSAzO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChuZXh0Qnl0ZSA+IDE5MSB8fCBuZXh0Qnl0ZSA8IDEyOCkgYnJlYWs7XG5cbiAgICAgICAgICBwdXNoKG9jdGV0cywgbmV4dEJ5dGUpO1xuICAgICAgICAgIGkgKz0gMjtcbiAgICAgICAgICBzZXF1ZW5jZUluZGV4Kys7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob2N0ZXRzLmxlbmd0aCAhPT0gYnl0ZVNlcXVlbmNlTGVuZ3RoKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IEZBTExCQUNLX1JFUExBQ0VSO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGNvZGVQb2ludCA9IHV0ZjhEZWNvZGUob2N0ZXRzKTtcbiAgICAgICAgaWYgKGNvZGVQb2ludCA9PT0gbnVsbCkge1xuICAgICAgICAgIHJlc3VsdCArPSBGQUxMQkFDS19SRVBMQUNFUjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWNvZGVkQ2hhciA9IGZyb21Db2RlUG9pbnQoY29kZVBvaW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJlc3VsdCArPSBkZWNvZGVkQ2hhcjtcbiAgICBpKys7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxudmFyIGZpbmQgPSAvWyEnKCl+XXwlMjAvZztcblxudmFyIHJlcGxhY2VtZW50cyA9IHtcbiAgJyEnOiAnJTIxJyxcbiAgXCInXCI6ICclMjcnLFxuICAnKCc6ICclMjgnLFxuICAnKSc6ICclMjknLFxuICAnfic6ICclN0UnLFxuICAnJTIwJzogJysnXG59O1xuXG52YXIgcmVwbGFjZXIgPSBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgcmV0dXJuIHJlcGxhY2VtZW50c1ttYXRjaF07XG59O1xuXG52YXIgc2VyaWFsaXplID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiByZXBsYWNlKGVuY29kZVVSSUNvbXBvbmVudChpdCksIGZpbmQsIHJlcGxhY2VyKTtcbn07XG5cbnZhciBVUkxTZWFyY2hQYXJhbXNJdGVyYXRvciA9IGNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IoZnVuY3Rpb24gSXRlcmF0b3IocGFyYW1zLCBraW5kKSB7XG4gIHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgIHR5cGU6IFVSTF9TRUFSQ0hfUEFSQU1TX0lURVJBVE9SLFxuICAgIHRhcmdldDogZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZShwYXJhbXMpLmVudHJpZXMsXG4gICAgaW5kZXg6IDAsXG4gICAga2luZDoga2luZFxuICB9KTtcbn0sIFVSTF9TRUFSQ0hfUEFSQU1TLCBmdW5jdGlvbiBuZXh0KCkge1xuICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbEl0ZXJhdG9yU3RhdGUodGhpcyk7XG4gIHZhciB0YXJnZXQgPSBzdGF0ZS50YXJnZXQ7XG4gIHZhciBpbmRleCA9IHN0YXRlLmluZGV4Kys7XG4gIGlmICghdGFyZ2V0IHx8IGluZGV4ID49IHRhcmdldC5sZW5ndGgpIHtcbiAgICBzdGF0ZS50YXJnZXQgPSBudWxsO1xuICAgIHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KHVuZGVmaW5lZCwgdHJ1ZSk7XG4gIH1cbiAgdmFyIGVudHJ5ID0gdGFyZ2V0W2luZGV4XTtcbiAgc3dpdGNoIChzdGF0ZS5raW5kKSB7XG4gICAgY2FzZSAna2V5cyc6IHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KGVudHJ5LmtleSwgZmFsc2UpO1xuICAgIGNhc2UgJ3ZhbHVlcyc6IHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KGVudHJ5LnZhbHVlLCBmYWxzZSk7XG4gIH0gcmV0dXJuIGNyZWF0ZUl0ZXJSZXN1bHRPYmplY3QoW2VudHJ5LmtleSwgZW50cnkudmFsdWVdLCBmYWxzZSk7XG59LCB0cnVlKTtcblxudmFyIFVSTFNlYXJjaFBhcmFtc1N0YXRlID0gZnVuY3Rpb24gKGluaXQpIHtcbiAgdGhpcy5lbnRyaWVzID0gW107XG4gIHRoaXMudXJsID0gbnVsbDtcblxuICBpZiAoaW5pdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKGlzT2JqZWN0KGluaXQpKSB0aGlzLnBhcnNlT2JqZWN0KGluaXQpO1xuICAgIGVsc2UgdGhpcy5wYXJzZVF1ZXJ5KHR5cGVvZiBpbml0ID09ICdzdHJpbmcnID8gY2hhckF0KGluaXQsIDApID09PSAnPycgPyBzdHJpbmdTbGljZShpbml0LCAxKSA6IGluaXQgOiAkdG9TdHJpbmcoaW5pdCkpO1xuICB9XG59O1xuXG5VUkxTZWFyY2hQYXJhbXNTdGF0ZS5wcm90b3R5cGUgPSB7XG4gIHR5cGU6IFVSTF9TRUFSQ0hfUEFSQU1TLFxuICBiaW5kVVJMOiBmdW5jdGlvbiAodXJsKSB7XG4gICAgdGhpcy51cmwgPSB1cmw7XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfSxcbiAgcGFyc2VPYmplY3Q6IGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgICB2YXIgZW50cmllcyA9IHRoaXMuZW50cmllcztcbiAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBnZXRJdGVyYXRvck1ldGhvZChvYmplY3QpO1xuICAgIHZhciBpdGVyYXRvciwgbmV4dCwgc3RlcCwgZW50cnlJdGVyYXRvciwgZW50cnlOZXh0LCBmaXJzdCwgc2Vjb25kO1xuXG4gICAgaWYgKGl0ZXJhdG9yTWV0aG9kKSB7XG4gICAgICBpdGVyYXRvciA9IGdldEl0ZXJhdG9yKG9iamVjdCwgaXRlcmF0b3JNZXRob2QpO1xuICAgICAgbmV4dCA9IGl0ZXJhdG9yLm5leHQ7XG4gICAgICB3aGlsZSAoIShzdGVwID0gY2FsbChuZXh0LCBpdGVyYXRvcikpLmRvbmUpIHtcbiAgICAgICAgZW50cnlJdGVyYXRvciA9IGdldEl0ZXJhdG9yKGFuT2JqZWN0KHN0ZXAudmFsdWUpKTtcbiAgICAgICAgZW50cnlOZXh0ID0gZW50cnlJdGVyYXRvci5uZXh0O1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKGZpcnN0ID0gY2FsbChlbnRyeU5leHQsIGVudHJ5SXRlcmF0b3IpKS5kb25lIHx8XG4gICAgICAgICAgKHNlY29uZCA9IGNhbGwoZW50cnlOZXh0LCBlbnRyeUl0ZXJhdG9yKSkuZG9uZSB8fFxuICAgICAgICAgICFjYWxsKGVudHJ5TmV4dCwgZW50cnlJdGVyYXRvcikuZG9uZVxuICAgICAgICApIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHNlcXVlbmNlIHdpdGggbGVuZ3RoIDInKTtcbiAgICAgICAgcHVzaChlbnRyaWVzLCB7IGtleTogJHRvU3RyaW5nKGZpcnN0LnZhbHVlKSwgdmFsdWU6ICR0b1N0cmluZyhzZWNvbmQudmFsdWUpIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSBpZiAoaGFzT3duKG9iamVjdCwga2V5KSkge1xuICAgICAgcHVzaChlbnRyaWVzLCB7IGtleToga2V5LCB2YWx1ZTogJHRvU3RyaW5nKG9iamVjdFtrZXldKSB9KTtcbiAgICB9XG4gIH0sXG4gIHBhcnNlUXVlcnk6IGZ1bmN0aW9uIChxdWVyeSkge1xuICAgIGlmIChxdWVyeSkge1xuICAgICAgdmFyIGVudHJpZXMgPSB0aGlzLmVudHJpZXM7XG4gICAgICB2YXIgYXR0cmlidXRlcyA9IHNwbGl0KHF1ZXJ5LCAnJicpO1xuICAgICAgdmFyIGluZGV4ID0gMDtcbiAgICAgIHZhciBhdHRyaWJ1dGUsIGVudHJ5O1xuICAgICAgd2hpbGUgKGluZGV4IDwgYXR0cmlidXRlcy5sZW5ndGgpIHtcbiAgICAgICAgYXR0cmlidXRlID0gYXR0cmlidXRlc1tpbmRleCsrXTtcbiAgICAgICAgaWYgKGF0dHJpYnV0ZS5sZW5ndGgpIHtcbiAgICAgICAgICBlbnRyeSA9IHNwbGl0KGF0dHJpYnV0ZSwgJz0nKTtcbiAgICAgICAgICBwdXNoKGVudHJpZXMsIHtcbiAgICAgICAgICAgIGtleTogZGVjb2RlKHNoaWZ0KGVudHJ5KSksXG4gICAgICAgICAgICB2YWx1ZTogZGVjb2RlKGpvaW4oZW50cnksICc9JykpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHNlcmlhbGl6ZTogZnVuY3Rpb24gKCkge1xuICAgIHZhciBlbnRyaWVzID0gdGhpcy5lbnRyaWVzO1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBlbnRyeTtcbiAgICB3aGlsZSAoaW5kZXggPCBlbnRyaWVzLmxlbmd0aCkge1xuICAgICAgZW50cnkgPSBlbnRyaWVzW2luZGV4KytdO1xuICAgICAgcHVzaChyZXN1bHQsIHNlcmlhbGl6ZShlbnRyeS5rZXkpICsgJz0nICsgc2VyaWFsaXplKGVudHJ5LnZhbHVlKSk7XG4gICAgfSByZXR1cm4gam9pbihyZXN1bHQsICcmJyk7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZW50cmllcy5sZW5ndGggPSAwO1xuICAgIHRoaXMucGFyc2VRdWVyeSh0aGlzLnVybC5xdWVyeSk7XG4gIH0sXG4gIHVwZGF0ZVVSTDogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLnVybCkgdGhpcy51cmwudXBkYXRlKCk7XG4gIH1cbn07XG5cbi8vIGBVUkxTZWFyY2hQYXJhbXNgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2ludGVyZmFjZS11cmxzZWFyY2hwYXJhbXNcbnZhciBVUkxTZWFyY2hQYXJhbXNDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uIFVSTFNlYXJjaFBhcmFtcygvKiBpbml0ICovKSB7XG4gIGFuSW5zdGFuY2UodGhpcywgVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlKTtcbiAgdmFyIGluaXQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZDtcbiAgdmFyIHN0YXRlID0gc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCBuZXcgVVJMU2VhcmNoUGFyYW1zU3RhdGUoaW5pdCkpO1xuICBpZiAoIURFU0NSSVBUT1JTKSB0aGlzLnNpemUgPSBzdGF0ZS5lbnRyaWVzLmxlbmd0aDtcbn07XG5cbnZhciBVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUgPSBVUkxTZWFyY2hQYXJhbXNDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG5cbmRlZmluZUJ1aWx0SW5zKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSwge1xuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5hcHBlbmRgIG1ldGhvZFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmxzZWFyY2hwYXJhbXMtYXBwZW5kXG4gIGFwcGVuZDogZnVuY3Rpb24gYXBwZW5kKG5hbWUsIHZhbHVlKSB7XG4gICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKTtcbiAgICB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChhcmd1bWVudHMubGVuZ3RoLCAyKTtcbiAgICBwdXNoKHN0YXRlLmVudHJpZXMsIHsga2V5OiAkdG9TdHJpbmcobmFtZSksIHZhbHVlOiAkdG9TdHJpbmcodmFsdWUpIH0pO1xuICAgIGlmICghREVTQ1JJUFRPUlMpIHRoaXMubGVuZ3RoKys7XG4gICAgc3RhdGUudXBkYXRlVVJMKCk7XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmRlbGV0ZWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybHNlYXJjaHBhcmFtcy1kZWxldGVcbiAgJ2RlbGV0ZSc6IGZ1bmN0aW9uIChuYW1lIC8qICwgdmFsdWUgKi8pIHtcbiAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChhcmd1bWVudHMubGVuZ3RoLCAxKTtcbiAgICB2YXIgZW50cmllcyA9IHN0YXRlLmVudHJpZXM7XG4gICAgdmFyIGtleSA9ICR0b1N0cmluZyhuYW1lKTtcbiAgICB2YXIgJHZhbHVlID0gbGVuZ3RoIDwgMiA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1sxXTtcbiAgICB2YXIgdmFsdWUgPSAkdmFsdWUgPT09IHVuZGVmaW5lZCA/ICR2YWx1ZSA6ICR0b1N0cmluZygkdmFsdWUpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgd2hpbGUgKGluZGV4IDwgZW50cmllcy5sZW5ndGgpIHtcbiAgICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgICAgaWYgKGVudHJ5LmtleSA9PT0ga2V5ICYmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGVudHJ5LnZhbHVlID09PSB2YWx1ZSkpIHtcbiAgICAgICAgc3BsaWNlKGVudHJpZXMsIGluZGV4LCAxKTtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIGJyZWFrO1xuICAgICAgfSBlbHNlIGluZGV4Kys7XG4gICAgfVxuICAgIGlmICghREVTQ1JJUFRPUlMpIHRoaXMuc2l6ZSA9IGVudHJpZXMubGVuZ3RoO1xuICAgIHN0YXRlLnVwZGF0ZVVSTCgpO1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5nZXRgIG1ldGhvZFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmxzZWFyY2hwYXJhbXMtZ2V0XG4gIGdldDogZnVuY3Rpb24gZ2V0KG5hbWUpIHtcbiAgICB2YXIgZW50cmllcyA9IGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcykuZW50cmllcztcbiAgICB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChhcmd1bWVudHMubGVuZ3RoLCAxKTtcbiAgICB2YXIga2V5ID0gJHRvU3RyaW5nKG5hbWUpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgZm9yICg7IGluZGV4IDwgZW50cmllcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGlmIChlbnRyaWVzW2luZGV4XS5rZXkgPT09IGtleSkgcmV0dXJuIGVudHJpZXNbaW5kZXhdLnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuZ2V0QWxsYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsc2VhcmNocGFyYW1zLWdldGFsbFxuICBnZXRBbGw6IGZ1bmN0aW9uIGdldEFsbChuYW1lKSB7XG4gICAgdmFyIGVudHJpZXMgPSBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpLmVudHJpZXM7XG4gICAgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGgoYXJndW1lbnRzLmxlbmd0aCwgMSk7XG4gICAgdmFyIGtleSA9ICR0b1N0cmluZyhuYW1lKTtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICBmb3IgKDsgaW5kZXggPCBlbnRyaWVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgaWYgKGVudHJpZXNbaW5kZXhdLmtleSA9PT0ga2V5KSBwdXNoKHJlc3VsdCwgZW50cmllc1tpbmRleF0udmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5oYXNgIG1ldGhvZFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmxzZWFyY2hwYXJhbXMtaGFzXG4gIGhhczogZnVuY3Rpb24gaGFzKG5hbWUgLyogLCB2YWx1ZSAqLykge1xuICAgIHZhciBlbnRyaWVzID0gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKS5lbnRyaWVzO1xuICAgIHZhciBsZW5ndGggPSB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChhcmd1bWVudHMubGVuZ3RoLCAxKTtcbiAgICB2YXIga2V5ID0gJHRvU3RyaW5nKG5hbWUpO1xuICAgIHZhciAkdmFsdWUgPSBsZW5ndGggPCAyID8gdW5kZWZpbmVkIDogYXJndW1lbnRzWzFdO1xuICAgIHZhciB2YWx1ZSA9ICR2YWx1ZSA9PT0gdW5kZWZpbmVkID8gJHZhbHVlIDogJHRvU3RyaW5nKCR2YWx1ZSk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB3aGlsZSAoaW5kZXggPCBlbnRyaWVzLmxlbmd0aCkge1xuICAgICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleCsrXTtcbiAgICAgIGlmIChlbnRyeS5rZXkgPT09IGtleSAmJiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCBlbnRyeS52YWx1ZSA9PT0gdmFsdWUpKSByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5zZXRgIG1ldGhvZFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmxzZWFyY2hwYXJhbXMtc2V0XG4gIHNldDogZnVuY3Rpb24gc2V0KG5hbWUsIHZhbHVlKSB7XG4gICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKTtcbiAgICB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChhcmd1bWVudHMubGVuZ3RoLCAxKTtcbiAgICB2YXIgZW50cmllcyA9IHN0YXRlLmVudHJpZXM7XG4gICAgdmFyIGZvdW5kID0gZmFsc2U7XG4gICAgdmFyIGtleSA9ICR0b1N0cmluZyhuYW1lKTtcbiAgICB2YXIgdmFsID0gJHRvU3RyaW5nKHZhbHVlKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBlbnRyeTtcbiAgICBmb3IgKDsgaW5kZXggPCBlbnRyaWVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICAgIGlmIChlbnRyeS5rZXkgPT09IGtleSkge1xuICAgICAgICBpZiAoZm91bmQpIHNwbGljZShlbnRyaWVzLCBpbmRleC0tLCAxKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgIGVudHJ5LnZhbHVlID0gdmFsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghZm91bmQpIHB1c2goZW50cmllcywgeyBrZXk6IGtleSwgdmFsdWU6IHZhbCB9KTtcbiAgICBpZiAoIURFU0NSSVBUT1JTKSB0aGlzLnNpemUgPSBlbnRyaWVzLmxlbmd0aDtcbiAgICBzdGF0ZS51cGRhdGVVUkwoKTtcbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuc29ydGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybHNlYXJjaHBhcmFtcy1zb3J0XG4gIHNvcnQ6IGZ1bmN0aW9uIHNvcnQoKSB7XG4gICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKTtcbiAgICBhcnJheVNvcnQoc3RhdGUuZW50cmllcywgZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBhLmtleSA+IGIua2V5ID8gMSA6IC0xO1xuICAgIH0pO1xuICAgIHN0YXRlLnVwZGF0ZVVSTCgpO1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5mb3JFYWNoYCBtZXRob2RcbiAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFjayAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICB2YXIgZW50cmllcyA9IGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcykuZW50cmllcztcbiAgICB2YXIgYm91bmRGdW5jdGlvbiA9IGJpbmQoY2FsbGJhY2ssIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBlbnRyeTtcbiAgICB3aGlsZSAoaW5kZXggPCBlbnRyaWVzLmxlbmd0aCkge1xuICAgICAgZW50cnkgPSBlbnRyaWVzW2luZGV4KytdO1xuICAgICAgYm91bmRGdW5jdGlvbihlbnRyeS52YWx1ZSwgZW50cnkua2V5LCB0aGlzKTtcbiAgICB9XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmtleXNgIG1ldGhvZFxuICBrZXlzOiBmdW5jdGlvbiBrZXlzKCkge1xuICAgIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zSXRlcmF0b3IodGhpcywgJ2tleXMnKTtcbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUudmFsdWVzYCBtZXRob2RcbiAgdmFsdWVzOiBmdW5jdGlvbiB2YWx1ZXMoKSB7XG4gICAgcmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXNJdGVyYXRvcih0aGlzLCAndmFsdWVzJyk7XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmVudHJpZXNgIG1ldGhvZFxuICBlbnRyaWVzOiBmdW5jdGlvbiBlbnRyaWVzKCkge1xuICAgIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zSXRlcmF0b3IodGhpcywgJ2VudHJpZXMnKTtcbiAgfVxufSwgeyBlbnVtZXJhYmxlOiB0cnVlIH0pO1xuXG4vLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZVtAQGl0ZXJhdG9yXWAgbWV0aG9kXG5kZWZpbmVCdWlsdEluKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSwgSVRFUkFUT1IsIFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZS5lbnRyaWVzLCB7IG5hbWU6ICdlbnRyaWVzJyB9KTtcblxuLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUudG9TdHJpbmdgIG1ldGhvZFxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyN1cmxzZWFyY2hwYXJhbXMtc3RyaW5naWZpY2F0aW9uLWJlaGF2aW9yXG5kZWZpbmVCdWlsdEluKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpLnNlcmlhbGl6ZSgpO1xufSwgeyBlbnVtZXJhYmxlOiB0cnVlIH0pO1xuXG4vLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5zaXplYCBnZXR0ZXJcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvdXJsL3B1bGwvNzM0XG5pZiAoREVTQ1JJUFRPUlMpIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUsICdzaXplJywge1xuICBnZXQ6IGZ1bmN0aW9uIHNpemUoKSB7XG4gICAgcmV0dXJuIGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcykuZW50cmllcy5sZW5ndGg7XG4gIH0sXG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZVxufSk7XG5cbnNldFRvU3RyaW5nVGFnKFVSTFNlYXJjaFBhcmFtc0NvbnN0cnVjdG9yLCBVUkxfU0VBUkNIX1BBUkFNUyk7XG5cbiQoeyBnbG9iYWw6IHRydWUsIGNvbnN0cnVjdG9yOiB0cnVlLCBmb3JjZWQ6ICFVU0VfTkFUSVZFX1VSTCB9LCB7XG4gIFVSTFNlYXJjaFBhcmFtczogVVJMU2VhcmNoUGFyYW1zQ29uc3RydWN0b3Jcbn0pO1xuXG4vLyBXcmFwIGBmZXRjaGAgYW5kIGBSZXF1ZXN0YCBmb3IgY29ycmVjdCB3b3JrIHdpdGggcG9seWZpbGxlZCBgVVJMU2VhcmNoUGFyYW1zYFxuaWYgKCFVU0VfTkFUSVZFX1VSTCAmJiBpc0NhbGxhYmxlKEhlYWRlcnMpKSB7XG4gIHZhciBoZWFkZXJzSGFzID0gdW5jdXJyeVRoaXMoSGVhZGVyc1Byb3RvdHlwZS5oYXMpO1xuICB2YXIgaGVhZGVyc1NldCA9IHVuY3VycnlUaGlzKEhlYWRlcnNQcm90b3R5cGUuc2V0KTtcblxuICB2YXIgd3JhcFJlcXVlc3RPcHRpb25zID0gZnVuY3Rpb24gKGluaXQpIHtcbiAgICBpZiAoaXNPYmplY3QoaW5pdCkpIHtcbiAgICAgIHZhciBib2R5ID0gaW5pdC5ib2R5O1xuICAgICAgdmFyIGhlYWRlcnM7XG4gICAgICBpZiAoY2xhc3NvZihib2R5KSA9PT0gVVJMX1NFQVJDSF9QQVJBTVMpIHtcbiAgICAgICAgaGVhZGVycyA9IGluaXQuaGVhZGVycyA/IG5ldyBIZWFkZXJzKGluaXQuaGVhZGVycykgOiBuZXcgSGVhZGVycygpO1xuICAgICAgICBpZiAoIWhlYWRlcnNIYXMoaGVhZGVycywgJ2NvbnRlbnQtdHlwZScpKSB7XG4gICAgICAgICAgaGVhZGVyc1NldChoZWFkZXJzLCAnY29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04Jyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNyZWF0ZShpbml0LCB7XG4gICAgICAgICAgYm9keTogY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDAsICR0b1N0cmluZyhib2R5KSksXG4gICAgICAgICAgaGVhZGVyczogY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDAsIGhlYWRlcnMpXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gcmV0dXJuIGluaXQ7XG4gIH07XG5cbiAgaWYgKGlzQ2FsbGFibGUobmF0aXZlRmV0Y2gpKSB7XG4gICAgJCh7IGdsb2JhbDogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgZG9udENhbGxHZXRTZXQ6IHRydWUsIGZvcmNlZDogdHJ1ZSB9LCB7XG4gICAgICBmZXRjaDogZnVuY3Rpb24gZmV0Y2goaW5wdXQgLyogLCBpbml0ICovKSB7XG4gICAgICAgIHJldHVybiBuYXRpdmVGZXRjaChpbnB1dCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyB3cmFwUmVxdWVzdE9wdGlvbnMoYXJndW1lbnRzWzFdKSA6IHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGlmIChpc0NhbGxhYmxlKE5hdGl2ZVJlcXVlc3QpKSB7XG4gICAgdmFyIFJlcXVlc3RDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uIFJlcXVlc3QoaW5wdXQgLyogLCBpbml0ICovKSB7XG4gICAgICBhbkluc3RhbmNlKHRoaXMsIFJlcXVlc3RQcm90b3R5cGUpO1xuICAgICAgcmV0dXJuIG5ldyBOYXRpdmVSZXF1ZXN0KGlucHV0LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IHdyYXBSZXF1ZXN0T3B0aW9ucyhhcmd1bWVudHNbMV0pIDoge30pO1xuICAgIH07XG5cbiAgICBSZXF1ZXN0UHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUmVxdWVzdENvbnN0cnVjdG9yO1xuICAgIFJlcXVlc3RDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBSZXF1ZXN0UHJvdG90eXBlO1xuXG4gICAgJCh7IGdsb2JhbDogdHJ1ZSwgY29uc3RydWN0b3I6IHRydWUsIGRvbnRDYWxsR2V0U2V0OiB0cnVlLCBmb3JjZWQ6IHRydWUgfSwge1xuICAgICAgUmVxdWVzdDogUmVxdWVzdENvbnN0cnVjdG9yXG4gICAgfSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIFVSTFNlYXJjaFBhcmFtczogVVJMU2VhcmNoUGFyYW1zQ29uc3RydWN0b3IsXG4gIGdldFN0YXRlOiBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdmFsaWRhdGUtYXJndW1lbnRzLWxlbmd0aCcpO1xuXG52YXIgJFVSTFNlYXJjaFBhcmFtcyA9IFVSTFNlYXJjaFBhcmFtcztcbnZhciBVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUgPSAkVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZTtcbnZhciBhcHBlbmQgPSB1bmN1cnJ5VGhpcyhVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUuYXBwZW5kKTtcbnZhciAkZGVsZXRlID0gdW5jdXJyeVRoaXMoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlWydkZWxldGUnXSk7XG52YXIgZm9yRWFjaCA9IHVuY3VycnlUaGlzKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZS5mb3JFYWNoKTtcbnZhciBwdXNoID0gdW5jdXJyeVRoaXMoW10ucHVzaCk7XG52YXIgcGFyYW1zID0gbmV3ICRVUkxTZWFyY2hQYXJhbXMoJ2E9MSZhPTImYj0zJyk7XG5cbnBhcmFtc1snZGVsZXRlJ10oJ2EnLCAxKTtcbi8vIGB1bmRlZmluZWRgIGNhc2UgaXMgYSBDaHJvbWl1bSAxMTcgYnVnXG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0xNDIyMlxucGFyYW1zWydkZWxldGUnXSgnYicsIHVuZGVmaW5lZCk7XG5cbmlmIChwYXJhbXMgKyAnJyAhPT0gJ2E9MicpIHtcbiAgZGVmaW5lQnVpbHRJbihVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUsICdkZWxldGUnLCBmdW5jdGlvbiAobmFtZSAvKiAsIHZhbHVlICovKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyICR2YWx1ZSA9IGxlbmd0aCA8IDIgPyB1bmRlZmluZWQgOiBhcmd1bWVudHNbMV07XG4gICAgaWYgKGxlbmd0aCAmJiAkdmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuICRkZWxldGUodGhpcywgbmFtZSk7XG4gICAgdmFyIGVudHJpZXMgPSBbXTtcbiAgICBmb3JFYWNoKHRoaXMsIGZ1bmN0aW9uICh2LCBrKSB7IC8vIGFsc28gdmFsaWRhdGVzIGB0aGlzYFxuICAgICAgcHVzaChlbnRyaWVzLCB7IGtleTogaywgdmFsdWU6IHYgfSk7XG4gICAgfSk7XG4gICAgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGgobGVuZ3RoLCAxKTtcbiAgICB2YXIga2V5ID0gdG9TdHJpbmcobmFtZSk7XG4gICAgdmFyIHZhbHVlID0gdG9TdHJpbmcoJHZhbHVlKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBkaW5kZXggPSAwO1xuICAgIHZhciBmb3VuZCA9IGZhbHNlO1xuICAgIHZhciBlbnRyaWVzTGVuZ3RoID0gZW50cmllcy5sZW5ndGg7XG4gICAgdmFyIGVudHJ5O1xuICAgIHdoaWxlIChpbmRleCA8IGVudHJpZXNMZW5ndGgpIHtcbiAgICAgIGVudHJ5ID0gZW50cmllc1tpbmRleCsrXTtcbiAgICAgIGlmIChmb3VuZCB8fCBlbnRyeS5rZXkgPT09IGtleSkge1xuICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICRkZWxldGUodGhpcywgZW50cnkua2V5KTtcbiAgICAgIH0gZWxzZSBkaW5kZXgrKztcbiAgICB9XG4gICAgd2hpbGUgKGRpbmRleCA8IGVudHJpZXNMZW5ndGgpIHtcbiAgICAgIGVudHJ5ID0gZW50cmllc1tkaW5kZXgrK107XG4gICAgICBpZiAoIShlbnRyeS5rZXkgPT09IGtleSAmJiBlbnRyeS52YWx1ZSA9PT0gdmFsdWUpKSBhcHBlbmQodGhpcywgZW50cnkua2V5LCBlbnRyeS52YWx1ZSk7XG4gICAgfVxuICB9LCB7IGVudW1lcmFibGU6IHRydWUsIHVuc2FmZTogdHJ1ZSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3ZhbGlkYXRlLWFyZ3VtZW50cy1sZW5ndGgnKTtcblxudmFyICRVUkxTZWFyY2hQYXJhbXMgPSBVUkxTZWFyY2hQYXJhbXM7XG52YXIgVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlID0gJFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGU7XG52YXIgZ2V0QWxsID0gdW5jdXJyeVRoaXMoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLmdldEFsbCk7XG52YXIgJGhhcyA9IHVuY3VycnlUaGlzKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZS5oYXMpO1xudmFyIHBhcmFtcyA9IG5ldyAkVVJMU2VhcmNoUGFyYW1zKCdhPTEnKTtcblxuLy8gYHVuZGVmaW5lZGAgY2FzZSBpcyBhIENocm9taXVtIDExNyBidWdcbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTE0MjIyXG5pZiAocGFyYW1zLmhhcygnYScsIDIpIHx8ICFwYXJhbXMuaGFzKCdhJywgdW5kZWZpbmVkKSkge1xuICBkZWZpbmVCdWlsdEluKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSwgJ2hhcycsIGZ1bmN0aW9uIGhhcyhuYW1lIC8qICwgdmFsdWUgKi8pIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgJHZhbHVlID0gbGVuZ3RoIDwgMiA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1sxXTtcbiAgICBpZiAobGVuZ3RoICYmICR2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJGhhcyh0aGlzLCBuYW1lKTtcbiAgICB2YXIgdmFsdWVzID0gZ2V0QWxsKHRoaXMsIG5hbWUpOyAvLyBhbHNvIHZhbGlkYXRlcyBgdGhpc2BcbiAgICB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChsZW5ndGgsIDEpO1xuICAgIHZhciB2YWx1ZSA9IHRvU3RyaW5nKCR2YWx1ZSk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB3aGlsZSAoaW5kZXggPCB2YWx1ZXMubGVuZ3RoKSB7XG4gICAgICBpZiAodmFsdWVzW2luZGV4KytdID09PSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgfSByZXR1cm4gZmFsc2U7XG4gIH0sIHsgZW51bWVyYWJsZTogdHJ1ZSwgdW5zYWZlOiB0cnVlIH0pO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIHRoaXMgbW9kdWxlIGZyb20gYGNvcmUtanNANGAgc2luY2UgaXQncyByZXBsYWNlZCB0byBtb2R1bGUgYmVsb3dcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmNvbnN0cnVjdG9yJyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBkZWZpbmVCdWlsdEluQWNjZXNzb3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yJyk7XG5cbnZhciBVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUgPSBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlO1xudmFyIGZvckVhY2ggPSB1bmN1cnJ5VGhpcyhVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUuZm9yRWFjaCk7XG5cbi8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLnNpemVgIGdldHRlclxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy91cmwvcHVsbC83MzRcbmlmIChERVNDUklQVE9SUyAmJiAhKCdzaXplJyBpbiBVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUpKSB7XG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUsICdzaXplJywge1xuICAgIGdldDogZnVuY3Rpb24gc2l6ZSgpIHtcbiAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICBmb3JFYWNoKHRoaXMsIGZ1bmN0aW9uICgpIHsgY291bnQrKzsgfSk7XG4gICAgICByZXR1cm4gY291bnQ7XG4gICAgfSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogdHJ1ZVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgVVNFX05BVElWRV9VUkwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXJsLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpO1xuXG52YXIgVVJMID0gZ2V0QnVpbHRJbignVVJMJyk7XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9pc3N1ZXMvNDc1MDVcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9kZW5vbGFuZC9kZW5vL2lzc3Vlcy8xODg5M1xudmFyIFRIUk9XU19XSVRIT1VUX0FSR1VNRU5UUyA9IFVTRV9OQVRJVkVfVVJMICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgVVJMLmNhblBhcnNlKCk7XG59KTtcblxuLy8gQnVuIH4gMS4wLjMwIGJ1Z1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL292ZW4tc2gvYnVuL2lzc3Vlcy85MjUwXG52YXIgV1JPTkdfQVJJVFkgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBVUkwuY2FuUGFyc2UubGVuZ3RoICE9PSAxO1xufSk7XG5cbi8vIGBVUkwuY2FuUGFyc2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLWNhbnBhcnNlXG4kKHsgdGFyZ2V0OiAnVVJMJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiAhVEhST1dTX1dJVEhPVVRfQVJHVU1FTlRTIHx8IFdST05HX0FSSVRZIH0sIHtcbiAgY2FuUGFyc2U6IGZ1bmN0aW9uIGNhblBhcnNlKHVybCkge1xuICAgIHZhciBsZW5ndGggPSB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChhcmd1bWVudHMubGVuZ3RoLCAxKTtcbiAgICB2YXIgdXJsU3RyaW5nID0gdG9TdHJpbmcodXJsKTtcbiAgICB2YXIgYmFzZSA9IGxlbmd0aCA8IDIgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiB0b1N0cmluZyhhcmd1bWVudHNbMV0pO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gISFuZXcgVVJMKHVybFN0cmluZywgYmFzZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogaW4gY29yZS1qc0A0LCBtb3ZlIC9tb2R1bGVzLyBkZXBlbmRlbmNpZXMgdG8gcHVibGljIGVudHJpZXMgZm9yIGJldHRlciBvcHRpbWl6YXRpb24gYnkgdG9vbHMgbGlrZSBgcHJlc2V0LWVudmBcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yJyk7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIFVTRV9OQVRJVkVfVVJMID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VybC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKTtcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xudmFyIGRlZmluZUJ1aWx0SW5BY2Nlc3NvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4tYWNjZXNzb3InKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLWluc3RhbmNlJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWFzc2lnbicpO1xudmFyIGFycmF5RnJvbSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1mcm9tJyk7XG52YXIgYXJyYXlTbGljZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zbGljZScpO1xudmFyIGNvZGVBdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctbXVsdGlieXRlJykuY29kZUF0O1xudmFyIHRvQVNDSUkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLXB1bnljb2RlLXRvLWFzY2lpJyk7XG52YXIgJHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdmFsaWRhdGUtYXJndW1lbnRzLWxlbmd0aCcpO1xudmFyIFVSTFNlYXJjaFBhcmFtc01vZHVsZSA9IHJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmNvbnN0cnVjdG9yJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xuXG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIGdldEludGVybmFsVVJMU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcignVVJMJyk7XG52YXIgVVJMU2VhcmNoUGFyYW1zID0gVVJMU2VhcmNoUGFyYW1zTW9kdWxlLlVSTFNlYXJjaFBhcmFtcztcbnZhciBnZXRJbnRlcm5hbFNlYXJjaFBhcmFtc1N0YXRlID0gVVJMU2VhcmNoUGFyYW1zTW9kdWxlLmdldFN0YXRlO1xuXG52YXIgTmF0aXZlVVJMID0gZ2xvYmFsVGhpcy5VUkw7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsVGhpcy5UeXBlRXJyb3I7XG52YXIgcGFyc2VJbnQgPSBnbG9iYWxUaGlzLnBhcnNlSW50O1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbnZhciBwb3cgPSBNYXRoLnBvdztcbnZhciBjaGFyQXQgPSB1bmN1cnJ5VGhpcygnJy5jaGFyQXQpO1xudmFyIGV4ZWMgPSB1bmN1cnJ5VGhpcygvLi8uZXhlYyk7XG52YXIgam9pbiA9IHVuY3VycnlUaGlzKFtdLmpvaW4pO1xudmFyIG51bWJlclRvU3RyaW5nID0gdW5jdXJyeVRoaXMoMS4wLnRvU3RyaW5nKTtcbnZhciBwb3AgPSB1bmN1cnJ5VGhpcyhbXS5wb3ApO1xudmFyIHB1c2ggPSB1bmN1cnJ5VGhpcyhbXS5wdXNoKTtcbnZhciByZXBsYWNlID0gdW5jdXJyeVRoaXMoJycucmVwbGFjZSk7XG52YXIgc2hpZnQgPSB1bmN1cnJ5VGhpcyhbXS5zaGlmdCk7XG52YXIgc3BsaXQgPSB1bmN1cnJ5VGhpcygnJy5zcGxpdCk7XG52YXIgc3RyaW5nU2xpY2UgPSB1bmN1cnJ5VGhpcygnJy5zbGljZSk7XG52YXIgdG9Mb3dlckNhc2UgPSB1bmN1cnJ5VGhpcygnJy50b0xvd2VyQ2FzZSk7XG52YXIgdW5zaGlmdCA9IHVuY3VycnlUaGlzKFtdLnVuc2hpZnQpO1xuXG52YXIgSU5WQUxJRF9BVVRIT1JJVFkgPSAnSW52YWxpZCBhdXRob3JpdHknO1xudmFyIElOVkFMSURfU0NIRU1FID0gJ0ludmFsaWQgc2NoZW1lJztcbnZhciBJTlZBTElEX0hPU1QgPSAnSW52YWxpZCBob3N0JztcbnZhciBJTlZBTElEX1BPUlQgPSAnSW52YWxpZCBwb3J0JztcblxudmFyIEFMUEhBID0gL1thLXpdL2k7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVnZXhwL25vLW9ic2N1cmUtcmFuZ2UgLS0gc2FmZVxudmFyIEFMUEhBTlVNRVJJQyA9IC9bXFxkKy0uYS16XS9pO1xudmFyIERJR0lUID0gL1xcZC87XG52YXIgSEVYX1NUQVJUID0gL14weC9pO1xudmFyIE9DVCA9IC9eWzAtN10rJC87XG52YXIgREVDID0gL15cXGQrJC87XG52YXIgSEVYID0gL15bXFxkYS1mXSskL2k7XG4vKiBlc2xpbnQtZGlzYWJsZSByZWdleHAvbm8tY29udHJvbC1jaGFyYWN0ZXIgLS0gc2FmZSAqL1xudmFyIEZPUkJJRERFTl9IT1NUX0NPREVfUE9JTlQgPSAvW1xcMFxcdFxcblxcciAjJS86PD4/QFtcXFxcXFxdXnxdLztcbnZhciBGT1JCSURERU5fSE9TVF9DT0RFX1BPSU5UX0VYQ0xVRElOR19QRVJDRU5UID0gL1tcXDBcXHRcXG5cXHIgIy86PD4/QFtcXFxcXFxdXnxdLztcbnZhciBMRUFESU5HX0MwX0NPTlRST0xfT1JfU1BBQ0UgPSAvXltcXHUwMDAwLVxcdTAwMjBdKy87XG52YXIgVFJBSUxJTkdfQzBfQ09OVFJPTF9PUl9TUEFDRSA9IC8oXnxbXlxcdTAwMDAtXFx1MDAyMF0pW1xcdTAwMDAtXFx1MDAyMF0rJC87XG52YXIgVEFCX0FORF9ORVdfTElORSA9IC9bXFx0XFxuXFxyXS9nO1xuLyogZXNsaW50LWVuYWJsZSByZWdleHAvbm8tY29udHJvbC1jaGFyYWN0ZXIgLS0gc2FmZSAqL1xudmFyIEVPRjtcblxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNpcHY0LW51bWJlci1wYXJzZXJcbnZhciBwYXJzZUlQdjQgPSBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgdmFyIHBhcnRzID0gc3BsaXQoaW5wdXQsICcuJyk7XG4gIHZhciBwYXJ0c0xlbmd0aCwgbnVtYmVycywgaW5kZXgsIHBhcnQsIHJhZGl4LCBudW1iZXIsIGlwdjQ7XG4gIGlmIChwYXJ0cy5sZW5ndGggJiYgcGFydHNbcGFydHMubGVuZ3RoIC0gMV0gPT09ICcnKSB7XG4gICAgcGFydHMubGVuZ3RoLS07XG4gIH1cbiAgcGFydHNMZW5ndGggPSBwYXJ0cy5sZW5ndGg7XG4gIGlmIChwYXJ0c0xlbmd0aCA+IDQpIHJldHVybiBpbnB1dDtcbiAgbnVtYmVycyA9IFtdO1xuICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBwYXJ0c0xlbmd0aDsgaW5kZXgrKykge1xuICAgIHBhcnQgPSBwYXJ0c1tpbmRleF07XG4gICAgaWYgKHBhcnQgPT09ICcnKSByZXR1cm4gaW5wdXQ7XG4gICAgcmFkaXggPSAxMDtcbiAgICBpZiAocGFydC5sZW5ndGggPiAxICYmIGNoYXJBdChwYXJ0LCAwKSA9PT0gJzAnKSB7XG4gICAgICByYWRpeCA9IGV4ZWMoSEVYX1NUQVJULCBwYXJ0KSA/IDE2IDogODtcbiAgICAgIHBhcnQgPSBzdHJpbmdTbGljZShwYXJ0LCByYWRpeCA9PT0gOCA/IDEgOiAyKTtcbiAgICB9XG4gICAgaWYgKHBhcnQgPT09ICcnKSB7XG4gICAgICBudW1iZXIgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWV4ZWMocmFkaXggPT09IDEwID8gREVDIDogcmFkaXggPT09IDggPyBPQ1QgOiBIRVgsIHBhcnQpKSByZXR1cm4gaW5wdXQ7XG4gICAgICBudW1iZXIgPSBwYXJzZUludChwYXJ0LCByYWRpeCk7XG4gICAgfVxuICAgIHB1c2gobnVtYmVycywgbnVtYmVyKTtcbiAgfVxuICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBwYXJ0c0xlbmd0aDsgaW5kZXgrKykge1xuICAgIG51bWJlciA9IG51bWJlcnNbaW5kZXhdO1xuICAgIGlmIChpbmRleCA9PT0gcGFydHNMZW5ndGggLSAxKSB7XG4gICAgICBpZiAobnVtYmVyID49IHBvdygyNTYsIDUgLSBwYXJ0c0xlbmd0aCkpIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAobnVtYmVyID4gMjU1KSByZXR1cm4gbnVsbDtcbiAgfVxuICBpcHY0ID0gcG9wKG51bWJlcnMpO1xuICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBudW1iZXJzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgIGlwdjQgKz0gbnVtYmVyc1tpbmRleF0gKiBwb3coMjU2LCAzIC0gaW5kZXgpO1xuICB9XG4gIHJldHVybiBpcHY0O1xufTtcblxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWlwdjYtcGFyc2VyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LXN0YXRlbWVudHMgLS0gVE9ET1xudmFyIHBhcnNlSVB2NiA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICB2YXIgYWRkcmVzcyA9IFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwXTtcbiAgdmFyIHBpZWNlSW5kZXggPSAwO1xuICB2YXIgY29tcHJlc3MgPSBudWxsO1xuICB2YXIgcG9pbnRlciA9IDA7XG4gIHZhciB2YWx1ZSwgbGVuZ3RoLCBudW1iZXJzU2VlbiwgaXB2NFBpZWNlLCBudW1iZXIsIHN3YXBzLCBzd2FwO1xuXG4gIHZhciBjaHIgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGNoYXJBdChpbnB1dCwgcG9pbnRlcik7XG4gIH07XG5cbiAgaWYgKGNocigpID09PSAnOicpIHtcbiAgICBpZiAoY2hhckF0KGlucHV0LCAxKSAhPT0gJzonKSByZXR1cm47XG4gICAgcG9pbnRlciArPSAyO1xuICAgIHBpZWNlSW5kZXgrKztcbiAgICBjb21wcmVzcyA9IHBpZWNlSW5kZXg7XG4gIH1cbiAgd2hpbGUgKGNocigpKSB7XG4gICAgaWYgKHBpZWNlSW5kZXggPT09IDgpIHJldHVybjtcbiAgICBpZiAoY2hyKCkgPT09ICc6Jykge1xuICAgICAgaWYgKGNvbXByZXNzICE9PSBudWxsKSByZXR1cm47XG4gICAgICBwb2ludGVyKys7XG4gICAgICBwaWVjZUluZGV4Kys7XG4gICAgICBjb21wcmVzcyA9IHBpZWNlSW5kZXg7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdmFsdWUgPSBsZW5ndGggPSAwO1xuICAgIHdoaWxlIChsZW5ndGggPCA0ICYmIGV4ZWMoSEVYLCBjaHIoKSkpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUgKiAxNiArIHBhcnNlSW50KGNocigpLCAxNik7XG4gICAgICBwb2ludGVyKys7XG4gICAgICBsZW5ndGgrKztcbiAgICB9XG4gICAgaWYgKGNocigpID09PSAnLicpIHtcbiAgICAgIGlmIChsZW5ndGggPT09IDApIHJldHVybjtcbiAgICAgIHBvaW50ZXIgLT0gbGVuZ3RoO1xuICAgICAgaWYgKHBpZWNlSW5kZXggPiA2KSByZXR1cm47XG4gICAgICBudW1iZXJzU2VlbiA9IDA7XG4gICAgICB3aGlsZSAoY2hyKCkpIHtcbiAgICAgICAgaXB2NFBpZWNlID0gbnVsbDtcbiAgICAgICAgaWYgKG51bWJlcnNTZWVuID4gMCkge1xuICAgICAgICAgIGlmIChjaHIoKSA9PT0gJy4nICYmIG51bWJlcnNTZWVuIDwgNCkgcG9pbnRlcisrO1xuICAgICAgICAgIGVsc2UgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZXhlYyhESUdJVCwgY2hyKCkpKSByZXR1cm47XG4gICAgICAgIHdoaWxlIChleGVjKERJR0lULCBjaHIoKSkpIHtcbiAgICAgICAgICBudW1iZXIgPSBwYXJzZUludChjaHIoKSwgMTApO1xuICAgICAgICAgIGlmIChpcHY0UGllY2UgPT09IG51bGwpIGlwdjRQaWVjZSA9IG51bWJlcjtcbiAgICAgICAgICBlbHNlIGlmIChpcHY0UGllY2UgPT09IDApIHJldHVybjtcbiAgICAgICAgICBlbHNlIGlwdjRQaWVjZSA9IGlwdjRQaWVjZSAqIDEwICsgbnVtYmVyO1xuICAgICAgICAgIGlmIChpcHY0UGllY2UgPiAyNTUpIHJldHVybjtcbiAgICAgICAgICBwb2ludGVyKys7XG4gICAgICAgIH1cbiAgICAgICAgYWRkcmVzc1twaWVjZUluZGV4XSA9IGFkZHJlc3NbcGllY2VJbmRleF0gKiAyNTYgKyBpcHY0UGllY2U7XG4gICAgICAgIG51bWJlcnNTZWVuKys7XG4gICAgICAgIGlmIChudW1iZXJzU2VlbiA9PT0gMiB8fCBudW1iZXJzU2VlbiA9PT0gNCkgcGllY2VJbmRleCsrO1xuICAgICAgfVxuICAgICAgaWYgKG51bWJlcnNTZWVuICE9PSA0KSByZXR1cm47XG4gICAgICBicmVhaztcbiAgICB9IGVsc2UgaWYgKGNocigpID09PSAnOicpIHtcbiAgICAgIHBvaW50ZXIrKztcbiAgICAgIGlmICghY2hyKCkpIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKGNocigpKSByZXR1cm47XG4gICAgYWRkcmVzc1twaWVjZUluZGV4KytdID0gdmFsdWU7XG4gIH1cbiAgaWYgKGNvbXByZXNzICE9PSBudWxsKSB7XG4gICAgc3dhcHMgPSBwaWVjZUluZGV4IC0gY29tcHJlc3M7XG4gICAgcGllY2VJbmRleCA9IDc7XG4gICAgd2hpbGUgKHBpZWNlSW5kZXggIT09IDAgJiYgc3dhcHMgPiAwKSB7XG4gICAgICBzd2FwID0gYWRkcmVzc1twaWVjZUluZGV4XTtcbiAgICAgIGFkZHJlc3NbcGllY2VJbmRleC0tXSA9IGFkZHJlc3NbY29tcHJlc3MgKyBzd2FwcyAtIDFdO1xuICAgICAgYWRkcmVzc1tjb21wcmVzcyArIC0tc3dhcHNdID0gc3dhcDtcbiAgICB9XG4gIH0gZWxzZSBpZiAocGllY2VJbmRleCAhPT0gOCkgcmV0dXJuO1xuICByZXR1cm4gYWRkcmVzcztcbn07XG5cbnZhciBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZSA9IGZ1bmN0aW9uIChpcHY2KSB7XG4gIHZhciBtYXhJbmRleCA9IG51bGw7XG4gIHZhciBtYXhMZW5ndGggPSAxO1xuICB2YXIgY3VyclN0YXJ0ID0gbnVsbDtcbiAgdmFyIGN1cnJMZW5ndGggPSAwO1xuICB2YXIgaW5kZXggPSAwO1xuICBmb3IgKDsgaW5kZXggPCA4OyBpbmRleCsrKSB7XG4gICAgaWYgKGlwdjZbaW5kZXhdICE9PSAwKSB7XG4gICAgICBpZiAoY3Vyckxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgICAgICBtYXhJbmRleCA9IGN1cnJTdGFydDtcbiAgICAgICAgbWF4TGVuZ3RoID0gY3Vyckxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGN1cnJTdGFydCA9IG51bGw7XG4gICAgICBjdXJyTGVuZ3RoID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGN1cnJTdGFydCA9PT0gbnVsbCkgY3VyclN0YXJ0ID0gaW5kZXg7XG4gICAgICArK2N1cnJMZW5ndGg7XG4gICAgfVxuICB9XG4gIHJldHVybiBjdXJyTGVuZ3RoID4gbWF4TGVuZ3RoID8gY3VyclN0YXJ0IDogbWF4SW5kZXg7XG59O1xuXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2hvc3Qtc2VyaWFsaXppbmdcbnZhciBzZXJpYWxpemVIb3N0ID0gZnVuY3Rpb24gKGhvc3QpIHtcbiAgdmFyIHJlc3VsdCwgaW5kZXgsIGNvbXByZXNzLCBpZ25vcmUwO1xuXG4gIC8vIGlwdjRcbiAgaWYgKHR5cGVvZiBob3N0ID09ICdudW1iZXInKSB7XG4gICAgcmVzdWx0ID0gW107XG4gICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgNDsgaW5kZXgrKykge1xuICAgICAgdW5zaGlmdChyZXN1bHQsIGhvc3QgJSAyNTYpO1xuICAgICAgaG9zdCA9IGZsb29yKGhvc3QgLyAyNTYpO1xuICAgIH1cbiAgICByZXR1cm4gam9pbihyZXN1bHQsICcuJyk7XG4gIH1cblxuICAvLyBpcHY2XG4gIGlmICh0eXBlb2YgaG9zdCA9PSAnb2JqZWN0Jykge1xuICAgIHJlc3VsdCA9ICcnO1xuICAgIGNvbXByZXNzID0gZmluZExvbmdlc3RaZXJvU2VxdWVuY2UoaG9zdCk7XG4gICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgODsgaW5kZXgrKykge1xuICAgICAgaWYgKGlnbm9yZTAgJiYgaG9zdFtpbmRleF0gPT09IDApIGNvbnRpbnVlO1xuICAgICAgaWYgKGlnbm9yZTApIGlnbm9yZTAgPSBmYWxzZTtcbiAgICAgIGlmIChjb21wcmVzcyA9PT0gaW5kZXgpIHtcbiAgICAgICAgcmVzdWx0ICs9IGluZGV4ID8gJzonIDogJzo6JztcbiAgICAgICAgaWdub3JlMCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgKz0gbnVtYmVyVG9TdHJpbmcoaG9zdFtpbmRleF0sIDE2KTtcbiAgICAgICAgaWYgKGluZGV4IDwgNykgcmVzdWx0ICs9ICc6JztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICdbJyArIHJlc3VsdCArICddJztcbiAgfVxuXG4gIHJldHVybiBob3N0O1xufTtcblxudmFyIEMwQ29udHJvbFBlcmNlbnRFbmNvZGVTZXQgPSB7fTtcbnZhciBmcmFnbWVudFBlcmNlbnRFbmNvZGVTZXQgPSBhc3NpZ24oe30sIEMwQ29udHJvbFBlcmNlbnRFbmNvZGVTZXQsIHtcbiAgJyAnOiAxLCAnXCInOiAxLCAnPCc6IDEsICc+JzogMSwgJ2AnOiAxXG59KTtcbnZhciBwYXRoUGVyY2VudEVuY29kZVNldCA9IGFzc2lnbih7fSwgZnJhZ21lbnRQZXJjZW50RW5jb2RlU2V0LCB7XG4gICcjJzogMSwgJz8nOiAxLCAneyc6IDEsICd9JzogMVxufSk7XG52YXIgdXNlcmluZm9QZXJjZW50RW5jb2RlU2V0ID0gYXNzaWduKHt9LCBwYXRoUGVyY2VudEVuY29kZVNldCwge1xuICAnLyc6IDEsICc6JzogMSwgJzsnOiAxLCAnPSc6IDEsICdAJzogMSwgJ1snOiAxLCAnXFxcXCc6IDEsICddJzogMSwgJ14nOiAxLCAnfCc6IDFcbn0pO1xuXG52YXIgcGVyY2VudEVuY29kZSA9IGZ1bmN0aW9uIChjaHIsIHNldCkge1xuICB2YXIgY29kZSA9IGNvZGVBdChjaHIsIDApO1xuICByZXR1cm4gY29kZSA+IDB4MjAgJiYgY29kZSA8IDB4N0YgJiYgIWhhc093bihzZXQsIGNocikgPyBjaHIgOiBlbmNvZGVVUklDb21wb25lbnQoY2hyKTtcbn07XG5cbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jc3BlY2lhbC1zY2hlbWVcbnZhciBzcGVjaWFsU2NoZW1lcyA9IHtcbiAgZnRwOiAyMSxcbiAgZmlsZTogbnVsbCxcbiAgaHR0cDogODAsXG4gIGh0dHBzOiA0NDMsXG4gIHdzOiA4MCxcbiAgd3NzOiA0NDNcbn07XG5cbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jd2luZG93cy1kcml2ZS1sZXR0ZXJcbnZhciBpc1dpbmRvd3NEcml2ZUxldHRlciA9IGZ1bmN0aW9uIChzdHJpbmcsIG5vcm1hbGl6ZWQpIHtcbiAgdmFyIHNlY29uZDtcbiAgcmV0dXJuIHN0cmluZy5sZW5ndGggPT09IDIgJiYgZXhlYyhBTFBIQSwgY2hhckF0KHN0cmluZywgMCkpXG4gICAgJiYgKChzZWNvbmQgPSBjaGFyQXQoc3RyaW5nLCAxKSkgPT09ICc6JyB8fCAoIW5vcm1hbGl6ZWQgJiYgc2Vjb25kID09PSAnfCcpKTtcbn07XG5cbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jc3RhcnQtd2l0aC1hLXdpbmRvd3MtZHJpdmUtbGV0dGVyXG52YXIgc3RhcnRzV2l0aFdpbmRvd3NEcml2ZUxldHRlciA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgdmFyIHRoaXJkO1xuICByZXR1cm4gc3RyaW5nLmxlbmd0aCA+IDEgJiYgaXNXaW5kb3dzRHJpdmVMZXR0ZXIoc3RyaW5nU2xpY2Uoc3RyaW5nLCAwLCAyKSkgJiYgKFxuICAgIHN0cmluZy5sZW5ndGggPT09IDIgfHxcbiAgICAoKHRoaXJkID0gY2hhckF0KHN0cmluZywgMikpID09PSAnLycgfHwgdGhpcmQgPT09ICdcXFxcJyB8fCB0aGlyZCA9PT0gJz8nIHx8IHRoaXJkID09PSAnIycpXG4gICk7XG59O1xuXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI3NpbmdsZS1kb3QtcGF0aC1zZWdtZW50XG52YXIgaXNTaW5nbGVEb3QgPSBmdW5jdGlvbiAoc2VnbWVudCkge1xuICByZXR1cm4gc2VnbWVudCA9PT0gJy4nIHx8IHRvTG93ZXJDYXNlKHNlZ21lbnQpID09PSAnJTJlJztcbn07XG5cbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG91YmxlLWRvdC1wYXRoLXNlZ21lbnRcbnZhciBpc0RvdWJsZURvdCA9IGZ1bmN0aW9uIChzZWdtZW50KSB7XG4gIHNlZ21lbnQgPSB0b0xvd2VyQ2FzZShzZWdtZW50KTtcbiAgcmV0dXJuIHNlZ21lbnQgPT09ICcuLicgfHwgc2VnbWVudCA9PT0gJyUyZS4nIHx8IHNlZ21lbnQgPT09ICcuJTJlJyB8fCBzZWdtZW50ID09PSAnJTJlJTJlJztcbn07XG5cbi8vIFN0YXRlczpcbnZhciBTQ0hFTUVfU1RBUlQgPSB7fTtcbnZhciBTQ0hFTUUgPSB7fTtcbnZhciBOT19TQ0hFTUUgPSB7fTtcbnZhciBTUEVDSUFMX1JFTEFUSVZFX09SX0FVVEhPUklUWSA9IHt9O1xudmFyIFBBVEhfT1JfQVVUSE9SSVRZID0ge307XG52YXIgUkVMQVRJVkUgPSB7fTtcbnZhciBSRUxBVElWRV9TTEFTSCA9IHt9O1xudmFyIFNQRUNJQUxfQVVUSE9SSVRZX1NMQVNIRVMgPSB7fTtcbnZhciBTUEVDSUFMX0FVVEhPUklUWV9JR05PUkVfU0xBU0hFUyA9IHt9O1xudmFyIEFVVEhPUklUWSA9IHt9O1xudmFyIEhPU1QgPSB7fTtcbnZhciBIT1NUTkFNRSA9IHt9O1xudmFyIFBPUlQgPSB7fTtcbnZhciBGSUxFID0ge307XG52YXIgRklMRV9TTEFTSCA9IHt9O1xudmFyIEZJTEVfSE9TVCA9IHt9O1xudmFyIFBBVEhfU1RBUlQgPSB7fTtcbnZhciBQQVRIID0ge307XG52YXIgQ0FOTk9UX0JFX0FfQkFTRV9VUkxfUEFUSCA9IHt9O1xudmFyIFFVRVJZID0ge307XG52YXIgRlJBR01FTlQgPSB7fTtcblxudmFyIFVSTFN0YXRlID0gZnVuY3Rpb24gKHVybCwgaXNCYXNlLCBiYXNlKSB7XG4gIHZhciB1cmxTdHJpbmcgPSAkdG9TdHJpbmcodXJsKTtcbiAgdmFyIGJhc2VTdGF0ZSwgZmFpbHVyZSwgc2VhcmNoUGFyYW1zO1xuICBpZiAoaXNCYXNlKSB7XG4gICAgZmFpbHVyZSA9IHRoaXMucGFyc2UodXJsU3RyaW5nKTtcbiAgICBpZiAoZmFpbHVyZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihmYWlsdXJlKTtcbiAgICB0aGlzLnNlYXJjaFBhcmFtcyA9IG51bGw7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGJhc2UgIT09IHVuZGVmaW5lZCkgYmFzZVN0YXRlID0gbmV3IFVSTFN0YXRlKGJhc2UsIHRydWUpO1xuICAgIGZhaWx1cmUgPSB0aGlzLnBhcnNlKHVybFN0cmluZywgbnVsbCwgYmFzZVN0YXRlKTtcbiAgICBpZiAoZmFpbHVyZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihmYWlsdXJlKTtcbiAgICBzZWFyY2hQYXJhbXMgPSBnZXRJbnRlcm5hbFNlYXJjaFBhcmFtc1N0YXRlKG5ldyBVUkxTZWFyY2hQYXJhbXMoKSk7XG4gICAgc2VhcmNoUGFyYW1zLmJpbmRVUkwodGhpcyk7XG4gICAgdGhpcy5zZWFyY2hQYXJhbXMgPSBzZWFyY2hQYXJhbXM7XG4gIH1cbn07XG5cblVSTFN0YXRlLnByb3RvdHlwZSA9IHtcbiAgdHlwZTogJ1VSTCcsXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jdXJsLXBhcnNpbmdcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1zdGF0ZW1lbnRzIC0tIFRPRE9cbiAgcGFyc2U6IGZ1bmN0aW9uIChpbnB1dCwgc3RhdGVPdmVycmlkZSwgYmFzZSkge1xuICAgIHZhciB1cmwgPSB0aGlzO1xuICAgIHZhciBzdGF0ZSA9IHN0YXRlT3ZlcnJpZGUgfHwgU0NIRU1FX1NUQVJUO1xuICAgIHZhciBwb2ludGVyID0gMDtcbiAgICB2YXIgYnVmZmVyID0gJyc7XG4gICAgdmFyIHNlZW5BdCA9IGZhbHNlO1xuICAgIHZhciBzZWVuQnJhY2tldCA9IGZhbHNlO1xuICAgIHZhciBzZWVuUGFzc3dvcmRUb2tlbiA9IGZhbHNlO1xuICAgIHZhciBjb2RlUG9pbnRzLCBjaHIsIGJ1ZmZlckNvZGVQb2ludHMsIGZhaWx1cmU7XG5cbiAgICBpbnB1dCA9ICR0b1N0cmluZyhpbnB1dCk7XG5cbiAgICBpZiAoIXN0YXRlT3ZlcnJpZGUpIHtcbiAgICAgIHVybC5zY2hlbWUgPSAnJztcbiAgICAgIHVybC51c2VybmFtZSA9ICcnO1xuICAgICAgdXJsLnBhc3N3b3JkID0gJyc7XG4gICAgICB1cmwuaG9zdCA9IG51bGw7XG4gICAgICB1cmwucG9ydCA9IG51bGw7XG4gICAgICB1cmwucGF0aCA9IFtdO1xuICAgICAgdXJsLnF1ZXJ5ID0gbnVsbDtcbiAgICAgIHVybC5mcmFnbWVudCA9IG51bGw7XG4gICAgICB1cmwuY2Fubm90QmVBQmFzZVVSTCA9IGZhbHNlO1xuICAgICAgaW5wdXQgPSByZXBsYWNlKGlucHV0LCBMRUFESU5HX0MwX0NPTlRST0xfT1JfU1BBQ0UsICcnKTtcbiAgICAgIGlucHV0ID0gcmVwbGFjZShpbnB1dCwgVFJBSUxJTkdfQzBfQ09OVFJPTF9PUl9TUEFDRSwgJyQxJyk7XG4gICAgfVxuXG4gICAgaW5wdXQgPSByZXBsYWNlKGlucHV0LCBUQUJfQU5EX05FV19MSU5FLCAnJyk7XG5cbiAgICBjb2RlUG9pbnRzID0gYXJyYXlGcm9tKGlucHV0KTtcblxuICAgIHdoaWxlIChwb2ludGVyIDw9IGNvZGVQb2ludHMubGVuZ3RoKSB7XG4gICAgICBjaHIgPSBjb2RlUG9pbnRzW3BvaW50ZXJdO1xuICAgICAgc3dpdGNoIChzdGF0ZSkge1xuICAgICAgICBjYXNlIFNDSEVNRV9TVEFSVDpcbiAgICAgICAgICBpZiAoY2hyICYmIGV4ZWMoQUxQSEEsIGNocikpIHtcbiAgICAgICAgICAgIGJ1ZmZlciArPSB0b0xvd2VyQ2FzZShjaHIpO1xuICAgICAgICAgICAgc3RhdGUgPSBTQ0hFTUU7XG4gICAgICAgICAgfSBlbHNlIGlmICghc3RhdGVPdmVycmlkZSkge1xuICAgICAgICAgICAgc3RhdGUgPSBOT19TQ0hFTUU7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9IGVsc2UgcmV0dXJuIElOVkFMSURfU0NIRU1FO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgU0NIRU1FOlxuICAgICAgICAgIGlmIChjaHIgJiYgKGV4ZWMoQUxQSEFOVU1FUklDLCBjaHIpIHx8IGNociA9PT0gJysnIHx8IGNociA9PT0gJy0nIHx8IGNociA9PT0gJy4nKSkge1xuICAgICAgICAgICAgYnVmZmVyICs9IHRvTG93ZXJDYXNlKGNocik7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaHIgPT09ICc6Jykge1xuICAgICAgICAgICAgaWYgKHN0YXRlT3ZlcnJpZGUgJiYgKFxuICAgICAgICAgICAgICAodXJsLmlzU3BlY2lhbCgpICE9PSBoYXNPd24oc3BlY2lhbFNjaGVtZXMsIGJ1ZmZlcikpIHx8XG4gICAgICAgICAgICAgIChidWZmZXIgPT09ICdmaWxlJyAmJiAodXJsLmluY2x1ZGVzQ3JlZGVudGlhbHMoKSB8fCB1cmwucG9ydCAhPT0gbnVsbCkpIHx8XG4gICAgICAgICAgICAgICh1cmwuc2NoZW1lID09PSAnZmlsZScgJiYgIXVybC5ob3N0KVxuICAgICAgICAgICAgKSkgcmV0dXJuO1xuICAgICAgICAgICAgdXJsLnNjaGVtZSA9IGJ1ZmZlcjtcbiAgICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlKSB7XG4gICAgICAgICAgICAgIGlmICh1cmwuaXNTcGVjaWFsKCkgJiYgc3BlY2lhbFNjaGVtZXNbdXJsLnNjaGVtZV0gPT09IHVybC5wb3J0KSB1cmwucG9ydCA9IG51bGw7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJ1ZmZlciA9ICcnO1xuICAgICAgICAgICAgaWYgKHVybC5zY2hlbWUgPT09ICdmaWxlJykge1xuICAgICAgICAgICAgICBzdGF0ZSA9IEZJTEU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHVybC5pc1NwZWNpYWwoKSAmJiBiYXNlICYmIGJhc2Uuc2NoZW1lID09PSB1cmwuc2NoZW1lKSB7XG4gICAgICAgICAgICAgIHN0YXRlID0gU1BFQ0lBTF9SRUxBVElWRV9PUl9BVVRIT1JJVFk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHVybC5pc1NwZWNpYWwoKSkge1xuICAgICAgICAgICAgICBzdGF0ZSA9IFNQRUNJQUxfQVVUSE9SSVRZX1NMQVNIRVM7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGVQb2ludHNbcG9pbnRlciArIDFdID09PSAnLycpIHtcbiAgICAgICAgICAgICAgc3RhdGUgPSBQQVRIX09SX0FVVEhPUklUWTtcbiAgICAgICAgICAgICAgcG9pbnRlcisrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdXJsLmNhbm5vdEJlQUJhc2VVUkwgPSB0cnVlO1xuICAgICAgICAgICAgICBwdXNoKHVybC5wYXRoLCAnJyk7XG4gICAgICAgICAgICAgIHN0YXRlID0gQ0FOTk9UX0JFX0FfQkFTRV9VUkxfUEFUSDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKCFzdGF0ZU92ZXJyaWRlKSB7XG4gICAgICAgICAgICBidWZmZXIgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gTk9fU0NIRU1FO1xuICAgICAgICAgICAgcG9pbnRlciA9IDA7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9IGVsc2UgcmV0dXJuIElOVkFMSURfU0NIRU1FO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgTk9fU0NIRU1FOlxuICAgICAgICAgIGlmICghYmFzZSB8fCAoYmFzZS5jYW5ub3RCZUFCYXNlVVJMICYmIGNociAhPT0gJyMnKSkgcmV0dXJuIElOVkFMSURfU0NIRU1FO1xuICAgICAgICAgIGlmIChiYXNlLmNhbm5vdEJlQUJhc2VVUkwgJiYgY2hyID09PSAnIycpIHtcbiAgICAgICAgICAgIHVybC5zY2hlbWUgPSBiYXNlLnNjaGVtZTtcbiAgICAgICAgICAgIHVybC5wYXRoID0gYXJyYXlTbGljZShiYXNlLnBhdGgpO1xuICAgICAgICAgICAgdXJsLnF1ZXJ5ID0gYmFzZS5xdWVyeTtcbiAgICAgICAgICAgIHVybC5mcmFnbWVudCA9ICcnO1xuICAgICAgICAgICAgdXJsLmNhbm5vdEJlQUJhc2VVUkwgPSB0cnVlO1xuICAgICAgICAgICAgc3RhdGUgPSBGUkFHTUVOVDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdGF0ZSA9IGJhc2Uuc2NoZW1lID09PSAnZmlsZScgPyBGSUxFIDogUkVMQVRJVkU7XG4gICAgICAgICAgY29udGludWU7XG5cbiAgICAgICAgY2FzZSBTUEVDSUFMX1JFTEFUSVZFX09SX0FVVEhPUklUWTpcbiAgICAgICAgICBpZiAoY2hyID09PSAnLycgJiYgY29kZVBvaW50c1twb2ludGVyICsgMV0gPT09ICcvJykge1xuICAgICAgICAgICAgc3RhdGUgPSBTUEVDSUFMX0FVVEhPUklUWV9JR05PUkVfU0xBU0hFUztcbiAgICAgICAgICAgIHBvaW50ZXIrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RhdGUgPSBSRUxBVElWRTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gYnJlYWs7XG5cbiAgICAgICAgY2FzZSBQQVRIX09SX0FVVEhPUklUWTpcbiAgICAgICAgICBpZiAoY2hyID09PSAnLycpIHtcbiAgICAgICAgICAgIHN0YXRlID0gQVVUSE9SSVRZO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICBjYXNlIFJFTEFUSVZFOlxuICAgICAgICAgIHVybC5zY2hlbWUgPSBiYXNlLnNjaGVtZTtcbiAgICAgICAgICBpZiAoY2hyID09PSBFT0YpIHtcbiAgICAgICAgICAgIHVybC51c2VybmFtZSA9IGJhc2UudXNlcm5hbWU7XG4gICAgICAgICAgICB1cmwucGFzc3dvcmQgPSBiYXNlLnBhc3N3b3JkO1xuICAgICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgICB1cmwucG9ydCA9IGJhc2UucG9ydDtcbiAgICAgICAgICAgIHVybC5wYXRoID0gYXJyYXlTbGljZShiYXNlLnBhdGgpO1xuICAgICAgICAgICAgdXJsLnF1ZXJ5ID0gYmFzZS5xdWVyeTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNociA9PT0gJy8nIHx8IChjaHIgPT09ICdcXFxcJyAmJiB1cmwuaXNTcGVjaWFsKCkpKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IFJFTEFUSVZFX1NMQVNIO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hyID09PSAnPycpIHtcbiAgICAgICAgICAgIHVybC51c2VybmFtZSA9IGJhc2UudXNlcm5hbWU7XG4gICAgICAgICAgICB1cmwucGFzc3dvcmQgPSBiYXNlLnBhc3N3b3JkO1xuICAgICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgICB1cmwucG9ydCA9IGJhc2UucG9ydDtcbiAgICAgICAgICAgIHVybC5wYXRoID0gYXJyYXlTbGljZShiYXNlLnBhdGgpO1xuICAgICAgICAgICAgdXJsLnF1ZXJ5ID0gJyc7XG4gICAgICAgICAgICBzdGF0ZSA9IFFVRVJZO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hyID09PSAnIycpIHtcbiAgICAgICAgICAgIHVybC51c2VybmFtZSA9IGJhc2UudXNlcm5hbWU7XG4gICAgICAgICAgICB1cmwucGFzc3dvcmQgPSBiYXNlLnBhc3N3b3JkO1xuICAgICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgICB1cmwucG9ydCA9IGJhc2UucG9ydDtcbiAgICAgICAgICAgIHVybC5wYXRoID0gYXJyYXlTbGljZShiYXNlLnBhdGgpO1xuICAgICAgICAgICAgdXJsLnF1ZXJ5ID0gYmFzZS5xdWVyeTtcbiAgICAgICAgICAgIHVybC5mcmFnbWVudCA9ICcnO1xuICAgICAgICAgICAgc3RhdGUgPSBGUkFHTUVOVDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdXJsLnVzZXJuYW1lID0gYmFzZS51c2VybmFtZTtcbiAgICAgICAgICAgIHVybC5wYXNzd29yZCA9IGJhc2UucGFzc3dvcmQ7XG4gICAgICAgICAgICB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICAgIHVybC5wb3J0ID0gYmFzZS5wb3J0O1xuICAgICAgICAgICAgdXJsLnBhdGggPSBhcnJheVNsaWNlKGJhc2UucGF0aCk7XG4gICAgICAgICAgICB1cmwucGF0aC5sZW5ndGgtLTtcbiAgICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gYnJlYWs7XG5cbiAgICAgICAgY2FzZSBSRUxBVElWRV9TTEFTSDpcbiAgICAgICAgICBpZiAodXJsLmlzU3BlY2lhbCgpICYmIChjaHIgPT09ICcvJyB8fCBjaHIgPT09ICdcXFxcJykpIHtcbiAgICAgICAgICAgIHN0YXRlID0gU1BFQ0lBTF9BVVRIT1JJVFlfSUdOT1JFX1NMQVNIRVM7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaHIgPT09ICcvJykge1xuICAgICAgICAgICAgc3RhdGUgPSBBVVRIT1JJVFk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVybC51c2VybmFtZSA9IGJhc2UudXNlcm5hbWU7XG4gICAgICAgICAgICB1cmwucGFzc3dvcmQgPSBiYXNlLnBhc3N3b3JkO1xuICAgICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgICB1cmwucG9ydCA9IGJhc2UucG9ydDtcbiAgICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gYnJlYWs7XG5cbiAgICAgICAgY2FzZSBTUEVDSUFMX0FVVEhPUklUWV9TTEFTSEVTOlxuICAgICAgICAgIHN0YXRlID0gU1BFQ0lBTF9BVVRIT1JJVFlfSUdOT1JFX1NMQVNIRVM7XG4gICAgICAgICAgaWYgKGNociAhPT0gJy8nIHx8IGNoYXJBdChidWZmZXIsIHBvaW50ZXIgKyAxKSAhPT0gJy8nKSBjb250aW51ZTtcbiAgICAgICAgICBwb2ludGVyKys7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBTUEVDSUFMX0FVVEhPUklUWV9JR05PUkVfU0xBU0hFUzpcbiAgICAgICAgICBpZiAoY2hyICE9PSAnLycgJiYgY2hyICE9PSAnXFxcXCcpIHtcbiAgICAgICAgICAgIHN0YXRlID0gQVVUSE9SSVRZO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfSBicmVhaztcblxuICAgICAgICBjYXNlIEFVVEhPUklUWTpcbiAgICAgICAgICBpZiAoY2hyID09PSAnQCcpIHtcbiAgICAgICAgICAgIGlmIChzZWVuQXQpIGJ1ZmZlciA9ICclNDAnICsgYnVmZmVyO1xuICAgICAgICAgICAgc2VlbkF0ID0gdHJ1ZTtcbiAgICAgICAgICAgIGJ1ZmZlckNvZGVQb2ludHMgPSBhcnJheUZyb20oYnVmZmVyKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnVmZmVyQ29kZVBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICB2YXIgY29kZVBvaW50ID0gYnVmZmVyQ29kZVBvaW50c1tpXTtcbiAgICAgICAgICAgICAgaWYgKGNvZGVQb2ludCA9PT0gJzonICYmICFzZWVuUGFzc3dvcmRUb2tlbikge1xuICAgICAgICAgICAgICAgIHNlZW5QYXNzd29yZFRva2VuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB2YXIgZW5jb2RlZENvZGVQb2ludHMgPSBwZXJjZW50RW5jb2RlKGNvZGVQb2ludCwgdXNlcmluZm9QZXJjZW50RW5jb2RlU2V0KTtcbiAgICAgICAgICAgICAgaWYgKHNlZW5QYXNzd29yZFRva2VuKSB1cmwucGFzc3dvcmQgKz0gZW5jb2RlZENvZGVQb2ludHM7XG4gICAgICAgICAgICAgIGVsc2UgdXJsLnVzZXJuYW1lICs9IGVuY29kZWRDb2RlUG9pbnRzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnVmZmVyID0gJyc7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGNociA9PT0gRU9GIHx8IGNociA9PT0gJy8nIHx8IGNociA9PT0gJz8nIHx8IGNociA9PT0gJyMnIHx8XG4gICAgICAgICAgICAoY2hyID09PSAnXFxcXCcgJiYgdXJsLmlzU3BlY2lhbCgpKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHNlZW5BdCAmJiBidWZmZXIgPT09ICcnKSByZXR1cm4gSU5WQUxJRF9BVVRIT1JJVFk7XG4gICAgICAgICAgICBwb2ludGVyIC09IGFycmF5RnJvbShidWZmZXIpLmxlbmd0aCArIDE7XG4gICAgICAgICAgICBidWZmZXIgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gSE9TVDtcbiAgICAgICAgICB9IGVsc2UgYnVmZmVyICs9IGNocjtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIEhPU1Q6XG4gICAgICAgIGNhc2UgSE9TVE5BTUU6XG4gICAgICAgICAgaWYgKHN0YXRlT3ZlcnJpZGUgJiYgdXJsLnNjaGVtZSA9PT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IEZJTEVfSE9TVDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hyID09PSAnOicgJiYgIXNlZW5CcmFja2V0KSB7XG4gICAgICAgICAgICBpZiAoYnVmZmVyID09PSAnJykgcmV0dXJuIElOVkFMSURfSE9TVDtcbiAgICAgICAgICAgIGZhaWx1cmUgPSB1cmwucGFyc2VIb3N0KGJ1ZmZlcik7XG4gICAgICAgICAgICBpZiAoZmFpbHVyZSkgcmV0dXJuIGZhaWx1cmU7XG4gICAgICAgICAgICBidWZmZXIgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gUE9SVDtcbiAgICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlID09PSBIT1NUTkFNRSkgcmV0dXJuO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBjaHIgPT09IEVPRiB8fCBjaHIgPT09ICcvJyB8fCBjaHIgPT09ICc/JyB8fCBjaHIgPT09ICcjJyB8fFxuICAgICAgICAgICAgKGNociA9PT0gJ1xcXFwnICYmIHVybC5pc1NwZWNpYWwoKSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlmICh1cmwuaXNTcGVjaWFsKCkgJiYgYnVmZmVyID09PSAnJykgcmV0dXJuIElOVkFMSURfSE9TVDtcbiAgICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlICYmIGJ1ZmZlciA9PT0gJycgJiYgKHVybC5pbmNsdWRlc0NyZWRlbnRpYWxzKCkgfHwgdXJsLnBvcnQgIT09IG51bGwpKSByZXR1cm47XG4gICAgICAgICAgICBmYWlsdXJlID0gdXJsLnBhcnNlSG9zdChidWZmZXIpO1xuICAgICAgICAgICAgaWYgKGZhaWx1cmUpIHJldHVybiBmYWlsdXJlO1xuICAgICAgICAgICAgYnVmZmVyID0gJyc7XG4gICAgICAgICAgICBzdGF0ZSA9IFBBVEhfU1RBUlQ7XG4gICAgICAgICAgICBpZiAoc3RhdGVPdmVycmlkZSkgcmV0dXJuO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjaHIgPT09ICdbJykgc2VlbkJyYWNrZXQgPSB0cnVlO1xuICAgICAgICAgICAgZWxzZSBpZiAoY2hyID09PSAnXScpIHNlZW5CcmFja2V0ID0gZmFsc2U7XG4gICAgICAgICAgICBidWZmZXIgKz0gY2hyO1xuICAgICAgICAgIH0gYnJlYWs7XG5cbiAgICAgICAgY2FzZSBQT1JUOlxuICAgICAgICAgIGlmIChleGVjKERJR0lULCBjaHIpKSB7XG4gICAgICAgICAgICBidWZmZXIgKz0gY2hyO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBjaHIgPT09IEVPRiB8fCBjaHIgPT09ICcvJyB8fCBjaHIgPT09ICc/JyB8fCBjaHIgPT09ICcjJyB8fFxuICAgICAgICAgICAgKGNociA9PT0gJ1xcXFwnICYmIHVybC5pc1NwZWNpYWwoKSkgfHxcbiAgICAgICAgICAgIHN0YXRlT3ZlcnJpZGVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlmIChidWZmZXIgIT09ICcnKSB7XG4gICAgICAgICAgICAgIHZhciBwb3J0ID0gcGFyc2VJbnQoYnVmZmVyLCAxMCk7XG4gICAgICAgICAgICAgIGlmIChwb3J0ID4gMHhGRkZGKSByZXR1cm4gSU5WQUxJRF9QT1JUO1xuICAgICAgICAgICAgICB1cmwucG9ydCA9ICh1cmwuaXNTcGVjaWFsKCkgJiYgcG9ydCA9PT0gc3BlY2lhbFNjaGVtZXNbdXJsLnNjaGVtZV0pID8gbnVsbCA6IHBvcnQ7XG4gICAgICAgICAgICAgIGJ1ZmZlciA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0YXRlT3ZlcnJpZGUpIHJldHVybjtcbiAgICAgICAgICAgIHN0YXRlID0gUEFUSF9TVEFSVDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gZWxzZSByZXR1cm4gSU5WQUxJRF9QT1JUO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgRklMRTpcbiAgICAgICAgICB1cmwuc2NoZW1lID0gJ2ZpbGUnO1xuICAgICAgICAgIGlmIChjaHIgPT09ICcvJyB8fCBjaHIgPT09ICdcXFxcJykgc3RhdGUgPSBGSUxFX1NMQVNIO1xuICAgICAgICAgIGVsc2UgaWYgKGJhc2UgJiYgYmFzZS5zY2hlbWUgPT09ICdmaWxlJykge1xuICAgICAgICAgICAgc3dpdGNoIChjaHIpIHtcbiAgICAgICAgICAgICAgY2FzZSBFT0Y6XG4gICAgICAgICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgICAgICAgdXJsLnBhdGggPSBhcnJheVNsaWNlKGJhc2UucGF0aCk7XG4gICAgICAgICAgICAgICAgdXJsLnF1ZXJ5ID0gYmFzZS5xdWVyeTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAnPyc6XG4gICAgICAgICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgICAgICAgdXJsLnBhdGggPSBhcnJheVNsaWNlKGJhc2UucGF0aCk7XG4gICAgICAgICAgICAgICAgdXJsLnF1ZXJ5ID0gJyc7XG4gICAgICAgICAgICAgICAgc3RhdGUgPSBRVUVSWTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAnIyc6XG4gICAgICAgICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgICAgICAgdXJsLnBhdGggPSBhcnJheVNsaWNlKGJhc2UucGF0aCk7XG4gICAgICAgICAgICAgICAgdXJsLnF1ZXJ5ID0gYmFzZS5xdWVyeTtcbiAgICAgICAgICAgICAgICB1cmwuZnJhZ21lbnQgPSAnJztcbiAgICAgICAgICAgICAgICBzdGF0ZSA9IEZSQUdNRU5UO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGlmICghc3RhcnRzV2l0aFdpbmRvd3NEcml2ZUxldHRlcihqb2luKGFycmF5U2xpY2UoY29kZVBvaW50cywgcG9pbnRlciksICcnKSkpIHtcbiAgICAgICAgICAgICAgICAgIHVybC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgICAgICAgICAgdXJsLnBhdGggPSBhcnJheVNsaWNlKGJhc2UucGF0aCk7XG4gICAgICAgICAgICAgICAgICB1cmwuc2hvcnRlblBhdGgoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RhdGUgPSBQQVRIO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9IGJyZWFrO1xuXG4gICAgICAgIGNhc2UgRklMRV9TTEFTSDpcbiAgICAgICAgICBpZiAoY2hyID09PSAnLycgfHwgY2hyID09PSAnXFxcXCcpIHtcbiAgICAgICAgICAgIHN0YXRlID0gRklMRV9IT1NUO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChiYXNlICYmIGJhc2Uuc2NoZW1lID09PSAnZmlsZScgJiYgIXN0YXJ0c1dpdGhXaW5kb3dzRHJpdmVMZXR0ZXIoam9pbihhcnJheVNsaWNlKGNvZGVQb2ludHMsIHBvaW50ZXIpLCAnJykpKSB7XG4gICAgICAgICAgICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYmFzZS5wYXRoWzBdLCB0cnVlKSkgcHVzaCh1cmwucGF0aCwgYmFzZS5wYXRoWzBdKTtcbiAgICAgICAgICAgIGVsc2UgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgfVxuICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICBjb250aW51ZTtcblxuICAgICAgICBjYXNlIEZJTEVfSE9TVDpcbiAgICAgICAgICBpZiAoY2hyID09PSBFT0YgfHwgY2hyID09PSAnLycgfHwgY2hyID09PSAnXFxcXCcgfHwgY2hyID09PSAnPycgfHwgY2hyID09PSAnIycpIHtcbiAgICAgICAgICAgIGlmICghc3RhdGVPdmVycmlkZSAmJiBpc1dpbmRvd3NEcml2ZUxldHRlcihidWZmZXIpKSB7XG4gICAgICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYnVmZmVyID09PSAnJykge1xuICAgICAgICAgICAgICB1cmwuaG9zdCA9ICcnO1xuICAgICAgICAgICAgICBpZiAoc3RhdGVPdmVycmlkZSkgcmV0dXJuO1xuICAgICAgICAgICAgICBzdGF0ZSA9IFBBVEhfU1RBUlQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmYWlsdXJlID0gdXJsLnBhcnNlSG9zdChidWZmZXIpO1xuICAgICAgICAgICAgICBpZiAoZmFpbHVyZSkgcmV0dXJuIGZhaWx1cmU7XG4gICAgICAgICAgICAgIGlmICh1cmwuaG9zdCA9PT0gJ2xvY2FsaG9zdCcpIHVybC5ob3N0ID0gJyc7XG4gICAgICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlKSByZXR1cm47XG4gICAgICAgICAgICAgIGJ1ZmZlciA9ICcnO1xuICAgICAgICAgICAgICBzdGF0ZSA9IFBBVEhfU1RBUlQ7XG4gICAgICAgICAgICB9IGNvbnRpbnVlO1xuICAgICAgICAgIH0gZWxzZSBidWZmZXIgKz0gY2hyO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgUEFUSF9TVEFSVDpcbiAgICAgICAgICBpZiAodXJsLmlzU3BlY2lhbCgpKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgICAgICBpZiAoY2hyICE9PSAnLycgJiYgY2hyICE9PSAnXFxcXCcpIGNvbnRpbnVlO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIXN0YXRlT3ZlcnJpZGUgJiYgY2hyID09PSAnPycpIHtcbiAgICAgICAgICAgIHVybC5xdWVyeSA9ICcnO1xuICAgICAgICAgICAgc3RhdGUgPSBRVUVSWTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFzdGF0ZU92ZXJyaWRlICYmIGNociA9PT0gJyMnKSB7XG4gICAgICAgICAgICB1cmwuZnJhZ21lbnQgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gRlJBR01FTlQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaHIgIT09IEVPRikge1xuICAgICAgICAgICAgc3RhdGUgPSBQQVRIO1xuICAgICAgICAgICAgaWYgKGNociAhPT0gJy8nKSBjb250aW51ZTtcbiAgICAgICAgICB9IGJyZWFrO1xuXG4gICAgICAgIGNhc2UgUEFUSDpcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBjaHIgPT09IEVPRiB8fCBjaHIgPT09ICcvJyB8fFxuICAgICAgICAgICAgKGNociA9PT0gJ1xcXFwnICYmIHVybC5pc1NwZWNpYWwoKSkgfHxcbiAgICAgICAgICAgICghc3RhdGVPdmVycmlkZSAmJiAoY2hyID09PSAnPycgfHwgY2hyID09PSAnIycpKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYgKGlzRG91YmxlRG90KGJ1ZmZlcikpIHtcbiAgICAgICAgICAgICAgdXJsLnNob3J0ZW5QYXRoKCk7XG4gICAgICAgICAgICAgIGlmIChjaHIgIT09ICcvJyAmJiAhKGNociA9PT0gJ1xcXFwnICYmIHVybC5pc1NwZWNpYWwoKSkpIHtcbiAgICAgICAgICAgICAgICBwdXNoKHVybC5wYXRoLCAnJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNTaW5nbGVEb3QoYnVmZmVyKSkge1xuICAgICAgICAgICAgICBpZiAoY2hyICE9PSAnLycgJiYgIShjaHIgPT09ICdcXFxcJyAmJiB1cmwuaXNTcGVjaWFsKCkpKSB7XG4gICAgICAgICAgICAgICAgcHVzaCh1cmwucGF0aCwgJycpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpZiAodXJsLnNjaGVtZSA9PT0gJ2ZpbGUnICYmICF1cmwucGF0aC5sZW5ndGggJiYgaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYnVmZmVyKSkge1xuICAgICAgICAgICAgICAgIGlmICh1cmwuaG9zdCkgdXJsLmhvc3QgPSAnJztcbiAgICAgICAgICAgICAgICBidWZmZXIgPSBjaGFyQXQoYnVmZmVyLCAwKSArICc6JzsgLy8gbm9ybWFsaXplIHdpbmRvd3MgZHJpdmUgbGV0dGVyXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcHVzaCh1cmwucGF0aCwgYnVmZmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJ1ZmZlciA9ICcnO1xuICAgICAgICAgICAgaWYgKHVybC5zY2hlbWUgPT09ICdmaWxlJyAmJiAoY2hyID09PSBFT0YgfHwgY2hyID09PSAnPycgfHwgY2hyID09PSAnIycpKSB7XG4gICAgICAgICAgICAgIHdoaWxlICh1cmwucGF0aC5sZW5ndGggPiAxICYmIHVybC5wYXRoWzBdID09PSAnJykge1xuICAgICAgICAgICAgICAgIHNoaWZ0KHVybC5wYXRoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNociA9PT0gJz8nKSB7XG4gICAgICAgICAgICAgIHVybC5xdWVyeSA9ICcnO1xuICAgICAgICAgICAgICBzdGF0ZSA9IFFVRVJZO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjaHIgPT09ICcjJykge1xuICAgICAgICAgICAgICB1cmwuZnJhZ21lbnQgPSAnJztcbiAgICAgICAgICAgICAgc3RhdGUgPSBGUkFHTUVOVDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnVmZmVyICs9IHBlcmNlbnRFbmNvZGUoY2hyLCBwYXRoUGVyY2VudEVuY29kZVNldCk7XG4gICAgICAgICAgfSBicmVhaztcblxuICAgICAgICBjYXNlIENBTk5PVF9CRV9BX0JBU0VfVVJMX1BBVEg6XG4gICAgICAgICAgaWYgKGNociA9PT0gJz8nKSB7XG4gICAgICAgICAgICB1cmwucXVlcnkgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gUVVFUlk7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaHIgPT09ICcjJykge1xuICAgICAgICAgICAgdXJsLmZyYWdtZW50ID0gJyc7XG4gICAgICAgICAgICBzdGF0ZSA9IEZSQUdNRU5UO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hyICE9PSBFT0YpIHtcbiAgICAgICAgICAgIHVybC5wYXRoWzBdICs9IHBlcmNlbnRFbmNvZGUoY2hyLCBDMENvbnRyb2xQZXJjZW50RW5jb2RlU2V0KTtcbiAgICAgICAgICB9IGJyZWFrO1xuXG4gICAgICAgIGNhc2UgUVVFUlk6XG4gICAgICAgICAgaWYgKCFzdGF0ZU92ZXJyaWRlICYmIGNociA9PT0gJyMnKSB7XG4gICAgICAgICAgICB1cmwuZnJhZ21lbnQgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gRlJBR01FTlQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaHIgIT09IEVPRikge1xuICAgICAgICAgICAgaWYgKGNociA9PT0gXCInXCIgJiYgdXJsLmlzU3BlY2lhbCgpKSB1cmwucXVlcnkgKz0gJyUyNyc7XG4gICAgICAgICAgICBlbHNlIGlmIChjaHIgPT09ICcjJykgdXJsLnF1ZXJ5ICs9ICclMjMnO1xuICAgICAgICAgICAgZWxzZSB1cmwucXVlcnkgKz0gcGVyY2VudEVuY29kZShjaHIsIEMwQ29udHJvbFBlcmNlbnRFbmNvZGVTZXQpO1xuICAgICAgICAgIH0gYnJlYWs7XG5cbiAgICAgICAgY2FzZSBGUkFHTUVOVDpcbiAgICAgICAgICBpZiAoY2hyICE9PSBFT0YpIHVybC5mcmFnbWVudCArPSBwZXJjZW50RW5jb2RlKGNociwgZnJhZ21lbnRQZXJjZW50RW5jb2RlU2V0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcG9pbnRlcisrO1xuICAgIH1cbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNob3N0LXBhcnNpbmdcbiAgcGFyc2VIb3N0OiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICB2YXIgcmVzdWx0LCBjb2RlUG9pbnRzLCBpbmRleDtcbiAgICBpZiAoY2hhckF0KGlucHV0LCAwKSA9PT0gJ1snKSB7XG4gICAgICBpZiAoY2hhckF0KGlucHV0LCBpbnB1dC5sZW5ndGggLSAxKSAhPT0gJ10nKSByZXR1cm4gSU5WQUxJRF9IT1NUO1xuICAgICAgcmVzdWx0ID0gcGFyc2VJUHY2KHN0cmluZ1NsaWNlKGlucHV0LCAxLCAtMSkpO1xuICAgICAgaWYgKCFyZXN1bHQpIHJldHVybiBJTlZBTElEX0hPU1Q7XG4gICAgICB0aGlzLmhvc3QgPSByZXN1bHQ7XG4gICAgLy8gb3BhcXVlIGhvc3RcbiAgICB9IGVsc2UgaWYgKCF0aGlzLmlzU3BlY2lhbCgpKSB7XG4gICAgICBpZiAoZXhlYyhGT1JCSURERU5fSE9TVF9DT0RFX1BPSU5UX0VYQ0xVRElOR19QRVJDRU5ULCBpbnB1dCkpIHJldHVybiBJTlZBTElEX0hPU1Q7XG4gICAgICByZXN1bHQgPSAnJztcbiAgICAgIGNvZGVQb2ludHMgPSBhcnJheUZyb20oaW5wdXQpO1xuICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgY29kZVBvaW50cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgcmVzdWx0ICs9IHBlcmNlbnRFbmNvZGUoY29kZVBvaW50c1tpbmRleF0sIEMwQ29udHJvbFBlcmNlbnRFbmNvZGVTZXQpO1xuICAgICAgfVxuICAgICAgdGhpcy5ob3N0ID0gcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnB1dCA9IHRvQVNDSUkoaW5wdXQpO1xuICAgICAgaWYgKGV4ZWMoRk9SQklEREVOX0hPU1RfQ09ERV9QT0lOVCwgaW5wdXQpKSByZXR1cm4gSU5WQUxJRF9IT1NUO1xuICAgICAgcmVzdWx0ID0gcGFyc2VJUHY0KGlucHV0KTtcbiAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpIHJldHVybiBJTlZBTElEX0hPU1Q7XG4gICAgICB0aGlzLmhvc3QgPSByZXN1bHQ7XG4gICAgfVxuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2Nhbm5vdC1oYXZlLWEtdXNlcm5hbWUtcGFzc3dvcmQtcG9ydFxuICBjYW5ub3RIYXZlVXNlcm5hbWVQYXNzd29yZFBvcnQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gIXRoaXMuaG9zdCB8fCB0aGlzLmNhbm5vdEJlQUJhc2VVUkwgfHwgdGhpcy5zY2hlbWUgPT09ICdmaWxlJztcbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNpbmNsdWRlLWNyZWRlbnRpYWxzXG4gIGluY2x1ZGVzQ3JlZGVudGlhbHM6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy51c2VybmFtZSAhPT0gJycgfHwgdGhpcy5wYXNzd29yZCAhPT0gJyc7XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jaXMtc3BlY2lhbFxuICBpc1NwZWNpYWw6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gaGFzT3duKHNwZWNpYWxTY2hlbWVzLCB0aGlzLnNjaGVtZSk7XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jc2hvcnRlbi1hLXVybHMtcGF0aFxuICBzaG9ydGVuUGF0aDogZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYXRoID0gdGhpcy5wYXRoO1xuICAgIHZhciBwYXRoU2l6ZSA9IHBhdGgubGVuZ3RoO1xuICAgIGlmIChwYXRoU2l6ZSAmJiAodGhpcy5zY2hlbWUgIT09ICdmaWxlJyB8fCBwYXRoU2l6ZSAhPT0gMSB8fCAhaXNXaW5kb3dzRHJpdmVMZXR0ZXIocGF0aFswXSwgdHJ1ZSkpKSB7XG4gICAgICBwYXRoLmxlbmd0aC0tO1xuICAgIH1cbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LXVybC1zZXJpYWxpemVyXG4gIHNlcmlhbGl6ZTogZnVuY3Rpb24gKCkge1xuICAgIHZhciB1cmwgPSB0aGlzO1xuICAgIHZhciBzY2hlbWUgPSB1cmwuc2NoZW1lO1xuICAgIHZhciB1c2VybmFtZSA9IHVybC51c2VybmFtZTtcbiAgICB2YXIgcGFzc3dvcmQgPSB1cmwucGFzc3dvcmQ7XG4gICAgdmFyIGhvc3QgPSB1cmwuaG9zdDtcbiAgICB2YXIgcG9ydCA9IHVybC5wb3J0O1xuICAgIHZhciBwYXRoID0gdXJsLnBhdGg7XG4gICAgdmFyIHF1ZXJ5ID0gdXJsLnF1ZXJ5O1xuICAgIHZhciBmcmFnbWVudCA9IHVybC5mcmFnbWVudDtcbiAgICB2YXIgb3V0cHV0ID0gc2NoZW1lICsgJzonO1xuICAgIGlmIChob3N0ICE9PSBudWxsKSB7XG4gICAgICBvdXRwdXQgKz0gJy8vJztcbiAgICAgIGlmICh1cmwuaW5jbHVkZXNDcmVkZW50aWFscygpKSB7XG4gICAgICAgIG91dHB1dCArPSB1c2VybmFtZSArIChwYXNzd29yZCA/ICc6JyArIHBhc3N3b3JkIDogJycpICsgJ0AnO1xuICAgICAgfVxuICAgICAgb3V0cHV0ICs9IHNlcmlhbGl6ZUhvc3QoaG9zdCk7XG4gICAgICBpZiAocG9ydCAhPT0gbnVsbCkgb3V0cHV0ICs9ICc6JyArIHBvcnQ7XG4gICAgfSBlbHNlIGlmIChzY2hlbWUgPT09ICdmaWxlJykgb3V0cHV0ICs9ICcvLyc7XG4gICAgb3V0cHV0ICs9IHVybC5jYW5ub3RCZUFCYXNlVVJMID8gcGF0aFswXSA6IHBhdGgubGVuZ3RoID8gJy8nICsgam9pbihwYXRoLCAnLycpIDogJyc7XG4gICAgaWYgKHF1ZXJ5ICE9PSBudWxsKSBvdXRwdXQgKz0gJz8nICsgcXVlcnk7XG4gICAgaWYgKGZyYWdtZW50ICE9PSBudWxsKSBvdXRwdXQgKz0gJyMnICsgZnJhZ21lbnQ7XG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLWhyZWZcbiAgc2V0SHJlZjogZnVuY3Rpb24gKGhyZWYpIHtcbiAgICB2YXIgZmFpbHVyZSA9IHRoaXMucGFyc2UoaHJlZik7XG4gICAgaWYgKGZhaWx1cmUpIHRocm93IG5ldyBUeXBlRXJyb3IoZmFpbHVyZSk7XG4gICAgdGhpcy5zZWFyY2hQYXJhbXMudXBkYXRlKCk7XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1vcmlnaW5cbiAgZ2V0T3JpZ2luOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNjaGVtZSA9IHRoaXMuc2NoZW1lO1xuICAgIHZhciBwb3J0ID0gdGhpcy5wb3J0O1xuICAgIGlmIChzY2hlbWUgPT09ICdibG9iJykgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMQ29uc3RydWN0b3Ioc2NoZW1lLnBhdGhbMF0pLm9yaWdpbjtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuICdudWxsJztcbiAgICB9XG4gICAgaWYgKHNjaGVtZSA9PT0gJ2ZpbGUnIHx8ICF0aGlzLmlzU3BlY2lhbCgpKSByZXR1cm4gJ251bGwnO1xuICAgIHJldHVybiBzY2hlbWUgKyAnOi8vJyArIHNlcmlhbGl6ZUhvc3QodGhpcy5ob3N0KSArIChwb3J0ICE9PSBudWxsID8gJzonICsgcG9ydCA6ICcnKTtcbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXByb3RvY29sXG4gIGdldFByb3RvY29sOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2NoZW1lICsgJzonO1xuICB9LFxuICBzZXRQcm90b2NvbDogZnVuY3Rpb24gKHByb3RvY29sKSB7XG4gICAgdGhpcy5wYXJzZSgkdG9TdHJpbmcocHJvdG9jb2wpICsgJzonLCBTQ0hFTUVfU1RBUlQpO1xuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtdXNlcm5hbWVcbiAgZ2V0VXNlcm5hbWU6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy51c2VybmFtZTtcbiAgfSxcbiAgc2V0VXNlcm5hbWU6IGZ1bmN0aW9uICh1c2VybmFtZSkge1xuICAgIHZhciBjb2RlUG9pbnRzID0gYXJyYXlGcm9tKCR0b1N0cmluZyh1c2VybmFtZSkpO1xuICAgIGlmICh0aGlzLmNhbm5vdEhhdmVVc2VybmFtZVBhc3N3b3JkUG9ydCgpKSByZXR1cm47XG4gICAgdGhpcy51c2VybmFtZSA9ICcnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29kZVBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy51c2VybmFtZSArPSBwZXJjZW50RW5jb2RlKGNvZGVQb2ludHNbaV0sIHVzZXJpbmZvUGVyY2VudEVuY29kZVNldCk7XG4gICAgfVxuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtcGFzc3dvcmRcbiAgZ2V0UGFzc3dvcmQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXNzd29yZDtcbiAgfSxcbiAgc2V0UGFzc3dvcmQ6IGZ1bmN0aW9uIChwYXNzd29yZCkge1xuICAgIHZhciBjb2RlUG9pbnRzID0gYXJyYXlGcm9tKCR0b1N0cmluZyhwYXNzd29yZCkpO1xuICAgIGlmICh0aGlzLmNhbm5vdEhhdmVVc2VybmFtZVBhc3N3b3JkUG9ydCgpKSByZXR1cm47XG4gICAgdGhpcy5wYXNzd29yZCA9ICcnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29kZVBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5wYXNzd29yZCArPSBwZXJjZW50RW5jb2RlKGNvZGVQb2ludHNbaV0sIHVzZXJpbmZvUGVyY2VudEVuY29kZVNldCk7XG4gICAgfVxuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtaG9zdFxuICBnZXRIb3N0OiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGhvc3QgPSB0aGlzLmhvc3Q7XG4gICAgdmFyIHBvcnQgPSB0aGlzLnBvcnQ7XG4gICAgcmV0dXJuIGhvc3QgPT09IG51bGwgPyAnJ1xuICAgICAgOiBwb3J0ID09PSBudWxsID8gc2VyaWFsaXplSG9zdChob3N0KVxuICAgICAgOiBzZXJpYWxpemVIb3N0KGhvc3QpICsgJzonICsgcG9ydDtcbiAgfSxcbiAgc2V0SG9zdDogZnVuY3Rpb24gKGhvc3QpIHtcbiAgICBpZiAodGhpcy5jYW5ub3RCZUFCYXNlVVJMKSByZXR1cm47XG4gICAgdGhpcy5wYXJzZShob3N0LCBIT1NUKTtcbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLWhvc3RuYW1lXG4gIGdldEhvc3RuYW1lOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGhvc3QgPSB0aGlzLmhvc3Q7XG4gICAgcmV0dXJuIGhvc3QgPT09IG51bGwgPyAnJyA6IHNlcmlhbGl6ZUhvc3QoaG9zdCk7XG4gIH0sXG4gIHNldEhvc3RuYW1lOiBmdW5jdGlvbiAoaG9zdG5hbWUpIHtcbiAgICBpZiAodGhpcy5jYW5ub3RCZUFCYXNlVVJMKSByZXR1cm47XG4gICAgdGhpcy5wYXJzZShob3N0bmFtZSwgSE9TVE5BTUUpO1xuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtcG9ydFxuICBnZXRQb3J0OiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHBvcnQgPSB0aGlzLnBvcnQ7XG4gICAgcmV0dXJuIHBvcnQgPT09IG51bGwgPyAnJyA6ICR0b1N0cmluZyhwb3J0KTtcbiAgfSxcbiAgc2V0UG9ydDogZnVuY3Rpb24gKHBvcnQpIHtcbiAgICBpZiAodGhpcy5jYW5ub3RIYXZlVXNlcm5hbWVQYXNzd29yZFBvcnQoKSkgcmV0dXJuO1xuICAgIHBvcnQgPSAkdG9TdHJpbmcocG9ydCk7XG4gICAgaWYgKHBvcnQgPT09ICcnKSB0aGlzLnBvcnQgPSBudWxsO1xuICAgIGVsc2UgdGhpcy5wYXJzZShwb3J0LCBQT1JUKTtcbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXBhdGhuYW1lXG4gIGdldFBhdGhuYW1lOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHBhdGggPSB0aGlzLnBhdGg7XG4gICAgcmV0dXJuIHRoaXMuY2Fubm90QmVBQmFzZVVSTCA/IHBhdGhbMF0gOiBwYXRoLmxlbmd0aCA/ICcvJyArIGpvaW4ocGF0aCwgJy8nKSA6ICcnO1xuICB9LFxuICBzZXRQYXRobmFtZTogZnVuY3Rpb24gKHBhdGhuYW1lKSB7XG4gICAgaWYgKHRoaXMuY2Fubm90QmVBQmFzZVVSTCkgcmV0dXJuO1xuICAgIHRoaXMucGF0aCA9IFtdO1xuICAgIHRoaXMucGFyc2UocGF0aG5hbWUsIFBBVEhfU1RBUlQpO1xuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtc2VhcmNoXG4gIGdldFNlYXJjaDogZnVuY3Rpb24gKCkge1xuICAgIHZhciBxdWVyeSA9IHRoaXMucXVlcnk7XG4gICAgcmV0dXJuIHF1ZXJ5ID8gJz8nICsgcXVlcnkgOiAnJztcbiAgfSxcbiAgc2V0U2VhcmNoOiBmdW5jdGlvbiAoc2VhcmNoKSB7XG4gICAgc2VhcmNoID0gJHRvU3RyaW5nKHNlYXJjaCk7XG4gICAgaWYgKHNlYXJjaCA9PT0gJycpIHtcbiAgICAgIHRoaXMucXVlcnkgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY2hhckF0KHNlYXJjaCwgMCkgPT09ICc/Jykgc2VhcmNoID0gc3RyaW5nU2xpY2Uoc2VhcmNoLCAxKTtcbiAgICAgIHRoaXMucXVlcnkgPSAnJztcbiAgICAgIHRoaXMucGFyc2Uoc2VhcmNoLCBRVUVSWSk7XG4gICAgfVxuICAgIHRoaXMuc2VhcmNoUGFyYW1zLnVwZGF0ZSgpO1xuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtc2VhcmNocGFyYW1zXG4gIGdldFNlYXJjaFBhcmFtczogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaFBhcmFtcy5mYWNhZGU7XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1oYXNoXG4gIGdldEhhc2g6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZnJhZ21lbnQgPSB0aGlzLmZyYWdtZW50O1xuICAgIHJldHVybiBmcmFnbWVudCA/ICcjJyArIGZyYWdtZW50IDogJyc7XG4gIH0sXG4gIHNldEhhc2g6IGZ1bmN0aW9uIChoYXNoKSB7XG4gICAgaGFzaCA9ICR0b1N0cmluZyhoYXNoKTtcbiAgICBpZiAoaGFzaCA9PT0gJycpIHtcbiAgICAgIHRoaXMuZnJhZ21lbnQgPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY2hhckF0KGhhc2gsIDApID09PSAnIycpIGhhc2ggPSBzdHJpbmdTbGljZShoYXNoLCAxKTtcbiAgICB0aGlzLmZyYWdtZW50ID0gJyc7XG4gICAgdGhpcy5wYXJzZShoYXNoLCBGUkFHTUVOVCk7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMucXVlcnkgPSB0aGlzLnNlYXJjaFBhcmFtcy5zZXJpYWxpemUoKSB8fCBudWxsO1xuICB9XG59O1xuXG4vLyBgVVJMYCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyN1cmwtY2xhc3NcbnZhciBVUkxDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uIFVSTCh1cmwgLyogLCBiYXNlICovKSB7XG4gIHZhciB0aGF0ID0gYW5JbnN0YW5jZSh0aGlzLCBVUkxQcm90b3R5cGUpO1xuICB2YXIgYmFzZSA9IHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDEpID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgdmFyIHN0YXRlID0gc2V0SW50ZXJuYWxTdGF0ZSh0aGF0LCBuZXcgVVJMU3RhdGUodXJsLCBmYWxzZSwgYmFzZSkpO1xuICBpZiAoIURFU0NSSVBUT1JTKSB7XG4gICAgdGhhdC5ocmVmID0gc3RhdGUuc2VyaWFsaXplKCk7XG4gICAgdGhhdC5vcmlnaW4gPSBzdGF0ZS5nZXRPcmlnaW4oKTtcbiAgICB0aGF0LnByb3RvY29sID0gc3RhdGUuZ2V0UHJvdG9jb2woKTtcbiAgICB0aGF0LnVzZXJuYW1lID0gc3RhdGUuZ2V0VXNlcm5hbWUoKTtcbiAgICB0aGF0LnBhc3N3b3JkID0gc3RhdGUuZ2V0UGFzc3dvcmQoKTtcbiAgICB0aGF0Lmhvc3QgPSBzdGF0ZS5nZXRIb3N0KCk7XG4gICAgdGhhdC5ob3N0bmFtZSA9IHN0YXRlLmdldEhvc3RuYW1lKCk7XG4gICAgdGhhdC5wb3J0ID0gc3RhdGUuZ2V0UG9ydCgpO1xuICAgIHRoYXQucGF0aG5hbWUgPSBzdGF0ZS5nZXRQYXRobmFtZSgpO1xuICAgIHRoYXQuc2VhcmNoID0gc3RhdGUuZ2V0U2VhcmNoKCk7XG4gICAgdGhhdC5zZWFyY2hQYXJhbXMgPSBzdGF0ZS5nZXRTZWFyY2hQYXJhbXMoKTtcbiAgICB0aGF0Lmhhc2ggPSBzdGF0ZS5nZXRIYXNoKCk7XG4gIH1cbn07XG5cbnZhciBVUkxQcm90b3R5cGUgPSBVUkxDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG5cbnZhciBhY2Nlc3NvckRlc2NyaXB0b3IgPSBmdW5jdGlvbiAoZ2V0dGVyLCBzZXR0ZXIpIHtcbiAgcmV0dXJuIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpW2dldHRlcl0oKTtcbiAgICB9LFxuICAgIHNldDogc2V0dGVyICYmIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGdldEludGVybmFsVVJMU3RhdGUodGhpcylbc2V0dGVyXSh2YWx1ZSk7XG4gICAgfSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogdHJ1ZVxuICB9O1xufTtcblxuaWYgKERFU0NSSVBUT1JTKSB7XG4gIC8vIGBVUkwucHJvdG90eXBlLmhyZWZgIGFjY2Vzc29ycyBwYWlyXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1ocmVmXG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxQcm90b3R5cGUsICdocmVmJywgYWNjZXNzb3JEZXNjcmlwdG9yKCdzZXJpYWxpemUnLCAnc2V0SHJlZicpKTtcbiAgLy8gYFVSTC5wcm90b3R5cGUub3JpZ2luYCBnZXR0ZXJcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLW9yaWdpblxuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoVVJMUHJvdG90eXBlLCAnb3JpZ2luJywgYWNjZXNzb3JEZXNjcmlwdG9yKCdnZXRPcmlnaW4nKSk7XG4gIC8vIGBVUkwucHJvdG90eXBlLnByb3RvY29sYCBhY2Nlc3NvcnMgcGFpclxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtcHJvdG9jb2xcbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFByb3RvdHlwZSwgJ3Byb3RvY29sJywgYWNjZXNzb3JEZXNjcmlwdG9yKCdnZXRQcm90b2NvbCcsICdzZXRQcm90b2NvbCcpKTtcbiAgLy8gYFVSTC5wcm90b3R5cGUudXNlcm5hbWVgIGFjY2Vzc29ycyBwYWlyXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC11c2VybmFtZVxuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoVVJMUHJvdG90eXBlLCAndXNlcm5hbWUnLCBhY2Nlc3NvckRlc2NyaXB0b3IoJ2dldFVzZXJuYW1lJywgJ3NldFVzZXJuYW1lJykpO1xuICAvLyBgVVJMLnByb3RvdHlwZS5wYXNzd29yZGAgYWNjZXNzb3JzIHBhaXJcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXBhc3N3b3JkXG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxQcm90b3R5cGUsICdwYXNzd29yZCcsIGFjY2Vzc29yRGVzY3JpcHRvcignZ2V0UGFzc3dvcmQnLCAnc2V0UGFzc3dvcmQnKSk7XG4gIC8vIGBVUkwucHJvdG90eXBlLmhvc3RgIGFjY2Vzc29ycyBwYWlyXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1ob3N0XG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxQcm90b3R5cGUsICdob3N0JywgYWNjZXNzb3JEZXNjcmlwdG9yKCdnZXRIb3N0JywgJ3NldEhvc3QnKSk7XG4gIC8vIGBVUkwucHJvdG90eXBlLmhvc3RuYW1lYCBhY2Nlc3NvcnMgcGFpclxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtaG9zdG5hbWVcbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFByb3RvdHlwZSwgJ2hvc3RuYW1lJywgYWNjZXNzb3JEZXNjcmlwdG9yKCdnZXRIb3N0bmFtZScsICdzZXRIb3N0bmFtZScpKTtcbiAgLy8gYFVSTC5wcm90b3R5cGUucG9ydGAgYWNjZXNzb3JzIHBhaXJcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXBvcnRcbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFByb3RvdHlwZSwgJ3BvcnQnLCBhY2Nlc3NvckRlc2NyaXB0b3IoJ2dldFBvcnQnLCAnc2V0UG9ydCcpKTtcbiAgLy8gYFVSTC5wcm90b3R5cGUucGF0aG5hbWVgIGFjY2Vzc29ycyBwYWlyXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1wYXRobmFtZVxuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoVVJMUHJvdG90eXBlLCAncGF0aG5hbWUnLCBhY2Nlc3NvckRlc2NyaXB0b3IoJ2dldFBhdGhuYW1lJywgJ3NldFBhdGhuYW1lJykpO1xuICAvLyBgVVJMLnByb3RvdHlwZS5zZWFyY2hgIGFjY2Vzc29ycyBwYWlyXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1zZWFyY2hcbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFByb3RvdHlwZSwgJ3NlYXJjaCcsIGFjY2Vzc29yRGVzY3JpcHRvcignZ2V0U2VhcmNoJywgJ3NldFNlYXJjaCcpKTtcbiAgLy8gYFVSTC5wcm90b3R5cGUuc2VhcmNoUGFyYW1zYCBnZXR0ZXJcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXNlYXJjaHBhcmFtc1xuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoVVJMUHJvdG90eXBlLCAnc2VhcmNoUGFyYW1zJywgYWNjZXNzb3JEZXNjcmlwdG9yKCdnZXRTZWFyY2hQYXJhbXMnKSk7XG4gIC8vIGBVUkwucHJvdG90eXBlLmhhc2hgIGFjY2Vzc29ycyBwYWlyXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1oYXNoXG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxQcm90b3R5cGUsICdoYXNoJywgYWNjZXNzb3JEZXNjcmlwdG9yKCdnZXRIYXNoJywgJ3NldEhhc2gnKSk7XG59XG5cbi8vIGBVUkwucHJvdG90eXBlLnRvSlNPTmAgbWV0aG9kXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtdG9qc29uXG5kZWZpbmVCdWlsdEluKFVSTFByb3RvdHlwZSwgJ3RvSlNPTicsIGZ1bmN0aW9uIHRvSlNPTigpIHtcbiAgcmV0dXJuIGdldEludGVybmFsVVJMU3RhdGUodGhpcykuc2VyaWFsaXplKCk7XG59LCB7IGVudW1lcmFibGU6IHRydWUgfSk7XG5cbi8vIGBVUkwucHJvdG90eXBlLnRvU3RyaW5nYCBtZXRob2Rcbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jVVJMLXN0cmluZ2lmaWNhdGlvbi1iZWhhdmlvclxuZGVmaW5lQnVpbHRJbihVUkxQcm90b3R5cGUsICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKS5zZXJpYWxpemUoKTtcbn0sIHsgZW51bWVyYWJsZTogdHJ1ZSB9KTtcblxuaWYgKE5hdGl2ZVVSTCkge1xuICB2YXIgbmF0aXZlQ3JlYXRlT2JqZWN0VVJMID0gTmF0aXZlVVJMLmNyZWF0ZU9iamVjdFVSTDtcbiAgdmFyIG5hdGl2ZVJldm9rZU9iamVjdFVSTCA9IE5hdGl2ZVVSTC5yZXZva2VPYmplY3RVUkw7XG4gIC8vIGBVUkwuY3JlYXRlT2JqZWN0VVJMYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1VSTC9jcmVhdGVPYmplY3RVUkxcbiAgaWYgKG5hdGl2ZUNyZWF0ZU9iamVjdFVSTCkgZGVmaW5lQnVpbHRJbihVUkxDb25zdHJ1Y3RvciwgJ2NyZWF0ZU9iamVjdFVSTCcsIGJpbmQobmF0aXZlQ3JlYXRlT2JqZWN0VVJMLCBOYXRpdmVVUkwpKTtcbiAgLy8gYFVSTC5yZXZva2VPYmplY3RVUkxgIG1ldGhvZFxuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvVVJML3Jldm9rZU9iamVjdFVSTFxuICBpZiAobmF0aXZlUmV2b2tlT2JqZWN0VVJMKSBkZWZpbmVCdWlsdEluKFVSTENvbnN0cnVjdG9yLCAncmV2b2tlT2JqZWN0VVJMJywgYmluZChuYXRpdmVSZXZva2VPYmplY3RVUkwsIE5hdGl2ZVVSTCkpO1xufVxuXG5zZXRUb1N0cmluZ1RhZyhVUkxDb25zdHJ1Y3RvciwgJ1VSTCcpO1xuXG4kKHsgZ2xvYmFsOiB0cnVlLCBjb25zdHJ1Y3RvcjogdHJ1ZSwgZm9yY2VkOiAhVVNFX05BVElWRV9VUkwsIHNoYW06ICFERVNDUklQVE9SUyB9LCB7XG4gIFVSTDogVVJMQ29uc3RydWN0b3Jcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIHRoaXMgbW9kdWxlIGZyb20gYGNvcmUtanNANGAgc2luY2UgaXQncyByZXBsYWNlZCB0byBtb2R1bGUgYmVsb3dcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLnVybC5jb25zdHJ1Y3RvcicpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgVVNFX05BVElWRV9VUkwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXJsLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpO1xuXG52YXIgVVJMID0gZ2V0QnVpbHRJbignVVJMJyk7XG5cbi8vIGBVUkwucGFyc2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLWNhbnBhcnNlXG4kKHsgdGFyZ2V0OiAnVVJMJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiAhVVNFX05BVElWRV9VUkwgfSwge1xuICBwYXJzZTogZnVuY3Rpb24gcGFyc2UodXJsKSB7XG4gICAgdmFyIGxlbmd0aCA9IHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDEpO1xuICAgIHZhciB1cmxTdHJpbmcgPSB0b1N0cmluZyh1cmwpO1xuICAgIHZhciBiYXNlID0gbGVuZ3RoIDwgMiB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHRvU3RyaW5nKGFyZ3VtZW50c1sxXSk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZywgYmFzZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcblxuLy8gYFVSTC5wcm90b3R5cGUudG9KU09OYCBtZXRob2Rcbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC10b2pzb25cbiQoeyB0YXJnZXQ6ICdVUkwnLCBwcm90bzogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSB9LCB7XG4gIHRvSlNPTjogZnVuY3Rpb24gdG9KU09OKCkge1xuICAgIHJldHVybiBjYWxsKFVSTC5wcm90b3R5cGUudG9TdHJpbmcsIHRoaXMpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9lcy9hcnJheS9pbmNsdWRlcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9lcy9vYmplY3QvYXNzaWduJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL2VzL3Byb21pc2UnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5pdGVyYXRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi93ZWIvdXJsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xucmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmRlbGV0ZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuaGFzJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5zaXplJyk7XG52YXIgcGF0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wYXRoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0aC5VUkxTZWFyY2hQYXJhbXM7XG4iLCIndXNlIHN0cmljdCc7XG5yZXF1aXJlKCcuL3VybC1zZWFyY2gtcGFyYW1zJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi51cmwnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLnVybC5jYW4tcGFyc2UnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLnVybC5wYXJzZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIudXJsLnRvLWpzb24nKTtcbnZhciBwYXRoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BhdGgnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXRoLlVSTDtcbiIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvLyBzdGFydHVwXG4vLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8vIFRoaXMgZW50cnkgbW9kdWxlIGlzIHJlZmVyZW5jZWQgYnkgb3RoZXIgbW9kdWxlcyBzbyBpdCBjYW4ndCBiZSBpbmxpbmVkXG52YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oODE1Nik7XG4iXSwibmFtZXMiOlsicm9vdCIsImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwiZGVmaW5lIiwiYW1kIiwic2VsZiIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJCYXNlNjJTdHIiLCJhbHBoYWJldCIsInRoaXMiLCJsb29rdXAiLCJjcmVhdGVMb29rdXBUYWJsZSIsImdldEJ5dGVzIiwic3RyIiwiYnl0ZXMiLCJpIiwibGVuZ3RoIiwiY2hhciIsImNoYXJDb2RlQXQiLCJwdXNoIiwiZ2V0U3RyaW5nIiwiYXJyIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwiYXBwbHkiLCJjcmVhdGVJbnN0YW5jZSIsImNyZWF0ZUluc3RhbmNlV2l0aEdtcENoYXJhY3RlclNldCIsIkNoYXJhY3RlclNldHMiLCJHTVAiLCJjcmVhdGVJbnN0YW5jZVdpdGhJbnZlcnRlZENoYXJhY3RlclNldCIsIklOVkVSVEVEIiwidHJhbnNsYXRlIiwiaW5kaWNlcyIsImRpY3Rpb25hcnkiLCJ0cmFuc2xhdGlvbiIsIl9pIiwiaW5kaWNlc18xIiwiaW5kaWNlc2kiLCJjb252ZXJ0IiwibWVzc2FnZSIsInNvdXJjZUJhc2UiLCJ0YXJnZXRCYXNlIiwib3V0Iiwic291cmNlIiwicXVvdGllbnQiLCJyZW1haW5kZXIiLCJzb3VyY2VfMSIsImFjY3VtdWxhdG9yIiwiZGlnaXQiLCJyZXZlcnNlIiwicHJvdG90eXBlIiwiZW5jb2RlIiwiU1RBTkRBUkRfQkFTRSIsIlRBUkdFVF9CQVNFIiwiZGVjb2RlIiwiZW5jb2RlZCIsInByZXBhcmVkIiwiZW5jb2RlU3RyIiwiaW5wdXQiLCJkZWNvZGVTdHIiLCJBcnJheSIsIkV4cGlyZVNldCIsImNvbnN0cnVjdG9yIiwidGltZW91dCIsImdjRGVsYXkiLCJkYiIsIk1hcCIsIm5leHRHYyIsInNpemUiLCJhbGwiLCJzIiwiU2V0IiwiZm9yRWFjaCIsIl8iLCJ2IiwiYWRkIiwic2V0IiwiRGF0ZSIsIm5vdyIsInNjaGVkdWxlR2MiLCJoYXMiLCJkZWxldGUiLCJnYyIsInQiLCJmb3JjZSIsImNsZWFyVGltZW91dCIsInRzIiwic2V0VGltZW91dCIsImJpbmQiLCJ3aW5kb3ciLCJGdW5jdGlvbiIsImltcGxlbWVudGF0aW9uIiwiZyIsIk1hdGgiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJuIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJPUEVOX0JST0FEQ0FTVF9DSEFOTkVMUyIsIkJyb2FkY2FzdENoYW5uZWwiLCJjbGVhck5vZGVGb2xkZXIiLCJmaWxsT3B0aW9uc1dpdGhEZWZhdWx0cyIsIm8iLCJjaG9vc2VNZXRob2QiLCJ0eXBlIiwidGhlbiIsInIiLCJQUk9NSVNFX1JFU09MVkVEX0ZBTFNFIiwiZW5mb3JjZU9wdGlvbnMiLCJhIiwidSIsImMiLCJpZCIsIm5hbWUiLCJvcHRpb25zIiwibWV0aG9kIiwiX2lMIiwiX29uTUwiLCJfYWRkRUwiLCJpbnRlcm5hbCIsIl91TVAiLCJfYmVmQyIsIl9wcmVwUCIsImNyZWF0ZSIsImlzUHJvbWlzZSIsIl9zdGF0ZSIsImwiLCJ0aW1lIiwibWljcm9TZWNvbmRzIiwiZGF0YSIsIlBST01JU0VfUkVTT0xWRURfVk9JRCIsInBvc3RNZXNzYWdlIiwiY2F0Y2giLCJkIiwiZiIsImZuIiwib25NZXNzYWdlIiwiaCIsImZpbHRlciIsIl9wdWJrZXkiLCJjbG9zZWQiLCJFcnJvciIsIkpTT04iLCJzdHJpbmdpZnkiLCJwb3N0SW50ZXJuYWwiLCJvbm1lc3NhZ2UiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImZpbmQiLCJjbG9zZSIsIlByb21pc2UiLCJmcm9tIiwibWFwIiwiaXNDbG9zZWQiLCJjcmVhdGVMZWFkZXJFbGVjdGlvbiIsImJlTGVhZGVyIiwiZW51bWVyYWJsZSIsImdldCIsIl9sZWFkZXJFbGVjdG9yIiwicGFyc2UiLCJmYWxsYmFja0ludGVydmFsIiwicmVzcG9uc2VUaW1lIiwiYXZlcmFnZVJlc3BvbnNlVGltZSIsImRpZSIsImJyb2FkY2FzdENoYW5uZWwiLCJfb3B0aW9ucyIsImlzTGVhZGVyIiwiaGFzTGVhZGVyIiwiaXNEZWFkIiwidG9rZW4iLCJyYW5kb21Ub2tlbiIsIl9hcGxRIiwiX2FwbFFDIiwiX3VubCIsIl9sc3RucyIsIl9kcEwiLCJfZHBMQyIsImNvbnRleHQiLCJhY3Rpb24iLCJhcHBseU9uY2UiLCJzbGVlcCIsIlBST01JU0VfUkVTT0xWRURfVFJVRSIsInJhY2UiLCJyZWplY3QiLCJhd2FpdExlYWRlcnNoaXAiLCJfYUxQIiwib25kdXBsaWNhdGUiLCJyZW1vdmUiLCJjb25jYXQiLCJtZXRob2RzIiwiQm9vbGVhbiIsIndlYldvcmtlclN1cHBvcnQiLCJpc05vZGUiLCJjYW5CZVVzZWQiLCJ3IiwiQyIsImNsZWFuT2xkTWVzc2FnZXMiLCJwIiwieSIsImNyZWF0ZURhdGFiYXNlIiwiZ2V0QWxsTWVzc2FnZXMiLCJ0cmFuc2FjdGlvbiIsIm9iamVjdFN0b3JlIiwib3BlbkN1cnNvciIsIm9uc3VjY2VzcyIsInRhcmdldCIsInJlc3VsdCIsImNvbnRpbnVlIiwiZ2V0SWRiIiwiZ2V0TWVzc2FnZXNIaWdoZXJUaGFuIiwiZ2V0T2xkTWVzc2FnZXMiLCJiIiwicmVtb3ZlTWVzc2FnZUJ5SWQiLCJ3cml0ZU1lc3NhZ2UiLCJpbmRleGVkREIiLCJtb3pJbmRleGVkREIiLCJ3ZWJraXRJbmRleGVkREIiLCJtc0luZGV4ZWREQiIsIm9wZW4iLCJvbnVwZ3JhZGVuZWVkZWQiLCJjcmVhdGVPYmplY3RTdG9yZSIsImtleVBhdGgiLCJhdXRvSW5jcmVtZW50Iiwib25lcnJvciIsInV1aWQiLCJnZXRUaW1lIiwib25jb21wbGV0ZSIsIklEQktleVJhbmdlIiwiYm91bmQiLCJsYXN0Q3Vyc29ySWQiLCJjaGFubmVsTmFtZSIsImVNSXMiLCJPYmxpdmlvdXNTZXQiLCJpZGIiLCJ0dGwiLCJ3cml0ZUJsb2NrUHJvbWlzZSIsIm1lc3NhZ2VzQ2FsbGJhY2siLCJyZWFkUXVldWVQcm9taXNlcyIsIm9uY2xvc2UiLCJtIiwibWVzc2FnZXNDYWxsYmFja1RpbWUiLCJzb3J0IiwicmFuZG9tSW50IiwiRSIsImFkZFN0b3JhZ2VFdmVudExpc3RlbmVyIiwiZ2V0TG9jYWxTdG9yYWdlIiwicmVtb3ZlU3RvcmFnZUV2ZW50TGlzdGVuZXIiLCJzdG9yYWdlS2V5IiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsImRvY3VtZW50IiwiY3JlYXRlRXZlbnQiLCJpbml0RXZlbnQiLCJrZXkiLCJuZXdWYWx1ZSIsImRpc3BhdGNoRXZlbnQiLCJsb2NhbHN0b3JhZ2UiLCJyZW1vdmVUaW1lb3V0IiwibGlzdGVuZXIiLCJyZW1vdmVJdGVtIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsImJjIiwic3ViRm5zIiwiYXJndW1lbnRzIiwibm9kZSIsIm1heFBhcmFsbGVsV3JpdGVzIiwidXNlRmFzdFBhdGgiLCJmbG9vciIsInJhbmRvbSIsInRvU3RyaW5nIiwic3Vic3RyaW5nIiwicmVzb2x2ZSIsImNhbGwiLCJmb3JtYXRBcmdzIiwidXNlQ29sb3JzIiwibmFtZXNwYWNlIiwiaHVtYW5pemUiLCJkaWZmIiwiY29sb3IiLCJzcGxpY2UiLCJyZXBsYWNlIiwic2F2ZSIsInN0b3JhZ2UiLCJsb2FkIiwiZ2V0SXRlbSIsImVudiIsIkRFQlVHIiwicHJvY2VzcyIsIl9fbndqcyIsIm1hdGNoIiwiZG9jdW1lbnRFbGVtZW50Iiwic3R5bGUiLCJXZWJraXRBcHBlYXJhbmNlIiwiY29uc29sZSIsImZpcmVidWciLCJleGNlcHRpb24iLCJ0YWJsZSIsInBhcnNlSW50IiwiUmVnRXhwIiwiJDEiLCJkZXN0cm95Iiwid2FybiIsImNvbG9ycyIsImxvZyIsImRlYnVnIiwiZm9ybWF0dGVycyIsImoiLCJlbmFibGVkIiwiTnVtYmVyIiwicHJldiIsImN1cnIiLCJjb2VyY2UiLCJ1bnNoaWZ0Iiwic2VsZWN0Q29sb3IiLCJleHRlbmQiLCJjb25maWd1cmFibGUiLCJuYW1lc3BhY2VzIiwiaW5pdCIsInN0YWNrIiwiZGlzYWJsZSIsIm5hbWVzIiwic2tpcHMiLCJqb2luIiwiZW5hYmxlIiwic3BsaXQiLCJzbGljZSIsInRlc3QiLCJrZXlzIiwiYWJzIiwicm91bmQiLCJleGVjIiwicGFyc2VGbG9hdCIsImlzRmluaXRlIiwibG9uZyIsInJlbW92ZVRvb09sZFZhbHVlcyIsInRpbWVNYXAiLCJjbGVhciIsIm5leHQiLCJydW4iLCJmdW4iLCJhcnJheSIsIm5leHRUaWNrIiwidGl0bGUiLCJicm93c2VyIiwiYXJndiIsInZlcnNpb24iLCJ2ZXJzaW9ucyIsIm9uIiwiYWRkTGlzdGVuZXIiLCJvbmNlIiwib2ZmIiwicmVtb3ZlTGlzdGVuZXIiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJlbWl0IiwicHJlcGVuZExpc3RlbmVyIiwicHJlcGVuZE9uY2VMaXN0ZW5lciIsImxpc3RlbmVycyIsImJpbmRpbmciLCJjd2QiLCJjaGRpciIsInVtYXNrIiwiY3R4IiwiVGlueUVtaXR0ZXIiLCJfX2V4dGVuZHMiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImhhc093blByb3BlcnR5IiwiVHlwZUVycm9yIiwiYXNzZXJ0IiwiQXNzZXJ0RXJyb3IiLCJTT1VSQ0VfTkFNRVNQQUNFIiwiSW52b2tlRXJyb3IiLCJNZXNzYWdlVGltZW91dEVycm9yIiwiTWVzc2FnZUVycm9yIiwiX19jcmVhdGVCaW5kaW5nIiwiX19leHBvcnRTdGFyIiwiX19pbXBvcnREZWZhdWx0IiwiT2ZmaWNlU0RLTWVzc2FnZUV2ZW50IiwiaXNPZmZpY2VTREtNZXNzYWdlRXZlbnRMaWtlIiwiT2ZmaWNlU0RLQnJvYWRjYXN0Q2hhbm5lbCIsIm9yaWdpbiIsImVtaXR0ZXIiLCJjaGFubmVsSWQiLCJhc3NpZ24iLCJtZXNzYWdlSWQiLCJ0cmltIiwiZGVmaW5lUHJvcGVydGllcyIsIl9fYXdhaXRlciIsInRocm93IiwiZG9uZSIsIl9fZ2VuZXJhdG9yIiwibGFiZWwiLCJzZW50IiwidHJ5cyIsIm9wcyIsInJldHVybiIsInBvcCIsIl9fc3ByZWFkQXJyYXkiLCJDb250ZXh0VHlwZSIsIkRFQlVHX05BTUVTUEFDRSIsIklOVk9LRV9ERUZBVVRMX1RJTUVPVVQiLCJpbnZva2VIYW5kbGVycyIsImV2ZW50SGFuZGxlcnMiLCJlbWl0dGVySWQiLCJfZGVidWdOYW1lc3BhY2UiLCJkZWJ1Z05hbWVzcGFjZSIsImF1dG9TdHJ1Y3R1cmVkQ2xvbmUiLCJicm9hZGNhc3RDaGFubmVsT3B0aW9ucyIsImluaXRNZXNzYWdlRXZlbnQiLCJvcmlnaW5NZXNzYWdlIiwiZGlzdHJpYnV0ZU1lc3NhZ2UiLCJjaGFubmVsIiwibG9jYXRpb24iLCJzdHJ1Y3R1cmVkQ2xvbmUiLCJyZXBsYWNlciIsImlzQXJyYXkiLCJoYW5kbGVyIiwiYXVkaWVuY2UiLCJoYW5kbGVycyIsIm1lcmdlQ29udGV4dHMiLCJzdHJ1Y3R1cmVkQ2xvbmVkIiwib25NZXNzYWdlQXJyaXZlIiwiSW52b2tlUmVxdWVzdCIsImhhbmRsZUludm9rZVJlcXVlc3QiLCJJbnZva2VSZXNwb25zZSIsImhhbmRsZUludm9rZVJlc3BvbnNlIiwiYXJncyIsImVycm9yIiwiaW52b2tlIiwicGF5bG9hZCIsImFkZEludm9rZUhhbmRsZXIiLCJyZW1vdmVJbnZva2VIYW5kbGVyIiwiQXJyYXlCdWZmZXIiLCJEYXRhVmlldyIsIkZpbGUiLCJGaWxlTGlzdCIsIkJsb2IiLCJJbWFnZUJpdG1hcCIsIkltYWdlRGF0YSIsImdldFByb3RvdHlwZU9mIiwiVWludDhBcnJheSIsImNyeXB0byIsIm1zQ3J5cHRvIiwiZ2V0UmFuZG9tVmFsdWVzIiwicGFkU3RhcnQiLCJnZXRTaXplIiwicmVtb3ZlQWxsIiwicnVuQWxsIiwiV29ya2VyR2xvYmFsU2NvcGUiLCJ0b1N0cmluZ1RhZyIsImNhY2hlZFNldFRpbWVvdXQiLCJjYWNoZWRDbGVhclRpbWVvdXQiLCJkZWZhdWx0U2V0VGltb3V0IiwiZGVmYXVsdENsZWFyVGltZW91dCIsInJ1blRpbWVvdXQiLCJjdXJyZW50UXVldWUiLCJxdWV1ZSIsImRyYWluaW5nIiwicXVldWVJbmRleCIsImNsZWFuVXBOZXh0VGljayIsImRyYWluUXVldWUiLCJsZW4iLCJtYXJrZXIiLCJydW5DbGVhclRpbWVvdXQiLCJJdGVtIiwibm9vcCIsImRpciIsInNjb3BlIiwicHJvZHVjdCIsIlByb3h5IiwicmV2b2NhYmxlIiwiUHJveHlQb2x5ZmlsbCIsImxhc3RSZXZva2VGbiIsImlzT2JqZWN0IiwidmFsaWRhdGVQcm90byIsInByb3RvIiwiJE9iamVjdCIsImNhbkNyZWF0ZU51bGxQcm90b09iamVjdHMiLCJvYmplY3RDcmVhdGUiLCJTeW50YXhFcnJvciIsIlQiLCJnZXRQcm90byIsIk8iLCJ1bmRlZmluZWQiLCJ0aHJvd1Jldm9rZWQiLCJ0cmFwIiwidW5zYWZlSGFuZGxlciIsImsiLCJwcm94eSIsImlzTWV0aG9kIiwidXNpbmdOZXciLCJnZXR0ZXIiLCJwcm9wIiwic2V0dGVyIiwicHJvcGVydHlOYW1lcyIsImdldE93blByb3BlcnR5TmFtZXMiLCJwcm9wZXJ0eU1hcCIsInJlYWwiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJkZXNjIiwicHJvdG90eXBlT2siLCJzZXRQcm90byIsInNlYWwiLCJjYWxsYmFjayIsImV2dEFyciIsImV2dHMiLCJsaXZlRXZlbnRzIiwiZ2xvYmFsVGhpcyIsIkFVRCIsIlNNX1BBUkFNU19LRVkiLCJTVVBQT1JURURfTEFOR1VBR0VTIiwiSEVBREVSX0JBUlNfTUVUSE9EIiwiTWVzc2FnZUV2ZW50IiwiSW52b2tlTWV0aG9kIiwiX2ZpbGVUeXBlIiwiRmlsZVR5cGUiLCJVbmtub3duIiwibWVzc2FnZUhhbmRsZXIiLCJfcmVhZHlTdGF0ZSIsIlJlYWR5U3RhdGUiLCJMb2FkaW5nIiwiY29sbGFib3JhdG9ycyIsImhlYWRlckJhcnNWaXNpYmxlIiwiaGVhZGVyQmFyc0NvbW1hbmRzIiwiaGVhZGVyQmFyc0NvbW1hbmRPdmVycmlkZXMiLCJoZWFkZXJCYXJzQ29tbWFuZFJlZnMiLCJwcmVsb2FkQWNrVGltZW91dE1zIiwicHJlbG9hZERvbmVUaW1lb3V0TXMiLCJwcmVsb2FkUmVhZHlUaW1lb3V0TXMiLCJjb25uZWN0T3B0aW9ucyIsInVzZXJVdWlkIiwibm9ybWFsaXplZEVtcHR5UGFnZSIsIm5vcm1hbGl6ZUVtcHR5UGFnZU9wdGlvbnMiLCJlbXB0eVBhZ2UiLCJjb250YWluZXIiLCJIVE1MRWxlbWVudCIsInRhZ05hbWUiLCJlbmRwb2ludCIsIlVSTCIsInNhbWVPcmlnaW4iLCJwYXRobmFtZSIsImFwaUFkYXB0b3IiLCJhcGlBZGFwdG9yQ29udGV4dCIsInN0YXJ0UGFyYW1zIiwiU3RhcnRQYXJhbXMiLCJzbVBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsInNlYXJjaCIsIm9uVmlld3BvcnRSZXNpemUiLCJldmVudCIsIlNES0V2ZW50IiwiVmlld3BvcnRSZXNpemUiLCJnZXRDb250YWluZXJSZWN0IiwiZXJyIiwiaW5pdENoYW5uZWwiLCJoZWFkZXJCYXJzIiwiaW5pdEhlYWRlckJhcnNGYWNhZGUiLCJtZXNzYWdlRXhwaXJlcyIsImlzTmFOIiwiaGFuZGxlZE1lc3NhZ2VDYWNoZSIsImV2dCIsInNob3VsZEhhbmRsZU1lc3NhZ2UiLCJnZXRFZGl0b3IiLCJlZGl0b3IiLCJzZXRDcmVkZW50aWFscyIsIlNldENyZWRlbnRpYWxzIiwic2V0U2lnbmF0dXJlIiwic2lnbmF0dXJlIiwic2V0VG9rZW4iLCJnZXRQZXJmb3JtYW5jZUVudHJpZXMiLCJSZXF1ZXN0UGVyZm9ybWFuY2VFbnRyaWVzIiwiZGlzY29ubmVjdCIsImVsZW1lbnQiLCJwYXJlbnRFbGVtZW50IiwicmVtb3ZlQ2hpbGQiLCJ2aXN1YWxWaWV3cG9ydCIsIkxvYWRpbmdFZGl0b3IiLCJpbml0SWZyYW1lIiwiYXBwZW5kQ2hpbGQiLCJydW5QcmVsb2FkSGFuZHNoYWtlIiwiaW5pdEVkaXRvciIsInJlYWR5U3RhdGVIYW5kbGVyIiwic3RhdGUiLCJmaWxlVHlwZSIsIlJlYWR5IiwiRXZlbnQiLCJEb2N1bWVudCIsIkRvY3VtZW50UHJvIiwiZG9jdW1lbnRQcm8iLCJTcHJlYWRzaGVldCIsInNwcmVhZHNoZWV0IiwiUHJlc2VudGF0aW9uIiwicHJlc2VudGF0aW9uIiwiVGFibGUiLCJGb3JtIiwiZm9ybSIsIkZsb3djaGFydCIsImZsb3djaGFydCIsImlmcmFtZSIsImNyZWF0ZUVsZW1lbnQiLCJib3JkZXIiLCJvdmVyZmxvdyIsIndpZHRoIiwiaGVpZ2h0IiwiZGlzcGxheSIsImFsbG93IiwiYWxsb3dQb2xpY3kiLCJhbGxvd0Z1bGxzY3JlZW4iLCJ1cmwiLCJmaWxlSWQiLCJub3RFbXB0eVN0cmluZyIsInBhcmFtcyIsInNlYXJjaFBhcmFtcyIsImRldmljZU1vZGUiLCJzaG93TG9hZGluZ0VmZmVjdCIsInNob3dMb2FkaW5nIiwibG9hZGluZ09wdGlvbnMiLCJsYW5nIiwic3JjIiwiZmlsZUd1aWQiLCJyZXF1ZXN0SWQiLCJyZWFkeVJlc29sdmVkIiwiYWNrUmVzb2x2ZWQiLCJkb25lUmVzb2x2ZWQiLCJhY2tUaW1lciIsImRvbmVUaW1lciIsImNsZWFudXAiLCJoYW5kbGVNZXNzYWdlIiwic2VuZEluaXQiLCJjb250ZW50V2luZG93IiwibW9kZSIsImNvZGUiLCJtc2ciLCJFRElUT1JfUkVOREVSRURfRVZFTlQiLCJFZGl0b3JSZW5kZXJlZCIsIlNES0luaXQiLCJvcHRzIiwidG9VcHBlckNhc2UiLCJEaXNwYXRjaFNES0V2ZW50IiwiYXBwbHlIZWFkZXJCYXJzQ2hhbmdlZCIsIkRpc3BhdGNoRWRpdG9yRXZlbnQiLCJ1cGRhdGVDb2xsYWJvcmF0b3JzIiwiRU1QVFlfUEFHRV9FVkVOVFMiLCJpc0VtcHR5UGFnZUV2ZW50IiwiYmluZENvbnRhaW5lck1ldGhvZEhhbmRsZXJzIiwiQ29udGFpbmVyTWV0aG9kIiwiR2VuZXJhdGVVcmwiLCJpbmZvIiwiZ2VuZXJhdGVVcmwiLCJIYW5kbGVDdXN0b21UYXNrIiwidGFza0lkIiwiaGFuZGxlQ3VzdG9tVGFzayIsIk9wZW5MaW5rIiwib3BlbkxpbmsiLCJHZXRGaWxlSW5mb0Zyb21VcmwiLCJnZXRGaWxlSW5mb0Zyb21VcmwiLCJNZW50aW9uQ2xpY2tIYW5kbGVyRm9yTW9iaWxlIiwibWVudGlvbkNsaWNrSGFuZGxlckZvck1vYmlsZSIsInJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ4IiwiaXNNZW50aW9uIiwibWVudGlvbkluZm8iLCJsZWZ0IiwidG9wIiwiR2V0Q29udGFpbmVyUmVjdCIsIlNob3dUb2FzdCIsInNob3dUb2FzdCIsIkdldENyZWRlbnRpYWxzIiwiZ2V0Q3JlZGVudGlhbHMiLCJmYWNhZGUiLCJ2aXNpYmxlIiwiZ2V0VmlzaWJsZSIsInN5bmNIZWFkZXJCYXJzVmlzaWJsZSIsInNldFZpc2libGUiLCJzZXRIZWFkZXJCYXJzVmlzaWJsZSIsImFkZENvbW1hbmQiLCJjb21tYW5kIiwicG9zQ29tbWFuZCIsInBvcyIsIm9uQ2xpY2siLCJjb21tYW5kUGF5bG9hZCIsImludm9rZUhlYWRlckJhcnMiLCJhZGRlZCIsImNsaWNrSGFuZGxlciIsImdldENvbW1hbmQiLCJnZXRIZWFkZXJCYXJzQ29tbWFuZFJlZiIsImxpc3RWaWV3Q29tbWFuZHMiLCJjb21tYW5kcyIsInN5bmNIZWFkZXJCYXJzQ29tbWFuZHMiLCJzZXRUaXRsZURyYWZ0IiwiY29uZmlybVRpdGxlQ2hhbmdlIiwic25hcHNob3QiLCJleGlzdGluZyIsInJlZiIsImRpc2FibGVkIiwiZWRpdGFibGUiLCJvbkNvbW1hbmRDbGljayIsImdldFN0YXRlIiwiY3VycmVudCIsImFkanVzdEV2ZW50TmFtZSIsImluc3QiLCJMaXN0ZW5FZGl0b3JFdmVudCIsImdldENvbGxhYm9yYXRvcnMiLCJjcmVhdGVOZXN0ZWRQcm94eSIsInBhdGgiLCJfdGFyZ2V0IiwiX3RoaXNBcmciLCJJbnZva2VFZGl0b3JNZXRob2QiLCJ2aWV3cG9ydFdpZHRoIiwiaW5uZXJXaWR0aCIsInZpZXdwb3J0SGVpZ2h0IiwiaW5uZXJIZWlnaHQiLCJib3R0b20iLCJyaWdodCIsInNjcm9sbFRvcCIsInNjcm9sbGluZ0VsZW1lbnQiLCJvZmZzZXRMZWZ0Iiwib2Zmc2V0VG9wIiwicGFnZUxlZnQiLCJwYWdlVG9wIiwic2NhbGUiLCJPZmZpY2VTREsiLCJjb25kaXRpb24iLCJzZGsiLCJBTExfRU1QVFlfUEFHRV9TQ0VORVMiLCJTVEFSVF9QQVJBTVNfRklFTEQiLCJyZXNvbHZlU2NlbmVzIiwiZmlsdGVyZWQiLCJzY2VuZSIsInJlc29sdmVUb2tlbkV4cGlyZWRTdHJhdGVneSIsInBpY2tTdHJpbmciLCJyZXNvbHZlQWN0aW9uIiwicmVzb2x2ZUNvbnRlbnRPdmVycmlkZSIsImRlc2NyaXB0aW9uIiwicHJpbWFyeSIsInNlY29uZGFyeSIsInJlc29sdmVPdmVycmlkZXMiLCJyZXNvbHZlZCIsInNjZW5lcyIsInRva2VuRXhwaXJlZFN0cmF0ZWd5Iiwib3ZlcnJpZGVzIiwicm5kczgiLCJybmciLCJieXRlVG9IZXgiLCJzdWJzdHIiLCJvZmZzZXQiLCJfbm9kZUlkIiwiX2Nsb2Nrc2VxIiwiX2xhc3RNU2VjcyIsIl9sYXN0TlNlY3MiLCJidWYiLCJjbG9ja3NlcSIsInNlZWRCeXRlcyIsIm1zZWNzIiwibnNlY3MiLCJkdCIsInRsIiwidG1oIiwiaGFzaGZ1bmMiLCJnZW5lcmF0ZVVVSUQiLCJ1bmVzY2FwZSIsImVuY29kZVVSSUNvbXBvbmVudCIsInN0cmluZ1RvQnl0ZXMiLCJETlMiLCJnZXRPdXRwdXRMZW5ndGgiLCJpbnB1dExlbmd0aDgiLCJzYWZlQWRkIiwibHN3IiwibWQ1Y21uIiwicSIsIm51bSIsImNudCIsIm1kNWZmIiwibWQ1Z2ciLCJtZDVoaCIsIm1kNWlpIiwidjM1Iiwib3V0cHV0IiwibGVuZ3RoMzIiLCJoZXhUYWIiLCJoZXgiLCJjaGFyQXQiLCJtZDVUb0hleEVuY29kZWRBcnJheSIsIm9sZGEiLCJvbGRiIiwib2xkYyIsIm9sZGQiLCJ3b3Jkc1RvTWQ1IiwibGVuZ3RoOCIsIlVpbnQzMkFycmF5IiwiYnl0ZXNUb1dvcmRzIiwicm5kcyIsInoiLCJST1RMIiwiSyIsIkgiLCJOIiwiY2VpbCIsIk0iLCJwb3ciLCJfaTIiLCJXIiwiX3QiLCJfdDIiLCJfYSIsIl9fdmFsdWVzIiwiX19yZWFkIiwiYXIiLCJjb252ZXJ0RmlsZVR5cGUiLCJGaWxlVHlwZUFsaWFzIiwiTWluZG1hcCIsIkJvYXJkIiwiZV8xIiwiZV8yIiwiX2IiLCJfYyIsImVudHJpZXMiLCJfZCIsIl9lIiwiZV8xXzEiLCJfZiIsIl9nIiwiX2giLCJlXzJfMSIsImlzU0RLRXZlbnRNZXNzYWdlIiwiZnJlZXplIiwiazIiLCJ3cml0YWJsZSIsIlVybFNoYXJpbmdUeXBlIiwiU3ByZWFkc2hlZXRTaGFyaW5nRnJvbSIsIm1vZCIsImlzX3BsYWluX29ial8xIiwiYmFzZTYyIiwicGFyYW1zXzEiLCJwYXJhbSIsImd1aWQiLCJwYXJhbVN0ciIsInBhcmVudCIsImVudHJ5VW5iaW5kIiwiaXNDYWxsYWJsZSIsInRyeVRvU3RyaW5nIiwiJFR5cGVFcnJvciIsImFyZ3VtZW50IiwiaXNDb25zdHJ1Y3RvciIsImlzUG9zc2libGVQcm90b3R5cGUiLCIkU3RyaW5nIiwid2VsbEtub3duU3ltYm9sIiwiVU5TQ09QQUJMRVMiLCJBcnJheVByb3RvdHlwZSIsImlzUHJvdG90eXBlT2YiLCJpdCIsIlByb3RvdHlwZSIsInRvT2JqZWN0IiwiY2FsbFdpdGhTYWZlSXRlcmF0aW9uQ2xvc2luZyIsImlzQXJyYXlJdGVyYXRvck1ldGhvZCIsImxlbmd0aE9mQXJyYXlMaWtlIiwiY3JlYXRlUHJvcGVydHkiLCJnZXRJdGVyYXRvciIsImdldEl0ZXJhdG9yTWV0aG9kIiwiJEFycmF5IiwiYXJyYXlMaWtlIiwiSVNfQ09OU1RSVUNUT1IiLCJhcmd1bWVudHNMZW5ndGgiLCJtYXBmbiIsIm1hcHBpbmciLCJzdGVwIiwiaXRlcmF0b3JNZXRob2QiLCJpbmRleCIsInRvSW5kZXhlZE9iamVjdCIsInRvQWJzb2x1dGVJbmRleCIsImNyZWF0ZU1ldGhvZCIsIklTX0lOQ0xVREVTIiwiJHRoaXMiLCJlbCIsImZyb21JbmRleCIsImluZGV4T2YiLCJ1bmN1cnJ5VGhpcyIsImFycmF5U2xpY2UiLCJjb21wYXJlZm4iLCJtaWRkbGUiLCJsbGVuZ3RoIiwicmxlbmd0aCIsImxpbmRleCIsInJpbmRleCIsImFuT2JqZWN0IiwiaXRlcmF0b3JDbG9zZSIsIkVOVFJJRVMiLCJJVEVSQVRPUiIsIlNBRkVfQ0xPU0lORyIsImNhbGxlZCIsIml0ZXJhdG9yV2l0aFJldHVybiIsIlNLSVBfQ0xPU0lORyIsIklURVJBVElPTl9TVVBQT1JUIiwib2JqZWN0Iiwic3RyaW5nU2xpY2UiLCJUT19TVFJJTkdfVEFHX1NVUFBPUlQiLCJjbGFzc29mUmF3IiwiVE9fU1RSSU5HX1RBRyIsIkNPUlJFQ1RfQVJHVU1FTlRTIiwidGFnIiwidHJ5R2V0IiwiY2FsbGVlIiwiaGFzT3duIiwib3duS2V5cyIsImdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSIsImRlZmluZVByb3BlcnR5TW9kdWxlIiwiZXhjZXB0aW9ucyIsImZhaWxzIiwiRiIsIkRFU0NSSVBUT1JTIiwiY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yIiwiYml0bWFwIiwibWFrZUJ1aWx0SW4iLCJkZXNjcmlwdG9yIiwiZGVmaW5lR2xvYmFsUHJvcGVydHkiLCJzaW1wbGUiLCJnbG9iYWwiLCJ1bnNhZmUiLCJub25Db25maWd1cmFibGUiLCJub25Xcml0YWJsZSIsImRlZmluZUJ1aWx0SW4iLCJFWElTVFMiLCJDU1NSdWxlTGlzdCIsIkNTU1N0eWxlRGVjbGFyYXRpb24iLCJDU1NWYWx1ZUxpc3QiLCJDbGllbnRSZWN0TGlzdCIsIkRPTVJlY3RMaXN0IiwiRE9NU3RyaW5nTGlzdCIsIkRPTVRva2VuTGlzdCIsIkRhdGFUcmFuc2Zlckl0ZW1MaXN0IiwiSFRNTEFsbENvbGxlY3Rpb24iLCJIVE1MQ29sbGVjdGlvbiIsIkhUTUxGb3JtRWxlbWVudCIsIkhUTUxTZWxlY3RFbGVtZW50IiwiTWVkaWFMaXN0IiwiTWltZVR5cGVBcnJheSIsIk5hbWVkTm9kZU1hcCIsIk5vZGVMaXN0IiwiUGFpbnRSZXF1ZXN0TGlzdCIsIlBsdWdpbiIsIlBsdWdpbkFycmF5IiwiU1ZHTGVuZ3RoTGlzdCIsIlNWR051bWJlckxpc3QiLCJTVkdQYXRoU2VnTGlzdCIsIlNWR1BvaW50TGlzdCIsIlNWR1N0cmluZ0xpc3QiLCJTVkdUcmFuc2Zvcm1MaXN0IiwiU291cmNlQnVmZmVyTGlzdCIsIlN0eWxlU2hlZXRMaXN0IiwiVGV4dFRyYWNrQ3VlTGlzdCIsIlRleHRUcmFja0xpc3QiLCJUb3VjaExpc3QiLCJjbGFzc0xpc3QiLCJkb2N1bWVudENyZWF0ZUVsZW1lbnQiLCJET01Ub2tlbkxpc3RQcm90b3R5cGUiLCJDT05TVFJVQ1RPUiIsIk1FVEhPRCIsIlBlYmJsZSIsIkVOVklST05NRU5UIiwiRGVubyIsInY4IiwiY2xhc3NvZiIsInVzZXJBZ2VudFN0YXJ0c1dpdGgiLCJzdHJpbmciLCJCdW4iLCIkRXJyb3IiLCJURVNUIiwiVjhfT1JfQ0hBS1JBX1NUQUNLX0VOVFJZIiwiSVNfVjhfT1JfQ0hBS1JBX1NUQUNLIiwiZHJvcEVudHJpZXMiLCJwcmVwYXJlU3RhY2tUcmFjZSIsImNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSIsImNsZWFyRXJyb3JTdGFjayIsIkVSUk9SX1NUQUNLX0lOU1RBTExBQkxFIiwiY2FwdHVyZVN0YWNrVHJhY2UiLCJjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzIiwiaXNGb3JjZWQiLCJ0YXJnZXRQcm9wZXJ0eSIsInNvdXJjZVByb3BlcnR5IiwiVEFSR0VUIiwiR0xPQkFMIiwiU1RBVElDIiwic3RhdCIsImRvbnRDYWxsR2V0U2V0IiwiZm9yY2VkIiwic2hhbSIsIk5BVElWRV9CSU5EIiwiRnVuY3Rpb25Qcm90b3R5cGUiLCJSZWZsZWN0IiwiYUNhbGxhYmxlIiwidGhhdCIsImdldERlc2NyaXB0b3IiLCJQUk9QRVIiLCJDT05GSUdVUkFCTEUiLCJ1bmN1cnJ5VGhpc1dpdGhCaW5kIiwiZ2V0TWV0aG9kIiwiaXNOdWxsT3JVbmRlZmluZWQiLCJJdGVyYXRvcnMiLCJ1c2luZ0l0ZXJhdG9yIiwiViIsIlAiLCJmdW5jIiwiY2hlY2siLCJnZXRCdWlsdEluIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJzdG9yZSIsImZ1bmN0aW9uVG9TdHJpbmciLCJpbnNwZWN0U291cmNlIiwiY2F1c2UiLCJOQVRJVkVfV0VBS19NQVAiLCJzaGFyZWQiLCJzaGFyZWRLZXkiLCJoaWRkZW5LZXlzIiwiT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQiLCJXZWFrTWFwIiwibWV0YWRhdGEiLCJTVEFURSIsImVuZm9yY2UiLCJnZXR0ZXJGb3IiLCJUWVBFIiwiZG9jdW1lbnRBbGwiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvclJlZ0V4cCIsIklOQ09SUkVDVF9UT19TVFJJTkciLCJpc0NvbnN0cnVjdG9yTW9kZXJuIiwiaXNDb25zdHJ1Y3RvckxlZ2FjeSIsInJlcGxhY2VtZW50IiwiZmVhdHVyZSIsImRldGVjdGlvbiIsIm5vcm1hbGl6ZSIsIlBPTFlGSUxMIiwiTkFUSVZFIiwiVVNFX1NZTUJPTF9BU19VSUQiLCIkU3ltYm9sIiwiUmVzdWx0Iiwic3RvcHBlZCIsIlJlc3VsdFByb3RvdHlwZSIsIml0ZXJhYmxlIiwidW5ib3VuZEZ1bmN0aW9uIiwiaXRlckZuIiwiQVNfRU5UUklFUyIsIklTX1JFQ09SRCIsIklTX0lURVJBVE9SIiwiSU5URVJSVVBURUQiLCJzdG9wIiwiY2FsbEZuIiwia2luZCIsImlubmVyUmVzdWx0IiwiaW5uZXJFcnJvciIsIkl0ZXJhdG9yUHJvdG90eXBlIiwic2V0VG9TdHJpbmdUYWciLCJyZXR1cm5UaGlzIiwiSXRlcmF0b3JDb25zdHJ1Y3RvciIsIk5BTUUiLCJFTlVNRVJBQkxFX05FWFQiLCIkIiwiSVNfUFVSRSIsIkZ1bmN0aW9uTmFtZSIsImNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IiLCJJdGVyYXRvcnNDb3JlIiwiUFJPUEVSX0ZVTkNUSU9OX05BTUUiLCJDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSIsIkJVR0dZX1NBRkFSSV9JVEVSQVRPUlMiLCJLRVlTIiwiVkFMVUVTIiwiSXRlcmFibGUiLCJERUZBVUxUIiwiSVNfU0VUIiwiRk9SQ0VEIiwiQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlIiwiS0VZIiwiZ2V0SXRlcmF0aW9uTWV0aG9kIiwiS0lORCIsImRlZmF1bHRJdGVyYXRvciIsIkl0ZXJhYmxlUHJvdG90eXBlIiwiSU5DT1JSRUNUX1ZBTFVFU19OQU1FIiwibmF0aXZlSXRlcmF0b3IiLCJhbnlOYXRpdmVJdGVyYXRvciIsInZhbHVlcyIsIlByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZSIsImFycmF5SXRlcmF0b3IiLCJ0b0xlbmd0aCIsIm9iaiIsIkludGVybmFsU3RhdGVNb2R1bGUiLCJlbmZvcmNlSW50ZXJuYWxTdGF0ZSIsImdldEludGVybmFsU3RhdGUiLCJDT05GSUdVUkFCTEVfTEVOR1RIIiwiVEVNUExBVEUiLCJhcml0eSIsInRydW5jIiwibm90aWZ5IiwidG9nZ2xlIiwicHJvbWlzZSIsInNhZmVHZXRCdWlsdEluIiwibWFjcm90YXNrIiwiUXVldWUiLCJJU19JT1MiLCJJU19JT1NfUEVCQkxFIiwiSVNfV0VCT1NfV0VCS0lUIiwiSVNfTk9ERSIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJXZWJLaXRNdXRhdGlvbk9ic2VydmVyIiwibWljcm90YXNrIiwiZmx1c2giLCJkb21haW4iLCJleGl0IiwiaGVhZCIsImVudGVyIiwiY3JlYXRlVGV4dE5vZGUiLCJvYnNlcnZlIiwiY2hhcmFjdGVyRGF0YSIsIlByb21pc2VDYXBhYmlsaXR5IiwiJCRyZXNvbHZlIiwiJCRyZWplY3QiLCIkZGVmYXVsdCIsIm9iamVjdEtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZSIsIkluZGV4ZWRPYmplY3QiLCIkYXNzaWduIiwiQSIsIkIiLCJzeW1ib2wiLCJjaHIiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJTIiwiYWN0aXZlWERvY3VtZW50IiwiZGVmaW5lUHJvcGVydGllc01vZHVsZSIsImVudW1CdWdLZXlzIiwiaHRtbCIsIlBST1RPVFlQRSIsIlNDUklQVCIsIklFX1BST1RPIiwiRW1wdHlDb25zdHJ1Y3RvciIsInNjcmlwdFRhZyIsImNvbnRlbnQiLCJMVCIsIk51bGxQcm90b09iamVjdFZpYUFjdGl2ZVgiLCJ3cml0ZSIsInRlbXAiLCJwYXJlbnRXaW5kb3ciLCJOdWxsUHJvdG9PYmplY3QiLCJBY3RpdmVYT2JqZWN0IiwiaWZyYW1lRG9jdW1lbnQiLCJKUyIsIlByb3BlcnRpZXMiLCJWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyIsInByb3BzIiwiSUU4X0RPTV9ERUZJTkUiLCJ0b1Byb3BlcnR5S2V5IiwiJGRlZmluZVByb3BlcnR5IiwiJGdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIkVOVU1FUkFCTEUiLCJXUklUQUJMRSIsIkF0dHJpYnV0ZXMiLCJpbnRlcm5hbE9iamVjdEtleXMiLCJDT1JSRUNUX1BST1RPVFlQRV9HRVRURVIiLCJPYmplY3RQcm90b3R5cGUiLCIkcHJvcGVydHlJc0VudW1lcmFibGUiLCJOQVNIT1JOX0JVRyIsInVuY3VycnlUaGlzQWNjZXNzb3IiLCJyZXF1aXJlT2JqZWN0Q29lcmNpYmxlIiwiYVBvc3NpYmxlUHJvdG90eXBlIiwiQ09SUkVDVF9TRVRURVIiLCJwcmVmIiwidmFsIiwidmFsdWVPZiIsImdldE93blByb3BlcnR5TmFtZXNNb2R1bGUiLCJOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IiLCJWOF9WRVJTSU9OIiwiTmF0aXZlUHJvbWlzZVByb3RvdHlwZSIsIlNQRUNJRVMiLCJTVUJDTEFTU0lORyIsIk5BVElWRV9QUk9NSVNFX1JFSkVDVElPTl9FVkVOVCIsIlByb21pc2VSZWplY3Rpb25FdmVudCIsIkZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SIiwiUFJPTUlTRV9DT05TVFJVQ1RPUl9TT1VSQ0UiLCJHTE9CQUxfQ09SRV9KU19QUk9NSVNFIiwiRmFrZVByb21pc2UiLCJSRUpFQ1RJT05fRVZFTlQiLCJuZXdQcm9taXNlQ2FwYWJpbGl0eSIsInByb21pc2VDYXBhYmlsaXR5IiwiY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uIiwidGFpbCIsIml0ZW0iLCJlbnRyeSIsImRlZmluZUJ1aWx0SW5BY2Nlc3NvciIsIkNPTlNUUlVDVE9SX05BTUUiLCJDb25zdHJ1Y3RvciIsIlRBRyIsInVpZCIsIlNIQVJFRCIsImNvcHlyaWdodCIsImxpY2Vuc2UiLCJhQ29uc3RydWN0b3IiLCJkZWZhdWx0Q29uc3RydWN0b3IiLCJ0b0ludGVnZXJPckluZmluaXR5IiwiQ09OVkVSVF9UT19TVFJJTkciLCJmaXJzdCIsInNlY29uZCIsInBvc2l0aW9uIiwiY29kZUF0IiwibWF4SW50IiwicmVnZXhOb25BU0NJSSIsInJlZ2V4U2VwYXJhdG9ycyIsIk9WRVJGTE9XX0VSUk9SIiwiJFJhbmdlRXJyb3IiLCJSYW5nZUVycm9yIiwiZGlnaXRUb0Jhc2ljIiwiYWRhcHQiLCJkZWx0YSIsIm51bVBvaW50cyIsImZpcnN0VGltZSIsImJhc2VNaW51c1RNaW4iLCJiYXNlIiwiY291bnRlciIsImV4dHJhIiwidWNzMmRlY29kZSIsImN1cnJlbnRWYWx1ZSIsImlucHV0TGVuZ3RoIiwiYmlhcyIsImJhc2ljTGVuZ3RoIiwiaGFuZGxlZENQQ291bnQiLCJoYW5kbGVkQ1BDb3VudFBsdXNPbmUiLCJxTWludXNUIiwiYmFzZU1pbnVzVCIsImxhYmVscyIsIiRsb2NhdGlvbiIsImRlZmVyIiwicG9ydCIsInZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoIiwic2V0SW1tZWRpYXRlIiwiY2xlYXJJbW1lZGlhdGUiLCJEaXNwYXRjaCIsIk1lc3NhZ2VDaGFubmVsIiwiT05SRUFEWVNUQVRFQ0hBTkdFIiwicnVubmVyIiwiZXZlbnRMaXN0ZW5lciIsImdsb2JhbFBvc3RNZXNzYWdlRGVmZXIiLCJwcm90b2NvbCIsImhvc3QiLCJwb3J0MiIsInBvcnQxIiwiaW1wb3J0U2NyaXB0cyIsIm1heCIsIm1pbiIsImludGVnZXIiLCJudW1iZXIiLCJpc1N5bWJvbCIsIm9yZGluYXJ5VG9QcmltaXRpdmUiLCJUT19QUklNSVRJVkUiLCJleG90aWNUb1ByaW0iLCJ0b1ByaW1pdGl2ZSIsInBvc3RmaXgiLCJwYXJhbXMyIiwidG9KU09OIiwiaHJlZiIsInVzZXJuYW1lIiwiaGFzaCIsIk5BVElWRV9TWU1CT0wiLCJwYXNzZWQiLCJyZXF1aXJlZCIsIldlbGxLbm93blN5bWJvbHNTdG9yZSIsImNyZWF0ZVdlbGxLbm93blN5bWJvbCIsIndpdGhvdXRTZXR0ZXIiLCJpbnN0YWxsRXJyb3JDYXVzZSIsImluc3RhbGxFcnJvclN0YWNrIiwiaXRlcmF0ZSIsIm5vcm1hbGl6ZVN0cmluZ0FyZ3VtZW50IiwiJEFnZ3JlZ2F0ZUVycm9yIiwiZXJyb3JzIiwiaXNJbnN0YW5jZSIsIkFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlIiwiZXJyb3JzQXJyYXkiLCJBZ2dyZWdhdGVFcnJvciIsIiRpbmNsdWRlcyIsImFkZFRvVW5zY29wYWJsZXMiLCJkZWZpbmVJdGVyYXRvciIsImNyZWF0ZUl0ZXJSZXN1bHRPYmplY3QiLCJBUlJBWV9JVEVSQVRPUiIsInNldEludGVybmFsU3RhdGUiLCJpdGVyYXRlZCIsIkFyZ3VtZW50cyIsIm5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlIiwicGVyZm9ybSIsImFsbFNldHRsZWQiLCJjYXBhYmlsaXR5IiwicHJvbWlzZVJlc29sdmUiLCJyZW1haW5pbmciLCJhbHJlYWR5Q2FsbGVkIiwic3RhdHVzIiwicmVhc29uIiwiJHByb21pc2VSZXNvbHZlIiwiUFJPTUlTRV9TVEFUSUNTX0lOQ09SUkVDVF9JVEVSQVRJT04iLCJQUk9NSVNFX0FOWV9FUlJPUiIsImFueSIsImFscmVhZHlSZXNvbHZlZCIsImFscmVhZHlSZWplY3RlZCIsIm9uUmVqZWN0ZWQiLCJJbnRlcm5hbCIsIk93blByb21pc2VDYXBhYmlsaXR5IiwibmF0aXZlVGhlbiIsInNldFNwZWNpZXMiLCJhbkluc3RhbmNlIiwic3BlY2llc0NvbnN0cnVjdG9yIiwidGFzayIsImhvc3RSZXBvcnRFcnJvcnMiLCJQcm9taXNlQ29uc3RydWN0b3JEZXRlY3Rpb24iLCJQUk9NSVNFIiwiTkFUSVZFX1BST01JU0VfU1VCQ0xBU1NJTkciLCJnZXRJbnRlcm5hbFByb21pc2VTdGF0ZSIsIlByb21pc2VDb25zdHJ1Y3RvciIsIlByb21pc2VQcm90b3R5cGUiLCJuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHkiLCJESVNQQVRDSF9FVkVOVCIsIlVOSEFORExFRF9SRUpFQ1RJT04iLCJpc1RoZW5hYmxlIiwiY2FsbFJlYWN0aW9uIiwicmVhY3Rpb24iLCJleGl0ZWQiLCJvayIsImZhaWwiLCJyZWplY3Rpb24iLCJvbkhhbmRsZVVuaGFuZGxlZCIsImlzUmVqZWN0Iiwibm90aWZpZWQiLCJyZWFjdGlvbnMiLCJvblVuaGFuZGxlZCIsImlzVW5oYW5kbGVkIiwidW53cmFwIiwiaW50ZXJuYWxSZWplY3QiLCJpbnRlcm5hbFJlc29sdmUiLCJ3cmFwcGVyIiwiZXhlY3V0b3IiLCJvbkZ1bGZpbGxlZCIsIlByb21pc2VXcmFwcGVyIiwid3JhcCIsIm9uRmluYWxseSIsImlzRnVuY3Rpb24iLCJjYXBhYmlsaXR5UmVqZWN0IiwiUHJvbWlzZUNvbnN0cnVjdG9yV3JhcHBlciIsIkNIRUNLX1dSQVBQRVIiLCJBQ0NFUFRfQVJHVU1FTlRTIiwiY2FsbGJhY2tmbiIsIndpdGhSZXNvbHZlcnMiLCIkZnJvbUNvZGVQb2ludCIsImZyb21Db2RlUG9pbnQiLCJlbGVtZW50cyIsIlNUUklOR19JVEVSQVRPUiIsInBvaW50IiwiRE9NSXRlcmFibGVzIiwiQXJyYXlJdGVyYXRvck1ldGhvZHMiLCJBcnJheVZhbHVlcyIsImhhbmRsZVByb3RvdHlwZSIsIkNvbGxlY3Rpb25Qcm90b3R5cGUiLCJDT0xMRUNUSU9OX05BTUUiLCJNRVRIT0RfTkFNRSIsIlVTRV9OQVRJVkVfVVJMIiwiZGVmaW5lQnVpbHRJbnMiLCIkdG9TdHJpbmciLCJhcnJheVNvcnQiLCJVUkxfU0VBUkNIX1BBUkFNUyIsIlVSTF9TRUFSQ0hfUEFSQU1TX0lURVJBVE9SIiwiZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSIsImdldEludGVybmFsSXRlcmF0b3JTdGF0ZSIsIm5hdGl2ZUZldGNoIiwiTmF0aXZlUmVxdWVzdCIsIkhlYWRlcnMiLCJSZXF1ZXN0UHJvdG90eXBlIiwiSGVhZGVyc1Byb3RvdHlwZSIsIiRwYXJzZUludCIsInNoaWZ0IiwicGx1cyIsIlZBTElEX0hFWCIsInBhcnNlSGV4T2N0ZXQiLCJzdGFydCIsIk5hTiIsImdldExlYWRpbmdPbmVzIiwib2N0ZXQiLCJjb3VudCIsIm1hc2siLCJ1dGY4RGVjb2RlIiwib2N0ZXRzIiwiY29kZVBvaW50IiwiZGVjb2RlZENoYXIiLCJieXRlU2VxdWVuY2VMZW5ndGgiLCJzZXF1ZW5jZUluZGV4IiwibmV4dEJ5dGUiLCJyZXBsYWNlbWVudHMiLCJzZXJpYWxpemUiLCJVUkxTZWFyY2hQYXJhbXNJdGVyYXRvciIsIlVSTFNlYXJjaFBhcmFtc1N0YXRlIiwicGFyc2VPYmplY3QiLCJwYXJzZVF1ZXJ5IiwiYmluZFVSTCIsInVwZGF0ZSIsImVudHJ5SXRlcmF0b3IiLCJlbnRyeU5leHQiLCJxdWVyeSIsImF0dHJpYnV0ZSIsImF0dHJpYnV0ZXMiLCJ1cGRhdGVVUkwiLCJVUkxTZWFyY2hQYXJhbXNDb25zdHJ1Y3RvciIsIlVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSIsImFwcGVuZCIsIiR2YWx1ZSIsImdldEFsbCIsImZvdW5kIiwiYm91bmRGdW5jdGlvbiIsImhlYWRlcnNIYXMiLCJoZWFkZXJzU2V0Iiwid3JhcFJlcXVlc3RPcHRpb25zIiwiaGVhZGVycyIsImJvZHkiLCJmZXRjaCIsIlJlcXVlc3RDb25zdHJ1Y3RvciIsIlJlcXVlc3QiLCIkVVJMU2VhcmNoUGFyYW1zIiwiJGRlbGV0ZSIsImRpbmRleCIsImVudHJpZXNMZW5ndGgiLCIkaGFzIiwiVEhST1dTX1dJVEhPVVRfQVJHVU1FTlRTIiwiY2FuUGFyc2UiLCJXUk9OR19BUklUWSIsInVybFN0cmluZyIsIkVPRiIsImFycmF5RnJvbSIsInRvQVNDSUkiLCJVUkxTZWFyY2hQYXJhbXNNb2R1bGUiLCJnZXRJbnRlcm5hbFVSTFN0YXRlIiwiZ2V0SW50ZXJuYWxTZWFyY2hQYXJhbXNTdGF0ZSIsIk5hdGl2ZVVSTCIsIm51bWJlclRvU3RyaW5nIiwiSU5WQUxJRF9TQ0hFTUUiLCJJTlZBTElEX0hPU1QiLCJJTlZBTElEX1BPUlQiLCJBTFBIQSIsIkFMUEhBTlVNRVJJQyIsIkRJR0lUIiwiSEVYX1NUQVJUIiwiT0NUIiwiREVDIiwiSEVYIiwiRk9SQklEREVOX0hPU1RfQ09ERV9QT0lOVCIsIkZPUkJJRERFTl9IT1NUX0NPREVfUE9JTlRfRVhDTFVESU5HX1BFUkNFTlQiLCJMRUFESU5HX0MwX0NPTlRST0xfT1JfU1BBQ0UiLCJUUkFJTElOR19DMF9DT05UUk9MX09SX1NQQUNFIiwiVEFCX0FORF9ORVdfTElORSIsInNlcmlhbGl6ZUhvc3QiLCJjb21wcmVzcyIsImlnbm9yZTAiLCJpcHY2IiwibWF4SW5kZXgiLCJtYXhMZW5ndGgiLCJjdXJyU3RhcnQiLCJjdXJyTGVuZ3RoIiwiZmluZExvbmdlc3RaZXJvU2VxdWVuY2UiLCJDMENvbnRyb2xQZXJjZW50RW5jb2RlU2V0IiwiZnJhZ21lbnRQZXJjZW50RW5jb2RlU2V0IiwicGF0aFBlcmNlbnRFbmNvZGVTZXQiLCJ1c2VyaW5mb1BlcmNlbnRFbmNvZGVTZXQiLCJwZXJjZW50RW5jb2RlIiwic3BlY2lhbFNjaGVtZXMiLCJmdHAiLCJmaWxlIiwiaHR0cCIsImh0dHBzIiwid3MiLCJ3c3MiLCJpc1dpbmRvd3NEcml2ZUxldHRlciIsIm5vcm1hbGl6ZWQiLCJzdGFydHNXaXRoV2luZG93c0RyaXZlTGV0dGVyIiwidGhpcmQiLCJpc1NpbmdsZURvdCIsInNlZ21lbnQiLCJTQ0hFTUVfU1RBUlQiLCJTQ0hFTUUiLCJOT19TQ0hFTUUiLCJTUEVDSUFMX1JFTEFUSVZFX09SX0FVVEhPUklUWSIsIlBBVEhfT1JfQVVUSE9SSVRZIiwiUkVMQVRJVkUiLCJSRUxBVElWRV9TTEFTSCIsIlNQRUNJQUxfQVVUSE9SSVRZX1NMQVNIRVMiLCJTUEVDSUFMX0FVVEhPUklUWV9JR05PUkVfU0xBU0hFUyIsIkFVVEhPUklUWSIsIkhPU1QiLCJIT1NUTkFNRSIsIlBPUlQiLCJGSUxFIiwiRklMRV9TTEFTSCIsIkZJTEVfSE9TVCIsIlBBVEhfU1RBUlQiLCJQQVRIIiwiQ0FOTk9UX0JFX0FfQkFTRV9VUkxfUEFUSCIsIlFVRVJZIiwiRlJBR01FTlQiLCJVUkxTdGF0ZSIsImlzQmFzZSIsImJhc2VTdGF0ZSIsImZhaWx1cmUiLCJzdGF0ZU92ZXJyaWRlIiwiY29kZVBvaW50cyIsImJ1ZmZlckNvZGVQb2ludHMiLCJwb2ludGVyIiwiYnVmZmVyIiwic2VlbkF0Iiwic2VlbkJyYWNrZXQiLCJzZWVuUGFzc3dvcmRUb2tlbiIsInNjaGVtZSIsInBhc3N3b3JkIiwiZnJhZ21lbnQiLCJjYW5ub3RCZUFCYXNlVVJMIiwiaXNTcGVjaWFsIiwiaW5jbHVkZXNDcmVkZW50aWFscyIsImVuY29kZWRDb2RlUG9pbnRzIiwicGFyc2VIb3N0Iiwic2hvcnRlblBhdGgiLCJudW1iZXJzU2VlbiIsImlwdjRQaWVjZSIsInN3YXBzIiwic3dhcCIsImFkZHJlc3MiLCJwaWVjZUluZGV4IiwicGFyc2VJUHY2IiwicGFydHNMZW5ndGgiLCJudW1iZXJzIiwicGFydCIsInJhZGl4IiwiaXB2NCIsInBhcnRzIiwicGFyc2VJUHY0IiwiY2Fubm90SGF2ZVVzZXJuYW1lUGFzc3dvcmRQb3J0IiwicGF0aFNpemUiLCJzZXRIcmVmIiwiZ2V0T3JpZ2luIiwiVVJMQ29uc3RydWN0b3IiLCJnZXRQcm90b2NvbCIsInNldFByb3RvY29sIiwiZ2V0VXNlcm5hbWUiLCJzZXRVc2VybmFtZSIsImdldFBhc3N3b3JkIiwic2V0UGFzc3dvcmQiLCJnZXRIb3N0Iiwic2V0SG9zdCIsImdldEhvc3RuYW1lIiwic2V0SG9zdG5hbWUiLCJob3N0bmFtZSIsImdldFBvcnQiLCJzZXRQb3J0IiwiZ2V0UGF0aG5hbWUiLCJzZXRQYXRobmFtZSIsImdldFNlYXJjaCIsInNldFNlYXJjaCIsImdldFNlYXJjaFBhcmFtcyIsImdldEhhc2giLCJzZXRIYXNoIiwiVVJMUHJvdG90eXBlIiwiYWNjZXNzb3JEZXNjcmlwdG9yIiwibmF0aXZlQ3JlYXRlT2JqZWN0VVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwibmF0aXZlUmV2b2tlT2JqZWN0VVJMIiwicmV2b2tlT2JqZWN0VVJMIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsImRlZmluaXRpb24iXSwic291cmNlUm9vdCI6IiJ9
|