diff --git a/dist/MarkRights/MarkRights.js b/dist/MarkRights/MarkRights.js index 53c6bbd0..6d03639c 100644 --- a/dist/MarkRights/MarkRights.js +++ b/dist/MarkRights/MarkRights.js @@ -311,64 +311,75 @@ var appendUserRightsMark = ($userLinks, { userGroupMap, globalUserGroupMap }) => { - $userLinks.each((_index, element) => { - var _$element$attr, _userGroupMap$get, _globalUserGroupMap$g; - const $element = $(element); - if ($element.parents("li, table.mw-changeslist-line").find(".gadgets-markrights").length) { - return; - } - const username = getUsername((_$element$attr = $element.attr("href")) !== null && _$element$attr !== void 0 ? _$element$attr : ""); - if (!username) { - return; - } - const groups = (_userGroupMap$get = userGroupMap.get(username)) !== null && _userGroupMap$get !== void 0 ? _userGroupMap$get : []; - const globalGroups = (_globalUserGroupMap$g = globalUserGroupMap.get(username)) !== null && _globalUserGroupMap$g !== void 0 ? _globalUserGroupMap$g : []; - if (!groups) { - return; - } - const $sups = $("").addClass("gadgets-markrights"); - var _iterator2 = _createForOfIteratorHelper((0, import_ext_gadget3.uniqueArray)([...groups, ...globalGroups])), _step2; - try { - for (_iterator2.s(); !(_step2 = _iterator2.n()).done; ) { - const group = _step2.value; - const className = "gadgets-markrights__".concat(group); - if ($sups.find("sup").hasClass(className)) { - return; + var _iterator2 = _createForOfIteratorHelper($userLinks), _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done; ) { + var _$element$attr, _userGroupMap$get, _globalUserGroupMap$g; + const element = _step2.value; + const $element = $(element); + if ($element.parents("li").find(".gadgets-markrights").length) { + continue; + } + if ($element.siblings().find(".gadgets-markrights").length) { + continue; + } + const username = getUsername((_$element$attr = $element.attr("href")) !== null && _$element$attr !== void 0 ? _$element$attr : ""); + if (!username) { + continue; + } + const groups = (_userGroupMap$get = userGroupMap.get(username)) !== null && _userGroupMap$get !== void 0 ? _userGroupMap$get : []; + const globalGroups = (_globalUserGroupMap$g = globalUserGroupMap.get(username)) !== null && _globalUserGroupMap$g !== void 0 ? _globalUserGroupMap$g : []; + if (!groups) { + continue; + } + const $sups = $("").addClass("gadgets-markrights"); + var _iterator3 = _createForOfIteratorHelper((0, import_ext_gadget3.uniqueArray)([...groups, ...globalGroups])), _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done; ) { + const group = _step3.value; + const className = "gadgets-markrights__".concat(group); + if ($sups.find("sup").hasClass(className)) { + continue; + } + $sups.append( + // The following classes are used here: + // * gadget-markrights__qiuwen + // * gadget-markrights__steward + // * gadget-markrights__checkuser + // * gadget-markrights__suppress + // * gadget-markrights__sysop + // * gadget-markrights__interface-admin + // * gadget-markrights__templateeditor + // * gadget-markrights__transwiki + // * gadget-markrights__patroller + // * gadget-markrights__autoreviewer + // * gadget-markrights__senioreditor + // * gadget-markrights__eventsponsor + // * gadget-markrights__massmessage-sender + // * gadget-markrights__confirmed + // * gadget-markrights__autoconfirmed + // * gadget-markrights__bot + // * gadget-markrights__flood + // * gadget-markrights__ipblock-exempt + // * gadget-markrights__rnrsverify-exempt + $("").addClass(className).attr({ + alt: getMessage(group), + title: getMessage(group) + }) + ); } - $sups.append( - // The following classes are used here: - // * gadget-markrights__qiuwen - // * gadget-markrights__steward - // * gadget-markrights__checkuser - // * gadget-markrights__suppress - // * gadget-markrights__sysop - // * gadget-markrights__interface-admin - // * gadget-markrights__templateeditor - // * gadget-markrights__transwiki - // * gadget-markrights__patroller - // * gadget-markrights__autoreviewer - // * gadget-markrights__senioreditor - // * gadget-markrights__eventsponsor - // * gadget-markrights__massmessage-sender - // * gadget-markrights__confirmed - // * gadget-markrights__autoconfirmed - // * gadget-markrights__bot - // * gadget-markrights__flood - // * gadget-markrights__ipblock-exempt - // * gadget-markrights__rnrsverify-exempt - $("").addClass(className).attr({ - alt: getMessage(group), - title: getMessage(group) - }) - ); + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); } - } catch (err) { - _iterator2.e(err); - } finally { - _iterator2.f(); + $element.after($sups); } - $element.after($sups); - }); + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } }; var markUserRights = /* @__PURE__ */ function() { var _ref3 = _asyncToGenerator(function* ($content) { @@ -377,19 +388,27 @@ var markUserRights = /* @__PURE__ */ function() { const queue = []; const userGroupMap = /* @__PURE__ */ new Map(); const globalUserGroupMap = /* @__PURE__ */ new Map(); - $userLinks.each((_index, { - textContent - }) => { - const userLinkText = textContent === null || textContent === void 0 ? void 0 : textContent.toString(); - if (userLinkText) { - users[users.length] = userLinkText; - } - users = (0, import_ext_gadget3.uniqueArray)(users); - if (users.length === 25) { - queue[queue.length] = users; - users = []; + var _iterator4 = _createForOfIteratorHelper($userLinks), _step4; + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done; ) { + const { + textContent + } = _step4.value; + const userLinkText = textContent === null || textContent === void 0 ? void 0 : textContent.toString(); + if (userLinkText) { + users[users.length] = userLinkText; + } + users = (0, import_ext_gadget3.uniqueArray)(users); + if (users.length === 25) { + queue[queue.length] = users; + users = []; + } } - }); + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); + } if (users.length > 0) { queue[queue.length] = users; } @@ -400,10 +419,10 @@ var markUserRights = /* @__PURE__ */ function() { const { users: queryUsers } = queryUserResponse["query"]; - var _iterator3 = _createForOfIteratorHelper(queryUsers), _step3; + var _iterator5 = _createForOfIteratorHelper(queryUsers), _step5; try { - for (_iterator3.s(); !(_step3 = _iterator3.n()).done; ) { - const user = _step3.value; + for (_iterator5.s(); !(_step5 = _iterator5.n()).done; ) { + const user = _step5.value; if (!user || !user.groups) { continue; } @@ -412,14 +431,14 @@ var markUserRights = /* @__PURE__ */ function() { })); } } catch (err) { - _iterator3.e(err); + _iterator5.e(err); } finally { - _iterator3.f(); + _iterator5.f(); } - var _iterator4 = _createForOfIteratorHelper(ususers), _step4; + var _iterator6 = _createForOfIteratorHelper(ususers), _step6; try { - for (_iterator4.s(); !(_step4 = _iterator4.n()).done; ) { - const user = _step4.value; + for (_iterator6.s(); !(_step6 = _iterator6.n()).done; ) { + const user = _step6.value; const queryGlobalUserInfoResponse = yield queryGlobalUserGroups(user); if (queryGlobalUserInfoResponse["query"] && queryGlobalUserInfoResponse["query"].globaluserinfo) { const { @@ -429,9 +448,9 @@ var markUserRights = /* @__PURE__ */ function() { } } } catch (err) { - _iterator4.e(err); + _iterator6.e(err); } finally { - _iterator4.f(); + _iterator6.f(); } appendUserRightsMark($userLinks, { userGroupMap, @@ -456,4 +475,4 @@ mw.hook("wikipage.content").add(function markRights($content) { /* */ -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL01hcmtSaWdodHMvTWFya1JpZ2h0cy50cyIsICJzcmMvTWFya1JpZ2h0cy9vcHRpb25zLmpzb24iLCAic3JjL01hcmtSaWdodHMvbW9kdWxlcy9hcGkudHMiLCAic3JjL01hcmtSaWdodHMvbW9kdWxlcy9xdWVyeS50cyIsICJzcmMvTWFya1JpZ2h0cy9tb2R1bGVzL2kxOG4udHMiLCAic3JjL01hcmtSaWdodHMvbW9kdWxlcy9jb3JlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBkZXNjcmlwdGlvbiDlnKjmnIDov5Hkv67mlLnjgIHnm5Hop4bliJfooajjgIHmnaHnm67ljoblj7LorrDlvZXnrYnkvY3nva7ku6XnibnmrormoLzlvI/mmL7npLrmnInnibnmrormnYPpmZDnmoTnlKjmiLdcbiAqL1xuaW1wb3J0IHttYXJrVXNlclJpZ2h0c30gZnJvbSAnLi9tb2R1bGVzL2NvcmUnO1xuXG5tdy5ob29rKCd3aWtpcGFnZS5jb250ZW50JykuYWRkKGZ1bmN0aW9uIG1hcmtSaWdodHMoJGNvbnRlbnQpOiB2b2lkIHtcblx0aWYgKCRjb250ZW50LmF0dHIoJ2lkJykgPT09ICdtdy1jb250ZW50LXRleHQnIHx8ICRjb250ZW50Lmhhc0NsYXNzKCdtdy1jaGFuZ2VzbGlzdCcpKSB7XG5cdFx0dm9pZCBtYXJrVXNlclJpZ2h0cygkY29udGVudCk7XG5cdH1cbn0pO1xuXG5leHBvcnQge3F1ZXJ5R2xvYmFsVXNlckdyb3VwcywgcXVlcnlVc2VyR3JvdXBzfSBmcm9tICcuL21vZHVsZXMvcXVlcnknO1xuIiwgIntcblx0XCJ2ZXJzaW9uXCI6IDIuMFxufVxuIiwgImltcG9ydCAqIGFzIE9QVElPTlMgZnJvbSAnLi4vb3B0aW9ucy5qc29uJztcbmltcG9ydCB7aW5pdE13QXBpfSBmcm9tICdleHQuZ2FkZ2V0LlV0aWwnO1xuXG5jb25zdCBhcGk6IG13LkFwaSA9IGluaXRNd0FwaShgTWFya1JpZ2h0cy8ke09QVElPTlMudmVyc2lvbn1gKTtcblxuZXhwb3J0IHthcGl9O1xuIiwgImltcG9ydCB7YXBpfSBmcm9tICcuL2FwaSc7XG5cbmNvbnN0IHF1ZXJ5VXNlckdyb3VwcyA9IGFzeW5jICh1c3VzZXJzOiBzdHJpbmcgfCBzdHJpbmdbXSkgPT4ge1xuXHRjb25zdCBwYXJhbXM6IEFwaVF1ZXJ5VXNlcnNQYXJhbXMgPSB7XG5cdFx0dXN1c2Vycyxcblx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0Zm9ybWF0dmVyc2lvbjogJzInLFxuXHRcdGxpc3Q6ICd1c2VycycsXG5cdFx0dXNwcm9wOiAnZ3JvdXBzJyxcblx0XHRzbWF4YWdlOiA2MDAsXG5cdFx0bWF4YWdlOiA2MDAsXG5cdH07XG5cdGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpLmdldChwYXJhbXMpO1xuXG5cdHJldHVybiByZXNwb25zZTtcbn07XG5cbmNvbnN0IHF1ZXJ5R2xvYmFsVXNlckdyb3VwcyA9IGFzeW5jICh1c2VyOiBzdHJpbmcpID0+IHtcblx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHRmb3JtYXR2ZXJzaW9uOiAnMicsXG5cdFx0bWV0YTogJ2dsb2JhbHVzZXJpbmZvJyxcblx0XHRndWl1c2VyOiB1c2VyLFxuXHRcdGd1aXByb3A6ICdncm91cHMnLFxuXHRcdHNtYXhhZ2U6IDYwMCxcblx0XHRtYXhhZ2U6IDYwMCxcblx0fTtcblx0Y29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGkuZ2V0KHBhcmFtcyk7XG5cblx0cmV0dXJuIHJlc3BvbnNlO1xufTtcblxuZXhwb3J0IHtxdWVyeVVzZXJHcm91cHMsIHF1ZXJ5R2xvYmFsVXNlckdyb3Vwc307XG4iLCAiaW1wb3J0IHtsb2NhbGl6ZX0gZnJvbSAnZXh0LmdhZGdldC5pMThuJztcblxuY29uc3QgZ2V0STE4bk1lc3NhZ2VzID0gKCkgPT4ge1xuXHRyZXR1cm4ge1xuXHRcdHFpdXdlbjogbG9jYWxpemUoe1xuXHRcdFx0ZW46ICdXZWJtYXN0ZXInLFxuXHRcdFx0J3poLWhhbnMnOiAn56uZ6ZW/Jyxcblx0XHRcdCd6aC1oYW50JzogJ+ermemVtycsXG5cdFx0fSksXG5cdFx0c3Rld2FyZDogbG9jYWxpemUoe1xuXHRcdFx0ZW46ICdTdGV3YXJkJyxcblx0XHRcdCd6aC1oYW5zJzogJ+ijgeWGs+WnlOWRmCcsXG5cdFx0XHQnemgtaGFudCc6ICfoo4Hmsbrlp5Tlk6EnLFxuXHRcdH0pLFxuXHRcdGNoZWNrdXNlcjogbG9jYWxpemUoe1xuXHRcdFx0ZW46ICdDaGVja1VzZXInLFxuXHRcdFx0J3poLWhhbnMnOiAn55So5oi35p+l5qC4Jyxcblx0XHRcdCd6aC1oYW50JzogJ+eUqOaItuafpeaguCcsXG5cdFx0fSksXG5cdFx0c3VwcHJlc3M6IGxvY2FsaXplKHtcblx0XHRcdGVuOiAnT3ZlcnNpZ2h0ZXInLFxuXHRcdFx0J3poLWhhbnMnOiAn55uR552j5ZGYJyxcblx0XHRcdCd6aC1oYW50JzogJ+ebo+edo+WToScsXG5cdFx0fSksXG5cdFx0c3lzb3A6IGxvY2FsaXplKHtcblx0XHRcdGVuOiAnU3lzT3AnLFxuXHRcdFx0J3poLWhhbnMnOiAn566h55CG5ZGYJyxcblx0XHRcdCd6aC1oYW50JzogJ+euoeeQhuWToScsXG5cdFx0fSksXG5cdFx0J2ludGVyZmFjZS1hZG1pbic6IGxvY2FsaXplKHtcblx0XHRcdGVuOiAnSW50ZXJmYWNlIEFkbWluaXN0cmF0b3InLFxuXHRcdFx0J3poLWhhbnMnOiAn55WM6Z2i566h55CG5ZGYJyxcblx0XHRcdCd6aC1oYW50JzogJ+S7i+mdoueuoeeQhuWToScsXG5cdFx0fSksXG5cdFx0dGVtcGxhdGVlZGl0b3I6IGxvY2FsaXplKHtcblx0XHRcdGVuOiAnVGVtcGxhdGUgRWRpdG9yJyxcblx0XHRcdCd6aC1oYW5zJzogJ+aooeadv+e8lui+keWRmCcsXG5cdFx0XHQnemgtaGFudCc6ICfmqKHmnb/nt6jovK/lk6EnLFxuXHRcdH0pLFxuXHRcdHRyYW5zd2lraTogbG9jYWxpemUoe1xuXHRcdFx0ZW46ICdJbXBvcnRlcicsXG5cdFx0XHQnemgtaGFucyc6ICflr7zlhaXogIUnLFxuXHRcdFx0J3poLWhhbnQnOiAn5Yyv5YWl6ICFJyxcblx0XHR9KSxcblx0XHRwYXRyb2xsZXI6IGxvY2FsaXplKHtcblx0XHRcdGVuOiAnUGF0cm9sbGVyJyxcblx0XHRcdCd6aC1oYW5zJzogJ+W3oeafpeWRmCcsXG5cdFx0XHQnemgtaGFudCc6ICflt6Hmn6Xlk6EnLFxuXHRcdH0pLFxuXHRcdGF1dG9yZXZpZXdlcjogbG9jYWxpemUoe1xuXHRcdFx0ZW46ICdFeGVtcHRlZCBmcm9tIHBhZ2UgcGF0cm9sJyxcblx0XHRcdCd6aC1oYW5zJzogJ+W3oeafpeixgeWFjScsXG5cdFx0XHQnemgtaGFudCc6ICflt6Hmn6XosYHlhY0nLFxuXHRcdH0pLFxuXHRcdHNlbmlvcmVkaXRvcjogbG9jYWxpemUoe1xuXHRcdFx0ZW46ICdTZW5pb3IgRWRpdG9yJyxcblx0XHRcdCd6aC1oYW5zJzogJ+i1hOa3see8luiAhScsXG5cdFx0XHQnemgtaGFudCc6ICfos4fmt7Hnt6jogIUnLFxuXHRcdH0pLFxuXHRcdGV2ZW50c3BvbnNvcjogbG9jYWxpemUoe1xuXHRcdFx0ZW46ICdFdmVudCBTcG9uc29yJyxcblx0XHRcdCd6aC1oYW5zJzogJ+a0u+WKqOe7hOe7h+iAhScsXG5cdFx0XHQnemgtaGFudCc6ICfmtLvli5XntYTnuZTogIUnLFxuXHRcdH0pLFxuXHRcdCdtYXNzbWVzc2FnZS1zZW5kZXInOiBsb2NhbGl6ZSh7XG5cdFx0XHRlbjogJ01hc3NNZXNzYWdlIHNlbmRlcicsXG5cdFx0XHQnemgtaGFucyc6ICflpKfph4/mtojmga/lj5HpgIHogIUnLFxuXHRcdFx0J3poLWhhbnQnOiAn5aSn6YeP6KiK5oGv5YKz6YCB6ICFJyxcblx0XHR9KSxcblx0XHRjb25maXJtZWQ6IGxvY2FsaXplKHtcblx0XHRcdGVuOiAnQ29uZmlybWVkIHVzZXInLFxuXHRcdFx0J3poLWhhbnMnOiAn56Gu6K6k55So5oi3Jyxcblx0XHRcdCd6aC1oYW50JzogJ+eiuuiqjeeUqOaIticsXG5cdFx0fSksXG5cdFx0YXV0b2NvbmZpcm1lZDogbG9jYWxpemUoe1xuXHRcdFx0ZW46ICdBdXRvLWNvbmZpcm1lZCB1c2VyJyxcblx0XHRcdCd6aC1oYW5zJzogJ+iHquWKqOehruiupOeUqOaItycsXG5cdFx0XHQnemgtaGFudCc6ICfoh6rli5Xnorroqo3nlKjmiLYnLFxuXHRcdH0pLFxuXHRcdGJvdDogbG9jYWxpemUoe1xuXHRcdFx0ZW46ICdCb3QnLFxuXHRcdFx0J3poLWhhbnMnOiAn5py65Zmo5Lq6Jyxcblx0XHRcdCd6aC1oYW50JzogJ+apn+aisOS6uicsXG5cdFx0fSksXG5cdFx0Zmxvb2Q6IGxvY2FsaXplKHtcblx0XHRcdGVuOiAnRmxvb2RlcicsXG5cdFx0XHQnemgtaGFucyc6ICfmnLrlmajnlKjmiLcnLFxuXHRcdFx0J3poLWhhbnQnOiAn5qmf5qKw55So5oi2Jyxcblx0XHR9KSxcblx0XHQncm5yc3ZlcmlmeS1leGVtcHQnOiBsb2NhbGl6ZSh7XG5cdFx0XHRlbjogJ0V4ZW1wdGVkIGZyb20gcmVhbC1uYW1lIHZlcmlmaWNhdGlvbicsXG5cdFx0XHQnemgtaGFucyc6ICflrp7lkI3liLbpqozor4HosYHlhY0nLFxuXHRcdFx0J3poLWhhbnQnOiAn5a+m5ZCN5Yi26amX6K2J6LGB5YWNJyxcblx0XHR9KSxcblx0XHQnaXBibG9jay1leGVtcHQnOiBsb2NhbGl6ZSh7XG5cdFx0XHRlbjogJ0V4ZW1wdGVkIGZyb20gSVAgYmxvY2tzJyxcblx0XHRcdCd6aC1oYW5zJzogJ0lQ5bCB56aB6LGB5YWNJyxcblx0XHRcdCd6aC1oYW50JzogJ0lQ5bCB6Y6W6LGB5YWNJyxcblx0XHR9KSxcblx0fTtcbn07XG5cbmNvbnN0IGkxOG5NZXNzYWdlcyA9IGdldEkxOG5NZXNzYWdlcygpO1xuXG5jb25zdCBnZXRNZXNzYWdlOiBHZXRNZXNzYWdlczx0eXBlb2YgaTE4bk1lc3NhZ2VzPiA9IChrZXkpID0+IHtcblx0cmV0dXJuIGkxOG5NZXNzYWdlc1trZXldIHx8IGtleTtcbn07XG5cbmV4cG9ydCB7Z2V0TWVzc2FnZX07XG4iLCAiaW1wb3J0IHtxdWVyeUdsb2JhbFVzZXJHcm91cHMsIHF1ZXJ5VXNlckdyb3Vwc30gZnJvbSAnLi9xdWVyeSc7XG5pbXBvcnQgdHlwZSB7VXNlclJpZ2h0c30gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge2dldE1lc3NhZ2V9IGZyb20gJy4vaTE4bic7XG5pbXBvcnQge3VuaXF1ZUFycmF5fSBmcm9tICdleHQuZ2FkZ2V0LlV0aWwnO1xuXG5jb25zdCBnZXRVc2VybmFtZSA9ICh1cmw6IHN0cmluZyk6IHN0cmluZyA9PiB7XG5cdGlmICghdXJsKSB7XG5cdFx0cmV0dXJuICcnO1xuXHR9XG5cblx0Y29uc3QgdXNlcm5hbWU6IHN0cmluZyB8IG51bGwgPSBtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3RpdGxlJywgdXJsKTtcblxuXHRjb25zdCBkZWNvZGUgPSAoc3RyaW5nOiBzdHJpbmcsIHJlcGxhY2U6IChfc3RyaW5nOiBzdHJpbmcpID0+IHN0cmluZyk6IHN0cmluZyA9PiB7XG5cdFx0cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChcblx0XHRcdCgoKTogc3RyaW5nID0+IHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHJlcGxhY2Uoc3RyaW5nKSk7XG5cdFx0XHRcdH0gY2F0Y2gge1xuXHRcdFx0XHRcdHJldHVybiByZXBsYWNlKHN0cmluZykucmVwbGFjZSgvJSg/IVxcZCspL2csICclMjUnKTtcblx0XHRcdFx0fVxuXHRcdFx0fSkoKVxuXHRcdCk7XG5cdH07XG5cblx0aWYgKHVzZXJuYW1lKSB7XG5cdFx0cmV0dXJuIGRlY29kZSh1c2VybmFtZSwgKHN0cmluZzogc3RyaW5nKTogc3RyaW5nID0+IHtcblx0XHRcdHJldHVybiBzdHJpbmcucmVwbGFjZSgnVXNlcjonLCAnJykucmVwbGFjZSgvXy9nLCAnICcpO1xuXHRcdH0pO1xuXHR9XG5cdGNvbnN0IHVzZXJuYW1lTWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkgfCBudWxsID0gdXJsLm1hdGNoKC9cXC93aWtpXFwvVXNlcjooLis/KSQvKTtcblx0aWYgKHVzZXJuYW1lTWF0Y2g/LlsxXSkge1xuXHRcdHJldHVybiBkZWNvZGUodXNlcm5hbWVNYXRjaFsxXSwgKHN0cmluZzogc3RyaW5nKTogc3RyaW5nID0+IHtcblx0XHRcdHJldHVybiBzdHJpbmcucmVwbGFjZSgvXy9nLCAnICcpO1xuXHRcdH0pO1xuXHR9XG5cdHJldHVybiAnJztcbn07XG5cbmNvbnN0IGFwcGVuZFVzZXJSaWdodHNNYXJrID0gKFxuXHQkdXNlckxpbmtzOiBKUXVlcnk8SFRNTEVsZW1lbnQ+LFxuXHR7dXNlckdyb3VwTWFwLCBnbG9iYWxVc2VyR3JvdXBNYXB9OiB7dXNlckdyb3VwTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmdbXT47IGdsb2JhbFVzZXJHcm91cE1hcDogTWFwPHN0cmluZywgc3RyaW5nW10+fVxuKTogdm9pZCA9PiB7XG5cdCR1c2VyTGlua3MuZWFjaCgoX2luZGV4OiBudW1iZXIsIGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCA9PiB7XG5cdFx0Y29uc3QgJGVsZW1lbnQ6IEpRdWVyeSA9ICQoZWxlbWVudCk7XG5cdFx0aWYgKCRlbGVtZW50LnBhcmVudHMoJ2xpLCB0YWJsZS5tdy1jaGFuZ2VzbGlzdC1saW5lJykuZmluZCgnLmdhZGdldHMtbWFya3JpZ2h0cycpLmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCB1c2VybmFtZTogc3RyaW5nID0gZ2V0VXNlcm5hbWUoJGVsZW1lbnQuYXR0cignaHJlZicpID8/ICcnKTtcblx0XHRpZiAoIXVzZXJuYW1lKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IGdyb3VwcyA9IHVzZXJHcm91cE1hcC5nZXQodXNlcm5hbWUpID8/IFtdO1xuXHRcdGNvbnN0IGdsb2JhbEdyb3VwcyA9IGdsb2JhbFVzZXJHcm91cE1hcC5nZXQodXNlcm5hbWUpID8/IFtdO1xuXHRcdGlmICghZ3JvdXBzKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0ICRzdXBzOiBKUXVlcnkgPSAkKCc8c3Bhbj4nKS5hZGRDbGFzcygnZ2FkZ2V0cy1tYXJrcmlnaHRzJyk7XG5cdFx0Zm9yIChjb25zdCBncm91cCBvZiB1bmlxdWVBcnJheShbLi4uZ3JvdXBzLCAuLi5nbG9iYWxHcm91cHNdKSkge1xuXHRcdFx0Y29uc3QgY2xhc3NOYW1lOiBzdHJpbmcgPSBgZ2FkZ2V0cy1tYXJrcmlnaHRzX18ke2dyb3VwfWA7XG5cdFx0XHRpZiAoJHN1cHMuZmluZCgnc3VwJykuaGFzQ2xhc3MoY2xhc3NOYW1lKSkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHQkc3Vwcy5hcHBlbmQoXG5cdFx0XHRcdC8vIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyBhcmUgdXNlZCBoZXJlOlxuXHRcdFx0XHQvLyAqIGdhZGdldC1tYXJrcmlnaHRzX19xaXV3ZW5cblx0XHRcdFx0Ly8gKiBnYWRnZXQtbWFya3JpZ2h0c19fc3Rld2FyZFxuXHRcdFx0XHQvLyAqIGdhZGdldC1tYXJrcmlnaHRzX19jaGVja3VzZXJcblx0XHRcdFx0Ly8gKiBnYWRnZXQtbWFya3JpZ2h0c19fc3VwcHJlc3Ncblx0XHRcdFx0Ly8gKiBnYWRnZXQtbWFya3JpZ2h0c19fc3lzb3Bcblx0XHRcdFx0Ly8gKiBnYWRnZXQtbWFya3JpZ2h0c19faW50ZXJmYWNlLWFkbWluXG5cdFx0XHRcdC8vICogZ2FkZ2V0LW1hcmtyaWdodHNfX3RlbXBsYXRlZWRpdG9yXG5cdFx0XHRcdC8vICogZ2FkZ2V0LW1hcmtyaWdodHNfX3RyYW5zd2lraVxuXHRcdFx0XHQvLyAqIGdhZGdldC1tYXJrcmlnaHRzX19wYXRyb2xsZXJcblx0XHRcdFx0Ly8gKiBnYWRnZXQtbWFya3JpZ2h0c19fYXV0b3Jldmlld2VyXG5cdFx0XHRcdC8vICogZ2FkZ2V0LW1hcmtyaWdodHNfX3NlbmlvcmVkaXRvclxuXHRcdFx0XHQvLyAqIGdhZGdldC1tYXJrcmlnaHRzX19ldmVudHNwb25zb3Jcblx0XHRcdFx0Ly8gKiBnYWRnZXQtbWFya3JpZ2h0c19fbWFzc21lc3NhZ2Utc2VuZGVyXG5cdFx0XHRcdC8vICogZ2FkZ2V0LW1hcmtyaWdodHNfX2NvbmZpcm1lZFxuXHRcdFx0XHQvLyAqIGdhZGdldC1tYXJrcmlnaHRzX19hdXRvY29uZmlybWVkXG5cdFx0XHRcdC8vICogZ2FkZ2V0LW1hcmtyaWdodHNfX2JvdFxuXHRcdFx0XHQvLyAqIGdhZGdldC1tYXJrcmlnaHRzX19mbG9vZFxuXHRcdFx0XHQvLyAqIGdhZGdldC1tYXJrcmlnaHRzX19pcGJsb2NrLWV4ZW1wdFxuXHRcdFx0XHQvLyAqIGdhZGdldC1tYXJrcmlnaHRzX19ybnJzdmVyaWZ5LWV4ZW1wdFxuXHRcdFx0XHQkKCc8c3VwPicpXG5cdFx0XHRcdFx0LmFkZENsYXNzKGNsYXNzTmFtZSlcblx0XHRcdFx0XHQuYXR0cih7XG5cdFx0XHRcdFx0XHRhbHQ6IGdldE1lc3NhZ2UoZ3JvdXAgYXMgVXNlclJpZ2h0cyksXG5cdFx0XHRcdFx0XHR0aXRsZTogZ2V0TWVzc2FnZShncm91cCBhcyBVc2VyUmlnaHRzKSxcblx0XHRcdFx0XHR9KVxuXHRcdFx0KTtcblx0XHR9XG5cdFx0JGVsZW1lbnQuYWZ0ZXIoJHN1cHMpO1xuXHR9KTtcbn07XG5cbmNvbnN0IG1hcmtVc2VyUmlnaHRzID0gYXN5bmMgKCRjb250ZW50OiBKUXVlcnkpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0Y29uc3QgJHVzZXJMaW5rczogSlF1ZXJ5ID0gJGNvbnRlbnQuZmluZCgnYS5tdy11c2VybGluazpub3QoLm13LWFub251c2VybGluayknKTtcblx0bGV0IHVzZXJzOiBzdHJpbmdbXSA9IFtdO1xuXHRjb25zdCBxdWV1ZTogQXJyYXk8dHlwZW9mIHVzZXJzPiA9IFtdO1xuXHRjb25zdCB1c2VyR3JvdXBNYXA6IE1hcDxzdHJpbmcsIHN0cmluZ1tdPiA9IG5ldyBNYXAoKTtcblx0Y29uc3QgZ2xvYmFsVXNlckdyb3VwTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmdbXT4gPSBuZXcgTWFwKCk7XG5cblx0JHVzZXJMaW5rcy5lYWNoKChfaW5kZXg6IG51bWJlciwge3RleHRDb250ZW50fToge3RleHRDb250ZW50OiBzdHJpbmcgfCBudWxsfSk6IHZvaWQgPT4ge1xuXHRcdGNvbnN0IHVzZXJMaW5rVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGV4dENvbnRlbnQ/LnRvU3RyaW5nKCk7XG5cdFx0aWYgKHVzZXJMaW5rVGV4dCkge1xuXHRcdFx0dXNlcnNbdXNlcnMubGVuZ3RoXSA9IHVzZXJMaW5rVGV4dDsgLy8gUmVwbGFjZSBgW10ucHVzaCgpYCB0byBhdm9pZCBwb2x5ZmlsbGluZyBjb3JlLWpzXG5cdFx0fVxuXG5cdFx0Ly8g55So5oi35ZCN5YiX6KGo5Y676YeNXG5cdFx0dXNlcnMgPSB1bmlxdWVBcnJheSh1c2Vycyk7IC8vIFJlcGxhY2UgYFsuLi5uZXcgU2V0KCldYCB0byBhdm9pZCBwb2x5ZmlsbGluZyBjb3JlLWpzXG5cblx0XHRpZiAodXNlcnMubGVuZ3RoID09PSAyNSkge1xuXHRcdFx0cXVldWVbcXVldWUubGVuZ3RoXSA9IHVzZXJzOyAvLyBSZXBsYWNlIGBbXS5wdXNoKClgIHRvIGF2b2lkIHBvbHlmaWxsaW5nIGNvcmUtanNcblx0XHRcdHVzZXJzID0gW107XG5cdFx0fVxuXHR9KTtcblxuXHRpZiAodXNlcnMubGVuZ3RoID4gMCkge1xuXHRcdHF1ZXVlW3F1ZXVlLmxlbmd0aF0gPSB1c2VyczsgLy8gUmVwbGFjZSBgW10ucHVzaCgpYCB0byBhdm9pZCBwb2x5ZmlsbGluZyBjb3JlLWpzXG5cdH1cblxuXHRmb3IgKGNvbnN0IHVzdXNlcnMgb2YgcXVldWUpIHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgcXVlcnlVc2VyUmVzcG9uc2UgPSBhd2FpdCBxdWVyeVVzZXJHcm91cHModXN1c2Vycyk7XG5cdFx0XHRjb25zdCB7dXNlcnM6IHF1ZXJ5VXNlcnN9ID0gcXVlcnlVc2VyUmVzcG9uc2VbJ3F1ZXJ5J10gYXMge1xuXHRcdFx0XHR1c2Vyczoge2dyb3Vwczogc3RyaW5nW107IG5hbWU6IHN0cmluZ31bXTtcblx0XHRcdH07XG5cblx0XHRcdGZvciAoY29uc3QgdXNlciBvZiBxdWVyeVVzZXJzKSB7XG5cdFx0XHRcdGlmICghdXNlciB8fCAhdXNlci5ncm91cHMpIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHR1c2VyR3JvdXBNYXAuc2V0KFxuXHRcdFx0XHRcdHVzZXIubmFtZSxcblx0XHRcdFx0XHR1c2VyLmdyb3Vwcy5maWx0ZXIoKGVsZW1lbnQpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtZW50ICE9PSAnKic7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0KTtcblx0XHRcdH1cblxuXHRcdFx0Zm9yIChjb25zdCB1c2VyIG9mIHVzdXNlcnMpIHtcblx0XHRcdFx0Y29uc3QgcXVlcnlHbG9iYWxVc2VySW5mb1Jlc3BvbnNlID0gYXdhaXQgcXVlcnlHbG9iYWxVc2VyR3JvdXBzKHVzZXIpO1xuXHRcdFx0XHRpZiAocXVlcnlHbG9iYWxVc2VySW5mb1Jlc3BvbnNlWydxdWVyeSddICYmIHF1ZXJ5R2xvYmFsVXNlckluZm9SZXNwb25zZVsncXVlcnknXS5nbG9iYWx1c2VyaW5mbykge1xuXHRcdFx0XHRcdGNvbnN0IHtncm91cHM6IGdsb2JhbGdyb3Vwc306IHtncm91cHM6IHN0cmluZ1tdfSA9IHF1ZXJ5R2xvYmFsVXNlckluZm9SZXNwb25zZVsncXVlcnknXVxuXHRcdFx0XHRcdFx0Lmdsb2JhbHVzZXJpbmZvIGFzIHtncm91cHM6IHN0cmluZ1tdfTtcblx0XHRcdFx0XHRnbG9iYWxVc2VyR3JvdXBNYXAuc2V0KHVzZXIsIGdsb2JhbGdyb3Vwcyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0YXBwZW5kVXNlclJpZ2h0c01hcmsoJHVzZXJMaW5rcywge3VzZXJHcm91cE1hcCwgZ2xvYmFsVXNlckdyb3VwTWFwfSk7XG5cdFx0fSBjYXRjaCB7fVxuXHR9XG59O1xuXG5leHBvcnQge21hcmtVc2VyUmlnaHRzfTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEscUJBQUEsQ0FBQTtBQUFBQyxTQUFBRCxvQkFBQTtFQUFBRSx1QkFBQUEsTUFBQUE7RUFBQUMsaUJBQUFBLE1BQUFBO0FBQUEsQ0FBQTtBQUFBQyxPQUFBQyxVQUFBQyxhQUFBTixrQkFBQTs7QUNDQyxJQUFBTyxVQUFXOztBQ0FaLElBQUFDLG9CQUF3QkMsUUFBQSxpQkFBQTtBQUV4QixJQUFNQyxPQUFBLEdBQWNGLGtCQUFBRyxXQUFBLGNBQUFDLE9BQWdDTCxPQUFPLENBQUU7O0FDRDdELElBQU1KLGtCQUFBLDJCQUFBO0FBQUEsTUFBQVUsT0FBQUMsa0JBQWtCLFdBQU9DLFNBQStCO0FBQzdELFVBQU1DLFNBQThCO01BQ25DRDtNQUNBRSxRQUFRO01BQ1JDLFFBQVE7TUFDUkMsZUFBZTtNQUNmQyxNQUFNO01BQ05DLFFBQVE7TUFDUkMsU0FBUztNQUNUQyxRQUFRO0lBQ1Q7QUFDQSxVQUFNQyxXQUFBLE1BQWlCZCxJQUFJZSxJQUFJVCxNQUFNO0FBRXJDLFdBQU9RO0VBQ1IsQ0FBQTtBQUFBLFNBQUEsU0FkTXJCLGlCQUFBdUIsSUFBQTtBQUFBLFdBQUFiLEtBQUFjLE1BQUEsTUFBQUMsU0FBQTtFQUFBO0FBQUEsRUFBQTtBQWdCTixJQUFNMUIsd0JBQUEsMkJBQUE7QUFBQSxNQUFBMkIsUUFBQWYsa0JBQXdCLFdBQU9nQixNQUFpQjtBQUNyRCxVQUFNZCxTQUFTO01BQ2RDLFFBQVE7TUFDUkMsUUFBUTtNQUNSQyxlQUFlO01BQ2ZZLE1BQU07TUFDTkMsU0FBU0Y7TUFDVEcsU0FBUztNQUNUWCxTQUFTO01BQ1RDLFFBQVE7SUFD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QixxQkFBQWhCLEVBQUFELEdBQUE7UUFBQSxVQUFBO0FBQUFpQixxQkFBQWYsRUFBQTtRQUFBO0FBQUEsWUFBQW9CLGFBQUFuQywyQkFFbUI1RSxPQUFBLEdBQUFnSDtBQUFBLFlBQUE7QUFBbkIsZUFBQUQsV0FBQWhDLEVBQUEsR0FBQSxFQUFBaUMsU0FBQUQsV0FBQS9CLEVBQUEsR0FBQUMsUUFBNEI7QUFBQSxrQkFBakJsRSxPQUFBaUcsT0FBQTdCO0FBQ1Ysa0JBQU04Qiw4QkFBQSxNQUFvQzlILHNCQUFzQjRCLElBQUk7QUFDcEUsZ0JBQUlrRyw0QkFBNEIsT0FBTyxLQUFLQSw0QkFBNEIsT0FBTyxFQUFFQyxnQkFBZ0I7QUFDaEcsb0JBQU07Z0JBQUMzQyxRQUFRNEM7Y0FBWSxJQUF3QkYsNEJBQTRCLE9BQU8sRUFDcEZDO0FBQ0Z4RCxpQ0FBbUJrRCxJQUFJN0YsTUFBTW9HLFlBQVk7WUFDMUM7VUFDRDtRQUFBLFNBQUExQixLQUFBO0FBQUFzQixxQkFBQXJCLEVBQUFELEdBQUE7UUFBQSxVQUFBO0FBQUFzQixxQkFBQXBCLEVBQUE7UUFBQTtBQUVBcEMsNkJBQXFCQyxZQUFZO1VBQUNDO1VBQWNDO1FBQWtCLENBQUM7TUFDcEUsUUFBUTtNQUFDO0lBQ1Y7RUFDRCxDQUFBO0FBQUEsU0FBQSxTQXpETW1DLGdCQUFBdUIsS0FBQTtBQUFBLFdBQUF0QixNQUFBbEYsTUFBQSxNQUFBQyxTQUFBO0VBQUE7QUFBQSxFQUFBOztBTDFGTmlDLEdBQUd1RSxLQUFLLGtCQUFrQixFQUFFQyxJQUFJLFNBQVNDLFdBQVd4QixVQUFnQjtBQUNuRSxNQUFJQSxTQUFTekIsS0FBSyxJQUFJLE1BQU0scUJBQXFCeUIsU0FBU1YsU0FBUyxnQkFBZ0IsR0FBRztBQUNyRixTQUFLUSxlQUFlRSxRQUFRO0VBQzdCO0FBQ0QsQ0FBQzsiLAogICJuYW1lcyI6IFsiTWFya1JpZ2h0c19leHBvcnRzIiwgIl9fZXhwb3J0IiwgInF1ZXJ5R2xvYmFsVXNlckdyb3VwcyIsICJxdWVyeVVzZXJHcm91cHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAiX190b0NvbW1vbkpTIiwgInZlcnNpb24iLCAiaW1wb3J0X2V4dF9nYWRnZXQiLCAicmVxdWlyZSIsICJhcGkiLCAiaW5pdE13QXBpIiwgImNvbmNhdCIsICJfcmVmIiwgIl9hc3luY1RvR2VuZXJhdG9yIiwgInVzdXNlcnMiLCAicGFyYW1zIiwgImFjdGlvbiIsICJmb3JtYXQiLCAiZm9ybWF0dmVyc2lvbiIsICJsaXN0IiwgInVzcHJvcCIsICJzbWF4YWdlIiwgIm1heGFnZSIsICJyZXNwb25zZSIsICJnZXQiLCAiX3giLCAiYXBwbHkiLCAiYXJndW1lbnRzIiwgIl9yZWYyIiwgInVzZXIiLCAibWV0YSIsICJndWl1c2VyIiwgImd1aXByb3AiLCAiX3gyIiwgImltcG9ydF9leHRfZ2FkZ2V0MiIsICJnZXRJMThuTWVzc2FnZXMiLCAicWl1d2VuIiwgImxvY2FsaXplIiwgImVuIiwgInN0ZXdhcmQiLCAiY2hlY2t1c2VyIiwgInN1cHByZXNzIiwgInN5c29wIiwgInRlbXBsYXRlZWRpdG9yIiwgInRyYW5zd2lraSIsICJwYXRyb2xsZXIiLCAiYXV0b3Jldmlld2VyIiwgInNlbmlvcmVkaXRvciIsICJldmVudHNwb25zb3IiLCAiY29uZmlybWVkIiwgImF1dG9jb25maXJtZWQiLCAiYm90IiwgImZsb29kIiwgImkxOG5NZXNzYWdlcyIsICJnZXRNZXNzYWdlIiwgImtleSIsICJpbXBvcnRfZXh0X2dhZGdldDMiLCAiZ2V0VXNlcm5hbWUiLCAidXJsIiwgInVzZXJuYW1lIiwgIm13IiwgInV0aWwiLCAiZ2V0UGFyYW1WYWx1ZSIsICJkZWNvZGUiLCAic3RyaW5nIiwgInJlcGxhY2UiLCAiZGVjb2RlVVJJQ29tcG9uZW50IiwgInVzZXJuYW1lTWF0Y2giLCAibWF0Y2giLCAiYXBwZW5kVXNlclJpZ2h0c01hcmsiLCAiJHVzZXJMaW5rcyIsICJ1c2VyR3JvdXBNYXAiLCAiZ2xvYmFsVXNlckdyb3VwTWFwIiwgImVhY2giLCAiX2luZGV4IiwgImVsZW1lbnQiLCAiXyRlbGVtZW50JGF0dHIiLCAiX3VzZXJHcm91cE1hcCRnZXQiLCAiX2dsb2JhbFVzZXJHcm91cE1hcCRnIiwgIiRlbGVtZW50IiwgIiQiLCAicGFyZW50cyIsICJmaW5kIiwgImxlbmd0aCIsICJhdHRyIiwgImdyb3VwcyIsICJnbG9iYWxHcm91cHMiLCAiJHN1cHMiLCAiYWRkQ2xhc3MiLCAiX2l0ZXJhdG9yMiIsICJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsICJ1bmlxdWVBcnJheSIsICJfc3RlcDIiLCAicyIsICJuIiwgImRvbmUiLCAiZ3JvdXAiLCAidmFsdWUiLCAiY2xhc3NOYW1lIiwgImhhc0NsYXNzIiwgImFwcGVuZCIsICJhbHQiLCAidGl0bGUiLCAiZXJyIiwgImUiLCAiZiIsICJhZnRlciIsICJtYXJrVXNlclJpZ2h0cyIsICJfcmVmMyIsICIkY29udGVudCIsICJ1c2VycyIsICJxdWV1ZSIsICJNYXAiLCAidGV4dENvbnRlbnQiLCAidXNlckxpbmtUZXh0IiwgInRvU3RyaW5nIiwgIl9pIiwgIl9xdWV1ZSIsICJxdWVyeVVzZXJSZXNwb25zZSIsICJxdWVyeVVzZXJzIiwgIl9pdGVyYXRvcjMiLCAiX3N0ZXAzIiwgInNldCIsICJuYW1lIiwgImZpbHRlciIsICJfaXRlcmF0b3I0IiwgIl9zdGVwNCIsICJxdWVyeUdsb2JhbFVzZXJJbmZvUmVzcG9uc2UiLCAiZ2xvYmFsdXNlcmluZm8iLCAiZ2xvYmFsZ3JvdXBzIiwgIl94MyIsICJob29rIiwgImFkZCIsICJtYXJrUmlnaHRzIl0KfQo= +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL01hcmtSaWdodHMvTWFya1JpZ2h0cy50cyIsICJzcmMvTWFya1JpZ2h0cy9vcHRpb25zLmpzb24iLCAic3JjL01hcmtSaWdodHMvbW9kdWxlcy9hcGkudHMiLCAic3JjL01hcmtSaWdodHMvbW9kdWxlcy9xdWVyeS50cyIsICJzcmMvTWFya1JpZ2h0cy9tb2R1bGVzL2kxOG4udHMiLCAic3JjL01hcmtSaWdodHMvbW9kdWxlcy9jb3JlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBkZXNjcmlwdGlvbiDlnKjmnIDov5Hkv67mlLnjgIHnm5Hop4bliJfooajjgIHmnaHnm67ljoblj7LorrDlvZXnrYnkvY3nva7ku6XnibnmrormoLzlvI/mmL7npLrmnInnibnmrormnYPpmZDnmoTnlKjmiLdcbiAqL1xuaW1wb3J0IHttYXJrVXNlclJpZ2h0c30gZnJvbSAnLi9tb2R1bGVzL2NvcmUnO1xuXG5tdy5ob29rKCd3aWtpcGFnZS5jb250ZW50JykuYWRkKGZ1bmN0aW9uIG1hcmtSaWdodHMoJGNvbnRlbnQpOiB2b2lkIHtcblx0aWYgKCRjb250ZW50LmF0dHIoJ2lkJykgPT09ICdtdy1jb250ZW50LXRleHQnIHx8ICRjb250ZW50Lmhhc0NsYXNzKCdtdy1jaGFuZ2VzbGlzdCcpKSB7XG5cdFx0dm9pZCBtYXJrVXNlclJpZ2h0cygkY29udGVudCk7XG5cdH1cbn0pO1xuXG5leHBvcnQge3F1ZXJ5R2xvYmFsVXNlckdyb3VwcywgcXVlcnlVc2VyR3JvdXBzfSBmcm9tICcuL21vZHVsZXMvcXVlcnknO1xuIiwgIntcblx0XCJ2ZXJzaW9uXCI6IDIuMFxufVxuIiwgImltcG9ydCAqIGFzIE9QVElPTlMgZnJvbSAnLi4vb3B0aW9ucy5qc29uJztcbmltcG9ydCB7aW5pdE13QXBpfSBmcm9tICdleHQuZ2FkZ2V0LlV0aWwnO1xuXG5jb25zdCBhcGk6IG13LkFwaSA9IGluaXRNd0FwaShgTWFya1JpZ2h0cy8ke09QVElPTlMudmVyc2lvbn1gKTtcblxuZXhwb3J0IHthcGl9O1xuIiwgImltcG9ydCB7YXBpfSBmcm9tICcuL2FwaSc7XG5cbmNvbnN0IHF1ZXJ5VXNlckdyb3VwcyA9IGFzeW5jICh1c3VzZXJzOiBzdHJpbmcgfCBzdHJpbmdbXSkgPT4ge1xuXHRjb25zdCBwYXJhbXM6IEFwaVF1ZXJ5VXNlcnNQYXJhbXMgPSB7XG5cdFx0dXN1c2Vycyxcblx0XHRhY3Rpb246ICdxdWVyeScsXG5cdFx0Zm9ybWF0OiAnanNvbicsXG5cdFx0Zm9ybWF0dmVyc2lvbjogJzInLFxuXHRcdGxpc3Q6ICd1c2VycycsXG5cdFx0dXNwcm9wOiAnZ3JvdXBzJyxcblx0XHRzbWF4YWdlOiA2MDAsXG5cdFx0bWF4YWdlOiA2MDAsXG5cdH07XG5cdGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpLmdldChwYXJhbXMpO1xuXG5cdHJldHVybiByZXNwb25zZTtcbn07XG5cbmNvbnN0IHF1ZXJ5R2xvYmFsVXNlckdyb3VwcyA9IGFzeW5jICh1c2VyOiBzdHJpbmcpID0+IHtcblx0Y29uc3QgcGFyYW1zID0ge1xuXHRcdGFjdGlvbjogJ3F1ZXJ5Jyxcblx0XHRmb3JtYXQ6ICdqc29uJyxcblx0XHRmb3JtYXR2ZXJzaW9uOiAnMicsXG5cdFx0bWV0YTogJ2dsb2JhbHVzZXJpbmZvJyxcblx0XHRndWl1c2VyOiB1c2VyLFxuXHRcdGd1aXByb3A6ICdncm91cHMnLFxuXHRcdHNtYXhhZ2U6IDYwMCxcblx0XHRtYXhhZ2U6IDYwMCxcblx0fTtcblx0Y29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGkuZ2V0KHBhcmFtcyk7XG5cblx0cmV0dXJuIHJlc3BvbnNlO1xufTtcblxuZXhwb3J0IHtxdWVyeVVzZXJHcm91cHMsIHF1ZXJ5R2xvYmFsVXNlckdyb3Vwc307XG4iLCAiaW1wb3J0IHtsb2NhbGl6ZX0gZnJvbSAnZXh0LmdhZGdldC5pMThuJztcblxuY29uc3QgZ2V0STE4bk1lc3NhZ2VzID0gKCkgPT4ge1xuXHRyZXR1cm4ge1xuXHRcdHFpdXdlbjogbG9jYWxpemUoe1xuXHRcdFx0ZW46ICdXZWJtYXN0ZXInLFxuXHRcdFx0J3poLWhhbnMnOiAn56uZ6ZW/Jyxcblx0XHRcdCd6aC1oYW50JzogJ+ermemVtycsXG5cdFx0fSksXG5cdFx0c3Rld2FyZDogbG9jYWxpemUoe1xuXHRcdFx0ZW46ICdTdGV3YXJkJyxcblx0XHRcdCd6aC1oYW5zJzogJ+ijgeWGs+WnlOWRmCcsXG5cdFx0XHQnemgtaGFudCc6ICfoo4Hmsbrlp5Tlk6EnLFxuXHRcdH0pLFxuXHRcdGNoZWNrdXNlcjogbG9jYWxpemUoe1xuXHRcdFx0ZW46ICdDaGVja1VzZXInLFxuXHRcdFx0J3poLWhhbnMnOiAn55So5oi35p+l5qC4Jyxcblx0XHRcdCd6aC1oYW50JzogJ+eUqOaItuafpeaguCcsXG5cdFx0fSksXG5cdFx0c3VwcHJlc3M6IGxvY2FsaXplKHtcblx0XHRcdGVuOiAnT3ZlcnNpZ2h0ZXInLFxuXHRcdFx0J3poLWhhbnMnOiAn55uR552j5ZGYJyxcblx0XHRcdCd6aC1oYW50JzogJ+ebo+edo+WToScsXG5cdFx0fSksXG5cdFx0c3lzb3A6IGxvY2FsaXplKHtcblx0XHRcdGVuOiAnU3lzT3AnLFxuXHRcdFx0J3poLWhhbnMnOiAn566h55CG5ZGYJyxcblx0XHRcdCd6aC1oYW50JzogJ+euoeeQhuWToScsXG5cdFx0fSksXG5cdFx0J2ludGVyZmFjZS1hZG1pbic6IGxvY2FsaXplKHtcblx0XHRcdGVuOiAnSW50ZXJmYWNlIEFkbWluaXN0cmF0b3InLFxuXHRcdFx0J3poLWhhbnMnOiAn55WM6Z2i566h55CG5ZGYJyxcblx0XHRcdCd6aC1oYW50JzogJ+S7i+mdoueuoeeQhuWToScsXG5cdFx0fSksXG5cdFx0dGVtcGxhdGVlZGl0b3I6IGxvY2FsaXplKHtcblx0XHRcdGVuOiAnVGVtcGxhdGUgRWRpdG9yJyxcblx0XHRcdCd6aC1oYW5zJzogJ+aooeadv+e8lui+keWRmCcsXG5cdFx0XHQnemgtaGFudCc6ICfmqKHmnb/nt6jovK/lk6EnLFxuXHRcdH0pLFxuXHRcdHRyYW5zd2lraTogbG9jYWxpemUoe1xuXHRcdFx0ZW46ICdJbXBvcnRlcicsXG5cdFx0XHQnemgtaGFucyc6ICflr7zlhaXogIUnLFxuXHRcdFx0J3poLWhhbnQnOiAn5Yyv5YWl6ICFJyxcblx0XHR9KSxcblx0XHRwYXRyb2xsZXI6IGxvY2FsaXplKHtcblx0XHRcdGVuOiAnUGF0cm9sbGVyJyxcblx0XHRcdCd6aC1oYW5zJzogJ+W3oeafpeWRmCcsXG5cdFx0XHQnemgtaGFudCc6ICflt6Hmn6Xlk6EnLFxuXHRcdH0pLFxuXHRcdGF1dG9yZXZpZXdlcjogbG9jYWxpemUoe1xuXHRcdFx0ZW46ICdFeGVtcHRlZCBmcm9tIHBhZ2UgcGF0cm9sJyxcblx0XHRcdCd6aC1oYW5zJzogJ+W3oeafpeixgeWFjScsXG5cdFx0XHQnemgtaGFudCc6ICflt6Hmn6XosYHlhY0nLFxuXHRcdH0pLFxuXHRcdHNlbmlvcmVkaXRvcjogbG9jYWxpemUoe1xuXHRcdFx0ZW46ICdTZW5pb3IgRWRpdG9yJyxcblx0XHRcdCd6aC1oYW5zJzogJ+i1hOa3see8luiAhScsXG5cdFx0XHQnemgtaGFudCc6ICfos4fmt7Hnt6jogIUnLFxuXHRcdH0pLFxuXHRcdGV2ZW50c3BvbnNvcjogbG9jYWxpemUoe1xuXHRcdFx0ZW46ICdFdmVudCBTcG9uc29yJyxcblx0XHRcdCd6aC1oYW5zJzogJ+a0u+WKqOe7hOe7h+iAhScsXG5cdFx0XHQnemgtaGFudCc6ICfmtLvli5XntYTnuZTogIUnLFxuXHRcdH0pLFxuXHRcdCdtYXNzbWVzc2FnZS1zZW5kZXInOiBsb2NhbGl6ZSh7XG5cdFx0XHRlbjogJ01hc3NNZXNzYWdlIHNlbmRlcicsXG5cdFx0XHQnemgtaGFucyc6ICflpKfph4/mtojmga/lj5HpgIHogIUnLFxuXHRcdFx0J3poLWhhbnQnOiAn5aSn6YeP6KiK5oGv5YKz6YCB6ICFJyxcblx0XHR9KSxcblx0XHRjb25maXJtZWQ6IGxvY2FsaXplKHtcblx0XHRcdGVuOiAnQ29uZmlybWVkIHVzZXInLFxuXHRcdFx0J3poLWhhbnMnOiAn56Gu6K6k55So5oi3Jyxcblx0XHRcdCd6aC1oYW50JzogJ+eiuuiqjeeUqOaIticsXG5cdFx0fSksXG5cdFx0YXV0b2NvbmZpcm1lZDogbG9jYWxpemUoe1xuXHRcdFx0ZW46ICdBdXRvLWNvbmZpcm1lZCB1c2VyJyxcblx0XHRcdCd6aC1oYW5zJzogJ+iHquWKqOehruiupOeUqOaItycsXG5cdFx0XHQnemgtaGFudCc6ICfoh6rli5Xnorroqo3nlKjmiLYnLFxuXHRcdH0pLFxuXHRcdGJvdDogbG9jYWxpemUoe1xuXHRcdFx0ZW46ICdCb3QnLFxuXHRcdFx0J3poLWhhbnMnOiAn5py65Zmo5Lq6Jyxcblx0XHRcdCd6aC1oYW50JzogJ+apn+aisOS6uicsXG5cdFx0fSksXG5cdFx0Zmxvb2Q6IGxvY2FsaXplKHtcblx0XHRcdGVuOiAnRmxvb2RlcicsXG5cdFx0XHQnemgtaGFucyc6ICfmnLrlmajnlKjmiLcnLFxuXHRcdFx0J3poLWhhbnQnOiAn5qmf5qKw55So5oi2Jyxcblx0XHR9KSxcblx0XHQncm5yc3ZlcmlmeS1leGVtcHQnOiBsb2NhbGl6ZSh7XG5cdFx0XHRlbjogJ0V4ZW1wdGVkIGZyb20gcmVhbC1uYW1lIHZlcmlmaWNhdGlvbicsXG5cdFx0XHQnemgtaGFucyc6ICflrp7lkI3liLbpqozor4HosYHlhY0nLFxuXHRcdFx0J3poLWhhbnQnOiAn5a+m5ZCN5Yi26amX6K2J6LGB5YWNJyxcblx0XHR9KSxcblx0XHQnaXBibG9jay1leGVtcHQnOiBsb2NhbGl6ZSh7XG5cdFx0XHRlbjogJ0V4ZW1wdGVkIGZyb20gSVAgYmxvY2tzJyxcblx0XHRcdCd6aC1oYW5zJzogJ0lQ5bCB56aB6LGB5YWNJyxcblx0XHRcdCd6aC1oYW50JzogJ0lQ5bCB6Y6W6LGB5YWNJyxcblx0XHR9KSxcblx0fTtcbn07XG5cbmNvbnN0IGkxOG5NZXNzYWdlcyA9IGdldEkxOG5NZXNzYWdlcygpO1xuXG5jb25zdCBnZXRNZXNzYWdlOiBHZXRNZXNzYWdlczx0eXBlb2YgaTE4bk1lc3NhZ2VzPiA9IChrZXkpID0+IHtcblx0cmV0dXJuIGkxOG5NZXNzYWdlc1trZXldIHx8IGtleTtcbn07XG5cbmV4cG9ydCB7Z2V0TWVzc2FnZX07XG4iLCAiaW1wb3J0IHtxdWVyeUdsb2JhbFVzZXJHcm91cHMsIHF1ZXJ5VXNlckdyb3Vwc30gZnJvbSAnLi9xdWVyeSc7XG5pbXBvcnQgdHlwZSB7VXNlclJpZ2h0c30gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge2dldE1lc3NhZ2V9IGZyb20gJy4vaTE4bic7XG5pbXBvcnQge3VuaXF1ZUFycmF5fSBmcm9tICdleHQuZ2FkZ2V0LlV0aWwnO1xuXG5jb25zdCBnZXRVc2VybmFtZSA9ICh1cmw6IHN0cmluZyk6IHN0cmluZyA9PiB7XG5cdGlmICghdXJsKSB7XG5cdFx0cmV0dXJuICcnO1xuXHR9XG5cblx0Y29uc3QgdXNlcm5hbWU6IHN0cmluZyB8IG51bGwgPSBtdy51dGlsLmdldFBhcmFtVmFsdWUoJ3RpdGxlJywgdXJsKTtcblxuXHRjb25zdCBkZWNvZGUgPSAoc3RyaW5nOiBzdHJpbmcsIHJlcGxhY2U6IChfc3RyaW5nOiBzdHJpbmcpID0+IHN0cmluZyk6IHN0cmluZyA9PiB7XG5cdFx0cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChcblx0XHRcdCgoKTogc3RyaW5nID0+IHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHJlcGxhY2Uoc3RyaW5nKSk7XG5cdFx0XHRcdH0gY2F0Y2gge1xuXHRcdFx0XHRcdHJldHVybiByZXBsYWNlKHN0cmluZykucmVwbGFjZSgvJSg/IVxcZCspL2csICclMjUnKTtcblx0XHRcdFx0fVxuXHRcdFx0fSkoKVxuXHRcdCk7XG5cdH07XG5cblx0aWYgKHVzZXJuYW1lKSB7XG5cdFx0cmV0dXJuIGRlY29kZSh1c2VybmFtZSwgKHN0cmluZzogc3RyaW5nKTogc3RyaW5nID0+IHtcblx0XHRcdHJldHVybiBzdHJpbmcucmVwbGFjZSgnVXNlcjonLCAnJykucmVwbGFjZSgvXy9nLCAnICcpO1xuXHRcdH0pO1xuXHR9XG5cdGNvbnN0IHVzZXJuYW1lTWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkgfCBudWxsID0gdXJsLm1hdGNoKC9cXC93aWtpXFwvVXNlcjooLis/KSQvKTtcblx0aWYgKHVzZXJuYW1lTWF0Y2g/LlsxXSkge1xuXHRcdHJldHVybiBkZWNvZGUodXNlcm5hbWVNYXRjaFsxXSwgKHN0cmluZzogc3RyaW5nKTogc3RyaW5nID0+IHtcblx0XHRcdHJldHVybiBzdHJpbmcucmVwbGFjZSgvXy9nLCAnICcpO1xuXHRcdH0pO1xuXHR9XG5cdHJldHVybiAnJztcbn07XG5cbmNvbnN0IGFwcGVuZFVzZXJSaWdodHNNYXJrID0gKFxuXHQkdXNlckxpbmtzOiBKUXVlcnk8SFRNTEVsZW1lbnQ+LFxuXHR7dXNlckdyb3VwTWFwLCBnbG9iYWxVc2VyR3JvdXBNYXB9OiB7dXNlckdyb3VwTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmdbXT47IGdsb2JhbFVzZXJHcm91cE1hcDogTWFwPHN0cmluZywgc3RyaW5nW10+fVxuKTogdm9pZCA9PiB7XG5cdGZvciAoY29uc3QgZWxlbWVudCBvZiAkdXNlckxpbmtzKSB7XG5cdFx0Y29uc3QgJGVsZW1lbnQ6IEpRdWVyeSA9ICQoZWxlbWVudCk7XG5cdFx0aWYgKCRlbGVtZW50LnBhcmVudHMoJ2xpJykuZmluZCgnLmdhZGdldHMtbWFya3JpZ2h0cycpLmxlbmd0aCkge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXHRcdGlmICgkZWxlbWVudC5zaWJsaW5ncygpLmZpbmQoJy5nYWRnZXRzLW1hcmtyaWdodHMnKS5sZW5ndGgpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblx0XHRjb25zdCB1c2VybmFtZTogc3RyaW5nID0gZ2V0VXNlcm5hbWUoJGVsZW1lbnQuYXR0cignaHJlZicpID8/ICcnKTtcblx0XHRpZiAoIXVzZXJuYW1lKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cdFx0Y29uc3QgZ3JvdXBzID0gdXNlckdyb3VwTWFwLmdldCh1c2VybmFtZSkgPz8gW107XG5cdFx0Y29uc3QgZ2xvYmFsR3JvdXBzID0gZ2xvYmFsVXNlckdyb3VwTWFwLmdldCh1c2VybmFtZSkgPz8gW107XG5cdFx0aWYgKCFncm91cHMpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblx0XHRjb25zdCAkc3VwczogSlF1ZXJ5ID0gJCgnPHNwYW4+JykuYWRkQ2xhc3MoJ2dhZGdldHMtbWFya3JpZ2h0cycpO1xuXHRcdGZvciAoY29uc3QgZ3JvdXAgb2YgdW5pcXVlQXJyYXkoWy4uLmdyb3VwcywgLi4uZ2xvYmFsR3JvdXBzXSkpIHtcblx0XHRcdGNvbnN0IGNsYXNzTmFtZTogc3RyaW5nID0gYGdhZGdldHMtbWFya3JpZ2h0c19fJHtncm91cH1gO1xuXHRcdFx0aWYgKCRzdXBzLmZpbmQoJ3N1cCcpLmhhc0NsYXNzKGNsYXNzTmFtZSkpIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHQkc3Vwcy5hcHBlbmQoXG5cdFx0XHRcdC8vIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyBhcmUgdXNlZCBoZXJlOlxuXHRcdFx0XHQvLyAqIGdhZGdldC1tYXJrcmlnaHRzX19xaXV3ZW5cblx0XHRcdFx0Ly8gKiBnYWRnZXQtbWFya3JpZ2h0c19fc3Rld2FyZFxuXHRcdFx0XHQvLyAqIGdhZGdldC1tYXJrcmlnaHRzX19jaGVja3VzZXJcblx0XHRcdFx0Ly8gKiBnYWRnZXQtbWFya3JpZ2h0c19fc3VwcHJlc3Ncblx0XHRcdFx0Ly8gKiBnYWRnZXQtbWFya3JpZ2h0c19fc3lzb3Bcblx0XHRcdFx0Ly8gKiBnYWRnZXQtbWFya3JpZ2h0c19faW50ZXJmYWNlLWFkbWluXG5cdFx0XHRcdC8vICogZ2FkZ2V0LW1hcmtyaWdodHNfX3RlbXBsYXRlZWRpdG9yXG5cdFx0XHRcdC8vICogZ2FkZ2V0LW1hcmtyaWdodHNfX3RyYW5zd2lraVxuXHRcdFx0XHQvLyAqIGdhZGdldC1tYXJrcmlnaHRzX19wYXRyb2xsZXJcblx0XHRcdFx0Ly8gKiBnYWRnZXQtbWFya3JpZ2h0c19fYXV0b3Jldmlld2VyXG5cdFx0XHRcdC8vICogZ2FkZ2V0LW1hcmtyaWdodHNfX3NlbmlvcmVkaXRvclxuXHRcdFx0XHQvLyAqIGdhZGdldC1tYXJrcmlnaHRzX19ldmVudHNwb25zb3Jcblx0XHRcdFx0Ly8gKiBnYWRnZXQtbWFya3JpZ2h0c19fbWFzc21lc3NhZ2Utc2VuZGVyXG5cdFx0XHRcdC8vICogZ2FkZ2V0LW1hcmtyaWdodHNfX2NvbmZpcm1lZFxuXHRcdFx0XHQvLyAqIGdhZGdldC1tYXJrcmlnaHRzX19hdXRvY29uZmlybWVkXG5cdFx0XHRcdC8vICogZ2FkZ2V0LW1hcmtyaWdodHNfX2JvdFxuXHRcdFx0XHQvLyAqIGdhZGdldC1tYXJrcmlnaHRzX19mbG9vZFxuXHRcdFx0XHQvLyAqIGdhZGdldC1tYXJrcmlnaHRzX19pcGJsb2NrLWV4ZW1wdFxuXHRcdFx0XHQvLyAqIGdhZGdldC1tYXJrcmlnaHRzX19ybnJzdmVyaWZ5LWV4ZW1wdFxuXHRcdFx0XHQkKCc8c3VwPicpXG5cdFx0XHRcdFx0LmFkZENsYXNzKGNsYXNzTmFtZSlcblx0XHRcdFx0XHQuYXR0cih7XG5cdFx0XHRcdFx0XHRhbHQ6IGdldE1lc3NhZ2UoZ3JvdXAgYXMgVXNlclJpZ2h0cyksXG5cdFx0XHRcdFx0XHR0aXRsZTogZ2V0TWVzc2FnZShncm91cCBhcyBVc2VyUmlnaHRzKSxcblx0XHRcdFx0XHR9KVxuXHRcdFx0KTtcblx0XHR9XG5cdFx0JGVsZW1lbnQuYWZ0ZXIoJHN1cHMpO1xuXHR9XG59O1xuXG5jb25zdCBtYXJrVXNlclJpZ2h0cyA9IGFzeW5jICgkY29udGVudDogSlF1ZXJ5KTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdGNvbnN0ICR1c2VyTGlua3M6IEpRdWVyeSA9ICRjb250ZW50LmZpbmQoJ2EubXctdXNlcmxpbms6bm90KC5tdy1hbm9udXNlcmxpbmspJyk7XG5cdGxldCB1c2Vyczogc3RyaW5nW10gPSBbXTtcblx0Y29uc3QgcXVldWU6IEFycmF5PHR5cGVvZiB1c2Vycz4gPSBbXTtcblx0Y29uc3QgdXNlckdyb3VwTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmdbXT4gPSBuZXcgTWFwKCk7XG5cdGNvbnN0IGdsb2JhbFVzZXJHcm91cE1hcDogTWFwPHN0cmluZywgc3RyaW5nW10+ID0gbmV3IE1hcCgpO1xuXG5cdGZvciAoY29uc3Qge3RleHRDb250ZW50fSBvZiAkdXNlckxpbmtzKSB7XG5cdFx0Y29uc3QgdXNlckxpbmtUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0ZXh0Q29udGVudD8udG9TdHJpbmcoKTtcblx0XHRpZiAodXNlckxpbmtUZXh0KSB7XG5cdFx0XHR1c2Vyc1t1c2Vycy5sZW5ndGhdID0gdXNlckxpbmtUZXh0OyAvLyBSZXBsYWNlIGBbXS5wdXNoKClgIHRvIGF2b2lkIHBvbHlmaWxsaW5nIGNvcmUtanNcblx0XHR9XG5cblx0XHQvLyDnlKjmiLflkI3liJfooajljrvph41cblx0XHR1c2VycyA9IHVuaXF1ZUFycmF5KHVzZXJzKTsgLy8gUmVwbGFjZSBgWy4uLm5ldyBTZXQoKV1gIHRvIGF2b2lkIHBvbHlmaWxsaW5nIGNvcmUtanNcblxuXHRcdGlmICh1c2Vycy5sZW5ndGggPT09IDI1KSB7XG5cdFx0XHRxdWV1ZVtxdWV1ZS5sZW5ndGhdID0gdXNlcnM7IC8vIFJlcGxhY2UgYFtdLnB1c2goKWAgdG8gYXZvaWQgcG9seWZpbGxpbmcgY29yZS1qc1xuXHRcdFx0dXNlcnMgPSBbXTtcblx0XHR9XG5cdH1cblxuXHRpZiAodXNlcnMubGVuZ3RoID4gMCkge1xuXHRcdHF1ZXVlW3F1ZXVlLmxlbmd0aF0gPSB1c2VyczsgLy8gUmVwbGFjZSBgW10ucHVzaCgpYCB0byBhdm9pZCBwb2x5ZmlsbGluZyBjb3JlLWpzXG5cdH1cblxuXHRmb3IgKGNvbnN0IHVzdXNlcnMgb2YgcXVldWUpIHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgcXVlcnlVc2VyUmVzcG9uc2UgPSBhd2FpdCBxdWVyeVVzZXJHcm91cHModXN1c2Vycyk7XG5cdFx0XHRjb25zdCB7dXNlcnM6IHF1ZXJ5VXNlcnN9ID0gcXVlcnlVc2VyUmVzcG9uc2VbJ3F1ZXJ5J10gYXMge1xuXHRcdFx0XHR1c2Vyczoge2dyb3Vwczogc3RyaW5nW107IG5hbWU6IHN0cmluZ31bXTtcblx0XHRcdH07XG5cblx0XHRcdGZvciAoY29uc3QgdXNlciBvZiBxdWVyeVVzZXJzKSB7XG5cdFx0XHRcdGlmICghdXNlciB8fCAhdXNlci5ncm91cHMpIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHR1c2VyR3JvdXBNYXAuc2V0KFxuXHRcdFx0XHRcdHVzZXIubmFtZSxcblx0XHRcdFx0XHR1c2VyLmdyb3Vwcy5maWx0ZXIoKGVsZW1lbnQpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtZW50ICE9PSAnKic7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0KTtcblx0XHRcdH1cblxuXHRcdFx0Zm9yIChjb25zdCB1c2VyIG9mIHVzdXNlcnMpIHtcblx0XHRcdFx0Y29uc3QgcXVlcnlHbG9iYWxVc2VySW5mb1Jlc3BvbnNlID0gYXdhaXQgcXVlcnlHbG9iYWxVc2VyR3JvdXBzKHVzZXIpO1xuXHRcdFx0XHRpZiAocXVlcnlHbG9iYWxVc2VySW5mb1Jlc3BvbnNlWydxdWVyeSddICYmIHF1ZXJ5R2xvYmFsVXNlckluZm9SZXNwb25zZVsncXVlcnknXS5nbG9iYWx1c2VyaW5mbykge1xuXHRcdFx0XHRcdGNvbnN0IHtncm91cHM6IGdsb2JhbGdyb3Vwc306IHtncm91cHM6IHN0cmluZ1tdfSA9IHF1ZXJ5R2xvYmFsVXNlckluZm9SZXNwb25zZVsncXVlcnknXVxuXHRcdFx0XHRcdFx0Lmdsb2JhbHVzZXJpbmZvIGFzIHtncm91cHM6IHN0cmluZ1tdfTtcblx0XHRcdFx0XHRnbG9iYWxVc2VyR3JvdXBNYXAuc2V0KHVzZXIsIGdsb2JhbGdyb3Vwcyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0YXBwZW5kVXNlclJpZ2h0c01hcmsoJHVzZXJMaW5rcywge3VzZXJHcm91cE1hcCwgZ2xvYmFsVXNlckdyb3VwTWFwfSk7XG5cdFx0fSBjYXRjaCB7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QUFjQztRQUFrQixDQUFDO01BQ3BFLFFBQVE7TUFBQztJQUNWO0VBQ0QsQ0FBQTtBQUFBLFNBQUEsU0F6RE1vQyxnQkFBQXlCLEtBQUE7QUFBQSxXQUFBeEIsTUFBQW5GLE1BQUEsTUFBQUMsU0FBQTtFQUFBO0FBQUEsRUFBQTs7QUw3Rk5pQyxHQUFHMEUsS0FBSyxrQkFBa0IsRUFBRUMsSUFBSSxTQUFTQyxXQUFXMUIsVUFBZ0I7QUFDbkUsTUFBSUEsU0FBU3BCLEtBQUssSUFBSSxNQUFNLHFCQUFxQm9CLFNBQVNWLFNBQVMsZ0JBQWdCLEdBQUc7QUFDckYsU0FBS1EsZUFBZUUsUUFBUTtFQUM3QjtBQUNELENBQUM7IiwKICAibmFtZXMiOiBbIk1hcmtSaWdodHNfZXhwb3J0cyIsICJfX2V4cG9ydCIsICJxdWVyeUdsb2JhbFVzZXJHcm91cHMiLCAicXVlcnlVc2VyR3JvdXBzIiwgIm1vZHVsZSIsICJleHBvcnRzIiwgIl9fdG9Db21tb25KUyIsICJ2ZXJzaW9uIiwgImltcG9ydF9leHRfZ2FkZ2V0IiwgInJlcXVpcmUiLCAiYXBpIiwgImluaXRNd0FwaSIsICJjb25jYXQiLCAiX3JlZiIsICJfYXN5bmNUb0dlbmVyYXRvciIsICJ1c3VzZXJzIiwgInBhcmFtcyIsICJhY3Rpb24iLCAiZm9ybWF0IiwgImZvcm1hdHZlcnNpb24iLCAibGlzdCIsICJ1c3Byb3AiLCAic21heGFnZSIsICJtYXhhZ2UiLCAicmVzcG9uc2UiLCAiZ2V0IiwgIl94IiwgImFwcGx5IiwgImFyZ3VtZW50cyIsICJfcmVmMiIsICJ1c2VyIiwgIm1ldGEiLCAiZ3VpdXNlciIsICJndWlwcm9wIiwgIl94MiIsICJpbXBvcnRfZXh0X2dhZGdldDIiLCAiZ2V0STE4bk1lc3NhZ2VzIiwgInFpdXdlbiIsICJsb2NhbGl6ZSIsICJlbiIsICJzdGV3YXJkIiwgImNoZWNrdXNlciIsICJzdXBwcmVzcyIsICJzeXNvcCIsICJ0ZW1wbGF0ZWVkaXRvciIsICJ0cmFuc3dpa2kiLCAicGF0cm9sbGVyIiwgImF1dG9yZXZpZXdlciIsICJzZW5pb3JlZGl0b3IiLCAiZXZlbnRzcG9uc29yIiwgImNvbmZpcm1lZCIsICJhdXRvY29uZmlybWVkIiwgImJvdCIsICJmbG9vZCIsICJpMThuTWVzc2FnZXMiLCAiZ2V0TWVzc2FnZSIsICJrZXkiLCAiaW1wb3J0X2V4dF9nYWRnZXQzIiwgImdldFVzZXJuYW1lIiwgInVybCIsICJ1c2VybmFtZSIsICJtdyIsICJ1dGlsIiwgImdldFBhcmFtVmFsdWUiLCAiZGVjb2RlIiwgInN0cmluZyIsICJyZXBsYWNlIiwgImRlY29kZVVSSUNvbXBvbmVudCIsICJ1c2VybmFtZU1hdGNoIiwgIm1hdGNoIiwgImFwcGVuZFVzZXJSaWdodHNNYXJrIiwgIiR1c2VyTGlua3MiLCAidXNlckdyb3VwTWFwIiwgImdsb2JhbFVzZXJHcm91cE1hcCIsICJfaXRlcmF0b3IyIiwgIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwgIl9zdGVwMiIsICJzIiwgIm4iLCAiZG9uZSIsICJfJGVsZW1lbnQkYXR0ciIsICJfdXNlckdyb3VwTWFwJGdldCIsICJfZ2xvYmFsVXNlckdyb3VwTWFwJGciLCAiZWxlbWVudCIsICJ2YWx1ZSIsICIkZWxlbWVudCIsICIkIiwgInBhcmVudHMiLCAiZmluZCIsICJsZW5ndGgiLCAic2libGluZ3MiLCAiYXR0ciIsICJncm91cHMiLCAiZ2xvYmFsR3JvdXBzIiwgIiRzdXBzIiwgImFkZENsYXNzIiwgIl9pdGVyYXRvcjMiLCAidW5pcXVlQXJyYXkiLCAiX3N0ZXAzIiwgImdyb3VwIiwgImNsYXNzTmFtZSIsICJoYXNDbGFzcyIsICJhcHBlbmQiLCAiYWx0IiwgInRpdGxlIiwgImVyciIsICJlIiwgImYiLCAiYWZ0ZXIiLCAibWFya1VzZXJSaWdodHMiLCAiX3JlZjMiLCAiJGNvbnRlbnQiLCAidXNlcnMiLCAicXVldWUiLCAiTWFwIiwgIl9pdGVyYXRvcjQiLCAiX3N0ZXA0IiwgInRleHRDb250ZW50IiwgInVzZXJMaW5rVGV4dCIsICJ0b1N0cmluZyIsICJfaSIsICJfcXVldWUiLCAicXVlcnlVc2VyUmVzcG9uc2UiLCAicXVlcnlVc2VycyIsICJfaXRlcmF0b3I1IiwgIl9zdGVwNSIsICJzZXQiLCAibmFtZSIsICJmaWx0ZXIiLCAiX2l0ZXJhdG9yNiIsICJfc3RlcDYiLCAicXVlcnlHbG9iYWxVc2VySW5mb1Jlc3BvbnNlIiwgImdsb2JhbHVzZXJpbmZvIiwgImdsb2JhbGdyb3VwcyIsICJfeDMiLCAiaG9vayIsICJhZGQiLCAibWFya1JpZ2h0cyJdCn0K diff --git a/src/MarkRights/modules/core.ts b/src/MarkRights/modules/core.ts index 6ddab115..a0b39ef6 100644 --- a/src/MarkRights/modules/core.ts +++ b/src/MarkRights/modules/core.ts @@ -40,25 +40,28 @@ const appendUserRightsMark = ( $userLinks: JQuery, {userGroupMap, globalUserGroupMap}: {userGroupMap: Map; globalUserGroupMap: Map} ): void => { - $userLinks.each((_index: number, element: HTMLElement): void => { + for (const element of $userLinks) { const $element: JQuery = $(element); - if ($element.parents('li, table.mw-changeslist-line').find('.gadgets-markrights').length) { - return; + if ($element.parents('li').find('.gadgets-markrights').length) { + continue; + } + if ($element.siblings().find('.gadgets-markrights').length) { + continue; } const username: string = getUsername($element.attr('href') ?? ''); if (!username) { - return; + continue; } const groups = userGroupMap.get(username) ?? []; const globalGroups = globalUserGroupMap.get(username) ?? []; if (!groups) { - return; + continue; } const $sups: JQuery = $('').addClass('gadgets-markrights'); for (const group of uniqueArray([...groups, ...globalGroups])) { const className: string = `gadgets-markrights__${group}`; if ($sups.find('sup').hasClass(className)) { - return; + continue; } $sups.append( // The following classes are used here: @@ -90,7 +93,7 @@ const appendUserRightsMark = ( ); } $element.after($sups); - }); + } }; const markUserRights = async ($content: JQuery): Promise => { @@ -100,7 +103,7 @@ const markUserRights = async ($content: JQuery): Promise => { const userGroupMap: Map = new Map(); const globalUserGroupMap: Map = new Map(); - $userLinks.each((_index: number, {textContent}: {textContent: string | null}): void => { + for (const {textContent} of $userLinks) { const userLinkText: string | undefined = textContent?.toString(); if (userLinkText) { users[users.length] = userLinkText; // Replace `[].push()` to avoid polyfilling core-js @@ -113,7 +116,7 @@ const markUserRights = async ($content: JQuery): Promise => { queue[queue.length] = users; // Replace `[].push()` to avoid polyfilling core-js users = []; } - }); + } if (users.length > 0) { queue[queue.length] = users; // Replace `[].push()` to avoid polyfilling core-js