![刷新 刷新](/images/thumb/b/b0/OOjs_UI_icon_reload-progressive.svg/55px-OOjs_UI_icon_reload-progressive.svg.png)
请注意:更新本页面后,您可能需要清除浏览器缓存才能看到所作变更的影响。
Google Chrome、Microsoft Edge、Mozilla Firefox、Safari:按住⇧ Shift,同时单击“刷新”。
Google Chrome、Microsoft Edge、Mozilla Firefox、Safari:按住⇧ Shift,同时单击“刷新”。
![Cc.logo.circle.svg](/images/thumb/5/5d/CC_Logo.svg/40px-CC_Logo.svg.png)
![署名 署名](/images/thumb/1/11/Cc-by_new_white.svg/24px-Cc-by_new_white.svg.png)
![相同方式共享 相同方式共享](/images/thumb/d/df/Cc-sa_white.svg/24px-Cc-sa_white.svg.png)
本文件采用知识共享署名-相同方式共享 4.0 国际(CC BY-SA 4.0)许可协议授权。
- 您可以自由地:
- 分享 – 在任何媒介以任何形式复制、发行本作品
- 演绎 – 修改、转换或以本作品为基础进行创作
- 惟须遵守下列条件:
- 署名 – 您必须给出适当的署名(标明原作者),提供指向本许可协议的链接,同时标明是否(对原始作品)作了修改。您可以用任何合理的方式来署名,但是不得以任何方式暗示许可人为您或您的使用背书(即诱导原作者在不了解协议情况下给你授权)。
- 相同方式共享 – 如果您再混合、转换或者基于本作品进行创作,您必须基于与原先许可协议相同或相兼容的许可协议分发您贡献的作品。
/**
* SPDX-License-Identifier: CC-BY-SA-4.0
* _addText: '{{Gadget Header|license=CC-BY-SA-4.0}}'
*
* @base {@link https://en.wiktionary.org/wiki/User:Erutuon/scripts/gadgets-definition.js}
* @source {@link https://github.com/TopRealm/YsArchives-Gadgets/tree/master/src/GadgetsDefinition}
* @license CC-BY-SA-4.0 {@link https://youshou.wiki/wiki/H:CC-BY-SA-4.0}
*/
/**
* +------------------------------------------------------------+
* | === WARNING: GLOBAL GADGET FILE === |
* +------------------------------------------------------------+
* | All changes should be made in the repository, |
* | otherwise they will be lost. |
* +------------------------------------------------------------+
* | Changes to this page may affect many users. |
* | Please discuss changes by opening an issue before editing. |
* +------------------------------------------------------------+
*/
/* <nowiki> */
(() => {
"use strict";
// dist/GadgetsDefinition/GadgetsDefinition.js
function _createForOfIteratorHelper(r, e) {
var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
if (!t) {
if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
t && (r = t);
var n = 0, F = function() {
};
return { s: F, n: function() {
return n >= r.length ? { done: true } : { done: false, value: r[n++] };
}, e: function(r2) {
throw r2;
}, f: F };
}
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
var o, a = true, u = false;
return { s: function() {
t = t.call(r);
}, n: function() {
var r2 = t.next();
return a = r2.done, r2;
}, e: function(r2) {
u = true, o = r2;
}, f: function() {
try {
a || null == t.return || t.return();
} finally {
if (u) throw o;
}
} };
}
function _unsupportedIterableToArray(r, a) {
if (r) {
if ("string" == typeof r) return _arrayLikeToArray(r, a);
var t = {}.toString.call(r).slice(8, -1);
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
}
}
function _arrayLikeToArray(r, a) {
(null == a || a > r.length) && (a = r.length);
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
return n;
}
//! src/GadgetsDefinition/modules/constant.ts
var IS_DEFINITION_PAGE = mw.config.get("wgCanonicalNamespace") === "MediaWiki" && mw.config.get("wgTitle") === "Gadgets-definition";
var REXEX_GADGET_NAME = /^(\s*)([\w_-]+)\s*/;
//! src/GadgetsDefinition/modules/util/generateGadgetId.ts
var generateGadgetId = (gadgetName) => {
return "Gadget-".concat(gadgetName);
};
//! src/GadgetsDefinition/GadgetsDefinition.ts
var import_ext_gadget = require("ext.gadget.Util");
//! src/GadgetsDefinition/modules/util/matchGadgetName.ts
var matchGadgetName = (innerHTML) => {
var _ref;
const regExpExecArray = REXEX_GADGET_NAME.exec(innerHTML);
return (_ref = regExpExecArray ? regExpExecArray[2] : null) !== null && _ref !== void 0 ? _ref : "";
};
//! src/GadgetsDefinition/modules/util/makeLink.ts
var makeLink = (href, text) => {
const link = document.createElement("a");
link.href = href;
link.textContent = text;
return link.outerHTML;
};
var makeWikilink = (page, text) => {
return makeLink(mw.util.getUrl(page), text || page);
};
//! src/GadgetsDefinition/modules/processGadgetDefinition.ts
var linkGadgetSource = (sourcePage) => {
return makeWikilink("MediaWiki:Gadget-".concat(sourcePage), sourcePage);
};
var linkGadgetAnchor = (gadgetName, text) => {
return makeLink("#".concat(generateGadgetId(gadgetName)), text || gadgetName);
};
var processGadgetDefinition = (innerHTML) => {
return innerHTML.replace(REXEX_GADGET_NAME, (_wholeMatch, whitespace, gadgetName) => {
return "".concat(whitespace + linkGadgetSource(gadgetName), " ");
}).replace(/([\w_\-.]+\.(?:css|js(?:on)?))/g, linkGadgetSource).replace(/\s*\|\s*/g, " | ").replace(/([a-z]+)\s*=\s*(.+?)(?=\s*[|\]])/g, (_wholeMatch, key, value) => {
let splitValue = value.split(/\s*,\s*/g);
switch (key) {
case "dependencies":
splitValue = splitValue.map((dependency) => {
const gadgetName = /^ext\.gadget\.(.+)$/.exec(dependency);
if (gadgetName) {
var _gadgetName$;
const _gadgetName = (_gadgetName$ = gadgetName[1]) !== null && _gadgetName$ !== void 0 ? _gadgetName$ : "";
return linkGadgetAnchor(_gadgetName, dependency);
}
return makeWikilink("Special:GoToInterwiki/mw:ResourceLoader/Core_modules#".concat(dependency), dependency);
});
break;
case "rights":
key = makeWikilink("Special:GoToInterwiki/mw:Manual:User_rights#List_of_permissions", key);
break;
case "peers":
splitValue = splitValue.map((gadgetName) => {
return linkGadgetAnchor(gadgetName);
});
}
return "".concat(key, " = ").concat(splitValue.join(", "));
});
};
//! src/GadgetsDefinition/GadgetsDefinition.ts
void (0, import_ext_gadget.getBody)().then(function gadgetsDefinition($body) {
const $parserOutput = $body.find(".mw-parser-output");
if (!IS_DEFINITION_PAGE || !$parserOutput.length) {
return;
}
var _iterator = _createForOfIteratorHelper($parserOutput.find("li")), _step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done; ) {
const element = _step.value;
const gadgetName = matchGadgetName(element.innerHTML);
if (gadgetName) {
element.id = generateGadgetId(gadgetName);
}
element.innerHTML = processGadgetDefinition(element.innerHTML);
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
var _iterator2 = _createForOfIteratorHelper($parserOutput.find("pre")), _step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done; ) {
const element = _step2.value;
element.innerHTML = element.innerHTML.replace(/[^\n]+/g, processGadgetDefinition);
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
});
})();
/* </nowiki> */
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL0dhZGdldHNEZWZpbml0aW9uL21vZHVsZXMvY29uc3RhbnQudHMiLCAic3JjL0dhZGdldHNEZWZpbml0aW9uL21vZHVsZXMvdXRpbC9nZW5lcmF0ZUdhZGdldElkLnRzIiwgInNyYy9HYWRnZXRzRGVmaW5pdGlvbi9HYWRnZXRzRGVmaW5pdGlvbi50cyIsICJzcmMvR2FkZ2V0c0RlZmluaXRpb24vbW9kdWxlcy91dGlsL21hdGNoR2FkZ2V0TmFtZS50cyIsICJzcmMvR2FkZ2V0c0RlZmluaXRpb24vbW9kdWxlcy91dGlsL21ha2VMaW5rLnRzIiwgInNyYy9HYWRnZXRzRGVmaW5pdGlvbi9tb2R1bGVzL3Byb2Nlc3NHYWRnZXREZWZpbml0aW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBJU19ERUZJTklUSU9OX1BBR0U6IGJvb2xlYW4gPVxuXHRtdy5jb25maWcuZ2V0KCd3Z0Nhbm9uaWNhbE5hbWVzcGFjZScpID09PSAnTWVkaWFXaWtpJyAmJiBtdy5jb25maWcuZ2V0KCd3Z1RpdGxlJykgPT09ICdHYWRnZXRzLWRlZmluaXRpb24nO1xuXG5jb25zdCBSRVhFWF9HQURHRVRfTkFNRTogUmVnRXhwID0gL14oXFxzKikoW1xcd18tXSspXFxzKi87XG5cbmV4cG9ydCB7SVNfREVGSU5JVElPTl9QQUdFLCBSRVhFWF9HQURHRVRfTkFNRX07XG4iLCAiY29uc3QgZ2VuZXJhdGVHYWRnZXRJZCA9IChnYWRnZXROYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuXHRyZXR1cm4gYEdhZGdldC0ke2dhZGdldE5hbWV9YDtcbn07XG5cbmV4cG9ydCB7Z2VuZXJhdGVHYWRnZXRJZH07XG4iLCAiLyoqXG4gKiBAZGVzY3JpcHRpb24gQWRkcyBsaW5rcyB0byBnYWRnZXQgZGVmaW5pdGlvbnMgaW4gW1tNZWRpYVdpa2k6R2FkZ2V0cy1kZWZpbml0aW9uXV0gYW5kXG4gKiBwcmV0dGlmaWVzIHRoZW0gYnkgYWRkaW5nIHdoaXRlc3BhY2UuXG4gKiBBZGRzIGFuY2hvcnMgdG8gZ2FkZ2V0IGRlZmluaXRpb25zIGFzIHdlbGwgYXMgQ1NTIHRvIGhpZ2hsaWdodCB0aGVtIHdoZW4gd2VcbiAqIGNsaWNrIGEgbGluayB0byB0aGVtLlxuICovXG4vLyBUZWNobmlxdWUgZ2xlYW5lZCBmcm9tIFtbZW53aWtpOmZyOlV0aWxpc2F0ZXVyOk9kMW4vQWRkTGlua3NHYWRnZXRzRGVmaW5pdGlvbi5qc11dLlxuaW1wb3J0ICcuL0dhZGdldHNEZWZpbml0aW9uLmxlc3MnO1xuaW1wb3J0IHtJU19ERUZJTklUSU9OX1BBR0V9IGZyb20gJy4vbW9kdWxlcy9jb25zdGFudCc7XG5pbXBvcnQge2dlbmVyYXRlR2FkZ2V0SWR9IGZyb20gJy4vbW9kdWxlcy91dGlsL2dlbmVyYXRlR2FkZ2V0SWQnO1xuaW1wb3J0IHtnZXRCb2R5fSBmcm9tICdleHQuZ2FkZ2V0LlV0aWwnO1xuaW1wb3J0IHttYXRjaEdhZGdldE5hbWV9IGZyb20gJy4vbW9kdWxlcy91dGlsL21hdGNoR2FkZ2V0TmFtZSc7XG5pbXBvcnQge3Byb2Nlc3NHYWRnZXREZWZpbml0aW9ufSBmcm9tICcuL21vZHVsZXMvcHJvY2Vzc0dhZGdldERlZmluaXRpb24nO1xuXG52b2lkIGdldEJvZHkoKS50aGVuKGZ1bmN0aW9uIGdhZGdldHNEZWZpbml0aW9uKCRib2R5OiBKUXVlcnk8SFRNTEJvZHlFbGVtZW50Pik6IHZvaWQge1xuXHRjb25zdCAkcGFyc2VyT3V0cHV0OiBKUXVlcnkgPSAkYm9keS5maW5kKCcubXctcGFyc2VyLW91dHB1dCcpO1xuXG5cdC8vIE9ubHkgb3BlcmF0ZSBvbiBbW01lZGlhV2lraTpHYWRnZXRzLWRlZmluaXRpb25dXSB3aGVuIHRoZSB0ZXh0IGlzIHZpc2libGUuXG5cdGlmICghSVNfREVGSU5JVElPTl9QQUdFIHx8ICEkcGFyc2VyT3V0cHV0Lmxlbmd0aCkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIFByb2Nlc3MgZ2FkZ2V0IGRlZmluaXRpb25zIGluIGxpc3RzLlxuXHRmb3IgKGNvbnN0IGVsZW1lbnQgb2YgJHBhcnNlck91dHB1dC5maW5kKCdsaScpKSB7XG5cdFx0Ly8gQWRkIGlkIHNvIHRoYXQgZ2FkZ2V0IGRlZmluaXRpb25zIGNhbiBiZSBoaWdobGlnaHRlZCB3aGVuIHdlIGNsaWNrIGEgbGluayB0byB0aGVtLlxuXHRcdGNvbnN0IGdhZGdldE5hbWU6IHN0cmluZyA9IG1hdGNoR2FkZ2V0TmFtZShlbGVtZW50LmlubmVySFRNTCk7XG5cdFx0aWYgKGdhZGdldE5hbWUpIHtcblx0XHRcdGVsZW1lbnQuaWQgPSBnZW5lcmF0ZUdhZGdldElkKGdhZGdldE5hbWUpO1xuXHRcdH1cblxuXHRcdGVsZW1lbnQuaW5uZXJIVE1MID0gcHJvY2Vzc0dhZGdldERlZmluaXRpb24oZWxlbWVudC5pbm5lckhUTUwpO1xuXHR9XG5cblx0Ly8gUHJvY2VzcyBnYWRnZXQgZGVmaW5pdGlvbnMgaW4gcHJlIHRhZ3MuXG5cdGZvciAoY29uc3QgZWxlbWVudCBvZiAkcGFyc2VyT3V0cHV0LmZpbmQoJ3ByZScpKSB7XG5cdFx0ZWxlbWVudC5pbm5lckhUTUwgPSBlbGVtZW50LmlubmVySFRNTC5yZXBsYWNlKC9bXlxcbl0rL2csIHByb2Nlc3NHYWRnZXREZWZpbml0aW9uKTtcblx0fVxufSk7XG4iLCAiaW1wb3J0IHtSRVhFWF9HQURHRVRfTkFNRX0gZnJvbSAnLi4vY29uc3RhbnQnO1xuXG5jb25zdCBtYXRjaEdhZGdldE5hbWUgPSAoaW5uZXJIVE1MOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuXHRjb25zdCByZWdFeHBFeGVjQXJyYXk6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGwgPSBSRVhFWF9HQURHRVRfTkFNRS5leGVjKGlubmVySFRNTCk7XG5cblx0cmV0dXJuIChyZWdFeHBFeGVjQXJyYXkgPyByZWdFeHBFeGVjQXJyYXlbMl0gOiBudWxsKSA/PyAnJztcbn07XG5cbmV4cG9ydCB7bWF0Y2hHYWRnZXROYW1lfTtcbiIsICJjb25zdCBtYWtlTGluayA9IChocmVmOiBzdHJpbmcsIHRleHQ6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcgPT4ge1xuXHQvLyBUaGlzIGFuY2hvciBlbGVtZW50IGlzIHVzZWQgdG8gZ2VuZXJhdGUgbGlua3MgYW5kIGlzIG5vdCBhdHRhY2hlZCB0byB0aGUgZG9jdW1lbnQuXG5cdGNvbnN0IGxpbms6IEhUTUxBbmNob3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXG5cdGxpbmsuaHJlZiA9IGhyZWY7XG5cdGxpbmsudGV4dENvbnRlbnQgPSB0ZXh0O1xuXG5cdHJldHVybiBsaW5rLm91dGVySFRNTDtcbn07XG5cbmNvbnN0IG1ha2VXaWtpbGluayA9IChwYWdlOiBzdHJpbmcsIHRleHQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG5cdHJldHVybiBtYWtlTGluayhtdy51dGlsLmdldFVybChwYWdlKSwgdGV4dCB8fCBwYWdlKTtcbn07XG5cbmV4cG9ydCB7bWFrZUxpbmssIG1ha2VXaWtpbGlua307XG4iLCAiaW1wb3J0IHttYWtlTGluaywgbWFrZVdpa2lsaW5rfSBmcm9tICcuL3V0aWwvbWFrZUxpbmsnO1xuaW1wb3J0IHtSRVhFWF9HQURHRVRfTkFNRX0gZnJvbSAnLi9jb25zdGFudCc7XG5pbXBvcnQge2dlbmVyYXRlR2FkZ2V0SWR9IGZyb20gJy4vdXRpbC9nZW5lcmF0ZUdhZGdldElkJztcblxuY29uc3QgbGlua0dhZGdldFNvdXJjZSA9IChzb3VyY2VQYWdlOiBzdHJpbmcpID0+IHtcblx0cmV0dXJuIG1ha2VXaWtpbGluayhgTWVkaWFXaWtpOkdhZGdldC0ke3NvdXJjZVBhZ2V9YCwgc291cmNlUGFnZSk7XG59O1xuXG5jb25zdCBsaW5rR2FkZ2V0QW5jaG9yID0gKGdhZGdldE5hbWU6IHN0cmluZywgdGV4dD86IHN0cmluZykgPT4ge1xuXHRyZXR1cm4gbWFrZUxpbmsoYCMke2dlbmVyYXRlR2FkZ2V0SWQoZ2FkZ2V0TmFtZSl9YCwgdGV4dCB8fCBnYWRnZXROYW1lKTtcbn07XG5cbmNvbnN0IHByb2Nlc3NHYWRnZXREZWZpbml0aW9uID0gKGlubmVySFRNTDogc3RyaW5nKTogc3RyaW5nID0+IHtcblx0cmV0dXJuIChcblx0XHRpbm5lckhUTUxcblx0XHRcdC8vIGxpbmsgZ2FkZ2V0IG5hbWUgdG8gc3lzdGVtIG1lc3NhZ2UgcGFnZSBhbmQgYWRkIHNwYWNlIGFmdGVyIGl0XG5cdFx0XHQucmVwbGFjZShSRVhFWF9HQURHRVRfTkFNRSwgKF93aG9sZU1hdGNoOiBzdHJpbmcsIHdoaXRlc3BhY2U6IHN0cmluZywgZ2FkZ2V0TmFtZTogc3RyaW5nKTogc3RyaW5nID0+IHtcblx0XHRcdFx0cmV0dXJuIGAke3doaXRlc3BhY2UgKyBsaW5rR2FkZ2V0U291cmNlKGdhZGdldE5hbWUpfSBgO1xuXHRcdFx0fSlcblx0XHRcdC5yZXBsYWNlKC8oW1xcd19cXC0uXStcXC4oPzpjc3N8anMoPzpvbik/KSkvZywgbGlua0dhZGdldFNvdXJjZSkgLy8gbGluayBzY3JpcHQgbmFtZXNcblx0XHRcdC5yZXBsYWNlKC9cXHMqXFx8XFxzKi9nLCAnIHwgJykgLy8gc3BhY2VzIGFyb3VuZCBwaXBlc1xuXHRcdFx0LyoqXG5cdFx0XHQgKiBwcm9jZXNzIG9wdGlvbnNcblx0XHRcdCAqXG5cdFx0XHQgKiBMaW5rIGRlcGVuZGVuY2llczogZXh0LmdhZGdldC5uYW1lIHRvIGVudHJ5IG9uIHRoaXMgcGFnZSwgb3RoZXJzIHRvXG5cdFx0XHQgKiBbW213OlJlc291cmNlTG9hZGVyL0NvcmUgbW9kdWxlc11dIChldmVuIHRob3VnaCBub3QgYWxsIGhhdmUgYW4gZW50cnlcblx0XHRcdCAqIHRoZXJlKS5cblx0XHRcdCAqXG5cdFx0XHQgKiBMaW5rIHBlZXJzIHRvIGVudHJ5IG9uIHRoaXMgcGFnZS5cblx0XHRcdCAqXG5cdFx0XHQgKiBMaW5rIHJpZ2h0cyB0byBbW213Ok1hbnVhbDpVc2VyX3JpZ2h0cyNMaXN0X29mX3Blcm1pc3Npb25zXV0uIFRoZXJlXG5cdFx0XHQgKiBhcmUgdW5mb3J0dW5hdGVseSBubyBhbmNob3JzIGZvciBpbmRpdmlkdWFsIHJpZ2h0cy5cblx0XHRcdCAqL1xuXHRcdFx0LnJlcGxhY2UoLyhbYS16XSspXFxzKj1cXHMqKC4rPykoPz1cXHMqW3xcXF1dKS9nLCAoX3dob2xlTWF0Y2g6IHN0cmluZywga2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IHtcblx0XHRcdFx0bGV0IHNwbGl0VmFsdWU6IHN0cmluZ1tdID0gdmFsdWUuc3BsaXQoL1xccyosXFxzKi9nKTtcblx0XHRcdFx0c3dpdGNoIChrZXkpIHtcblx0XHRcdFx0XHRjYXNlICdkZXBlbmRlbmNpZXMnOlxuXHRcdFx0XHRcdFx0c3BsaXRWYWx1ZSA9IHNwbGl0VmFsdWUubWFwKChkZXBlbmRlbmN5OiBzdHJpbmcpID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgZ2FkZ2V0TmFtZTogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCA9IC9eZXh0XFwuZ2FkZ2V0XFwuKC4rKSQvLmV4ZWMoZGVwZW5kZW5jeSk7XG5cdFx0XHRcdFx0XHRcdGlmIChnYWRnZXROYW1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgX2dhZGdldE5hbWU6IHN0cmluZyA9IGdhZGdldE5hbWVbMV0gPz8gJyc7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGxpbmtHYWRnZXRBbmNob3IoX2dhZGdldE5hbWUsIGRlcGVuZGVuY3kpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJldHVybiBtYWtlV2lraWxpbmsoXG5cdFx0XHRcdFx0XHRcdFx0YFNwZWNpYWw6R29Ub0ludGVyd2lraS9tdzpSZXNvdXJjZUxvYWRlci9Db3JlX21vZHVsZXMjJHtkZXBlbmRlbmN5fWAsXG5cdFx0XHRcdFx0XHRcdFx0ZGVwZW5kZW5jeVxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdyaWdodHMnOlxuXHRcdFx0XHRcdFx0a2V5ID0gbWFrZVdpa2lsaW5rKCdTcGVjaWFsOkdvVG9JbnRlcndpa2kvbXc6TWFudWFsOlVzZXJfcmlnaHRzI0xpc3Rfb2ZfcGVybWlzc2lvbnMnLCBrZXkpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncGVlcnMnOlxuXHRcdFx0XHRcdFx0c3BsaXRWYWx1ZSA9IHNwbGl0VmFsdWUubWFwKChnYWRnZXROYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbGlua0dhZGdldEFuY2hvcihnYWRnZXROYW1lKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBgJHtrZXl9ID0gJHtzcGxpdFZhbHVlLmpvaW4oJywgJyl9YDtcblx0XHRcdH0pXG5cdCk7XG59O1xuXG5leHBvcnQge3Byb2Nlc3NHYWRnZXREZWZpbml0aW9ufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFNQSxxQkFDTEMsR0FBR0MsT0FBT0MsSUFBSSxzQkFBc0IsTUFBTSxlQUFlRixHQUFHQyxPQUFPQyxJQUFJLFNBQVMsTUFBTTtBQUV2RixJQUFNQyxvQkFBNEI7O0FDSGxDLElBQU1DLG1CQUFvQkMsZ0JBQStCO0FBQ3hELFNBQUEsVUFBQUMsT0FBaUJELFVBQVU7QUFDNUI7O0FDUUEsSUFBQUUsb0JBQXNCQyxRQUFBLGlCQUFBOztBQ1J0QixJQUFNQyxrQkFBbUJDLGVBQThCO0FBQUEsTUFBQUM7QUFDdEQsUUFBTUMsa0JBQTBDVCxrQkFBa0JVLEtBQUtILFNBQVM7QUFFaEYsVUFBQUMsT0FBUUMsa0JBQWtCQSxnQkFBZ0IsQ0FBQyxJQUFJLFVBQUEsUUFBQUQsU0FBQSxTQUFBQSxPQUFTO0FBQ3pEOztBQ05BLElBQU1HLFdBQVdBLENBQUNDLE1BQWNDLFNBQWdDO0FBRS9ELFFBQU1DLE9BQTBCQyxTQUFTQyxjQUFjLEdBQUc7QUFFMURGLE9BQUtGLE9BQU9BO0FBQ1pFLE9BQUtHLGNBQWNK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QVk2QyxRQUFRN0MsVUFBVW9CLFFBQVEsV0FBV0QsdUJBQXVCO0lBQ2pGO0VBQUEsU0FBQTRCLEtBQUE7QUFBQUcsZUFBQUYsRUFBQUQsR0FBQTtFQUFBLFVBQUE7QUFBQUcsZUFBQUQsRUFBQTtFQUFBO0FBQ0QsQ0FBQzsiLAogICJuYW1lcyI6IFsiSVNfREVGSU5JVElPTl9QQUdFIiwgIm13IiwgImNvbmZpZyIsICJnZXQiLCAiUkVYRVhfR0FER0VUX05BTUUiLCAiZ2VuZXJhdGVHYWRnZXRJZCIsICJnYWRnZXROYW1lIiwgImNvbmNhdCIsICJpbXBvcnRfZXh0X2dhZGdldCIsICJyZXF1aXJlIiwgIm1hdGNoR2FkZ2V0TmFtZSIsICJpbm5lckhUTUwiLCAiX3JlZiIsICJyZWdFeHBFeGVjQXJyYXkiLCAiZXhlYyIsICJtYWtlTGluayIsICJocmVmIiwgInRleHQiLCAibGluayIsICJkb2N1bWVudCIsICJjcmVhdGVFbGVtZW50IiwgInRleHRDb250ZW50IiwgIm91dGVySFRNTCIsICJtYWtlV2lraWxpbmsiLCAicGFnZSIsICJ1dGlsIiwgImdldFVybCIsICJsaW5rR2FkZ2V0U291cmNlIiwgInNvdXJjZVBhZ2UiLCAibGlua0dhZGdldEFuY2hvciIsICJwcm9jZXNzR2FkZ2V0RGVmaW5pdGlvbiIsICJyZXBsYWNlIiwgIl93aG9sZU1hdGNoIiwgIndoaXRlc3BhY2UiLCAia2V5IiwgInZhbHVlIiwgInNwbGl0VmFsdWUiLCAic3BsaXQiLCAibWFwIiwgImRlcGVuZGVuY3kiLCAiX2dhZGdldE5hbWUkIiwgIl9nYWRnZXROYW1lIiwgImpvaW4iLCAiZ2V0Qm9keSIsICJ0aGVuIiwgImdhZGdldHNEZWZpbml0aW9uIiwgIiRib2R5IiwgIiRwYXJzZXJPdXRwdXQiLCAiZmluZCIsICJsZW5ndGgiLCAiX2l0ZXJhdG9yIiwgIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwgIl9zdGVwIiwgInMiLCAibiIsICJkb25lIiwgImVsZW1lbnQiLCAiaWQiLCAiZXJyIiwgImUiLCAiZiIsICJfaXRlcmF0b3IyIiwgIl9zdGVwMiJdCn0K