Untitled
unknown
plain_text
3 years ago
52 kB
8
Indexable
!function(n){var e={};function t(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return n[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=n,t.c=e,t.d=function(n,e,r){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:r})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)t.d(r,o,function(e){return n[e]}.bind(null,o));return r},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=1)}([function(n,e,t){"use strict";n.exports=function(n){var e=[];return e.toString=function(){return this.map((function(e){var t=function(n,e){var t=n[1]||"",r=n[3];if(!r)return t;if(e&&"function"==typeof btoa){var o=(a=r,s=btoa(unescape(encodeURIComponent(JSON.stringify(a)))),c="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(s),"/*# ".concat(c," */")),i=r.sources.map((function(n){return"/*# sourceURL=".concat(r.sourceRoot||"").concat(n," */")}));return[t].concat(i).concat([o]).join("\n")}var a,s,c;return[t].join("\n")}(e,n);return e[2]?"@media ".concat(e[2]," {").concat(t,"}"):t})).join("")},e.i=function(n,t,r){"string"==typeof n&&(n=[[null,n,""]]);var o={};if(r)for(var i=0;i<this.length;i++){var a=this[i][0];null!=a&&(o[a]=!0)}for(var s=0;s<n.length;s++){var c=[].concat(n[s]);r&&o[c[0]]||(t&&(c[2]?c[2]="".concat(t," and ").concat(c[2]):c[2]=t),e.push(c))}},e}},function(n,e,t){"use strict";t.r(e);t(2);const r=chrome.runtime.getURL("icons/devil.svg");function o(n){const e=document.querySelectorAll("[role='main'] table"),t=e[e.length-1].querySelectorAll("span");t[t.length-1].insertAdjacentHTML("afterend",'<span id="spam-them-button">SPAM THEM BACK</span>'),document.getElementById("spam-them-button").addEventListener("click",n)}document.documentElement.style.setProperty("--devil-url",`url('${r}')`),async function(){InboxSDK.load(2,"sdk_gmail-sub-ext_9810d9ce43").then((function(n){let e="";function t(){const t=e,r=setTimeout(async()=>{fetch("https://audience.cnn.com/newsletters/api/1/subscriptions/add",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:t,emailAddress:t,newsletters:["breaking_news","five_things","five_things_sunday","coronavirus","health","good_stuff","reliable_sources","what_matters","point","provoke_persuade","global_briefing","meanwhile","nightcap","work_transformed","btb","ten","pop_life","markets_now","underscored","esp_breaking_news","esp_five_things","sleep","wisdom_project"]})})},1e4);n.ButterBar.showMessage({text:"They've been spammed back.",className:"spam-notification",messageKey:"spam",time:1e4,buttons:[{title:"Undo",onClick:()=>{n.ButterBar.hideMessage("spam"),clearTimeout(r)}}]})}n.Conversations.registerThreadViewHandler(n=>{o(t),e=n.getMessageViews()[0].getSender().emailAddress}),n.Compose.registerComposeViewHandler(n=>{n.on("destroy",e=>{n.isInlineReplyForm()&&o(t)})}),n.Toolbars.registerThreadButton({positions:["THREAD"],title:"SPAM THEM BACK",threadSection:"INBOX_STATE",iconClass:"spam-them-icon",iconUrl:r,onClick:t})}))}()},function(n,e,t){var r=t(3),o=t(4);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[n.i,o,""]]);var i={insert:"head",singleton:!1};r(o,i);n.exports=o.locals||{}},function(n,e,t){"use strict";var r,o=function(){return void 0===r&&(r=Boolean(window&&document&&document.all&&!window.atob)),r},i=function(){var n={};return function(e){if(void 0===n[e]){var t=document.querySelector(e);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(n){t=null}n[e]=t}return n[e]}}(),a=[];function s(n){for(var e=-1,t=0;t<a.length;t++)if(a[t].identifier===n){e=t;break}return e}function c(n,e){for(var t={},r=[],o=0;o<n.length;o++){var i=n[o],c=e.base?i[0]+e.base:i[0],u=t[c]||0,l="".concat(c," ").concat(u);t[c]=u+1;var d=s(l),A={css:i[1],media:i[2],sourceMap:i[3]};-1!==d?(a[d].references++,a[d].updater(A)):a.push({identifier:l,updater:m(A,e),references:1}),r.push(l)}return r}function u(n){var e=document.createElement("style"),r=n.attributes||{};if(void 0===r.nonce){var o=t.nc;o&&(r.nonce=o)}if(Object.keys(r).forEach((function(n){e.setAttribute(n,r[n])})),"function"==typeof n.insert)n.insert(e);else{var a=i(n.insert||"head");if(!a)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");a.appendChild(e)}return e}var l,d=(l=[],function(n,e){return l[n]=e,l.filter(Boolean).join("\n")});function A(n,e,t,r){var o=t?"":r.media?"@media ".concat(r.media," {").concat(r.css,"}"):r.css;if(n.styleSheet)n.styleSheet.cssText=d(e,o);else{var i=document.createTextNode(o),a=n.childNodes;a[e]&&n.removeChild(a[e]),a.length?n.insertBefore(i,a[e]):n.appendChild(i)}}function p(n,e,t){var r=t.css,o=t.media,i=t.sourceMap;if(o?n.setAttribute("media",o):n.removeAttribute("media"),i&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),n.styleSheet)n.styleSheet.cssText=r;else{for(;n.firstChild;)n.removeChild(n.firstChild);n.appendChild(document.createTextNode(r))}}var f=null,b=0;function m(n,e){var t,r,o;if(e.singleton){var i=b++;t=f||(f=u(e)),r=A.bind(null,t,i,!1),o=A.bind(null,t,i,!0)}else t=u(e),r=p.bind(null,t,e),o=function(){!function(n){if(null===n.parentNode)return!1;n.parentNode.removeChild(n)}(t)};return r(n),function(e){if(e){if(e.css===n.css&&e.media===n.media&&e.sourceMap===n.sourceMap)return;r(n=e)}else o()}}n.exports=function(n,e){(e=e||{}).singleton||"boolean"==typeof e.singleton||(e.singleton=o());var t=c(n=n||[],e);return function(n){if(n=n||[],"[object Array]"===Object.prototype.toString.call(n)){for(var r=0;r<t.length;r++){var o=s(t[r]);a[o].references--}for(var i=c(n,e),u=0;u<t.length;u++){var l=s(t[u]);0===a[l].references&&(a[l].updater(),a.splice(l,1))}t=i}}}},function(n,e,t){"use strict";t.r(e);var r=t(0),o=t.n(r)()(!0);o.push([n.i,'.spam-notification {\r\n background: #641cc5 !important;\r\n}\r\n\r\n.inboxsdk__butterbar-buttons span {\r\n color: #bca6e3 !important;\r\n}\r\n\r\n.spam-notification span {\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n.spam-them-icon img {\r\n width: 18px;\r\n height: 18px;\r\n}\r\n\r\n.inboxsdk__button_hover div::before {\r\n background: #e8dbf6 !important;\r\n}\r\n\r\n.inboxsdk__button_iconImg {\r\n position: relative;\r\n top: 2px;\r\n}\r\n\r\n#spam-them-button {\r\n font-family: Roboto, Helvetica, Arial, sans-serif;\r\n background: #641cc5;\r\n border-radius: 4px;\r\n box-sizing: border-box;\r\n color: white;\r\n cursor: pointer;\r\n height: 36px;\r\n outline: none;\r\n padding: 0px 14px;\r\n display: flex;\r\n align-items: center;\r\n line-height: 5px;\r\n font-size: 14px;\r\n}\r\n\r\n#spam-them-button::before,\r\n.inboxsdk__butterbar-text::before {\r\n content: "";\r\n display: block;\r\n background: var(--devil-url) no-repeat;\r\n width: 18px;\r\n height: 18px;\r\n float: left;\r\n margin-right: 14px;\r\n filter: invert(65%) sepia(11%) saturate(3853%) hue-rotate(215deg)\r\n brightness(95%) contrast(86%);\r\n}\r\n\r\n/*Trick to get the correct icon colors on hover */\r\n.inboxsdk__button .inboxsdk__button_iconImg {\r\n filter: invert(50%) sepia(0%) saturate(4550%) hue-rotate(296deg)\r\n brightness(92%) contrast(80%);\r\n}\r\n\r\n.inboxsdk__button_hover .inboxsdk__button_iconImg {\r\n filter: invert(11%) sepia(82%) saturate(7479%) hue-rotate(269deg)\r\n brightness(80%) contrast(92%);\r\n}\r\n',"",{version:3,sources:["webpack://src/content.css"],names:[],mappings:"AAAA;EACE,8BAA8B;AAChC;;AAEA;EACE,yBAAyB;AAC3B;;AAEA;EACE,aAAa;EACb,mBAAmB;AACrB;;AAEA;EACE,WAAW;EACX,YAAY;AACd;;AAEA;EACE,8BAA8B;AAChC;;AAEA;EACE,kBAAkB;EAClB,QAAQ;AACV;;AAEA;EACE,iDAAiD;EACjD,mBAAmB;EACnB,kBAAkB;EAClB,sBAAsB;EACtB,YAAY;EACZ,eAAe;EACf,YAAY;EACZ,aAAa;EACb,iBAAiB;EACjB,aAAa;EACb,mBAAmB;EACnB,gBAAgB;EAChB,eAAe;AACjB;;AAEA;;EAEE,WAAW;EACX,cAAc;EACd,sCAAsC;EACtC,WAAW;EACX,YAAY;EACZ,WAAW;EACX,kBAAkB;EAClB;iCAC+B;AACjC;;AAEA,iDAAiD;AACjD;EACE;iCAC+B;AACjC;;AAEA;EACE;iCAC+B;AACjC",sourcesContent:['.spam-notification {\r\n background: #641cc5 !important;\r\n}\r\n\r\n.inboxsdk__butterbar-buttons span {\r\n color: #bca6e3 !important;\r\n}\r\n\r\n.spam-notification span {\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n.spam-them-icon img {\r\n width: 18px;\r\n height: 18px;\r\n}\r\n\r\n.inboxsdk__button_hover div::before {\r\n background: #e8dbf6 !important;\r\n}\r\n\r\n.inboxsdk__button_iconImg {\r\n position: relative;\r\n top: 2px;\r\n}\r\n\r\n#spam-them-button {\r\n font-family: Roboto, Helvetica, Arial, sans-serif;\r\n background: #641cc5;\r\n border-radius: 4px;\r\n box-sizing: border-box;\r\n color: white;\r\n cursor: pointer;\r\n height: 36px;\r\n outline: none;\r\n padding: 0px 14px;\r\n display: flex;\r\n align-items: center;\r\n line-height: 5px;\r\n font-size: 14px;\r\n}\r\n\r\n#spam-them-button::before,\r\n.inboxsdk__butterbar-text::before {\r\n content: "";\r\n display: block;\r\n background: var(--devil-url) no-repeat;\r\n width: 18px;\r\n height: 18px;\r\n float: left;\r\n margin-right: 14px;\r\n filter: invert(65%) sepia(11%) saturate(3853%) hue-rotate(215deg)\r\n brightness(95%) contrast(86%);\r\n}\r\n\r\n/*Trick to get the correct icon colors on hover */\r\n.inboxsdk__button .inboxsdk__button_iconImg {\r\n filter: invert(50%) sepia(0%) saturate(4550%) hue-rotate(296deg)\r\n brightness(92%) contrast(80%);\r\n}\r\n\r\n.inboxsdk__button_hover .inboxsdk__button_iconImg {\r\n filter: invert(11%) sepia(82%) saturate(7479%) hue-rotate(269deg)\r\n brightness(80%) contrast(92%);\r\n}\r\n'],sourceRoot:""}]),e.default=o}]); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29udGVudC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29udGVudC5jc3M/YzM0NyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbnRlbnQuY3NzIl0sIm5hbWVzIjpbImluc3RhbGxlZE1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJleHBvcnRzIiwibW9kdWxlIiwiaSIsImwiLCJtb2R1bGVzIiwiY2FsbCIsIm0iLCJjIiwiZCIsIm5hbWUiLCJnZXR0ZXIiLCJvIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiciIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJ0IiwibW9kZSIsIl9fZXNNb2R1bGUiLCJucyIsImNyZWF0ZSIsImtleSIsImJpbmQiLCJuIiwib2JqZWN0IiwicHJvcGVydHkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInAiLCJzIiwidXNlU291cmNlTWFwIiwibGlzdCIsInRvU3RyaW5nIiwidGhpcyIsIm1hcCIsIml0ZW0iLCJjb250ZW50IiwiY3NzTWFwcGluZyIsImJ0b2EiLCJzb3VyY2VNYXBwaW5nIiwic291cmNlTWFwIiwiYmFzZTY0IiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJKU09OIiwic3RyaW5naWZ5IiwiZGF0YSIsImNvbmNhdCIsInNvdXJjZVVSTHMiLCJzb3VyY2VzIiwic291cmNlIiwic291cmNlUm9vdCIsImpvaW4iLCJjc3NXaXRoTWFwcGluZ1RvU3RyaW5nIiwibWVkaWFRdWVyeSIsImRlZHVwZSIsImFscmVhZHlJbXBvcnRlZE1vZHVsZXMiLCJsZW5ndGgiLCJpZCIsIl9pIiwicHVzaCIsImRldmlsSWNvbiIsImNocm9tZSIsInJ1bnRpbWUiLCJnZXRVUkwiLCJpbmplY3RTaWduVGhlbVVwQnV0dG9uIiwiY2xpY2tGdW5jIiwiYmFycyIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvckFsbCIsInNwYW5zIiwiaW5zZXJ0QWRqYWNlbnRIVE1MIiwiZ2V0RWxlbWVudEJ5SWQiLCJhZGRFdmVudExpc3RlbmVyIiwiZG9jdW1lbnRFbGVtZW50Iiwic3R5bGUiLCJzZXRQcm9wZXJ0eSIsImFzeW5jIiwiSW5ib3hTREsiLCJsb2FkIiwidGhlbiIsInNkayIsImN1cnJTZW5kRW1haWwiLCJzaWduVXBFbWFpbCIsImVtYWlsVG9TcGFtIiwic3BhbVRpbWVvdXQiLCJzZXRUaW1lb3V0IiwiZmV0Y2giLCJtZXRob2QiLCJoZWFkZXJzIiwiYm9keSIsImVtYWlsIiwiZW1haWxBZGRyZXNzIiwibmV3c2xldHRlcnMiLCJCdXR0ZXJCYXIiLCJzaG93TWVzc2FnZSIsInRleHQiLCJjbGFzc05hbWUiLCJtZXNzYWdlS2V5IiwidGltZSIsImJ1dHRvbnMiLCJ0aXRsZSIsIm9uQ2xpY2siLCJoaWRlTWVzc2FnZSIsImNsZWFyVGltZW91dCIsIkNvbnZlcnNhdGlvbnMiLCJyZWdpc3RlclRocmVhZFZpZXdIYW5kbGVyIiwidGhyZWFkVmlldyIsImdldE1lc3NhZ2VWaWV3cyIsImdldFNlbmRlciIsIkNvbXBvc2UiLCJyZWdpc3RlckNvbXBvc2VWaWV3SGFuZGxlciIsImNvbXBvc2VWaWV3Iiwib24iLCJldnQiLCJpc0lubGluZVJlcGx5Rm9ybSIsIlRvb2xiYXJzIiwicmVnaXN0ZXJUaHJlYWRCdXR0b24iLCJwb3NpdGlvbnMiLCJ0aHJlYWRTZWN0aW9uIiwiaWNvbkNsYXNzIiwiaWNvblVybCIsIm1haW4iLCJhcGkiLCJkZWZhdWx0Iiwib3B0aW9ucyIsImxvY2FscyIsIm1lbW8iLCJpc09sZElFIiwiQm9vbGVhbiIsIndpbmRvdyIsImFsbCIsImF0b2IiLCJnZXRUYXJnZXQiLCJ0YXJnZXQiLCJzdHlsZVRhcmdldCIsInF1ZXJ5U2VsZWN0b3IiLCJIVE1MSUZyYW1lRWxlbWVudCIsImNvbnRlbnREb2N1bWVudCIsImhlYWQiLCJlIiwic3R5bGVzSW5Eb20iLCJnZXRJbmRleEJ5SWRlbnRpZmllciIsImlkZW50aWZpZXIiLCJyZXN1bHQiLCJtb2R1bGVzVG9Eb20iLCJpZENvdW50TWFwIiwiaWRlbnRpZmllcnMiLCJiYXNlIiwiY291bnQiLCJpbmRleCIsIm9iaiIsImNzcyIsIm1lZGlhIiwicmVmZXJlbmNlcyIsInVwZGF0ZXIiLCJhZGRTdHlsZSIsImluc2VydFN0eWxlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJhdHRyaWJ1dGVzIiwibm9uY2UiLCJrZXlzIiwiZm9yRWFjaCIsInNldEF0dHJpYnV0ZSIsImluc2VydCIsIkVycm9yIiwiYXBwZW5kQ2hpbGQiLCJ0ZXh0U3RvcmUiLCJyZXBsYWNlVGV4dCIsInJlcGxhY2VtZW50IiwiZmlsdGVyIiwiYXBwbHlUb1NpbmdsZXRvblRhZyIsInJlbW92ZSIsInN0eWxlU2hlZXQiLCJjc3NUZXh0IiwiY3NzTm9kZSIsImNyZWF0ZVRleHROb2RlIiwiY2hpbGROb2RlcyIsInJlbW92ZUNoaWxkIiwiaW5zZXJ0QmVmb3JlIiwiYXBwbHlUb1RhZyIsInJlbW92ZUF0dHJpYnV0ZSIsImZpcnN0Q2hpbGQiLCJzaW5nbGV0b24iLCJzaW5nbGV0b25Db3VudGVyIiwidXBkYXRlIiwic3R5bGVJbmRleCIsInBhcmVudE5vZGUiLCJyZW1vdmVTdHlsZUVsZW1lbnQiLCJuZXdPYmoiLCJsYXN0SWRlbnRpZmllcnMiLCJuZXdMaXN0IiwibmV3TGFzdElkZW50aWZpZXJzIiwiX2luZGV4Iiwic3BsaWNlIiwiX19fQ1NTX0xPQURFUl9FWFBPUlRfX18iXSwibWFwcGluZ3MiOiJhQUNFLElBQUlBLEVBQW1CLEdBR3ZCLFNBQVNDLEVBQW9CQyxHQUc1QixHQUFHRixFQUFpQkUs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TUFBUUQsRUFBSUMsS0FBT3FDLEVBQU9wQyxRQUFVRixFQUFJRSxPQUFTb0MsRUFBT3JKLFlBQWMrRyxFQUFJL0csVUFDbkYsT0FHRmlKLEVBQU9sQyxFQUFNc0MsUUFFYmpCLEtBS04vSyxFQUFPRCxRQUFVLFNBQVVtQyxFQUFNOEYsSUFDL0JBLEVBQVVBLEdBQVcsSUFHUjBELFdBQTBDLGtCQUF0QjFELEVBQVEwRCxZQUN2QzFELEVBQVEwRCxVQUFZdkQsS0FJdEIsSUFBSThELEVBQWtCN0MsRUFEdEJsSCxFQUFPQSxHQUFRLEdBQzBCOEYsR0FDekMsT0FBTyxTQUFnQmtFLEdBR3JCLEdBRkFBLEVBQVVBLEdBQVcsR0FFMkIsbUJBQTVDdkwsT0FBT2tCLFVBQVVNLFNBQVMvQixLQUFLOEwsR0FBbkMsQ0FJQSxJQUFLLElBQUlqTSxFQUFJLEVBQUdBLEVBQUlnTSxFQUFnQnJJLE9BQVEzRCxJQUFLLENBQy9DLElBQ0l3SixFQUFRUixFQURLZ0QsRUFBZ0JoTSxJQUVqQytJLEVBQVlTLEdBQU9JLGFBS3JCLElBRkEsSUFBSXNDLEVBQXFCL0MsRUFBYThDLEVBQVNsRSxHQUV0Q2xFLEVBQUssRUFBR0EsRUFBS21JLEVBQWdCckksT0FBUUUsSUFBTSxDQUNsRCxJQUVJc0ksRUFBU25ELEVBRktnRCxFQUFnQm5JLElBSUssSUFBbkNrRixFQUFZb0QsR0FBUXZDLGFBQ3RCYixFQUFZb0QsR0FBUXRDLFVBRXBCZCxFQUFZcUQsT0FBT0QsRUFBUSxJQUkvQkgsRUFBa0JFLE0sNkJDMVF0QixrQkFFSUcsRUFGSixNQUU4QixJQUE0QixHQUUxREEsRUFBd0J2SSxLQUFLLENBQUMvRCxFQUFPQyxFQUFJLDBpREFBNmlELEdBQUcsQ0FBQyxRQUFVLEVBQUUsUUFBVSxDQUFDLDZCQUE2QixNQUFRLEdBQUcsU0FBVyxpZkFBaWYsZUFBaUIsQ0FBQywyaURBQTZpRCxXQUFhLE1BRWx0SCIsImZpbGUiOiJjb250ZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDEpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG4vLyBjc3MgYmFzZSBjb2RlLCBpbmplY3RlZCBieSB0aGUgY3NzLWxvYWRlclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHVzZVNvdXJjZU1hcCkge1xuICB2YXIgbGlzdCA9IFtdOyAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0sIHVzZVNvdXJjZU1hcCk7XG5cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIHJldHVybiBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKS5jb25jYXQoY29udGVudCwgXCJ9XCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9KS5qb2luKCcnKTtcbiAgfTsgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcblxuXG4gIGxpc3QuaSA9IGZ1bmN0aW9uIChtb2R1bGVzLCBtZWRpYVF1ZXJ5LCBkZWR1cGUpIHtcbiAgICBpZiAodHlwZW9mIG1vZHVsZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgIG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsICcnXV07XG4gICAgfVxuXG4gICAgdmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcblxuICAgIGlmIChkZWR1cGUpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWRlc3RydWN0dXJpbmdcbiAgICAgICAgdmFyIGlkID0gdGhpc1tpXVswXTtcblxuICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBtb2R1bGVzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIGl0ZW0gPSBbXS5jb25jYXQobW9kdWxlc1tfaV0pO1xuXG4gICAgICBpZiAoZGVkdXBlICYmIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnRpbnVlXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVkaWFRdWVyeSkge1xuICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWFRdWVyeTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzJdID0gXCJcIi5jb25jYXQobWVkaWFRdWVyeSwgXCIgYW5kIFwiKS5jb25jYXQoaXRlbVsyXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gbGlzdDtcbn07XG5cbmZ1bmN0aW9uIGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSwgdXNlU291cmNlTWFwKSB7XG4gIHZhciBjb250ZW50ID0gaXRlbVsxXSB8fCAnJzsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1kZXN0cnVjdHVyaW5nXG5cbiAgdmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuXG4gIGlmICghY3NzTWFwcGluZykge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgaWYgKHVzZVNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gdG9Db21tZW50KGNzc01hcHBpbmcpO1xuICAgIHZhciBzb3VyY2VVUkxzID0gY3NzTWFwcGluZy5zb3VyY2VzLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICByZXR1cm4gXCIvKiMgc291cmNlVVJMPVwiLmNvbmNhdChjc3NNYXBwaW5nLnNvdXJjZVJvb3QgfHwgJycpLmNvbmNhdChzb3VyY2UsIFwiICovXCIpO1xuICAgIH0pO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgcmV0dXJuIFtjb250ZW50XS5qb2luKCdcXG4nKTtcbn0gLy8gQWRhcHRlZCBmcm9tIGNvbnZlcnQtc291cmNlLW1hcCAoTUlUKVxuXG5cbmZ1bmN0aW9uIHRvQ29tbWVudChzb3VyY2VNYXApIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpO1xuICB2YXIgZGF0YSA9IFwic291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsXCIuY29uY2F0KGJhc2U2NCk7XG4gIHJldHVybiBcIi8qIyBcIi5jb25jYXQoZGF0YSwgXCIgKi9cIik7XG59IiwiaW1wb3J0IFwiLi9jb250ZW50LmNzc1wiO1xyXG5cclxuY29uc3QgSU5CT1hTREtfQVBQX0lEID0gYHNka19nbWFpbC1zdWItZXh0Xzk4MTBkOWNlNDNgO1xyXG5jb25zdCBkZXZpbEljb24gPSBjaHJvbWUucnVudGltZS5nZXRVUkwoXCJpY29ucy9kZXZpbC5zdmdcIik7XHJcblxyXG5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXHJcbiAgXCItLWRldmlsLXVybFwiLFxyXG4gIGB1cmwoJyR7ZGV2aWxJY29ufScpYFxyXG4pO1xyXG5cclxuZnVuY3Rpb24gaW5qZWN0U2lnblRoZW1VcEJ1dHRvbihjbGlja0Z1bmMpIHtcclxuICBjb25zdCBiYXJzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIltyb2xlPSdtYWluJ10gdGFibGVcIik7XHJcbiAgY29uc3QgbGFzdEJhciA9IGJhcnNbYmFycy5sZW5ndGggLSAxXTtcclxuICBjb25zdCBzcGFucyA9IGxhc3RCYXIucXVlcnlTZWxlY3RvckFsbChcInNwYW5cIik7XHJcbiAgY29uc3QgbGFzdFNwYW4gPSBzcGFuc1tzcGFucy5sZW5ndGggLSAxXTtcclxuXHJcbiAgY29uc3QgbmV3QnV0dG9uSFRNTCA9IGA8c3BhbiBpZD1cInNwYW0tdGhlbS1idXR0b25cIj5TUEFNIFRIRU0gQkFDSzwvc3Bhbj5gO1xyXG5cclxuICBsYXN0U3Bhbi5pbnNlcnRBZGphY2VudEhUTUwoXCJhZnRlcmVuZFwiLCBuZXdCdXR0b25IVE1MKTtcclxuXHJcbiAgZG9jdW1lbnRcclxuICAgIC5nZXRFbGVtZW50QnlJZChcInNwYW0tdGhlbS1idXR0b25cIilcclxuICAgIC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgY2xpY2tGdW5jKTtcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcclxuICBJbmJveFNESy5sb2FkKDIsIElOQk9YU0RLX0FQUF9JRCkudGhlbihmdW5jdGlvbiAoc2RrKSB7XHJcbiAgICBsZXQgY3VyclNlbmRFbWFpbCA9IFwiXCI7XHJcblxyXG4gICAgc2RrLkNvbnZlcnNhdGlvbnMucmVnaXN0ZXJUaHJlYWRWaWV3SGFuZGxlcigodGhyZWFkVmlldykgPT4ge1xyXG4gICAgICBpbmplY3RTaWduVGhlbVVwQnV0dG9uKHNpZ25VcEVtYWlsKTtcclxuICAgICAgY3VyclNlbmRFbWFpbCA9IHRocmVhZFZpZXcuZ2V0TWVzc2FnZVZpZXdzKClbMF0uZ2V0U2VuZGVyKCkuZW1haWxBZGRyZXNzO1xyXG4gICAgfSk7XHJcblxyXG4gICAgc2RrLkNvbXBvc2UucmVnaXN0ZXJDb21wb3NlVmlld0hhbmRsZXIoKGNvbXBvc2VWaWV3KSA9PiB7XHJcbiAgICAgIGNvbXBvc2VWaWV3Lm9uKFwiZGVzdHJveVwiLCAoZXZ0KSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbXBvc2VWaWV3LmlzSW5saW5lUmVwbHlGb3JtKCkpIHtcclxuICAgICAgICAgIGluamVjdFNpZ25UaGVtVXBCdXR0b24oc2lnblVwRW1haWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBzZGsuVG9vbGJhcnMucmVnaXN0ZXJUaHJlYWRCdXR0b24oe1xyXG4gICAgICBwb3NpdGlvbnM6IFtcIlRIUkVBRFwiXSxcclxuICAgICAgdGl0bGU6IFwiU1BBTSBUSEVNIEJBQ0tcIixcclxuICAgICAgdGhyZWFkU2VjdGlvbjogXCJJTkJPWF9TVEFURVwiLFxyXG4gICAgICBpY29uQ2xhc3M6IFwic3BhbS10aGVtLWljb25cIixcclxuICAgICAgaWNvblVybDogZGV2aWxJY29uLFxyXG4gICAgICBvbkNsaWNrOiBzaWduVXBFbWFpbCxcclxuICAgIH0pO1xyXG5cclxuICAgIGZ1bmN0aW9uIHJlZ2lzdGVySG92ZXJFdmVudHMoKSB7XHJcbiAgICAgIGNvbnN0IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xyXG4gICAgICBzdHlsZS5pZCA9IFwic3BhbS10b29sdGlwLWhvdmVyXCI7XHJcbiAgICAgIHN0eWxlLnR5cGUgPSBcInRleHQvY3NzXCI7XHJcbiAgICAgIHN0eWxlLmlubmVySFRNTCA9IGBcclxuICAgICAgICBbcm9sZT1cInRvb2x0aXBcIl0gZGl2IHtcclxuICAgICAgICAgIGJhY2tncm91bmQ6ICM2NDFDQzU7XHJcbiAgICAgICAgfVxyXG4gICAgICBgO1xyXG5cclxuICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgICBcIi5pbmJveHNka19fYnV0dG9uXCJcclxuICAgICAgKS5vbm1vdXNlb3ZlciA9IGZ1bmN0aW9uIGhvdmVyKCkge1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXS5hcHBlbmRDaGlsZChzdHlsZSk7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmluYm94c2RrX19idXR0b25cIikub25tb3VzZWxlYXZlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3BhbS10b29sdGlwLWhvdmVyXCIpLm91dGVySFRNTCA9IFwiXCI7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gc2lnblVwRW1haWwoKSB7XHJcbiAgICAgIGNvbnN0IGVtYWlsVG9TcGFtID0gY3VyclNlbmRFbWFpbDtcclxuXHJcbiAgICAgIGNvbnN0IHNwYW1UaW1lb3V0ID0gc2V0VGltZW91dChhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgZmV0Y2goXCJodHRwczovL2F1ZGllbmNlLmNubi5jb20vbmV3c2xldHRlcnMvYXBpLzEvc3Vic2NyaXB0aW9ucy9hZGRcIiwge1xyXG4gICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcclxuICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICBlbWFpbDogZW1haWxUb1NwYW0sXHJcbiAgICAgICAgICAgIGVtYWlsQWRkcmVzczogZW1haWxUb1NwYW0sXHJcbiAgICAgICAgICAgIG5ld3NsZXR0ZXJzOiBbXHJcbiAgICAgICAgICAgICAgXCJicmVha2luZ19uZXdzXCIsXHJcbiAgICAgICAgICAgICAgXCJmaXZlX3RoaW5nc1wiLFxyXG4gICAgICAgICAgICAgIFwiZml2ZV90aGluZ3Nfc3VuZGF5XCIsXHJcbiAgICAgICAgICAgICAgXCJjb3JvbmF2aXJ1c1wiLFxyXG4gICAgICAgICAgICAgIFwiaGVhbHRoXCIsXHJcbiAgICAgICAgICAgICAgXCJnb29kX3N0dWZmXCIsXHJcbiAgICAgICAgICAgICAgXCJyZWxpYWJsZV9zb3VyY2VzXCIsXHJcbiAgICAgICAgICAgICAgXCJ3aGF0X21hdHRlcnNcIixcclxuICAgICAgICAgICAgICBcInBvaW50XCIsXHJcbiAgICAgICAgICAgICAgXCJwcm92b2tlX3BlcnN1YWRlXCIsXHJcbiAgICAgICAgICAgICAgXCJnbG9iYWxfYnJpZWZpbmdcIixcclxuICAgICAgICAgICAgICBcIm1lYW53aGlsZVwiLFxyXG4gICAgICAgICAgICAgIFwibmlnaHRjYXBcIixcclxuICAgICAgICAgICAgICBcIndvcmtfdHJhbnNmb3JtZWRcIixcclxuICAgICAgICAgICAgICBcImJ0YlwiLFxyXG4gICAgICAgICAgICAgIFwidGVuXCIsXHJcbiAgICAgICAgICAgICAgXCJwb3BfbGlmZVwiLFxyXG4gICAgICAgICAgICAgIFwibWFya2V0c19ub3dcIixcclxuICAgICAgICAgICAgICBcInVuZGVyc2NvcmVkXCIsXHJcbiAgICAgICAgICAgICAgXCJlc3BfYnJlYWtpbmdfbmV3c1wiLFxyXG4gICAgICAgICAgICAgIFwiZXNwX2ZpdmVfdGhpbmdzXCIsXHJcbiAgICAgICAgICAgICAgXCJzbGVlcFwiLFxyXG4gICAgICAgICAgICAgIFwid2lzZG9tX3Byb2plY3RcIixcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LCAxMDAwMCk7XHJcblxyXG4gICAgICBzZGsuQnV0dGVyQmFyLnNob3dNZXNzYWdlKHtcclxuICAgICAgICB0ZXh0OiBcIlRoZXkndmUgYmVlbiBzcGFtbWVkIGJhY2suXCIsXHJcbiAgICAgICAgY2xhc3NOYW1lOiBcInNwYW0tbm90aWZpY2F0aW9uXCIsXHJcbiAgICAgICAgbWVzc2FnZUtleTogXCJzcGFtXCIsXHJcbiAgICAgICAgdGltZTogMTAwMDAsXHJcbiAgICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0aXRsZTogXCJVbmRvXCIsXHJcbiAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHtcclxuICAgICAgICAgICAgICBzZGsuQnV0dGVyQmFyLmhpZGVNZXNzYWdlKFwic3BhbVwiKTtcclxuICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoc3BhbVRpbWVvdXQpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxubWFpbigpO1xyXG4iLCJ2YXIgYXBpID0gcmVxdWlyZShcIiEuLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIik7XG4gICAgICAgICAgICB2YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vY29udGVudC5jc3NcIik7XG5cbiAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50Ll9fZXNNb2R1bGUgPyBjb250ZW50LmRlZmF1bHQgOiBjb250ZW50O1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcbiAgICAgICAgICAgIH1cblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgaXNPbGRJRSA9IGZ1bmN0aW9uIGlzT2xkSUUoKSB7XG4gIHZhciBtZW1vO1xuICByZXR1cm4gZnVuY3Rpb24gbWVtb3JpemUoKSB7XG4gICAgaWYgKHR5cGVvZiBtZW1vID09PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gVGVzdCBmb3IgSUUgPD0gOSBhcyBwcm9wb3NlZCBieSBCcm93c2VyaGFja3NcbiAgICAgIC8vIEBzZWUgaHR0cDovL2Jyb3dzZXJoYWNrcy5jb20vI2hhY2stZTcxZDg2OTJmNjUzMzQxNzNmZWU3MTVjMjIyY2I4MDVcbiAgICAgIC8vIFRlc3RzIGZvciBleGlzdGVuY2Ugb2Ygc3RhbmRhcmQgZ2xvYmFscyBpcyB0byBhbGxvdyBzdHlsZS1sb2FkZXJcbiAgICAgIC8vIHRvIG9wZXJhdGUgY29ycmVjdGx5IGludG8gbm9uLXN0YW5kYXJkIGVudmlyb25tZW50c1xuICAgICAgLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay1jb250cmliL3N0eWxlLWxvYWRlci9pc3N1ZXMvMTc3XG4gICAgICBtZW1vID0gQm9vbGVhbih3aW5kb3cgJiYgZG9jdW1lbnQgJiYgZG9jdW1lbnQuYWxsICYmICF3aW5kb3cuYXRvYik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lbW87XG4gIH07XG59KCk7XG5cbnZhciBnZXRUYXJnZXQgPSBmdW5jdGlvbiBnZXRUYXJnZXQoKSB7XG4gIHZhciBtZW1vID0ge307XG4gIHJldHVybiBmdW5jdGlvbiBtZW1vcml6ZSh0YXJnZXQpIHtcbiAgICBpZiAodHlwZW9mIG1lbW9bdGFyZ2V0XSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHZhciBzdHlsZVRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0KTsgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcblxuICAgICAgaWYgKHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCAmJiBzdHlsZVRhcmdldCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgYWNjZXNzIHRvIGlmcmFtZSBpcyBibG9ja2VkXG4gICAgICAgICAgLy8gZHVlIHRvIGNyb3NzLW9yaWdpbiByZXN0cmljdGlvbnNcbiAgICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbWVtb1t0YXJnZXRdID0gc3R5bGVUYXJnZXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lbW9bdGFyZ2V0XTtcbiAgfTtcbn0oKTtcblxudmFyIHN0eWxlc0luRG9tID0gW107XG5cbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzSW5Eb20ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3R5bGVzSW5Eb21baV0uaWRlbnRpZmllciA9PT0gaWRlbnRpZmllcikge1xuICAgICAgcmVzdWx0ID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gbGlzdFtpXTtcbiAgICB2YXIgaWQgPSBvcHRpb25zLmJhc2UgPyBpdGVtWzBdICsgb3B0aW9ucy5iYXNlIDogaXRlbVswXTtcbiAgICB2YXIgY291bnQgPSBpZENvdW50TWFwW2lkXSB8fCAwO1xuICAgIHZhciBpZGVudGlmaWVyID0gXCJcIi5jb25jYXQoaWQsIFwiIFwiKS5jb25jYXQoY291bnQpO1xuICAgIGlkQ291bnRNYXBbaWRdID0gY291bnQgKyAxO1xuICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgIHZhciBvYmogPSB7XG4gICAgICBjc3M6IGl0ZW1bMV0sXG4gICAgICBtZWRpYTogaXRlbVsyXSxcbiAgICAgIHNvdXJjZU1hcDogaXRlbVszXVxuICAgIH07XG5cbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRvbVtpbmRleF0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5Eb21baW5kZXhdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVzSW5Eb20ucHVzaCh7XG4gICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIHVwZGF0ZXI6IGFkZFN0eWxlKG9iaiwgb3B0aW9ucyksXG4gICAgICAgIHJlZmVyZW5jZXM6IDFcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnRpZmllcik7XG4gIH1cblxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5cbmZ1bmN0aW9uIGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSB7XG4gIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHZhciBhdHRyaWJ1dGVzID0gb3B0aW9ucy5hdHRyaWJ1dGVzIHx8IHt9O1xuXG4gIGlmICh0eXBlb2YgYXR0cmlidXRlcy5ub25jZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB2YXIgbm9uY2UgPSB0eXBlb2YgX193ZWJwYWNrX25vbmNlX18gIT09ICd1bmRlZmluZWQnID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuXG4gICAgaWYgKG5vbmNlKSB7XG4gICAgICBhdHRyaWJ1dGVzLm5vbmNlID0gbm9uY2U7XG4gICAgfVxuICB9XG5cbiAgT2JqZWN0LmtleXMoYXR0cmlidXRlcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgc3R5bGUuc2V0QXR0cmlidXRlKGtleSwgYXR0cmlidXRlc1trZXldKTtcbiAgfSk7XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLmluc2VydCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIG9wdGlvbnMuaW5zZXJ0KHN0eWxlKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgdGFyZ2V0ID0gZ2V0VGFyZ2V0KG9wdGlvbnMuaW5zZXJ0IHx8ICdoZWFkJyk7XG5cbiAgICBpZiAoIXRhcmdldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZmluZCBhIHN0eWxlIHRhcmdldC4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB2YWx1ZSBmb3IgdGhlICdpbnNlcnQnIHBhcmFtZXRlciBpcyBpbnZhbGlkLlwiKTtcbiAgICB9XG5cbiAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICB9XG5cbiAgcmV0dXJuIHN0eWxlO1xufVxuXG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGUpIHtcbiAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gIGlmIChzdHlsZS5wYXJlbnROb2RlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3R5bGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZSk7XG59XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuXG52YXIgcmVwbGFjZVRleHQgPSBmdW5jdGlvbiByZXBsYWNlVGV4dCgpIHtcbiAgdmFyIHRleHRTdG9yZSA9IFtdO1xuICByZXR1cm4gZnVuY3Rpb24gcmVwbGFjZShpbmRleCwgcmVwbGFjZW1lbnQpIHtcbiAgICB0ZXh0U3RvcmVbaW5kZXhdID0gcmVwbGFjZW1lbnQ7XG4gICAgcmV0dXJuIHRleHRTdG9yZS5maWx0ZXIoQm9vbGVhbikuam9pbignXFxuJyk7XG4gIH07XG59KCk7XG5cbmZ1bmN0aW9uIGFwcGx5VG9TaW5nbGV0b25UYWcoc3R5bGUsIGluZGV4LCByZW1vdmUsIG9iaikge1xuICB2YXIgY3NzID0gcmVtb3ZlID8gJycgOiBvYmoubWVkaWEgPyBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpLmNvbmNhdChvYmouY3NzLCBcIn1cIikgOiBvYmouY3NzOyAvLyBGb3Igb2xkIElFXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuXG4gIGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gcmVwbGFjZVRleHQoaW5kZXgsIGNzcyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGNzc05vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpO1xuICAgIHZhciBjaGlsZE5vZGVzID0gc3R5bGUuY2hpbGROb2RlcztcblxuICAgIGlmIChjaGlsZE5vZGVzW2luZGV4XSkge1xuICAgICAgc3R5bGUucmVtb3ZlQ2hpbGQoY2hpbGROb2Rlc1tpbmRleF0pO1xuICAgIH1cblxuICAgIGlmIChjaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgc3R5bGUuaW5zZXJ0QmVmb3JlKGNzc05vZGUsIGNoaWxkTm9kZXNbaW5kZXhdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoY3NzTm9kZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFwcGx5VG9UYWcoc3R5bGUsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gb2JqLmNzcztcbiAgdmFyIG1lZGlhID0gb2JqLm1lZGlhO1xuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcblxuICBpZiAobWVkaWEpIHtcbiAgICBzdHlsZS5zZXRBdHRyaWJ1dGUoJ21lZGlhJywgbWVkaWEpO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlLnJlbW92ZUF0dHJpYnV0ZSgnbWVkaWEnKTtcbiAgfVxuXG4gIGlmIChzb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgY3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIi5jb25jYXQoYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSwgXCIgKi9cIik7XG4gIH0gLy8gRm9yIG9sZCBJRVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cblxuXG4gIGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdHlsZS5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZS5yZW1vdmVDaGlsZChzdHlsZS5maXJzdENoaWxkKTtcbiAgICB9XG5cbiAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxuXG52YXIgc2luZ2xldG9uID0gbnVsbDtcbnZhciBzaW5nbGV0b25Db3VudGVyID0gMDtcblxuZnVuY3Rpb24gYWRkU3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBzdHlsZTtcbiAgdmFyIHVwZGF0ZTtcbiAgdmFyIHJlbW92ZTtcblxuICBpZiAob3B0aW9ucy5zaW5nbGV0b24pIHtcbiAgICB2YXIgc3R5bGVJbmRleCA9IHNpbmdsZXRvbkNvdW50ZXIrKztcbiAgICBzdHlsZSA9IHNpbmdsZXRvbiB8fCAoc2luZ2xldG9uID0gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpKTtcbiAgICB1cGRhdGUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGUsIHN0eWxlSW5kZXgsIGZhbHNlKTtcbiAgICByZW1vdmUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGUsIHN0eWxlSW5kZXgsIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlID0gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpO1xuICAgIHVwZGF0ZSA9IGFwcGx5VG9UYWcuYmluZChudWxsLCBzdHlsZSwgb3B0aW9ucyk7XG5cbiAgICByZW1vdmUgPSBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGUpO1xuICAgIH07XG4gIH1cblxuICB1cGRhdGUob2JqKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZVN0eWxlKG5ld09iaikge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlmIChuZXdPYmouY3NzID09PSBvYmouY3NzICYmIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB1cGRhdGUob2JqID0gbmV3T2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlKCk7XG4gICAgfVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChsaXN0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OyAvLyBGb3JjZSBzaW5nbGUtdGFnIHNvbHV0aW9uIG9uIElFNi05LCB3aGljaCBoYXMgYSBoYXJkIGxpbWl0IG9uIHRoZSAjIG9mIDxzdHlsZT5cbiAgLy8gdGFncyBpdCB3aWxsIGFsbG93IG9uIGEgcGFnZVxuXG4gIGlmICghb3B0aW9ucy5zaW5nbGV0b24gJiYgdHlwZW9mIG9wdGlvbnMuc2luZ2xldG9uICE9PSAnYm9vbGVhbicpIHtcbiAgICBvcHRpb25zLnNpbmdsZXRvbiA9IGlzT2xkSUUoKTtcbiAgfVxuXG4gIGxpc3QgPSBsaXN0IHx8IFtdO1xuICB2YXIgbGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlKG5ld0xpc3QpIHtcbiAgICBuZXdMaXN0ID0gbmV3TGlzdCB8fCBbXTtcblxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobmV3TGlzdCkgIT09ICdbb2JqZWN0IEFycmF5XScpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbaV07XG4gICAgICB2YXIgaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICAgIHN0eWxlc0luRG9tW2luZGV4XS5yZWZlcmVuY2VzLS07XG4gICAgfVxuXG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX2lkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbX2ldO1xuXG4gICAgICB2YXIgX2luZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoX2lkZW50aWZpZXIpO1xuXG4gICAgICBpZiAoc3R5bGVzSW5Eb21bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRG9tW19pbmRleF0udXBkYXRlcigpO1xuXG4gICAgICAgIHN0eWxlc0luRG9tLnNwbGljZShfaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxhc3RJZGVudGlmaWVycyA9IG5ld0xhc3RJZGVudGlmaWVycztcbiAgfTtcbn07IiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKHRydWUpO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnNwYW0tbm90aWZpY2F0aW9uIHtcXHJcXG4gIGJhY2tncm91bmQ6ICM2NDFjYzUgIWltcG9ydGFudDtcXHJcXG59XFxyXFxuXFxyXFxuLmluYm94c2RrX19idXR0ZXJiYXItYnV0dG9ucyBzcGFuIHtcXHJcXG4gIGNvbG9yOiAjYmNhNmUzICFpbXBvcnRhbnQ7XFxyXFxufVxcclxcblxcclxcbi5zcGFtLW5vdGlmaWNhdGlvbiBzcGFuIHtcXHJcXG4gIGRpc3BsYXk6IGZsZXg7XFxyXFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcclxcbn1cXHJcXG5cXHJcXG4uc3BhbS10aGVtLWljb24gaW1nIHtcXHJcXG4gIHdpZHRoOiAxOHB4O1xcclxcbiAgaGVpZ2h0OiAxOHB4O1xcclxcbn1cXHJcXG5cXHJcXG4uaW5ib3hzZGtfX2J1dHRvbl9ob3ZlciBkaXY6OmJlZm9yZSB7XFxyXFxuICBiYWNrZ3JvdW5kOiAjZThkYmY2ICFpbXBvcnRhbnQ7XFxyXFxufVxcclxcblxcclxcbi5pbmJveHNka19fYnV0dG9uX2ljb25JbWcge1xcclxcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbiAgdG9wOiAycHg7XFxyXFxufVxcclxcblxcclxcbiNzcGFtLXRoZW0tYnV0dG9uIHtcXHJcXG4gIGZvbnQtZmFtaWx5OiBSb2JvdG8sIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XFxyXFxuICBiYWNrZ3JvdW5kOiAjNjQxY2M1O1xcclxcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xcclxcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXHJcXG4gIGNvbG9yOiB3aGl0ZTtcXHJcXG4gIGN1cnNvcjogcG9pbnRlcjtcXHJcXG4gIGhlaWdodDogMzZweDtcXHJcXG4gIG91dGxpbmU6IG5vbmU7XFxyXFxuICBwYWRkaW5nOiAwcHggMTRweDtcXHJcXG4gIGRpc3BsYXk6IGZsZXg7XFxyXFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcclxcbiAgbGluZS1oZWlnaHQ6IDVweDtcXHJcXG4gIGZvbnQtc2l6ZTogMTRweDtcXHJcXG59XFxyXFxuXFxyXFxuI3NwYW0tdGhlbS1idXR0b246OmJlZm9yZSxcXHJcXG4uaW5ib3hzZGtfX2J1dHRlcmJhci10ZXh0OjpiZWZvcmUge1xcclxcbiAgY29udGVudDogXFxcIlxcXCI7XFxyXFxuICBkaXNwbGF5OiBibG9jaztcXHJcXG4gIGJhY2tncm91bmQ6IHZhcigtLWRldmlsLXVybCkgbm8tcmVwZWF0O1xcclxcbiAgd2lkdGg6IDE4cHg7XFxyXFxuICBoZWlnaHQ6IDE4cHg7XFxyXFxuICBmbG9hdDogbGVmdDtcXHJcXG4gIG1hcmdpbi1yaWdodDogMTRweDtcXHJcXG4gIGZpbHRlcjogaW52ZXJ0KDY1JSkgc2VwaWEoMTElKSBzYXR1cmF0ZSgzODUzJSkgaHVlLXJvdGF0ZSgyMTVkZWcpXFxyXFxuICAgIGJyaWdodG5lc3MoOTUlKSBjb250cmFzdCg4NiUpO1xcclxcbn1cXHJcXG5cXHJcXG4vKlRyaWNrIHRvIGdldCB0aGUgY29ycmVjdCBpY29uIGNvbG9ycyBvbiBob3ZlciAqL1xcclxcbi5pbmJveHNka19fYnV0dG9uIC5pbmJveHNka19fYnV0dG9uX2ljb25JbWcge1xcclxcbiAgZmlsdGVyOiBpbnZlcnQoNTAlKSBzZXBpYSgwJSkgc2F0dXJhdGUoNDU1MCUpIGh1ZS1yb3RhdGUoMjk2ZGVnKVxcclxcbiAgICBicmlnaHRuZXNzKDkyJSkgY29udHJhc3QoODAlKTtcXHJcXG59XFxyXFxuXFxyXFxuLmluYm94c2RrX19idXR0b25faG92ZXIgLmluYm94c2RrX19idXR0b25faWNvbkltZyB7XFxyXFxuICBmaWx0ZXI6IGludmVydCgxMSUpIHNlcGlhKDgyJSkgc2F0dXJhdGUoNzQ3OSUpIGh1ZS1yb3RhdGUoMjY5ZGVnKVxcclxcbiAgICBicmlnaHRuZXNzKDgwJSkgY29udHJhc3QoOTIlKTtcXHJcXG59XFxyXFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovL3NyYy9jb250ZW50LmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTtFQUNFLDhCQUE4QjtBQUNoQzs7QUFFQTtFQUNFLHlCQUF5QjtBQUMzQjs7QUFFQTtFQUNFLGFBQWE7RUFDYixtQkFBbUI7QUFDckI7O0FBRUE7RUFDRSxXQUFXO0VBQ1gsWUFBWTtBQUNkOztBQUVBO0VBQ0UsOEJBQThCO0FBQ2hDOztBQUVBO0VBQ0Usa0JBQWtCO0VBQ2xCLFFBQVE7QUFDVjs7QUFFQTtFQUNFLGlEQUFpRDtFQUNqRCxtQkFBbUI7RUFDbkIsa0JBQWtCO0VBQ2xCLHNCQUFzQjtFQUN0QixZQUFZO0VBQ1osZUFBZTtFQUNmLFlBQVk7RUFDWixhQUFhO0VBQ2IsaUJBQWlCO0VBQ2pCLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsZ0JBQWdCO0VBQ2hCLGVBQWU7QUFDakI7O0FBRUE7O0VBRUUsV0FBVztFQUNYLGNBQWM7RUFDZCxzQ0FBc0M7RUFDdEMsV0FBVztFQUNYLFlBQVk7RUFDWixXQUFXO0VBQ1gsa0JBQWtCO0VBQ2xCO2lDQUMrQjtBQUNqQzs7QUFFQSxpREFBaUQ7QUFDakQ7RUFDRTtpQ0FDK0I7QUFDakM7O0FBRUE7RUFDRTtpQ0FDK0I7QUFDakNcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLnNwYW0tbm90aWZpY2F0aW9uIHtcXHJcXG4gIGJhY2tncm91bmQ6ICM2NDFjYzUgIWltcG9ydGFudDtcXHJcXG59XFxyXFxuXFxyXFxuLmluYm94c2RrX19idXR0ZXJiYXItYnV0dG9ucyBzcGFuIHtcXHJcXG4gIGNvbG9yOiAjYmNhNmUzICFpbXBvcnRhbnQ7XFxyXFxufVxcclxcblxcclxcbi5zcGFtLW5vdGlmaWNhdGlvbiBzcGFuIHtcXHJcXG4gIGRpc3BsYXk6IGZsZXg7XFxyXFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcclxcbn1cXHJcXG5cXHJcXG4uc3BhbS10aGVtLWljb24gaW1nIHtcXHJcXG4gIHdpZHRoOiAxOHB4O1xcclxcbiAgaGVpZ2h0OiAxOHB4O1xcclxcbn1cXHJcXG5cXHJcXG4uaW5ib3hzZGtfX2J1dHRvbl9ob3ZlciBkaXY6OmJlZm9yZSB7XFxyXFxuICBiYWNrZ3JvdW5kOiAjZThkYmY2ICFpbXBvcnRhbnQ7XFxyXFxufVxcclxcblxcclxcbi5pbmJveHNka19fYnV0dG9uX2ljb25JbWcge1xcclxcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcclxcbiAgdG9wOiAycHg7XFxyXFxufVxcclxcblxcclxcbiNzcGFtLXRoZW0tYnV0dG9uIHtcXHJcXG4gIGZvbnQtZmFtaWx5OiBSb2JvdG8sIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XFxyXFxuICBiYWNrZ3JvdW5kOiAjNjQxY2M1O1xcclxcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xcclxcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXHJcXG4gIGNvbG9yOiB3aGl0ZTtcXHJcXG4gIGN1cnNvcjogcG9pbnRlcjtcXHJcXG4gIGhlaWdodDogMzZweDtcXHJcXG4gIG91dGxpbmU6IG5vbmU7XFxyXFxuICBwYWRkaW5nOiAwcHggMTRweDtcXHJcXG4gIGRpc3BsYXk6IGZsZXg7XFxyXFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcclxcbiAgbGluZS1oZWlnaHQ6IDVweDtcXHJcXG4gIGZvbnQtc2l6ZTogMTRweDtcXHJcXG59XFxyXFxuXFxyXFxuI3NwYW0tdGhlbS1idXR0b246OmJlZm9yZSxcXHJcXG4uaW5ib3hzZGtfX2J1dHRlcmJhci10ZXh0OjpiZWZvcmUge1xcclxcbiAgY29udGVudDogXFxcIlxcXCI7XFxyXFxuICBkaXNwbGF5OiBibG9jaztcXHJcXG4gIGJhY2tncm91bmQ6IHZhcigtLWRldmlsLXVybCkgbm8tcmVwZWF0O1xcclxcbiAgd2lkdGg6IDE4cHg7XFxyXFxuICBoZWlnaHQ6IDE4cHg7XFxyXFxuICBmbG9hdDogbGVmdDtcXHJcXG4gIG1hcmdpbi1yaWdodDogMTRweDtcXHJcXG4gIGZpbHRlcjogaW52ZXJ0KDY1JSkgc2VwaWEoMTElKSBzYXR1cmF0ZSgzODUzJSkgaHVlLXJvdGF0ZSgyMTVkZWcpXFxyXFxuICAgIGJyaWdodG5lc3MoOTUlKSBjb250cmFzdCg4NiUpO1xcclxcbn1cXHJcXG5cXHJcXG4vKlRyaWNrIHRvIGdldCB0aGUgY29ycmVjdCBpY29uIGNvbG9ycyBvbiBob3ZlciAqL1xcclxcbi5pbmJveHNka19fYnV0dG9uIC5pbmJveHNka19fYnV0dG9uX2ljb25JbWcge1xcclxcbiAgZmlsdGVyOiBpbnZlcnQoNTAlKSBzZXBpYSgwJSkgc2F0dXJhdGUoNDU1MCUpIGh1ZS1yb3RhdGUoMjk2ZGVnKVxcclxcbiAgICBicmlnaHRuZXNzKDkyJSkgY29udHJhc3QoODAlKTtcXHJcXG59XFxyXFxuXFxyXFxuLmluYm94c2RrX19idXR0b25faG92ZXIgLmluYm94c2RrX19idXR0b25faWNvbkltZyB7XFxyXFxuICBmaWx0ZXI6IGludmVydCgxMSUpIHNlcGlhKDgyJSkgc2F0dXJhdGUoNzQ3OSUpIGh1ZS1yb3RhdGUoMjY5ZGVnKVxcclxcbiAgICBicmlnaHRuZXNzKDgwJSkgY29udHJhc3QoOTIlKTtcXHJcXG59XFxyXFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiJdLCJzb3VyY2VSb290IjoiIn0=
Editor is loading...